閑人

アクセスカウンタ

zoom RSS LTspice ビヘイビア電源 3/28訂正 3月26日追記

<<   作成日時 : 2017/03/25 16:00   >>

ブログ気持玉 0 / トラックバック 0 / コメント 0

3/28 以下のバグについて、訂正します
エラーの原因は、文字コードの混入でした。文字数の制限による問題ではありませんでした。
エディタに数値や数式をコピーする際に、ユニコードの制御文字が混入していました。


期末で暇が無い、今朝から、LTspice用のモデルを作っていたのだが、何かおかしい。他のSPICEで使えるモデルが動かないのです。ところで、電圧制御電圧源を使ったサンプルを見てください。
画像

見難いので、LISTにします

B1 N2 0 V=ABS(V(N1,0))+1
V1 N1 0 SINE(0 1 1k)
B2 N3 0 V=ABS(V(N1,0)**3)+2
B3 N4 0 V=V(N2,0)+V(N3,0)
B4 N5 0 V=ddt(V(N1,0))*1.592e-4
B5 N6 0 V=((buf(V(N2,0)-1))/2)+5
B6 N7 0 V=COS(V(N1,0))-2
B7 N8 0 V=SQRT(V(N1,0))+6
.tran 0 4m 0
.end

結果を見て下さい

画像


結構何でも表現可能なのが、良いところです。電圧制御の電圧源と電流源、電流制御の電圧源と電流源の4種類があります。その気になって、Excelにデータシートからグラフをコピーして貼り付けて、ここに、塗りつぶし無しの透明な散布図を張付けて、データのプロットを重ねます。
私が、SPICEのmodelをExcelを多用して作成しているのは、このようにして、データの曲線を写し撮ることが簡単だからです。得られたデータの組を、TABLE関数で定義するのも良いのですが、単位変換をして作成した散布図に、多項式(3次か4次)の近似曲線を書いて、多項式を表示させます。
この時、注意したいのは、Excelが標準で表示する多項式の係数は、桁数が少ないので、表示設定で、8桁以上を表示させて使います。そうしないと、誤差が大きく出てびっくりします。

さて、今回の問題は、LTspiceの数式の長さです。多項式の数値桁数が多いので、長い数式をそのまま打ち込んで使って見ると、構文エラーになります。(どのくらいの制限なのか、詳細には調べていませんが、100文字や120文字では、OKなようです)
例えば、138文字では
画像

問題ありません。普通ならこれ以上の記述はしないでしょう。私の使い方が変なのです。
でも、午前中は、何が起こったのか分かりませんでした。

試しに、4次の多項式を、5つの部分に分解しました。変数X(端子間電圧)の4次の項目、4個と、全ての結果を加算して、さらに切片を加算する、5個目の電源を使ってみると、問題なく動作します。多少遅いようですが、TABLE関数よりは、十分に高速です。
こんな所に、文字数の制限があるなんて、何処にも書いて「内用」・・・(もう一度HELPを見ています)
まあ、テキストを読んで処理するので、テキストの最大サイズはあるのでしょうが、最近は、ファイル名でも長いのが当たり前になっているので、気付くのが遅くなりました。


ところで、現在、LTspiceVXIIの2017/3/16版を使っていますが、回路の初期化ができないと、ハングアップしてしまいます。シミュレーションをする前に、回路図を保存することを忘れないでください。

また、TABLE関数を使うと、値が急変するところで、止まってしまいます。そこで、対策として分割数を増やすと、演算時間がとても長く掛かります。

今回は、これを改善しようと、多項式にして、さらに精度を上げようとして、知らない制限にひっかったお話でした。

最近は、半田ごてを触っていません。何か作りたいのですが・・・
もうすぐ、桜が咲きます。(杉花粉の時期も終わります。バンザイ!!)

追記(3月26日):多項式を記述する場合には、POLY関数を使う事を推奨します。
私は、POLY関数だと、見通しが悪いので、数式での記述に拘ってきました。
また、関数の記述を、パラメータ変数にすることで、記述の文字列を削減できます。
この方法は、お勧めです。

LTspiceは、回路シンボルとは別に、多くのPSPICE互換素子をサポートしています。サブサーキットやライブラリモデルの中で、PSPICEで動作していた回路を記述しても、殆どの場合、同じ動作をします。

しかし、文字数の制限は、HELPに記述が無いので、はまり込むと、悩んでしまう問題なのでした。
yahooのグループでも、問題にされていないので、こんなバカげた記述をする人がいないのだと思います。


ちなみに、TABLE関数の使い方は
画像


*
V1 N1 0 0
E1 N2 0 N1 0 TABLE (-50,50)(-10,20)(0,0)(10,20)(50,50)
.dc V1 -100 100 1m
.end
*

結果は
画像

テーブルのポイント間は、直線補間されます。TABLEの外側は、最後の値が保持されます。

テーマ

注目テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
LTspice ビヘイビア電源 3/28訂正 3月26日追記 閑人/BIGLOBEウェブリブログ
文字サイズ:       閉じる