티스토리 뷰

PID제어는 비례(Proportional), 비례적분(Integral), 비례미분(Differential) 제어를 조합한 제어방식으로 기존의 제어의 85%이상을 차지하는 유명하면서 많이 쓰이는 제어방식입니다. 


흔히 PID 제어라고 하면 아래의 그림을 많이 볼 수 있습니다. Kp, Ki, Kd의 값을 이용해서 특정한 연산을 하고 이에 대한 Output을 낸다고 볼 수 있겠네요.



PID 제어는 제어하고자는 대상의 출력값을 측정하여, 이 값을 바탕으로 목표값(SetPoint)와 비교한 뒤 오차를 계산하여 이를 바탕으로 다시 제어값을 결정하는 알고리즘입니다.


PID 제어의 공식을 먼저 살펴보겠습니다.

공식은 아래와 같습니다. 적분도 있고, 미분도 있네요.



위의 공식은 아래와 같이도 표현이 될 수 있습니다.




PID 제어가 나오게 된것일까요?


기존의 피드백제어(P제어)는 SetPoint를 지정하면 빠른속도로 목표값까지 가게끔 만들어져 있습니다. P제어만 하게 되면 아래의 그림에서 Rise Time은 감소하게 되지만 Overshoot이 많이 발생하기 때문에 정밀 제어에 문제를 발생시키게 됩니다. 속도는 빠르지만, 오차가 많이 발생할 수 있다는 이야기가 되죠.




위의 차트는 제어를 할 때 발생하는 결과값에 대한 자취곡선입니다. 자취곡선을 구성하는 요소는 Rise Time, Percent Overshoot, Settling Time, Steady-State Error로 구성이 됩니다. 


  • Rise Time: 목표 값까지  현재 값이 목표 값의 10%에서 90% 될 때까지 소요되는 시간
  • Percent Overshoot: 급격히 증가하는 현재 값을 감소시키야 하는 비율
  • Settling Time: 현재값이 안정화된 값(목표값) 기준으로 5% 차이가 나는 처음 시점Steady-State


위의 차트는 P Gain, I Gain, D Gain이 어디에서 사용이 되는지를 나타내고 있습니다. 여기에서 말하는 PID는 아래와 같습니다.


  • P Gain: setpoint와 process variable 차인 error 값을 비례적으로 줄이는데 사용되는 제어기
  • I Gain: 시스템의 정상 상태 오차(steady state error)를 줄이는데 사용되는 제어기
  • D Gain: 감쇠기의 영향을 증가시켜서 출력 값의 변동(overshoot)을 줄이는데 사용되는 제어기


PID 제어는 특성 연산을 통해서 Output을 조절할 수 있다 정도로 이해하시면 됩니다.


그럼 LabVIEW에서 한번 써봐야겠죠. LabVIEW에서는 PID VI를 제공하고 있습니다. 물론 PID and Fuzzy Logic Toolkit를 가지고 있어야 사용을 할 수 있습니다.


함수를 한번 살펴보면 아래와 같습니다. 



먼가 많은 값들이 들어오고, 나오는데요. 다들 제어에 필요한 매개변수이니 이 함수를 사용해야 하는 경우 이미 알고있다고 보시면 될것 같습니다. 


이를 이용하여 프로그래밍을 한번 해보았습니다. (랩뷰 기본 예제입니다..)

사용자 인터페이스는 아래와 같이 구성되어있습니다. 왼쪽의 숫자형 슬라이드의 값을 변경하면 Set Point(목표값)이 변경이 됩니다. SP의 값이 변경이 되면, PV의 값이 그에 맞게 올라가게 됩니다. 


SP값을 낮추면 PV값도 따라서 낮아지는데 PID 제어의 연산을 통해서 Overshoot이 많이 발생하지 않게 결과값이 나옵니다.



코드를 살펴보면 위에본 VI를 그냥 사용했습니다. 

딱히 설명이 필요한 내용은 없어보이네요. 



이 글에서는 PID 제어에 대해서 알아보았습니다.


이 글이 도움이 되셨나요?



댓글