seegongsik
내 단어장
SC · 제어

정상상태 오차

닫힌 루프가 목표를 끝까지 따라가지 못하고 남기는 오차가 정상상태 오차다. 그 크기는 열린 루프가 원점에 가진 적분기의 수, 곧 시스템형과 입력의 종류로 정해진다. 입력(계단·램프·포물선)과 시스템형(0형·1형·2형)을 골라 가며, 시스템형이 입력의 차수보다 높으면 오차가 0 으로 사라지고, 같으면 유한한 값으로 남고, 낮으면 끝없이 벌어지는 것을 직접 본다.

시스템형과 입력으로 오차가 정해진다

금색 곡선은 추종 오차 e(t) = r(t) − y(t), 곧 목표 입력과 닫힌 루프 출력의 차이다. 점선은 그 오차가 시간이 지나 다다르는 정상상태 값이다. 입력은 계단(상수), 램프(직선), 포물선(가속) 중에서, 시스템형은 0형·1형·2형(열린 루프가 원점에 가진 극의 수) 중에서 고른다. 이득 K 는 유한한 오차의 크기를 정한다. 시스템형이 입력보다 한 단계 이상 높으면 오차가 0 으로 가라앉고(완벽 추종), 정확히 같으면 0 이 아닌 일정한 값에 멈추며(K 를 키워 줄일 수는 있지만 0 은 못 만든다), 낮으면 오차가 끝없이 커진다(추종 실패). 1형 시스템 K/(s(s+1)(s+2)) 는 F1~F6 내내 쓴 바로 그 플랜트다.

추종 오차 e(t) = r − y (점선 = 정상상태 오차)
입력
시스템형 (원점 극의 수)
이득 K2.0
오차 상수와 정상상태 오차
K_p = · K_v = 1.0 · K_a = 0
e_ss = 1.00
시스템형이 입력의 차수와 정확히 같아, 오차가 0 이 아닌 일정한 값에 멈춘다. 계단·0형이면 e = 1/(1+K_p), 램프·1형이면 e = 1/K_v, 포물선·2형이면 e = 1/K_a 다. 이득 K 를 키우면 해당 오차 상수가 커져 오차가 줄지만, 유한히 남을 뿐 0 은 되지 않는다. 오차를 완전히 없애려면 시스템형을 한 단계 더 올려야 한다.
유한 오차 남음

최종값 정리로 오차를 읽다

정상상태 오차는 최종값 정리로 깔끔하게 나온다. 단위 피드백에서 오차의 라플라스 변환은 E(s) = R(s)/(1+L(s)) 이고, 시간이 무한히 흐른 뒤의 값은 e_ss = lim_{t→∞} e(t) = lim_{s→0} s·E(s) = lim_{s→0} s·R(s)/(1+L(s)) 다. 계단 입력은 R = 1/s, 램프는 R = 1/s², 포물선은 R = 1/s³ 이라, s·R 은 각각 1, 1/s, 1/s² 이 된다. 그러면 오차는 s→0 에서 1+L(s) 가 얼마나 큰가에 달리는데, L(s) 가 원점에 극을 가지면 s→0 에서 L 이 무한대로 커져 오차가 0 이 된다. 결국 오차를 0 으로 보내는 힘은 L 이 원점에 가진 극, 곧 적분기의 수다.

관찰ess = lim(s→0) s·R(s) / (1+L(s))
최종값 정리: ess = lims→0 s·R/(1+L).
고르기zero step error needs L to have ?
계단 오차 0 은 원점의 극(적분기) 하나면 된다.
빈칸ramp error ess = 1 / ?
램프 오차 = 1/Kv, Kv = lim s·L.
스스로type 2 tracks step and ramp with error ?
2형은 계단·램프를 오차 0 으로 추종한다.

세 오차 상수와 시스템형의 표

입력마다 오차를 좌우하는 양에 이름을 붙인 것이 오차 상수다. 계단 입력에는 위치 오차 상수 K_p = lim_{s→0} L(s), 램프 입력에는 속도 오차 상수 K_v = lim_{s→0} s·L(s), 포물선 입력에는 가속도 오차 상수 K_a = lim_{s→0} s²·L(s) 가 대응한다. 그러면 오차는 계단에서 1/(1+K_p), 램프에서 1/K_v, 포물선에서 1/K_a 로 깔끔하게 정리된다. 시스템형은 이 상수들이 유한한지 무한한지를 한꺼번에 정한다. 0형은 K_p 만 유한하고 K_v·K_a 는 0 이라, 계단에는 유한 오차, 램프·포물선에는 무한 오차다. 1형은 K_p 가 무한(계단 오차 0), K_v 유한(램프 유한 오차), K_a 는 0(포물선 무한). 2형은 K_p·K_v 무한(계단·램프 오차 0), K_a 유한(포물선 유한 오차). 이 3 × 3 표가 정상상태 오차의 전부다.

오차를 줄이는 두 손잡이, 그리고 대가

정상상태 오차를 줄이는 길은 둘이다. 하나는 시스템형을 올리는 것, 곧 제어기에 적분기를 더해 원점에 극을 보태는 것이다. 이러면 해당 입력의 오차가 통째로 0 이 된다. F5 의 적분 항과 F6 의 지상 보상이 바로 이 일을 했다. 다른 하나는 이득을 키워 오차 상수를 크게 하는 것인데, 유한 오차를 줄일 뿐 없애지는 못한다. 두 길 모두 공짜가 아니다. 원점의 극은 위상을 90° 늦춰 위상여유를 깎아 시스템을 불안정에 가깝게 만들고(F3·F6 에서 본 그 위상 손실), 이득을 키우면 F1~F4 에서 보았듯 닫힌 루프가 곧장 불안정해진다. 1형 플랜트 K/(s(s+1)(s+2)) 가 K=6 에서 불안정해진 그 경계가 여기서도 그대로 살아 있다. 그래서 실제 설계는 정상상태 정확도와 안정성·응답속도 사이의 줄다리기이고, 적분기는 꼭 필요한 만큼만, 진상 보상으로 위상을 메워 가며 더한다.

첫 화면으로 돌아가서

추종 오차 e(t) 를 직접 띄워 놓고, 입력과 시스템형을 바꿔 가며 그 끝값을 살폈다. 시스템형이 입력의 차수보다 높으면 오차가 0 으로 사라지고, 같으면 1/(1+K_p)·1/K_v·1/K_a 같은 유한한 값에 멈추고, 낮으면 끝없이 벌어졌다. 그 모든 경우가 최종값 정리 e_ss = lim_{s→0} s·R/(1+L) 하나에서 나왔고, 원점의 극의 수가 1+L 을 얼마나 키우는지가 오차를 0 으로 보낼지 정했다. 이득 K 는 유한 오차의 크기만 바꿀 뿐, 차수의 벽은 넘지 못했다. F5 의 적분 항도 F6 의 지상 보상도, 결국 이 표에서 시스템형을 한 칸 올려 오차를 지운 일이었다.

정상상태 오차 ess 는 닫힌 루프가 목표를 끝까지 따라가지 못해 남는 오차로, 최종값 정리 ess = lims→0 s·R(s)/(1+L(s)) 로 구한다. 입력별 오차는 계단 1/(1+Kp), 램프 1/Kv, 포물선 1/Ka 이고, 오차 상수는 Kp=lim L, Kv=lim sL, Ka=lim s²L 이다. 시스템형(L 이 원점에 가진 극의 수)이 입력의 차수보다 높으면 오차 0, 같으면 유한, 낮으면 무한이다. 0형은 계단만 유한, 1형은 계단 0·램프 유한, 2형은 계단·램프 0·포물선 유한. 오차를 0 으로 없애는 길은 적분기를 더해 시스템형을 올리는 것(F5 적분·F6 지상)이지만, 원점의 극은 위상여유를 깎아 안정과 맞바꾼다(F1~F4 의 K=6 경계는 여기서도 유효).
제어 챕터를 마치며

이것으로 제어 챕터의 한 바퀴가 끝났다. 라우스로 안정을 판정하고(F1), 근궤적으로 극의 길을 따라가고(F2), 보드선도의 두 여유로 거리를 재고(F3), 나이퀴스트로 −1 을 감싸는지 보고(F4), PID 로 응답을 빚고(F5), 진상지상 보상으로 위상을 모양 잡고(F6), 이제 정상상태 오차로 추종의 한계를 읽었다(F7). 안정성·응답속도·정상상태 정확도라는 세 목표가 서로 줄다리기하며 하나의 설계로 묶이는 것이 고전 제어의 전부다. 여기서 더 나아가면, 여러 입출력을 한꺼번에 다루는 상태공간과 극을 원하는 곳에 놓는 극 배치, 샘플링된 신호로 제어하는 디지털 제어, 비용을 최소화하는 최적 제어가 기다린다. 그러나 그 모든 길도, 이 챕터에서 본 극·영점·여유·오차의 언어 위에 세워진다.