REAL이란? PLC에서 소수점 값 처리 원리
REAL이란 PLC에서 온도·압력·유량처럼 소수점이 필요한 값을 저장하고 계산하는 데이터형입니다. 부동소수점 표현과 INT·DINT와의 차이, 연산 시 주의점을 알아봅니다.
REAL이란 무엇이며 어떤 값을 저장할까?
REAL은 PLC Program에서 소수점이 포함된 수치를 저장하고 연산하기 위해 사용하는 Floating-point Data Type입니다. BOOL이 TRUE·FALSE를 표현하고 INT와 DINT가 정수를 저장한다면 REAL은 23.5, 1.275, 98.6처럼 Fractional Part가 필요한 값을 처리하는 데 적합합니다. 자동화설비에서는 Temperature, Pressure, Flow, Speed, Level과 Percentage 등 Engineering Value를 다룰 때 REAL이 많이 사용됩니다. IEC 61131-3 기반의 많은 PLC에서 REAL은 32-bit Floating-point Type으로 구현되며 일반적으로 IEEE 754 Single-precision 형식과 연결됩니다. 다만 PLC 제조사와 CPU에 따라 지원하는 Data Type과 세부 처리방식에는 차이가 있을 수 있습니다. REAL의 장점은 매우 큰 값부터 매우 작은 값까지 넓은 범위를 표현하면서 소수부분을 처리할 수 있다는 것입니다. 그러나 모든 숫자를 완벽하게 정확한 값으로 저장하는 방식은 아니므로 Integer와 다른 Floating-point 특성을 이해하고 사용해야 합니다.
REAL은 소수점 값을 어떻게 저장할까?
REAL은 일반적인 Integer처럼 숫자를 그대로 Binary 정수로 저장하는 것이 아니라 Sign, Exponent와 Fraction 또는 Mantissa에 해당하는 영역을 이용하여 값을 표현합니다. IEEE 754 Single-precision 기준으로는 전체 32-bit가 부호 1-bit, 지수 8-bit, Fraction 23-bit로 구성됩니다. 이러한 구조를 사용하면 제한된 32-bit 안에서 매우 넓은 크기의 숫자를 표현할 수 있지만 정밀도에는 한계가 있습니다. 특히 사람이 사용하는 10진수 소수 가운데 0.1이나 0.2 같은 값은 Binary Floating-point에서 유한한 Bit Pattern으로 정확하게 표현되지 않는 경우가 있습니다. 따라서 PLC 내부에 저장된 값은 사람이 입력한 0.1과 극히 작은 차이가 존재할 수 있습니다. 일반적인 계측과 제어에서는 이러한 오차가 문제가 되지 않는 경우가 많지만 매우 작은 차이를 직접 비교하는 Logic에서는 주의해야 합니다. REAL은 흔히 약 7자리 정도의 유효 십진 정밀도를 제공하는 32-bit 부동소수점 형식으로 이해할 수 있으며 더 높은 정밀도가 필요하면 지원되는 PLC에서 LREAL 같은 더 넓은 Type을 검토할 수 있습니다.
INT·DINT와 REAL은 연산에서 무엇이 다를까?
INT와 DINT는 소수부분이 없는 Integer Data Type이므로 Count, Index와 정수 Parameter 처리에 적합합니다. REAL은 소수점 계산이 필요한 경우 사용합니다. 예를 들어 두 정수 5와 2를 Integer Division으로 처리하면 PLC Instruction과 Data Type 규칙에 따라 정수 결과가 만들어질 수 있지만 두 값을 REAL로 변환하여 나누면 2.5와 같은 결과를 표현할 수 있습니다. 따라서 Analog Scaling이나 Average Calculation에서 소수부분이 필요한데 Integer만 사용하면 계산과정에서 Resolution이 손실될 수 있습니다. 반대로 Product Count처럼 정확히 1개 단위로 증가해야 하는 Data를 REAL로 관리할 필요는 없습니다. INT 또는 DINT와 REAL을 함께 연산할 때는 PLC가 Automatic Type Conversion을 지원하는지 또는 명시적인 Conversion Instruction이 필요한지 확인해야 합니다. INT_TO_REAL, DINT_TO_REAL, REAL_TO_INT와 같은 변환기능을 사용할 수 있으며 REAL을 Integer로 바꿀 때 Truncation 또는 Rounding 규칙은 PLC 환경에 따라 확인해야 합니다.
REAL은 Analog Scaling에서 어떻게 사용될까?
PLC에서 REAL이 많이 사용되는 대표적인 분야가 Analog Signal의 Engineering Unit Conversion입니다. Analog Input Module은 4-20mA 또는 0-10V Signal을 CPU에서 처리할 수 있는 Raw Digital Value로 변환하며 PLC Program에서는 이를 실제 Temperature, Pressure나 Flow 값으로 Scaling합니다. 예를 들어 Raw Input의 최소·최대 범위를 실제 0~100.0℃와 대응시키면 중간값도 소수점을 포함한 Temperature로 계산해야 하므로 REAL 연산이 유용합니다. 개념적으로 Engineering Value = (Raw - Raw Min) × (Eng Max - Eng Min) / (Raw Max - Raw Min) + Eng Min과 같은 관계를 사용할 수 있습니다. 이 과정에서 Integer 연산을 먼저 수행하면 나눗셈 과정에서 소수부분이 손실될 수 있으므로 필요한 단계에서 REAL로 변환하여 계산하는 것이 중요합니다. 또한 Scaling 이후 Low Pass Filter, Moving Average와 PID Calculation 등에서도 소수점 값을 연속적으로 처리하기 때문에 REAL이 널리 활용됩니다.
REAL 데이터를 사용할 때 무엇을 주의해야 할까?
REAL을 사용할 때는 Floating-point 값의 정밀도와 비교방법을 고려해야 합니다. 계산결과가 이론적으로 1.0이어야 하더라도 내부적으로 매우 작은 Representation Error가 포함될 수 있으므로 Value = 1.0과 같은 Exact Equality Comparison이 항상 적절한 것은 아닙니다. 제어목적에 따라 허용오차를 두고 ABS(Value - Target) < Tolerance처럼 범위를 이용해 판단하는 방식이 더 적합할 수 있습니다. 또한 매우 큰 REAL 값에 매우 작은 값을 반복해서 더하면 정밀도 한계 때문에 작은 변화가 제대로 반영되지 않을 수 있습니다. 외부 HMI, SCADA나 Modbus Device와 32-bit REAL을 교환할 때는 두 개의 16-bit Register를 사용하는 경우가 많으므로 Byte Order와 Word Order도 확인해야 합니다. PLC가 LREAL을 지원한다면 더 높은 정밀도가 필요한 계산에 활용할 수 있지만 Communication 상대방의 Data Type도 일치해야 합니다. 결국 REAL은 PLC에서 소수점 기반의 계측·제어 데이터를 처리하는 핵심 Data Type이며 정수형과 부동소수점의 특성을 구분하여 사용하는 것이 정확한 프로그램을 만드는 기본입니다.




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