PLC AND·OR·XOR 명령이란? Bit 논리연산 원리
PLC AND·OR·XOR 명령이란 BOOL이나 WORD의 각 Bit를 조건에 따라 비교해 새로운 결과를 만드는 논리연산입니다. 진리표와 Bit Mask 처리 원리를 알아봅니다.
PLC AND·OR·XOR 명령이란 무엇일까?
PLC AND·OR·XOR는 BOOL Signal이나 WORD·DWORD와 같은 Bit Data를 대상으로 수행하는 기본적인 Logical Operation입니다. AND는 두 조건이 모두 TRUE일 때 TRUE가 되고, OR는 두 조건 중 하나 이상이 TRUE이면 TRUE가 됩니다. XOR는 두 조건의 상태가 서로 다를 때만 TRUE가 되는 Exclusive OR 연산입니다. BOOL 기준으로 보면 0 AND 1 = 0, 0 OR 1 = 1, 0 XOR 1 = 1과 같이 표현할 수 있습니다. 이러한 연산은 Motor 운전조건, Alarm 판정과 Interlock처럼 개별 BOOL 조건을 조합할 때뿐 아니라 여러 상태가 들어 있는 WORD의 특정 Bit를 검사하거나 변경하는 데도 활용됩니다. PLC 제조사와 Programming Language에 따라 AND, OR, XOR Instruction을 사용하거나 AND, OR, XOR 연산자 또는 기호 형태로 표현할 수 있습니다. Ladder Logic의 직렬·병렬 Contact 역시 논리적으로 AND와 OR 관계를 표현하지만 WORD 전체에 적용하는 Bitwise Operation과는 구분해서 이해하는 것이 중요합니다.
AND 연산은 어떤 조건에서 사용할까?
AND는 여러 조건이 동시에 만족되어야 동작을 허용하는 Logic에 적합합니다. 예를 들어 Motor를 운전하기 위해 Start_Command, Safety_OK, Overload_OK가 모두 TRUE여야 한다면 개념적으로 Motor_Run = Start_Command AND Safety_OK AND Overload_OK와 같이 구성할 수 있습니다. 하나라도 FALSE이면 결과는 FALSE가 됩니다. AND는 WORD Data에서 특정 Bit만 추출하는 Mask 연산에도 많이 사용됩니다. 예를 들어 16-bit Status WORD에서 Bit 3의 상태만 확인하고 싶다면 Bit 3만 1인 Mask와 Status WORD를 AND하여 결과를 검사할 수 있습니다. AND 결과에서 Mask 위치가 1이면 원본 Bit가 ON이었다는 것을 알 수 있습니다. 이 방식은 Communication으로 여러 상태가 하나의 Register에 묶여 들어올 때 특히 유용합니다. 다만 Bit Number와 Mask 값은 0-based 또는 1-based 표기방식에 따라 혼동하기 쉬우므로 Device Manual의 Bit Numbering을 확인해야 합니다.
OR와 XOR 연산은 어떻게 다를까?
OR는 여러 조건 중 하나 이상이 TRUE이면 결과가 TRUE가 됩니다. 따라서 Auto Command 또는 Manual Command 중 어느 하나라도 운전요청이 존재할 때 공통 Request를 만드는 Logic 등에 사용할 수 있습니다. Bitwise OR는 WORD의 특정 Bit를 강제로 1로 설정할 때도 활용할 수 있습니다. 기존 Data와 원하는 Bit Mask를 OR하면 Mask에서 1인 위치는 결과에서도 1이 되고 다른 Bit는 기존상태를 유지할 수 있습니다. XOR는 두 Bit가 서로 다를 때 TRUE가 된다는 특징이 있습니다. 0 XOR 0 = 0, 0 XOR 1 = 1, 1 XOR 0 = 1, 1 XOR 1 = 0입니다. 따라서 두 BOOL 상태가 서로 다른지 비교하거나 특정 Mask Bit를 Toggle하는 연산에 활용할 수 있습니다. 예를 들어 WORD를 Mask와 XOR하면 Mask가 1인 위치의 Bit는 0에서 1 또는 1에서 0으로 반전됩니다. 하지만 XOR를 일반적인 OR와 혼동하면 두 Input이 모두 TRUE일 때 결과가 FALSE가 된다는 점 때문에 예상하지 못한 Logic이 발생할 수 있습니다.
BOOL 연산과 WORD Bit 연산은 무엇이 다를까?
BOOL Logical Operation은 하나의 TRUE·FALSE 상태를 대상으로 하지만 WORD와 DWORD의 Bitwise Operation은 각 Bit 위치를 독립적으로 계산합니다. 예를 들어 4-bit 표현으로 1010 AND 1100을 수행하면 각 자리의 Bit끼리 AND가 적용되어 결과는 1000이 됩니다. 1010 OR 1100은 1110, 1010 XOR 1100은 0110이 됩니다. PLC에서는 이러한 Bitwise Operation을 이용해 Communication Status WORD, Alarm WORD, Control WORD와 Device Register를 효율적으로 처리할 수 있습니다. 여러 BOOL을 하나의 WORD에 Packing하여 전송한 뒤 AND Mask로 필요한 상태를 추출하는 방식이 대표적입니다. 다만 INT와 WORD가 같은 16-bit 폭을 사용하더라도 의미는 다릅니다. INT는 Signed Integer 계산을 목적으로 하고 WORD는 Bit Pattern을 다루는 Bit-string Type입니다. 따라서 Arithmetic Data에 무분별하게 Bitwise Operation을 적용하면 숫자의 의미가 예상과 달라질 수 있으며 Data Type Conversion이 필요한지도 확인해야 합니다.
AND·OR·XOR 연산에서 무엇을 주의해야 할까?
Bit 논리연산에서는 Data Type, Bit Numbering과 Mask 표현을 정확하게 관리해야 합니다. 특히 외부 Device와 Modbus 등의 Communication을 사용할 때 Register 내부의 Bit 순서와 Byte·Word Order를 혼동하면 전혀 다른 상태를 검사할 수 있습니다. Mask는 Binary, Hexadecimal 또는 Decimal 형태로 표현할 수 있으므로 유지보수를 고려해 어떤 Bit를 의미하는지 Comment를 함께 작성하는 것이 좋습니다. 또한 BOOL Logic에서 AND와 OR의 우선순위가 섞인 복잡한 Expression을 작성하면 Programming Language의 Operator Precedence에 따라 결과가 달라질 수 있으므로 Parentheses를 사용하여 의도를 명확하게 표현하는 것이 안전합니다. XOR는 상태불일치 검출과 Toggle에 유용하지만 Safety Interlock처럼 동작조건이 중요한 Logic에서는 Truth Table을 확인하여 모든 Input 조합을 검토해야 합니다. 결국 PLC AND·OR·XOR는 단순한 TRUE·FALSE 판단을 넘어 WORD 내부의 개별 Bit를 추출하고 설정·비교하는 데 사용되는 핵심 Logical Data Processing 기능입니다.




댓글 0
첫 댓글을 남겨보세요.