Getting Started | ![]() ![]() |
SISOモデルの構築
ユーザのプラントを記述する微分方程式の組を一度作成すると、Control System Toolboxの簡単なコマンドを使って、SISOモデルを構築できます。つぎの節では、つぎの事柄を記述します。
DCモータの状態空間モデルの作成
つぎのステートメントは、DCモータの種々のパラメータのノミナル値です。
R= 2.0 % オーム L= 0.5 % Henrys K1 = .015 % トルク定数 K2 = .015 % emf 定数 Kf = 0.1 % Nms J= 0.01 % kg.m^2/s^2
これらの値を与えると、関数ss
を使って、数値的に状態空間表現を作成することができます。
A = [-(R + K2)/L 0; K1/J -Kf/J] B = [1; 0]; C = [0 1]; D = [0]; sys_ss = ss(A,B,C,D)
a = x1 x2 x1 -4.03 0 x2 1.5 -10 b = u1 x1 1 x2 0 c = x1 x2 y1 0 1 d = u1 y1 0
モデル表現間の変換
DCモータの状態空間表現を得ると、伝達関数(TF)や零点/極/ゲイン(ZPK)モデルを含んで、他のモデル表現に変換できます。
伝達関数表現状態空間表現から伝達関数表現に、関数tf
を使って変換します。たとえば、つぎのコードを使って、DCモータの伝達関数表現に変換します。
sys_tf=tf(sys_ss) Transfer function: 1.5 -------------------- s^2 + 14.03 s + 40.3零点/極/ゲイン表現
同様に、関数zpk
は、状態空間または伝達関数表現から零点/極/ゲイン形式に変換します。つぎのコードを使って、DCモータに対する状態空間表現を零点/極/ゲイン表現に変換します。
sys_zpk = zpk(sys_ss) Zero/pole/gain: 1.5 --------------- (s+10) (s+4.03)
注意 状態空間表現は、数値計算に対して最も適したものです。モデルの仕様とその確認の場合を除いて、高精度な数値計算のために、モデルを組み合わせる前に状態空間表現に変換し、伝達関数表現や極/零/ゲイン表現を利用しないでください。数値精度の問題に関する詳細は、計算の信頼性を参照してください。 |
伝達関数や零点/極/ゲインSISO表現の作成
DCモータの例題で、状態空間アプローチは、モデルを表現しているいくつかの行列を作成します。異なるアプローチを選択する場合、対応するモデルは、関数tf
, zpk
, ss
, frd
を使って作成することができます。
sys = tf(num,den) %伝達関数 sys = zpk(z,p,k) % 零点/極/ゲイン sys = ss(a,b,c,d) % 状態空間 sys = frd(response,frequencies) % 周波数応答データ
たとえば、直接、DCモータの伝達関数を作成したい場合、つぎのコマンドを使ってください。
s = tf('s'); sys_tf = 1.5/(s^2+14.03*s+40.3)
Control System Toolboxは、つぎの伝達関数を作成します。
Transfer function: 1.5 -------------------- s^2 + 14.03 s + 40.3
また、つぎのコードのように、分子と分母を指定することにより、伝達関数を作成することもできます。
sys_tf = tf(1.5,[1 14.03 40.3]) Transfer function: 1.5 -------------------- s^2 + 14.03 s + 40.3
零点/極/ゲインモデルを作成するには、つぎのコマンドを使います。
sys_zpk = zpk([],[10 4.03], 1.5)
Zero/pole/gain: 1.5 --------------- (s+10) (s+4.03) Continuous-time model.
![]() | SISO例題:DCモータ | 線形モデルに遅れを付加 | ![]() |