LoginSignup
0
0

LTspiceのAC解析結果をgnuplotで扱えるように整形する(その2)

Posted at

はじめに

LTspiceでAC解析を行い、結果をgnuplotでグラフ化するためのデータファイルを編集する続編です。

LTspiceシミュレーション回路

とりあえず以下の回路で解析します。以前の記事より1段増えました。
AC2.png

結果の確認とテキストファイル出力

2か所のコンデンサについて両端電圧を見てみます。
下図のようになりました。
AC2sim.png
結果をテキストファイルにエクスポートし、以前の記事で解説したとおりsedに通した上でこの記事gnuplotスクリプトを実行します。

グラフの確認

データ取得点が2個あるのでグラフも2本描かれます。
out2.png
なんか位相が不自然にジャンプしています。LTspiceの結果画面ではちゃんと -360° に達していましたが、テキストを吐き出したとき ±180° 以内にされてしまうようです。
それでは困るのでデータファイルを処理します。こういうときはawkの出番です。

acedit.awk
BEGIN{
  # 位相ジャンプのしきい値設定
  th0=-165;
  th1=165;
}

{
  for(k=2;k<=NF;k++){
    # 位相がプラス180°へ急にジャンプしたら360°引きずり降ろす
    if(old[k]<th0 && $k>th1){
      offset[k]-=360;
    }
    # 位相がマイナス180°へ急にジャンプしたら360°吊り上げる
    if(old[k]>th1 && $k<th0){
      offset[k]+=360;
    }
    old[k]=$k;
  }
  printf("%.14e",$1); # 先頭の周波数列はそのまま表示
  for(k=2;k<=NF;k++){
    printf(" %.14e",$k+offset[k]); # オフセットを足して表示
  }
  printf("\n");
}

データがいくつあろうとNF一つで対応できるのがawkのいいところです。
ここでoffset[k]はk列目のオフセット値を覚えておく配列です。
一つ前と現在のデータが 360° ジャンプしていれば LTspice の出力が変、ということで補正項を加減します。
ただちょうどピッタリ 180° (または-180°)にはならないので、判定のしきい値は 15° の余裕を見ています。
あまり大きくしすぎると正常な位相の変動まで誤判定する可能性が出てくるため注意します。
ゲインの列に対しては何もしなくていいのですが、まぁ判定に引っかかることもないので放置しています。

整形したデータを再度グラフ化

out2-2.png
位相がちゃんと変動しました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0