일반적으로 제어 시스템에는 피드백 루프가 포함된다. 피드백 루프란 앞 글에서 다루었듯이, 결과값을 입력값에 반영하여 제어값을 결정하는 루프이다. 지금까지 배웠던 전달함수 분석, 최종값 정리, 주파수 응답을 응용하여 시스템의 출력을 내가 원하는대로 바꿀 수 있다. 폴이 달라지면 시스템의 모든 특성이 바뀐다는 것은 지금까지 배워왔다. 그리고 앞 글에서 Feedback Loop를 통해 폴을 이동시킬 수 있는 방법을 배웠다. 그렇다면 과연 어떻게 제어기를 짤 수 있을까? 그리고 제어기를 짠다는 것이 무슨 의미일까? 이 글에서 다루도록 하겠다.
1. Controller
Plant가 무엇인지는 알 것이다. Plant란, 물체에 적용되는 동역학 시스템 혹은 자연에 존재하는 시스템을 뜻한다. 즉, 인위적으로 바꿀 수 없는 시스템인 것이다. 예를들어 질량이 1kg인 물체에 힘 10N을 가했다고 하자. 그럼 가속도 $10m/s^2$으로 움직일 것이다. 이 사실은 결코 바꿀 수 없다. 이때, 생각을 해보자. 과연 이 물체를 10미터만 움직이도록 하려면 어떻게 해야 할까. 힘을 적절하게 주면 될까? 될 수 있다. 그러나 이 과정은 자동으로 제어되는 것이 아니라 사전에 계산된 힘만큼 수동으로 제어되는 것이다. 자동으로 제어한다는 것은 무엇일까. 물체의 위치를 측정하는 센서가 있다고 하자. 그리고 물체의 가속도를 자동으로 조절할 수 있는 장치가 있다. 명령값 10m가 입력되면 센서는 자신의 위치를 측정하기 시작한다. 0m로 측정될 것이다. 이때 10m로 움직이기 위하여 가속도를 발생시킨다. 센서에서 측정되는 위치는 점점 10m에 가까워질 것이다. 그렇다면 10m에 가까워질수록 가속도를 줄이고 멈추기 위해 반대 방향으로 가속도를 발생시킨다면 정확하게 10m에 멈출 수 있을 것이다. 이때, 각각의 위치에 대하여 특정 가속도를 발생시키도록 미리 설정해 둔다면 물체는 10m에 도달할 수 있을 것이다. 오차가 발생하더라도 계속 가속도를 발생시켜 나가며 목표값에 도달할 수 있을 것이다. 이러한 자동 제어 시스템을 지금까지 배웠던 Block Diagram과 전달함수를 통해 구성할 수 있다.
2. P Control
$$\dot{x} : \textit{velocity}$$
$$b : \textit{drag coefficient}$$
이 그림과 같이 추진력 u를 발생시킬 수 있는 자동차가 있다고 하자. 이 자동차의 위치를 10미터 이동시키고자 한다. 사용하고 있는 센서는 위치를 측정할 수 있다고 하자. 우선 물체의 동역학 모델은 아래와 같다.
$$m\ddot{x}+b\dot{x}=u$$
$$G(s) = \frac{X(s)}{U(s)}=\frac{1}{s(ms+b)}$$
u를 제어 입력이라고 하고, 입력값을 10이라고 했을 때 물체의 움직임은 어떻게 될까?. Step 입력에 대한 분석을 진행해 보자. 우선 최종값 정리 $\lim_{s\rightarrow0}sX(s)=\infty$임을 알 수 있다. 절대 만족할 수 없는 결과이다. 이번에는 센서를 통해 현재의 위치를 피드백해 보자. 아래와 같이 블럭 다이어그램을 그릴 수 있다.
이때 입력값은 목표값인 X command이고 출력값은 x가 된다. 제어값 u는 X command에 x를 피드백하여 빼준 값으로 정했다. 측 목표값과 현재값의 오차가 되는 셈이다. 이러한 피드백을 Proportional Control, 흔히 P-Control이라고 한다. 이 경우 오픈루프와는 어떻게 달라질까. 우선 전달함수를 구해보자.
$$G(S) = \frac{\frac{1}{s(ms+b)}}{1+\frac{1}{s(ms+b)}}=\frac{1}{ms^2+bs+1}$$
이때 스텝 입력에 대한 DC gain은 1이다. 즉, 명령값과 동일한 값으로 수렴한다는 것을 알 수 있다. 센서를 통해 현재 위치값을 받아와 피드백하고, 코드 알고리즘 상에서 u를 X command - X값으로 정하도록 자동화 해놓는다면 목표값에 수렴시킬 수 있다. 앞서 배웠지만 수렴하는 것이 자동 제어의 전부는 아니다. 이 시스템의 진동은 어떻게 될까? 이는 제타와 관련이 되어있다. 제타를 구해보자. 이 시스템의 고유진동수는 1rad/s이고 $2\zeta\omega = \frac{b}{m}$라는 것에서 $\zeta=\frac{b}{2m}$라는 것을 알 수 있다. 일반적으로 질량이 항력계수보다 매우 크므로 $\zeta$는 매우 작은 값을 가질 것이다. 즉 수렴하는데 까지 진동이 매우 심할것임을 알 수 있다.
만약 피드백은 1로 하는 것이 아니라 특정 계수 $K_p$를 곱해서 피드백한다면 어떻게 될까. 아래와 같이 블럭 다이어그램으로 나타낼 수 있다.
이때 전달함수는 아래와 같다.
$$G(S) = \frac{\frac{1}{s(ms+b)}}{1+\frac{K_p}{s(ms+b)}}=\frac{1}{ms^2+bs+K_p}$$
이 시스템의 DC gain은 $\frac{1}{K_p}$이다. 즉 명령값에 대하여 $\frac{1}{K_p}$만큼 작아진 값으로 수렴하게 된다. 이 시스템의 DC gain을 1로 만들기 위하여 다음과 같이 제어기를 추가할 수 있다.
이 시스템의 전달함수는 $\frac{K_p}{ms^2+bs+K_p}$로 DC gain이 1인 것을 알 수 있다. 이 때 진동은 어떻게 될까.
$\omega^2=\frac{K_p}{m}$이고 $\zeta=\frac{b}{2\omega m}$이다. 따라서 $\zeta = \frac{b}{2\sqrt{mK_p}}$이다. 여기서 알 수 있는 것은 $K_p$가 크면 클수록 $\zeta$가 작아지고 진동이 심해진다는 것이다. 즉 $K_p$는 어느정도 작아야 한다. 그러나 $K_p$가 작을수록 가속도가 작아지고 그로인하여 목표값이 도달하는 시간이 길어진다는 것을 알 수 있다. 결국 이러한 피드백만으로 시스템을 제어하기에는 한계가 있다는 것이다. 이 문제점을 보완하기 위해 등장한 것이 D-Control이다.
3. D-Control
Differential control이라고 하는 D-control은 위치의 미분값, 즉 속도를 피드백하여 제어값에 반영하도록 설계된 제어기이다.
위 Block Diagram에서 속도를 피드백하면 아래와 같다.
안쪽의 피드백 루프부터 풀어나가면 이 시스템의 전달함수를 구할 수 있다. 안쪽의 피드백 루프에 대한 전달함수는 $\frac{\frac{1}{ms+b}}{1+\frac{K_d}{ms+b}}=\frac{1}{ms+(b+K_d)}$이고 두번 째 피드백 루프를 풀면 전체 전달함수는 다음과 같다.
$$G(s) = \frac{\frac{K_p}{s(ms+(b+K_d))}}{1+\frac{K_p}{s(ms+(b+K_d))}}=\frac{K_p}{ms^2+(b+K_d)s+K_p}$$
이 시스템의 DC gain은 1로, 명령값에 수렴함을 알 수 있다. 이때 제타 값은 어떻게 될까. 위의 방법과 동일하게 구하면 $\zeta = \frac{b+K_d}{2\sqrt{mK_p}}$가 된다. 즉 $K_d$로부터 제타값을 증가시킬 수 있다. 이를 이용하면 $K_p$값은 크게, $K_d$ 값또한 크게 설정하여 반응성도 빠르며 안정적으로 수렴하도록 만들 수 있다.
결과적으로 P제어와 D제어를 함께 사용하면, 빠르고 안정적인 제어가 가능하다. 제어기를 구성한 뒤, 전제 시스템의 전달함수를 구하여 DC gain과 제타를 통해 원하는 값에 원하는 형태로 수렴하게 만드는 것이 가능하다. 주어진 문제의 경우 자동차의 질량과 항력계수를 알면 적절한 $K_p$와 $K_d$값을 설정할 수 있을 것이다. 여기서 적절한의 정도는 제어 공학자의 경험과 노하우에 달려 있다.
To do
PD 제어기는 제어기 중 가장 많이 사용되고 응용되는 구조 이다. 위 글에서 다루었듯이 원하는 목표값에 수렴시킬 수 있을 뿐만 아니라, 제타를 조절하여 수렴하는 형태 또한 제어할 수 있다. 이렇게 강력함에도 불구하고 심플한 구조 덕분에 자주 사용된다. 그러나, PD 제어기에는 문제점이 하나 존재한다. 바로 외란이 있거나 제어기의 오차가 있을 경우이다. 외란이 있을 경우 최종값이 변화한다면 제대로된 제어기라고 할 수 없을 것이다. 외란이 있더라도 목표값에 제대로 수렴해야 하기 때문이다. 또한 자연에 존재하는 플랜트를 정확히 모델링한다는 것은 거의 불가능하다. 즉 시스템의 전달함수에는 어느정도 오차가 존재한다. 이러한 오차에 대해 PD제어기는 제대로 반응하지 못한다. 이와 관련된 이론은 다음 글에서 다룰 것이며, 과연 어떻게 하면 이러한 오차를 상쇄시키며 목표값에 도달할 수 있을지 다룰 것이다.