BOOL이란? PLC에서 TRUE·FALSE 저장 원리
BOOL이란 PLC 프로그램에서 TRUE와 FALSE 두 가지 논리상태를 표현하는 데이터형입니다. 센서 입력·출력·인터록·알람에서 BOOL 변수를 사용하는 원리를 알아봅니다.
BOOL이란 무엇이며 어떤 값을 저장할까?
BOOL은 Boolean의 약자로 PLC Program에서 TRUE와 FALSE라는 두 가지 Logical State를 표현하기 위한 기본 Data Type입니다. 일반적으로 TRUE는 조건이 성립한 상태, FALSE는 조건이 성립하지 않은 상태를 의미하며 논리적으로 1과 0에 대응시켜 이해할 수 있습니다. 예를 들어 Start_Button, Motor_Run, Door_Closed, Alarm_Active와 같은 Variable을 BOOL로 선언하면 각 변수는 두 가지 상태 중 하나를 나타냅니다. PLC는 실제 산업현장에서 Sensor ON·OFF, Relay 상태와 Output Command처럼 이진적인 신호를 매우 많이 처리하기 때문에 BOOL은 가장 기본적이고 자주 사용되는 Data Type 중 하나입니다. 다만 BOOL이 TRUE라고 해서 반드시 실제 전선에 전압이 존재한다는 의미는 아닙니다. BOOL은 Program 내부의 Logical Value이므로 Physical Input을 나타낼 수도 있고 계산된 조건, 내부 Memory 또는 Communication으로 받은 상태를 나타낼 수도 있습니다. 따라서 변수 이름과 Signal의 의미를 함께 확인해야 정확하게 해석할 수 있습니다.
BOOL은 PLC 입력·출력에서 어떻게 사용될까?
Digital Input과 Digital Output은 BOOL Variable과 밀접하게 연결됩니다. 예를 들어 Proximity Sensor가 PLC Digital Input에 연결되어 있고 Target을 검출했을 때 Input Bit가 활성화되도록 구성되어 있다면 해당 상태를 Part_Detected라는 BOOL Variable에 연결할 수 있습니다. PLC Program은 이 값을 이용하여 Conveyor를 정지시키거나 다음 Sequence를 시작할 수 있습니다. Digital Output도 마찬가지로 Motor_Run_Cmd가 TRUE가 되었을 때 Output Module을 통해 Contactor나 Relay를 구동하도록 구성할 수 있습니다. 하지만 Field Signal의 Electrical Logic과 Program의 BOOL 의미가 항상 동일한 것은 아닙니다. NC Sensor나 Fail-safe Logic에서는 정상상태에 Input Voltage가 존재하고 이상상태에서 Signal이 OFF될 수도 있습니다. 따라서 Input ON = TRUE = 정상이라고 일률적으로 해석하면 안 됩니다. 좋은 PLC Program에서는 Physical Input 상태를 그대로 사용하는 것보다 Guard_Closed, Pressure_OK처럼 실제 의미가 드러나는 BOOL Tag를 만들어 Logic의 가독성을 높이는 방법을 사용할 수 있습니다.
BOOL 변수는 AND·OR·NOT 연산에서 어떻게 처리될까?
BOOL Data는 PLC의 Logical Operation과 조건판단에 사용됩니다. AND 연산은 모든 조건이 TRUE일 때 결과가 TRUE가 되고 OR 연산은 여러 조건 가운데 하나 이상이 TRUE이면 결과가 TRUE가 됩니다. NOT은 TRUE와 FALSE를 반대로 변환합니다. 예를 들어 Motor가 운전하려면 Start Command가 존재하고 Safety Condition과 Pressure Condition이 모두 만족되어야 한다면 Start_Cmd AND Safety_OK AND Pressure_OK와 같은 논리관계를 구성할 수 있습니다. 반대로 여러 Fault 가운데 하나라도 발생하면 Alarm을 발생시키려면 Overload OR Overtemp OR Sensor_Fault와 같은 Logic을 사용할 수 있습니다. Ladder Diagram에서는 Contact와 Coil을 통해 이러한 Boolean Logic을 시각적으로 표현하며 Structured Text에서는 AND, OR, NOT 등의 Operator를 직접 사용할 수 있습니다. BOOL 변수는 Comparison 결과에도 사용됩니다. 예를 들어 Temperature > 80.0이라는 비교식의 결과 자체가 TRUE 또는 FALSE가 되어 다음 Control Logic의 조건으로 활용될 수 있습니다.
BOOL과 Bit는 항상 같은 의미일까?
BOOL은 논리적으로 두 가지 상태를 표현하므로 흔히 1 Bit Data라고 설명하지만 실제 PLC Memory에서 BOOL 하나가 항상 정확히 1 Bit의 물리적 Memory만 차지한다고 단정할 수는 없습니다. PLC CPU의 Architecture, Programming Environment, Data Alignment와 Structure 구성방법에 따라 BOOL Variable의 실제 Memory Allocation 방식이 달라질 수 있기 때문입니다. 또한 WORD나 DWORD는 여러 Bit를 하나의 Data로 묶어 저장하며 각각의 Bit를 개별 BOOL 조건처럼 접근할 수 있는 PLC도 있습니다. 예를 들어 16-bit WORD의 각 Bit를 Alarm Status나 Equipment State로 사용할 수 있지만 WORD 전체는 하나의 Integer 또는 Bit Pattern으로 처리될 수도 있습니다. Communication에서는 이 차이가 더욱 중요합니다. Modbus Coil은 1-bit 상태를 다루는 반면 Holding Register는 16-bit 단위이므로 여러 BOOL 상태를 Register의 Bit에 Packing하여 전송하기도 합니다. 따라서 BOOL은 Program의 Logical Data Type이고 Bit는 Binary Data를 구성하는 최소 정보단위라는 점을 구분해서 이해하는 것이 좋습니다.
BOOL 변수를 사용할 때 무엇을 주의해야 할까?
BOOL Variable은 단순하지만 이름과 Logic을 잘못 설계하면 PLC Program을 이해하기 어려워질 수 있습니다. 특히 부정적인 의미를 가진 변수에 NOT 조건을 반복해서 사용하면 Logic 해석이 복잡해집니다. 예를 들어 Door_Not_Open = FALSE보다 Door_Closed = TRUE처럼 설비상태를 직접 이해할 수 있는 Naming이 유지보수에 유리합니다. 또한 순간적으로 발생하는 BOOL Signal을 단순히 Scan마다 확인하면 필요한 Event를 놓치거나 여러 Scan 동안 중복 처리할 수 있으므로 Rising Edge와 Falling Edge Detection이 필요할 수 있습니다. SET·RESET이나 Latch Logic을 사용하면 입력조건이 FALSE로 돌아온 뒤에도 BOOL State가 유지될 수 있으므로 누가 해당 Variable을 설정하고 해제하는지 명확하게 관리해야 합니다. 동일한 Output BOOL을 여러 Program에서 동시에 Write하면 실행순서에 따라 최종상태가 달라질 수도 있습니다. 결국 BOOL은 TRUE·FALSE만 저장하는 간단한 Data Type이지만 Sensor, Interlock, Alarm과 Sequence Control의 대부분을 구성하므로 PLC Program의 논리구조를 만드는 가장 기본적인 Data Type입니다.




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