Simulink Control Design

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

Simulink ブロックのカスタム線形化を指定

この例では、Simulink ブロックまたはサブシステムの線形化を指定する方法を示します。

はじめに

Simulink Control Design の LINEARIZE コマンドを使用すると、正確な線形化法を使用して Simulink モデルの線形近似が得られます。この線形化は、特定の操作点周りの小さい領域で有効です。この方法は、ほとんどの Simulink モデルに効果的ですが、正確な線形化法を変更して、不連続性の影響を考慮したり、導関数や遅延動作のダイナミクスを近似したりする必要もあります。飽和や不感帯非線形など、多くの組み込み Simulink ブロックでは、[線形化時にゲインとして扱う] を選択してこの動作を制御できます。この例では、サブシステムにカスタム線形化を指定して、PWM 信号の線形化を近似します。

PWM 発生サブシステムを使用したモデルの線形化

次の例のモデルには、サブシステム scdpwm/Voltage to PWM があります。このサブシステムは、プラント モデルに入る PWM 信号をモデル化します。

mdl = 'scdpwm';
open_system(mdl);

標準的なコンフィギュレーションを使用して、このモデルを線形化すると、結果の線形モデルのゲインはゼロになります。

io = getlinio(mdl);
sys = linearize(mdl,io)
sys =
 
  d = 
                Step
   Plant Model     0
 
Static gain.

ブロック scdpwm/Voltage to PWM/Compare To Zero により、この線形化はゼロになります。

pwmblk = 'scdpwm/Voltage to PWM';
open_system(pwmblk)

ブロックは純粋な不連続非線形性を表すため、線形化はゼロです。

u = [-1:0.1:0,0:0.1:1];
y = [zeros(11,1);ones(11,1)];
plot(u,y)
xlabel('Block Input - u')
ylabel('Block Output - y')
set(gca,'YLim',[-0.1 1.1])

PWM サブシステムのカスタム線形化を指定

Simulink Control Design を使用すると、Simulink モデルのブロックの線形化を制御できます。ブロックの線形化を指定するには、以下を使用します。

  • 行列

  • 伝達関数や状態空間などの線形時不変モデル

  • Robust Control の不確かさをもつパラメーター/状態空間モデル

この例では、PWM サブシステムにむだ時間が含まれています。

$$PWM(s) = e^{-sT_s}$$

このむだ時間は、100 Hz での PWM 信号のデューティ比周波数に対応します。サブシステム scdpwm/Voltage to PWM にむだ時間を指定するには、ブロックを右クリックして [線形解析]、[線形化を指定] を選択します。次のブロック ダイアログで、遅延のダイナミクスが開くよう指定します。

次のコードは、遅延を指定ダイアログに入れるのと同じです。

set_param(pwmblk,'SCDEnableBlockLinearizationSpecification','on');
rep = struct('Specification','ss(1,''OutputDelay'',1/100)',...
             'Type','Expression',...
             'ParameterNames','',...
             'ParameterValues','');
set_param(pwmblk,'SCDBlockLinearizationSpecification',rep);

指定したサブシステムの線形化を使用してモデルを線形化すると、予想どおりの結果が得られます。

opt = linearizeOptions('SampleTime',0);
sys = zpk(linearize(mdl,io,opt))
sys =
 
  From input "Step" to output "Plant Model":
                       1
  exp(-0.01*s) * -------------
                 (s^2 + s + 1)
 
Continuous-time zero/pole/gain model.

線形化とシミュレーションの比較

frest.createStep 信号を使用すると、モデルの線形化と実際の線形化を比較できます。元のモデルの設定を使用してシミュレートするために、線形化の指定を削除する必要はありません。線形化の指定は、シミュレーションには影響を与えません。線形化に対してのみです。視覚的には、線形化はダイナミクスを正確に表していると判断されます。

cla
instep = frest.createStep('Ts',1/10000,'StepTime',1,...
                          'StepSize',1e-1,'FinalTime',15);
[sysf,simoutstep] = frestimate(mdl,io,instep);
frest.simCompare(simoutstep,sys,instep)
legend('Linearization with PWM Subsystem Specification',...
            'Simulated Step Response','Location','East')

Simulink ブロックのカスタム線形化を指定する他のアプリケーション

ブロックの線形化の指定は、線形時不変モデルに制限されていません。Robust Control Toolbox を使用すると、モデル内のブロックに対して、不確かさをもつパラメーターと不確かさをもつ状態空間 (USS) モデルを指定できます。したがって、結果の線形化は、不確かさをもつモデルです。「不確実性をもつ Simulink モデルの線形化」の例では、不確かさをもつ線形化の計算方法を示します (Robust Control Toolbox が必要)。

また、連続領域の離散コントローラーと連続プラントのダイナミクスを使用したモデルの解析を実行することもできます。詳細は、「計算遅延とサンプリング効果のモデリング」の例を参照してください。

Simulink モデルを閉じます。

bdclose(mdl)