{{위키데이터 속성 추적}}
{{번역 확장 필요|en|Control theory}}
{{출처 필요|날짜=2008-7-23}}
'''제어이론'''({{llang|en|control theory}})이란 전자공학 및 수학이 복합된 학문의 한 분야로서, 동적 시스템의 거동을 다루는 이론이다. 실제로 자동제어는 전자공학 교과과정에서 중요한 부분을 차지하는 과목이다. 제어이론은, 주어진 시스템에 대하여 그 입력을 조절함으로써 그 출력을 원하는 대로 조절하는 제어기(controller)를 만드는 데에 적용된다. 기계공학, 전기 및 전자공학, 화학공학 등 여러 공학 학문에서 두루 쓰여 왔으며, 최근에는 자연 과학, 금융 분야 등 공학이 아닌 학문에서도 많이 이용되고 있다. 심지어 심리학, 사회학, 범죄학 등 사회 과학 분야에서도 이용된다.

제어이론을 설명할 때 예로서 많이 인용되는 것이 자동차의 속도 조절기(cruise control)이다. 속도 조절기는 자동차의 속도를 운전자가 원하는 일정한 속도로 유지하는 장치이다. 이 경우 "시스템"에 해당하는 것이 자동차이며, "시스템의 출력"에 해당하는 것이 "자동차의 속도"이다. 또한 "시스템의 입력"에 해당하는 것은 "자동차의 엔진 스로틀(throttle)의 위치"가 된다. 엔진 스로틀의 위치를 조절함으로써 엔진에 유입되는 공기의 양을 조절하게 되고, 이는 간접적으로 엔진의 토크를 조절하게 되며, 이로써 자동차의 속도를 원하는 속도로 유지할 수 있게 되는 것이다.

== 주요 개념 ==

=== 폐루프 제어 ===
앞서 속도 조절기의 예를 보자. 속도를 일정하게 유지하기 위해 생각할 수 있는 가장 간단한 방법은, 스로틀의 위치를 일정하게 고정시키는 것이다. 그러나 자동차는 주행하면서 여러 가지 외부적인 환경의 변화를 겪게 되므로(오르막길과 내리막길, 노면의 상태 변화, 타이어 압력의 변화, 탑승객이나 화물의 무게 변화 등), 실제로 스로틀을 일정하게 고정시켜서는 속도를 일정하게 유지할 수 없다.

따라서 실제로는 자동차의 속도를 측정하여, 그 속도가 원하는 속도보다 낮으면 속도를 더 내게 하고, 원하는 속도보다 높으면 속도를 덜 내게 하는 방식의 제어가 필요하다. 이처럼, 시스템의 실제 출력값을 원하는 값과 비교하여 그 차이를 시스템의 입력값 조절에 반영하는 방식의 제어기를 '''폐루프 제어(closed-loop control)'''라고 한다. 이에 반해, 앞서 스로틀을 고정시키는 경우처럼, 시스템의 출력이 시스템의 입력 조절에 반영되지 않는 것을 '''개루프 제어(open-loop control)'''라고 한다.

폐루프 제어의 방법으로서 사용되는 것이 [[피드백]](feedback)이다.

=== 시간 영역과 주파수 영역 ===
제어이론을 사용하여 제어기(controller)를 만들기 위해서는 우선 제어 대상이 되는 시스템을 수학적으로 표현하는 것이 필요하다. 이때 이를 시간에 대한 함수로 표현할 수도 있고 주파수에 대한 함수로 표현할 수도 있다. 시스템을 '''시간 영역(time domain)'''에서 표현한다는 것은 시간에 대한 함수로 나타낸다는 것을 의미한다. 한편 '''주파수 영역(frequency domain)'''에서 표현한다는 것은 이를 주파수에 대한 함수로서 나타낸다는 의미이다.
[[파일:Mass_spring.png|250px|오른쪽|Simple Mass Spring Model]]

예를 들어 그림과 같은 질량-스프링 시스템을 생각해 보자. 이 시스템을 시간 영역에서 표현하면 다음과 같은 2차 미분 방정식이 된다.

:<math>{m {d^2 x(t) \over d t^2} + kx(t)} = f(t)</math>

이것은 외부의 힘 <math> f </math>가 시간에 따라 어떻게 변화하는지가 주어질 때, 질량 <math> m </math>의 위치 <math> x </math>는 시간에 따라 어떻게 바뀔 것인지를 나타내는 식이다.

한편 위 식을 [[라플라스 변환]](Laplace transform)함으로써, 같은 시스템을 다음과 같이 주파수 영역에서의 식으로 나타낼 수도 있다.

:<math> ms^2 X(s) + k X(s) = F(s) </math>

이것은 외부의 힘이 주파수에 따라 어떻게 다른지가 주어질 때, 질량 <math> m </math>의 위치 거동은 주파수에 따라 어떻게 될 것인지를 나타내는 식이다.

=== 전달 함수 ===

'''전달 함수(transfer function)'''이란 시스템에서 입력값과 출력값 사이의 관계를 나타낸 수학적 표현식을 일컫는다. 위 시스템의 예를 보면, 주파수 영역에서의 관계식을 정리한 다음과 같은 식이 위 시스템의 전달 함수가 된다.

:<math> H(s) = {X(s) \over F(s)}= {1 \over ms^2 + k} </math>

=== 상태 변수 ===

제어이론에서 '''상태 변수(state variable)'''란, 전체 시스템의 동적 특성을 완전하게 나타낼 수 있는 최소 개수의 독립 변수의 집합을 말한다.

2개 이상의 변수가 필요한 시스템의 상태 변수는 벡터이고, 이를 '''상태 벡터(state vector)'''라고 부른다.

'''상태 변수 방정식(state variable equation)'''이란 입력 변수(input variables), 출력 변수(output variables) 및 상태 변수에 관한 1차 미분 방정식으로써 시스템을 나타내는 수학적 표현법을 말한다.

상태 변수 방정식의 일반적인 형태는 다음 식과 같다. 이 식에서 <math> u(t) </math>는 입력 변수, <math> y(t) </math>는 출력 변수이며 <math> \mathbf x(t) </math>가 상태 변수이다.

: <math>\dot{\mathbf x}(t) = f(\mathbf x(t), u(t))</math>
: <math>y(t) = g(\mathbf x(t), u(t))</math>

선형 시불변 시스템(linear time-invariant system)에서는 상태 변수 방정식을 다음과 같이 쓸 수 있다.

: <math>\dot{\mathbf x}(t) = \mathbf A \mathbf x(t) + \mathbf B u(t)</math>
: <math>y(t) = \mathbf C \mathbf x(t) + D u(t)</math>

여기에서 행렬 <math> \mathbf A </math>는 '''시스템 행렬'''이라고 부르고, <math> \mathbf B </math>는 '''입력 행렬''', <math> \mathbf C </math>는 '''출력 행렬''', <math> D </math>는 feedforward 행렬이라 부르며, 모두 상수 행렬이다.

위 식에서 볼 수 있는 것처럼, 상태 변수는 시간에 대한 함수로서 표현되며, 따라서 상태 변수 방정식 표현법은 시간 영역 표현법의 일종이다.

==폐루프 전달함수==
시스템 출력 ''y''(''t'')는 센서 ''F'' 의 측정치를 통해 되먹임 되는데, 이때 측정치는 기준값 ''r''(''t'')과 비교된다. 제어기 ''C''는 기준값과 시스템 출력을 비교한 오차 ''e''를 이용하여 시스템 ''P'' 로 입력되는 제어입력 ''u''를 결정한다.

입력과 출력이 각각 하나인 시스템을 single-input-single-output (''SISO'') 제어 시스템이라고 하고, 2개 이상의 입력 혹은 출력 갯수를 갖는 ''MIMO'' (i.e., Multi-Input-Multi-Output) 제어 시스템이 더 일반적이다. MIMO 시스템의 경우 변수는 스칼라가 아닌 벡터 ([[벡터_(물리)]])로 표현되고, 어떤 경우에는 (예를 들면, [[distributed parameter 시스템]]) 벡터의 차원이 무한대 ([[차원 (벡터 공간)|차원]]) 일 수도 있다.

[[파일:simple feedback control loop2.svg|center|A simple feedback control loop]]

제어기 ''C'', 시스템 혹은 프랜트 ''P'', 센서 ''F'' 가 [[선형계]] 시불변([[선형_시불변_시스템]]) 이라고 가정하면, 위의 폐루프 시스템은 다음과 같이 라플라스 변환([[라플라스_변환]])을 이용하여 해석할 수 있다. 즉,

: <math>Y(s) = P(s) U(s)</math>
: <math>U(s) = C(s) E(s)</math>
: <math>E(s) = R(s) - F(s)Y(s).</math>

''Y''(''s'')를 ''R''(''s'') 에 대하여 위의 방정식을 풀면

: <math>Y(s) = \left( \frac{P(s)C(s)}{1 + P(s)C(s)F(s)} \right) R(s) = H(s)R(s).</math>

<math>H(s) = \frac{P(s)C(s)}{1 + F(s)P(s)C(s)}</math>는 시스템의 ''폐루프 전달함수''라 한다. 분자는 신호 ''r''에서 ''y'' 로 가는 포워드 (개루프) 이득이고, 분모는 되먹임 루프를 따라서 얻게 되는 이득에 1을 더한 루프이득이라고 하는 값이다. 만약 <math>|P(s)C(s)| \gg 1</math> 이면, 즉 <math>|P(s)C(s)|</math> 의 크기가 ([[norm (mathematics)|norm]]) 각각의 ''s''에서 매우 크고, <math>|F(s)| \approx 1</math> 이면,  ''Y''(''s'')는 ''R''(''s'')에 근사적으로 같게 되고, 그것은 출력이 기준입력을 충분히 가깝게 따라가고 있다는 것을 뜻한다.

==PID 피드백 제어==
[[파일:PID en.svg|right|섬네일|400x400px| PID 제어기가 되먹임 루프에 구현된 [[블럭 다이어그램 (block diagram)]]. {{math|''r''(''t'')}}는 플랜트 프로세스가 도달하기를 원하는 값, 즉 설정값 (set point)이고, {{math|''y''(''t'')}}는 측정된 프로세스의 값이다.]]
비례 (proportional) – 적분 (integral) – 미분 (derivative) 제어기 (PID 제어기)는 제어 시스템에서 가장 널리 사용되는 [[제어 루프]] [[되먹임 구조]] 제어기법이다.

PID 제어기는 [[설정값 (제어시스템)|설정값]]과 측정된 [[프로세스 값]] 사이의 ''오차값'' {{math|''e''(''t'')}} 을 연속적으로 계산하여, 오차값을 [[비례제어:비례]]. [[적분]], [[미분]]하여 오차를 수정할 제어값을 결정한다. PID는 이렇게 세가지 다른 계산으 합으로 결정된 제어값이 어떻게 계산되었는지를 나타내는 약자이다.

PID 제어기에 대한 이론적 이해와 실제 적용은 1920년대부터이다. PID 제어기는 기계 제어 시스템에서 거의 모든 아날로그 제어기에 사용되었고, 그후 이산전자 그리고 산업 프로세스 컴퓨터에 사용되었다. PID 제어기는 가장 널리 사용되는 되먹임 제어 설계법이라고 할 수 있다.

{{math|''u''(''t'')}} 는 시스템에 보내지는 제어 신호이고, {{math|''y''(''t'')}}는 측정된 출력이고, {{math|''r''(''t'')}}는 원하는 출력이고, {{math|1=''e''(''t'') = ''r''(''t'') − ''y''(''t'')}}는 추정오차라고 하면, PID 제어기 일반 형태는 다음과 같이 주어진다.

:<math>u(t) =  K_P e(t) + K_I \int e(\tau)\text{d}\tau + K_D \frac{\text{d}e(t)}{\text{d}t}.</math>

원하는 폐루프 동적 특성은 세개의 변수 {{math|''K<sub>P</sub>''}}, {{math|''K<sub>I</sub>''}}, {{math|''K<sub>D</sub>''}} 를 "조절"이라고 불리는 반복적인 조절을 통하여 얻어진다. 이러한 반복적인 조절에 프랜트 모델에 대한 지식이 반드시 요구되지는 않는다. 안정성은 비례항만으로 얻을 수도 있다. 적분항은 [[프로세스 제어]]에서 흔히 요구되는 사항인 계단형 외란을 없애는데 사용된다. 미분항은 감쇄기능을 추가하여 응답의 모양을 변화시키는데 사용된다. PID 제어기는 잘 확립된 제어시스템의 한 종류이지만 MIMO 시스템과 같이 좀 더 복잡한 시스템에는 단순 적용하여 원하는 안정성이나 성능을 얻지 못하는 경우가 자주 있다.

[[라플라스 변환]]을 PID 제어식에 적용하면

:<math>u(s) =  K_P e(s) + K_I \frac{1}{s} e(s) + K_D s e(s)</math>
:<math>u(s) =  \left(K_P + K_I \frac{1}{s} + K_D s\right) e(s)</math>

PID 제어기의 전달함수가 다음과 같이 구해진다.
:<math>C(s) = \left(K_P + K_I \frac{1}{s} + K_D s\right).</math>

다음 예를 PID 제어기를 조절하는 과정에 사용하기로 하자. 여기서 폐루프 시스템은 위에서 구한 {{math|''H''(''s'')}}이다.

:<math>P(s) = \frac{A}{1 + sT_P}</math>

여기서 {{mvar|A}} 와 {{math|''T<sub>P</sub>''}}는 상수이다. 프랜트 출력은 다음과 같은 전달함수를 통하여 되먹임된다.

:<math>F(s) = \frac{1}{1 + sT_F}</math>

여기서 {{math|''T<sub>F</sub>''}}는 상수이다. 이제 제어기 변수를 다음과 같이 설정하고: <math>K_P=K\left(1+\frac{T_D}{T_I}\right)</math>, {{math|1=''K<sub>D</sub>'' = ''KT<sub>D</sub>''}}, <math>K_I=\frac{K}{T_I}</math>, PID 제어기 전달함수는 아래와 같이 쓰여진다.

:<math>C(s) =  K \left(1 + \frac{1}{sT_I}\right)(1 + sT_D)</math>

{{math|''P''(''s'')}}, {{math|''F''(''s'')}}, {{math|''C''(''s'')}} 를 폐루프 전달 함수 {{math|''H''(''s'')}} 에 대입하면

:<math>K = \frac{1}{A},   T_I = T_F,   T_D = T_P</math>

{{math|1=''H''(''s'') = 1}}. 그러므로, 시스템 출력은 원하는 기준입력을 정확히 따라가게된다.

하지만 실제 시스템에서 미분항은 물리적으로 정확히 구현할 수 없고 잡음증폭과 시스템의 공진모드와의 상호작용 때문에 바람하지도 않다.<ref>{{저널 인용|last1=Ang |first1=K.H. |last2=Chong |first2=G.C.Y. |last3=Li |first3=Y. |date=2005 |title=PID control system analysis, design, and technology |journal=IEEE Transactions on Control Systems Technology |volume=13 |issue=4 |pages=559–576|doi=10.1109/TCST.2005.847331 |s2cid=921620 }}</ref>

그러므로 [[Lead–lag compensator|phase-lead compensator]] 형태의 저주파 신호만 통과시키는 미분기가 대신 사용된다.

==제어이론의 주요 주제==

===안정성===

입력이 없는 일반적 [[동적시스템]]의 ''안정성''은 [[랴푸노프_안정성]]으로 판별된다
* 만약 [[선형시스템]] 이 모든 제한된 크기의 입력에 출력이 제한된 크기에 머물면 이를 [[BIBO (bounded-input bounded-output) 안정]]이라고 부른다.
* 비선형 시스템의 안정성은 [[입출력 안정성 (ISS: input-to-state stability)]]으로 정의된다. ISS는 랴프노프 안정성과 BIBO 안정성과 비슷한 개념을 통합한 것이다.

논의의 간단함 위해 아래에서는 연속시간과 이산시간 ''선형시스템''을 다룬다.

수학적으로는, 
* 인과적 연속시간 선형시스템의 [[전달함수]]에서 모든 [[극점]]의 실수부분이 음수이면, 즉, 극점의 실수부분이 0 보다 작으면, 해당 선형시스템은 안정하다. 다르게 말하면, 전달함수의 극점이 [[복소수평면]]에서 허수축을 포함하지 않는 왼쪽평면에 속하면 선형시스템은 안정하다. 여기서 전달함수는 [[라플라스변환]]에 의해 얻어진다.
* 인과적 이산시간 선형시스템의 [[전달함수]]에서 모든 [[극점]]의 크기가 [[단위원]]내에 존재하면 해당 선형시스템은 안정하다. 여기서 전달함수는 [[Z-변환]]으로 얻어진다.

위의 조건이 만족할때, 해당 시스템은 [[점근적 안정성]]을 가진다고 한다. 점근적 안정성을 갖는 시스템의 상태변수는 초기값에서 출발하여 항상 감소하며 지속적인 진동을 하지 않는다. 지속적인 진동은 연속시간의 경우 극점의 실수값이 0과 같거나, 이산시간의 경우 극점의 크기가 1과 같을때이다. 줄어들지도 않고 발산하지도 않고 진동도 하지 않는 경우를 [[가장자리 안정성 (marginally stable)]] 이라고 한다.

만약 시스템의 [[임펄스응답]]이 다음과 같으면

:<math>\ x[n] = 0.5^n u[n]</math>

Z-변환은 다음과 같고

:<math>\ X(z) = \frac{1}{1 - 0.5z^{-1}}</math>

극점은 <math>z = 0.5</math>이다. 0.5는 단위원내에 있으므로 이 시스템은 점근적으로 BIBO 안정하다.

반면, 시스템의 [[임펄스응답]]이 다음과 같으면

:<math>\ x[n] = 1.5^n u[n]</math>

Z-변환은 다음과 같고

:<math>\ X(z) = \frac{1}{1 - 1.5z^{-1}}</math>

극점은 <math>z = 1.5</math>이고 1.5는 단위원 바깥에 있으므로 이 시스템은 BIBO 안정하지 않다.

시스템의 극점을 해석하는 여러 가지 수치 도구가 있다. 여기에는 [[근궤적기법]]이나 [[보드 선도]] 혹은 [[나이퀴스트 선도]]와 같은 그래프를 이용한 극점 해석 방법도 있다.

===제어성 (Controllability) 과 관측성 (observability)===

어떤 제어기를 설계할것인가 혹은 심지어 이 시스템은 제어하거나 안정화시키는 가능한 것인가라는 질문에 답하기 이전에 가장 먼저 수행해야 하는 시스템 해석에서 주요 사항은 [[제어성]]과 [[관측성]]이다. 제어성은 적절한 제어입력을 통해 시스템을 특정 상태에 도달하게 하는 것이 가능한가와 연관되어있다. 만약 어떤 상태가 제어가능하지 않으면 어떤 입력도 임의의 현재 상태를 그 상태로 가도록 할 수 없다. 어떤 상태가 제어성이 없지만, 시스템이 전체적으로 안정하다면 이런 시스템을 ''안정화가 가능하다 (stabilizable)''라고 한다. 관측성은 시스템의 측정된 출력을 통해 시스템의 상태를 ''관측''하는 것이 가능한가와 연관된다. 만약 어떤 상태가 관측가능하지 않으면, 제어기는 관측되지 않은 상태를 절대 알 수 없고 그 정보는 시스템을 안정화시키는데 사용될 수 없다. 하지만, 시스템 안정화 조건과 비슷하게 관측될 수 없는 상태가 안정하다면 이 시스템을 ''감지 가능하다 (detectable)''라고 한다.

기하적 관점에서 제어되는 시스템의 각 상태변수를 관찰했을때, 불안정한 상태에 해당하는 변수는 제어 가능하고 관측 가능하여야 한다. 시스템의 특정 고유값에 해당하는 상태가 제어가능하지도 않고 관측가능하지도 않다면, 해당 동적거동은 폐루프 시스템에 의해 전혀 영향을 받지 않는다. 해당 동적거동이 안정하지 않으면, 전체 폐루프 시스템이 결국 불안정하게 된다. 관측가능하지 않은 상태에 해당하는 시스템 극점은 상태공간모델로 표현된 시스템을 전달함수로 바꾸었을 때 전달함수에 존재하지 않는다. 그러므로, 관측가능하지 않은 상태까지 포함해서 시스템을 해석할 수 있는 상태공간모델이 전달함수모델보다 선호되는 이유중에 하나이다.

제어가능하지 않거나 관측가능하지 않은 시스템을 제어가능하게 만들고 관측가능하게 만드는 방법 중 하나는 추가로 구동기나 센서를 시스템의 적절한 곳에 설치하는 것이다.

== 같이 보기 ==
* [[칼만 필터]]
* [[랴푸노프 방정식]]
* [[PID 제어]]
* [[적응 제어]]
* [[강인 제어]]
* [[비선형 제어이론]]

{{시스템과학}}
{{수학 분야}}
{{위키공용분류}}
{{전거 통제}}

[[분류:제어이론| ]]
[[분류:계산수학]]
[[분류:공학]]
[[분류:제어공학]]
[[분류:컴퓨터 공학]]