Block Diagram
block diagram은 입력과 출력의 관계를 나타내는 그림으로, 입력 u가 block을 지나 x를 출력한다는 의미이다. block 안에는 시스템의 s-domain 전달함수나 t-domain의 함수, 혹은 미분 방정식 등을 포함할 수 있다. s-domain 전달함수가 포함되면 입력과 전달함수의 곱으로 출력이 계산되며, t-domain의 함수가 포함되면 입력과 함수의 convolution으로 출력이 계산된다. 미분 방정식이 포함되면, 출력은 미분방정식의 해 이며 그렇지 않을 경우 따로 나타내 주어야 한다.
Open-Loop System
Open loop system은 데이터의 이동이 한 방향으로만 흘러가는 것을 뜻한다. 출력값은 오로지 입력값에만 영향을 받는다. 즉, 시스템은 미리 정해진 입력에 대해서만 동작하며, 외란에 의해 출력에 오차가 생길 경우 이를 반영하여 제어하지 못한다. 시스템의 미분 방정식만 알고 있다면, 특정 목표에 수렴하기 위한 입력을 계산해서 넣어주기만 하면 되기 때문에 구현이 상대적으로 쉽다.
완벽하게 예측이 가능하거나 외란이 거의 없는 시스템의 경우 개루프 제어를 사용하기도 하는데, 아주 작은 외란에도 영향을 받을 수 있으며 제어값이 목표값에 수렴하지 않을 수 있다. 아래는 개루프 시스템의 예시들이다.
block이 여러개 있는 경우, 시스템이 여러개 이어져 있다고 보면 된다. 한 시스템의 출력이 다음 시스템의 입력이 되는 것이다.
block diagram operation
위 예시들에 block이 여러개 나와서 당황스러울 수 있다. 일반적으로 전체 시스템은 여러개의 시스템들로 이루어져 있기 때문에 여러개의 block으로 표현한다.
- Serial Operation
입력이 가속도이고 출력이 위치인 시스템은 아래와 같이 직렬로 표현할 수 있다.
$\frac{1}{s}$은 적분을 의미하기 때문에, 가속도를 적분하면 속도가 되고, 속도를 적분해서 위치가 출력된다는 뜻이다. 가속도와 속도의 전달함수는 $\frac{1}{s}$이고 속도와 x의 전달함수는 $\frac{1}{s}$이라는 뜻이다. 그럼 가속도에서 위치로 변하는 전체 오픈루프 시스템의 전달함수는 어떻게 쓸 수 있을까? 가속도를 두 번 적분하면 위치가 된다는 사실로부터 $\frac{1}{s^2}$임을 알 수 있다. 즉! 위와 같이 직렬로 연결된 block diagram의 전체 전달함수는, 단순히 곱해주면 된다.
이와 같이 직렬로 연결된 block들은, 모두 곱해주어 하나의 전달함수로 나타낼 수 있다. 아래는 동일한 시스템이다.
- Parallel Operation
이와 같이 병렬로 연결된 시스템도 존재한다. 입력값이, 서로 다른 두 개의 시스템을 지나고, 두 결과값의 합이 출력으로 나오는 구조이다. 원형의 block은 두 값을 더하거나 뺌을 표시하기 위해 사용한다. $($원형 block에 아무런 표시가 없으면 +를 의미한다.$)$
이러한 시스템은 입력에서 출력으로의 전체 전달함수가 어떻게 될까? 이미 윗줄에서 언급한대로, 두 전달함수를 더해주면 된다. 즉 아래와 같다.
Open-Loop System Examples : Filtering
- Low Pass Filter
- High Pass Filter
- Complementary Filter $($LPF + HPF$)$
필터링과 관련된 이론은 Matlab을 사용하여 따로 글을 작성할 예정.
Closed-Loop System$($Feedback System$)$
Open-Loop System의 문제점을 보완하기 위해, 출력값과 목표값의 차이를 계산하고 그만큼 입력값을 보정해 주어야 한다. 이를 피드백 이라고 한다. 여기서 출력값을 피드백 하는 과정에서, 일반적으로 센서값을 통해 값을 읽어온다.
예를들어, 드론을 초기상태 0m에서 10m로 상승시키기 위해, 입력값 10을 주었다. 초기에 센서로부터 측정된 드론의 고도는 0일 것이다. 이를 Feedback하여 입력값에 빼주면 제어값은 10이 된다. 고도가 3미터로 상승했을 때는 제어값이 7이 된다. 목표에 가까워질수록 제어값이 낮아지고 있는데, 여기서 제어값은 힘이라고 생각하면 쉽다. 이어서 고도가 7미터 일때는 제어값이 3, 고도가 10미터일때는 0이 되며 멈출것을 기대할 수 있다.
그런데 여기서 외란에 의해 고도가 11미터로 상승하였다. 이때 Feedback을 하게 되면, 입력값$($힘$)$은 -1이 된다. 즉, 제어 목표로 돌아가기 위해 힘을 반대로 가하게 된다.
이처럼 출력값을 입력값에 반영하여 제어값을 정하는 시스템을 Feedback System이라고 한다.
아래처럼 block diagram으로 나타낼 수 있다.
이 시스템의 최종 출력값은 어떻게 구해야 할까? 우선 u에 대해서 새롭게 생각해보자. 이전까지는 입력이 곧 u이었다. 그러나 Feedback System에서는 그렇지 않다. 즉, u는 입력과 출력값의 차이, Error값이 된다.
이제 우리가 알고싶은 것은 input에서 out으로의 전달함수 이다. 한번 구해보도록 하자.
$$\begin{cases} U(s) = Input(s)-Out(s) \\ Out(s) = \frac{1}{s+1}U(s) \end{cases}$$
$$\downarrow$$
$$Out(s) = \frac{1}{s+1}[Input(s)-Out(s)]$$
$$Out(s)[1+\frac{1}{s+1}] = \frac{1}{s+1}Input(s)$$
$$\therefore \frac{Out(s)}{Input(s)} = \frac{\frac{1}{s+1}}{1+\frac{1}{s+1}}$$
즉, 정리하면 아래와 같다.
Open Loop System의 전달함수가 $G(s)$일때, Feedback System의 전달함수는 $\frac{G(s)}{1+G(s)}$이다. 이때 Feedback을 +로 하게 되면 전달함수는 $\frac{G(s)}{1-G(s)}$가 된다.
여기서 우리는 놀라운 사실을 하나 알 수 있다. 바로 전달함수의 Pole이 변했다! 반면에 Zero는 변화가 없다. Pole이 변한다는 것은 시스템의 안정성에 변화가 있다는 것이다. 불안정한 위치에 있던 Pole을, 안정한 위치로 옮길 수 있게 되고 혹은 더욱 불안정하게 만들 수 있다. 이러한 사실을 바탕으로, Feedback은 앞으로 제어기를 설계할 때 기본이 되는 기법이다.
More Feedback-System
Feedback의 과정은 단순히 더하고 뺌으로만 구성되지 않을 수 있다. 출력값에 2를 곱해서 뺀다던지, 출력값에 필터링을 한다던지 등의 과정이 포함될 수 있다. Feedback Loop를 일반화하면 아래와 같다.
이 시스템도 위와 같은 방법으로 전달함수를 찾을 수 있다.
$$\begin{cases}U(s) = X_{cmd}(s)-X(s)H(s) \\ X(s)=U(s)G(s) \end{cases}$$
$$X(s) = [X_{cmd}(s)-X(s)H(s)]G(s)$$
$$X(s)[1+H(s)G(s)]=X_{cmd}(s)G(s)$$
$$\therefore \frac{X(s)}{X_{cmd}(s)} = \frac{G(s)}{1+H(s)G(s)}$$
그러므로 시스템의 전달함수는 아래와 같이 표현된다.
$G(s)$ : Transfer function of Open Loop System
$H(s)$ : Transfer function of Feedback line
To Do
이 글에서 Open-Loop System과 Closed Loop System의 개념과 전달함수에 대해 공부했다. 특히 Closed-Loop System의 경우 Open-Loop System과 비교하였을 때 Pole이 달라지는 것을 알 수 있었다. Pole이 달라진다는 것은 시스템의 안정성에 변화를 줄 수 있다는 의미이다.
우리는 시스템의 Pole이 LHP$($left half plane$)$에 있어야 안정하다는 것을 알고 있다. 즉, Feedback 을 적절하게 넣어주면 Pole을 원하는 곳으로 옮길 수 있고, 시스템이 목표값에 안정적으로 수렴하도록 만들 수 있다.
많이 들어봤을법한 PID제어도, 센서를 통해 측정된 데이터를 입력값에 반영하여 제어값을 계산하는 Feedback Loop이다. 다음 글에서는 다양한 Feedback System의 전달함수와 수렴성을 공부하고 실제 시스템에 어떻게 적용하는지 예시를 통해 다뤄볼 것이다.