Main Content

pid

병렬 형식의 PID 제어기

    설명

    pid를 사용하여 병렬 형식의 PID(비례-적분-미분) 제어기 모델 객체를 만들거나 동적 시스템 모델을 병렬 PID 제어기 형식으로 변환합니다.

    pid 제어기 모델 객체는 연속시간 또는 이산시간에서 병렬 형식의 PID 제어기를 표현할 수 있습니다.

    • 연속시간 — C=Kp+Kis+KdsTfs+1

    • 이산시간 — C=Kp+KiIF(z)+KdTf+DF(z)

    여기서 각각은 다음을 나타냅니다.

    • Kp는 비례 이득입니다.

    • Ki는 적분 이득입니다.

    • Kd는 미분 이득입니다.

    • Tf는 1차 도함수 필터 시정수입니다.

    • IF(z)는 이산시간 제어기에서 적분을 계산하기 위한 적분기 방법입니다.

    • DF(z)는 이산시간 제어기에서 도함수 필터를 계산하기 위한 적분기 방법입니다.

    그런 다음, 이 객체를 플랜트, 액추에이터, 센서와 같은 제어 아키텍처의 다른 구성요소와 결합하여 제어 시스템을 나타낼 수 있습니다. 자세한 내용은 모델 객체를 사용한 제어 시스템 모델링 항목을 참조하십시오.

    제어기 파라미터를 직접 지정하거나 다른 유형의 모델(예: 전달 함수 모델 tf)을 PID 제어기 형식으로 변환하여 PID 제어기 모델 객체를 만들 수 있습니다.

    pid를 사용하여 일반화된 상태공간(genss) 모델 또는 불확실 상태공간(uss (Robust Control Toolbox)) 모델을 만들 수도 있습니다.

    생성

    pid 제어기 모델은 다음 방법 중 하나로 얻을 수 있습니다.

    • pid 함수를 사용하여 모델을 만듭니다.

    • pidtune 함수를 사용하여 플랜트 모델의 PID 제어기를 조정합니다. pidtune 함수의 type 인수에서 1-DOF PID 제어기 유형을 지정하여 병렬 형식의 PID 제어기를 얻습니다. 예를 들면 다음과 같습니다.

      sys = zpk([],[-1 -1 -1],1);
      C = pidtune(sys,'PID');
    • 다음을 사용하여 플랜트 모델에 대한 PID 제어기를 대화형 방식으로 조정합니다.

    설명

    예제

    C = pid(Kp,Ki,Kd,Tf)는 연속시간 병렬 형식 PID 제어기 모델을 만들고 속성 Kp, Ki, Kd, Tf를 설정합니다. 나머지 속성은 디폴트 값을 갖습니다.

    예제

    C = pid(Kp,Ki,Kd,Tf,Ts)는 샘플 시간이 Ts인 이산시간 PID 제어기 모델을 만듭니다.

    예제

    C = pid(Kp)는 연속시간 비례(P) 제어기를 만듭니다.

    예제

    C = pid(Kp,Ki)는 비례 및 적분(PI) 제어기를 만듭니다.

    예제

    C = pid(Kp,Ki,Kd)는 비례, 적분 및 미분(PID) 제어기를 만듭니다.

    예제

    C = pid(___,Name,Value)는 위에 열거된 입력 인수 조합에 대해 하나 이상의 Name,Value 인수를 사용하여 지정된 pid 제어기 객체의 속성을 설정합니다.

    예제

    C = pid는 디폴트 속성값으로 제어기 객체를 만듭니다. 제어기 모델의 속성을 수정하려면 점 표기법을 사용합니다.

    예제

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

    입력 인수

    모두 확장

    동적 시스템으로, SISO 동적 시스템 모델로 지정되거나 SISO 동적 시스템 모델로 구성된 배열로 지정됩니다. 사용 가능한 동적 시스템에는 다음이 포함됩니다.

    • 연속시간 또는 이산시간 수치적 LTI 모델(예: tf, zpk, ss 또는 pidstd 모델).

    • 일반화된 모델 또는 불확실 LTI 모델(예: genss, uss (Robust Control Toolbox) 모델). (불확실 모델을 사용하려면 Robust Control Toolbox™가 필요합니다.)

      결과적으로 생성된 PID 제어기는 다음을 가정합니다.

      • 조정 가능한 제어 설계 블록의 경우 조정 가능한 구성요소의 현재 값을 가정합니다.

      • 불확실한 제어 설계 블록의 경우 공칭 모델 값을 가정합니다.

    • 식별된 LTI 모델(예: idtf (System Identification Toolbox), idss (System Identification Toolbox), idproc (System Identification Toolbox), idpoly (System Identification Toolbox) 또는 idgrey (System Identification Toolbox) 모델). (식별된 모델을 사용하려면 System Identification Toolbox™가 필요합니다.)

    출력 인수

    모두 확장

    PID 제어기 모델로, 다음과 같이 반환됩니다.

    • 병렬 형식 PID 제어기(pid) 모델 객체: 모든 이득이 숫자형 값을 갖는 경우. 이득이 숫자형 배열인 경우 Cpid 제어기 객체로 구성된 배열입니다.

    • 일반화된 상태공간 모델(genss) 객체: numerator 또는 denominator 입력 인수가 realp 파라미터 또는 일반화된 행렬(genmat)과 같은 조정 가능한 파라미터를 포함하는 경우.

    • 불확실 상태공간 모델(uss) 객체: numerator 또는 denominator 입력 인수가 불확실한 파라미터를 포함하는 경우. 불확실 모델을 사용하려면 Robust Control Toolbox가 필요합니다.

    속성

    모두 확장

    비례 이득으로, 유한한 실수 값이나 조정 가능한 객체로 지정됩니다.

    • pid 제어기 객체를 만들려면 유한한 실수 스칼라 값을 사용합니다.

    • pid 제어기 객체로 구성된 배열을 만들려면 유한한 실수 값으로 구성된 배열을 사용합니다.

    • 조정 가능한 제어기 모델을 만들려면 조정 가능형 파라미터(realp) 또는 일반화된 행렬(genmat)을 사용합니다.

    • 조정 가능한 이득 스케줄링이 적용된 제어기 모델을 만들려면 tunableSurface를 사용하여 생성된 조정 가능한 곡면을 사용합니다.

    적분 이득으로, 유한한 실수 값이나 조정 가능한 객체로 지정됩니다.

    • pid 제어기 객체를 만들려면 유한한 실수 스칼라 값을 사용합니다.

    • pid 제어기 객체로 구성된 배열을 만들려면 유한한 실수 값으로 구성된 배열을 사용합니다.

    • 조정 가능한 제어기 모델을 만들려면 조정 가능형 파라미터(realp) 또는 일반화된 행렬(genmat)을 사용합니다.

    • 조정 가능한 이득 스케줄링이 적용된 제어기 모델을 만들려면 tunableSurface를 사용하여 생성된 조정 가능한 곡면을 사용합니다.

    미분 이득으로, 유한한 실수 값이나 조정 가능한 객체로 지정됩니다.

    • pid 제어기 객체를 만들려면 유한한 실수 스칼라 값을 사용합니다.

    • pid 제어기 객체로 구성된 배열을 만들려면 유한한 실수 값으로 구성된 배열을 사용합니다.

    • 조정 가능한 제어기 모델을 만들려면 조정 가능형 파라미터(realp) 또는 일반화된 행렬(genmat)을 사용합니다.

    • 조정 가능한 이득 스케줄링이 적용된 제어기 모델을 만들려면 tunableSurface를 사용하여 생성된 조정 가능한 곡면을 사용합니다.

    1차 도함수 필터의 시정수로, 유한한 실수 값이나 조정 가능한 객체로 지정됩니다.

    • pid 제어기 객체를 만들려면 유한한 실수 스칼라 값을 사용합니다.

    • pid 제어기 객체로 구성된 배열을 만들려면 유한한 실수 값으로 구성된 배열을 사용합니다.

    • 조정 가능한 제어기 모델을 만들려면 조정 가능형 파라미터(realp) 또는 일반화된 행렬(genmat)을 사용합니다.

    • 조정 가능한 이득 스케줄링이 적용된 제어기 모델을 만들려면 tunableSurface를 사용하여 생성된 조정 가능한 곡면을 사용합니다.

    다음과 같은 이산시간 pid 제어기의 적분기에 대한 이산 적분기 식 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''입니다.

    다음과 같은 이산시간 pid 제어기의 도함수 필터에 대한 이산 적분기 식 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''입니다.

    이 속성은 읽기 전용입니다.

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

    이 속성은 읽기 전용입니다.

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

    샘플 시간으로, 다음으로 지정됩니다.

    • 연속시간 시스템의 경우 0.

    • 이산시간 시스템의 샘플링 주기를 나타내는 양의 스칼라. TsTimeUnit 속성으로 지정된 시간 단위로 지정합니다.

    PID 제어기 모델은 지정되지 않은 샘플 시간(Ts = -1)을 지원하지 않습니다.

    참고

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

    이산화된 제어기의 이산 적분기 식은 다음 표에 나와 있듯이 사용하는 c2d 이산화 방법에 따라 달라집니다.

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

    c2d 이산화 방법에 대한 자세한 내용은 c2d 항목을 참조하십시오.

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

    시간 변수 단위로, 다음 중 하나로 지정됩니다.

    • 'nanoseconds'

    • 'microseconds'

    • 'milliseconds'

    • 'seconds'

    • 'minutes'

    • 'hours'

    • 'days'

    • 'weeks'

    • 'months'

    • 'years'

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

    입력 채널 이름으로, 다음 중 하나로 지정됩니다.

    • 문자형 벡터.

    • '', 이름이 지정되지 않음.

    또는 다음과 같이 제어기 모델 C의 입력에 이름 error를 할당합니다.

    C.InputName = 'error';

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

    InputName을 사용하여 다음을 수행할 수 있습니다.

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

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

    입력 채널 단위로, 다음 중 하나로 지정됩니다.

    • 문자형 벡터.

    • '', 단위가 지정되지 않음.

    InputUnit을 사용하여 입력 신호 단위를 지정합니다. InputUnit은 시스템 동작에 영향을 미치지 않습니다.

    예를 들어, 다음과 같이 제어기 모델 C의 입력에 농도 단위 'mol/m^3'을 할당합니다.

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

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

    기본적으로 InputGroup은 필드가 없는 구조체입니다.

    출력 채널 이름으로, 다음 중 하나로 지정됩니다.

    • 문자형 벡터.

    • '', 이름이 지정되지 않음.

    예를 들어, 다음과 같이 제어기 모델 C의 출력에 이름 'control'을 할당합니다.

    C.OutputName = 'control';

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

    OutputName을 사용하여 다음을 수행할 수 있습니다.

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

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

    출력 채널 단위로, 다음 중 하나로 지정됩니다.

    • 문자형 벡터.

    • '', 단위가 지정되지 않음.

    OutputUnit을 사용하여 출력 신호 단위를 지정합니다. OutputUnit은 시스템 동작에 영향을 미치지 않습니다.

    예를 들어, 다음과 같이 제어기 모델 C의 출력에 단위 'volts'를 할당합니다.

    C.OutputUnit = 'volts';

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

    기본적으로 OutputGroup은 필드가 없는 구조체입니다.

    사용자가 시스템에 연동하려는 사용자 지정 텍스트로, 문자형 벡터 또는 문자형 벡터로 구성된 셀형 배열로 지정됩니다. 예를 들면 'System is MIMO'와 같습니다.

    사용자가 시스템에 연동하려는 사용자 지정 데이터로, 어떤 MATLAB 데이터형으로든 지정 가능합니다.

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

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

    SamplingGrid를 사용하여 IDLTI(식별된 선형 시불변) 모델 배열을 비롯한 모델 배열의 각 모델에 대응되는 변수 값을 추적합니다.

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

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

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

    마찬가지로, 2개의 변수 zetaw를 독립적으로 샘플링하여 6×9 모델 배열 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™ 명령 linearize (Simulink Control Design)slLinearizer (Simulink Control Design)는 자동으로 SamplingGrid를 채웁니다.

    기본적으로 SamplingGrid는 필드가 없는 구조체입니다.

    객체 함수

    다음 목록은 일부이기는 하나 pid 모델과 함께 사용할 수 있는 대표적인 함수들입니다. 일반적으로, 동적 시스템 모델에 적용 가능한 모든 함수는 pid 객체에 적용할 수 있습니다.

    모두 확장

    step동적 시스템의 계단 응답 플롯, 계단 응답 데이터
    impulse동적 시스템의 임펄스 응답 플롯, 임펄스 응답 데이터
    lsim임의의 입력에 대한 동적 시스템의 시뮬레이션된 시간 응답 플로팅, 시뮬레이션된 응답 데이터
    bode주파수 응답, 또는 크기 및 위상 데이터의 보드 플롯
    nyquist주파수 응답의 나이퀴스트 플롯
    nichols주파수 응답의 니콜스 차트
    bandwidth주파수 응답 대역폭
    pole동적 시스템의 극점
    zeroSISO 동적 시스템의 영점 및 이득
    pzplot추가적인 플롯 사용자 지정 옵션이 있는 동적 시스템 모델의 극점-영점 플롯
    margin이득 여유, 위상 여유 및 교차 주파수
    zpk영점-극점-이득 모델
    ss상태공간 모델
    c2d연속시간 모델을 이산시간 모델로 변환
    d2c이산시간 모델을 연속시간 모델로 변환
    d2dResample discrete-time model
    feedback여러 모델의 피드백 연결
    connectBlock diagram interconnections of dynamic systems
    series두 모델의 직렬 연결
    parallel두 모델의 병렬 연결
    pidtunePID tuning algorithm for linear plant model
    rlocus동적 시스템의 근궤적 플롯
    piddataAccess coefficients of parallel-form PID controller
    make2DOFConvert 1-DOF PID controller to 2-DOF controller
    pidTunerOpen PID Tuner for PID tuning
    tunablePIDTunable PID controller

    예제

    모두 축소

    비례 이득, 미분 이득을 가지며 미분항에 대한 필터를 갖는 연속시간 제어기를 만듭니다. 이렇게 하려면 적분 이득을 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 제어기로 구성된 2×3 그리드를 만듭니다.

    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

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

    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.
    

    버전 내역

    R2010b에 개발됨