スイープ解析

Note

回路ファイルはTOPページからダウンロードできます。


回路パラメータの選定に利用

Example

sweep_analysis/LLC.scicir

回路パラメータを決定する場合、様々なことを考慮しなければなりませんが、例えば、上図の共振コンバーターの場合、Lrのパラメータによって共振点が変わってしまいます。
Lrのパラメータを変更した場合の影響を確認してみましょう。

  1. シミュレーションモードからSweepを選択します。

  2. 実行ボタンのプルダウンをクリックして、シミュレーション設定パネルを開き、各パラメータを設定します。 この設定で、シンボル名Lrの素子の、パラメーターInductance2uから6uまで10分割して繰り返しWaveform解析した結果を表示することができます。

  3. 解析結果は出力変数に設定した系列ごとに、スイープ対象のパラメータをスイープした回数分の結果が出力されます。
    図はLrのCurrentを出力変数に設定しています。

制御応答の解析に利用

Example

sweep_analysis\AnalogPidControl.scicir

制御系の負荷応答特性を確認する場合、様々な負荷のときの応答波形を解析する必要があります。
この場合、Sweep解析を行うと便利です。
例えば、上図の降圧型コンバーターの負荷Rに対して応答特性を確認する場合は以下の様にします。

  1. シミュレーションモードからSweepを選択します。

  2. 実行ボタンのプルダウンをクリックして、シミュレーション設定パネルを開き、各パラメータを設定します。 この設定で、シンボル名Rの素子の、パラメーターResistance10から1まで5分割して繰り返し1m秒間Transient解析した結果を表示することができます。

  3. 解析結果は出力変数に設定した系列ごとに、スイープ対象のパラメータをスイープした回数分の結果が出力されます。
    図はRのVoltageを出力変数に設定しています。

複数パラメータの同時スイープ解析

Example

sweep_analysis\AnalogPidControlMultipuleSweep.scicir

複数パラメータを同時にスイープ解析したい場合は、以下の様な手順で直流電圧源をスイープ対象に設定しスクリプト上でその値を元に場合分けすることで実現できます。

  1. 場合分けパラメータ用に、主回路とは別に、回路上に直流電圧源を用意します。

  2. 1で用意した電圧源の電圧を区切りの良い値になるようにスイープパラメータに設定します。

    例えば以下のように設定します。

    • 5パラメータ確認したい場合
      Start Value:1、 End Value:5、 Division:4

    • 8パラメータ確認したい場合
      Start Value:1、 End Value:8、 Division:7

  3. スイープパラメータに規則性がある場合とない場合で、それぞれ以下の様なスクリプトを作成します。

    1. スイープパラメータに規則性がある場合

      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のパラメータを設定
      }
      

    2. スイープパラメータに規則性がない場合

      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のパラメータを設定
      }
      

  4. スクリプトを登録し、Postのチェックを外します。

    Tips

    場合分けが多くてif文が煩雑になる場合は、それぞれのパラメータのルックアップテーブルを作成しtable関数で値を取得します。

    RL = table("TableRL", N);
    Vin = table("TableVin", N);
    

    サンプルではUSE_TABLE(1)に変更するとテーブルからパラメータを取得するコードが有効になります。

    define USE_TABLE (1)
    

参考

Scideam Help : スイープ解析