fc2ブログ

制御工学その28

8 さらに制御工学を学ぶ人のために




8.1 状態空間表現と安定性




8.1.1 状態空間表現

伝達関数表現は、システムの入出力関係のみに注目しているため、システムの内部信号がどのような振る舞いをしているのかを考慮できない。
さらに、初期の信号がすべて0であることを前提にしているため、初期値を考慮することが出来ない。
そこで、状態空間表現を用いる。

状態空間表現は、状態変数と呼ばれるシステムの内部信号x(t)を用いて、状態方程式と呼ばれる一階の微分方程式と出力方程式と呼ばれる
代数方程式とで記述される。
特に、システムが線形微分方程式で示される場合、状態空間表現は

状態方程式

x'(t) = A*x(t) + B*u(t)

出力方程式

y(t) = C*x(t) + D*u(t)

となる。
ただし、ここで

Aはn*nの行列
Bはn*1のベクトル
Cは1*nのベクトル
Dはスカラー

である。

このように、u(t),y(t)が共にスカラーであるようなシステムを1入出力系と呼ぶ。
また、システムが真にプロパーである場合、D=0である。

例8.1 垂直駆動アームの状態空間表現

いつもの垂直駆動アームは、運動方程式で表すと

Jθ''(t) = -cθ'(t) - Mlgθ(t) + τ(t)

となる。ここで、状態変数を


x(t) = |x1(t)| = | θ(t)|
|x2(t)| |θ'(t)|


u(t) = τ(t)

y(t) = θ(t)

と選ぶと、

x1'(t) = θ'(t) = x2(t)
x2'(t) = θ''(t) = 1/J * (-cθ'(t)-Mlgθ(t)+τ(t))
  = -Mlg/J*x1(t) -c/J*x2(t) + 1/J*u(t)

y(t) = θ(t) = x1(t)

となる。
そうすると、状態空間表現式を満たすには



x'(t) =|x1'(t)| = | x2(t)| = A * |x1(t)| + B*u(t)
|x2'(t)| |θ''(t)| |x2(t)|

y(t) = x1(t) = C*|x1(t)| + D*u(t)
|x2(t)|

を満たす必要があるため、

A = | 0, 1|
|-Mlg/J,-c/J|

B = | 0|
|1/J|

C = |1,0|

D = 0



となる。

8.1.2 伝達関数表現との関係

状態空間表現は伝達関数表現に容易に変換することができる。
初期状態をx(0) = 0とし、伝達関数表現の式をラプラス変換すると

sX(s) = AX(s) + BU(s)
よって

X(s) = (s*I-A)^-1*BU(s)

さらに

Y(s) = CX(s) + DU(s) = {C(sI-A)^-1*B+D}*U(s)

となるので、伝達関数P(s)は

P(s) = Y(s)/U(s) = C(sI-A)^-1*B+D

となる。


例8.2

さっき求めた垂直駆動アームの話

P(s) = Y(s)/U(s) = C(sI-A)^-1*B+D

に代入すると


P(s) = |1,0|*(|s,0| - | 0, 1|)^-1* | 0|
|0,s| |-Mlg/J,-c/J| |1/J|

= |1,0|*(| s ,-1|)^-1* | 0|
|Mlg/J,s+c/J| |1/J|

= |1,0|*1/(s^2+cs/J+Mlg/J)*(| s+c/J,1|)* | 0|
|-Mlg/J,s| |1/J|



= 1/(s^2+cs/J+Mlg/J)|s+c/J,1|*| 0| = 1/(s^2+cs/J+Mlg/J) * 1/J
|1/J|


となり、これは伝達関数表現と一致する。

一方、伝達関数表現から状態空間表現への変換は無数にあるため、よく知られたアルゴリズムがある。


例8.3 伝達関数表現から状態空間表現への変換

伝達関数表現

Y(s) = P(s)U(s)

P(s) = N(s)/D(s) = b2*s^2 + b1*s^2 + b0 / s^3+a2*s^2+a1*s+a0

というシステムが与えられたとき、状態空間表現への変換は、

V(s) = 1/D(s) * U(s)になるようなv(t)を考えれば

y(t) = b2*v''(t) + b1*v'(t) + b0*v(t)

u(t) = v'''(t) + a2*v''(t) + a1*v'(t) + a0*v(t)

と等価である。

したがって、状態変数を、

x1(t) = v(t)
x2(t) = v'(t)
x3(t) = v''(t)

と選ぶと、可制御標準形と呼ばれる、以下の状態空間表現が得られる。

可制御状態空間表現への変換


|x1'(t)| = |0,0,-a0|*|x1(t)| + |0|*u(t)
|x2'(t)| |1,0,-a1| |x2(t)| |0|
|x3'(t)| |0,1,-a2| |x3(t)| |1|

y(t) = |b0,b1,b2|*|x1(t)|
|x2(t)|
|x3(t)|



また、アルゴリズムは省略するが、可観測標準系と呼ばれる以下の状態空間表現に変換することも多い。

|x1'(t)| = |0,0,-a0|*|x1(t)| + |b0|*u(t)
|x2'(t)| |1,0,-a1| |x2(t)| |b1|
|x3'(t)| |0,1,-a2| |x3(t)| |b2|

y(t) = |0,0,1|*|x1(t)|
|x2(t)|
|x3(t)|



問題8.1

システムを状態空間表現で表す。
(1)伝達関数は

P(s) = 1/Ms^2+cs

正則表現化して

P(s) = 1/M / (s^2 + c/M*s)

a1 = c/M
a0 = 0
b0 = 1/M

x = x1=y(t),x2=y'(t)

とすると


|x1'(t)| = |0, 1|*|x1(t)| + |0|*u(t)
|x2'(t)| |0,-c/M| |x2(t)| |1|

y(t) = |1/M,0|*|x1(t)|
|x2(t)|


と言いたいけれど、どうやら違う形にして欲しいらしい。ぐぬぬ。


(2)

システムの微分方程式は

CL*y''(t)+RC*y'(t) + y(t) = u(t)

ここで
x1 = y(t)
x2 = y'(t)

とすると


|x1'(t)| = | x2(t)| = A * |x1(t)| + B*u(t)
|x2'(t)| = |-R/L*x2(t)-1/CL*x1(t)+1/CL*u(t)| |x2(t)|


y(t) = x1(t) = C*|x1(t)| + D*u(t)
|x2(t)|

A = | 0, 1|
|-1/CL,-R/L|

B = | 0|
|1/CL|

C = |1,0|

D = 0

またちょっと違うな。なんでだろう。

さらに伝達関数へ変換する。

公式は

P(s) = C(sI-A)^-1*B+D

なので



P(s) = |1,0| * (|s,0| - | 0, 1|)^-1*| 0|
|0,s| |-1/CL,-R/L| |1/CL|

(|s,0| - | 0, 1|)^-1 = | s, -1|^-1 = 1/(s^2+R/L*s+1/CL) * |s+R/L,1|
|0,s| |-1/CL,-R/L| |1/CL,s+R/L| |-1/CL,s|

P(s) = 1/(s^2+R/L*s+1/CL) * |1,0| * |s+R/L,1| * | 0|
|-1/CL,s| |1/CL|

P(s) = 1/(s^2+R/L*s+1/CL) * |s+R/L,1| * | 0| = 1/(CLs^2+CRs+1)
|1/CL|


となる。これはあってる。


まとめ

状態空間表現というものを考えた。
システムを状態変数と呼ばれる内部信号によって表現する方法なので、システムのそれぞれの内部状態が一手に分かる優れもの。
特に、システムが微分方程式で表されるならば、

状態方程式

x'(t) = A*x(t) + B*u(t)

出力方程式

y(t) = C*x(t) + D*u(t)

となる。
ただし、ここで

Aはn*nの行列
Bはn*1のベクトル
Cは1*nのベクトル
Dはスカラー


の2つ弐式で表すことが出来る。
また、この状態空間表現から伝達関数表現に変換することが出来る。
逆の場合、伝達関数から状態空間表現は無数の変換が考えられ(問題の時に示した)、簡単なアルゴリズムがよく知られている。


スポンサーサイト



コメントの投稿

非公開コメント

検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR