PID 제어의 개념
P(비례) + I(적분) +D(미분)의 약자로, on-off 제어에 비해 높은 정확도를 얻을 수 있습니다.
\[{MV(t)} =K_{p}{e(t)}+{K_i}\int_0^t e(t)\,{dt}+K_d{\frac{de}{dt}}\]- $ e(t) $ : error 시간$ {t} $에 따른 목표값과 현제 값의 차이.
- $ K_p, K_i, K_d $ : PID 파라미터 상수
각 항에 대한 설명
- $ K_p{e(t)} $ - 비레(Proportional)항 : 오차 $ e(t) $에 비로 하여 제어 값을 조절합니다.
- $ K_i\int_0^t e(t)\,{dt} $ - 적분(Integral)항 : 잔류 편차의 시간 적분에 비례하여 제어 값을 변화시킨다.
- $ K_d{\frac{de}{dt}} $ - 미분(Differential)항 : 급격한 출력값의 변화가 발생한 경우 그 크기에 제어 값을 조절합니다.
다양한 PID 파라미터 ($ K_p, K_i, K_d $)가 시스템의 응답에 미치는 영향
위키백과
비례 제어 (P)
오차와 비레하여 제어값을 조절하여, 부드러운 제어가 가능하지만 측정값이 목표값에 도달하지 못하게 됩니다.
비레 적분 제어 (PI)
편차 가 있는 상태가 오래 지속되면 그만큼 입력 값의 변화를 크게 하여 편차를 없애는 동작을 합니다. 하지만 외란과 같은 급격한 오류값 변화가 있을경우 복원에 시간이 걸립니다.
비레 적분 미분 제어 (PID)
위의 PI동작의 단점을 보상하기 위해서 이전오류값과 현제 오류값의 차를 이용하여 제어값을 조절하여 빠르게 목표값에 도달할 수 있게 됩니다.
이러한 제어를 함으로써 빠르고 정확하게 원하는 되는 값을 향한 제어할 수 있게 됩니다.
참고 자료
임장성 강사 - PID 제어란?
@717lumos - [Control] PID 제어
국제 테크노 정보연구소 - 모터의 PID 제어 법
Ziegler – Nichols 튜닝법
PID 제어기를 튜닝하는 여러 가지 방법 중 하나입니다. 이를 통하여 적절한 이득값을 얻을 수 있습니다.
최종(ultimate) 값의 정의
제어문의 결과가 수렴하거나 발산하지 않고 일정한 발진을 가지는 값을 뜻한다.
Gain $=K_p$
$K_u=$ 최종 이득
$T_u=$ 최종 주기 $[1/m]$
용법
- $K_i$와 $K_d$를 0으로 한다.
- $K_p$값을 0부터 점점 증가하여 일정한 진동을 가질떼, $K_u, T_u$를 측정한다.
아레의 표를 참고하여 $K_p, K_i, K_d$값을 조정한다.
참조
wikipedia - Ziegler – Nichols method
web.yonsei.ac.kr - PID 제어기 설계 법
C 의사코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
//Gain
double Kp 1.0
double Ki 1.0
double Kd 1.0
double dt 0.01 // 100Hz동작일 경우
double current_val; // 현재 값
double err, prev_err; // 오차. 이전 오차
double I_err, D_err; // 오차 적분. 오차 미분
double Kp_term, Ki_term, Kd_term; // p 항, i 항, d 항
double control; // output
err = 0; // 오차 초기화
void pid() // 일정 주기로 호출
{
dt = get_dt(); // dt를 연산
error = get_error(); // error 값을 연산
err = AIM - current_val; // 오차 = 목표치-현재 값
Kp_term = Kp * err; // p 항 = Kp*오차
I_err += err * dt; // 오차 적분 += 오차*dt
Ki_term = Ki * I_err; // i 항 = Ki*오차적 분
D_err = (err-prev_err)/dt // 오차 미분 = (현재 오차-이 전 오차)/dt
Kd_term = Kd * D_err; // d 항 = Kd*오차 미분
prev_err = err; // 현재 오차를 이전 오차로
control = Kp_term + Ki_term + Kd_term; // 제어량 = p 항+i 항+d 항
...
}
PID 시뮬레이터
PID 제어를 엑셀로 실험해볼 수 있는 스프레드 시트 입니다.
PID 제어 튜닝 시뮬레이터(PID Control tuning simulator using MS-Excel)
Comments powered by Disqus.