리드-래그(Lead-Lag, LDLG)
이 정보는
CompactLogix
5370, ControlLogix
5570, Compact GuardLogix
5370, GuardLogix
5570, Compact GuardLogix
5380, CompactLogix
5380, ControlLogix
5580, GuardLogix
5580 및 ControlLogix 5590 컨트롤러에 적용됩니다.리드-래그(LDLG) 명령어는 입력 신호에 대한 위상 리드-래그 보상을 제공합니다. 이 명령어는 일반적으로 피드포워드 PID 제어 또는 프로세스 시뮬레이션에 사용됩니다.
사용 가능한 언어
래더 다이어그램
이 명령어는 래더 다이어그램에 사용할 수 없습니다.
펑션 블록

구조화된 텍스트
LDLG(LDLG_tag);
피연산자
펑션 블록
피연산자 | 유형 | 형식 | 설명 |
LDLG 태그 | LEAD_LAG | 구조 | LDLG 구조 |
구조화된 텍스트
피연산자 | 유형 | 형식 | 설명 |
LDLG 태그 | LEAD_LAG | 구조 | LDLG 구조 |
스트럭쳐드 텍스트 내 식의 구문에 대한 자세한 내용은
스트럭쳐드 텍스트 구문
을 참조하십시오.LEAD_LAG 구조
입력 매개 변수 | 데이터 유형 | 설명 |
|---|---|---|
EnableIn | BOOL | 활성화 입력. 선택하지 않으면 명령이 실행되지 않고 출력이 업데이트되지 않습니다. 기본값은 설정 상태입니다. |
In | REAL | 명령어의 아날로그 신호 입력. 유효값 = 모든 부동 소수점 수 기본값 = 0.0 |
Initialize | BOOL | 필터 제어 알고리즘을 초기화하도록 요청. Initialize가 설정된 경우 Out = (In x Gain) + Bias. 기본값은 해제입니다. |
Lead | REAL | 리드 타임(초). 리드 제어 알고리즘을 사용하지 않으려면 리드 = 0.0으로 설정합니다. 리드 < 0.0인 경우 명령어에서는 상태에 해당하는 비트가 설정되고 리드가 0.0으로 제한됩니다. Lead > 최대 양의 부동 소수점 수이면 명령어는 Status에서 적절한 비트를 설정합니다. 유효값 = 0.0보다 모든 부동 소수점 수기본값 = 0.0 |
Lag | REAL | 래그 시간(초). 최소 래그 시간은 DeltaT/2입니다. 래그 < DeltaT/2인 경우 명령어에서는 상태에 해당하는 비트가 설정되고 래그가 DeltaT/2로 제한됩니다. Lag > 최대 양의 부동 소수점 수이면 명령어는 Status에서 적절한 비트를 설정합니다. 유효값 = DeltaT/2인 모든 부동 소수점 수기본값 = 0.0 |
Gain | REAL | 프로세스 게인 승수. 이 값을 사용하여 프로세스 게인을 시뮬레이션할 수 있습니다. In 신호에 이 값을 곱합니다. I = (In x Gain) + Bias 유효값 = 모든 부동 소수점 수 기본값 = 1.0 |
Bias | REAL | 프로세스 오프셋 레벨. 이 값을 사용하여 환경 조건을 시뮬레이션할 수 있습니다. 이 값에 In과 Gain을 곱한 결과를 더합니다. I = (In x Gain) + Bias 유효값 = 모든 부동 소수점 수 기본값 = 0.0 |
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 |
출력 매개 변수 | 데이터 유형 | 설명 |
|---|---|---|
EnableOut | BOOL | 활성화 출력. |
Out | REAL | 알고리즘의 계산된 출력. 이 출력에 대해 연산 상태 플래그를 사용합니다. |
DeltaT | REAL | 업데이트 간 경과 시간. 컨트롤 알고리즘에서 프로세스 출력 계산에 사용되는 경과 시간(초)입니다. |
Status | DINT | 펑션 블록의 상태. |
InstructFault (Status.0) | BOOL | 명령어에서 다음 실행 에러 중 하나가 감지됩니다. 마이너 또는 메이저 컨트롤러 에러가 아닙니다. 나머지 상태 비트를 확인하여 발생한 에러를 판단합니다. |
LeadInv (Status.1) | BOOL | Lead < 최소값 또는 Lead > 최대값. |
LagInv (Status.2) | BOOL | Lag < 최소값 또는 Lag > 최대값. |
TimingModeInv (Status.27) | BOOL | 유효하지 않은 TimingMode 값. 타이밍 모드에 대한 자세한 내용은 함수 블록 속성을 참조하세요. |
RTSMissed (Status.28) | BOOL | 실시간 샘플링 모드에서만 사용. ABS | DeltaT - RTSTime | > 1 (.001 초)일 때 설정. |
RTSTimeInv (Status.29) | BOOL | 유효하지 않은 RTSTime 값. |
RTSTimeStampInv (Status.30) | BOOL | 유효하지 않은 RTSTimeStamp 값. |
DeltaTInv (Status.31) | BOOL | 유효하지 않은 DeltaT 값. |
설명
LDLG 명령어에서는 연속된 하나의 리드와 래그가 지원됩니다. 명령어는 구성 가능한 게인과 바이어스 요소도 허용합니다. LDLG 명령어는 스캔 비율이 일정하게 유지되는 태스크로 실행되도록 설계되었습니다.
LDLG 명령어에서는 다음 수식을 사용합니다.

다음 매개 변수 제한 적용:
매개 변수 | 제한 |
|---|---|
리드 | LowLimit = 0.0 HighLimit = 최대 양의 부동 소수점 수 |
래그 | LowLimit = DeltaT/2(DeltaT는 초 단위) HighLimit = 최대 양의 부동 소수점 수 |
출력에 대해 계산된 값이 유효하지 않거나, NAN 또는
INF인 경우 명령어는 Out을 유효하지 않은 값으로 설정하고 연산 오버플로 상태 플래그를 설정합니다. 출력에 대해 계산된 값이 유효해지면 명령어는 내부 매개 변수를 초기화하고 Out = (In x Gain) + Bias를 설정합니다.
INF인 경우 명령어는 Out을 유효하지 않은 값으로 설정하고 연산 오버플로 상태 플래그를 설정합니다. 출력에 대해 계산된 값이 유효해지면 명령어는 내부 매개 변수를 초기화하고 Out = (In x Gain) + Bias를 설정합니다.연산 상태 플래그
아니요
주 폴트/부 폴트
이 명령어에만 해당되는 것은 없습니다. 피연산자 관련 폴트에 대해서는 공통 속성 항목을 참조하십시오.
실행
펑션 블록
조건 | 펑션 블록 조치 |
|---|---|
사전 스캔 | EnableIn 및 EnableOut 비트가 거짓으로 해제됩니다. |
Tag.EnableIn이 거짓임 | EnableIn 및 EnableOut 비트가 거짓으로 해제됩니다. |
Tag.EnableIn이 참임 | EnableIn 및 EnableOut 비트가 참으로 설정됩니다. 명령어가 실행됩니다. |
명령어 최초 실행 | N/A |
명령어 최초 스캔 | "Out = (In * Gain) + Bias" 계산을 실행합니다. 리드/래그 계수를 다시 계산합니다. |
사후 스캔 | EnableIn 및 EnableOut 비트가 거짓으로 해제됩니다. |
구조화된 텍스트
조건/상태 | 수행한 작업 |
|---|---|
사전 스캔 | 펑션 블록 표의 사전 스캔을 참조하십시오. |
정상 실행 | 펑션 블록 표에서 Tag.EnableIn이 참임을 참조하십시오. |
사후 스캔 | 펑션 블록 표에서 사후 스캔을 참조하십시오. |
예
이 예의 LDLG 명령어에서는 1차 래그를 시뮬레이션된 프로세스에 추가합니다. 또는 선택적으로 LDLG 명령어에서 Gain을 입력하여 프로세스 게인을 시뮬레이션하거나 Bias를 입력하여 환경 조건을 시뮬레이션할 수도 있습니다.
펑션 블록

구조화된 텍스트
DEDT_01.In := SimulatedLoop.CVEU;
DEDT(DEDT_01,DEDT_01_array);
LDLG_01.In := DEDT_01.Out;
LDLG(LDLG_01);
SimulatedLoop.PV := LDLG_01.Out;
PIDE(SimulatedLoop);
의견을 작성 부탁드립니다.
모든 부동 소수점 수