주요 콘텐츠

pidtune

선형 플랜트 모델에 대한 PID 조정 알고리즘

설명

C = pidtune(sys,type)은 플랜트 sys에 대한 type 유형의 PID 제어기를 설계합니다. type에 1자유도(1-DOF) PID 제어기가 지정되는 경우 제어기는 아래에 나타난 대로 단위 피드백 루프용으로 설계됩니다.

type에 2자유도(2-DOF) PID 제어기가 지정되는 경우 pidtune은 아래 그림의 피드백 루프에서처럼 2-DOF 제어기를 설계합니다.

pidtune은 성능(응답 시간)과 강인성(안정성 여유) 사이의 균형을 맞추도록 PID 제어기 C의 파라미터를 조정합니다.

예제

C = pidtune(sys,C0)은 제어기 C0과 동일한 유형과 형식의 제어기를 설계합니다. sysC0이 이산시간 모델인 경우 CC0과 동일한 이산 적분기 식을 갖습니다.

예제

C = pidtune(___,wc)는 개루프 응답의 첫 번째 0dB 이득 교차 주파수에 대한 목표값 wc를 지정합니다.

예제

C = pidtune(___,opts)는 목표 위상 여유와 같은 추가 조정 옵션을 사용합니다. 옵션 세트 opts를 지정하려면 pidtuneOptions를 사용하십시오.

[C,info] = pidtune(___)은 폐루프 안정성, 선택된 개루프 이득 교차 주파수 및 실제 위상 여유에 대한 정보가 포함된 데이터 구조체 info를 반환합니다.

예제

예제

모두 축소

이 예제에서는 다음의 식으로 주어진 플랜트에 대한 PID 제어기를 설계하는 방법을 보여줍니다.

sys=1(s+1)3.

첫 번째 단계로 플랜트 모델을 만들고 이 모델에 대한 간단한 PI 제어기를 설계합니다.

sys = zpk([],[-1 -1 -1],1); 
[C_pi,info] = pidtune(sys,'PI')
C_pi =
 
             1 
  Kp + Ki * ---
             s 

  with Kp = 1.14, Ki = 0.454
 
Continuous-time PI controller in parallel form.
Model Properties
info = struct with fields:
                Stable: 1
    CrossoverFrequency: 0.5205
           PhaseMargin: 60.0000

C_pi는 PI 제어기를 나타내는 pid 제어기 객체입니다. info 필드는 조정 알고리즘이 약 0.52rad/s의 개루프 교차 주파수를 선택함을 보여줍니다.

제어되는 시스템의 폐루트 계단 응답(기준 추종)을 검토합니다.

T_pi = feedback(C_pi*sys, 1);
step(T_pi)

MATLAB figure

응답 시간을 개선하기 위해 목표 교차 주파수를 pidtune이 자동으로 선택하는 결과인 0.52보다 높게 설정할 수 있습니다. 교차 주파수를 1.0으로 높입니다.

[C_pi_fast,info] = pidtune(sys,'PI',1.0)
C_pi_fast =
 
             1 
  Kp + Ki * ---
             s 

  with Kp = 2.83, Ki = 0.0495
 
Continuous-time PI controller in parallel form.
Model Properties
info = struct with fields:
                Stable: 1
    CrossoverFrequency: 1
           PhaseMargin: 43.9973

새 제어기가 더 높은 교차 주파수에 도달하지만 위상 여유는 감소합니다.

두 제어기를 사용하여 폐루프 계단 응답을 비교합니다.

T_pi_fast = feedback(C_pi_fast*sys,1);
step(T_pi,T_pi_fast)
axis([0 30 0 1.4])
legend('PI','PI,fast')

MATLAB figure

PI 제어기가 1.0rad/s의 교차 주파수에서 양호한 위상 여유에 도달하기에 충분한 자유도를 갖지 못하기 때문에 이와 같은 성능 저하가 발생합니다. 미분 동작을 추가하면 응답이 개선됩니다.

1.0rad/s의 목표 교차 주파수를 사용하여 Gc에 대한 PIDF 제어기를 설계합니다.

[C_pidf_fast,info] = pidtune(sys,'PIDF',1.0)
C_pidf_fast =
 
             1            s    
  Kp + Ki * --- + Kd * --------
             s          Tf*s+1 

  with Kp = 2.72, Ki = 0.985, Kd = 1.72, Tf = 0.00875
 
Continuous-time PIDF controller in parallel form.
Model Properties
info = struct with fields:
                Stable: 1
    CrossoverFrequency: 1
           PhaseMargin: 60.0000

info 필드는 제어기의 미분 동작을 통해 조정 알고리즘이 양호한 위상 여유로 목표 교차 주파수에 도달하는 더욱 공격적인 제어기를 설계할 수 있음을 보여줍니다.

빠른 PI 제어기와 빠른 PIDF 제어기에서 폐루프 계단 응답 및 외란 제거를 비교합니다.

T_pidf_fast =  feedback(C_pidf_fast*sys,1);
step(T_pi_fast, T_pidf_fast);
axis([0 30 0 1.4]);
legend('PI,fast','PIDF,fast');

MATLAB figure

빠른 PI 제어기와 빠른 PIDF 제어기에서 시스템의 입력(부하) 외란 제거를 비교할 수 있습니다. 이를 위해 플랜트 입력에서 플랜트 출력으로의 폐루프 전달 함수의 응답을 플로팅합니다.

S_pi_fast = feedback(sys,C_pi_fast);
S_pidf_fast = feedback(sys,C_pidf_fast);
step(S_pi_fast,S_pidf_fast);
axis([0 50 0 0.4]);
legend('PI,fast','PIDF,fast');

MATLAB figure

이 플롯은 이번에도 역시 PIDF 제어기가 더 빠른 외란 제거 성능을 제공함을 보여줍니다.

다음 플랜트를 위한 표준 형식의 PID 제어기를 설계합니다.

sys=1(s+1)3

표준 형식으로 제어기를 설계하려면 표준 형식 제어기를 pidtuneC0 인수로 사용하십시오.

sys = zpk([],[-1 -1 -1],1);
C0 = pidstd(1,1,1); 
C = pidtune(sys,C0)
C =
 
             1      1          
  Kp * (1 + ---- * --- + Td * s)
             Ti     s          

  with Kp = 2.18, Ti = 2.57, Td = 0.642
 
Continuous-time PID controller in standard form
Model Properties

적분기 이산화를 위해 지정된 방법으로 이산시간 PI 제어기를 설계합니다.

플랜트가 이산시간에 있는 경우 pidtune은 디폴트 순방향 오일러 적분 방법을 사용하여 자동으로 이산시간 제어기를 반환합니다. 다른 적분 방법을 지정하려면 pid 또는 pidstd를 사용하여 원하는 적분 방법을 갖는 이산시간 제어기를 만드십시오.

sys = c2d(tf([1 1],[1 5 6]),0.1);
C0 = pid(1,1,'Ts',0.1,'IFormula','BackwardEuler');  
C = pidtune(sys,C0)
C =
 
             Ts*z 
  Kp + Ki * ------
              z-1 

  with Kp = -0.0658, Ki = 1.32, Ts = 0.1
 
Sample time: 0.1 seconds
Discrete-time PI controller in parallel form.
Model Properties

C0을 입력값으로 사용하면 pidtuneC0과 동일한 형식, 유형, 이산화 방법을 갖는 제어기 C를 설계합니다. C의 적분항에 역방향 오일러 적분 방법이 사용됨을 알 수 있습니다.

사다리꼴 적분기를 지정하고 그 결과로 생성되는 제어기를 비교합니다.

C0_tr = pid(1,1,'Ts',0.1,'IFormula','Trapezoidal');
Ctr = pidtune(sys,C0_tr)
Ctr =
 
       Ts*(z+1)
  Ki * --------
       2*(z-1) 

  with Ki = 1.32, Ts = 0.1
 
Sample time: 0.1 seconds
Discrete-time I-only controller.
Model Properties

다음의 전달 함수로 주어진 플랜트를 위한 2-DOF PID 제어기를 설계합니다.

G(s)=1s2+0.5s+0.1.

목표 대역폭으로 1.5rad/s를 사용합니다.

wc = 1.5;
G = tf(1,[1 0.5 0.1]);
C2 = pidtune(G,'PID2',wc)
C2 =
 
                       1              
  u = Kp (b*r-y) + Ki --- (r-y) + Kd*s (c*r-y)
                       s              

  with Kp = 1.26, Ki = 0.255, Kd = 1.38, b = 0.665, c = 0
 
Continuous-time 2-DOF PID controller in parallel form.
Model Properties

'PID2' 유형을 사용하면 pidtunepid2 객체로 표현되는 2-DOF 제어기를 생성하게 됩니다. 이 결과가 표시되는 것을 확인할 수 있습니다. pidtune이 설정점 가중치 b, c를 포함해 모든 제어기 계수를 조정하여 성능과 강인성의 균형을 맞추는 것도 표시됩니다.

입력 인수

모두 축소

제어기 설계를 위한 플랜트의 단일 입력 단일 출력 동적 시스템 모델. sys는 다음과 같을 수 있습니다.

  • 수치적 LTI 모델과 식별된 모델을 포함한, 모든 유형의 SISO 동적 시스템 모델. sys가 조정 가능하거나 불확실한 모델인 경우 pidtunesys의 현재 값 또는 공칭 값에 맞춰 제어기를 설계합니다.

  • 연속시간 모델 또는 이산시간 모델.

  • 안정적인 모델, 불안정한 모델 또는 적분 모델. 하지만 불안정한 극점을 갖는 플랜트는 PID 제어 하에서 안정화가 불가능할 수 있습니다.

  • 모든 유형의 시간 지연이 포함된 모델. 하지만 긴 시간 지연을 갖는 플랜트는 PID 제어 하에서 적절한 성능을 내지 못할 수 있습니다.

  • 플랜트 모델로 구성된 배열. sys가 배열인 경우 pidtune은 배열에 있는 플랜트마다 별도의 제어기를 설계합니다.

플랜트가 불안정한 극점을 갖는 경우 sys는 다음 중 하나입니다.

  • frd 모델

  • I/O 지연으로 변환할 수 없는 내부 시간 지연이 있는 ss 모델

플랜트에 불안정한 극점이 있는 경우 그 개수를 지정하려면 pidtuneOptions를 사용해야 합니다.

설계할 제어기의 제어기 유형으로, 문자형 벡터로 지정됩니다. 제어기 유형이라는 용어는 제어기 동작에 존재하는 항을 뜻합니다. 예를 들어 PI 제어기에는 비례항과 적분항만 있는 반면, PIDF 제어기에는 비례항, 적분기항 및 필터링된 미분항이 있습니다. type은 아래에 요약된 값을 취할 수 있습니다. 이러한 제어기 유형에 대한 자세한 내용은 PID Controller Types for Tuning 항목을 참조하십시오.

1-DOF 제어기

  • 'P' — 비례만

  • 'I' — 적분만

  • 'PI' — 비례와 적분

  • 'PD' — 비례와 미분

  • 'PDF' — 비례와 미분. 미분항에 1차 필터 사용.

  • 'PID' — 비례, 적분, 미분

  • 'PIDF' — 비례, 적분, 미분. 미분항에 1차 필터 사용.

2-DOF 제어기

  • 'PI2' — 2-DOF 비례와 적분

  • 'PD2' — 2-DOF 비례와 미분

  • 'PDF2' — 2-DOF 비례와 미분. 미분항에 1차 필터 사용.

  • 'PID2' — 2-DOF 비례, 적분, 미분

  • 'PIDF2' — 2-DOF 비례, 적분, 미분. 미분항에 1차 필터 사용.

일반적인 2-DOF PID 제어기에 대한 자세한 내용은 Two-Degree-of-Freedom PID Controllers 항목을 참조하십시오.

고정된 설정점 가중치를 갖는 2-DOF 제어기

  • 'I-PD'b = 0, c = 0인 2-DOF PID

  • 'I-PDF'b = 0, c = 0인 2-DOF PIDF

  • 'ID-P'b = 0, c = 1인 2-DOF PID

  • 'IDF-P'b = 0, c = 1인 2-DOF PIDF

  • 'PI-D'b = 1, c = 0인 2-DOF PID

  • 'PI-DF'b = 1, c = 0인 2-DOF PIDF

고정 설정점 가중치 2-DOF PID 제어기에 대한 자세한 내용은 PID Controller Types for Tuning 항목을 참조하십시오.

제어기 형식

type 입력을 사용하면 pidtune은 병렬(pid 또는 pid2) 형식으로 제어기를 설계합니다. 표준(pidstd 또는 pidstd2) 형식으로 제어기를 설계하려면 type 대신 입력 C0을 사용하십시오.

sys가 샘플 시간이 Ts인 이산시간 모델인 경우 pidtune은 동일한 Ts를 갖는 이산시간 제어기를 설계합니다. 제어기는 적분 동작과 미분 동작 모두에서 ForwardEuler 이산 적분기 식을 사용합니다. 다른 이산 적분기 식을 사용하는 제어기를 설계하려면 type 대신 입력 C0을 사용하십시오.

PID 제어기 형식과 식에 대한 자세한 내용은 다음을 참조하십시오.

설계된 제어기의 PID 제어기 설정 속성으로, pid, pidstd, pid2 또는 pidstd2 객체로 지정됩니다. C0을 제공하는 경우 pidtune은 다음을 수행합니다.

  • C0으로 표현되는 유형의 제어기를 설계합니다.

  • C0pid 제어기인 경우 pid 제어기를 반환합니다.

  • C0pidstd 제어기인 경우 pidstd 제어기를 반환합니다.

  • C0pid2 제어기인 경우 2-DOF pid2 제어기를 반환합니다.

  • C0pidstd2 제어기인 경우 2-DOF pidstd2 제어기를 반환합니다.

  • sys가 이산시간 시스템인 경우 C0과 동일한 Iformula 값 및 Dformula 값을 갖는 제어기를 반환합니다. IformulaDformula에 대한 자세한 내용은 pid, pid2, pidstd, pidstd2 도움말 페이지를 참조하십시오.

조정된 개루프 응답의 0dB 이득 교차 주파수에 대한 목표값 wc는 radians/TimeUnit 단위로 지정합니다. 여기서 TimeUnitsys의 시간 단위입니다. 교차 주파수 wc는 제어 대역폭을 대략적으로 설정합니다. 폐루프 응답 시간은 약 1/wc입니다.

응답 속도를 높이려면 wc를 높이십시오. 안정성을 개선하려면 wc를 낮추십시오. wc를 생략할 경우 pidtune은 플랜트 동특성을 기반으로 하여, 응답과 안정성 사이의 균형을 맞춘 값을 자동으로 선택합니다.

목표 위상 여유 또는 설계 중점과 같이 pidtune 설계 알고리즘의 추가 조정 옵션을 지정하는 옵션 세트. opts를 생성하려면 pidtuneOptions를 사용하십시오.

출력 인수

모두 축소

sys를 위해 설계된 제어기. sys가 선형 모델로 구성된 배열인 경우 pidtune은 각 선형 모델에 대한 제어기를 설계하고 PID 제어기로 구성된 배열을 반환합니다.

제어기 형식:

  • pidtune에 대한 두 번째 인수가 type인 경우 Cpid 또는 pid2 제어기입니다.

  • pidtune에 대한 두 번째 인수가 C0인 경우에는 다음과 같습니다.

    • C0pid 객체이면 Cpid 제어기입니다.

    • C0pidstd 객체이면 Cpidstd 제어기입니다.

    • C0pid2 객체이면 Cpid2 제어기입니다.

    • C0pidstd2 객체이면 Cpidstd2 제어기입니다.

제어기 유형:

  • pidtune에 대한 두 번째 인수가 type인 경우 일반적으로 C는 지정된 유형을 갖습니다.

  • pidtune에 대한 두 번째 인수가 C0인 경우 일반적으로 CC0과 동일한 유형을 갖습니다.

하지만 둘 중 어느 경우든 알고리즘이 type이나 C0으로 지정된 것보다 낮은 차수의 제어기를 사용하여 적절한 성능과 강인성을 달성할 수 있다면, pidtune은 지정된 것보다 적은 개수의 동작을 갖는 C를 반환합니다. 예를 들어 type'PIDF'인 경우에도 C는 PI 제어기가 될 수 있습니다.

시간 영역:

  • Csys와 동일한 시간 영역을 갖습니다.

  • sys가 이산시간 모델인 경우 Csys와 동일한 샘플 시간을 갖습니다.

  • C0을 지정하는 경우 CC0과 동일한 IformulaDformula를 갖습니다. C0이 지정된 경우, IformulaDformula는 모두 Forward Euler입니다. IformulaDformula에 대한 자세한 내용은 pid, pid2, pidstd, pidstd2 도움말 페이지를 참조하십시오.

C0을 지정하는 경우 CC0에서 InputNameOutputName 같은 모델 속성도 가져옵니다. 모델 속성에 대한 자세한 내용은 각 유형의 동적 시스템 모델에 대한 도움말 페이지를 참조하십시오.

조정된 PID 루프의 성능과 강인성 정보가 포함된 데이터 구조체. info의 필드는 다음과 같습니다.

  • Stable — 폐루프 안정성을 나타내는 부울 값. Stable은 폐루프가 안정적이면 1이고, 그렇지 않으면 0입니다.

  • CrossoverFrequency — 개루프 시스템 C*sys의 첫 번째 0dB 교차 주파수(단위: rad/TimeUnit). 여기서 TimeUnitsysTimeUnit 속성에 지정된 시간 단위입니다.

  • PhaseMargin — 조정된 PID 루프의 위상 여유(단위: 도).

sys가 플랜트 모델로 구성된 배열인 경우, info는 조정된 각 PID 루프 정보가 포함된 데이터 구조체로 구성된 배열입니다.

  • 기본적으로 pidtunetype 입력을 사용하면 병렬 형식의 pid 제어기가 반환됩니다. 표준 형식으로 제어기를 설계하려면 pidstd 제어기를 입력 인수 C0으로 사용하십시오. 병렬 및 표준 제어기 형식에 대한 자세한 내용은 pidpidstd 도움말 페이지를 참조하십시오.

  • 라이브 편집기에서의 대화형 방식 PID 조정에 대한 자세한 내용은 PID 제어기 조정 라이브 편집기 작업을 참조하십시오. 이 작업은 대화형 방식으로 PID 제어기를 설계할 수 있도록 해주며 라이브 스크립트에 대한 MATLAB® 코드를 자동으로 생성해 줍니다.

알고리즘

MathWorks® PID 조정 알고리즘에 대한 자세한 내용은 PID 조정 알고리즘 항목을 참조하십시오.

대체 기능

  • 라이브 편집기에서의 대화형 방식 PID 조정에 대한 자세한 내용은 PID 제어기 조정 라이브 편집기 작업을 참조하십시오. 이 작업은 대화형 방식으로 PID 제어기를 설계할 수 있도록 해주며 라이브 스크립트에 대한 MATLAB 코드를 자동으로 생성해 줍니다. 예제는 PID Controller Design in the Live Editor 항목을 참조하십시오.

  • 독립 실행형 앱에서 대화형 방식으로 PID 조정을 수행하려면 PID 조정기를 사용하십시오. 앱을 사용한 제어기 설계에 대한 예제는 빠른 기준 추종을 위한 PID 제어기 설계 항목을 참조하십시오.

참고 문헌

[1] Åström, Karl J., and Tore Hägglund. Advanced PID Control. Research Triangle Park, NC: ISA-The Instrumentation, Systems, and Automation Society, 2006.

버전 내역

R2010b에 개발됨