pid
병렬 형식의 PID 제어기
설명
pid
를 사용하여 병렬 형식의 PID(비례-적분-미분) 제어기 모델 객체를 만들거나 동적 시스템 모델을 병렬 PID 제어기 형식으로 변환합니다.
pid
제어기 모델 객체는 연속시간 또는 이산시간에서 병렬 형식의 PID 제어기를 표현할 수 있습니다.
연속시간 —
이산시간 —
여기서 각각은 다음을 나타냅니다.
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 제어기를 대화형 방식으로 조정합니다.
PID 제어기 조정 라이브 편집기 작업.
PID 조정기 앱.
구문
설명
입력 인수
sys
— 비례 이득
동적 시스템 모델 | 모델 배열
동적 시스템으로, SISO 동적 시스템 모델로 지정되거나 SISO 동적 시스템 모델로 구성된 배열로 지정됩니다. 사용 가능한 동적 시스템에는 다음이 포함됩니다.
일반화된 모델 또는 불확실 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™가 필요합니다.)
출력 인수
C
— 병렬 형식의 PID 제어기 모델
pid
모델 객체 | genss
모델 객체 | uss
모델 객체
PID 제어기 모델로, 다음과 같이 반환됩니다.
병렬 형식 PID 제어기(
pid
) 모델 객체: 모든 이득이 숫자형 값을 갖는 경우. 이득이 숫자형 배열인 경우C
는pid
제어기 객체로 구성된 배열입니다.일반화된 상태공간 모델(
genss
) 객체:numerator
또는denominator
입력 인수가realp
파라미터 또는 일반화된 행렬(genmat
)과 같은 조정 가능한 파라미터를 포함하는 경우.불확실 상태공간 모델(
uss
) 객체:numerator
또는denominator
입력 인수가 불확실한 파라미터를 포함하는 경우. 불확실 모델을 사용하려면 Robust Control Toolbox가 필요합니다.
속성
Kp
— 비례 이득
1
(디폴트 값) | 스칼라 | 벡터 | 행렬 | realp
객체
비례 이득으로, 유한한 실수 값이나 조정 가능한 객체로 지정됩니다.
pid
제어기 객체를 만들려면 유한한 실수 스칼라 값을 사용합니다.pid
제어기 객체로 구성된 배열을 만들려면 유한한 실수 값으로 구성된 배열을 사용합니다.조정 가능한 제어기 모델을 만들려면 조정 가능형 파라미터(
realp
) 또는 일반화된 행렬(genmat
)을 사용합니다.조정 가능한 이득 스케줄링이 적용된 제어기 모델을 만들려면
tunableSurface
를 사용하여 생성된 조정 가능한 곡면을 사용합니다.
Ki
— 적분 이득
0
(디폴트 값) | 스칼라 | 벡터 | 행렬 | realp
객체
적분 이득으로, 유한한 실수 값이나 조정 가능한 객체로 지정됩니다.
pid
제어기 객체를 만들려면 유한한 실수 스칼라 값을 사용합니다.pid
제어기 객체로 구성된 배열을 만들려면 유한한 실수 값으로 구성된 배열을 사용합니다.조정 가능한 제어기 모델을 만들려면 조정 가능형 파라미터(
realp
) 또는 일반화된 행렬(genmat
)을 사용합니다.조정 가능한 이득 스케줄링이 적용된 제어기 모델을 만들려면
tunableSurface
를 사용하여 생성된 조정 가능한 곡면을 사용합니다.
Kd
— 미분 이득
0
(디폴트 값) | 스칼라 | 벡터 | 행렬 | realp
객체
미분 이득으로, 유한한 실수 값이나 조정 가능한 객체로 지정됩니다.
pid
제어기 객체를 만들려면 유한한 실수 스칼라 값을 사용합니다.pid
제어기 객체로 구성된 배열을 만들려면 유한한 실수 값으로 구성된 배열을 사용합니다.조정 가능한 제어기 모델을 만들려면 조정 가능형 파라미터(
realp
) 또는 일반화된 행렬(genmat
)을 사용합니다.조정 가능한 이득 스케줄링이 적용된 제어기 모델을 만들려면
tunableSurface
를 사용하여 생성된 조정 가능한 곡면을 사용합니다.
Tf
— 도함수 필터 시정수
0
(디폴트 값) | 스칼라 | 벡터 | 행렬 | realp
객체
1차 도함수 필터의 시정수로, 유한한 실수 값이나 조정 가능한 객체로 지정됩니다.
pid
제어기 객체를 만들려면 유한한 실수 스칼라 값을 사용합니다.pid
제어기 객체로 구성된 배열을 만들려면 유한한 실수 값으로 구성된 배열을 사용합니다.조정 가능한 제어기 모델을 만들려면 조정 가능형 파라미터(
realp
) 또는 일반화된 행렬(genmat
)을 사용합니다.조정 가능한 이득 스케줄링이 적용된 제어기 모델을 만들려면
tunableSurface
를 사용하여 생성된 조정 가능한 곡면을 사용합니다.
IFormula
— 이산시간 제어기에서의 적분 계산 방법
'ForwardEuler'
(디폴트 값) | 'BackwardEuler'
| 'Trapezoidal'
다음과 같은 이산시간 pid
제어기의 적분기에 대한 이산 적분기 식 IF(z)입니다.
IFormula
를 다음 중 하나로 지정합니다.
'ForwardEuler'
— IF(z) =이 수식은 제어기의 대역폭에 비해 나이퀴스트 한계가 큰, 작은 샘플 시간에 적합합니다. 샘플 시간이 큰 경우
ForwardEuler
수식은 연속시간에서 안정적인 시스템을 이산화할 때도 불안정성을 야기할 수 있습니다.'BackwardEuler'
— IF(z) =BackwardEuler
수식의 이점은, 이 수식을 사용하여 안정적인 연속시간 시스템을 이산화하면 항상 안정적인 이산시간 결과가 생성된다는 것입니다.'Trapezoidal'
— IF(z) =Trapezoidal
수식의 이점은, 이 수식을 사용하여 안정적인 연속시간 시스템을 이산화하면 항상 안정적인 이산시간 결과가 생성된다는 것입니다. 사용 가능한 모든 적분식 중에서Trapezoidal
수식은 이산화된 시스템과 이에 대응하는 연속시간 시스템의 주파수 영역 속성 간의 가장 가까운 일치를 생성합니다.
C
가 연속시간 제어기인 경우 IFormula
는 ''
입니다.
DFormula
— 이산시간 제어기에서의 도함수 계산 방법
'ForwardEuler'
(디폴트 값) | 'BackwardEuler'
| 'Trapezoidal'
다음과 같은 이산시간 pid
제어기의 도함수 필터에 대한 이산 적분기 식 DF(z)입니다.
DFormula
를 다음 중 하나로 지정합니다.
'ForwardEuler'
— DF(z) =이 수식은 제어기의 대역폭에 비해 나이퀴스트 한계가 큰, 작은 샘플 시간에 적합합니다. 샘플 시간이 큰 경우
ForwardEuler
수식은 연속시간에서 안정적인 시스템을 이산화할 때도 불안정성을 야기할 수 있습니다.'BackwardEuler'
— DF(z) =BackwardEuler
수식의 이점은, 이 수식을 사용하여 안정적인 연속시간 시스템을 이산화하면 항상 안정적인 이산시간 결과가 생성된다는 것입니다.'Trapezoidal'
— DF(z) =Trapezoidal
수식의 이점은, 이 수식을 사용하여 안정적인 연속시간 시스템을 이산화하면 항상 안정적인 이산시간 결과가 생성된다는 것입니다. 사용 가능한 모든 적분식 중에서Trapezoidal
수식은 이산화된 시스템과 이에 대응하는 연속시간 시스템의 주파수 영역 속성 간의 가장 가까운 일치를 생성합니다.도함수 필터가 없는(
Tf = 0
)pid
제어기의 경우DFormula
에 대해Trapezoidal
값을 사용할 수 없습니다.
C
가 연속시간 제어기인 경우 DFormula
는 ''
입니다.
InputDelay
— 입력 지연
0 (디폴트 값)
읽기 전용 속성입니다.
시스템 입력에 대한 시간 지연. InputDelay
는 pid
제어기 객체에 대해 항상 0입니다.
OutputDelay
— 출력 지연
0 (디폴트 값)
읽기 전용 속성입니다.
시스템 출력에 대한 시간 지연. OutputDelay
는 pid
제어기 객체에 대해 항상 0입니다.
Ts
— 샘플 시간
0
(디폴트 값) | 양의 스칼라
샘플 시간으로, 다음으로 지정됩니다.
연속시간 시스템의 경우
0
.이산시간 시스템의 샘플링 주기를 나타내는 양의 스칼라.
Ts
를TimeUnit
속성으로 지정된 시간 단위로 지정합니다.
PID 제어기 모델은 지정되지 않은 샘플 시간(Ts = -1
)을 지원하지 않습니다.
참고
Ts
를 변경해도 모델이 이산화되거나 리샘플링되지 않습니다. 연속시간 표현과 이산시간 표현 간에 변환하려면 c2d
및 d2c
를 사용하십시오. 이산시간 시스템의 샘플 시간을 변경하려면 d2d
를 사용하십시오.
이산화된 제어기의 이산 적분기 식은 다음 표에 나와 있듯이 사용하는 c2d
이산화 방법에 따라 달라집니다.
c2d 이산화 방법 | IFormula | DFormula |
---|---|---|
'zoh' | ForwardEuler | ForwardEuler |
'foh' | Trapezoidal | Trapezoidal |
'tustin' | Trapezoidal | Trapezoidal |
'impulse' | ForwardEuler | ForwardEuler |
'matched' | ForwardEuler | ForwardEuler |
c2d
이산화 방법에 대한 자세한 내용은 c2d
항목을 참조하십시오.
다른 이산 적분기 식이 필요한 경우 Ts
, IFormula
, DFormula
를 직접 원하는 값으로 설정하여 제어기를 이산화하면 됩니다. 단, 이 방법은 이산화된 제어기에 대한 새 이득 및 필터 상수 값을 계산하지 않습니다. 따라서 이 방법은 c2d
를 사용하는 것보다 연속시간 PID 제어기와 이산시간 PID 제어기 간의 일치 결과가 좋지 않을 수 있습니다.
TimeUnit
— 시간 변수 단위
'seconds'
(디폴트 값) | 'nanoseconds'
| 'microseconds'
| 'milliseconds'
| 'minutes'
| 'hours'
| 'days'
| 'weeks'
| 'months'
| 'years'
| ...
시간 변수 단위로, 다음 중 하나로 지정됩니다.
'nanoseconds'
'microseconds'
'milliseconds'
'seconds'
'minutes'
'hours'
'days'
'weeks'
'months'
'years'
TimeUnit
을 변경해도 다른 속성에 영향을 미치지 않으나 전체적인 시스템 동작이 변경됩니다. 시스템 동작을 수정하지 않고 시간 단위 간 변환을 수행하려면 chgTimeUnit
을 사용하십시오.
InputName
— 입력 채널 이름
'' (디폴트 값) | 문자형 벡터
입력 채널 이름으로, 다음 중 하나로 지정됩니다.
문자형 벡터.
''
, 이름이 지정되지 않음.
또는 다음과 같이 제어기 모델 C
의 입력에 이름 error
를 할당합니다.
C.InputName = 'error';
축약 표기법 u
를 사용하여 InputName
속성을 참조할 수 있습니다. 예를 들어, C.u
는 C.InputName
과 동일합니다.
InputName
을 사용하여 다음을 수행할 수 있습니다.
모델 표시 화면과 플롯에서 채널 식별.
모델 상호 연결 시 연결 점 지정.
InputUnit
— 입력 채널 단위
''
(디폴트 값) | 문자형 벡터
입력 채널 단위로, 다음 중 하나로 지정됩니다.
문자형 벡터.
''
, 단위가 지정되지 않음.
InputUnit
을 사용하여 입력 신호 단위를 지정합니다. InputUnit
은 시스템 동작에 영향을 미치지 않습니다.
예를 들어, 다음과 같이 제어기 모델 C
의 입력에 농도 단위 'mol/m^3'
을 할당합니다.
C.InputUnit = 'mol/m^3';
InputGroup
— 입력 채널 그룹
구조체
입력 채널 그룹. 이 속성은 PID 제어기 모델에는 필요하지 않습니다.
기본적으로 InputGroup
은 필드가 없는 구조체입니다.
OutputName
— 출력 채널 이름
''
(디폴트 값) | 문자형 벡터
출력 채널 이름으로, 다음 중 하나로 지정됩니다.
문자형 벡터.
''
, 이름이 지정되지 않음.
예를 들어, 다음과 같이 제어기 모델 C
의 출력에 이름 'control'
을 할당합니다.
C.OutputName = 'control';
축약 표기법 y
를 사용하여 OutputName
속성을 참조할 수도 있습니다. 예를 들어, C.y
는 C.OutputName
과 동일합니다.
OutputName
을 사용하여 다음을 수행할 수 있습니다.
모델 표시 화면과 플롯에서 채널 식별.
모델 상호 연결 시 연결 점 지정.
OutputUnit
— 출력 채널 단위
''
(디폴트 값) | 문자형 벡터
출력 채널 단위로, 다음 중 하나로 지정됩니다.
문자형 벡터.
''
, 단위가 지정되지 않음.
OutputUnit
을 사용하여 출력 신호 단위를 지정합니다. OutputUnit
은 시스템 동작에 영향을 미치지 않습니다.
예를 들어, 다음과 같이 제어기 모델 C
의 출력에 단위 'volts'
를 할당합니다.
C.OutputUnit = 'volts';
OutputGroup
— 출력 채널 그룹
구조체
출력 채널 그룹. 이 속성은 PID 제어기 모델에는 필요하지 않습니다.
기본적으로 OutputGroup
은 필드가 없는 구조체입니다.
Notes
— 사용자 지정 텍스트
{}
(디폴트 값) | 문자형 벡터 | 문자형 벡터로 구성된 셀형 배열
사용자가 시스템에 연동하려는 사용자 지정 텍스트로, 문자형 벡터 또는 문자형 벡터로 구성된 셀형 배열로 지정됩니다. 예를 들면 'System is MIMO'
와 같습니다.
UserData
— 사용자 지정 데이터
[]
(디폴트 값) | 모든 MATLAB® 데이터형
사용자가 시스템에 연동하려는 사용자 지정 데이터로, 어떤 MATLAB 데이터형으로든 지정 가능합니다.
Name
— 시스템 이름
''
(디폴트 값) | 문자형 벡터
시스템 이름으로, 문자형 벡터로 지정됩니다. (예: 'system_1'
.)
SamplingGrid
— 모델 배열의 샘플링 그리드
구조체형 배열
모델 배열의 샘플링 그리드로, 구조체형 배열로 지정됩니다.
SamplingGrid
를 사용하여 IDLTI(식별된 선형 시불변) 모델 배열을 비롯한 모델 배열의 각 모델에 대응되는 변수 값을 추적합니다.
구조체의 필드 이름을 샘플링 변수의 이름으로 설정합니다. 필드 값을 배열의 각 모델에 대응되는 샘플링된 변수 값으로 설정하십시오. 모든 샘플링 변수는 숫자형 스칼라여야 하며, 샘플링된 값으로 구성된 모든 배열은 모델 배열의 차원과 일치해야 합니다.
예를 들어, 시간 t = 0:10
에 선형 시변 시스템의 스냅샷을 찍어서 선형 모델로 구성된 11×1 배열 sysarr
을 만들 수 있습니다. 다음 코드는 시간 샘플을 선형 모델과 함께 저장합니다.
sysarr.SamplingGrid = struct('time',0:10)
마찬가지로, 2개의 변수 zeta
와 w
를 독립적으로 샘플링하여 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
객체에 적용할 수 있습니다.
선형 분석
안정성 분석
모델 변환
모델 상호 연결
예제
PDF 제어기
비례 이득, 미분 이득을 가지며 미분항에 대한 필터를 갖는 연속시간 제어기를 만듭니다. 이렇게 하려면 적분 이득을 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 제어기를 만듭니다.
이산시간 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 제어기만 필요하므로 Kd
와 Tf
를 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.
C1
과 C2
가 동일함을 확인할 수 있습니다.
이름이 지정된 입력과 출력을 갖는 PID 제어기
PID 제어기를 만들 때 동적 시스템 속성 InputName
과 OutputName
을 설정합니다. 이 방식은 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'}
PID 제어기로 구성된 배열
비례 이득이 배열 행을 따라 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
과 같은 동적 시스템 속성이 같아야 합니다.
PID 제어기를 표준 형식에서 병렬 형식으로 변환하기
표준 형식 pidstd
제어기를 병렬 형식으로 변환합니다.
표준 PID 형식은 제어기 동작을 전체적인 비례 이득 Kp
, 적분 및 미분 시정수 Ti
와 Td
, 그리고 필터 제수 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 제어기를 나타내는 연속시간 동적 시스템을 병렬 pid
형식으로 변환합니다.
적분기 하나와 영점 2개를 갖는 다음 동적 시스템은 PID 제어기와 동일합니다.
H의 zpk
모델을 만듭니다. 그런 다음 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 제어기를 나타내는 이산시간 동적 시스템을 병렬 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 제어기 이산화하기
연속시간 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
방법의 경우, IFormula
와 DFormula
모두 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
를 검토하고 계수를 Ccon
및 Cdis1
과 비교하십시오.
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에 개발됨
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)