Simulinkとの連携解析
SCALEとSimulinkを連携させて協調シミュレーションを行うために必要な手順を降圧型DCDCコンバーターをPI制御することを例に挙げて解説します。
Note
回路ファイルはTOPページからダウンロードできます。
Example
ModelsSCALEConnectTutorial
中にSCALE回路ファイルとsimulinkモデルが入っています。
チュートリアルで動作させるモデルは下図のようなイメージとなっています。

Simulinkでの設定
SCALE_CONNECTブロックを使うためにSimulink側で行う設定について記載します。
SimulinkではサンプルファイルのPI_DCDC.slxを開いてください。
ソルバーの設定
SCALE_CONNECTブロックは、Simulinkソルバーを固定ステップのみ対応としています。
まずは、モデルのコンフィギュレーションパラメーターを設定します。 メニューバーの【シミュレーション(S)】→【モデル コンフィギュレーション パラメーター (F)】から「コンフィギュレーション パラメーター」ウィンドウを表示し、 次のように設定してください。
| 分類 | 名称 | 値 |
|---|---|---|
| シミュレーション時間 | 終了時間 | 0.02 |
| ソルバーオプション | タイプ | 固定ステップ |
| ソルバーオプション | ソルバー | 離散(連続状態無し) |
| ソルバーオプション | 固定ステップサイズ(基本サンプル時間) | 2e-5 |

SCALE_CONNECTが対応するソルバータイプは固定ステップのみです。
固定ステップサイズはSCALEのSLCブロックで指定した周波数(SCALEでの設定)と一致するようにしてください。
シミュレーションの終了時間とソルバー(離散、ODE1など)は任意ですが、本チュートリアルでは離散(連続状態無し)に設定しています。
Rate Transitionの設定
Rate Transitionブロックの値を、下図のように設定して下さい。
Rate Transitionブロックは本来異なるサンプル時間で動作するブロック同士を接続する場合に用いますが、
SCALE_CONNECTブロックの場合SCALEとデータを送受信する周期を確定的に明示するためにこのブロックを直前に接続する必要があります。
詳しくはブロックの配置を参照してください。

SCALEの設定
SCALE_CONNECTブロックを使うためにSCALE側で行う設定について記載します。
SCALEを開く
次の手順でSimlinkからSCALEを開いて下さい。
-
Simulinkで開いている
PI_DCDC.slx内のSCALE_CONNECTブロックから、SCALEファイルBuckConverter.cvt2を選択します。 -
SCALEを開くボタンで指定のファイルを開きます。

Simulinkと接続
Simulinkと接続するためにはSLCブロックを使用します。
SLCブロックのFreqにはSimulinkのRateTransitionブロックで設定した実行周期と同じ周期を入力します。

SLCブロックには下記のプログラムが記載されています。
IL1 = output("L1", "I", "AVE");
Vout = output("OUT1", "V", "AVE");
SLexport(1, IL1);
SLexport(2, Vout);
SLsync();
D = SLimport(1);
setparam("Q1", "T0", D);
| 関数 | 内容 |
|---|---|
| output("sym","type", "mode") | シンボルsym、タイプtype、モードmodeで指定された出力変数の現在値を返す関数。シンボルは"sym"のように二重引用符で挟む。以下同様とする。 PRCとDSPでは、この関数で指定される出力変数が存在しないときは自動的に出力変数が設定され、この関数を削除するとその出力変数も削除される。 |
| SLexport(n, value) | SCALE_CONNECTのn番目の出力ポートに対し、valueを設定する関数。nは1から始まる整数、 valueは任意の変数。 |
| SLsync() | SCALE_CONNECTとの同期をとる関数。SLexport(),SLsync(),SLimportの順番で配置する。 |
| SLimport(n) | SCALE_CONNECTのn番目の入力ポート値を返す関数。nは1から始まる整数。 |
| setparam("sym", "par", value) | シンボルsymを持つ素子のparで指定されたパラメーター値をvalueに設定する関数。parには、各素子のパラメーターダイアログボックスに表示されているパラメーターシンボルを指定する。 |
高速にシミュレーション
下記の手順でSCALEから電圧や電流の波形をADコンバータの要領でサンプリングし、フィードバック制御を行っている様子をSimulink上で確認します。
-
Simulinkの
PI_DCDC.slx内の、SCALE_CONNECTブロックの設定からシミュレーション モードで、Transientを選択後OKボタンで確定してください。

-
シミュレーション時間を
0.02に設定し、シミュレーションを開始してください。

以上の操作を行うと自動的にSCALEが起動され、シミュレーションが実行されます。
シミュレーション終了後、Scopeブロックをダブルクリックすることで、グラフの結果が得られます。
約8[ms]程度で出力電圧(凡例:緑実線)が指令値(凡例:赤点線)3[V]に収束している結果になります。
(図のグラフは見やすいように背景色などを変更しています。)

詳細なシミュレーション
Transient解析ではPWMスイッチの1周期の代表点をSimulinkに送っているため、スイッチング1周期の間にどのような波形が出ているのか観測することができません。
そのような波形を観測したいときは下記の手順でWaveform解析を行って詳細なシミュレーションを行います。
Note
一般的に、Transientと比べてWaveformは出力データ点数が多くなり解析に時間がかかります。
そのため、「Waveform 開始時間」を出力したい部分からを指定することで、シミュレーション時間を短縮することができます。
-
PI_DCDC.slx内の、SCALE_CONNECTブロックに下記の設定を行います。- SCALE起動オプション : 自動起動
- SCALE内部にシミュレーション結果を保持 : チェック
- シミュレーション モード : Waveform
- Waveform 開始時間 : 0.019

-
シミュレーション時間を
0.02に設定し、シミュレーションを開始してください

Note
SimulinkのSCOPE画面では、先のTransient解析と同じ結果が得られます。
-
SCALEでも保持されているシミュレーション結果をエスチャートに転送します。
SCALECのツールバー内のWindow:Eschart:Transferを選択することにより、自動的にエスチャートが立ち上がり、解析結果を表示します。

Note
エスチャートにはSCALEの
OUTPUTで設定した出力変数のすべてが表示されるので、Simulinkに出力しているデータ以外のデータも表示することができます。
一巡の周波数特性を解析
シミュレーションの実行
下記の手順でSimulinkで作成したコントローラモデルとSCALEで作成したプラントモデルの一巡伝達関数の周波数特性を観測することができます。
-
PI_DCDC.slx内の、SCALE_CONNECTブロックに下記の設定を行います。- シミュレーション モード : FrequencyResponseAnalysis
- 周波数特性解析 開始時間 : 0.04
Note
周波数特性解析は、系が定常状態になった状態で実施することで正しく算出されます。 周波数特性解析を行う前に、Transientで系が十分に定常状態に到達する時間を確認しておき、その値を「周波数特性解析 開始時間」に入力してください。
-
シミュレーション時間をinfに変更し、シミュレーションを開始してください
以上の手順で自動的にSCALEが起動され、周波数特性を解析する系を尋ねるダイアログボックスが表示されます。
周波数特性を解析する系は、伝達関数の入力と出力(分母と分子)を指定することで確定されます。
本チュートリアルでは、FromをOUT1:V:AVEに、ToをR1:V:AVEに設定することで一巡伝達特性を調べることができます。
このようにすることで、AC Sweepから出力された微小変動がフィードバック信号に加算され、制御器とプラントを通過した変動を観測することができます。
この微小変動の変化から周波数特性が算出され、ボード線図として表示されます。
OKボタンを押下するとシミュレーションが実行されます。
シミュレーション時間はinfに設定されていますが、周波数特性の解析が完了すると自動的にSCALEがシミュレーションを中断させます。
ボード線図を表示
FrequencyResponseAnalysisモードのシミュレーション実行後、MATLABのワークスペース以下の結果が保存されます。
これらの変数をプロットすることで、グラフ(ボード線図)を得ることができます
| 変数名 | 内容 |
|---|---|
| ScaleBodeFrequency | 周波数 |
| ScaleBodeGain | (周波数に対応した)利得 |
| ScaleBodePhase | (周波数に対応した)位相 |
自動的に描画されたボード線図では、ゼロクロスした点での周波数、利得、位相が追記されます(MATLAB R2016b以降のバージョンのみ追記されます)。
これら利得と位相それぞれのゼロクロス点を確認することで、位相余裕と利得余裕を素早く検討することが可能になります。
Note
シミュレーションを実行する前にSCALE_BODEブロックをモデル内に配置しておくことで、
シミュレーション終了時自動的にボード線図を描画させることが可能です。
周波数特性の結果がうまく得られないときは
Simulinkと連携して行う周波数特性解析は、SCALEの周波数特性機能のFastモードを内部的に用いています。
この機能は、解析する系によっては正確な結果が得られない場合もあります。
正確な結果を得るために、下記の項目を検討してください。
| ポイント | 説明 |
|---|---|
| 回路を安定系にする | 周波数特性は定常状態で計測するため、系全体が安定系となるよう設計してください。 |
| 直流波形を解析する | 交流電源や他の理由で波形が振動する場合、AC Sweep 素子の正弦波信号が乱されてしまうため、正確な周波数特性は得られません。 直流波形に変換して解析してください。 |
変数のモードをAveに設定する |
入力・出力波形には任意の変数モードを指定可能ですが、通常、平均値の特性で周波数特性を解析することが一般的と考えられるため、変数モードにはAveを設定してください。 |
| 周波数特性の解析帯域を確認する | AC Sweep 素子のパラメーターで、周波数特性を解析する帯域を指定するFminとFmaxの値を確認してください。Fminの値が大きい場合、正確な特性が得られないことがあるため、十分に小さい値にしてください。Fmaxは系のサンプリング周波数の半分以下の値になるよう設定してください(サンプリング定理)。 |