자동제어 - Root Locus Design

백승혁·2021년 11월 1일
0

자동제어

목록 보기
3/4

Root Locus of a Basic Feedback System

  • Closed-loop transfer function : Y(s)R(s)=T(s)=D(s)G(s)1+D(s)G(s)H(s)\frac{Y(s)}{R(s)}=T(s)=\frac{D(s)G(s)}{1+D(s)G(s)H(s)}
  • Chacteristic equation : 1+D(s)G(s)H(s)=01+D(s)G(s)H(s)=0
    a(s)+Kb(s)=01+KL(s)=0  (L(s):=b(s)/a(s))\rightarrow a(s)+Kb(s)=0\\ \rightarrow 1+KL(s)=0\;(L(s):=b(s)/a(s))

Root Locus : K를 0에서 \infty까지 키웠을 때 위 식을 만족하는 근을 모두 나타낸 것이다.
이를 통해 closed-loop system에서 K를 바꾸었을 때, pole의 위치가 어떻게 변하는지로 시스템이 어떻게 되는지를 판단할 수 있다.

일반적인 상황에서 L(s)L(s)는 open loop transfer function 이다.
Notation : 1+KL(s)=0,  L(s)=b(s)a(s)1+KL(s)=0,\; L(s)=\frac{b(s)}{a(s)}

b(s):zero  of  L(s)a(s):pole  of  L(s)a(s)+Kb(s)=(sr1)(sr2)(sri)    (ri:closedloop  pole)b(s) : zero\;of\;L(s)\\ a(s) : pole\;of\;L(s)\\ a(s)+Kb(s) = (s-r_1)(s-r_2)\cdots(s-r_i)\;\;(r_i : closed-loop\;pole)

Root locus forms : 1+KL(s)=0,  1+Kb(s)a(s)1+KL(s)=0,\;1+K\frac{b(s)}{a(s)}

a(s)+Kb(s)=0L(s)=b(s)a(s)=1Ka(s)+Kb(s)=0\\ L(s)=\frac{b(s)}{a(s)}=-\frac{1}{K}

root locus는 L(s)L(s)의 분모가 2차식이라면 2개의 roots와 2개의 branches가 나온다.
K=0K=0이면 L(s)L(s)의 pole에서 branch가 시작된다.
root가 real axis에서 complex axis로 넘어가는 point를 Breakaway points라 한다. root는 무한대로 발산한다.

Guidelines for Sketching a Root Locus

L(s)L(s) 분모의 차수가 다차식이 된다면 pole을 찾기가 어려워져서 Root Locus를 그리기가 어렵다.
이를 해결할 수 있는 방법이 있다.
Phase condition(L(s)=1/KL(s)=-1/K)만으로 root locus를 찾는다.

L(s)=Πi=1m(szi)Πi=1n(spi)=1KL(s)=[(szi)][(spi)]=ψiϕi=180°+360°(l1)[0°+360°(l1)  for  K<0]\begin{aligned} L(s)=\frac{\Pi_{i=1}^{m}(s-z_i)}{\Pi_{i=1}^{n}(s-p_i)} &= -\frac{1}{K}\rightarrow\angle L(s)=\sum[\angle(s-z_i)]-\sum[\angle(s-p_i)]\\ &= \sum\psi_i-\sum\phi_i=180\degree+360\degree(l-1)[0\degree+360\degree(l-1)\;for\;K<0] \end{aligned}

Rules for Determining a Positive(180°\degree) Root Locus

Root Locus를 손으로 그리는 방법

  • RULE 1 : n개의 branch가 L(s)L(s)의 pole에서 시작하고 m개의 zero에서 끝난다.

  • RULE 2 : 실수축에 내가 보고자 하는 점이 있고 그 오른쪽에 pole의 갯수가 홀수개 있다면 그 점은 root locus 위에 있다.

  • RULE 3 : K가 매우 클 때, nmn-m개의 branch는 s=αs=\alpha점에서 ϕl\phi_l각도로 발산한다.

    ϕl=180°+360°(l1)nm,l=1,2,,nm(Angles of asymptotes)α=pizinm,(Center of asymptotes)\phi_l=\frac{180\degree+360\degree(l-1)}{n-m},\quad l=1,2,\dots,n-m\quad(\text{Angles of asymptotes})\\ \alpha=\frac{\sum p_i-\sum z_i}{n-m},\qquad (\text{Center of asymptotes})

  • RULE 4 : 한 점에 pole이 1개 이상 있을 때, pole에서 시작하는 선의 각도는 몇 도 일까?(multiplicity qq) 또한, zero로 수렴하는 선의 각도는 몇 도일까?

    qϕl,dep=ψiijϕi180°360°(l1)qψl,arr=ϕiijψi+180°360°(l1)q\phi_{l,dep}=\sum\psi_i-\sum_{i\neq j}\phi_i-180\degree-360\degree(l-1)\\ q\psi_{l,arr}=\sum\phi_i-\sum_{i\neq j}\psi_i+180\degree-360\degree(l-1)

  • RULE 5 : locus에서 두 선이 만나는 mulitple roots point는 다음과 같다. (bdadsadbds)=0(b\frac{da}{ds}-a\frac{db}{ds})=0 그리고, 이 중근으로 접근하는 root locus의 각도는 다음과 같다. 180°+360°(l1)q\frac{180\degree+360\degree(l-1)}{q}

Continuation locus : 여러 roots의 점에서부터 도착하는 각도를 계산하는 것을 말한다. K=K1+K2K = K_1+K_2라 하고 K2K_2 parameter로 새 locus를 그린다.

a(s)+Kb(s)=a(s)+(K1+K2)b(s)=(a(s)+K1b(s))+K2b(s)multiple poles at K=K1{K2>0:angle of departure from multiple polesK2<0:angle of arrival to multiple polea(s)+Kb(s)=a(s)+(K_1+K_2)b(s)=(a(s)+K_1b(s))+K_2b(s)\\ \text{multiple poles at }K=K_1\rightarrow\begin{cases}K_2>0:\text{angle of departure from multiple poles}\\K_2<0:\text{angle of arrival to multiple pole}\end{cases}

Selecting the Parameter Value

특정 K값을 정하게 되면 그 상황에 대한 system의 dynamic response를 알 수 있다.
Magnitude condition : K=1L(s) or K=1L(s)K=-\frac{1}{L(s)}\text{ or }K=\frac{1}{|L(s)|}

Dominant poles : 다른 pole에 비해 허수축에 가까운 pole을 의미한다. 이 pole이 이 시스템의 응답을 좌지우지할 수 있다.

PD control의 단점 : 아날로그 신호는 sin wave와 같은 noise가 들어오게 된다. 이를 미분을 하게 되면 이 noise도 같이 증폭되어 들어오는 상황을 만들 수 있어서 결국 시스템에 영향을 줄 수 있다. 이를 극복하고자 lead compensator를 사용하여 controller를 만든다.

lead compensator : Ks+zs+p(0<z<p)K\frac{s+z}{s+p}(0<z<p)의 미분의 사라진 모습이다. 이때, pole이 zero에 비해 충분히 멀다면 PD control과 비슷한 root를 그리는 것을 알 수 있다.

Design Using Dynamic Compensation

Lead compensation

D(s)=Ks+zs+p,z<pPD  control  (kP+kDs)D(s)=K\frac{s+z}{s+p}, z<p\\ \approx PD\;control\;(k_P+k_Ds)

응답성을 높이기 위해 rise time을 줄이고 overshoot을 줄인다.(감쇠비를 키운다.)

Lead compensation을 설정하는 방법은 많지만 2가지 정도만 알아보자.

Lag compensation

D(s)=Ks+zs+p,z>pPI  control  (kP+kI1s)D(s)=K\frac{s+z}{s+p}, z>p\\ \approx PI\;control\;(k_P+k_I\frac{1}{s})

zero가 충분히 크다면 pole을 무시할 수 있어 PI control과 유사하게 보일 수 있다.

Notch compensation

light damped를 만들어서 안정적으로 작동하게 한다.

ex) Design of Lead Compensation [trial & error]

Plant : G(s)=1s(s+1)G(s)=\frac{1}{s(s+1)}
Design specifications : Mp20%,  tr0.3  secM_p\leq 20\%,\;t_r \leq0.3\;sec

ζ0.5,  ωn1.8/0.36Set ζ0.5,  ωm7(margin)\rightarrow \zeta \geq0.5,\;\omega_n\cong1.8/0.3\cong6\rightarrow\text{Set }\zeta\geq0.5,\;\omega_m\cong7(\text{margin})

Lead Compensation : D(s)=Ks+2s+10D(s)=K\frac{s+2}{s+10}

(ϕl=±90°,α=4.5)K=70ζ=0.56,  ωn=7.7 rad/sec(\phi_l=\pm90\degree,\quad\alpha=-4.5)\\ K=70\rightarrow\zeta=0.56,\;\omega_n=7.7\text{ rad/sec}

Poles : ζωn(=4.3)±jω\zeta\omega_n(=-4.3)\pm j\omega

0110=4.34.3+r3r3=2.4-0-1-10=-4.3-4.3+r_3\rightarrow r_3=-2.4

pole은 -2.4로 zero에 가까이에 놓여 있다.


Overshoot가 설정한 값보다 넘게 나온 것은 compensation의 zero가 과도 응답에 영향을 주기 때문이다.
이를 해결하기 위해 compensation을 바꾸어 준다.

Design of Lead compensation [Method 1]

Plant : G(s)=1s(s+1)G(s)=\frac{1}{s(s+1)}
Design specifications : Mp20%,  tr0.3  secM_p\leq 20\%,\;t_r \leq0.3\;sec

ζ0.5,  ωn1.8/0.36Set ζ0.5,  ωm7(margin)\rightarrow \zeta \geq0.5,\;\omega_n\cong1.8/0.3\cong6\rightarrow\text{Set }\zeta\geq0.5,\;\omega_m\cong7(\text{margin})

Lead compensation : D(s)=Ks+7s+21D(s)=K\frac{s+7}{s+21}

위 상황으로는 damping ratio가 0.5를 넘지 않기에 zero를 옮긴다.

Lead compensation : D(s)=Ks+5s+21D(s)=K\frac{s+5}{s+21}

Design of Lead Compensation [Method 2]

Plant : G(s)=1s(s+1)G(s)=\frac{1}{s(s+1)}
Design specifications :

  • closed loop poles at r0=3.5+j3.53r_0=-3.5+j3.5\sqrt{3}
  • p20  (noise suppression requirement)p\leq20\;(\text{noise suppression requirement})
    pole을 20으로 설정한다.
    (G(s)1s+p)=107.4°  at r0=3.5+j3.53Angle ψ from the lead zero=72.6°z=5.4\angle(G(s)\frac{1}{s+p})=107.4\degree\;\text{at } r_0=-3.5+j3.5\sqrt{3}\\ \rightarrow\text{Angle }\psi\text{ from the lead zero}=72.6\degree\\ \rightarrow z=-5.4
    따라서, gain condition은 다음과 같다. K=127K=127
    D(s)=127s+5.4s+20\rightarrow D(s)=127\frac{s+5.4}{s+20}

overshoot가 20%보다 크므로 fine tuning을 통해 수정하여 사용한다.

Design Using Lag Compensation

Dynamic response는 만족하지만 steady state error가 만족스럽지 않은 경우를 생각해 보자. 이는 low-frequency gain(Kp,  Kv,  etcK_p,\;K_v,\;etc)가 매우 작은 경우이다. 이를 해결하기 위해 low-frequency gain의 값을 키우지만 dynamic response는 바꾸지 않도록 하고자 한다.
Natural frequency ωn\omega_n과 같은 higher frequency에서는 제어기가 그 역할을 하지 않고 steady state가 되면 s=0s=0일 때 gain을 키워서 steady state error를 줄인다.
위와 같은 방법을 위해 lag compensation을 사용한다.

D(s)=Ks+zs+p,  z>pz,pωnD(s)=K\frac{s+z}{s+p},\;z>p\\ z,p\ll\omega_n

즉, compenstor의 zero와 pole을 원점에 가깝게 두면 dynamic response에서는 영향이 크게 없지만, s=0s=0을 넣은 정상상태 상황에서는 zero가 pole보다 크게 되면 정상상태 오차가 줄어드는 상황을 만들 수 있다.

ex)

G(s)=1s(s+1),D(s)=91(s+2)s+13G(s)=\frac{1}{s(s+1)},\quad D(s)=\frac{91(s+2)}{s+13}

Velocity constant : Kv=lims0sKDG=lims0s(91)s+2s+131s(s+1)=14K_v=\lim_{s\rightarrow0}sKDG=\lim_{s\rightarrow0}s(91)\frac{s+2}{s+13}\frac{1}{s(s+1)}=14

root locus의 변화가 거의 없는 상태에서 KvK_v를 키우고 싶다.(Kv=70K_v=70)

lag compensation :

D2(s)=s+zs+p,z>p,set z and p smallD2(s)=s+0.05s+0.01D_2(s)=\frac{s+z}{s+p},\quad z>p,\\ \text{set z and p small}\\ \rightarrow\qquad D_2(s)=\frac{s+0.05}{s+0.01}

이렇게 되면 dynamic response에는 변화가 없고 steady state error만 줄일 수 있다.

Design Using Notch Compensation

Lead and lag compensation : KD(s)=91s+2s+13s+0.05s+0.01KD(s)=91\frac{s+2}{s+13}\frac{s+0.05}{s+0.01}
이때, 시스템의 response가 아래 그림과 같이 50rad/sec 주기로 진동한다 가정해보자.

Plant transfer function uncluding the effect of flexibility :

G(s)=2500s(s+1)(s2+s+2500)=1s(s+1)2500s2+s+2500G(s)=\frac{2500}{s(s+1)(s^2+s+2500)}=\frac{1}{s(s+1)}\frac{2500}{s^2+s+2500}

진동을 포함한 plant에 대해서 compensation이 추가된 root locus를 그리게 되면 다음과 같다.

위 그림과 같이 pole이 RHP방면으로 이동하는 부분이 생기게 된다. 이를 해결하기 위해 몇가지 방법들이 있다.

  • Gain stabilization : ω=50\omega=50 영역에서는 loop gain을 충분히 줄이게 되면 50rad/sec에서 영향이 줄게 된다.(lag compensation을 사용한다.)

  • Phase stabilization : zero를 추가를 해서 RHP 방면으로 나가는 부분을 zero로 수렴하게 하는 방법이다.

Notch filter를 사용해서 oscillation을 억제한다.

Dnotch(s)=s2+2ζωos+ωo2(s+ωo)2D_{notch}(s)=\frac{s^2+2\zeta\omega_os+\omega_o^2}{(s+\omega_o)^2}
profile
초보 개발자

0개의 댓글