このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
異なるレート変換メソッドを使ったモデルの線形化
この例では、マルチレートの Simulink® モデルを線形化する場合のレート変換メソッドの指定方法を示します。レート変換メソッドの選択は、結果の線形化モデルに影響を与える場合があります。この例では、2 つの異なるレート変換メソッドを使用した離散線形時不変 (LTI) モデルの抽出を説明します。
scdmrate
Simulink モデルには、さまざまなサンプル時間をもつ 5 つのブロックが含まれています。このモデルの線形システムの形式は、いずれも零点-極-ゲインです。
sysC
- 連続時間線形時不変 (LTI) システムIntegrator
- 連続時間積分器sysTs1
- サンプル時間 0.01 秒の離散時間 LTI システムsysTs2
- サンプル時間 0.025 秒の離散時間 LTI システムZero-Order Hold
- 入力信号を 0.01 秒でサンプリングするブロック
Simulink モデルを開きます。
mdl = 'scdmrate';
open_system(mdl)
この例では、sysTs1
ブロックの出力と Zero-Order Hold
ブロックの出力の間のモデルを線形化します。開ループ応答を計算するには、Zero-Order Hold
ブロックの出力でループ開始点を追加します。
io(1) = linio('scdmrate/sysTs1',1,'input'); io(2) = linio('scdmrate/Zero-Order Hold',1,'openoutput');
これらの線形化ポイントを使用すると、モデル scdmrate_ol
の効果的な線形化につながります。
open_system('scdmrate_ol')
連続信号と離散信号の両方を含んでいるモデルを線形化すると、ソフトウェアはレート変換メソッドを使用して、最初に連続信号を離散信号に変換します。レート変換メソッドを指定するには、linearizeOptions
オブジェクトを作成し、RateConversionMethod
プロパティを設定します。既定のレート変換メソッドは、ゼロ次ホールド ('zoh'
) です。
opt = linearizeOptions; opt.RateConversionMethod
ans = 'zoh'
ゼロ次ホールド メソッドを使用してモデルを線形化します。線形化には Zero-Order Hold
ブロックが含まれているため、線形化のサンプル時間は 0.01 秒です。
syszoh = linearize(mdl,io,opt);
レート変換メソッドを Tustin (双一次変換) メソッドに変更し、このメソッドを使用してモデルを線形化します。この場合も結果のモデルのサンプル時間は 0.01 秒です。
opt.RateConversionMethod = 'tustin';
systust = linearize(mdl,io,opt);
サンプル時間を linearizeOptions
オブジェクトで 0
に指定することで、連続時間線形化モデルを作成することもできます。レート変換メソッドは、単一の離散時間線形化モデルを作成してから、離散時間モデルを連続時間モデルに変換します。
opt.SampleTime = 0; sysc = linearize(mdl,io,opt);
3 つの線形化のボード線図は、2 つのレート変換メソッドの効果を示しています。この例では、Tustin レート変換メソッドが最も正確な連続時間システムの位相応答を表現し、ゼロ次ホールドが振幅応答に最も一致しています。
p = bodeoptions('cstprefs'); p.YLimMode = {'manual'}; p.YLim = {[-100 0];[-180 -30]}; p.Grid = 'on'; bodeplot(sysc,syszoh,systust,p); legend('sysc','syszoh','systust','Location','SouthWest');
モデルを閉じます。
bdclose('scdmrate') bdclose('scdmrate_ol')