이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

pid

병렬 형식 PID 제어기 만들기, 병렬 형식 PID 제어기로 변환

구문

C = pid(Kp,Ki,Kd,Tf)
C = pid(Kp,Ki,Kd,Tf,Ts)
C = pid(sys)
C = pid(Kp)
C = pid(Kp,Ki)
C = pid(Kp,Ki,Kd)
C = pid(...,Name,Value)
C = pid

설명

C = pid(Kp,Ki,Kd,Tf)는 비례 이득, 적분 이득 및 미분 이득 Kp, Ki, Kd와 1계 도함수 필터 시정수 Tf를 사용하여 연속시간 PID 제어기를 만듭니다.

C=Kp+Kis+KdsTfs+1.

이 표현은 병렬 형식입니다. Kp, Ki, Kd, Tf가 모두 실수인 경우 결과로 생성되는 Cpid 제어기 객체입니다. 이들 계수 중 하나 이상이 조정 가능한 경우(realp 또는 genmat) C는 조정 가능한 일반화된 상태공간(genss) 모델 객체입니다.

C = pid(Kp,Ki,Kd,Tf,Ts)는 샘플 시간이 Ts인 이산시간 PID 제어기를 만듭니다. 제어기는 다음과 같습니다.

C=Kp+KiIF(z)+KdTf+DF(z).

IF(z)와 DF(z)는 적분기와 도함수 필터의 이산 적분기 식입니다. 기본적으로 다음과 같이 표시됩니다.

IF(z)=DF(z)=Tsz1.

다른 이산 적분기 식을 선택하려면 IFormula 속성과 DFormula 속성을 사용하십시오. (IFormulaDFormula에 대한 자세한 내용은 속성 항목을 참조하십시오.) DFormula = 'ForwardEuler'(디폴트 값)이고 Tf ≠ 0인 경우 TsTfTf > Ts/2를 충족해야 합니다. 이 요구 사항은 안정적인 도함수 필터 극점을 보장합니다.

C = pid(sys)는 동적 시스템 sys를 병렬 형식 pid 제어기 객체로 변환합니다.

C = pid(Kp)Ki = 0, Kd = 0, and Tf = 0을 사용하여 연속시간 비례(P) 제어기를 만듭니다.

C = pid(Kp,Ki)Kd = 0, Tf = 0을 사용하여 비례 및 적분(PI) 제어기를 만듭니다.

C = pid(Kp,Ki,Kd)Tf = 0을 사용하여 비례, 적분, 미분(PID) 제어기를 만듭니다.

C = pid(...,Name,Value)는 하나 이상의 Name,Value 쌍 인수로 지정된 추가 옵션을 사용하여 제어기를 만들거나 동적 시스템을 pid 제어기 객체로 변환합니다.

C = pidKp = 1을 사용하여 P 제어기를 만듭니다.

입력 인수

Kp

비례 이득.

Kp는 다음이 될 수 있습니다.

  • 유한 실수 값.

  • 유한 실수 값으로 구성된 배열.

  • 조정 가능한 파라미터(realp) 또는 일반화된 행렬(genmat).

  • tunableSurface를 사용하여 만든, 이득 스케줄링이 적용된 조정을 위한 조정 가능한 곡면.

Kp = 0인 경우 제어기는 비례 동작을 갖지 않습니다.

디폴트 값: 1

Ki

적분 이득.

Ki는 다음이 될 수 있습니다.

  • 유한 실수 값.

  • 유한 실수 값으로 구성된 배열.

  • 조정 가능한 파라미터(realp) 또는 일반화된 행렬(genmat).

  • tunableSurface를 사용하여 만든, 이득 스케줄링이 적용된 조정을 위한 조정 가능한 곡면.

Ki = 0인 경우 제어기는 적분 동작을 갖지 않습니다.

디폴트 값: 0

Kd

미분 이득.

Kd는 다음이 될 수 있습니다.

  • 유한 실수 값.

  • 유한 실수 값으로 구성된 배열.

  • 조정 가능한 파라미터(realp) 또는 일반화된 행렬(genmat).

  • tunableSurface를 사용하여 만든, 이득 스케줄링이 적용된 조정을 위한 조정 가능한 곡면.

Kd = 0인 경우 제어기는 미분 동작을 갖지 않습니다.

디폴트 값: 0

Tf

1계 도함수 필터의 시정수.

Tf는 다음이 될 수 있습니다.

  • 음이 아닌 유한 실수 값.

  • 음이 아닌 유한 실수 값으로 구성된 배열.

  • 조정 가능한 파라미터(realp) 또는 일반화된 행렬(genmat).

  • tunableSurface를 사용하여 만든, 이득 스케줄링이 적용된 조정을 위한 조정 가능한 곡면.

Tf = 0인 경우 제어기는 미분 동작에 대한 필터를 갖지 않습니다.

디폴트 값: 0

Ts

샘플 시간.

이산시간 pid 제어기를 만들려면 양의 실수 값(Ts > 0)을 제공하십시오. pid는 샘플 시간이 지정되지 않은(Ts = -1) 이산시간 제어기를 지원하지 않습니다.

Ts는 스칼라 값이어야 합니다. pid 제어기로 구성된 배열에서, 각 제어기는 동일한 Ts를 가져야 합니다.

디폴트 값: 0(연속시간)

sys

병렬 pid 형식으로 변환할 SISO 동적 시스템.

sysTf ≥ 0을 사용하여 병렬 형식으로 작성할 수 있는 유효한 PID 제어기를 표현해야 합니다.

sys는 SISO 동적 시스템으로 구성된 배열일 수도 있습니다.

이름-값 쌍의 인수

선택적으로 Name,Value 인수가 쉼표로 구분되어 지정됩니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. Name은 따옴표 안에 표시해야 합니다. Name1,Value1,...,NameN,ValueN과 같이 여러 개의 이름-값 쌍의 인수를 어떤 순서로든 지정할 수 있습니다.

Name,Value 구문을 사용하여 이산시간 pid 제어기의 수치 적분식 IFormulaDFormula를 설정하거나 InputName, OutputName과 같은 다른 객체 속성을 설정하십시오. pid 제어기 객체의 사용 가능한 속성에 대한 자세한 내용은 속성 항목을 참조하십시오.

출력 인수

C

PID 제어기로, pid 제어기 객체, pid 제어기 객체로 구성된 배열, genss 객체 또는 genss 배열로 표현됩니다.

  • 모든 이득 Kp, Ki, Kd, Tf가 숫자형 값을 갖는 경우 Cpid 제어기 객체입니다. 이득이 숫자형 배열인 경우 Cpid 제어기 객체로 구성된 배열입니다. 제어기 유형(P, I, PI, PD, PDF, PID, PIDF)은 이득의 값에 따라 결정됩니다. 예를 들어, Kd = 0인데 KpKi가 0이 아닌 경우 C는 PI 제어기입니다.

  • 하나 이상의 이득이 조정 가능한 파라미터(realp), 일반화된 행렬(genmat) 또는 조정 가능한 이득 곡면(tunableSurface)인 경우 C는 일반화된 상태공간 모델(genss)입니다.

속성

Kp, Ki, Kd

PID 제어기 이득.

Kp, Ki, Kd 속성은 각각 비례 이득, 적분 이득, 미분 이득을 저장합니다. Kp, Ki, Kd는 유한 실수입니다.

Tf

도함수 필터 시정수.

Tf 속성은 pid 제어기 객체의 도함수 필터 시정수를 저장합니다. Tf는 음이 아닌 유한 실수입니다.

IFormula

다음과 같은 이산시간 pid 제어기 C의 이산 적분기 식 IF(z).

C=Kp+KiIF(z)+KdTf+DF(z).

IFormula는 다음과 같은 값을 가질 수 있습니다.

  • 'ForwardEuler' — IF(z) = Tsz1.

    이 수식은 제어기의 대역폭에 비해 나이퀴스트 한계가 큰, 작은 샘플 시간에 적합합니다. 샘플 시간이 큰 경우 ForwardEuler 수식은 연속시간에서 안정적인 시스템을 이산화할 때도 불안정성을 야기할 수 있습니다.

  • 'BackwardEuler' — IF(z) = Tszz1.

    BackwardEuler 수식의 이점은, 이 수식을 사용하여 안정적인 연속시간 시스템을 이산화하면 항상 안정적인 이산시간 결과가 생성된다는 것입니다.

  • 'Trapezoidal' — IF(z) = Ts2z+1z1.

    Trapezoidal 수식의 이점은, 이 수식을 사용하여 안정적인 연속시간 시스템을 이산화하면 항상 안정적인 이산시간 결과가 생성된다는 것입니다. 사용 가능한 모든 적분식 중에서 Trapezoidal 수식은 이산화된 시스템과 이에 대응하는 연속시간 시스템의 주파수 영역 속성 간의 가장 가까운 일치를 생성합니다.

C가 연속시간 제어기인 경우 IFormula''입니다.

디폴트 값: 'ForwardEuler'

DFormula

다음과 같은 이산시간 pid 제어기 C의 도함수 필터에 대한 이산 적분기 식 DF(z).

C=Kp+KiIF(z)+KdTf+DF(z).

DFormula는 다음과 같은 값을 가질 수 있습니다.

  • 'ForwardEuler' — DF(z) = Tsz1.

    이 수식은 제어기의 대역폭에 비해 나이퀴스트 한계가 큰, 작은 샘플 시간에 적합합니다. 샘플 시간이 큰 경우 ForwardEuler 수식은 연속시간에서 안정적인 시스템을 이산화할 때도 불안정성을 야기할 수 있습니다.

  • 'BackwardEuler' — DF(z) = Tszz1.

    BackwardEuler 수식의 이점은, 이 수식을 사용하여 안정적인 연속시간 시스템을 이산화하면 항상 안정적인 이산시간 결과가 생성된다는 것입니다.

  • 'Trapezoidal' — DF(z) = Ts2z+1z1.

    Trapezoidal 수식의 이점은, 이 수식을 사용하여 안정적인 연속시간 시스템을 이산화하면 항상 안정적인 이산시간 결과가 생성된다는 것입니다. 사용 가능한 모든 적분식 중에서 Trapezoidal 수식은 이산화된 시스템과 이에 대응하는 연속시간 시스템의 주파수 영역 속성 간의 가장 가까운 일치를 생성합니다.

    도함수 필터가 없는(Tf = 0) pid 제어기의 경우 DFormula에 대해 Trapezoidal 값을 사용할 수 없습니다.

C가 연속시간 제어기인 경우 DFormula''입니다.

디폴트 값: 'ForwardEuler'

InputDelay

시스템 입력에 대한 시간 지연. InputDelaypid 제어기 객체에 대해 항상 0입니다.

OutputDelay

시스템 출력에 대한 시간 지연. OutputDelaypid 제어기 객체에 대해 항상 0입니다.

Ts

샘플 시간. 연속시간 모델의 경우 Ts = 0입니다. 이산시간 모델의 경우 Ts는 샘플링 주기를 나타내는 양의 스칼라입니다. 이 값은 모델의 TimeUnit 속성으로 지정된 단위로 표현됩니다. PID 제어기 모델은 지정되지 않은 샘플 시간(Ts = -1)을 지원하지 않습니다.

이 속성을 변경해도 모델이 이산화되거나 리샘플링되지 않습니다. 연속시간 표현과 이산시간 표현 간에 변환하려면 c2dd2c를 사용하십시오. 이산시간 시스템의 샘플 시간을 변경하려면 d2d를 사용하십시오.

디폴트 값: 0(연속시간)

TimeUnit

시간 변수, 샘플 시간 Ts 및 모델의 시간 지연에 대한 단위로, 다음 값 중 하나로 지정됩니다.

  • 'nanoseconds'

  • 'microseconds'

  • 'milliseconds'

  • 'seconds'

  • 'minutes'

  • 'hours'

  • 'days'

  • 'weeks'

  • 'months'

  • 'years'

이 속성을 변경해도 다른 속성에 영향을 미치지 않기 때문에 변경하면 전체적인 시스템 동작이 변경됩니다. 시스템 동작을 수정하지 않고 시간 단위 간 변환을 수행하려면 chgTimeUnit을 사용하십시오.

디폴트 값: 'seconds'

InputName

입력 채널 이름으로, 문자형 벡터로 지정됩니다. 이 속성을 사용하여 제어기 모델의 입력 채널의 이름을 지정합니다. 예를 들어, 다음과 같이 제어기 모델 C의 입력에 이름 error를 할당할 수 있습니다.

C.InputName = 'error';

축약 표기법 u를 사용하여 InputName 속성을 참조할 수 있습니다. 예를 들어, C.uC.InputName과 동일합니다.

입력 채널 이름에는 다음을 비롯한 몇 가지 용도가 있습니다.

  • 모델 표시 화면과 플롯에서 채널 식별

  • 모델 상호 연결 시 연결 점 지정

디폴트 값: 빈 문자형 벡터, ''

InputUnit

입력 채널 단위로, 문자형 벡터로 지정됩니다. 이 속성을 사용하여 입력 신호 단위를 지정할 수 있습니다. 예를 들어, 다음과 같이 제어기 모델 C의 입력에 농도 단위 mol/m^3을 할당할 수 있습니다.

C.InputUnit = 'mol/m^3';

InputUnit은 시스템 동작에 영향을 미치지 않습니다.

디폴트 값: 빈 문자형 벡터, ''

InputGroup

입력 채널 그룹. 이 속성은 PID 제어기 모델에는 필요하지 않습니다.

디폴트 값: 필드가 없는 struct

OutputName

출력 채널 이름으로, 문자형 벡터로 지정됩니다. 이 속성을 사용하여 제어기 모델의 출력 채널의 이름을 지정합니다. 예를 들어, 다음과 같이 제어기 모델 C의 출력에 이름 control을 할당합니다.

C.OutputName = 'control';

축약 표기법 y를 사용하여 OutputName 속성을 참조할 수 있습니다. 예를 들어, C.yC.OutputName과 동일합니다.

입력 채널 이름에는 다음을 비롯한 몇 가지 용도가 있습니다.

  • 모델 표시 화면과 플롯에서 채널 식별

  • 모델 상호 연결 시 연결 점 지정

디폴트 값: 빈 문자형 벡터, ''

OutputUnit

출력 채널 단위로, 문자형 벡터로 지정됩니다. 이 속성을 사용하여 출력 신호 단위를 지정할 수 있습니다. 예를 들어, 다음과 같이 제어기 모델 C의 출력에 단위 Volts를 할당합니다.

C.OutputUnit = 'Volts';

OutputUnit은 시스템 동작에 영향을 미치지 않습니다.

디폴트 값: 빈 문자형 벡터, ''

OutputGroup

출력 채널 그룹. 이 속성은 PID 제어기 모델에는 필요하지 않습니다.

디폴트 값: 필드가 없는 struct

Name

시스템 이름으로, 문자형 벡터로 지정됩니다. (예: 'system_1'.)

디폴트 값: ''

Notes

사용자가 시스템에 지정할 수 있는 임의의 텍스트로, string형 또는 문자형 벡터로 구성된 셀형 배열로 저장됩니다. 이 속성은 사용자가 입력하는 데이터형을 저장합니다. 예를 들어, sys1sys2가 동적 시스템 모델인 경우 다음과 같이 Notes 속성을 설정할 수 있습니다.

sys1.Notes = "sys1 has a string.";
sys2.Notes = 'sys2 has a character vector.';
sys1.Notes
sys2.Notes
ans = 

    "sys1 has a string."


ans =

    'sys2 has a character vector.'

디폴트 값: [0×1 string]

UserData

사용자가 시스템에 연동하려는 임의의 데이터 유형으로, 임의의 MATLAB® 데이터형으로 지정됩니다.

디폴트 값: []

SamplingGrid

모델 배열의 샘플링 그리드로, 데이터 구조로 지정됩니다.

하나 이상의 독립 변수를 샘플링하여 파생된 모델 배열의 경우, 이 속성은 배열에 있는 각 모델에 대응되는 변수 값을 기록합니다. 이 정보는 모델 배열을 표시하거나 플로팅할 때 나타납니다. 이 정보를 사용하여 결과를 독립 변수로 역추적할 수 있습니다.

데이터 구조의 필드 이름을 샘플링 변수의 이름으로 설정하십시오. 필드 값을 배열의 각 모델에 대응되는 샘플링된 변수 값으로 설정하십시오. 모든 샘플링 변수는 숫자형이고 스칼라 값이어야 하며, 샘플링된 값으로 구성된 모든 배열은 모델 배열의 차원과 일치해야 합니다.

예를 들어, 시간 t = 0:10에 선형 시변 시스템의 스냅샷을 찍어서 선형 모델로 구성된 11x1 배열 sysarr을 만들었다고 가정하겠습니다. 다음 코드는 시간 샘플을 선형 모델과 함께 저장합니다.

 sysarr.SamplingGrid = struct('time',0:10)

마찬가지로, 2개의 변수 zetaw를 독립적으로 샘플링하여 6x9 모델 배열 M을 만들었다고 가정하겠습니다. 다음 코드는 (zeta,w) 값을 M에 연결합니다.

[zeta,w] = ndgrid(<6 values of zeta>,<9 values of w>)
M.SamplingGrid = struct('zeta',zeta,'w',w)

M을 표시해 보면 배열의 각 요소가 대응되는 zeta 값과 w 값을 포함하는 것을 알 수 있습니다.

M
M(:,:,1,1) [zeta=0.3, w=5] =
 
        25
  --------------
  s^2 + 3 s + 25
 

M(:,:,2,1) [zeta=0.35, w=5] =
 
         25
  ----------------
  s^2 + 3.5 s + 25
 
...

여러 파라미터 값 또는 동작점에서 Simulink® 모델을 선형화하여 생성된 모델 배열의 경우, SamplingGrid는 자동으로 배열의 각 요소에 대응되는 변수 값으로 채워집니다. 예를 들어, Simulink Control Design™ 명령 linearizeslLinearizer는 이와 같은 방식으로 SamplingGrid를 채웁니다.

디폴트 값: []

예제

모두 축소

비례 이득, 미분 이득을 가지며 미분항에 대한 필터를 갖는 연속시간 제어기를 만듭니다. 이렇게 하려면 적분 이득을 0으로 설정해야 합니다. 다른 이득과 필터 시정수는 원하는 값으로 설정합니다.

Kp = 1;
Ki = 0;   % No integrator
Kd = 3;
Tf = 0.5;
C = pid(Kp,Ki,Kd,Tf)
C =
 
               s    
  Kp + Kd * --------
             Tf*s+1 

  with Kp = 1, Kd = 3, Tf = 0.5
 
Continuous-time PDF controller in parallel form.

제어기 유형, 수식 및 파라미터 값이 표시되고 제어기에 적분기 항이 없음을 확인할 수 있습니다.

사다리꼴 이산화 식을 사용하여 이산시간 PI 제어기를 만듭니다.

이산시간 PI 제어기를 만들려면 Name,Value 구문을 사용하여 Ts의 값과 이산화 식을 설정하십시오.

C1 = pid(5,2.4,'Ts',0.1,'IFormula','Trapezoidal')    % Ts = 0.1s
C1 =
 
            Ts*(z+1)
  Kp + Ki * --------
            2*(z-1) 

  with Kp = 5, Ki = 2.4, Ts = 0.1
 
Sample time: 0.1 seconds
Discrete-time PI controller in parallel form.

또는 4개의 PID 파라미터 Kp, Ki, Kd, Tf 뒤에 다섯 번째 입력 인수로 Ts를 제공해도 동일한 이산시간 제어기를 만들 수 있습니다. PI 제어기만 필요하므로 KdTf를 0으로 설정합니다.

C2 = pid(5,2.4,0,0,0.1,'IFormula','Trapezoidal')
C2 =
 
            Ts*(z+1)
  Kp + Ki * --------
            2*(z-1) 

  with Kp = 5, Ki = 2.4, Ts = 0.1
 
Sample time: 0.1 seconds
Discrete-time PI controller in parallel form.

C1C2가 동일함을 확인할 수 있습니다.

PID 제어기를 만들 때 동적 시스템 속성 InputNameOutputName을 설정합니다. 이 방식은 connect 명령을 사용하여 PID 제어기를 다른 동적 시스템 모델과 상호 연결할 때 유용합니다.

C = pid(1,2,3,'InputName','e','OutputName','u')
C =
 
             1          
  Kp + Ki * --- + Kd * s
             s          

  with Kp = 1, Ki = 2, Kd = 3
 
Continuous-time PID controller in parallel form.

PID 제어기의 입력과 출력 이름이 표시되지 않았지만 속성 값을 검토해 볼 수 있습니다. 예를 들어, 제어기의 입력 이름을 확인합니다.

C.InputName
ans = 1x1 cell array
    {'e'}

비례 이득이 배열 행을 따라 1~2 사이에 있고 적분 이득이 열을 따라 5~9 사이에 있는 PI 제어기로 구성된 2x3 그리드를 만듭니다.

PID 제어기로 구성된 배열을 만들려면 이득을 나타내는 배열로 시작하십시오.

Kp = [1 1 1;2 2 2];
Ki = [5:2:9;5:2:9];

이들 배열을 pid 명령에 전달하면 배열이 반환됩니다.

pi_array = pid(Kp,Ki,'Ts',0.1,'IFormula','BackwardEuler');
size(pi_array)
2x3 array of PID controller.
Each PID has 1 output and 1 input.

또는 stack 명령을 사용하여 PID 제어기로 구성된 배열을 만드십시오.

C = pid(1,5,0.1)           % PID controller
C =
 
             1          
  Kp + Ki * --- + Kd * s
             s          

  with Kp = 1, Ki = 5, Kd = 0.1
 
Continuous-time PID controller in parallel form.
Cf = pid(1,5,0.1,0.5)      % PID controller with filter
Cf =
 
             1            s    
  Kp + Ki * --- + Kd * --------
             s          Tf*s+1 

  with Kp = 1, Ki = 5, Kd = 0.1, Tf = 0.5
 
Continuous-time PIDF controller in parallel form.
pid_array = stack(2,C,Cf); % stack along 2nd array dimension

이들 명령은 제어기로 구성된 1x2 배열을 반환합니다.

size(pid_array)
1x2 array of PID controller.
Each PID has 1 output and 1 input.

배열에 있는 모든 PID 제어기는 샘플 시간, 이산 적분기 식, 그리고 InputName, OutputName과 같은 동적 시스템 속성이 같아야 합니다.

표준 형식 pidstd 제어기를 병렬 형식으로 변환합니다.

표준 PID 형식은 제어기 동작을 전체적인 비례 이득 Kp, 적분 및 미분 시정수 TiTd, 그리고 필터 제수 N에 대해 표현합니다. pid 명령을 사용하여 임의의 표준 형식 제어기를 병렬 형식으로 변환할 수 있습니다. 예를 들어 다음과 같은 표준 형식 제어기가 있다고 가정하겠습니다.

Kp = 2;
Ti = 3;
Td = 4;
N = 50;
C_std = pidstd(Kp,Ti,Td,N)
C_std =
 
             1      1              s      
  Kp * (1 + ---- * --- + Td * ------------)
             Ti     s          (Td/N)*s+1 

  with Kp = 2, Ti = 3, Td = 4, N = 50
 
Continuous-time PIDF controller in standard form

pid를 사용하여 이 제어기를 병렬 형식으로 변환합니다.

C_par = pid(C_std)
C_par =
 
             1            s    
  Kp + Ki * --- + Kd * --------
             s          Tf*s+1 

  with Kp = 2, Ki = 0.667, Kd = 8, Tf = 0.08
 
Continuous-time PIDF controller in parallel form.

PID 제어기를 나타내는 연속시간 동적 시스템을 병렬 pid 형식으로 변환합니다.

적분기 하나와 영점 2개를 갖는 다음 동적 시스템은 PID 제어기와 동일합니다.

H(s)=3(s+1)(s+2)s.

Hzpk 모델을 만듭니다. 그런 다음 pid 명령을 사용하여 PID 이득 Kp, Ki, Kd에 대해 H를 구합니다.

H = zpk([-1,-2],0,3);
C = pid(H)
C =
 
             1          
  Kp + Ki * --- + Kd * s
             s          

  with Kp = 9, Ki = 6, Kd = 3
 
Continuous-time PID controller in parallel form.

도함수 필터가 있는 PID 제어기를 나타내는 이산시간 동적 시스템을 병렬 pid 형식으로 변환합니다.

PIDF 제어기를 나타내는 이산시간 zpk 모델을 만듭니다(z = 1에서의 적분기 극점을 포함하여 극점 2개와 영점 2개).

sys = zpk([-0.5,-0.6],[1 -0.2],3,'Ts',0.1);

sys를 PID 형식으로 변환하면 결과는 변환을 위해 어떤 이산 적분기 식을 지정했는지에 따라 달라집니다. 예를 들어, 적분기와 도함수 모두에 대해 디폴트 값 ForwardEuler를 사용합니다.

Cfe = pid(sys)
Cfe =
 
              Ts               1     
  Kp + Ki * ------ + Kd * -----------
              z-1         Tf+Ts/(z-1)

  with Kp = 2.75, Ki = 60, Kd = 0.0208, Tf = 0.0833, Ts = 0.1
 
Sample time: 0.1 seconds
Discrete-time PIDF controller in parallel form.

이제 Trapezoidal 식을 사용하여 변환합니다.

Ctrap = pid(sys,'IFormula','Trapezoidal','DFormula','Trapezoidal')
Ctrap =
 
            Ts*(z+1)                 1         
  Kp + Ki * -------- + Kd * -------------------
            2*(z-1)         Tf+Ts/2*(z+1)/(z-1)

  with Kp = -0.25, Ki = 60, Kd = 0.0208, Tf = 0.0333, Ts = 0.1
 
Sample time: 0.1 seconds
Discrete-time PIDF controller in parallel form.

결과로 생성되는 계수 값과 함수 형식에서 차이를 확인할 수 있습니다.

이 특정 동적 시스템에서는 도함수 필터에 대해 BackwardEuler 식을 사용하여 sys를 병렬 PID 형식으로 작성할 수 없습니다. 그렇게 하면 Tf < 0이 결과로 생성되는데, 이는 허용되지 않습니다. 그런 경우 pid가 오류를 반환합니다.

연속시간 PID 제어기를 이산화하고 적분 및 도함수 필터의 식을 설정합니다.

연속시간 제어기를 만들고 이를 c2d 명령의 영차수 유지 방법을 사용하여 이산화합니다.

Ccon = pid(1,2,3,4);  % continuous-time PIDF controller
Cdis1 = c2d(Ccon,0.1,'zoh')
Cdis1 =
 
              Ts               1     
  Kp + Ki * ------ + Kd * -----------
              z-1         Tf+Ts/(z-1)

  with Kp = 1, Ki = 2, Kd = 3.04, Tf = 4.05, Ts = 0.1
 
Sample time: 0.1 seconds
Discrete-time PIDF controller in parallel form.

c2d가 이산시간 제어기에 대해 새 PID 이득을 계산한 결과가 나타납니다.

이산화된 제어기의 이산 적분기 식은 에 설명된 대로 c2d 이산화 방법에 따라 달라집니다. zoh 방법의 경우, IFormulaDFormula 모두 ForwardEuler입니다.

Cdis1.IFormula
ans = 
'ForwardEuler'
Cdis1.DFormula
ans = 
'ForwardEuler'

c2d에 의해 반환되는 방법과는 다른 식을 사용하려면 제어기의 Ts, IFormula, DFormula 속성을 원하는 값으로 설정하면 됩니다.

Cdis2 = Ccon;
Cdis2.Ts = 0.1; 
Cdis2.IFormula = 'BackwardEuler';
Cdis2.DFormula = 'BackwardEuler';

그러나 이들 명령은 이산화된 제어기에 대한 새 PID 이득을 계산하지 않습니다. 이 값을 보려면 Cdis2를 검토하고 계수를 CconCdis1과 비교하십시오.

Cdis2
Cdis2 =
 
             Ts*z               1      
  Kp + Ki * ------ + Kd * -------------
              z-1         Tf+Ts*z/(z-1)

  with Kp = 1, Ki = 2, Kd = 3, Tf = 4, Ts = 0.1
 
Sample time: 0.1 seconds
Discrete-time PIDF controller in parallel form.

  • pid를 사용하여 다음을 수행합니다.

    • 알려진 PID 이득과 필터 시정수로부터 pid 제어기 객체를 만듭니다.

    • pidstd 제어기 객체를 표준 형식 pid 제어기 객체로 변환합니다.

    • 다른 유형의 동적 시스템 모델을 pid 제어기 객체로 변환합니다.

  • 특정 플랜트를 위한 PID 제어기를 설계하려면 pidtune 또는 pidTuner를 사용하십시오. 조정 가능한 PID 제어기를 제어 설계 블록으로 만들려면 tunablePID를 사용하십시오.

  • 다음과 같이 pid 제어기 객체로 구성된 배열을 만듭니다.

    • Kp,Ki,Kd, Tf에 대해 배열 값 지정

    • pid 제어기 객체로 변환할 동적 시스템의 배열 sys 지정

    • stack을 사용하여 개별 제어기 또는 작은 배열로부터 배열 작성

    pid 제어기로 구성된 배열에서, 각 제어기는 동일한 샘플 시간 Ts와 이산 적분기 식 IFormulaDFormula를 가져야 합니다.

  • 표준 형식 제어기를 만들거나 표준 형식 제어기로 변환하려면 pidstd를 사용하십시오. 표준 형식은 제어기 동작을 전체적인 비례 이득 Kp, 적분 시간 및 미분 시간 Ti와 Td, 그리고 필터 제수 N에 대해 표현합니다.

    C=Kp(1+1Ti1s+TdsTdNs+1).

  • 연속시간 pid 제어기를 이산화하는 방법에는 두 가지가 있습니다.

    • c2d 명령을 사용합니다. c2d는 이산화된 제어기에 대한 새 파라미터 값을 계산합니다. 이산화된 제어기의 이산 적분기 식은 다음 표에 나와 있듯이 사용하는 c2d 이산화 방법에 따라 달라집니다.

      c2d 이산화 방법IFormulaDFormula
      'zoh'ForwardEulerForwardEuler
      'foh'TrapezoidalTrapezoidal
      'tustin'TrapezoidalTrapezoidal
      'impulse'ForwardEulerForwardEuler
      'matched'ForwardEulerForwardEuler

      c2d 이산화 방법에 대한 자세한 내용은 c2d 함수 도움말 페이지를 참조하십시오. IFormulaDFormula에 대한 자세한 내용은 속성 항목을 참조하십시오.

    • 다른 이산 적분기 식이 필요한 경우 Ts, IFormula, DFormula를 직접 원하는 값으로 설정하여 제어기를 이산화하면 됩니다. (연속시간 PID 제어기 이산화하기 항목을 참조하십시오.) 단, 이 방법은 이산화된 제어기에 대한 새 이득 및 필터 상수 값을 계산하지 않습니다. 따라서 이 방법은 c2d를 사용하는 것보다 연속시간 및 이산시간 pid 제어기 간의 일치 결과가 좋지 않을 수 있습니다.

R2010b에 개발됨