0. 時変なSimulinkモデルの線形解析
以下のような、時変なSimulinkモデルについて考えます。
サンプルモデルの名前はmodelname.slxとします。
ランダムノイズ信号は、伝達関数ブロックを経由してScopeに出力されています。サンプルモデルに配置した伝達関数は、上側がHPF(ハイパスフィルタ)特性、下側がLPF(ローパスフィルタ)特性を示しており、ランダムノイズ信号が通る伝達関数はclockブロックとswitchによって時刻5秒を境にLPF→HPFへと特性が切り替わります。
MATLABでそれぞれの伝達関数のボーデ線図を直接描くと、以下のようになります。
以上から、このモデルでは、シミュレーション時刻5秒以内で線形解析したときに期待する結果はLPF特性であり、シミュレーション時刻5秒以降で線形解析したときに期待する結果はHPF特性です。
これらの特性を得るのに必要な、Simulinkにおける線形解析の基本的な方法は、
https://www.mathworks.com/matlabcentral/answers/103775-
に掲載されておりますが、この例では時変なシステムを想定していません。
時変なシステムでは、線形解析の結果はシミュレーション時刻に依存するので、時刻を指定した線形解析が必要になります。
そこで、時変なSimulinkモデルを特定のシミュレーション時刻において線形解析をするには、2通りの方法が考えられます。
今回は、本モデルの10秒時点での線形解析を実施し、HPF特性を得ることを目標とします。
1. Simulink Control Designを使用する方法
Simulink Control Designを使用して線形解析するには、
- MATLAB
- Simulink
- Control System Toolbox
- Simulink Control Design
のライセンスが必要です。
Simulink Control Designを使用すると、
- 線形解析ポイントの入出力点を設定する
- 解析->制御設計->線形解析から、線形ツールを起動する
- シミュレーションのスナップショット時間を設定する
- ボーデ線図ボタンを押す
の手順で簡便に実行可能です。
通常の手順に対し、シミュレーションスナップショット時間の設定を追加するだけです。
この方法の詳細は、弊社ドキュメンテーションをご参照ください。
https://jp.mathworks.com/help/slcontrol/ug/linearize-at-simulation-snapshot.html
2. Control System Toolboxのみを利用する方法
Control System Toolboxを使用して線形解析するには、
・MATLAB
・Simulink
・Control System Toolbox
のライセンスが必要です。
2.1 サンプルモデルの修正
Control System Toolboxによる線形解析には、以下のようにモデルを修正し、モデルのルートレベルのInport, outportブロックの配置が必要です。
2.2 コンフィギュレーションパラメータの設定
シミュレーション時刻を指定して線形解析するには、一旦その時刻までのシミュレーションを実施し、該当シミュレーション時刻におけるモデルの状態量を用意する必要があります。
モデルコンフィギュレーションパラメーターを開き、データのインポート/エクスポート内の「最終状態」のチェックを入れて、シミュレーション終了後に各ブロックの状態をxFinalという名前の構造体として出力できるようにします。このとき、出力の「形式」は「構造体」または「時間付き構造体」に設定します。
2.3 シミュレーションの実行
モデルのシミュレーションを実行します。ベースワークスペースにxFinalという名前の構造体が出力されます。xFinalには、10秒時点の各ブロックの状態量が格納されます。
2.4 コマンドによる線形解析
連続システムに対しては、linmod関数を使用して線形解析を実施します。
linmod関数を使用する際の引数はlinmod(‘sys’, x, u, para)
の形で指定します。それぞれ、 ‘sys’はモデル名(今回は’modelname’)
xはモデルの状態(今回はxFinal)
uはモデルの入力値(inportに入力する信号の数値を意味します。今回は0)
paraは3要素のベクトルからなり、
para(1)は数値摂動の値(初期値は1e-05)
para(2)は線形化するシミュレーション時刻、今回は10秒
para(3)は入力から出力へのパスをもたないブロックの状態の設定(初期値は0、削除しない)
となります。※uの変化による結果の変化は、線形解析の手法に関係しています。線形解析の結果は、近似的にはシステムの一次微分の係数を求めた結果となります。線形解析における微分とは、周波数空間においてシステムをuの関数f(u)と見たときのf’(u)を意味し、uを指定しないときはf’(0)の係数を求めることになります。
このことから、f’(u)の結果がuに依存するような非線形なシステムでは、uが0から離れるほどにu=0での線形解析の結果から離れることになります。
よって、非線形なシステムに対してu=0と規定することが実態と異なるようなケースでは、信号uを適切に設定します。
2.3 で10秒時刻のシミュレーション結果xFinalが得られているので、
MATLABコマンドウインドウ上で[num, den] = linmod('modelname', xFinal,0,[1e-05,10,0]);
あるいは[A, B, C, D] = linmod('modelname', xFinal,0,[1e-05,10,0]);
と入力します。 戻り値を[num, den]と指定すると、伝達関数の分子分母の形で線形化モデルを出力します。
戻り値を[A,B,C,D]と指定すると、指定した状態変数xと入力信号uをもつ操作点のまわりの状態方程式の形で線形化モデルを出力します。
出力結果は伝達関数の方が取り扱いは簡便ですが、状態方程式の方が高精度な結果となります。2.5 線形応答の表示
回は伝達関数の形で出力した結果を使用し、ボード線図を表示します。
MATLABコマンドウインドウ上で
と入力すると、以下に示すような線形応答の結果が表示されます。期待通り、HPF特性が得られています。
以上の手順により、Simuinkの10秒時点の線形解析が可能です。