pidstd
표준 형식의 PID 제어기
설명
pidstd
를 사용하여 표준 형식 PID 제어기 객체를 만들거나 동적 시스템 모델을 표준 PID 제어기 형식으로 변환합니다.
pidstd
제어기 모델 객체는 연속시간 또는 이산시간에서 표준 형식 PID 제어기를 표현할 수 있습니다.
연속시간 —
이산시간 —
여기서 각각은 다음을 나타냅니다.
Kp는 비례 이득입니다.
Ti는 적분 시간입니다.
Td는 미분 시간입니다.
N은 1차 도함수 필터 제수입니다.
IF(z)는 이산시간 제어기에서 적분을 계산하기 위한 적분기 방법입니다.
DF(z)는 이산시간 제어기에서 도함수 필터를 계산하기 위한 적분기 방법입니다.
그런 다음, 이 객체를 플랜트, 액추에이터, 센서와 같은 제어 아키텍처의 다른 컴포넌트와 결합하여 제어 시스템을 나타낼 수 있습니다. 자세한 내용은 모델 객체를 사용한 제어 시스템 모델링 항목을 참조하십시오.
제어기 파라미터를 직접 지정하거나 다른 유형의 모델(예: 전달 함수 모델 tf
)을 PID 제어기 형식으로 변환하여 PID 제어기 모델 객체를 만들 수 있습니다.
pidstd
를 사용하여 일반화된 상태공간(genss
) 모델 또는 불확실 상태공간(uss
(Robust Control Toolbox)) 모델을 만들 수도 있습니다.
생성
pidstd
제어기 모델은 다음 방법 중 하나로 얻을 수 있습니다.
pidstd
함수를 사용하여 모델을 만듭니다.pidtune
함수를 사용하여 플랜트 모델의 PID 제어기를 조정합니다.pidtune
함수의C0
인수를 사용하여 기준이 되는 표준 형식 PID 제어기 유형을 지정합니다. 예를 들면 다음과 같습니다.sys = zpk([],[-1 -1 -1],1); C0 = pidstd(1,1,1); C = pidtune(sys,C0)
다음을 사용하여 플랜트 모델에 대한 PID 제어기를 대화형 방식으로 조정합니다.
PID 제어기 조정 라이브 편집기 작업.
PID 조정기 앱.
구문
설명
입력 인수
Kp
— 비례 이득
1
(디폴트 값) | 스칼라 | 벡터 | 행렬 | realp
객체 | genmat
객체 | tunableSurface
객체
비례 이득으로, 유한한 실수 값이나 조정 가능한 객체로 지정됩니다.
pidstd
제어기 객체를 만들려면 유한한 실수 스칼라 값을 사용합니다.pidstd
제어기 객체로 구성된 배열을 만들려면 유한한 실수 값으로 구성된 배열을 사용합니다.조정 가능한 제어기 모델을 만들려면 조정 가능형 파라미터(
realp
) 또는 일반화된 행렬(genmat
)을 사용합니다.조정 가능한 이득 스케줄링이 적용된 제어기 모델을 만들려면
tunableSurface
를 사용하여 생성된 조정 가능한 곡면을 사용합니다.
Ti
— 적분 시간
Inf
(디폴트 값) | 스칼라 | 벡터 | 행렬 | realp
객체 | genmat
객체 | tunableSurface
객체
적분 시간으로, 양의 실수 값이나 조정 가능한 객체로 지정됩니다.
pidstd
제어기 객체를 만들려면 양의 실수 스칼라 값을 사용합니다.pidstd
제어기 객체로 구성된 배열을 만들려면 양의 실수 값으로 구성된 배열을 사용합니다.조정 가능한 제어기 모델을 만들려면 조정 가능형 파라미터(
realp
) 또는 일반화된 행렬(genmat
)을 사용합니다.조정 가능한 이득 스케줄링이 적용된 제어기 모델을 만들려면
tunableSurface
를 사용하여 생성된 조정 가능한 곡면을 사용합니다.
Td
— 미분 시간
0
(디폴트 값) | 스칼라 | 벡터 | 행렬 | realp
객체 | genmat
객체 | tunableSurface
객체
미분 시간으로, 음이 아닌 유한한 실수 값이나 조정 가능한 객체로 지정됩니다.
pidstd
제어기 객체를 만들려면 음이 아닌 유한한 실수 스칼라 값을 사용합니다.pidstd
제어기 객체로 구성된 배열을 만들려면 음이 아닌 유한한 실수 값으로 구성된 배열을 사용합니다.조정 가능한 제어기 모델을 만들려면 조정 가능형 파라미터(
realp
) 또는 일반화된 행렬(genmat
)을 사용합니다.조정 가능한 이득 스케줄링이 적용된 제어기 모델을 만들려면
tunableSurface
를 사용하여 생성된 조정 가능한 곡면을 사용합니다.
N
— 도함수 필터 제수
Inf
(디폴트 값) | 스칼라 | 벡터 | 행렬 | realp
객체 | genmat
객체 | tunableSurface
객체
1차 도함수 필터 제수로, 양의 실수 값이나 조정 가능한 객체로 지정됩니다.
pidstd
제어기 객체를 만들려면 양의 실수 스칼라 값을 사용합니다.pidstd
제어기 객체로 구성된 배열을 만들려면 양의 실수 값으로 구성된 배열을 사용합니다.조정 가능한 제어기 모델을 만들려면 조정 가능형 파라미터(
realp
) 또는 일반화된 행렬(genmat
)을 사용합니다.조정 가능한 이득 스케줄링이 적용된 제어기 모델을 만들려면
tunableSurface
를 사용하여 생성된 조정 가능한 곡면을 사용합니다.
N
= Inf
이면 제어기에는 미분 동작에 대한 필터가 없습니다.
Ts
— 샘플 시간
0
(디폴트 값) | 양의 스칼라
샘플 시간으로, 다음으로 지정됩니다.
연속시간 시스템의 경우
0
.이산시간 시스템의 샘플링 주기를 나타내는 양의 스칼라.
Ts
를TimeUnit
속성으로 지정된 시간 단위로 지정합니다.
pidstd
제어기로 구성된 배열에서는 동일한 Ts
가 모든 제어기에 적용됩니다.
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 제어기 간의 일치 결과가 좋지 않을 수 있습니다.
sys
— 동적 시스템
동적 시스템 모델 | 모델 배열
동적 시스템으로, SISO 동적 시스템 모델로 지정되거나 SISO 동적 시스템 모델로 구성된 배열로 지정됩니다. 사용 가능한 동적 시스템에는 다음이 포함됩니다.
일반화된 모델 또는 불확실 LTI 모델(예:
genss
,uss
(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) 모델).
출력 인수
C
— 표준 형식 PID 제어기 모델
pidstd
모델 객체 | genss
모델 객체 | uss
모델 객체
PID 제어기 모델로, 다음과 같이 반환됩니다.
표준 형식 PID 제어기(
pidstd
) 모델 객체: 모든 이득이 숫자형 값을 갖는 경우. 이득이 숫자형 배열인 경우C
는pidstd
제어기 객체로 구성된 배열입니다.일반화된 상태공간 모델(
genss
) 객체:numerator
또는denominator
입력 인수가realp
파라미터 또는 일반화된 행렬(genmat
)과 같은 조정 가능한 파라미터를 포함하는 경우.불확실 상태공간 모델(
uss
) 객체:numerator
또는denominator
입력 인수가 불확실한 파라미터를 포함하는 경우. 불확실 모델을 사용하려면 Robust Control Toolbox™가 필요합니다.
속성
Kp, Ti, Td, N
— PID 제어기 계수
스칼라
PID 제어기 계수로, 스칼라로 지정됩니다. pidstd
제어기 객체 또는 이러한 객체로 구성된 배열을 만드는 경우 이러한 계수를 Kp
, Ti
, Td
및 N
입력 인수에 지정합니다.
IFormula
— 이산시간 제어기에서의 적분 계산 방법
'ForwardEuler'
(디폴트 값) | 'BackwardEuler'
| 'Trapezoidal'
다음과 같은 이산시간 pidstd
제어기의 적분기에 대한 이산 적분기 식 IF(z)입니다.
IFormula
를 다음 중 하나로 지정합니다.
'ForwardEuler'
— IF(z) =이 수식은 제어기의 대역폭에 비해 나이퀴스트 한계가 큰, 작은 샘플 시간에 적합합니다. 샘플 시간이 큰 경우
ForwardEuler
수식은 연속시간에서 안정적인 시스템을 이산화할 때도 불안정성을 야기할 수 있습니다.'BackwardEuler'
— IF(z) =BackwardEuler
수식의 이점은, 이 수식을 사용하여 안정적인 연속시간 시스템을 이산화하면 항상 안정적인 이산시간 결과가 생성된다는 것입니다.'Trapezoidal'
— IF(z) =Trapezoidal
수식의 이점은, 이 수식을 사용하여 안정적인 연속시간 시스템을 이산화하면 항상 안정적인 이산시간 결과가 생성된다는 것입니다. 사용 가능한 모든 적분식 중에서Trapezoidal
수식은 이산화된 시스템과 이에 대응하는 연속시간 시스템의 주파수 영역 속성 간의 가장 가까운 일치를 생성합니다.
C
가 연속시간 제어기인 경우 IFormula
는 ''
입니다.
DFormula
— 이산시간 제어기에서의 도함수 계산 방법
'ForwardEuler'
(디폴트 값) | 'BackwardEuler'
| 'Trapezoidal'
다음과 같은 이산시간 pidstd
제어기의 도함수 필터에 대한 이산 적분기 식 DF(z)입니다.
DFormula
를 다음 중 하나로 지정합니다.
'ForwardEuler'
— DF(z) =이 수식은 제어기의 대역폭에 비해 나이퀴스트 한계가 큰, 작은 샘플 시간에 적합합니다. 샘플 시간이 큰 경우
ForwardEuler
수식은 연속시간에서 안정적인 시스템을 이산화할 때도 불안정성을 야기할 수 있습니다.'BackwardEuler'
— DF(z) =BackwardEuler
수식의 이점은, 이 수식을 사용하여 안정적인 연속시간 시스템을 이산화하면 항상 안정적인 이산시간 결과가 생성된다는 것입니다.'Trapezoidal'
— DF(z) =Trapezoidal
수식의 이점은, 이 수식을 사용하여 안정적인 연속시간 시스템을 이산화하면 항상 안정적인 이산시간 결과가 생성된다는 것입니다. 사용 가능한 모든 적분식 중에서Trapezoidal
수식은 이산화된 시스템과 이에 대응하는 연속시간 시스템의 주파수 영역 속성 간의 가장 가까운 일치를 생성합니다.
도함수 필터가 없는(N = Inf
) pidstd
제어기의 경우 DFormula
에 대해 Trapezoidal
값을 사용할 수 없습니다.
C
가 연속시간 제어기인 경우 DFormula
는 ''
입니다.
InputDelay
— 입력 지연
0 (디폴트 값)
읽기 전용 속성입니다.
시스템 입력에 대한 시간 지연. InputDelay
는 pidstd
제어기 객체에 대해 항상 0입니다.
OutputDelay
— 출력 지연
0 (디폴트 값)
읽기 전용 속성입니다.
시스템 출력에 대한 시간 지연. OutputDelay
는 pidstd
제어기 객체에 대해 항상 0입니다.
Ts
— 샘플 시간
0
(디폴트 값) | 양의 스칼라
샘플 시간으로, 다음으로 지정됩니다.
연속시간 시스템의 경우
0
.이산시간 시스템의 샘플링 주기를 나타내는 양의 스칼라.
Ts
는TimeUnit
속성으로 지정된 시간 단위로 지정됩니다.
pidstd
객체가 PID 제어기로 구성된 배열인 경우 동일한 Ts
가 모든 제어기에 적용됩니다.
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
는 필드가 없는 구조체입니다.
객체 함수
다음 목록에는 pidstd
모델과 함께 사용할 수 있는 함수 중 몇 가지 대표적인 함수가 나열되어 있습니다. 일반적으로, 동적 시스템 모델에 적용 가능한 함수는 pidstd
객체에 적용할 수 있습니다.
선형 분석(선형 해석)
안정성 분석
모델 변환
모델 상호 연결
예제
연속시간 표준 형식 PDF 제어기 만들기
비례항 및 미분항과 필터 제수를 사용하여 연속시간 표준 형식 PDF 제어기를 만듭니다. 이렇게 하려면 적분 시간을 무한대로 설정해야 합니다. 다른 이득과 필터 제수 상수는 원하는 값으로 설정합니다.
Kp = 1; Ti = Inf; Td = 3; N = 6; C = pidstd(Kp,Ti,Td,N)
C = s Kp * (1 + Td * ------------) (Td/N)*s+1 with Kp = 1, Td = 3, N = 6 Continuous-time PDF controller in standard form
제어기 유형, 수식 및 파라미터 값이 표시되고 제어기에 적분기 항이 없음을 확인할 수 있습니다.
이산시간 표준 형식 PI 제어기
사다리꼴 이산화 식을 사용하여 이산시간 표준 형식 PI 제어기를 만듭니다.
이산시간 PI 제어기를 만들려면 Name,Value
구문을 사용하여 Ts
의 값과 이산화 식을 설정하십시오.
C2 = pidstd(1,0.5,'Ts',0.1,'IFormula','Trapezoidal') % Ts = 0.1s
C2 = 1 Ts*(z+1) Kp * (1 + ---- * --------) Ti 2*(z-1) with Kp = 1, Ti = 0.5, Ts = 0.1 Sample time: 0.1 seconds Discrete-time PI controller in standard form
또는 4개 PID 파라미터 Kp
, Ti
, Td
, N
뒤에 다섯 번째 입력 인수로 Ts
를 제공하여 동일한 이산시간 제어기를 만들 수 있습니다. PI 제어기만 필요하므로 Td
를 0으로 설정하고 N
을 무한대로 설정합니다.
C2 = pidstd(5,2.4,0,Inf,0.1,'IFormula','Trapezoidal')
C2 = 1 Ts*(z+1) Kp * (1 + ---- * --------) Ti 2*(z-1) with Kp = 5, Ti = 2.4, Ts = 0.1 Sample time: 0.1 seconds Discrete-time PI controller in standard form
C1
과 C2
가 동일함을 확인할 수 있습니다.
이름이 지정된 입력과 출력을 갖는 표준 형식 PID 제어기
PID 제어기를 만들 때 동적 시스템 속성 InputName
과 OutputName
을 설정합니다. 이 방식은 connect
명령을 사용하여 PID 제어기를 다른 동적 시스템 모델과 상호 연결할 때 유용합니다.
C = pidstd(1,2,3,'InputName','e','OutputName','u')
C = 1 1 Kp * (1 + ---- * --- + Td * s) Ti s with Kp = 1, Ti = 2, Td = 3 Continuous-time PID controller in standard 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]; Ti = [5:2:9;5:2:9];
이들 배열을 pidstd
명령에 전달하면 이 명령은 제어기로 구성된 배열을 반환합니다.
pi_array = pidstd(Kp,Ti,'Ts',0.1,'IFormula','BackwardEuler'); size(pi_array)
2x3 array of PID controller. Each PID has 1 output and 1 input.
또는 stack
명령을 사용하여 PID 제어기로 구성된 배열을 만드십시오.
PID 제어기를 만듭니다.
C = pidstd(1,5,0.1)
C = 1 1 Kp * (1 + ---- * --- + Td * s) Ti s with Kp = 1, Ti = 5, Td = 0.1 Continuous-time PID controller in standard form
PIDF 제어기를 만듭니다.
Cf = pidstd(1,5,0.1,0.5)
Cf = 1 1 s Kp * (1 + ---- * --- + Td * ------------) Ti s (Td/N)*s+1 with Kp = 1, Ti = 5, Td = 0.1, N = 0.5 Continuous-time PIDF controller in standard form
두 번째 배열 차원을 따라 제어기를 누적합니다.
pid_array = stack(2,C,Cf);
이 명령은 제어기로 구성된 1×2 배열을 반환합니다.
size(pid_array)
1x2 array of PID controller. Each PID has 1 output and 1 input.
배열에 있는 모든 PID 제어기는 샘플 시간, 이산 적분기 식, 그리고 InputName
, OutputName
과 같은 동적 시스템 속성이 같아야 합니다.
PID 제어기를 병렬 형식에서 표준 형식으로 변환하기
병렬 형식 pid
제어기를 표준 형식으로 변환합니다.
병렬 PID 형식은 제어기 동작을 전체적인 비례 이득, 적분 이득, 미분 이득(각각 Kp
, Ki
, Kd
)과 필터 시정수 Tf
로 표현합니다. 다음의 조건을 충족하면 pidstd
명령을 사용하여 어떠한 병렬 형식 제어기든 표준 형식으로 변환할 수 있습니다.
병렬 형식 제어기가 순수 적분기가 아니어야 합니다.
이득
Kp
,Ki
,Kd
가 모두 동일한 부호를 가져야 합니다.
예를 들어 다음과 같은 병렬 형식 제어기가 있다고 가정하겠습니다.
Kp = 2; Ki = 3; Kd = 4; Tf = 5; C_par = pid(Kp,Ki,Kd,Tf)
C_par = 1 s Kp + Ki * --- + Kd * -------- s Tf*s+1 with Kp = 2, Ki = 3, Kd = 4, Tf = 5 Continuous-time PIDF controller in parallel form.
pidstd
를 사용하여 이 제어기를 표준 형식으로 변환합니다.
C_std = pidstd(C_par)
C_std = 1 1 s Kp * (1 + ---- * --- + Td * ------------) Ti s (Td/N)*s+1 with Kp = 2, Ti = 0.667, Td = 2, N = 0.4 Continuous-time PIDF controller in standard form
동적 시스템을 표준 형식 PID 제어기로 변환하기
PID 제어기를 나타내는 연속시간 동적 시스템을 표준 pidstd
형식으로 변환합니다.
적분기 하나와 영점 2개를 갖는 다음 동적 시스템은 PID 제어기와 동일합니다.
H의 zpk
모델을 만듭니다. 그런 다음 pidstd
명령을 사용하여 PID 이득 Kp
, Ti
, Td
에 대해 H를 구합니다.
H = zpk([-1,-2],0,3); C = pidstd(H)
C = 1 1 Kp * (1 + ---- * --- + Td * s) Ti s with Kp = 9, Ti = 1.5, Td = 0.333 Continuous-time PID controller in standard form
이산시간 동적 시스템을 표준 형식 PID 제어기로 변환하기
도함수 필터가 있는 PID 제어기를 나타내는 이산시간 동적 시스템을 표준 pidstd
형식으로 변환합니다.
PIDF 제어기를 나타내는 이산시간 zpk
모델을 만듭니다(z
= 1에서의 적분기 극점을 포함하여 극점 2개와 영점 2개).
sys = zpk([-0.5,-0.6],[1 -0.2],3,'Ts',0.1);
sys
를 PID 형식으로 변환하면 결과는 변환을 위해 어떤 이산 적분기 식을 지정했는지에 따라 달라집니다. 예를 들어, 적분기와 도함수 모두에 대해 디폴트 값 ForwardEuler
를 사용합니다.
C = pidstd(sys)
C = 1 Ts 1 Kp * (1 + ---- * ------ + Td * ---------------) Ti z-1 (Td/N)+Ts/(z-1) with Kp = 2.75, Ti = 0.0458, Td = 0.00758, N = 0.0909, Ts = 0.1 Sample time: 0.1 seconds Discrete-time PIDF controller in standard form
이 특정 동적 시스템에서는 도함수 필터에 대해 BackwardEuler
식을 사용하여 sys
를 표준 PID 형식으로 작성할 수 없습니다. 그렇게 하면 0보다 작은 N
이 결과로 생성되는데, 이는 허용되지 않습니다. 그런 경우 pidstd
가 오류를 반환합니다.
마찬가지로, Trapezoidal
식을 사용하여 sys
를 표준 PID 형식으로 작성할 수 없습니다. 그렇게 하면 Ti
와 Td
가 음수가 되는데, 이 또한 허용되지 않습니다.
연속시간 표준 형식 PID 제어기 이산화하기
연속시간 PID 제어기를 이산화하고 적분 및 도함수 필터의 식을 설정합니다.
연속시간 PIDF 제어기를 만들고 이를 c2d
명령의 영차 유지 방법을 사용하여 이산화합니다.
Ccon = pidstd(1,2,3,4);
Cdis1 = c2d(Ccon,0.1,'zoh')
Cdis1 = 1 Ts 1 Kp * (1 + ---- * ------ + Td * ---------------) Ti z-1 (Td/N)+Ts/(z-1) with Kp = 1, Ti = 2, Td = 3.2, N = 4, Ts = 0.1 Sample time: 0.1 seconds Discrete-time PIDF controller in standard 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 = 1 Ts*z 1 Kp * (1 + ---- * ------ + Td * -----------------) Ti z-1 (Td/N)+Ts*z/(z-1) with Kp = 1, Ti = 2, Td = 3, N = 4, Ts = 0.1 Sample time: 0.1 seconds Discrete-time PIDF controller in standard 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)