WORD와 DWORD란? Bit 데이터 묶어 처리하는 방법
WORD와 DWORD란 PLC에서 여러 Bit를 16-bit와 32-bit 단위로 묶어 저장하고 처리하는 데이터형입니다. Bit 상태 관리와 Mask·논리연산에 활용하는 원리를 알아봅니다.
WORD와 DWORD란 무엇이며 어떻게 구성될까?
WORD와 DWORD는 PLC Program에서 여러 개의 Bit를 하나의 묶음으로 저장하고 처리하기 위해 사용하는 Bit String Data Type입니다. IEC 61131-3 계열에서 WORD는 일반적으로 16-bit, DWORD는 Double Word를 의미하며 32-bit로 구성됩니다. 각 Bit는 0 또는 1의 상태를 가지므로 하나의 WORD에는 16개의 Binary State를, DWORD에는 32개의 Binary State를 표현할 수 있습니다. 예를 들어 16개의 Alarm 상태를 각각 별도의 BOOL Variable로 관리할 수도 있지만 하나의 WORD에 각 Alarm을 Bit별로 배치하여 관리할 수도 있습니다. 이때 일반적으로 Bit 0을 Least Significant Bit, 즉 LSB라고 하고 가장 높은 위치의 Bit를 MSB라고 합니다. WORD에서는 보통 Bit 0~15, DWORD에서는 Bit 0~31을 다루게 됩니다. 다만 실제 Bit 접근 Syntax와 Memory 표현방법은 PLC 제조사마다 다를 수 있습니다. WORD와 DWORD의 핵심은 숫자의 크기를 표현하는 것보다 여러 Binary State를 하나의 Data 단위로 묶어 효율적으로 처리할 수 있다는 점입니다.
WORD·DWORD와 INT·DINT는 무엇이 다를까?
WORD와 INT는 모두 일반적으로 16-bit를 사용하고 DWORD와 DINT는 32-bit를 사용하지만 Data를 해석하는 목적이 다릅니다. INT와 DINT는 Signed Integer로서 숫자 계산을 목적으로 하며 INT는 일반적으로 -32,768~32,767, DINT는 -2,147,483,648~2,147,483,647의 정수범위를 표현합니다. 반면 WORD와 DWORD는 여러 Bit의 Pattern 자체를 다루는 데 적합합니다. 예를 들어 WORD 값 0000 0000 0000 0101은 Bit 0과 Bit 2가 ON된 상태로 해석할 수 있습니다. 동일한 16-bit Pattern을 INT로 해석하면 숫자 5가 되지만 WORD에서는 어떤 Status Bit가 활성화되었는지가 더 중요한 의미가 될 수 있습니다. 따라서 Motor Alarm Status, Device Status Word, Communication Flag와 I/O State처럼 여러 ON·OFF 정보를 묶어 관리할 때 WORD가 유용합니다. PLC에 따라 WORD를 Arithmetic Operation에 직접 사용할 수 있는 경우도 있지만 Data Type의 의미와 Instruction 요구조건을 확인하여 필요한 경우 명시적인 Type Conversion을 사용하는 것이 좋습니다.
여러 Bit 상태를 하나의 WORD로 어떻게 관리할까?
자동화설비에서는 하나의 장치가 여러 상태정보를 동시에 제공하는 경우가 많습니다. 예를 들어 Servo Drive가 Communication을 통해 16-bit Status Word를 PLC에 전달하고 Bit 0은 Ready, Bit 1은 Servo ON, Bit 2는 Running, Bit 3은 Alarm과 같은 의미를 갖도록 정의할 수 있습니다. PLC는 전체 WORD를 한 번에 읽은 뒤 필요한 Bit만 선택하여 Control Logic에 사용할 수 있습니다. 반대로 PLC에서 Drive로 보내는 Control Word도 Enable, Start, Reset과 Direction 등의 Command를 각각의 Bit에 배치할 수 있습니다. 이렇게 하면 여러 BOOL Signal을 개별 Data로 전송하는 대신 하나의 16-bit Data로 묶어 Communication할 수 있어 Protocol 구조를 단순하게 만들 수 있습니다. 하지만 Bit의 의미는 WORD 자체에 포함되어 있는 것이 아닙니다. 동일한 Bit 3이라도 장치마다 Alarm, Enable 또는 다른 기능을 의미할 수 있으므로 제조사의 Communication Map을 확인해야 합니다. 또한 PLC 내부에서는 각 Bit에 의미 있는 Symbolic Name을 연결하면 Program의 가독성을 높일 수 있습니다.
Mask와 Bit 논리연산은 어떻게 활용할까?
WORD와 DWORD는 AND, OR, XOR, NOT과 같은 Bitwise Logical Operation을 사용하기에 적합합니다. 특히 Mask를 이용하면 여러 Bit 중 필요한 상태만 선택하거나 특정 Bit만 변경할 수 있습니다. 예를 들어 Status Word에서 Bit 3의 Alarm 상태만 확인하고 싶다면 Bit 3만 1인 Mask와 AND 연산을 수행하여 해당 Bit가 설정되어 있는지 판단할 수 있습니다. OR 연산은 특정 Bit를 1로 설정하는 데 활용할 수 있고 XOR은 두 Bit Pattern의 차이를 확인하거나 특정 Bit를 반전하는 데 사용할 수 있습니다. NOT은 전체 Bit 상태를 반전합니다. Shift Operation을 사용하면 Bit Pattern을 Left 또는 Right 방향으로 이동시킬 수도 있어 Sequence Data와 Communication Data Processing에 활용됩니다. 다만 일반 Boolean AND와 WORD 단위의 Bitwise AND는 Programming Language와 Data Type에 따라 표현방식이 다를 수 있습니다. 따라서 Ladder, Structured Text 등 사용 언어에서 Operator가 어떤 Type을 처리하는지 확인해야 합니다. Mask 연산을 적절히 사용하면 많은 상태정보를 간결한 Logic으로 분석할 수 있습니다.
WORD·DWORD를 통신에 사용할 때 무엇을 주의해야 할까?
산업용 Communication에서는 WORD 단위의 Data 교환이 매우 흔합니다. Modbus Holding Register는 기본적으로 16-bit 단위이므로 하나의 WORD와 연결하기 쉽고 32-bit DWORD나 DINT, REAL은 두 개의 16-bit Register를 조합하여 전송하는 경우가 많습니다. 이때 반드시 확인해야 하는 것이 Byte Order와 Word Order입니다. 서로 다른 PLC, HMI와 계측기가 Multi-byte Data를 배열하는 순서가 다르면 동일한 Bit Pattern도 전혀 다른 값으로 해석될 수 있습니다. 또한 Communication Manual에서 Bit Number를 0부터 표시하는지 1부터 표시하는지도 확인해야 합니다. Status Word의 특정 Bit를 Alarm으로 사용할 때 잘못된 Bit Position을 참조하면 정상상태를 Fault로 판단하는 문제가 발생할 수 있습니다. WORD를 INT로 변환할 때는 최상위 Bit가 Signed Integer의 Sign Bit로 해석될 수 있다는 점도 주의해야 합니다. 결국 WORD와 DWORD는 여러 Bit 정보를 효율적으로 묶어 처리하는 기본 Data Type이며 Bit Position, Mask와 통신상의 Data Ordering을 정확히 이해하는 것이 안정적인 PLC Program을 만드는 데 중요합니다.




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