スイープ解析
Note
回路ファイルはTOPページからダウンロードできます。
回路パラメータの選定に利用
Example
sweep_analysis/LLC.scicir
回路パラメータを決定する場合、様々なことを考慮しなければなりませんが、例えば、上図の共振コンバーターの場合、Lrのパラメータによって共振点が変わってしまいます。
Lrのパラメータを変更した場合の影響を確認してみましょう。
-
シミュレーションモードから
Sweep
を選択します。 -
実行ボタンのプルダウンをクリックして、
シミュレーション設定パネル
を開き、各パラメータを設定します。 この設定で、シンボル名Lr
の素子の、パラメーターInductance
を2u
から6u
まで10
分割して繰り返しWaveform
解析した結果を表示することができます。 -
解析結果は出力変数に設定した系列ごとに、スイープ対象のパラメータをスイープした回数分の結果が出力されます。
図はLr
のCurrentを出力変数に設定しています。
制御応答の解析に利用
Example
sweep_analysis\AnalogPidControl.scicir
制御系の負荷応答特性を確認する場合、様々な負荷のときの応答波形を解析する必要があります。
この場合、Sweep解析を行うと便利です。
例えば、上図の降圧型コンバーターの負荷R
に対して応答特性を確認する場合は以下の様にします。
-
シミュレーションモードから
Sweep
を選択します。 -
実行ボタンのプルダウンをクリックして、
シミュレーション設定パネル
を開き、各パラメータを設定します。 この設定で、シンボル名R
の素子の、パラメーターResistance
を10
から1
まで5
分割して繰り返し1m
秒間Transient
解析した結果を表示することができます。 -
解析結果は出力変数に設定した系列ごとに、スイープ対象のパラメータをスイープした回数分の結果が出力されます。
図はR
のVoltageを出力変数に設定しています。
複数パラメータの同時スイープ解析
Example
sweep_analysis\AnalogPidControlMultipuleSweep.scicir
複数パラメータを同時にスイープ解析したい場合は、以下の様な手順で直流電圧源をスイープ対象に設定しスクリプト上でその値を元に場合分けすることで実現できます。
-
場合分けパラメータ用に、主回路とは別に、回路上に直流電圧源を用意します。
-
1で用意した電圧源の電圧を区切りの良い値になるようにスイープパラメータに設定します。
例えば以下のように設定します。
-
5パラメータ確認したい場合
Start Value:1、 End Value:5、 Division:4 -
8パラメータ確認したい場合
Start Value:1、 End Value:8、 Division:7
-
-
スイープパラメータに規則性がある場合とない場合で、それぞれ以下の様なスクリプトを作成します。
-
スイープパラメータに規則性がある場合
init { N = param("VDC", "Value"); // 場合分け変数の取得(1から5までスイープされている) N=int(N + 0.1); // 丸め誤差を回避 RL = 0.01 * N; // 負荷抵抗を0.01から0.05Ωに変化 Vin = 10 + N; // 入力電圧を10Vから15Vに変化 setparam("RL", "Value", RL); // RLのパラメータを設定 setparam("Vin", "Value", Vin); // Vinのパラメータを設定 }
-
スイープパラメータに規則性がない場合
init { N = param("VDC", "Value"); // 場合分け変数の取得(1から5までスイープされている) N =int(N + 0.1); // 丸め誤差を回避 switch(N) { case 1: RL = 0.01; Vin = 5.8; break; case 2: RL =0.023; Vin = 7.5; break; case 3: RL =0.037; Vin = 8.3; break; case 4: RL = 0.042; Vin = 9.4; break; case 5: default: RL = 0.050; Vin = 10; break; } setparam("RL", "Value", RL); // RLのパラメータを設定 setparam("Vin", "Value", Vin); // Vinのパラメータを設定 }
-
-
スクリプトを登録し、
Post
のチェックを外します。Tips
場合分けが多くてif文が煩雑になる場合は、それぞれのパラメータのルックアップテーブルを作成し
table
関数で値を取得します。
RL = table("TableRL", N); Vin = table("TableVin", N);
サンプルでは
USE_TABLE
を(1)
に変更するとテーブルからパラメータを取得するコードが有効になります。
define USE_TABLE (1)