향상된 PID(PIDE)
이 정보는
CompactLogix
5370, ControlLogix
5570, CompactLogix
5380 및 ControlLogix
5580 컨트롤러에 적용됩니다.
노트:
PIDE 명령어는 안전 응용 프로그램에서 지원되지 않으며 ControlLogix 5590 컨트롤러에서 지원되지 않습니다. ControlLogix 5590 컨트롤러 프로젝트의 경우 PPID 명령어로 대체합니다.
교체 지침 참조 ControlLogix 5590 컨트롤러에서 사용할 프로젝트 마이그레이션에 대한 정보는 Logix 5000 컨트롤러
(발행 번호 1756-RM100)를 참조하십시오.향상된 PID(PIDE) 명령어는 표준 PID 명령어에 비해 향상된 기능을 제공합니다. 이 명령어에서는 PID 알고리즘의 속도 형태가 사용됩니다. 게인은 에러 또는 PV 값이 아닌 에러 또는 PV 값의 변화에 적용됩니다.
사용 가능한 언어
래더 다이어그램
이 명령어는 래더 다이어그램에 사용할 수 없습니다.
펑션 블록

구조화된 텍스트
PIDE(PIDE_tag);
피연산자
펑션 블록
피연산자 | 유형 | 형식 | 설명 |
PIDE 태그 | PID_ENHANCED | 구조 | PIDE 구조 |
Autotune 태그 | PIDE_AUTOTUNE | 구조 | (옵션) 오토 튜닝 구조 |
구조화된 텍스트
피연산자 | 유형 | 형식 | 설명 |
PIDE 태그 | PID_ENHANCED | 구조 | PIDE 구조 |
스트럭쳐드 텍스트 내 식의 구문에 대한 자세한 내용은
스트럭쳐드 텍스트 구문
을 참조하십시오.PIDE 구조
입력 매개 변수 | 데이터 유형 | 설명 |
|---|---|---|
EnableIn | BOOL | 활성화 입력. 거짓이면 명령어가 실행되지 않고 출력이 업데이트되지 않습니다. 기본값은 참입니다. |
PV | REAL | 스케일링된 프로세스 변수 입력. 이 값은 일반적으로 아날로그 입력 모듈에서 읽어옵니다. 유효값 = 모든 부동 소수점 수 기본값 = 0.0 |
PVFault | BOOL | PV 불량 상태 표시기. 아날로그 입력에서 PV를 읽은 경우 PVFault는 보통 아날로그 입력 폴트 상태에서 제어됩니다. PVFault가 참인 경우 입력 신호에 에러가 발생했음을 나타냅니다. 기본값은 거짓(올바른 상태)입니다. |
PVEUMax | REAL | PV 최대 스케일링 값. 프로세스 변수의 100% 범위에 해당하는 PV 및 SP 값입니다. 유효값 = PVEUMin < PVEUMax 최대 양의 부동 소수점 수기본값 = 100.0 |
PVEUMin | REAL | PV 최소 스케일링 값. 프로세스 변수의 0% 범위에 해당하는 PV 및 SP 값입니다. 유효값 = 최대 음의 부동 소수점 수 PVEUMin < PVEUMax기본값 = 0.0 |
SPProg | REAL | PV 단위로 스케일링되는 SP 프로그램 값. 프로그램 제어이며 캐스케이드/비율 모드가 아닐 때 이 값으로 SP가 설정됩니다. SPProg < SPLLimit 또는 SPProg > SPHLimit일 경우 명령어는 Status에 적절한 비트를 설정하고 SP에 사용되는 값을 제한합니다. 유효값 = SPLLimit ~ SPHLimit 기본값 = 0.0 |
SPOper | REAL | PV 단위로 스케일링되는 SP 작업자 값. 작업자 제어이며 캐스케이드/비율 모드가 아닐 때 이 값으로 SP가 설정됩니다. SPOper < SPLLimit 또는 SPOper > SPHLimit일 경우 명령어는 Status에 적절한 비트를 설정하고 SP에 사용되는 값을 제한합니다. 유효값 = SPLLimit ~ SPHLimit 기본값 = 0.0 |
SPCascade | REAL | PV 단위로 스케일링되는 SP 캐스케이드 배열 값. CascadeRatio가 참이고 UseRatio가 거짓이면 SP = SPCascade입니다. 일반적으로 기본 루프의 CVEU입니다. 캐스케이드/비율 및 UseRatio가 참이면 SP = (SPCascade x Ratio)입니다. SPCascade의 값이 < SPLLimit 또는 > SPHLimit이면 Status에 적절한 비트를 설정하고 SP에 사용되는 값을 제한합니다. 유효값 = SPLLimit ~ SPHLimit 기본값 = 0.0 |
SPHLimit | REAL | PV 단위로 스케일링되는 SP 상한 값. SPHLimit > PVEUMax일 경우 명령어는 Status에 적절한 비트를 설정합니다. 유효값 = SPLLimit~PVEUMax 기본값 = 100.0 |
SPLLimit | REAL | PV 단위로 스케일링되는 SP 하한 값. SPLLimit < PVEUMin일 경우 명령어에서는 Status에 해당하는 비트가 설정됩니다. SPHLimit < SPLLimit일 경우 명령어는 Status에 적절한 비트를 설정하고 SPLLimit 값을 사용하여 SP를 제한합니다. 유효값 = PVEUMin~SPHLimit 기본값 = 0.0 |
UseRatio | BOOL | 비율 제어를 허용합니다. 캐스케이드/비율 모드일 때 참으로 설정하여 비율 제어를 활성화합니다. 기본값은 거짓입니다. |
RatioProg | REAL | 비율 프로그램 승수. 프로그램 제어일 때 Ratio 및 RatioOper가 이 값과 동일하게 설정됩니다. RatioProg < RatioLLimit 또는 RatioProg > RatioHLimit일 경우 명령어는 Status에 적절한 비트를 설정하고 Ratio에 사용되는 값을 제한합니다. 유효값 = RatioLLimit to RatioHLimit 기본값 = 1.0 |
RatioOper | REAL | 비율 작업자 승수. 작업자 제어일 때 Ratio가 이 값과 동일하게 설정됩니다. RatioOper < RatioLLimit 또는 RatioOper > RatioHLimit일 경우 명령어는 Status에 적절한 비트를 설정하고 Ratio에 사용되는 값을 제한합니다. 유효값 = RatioLLimit to RatioHLimit 기본값 = 1.0 |
RatioHLimit | REAL | 비율 상한 값. RatioProg 또는 RatioOper에서 얻은 Ratio 값을 제한합니다. RatioHLimit < RatioLLimit일 경우 명령어는 Status에 적절한 비트를 설정하고 RatioLLimit 값을 사용하여 Ratio를 제한합니다. 유효값 = RatioLLimit~최대 양의 부동 소수점 수 기본값 = 1.0 |
RatioLLimit | REAL | 비율 하한 값. RatioProg 또는 RatioOper에서 얻은 Ratio 값을 제한합니다. RatioLLimit < 0일 경우 명령어에서는 Status에 해당하는 비트가 설정되고 값이 0으로 제한됩니다. RatioHLimit < RatioLLimit일 경우 명령어는 Status에 적절한 비트를 설정하고 RatioLLimit 값을 사용하여 Ratio를 제한합니다. 유효값 = 0.0 ~ RatioHLimit 기본값 = 1.0 |
CVFault | BOOL | 제어 변수 불량 상태 표시기. CVEU가 아날로그 출력을 컨트롤하는 경우 CVFault는 일반적으로 아날로그 출력 폴트 상태에서 얻습니다. 참이면 CVFault는 출력 모듈에 에러가 있음을 나타내고 명령어는 Status에 적절한 비트를 설정합니다. 기본값은 거짓(올바른 상태)입니다. |
CVInitReq | BOOL | CV 초기화 요청. 이 신호는 일반적으로 CVEU에 의해 컨트롤되는 아날로그 출력 모듈의 "In Hold" 상태로 컨트롤되거나 보조 PID 루프의 InitPrimary 출력으로부터 얻습니다. 기본값은 거짓입니다. |
CVInitValue | REAL | CVEU 초기화 값, CVEU 단위로 스케일링됨. CVInitializing이 참인 경우 CVEU = CVInitValue이고 CV가 해당하는 백분율 값과 같습니다. CVInitValue는 CVEU에 의해 컨트롤되는 아날로그 출력의 피드백 또는 보조 루프의 설정값에서 얻습니다. CVFaulted 또는 CVEUSpanInv가 참이면 명령어 초기화가 비활성화됩니다. 유효값 = 모든 부동 소수점 수 기본값 = 0.0 |
CVProg | REAL | CV 프로그램 수동 값. 프로그램 수동 모드일 때 CV가 이 값과 동일합니다. CVManLimiting이 참일 때 CVProg < 0, > 100, < CVLLimit 또는 > CVHLimit이면 명령어는 Status에 적절한 비트를 설정하고 CV 값을 제한합니다. 유효값 = 0.0~100.0 기본값 = 0.0 |
CVOper | REAL | CV 작업자 수동 값. 작업자 수동 모드일 때 CV가 이 값과 동일합니다. 작업자 수동 모드가 아닐 경우 명령어 실행이 종료될 때마다 명령어에서 CVOper = CV로 설정됩니다. CVManLimiting이 참일 때 CVOper < 0, > 100, < CVLLimit 또는 > CVHLimit이면 명령어는 Status에 적절한 비트를 설정하고 CV 값을 제한합니다. 유효값 = 0.0~100.0 기본값 = 0.0 |
CVOverride | REAL | CV 오버라이드 값. 오버라이드 모드일 때 CV가 이 값과 동일합니다. 이 값은 PID 루프의 안전 상태 출력과 해당되어야 합니다. CVOverride < 0 또는 CVOverride > 100이면 명령어는 Status에 적절한 비트를 설정하고 CV 값을 제한합니다. 유효값 = 0.0~100.0 기본값 = 0.0 |
CVPrevious | REAL | CV n-1 값. CVSetPrevious를 설정한 경우 CVn-1 이 값과 동일합니다. CVn-1 은 앞의 실행에서 나온 CV의 값입니다. 수동, 오버라이드 또는 핸드 모드일 때, 아니면 CVInitializing이 설정되어 있는 경우 CVPrevious가 무시됩니다. 자동이나 캐스케이드/비율 모드인 경우 CVPrevious < 0, > 100, < CVLLimit 또는 > CVHLimit이면 명령어는 Status에 적절한 비트를 설정하고 CVn-1 값을 제한합니다.유효값 = 0.0~100.0 기본값 = 0.0 |
CVSetPrevious | BOOL | CVPrevious 사용 요청. 참인 경우 CVn-1 = CVPrevious 기본값은 거짓입니다. |
CVManLimiting | BOOL | 수동 모드 요청에서 CV 제한. 수동 모드 및 CVManLimiting이 참인 경우 CV는 CVHLimit 및 CVLLimit 값에 의해 제한됩니다. 기본값은 거짓입니다. |
CVEUMax | REAL | CVEU의 최대값. 100퍼센트 CV에 해당하는 CVEU 값입니다. CVEUMax = CVEUMin일 경우 명령어는 Status에 적절한 비트를 설정합니다. 유효값 = 모든 부동 소수점 수 기본값 = 100.0 |
CVEUMin | REAL | CVEU의 최소값. 0퍼센트 CV에 해당하는 CVEU 값입니다. CVEUMax = CVEUMin일 경우 명령어는 Status에 적절한 비트를 설정합니다. 유효값 = 모든 부동 소수점 수 기본값 = 0.0 |
CVHLimit | REAL | CV 상한 값. 이 값은 CVHAlarm 출력을 설정하는 데 사용됩니다. 자동이나 캐스케이드/비율 모드에 있거나 CVManLimiting이 참인 경우 수동 모드에서 CV를 제한합니다. CVHLimit > 100 또는 CVHLimit < CVLLimit일 경우 명령어는 Status에 적절한 비트를 설정합니다. CVHLimit < CVLLimit일 경우 명령어는 CVLLimit 값을 사용하여 CV를 제한합니다. 유효값 = CVLLimit < CVHLimit 100.0기본값 = 100.0 |
CVLLimit | REAL | CV 하한 값. 이 값은 CVLAlarm 출력을 설정하는 데 사용됩니다. 자동이나 캐스케이드/비율 모드에 있거나 CVManLimiting이 참인 경우 수동 모드에서 CV를 제한합니다. CVLLimit < 0 또는 CVHLimit < CVLLimit일 경우 명령어에서는 Status에 해당하는 비트가 설정됩니다. CVHLimit < CVLLimit일 경우 명령어는 CVLLimit 값을 사용하여 CV를 제한합니다. 유효값 = 0.0 CVLLimit < CVHLimit기본값 = 0.0 |
CVROCLimit | REAL | CV 변화율 제한(%/초). 변화율 제한은 자동 또는 캐스케이드/비율 모드에서, 아니면 CVManLimiting이 참인 경우 수동 모드에서만 사용됩니다. CV ROC 제한을 비활성화하려면 0을 입력합니다. CVROCLimit < 0일 경우 명령어는 Status에 적절한 비트를 설정하고 CV ROC 제한을 비활성화합니다. 유효값 = 0.0 ~ 최대 양의 부동 소수점 수 기본값 = 0.0 |
FF | REAL | 피드포워드 값. 피드포워드 값은 CV에 0점 교차 불감대 제한이 적용된 후에 CV에 합산됩니다. 따라서 FF 변화가 CV 최종 출력값에 항상 반영됩니다. FF < -100 또는 FF > 100일 경우 명령어는 Status에 적절한 비트를 설정하고 FF에 사용되는 값을 제한합니다. 유효값 = -100.0~100.0 기본값 = 0.0 |
FFPrevious | REAL | FF n-1 값. FF SetPrevous를 설정하면 명령어에서 FFn-1 = FFPrevious로 설정됩니다. FFn-1 은 앞의 실행에서 나온 FF의 값입니다. FFPrevious < -100 또는 FFPrevious > 100일 경우 명령어는 Status에 적절한 비트를 설정하고 FFn-1 에 사용되는 값을 제한합니다.유효값 = -100.0~100.0 기본값 = 0.0 |
FFSetPrevious | BOOL | FFPrevious 사용 요청. 참인 경우 FFn-1 = FFPrevious입니다. 기본값은 거짓입니다. |
HandFB | REAL | CV 핸드 피드백 값. 핸드 모드이고 HandFBFault가 거짓(양호한 상태)일 때 CV가 이 값과 동일합니다. 이 값은 일반적으로 현장에 장착된 핸드/자동 스테이션의 출력에서 얻고 핸드 모드에서 무충돌 전환을 수행하는 데 사용됩니다. HandFB < 0 또는 HandFB > 100일 경우 명령어는 Status에 적절한 비트를 설정하고 CV에 사용되는 값을 제한합니다. 유효값 = 0.0~100.0 기본값 = 0.0 |
HandFBFault | BOOL | HandFB 값 불량 상태 표시기. HandFB 값을 아날로그 입력에서 읽어오면 HandFBFault는 일반적으로 아날로그 입력 채널 상태에 의해 컨트롤됩니다. 참이면 HandFBFault는 입력 모듈에 에러가 있음을 나타내고 명령어는 Status에 적절한 비트를 설정합니다. 기본값은 거짓(올바른 상태)입니다. |
WindupHIn | BOOL | 와인드업 상한 요청. 참인 경우 CV가 양의 방향으로 통합되지 않습니다. 이 신호는 일반적으로 보조 루프의 WindupHOut 출력에서 얻습니다. 기본값은 거짓입니다. |
WindupLIn | BOOL | 와인드업 하한 요청. 참인 경우 CV가 음의 방향으로 통합되지 않습니다. 이 신호는 일반적으로 보조 루프의 WindupHOut 출력에서 얻습니다. 기본값은 거짓입니다. |
ControlAction | BOOL | 제어 조치 요청. 참으로 설정하면 에러를 E = PV - SP로 계산하고 거짓으로 해제하면 에러를 E = SP - PV로 계산합니다. 기본값은 거짓입니다. |
DependIndepend | BOOL | 종속/독립 제어 요청. 참이면 종속 PID 수식 유형을 사용하고 거짓이면 독립 수식 유형을 사용합니다. 기본값은 거짓입니다. |
PGain | REAL | 비례 게인. 독립형 PID 알고리즘을 선택한 경우 이 값에 단위 없는 비례 게인을 입력합니다. 종속형 PID 알고리즘을 선택한 경우 이 값에 단위 없는 컨트롤러 게인을 입력합니다. 비례 제어를 비활성화하려면 0을 입력합니다. PGain < 0일 경우 명령어는 Status에 적절한 비트를 설정하고 PGain = 0 값을 사용합니다. 유효값 = 0.0 ~ 최대 양의 부동 소수점 수 기본값 = 0.0 |
IGain | REAL | 적분 게인. 독립형 PID 알고리즘을 선택한 경우 이 값에 1/분 단위의 적분 게인을 입력합니다. 종속형 PID 알고리즘을 선택한 경우 이 값에 분/반복 단위의 적분 시간 상수를 입력합니다. 적분 제어를 비활성화하려면 0을 입력합니다. IGain < 0인 경우 명령어는 Status에 적절한 비트를 설정하고 IGain = 0 값을 사용합니다. 유효값 = 0.0 ~ 최대 양의 부동 소수점 수 기본값 = 0.0 |
DGain | REAL | 미분 게인. 독립형 PID 알고리즘을 선택한 경우 이 값에 분 단위의 미분 게인을 입력합니다. 종속형 PID 알고리즘을 사용하는 경우 이 값에 분 단위의 미분 시간 상수를 입력합니다. 미분 제어를 비활성화하려면 0을 입력합니다. DGain < 0인 경우 명령어는 Status에 적절한 비트를 설정하고 DGain = 0 값을 사용합니다. 유효값 = 0.0 ~ 최대 양의 부동 소수점 수 기본값 = 0.0 |
PVEProportional | BOOL | 비례 PV 제어 요청. 참이면 프로세스 변수의 변화율(PVPercent)을 사용하여 비례 항(DeltaPTerm)을 계산합니다. 거짓인 경우 에러 변화율(EPercent)을 사용합니다. 기본값은 거짓입니다. |
PVEDerivative | BOOL | 미분 PV 제어 요청. 참이면 프로세스 변수의 변화율(PVPercent)을 사용하여 미분 항(DeltaDTerm)을 계산합니다. 거짓인 경우 에러 변화율(EPercent)을 사용합니다. 기본값은 참입니다. |
DSmoothing | BOOL | 미분 평활화 요청. 참이면 미분 항의 변화가 평활화됩니다. 미분 평활화를 사용하면 노이즈가 심한 PV 신호로 인해서 생기는 출력 "지터"는 감소하지만 동시에 큰 값의 미분 게인을 사용하는 효과가 제한됩니다. 기본값은 거짓입니다. |
PVTracking | BOOL | SP가 PV를 추적하도록 요청. 수동 모드일 때 SP가 PV를 추적하도록 하려면 참으로 설정합니다. 캐스케이드/비율 또는 자동 모드일 때 무시됩니다. 기본값은 거짓입니다. |
ZCDeadband | REAL | PV 단위로 스케일링되는 0점 교차 불감대 범위. 0점 교차 불감대 범위를 정의합니다. 0점 교차 불감대 검사를 비활성화하려면 0을 입력합니다. ZCDeadband < 0일 경우 명령어는 Status에 적절한 비트를 설정하고 0점 교차 불감대 검사를 비활성화합니다. 유효값 = 0.0 ~ 최대 양의 부동 소수점 수 기본값 = 0.0 |
ZCOff | BOOL | 0점 교차 비활성화 요청. 불감대 계산에서 0점 교차를 비활성화하려면 참으로 설정합니다. 기본값은 거짓입니다. |
PVHHLimit | REAL | PV 단위로 스케일링되는 PV 상-상한 알람 제한 값. 유효값 = 모든 부동 소수점 수 기본값 = 최대 양의 부동 소수점 수 |
PVHLimit | REAL | PV 단위로 스케일링되는 PV 상한 알람 제한 값. 유효값 = 모든 부동 소수점 수 기본값 = 최대 양의 부동 소수점 수 |
PVLLimit | REAL | PV 단위로 스케일링되는 PV 하한 알람 제한 값. 유효값 = 모든 부동 소수점 수 기본값 = 최대 음의 부동 소수점 수 |
PVLLLimit | REAL | PV 단위로 스케일링되는 PV 하-하한 알람 제한 값. 유효값 = 모든 부동 소수점 수 기본값 = 최대 음의 부동 소수점 수 |
PVDeadband | REAL | PV 단위로 스케일링되는 PV 알람 제한 값 불감대 값. 불감대란 PV 경보 제한별 켜짐 및 꺼짐 값 간의 델타 값입니다. PVDeadband < 0.0일 경우 명령어는 Status에 적절한 비트를 설정하고 PVDeadband를 0으로 제한합니다. 유효값 = 0.0 ~ 최대 양의 부동 소수점 수 기본값 = 0.0 |
PVROCPosLimit | REAL | PV 양의 변화율 알람 제한 값. PV 단위/초로 스케일링되는 PV의 양의(증가) 변화에 대한 제한 값. 양의 PVROC 알람 검사를 비활성화하려면 0.0을 입력합니다. PVROCPosLimit < 0.0인 경우 명령어는 Status에 적절한 비트를 설정하고 양의 PVROC 검사를 비활성화합니다. 유효값 = 0.0 ~ 최대 양의 부동 소수점 수 기본값 = 0.0 PV/초 |
PVROCNegLimit | REAL | PV 음의 변화율 알람 제한 값. PV 단위/초로 스케일링되는 PV의 음의(감소) 변화에 대한 제한 값. 음의 PVROC 알람 검사를 사용하지 않으려면 0.0을 입력합니다. PVROCNegLimit < 0인 경우 명령어는 Status에 적절한 비트를 설정하고 음의 PVROC 검사를 비활성화합니다. 유효값 = 0.0 ~ 최대 양의 부동 소수점 수 기본값 = 0.0 |
PVROCPeriod | REAL | PV 변화율 샘플 기간. PV 변화율을 계산하는 기간(초)입니다. 0을 입력하여 PVROC 알람 확인을 비활성화합니다. PVROCPeriod < 0.0인 경우 명령어는 Status에 적절한 비트를 설정하고 양과 음의 PVROC 확인을 비활성화합니다. 유효값 = 0.0보다 모든 부동 소수점 수기본값 = 0.0초 |
DevHHLimit | REAL | PV 단위로 스케일링되는 편차 상-상한 알람 제한 값. 편차는 프로세스 변수(PV)와 설정값(SP) 간의 차이입니다. 편차 알람은 프로세스 변수와 설정값 간에 불일치가 발생하는 경우 작업자에게 알려줍니다. DevHHLimit < 0.0인 경우, 명령어는 Status에 적절한 비트를 설정하고 DevHHLimit = 0.0을 설정합니다. 유효값 = 0.0 ~ 최대 양의 부동 소수점 수 기본값 = 최대 양의 부동 소수점 수 |
DevHLimit | REAL | PV 단위로 스케일링되는 편차 상한 알람 제한 값. 편차는 프로세스 변수(PV)와 설정값(SP) 간의 차이입니다. 편차 알람은 프로세스 변수와 설정값 간에 불일치가 발생하는 경우 작업자에게 알려줍니다. DevHLimit < 0.0인 경우, 명령어는 Status에 적절한 비트를 설정하고 DevHLimit = 0.0을 설정합니다. 유효값 = 0.0 ~ 최대 양의 부동 소수점 수 기본값 = 최대 양의 부동 소수점 수 |
DevLLimit | REAL | PV 단위로 스케일링되는 편차 하한 알람 제한 값. 편차는 프로세스 변수(PV)와 설정값(SP) 간의 차이입니다. 편차 알람은 프로세스 변수와 설정값 간에 불일치가 발생하는 경우 작업자에게 알려줍니다. DevLLimit < 0.0인 경우, 명령어는 Status에 적절한 비트를 설정하고 DevLLimit = 0.0을 설정합니다. 유효값 = 0.0 ~ 최대 양의 부동 소수점 수 기본값 = 최대 양의 부동 소수점 수 |
DevLLLimit | REAL | PV 단위로 스케일링되는 편차 하-하한 알람 제한 값. 편차는 프로세스 변수(PV)와 설정값(SP) 간의 차이입니다. 편차 알람은 프로세스 변수와 설정값 간에 불일치가 발생하는 경우 작업자에게 알려줍니다. DevLLLimit < 0.0인 경우, 명령어는 Status에 적절한 비트를 설정하고 DevLLLimit = 0.0을 설정합니다. 유효값 = 0.0 ~ 최대 양의 부동 소수점 수 기본값 = 최대 양의 부동 소수점 수 |
DevDeadband | REAL | PV 단위로 스케일링되는 편차 알람 제한의 불감대 값. 불감대란 편차 알람 제한별 켜짐 및 꺼짐 값 간의 델타 값입니다. DevDeadband < 0.0인 경우, 명령어는 Status에 적절한 비트를 설정하고 DevDeadband = 0.0을 설정합니다. 유효값 = 0.0 ~ 최대 양의 부동 소수점 수 기본값 = 0.0 |
AllowCasRat | BOOL | 캐스케이드/비율 모드를 사용하도록 허용합니다. ProgCasRatReq 또는 OperCasRatReq를 사용하여 캐스케이드/비율 모드를 선택할 수 있도록 하려면 참으로 설정합니다. 기본값은 거짓입니다. |
ManualAfterInit | BOOL | 초기화 후 수동 모드 요청. 참인 경우 현재 모드가 오버라이드 또는 핸드가 아니라면 CVInitializing이 참일 때 명령어가 수동 모드로 됩니다. ManualAfterInit이 거짓인 경우 별도로 요청하지 않는 한 명령어의 모드는 변경되지 않습니다. 기본값은 거짓입니다. |
ProgProgReq | BOOL | 프로그램 프로그래밍 요청. 프로그램 제어를 요청하려면 사용자 프로그램을 통해 참으로 설정합니다. ProgOperReq가 참인 경우 무시됩니다. 이 값을 참으로 ProgOperReq 값을 거짓으로 유지하면 명령어가 프로그램 제어로 잠깁니다. ProgValueReset이 참인 경우 명령어를 실행할 때마다 이 입력이 거짓으로 해제됩니다. 기본값은 거짓입니다. |
ProgOperReq | BOOL | 프로그램 작업자 요청. 작업자 제어를 요청하려면 사용자 프로그램을 통해 참으로 설정합니다. 이 값을 참으로 유지하면 명령어가 작업자 제어로 잠깁니다. ProgValueReset이 참인 경우 명령어를 실행할 때마다 이 입력이 거짓으로 해제됩니다. 기본값은 거짓입니다. |
ProgCasRatReq | BOOL | 프로그램 캐스케이드/비율 모드 요청. 캐스케이드/비율 모드를 요청하려면 사용자 프로그램을 통해 참으로 설정합니다. ProgValueReset이 참인 경우 명령어를 실행할 때마다 이 입력이 거짓으로 해제됩니다. 기본값은 거짓입니다. |
ProgAutoReq | BOOL | 프로그램 자동 모드 요청. 자동 모드를 요청하려면 사용자 프로그램을 통해 참으로 설정합니다. ProgValueReset이 참인 경우 명령어를 실행할 때마다 이 입력이 거짓으로 해제됩니다. 기본값은 거짓입니다. |
ProgManualReq | BOOL | 프로그램 수동 모드 요청. 수동 모드를 요청하려면 사용자 프로그램을 통해 참으로 설정합니다. ProgValueReset이 참이면 명령어를 실행할 때마다 이 입력이 거짓으로 해제됩니다. 기본값은 거짓입니다. |
ProgOverrideReq | BOOL | 프로그램 오버라이드 모드 요청. 오버라이드 모드를 요청하려면 사용자 프로그램을 통해 참으로 설정합니다. ProgValueReset이 참인 경우 명령어를 실행할 때마다 이 입력이 거짓으로 해제됩니다. 기본값은 거짓입니다. |
ProgHandReq | BOOL | 프로그램 핸드 모드 요청. 핸드 모드를 요청하려면 사용자 프로그램을 통해 참으로 설정합니다. 이 값은 보통 핸드/자동 스테이션에서 전송된 디지털 입력으로 판독됩니다. ProgValueReset이 참인 경우 명령어를 실행할 때마다 이 입력이 거짓으로 해제됩니다. 기본값은 거짓입니다. |
OperProgReq | BOOL | 작업자 프로그램 요청. 프로그램 제어를 요청하려면 작업자 인터페이스에서 참으로 설정합니다. 명령어를 실행할 때마다 이 입력이 거짓으로 해제됩니다. 기본값은 거짓입니다. |
OperOperReq | BOOL | 작업자 작업자 요청. 작업자 제어를 요청하려면 작업자 인터페이스에서 참으로 설정합니다. 명령어를 실행할 때마다 이 입력이 거짓으로 해제됩니다. 기본값은 거짓입니다. |
OperCasRatReq | BOOL | 작업자 캐스케이드/비율 모드 요청. 캐스케이드/비율 모드를 요청하려면 작업자 인터페이스에서 참으로 설정합니다. 명령어를 실행할 때마다 이 입력이 거짓으로 해제됩니다. 기본값은 거짓입니다. |
OperAutoReq | BOOL | 작업자 자동 모드 요청. 자동 모드를 요청하려면 작업자 인터페이스에서 참으로 설정합니다. 명령어를 실행할 때마다 이 입력이 거짓으로 해제됩니다. 기본값은 거짓입니다. |
OperManualReq | BOOL | 작업자 수동 모드 요청. 수동 모드를 요청하려면 작업자 인터페이스에서 참으로 설정합니다. 명령어를 실행할 때마다 이 입력이 거짓으로 해제됩니다. 기본값은 거짓입니다. |
ProgValueReset | BOOL | 프로그램 제어 값 리셋. 참인 경우 명령어를 실행할 때마다 명령어에 의해 모든 프로그램 요청 입력이 거짓으로 해제됩니다. 참이고 작업자 제어인 경우 명령어가 SPProgram = SP 및 CVProgram = CV를 설정합니다. 기본값은 거짓입니다. |
TimingMode | DINT | 타이밍 실행 모드 선택. 0 = 주기 모드 1 = 오버 샘플링 모드 2 = 실시간 샘플링 모드 타이밍 모드에 대한 자세한 내용은 함수 블록 속성을 참조하세요. 유효값 = 0~2 기본값 = 0 |
OversampleDT | REAL | 오버 샘플링 모드에 대한 실행 시간. 값 = 0~4194.303초 기본값 = 0 |
RTSTime | DINT | 실시간 샘플링 모드에 대한 모듈 업데이트 기간 유효값 = 1~32,767ms 기본값 = 1 |
RTSTimeStamp | DINT | 실시간 샘플링 모드에 대한 모듈 타임 스탬프 값. 유효값 = 0~32,767ms 기본값 = 0 |
AtuneAcquire | BOOL | PIDE AtuneData 가져오기 요청. 기본값은 거짓입니다. |
AtuneStart | BOOL | 오토 튜닝 시작 요청. 기본값은 거짓입니다. |
AtuneUseGains | BOOL | 오토 튜닝 게인 사용 요청. 기본값은 거짓입니다. |
AtuneAbort | BOOL | 오토 튜닝 중단 요청. 기본값은 거짓입니다. |
AtuneUnacquire | BOOL | PIDE AtuneData 지우기 요청. 기본값은 거짓입니다. |
출력 매개 변수 | 데이터 유형 | 설명 |
|---|---|---|
EnableOut | BOOL | 명령어의 활성화 여부를 나타냅니다. CVEU가 오버플로되는 경우 거짓으로 해제됩니다. |
CVEU | REAL | 스케일링된 제어 변수 출력. CVEUMax 및 CVEUMin을 사용하여 스케일링되고, 여기에서 CVEUMax는 100퍼센트, CVEUMin은 0퍼센트에 해당합니다. 이 출력으로 아날로그 출력 모듈 또는 2차 루프가 제어됩니다. CVEU = (CV x CVEUSpan / 100) + CVEUMin CVEU 범위 계산: CVEUSpan = (CVEUMax - CVEUMin) |
CV | REAL | 제어 변수 출력. 0~100퍼센트로 표시되는 값입니다. 자동이나 캐스케이드/비율 모드에서, 아니면 CVManLimiting이 참인 경우 수동 모드에서 CVHLimit 및 CVLLimit에 의해 CV가 제한됩니다. 다른 경우 이 값은 0 ~ 100퍼센트로 제한됩니다. |
CVInitializing | BOOL | 초기화 모드 표시기. 명령어 최초 스캔 중 및 CVHealth가 참에서 거짓으로 전환(불량 상태 -> 양호한 상태)할 때 CVInitReq가 참이면 CVInitializing이 참으로 설정됩니다. 명령어가 초기화된 후 CVInitReq가 거짓인 경우 CVInitializing이 거짓으로 해제됩니다. |
CVHAlarm | BOOL | CV 상한 알람 표시기. 계산된 CV 값이 100 또는 CVHLimit보다 큰 경우 참으로 설정됩니다. |
CVLAlarm | BOOL | CV 하한 알람 표시기. 계산된 CV 값이 0 또는 CVLLimit보다 작은 경우 참으로 설정됩니다. |
CVROCAlarm | BOOL | CV 변화율 알람 표시기. 계산된 CV 변화율 값이 CVROCLimit를 초과하는 경우 참으로 설정됩니다. |
SP | REAL | 현재 설정값. SP 값은 자동 또는 캐스케이드/비율 모드일 때 CV 제어에 사용됩니다. |
SPPercent | REAL | PV의 범위 퍼센트로 표시되는 SP 값. SPPercent = ((SP - PVEUMin) x 100) / PVSpan PV 범위 계산: PVSpan = (PVEUMax - PVEUMin) |
SPHAlarm | BOOL | SP 상한 알람 표시기. SP > SPHLimit인 경우 참으로 설정됩니다. |
SPLAlarm | BOOL | SP 하한 알람 표시기. SP ≤ SPLLimit인 경우 참으로 설정됩니다. |
PVPercent | REAL | 범위 퍼센트로 표시된 PV. PVPercent = ((PV- PVEUMin) x 100) / PVSpan PV 범위 계산: PVSpan = (PVEUMax - PVEUMin) |
E | REAL | 프로세스 에러. PV 단위로 스케일링되는 SP와 PV의 차이. |
EPercent | REAL | 범위 퍼센트로 표시된 에러. |
InitPrimary | BOOL | 1차 루프 명령을 초기화합니다. 캐스케이드/비율 모드가 아니거나 CVInitializing이 참일 때 참으로 설정됩니다. 이 신호는 일반적으로 기본 PID 루프의 CVInitReq 입력에서 사용됩니다. |
WindupHOut | BOOL | 와인드업 상한 표시기. CV 상한/하한(제어 조치에 따라 다름) 또는 SP 상한에 도달한 경우 참으로 설정됩니다. 이 신호는 일반적으로 기본 루프에서 CV 출력의 와인드업을 방지하기 위해 WindupHIn 입력에서 사용됩니다. |
WindupLOut | BOOL | 와인드업 하한 표시기. CV 상한/하한(제어 조치에 따라 다름) 또는 SP 하한에 도달한 경우 참으로 설정됩니다. 이 신호는 일반적으로 기본 루프에서 CV 출력의 와인드업을 방지하기 위해 WindupLIn 입력에서 사용됩니다. |
Ratio | REAL | 현재 비율 승수. |
RatioHAlarm | BOOL | 비율 상한 알람 표시기. Ratio > RatioHLimit일 때 참으로 설정됩니다. |
RatioLAlarm | BOOL | 비율 하한 알람 표시기. Ratio < RatioLLimit일 때 참으로 설정됩니다. |
ZCDeadbandOn | BOOL | 0점 교차 불감대 표시기. 참인 경우 CV 값이 변경되지 않습니다. ZCOff가 참이면 | E |가 ZCDeadband 범위 이내일 때 ZCDeadbandOn이 참으로 설정됩니다. ZCOff가 거짓이면 | E |가 0점을 교차하고 ZCDeadband 범위 내에 계속 있을 때 ZCDeadbandOn이 참으로 설정됩니다. | E |가 불감대 범위를 벗어나거나 ZCDeadband = 0일 때 ZCDeadbandOn이 거짓으로 해제됩니다. |
PVHHAlarm | BOOL | PV 상-상한 알람 표시기. PV PVHHLimit인 경우 참으로 설정됩니다. PV < (PVHHLimit - PVDeadband)일 경우 거짓으로 해제됩니다. |
PVHAlarm | BOOL | PV 높음 경보 표시기. PV PVHLimit인 경우 참으로 설정됩니다. PV < (PVHLimit - PVDeadband)일 경우 거짓으로 해제됩니다. |
PVLAlarm | BOOL | PV 낮음 경보 표시기. PV PVLLimit인 경우 참으로 설정됩니다. PV > (PVLLimit + PVDeadband)일 경우 거짓으로 해제됩니다. |
PVLLAlarm | BOOL | PV 하-하한 알람 표시기. PV PVLLLimit인 경우 참으로 설정됩니다. PV > (PVLLLimit + PVDeadband)일 경우 거짓으로 해제됩니다. |
PVROCPosAlarm | BOOL | PV 양의 변화율 알람 표시기. 계산된 PV 변화율 PVROCPosLimit인 경우 참으로 설정됩니다. |
PVROCNegAlarm | BOOL | PV 음의 변화율 알람 표시기. 계산된 PV 변화율 (PVROCNegLimit x -1)인 경우 참으로 설정됩니다. |
DevHHAlarm | BOOL | 편차 상-상한 알람 표시기. 다음의 경우 참으로 설정됨: PV (SP + DevHHLimit). 다음의 경우 거짓으로 해제됨:PV < (SP + DevHHLimit - DevDeadband) |
DevHAlarm | BOOL | 편차 상한 알람 표시기. 다음의 경우 참으로 설정됨: PV (SP + DevHLimit). 다음의 경우 거짓으로 해제됨:PV < (SP + DevHLimit - DevDeadband) |
DevLAlarm | BOOL | 편차 한한 알람 표시기. 다음의 경우 참으로 설정됨: PV (SP - DevLLimit). 다음의 경우 거짓으로 해제됨:PV > (SP - DevLLimit + DevDeadband) |
DevLLAlarm | BOOL | 편차 하-하한 알람 표시기. 다음의 경우 참으로 설정됨: PV (SP - DevLLLimit). 다음의 경우 거짓으로 해제됨:PV > (SP - DevLLLimit + DevDeadband) |
ProgOper | BOOL | 프로그램/작업자 제어 표시기. 프로그램 제어일 때 참으로 설정됩니다. 작업자 제어인 경우 거짓으로 해제됩니다. |
CasRat | BOOL | 캐스케이드/비율 모드 표시기. 캐스케이드/비율 모드일 때 참으로 설정됩니다. |
Auto | BOOL | 자동 모드 표시기. 자동 모드일 때 참으로 설정됩니다. |
Manual | BOOL | 수동 모드 표시기. 수동 모드일 때 참으로 설정됩니다. |
Override | BOOL | 오버라이드 모드 표시기. 오버라이드 모드일 때 참으로 설정됩니다. |
Hand | BOOL | 핸드 모드 표시기. 핸드 모드일 때 참으로 설정됩니다. |
DeltaT | REAL | 업데이트 간 경과 시간. 컨트롤 알고리즘에서 프로세스 출력 계산에 사용되는 경과 시간(초)입니다. |
AtuneReady | BOOL | PIDE 명령어에서 지정된 AtuneData를 가져왔으면 참으로 설정됩니다. |
AtuneOn | BOOL | 오토 튜닝이 초기화되었으면 참으로 설정됩니다. |
AtuneDone | BOOL | 오토 튜닝이 완료되었을 때 참으로 설정됩니다. |
AtuneAborted | BOOL | 사용자 또는 오토 튜닝 작업 중에 발생한 에러로 인해 오토 튜닝이 중단된 경우 참으로 설정됩니다. |
AtuneBusy | BOOL | 지정된 AtuneData를 현재 다른 PIDE 명령어에서 가져가서 얻을 수 없을 때 참으로 설정됩니다. |
Status1 | DINT | 펑션 블록의 상태. |
InstructFault (Status1.0) | BOOL | 명령어에서 다음 실행 에러 중 하나가 감지됩니다. 마이너 또는 메이저 컨트롤러 에러가 아닙니다. 나머지 상태 비트를 확인하여 발생한 에러를 판단합니다. |
PVFaulted (Status1.1) | BOOL | 프로세스 변수(PV) 상태 불량. |
CVFaulted (Status1.2) | BOOL | 제어 변수(CV) 상태 불량. |
HandFBFaulted (Status1.3) | BOOL | HandFB 값 상태 불량. |
PVSpanInv (Status1.4) | BOOL | PV 범위 유효하지 않음. PVEUMax £ PVEUMin. |
SPProgInv (Status1.5) | BOOL | SPProg < SPLLimit 또는 SPProg > SPHLimit. 명령어에서 제한된 SP 값이 사용됩니다. |
SPOperInv (Status1.6) | BOOL | SPOper < SPLLimit 또는 SPOper > SPHLimit. 명령어에서 제한된 SP 값이 사용됩니다. |
SPCascadeInv (Status1.7) | BOOL | SPCascade < SPLLimit 또는 SPCascade > SPHLimit. 명령어에서 제한된 SP 값이 사용됩니다. |
SPLimitsInv (Status1.8) | BOOL | 한계값이 유효하지 않음: SPLLimit < PVEUMin, SPHLimit > PVEUMax 또는 SPHLimit < SPLLimit. SPHLimit < SPLLimit일 경우 명령어에서 SPLLimit를 사용하여 값이 제한됩니다. |
RatioProgInv (Status1.9) | BOOL | RatioProg < RatioLLimit 또는 RatioProg > RatioHLimit. 명령어에서 Ratio 값이 제한됩니다. |
RatioOperInv (Status1.10) | BOOL | RatioOper < RatioLLimit 또는 RatioOper > RatioHLimit. 명령어에서 Ratio 값이 제한됩니다. |
RatioLimitsInv (Status1.11) | BOOL | RatioLLimit < 0 또는 RatioHLimit < RatioLLimit. |
CVProgInv (Status1.12) | BOOL | CVManLimiting이 참일 때 CVProg < 0, CVProg > 100, CVProg < CVLLimit, 또는 CVProg > CVHLimit. 명령어에서 CV 값이 제한됩니다. |
CVOperInv (Status1.13) | BOOL | CVManLimiting이 참일 때 CVOper < 0, CVOper > 100, CVOper < CVLLimit, 또는 CVOper > CVHLimit. 명령어에서 CV 값이 제한됩니다. |
CVOverrideInv (Status1.14) | BOOL | CVOverride < 0 또는 CVOverride > 100. 명령어에서 CV 값이 제한됩니다. |
CVPreviousInv (Status1.15) | BOOL | 자동이나 캐스케이드/비율 모드일 때 CVPrevious < 0, CVPrevious > 100, CVPrevious < CVLLimit, 또는 CVPrevious > CVHLimit. 명령어에서 CVn-1 값이 제한됩니다. |
CVEUSpanInv (Status1.16) | BOOL | CVEU 범위 유효하지 않음. 명령어에서 다음 값을 사용함: CVEUMax = CVEUMin. |
CVLimitsInv (Status1.17) | BOOL | CVLLimit < 0, CVHLimit > 100 또는 CVHLimit < CVLLimit. CVHLimit < CVLLimit일 경우 명령어에서 CVLLimit 값을 사용하여 CV가 제한됩니다. |
CVROCLimitInv (Status1.18) | BOOL | CVROCLimit < 0. 명령어에서 ROC 제한을 비활성화합니다. |
FFInv (Status1.19) | BOOL | FF < -100 또는 FF > 100. 명령어에서 제한된 FF 값이 사용됩니다. |
FFPreviousInv (Status1.20) | BOOL | FFPrevious < - 100 또는 FFPrevious > 100. 명령어에서 제한된 FF n-1 값이 사용됩니다. |
HandFBInv (Status1.21) | BOOL | HandFB < 0 또는 HandFB > 100. 명령어에서 제한된 CV 값이 사용됩니다. |
PGainInv (Status1.22) | BOOL | PGain < 0. 명령어에서 PGain = 0 값이 사용됩니다. |
IGainInv (Status1.23) | BOOL | IGain < 0. 명령어에서 IGain = 0 값이 사용됩니다. |
DGainInv (Status1.24) | BOOL | DGain < 0. 명령어에서 DGain = 0 값이 사용됩니다. |
ZCDeadbandInv (Status1.25) | BOOL | ZCDeadband < 0. 명령어에서 0점 교차 불감대를 비활성화합니다. |
PVDeadbandInv (Status1.26) | BOOL | PVDeadband < 0. 명령어에서 PVDeadband가 0으로 제한됩니다. |
PVROCLimitsInv (Status1.27) | BOOL | PVROCPosLimit < 0, PVROCNegLimit < 0, 또는 PVROCPeriod < 0. |
DevHLLimitsInv (Status1.28) | BOOL | 편차 상한/하한이 유효하지 않음. 하-하한 < 0, 하한 < 0, 상한 < 0, 또는 상-상한 < 0. 제한이 유효하지 않은 경우 명령어에서 0이 사용됩니다. |
DevDeadbandInv (Status1.29) | BOOL | 편차 불감대 < 0. 명령어에서 DevDeadband = 0 값이 사용됩니다. |
Status2 | DINT | 펑션 블록의 타이밍 상태. |
TimingModeInv (Status2.27) | BOOL | 유효하지 않은 TimingMode 값. 타이밍 모드에 대한 자세한 내용은 함수 블록 속성을 참조하세요. |
RTSMissed (Status2.28) | BOOL | 실시간 샘플링 모드에서만 사용. 다음의 경우 참으로 설정됨: ABS | DeltaT - RTSTime | > 1 (.001 초)일 때 설정. |
RTSTimeInv (Status2.29) | BOOL | 유효하지 않은 RTSTime 값. |
RTSTimeStampInv (Status2.30) | BOOL | 유효하지 않은 RTSTimeStamp 값. |
DeltaTInv (Status2.31) | BOOL | 유효하지 않은 DeltaT 값. |
설명
PID 알고리즘은 명령어가 캐스케이드/비율 또는 자동 모드로 실행될 때 PV를 SP로 유지하기 위해 CV 출력을 조절합니다.
ControlAction이 설정되어 있는 경우 계산된 EPercent 및 PVPIDPercent 값이 제어 알고리즘에서 사용되기 전 부정 값으로 변환됩니다.
다음 표에는 명령어에서 PID 항을 계산하는 방법이 나와 있습니다.
PID 항 | 계산 방법 |
|---|---|
비례 | 비례 항 계산에 사용되는 파라미터:
비례 제어를 비활성화하려면 PGain = 0으로 설정합니다. |
적분 | 적분 항은 Error를 사용하여 계산됩니다. 적분 제어를 비활성화하려면 IGain = 0으로 설정합니다. 또한 DependIndepend가 설정되어 있을 때 PGain = 0으로 설정하면 적분 제어가 비활성화됩니다. |
미분 | 미분 항 계산에 사용되는 파라미터:
미분 제어를 비활성화하려면 DGain = 0으로 설정합니다. 또한 DependIndepend가 설정되어 있을 때 PGain = 0으로 설정하면 미분 제어가 비활성화됩니다. 미분 평활화는 DSmoothing이 설정되면 활성화되고 DSmoothing이 해제되면 비활성화됩니다. 미분 평활화를 사용하면 노이즈가 심한 PV 신호로 인해서 생기는 CV 출력 "지터"는 감소하지만 동시에 큰 값의 미분 게인을 사용하는 효과가 제한됩니다. |
CV 계산
PID 제어 알고리즘에서는 CV값을 계산하기 위해 Delta PTerm, Delta ITerm, Delta
DTerm과 이전 명령어 실행에서의 CV(예: CV
n-1
)를 합산합니다. CVsetPrevious가 설정되어 있는 경우CVn-1은 CVPrevious와 같은 값으로 설정됩니다. 이 경우 CV 값을 계산하기 전에 CV
n-1
를 지정된 값으로 사전 설정할 수 있습니다.CalculatedCV = CV
PTerm + DITerm + DDTerm
n-1
+ D
PTerm + DITerm + DDTermPIDE 알고리즘
PIDE 명령어에서는 대부분의 DCS 시스템에 사용되는 알고리즘과 비슷한 속도형 PID 알고리즘이 사용됩니다. 속도형 알고리즘의 이점:
- 순조로운 적응형 게인 변화 – 알고리즘을 초기화하지 않고 즉시 게인을 변경할 수 있습니다.
- 다중 루프 제어 스키마 – CVn-1항을 조작하는 식으로 루프 간 상호 제한을 구현할 수 있습니다.
독립 게인 형태

알고리즘 형태에서는 알고리즘의 각 항(비례, 적분 및 미분)마다 별도의 게인이 설정되어 있습니다. 게인 하나를 변경하면 그 항에만 영향을 미치고 다른 항에는 영향을 미치지 않습니다. 아래에 용어에 대한 설명이 나와 있습니다.
PIDE 항: | 설명: |
|---|---|
CV | 컨트롤 변수 |
E | 범위 퍼센트 단위 에러 |
D t | 루프가 사용하는 업데이트 시간(초) |
K p | 비례 게인 |
K I | min -1 단위인 적분 게인K I 값이 크면 적분 응답이 빨라집니다. |
K D | 분 단위인 미분 게인 |
종속 게인 형태

이 알고리즘 형태에서는 비례 게인이 컨트롤러 게인으로 변경됩니다. 컨트롤러 게인을 변경하는 식으로 세 항(비례, 적분 및 미분) 전체의 동작을 동시에 변경합니다. 아래에 용어에 대한 설명이 나와 있습니다.
PIDE 항: | 설명: |
|---|---|
CV | 컨트롤 변수 |
E | 범위 퍼센트 단위 에러 |
D t | 루프가 사용하는 업데이트 시간(초) |
K c | 컨트롤러 게인 |
T I | 반복 당 분 단위의 적분 시간 상수. 더 큰 값 T 1 은 적분 응답의 지연을 유발합니다.적분 항이 에러의 단계 변경에 대응해 비례항의 동작을 반복하기까지 T 1 분 걸립니다. |
T D | 분 단위의 미분 시간 상수 |
PIDE 항: | 설명: |
|---|---|
CV | 컨트롤 변수 |
E | 범위 퍼센트 단위 에러 |
D t | 루프가 사용하는 업데이트 시간(초) |
Kp | 비례 게인 |
K I | min -1 단위인 적분 게인K I 값이 크면 적분 응답이 빨라집니다. |
K D | 분 단위인 미분 게인 |
사용할 알고리즘 결정

위의 PIDE 수식은 PIDE 명령어에서 사용하는 알고리즘의 대표적인 예입니다. PVEProportional 및 PVEDerivative 매개 변수를 조작하여 비례 및 미분 항에 에러 값의 변화로 PV 변화(범위 퍼센트)를 대체할 수 있습니다. 기본적으로 PIDE 명령어에서는 비례 항의 경우 에러의 변화, 미분 항의 경우 PV 변화가 사용됩니다. 이러면 설정값을 변경할 때 대규모의 미분 스파이크가 제거됩니다.
다음 수식을 사용하여 서로 다른 PIDE 알고리즘 유형 간에 사용되는 게인을 변환할 수 있습니다.

알고리즘마다 해당하는 게인을 사용하여 동일한 제어를 제공합니다. 나머지 항에는 영향을 미치지 않고 각각의 게인을 조작할 수 있으므로 독립형 게인을 선호하는 사람들이 있습니다. 한편, 다른 사람들은 적어도 어느 정도까지는 컨트롤러 게인만을 변경함으로써 게인마다 개별적으로 변경하지 않고 PID 루프의 활성도 전체를 변경할 수 있다는 점에서 종속형 게인을 선호합니다.
PIDE 명령어 모니터링
PIDE 명령어에서 사용할 수 있는 작업자 면판이 있습니다.
PIDE 명령어 오토 튜닝
Logix Designer
Logix Designer
응용 프로그램 PIDE 오토 튜닝 도구에서는 PIDE 명령어에 들어가 있는 개방 루프 오토 튜닝 도구를 제공합니다. PanelView
터미널이나 다른 작업자 인터페이스 장치, 그리고 Logix Designer
응용 프로그램에서 자동 튜닝을 수행할 수 있습니다. PIDE 블록에는 오토 튜닝 태그(PIDE_AUTOTUNE 유형)가 포함되어 있으며, 이러한 태그를 오토 튜닝할 PIDE 블록에서 지정합니다.PIDE 오토 튜닝 도구는 응용 프로그램과 함께 설치되지만 활성화 키가 있어야만 사용할 수 있습니다. 오토 튜닝 도구는 펑션 블록 프로그래밍에서만 지원되고 래더 다이어그램 또는 스트럭쳐드 텍스트 프로그래밍에서는 사용할 수 없습니다.
오토 튜닝 탭에서 PIDE 블록에 해당하는 오토 튜닝 태그를 지정 및 구성하십시오.
연산 상태 플래그에 영향
아니요
주 폴트/부 폴트
이 명령어에만 해당되는 것은 없습니다. 피연산자 관련 폴트에 대해서는 공통 속성 항목을 참조하십시오.
실행
펑션 블록
조건/상태 | 수행한 작업 |
|---|---|
사전 스캔 | EnableIn 및 EnableOut 비트가 거짓으로 해제됩니다. |
Tag.EnableIn이 거짓임 | EnableIn 및 EnableOut 비트가 거짓으로 해제됩니다. |
Tag.EnableIn이 참임 | EnableIn 및 EnableOut 비트가 참으로 설정됩니다. 명령어가 실행됩니다. |
명령어 최초 실행 | N/A |
명령어 최초 스캔 | CVFault와 CVEUSpanlnv가 설정되면 본 설명서의 처리 폴트를 참고하십시오. CVFault 및 CVEUSpanlnv가 해제된 경우:
|
사후 스캔 | EnableIn 및 EnableOut 비트가 거짓으로 해제됩니다. |
구조화된 텍스트
조건/상태 | 수행한 작업 |
사전 스캔 | 펑션 블록 표의 사전 스캔을 참조하십시오. |
정상 실행 | 펑션 블록 표에서 Tag.EnableIn이 참임을 참조하십시오. |
사후 스캔 | 펑션 블록 표에서 사후 스캔을 참조하십시오. |
CVInitReq가 설정되어 있는 경우, 명령어 최초 스캔 동안 또는 CVFault 해제 전환으로 (불량 상태 -> 올바른 상태) 설정된 경우 명령어에서 CVEU 및 CV 출력이 CVInitValue 값으로 초기화됩니다. 타이밍 모드가 오버 샘플링이 아니고 EnableIn이 해제됨에서 설정됨으로 전환된 경우 명령어에서는 CVEU 및 CV 값이 초기화됩니다. 초기화가 완성되고 CVInitReq가 해제될 때 CVInitialization이 해제됩니다.
CVInitValue는 보통 아날로그 출력의 리드백 값에서 유래합니다. CVInitReq 값은 보통 CVEU로 제어되는 아날로그 출력의 "In Hold" 상태 비트에서 유래합니다. 시작 시 출력 신호에서 나온 범프를 현장 장치로 전송되는 것을 피하기 위한 초기화 절차가 수행됩니다.
캐스케이딩 PID 루프를 사용하는 경우 2차 루프가 초기화되거나 2차 루프가 캐스케이드/비율 모드를 나갈 때 1차 PID 루프를 초기화할 수 있습니다. 이 경우 InitPrimary 출력의 상태와 2차 루프의 SP 출력을 1차 루프의 CVInitReq 입력 및 CVInitValue 입력으로 이동합니다.
CVFault 또는 CVEUSpanInv가 설정되어 있는 경우 명령어가 초기화되지 않고 CVEU 및 CV 값이 업데이트되지 않습니다.
예
예 1
PIDE 명령어를 구현하는 가장 쉬운 방법은 주기 태스크 프로그램으로 펑션 블록 루틴을 작성하는 것입니다. PIDE 명령어의 기본 타이밍 모드는 주기적입니다. PIDE 명령어가 주기 태스크 및 주기 타이밍 모드에서 사용되는 경우 명령어에서 자동으로 주기 태스크의 업데이트 속도를 해당 DeltaT 업데이트 시간으로 사용합니다. 이 경우 프로세스 변수 아날로그 입력을 PIDE 명령어의 PV 매개 변수에 연결하고 PIDE 명령어의 CVEU 출력을 컨트롤된 변수 아날로그 출력에 연결하기만 하면 됩니다.
또는 아날로그 입력의 폴트 표시기(사용할 수 있는 경우)를 PIDE 명령어의 PVFault 매개 변수에 연결할 수도 있습니다. 이러면 아날로그 입력에 폴트가 있을 때 PIDE가 수동 모드로 강제 전환되고 PV 신호를 사용할 수 없는 경우에 PIDE CVEU 출력의 와인드업 또는 와인드다운이 중지됩니다.
펑션 블록

구조화된 텍스트
PIDE_01.PV := Local:1:I.Ch0Data;
PIDE_01.PVFault := Local:1:I.Ch0Fault;
PIDE(PIDE_01);
Local:2:)O.Ch0Data :=PIDE_01.CVEU;
예 2
캐스케이드 컨트롤은 제어되는 변수에 외부에서 기인한 문제가 자주 발생하여 결국 제어하려는 프로세스 변수에 문제를 일으키는 경우에 유용합니다. 예를 들어 탱크 주변의 히팅 재킷으로 공급되는 증기량을 변화시켜서 탱크 내 액체의 온도를 컨트롤하려는 경우를 생각해 보십시오. 업스트림 프로세스로 인해 스팀 흐름이 갑자기 떨어지면 탱크의 액체 온도가 결국 떨어지고 PIDE 명령어는 스팀 밸브를 열어 온도 강하를 보상합니다.
이 예에서 캐스케이드 루프는 탱크 내 액체 온도가 떨어지기 전에 스팀 흐름이 저하될 때 스팀 밸브를 여는 식으로 향상된 컨트롤 기능을 제공합니다. 캐스케이드 루프를 구현하려면 PIDE 명령어를 사용하여 스팀 흐름 송신기의 프로세스 변수 신호를 기반으로 스팀 밸브 열기를 컨트롤합니다. 이는 캐스케이딩 쌍의 보조 루프입니다. 다른 PIDE 명령어(1차 루프)에서는 액체 온도를 프로세스 변수로 사용하고 해당 CV 출력을 2차 루프의 설정값으로 전송합니다. 이런 식으로 1차 온도 루프는 2차 증기 흐름 루프로부터 특정 증기 흐름을 요청합니다. 증기 흐름 루프는 이어서 액체 온도를 항온으로 유지하기 위해 온도 루프에서 요청된 증기량을 제공해야 합니다.
펑션 블록

구조화된 텍스트
PrimaryLoop.PV := Local:1:I.CH0Data;
PrimaryLoop.CVInitReq := SecondaryLoop.InitPrimary;
PrimaryLoop.CVInitValue := SecondaryLoop.SP;
PrimaryLoop.WindupHIn := SecondaryLoop.WindupHOut;
PrimaryLoop.WindupLIn := SecondaryLoop.WindupLOut;
PIDE(PrimaryLoop);
SecondaryLoop.PV := Local:1:I.Ch1Data;
SecondaryLoop.SPCascade := PrimaryLoop.CVEU;
PIDE(SecondaryLoop);
Local:2:O.Ch0Data:= SecondaryLoop.CVEU;
캐스케이딘 루프 쌍이 올바르게 작동할 경우 2차 루프의 프로세스 응답 속도가 1차 루프보다 빨라야 합니다. 이는 업셋이 1차 루프 프로세스에 영향을 미치기 전에 2차 루프의 프로세스가 모든 업셋을 보상할 수 있어야 하기 때문입니다. 이 예에서 증기 흐름이 줄어들 경우 액체 온도에 영향을 미치기 전에 2차 컨트롤러가 작동해 증기 흐름을 증가하게 할 수 있어야 합니다.
계단식 PIDE 명령어 쌍을 설정하려면 2차 루프에서
AllowCasRat
입력 파라미터를 설정합니다. 이렇게 하면 2차 루프를 캐스케이드/비율 모드로 배치할 수 있습니다. 그런 다음 1차 루프의 CVEU
를 2차 루프의 SPCascade
파라미터에 연결합니다. 2차 루프가 캐스케이드/비율 모드로 배치되면 SPCascade
값은 2차 루프의 SP로 사용됩니다. 1차 루프의 CVEU 엔지니어링 단위 범위는 2차 루프의 PV 엔지니어링 단위 범위와 일치해야 합니다. 그러면 1차 루프에서는 CV의 0-100% 값을 2차 루프의 설정값에 사용되는 일치하는 엔지니어링 단위로 조정할 수 있습니다.PIDE 명령어는 계단식 제어를 보다 효과적으로 지원하기 위한 몇 가지 기능을 지원합니다. 2차 루프의
InitPrimary
출력을 1차 루프의 CVInitReq
입력에 연결하고 2차 루프의 SP 출력을 1차 루프의 CVInitValue
입력에 연결합니다. 이렇게 하면 2차 루프에서 캐스케이드/비율 모드가 종료될 때 1차 루프의 CVEU 값이 2차 루프의 SP와 같도록 설정됩니다. 이렇게 하면 2차 루프를 다시 캐스케이드/비율 모드로 배치할 때 무충돌 전환을 구현할 수 있습니다. 또한 2차 루프의 WindupHOut
및 WindupLOut 출력을 1차 루프의 WindupHIn
및 WindupLIn
입력에 연결합니다. 이렇게 하면 2차 루프가 SP 제한 또는 CV 제한에 도달하고 와인드업 발생 시 1차 루프에서 와인드업을 제거한 경우 1차 루프가 CVEU 값을 적절하게 늘리거나 줄이는 것을 중단합니다.예 3
일반적으로 비율 컨트롤은 설정 비율의 유체를 다른 유체에 추가하는 데 사용됩니다. 예를 들어 두 반응물(A와 B)을 일정 비율로 탱크에 추가하려는 경우 반응물 A의 흐름은 업스트림 프로세스 업셋으로 인해 변경될 수 있으며 비율 컨트롤러를 사용하여 반응물 B의 추가 비율을 자동으로 조정할 수 있습니다. 이 예에서 반응물 A는 PIDE 명령어에 의해 컨트롤되지 않기 때문에 종종 “컨트롤되지 않은” 흐름이라고 합니다. 반응물 B는 “제어 가능” 플로라고 합니다.
PIDE 명령어를 사용하여 비율 컨트롤을 수행하려면
AllowCasRat
및 UseRatio
입력 매개 변수를 설정합니다. 컨트롤되지 않은 흐름을 SPCascade
입력 매개 변수에 연결합니다. 캐스케이드/비율 모드에서 컨트롤되지 않은 흐름에는 RatioOper
(오퍼레이터 컨트롤인 경우) 또는 RatioProg(프로그램 컨트롤인 경우)가 곱해져 그 결과 값이 PIDE 명령어에서 설정값으로 사용됩니다.펑션 블록

구조화된 텍스트
PIDE_01.PV := ControlledFlow;
PIDE_01.SPCascade := UncontrolledFlow;
PIDE(PIDE_01);
Local:2:O.Ch0Data := PIDE_01.CVEU;
프로그램 제어 및 작업자 제어 간 전환
PIDE 명령어는 사용자 프로그램 또는 작업자 인터페이스에서 제어할 수 있습니다. 제어 모드는 언제든지 변경할 수 있습니다. 프로그램 및 작업자 제어는 동일한 ProgOper 출력을 사용합니다. ProgOper으로 설정하면 프로그램에 의해 제어되고 ProgOper을 해제하면 작업자에 의해 제어됩니다.
다음 다이어그램에서는 PIDE 명령어가 프로그램 컨트롤과 오퍼레이터 컨트롤 간에 변경하는 방법을 보여줍니다.

(1) ProgOperReq가 설정된 경우 명령어는 작업자 제어 모드로 유지됩니다.
작동 모드
PIDE 명령어는 다음 PID 모드를 지원합니다.
PID 작동 모드 | 설명 |
|---|---|
캐스케이드/비율 | 캐스케이드/비율 모드에서는 이 명령어가 CV의 변화를 계산합니다. 이 명령어는 CV를 조절하여 SPCascade 값이나 SPCascade 값에 Ratio 값을 곱한 값으로 PV를 유지합니다. SPCascade는 캐스케이드 컨트롤을 위한 기본 PID 루프의 CVEU 또는 비율 제어 루프의 "컨트롤되지 않은" 흐름 중 하나에서 비롯됩니다. 다음과 같이 OperCasRatReq 또는 ProgCasRatReq를 사용하여 캐스케이드/비율 모드를 선택합니다. OperCasRatReq를 설정하여 캐스케이드/비율 모드를 요청합니다. ProgOper, ProgOverrideReq, ProgHandReq, OperAutoReq 또는 OperManualReq가 설정되어 있거나 AllowCasRat가 해제되어 있으면 요청이 무시됩니다. ProgCasRatReq를 설정하여 캐스케이드/비율 모드를 요청합니다. ProgOper 또는 AllowCasRat가 해제되어 있거나 ProgOverrideReq, ProgHandReq, ProgAutoReq 또는 ProgManualReq가 설정되어 있으면 요청이 무시됩니다. |
자동 | 자동 모드에서는 이 명령어가 CV의 변화를 계산합니다. 이 명령어는 CV를 조절하여 SP 값으로 PV를 유지합니다. 프로그램 제어인 경우 SP = SPProg이고 작업자 제어인 경우 P = SPOper입니다. 다음과 같이 OperAutoReq 또는 ProgAutoReq를 사용하여 자동 모드를 선택합니다. OperAutoReq를 설정하여 자동 모드를 요청합니다. ProgOper, ProgOverrideReq, ProgHandReq 또는 OperManualReq가 설정되어 있으면 요청이 무시됩니다. ProgAutoReq를 설정하여 자동 모드를 요청합니다. ProgOper가 해제되어 있거나 ProgOverrideReq, ProgHandReq 또는 ProgManualReq가 설정되어 있으면 요청이 무시됩니다. |
수동 | 수동 모드에서 이 명령어는 CV의 변화를 계산하지 않습니다. CV의 값은 제어에서 결정됩니다. 프로그램 제어인 경우 CV = CVProg이고 작업자 제어인 경우 CV = CVOper입니다. 다음과 같이 OperManualReq 또는 ProgManualReq를 사용하여 수동 모드를 선택합니다. OperManualReq를 설정하여 수동 모드를 요청합니다. ProgOper, ProgOverrideReq 또는 ProgHandReq가 설정되어 있으면 요청이 무시됩니다. ProgManualReq를 설정하여 수동 모드를 요청합니다. ProgOper를 해제되어 있거나 ProgOverrideReq 또는 ProgHandReq가 설정되어 있으면 요청이 무시됩니다. |
오버라이드 | 오버라이드 모드에 있는 동안 명령은 CV의 변경을 계산하지 않습니다. 컨트롤 모드에 관계없이 CV = CVOverride입니다. 일반적으로 오버라이드 모드는 PID 루프에 대해 “안전 상태”를 설정하는 데 사용됩니다. 다음과 같이 ProgOverrideReq를 사용하여 오버라이드 모드를 선택합니다. ProgOverrideReq를 설정하여 오버라이드 모드를 요청합니다. ProgHandReq가 해제되어 있으면 요청이 무시됩니다. |
핸드 | 핸드 모드에 있는 동안 PID 알고리즘은 CV의 변경을 계산하지 않습니다. 컨트롤 모드에 관계없이 CV = HandFB입니다. 일반적으로 핸드 모드는 필드 핸드/자동 스테이션에 의해 최종 컨트롤 요소의 제어를 넘겨받았음을 나타내는 데 사용됩니다. 다음과 같이 ProgHandReq를 사용하여 핸드 모드를 선택합니다. ProgHandReq를 설정하여 핸드 모드를 요청합니다. 이 값은 보통 핸드/자동 스테이션에서 전송된 디지털 입력으로 판독됩니다. |
캐스케이드/비율, 자동 및 수동 모드는 프로그램 제어에서는 사용자 프로그램에서 또는 작업자 제어에서는 작업자 인터페이스에서 제어할 수 있습니다. 오버라이드 및 핸드 모드에는 사용자 프로그램에서만 제어할 수 있는 모드 요청 입력이 있습니다. 이러한 입력은 프로그램과 작업자 제어 둘 다에서 작동합니다.
설정값 선택
명령어가 프로그램 또는 작업자 제어 및 PID 모드를 결정하면 명령어는 적절한 SP 값을 얻을 수 있습니다. 캐스케이드/비율 SP 또는 현재 SP를 선택할 수 있습니다.
캐스케이드/비율 SP
캐스케이드/비율 SP는 UseRatio 및 ProgOper 값에 따라 달라집니다.

현재 SP
현재 SP는 캐스케이드/비율 모드, PVTracking 값, 자동 모드 및 ProgOper 값에 따라 달라집니다.

SP 상한/하한
상한 -> 하한 알람 알고리즘은 SP를 SPHLimit 및 SPLLimit 알람 제한과 비교합니다. SPHLimit는 PVEUMax보다 클 수 없고 SPLLimit는 PVEUMin보다 작을 수 없습니다.

SPOper 및 SPProg 값 업데이트
PIDE 명령어는 SPOper = SP 또는 SPProg = SP로 설정하여 프로그램 및 작업자 제어 간에 전환 또는 캐스케이드/비율 모드에서 전환 시 순조롭게 제어할 수 있습니다.

PV 상/하한 알람
상-상한 -> 하-하한 알람 알고리즘은 PV를 PV 알람 제한과 비교하여 PV 알람 제한에 PV 알람 불감대를 더하거나 뺍니다.

(1) 명령어 최초 스캔 중에 이 명령어는 모든 PV 경보 출력을 해제합니다. 또한 PVFaulted가 설정된 경우 이 명령어는 PV 알람 출력을 지우고 알람 알고리즘을 비활성화합니다.
PV 변화율 알람
PV 변화율(ROC) 알람은 PVROCPeriod에 대한 PV 값의 변화율을 양/음의 PV 변화율 제한과 비교합니다. PVROCPeriod는 변화율 알람에 대한 불감대 유형을 제공합니다. 예를 들어 100 ms의 실행 기간 동안 2°F/s의 ROC 알람 제한을 사용하고 분해능이 1°F인 아날로그 입력 모듈을 사용하면 입력 값이 변경될 때마다 명령어가 10°F/s의 속도를 보이므로 ROC 알람이 생성됩니다. 그러나 PVROCPeriod를 1초 이상으로 입력하면 속도가 실제로 2°F/s 제한을 초과한 경우에만 ROC 알람이 발생합니다.
PVROCPeriod가 만료된 경우에만 ROC 계산이 수행됩니다. 변화율은 다음과 같이 계산됩니다.
ElapsedROCPeriod = ElapsedROCPeriod + ElapsedTimeSinceLastExecution
ElapsedROCPeriod
³
PVROCPeriod의 경우:값: | 식: |
|---|---|
PVROC | ![]() |
PVROC N-1 | PVROC N-1 = PV |
ElapsedROCPeriod | ElapsedROCPeriod = 0 |
PVROC가 계산되면 PV ROC 알람은 다음과 같이 결정됩니다.

(1) 명령어 최초 스캔 중에 이 명령어는 PV ROC 경보 출력을 해제합니다. 또한 PVFaulted가 설정된 경우 이 명령어는 PVROC 알람 출력을 지우고 PV ROC 알람 알고리즘을 비활성화합니다.
PV 및 SP 값을 퍼센트로 변환
PID 제어 알고리즘을 수행하기 전에 이 명령어는 PV 및 SP를 백분율로 변환하고 에러를 계산합니다. 에러는 PV와 SP 값의 차이입니다. ControlAction이 설정되면 EPercent, E 및 PVPIDPercent의 값은 PID 알고리즘에서 사용되기 전에 부정 값으로 변환됩니다.

(1) PVPIDPercent 및 편차는 PID 컨트롤 알고리즘에서 사용하는 내부 매개 변수입니다.
편차 상/하한 알람
편차는 프로세스 변수(Process Variable, PV)와 설정값(setpoint, SP) 간의 차이입니다. 편차 알람은 프로세스 변수와 설정값 간에 불일치가 발생하는 경우 작업자에게 알려줍니다.
상-상한 -> 하-하한 알람 알고리즘은 편차를 편차 알람 제한과 비교하여 편차 알람 제한에 불감대를 더하거나 뺍니다.

(1) 명령어 최초 스캔 중에 이 명령어는 편차 경보 출력을 해제합니다. 또한 PVFaulted 또는 PVSpanInv가 설정된 경우 이 명령어는 편차 알람 출력을 지우고 알람 알고리즘을 비활성화합니다.
영점 교차 불감대 제어
에러가 ZCDeadband(| E |
£
ZCDeadband)에서 지정하는 범위 내에 있으면 값이 변하지 않도록 CV를 제한할 수 있습니다.
(1)
ZCOff가 해제되고, ZCDeadband > 0이고, 에러가 처음으로 0점을 교차하고(즉 En >= 0이고 En-1 < 0이거나 En <= 0이고 En-1 > 0일 때), | En | <= ZCDeadband이면, 명령어는 ZCDeadbandOn을 설정합니다.(2)
자동 또는 캐스케이드/비율 모드로 바뀔 때, 명령어는 En-1 = En을 설정합니다.이 명령어는 0점 교차 알고리즘을 비활성화하고 다음과 같은 조건에서 ZCDeadband를 해제합니다.
- 명령어 최초 스캔 중
- ZCDeadband£0인 경우
- 현재 모드가 자동 또는 캐스케이드/비율이 아닌 경우
- PVFaulted가 설정됨
- PVSpanInv가 설정된 경우
피드포워드 컨트롤
0점 교차 알고리즘에서 구한 CV와 ∆FF를 더해 CV를 계산합니다. ∆FF = FF – FFn-1의 값. FFSetPrevious이 설정되면 FFn-1=FFPrevious. 이 경우 명령어가 ∆FF 값을 계산하기 전에 FFn-1을 지정된 값으로 사전 설정할 수 있습니다.

제어 변수 선택
PID 알고리즘이 실행되면 프로그램 또는 작업자 제어 및 현재 PID 모드를 기준으로 CV를 선택합니다.

CV 와인드업 제한
WindupHIn이 설정되어 있으면 값을 늘리지 못하거나 WindupLIn이 설정되어 있으면 값을 줄이지 못하도록 CV를 제한합니다. 이러한 입력은 일반적으로 보조 루프의 WindupHOut 또는 WindupLOut 출력입니다. CVInitializing, CVFault 또는 CVEUSpanInv가 설정되어 있으면 WindupHIn 및 WindupLIn 입력이 무시됩니다.

CV 백분율 제한
다음 다이어그램은 명령어가 CV 퍼센트 제한을 결정하는 방법을 보여줍니다.

(1) 명령어의 최초 스캔 중에 이 명령어는 알람 출력을 지웁니다.
CV 상한/하한
명령어는 항상 CVHLimit 및 CVLLimit를 기준으로 경보를 수행합니다. 자동 또는 캐스케이드/비율 모드인 경우 CVHLimit 및 CVLLimit가 CV를 제한합니다. 수동 모드인 경우 CVManLimiting이 설정되어 있으면 CVHLimit 및 CVLLimit가 CV를 제한합니다. 그렇지 않으면 0 ~ 100%로 CV를 제한합니다.

(1) 명령어의 최초 스캔 중에 이 명령어는 알람 출력을 지웁니다.
CV 변화율 제한
자동 또는 캐스케이드/비율 모드이거나 수동 모드이고 CVManLimiting이 설정되어 있는 경우 PIDE 명령어가 CV 변화율을 제한합니다. 값이 0이면 CV 변화율 제한을 비활성화합니다.
CV 변화율은 다음과 같이 계산됩니다.

여기서 DeltaT는 초 단위입니다.
CV 변화율이 계산되면 CV 변화율 알람이 다음과 같이 결정됩니다.

(1) 명령어의 최초 스캔 중에 이 명령어는 경보 출력을 해제합니다. 또한 CVInitializing이 설정된 경우 이 명령어는 알람 출력을 지우고 CV 변화율 알고리즘을 비활성화합니다.
(2) 자동 또는 캐스케이드/비율 모드이거나 수동 모드이고 CVManLimiting이 설정되어 있는 경우 이 명령어는 CV의 변화를 제한합니다.
CVOper 및 CVProg 값 업데이트
작업자 수동 모드가 아닌 경우 PIDE 명령어는 CVOper = CV를 설정합니다. 이렇게 하면 제어에서 작업자 수동 모드로 순조롭게 모드를 전환할 수 있습니다.

기본 루프 컨트롤
일반적으로 1차 루프 제어는 캐스케이드/비율 모드를 사용할 때 무충돌 전환과 과적분 방지를 구현하기 않기 위해 1차 PID 루프에서 사용됩니다. 1차 루프 제어에는 1차 루프 출력 초기화 및 과적분 방지 출력이 포함되어 있습니다. 일반적으로 InitPrimary 출력은 1차 PID 루프의 CVInitReq 입력에서 사용합니다. 일반적으로 와인드업 출력은 CV 출력의 와인드업을 제한하기 위해 1차 루프의 와인드업 입력에서 사용합니다.

(1) 명령어의 최초 스캔 중 이 명령어는 InitPrimary를 설정합니다.
(2) CVInitializing이 설정되어 있거나 캐스케이드/비율 모드가 아닌 경우 이 명령어는 InitPrimary를 설정합니다.
(3) CVInitializing이 해제되어 있고 캐스케이드/비율 모드인 경우 이 명령어는 InitPrimary를 해제합니다.
(4) 명령어 최초 스캔 중에 이 명령어는 와인드업 출력을 해제합니다. 또한 CVInitializing이 설정되어 있거나 CVFaulted 또는 CVEUSpanInv가 설정되어 있는 경우 이 명령어는 와인드업 출력을 지우고 CV 와인드업 알고리즘을 비활성화합니다.
(5) SPHAlarm이 설정되어 있는 경우, ControlAction이 해제되고 CVHAlarm이 설정된 경우 또는 ControlAction 및 CVLAlarm이 설정된 경우 이 명령어는 WindupHOut을 설정합니다.
SP와 CV 제한은 서로 독립적으로 작동합니다. 따라서 SP 상한이 설정되어 있어도 CV 값의 증가를 제한할 수 없습니다. 마찬가지로 CV 상한 또는 하한이 SP 값의 증가를 제한할 수 없습니다.
(6) SPHAlarm이 해제되어 있는 경우, (ControlAction이 해제되고 CVHAlarm이 설정된 경우)가 아닌 경우 및 (ControlAction 및 CVLAlarm이 설정된 경우)가 아닌 경우 이 명령어는 WindupHOut을 해제합니다.
(7) SPLAlarm이 설정되어 있는 경우, ControlAction이 해제되고 CVLAlarm이 설정된 경우 또는 ControlAction 및 CVHAlarm이 설정된 경우 이 명령어는 WindupLOut을 설정합니다.
SP와 CV 제한은 서로 독립적으로 작동합니다. SP 하한은 CV 값의 증가를 막지 못합니다. 마찬가지로 CV 하한 또는 상한은 SP 값의 증가를 막지 못합니다.
(8) SPLAlarm이 해제되어 있는 경우, (ControlAction이 해제되고 CVLAlarm이 설정된 경우)가 아닌 경우 및 (ControlAction 및 CVHAlarm이 설정된 경우)가 아닌 경우 이 명령어는 WindupLOut을 해제합니다.
폴트 처리
다음 표에는 명령어가 실행 폴트를 처리하는 방법이 나와 있습니다.
폴트 조건 | Action |
|---|---|
CVFaulted가 참이거나 CVEUSpanInv가 참임 | 명령어가 초기화되지 않고 CVInitializing이 거짓으로 해제됩니다. PV 및 SP 퍼센트를 계산하고, 에러를 계산하고, EPercent 및 PVPIDPercent에 대한 내부 매개 변수를 업데이트합니다. PID 제어 알고리즘이 실행되지 않습니다. 자동 및 캐스케이드/비율 모드를 비활성화합니다. 현재 오버라이드 또는 핸드 모드가 아닌 경우 수동 모드로 설정합니다. 프로그램 또는 작업자 제어 및 (수동, 오버라이드 또는 핸드) 모드도 결정된 값으로 CV를 설정합니다. |
PVFaulted가 참임 | 자동 및 캐스케이드/비율 모드를 비활성화합니다. 현재 오버라이드 또는 핸드 모드가 아닌 경우 수동 모드로 설정합니다. PV 상한-하한, PV 변화율 및 편차 상한-하한 알람 출력이 거짓으로 해제됩니다. PID 제어 알고리즘이 실행되지 않습니다. 프로그램 또는 작업자 제어 및 (수동, 오버라이드 또는 핸드) 모드로 결정된 값으로 CV를 설정합니다. |
PVSpanInv가 참이거나 SPLimitsInv가 참임 | 자동 및 캐스케이드/비율 모드를 비활성화합니다. 현재 오버라이드 또는 핸드 모드가 아닌 경우 수동 모드로 설정합니다. PV 및 SP 백분율을 계산하지 않습니다. PID 제어 알고리즘이 실행되지 않습니다. 프로그램 또는 작업자 제어 및 (수동, 오버라이드 또는 핸드) 모드로 결정된 값으로 CV를 설정합니다. |
RatioLimitsInv가 참이고 CasRat가 참이고 UseRatio가 참임 | 아직 핸드 또는 오버라이드 모드가 아닌 경우 수동 모드로 설정합니다. 캐스케이드/비율 모드를 비활성화합니다. 프로그램 또는 작업자 제어 및 (수동, 오버라이드 또는 핸드) 모드도 결정된 값으로 CV를 설정합니다. |
TimingModeInv가 참이거나 RTSTimeStampInv가 참이거나 DeltaTInv가 참임 | 아직 핸드 또는 오버라이드 모드가 아닌 경우 수동 모드로 설정합니다. |
의견을 작성 부탁드립니다.
최대 양의 부동 소수점 수
모든 부동 소수점 수