상태 변수 피드백 제어기
기준 입력이 0인 경우의 상태 변수 피드백 제어기
X ˙ = A X + B U \dot X = AX+BU X ˙ = A X + B U
Y = C X Y = CX Y = CX
레귤레이터(regulator) : 기준 입력(R)이 0이면, 모든 상태 변수를 0으로 수렴하게 하는 제어기
U = − K X = − [ k 1 k 2 … k n ] [ x 1 x 2 ⋮ x n ] = − ( k 1 x 1 + k 2 x 2 + … + k n x n ) U = -KX = -\begin{bmatrix}k_1 & k_2& \ldots & k_n \end{bmatrix} \begin{bmatrix}x_1\\ x_2\\ \vdots \\x_n \end{bmatrix} \\= -(k_1x_1+k_2x_2+ \ldots +k_nx_n) U = − K X = − [ k 1 k 2 … k n ] ⎣ ⎡ x 1 x 2 ⋮ x n ⎦ ⎤ = − ( k 1 x 1 + k 2 x 2 + … + k n x n )
X ˙ = A X − B K X = ( A − B K ) X \dot X = AX-BKX = (A-BK)X X ˙ = A X − B K X = ( A − B K ) X → 폐루프 시스템의 특성 방정식
∣ s I − ( A − B K ) ∣ = 0 |sI-(A-BK)| = 0 ∣ s I − ( A − B K ) ∣ = 0 은 상태변수를 피드백한 시스템의 특성방정식이다. 이 특성 방정식이 원하는 시간응답을 갖는 특성방정식과 일치하도록 이득행렬K의 값을 결정하는 것이 상태변수 피드백 시스템 제어기를 설계하는 것이다.
원하는 시스템의 특성 방정식의 근이 r 1 , r 2 , … , r n r_1,r_2,\ldots ,r_n r 1 , r 2 , … , r n 와 같다면, ∣ s I − ( A − B K ) ∣ = ( s − r 1 ) ( s − r 2 ) … ( s − r n ) |sI-(A-BK)| = (s-r_1)(s-r_2)\ldots(s-r_n) ∣ s I − ( A − B K ) ∣ = ( s − r 1 ) ( s − r 2 ) … ( s − r n ) 이 만족하도록 K K K 값을 결정한다. 다항식의 계수를 비교하여 K K K 값을 구한다.
예제)
시스템의 전달함수는 G ( s ) = 1 s ( s + 1 ) G(s) = \dfrac{1}{s(s+1)} G ( s ) = s ( s + 1 ) 1 이다. 제어기는 D ( s ) = 100 ( 1 + 0.1 s ) D(s) = 100(1+0.1s) D ( s ) = 100 ( 1 + 0.1 s ) 이다. 이 시스템의 최대오버슛이 10 [%]이하, 정정시간 2초 이하되도록 제어기를 설계하여라.
1 + D ( s ) G ( s ) = 1 + 100 ( 1 + 0.1 s ) s ( s + 1 ) = 0 1+D(s)G(s) = 1+\dfrac{100(1+0.1s)}{s(s+1)} = 0 1 + D ( s ) G ( s ) = 1 + s ( s + 1 ) 100 ( 1 + 0.1 s ) = 0
특성방정식 : s 2 + 11 s + 100 = 0 s^2 + 11s + 100 = 0 s 2 + 11 s + 100 = 0
x ˙ = A x + B u = [ 0 1 0 − 1 ] x + [ 0 1 ] u \dot x = Ax+Bu = \begin{bmatrix}0 &1 \\ 0 & -1 \end{bmatrix} x + \begin{bmatrix}0 \\1 \end{bmatrix}u x ˙ = A x + B u = [ 0 0 1 − 1 ] x + [ 0 1 ] u
∣ s I − ( A − B K ) ∣ = ∣ [ s 0 0 s ] − ( [ 0 1 0 − 1 ] − [ 0 1 ] [ k 1 k 2 ] ) ∣ = ∣ [ s − 1 k 1 s + 1 + k 2 ] ∣ = s 2 + ( 1 + k 2 ) s + k 1 |sI-(A-BK)| = \begin{vmatrix} \begin{bmatrix}s& 0\\ 0 & s \end{bmatrix} - \left( \begin{bmatrix}0 & 1\\ 0 & -1 \end{bmatrix}- \begin{bmatrix}0 \\1 \end{bmatrix} \begin{bmatrix}k_1 & k_2 \end{bmatrix} \right) \end{vmatrix}\\ = \begin{vmatrix} \begin{bmatrix}s& -1\\ k_1 & s+1+k_2 \end{bmatrix} \end{vmatrix} = s^2 +(1+k_2)s+k_1 ∣ s I − ( A − B K ) ∣ = ∣ ∣ [ s 0 0 s ] − ( [ 0 0 1 − 1 ] − [ 0 1 ] [ k 1 k 2 ] ) ∣ ∣ = ∣ ∣ [ s k 1 − 1 s + 1 + k 2 ] ∣ ∣ = s 2 + ( 1 + k 2 ) s + k 1
k 1 = 100 , k 2 = 10 k_1 = 100 \quad , \quad k_2 = 10 k 1 = 100 , k 2 = 10 상태 변수 피드백 제어기 : u = − ( 100 x 1 + 10 x 2 ) u = -(100x_1 + 10x_2) u = − ( 100 x 1 + 10 x 2 )
차수가 3차 이상인 경우
[ x 1 ˙ x 2 ˙ ⋮ x n ˙ ] = [ 0 1 0 … 0 0 0 1 … 0 ⋮ ⋮ ⋮ … ⋮ − a 0 − a 1 − a 2 … − a n − 1 ] [ x 1 x 2 ⋮ x n ] + [ 0 0 ⋮ 1 ] u \begin{bmatrix} \dot {x_1}\\ \dot{x_2}\\ \vdots \\ \dot { x_n} \end{bmatrix} = \begin{bmatrix} 0 & 1& 0& \ldots & 0 \\ 0 & 0& 1& \ldots &0 \\ \vdots& \vdots& \vdots& \ldots & \vdots \\ -a_0& -a_1& -a_2& \ldots & -a_{n-1} \end{bmatrix} \begin{bmatrix}x_1\\ x_2\\ \vdots \\ x_n \end{bmatrix}+ \begin{bmatrix}0 \\0 \\ \vdots \\ 1 \end{bmatrix} u ⎣ ⎡ x 1 ˙ x 2 ˙ ⋮ x n ˙ ⎦ ⎤ = ⎣ ⎡ 0 0 ⋮ − a 0 1 0 ⋮ − a 1 0 1 ⋮ − a 2 … … … … 0 0 ⋮ − a n − 1 ⎦ ⎤ ⎣ ⎡ x 1 x 2 ⋮ x n ⎦ ⎤ + ⎣ ⎡ 0 0 ⋮ 1 ⎦ ⎤ u
특성방정식은 s n + a n − 1 s n − 1 + … + a 1 s + a 0 = 0 s^n+a_{n-1}s^{n-1}+\ldots +a_1s +a_0 = 0 s n + a n − 1 s n − 1 + … + a 1 s + a 0 = 0 이다.
원하는 특성방정식 근을 만족하는 다항식을 만든다.
α c ( s ) = s n + α n − 1 s n − 1 + … + α 1 s + α 0 = 0 \alpha_c(s) = s^n+\alpha_{n-1}s^{n-1}+ \ldots +\alpha_1s +\alpha_0 = 0 α c ( s ) = s n + α n − 1 s n − 1 + … + α 1 s + α 0 = 0
x ˙ = ( A − B K ) x = ( [ 0 1 0 … 0 0 0 1 … 0 ⋮ ⋮ ⋮ … ⋮ − a 0 − a 1 − a 2 … − a n − 1 ] − [ 0 0 ⋮ 1 ] [ k 1 k 2 … k n ] ) x \dot x = (A-BK)x = \left( \begin{bmatrix} 0& 1& 0& \ldots & 0 \\ 0& 0& 1& \ldots & 0 \\ \vdots & \vdots & \vdots & \ldots & \vdots \\ -a_0 & -a_1 & -a_2 & \ldots & -a_{n-1} \end{bmatrix} - \begin{bmatrix}0 \\0 \\ \vdots \\ 1 \end{bmatrix} \begin{bmatrix}k_1 & k_2& \ldots & k_n \end{bmatrix} \right) x x ˙ = ( A − B K ) x = ⎝ ⎛ ⎣ ⎡ 0 0 ⋮ − a 0 1 0 ⋮ − a 1 0 1 ⋮ − a 2 … … … … 0 0 ⋮ − a n − 1 ⎦ ⎤ − ⎣ ⎡ 0 0 ⋮ 1 ⎦ ⎤ [ k 1 k 2 … k n ] ⎠ ⎞ x
= [ 0 1 0 … 0 0 0 1 … 0 ⋮ ⋮ ⋮ … ⋮ − a 0 − k 1 − a 1 − k 2 − a 2 − k 3 … − a n − 1 − k n ] x = \begin{bmatrix} 0& 1& 0& \ldots & 0 \\ 0& 0& 1& \ldots & 0 \\ \vdots & \vdots & \vdots & \ldots & \vdots \\ -a_0-k_1 & -a_1-k_2 & -a_2-k_3 & \ldots & -a_{n-1}-k_n \end{bmatrix} x = ⎣ ⎡ 0 0 ⋮ − a 0 − k 1 1 0 ⋮ − a 1 − k 2 0 1 ⋮ − a 2 − k 3 … … … … 0 0 ⋮ − a n − 1 − k n ⎦ ⎤ x
s n + ( a n − 1 + k n ) s n − 1 + … + ( a 1 + k 2 ) s + ( a 0 + k 1 ) = 0 s^n+(a_{n-1}+k_n)s^{n-1} + \ldots + (a_1+k_2)s+(a_0+k_1) = 0 s n + ( a n − 1 + k n ) s n − 1 + … + ( a 1 + k 2 ) s + ( a 0 + k 1 ) = 0
k 1 = α 0 − a 0 k 2 = α 1 − a 1 ⋮ k n = α n − 1 − a n − 1 \begin{aligned} &k_1 =\alpha_ 0 - a_0 \\ &k_2 = \alpha_1 - a_1 \\ &\qquad \vdots \\ &k_n = \alpha_{n-1} - a_{n-1} \end{aligned} k 1 = α 0 − a 0 k 2 = α 1 − a 1 ⋮ k n = α n − 1 − a n − 1
K = [ 0 … 0 1 ] M c − 1 α c ( A ) K = \begin{bmatrix}0 & \ldots & 0 & 1 \end{bmatrix} M_c ^{-1} \alpha_c(A) K = [ 0 … 0 1 ] M c − 1 α c ( A )
M c = [ B A B A 2 B … A n − 1 B ] M_c = \begin{bmatrix} B & AB & A^2B & \ldots & A^{n-1}B \end{bmatrix} M c = [ B A B A 2 B … A n − 1 B ]
α c ( A ) = A n + α n − 1 A n − 1 + … + α n A + α 0 I \alpha_c(A) = A^n+\alpha_{n-1}A^{n-1}+ \ldots +\alpha_nA+\alpha_0I α c ( A ) = A n + α n − 1 A n − 1 + … + α n A + α 0 I
M c M_c M c 의 역행렬이 존재하면 ⇒ K K K 를 구할 수 있음
상태 변수 방정식이 제어 가능할 경우 → 폐루프 시스템의 극점을 원하는 곳에 놓도록 해주는 상태 변수 피드백 제어기를 항상 구할 수 있음
⇔ (필요 충분 조건)
폐루프 시스템의 극점을 원하는 곳에 놓는 상태 변수 피드백 제어기를 항상 구할 수 있다면 → 이 시스템은 제어 가능한 시스템임
예제)
x ˙ = [ 0 1 − 1 0 ] x + [ 0 1 ] u y = [ 1 0 ] x \dot{x} =\begin{bmatrix} 0& 1\\ -1& 0\end{bmatrix} x + \begin{bmatrix}0\\ 1\end{bmatrix}u \\
y =\begin{bmatrix}1& 0 \end{bmatrix}x x ˙ = [ 0 − 1 1 0 ] x + [ 0 1 ] u y = [ 1 0 ] x
폐루프 시스템의 극점을 더 왼쪽으로 놓을 경우 → 응답은 빨라지며 제어 신호의 크기는 더 커진다
제어 신호가 커진다는 것 → 구동 장치의 용량이 커져야 하며 에너지도 많이 소비하는 것을 의미 → 비용의 증가
기준 입력이 0이 아닌 경우의 상태 변수 피드백 제어기
R 0 R_0 R 0 : 기준 입력
U = R 0 − K X U = R_0-KX U = R 0 − K X
R 0 ( s ) R ( s ) = D F ( s ) \dfrac{R_0(s)}{R(s)} = D_F(s) R ( s ) R 0 ( s ) = D F ( s )
X ˙ = A X + B U = A X + B ( R 0 − K X ) = ( A − B K ) X + B R 0 \dot X = AX+BU = AX+B(R_0-KX) = (A-BK)X+BR_0 X ˙ = A X + B U = A X + B ( R 0 − K X ) = ( A − B K ) X + B R 0
X ( s ) = ( s I − A + B K ) − 1 B R 0 ( s ) X(s) = (sI-A+BK)^{-1}BR_0(s) X ( s ) = ( s I − A + B K ) − 1 B R 0 ( s )
Y ( s ) R 0 ( s ) = C ( s I − A + B K ) − 1 B \dfrac{Y(s)}{R_0(s)} = C(sI-A+BK)^{-1}B R 0 ( s ) Y ( s ) = C ( s I − A + B K ) − 1 B
Y ( s ) R ( s ) = C ( s I − A + B K ) − 1 B D F ( s ) \dfrac{Y(s)}{R(s)} = C(sI-A+BK)^{-1}BD_F(s) R ( s ) Y ( s ) = C ( s I − A + B K ) − 1 B D F ( s )
예제)
G ( s ) = 3 s + 60 s 3 + 7 s 2 + 20 s + 60 G(s)= \dfrac{3s+60}{s^3+7s^2+20s+60} G ( s ) = s 3 + 7 s 2 + 20 s + 60 3 s + 60 이 시스템은 단위계단응답 37.5%의 오버슈트와 4.3초의 정정시간, 오버슈트가 9.48%, 정정시간 1초이하가 되도록 설계하여라.
답)
예제)
[ x 1 ˙ x 2 ˙ ] = [ − 3 1 0 − 1 ] [ x 1 x 2 ] + [ 0 1 ] u \begin{bmatrix} \dot {x_1} \\ \dot{ x_2} \end{bmatrix} =\begin{bmatrix} -3&1 \\ 0&-1 \end{bmatrix} \begin{bmatrix}x_1 \\ x_2 \end{bmatrix} +\begin{bmatrix} 0 \\ 1 \end{bmatrix} u [ x 1 ˙ x 2 ˙ ] = [ − 3 0 1 − 1 ] [ x 1 x 2 ] + [ 0 1 ] u
y = [ 1.5 0.5 ] [ x 1 x 2 ] y=\begin{bmatrix} 1.5 &0.5 \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \end{bmatrix} y = [ 1.5 0.5 ] [ x 1 x 2 ]
백분율 오버슈트 4.3%, 정정시간 1초가 되도록 설계하여라.
예제)
[ x 1 ˙ x 2 ˙ ] = [ − 4 − 3 1 0 ] [ x 1 x 2 ] + [ 1 0 ] u \begin{bmatrix} \dot {x_1} \\ \dot{ x_2} \end{bmatrix}=\begin{bmatrix} -4&-3 \\ 1&0 \end{bmatrix} \begin{bmatrix}x_1 \\ x_2 \end{bmatrix} +\begin{bmatrix} 1 \\ 0 \end{bmatrix} u [ x 1 ˙ x 2 ˙ ] = [ − 4 1 − 3 0 ] [ x 1 x 2 ] + [ 1 0 ] u
y = [ 0.5 3 ] [ x 1 x 2 ] y=\begin{bmatrix} 0.5 &3 \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \end{bmatrix} y = [ 0.5 3 ] [ x 1 x 2 ]
s 2 + 8 s + 32 s^2+8s+32 s 2 + 8 s + 32 가 되도록 상태부귀환 이득벡터를 구하라.
예제)
G ( s ) = s 2 + 10 s + 16 s 3 + 10 s 2 + 18 s + 16 G(s)=\dfrac{s^2+10s+16}{s^3+10s^2+18s+16} G ( s ) = s 3 + 10 s 2 + 18 s + 16 s 2 + 10 s + 16 이 시스템 오버슈트가 10%, 정정시간 0.8초이하가 되도록 설계하여라.
Login to write a comment.