MENU
7,346

r2spice関数でのエラー

お世話になります。初めて投稿させていただきます。
8012を用いた真空管アンプのシミュレーションを行いたく思い、
中林様のRで書かれた関数を用いて、Spiceモデルを作成しようと思っています。
8012のデータシートをWebからDLして、Eg、Ep、IpのCSVファイルを作成し、
Ip.cal関数を実行しました。その後、r2spice関数を実行しましたが、
添付画像のようなエラーが起こってしまい、作成できませんでした。
何か操作上で問題があるのでしょうか?アドバイスを頂戴できれば、幸甚です。
よろしくお願い申し上げます。

引用して返信編集・削除(未編集)

Jackie Macさん

こちらで同様にモデルの作成を行ってみましたが、エラーは出ませんでした。
以下の状況をお知らせください。
下に私の環境で実行した例を載せてあります。

OS: (コントロールパネル -> システムとセキュリティ -> システム の Windowsの仕様)
R: (Rを起動したときに最初に表示されるバージョン)
Rの入出力文字コード(encoding): (Rに対して getOption("encoding") で返される値、下記参照)
pctube.rの取得元: (書籍に付いているものか、Webサイトから取得したものか)
モデルのデータ:
Rの起動からSPICEモデル作成までの状況:
(この掲示板では大きな画像は勝手に縮小されるので、スクリーン全体ではなく、
必要最小限の範囲に切り取るか、下記のようにテキストをコピー&ペーストしてください)

#### 私の環境の例 ####
OS: Windows 10 Home version 22H2 build 19045.5011
R: version 4.3.2 (2023-10-31 ucrt)
Rの入出力文字コード(encoding): cp932
pctube.rの取得元: http://ayumi.cava.jp/audio/pctube_1.21_win.zip
モデルのデータ: 12AU7.csv (上記 .zip に入っているもの)
Rの起動からSPICEモデル作成までの状況:
(略)
'q()' と入力すれば R を終了します。

[以前にセーブされたワークスペースを復帰します]

> getOption("encoding")
[1] "cp932"
> source("pctube.r")
> Ip.cal("12AU7.csv", "t12AU7", Cgp=1.5e-12, Ci=1.6e-12, Co=0.4e-12)
Read 153 items
code=0 err=0.02626518
> r2spice(t12AU7, "t12AU7", "t12AU7sample")
Writing spice/tubemodel/t12AU7sample.inc
Writing simetrix/tubemodel/t12AU7sample.mod
Writing tina/tubemodel/t12AU7sample.inc

引用して返信編集・削除(未編集)

tsu-3様

ハンドルネームを間違いてしまい、大変失礼いたしました。
どうか、ご容赦ください。

tsu-3様がご使用になっているR(バージョン4.1.2)に戻して、
もう一度実験してみました。

するとpctube.rの文字コードを変更せずに、ロードできました。
しかし、やはりr2spiceではエラーが出てしまいました。
ただ、エラーメッセージにはp$alphaは存在せず、
オブジェクトは表示されませんでした。

ということは、p<-Ip.sub()の実行結果は戻されていない、
つまりIp.sub関数で不具合が発生しているということだと思います。

pctube.rを見てみましたがよくわからないので、
中林さんのWebページのモデルの理論から勉強してみます。
いろいろアドバイスをいただき、ありがとうございました。
何か進展がありましたら、再度投稿させていただきます。

引用して返信編集・削除(未編集)

8/23に回答したtsu-3です(中林さん本人ではありません)。
pctube.r作成者ではなく、Rにも詳しくないため、適切なアドバイスができなく申し訳ありません。

さて、オブジェクトが正しくできているようなので、Ip.calは正しく実行できていると推測されます。
また、
> ちなみに今年の初めに実行したときは問題なくモデルを作成できました。
とのことなので、r2spiceの実行方法に誤りはないと思われます。
今年の初めには問題なかった状況が、現在は再現できないということだと思いますので、
やはりPC環境が怪しいですね。
私の環境は、Windows 10 Home バージョン22H2 で、
Rは、R x64 4.1.2 です。文字コードの変更などはしていません。

あとは、スクリプトpctube.rのどこでエラーになっているかがわかれば解決の糸口に
なるかもしれません。
ちなみに、私が調べたところ、スクリプトpctube.rで、
`r2spice` <-
function(p, mn, fn, mode="triode", ...)
のところで、r2spiceを実行。
ここのfunction定義で、パラメータpに指定したオブジェクト名が代入され、
14-15行下の
a <- 1/(1 - p$alpha)
から各モデルパラメータに値を代入、
という感じです。

引用して返信編集・削除(未編集)

お世話になります。
昨日の実験結果について、ご報告します。

R(バージョン4.3.1 Windows版)を再インストールして、pctube.r(タイムスタンプは2016/03/31)を
ロードしようとしても、マルチバイトのエラーが出てロードできませんでした。
そこでterapadでputube.rの文字コードをSHIFT-JISからUTF8に変換したところロードできました。
(改行はCR+LFにしました。)
昨日と同様に、Ip.calでPlateSample.csvは読み込むことができ、Ep-Ipグラフも表示されました。
しかしr2spiceを実行すると昨日と全く同じエラーが出てしまいました。
Rをインストールしていない別のPCにR環境を構築して同じ実験をやってみましたが、
結果は同様でした。

原因の可能性として、
1.文字コードを変更したこと。
2.Rのバージョンが異なること。
3.OS(現行はWindows10 Pro バージョン22H2)の違い
などが考えられると思います。

ちなみに今年の初めに実行したときは問題なくモデルを作成できました。
小生、Rはわからないのですが、どのような方針で解決したらよろしいでしょうか?
アドバイスを頂戴出来れば嬉しいです。
よろしくお願い申し上げます。

引用して返信編集・削除(未編集)

中林様

お世話になります。ご回答、ありがとうございました。

> まず、Ip.cal実行時に指定したオブジェクト(txxx)ができているかどうか確認してみてはどうでしょうか。

ls()を実行したら、Ip.calで入力したオブジェクト名が表示されました。
さらに当該オブジェクトのデータを表示すると、$alphaが表示されました。
しかしr2spiceでは以前と同じエラーが出ました。

そこで、PlateCharaSample.csvをDLして同様の実験を行いましたら、
このデータでもr2spiceで同様のエラーが起こりました。
操作方法が悪かったため、Rまたはpctube.rが壊れたのかもしれません。
Rの再インストール、pctube.rの再DLして、やり直してみます。
結果は後日報告させていただきます。

お忙しいところ、大変ありがとうございました。
今後ともよろしくお願いします。

引用して返信編集・削除(未編集)

Ip.calはエラーなく実行でき、r2spiceでエラーになったということですね。
まず、Ip.cal実行時に指定したオブジェクト(txxx)ができているかどうか確認してみてはどうでしょうか。
> ls()
ですべてのオブジェクトがリストされますので、その中にあるかどうか確認します。
あれば、そのオブジェクトのデータを確認します。
> txxx
例えば、t12AX7の場合、
> t12AX7
$G
[1] 0.0007121151

$muc
[1] 88.4138

$alpha
[1] 0.4345514

$Ego
[1] 0.5983668

$Cgp
[1] 1.7e-12

$Ci
[1] 1.6e-12

$Co
[1] 4.6e-13

$Vp
[1] 300

$Pp
[1] 1

$Ik
[1] 0.008

$remark
[1] "Philips"

$err
[1] 0.03654938

$code
[1] 0

のように数値データが確認できます。
> t12AX7$alpha
とすればalphaの値だけ確認できます。
リストになければオブジェクトができていないことになります。
私はRについて詳しくありませんが、p$alphaでエラー ということは、
pという原子ベクター(r2spice実行時に指定するオブジェクト名)が正しくできていない可能性があります。

オブジェクトが正しくできているにもかかわらずエラーになる場合は、
サンプルデータ(PlateCharaSample.csvなど)でエラーなくできるか確認してみてはどうでしょうか。

引用して返信編集・削除(未編集)

> "Jackie Mac"さんが書かれました:
> お世話になります。初めて投稿させていただきます。
> 8012を用いた真空管アンプのシミュレーションを行いたく思い、
> 中林様のRで書かれた関数を用いて、Spiceモデルを作成しようと思っています。
> 8012のデータシートをWebからDLして、Eg、Ep、IpのCSVファイルを作成し、
> Ip.cal関数を実行しました。その後、r2spice関数を実行しましたが、
> 添付画像のようなエラーが起こってしまい、作成できませんでした。
> 何か操作上で問題があるのでしょうか?アドバイスを頂戴できれば、幸甚です。
> よろしくお願い申し上げます。

画像上のエラーメッセージは以下のようになっています。

p$alphaでエラー : $ operator is invalid for atomic vectors

またCSVファイル等が必要でしたら、ご連絡ください。
アドバイス、よろしくお願い申し上げます。

引用して返信編集・削除(未編集)

引き続き

よろしくお願いします。

引用して返信編集・削除(未編集)

>「発振防止用Zobelフィルタ」が付いていないので、別回路です。
ということですが、Zobelフィルタを発振防止用の目的で入れているのならば、その定数を検討する前に、Zobelフィルタなしの特性を理解すべきと思います。
本来は、ループゲインを計測すべきですが、この回路の場合は簡単ではありません。
使用しているOPアンプがレールツーレール出力であり、エミッタ接地の出力段になっていること、さらにダイヤモンドバッファが付加されていますが、バッファの入力と出力が(ほぼ)ショートされており、出力にどのように寄与しているのかよくわからない(たぶん相当重い負荷でなければダイヤモンドバッファは動作していないと思います)、定電流ダイオードを使っているが非直線領域である、などの点で一筋縄ではいきません。
この回路のループゲインを測定するには、Middlebrook法、
https://www.analog.com/jp/resources/technical-articles/tnj-055.html
を使う必要がありそうですが、シミュレーション上ではまだしも、現実に測定するのはかなり困難です。

そもそも、Zobelネットワークを入れるのは、負荷が抵抗性になるように、この回路の場合は、ヘッドホンのインピーダンスが高域になるにつれ上昇することをキャンセルするものです。
データシートには明記されていませんが、レールツーレール出力のOPアンプは負荷の大きさによってゲインが変わります。
高域の負荷が軽くなると、ループゲインが上がって発振に至ります。
しかし、私の記事では負荷として抵抗しか使用していませんから、本来の意味でZobelネットワークを使用する必然性はありません。
現に負荷の抵抗が低い場合は発振していません。
その範囲で測定した結果には意味があり、この回路の特徴が現れているはずですので、「別回路です」という指摘はあたらないと思います。

「別回路だ」というのなら、どういう意味で別な回路なのか、どのように動作が異なるのか、指摘していただけませんか。

どのような位相補償が適切なのかについては、上で触れた方法によるループゲインを測定してみなければ明確に言えませんが、ZobelネットワークのRを軽くして、Lによるアイソレータを入れるのが良いと思います。
いずれにしても、位相補償の定数を測定・考察なしに決めるのは設計と呼べるものではないと思います。

引用して返信編集・削除(未編集)

8 nabe氏の高品質な低電圧ヘッドホンアンプの
図 162: 試作したnabeアンプの回路図ですが、
「発振防止用Zobelフィルタ」が付いていないので、別回路です。

引用して返信編集・削除(未編集)

近況報告

家族の健康状況、自分の転職などで、掲示板が放置状態になっておりましたことをお詫びします。
徐々に復帰しようと思いますが、電子回路関係に割ける時間は以前と比べると相当に少なくなる見込みです。
この掲示板にお寄せいただいた質問等については、順次回答していきますので、今しばらくお待ちください。
現在、自動計測の環境を復帰させるべく、プログラムをアップデートしています。
写真のパーツのSPICEモデルを作ろうとしています。

引用して返信編集・削除(未編集)

r2spice function use and calculation of alpha, XIg and Glim

Dear Mr. Nakabayashi,
is there a demo somewhere, with which version of RStudio your r2spice program works?
Parameters a, b and c seem to get calculated using alpha. However it is not exactly described where
alpha comes from - https://ayumi.cava.jp/audio/pctube/node43.html. I assume its discussed more in detail in Yoshinori Ichiki book, however its in japanese and hard to come by.
Also for calculationg xig and Glim its written that xig = Ig/Ik when Vg=Va. So cathode and grid current ratio when plate and grid bias voltage are (positive) and the same. There is no calculation inside of r2spice of these values, yet they are as numbers inside of for example 12AX7 subcircuit.
Regards

引用して返信編集・削除(未編集)

6146Bで50Wリニアアンプを作ろうと思っています。

6146Bシングルで7MHzの50Wリニアアンプを作ろうと思っています。
何か参考になる回路図とかありませんでしょうか?。

引用して返信編集・削除(未編集)
合計14件 (投稿5, 返信9)

ロケットBBS

Page Top