본문 바로가기

🔧 Mechanical Engineering/학부연구기록 🐬

PID Controller

728x90
반응형

산업현장에서 일반적으로 사용되는 PID 제어 알고리즘에 대해 알아보자.

PID를 왜 쓸까?

- 고급 제어 알고리즘에 비해 수학적 모델이 복잡하지 않음

- Plant에 대한 정보없이도 Gain을 찾아낼 수 있음

Gain tuning을 해보면 알겠지만 매트랩켜고 계속 PID 숫자 바꿔가며 응답을 확인해 최적의 응답이 뜰때까지 노가다 뛰는방법이 흔히 쓰인다. 즉, Plant에 대한 이해가 없더라도 숫자놀이하며 최적의 게인을 찾을 수 있다는것이다.

-외란에 강함

 

PID의 개념

PID는 각 Proportional, Integral, Derivative 즉 비례, 적분, 미분 계산을 통한 제어를 의미한다.  미분이랑 적분은 알겠는데 비례계산은 뭘까? 비례제어는 상수를 곱해 시스템의 형태?특성?은 유지하되 그 크기를 키우는것을 의미한다. 

'그럼 비례제어 적용하면 응답특성은 갖지만 Amplitude만 커지는건가요??' -> 그건 아니다. 아래서 설명해보겠음..

Matlab Simulink로 그려본 Block diagram상 PID의 생김새이다. Block diagram을 보면 PID의 수학적 모델을 금방 이해할 수 있다. 위에서부터 P,I,D인데 각 Gain 상수는 Kp, Ki, Kd로 명칭(?)을 붙인다. 보면 P는 별도의 계산없이 그냥 상수 Kp만 곱해진다. I는 적분기를 거친후 상수 Ki가 곱해지는데 이 순서는 바꿔도 된다. D는 미분기를 거친후 상수 Kd가 곱해지는 구조이다. 위 그림에선 Simulink 이미지 상 미분기가 저래 표현이 되는데, Block diagram을 그릴땐 그냥 's'로 그리면 된다.

 

" 1/s가 왜 적분기고, s가 왜 미분기임?"

Laplace transform을 기억해보자.. x의 이계미분이 s^2로, x의 1계 미분이 s로 표현된것을 알고있을것이다.

위와같은 미분방정식이 laplace transform을 통해 아래와같이 s-domain에서 표현된다. 한번 미분한 텀에 대해, 미분 차수만큼 s가 붙는것이다. 즉 s는 '미분' ,그 반대인 1/s은 미분차수가 감소하는것이므로 '적분'을 의미한다. Block diagram상 s는 미분기, 1/s는 적분기이다.

 

수학 모델은 매우 간단하다. 어떤 시스템 G에 대해 비례제어를 적용하면 G*Kp, 미분제어를 적용하면 (G*Kd)s, 적분제어를 적용하면 (G*Ki)/s 결과가 나오는것이다.

 

PID 특성

제어의 목적은 보통 응답시간을 빠르게 가져가거나 / 응답의 steady-state error를 감소시키거나 / Overshooing을 감소시키는 등 응답의 오차를 줄이고 안정적으로 가져가는데 목적이 있다. PID 또한 응답시간과 오차, 오버슈팅 등 응답안정성을 제어할 수 있다.

 

먼저, PID는 셋다 동시에 쓰이기도 하지만, P,I 개별적으로 쓰이거나 D를 제외한 PI 만 사용되기도 한다. 일반적으로 D Controller는 단독으로 쓰이진 않는다. 

 

P Controller 

 

다소 빈약한 손그림으로 그려본 Closed-loop system이다. 여기서 깨알상식, Open loop와 Closed loop를 구분하는 기준은 뭘까? feed back system이 있다면 Closed loop일까? -> 아니다. 둘을 구분하는 기준은 제어기의 유무이다.

 

 

제어대상인 Plant model은 위와같은 DC모터 model로 설정해보자. 전압을 인가받아 모터상수를 곱한후.. Load Torque로 인한 손실을 빼줘 Transfer Function을 거쳐 모터의 속도가 출력되는 모델이다

 

즉, DC motor 를 제어하기 위한 Closed-loop system은 위와같다. 이때 P 제어를 적용한다면 Gc=Kp일것이다.

 

Block diagram을 따라가며 식을 세워보자. 전압 Va를 기준으로 Block diagram의 좌/우 part 방정식을 세워 대입하면 P제어가 적용된 DC 모터의 steady-state velocity를 알 수 있다.

P제어가 적용되면 모터의 steady-state velocity는 reference velocity값 앞에 계수가 붙는다. 그리고 이 계수는 항상 1보다 작다. 즉, P제어를 키운다면 reference값에 수렴하겠으나, 완전한 도달은 불가능하다. P gain값이 증가하면 steady-state error는 감소하며 0에 수렴하나, 완전히 제거할 수는 없다.

 

 

위 loop system은 v ref를 입력받아 v를 출력하는 system이다. 즉 v/vref는 위 system의 Transfer function이다. system의 characteristic equation에서 time-constant를 뽑아내보면 위 빨간 네모박스와 같다. P gain값이 증가하면 Time constant는 감소함으로 도달시간이 빨라진다.

 

즉, P gain이 커지면 steady-state error와 time constant가 감소한다.

 

 

I controller

I제어는 Controller Gc=Ki/s를 대입해 위와같은 방식으로 계산하면 수학적 모델을 얻을 수 있다.

적분기 1/s항으로 load torque텀에 s가 붙어버리고 이는 steady-state에서 사라지게 된다. 또한 steady-state velocity가 reference velocity와 같다. 이는 I gain의 증감과는 상관없이, I Controller를 적용한것 자체로의 결과이다.

 

그럼 P를 막 키우면 응답이 안정되고 I를 적용하면 steady-state error가 없어지는건가? -> 대체로 그럴수 있지만 마냥 그렇지만은 않다. 위에서 P Controller 모델링 시 외란 Load Torque를 무시하고 계산했으나 실제로는 무시할 수 없다. P제어의 경우 gain이 클수록 그래도 비례해서 모든값을 위로 올려버리는 느낌이다. 즉, 외란이 들어왔을때 외란또한 영향력이 커진다는것이다. 현실에선 P gain이 높을수록 disturbance의 영향력도 같이 커져 진동 등 오히려 잘못됀 응답이 나올 수 있다.

 

gain tuning시엔 응답을 계속 체크하며 적절한 P,I를 찾아나가야 한다. 무엇보다 현실과 비슷하게 하려면 시뮬레이션에도 disturbance값을 포함한 응답을 봐야한다.

반응형