Simulink Control Design

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

異なるレート変換メソッドを使った線形化

この例では、マルチレート モデルを線形化するためにレート換算メソッドを指定する方法を説明します。レート変換メソッドの選択は、結果の線形化モデルに影響を与える場合があります。この例では、2 つの異なるレート変換メソッドを使用した離散線形時不変モデルの抽出を説明します。

問題の例

Simulink モデル scdmrate.mdl には、5 つのブロックで指定された 3 つの異なるサンプリング レートがあります。ブロックは以下のとおりです。

  • sysC - 連続線形ブロック

  • Integrator - 連続積分器

  • sysTs1 - サンプル時間が 0.01 秒のブロック

  • sysTs2 - サンプル時間が 0.025 秒のブロック

  • Zero-Order Hold - 入力信号を 0.01 秒でサンプリングするブロック

Simulink モデルを開きます。

scdmrate

この例では、sysTs1 ブロックの出力と Zero-Order Hold ブロックの出力間のモデルを線形化します。また、Zero-Order Hold ブロックでループを開いている部分を追加して、システムのプラント モデルを抽出します。

model = 'scdmrate';
io(1) = linio('scdmrate/sysTs1',1,'input');
io(2) = linio('scdmrate/Zero-Order Hold',1,'openoutput');

これらの線形化ポイントを使用すると、モデル scdmrate_ol を効果的に線形化できます。

scdmrate_ol

連続信号と離散信号の両方を含んでいるモデルを線形化すると、ソフトウェアはレート変換メソッドを使用して、最初に連続信号を離散信号に変換します。既定のレート変換メソッドは、ゼロ次ホールドです。レート変換メソッドを表示または変更するには、関数 linearizeOptions の RateConversionMethod プロパティを使用します。次のコマンドは、RateConversionMethod が既定の zoh に設定されていることを示しています。

opt = linearizeOptions
 
Options for LINEARIZE:
    LinearizationAlgorithm        : blockbyblock
    SampleTime (-1 Auto Detect)   : -1
    UseFullBlockNameLabels (on/off): off
    UseBusSignalLabels (on/off): off

Options for 'blockbyblock' algorithm
    BlockReduction (on/off)                   : on
    IgnoreDiscreteStates (on/off)             : off
    RateConversionMethod (zoh/tustin/prewarp/ : zoh
                          upsampling_zoh/           
                          upsampling_tustin/        
                          upsampling_prewarp        
    PreWarpFreq                               : 10
    UseExactDelayModel (on/off)               : off
    AreParamsTunable (true/false)             : true

Options for 'numericalpert' algorithm
    NumericalPertRel : 1.000000e-05
    NumericalXPert   : []
    NumericalUPert   : []

次のコマンドは、ゼロ次ホールド法を使用して、線形化を実行します。線形化には、Zero-Order Hold ブロックが含まれているため、線形化のサンプル時間は 0.01 です。

sys_zoh = linearize(model,io,opt);

次のコマンドは、レート変換メソッドを Tustin (双 1 次変換) メソッドに変更してから、このメソッドを使用して線形化します。この線形化モデルのサンプル時間も 0.01 です。

opt.RateConversionMethod = 'tustin';
sys_tust = linearize(model,io,opt);

サンプル時間をオプション オブジェクトで 0 に指定することで、連続時間線形化モデルを作成することもできます。レート変換メソッドは、まだ離散時間線形化モデルを作成しますが、離散時間モデルを連続時間モデルに変換します。

opt.SampleTime = 0;
sys_c = linearize(model,io,opt);

3 つの線形化のボード線図は、2 つのレート変換メソッドの効果を示しています。この例では、Tustin レート変換メソッドが最も正確な連続システムの位相応答を表現し、ゼロ次ホールドがゲイン応答に最も一致しています。

p = bodeoptions('cstprefs');
p.YLimMode = {'manual'};
p.YLim = {[-100 0];[-180 -30]};
p.Grid = 'on';
bodeplot(sys_c,sys_zoh,sys_tust,p);
h = legend('sys_c','sys_zoh','sys_tust','Location','SouthWest');
set(h,'Interpreter','none')