일상에 꼭 필요한 정보, 늘 함께하는 나침반 일상에 꼭 필요한 정보, 늘 함께하는 나침반

Mask 연산이란? 필요한 Bit만 추출하는 방법

읽는 시간 약 7분

Mask 연산이란 PLC의 WORD·DWORD 데이터에서 필요한 Bit만 선택해 추출하거나 설정하는 방법입니다. AND·OR·XOR와 Bit Mask를 이용한 데이터 처리 원리를 알아봅니다.

Mask 연산이란 무엇이며 왜 사용할까?

Mask 연산은 PLC의 WORD, DWORD와 같은 Bit Data에서 필요한 Bit만 선택하여 확인하거나 특정 Bit의 상태를 변경하기 위해 사용하는 Data Processing 방법입니다. 자동화설비에서는 여러 개의 상태정보를 하나의 Register에 묶어서 처리하는 경우가 많습니다. 예를 들어 16-bit Status WORD 하나에 Motor Running, Alarm, Ready, Auto Mode 등의 상태를 각각 다른 Bit로 저장할 수 있습니다. 이때 전체 WORD를 하나의 숫자로만 보면 원하는 상태를 바로 확인하기 어렵습니다. 필요한 Bit 위치에만 1을 배치한 별도의 Bit Pattern을 만들고 원본 Data와 Logical Operation을 수행하면 특정 Bit만 선택할 수 있습니다. 이때 사용하는 Bit Pattern을 Mask 또는 Bit Mask라고 합니다. Mask는 Binary, Hexadecimal 또는 Decimal 값으로 표현할 수 있으며 PLC Programming Tool에 따라 표기방법은 달라집니다. 핵심은 Mask의 각 1이 ‘이 위치의 Bit를 대상으로 연산하겠다’는 선택기 역할을 한다는 것입니다.

AND Mask로 특정 Bit를 어떻게 추출할까?

특정 Bit가 ON인지 확인할 때 가장 많이 사용하는 방법이 AND Mask입니다. 예를 들어 8-bit Data가 10110100이고 Bit 2만 확인한다고 가정해 보겠습니다. 여기서 오른쪽 끝을 Bit 0으로 정의하면 Bit 2의 Mask는 00000100입니다. 두 값을 AND하면 10110100 AND 00000100 = 00000100이 됩니다. 결과가 0이 아니므로 해당 Bit가 1이라는 것을 알 수 있습니다. 반대로 원본 Bit가 0이었다면 AND 결과는 0이 됩니다. 이 원리는 16-bit WORD나 32-bit DWORD에서도 동일하게 적용됩니다. 예를 들어 Bit 0 Mask는 Hexadecimal 16#0001, Bit 3은 16#0008과 같이 표현할 수 있지만 실제 Hex 표기 Syntax는 PLC 제조사에 따라 다를 수 있습니다. 여러 Bit를 동시에 확인하려면 원하는 위치를 모두 1로 만든 Mask를 사용할 수도 있습니다. 이후 결과가 0인지, Mask 값과 같은지 등을 비교하면 하나 이상의 Bit가 ON인지 또는 선택한 모든 Bit가 ON인지 구분할 수 있습니다.

OR·XOR Mask는 Bit를 어떻게 변경할까?

Mask는 Bit를 읽는 용도뿐 아니라 특정 Bit의 상태를 변경할 때도 사용할 수 있습니다. OR 연산은 Mask에서 1인 위치를 ON으로 설정하는 데 유용합니다. 예를 들어 원본 Data가 10000000이고 Mask가 00000100이라면 OR 결과는 10000100이 되어 기존 Bit는 유지하면서 선택한 Bit 2만 1로 만들 수 있습니다. 특정 Bit를 반전시키려면 XOR Mask를 사용할 수 있습니다. XOR는 Mask가 1인 위치의 Bit를 0이면 1로, 1이면 0으로 Toggle합니다. 특정 Bit를 OFF로 만들 때는 원본 Data와 반전된 Mask를 AND하는 Data AND NOT Mask 방식이 일반적으로 사용됩니다. 즉 AND는 선택·Clear, OR는 Set, XOR는 Toggle이라는 관계로 이해하면 Bit Manipulation을 쉽게 정리할 수 있습니다. 다만 PLC마다 NOT 연산의 Data Width와 Type Conversion 규칙이 다를 수 있으므로 WORD와 DWORD의 크기를 명확하게 맞추는 것이 중요합니다.

PLC에서는 Mask 연산을 어디에 사용할까?

Mask 연산은 PLC Communication과 Device Status 처리에서 특히 많이 사용됩니다. VFD, Servo Drive, Remote I/O와 Intelligent Device는 여러 상태를 하나의 Status WORD로 전달하는 경우가 있습니다. 예를 들어 Bit 0은 Ready, Bit 1은 Running, Bit 3은 Fault라는 식으로 각 Bit에 의미가 지정됩니다. PLC는 해당 WORD를 수신한 뒤 AND Mask를 사용하여 필요한 상태만 추출할 수 있습니다. 반대로 PLC에서 Drive에 Control WORD를 전송할 때 OR와 AND Mask를 이용하여 특정 Command Bit만 변경하면서 다른 Bit 상태를 유지할 수도 있습니다. Alarm Group, Permission Flag와 Equipment Mode를 하나의 WORD에 Packing할 때도 활용됩니다. 다만 개별 Bit를 Symbolic BOOL Tag로 직접 Mapping할 수 있는 PLC에서는 단순 Logic의 가독성을 위해 Symbolic Bit Access가 더 편리할 수 있습니다. Mask 연산은 여러 Bit를 일괄 처리하거나 Communication Register를 효율적으로 해석해야 할 때 특히 강점을 갖습니다.

Mask 연산을 사용할 때 무엇을 주의해야 할까?

Mask Logic에서 가장 자주 발생하는 오류는 Bit Numbering과 Data Width를 잘못 해석하는 것입니다. 일반적으로 오른쪽의 Least Significant Bit를 Bit 0으로 표시하는 경우가 많지만 Device Manual과 PLC Programming Tool의 표기를 반드시 확인해야 합니다. Communication에서는 Byte Order와 Word Order 문제도 별도로 존재하므로 32-bit Data를 여러 Register로 전송할 때는 더욱 주의해야 합니다. Mask 값을 Decimal로만 작성하면 어떤 Bit를 선택했는지 알아보기 어려울 수 있으므로 Binary 또는 Hexadecimal 표현과 Comment를 활용하면 유지보수성이 좋아집니다. 여러 Bit를 검사할 때는 Result <> 0이 선택된 Bit 중 하나 이상이 ON이라는 의미이고 Result = Mask는 선택한 Bit가 모두 ON이라는 의미가 될 수 있으므로 원하는 조건을 정확하게 구분해야 합니다. 또한 동일한 Control WORD를 여러 Logic에서 수정하면 마지막 연산이 다른 Bit의 상태까지 변경할 가능성이 있으므로 Data Ownership을 명확하게 관리해야 합니다. 결국 Mask 연산은 AND·OR·XOR와 Bit Pattern을 조합하여 PLC Data에서 필요한 Bit만 선택하고 제어하는 핵심 Bit Processing 기법입니다.

jssj2627

함께 보면 좋은 글

댓글 0

첫 댓글을 남겨보세요.

error: Content is protected !!

광고 차단 알림

광고 클릭 제한을 초과하여 광고가 차단되었습니다.

단시간에 반복적인 광고 클릭은 시스템에 의해 감지되며, IP가 수집되어 사이트 관리자가 확인 가능합니다.