PLC 변수란? BOOL·INT·DINT·REAL 이해
PLC 변수란 프로그램에서 입력·출력 상태와 계산값을 저장하고 처리하기 위한 데이터 공간입니다. BOOL·INT·DINT·REAL의 크기와 표현범위, 사용 목적의 차이를 알아봅니다.
PLC 변수란 무엇이며 왜 데이터형이 필요할까?
PLC 변수는 자동화 프로그램에서 Sensor 상태, Motor 운전신호, Counter 값, Temperature, Pressure와 계산결과 등의 Data를 저장하고 처리하기 위해 사용하는 이름이 지정된 Data 공간입니다. 과거 PLC에서는 X, Y, M, D와 같은 Device Address를 직접 사용하는 방식이 일반적이었지만 현대 PLC Programming에서는 Motor_Run, Tank_Level, Product_Count처럼 의미를 알 수 있는 Tag 또는 Symbolic Variable을 사용하는 경우가 많습니다. 각 Variable에는 어떤 종류의 값을 저장할 것인지 결정하는 Data Type이 필요합니다. 단순한 ON·OFF 상태와 35,000이라는 정수, 23.75라는 실수는 Memory에서 저장하고 연산하는 방법이 서로 다르기 때문입니다. 대표적인 기본 Data Type에는 BOOL, INT, DINT와 REAL이 있습니다. 적절한 Data Type을 선택하면 필요한 Memory를 효율적으로 사용하고 연산범위 초과나 소수점 손실 같은 Programming Error를 줄일 수 있습니다. 따라서 PLC Variable을 이해하려면 변수 이름뿐 아니라 Bit Size, Signed 여부와 표현 가능한 Value Range를 함께 이해해야 합니다.
BOOL·INT·DINT는 어떤 값을 저장할까?
BOOL은 Boolean Data Type으로 TRUE와 FALSE, 즉 논리적인 두 상태를 표현하는 데 사용합니다. Sensor ON·OFF, Motor Run Command, Alarm 발생 여부와 Interlock 상태 등이 대표적인 사용사례입니다. 논리적으로는 1 Bit의 정보를 표현하지만 실제 Memory Allocation 방식은 PLC Architecture에 따라 달라질 수 있습니다. INT는 일반적으로 16-bit Signed Integer로 사용되며 IEC 61131-3 계열에서 대표적인 범위는 -32,768~32,767입니다. 작은 Counter, 설정값과 정수형 Measurement Data 등에 활용할 수 있습니다. DINT는 일반적으로 32-bit Signed Integer이며 -2,147,483,648~2,147,483,647 범위의 값을 표현할 수 있어 INT보다 큰 누적 Count나 Position Value를 저장하는 데 유리합니다. 예를 들어 Encoder Pulse가 지속적으로 누적되어 32,767을 넘어갈 가능성이 있다면 INT보다 DINT가 적합할 수 있습니다. 다만 PLC 제품별 지원 Data Type과 Instruction의 처리범위는 다를 수 있으므로 실제 Program에서는 해당 CPU의 사양을 확인해야 합니다.
REAL은 정수형 데이터와 무엇이 다를까?
REAL은 소수점이 필요한 값을 표현하기 위한 Floating-point Data Type입니다. IEC 61131-3 환경에서는 일반적으로 32-bit IEEE 754 Single-precision 형식에 기반하는 경우가 많으며 Temperature 23.5℃, Pressure 1.37MPa와 Flow 125.8L/min처럼 소수부분이 필요한 Engineering Value를 처리하는 데 사용됩니다. INT와 DINT는 정수만 저장하므로 5 ÷ 2와 같은 연산에서 사용하는 Instruction과 Data Type에 따라 정수 결과가 만들어질 수 있지만 REAL 연산에서는 2.5와 같은 소수 결과를 표현할 수 있습니다. 그렇다고 모든 값을 REAL로 사용하는 것이 항상 좋은 것은 아닙니다. Floating-point 연산은 정수연산보다 처리구조가 복잡하고 모든 10진 소수를 Binary Floating-point로 정확하게 표현할 수 있는 것도 아닙니다. 따라서 금액이나 정확한 Count처럼 정수 단위가 중요한 Data는 Integer Type이 적합하고 Analog Scaling이나 계산결과에 소수점이 필요한 경우 REAL을 사용하는 방식으로 목적에 맞게 선택해야 합니다.
데이터형을 잘못 선택하면 어떤 문제가 발생할까?
PLC Data Type을 잘못 선택하면 Overflow, 소수점 손실과 예상하지 못한 Comparison 결과가 발생할 수 있습니다. 예를 들어 INT Variable에 저장된 Product Count가 최대값을 넘어가면 정상적인 증가값을 표현할 수 없으며 PLC와 Instruction에 따라 Overflow 처리나 Error 동작이 발생할 수 있습니다. 큰 누적값이 예상된다면 DINT나 더 넓은 Integer Type을 검토해야 합니다. 반대로 REAL 값을 INT로 변환하면 Fractional Part가 처리규칙에 따라 잘리거나 반올림될 수 있으므로 Type Conversion 방법을 확인해야 합니다. Signed와 Unsigned Data를 혼합할 때도 주의가 필요합니다. 16-bit의 동일한 Bit Pattern이라도 INT와 UINT는 해석되는 숫자범위가 다릅니다. Communication에서 Modbus Register나 외부 Device Data를 받을 때는 Byte Order와 Word Order까지 맞아야 올바른 값으로 해석할 수 있습니다. 따라서 Variable의 Data Type은 단순한 Memory Size 선택이 아니라 계산과 Comparison, Communication에서 Data를 어떤 의미로 해석할 것인지 결정하는 중요한 요소입니다.
PLC 변수를 설계할 때 무엇을 확인해야 할까?
PLC Variable을 만들 때는 먼저 저장할 Data의 의미와 예상되는 Minimum·Maximum Range를 확인하는 것이 중요합니다. ON·OFF Signal은 BOOL, 비교적 작은 정수는 INT, 큰 Count와 Position Data는 DINT, 소수점이 필요한 Engineering Value는 REAL처럼 목적에 맞는 Type을 선택할 수 있습니다. 변수 이름도 M1_Run, Conveyor_Speed, Tank_Temp처럼 기능과 의미를 쉽게 파악할 수 있도록 Naming Convention을 정하는 것이 좋습니다. 또한 Local Variable과 Global Variable의 Scope를 구분하면 Program Module 사이의 불필요한 Data Dependency를 줄일 수 있습니다. Retentive Variable은 전원이 꺼진 뒤에도 값을 유지해야 하는 Production Count나 Recipe Parameter 등에 사용할 수 있지만 모든 Data를 Retain 영역에 저장하는 것은 적절하지 않습니다. Function과 Function Block에서는 Input, Output, InOut와 Internal Variable의 역할을 구분하는 것도 중요합니다. 결국 PLC 변수와 Data Type을 올바르게 설계하는 것은 단순한 문법 문제가 아니라 Program의 정확성, Memory 관리와 향후 Maintenance까지 좌우하는 PLC Programming의 기본입니다.




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