프로세스 부울 로직(스냅샷 포함)(PBL)
이 정보는 CompactLogix 5380P, ControlLogix 5580P 및 ControlLogix 5590P 컨트롤러에 적용됩니다.
스냅샷이 있는 프로세스 부울 로직(PBL) 명령어는 구성 가능한 부울 로직의 게이트를 최대 8개까지 실행합니다. 사용 가능한 게이트 유형에는 AND, OR, XOR (Exclusive-OR), Set/Reset, Select 및 Majority가 포함됩니다. 각 게이트는 구성 설정을 사용하여 개별적으로 반전할 수 있는 최대 4개의 입력 조건을 제공합니다.
PBL 명령어는 다음과 같은 현재 상태를 기록할 수 있습니다.
- 출력 상태 변경 후.
- 오퍼레이터 또는 프로그램 명령에서.
- 로직 루프백 입력 기반.
사용 가능한 언어
래더 다이어그램

함수 블록 다이어그램

구조화된 텍스트
PBL(PBL tag);
피연산자
중요:
다음과 같은 경우 작업 시 예외가 발생할 수 있습니다.
- 출력 태그 피연산자가 덮어써집니다.
- 구조 피연산자의 구성원이 덮어써집니다.
- 지정된 경우를 제외하고 여러 명령어에서 구조 피연산자를 공유합니다.
명령어 내에서 숫자 데이터 유형을 혼합하기 위한 데이터 변환 규칙이 있습니다. 데이터 변환 항목을 참조하십시오.
구성 피연산자
피연산자 | 유형 | 형식 | 설명 |
|---|---|---|---|
PBL | P_BOOLEAN_LOGIC | 태그 | 명령어의 적절한 연산에 필요한 데이터 구조. |
P_BOOLEAN_LOGIC 구조
공개 구성원은 프로그래밍 방식으로 액세스할 수 있는 표준(표시) 태그 구성원입니다. 비공개의 숨겨진 구성원은 HMI 페이스 플레이트에서 사용되며 프로그래밍 방식으로 액세스할 수 없습니다. 개인 구성원은 공개 구성원 뒤의 별도의 테이블에 있습니다.
공개 입력 구성원 | 데이터 유형 | 설명 |
|---|---|---|
EnableIn | BOOL | 활성화 입력. 래더 다이어그램: 렁 상태에 해당합니다. 기본값은 참입니다. |
Inp_InitializeReq | BOOL | 1 = 명령어를 초기화하도록 요청합니다. 명령어는 명령어 최초 실행에서 정상적으로 초기화됩니다. 재초기화가 필요한 경우 이 요청을 사용합니다. 명령어에 의해 이 피연산자가 자동으로 지워집니다. 기본값은 참입니다. |
Inp_0 | BOOL | 로직 입력 0. 기본값은 거짓입니다. |
Inp_1 | BOOL | 로직 입력 1. 기본값은 거짓입니다. |
Inp_2 | BOOL | 로직 입력 2. 기본값은 거짓입니다. |
Inp_3 | BOOL | 로직 입력 3. 기본값은 거짓입니다. |
Inp_4 | BOOL | 로직 입력 4. 기본값은 거짓입니다. |
Inp_5 | BOOL | 로직 입력 5. 기본값은 거짓입니다. |
Inp_6 | BOOL | 로직 입력 6. 기본값은 거짓입니다. |
Inp_7 | BOOL | 로직 입력 7. 기본값은 거짓입니다. |
Inp_Hold | BOOL | 1 = 스냅샷에서 이전 상태 유지; 0 = 스냅샷에 실시간 상태를 전달합니다. 기본값은 거짓입니다. |
Inp_Reset | BOOL | 1 = 스냅샷 래치 재설정, 실시간 상태를 표시합니다. 기본값은 거짓입니다. |
Cfg_UseInpHold | BOOL | 1 = Inp_Hold를 사용하여 상태 스냅; 0 = Cmds 또는 출력 전환을 사용하여 스냅합니다. 기본값은 거짓입니다. |
Cfg_UsePCmd | BOOL | 1 = PCmd_Snap 0 --> 1(에지)에서 스냅샷을 활성화합니다. 기본값은 참입니다. |
Cfg_UseOCmd | BOOL | 1 = OCmd_Snap 0 --> 1(에지)에서 스냅샷을 활성화합니다. 기본값은 참입니다. |
Cfg_UseOut01 | BOOL | 1 = 출력 0 -> 1(상승 에지)에서 스냅샷을 활성화합니다. 기본값은 참입니다. |
Cfg_UseOut10 | BOOL | 1 = 출력 1 --> 0(폴링 에지)에서 스냅샷을 활성화합니다. 기본값은 거짓입니다. |
Cfg_TimestampOnSnap | BOOL | 1 = 스냅샷이 발생할 때 타임스탬프를 생성합니다. 기본값은 거짓입니다. |
Cfg_SnapOver | BOOL | 1 = 새 스냅샷이 재설정 없이 덮어쓰기, 0 = 초기화될 때까지 첫 번째 스냅샷을 저장합니다. 기본값은 거짓입니다. |
Cfg_HasMoreObj | BOOL | 1 = 자세한 정보를 볼 수 있는 객체를 HMI에 알립니다. 기본값은 거짓입니다. |
Cfg_HasNav | SINT | 설정 비트는 활성화된 탐색 버튼을 나타냅니다. 기본값은 2#0000_0000입니다. |
Cfg_OnDly | REAL | 출력 켜짐(ON) 지연 시간(초). 유효값 = 0.0~2147483.0 기본값은 0.0입니다. |
Cfg_OffDly | REAL | 출력 꺼짐(OFF) 지연 시간(초). 유효값 = 0.0~2147483.0 기본값은 0.0입니다. |
Cfg_CnfrmReqd | SINT | 오퍼레이터 명령 확인이 필요합니다. 필요한 명령 확인 유형을 나타냅니다. 0 = 없음, 1 = 명령 확인 필요, 2 = 수행자 전자 서명 필요, 3 = 수행자 및 승인자 전자 서명 필요. 기본값은 0입니다. |
PCmd_Snap | BOOL | 입력, 게이트 상태를 스냅샷에 캡처하는 프로그램 명령. 기본값은 거짓입니다. |
PCmd_Reset | BOOL | 스냅샷 래치를 재설정(다시 아밍)하는 프로그램 명령. 기본값은 거짓입니다. |
공개 출력 구성원 | 데이터 유형 | 설명 |
|---|---|---|
EnableOut | BOOL | 활성화 출력. 이 출력 상태는 항상 EnableIn 입력 상태를 반영합니다. |
Out_Live | BOOL | 지연 후 Condition 로직 출력(결과)입니다. |
Out_Snap | BOOL | 스냅샷의 Condition 로직 출력(결과)입니다. |
Val_DlyPctLive | DINT | 출력 OnDelay 또는 OffDelay 완료율(실시간)입니다. |
Val_DlyPctSnap | DINT | 출력 OnDelay 또는 OffDelay 완료율(스냅샷)입니다. |
Val_SnapInit | DINT | 스냅샷 초기자: 1 = OCmd, 2 = PCmd, 3 = Out 0-->1, 4 = Out 1-->0, 5 = Inp_Hold. |
Sts_Initialized | BOOL | 1 = 명령어가 초기화됩니다. Inp_InitializeReq를 사용하여 다시 초기화합니다. |
Sts_Snapped | BOOL | 1 = 스냅샷이 트리거됨, 0 = 실시간 상태를 나타내는 스냅샷. |
Sts_RdyReset | BOOL | 1 = 래치 경보 또는 쉐드 조건을 재설정할 준비가 되었습니다. |
Sts_InpLive | SINT | 실시간 입력 상태 비트: .0 ~ .7 = Inp_0 ~ Inp_7. |
Sts_GateLive | SINT | 실시간 게이트 결과 상태 비트: .0 ~ .7 = 게이트 0 ~ 7. |
Sts_InpSnap | SINT | 입력 상태 비트의 스냅샷: .0 ~ .7 = Inp_0 ~ Inp_7. |
Sts_GateSnap | SINT | 게이트 결과 상태 비트의 스냅샷: .0 ~ .7 = 게이트 0 ~ 7. |
Sts_GateSrc1Live | SINT | 각 게이트의 소스 1에 대한 실시간 와이어 상태(비트# = 게이트#). |
Sts_GateSrc2Live | SINT | 각 게이트의 소스 2에 대한 실시간 와이어 상태(비트# = 게이트#). |
Sts_GateSrc3Live | SINT | 각 게이트의 소스 3에 대한 실시간 와이어 상태(비트# = 게이트#). |
Sts_GateSrc4Live | SINT | 각 게이트의 소스 4에 대한 실시간 와이어 상태(비트# = 게이트#). |
Sts_GateSrc1Snap | SINT | 각 게이트의 소스 1에 대한 와이어 상태의 스냅샷(비트# = 게이트#). |
Sts_GateSrc2Snap | SINT | 각 게이트의 소스 2에 대한 와이어 상태의 스냅샷(비트# = 게이트#). |
Sts_GateSrc3Snap | SINT | 각 게이트의 소스 3에 대한 와이어 상태의 스냅샷(비트# = 게이트#). |
Sts_GateSrc4Snap | SINT | 각 게이트의 소스 4에 대한 와이어 상태의 스냅샷(비트# = 게이트#). |
Sts_OutInvertLive | BOOL | 인버터 이후의 출력이지만 TON/TOF 타이머 이전. |
Sts_OutInvertSnap | BOOL | 인버터 이후의 출력 스냅샷이지만 TON/TOF 이전. |
Sts_Err | BOOL | 1 = 구성 중 오류: 이유는 상세 비트(Sts_Errxxx)를 참조하세요. |
Sts_ErrGateFunc | SINT | 1 = 각 게이트 함수 코드에서 오류 발생(0 ~ 6 사용). |
Sts_ErrGateSrcPtr | SINT | 1 = 각 게이트의 소스 포인터에서 오류 발생(0 ~ 15 사용). |
Sts_ErrGateSrcMask | SINT | 1 = 각 게이트 마스크(사용된 소스) 구성에서 오류 발생(수량 선택). |
Sts_ErrOutSrcPtr | BOOL | 1 = 출력의 소스 포인터에서 오류 발생(0 ~ 15 사용). |
Sts_ErrTimer | BOOL | 1 = 출력의 온 딜레이 또는 오프 딜레이 사전 설정 오류(0.0 ~ 2147483.0 사용). |
개인 입력 구성원 | 데이터 유형 | 설명 |
|---|---|---|
Cfg_GateFunc | DINT[8] | 게이트 M의 기능 코드(1 = AND, 2 = OR, 3 = XOR, 4 = 2oo3, 5 = 설정-재설정). |
Cfg_GateSrc1Invert | SINT | 게이트 M 소스 #1 반전(M, 비트 기준) (1 = 반전). 기본값은 2#0000_0000입니다. |
Cfg_GateSrc1Mask | SINT | 게이트 M 소스 #1 사용됨(M, 비트 기준) (1 = 사용됨). 기본값은 2#0000_0000입니다. |
Cfg_GateSrc1Ptr | DINT[8] | 게이트 M 소스에 대한 포인터 #1(0...7 = 입력, 8...15 = 게이트 출력). |
Cfg_GateSrc2Invert | SINT | 게이트 M 소스 #2 반전(M, 비트 기준) (1 = 반전). 기본값은 2#0000_0000입니다. |
Cfg_GateSrc2Mask | SINT | 게이트 M 소스 #2 사용됨(M, 비트 기준) (1 = 사용됨). 기본값은 2#0000_0000입니다. |
Cfg_GateSrc2Ptr | DINT[8] | 게이트 M 소스에 대한 포인터 #2(0...7 = 입력, 8...15 = 게이트 출력). |
Cfg_GateSrc3Invert | SINT | 게이트 M 소스 #3 반전(M, 비트 기준) (1 = 반전). 기본값은 2#0000_0000입니다. |
Cfg_GateSrc3Mask | SINT | 게이트 M 소스 #3 사용됨(M, 비트 기준) (1 = 사용됨). 기본값은 2#0000_0000입니다. |
Cfg_GateSrc3Ptr | DINT[8] | 게이트 M 소스에 대한 포인터 #3(0...7 = 입력, 8...15 = 게이트 출력). |
Cfg_GateSrc4Invert | SINT | 게이트 M 소스 #4 반전(M, 비트 기준) (1 = 반전). 기본값은 2#0000_0000입니다. |
Cfg_GateSrc4Mask | SINT | 게이트 M 소스 #4 사용됨(M, 비트 기준) (1 = 사용됨). 기본값은 2#0000_0000입니다. |
Cfg_GateSrc4Ptr | DINT[8] | 게이트 M 소스에 대한 포인터 #4(0...7 = 입력, 8...15 = 게이트 출력). |
Cfg_HasNav | SINT | 설정 비트는 활성화된 탐색 버튼을 나타냅니다. 기본값은 2#0000_0000입니다. |
Cfg_OutSrcInvert | BOOL | 출력 소스(최소 기간 타이머 전) 반전됨(1 = 반전). 기본값은 거짓입니다. |
Cfg_OutSrcPtr | DINT | 출력의 소스 비트(0...7 = 입력, 8...15 = 게이트). 기본값은 0입니다. |
HMI_Const | SINT[9] | 상수(매개 변수의 HMI 간접 참조에 사용할 경우). |
OCmd_Reset | BOOL | 스냅샷 래치를 재설정(다시 아밍) 오퍼레이터 명령입니다. 기본값은 거짓입니다. |
OCmd_Snap | BOOL | 입력, 게이트 상태를 스냅샷에 캡처하는 오퍼레이터 명령입니다. 기본값은 거짓입니다. |
개인 출력 구성원 | 데이터 유형 | 설명 |
|---|---|---|
ORdy_Reset | BOOL | 1 = OCmd_Reset 준비(버튼 활성화). |
ORdy_Snap | BOOL | 1 = OCmd_Snap 준비(버튼 활성화). |
Val_LastGate | DINT[8] | 이 게이트 결과를 사용하는 마지막 게이트 핀(0 = 사용하지 않음, 1...32 = 게이트, 33 = 출력). |
Val_LastInp | DINT[8] | 이 입력을 사용하는 마지막 게이트 핀(0 = 사용하지 않음, 1...32 = 게이트, 33 = 출력). 애니메이션의 경우. |
Val_SnapTimestamp | DINT[7] | 스냅샷 타임스탬프 [0] = 년, [1] = 월, [2] = 일, [3] = 시간, [4] = 분, [5] = 초, [6] = usecond. |
연산
PBL 명령어:
- 최대 8개의 부울 입력과 8개의 로직 게이트를 제공합니다.
- 각 게이트에는 4개의 입력이 있습니다. 각 입력은 활성화 또는 비활성화할 수 있으며 정상 또는 반전될 수 있습니다. 활성화된 각 게이트 입력은 명령어 입력 또는 이전 게이트의 결과인 소스에 연결할 수 있습니다.
- 다음 방법 중 하나를 사용하여 8개의 게이트를 구성합니다.
- 논리 AND: 활성화된 모든 게이트 입력이 반전 구성 후 참인 경우 게이트의 출력이 참입니다. AND 게이트는 최대 4개의 입력을 활성화할 수 있습니다.
- 논리 OR: 활성화된 게이트 입력이 반전 구성 후 참인 경우 게이트의 출력이 참입니다. OR 게이트는 최대 4개의 입력을 활성화할 수 있습니다.
- 논리 XOR(배타적 OR): 활성화된 게이트 입력의 홀수가 반전 구성 후 참인 경우 게이트의 출력이 참입니다. XOR 게이트는 최대 4개의 입력을 활성화할 수 있습니다.
- 설정-재설정: 게이트의 출력은 Set 입력 중 하나가 참인 경우 참으로 설정되고 Reset 입력 중 하나가 참인 경우 거짓으로 해제됩니다. 게이트의 네 가지 입력은 다음과 같습니다.입력 1: SET(우세)입력 2: RESET(우세)입력 3: SET입력 4: RESET
- 선택: 입력 3이 거짓인 경우 입력 1의 상태가 게이트 출력으로 전달됩니다. 입력 3이 참인 경우 입력 2의 상태가 게이트 출력으로 전달됩니다. Select 게이트에는 입력 3을 활성화해야 하며 입력 1과 2 중 하나 또는 모두를 사용할 수 있어야 합니다.
- Majority('M/N'에 대해 'MooN'으로 표시됨): 게이트의 출력은 대부분의 입력이 반전을 구성한 후에 참인 경우 참으로 설정됩니다. Majority는 2 중 2, 3 중 2, 4 중 3으로 구성됩니다. Majority 게이트는 2개, 3개 또는 4개의 입력을 활성화할 수 있습니다.
- 모든 입력 상태, 게이트 상태 및 출력 상태를 재설정할 때까지 나중에 사용할 명령어 상태를 캡처하는 스냅샷 기능을 제공합니다. 스냅샷 기능은 종료 후 로직 상태가 변경되더라도 트립 또는 장비 종료 시 로직의 상태를 캡처합니다. 스냅샷은 해당 년, 월, 일, 시간, 분, 초 또는 마이크로초 단위의 컨트롤러 클럭에서 선택적으로 타임스탬프됩니다.
- 다음 스냅샷 트리거 조건을 사용하는 옵션을 제공합니다.
- 오퍼레이터 명령에서 스냅샷 캡처(OCmd_Snap).
- 프로그램 명령에서 스냅샷 캡처(PCmd_Snap).
- 출력이 0에서 1로 전환할 때 스냅샷 캡처.
- 1에서 0으로 출력 전환 시 스냅샷 캡처.
- 루프백 입력이 참이 될 때 이전 스캔 상태의 스냅샷을 캡처합니다. 이 기능은 PBL 출력 조건이 다운스트림 PINTLK 블록에서 첫 번째 출력 조건인 경우 스냅샷을 캡처합니다. PINTLK 명령어의 최초 출력 표시를 PBL 명령어의 Inp_Hold 입력으로 다시 루프백하여 마지막 스캔의 타임스탬프를 포함하여 스냅샷에 마지막 스캔 상태를 유지할 수 있습니다.
구현
다음과 같은 상황에서는 PBL 명령어를 사용합니다.
- 프로젝트에 PINTLK(Interlocks) 또는 PPERM(Permissives) Add-On 명령어에서 제공하는 간단한 OR-ing 또는 AND-ing보다 더 복잡한 Interlock 또는 Permissive 조건이 필요한 경우.
- 프로젝트에 온라인 HMI에서 재구성할 수 있는 일부 부울(조합) 로직이 필요하거나 타임스탬프가 있는 로직 상태 사본을 저장하기 위한 스냅샷 기능이 필요한 경우.
- 프로젝트에 PINTLK 및 PPERM Add-On 명령어에서 제공하는 인터록 조건 또는 권한 조건이 16개 넘게 포함되어 있지만 일부 조건을 하나의 ID로 그룹화할 수 있는 경우. 예를 들어, 펌프와 모터에 대한 모든 베어링 과열 신호(Pump Inboard Bearing, Pump Outboard Bearing, Motor Inboard Bearing, Motor Outboard Bearing)는 PBL 명령어에서 함께 OR될 수 있으며 결과는 PINTLK 명령어에 단일 Bearing Overtemp 조건으로 표시됩니다.
다음과 같은 상황에서는 이 명령어를 사용하지 마십시오.
- 프로젝트에 PINTLK 및 PPERM 명령으로 직접 처리할 수 있는 간단한 인터록 및 권한이 필요한 경우. 이러한 명령어는 작동 또는 트립 작동을 허용할 수 있습니다.
- 프로젝트에 PBL Add-On 명령어 기능을 넘어서거나 시간이 매우 중요한 로직이 필요한 경우. PBL 명령어는 8개의 입력, 8개의 게이트, 1개의 출력만 제공하며 온 딜레이 및 오프 딜레이 타이밍이 있으며 테이블 구동 코드로 구현됩니다. 대신 하드 코딩된 로직을 기본 컨트롤러 언어로 사용합니다. 네이티브 프로그래밍 언어가 더 빠르고 PBL 명령어가 할 수 있는 것 이상의 기능을 제공하는 경우.
이 다이어그램은 PBL 명령어의 기능을 보여줍니다.

구성
다음 태그를 사용하여 최대 8개의 게이트를 구성할 수 있습니다.
Cfg_GateFunc[M] – 이 구성은 게이트 함수를 정의하는 배열입니다. M = 게이트 번호, 0-7.
- 1 = 논리 AND 게이트
- 2 = 논리 OR 게이트
- 3 = 논리 XOR 게이트
- 4 = 대다수의 출력이 참임
- 5 = 설정/재설정
- 6 = A/B 선택기
각 게이트에는 4개의 입력 핀이 있습니다. 각 입력 핀은 다음 태그를 사용하여 활성화 또는 비활성화할 수 있습니다.
Cfg_GateSrc#Mask: 이 구성은 이진수 형식으로 입력 핀에 대해 활성화된 게이트(0-7)를 마스크하는 SINT 값입니다. # = 입력 핀 번호(1-4). 마스크 비트가 높으면 특정 입력 핀의 게이트가 활성화됩니다.
예:
- Cfg_GateSrc1Mask.0 = 게이트 0의 1 입력 핀 1이 활성화됨
- Cfg_GateSrc2Mask.1 = 게이트 1의 1 입력 핀 2가 활성화됨
- Cfg_GateSrc3Mask.3 = 게이트 3의 1 입력 핀 3이 활성화됨
- Cfg_GateSrc4Mask.0 = 게이트 0의 1 입력 핀 4가 활성화됨
각 게이트 입력 핀은 정상 또는 반전될 수 있습니다.
Cfg_GateSrc#Invert: 이 구성은 입력을 반전시키는 SINT 값입니다. # = 입력 핀 번호(1-4).
예:
- Cfg_GateSrc1Invert.0 = 게이트 0의 1 입력 핀 1이 반전됩니다.
- Cfg_GateSrc2Invert.2 = 게이트 2의 1 입력 핀 2가 반전됩니다.
- Cfg_GateSrc3Invert.3 = 게이트 3의 1 입력 핀 3이 반전됨
- Cfg_GateSrc4Invert.6 = 게이트 4의 1 입력 핀 6가 반전됩니다.
활성화된 각 게이트 입력 핀은 명령어 입력 또는 선행 게이트의 결과인 소스에 연결할 수 있습니다.
Cfg_GateSrc#Ptr[M] - 이 구성은 각 게이트의 입력 핀에 대한 소스를 정의하는 배열입니다. 여기서 #은 입력 핀 번호(1-4), M = 게이트 번호(0-7)입니다. 0-7 값은 명령어 입력을 나타냅니다. 8-15 값은 이전 게이트의 결과를 나타냅니다.
팁:
게이트는 더 높은 게이트 값을 가진 다른 게이트에 대한 입력으로만 사용할 수 있습니다.
예:
- Cfg_GateSrc1Ptr[0] = 2는 Inp_2가 핀 1의 게이트 0에 구성되었음을 나타냅니다.
- Cfg_GateSrc2Ptr[0] = 3은 Inp_3이 핀 2의 게이트 0에 구성되었음을 나타냅니다.
- Cfg_GateSrc3Ptr[2] = 8은 게이트 0 결과가 핀 3의 게이트 2에 구성되었음을 나타냅니다.
- Cfg_GateSrc4Ptr[7] = 12는 게이트 4 결과가 핀 4의 게이트 7에 구성되었음을 나타냅니다.
다음 태그를 사용하여 출력을 구성합니다.
- Cfg_OutSrcPtr – 이 구성은 출력이 이루어 질 입력/게이트를 결정합니다. 0-7 값은 명령어 입력을 나타냅니다. 8-15 값은 게이트 결과를 나타냅니다.
- Cfg_OutSrcInvert – 이 구성은 출력이 반전되는지 여부를 결정합니다.
HMI용 문자열 구성
HMI 페이스 플레이트(FT 보기)과 Logix Designer 구성 대화 상자의 문자열을 구성합니다. 문자열은 태그 항목의 확장 속성으로 설정됩니다. 문자열을 Logix Designer에서만 구성합니다.
- 설명
- 그래픽 기호 레이블
- HMI 페이스 플레이트 호출용 디스플레이 라이브러리
- 명령어 이름
- 영역 이름
- URL 링크
- 0-상태 및 1-상태의 상태 이름 문자열
- 추가 정보
PBL 명령어 모니터링
모니터링을 위해 프로세스 객체의 PlantPAx 라이브러리에서 작업자 페이스 플레이트를 사용합니다.
연산 상태 플래그에 영향
아니요.
주 폴트/부 폴트
이 명령어에만 해당되는 것은 없습니다. 배열 인덱스 폴트의 경우 배열을 통한 인덱스를 참조하세요.
실행
래더 다이어그램
조건/상태 | 수행한 작업 |
|---|---|
사전 스캔 | 출력 온 딜레이 및 오프 딜레이 타이머를 재설정합니다. 스냅샷 타임스탬프와 데이터를 지웁니다. 컨트롤러가 프로그램 모드에 있는 동안 수신된 모든 명령을 지웁니다. |
명령어 최초 실행 | 출력 온 딜레이 및 오프 딜레이 타이머를 재설정합니다. 스냅샷 타임스탬프와 데이터를 지웁니다. 컨트롤러가 프로그램 모드에 있는 동안 수신된 모든 명령을 지웁니다. |
렁-입력-조건이 거짓임 | 출력을 거짓(꺼짐)으로 지우고 출력 온 딜레이 및 오프 딜레이 타이머를 재설정합니다. |
렁-입력-조건이 참임 | 렁-출력-조건을 렁-입력-조건으로 설정합니다. 명령어가 실행됩니다. |
사후 스캔 | 렁-출력-조건이 거짓으로 해제됩니다. |
함수 블록 다이어그램
조건/상태 | 수행한 작업 |
|---|---|
사전 스캔 | 출력 온 딜레이 및 오프 딜레이 타이머를 재설정합니다. 스냅샷 타임스탬프와 데이터를 지웁니다. 컨트롤러가 프로그램 모드에 있는 동안 수신된 모든 명령을 지웁니다. |
명령어 최초 실행 | 출력 온 딜레이 및 오프 딜레이 타이머를 재설정합니다. 스냅샷 타임스탬프와 데이터를 지웁니다. 컨트롤러가 프로그램 모드에 있는 동안 수신된 모든 명령을 지웁니다. |
명령어 최초 스캔 | 함수 블록 다이어그램 표에서 명령어 최초 실행을 참조하십시오. |
EnableIn이 거짓임 | 출력을 거짓(꺼짐)으로 지우고 출력 온 딜레이 및 오프 딜레이 타이머를 재설정합니다. |
EnableIn이 참임 | EnableOut이 참으로 설정됩니다. 명령어가 실행됩니다. |
사후 스캔 | EnableIn 및 EnableOut 비트가 거짓으로 해제됩니다. |
구조화된 텍스트
구조화된 텍스트에서 정상 스캔 중에 EnableIn은 항상 참입니다. 명령어는 로직에서 활성화한 컨트롤 경로에 있을 때 실행됩니다.
조건/상태 | 수행한 작업 |
|---|---|
사전 스캔 | 함수 블록 다이어그램 표의 사전 스캔을 참조하십시오. |
명령어 최초 실행 | 함수 블록 다이어그램 표에서 명령어 최초 실행을 참조하십시오. |
EnableIn이 참임 | 함수 블록 다이어그램 표의 EnableIn이 참인 경우를 참조하십시오. |
사후 스캔 | 함수 블록 다이어그램 표에서 사후 스캔을 참조하십시오. |
예
이 예에서는 PBL 명령어를 사용하여 모터의 권선 온도를 기반으로 하는 고급 인터록 로직을 수행합니다. 이 예에서는 예제를 완전히 설명하기 위해 매개 변수 설정을 탐색합니다.
이 예에는 권선의 온도를 측정하는 3개의 RTD가 있는 모터가 있습니다. 권선이 손상되지 않게 하려면 다음과 같은 경우 모터를 인터록해야 합니다.
- 모든 권선이 높음-높음 온도 제한을 초과합니다.
- 대부분의 권선은 높음 온도 제한을 초과합니다.
PBL이 이 기능을 수행합니다. 이 로직의 출력은 로직의 다른 위치에 모터의 인터록을 피드합니다.
래더 다이어그램

함수 블록 다이어그램

이 예에는 권선의 온도를 측정하는 3개의 RTD가 있는 모터가 있습니다. 권선이 손상되지 않게 하려면 3가지 권선 중 어느 것이라도 높음-높음 온도 제한보다 높거나 대부분의 권선이 높음 온도 제한보다 높은 경우 모터를 인터록해야 합니다. PBL이 이 기능을 수행하는 데 사용되고 있습니다. 이 로직의 출력은 로직의 다른 위치에 모터의 인터록을 피드합니다.
입력 매개 변수(Inp_0, Inp_1, Inp_2, Inp_3, Inp_4, Inp_5)는 3가지 권선 온도 입력의 상태 출력에 연결됩니다. PBL에서 8개 중 3개 게이트(0...7)가 이 예(1, 5, 6)에 사용됩니다. 게이트 1은 3개의 높음-높음 상태 비트의 OR입니다. 게이트 5는 대부분의 높음 상태 비트가 참인지 확인합니다. 게이트 6은 게이트 1과 게이트 5의 출력을 OR하여 PBL의 출력을 설정합니다.
게이트 함수(게이트 1과 6을 OR로, 게이트 5를 Majority로)로 설정하려면 다음 설정을 사용합니다.
- Cfg_GateFunc[1] = 2
- Cfg_GateFunc[5] = 6
- Cfg_GateFunc[6] = 2
게이트 1은 다음 설정을 사용하여 3개의 높음-높음 상태 입력(Inp_0, Inp_2 및 Inp_4)을 보도록 설정됩니다.
- Cfg_GateSrc1Mask.1 = 1, Cfg_GateSrc1Ptr[1] = 0
- Cfg_GateSrc2Mask.1 = 1, Cfg_GateSrc2Ptr[1] = 2
- Cfg_GateSrc3Mask.1 = 1, Cfg_GateSrc3Ptr[1] = 4
게이트 5는 다음 설정을 사용하여 3개의 높음 상태 입력(Inp_1, Inp_4 및 Inp_5)을 보도록 설정됩니다.
- Cfg_GateSrc1Mask.5 = 1, Cfg_GateSrc1Ptr[5] = 1
- Cfg_GateSrc2Mask.5 = 1, Cfg_GateSrc2Ptr[5] = 3
- Cfg_GateSrc3Mask.5 = 1, Cfg_GateSrc3Ptr[5] = 5
마지막으로, 게이트 6은 다음 설정을 사용하여 게이트 1과 5의 출력을 보도록 설정됩니다.
- Cfg_GateSrc1Mask.6 = 1, Cfg_GateSrc1Ptr[6] = 9
- Cfg_GateSrc2Mask.6 = 1, Cfg_GateSrc2Ptr[6] = 13
Cfg_OutSrcPtr은 게이트 6에서 출력을 가져와 PBL 블록의 출력(Out_Live)으로 만들려면 14로 설정해야 합니다. 그런 다음 출력의 의사 트립을 방지하도록 온 딜레이 시간이 5초로 설정됩니다(Cfg_OnDly = 5).
마지막으로, 설명은 페이스 플레이트에 대한 문서를 제공합니다. 이 예에서는 다음 설명의 설정이 있습니다.
- Out_Live.@State0 = 정상
- Out_Live.@State1 = 트립됨
- Inp_0.@Label = 권선 A Hi-Hi Temp
- Inp_1.@Label = 권선 A Hi Temp
- Inp_2.@Label = 권선 B Hi-Hi Temp
- Inp_3.@Label = 권선 B Hi Temp
- Inp_4.@Label = 권선 C Hi-Hi Temp
- Inp_5.@Label = 권선 C Hi Temp
이 다이어그램은 다음 예제의 기능을 보여줍니다.

구조화된 텍스트
TI1_P50.Inp_PVData := I_TE1_P50;
TI1_P50.Inp_PVUncertain := (CAF_117[12] OR Local_12_I_CH0Fault);
PAI(TI1_P50);
TI2_P50.Inp_PVData := I_TE2_P50;
TI2_P50.Inp_PVUncertain := (CAF_117[12] OR Local_12_I_CH1Fault);
PAI(TI2_P50);
TI3_P50.Inp_PVData := I_TE3_P50;
TI3_P50.Inp_PVUncertain := (CAF_117[12] OR Local_12_I_CH2Fault);
PAI(TI3_P50);
TI1_P50.Sts_HiHi := NG_PBL.Inp_0;
TI1_P50.Sts_Hi := NG_PBL.Inp_1;
TI2_P50.Sts_HiHi := NG_PBL.Inp_2;
TI2_P50.Sts_Hi := NG_PBL.Inp_3;
TI3_P50.Sts_HiHi := NG_PBL.Inp_4;
TI3_P50.Sts_Hi := NG_PBL.Inp_5;
PBL(NG_PBL);
의견을 작성 부탁드립니다.