내부 모델 컨트롤(IMC)

이 정보는
CompactLogix
5370,
ControlLogix
5570,
Compact GuardLogix
5370,
GuardLogix
5570,
Compact GuardLogix
5380,
CompactLogix
5380,
ControlLogix
5580,
GuardLogix
5580 및 ControlLogix 5590 컨트롤러에 적용됩니다.
내부 모델 컨트롤(IMC) 명령어는 단일 제어 변수 출력을 조작하여 단일 프로세스 변수를 제어합니다. 이 함수 블록은 실제 에러 신호가 내부의 1차 래그와 프로세스의 데드타임 모델과 비교되는 알고리즘을 수행합니다. IMC 펑션 블록은 PV - SP 편차, 내부 모델 및 튜닝에 따라 자동 모드에서 제어 변수 출력(CV)을 계산합니다.
사용 가능한 언어
래더 다이어그램
이 명령어는 래더 다이어그램에 사용할 수 없습니다.
펑션 블록
IMC_FB_avail_v31
구조화된 텍스트
IMC(IMC_tag);
피연산자
펑션 블록
피연산자:
유형:
형식
설명:
IMC 태그
INTERNAL MODEL CONTROL
구조
IMC 구조
구조화된 텍스트
피연산자:
유형:
형식
설명:
IMC 태그
INTERNAL MODEL CONTROL
구조
IMC 구조
스트럭쳐드 텍스트 내 식의 구문에 대한 자세한 내용은
스트럭쳐드 텍스트 구문
을 참조하십시오.
중요: APC 블록이 델타 시간(DeltaT)의 변화를 감지할 때마다 ModelInit가 수행됩니다. 따라서 블록은 DeltaT가 상수인 TimingMode 중 하나에서 실행되어야 합니다.
  • TimingMode = 0(주기적)이고 이러한 펑션 블록이 주기 태스크에서 실행되는 동안
  • TimingMode = 1(오버 샘플링)
두 경우 모두 주기 태스크 시간 또는 OversampleDT가 동적으로 변하는 경우 블록이 ModelInit를 수행합니다.
DeltaT에서 발생하는 지터로 인해 다음 TimingMode 설정은 사용하지 않는 것이 좋습니다.
  • TimingMode = 0(주기적)이고 이러한 펑션 블록이 연속 또는 이벤트 태스크에서 실행되는 동안
  • TimingMode = 2 (실시간 샘플링)
구조
입력 파라미터
데이터 유형
설명
유효값 및 기본값
EnableIn
BOOL
활성화 입력. 거짓이면 함수 블록이 실행되지 않고 출력이 업데이트되지 않습니다.
기본값 = 참
PV
REAL
스케일링된 프로세스 변수 입력. 이 값은 일반적으로 아날로그 입력 모듈에서 읽어옵니다.
유효값 = 모든 부동 소수점 수
기본값 = 0.0
PVFault
BOOL
PV 불량 상태 표시기. PV를 아날로그 입력에서 읽어오면 PVFault는 일반적으로 아날로그 입력 폴트 상태로 제어됩니다.
PVFault가 참이면 입력 모듈에 에러가 있음을 나타내고 Status에 비트를 설정합니다.
기본값은 거짓임
거짓 = 올바른 상태
PVUEMax
REAL
PV 최대 스케일링 값. 프로세스 변수의 100% 범위에 해당하는 PV 및 SP의 값입니다. PVEUMax ≤ PVEUMin이면 Status에 비트를 설정합니다.
유효값 = PVEUMin < PVEUMax ≤ 최대 양의 부동 소수점 수
기본값 = 100.0
PVUEMin
REAL
PV 최소 스케일링 값. 프로세서 변수의 0% 범위에 해당하는 PV 및 SP 값. PVEUMax ≤ PVEUMin이면 Status에 비트를 설정합니다.
유효값 = 최대 음의 부동 소수점 수 ≤ PVEUMin < PVEUMax
기본값 = 0.0
SPProg
REAL
PV 단위로 스케일링되는 SP 프로그램 값. SP는 프로그램 제어 상태일 때 이 값으로 설정됩니다.
SPProg 또는 SPOper의 값이 < SPLLimit 또는 > SPHLimit인 경우 Status에 비트를 설정하고 SP에 사용되는 값을 제한합니다.
유효값 = SPLLimit ~ SPHLimit
기본값 = 0.0
SPOper
REAL
PV 단위로 스케일링되는 SP 작업자 값. SP는 작업자 제어 상태일 때 이 값으로 설정됩니다.
SPProg 또는 SPOper의 값이 < SPLLimit 또는 > SPHLimit인 경우 Status에 비트를 설정하고 SP에 사용되는 값을 제한합니다.
유효값 = SPLLimit ~ SPHLimit
기본값 = 0.0
SPCascade
REAL
PV 단위로 스케일링되는 SP 캐스케이드 배열 값. 캐스케이드/비율 모드와 UseRatio가 거짓이면, SP는 이 값으로 설정되고, 대개 이것은 1차 루프의 CVEU가 됩니다. 캐스케이드/비율 모드와 UseRatio가 참이면 SP는 이 값에 Ratio를 곱한 값으로 설정됩니다.
SPCascade의 값이 < SPLLimit 또는 > SPHLimit이면 Status에 비트를 설정하고 SP에 사용되는 값을 제한합니다.
유효값 = SPLLimit ~ SPHLimit
기본값 = 0.0
SPHLimit
REAL
PV 단위로 스케일링되는 SP 상한 값.
SPHLimit < SPLLimit 또는 SPHLimit > PVEUMax인 경우 Status에 비트를 설정합니다.
유효값 = SPLLimit~PVEUMax
기본값 = 100.0
SPLLimit
REAL
PV 단위로 스케일링되는 SP 하한 값.
SPLLimit < PVEUMin 또는 SPHLimit < SPLLimit인 경우 Status에 비트를 설정하고 SPLLimit 값을 사용하여 SP를 제한합니다.
유효값 = PVEUMin~SPHLimit
기본값 = 0.0
UseRatio
BOOL
비율 제어를 허용합니다. 캐스케이드/비율 모드일 때 참으로 설정하여 비율 제어를 사용합니다.
기본값은 거짓임
RatioProg
REAL
프로그램 제어일 때 비율 승수, 단위 없음(예: 스칼라). 프로그램 컨트롤일 때 Ratio 및 RatioOper가 이 값으로 설정됩니다.
RatioProg 또는 RatioOper가 < RatioLLimit 또는 > RatioHLimit이면 Status에 비트를 설정하고 비율에 사용되는 값을 제한합니다.
유효값 = RatioLLimit to RatioHLimit
기본값 = 1.0
RatioOper
REAL
작업자 제어일 때 비율 승수, 단위 없음(예: 스칼라). Ratio는 오퍼레이터 컨트롤일 때 이 값으로 설정됩니다.
RatioProg 또는 RatioOper가 < RatioLLimit 또는 > RatioHLimit이면 Status에 비트를 설정하고 비율에 사용되는 값을 제한합니다.
유효값 = RatioLLimit to RatioHLimit
기본값 = 1.0
RatioHLimit
REAL
Ratio 상한값, 단위 없음(예: 스칼라). RatioProg 또는 RatioOper에서 얻은 Ratio 값을 제한합니다.
RatioLLimit < 0이면 Status에 비트를 설정하고 0으로 제한합니다. RatioHLimit < RatioLLimit이면 Status에 비트를 설정하고 RatioLLimit의 값을 사용하여 Ratio를 제한합니다.
유효값 = RatioLLimit~최대 양의 부동 소수점 수
기본값 = 1.0
RatioLLimit
REAL
Ratio 하한값, 단위 없음(예: 스칼라). 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를 CVInitValue의 값으로 설정합니다. 이 신호는 일반적으로 CVEU로 제어되는 아날로그 출력 모듈의 In Hold 상태를 통해 컨트롤되거나 보조 IMC 루프의 InitPrimary 출력에서 얻습니다.
기본값은 거짓임
CVInitValue
REAL
CVEU 초기화 값, CVEU 단위로 스케일링됨. CVInitializing이 참이면 CVEU를 CVInitValue와 동일하게 설정하고 CV를 해당 백분율 값으로 설정합니다. CVInitValue는 일반적으로 CVEU로 컨트롤되는 아날로그 출력의 피드백 또는 보조 루프의 설정값에서 얻습니다. CVFaulted 또는 CVEUSpanInv가 참(불량)이면 펑션 블록 초기화가 비활성화됩니다.
유효값 = 모든 부동 소수점 수
기본값 = 0.0
CVProg
REAL
CV 프로그램-수동 값. CV는 프로그램 제어 및 수동 모드 상태일 때 이 값으로 설정됩니다.
CVManLimiting이 참일 때 CVProg 또는 CVOper의 값이 < 0 또는 > 100, 또는 < CVLLimit 또는 > CVHLimit이면 고유 Status 비트를 설정하고 CV에 사용되는 값을 제한합니다.
유효값 = 0.0~100.0
기본값 = 0.0
CVOper
REAL
CV 작업자-수동 값. CV는 오퍼레이터 컨트롤 및 수동 모드일 때 이 값으로 설정됩니다. 오퍼레이터-수동 모드가 아닌 경우 각 함수 블록 실행이 끝날 때 CVOper를 CV 값으로 설정합니다.
CVManLimiting이 참일 때 CVProg 또는 CVOper의 값이 < 0 또는 > 100, 또는 < CVLLimit 또는 > CVHLimit이면 고유 Status 비트를 설정하고 CV에 사용되는 값을 제한합니다.
유효값 = 0.0~100.0
기본값 = 0.0
CVOverrideValue
REAL
CV 오버라이드 값. 오버라이드 모드일 때 CV가 이 값으로 설정됩니다.
이 값은 IMC 루프의 안전 상태 출력에 해당되어야 합니다. CVOverrideValue의 값이 < 0 또는 > 100이면 고유 Status 비트를 설정하고 CV에 사용되는 값을 제한합니다.
유효값 = 0.0~100.0
기본값 = 0.0
CVTrackValue
REAL
CV 추적 값. CVTrackReq가 활성화되고 IMC 함수 블록이 수동 상태이면 CVTrackValue가 무시되고 IMC 내부 모델이 CVOper 또는 CVProg 값으로 기록 데이터를 업데이트합니다. CVTrackReq가 활성화되고 IMC 함수 블록이 자동 상태이면 내부 모델이 CVTrackValue 값을 기반으로 기록 데이터를 업데이트합니다. 이 경우 CV은 마치 IMC 함수 블록이 계속해서 프로세스를 컨트롤하고 있는 것처럼 이동할 수 있습니다. 이는 IMC 함수 블록이 다른 컨트롤 알고리즘 출력을 따르도록 하려는 다중 루프 선택 스키마에서 유용하며 여기에서 컨트롤 알고리즘 출력을 CVTrackValue에 연결합니다.
유효값 = 0.0~100.0
기본값 = 0.0
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 출력을 설정하는 데 사용됩니다. 또한 자동 또는 캐스케이드/비율 모드에서 CV를 제한할 때나 CVManLimiting이 참인 경우 수동 모드에서 CV를 제한할 때도 사용됩니다.
CVLLimit < 0인 경우, CVHLimit > 100인 경우, CVHLimit < CVLLimit인 경우에 Status에 비트를 설정합니다. CVHLimit < CVLLimit인 경우, CVLLimit의 값을 사용하여 CV를 제한합니다.
유효값 = CVLLimit < CVHLimit ≤ 100.0
기본값 = 100.0
CVLLimit
REAL
CV 하한 값. 이 값은 CVLAlarm 출력을 설정하는 데 사용됩니다. 또한 자동 또는 캐스케이드/비율 모드에서 CV를 제한할 때나 CVManLimiting이 참인 경우 수동 모드에서 CV를 제한할 때도 사용됩니다.
CVLLimit < 0인 경우, CVHLimit > 100인 경우, CVHLimit < CVLLimit인 경우에 Status에 비트를 설정합니다.
CVHLimit < CVLLimit인 경우, CVLLimit의 값을 사용하여 CV를 제한합니다.
유효값 = 0.0 ≤ CVLLimit < CVHLimit
기본값 = 0.0
CVROCPosLimit
REAL
CV의 증가 변화율 제한, 초당 퍼센트 단위로 표시됩니다.
변화율 제한은 자동 또는 캐스케이드/비율 모드에서 또는 CVManLimiting이 참인 경우 수동 모드에서만 사용됩니다.
값이 0이면 CV ROC 제한을 비활성화합니다.
CVROCPOSLimit의 값이 < 0이면 Status에 비트를 설정하여 CV ROC 제한을 비활성화합니다.
유효값 = 0.0 ~ 최대 양의 부동 소수점 수
기본값 = 0.0
CVROCNegLimit
REAL
CV의 줄임 변화율 제한, 초당 퍼센트 단위로 표시됩니다.
변화율 제한은 자동 또는 캐스케이드/비율 모드에서 또는 CVManLimiting이 참인 경우 수동 모드에서만 사용됩니다.
값이 0이면 CV ROC 제한을 비활성화합니다.
CVROCNegLimit의 값이 < 0이면 Status에 비트를 설정하여 CV ROC 제한을 비활성화합니다.
유효값 = 0.0 ~ 최대 양의 부동 소수점 수
기본값 = 0.0
HandFB
REAL
CV HandFeedback 값. 핸드 모드이고 HandFBFault가 FALSE(양호한 상태)일 때 CV가 이 값으로 설정됩니다. 이 값은 보통 현장에 장착된 핸드/자동 스테이션의 출력으로 핸드 모드에서 무충돌 전환을 수행하는 데 사용됩니다.
HandFB 값이 0보다 작거나 100보다 큰 경우 고유 Status 비트를 설정하고 CV에 사용되는 값을 제한합니다.
유효 = 0.0…100.0
기본값 = 0.0
HandFBFault
BOOL
HandFB 값 불량 상태 표시기. HandFB 값이 아날로그 입력에서 읽혀지면 HandFBFault는 일반적으로 아날로그 입력 채널의 상태에 의해 제어됩니다.
HandFBFault가 참이면 이것은 입력 모듈에 에러가 있음을 나타내고 Status에 비트를 설정합니다.
기본값은 거짓임
거짓 = 올바른 상태
WindupHIn
BOOL
와인드업 상한 요청. 참이면 CV의 값 증가가 허용되지 않습니다. 이 신호는 일반적으로 보조 루프의 WindupHOut 출력입니다.
기본값은 거짓임
WinduplIn
BOOL
와인드업 하한 요청. 참이면 CV의 값 감소가 허용되지 않습니다. 이 신호는 일반적으로 보조 루프의 WindupLOut 출력입니다.
기본값은 거짓임
GainEUSpan
BOOL
EU 또는 범위의 % 형태의 ModelGain 단위입니다.
EU 또는 범위의 % 형태의 CV ModelGain 단위입니다. ModelGain을 EU로 해석하도록 설정하거나 범위의 %로 해석하도록 리셋합니다.
기본값은 거짓임
참 = EU 단위 게인
거짓 = 범위의 % 단위 게인
ProcessGainSign
BOOL
Autotune에만 사용됩니다. 프로세스 게인의 부호(Delta PV/Delta CV).
음의 프로세스 게인(출력이 증가하면 PV가 감소)을 나타내도록 설정합니다.
양의 프로세스 게인(출력이 증가하면 PV가 증가)을 나타내도록 리셋합니다.
기본값은 거짓임
ProcessType
DINT
프로세스 유형 선택(1 = 적분, 0 = 비적분)
기본값 = 0
ModelGain
REAL
내부 모델 게인 파라미터. 프로세스 방향에 따라 양 또는 음의 게인을 입력합니다.
유효값 = 최대 음의 부동 소수점 수 −> 최대 양의 부동 소수점 수
기본값 = 0.0
ModelTC
REAL
초 단위의 내부 모델 시간 상수.
유효값 = 0.0 ~ 최대 양의 부동 소수점 수
기본값 = 0.0
ModelDT
REAL
초 단위의 내부 모델 데드타임.
유효값 = 0.0 ~ 최대 양의 부동 소수점 수
기본값 = 0.0
RespTC
REAL
초 단위의 제어 변수 동작 속도를 결정하는 튜닝 파라미터.
유효값 = 0.0 ~ 최대 양의 부동 소수점 수
기본값 = 0.0
PVTracking
BOOL
SP가 PV를 추적하도록 요청. SP가 PV를 추적하도록 하려면 참으로 설정합니다. 캐스케이드/비율 또는 자동 모드일 때는 무시됩니다.
기본값은 거짓임
CVTrackReq
BOOL
CV 추적 요청. 오토 튜닝이 꺼진 경우 CV 추적을 활성화하려면 참으로 설정합니다. 핸드 및 오버라이드 모드에서는 무시됩니다.
기본값은 거짓임
AllowCasRat
BOOL
캐스케이드/비율 모드를 허용합니다. ProgCasRatReq 또는 OperCasRatReq를 사용하여 캐스케이드/비율 모드를 선택하려면 참으로 설정합니다.
기본값은 거짓임
ManualAfterInit
BOOL
초기화 후 수동 모드 요청.
참인 경우, 현재 모드가 오버라이드 또는 핸드가 아니면 CVInitializing을 참으로 설정할 때 펑션 블록이 수동 모드가 됩니다.
ManualAfterInit이 FALSE이면 함수 블록의 모드가 변경되지 않습니다.
기본값은 거짓임
ProgProgReq
BOOL
프로그램 프로그래밍 요청.
프로그램 제어를 요청하려면 사용자 프로그램에서 참으로 설정합니다. ProgOperReq가 참인 경우 무시됩니다. 이 값을 TRUE로 유지하고 ProgOperReq를 FALSE로 유지하면 함수 블록을 프로그램 컨트롤로 잠글 수 있습니다.
ProgValueReset가 TRUE이면 함수 블록은 입력을 FALSE로 재설정합니다.
기본값은 거짓임
ProgOperReq
BOOL
프로그램 작업자 요청. 작업자 제어를 요청하려면 사용자 프로그램에서 참으로 설정합니다. 이 값을 TRUE로 유지하면 함수 블록을 오퍼레이터 컨트롤로 잠글 수 있습니다. ProgValueReset가 TRUE이면 함수 블록은 입력을 FALSE로 재설정합니다.
기본값은 거짓임
ProgCasRatReq
BOOL
프로그램-캐스케이드/비율 모드 요청. 캐스케이드/비율 모드를 요청하려면 사용자 프로그램을 통해 TRUE로 설정합니다. ProgValueReset가 TRUE이면 함수 블록은 입력을 FALSE로 재설정합니다.
기본값은 거짓임
ProgAutoReq
BOOL
프로그램-자동 모드 요청. 자동 모드를 요청하려면 사용자 프로그램에서 참으로 설정합니다. ProgValueReset가 TRUE이면 함수 블록은 입력을 FALSE로 재설정합니다.
기본값은 거짓임
ProgManualReq
BOOL
프로그램-수동 모드 요청. 수동 모드를 요청하려면 사용자 프로그램에서 참으로 설정합니다. ProgValueReset가 TRUE이면 함수 블록은 입력을 FALSE로 재설정합니다.
기본값은 거짓임
ProgOverrideReq
BOOL
프로그램-오버라이드 모드 요청. 오버라이드 모드를 요청하려면 사용자 프로그램에서 참으로 설정합니다. ProgValueReset가 TRUE이면 함수 블록은 입력을 FALSE로 재설정합니다.
기본값은 거짓임
ProgHandReq
BOOL
프로그램-핸드 모드 요청. 핸드 모드를 요청하려면 사용자 프로그램에서 참으로 설정합니다. 이 값은 일반적으로 핸드/자동 스테이션에서 디지털 입력으로 읽습니다. ProgValueReset가 TRUE이면 함수 블록은 입력을 FALSE로 재설정합니다.
기본값은 거짓임
OperProgReq
BOOL
작업자 프로그램 요청. 프로그램 제어를 요청하려면 작업자 인터페이스에서 참으로 설정합니다. 함수 블록은 이 매개 변수를 FALSE로 재설정합니다.
기본값은 거짓임
OperOperReq
작업자 작업자 요청. 작업자 제어를 요청하려면 작업자 인터페이스에서 참으로 설정합니다. 함수 블록은 이 매개 변수를 FALSE로 재설정합니다.
기본값은 거짓임
OperCasRatReq
BOOL
작업자-캐스케이드/비율 모드 요청. 캐스케이드/비율 모드를 요청하기 위해 작업자 인터페이스에 의해 참으로 설정됩니다. 함수 블록은 이 매개 변수를 FALSE로 재설정합니다.
기본값은 거짓임
OperAutoReq
BOOL
작업자-자동 모드 요청. 자동 모드를 요청하려면 작업자 인터페이스에서 참으로 설정합니다. 함수 블록은 이 매개 변수를 FALSE로 재설정합니다.
기본값은 거짓임
OperManualReq
BOOL
작업자-수동 모드 요청. 수동 모드를 요청하려면 작업자 인터페이스에서 참으로 설정합니다. 함수 블록은 이 매개 변수를 FALSE로 재설정합니다.
기본값은 거짓임
ProgValueReset
BOOL
프로그램 제어 값 리셋. 참이면 Prog_xxx_Req 입력이 거짓으로 리셋됩니다.
참이고 프로그램 제어인 경우 SPProg를 SP로 설정하고 CVProg를 CV로 설정합니다.
ProgValueReset이 TRUE이면 함수 블록은 이 매개 변수를 FALSE로 재설정합니다.
기본값은 거짓임
TimingMode
DINT
시간 기준 실행 모드 선택.
값/설명
0 = 주기 모드
1 = 오버 샘플링 모드
2 = 실시간 샘플링 모드
타이밍 모드에 대한 자세한 내용은 함수 블록 속성을 참조하세요.
유효값 = 0…2
기본값 = 0
OverSampleDT
REAL
오버 샘플링 모드에 대한 실행 시간.
유효값 = 0 ~ 최대. TON_Timer 경과 시간(4194.303초)
기본값 = 0
RTSTime
DINT
실시간 샘플링 모드에 대한 모듈 업데이트 기간.
유효값 = 1~32,767
1카운트 = 1 ms
RTSTimeStamp
DINT
실시간 샘플링 모드에 대한 모듈 타임 스탬프 값.
유효값 = 0~32,767
(32,767에서 0으로 건너뜀)
1카운트 = 1 ms
PVTuneLimit
REAL
PV 단위로 스케일링되는 PV 튜닝 제한. 오토 튜닝이 실행 중이고 예측 PV가 이 제한 값을 초과할 것으로 예상하는 경우 튜닝이 중단됩니다.
범위: 모든 부동 소수점 수
기본값=0
AtuneTimeLimit
REAL
CV 단계 변경 후 오토 튜닝 완료에 걸리는 최대 시간. 오토 튜닝이 이 시간을 초과할 경우 튜닝이 중단됩니다.
유효 범위: 0 보다 큰 모든 부동 소수점 수.
기본값 = 60분
NoiseLevel
DINT
튜닝 중에 보상할 PV에서 예상되는 노이즈 레벨 추정값.
선택 항목: 0=낮음, 1=중간, 2=높음
범위: 0 ~ 2
기본값=1
CVStepSize
REAL
튜닝 단계 테스트를 위한 CV 단계 크기(퍼센트). 단계 크기는 상한/하한에 따라 CV에 직접 추가됩니다.
범위: -100% ~ 100%
기본값=10%
ResponseSpeed
DINT
폐쇄 루프 응답의 요구 속도.
느린 응답: ResponseSpeed=0
중간 응답: ResponseSpeed=1
빠른 응답: ResponseSpeed=2.
ResponseSpeed가 0보다 작은 경우 느린 응답이 사용됩니다. ResponseSpeed가 2보다 큰 경우 빠른 응답이 사용됩니다.
범위: 0 ~ 2
기본값=1
ModelInit
BOOL
내부 모델 초기화 스위치.
기본값은 거짓임
Factor
REAL
비적분 모델 근사치 요소. 적분 프로세스 유형에만 사용됩니다.
기본값 = 100
AtuneStart
BOOL
오토 튜닝 시작 요청. 펑션 블록의 오토 튜닝을 시작하려면 참으로 설정합니다. IMC가 수동 모드가 아니면 무시됩니다. 함수 블록은 이 매개 변수를 FALSE로 재설정합니다.
기본값은 거짓임
AtuneUseModel
BOOL
오토 튜닝 모델 요청을 사용합니다. 현재 모델 파라미터를 계산된 오토 튜닝 모델 파라미터로 바꾸려면 참으로 설정합니다. 펑션 블록은 입력 파라미터를 거짓으로 설정합니다.
기본값은 거짓임
AtuneAbort
BOOL
오토 튜닝 중단 요청. IMC 펑션 블록의 오토 튜닝을 중단하려면 참으로 설정합니다. 함수 블록은 입력 매개 변수를 FALSE로 설정합니다.
기본값은 거짓임
출력 매개 변수
데이터 유형
설명
유효값 및 기본값
EnableOut
BOOL
명령어의 활성화 여부를 나타냅니다. CVEU가 오버플로되는 경우 거짓으로 해제됩니다.
CVEU
REAL
스케일링된 제어 변수 출력. CVEUMax 및 CVEUMin을 사용하여 스케일링됩니다. 여기서 CVEUMax는 100%에 해당하고 CVEUMin은 0%에 해당합니다. 일반적으로 이 출력은 아날로그 출력 모듈 또는 2차 루프를 제어하는 데 사용됩니다.
CVEU = (CV * CVEUSpan / 100) + CVEUMin
CVEU 범위 계산: CVEUSpan = ( CVEUMax − CVEUMin )
CV
REAL
제어 변수 출력. 이 값은 항상 0 ~ 100%로 표시됩니다. CVManLimiting이 참이면 자동 또는 캐스케이드/비율 모드 또는 수동 모드일 때 CVHLimit 및 CVLLimit에 의해 CV가 제한됩니다. 그렇지 않으면 0 ~ 100%로 제한됩니다.
DeltaCV
REAL
현재 CV와 이전 CV의 차이(현재 CV - 이전 CV).
CVInitializing
BOOL
초기화 모드 표시기. CVInitReq 또는 펑션 블록 FirstScan이 참일 때, 또는 CVFault가 참에서 거짓으로 전환할 때(불량 상태 -> 올바른 상태) 참을 설정합니다. 함수 블록이 초기화되고 CVInitReq가 더 이상 TRUE이 아닌 경우 CVInitializing이 FALSE로 설정됩니다.
CVHAlarm
BOOL
CV 상한 알람 표시기. CV의 계산 값이 100보다 크거나 CVHLimit일 때 참입니다.
CVLAlarm
BOOL
CV 하한 알람 표시기. CV의 계산 값이 < 0 또는 CVLLimit인 경우 참.
CVROCPosAlarm
BOOL
CV 변화율 알람 표시기. CV에 대해 계산된 변화율이 CVROCPosLimit를 초과하는 경우 참.
CVROCNegAlarm
REAL
CV 변화율 알람 표시기. CV에 대해 계산된 변화율이 CVROCNegLimit를 초과하는 경우 참.
SP
REAL
현재 설정값. SP의 값은 자동, 캐스케이드/비율 또는 PV 추적 모드에서 PV 단위로 스케일링될 때 CV를 제어하는 데 사용됩니다.
SPPercent
REAL
PV의 범위 퍼센트로 표시되는 SP 값.
SPPercent = ((SP − PVEUMin ) * 100) / PVSpan
여기서
PVSpan = PVEUMax − PVEUMin
SPHAlarm
BOOL
SP 상한 알람 표시기. SP ≥ SPHLimit인 경우 참입니다.
SPLAlarm
BOOL
SP 하한 알람 표시기. SP ≤ SPLLimit인 경우 참입니다.
PVPercent
REAL
범위 퍼센트로 표시된 PV.
PVPercent = (( PV − PVEUMin ) * 100) / PVSpan
PV 범위 계산: PVSpan =
(PVEUMax − PVEUMin)
E
REAL
프로세스 에러. PV 단위로 스케일링되는 SP와 PV의 차이.
EPercent
REAL
범위 퍼센트로 표시된 에러.
InitPrimary
BOOL
1차 루프 명령을 초기화합니다. 캐스케이드/비율 모드가 아니거나 CVInitializing이 참인 경우 참입니다. 이 신호는 일반적으로 기본 루프의 CVInitReq 입력에 의해 사용됩니다.
WindupHOut
BOOL
와인드업 상한 표시기. SP 상한 또는 CV 상한/하한에 도달하는 경우 참입니다. 이 신호는 일반적으로 기본 루프에서 CV 출력의 와인드업을 제한하기 위해 WindupHIn 입력에서 사용됩니다.
WindupLOut
BOOL
와인드업 하한 표시기. SP 또는 CV 상한/하한에 도달하는 경우 참입니다. 이 신호는 일반적으로 기본 루프에서 CV 출력의 와인드업을 제한하기 위해 WindupLIn 입력에서 사용됩니다.
Ratio
REAL
현재 비율 승수, 단위 없음.
RatioHAlarm
BOOL
비율 상한 알람 표시기. Ratio > RatioHLimit인 경우 참입니다.
RatioLAlarm
BOOL
비율 하한 알람 표시기. Ratio < RatioLLimit인 경우 참입니다.
ProgOper
BOOL
프로그램/작업자 제어 표시기. 프로그램 제어인 경우 참입니다. 작업자 제어인 경우 거짓입니다.
CasRat
BOOL
캐스케이드/비율 모드 표시기. 캐스케이드/비율 모드일 때 참입니다.
Auto
BOOL
자동 모드 표시기. 자동 모드일 때 참입니다.
Manual
BOOL
수동 모드 표시기. 수동 모드일 때 참입니다.
Override
BOOL
오버라이드 모드 표시기. 오버라이드 모드일 때 참입니다.
Hand
BOOL
핸드 모드 표시기. 핸드 모드일 때 참입니다.
DeltaT
REAL
업데이트 간에 경과된 시간(초).
StepSizeUsed
REAL
튜닝에 사용되는 실제 CV 단계 크기.
GainTuned
REAL
튜닝이 완료된 후 계산된 내부 모델 게인 값이 표시됩니다.
TCTuned
REAL
튜닝이 완료된 후 계산된 내부 모델 시간 상수 값이 표시됩니다.
DTTuned
REAL
튜닝이 완료된 후 계산된 내부 모델 데드타임 값이 표시됩니다.
RespTCTunedS
REAL
튜닝 후 느린 응답 속도에서 제어 변수 시간 상수의 계산된 값이 완료되었습니다.
RespTCTunedM
REAL
튜닝 후 중간 응답 속도에서 제어 변수 시간 상수의 계산된 값이 완료되었습니다.
RespTCTunedF
REAL
튜닝 후 빠른 응답 속도에서 제어 변수 시간 상수의 계산된 값이 완료되었습니다.
AtuneOn
BOOL
오토 튜닝이 시작되면 참을 설정합니다.
AtuneDone
BOOL
오토 튜닝이 완료되면 참을 설정합니다.
AtuneAborted
BOOL
사용자에 의해, 또는 오토 튜닝 작업 중에 발생한 에러로 인해 오토 튜닝이 중단되면 참으로 설정합니다.
AtuneStatus
DINT
블록 튜닝 상태를 나타냅니다.
AtuneFault
BOOL
오토 튜닝에서 다음과 같은 폴트가 발생했습니다.
AtuneStatus의 비트 0
AtunePVOutOfLimit
BOOL
PV 또는 PV의 데드타임-단계 사전 예측 값이 오토 튜닝 중에 PVTuneLimit를 초과합니다. 참이면 오토 튜닝이 중단됩니다.
AtuneStatus의 비트 1
AtuneModeInv
BOOL
IMC 모드가 오토 튜닝 시작시 수동이 아니었거나 IMC 모드가 오토 튜닝 중 수동에서 변경되었습니다. 참이면 오토 튜닝이 시작되지 않거나 중단됩니다.
AtuneStatus의 비트 2
AtuneCVWindupFault
BOOL
WindupHIn 또는 WindupLIn은 오토 튜닝 시작시 또는 오토 튜닝 중 참입니다. 참이면 오토 튜닝이 시작되지 않거나 중단됩니다.
AtuneStatus의 비트 3
AtuneStepSize0
BOOL
오토 튜닝 시작시 StepSizeUsed = 0. 참이면 오토 튜닝이 시작되지 않습니다.
AtuneStatus의 비트 4
AtuneCVLimitsFault
BOOL
CVLimitsInv 및 CVManLimiting은 오토 튜닝 시작시 또는 오토 튜닝 중 참입니다. 참이면 오토 튜닝이 시작되지 않거나 중단됩니다.
AtuneStatus의 비트 5
AtuneCVInitFault
BOOL
CVInitializing은 오토 튜닝 시작시 또는 오토 튜닝 중 참입니다. 참이면 오토 튜닝이 시작되지 않거나 중단됩니다.
AtuneStatus의 비트 6
AtuneEUSpanChanged
BOOL
오토 튜닝 중에 CVEUSpan 또는 PVEUSpan이 변경됩니다. 참이면 오토 튜닝이 중단됩니다.
AtuneStatus의 비트 7
AtuneCVChanged
BOOL
CVOper는 작업자 제어일 때 변경되거나, CVProg는 프로그램 제어일 때 변경되거나, CV는 오토 튜닝 중 상/하한에 도달하거나 ROC 제한이 됩니다. 참이면 오토 튜닝이
중단됩니다.
AtuneStatus의 비트 8
AtuneTimeout
BOOL
단계 테스트가 시작된 이후 경과 시간이 AtuneTimeLimit보다 큽니다. 참이면 오토 튜닝이 중단됩니다.
AtuneStatus의 비트 9
AtunePVNotSettled
BOOL
PV가 오토 튜닝하기에 너무 많이 변경되었습니다. 참이면 오토 튜닝이 중단됩니다. PV가 보다 안정될 때까지 기다렸다가 오토 튜닝합니다.
AtuneStatus의 비트 10
Status1
DINT
펑션 블록에 대한 비트 매핑 상태입니다.
Status2
DINT
펑션 블록에 대한 추가 비트 매핑 상태입니다.
InstructFault
BOOL
펑션 블록에서 폴트가 발생했습니다. Status1 및 Status2의 비트 상태를 나타냅니다.
값이 0이면 폴트가 발생하지 않았음을 나타냅니다. 유효하지 않은 값으로 구성될 수 있는 파라미터에는 유효하지 않은 상태를 나타내는 상태 파라미터가 있어야 합니다.
Status1의 비트 0
PVFaulted
BOOL
프로세스 변수 PV의 상태가 좋지 않습니다.
Status1의 비트 1
CVFaulted
BOOL
제어 변수 CV 폴트 발생
Status1의 비트 2
HandFBFaulted
BOOL
HandFB 값의 상태가 좋지 않습니다.
Status1의 비트 3
PVSpanInv
BOOL
PV 범위가 유효하지 않음, PVEUMax < PVEUMin.
Status1의 비트 4
SPProgInv
BOOL
SPProg < SPLLimit 또는 > SPHLimit. SP에 사용되는 값을 제한합니다.
Status1의 비트 5
SPOperInv
BOOL
SPOper < SPLLimit 또는 > SPHLimit. SP에 사용되는 값을 제한합니다.
Status1의 비트 6
SPCascadeInv
BOOL
SPCascade < SPLLimit 또는 > SPHLimit. SP에 사용되는 값을 제한합니다.
Status1의 비트 7
SPLimitsInv
BOOL
한계값이 유효하지 않음: SPLLimit < PVEUMin, SPHLimit > PVEUMax 또는 SPHLimit < SPLLimit. SPHLimit <SPLLimit인 경우, SPLLimit를 사용하여 값을 제한합니다.
Status1의 비트 8
RatioLimitsInv
BOOL
비율 상한-하한이 유효하지 않음, 하한 < 0 또는 상한 < 하한.
Status1의 비트 9
RatioProgInv
BOOL
RatioProg < RatioLLimit 또는 > RatioHLimit. Ratio에 사용되는 값을 제한합니다.
Status1의 비트 10
RatioOperInv
BOOL
RatioOper < RatioLLimit 또는 > RatioHLimit. Ratio에 사용되는 값을 제한합니다.
Status1의 비트 11
CVProgInv
BOOL
CVManLimiting이 참이면 CVProg < 0 또는 > 100, 또는 < CVLLimit 또는 > CVHLimit입니다. CV에 사용되는 값을 제한합니다.
Status1의 비트 12
CVOperInv
BOOL
CVManLimiting이 참이면 CVOper < 0 또는 > 100, 또는 < CVLLimit 또는 > CVHLimit입니다. CV에 사용되는 값을 제한합니다.
Status1의 비트 13
CVOverrideValueInv
BOOL
CVOverrideValue < 0 또는 > 100입니다. CV에 사용되는 값을 제한합니다.
Status1의 비트 14
CVTrackValueInv
BOOL
CVTrackValue < 0 또는 > 100입니다. CV에 사용되는 값을 제한합니다.
Status1의 비트 15
CVEUSpanInv
BOOL
CVEU의 범위가 유효하지 않음, CVEUMax와 CVEUMin이 같습니다.
Status1의 비트 16
CVLimitsInv
BOOL
CVLLimit < 0, CVHLimit > 100, 또는 CVHLimit <= CVLLimit입니다. CVHLimit <= CVLLimit인 경우, CVLLimit을 사용하여 CV를 제한합니다.
Status1의 비트 17
CVROCLimitInv
BOOL
CVROCLimit < 0이고, ROC 제한을 비활성화합니다.
Status1의 비트 18
HandFBInv
BOOL
HandFB < 0 또는 HandFB > 100. CV에 사용되는 값을 제한합니다.
Status1의 비트 19
SampleTimeTooSmall
BOOL
모델 데드타임/DeltaT는 200보다 작거나 같아야 합니다.
Status1의 비트 20
FactorInv
BOOL
Factor < 0입니다.
Status1의 비트 21
ModuleGainInv
BOOL
ModelGain은 1.#QNAN 또는 -1.#IND(숫자가 아님), 또는 ± 1.$ (무한대 ∞)입니다.
Status1의 비트 22
ModelTCInv
BOOL
ModelTC < 0입니다.
Status1의 비트 23
ModelDTInv
BOOL
ModelDT < 0입니다.
Status1의 비트 24
RespTCInv
BOOL
RespTC < 0입니다.
Status1의 비트 25
TimingModelInv
BOOL
TimingMode가 유효하지 않습니다. 현재 모드가 오버라이드 또는 핸드가 아니면 수동 모드로 설정합니다.
Status2의 비트 27
RTSMissed
BOOL
RTS 모드에서만 사용됩니다. ABS(DeltaT - RTSTime) > 1 ms일 때 참입니다.
Status2의 비트 28.
RTSTimeInv
BOOL
RTSTime이 유효하지 않습니다.
Status2의 비트 29.
RTSTimeStampInv
BOOL
RTSTimeStamp가 유효하지 않습니다. 현재 모드가 오버라이드 또는 핸드가 아니면 수동 모드로 설정합니다.
Status2의 비트 30.
DeltaTInv
BOOL
DeltaT가 유효하지 않습니다. 현재 모드가 오버라이드 또는 핸드가 아니면 수동 모드로 설정합니다.
Status2의 비트 31.
설명
다음 그림은 IMC 펑션 블록 구성을 보여줍니다.
IMC Description
각 실행에서 IMC 함수 블록은 실제 PV 측정을 PV 예측 값과 비교합니다. 그 결과는 모델링 부정확성과 결합된 측정되지 않은 공정 교란의 효과인 외란 추정이라고 합니다. 외란 추정은 제어 변수의 설정값에 대한 바이어스로 사용됩니다. 외란이 없고 모델링이 완벽한 이상적인 경우, 외란 추정(피드백 신호)은 0과 같아집니다.
1차 모델
M = K/(T*s+1)*exp(-D*s)
모델의 역
Inv = (T*s+1)/K
1차 필터
F = 1/(e*s+1)
PV 예측 값 = exp(-D*s)/(e*s+1) * (SP - 외란 추정)
K...
모델 게인
T...
모델 시간 상수
D...
모델 데드타임
e...
응답 시간 상수
s...
라플라스 변수
그런 다음 함수 블록은 CV 값(CVHLimit, CVLLimit 및 변화율 제한이 적용됨)과 PV 예측 값을 계산합니다.
IMC 함수 블록은 데드타임이 큰 프로세스를 컨트롤하는 경우에 PID 컨트롤 변수보다 우수한 장점을 가지고 PID 함수 블록을 대체하는 데 사용할 수 있습니다.
적분 프로세스 유형(예: 레벨 컨트롤 및 위치 컨트롤)의 경우, 내부 비적분 모델을 사용하여 적분 프로세스를 근사화합니다. Factor 파라미터는 확인된 적분 프로세스 모델을 CV 계산에 사용되는 비 적분 내부 모델로 변환하는 데 사용됩니다. 이는 안정적인 IMC 실행을 제공하기 위해 필요합니다.
연산 상태 플래그에 영향
아니요
주 폴트/부 폴트
이 명령어에만 해당되는 것은 없습니다. 피연산자 관련 폴트에 대해서는 공통 속성 항목을 참조하십시오.
실행
펑션 블록
조건/상태
수행한 작업
사전 스캔
EnableIn 및 EnableOut 비트가 거짓으로 해제됩니다.
Tag.EnableIn이 거짓임
EnableIn 및 EnableOut 비트가 거짓으로 해제됩니다.
Tag.EnableIn이 참임
EnableIn 및 .EnableOut 비트는 참으로 설정됩니다.
명령어가 실행됩니다.
명령어 최초 실행
N/A
명령어 최초 스캔
N/A
사후 스캔
EnableIn 및 EnableOut 비트가 거짓으로 해제됩니다.
구조화된 텍스트
조건/상태
수행한 작업
사전 스캔
펑션 블록 표의 사전 스캔을 참조하십시오.
정상 실행
펑션 블록 표에서 Tag.EnableIn이 참임을 참조하십시오.
사후 스캔
펑션 블록 표에서 사후 스캔을 참조하십시오.
예
펑션 블록
IMC_FB_ex_v31
구조화된 텍스트
imcTag.PV := imcInput1;
imcTag.SPProg := imcInput2;
imcTag.CVProg := imcInput3;
IMC(imcTag);
imcOutput1 := imcTag.CVEU;
의견을 작성 부탁드립니다.
이 자료에 대한 문의사항이나 요청사항이 있습니까? 여기에 요청사항을 작성 부탁드립니다.
Normal