§2 運動方程式から状態方程式へ

§2
運動方程式から状態方程式へ
微分方程式の形をする運動方程式を伝達関数に変換して、システムの解析を
行う方法は制御工学1で勉強した。また、制御手法として、PID 制御則につい
て説明しました。
制御工学Ⅱでは、全く同じ運動方程式を、もう一つの形、状態方程式に書き
換えることによって、このシステムの更なる性質の解析を行うこと、また、状
態フィードバックという制御則の設計法を紹介する。
PID 制御
状態フィードバック制御
一つの信号をフィードバック 沢山の信号をフィードバック
試行錯誤
論理的
1入力1出力に適用
多入力多出力適用
例2−1:磁気浮上システム
制御入力は電圧 V,出力はギャップh。PID 制御的な考え方だと,hの値を測定
しフィードバックする。しかし、これだけでは、うまく制御できないケースが
あります。ここで、h以外に、電流 i も測定し、その二つの値によって、制御
信号vを決める方法も考えられる。この場合は、2つの信号をフィードバック
することになるので、PID 制御では対応できない。
例2−1:2リンクのロボットアームの制御を考えるとき、これは2入力2出
力システムなので、一つの PID 制御はうまく出来ない。もし2つの
PID 制御なら、お互い干渉するので、うまくいかない場合もあります。
よって、二つの制御を一辺に設計する方法が必要である。
以上の例に対して、状態方程式に基づく設計法が好ましい。
2−1 状態方程式の導出
状態方程式は高次の微分方程式を連立一次微分方程式に書き換えて得るもの
である。
例2−3
バネ・マス・ダンパ系(右図)を例に
します。運動方程式:
(これは2次の微分方程式です)
ここで、 x1 = x, x 2 = x& とおくと、
x&1 = x 2
x& 2 = −cx 2 − kx1 = f
行列表現すると
1 ⎤ ⎡ x1 ⎤ ⎡0⎤
⎡ x&1 ⎤ ⎡ 0
⎢ x& ⎥ = ⎢− c − k ⎥ ⎢ x ⎥ + ⎢1⎥ f
⎦⎣ 2 ⎦ ⎣ ⎦
⎣ 2⎦ ⎣
状態方程式
1 ⎤
⎡x ⎤
⎡0
⎡0 ⎤
ここで、 x = ⎢ 1 ⎥, A = ⎢
, B = ⎢ ⎥ とおくと
⎥
⎣− c − k ⎦
⎣1 ⎦
⎣ x2 ⎦
x& = Ax + Bf
状態方程式の一般形
にような一般形で表現できる。この行列ベクトル形式で表示した方程式を
⎡x ⎤
システムの状態方程式といい、ベクトル x = ⎢ 1 ⎥ を状態ベクトルという。
⎣ x2 ⎦
また、計測できる量がxのとき、
ただし,
⎡x ⎤
y = x = [1 0]⎢ 1 ⎥
⎣ x2 ⎦
= Cx
C = [1 0]。
出力方程式
Jθ&& + bθ& = Ki
例2−4
モータの運動方程式:
L
状態変数を
di
+ Ri = v − Kθ&
dt
x1 = θ , x 2 = θ&, x3 = i とすると、
x&1 = x 2 , b
K
x2 +
x3
J
J
R
K
1
x& 3 = − x3 −
x2 + v
L
L
L
x& 2 = −
⎡ x&1 ⎤ ⎡ 0
⎢ x& ⎥ = ⎢ 0
⎢ 2⎥ ⎢
⎢⎣ x& 3 ⎥⎦ ⎢⎣ −
状態方程式
→
1
− bJ
−KL
0 ⎤ ⎡ x1 ⎤
⎥⎢ ⎥
K
J ⎥ ⎢ x2 ⎥ +
− R L ⎥⎦ ⎢⎣ x 3 ⎥⎦
⎡0⎤
⎢ 0 ⎥v
⎢ ⎥
⎢⎣ 1 L ⎥⎦
x& = Ax + Bv
計測できる量が iとθ の場合、
⎡ x1 ⎤
⎡θ ⎤ ⎡1 0 0⎤ ⎢ ⎥
出力式方程式 ⎢ ⎥ = ⎢
⎥ ⎢ x2 ⎥
⎣ i ⎦ ⎣0 0 1 ⎦ ⎢ x ⎥
⎣ 3⎦
→ y = Cx
一般に、状態方程式は以下の2式(1組)の形で表す。システムのパラメー
タは行列 A,B,C,D に反映される。
x& = Ax + Bu
y = Cx + Du
このように、さまざまな制御対象が状態変数ベクトルを選んで,状態方程式で
表現できる。システムによって、それぞれ状態変数の個数、行列 A,B,C が違う。
また、状態変数の選択によって、状態方程式の A,B,C,D は何通りもある。
2−2 状態方程式と伝達関数の関係
同じシステムの入出力の間の関係を、それぞれ伝達関数と状態方程式の形式で
表現される。この2つの表現は互いに変換できる。
y ( s)
伝達関数: G ( s ) =
u ( s)
x& = Ax + Bu
状態方程式:
y = Cx
状態方程式――>伝達関数
状態方程式をラプラス変換する
sx( s ) = Ax( s ) + Bu ( s)
x& = Ax + Bu ――> ( sI − A) x( s ) = Bu ( s )
x( s ) = ( sI − A) −1 Bu ( s )
y = Cx
――>
y ( s) = Cx( s ) = C ( sI − A) −1 Bu ( s )
G ( s) = C ( sI − A) −1 B
状態方程式――>伝達関数
伝達関数を微分方程式にもどし、状態変数を選んで状態方程式を書き出す。
Matlab によるシステム表現とシミュレーション:
①伝達関数によるシステムの演算
システム1:
>> sys1=tf([1
>>pole(sys1);
>> step(sys1);
>> bode(sys1);
G=
s +1
2 s + 3s + 1
2
2],[2 3 1])
システム1の記述
システム1の極を求める
システム1のステップ応答を求める
システム1のボード線図を求める
2つのシステムの結合
1 + 3s
s +s+2
>>G1=tf([1].[1 2]); G2=tf([1 3],[1 2 2]);
G1 =
1
,
s+2
G2 =
2
>>G1*G2
>>G1+G2
>>feedback(G1,G2);
②状態方程式によるシステムの演算
システム2:
1 ⎤ ⎡ x1 ⎤ ⎡0⎤
⎡ x&1 ⎤ ⎡ 0
⎢ x& ⎥ = ⎢− 1 − 5⎥ ⎢ x ⎥ + ⎢1⎥ f ,
⎦⎣ 2 ⎦ ⎣ ⎦
⎣ 2⎦ ⎣
⎡x ⎤
y = x = [1 0]⎢ 1 ⎥ + 0u
⎣ x2 ⎦
>>A=[0 1;-1 -5]; B=[0 ; 1]; C=[1 0]; D=0;
>> sys2=ss(A,B,C,D);
>>step(sys2)
>>pole(sys2);
>>bode(sys2);
2つのシステムの結合も同様にできる。
③ 伝達関数と状態方程式の書き換え
伝達関数 sys1 を状態方程式に書き換え、sys1s とする
>>sys1s=ss(sys1) ;
状態方程式 sys2 を伝達関数に書きかえ、sys2t とする
>> sys2t=tf(sys2);
(注: Matlab 関数 tf と ss はそれぞれ2通りの使い方がある.)
10/18
制御工学Ⅱ 演習問題
上図のフィードバックシステムに対して
1)K=1のとき、rからyまでの伝達関数を求めよ、安定性を判別せよ。
2)K=15のとき、rからyまでの伝達関数を求めよ、安定性を判別せよ。
2)K を0から20 まで1づつ増加し、対応するステップ応答の変化を観察し、
グラフより、システムが安定であるための K の大体の範囲を求めよ。
解:1)K=1のとき、 伝達関数=
0 .2 s 2 + 0 .3 s + 1
、
s 3 + 0 .4 s 2 + 2 .3 s + 1
不安定
3s 2 + 4.5s + 15
、 安定
s 3 + 3.2 s 2 + 6.5s + 15
3) 以下の Matlab 計算コードを edit で編集し、実行してみよう。実行した
2)K=15のとき、 伝達関数=
ら,コマンドウェンドウと Figure No.1 ウェンドウを見ながら,K の安定範
囲を把握しよう。