Home PID 제어란?
Post
Cancel

PID 제어란?

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 파라미터 상수

각 항에 대한 설명

  1. $ K_p{e(t)} $ - 비레(Proportional)항 : 오차 $ e(t) $에 비로 하여 제어 값을 조절합니다.
  2. $ K_i\int_0^t e(t)\,{dt} $ - 적분(Integral)항 : 잔류 편차의 시간 적분에 비례하여 제어 값을 변화시킨다.
  3. $ K_d{\frac{de}{dt}} $ - 미분(Differential)항 : 급격한 출력값의 변화가 발생한 경우 그 크기에 제어 값을 조절합니다.

다양한 PID 파라미터 ($ K_p, K_i, K_d $)가 시스템의 응답에 미치는 영향
위키백과
pid 파라미터 이미지

비례 제어 (P)

오차와 비레하여 제어값을 조절하여, 부드러운 제어가 가능하지만 측정값이 목표값에 도달하지 못하게 됩니다.

P_Comp

비레 적분 제어 (PI)

편차 가 있는 상태가 오래 지속되면 그만큼 입력 값의 변화를 크게 하여 편차를 없애는 동작을 합니다. 하지만 외란과 같은 급격한 오류값 변화가 있을경우 복원에 시간이 걸립니다.

PI_Comp

비레 적분 미분 제어 (PID)

위의 PI동작의 단점을 보상하기 위해서 이전오류값과 현제 오류값의 차를 이용하여 제어값을 조절하여 빠르게 목표값에 도달할 수 있게 됩니다.

PID_Comp

이러한 제어를 함으로써 빠르고 정확하게 원하는 되는 값을 향한 제어할 수 있게 됩니다.

참고 자료

임장성 강사 - PID 제어란?
@717lumos - [Control] PID 제어
국제 테크노 정보연구소 - 모터의 PID 제어 법

Ziegler – Nichols 튜닝법

PID 제어기를 튜닝하는 여러 가지 방법 중 하나입니다. 이를 통하여 적절한 이득값을 얻을 수 있습니다.

최종(ultimate) 값의 정의

제어문의 결과가 수렴하거나 발산하지 않고 일정한 발진을 가지는 값을 뜻한다.

RTlDa

Gain $=K_p$
$K_u=$ 최종 이득
$T_u=$ 최종 주기 $[1/m]$

용법

  1. $K_i$와 $K_d$를 0으로 한다.
  2. $K_p$값을 0부터 점점 증가하여 일정한 진동을 가질떼, $K_u, T_u$를 측정한다.
  3. 아레의 표를 참고하여 $K_p, K_i, K_d$값을 조정한다.

    Ziegler – Nichols method

참조

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)

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.

-

프로젝트 캄브리아 - Quest Pro 유출

Comments powered by Disqus.