[제어공학] type2 시스템의 해석

Eugene CHOI·2021년 3월 22일
0

Control Engineering

목록 보기
2/9
post-thumbnail

주파수 영역의 제어 시스템

오늘 우리의 목표는 type2 제어 시스템에서 Mp,ts,trM_p, t_s, t_r을 구하는 공식이 어떻게 도출되는지 이해하는 것입니다.
그러기 위해서는 복소 평면상으로 표현되는 전달함수를 실수 평면상으로 옮기는 것부터 시작하여야 합니다.
0ζ<10 \leq \zeta < 1인 under damped 시스템이라고 가정할 때 전달함수 G(s)G(s)는 다음과 같습니다.

G(s)=Y(s)R(s)=ωn2s2+2ζωns+ωn2G(s)=\frac{Y(s)}{R(s)}=\frac{\omega_n^2}{s^2+2\zeta\omega_n s+\omega_n^2}

여기서 R(s)R(s)가 unit step function, 즉 1s\frac1s이라고 가정 합시다.

Y(s)=ωn2s2+2ζωns+ωn21sY(s)=\frac{\omega_n^2}{s^2+2\zeta\omega_n s+\omega_n^2}\frac1s

부분분수 분리

헤비사이드 부분 분수 분리법을 이용하면 1s\frac1s 는 쉽게 분리가 됩니다.

Y(s)=(ωn2s2+2ζωns+ωn21s)×s=(As+Bs+Cs2+2ζωns+ωn2))×sY(s)=(\frac{\omega_n^2}{s^2+2\zeta\omega_n s+\omega_n^2}\frac1s)\times s = (\frac As+\frac{Bs+C}{s^2+2\zeta\omega_n s+\omega_n^2)})\times s

여기서 s=0s = 0을 대입하면

ωn2ωn2=A\frac{\omega_n^2}{\omega_n^2}=A 가 되므로, A=1A = 1 입니다.

Y(s)=1s+Bs+Cs2+2ζωns+ωn2Y(s)=\frac 1s+\frac{Bs+C}{s^2+2\zeta\omega_n s+\omega_n^2}

나머지 B,CB, C는 딱히 꼼수가 보이지 않으니 통분을 하여 구합시다.

ωn2s2+2ζωns+ωn2×1s=Bs2+Cs+s2+2ζωns+ωn2s2+2ζωns+ωn2×1s\frac{\omega_n^2}{s^2+2\zeta\omega_n s+\omega_n^2 }\times \frac1s = \frac{Bs^2+Cs+s^2+2\zeta\omega_n s+\omega_n^2}{s^2+2\zeta\omega_n s+\omega_n^2}\times \frac1s

{Bs2+s2=0B=1Cs+2ζωns=0C=2ζωn\begin{cases} Bs^2+s^2=0 \Rightarrow B = -1\\ Cs + 2\zeta\omega_ns = 0 \Rightarrow C=-2\zeta\omega_n \end{cases}

Y(s)=1ss+2ζωns2+2ζωns+ωn2Y(s)=\frac 1s-\frac{s+2\zeta\omega_n}{s^2+2\zeta\omega_n s+\omega_n^2}

라플라스 역변환

복잡한 두 번째 항을 다음 세 가지 라플라스 역변환 공식을 이용하여 정리합니다.

{1. eat=L1{1sa}2. sin(at)=L1{as2a2}3. cos(at)=L1{ss2a2}\begin{cases} 1. e^{at}=\mathcal{L}^{-1}\{{\frac1{s-a}}\}\\ 2. \sin(at)=\mathcal{L}^{-1}\{{\frac a{s^2-a^2}}\}\\ 3. \cos(at)=\mathcal{L}^{-1}\{{\frac s{s^2-a^2}}\}\\ \end{cases}

Y(s)=1ss+2ζωn(s+ζωn)2ζ2ωn2+ωn2Y(s)=\frac 1s-\frac{s+2\zeta\omega_n}{(s+\zeta\omega_n)^2-\zeta^2\omega_n^2 + \omega_n^2}

Y(s)=1ss+2ζωn(s+ζωn)2+ωn2(1ζ2)Y(s)=\frac 1s-\frac{s+2\zeta\omega_n}{(s+\zeta\omega_n)^2+\omega_n^2(1-\zeta^2)}

Y(s)=1ss+2ζωn(s+ζωn)2+ωd2(ωd=1ζ2)Y(s)=\frac 1s-\frac{s+2\zeta\omega_n}{(s+\zeta\omega_n)^2+\omega_d^2}(\because \omega_d=\sqrt{1-\zeta^2})

Y(s)=1ss+ζωn(s+ζωn)2+ωd2+ζωn(s+ζωn)2+ωd2Y(s)=\frac 1s-\frac{s+\zeta\omega_n}{(s+\zeta\omega_n)^2+\omega_d^2}+\frac{\zeta\omega_n}{(s+\zeta\omega_n)^2+\omega_d^2}

L1Y(s)=L1{1ss+ζωn(s+ζωn)2+ωd2+ζωn(s+ζωn)2+ωd2}\mathcal{L}^{-1}{Y(s)}=\mathcal{L}^{-1}\{\frac 1s-\frac{s+\zeta\omega_n}{(s+\zeta\omega_n)^2+\omega_d^2}+\frac{\zeta\omega_n}{(s+\zeta\omega_n)^2+\omega_d^2}\}

y(t)=L1{1s}L1{s+ζωn(s+ζωn)2+ωd2}+L1{ζωn(s+ζωn)2+ωd2}y(t)=\mathcal{L}^{-1}\left\{\frac 1s\right\}-\mathcal{L}^{-1}\left\{\frac{s+\zeta\omega_n}{(s+\zeta\omega_n)^2+\omega_d^2}\right\}+\mathcal{L}^{-1}\left\{\frac{\zeta\omega_n}{(s+\zeta\omega_n)^2+\omega_d^2}\right\}

1번 공식을 적용하여 ζωn\zeta\omega_n을 빼냅니다.

y(t)=1eζωntL1{ss2+ωd2}+eζωntL1{ζωns2+ωd2}y(t)=1-e^{-\zeta\omega_nt}\mathcal{L}^{-1}\{\frac{s}{s^2+\omega_d^2}\}+e^{-\zeta\omega_nt}\mathcal{L}^{-1}\{\frac{\zeta\omega_n}{s^2+\omega_d^2}\}

이제 2번 공식을 이용하여 두번째 항을 변환하면 다음과 같습니다.

y(t)=1eζωnt(cos(ωdt)+L1{ζωns2+ωd2})y(t) = 1-e^{-\zeta\omega_nt}(\cos(\omega_dt)+\mathcal{L}^{-1}\{\frac{\zeta\omega_n}{s^2+\omega_d^2}\})

세 번째 항은 바로 변환할 수 없기 때문에 조금 변형이 필요하다.

ωd=ωn1ζ2\omega_d=\omega_n\sqrt{1-\zeta^2} 식을 사용하여 ωn\omega_nωd\omega_d로 바꿉니다.

y(t)=1eζωnt(cos(ωdt)+L1{ζs2+ωd2ωd1ζ2})y(t) = 1-e^{-\zeta\omega_nt}(\cos(\omega_dt)+\mathcal{L}^{-1}\{\frac{\zeta}{s^2+\omega_d^2}\frac{\omega_d}{\sqrt{1-\zeta^2}}\})

y(t)=1eζωnt(cos(ωdt)+ζ1ζ2L1{ωds2+ωd2})y(t) = 1-e^{-\zeta\omega_nt}(\cos(\omega_dt)+\frac{\zeta}{\sqrt{1-\zeta^2}}\mathcal{L}^{-1}\{\frac{\omega_d}{s^2+\omega_d^2}\})

y(t)=1eζωnt(cos(ωdt)+ζ1ζ2sin(ωdt))y(t) = 1-e^{-\zeta\omega_nt}(\cos(\omega_dt)+\frac{\zeta}{\sqrt{1-\zeta^2}}\sin(\omega_dt))

여기서 삼각함수의 합성 공식을 이용하여 더 정리가 가능합니다.
asin(x)+bcos(x)=a2+b2sin(x+α)a \sin(x) + b \cos(x)=\sqrt{a^2+b^2} \sin(x+\alpha)
α\alpha 값은 궁금하지 않기 때문에 미지수로 남겨두어도 괜찮습니다
최종적으로 다음의 식으로 정리됩니다.

y(t)=1eζωnt1ζ2sin(ωdt+ϕ)y(t)=1-\frac{e^{-\zeta\omega_nt}}{\sqrt{1-\zeta^2}} \sin(\omega_dt+\phi)

그래프

라플라스 역변환을 통하여 도출된 식이 올바르게 도출되었는지 그래프를 출력하여 검증하여 보겠습니다.
matlab 대신 python의 control, pyplot 라이브러리를 사용하여 y(t)y(t)Y(s)Y(s)를 동시에 plot합니다.
라플라스 변환 전후의 그래프가 모양이 같도록 감쇠비 ζ=0.5\zeta=0.5, 고유진동수 ωn=1\omega_n=1로 설정하였습니다.

import matplotlib.pyplot as plt
import numpy as np
import control.matlab as ctrl

zeta = 0.5
omega_n = 1
omega_d = omega_n*np.sqrt(1-zeta**2)

t = np.arange(0,10,0.01)
yt = 1-np.exp(-zeta*omega_n*t)*(np.cos(omega_d*t)+zeta/np.sqrt(1-zeta**2)*np.sin(omega_d*t))
plt.subplot(1,2,1)
plt.title('y(t)')
plt.plot(t, yt, 'b-')

num = np.array([omega_n**2])
den = np.array([1, 2*zeta, omega_n**2])
sys = ctrl.tf(num, den)
y, t = ctrl.step(sys,T=10)
plt.subplot(1,2,2)
plt.title('Y(s)')
plt.plot(t, y)
plt.show()


그 결과 전형적으로 출렁이며 수렴하는 그래프를 똑같이 출력하는 모습을 볼 수 있습니다.
여기서 ζ,ω\zeta, \omega를 바꾸면 다른 응답특성을 보이는 시스템을 볼 수 있습니다.


Envelope

제어 시스템은 요동치며 수렴하게 됩니다. 왜 그럴까요?
그 이유는 sin\sin항의 앞에 있는 상수가 시간의 흐름에 따라 감소하기 때문입니다.

y(t)=1eζωnt1ζ2sin(ωdt+ϕ)y(t)=1-\frac{e^{-\zeta\omega_nt}}{\sqrt{1-\zeta^2}} \sin(\omega_dt+\phi)

그래서 이 시스템을 위 아래로 자연스러운 곡선으로 연결하는 함수는 다음과 같습니다.

f(t)=1±eζωnt1ζ2f(t)=1±\frac{e^{-\zeta\omega_nt}}{\sqrt{1-\zeta^2}}

실제로 그런지 출력을 해보겠습니다.

import matplotlib.pyplot as plt
import numpy as np

zeta = 0.5
omega_n = 1
omega_d = omega_n*np.sqrt(1-zeta**2)

t = np.arange(0,10,0.01)
yt = 1-np.exp(-zeta*omega_n*t)*(np.cos(omega_d*t)+zeta/np.sqrt(1-zeta**2)*np.sin(omega_d*t))
envelope1 = 1-np.exp(-zeta*omega_n*t)/np.sqrt(1-zeta**2)
envelope2 = 1+np.exp(-zeta*omega_n*t)/np.sqrt(1-zeta**2)
plt.plot(t, envelope1, 'b--')
plt.plot(t, envelope2, 'b--')
plt.plot(t, yt, 'r-')

plt.show()


정확히 응답곡선의 위 아래를 감싸는 모습을 확인할 수 있습니다.
마치 함수에 봉투를 씌우는 것 같아 envelope function이라고 합니다.


시스템의 해석

이러한 응답 그래프에서 얻을 수 있는 정보는 다음과 같습니다.


tp:t_p: peak time

y(t)y(t)가 가장 큰 값을 가질 때는 언제일까요?
미분값이 0이 될 때 수평접선을 가지기 때문에 y˙(tp)=0\dot y(t_p)=0tpt_p를 가질 때입니다.

y˙(t)=eζωntpsin(ωdtp)(ζωn(ζωnωd)+(ωd))=0\dot y(t)=e^{\zeta \omega_n t_p}\sin(\omega_d t_p)(-\zeta\omega_n(\frac{\zeta\omega_n}{\omega_d})+(-\omega_d))=0

sin(ωdtp)=0\sin(\omega_d t_p)=0

ωdtp=0,π,2π,3π,...\omega_d t_p = 0, \pi, 2\pi, 3\pi, ...

0은 의미가 없으므로 ωdtp=π\omega_d t_p = \pi일 때가 peak가 될 것입니다.

tp=πωdt_p = \frac{\pi}{\omega_d}

Mp:M_p: maximum overshoot

MpM_p는 시스템이 수렴했을 때보다 얼마나 더 많이 증가했는지를 나타내는 수치입니다.
우리가 지금 해석하고 있는 모델은 DC gain 이 1이므로 1에 수렴한다는 것을 할 수 있습니다.
그렇가면 y(t)y(t)의 피크값(y(tp)y(t_p))에서 1을 빼주면 알 수 있으므로 다음과 같이 정리할 수 있습니다.
Mp=y(tp)1=y(πωd)1=1eζωn(πωd)(cos(ωd(πωd))+ζ1ζ2sin(ωd(πωd)))1=eζπ1ζ2 (ωd=ωn1ζ2)\begin{aligned} M_p &= y(t_p)-1\\ &=y(\frac{\pi}{\omega_d})-1\\ &=1-e^{-\zeta\omega_n(\frac{\pi}{\omega_d})}(\cos(\omega_d(\frac{\pi}{\omega_d}))+\frac{\zeta}{\sqrt{1-\zeta^2}}\sin(\omega_d(\frac{\pi}{\omega_d})))-1\\ &=e^{\frac{-\zeta\pi}{\sqrt{1-\zeta^2}}} (\because \omega_d=\omega_n\sqrt{1-\zeta^2}) \end{aligned}

Mp=eζπ1ζ2M_p =e^{\frac{-\zeta\pi}{\sqrt{1-\zeta^2}}}

따라서 MpM_p는 오로지 ζ\zeta에 의하여 결정된다는 사실을 알 수 있습니다.


PO:PO: percent overshoot

overshoot을 퍼센트 비율로 나타낸 것입니다.

PO=y(tp)y()y()×100%=y(tp)11×100%=(1eζωn(πωd)(cos(ωd(πωd))+ζ1ζ2sin(ωd(πωd)))1)×100%=100eζπ1ζ2%\begin{aligned} PO&=\frac{y(t_p)-y(\infin)}{y(\infin)}\times100\%\\ &=\frac{y(t_p)-1}{1}\times100\%\\ &=(1-e^{-\zeta\omega_n(\frac{\pi}{\omega_d})}(\cos(\omega_d(\frac{\pi}{\omega_d}))+\frac{\zeta}{\sqrt{1-\zeta^2}}\sin(\omega_d(\frac{\pi}{\omega_d})))-1)\times100\%\\ &=100e^{\frac{-\zeta\pi}{\sqrt{1-\zeta^2}}}\% \end{aligned}

PO=100eζπ1ζ2%PO=100e^{\frac{-\zeta\pi}{\sqrt{1-\zeta^2}}}\%

ts:t_s: settleing time

사실 우리의 응답곡선은 무한한 시간이 지나도 결코 1이 될 순 없습니다.
그래서 우리는 이 응답곡선이 어느정도 안정화가 되었다고 하는 지점을 정하여 지표로 삼습니다.
보통 2%~5% 사이로 진동이 줄어드는 시점을 안정화 되는데 걸린 시간 tst_s라고 합니다.
위에서 알아본 envelope function을 보면 쉽게 알 수 있습니다.
만약 2%를 tst_s의 기준점이라고 본다면,eζωnt1ζ2<0.02\frac{e^{-\zeta\omega_nt}}{\sqrt{1-\zeta^2}}<0.02를 만족하는 tt가 정답이 될 것입니다.
일반적으로 다음과 같이 정리할 수 있습니다.

ts4ζωnfor  2%  criteriont_s\approxeq\frac{4}{\zeta\omega_n}\quad for\;2\%\;criterion
ts3ζωnfor  5%  criteriont_s\approxeq\frac{3}{\zeta\omega_n}\quad for\;5\%\;criterion
profile
Hi, my name is Eugene CHOI the Automotive MCU FW developer.

2개의 댓글

comment-user-thumbnail
2021년 3월 23일

수식 깔끔하다 뭘로쓴거?

1개의 답글