INT와 DINT 차이|PLC 정수 데이터 범위 비교
INT와 DINT 차이는 PLC에서 사용하는 정수 데이터의 Bit 크기와 표현 가능한 숫자 범위에 있습니다. 16-bit INT와 32-bit DINT의 범위와 선택 기준을 알아봅니다.
INT와 DINT는 어떤 정수 데이터형일까?
INT와 DINT는 PLC Program에서 소수점이 없는 Integer Value를 저장하고 계산할 때 사용하는 대표적인 Signed Integer Data Type입니다. IEC 61131-3 계열에서 INT는 일반적으로 16-bit 정수형이고 DINT는 Double Integer를 의미하는 32-bit 정수형입니다. 두 Data Type 모두 양수와 음수를 표현할 수 있지만 사용하는 Bit 수가 다르기 때문에 저장 가능한 숫자범위에 큰 차이가 있습니다. 예를 들어 Sensor의 작은 설정값이나 제한된 범위의 Counter는 INT로 처리할 수 있지만 생산수량 누적값이나 Position Count처럼 숫자가 크게 증가할 수 있는 Data에는 DINT가 더 적합할 수 있습니다. PLC Program을 작성할 때 단순히 현재 값만 보고 Data Type을 선택해서는 안 되며 향후 발생할 수 있는 Maximum Value까지 고려해야 합니다. 또한 PLC 제조사에 따라 Instruction 지원방식이나 Memory 처리구조에 차이가 있으므로 실제 CPU의 Programming Manual도 함께 확인해야 합니다.
INT와 DINT의 데이터 범위는 얼마나 다를까?
일반적인 IEC 61131-3 Signed Integer 기준에서 INT는 16-bit를 사용하므로 -32,768 ~ 32,767의 값을 표현할 수 있습니다. DINT는 32-bit를 사용하여 -2,147,483,648 ~ 2,147,483,647까지 표현할 수 있습니다. Signed Integer에서 하나의 Bit는 부호를 포함한 이진 표현에 사용되므로 n-bit 정수의 일반적인 범위는 -2^(n-1) ~ 2^(n-1)-1로 이해할 수 있습니다. 따라서 DINT는 INT보다 단순히 두 배 큰 숫자를 저장하는 것이 아니라 훨씬 넓은 범위를 제공합니다. 예를 들어 하루 생산량이 10,000개 정도인 Counter라면 INT 범위 안에 있지만 장기간 누적 생산량이 수백만 개가 된다면 INT로는 저장할 수 없습니다. 이 경우 DINT를 사용해야 합니다. 반대로 값이 항상 -100~100 범위에 머무는 Parameter라면 숫자범위만 놓고 보면 INT로 충분할 수 있습니다. 실제 선택에서는 값의 범위뿐 아니라 연산과 통신에 사용하는 다른 Data Type도 함께 고려해야 합니다.
Overflow가 발생하면 어떤 문제가 생길까?
Integer 연산에서 가장 주의해야 할 문제 중 하나가 Overflow입니다. INT Variable이 이미 32,767인 상태에서 값을 더 증가시키면 INT가 표현할 수 있는 범위를 벗어나게 됩니다. 이후 결과가 어떻게 처리되는지는 PLC CPU와 Instruction, Programming Environment의 규칙에 따라 달라질 수 있으며 Overflow Flag, Error 처리 또는 값의 Wraparound와 같은 동작이 나타날 수 있습니다. 따라서 특정 결과를 모든 PLC에서 동일하다고 가정해서는 안 됩니다. Counter, Encoder Position과 Production Total처럼 계속 증가하는 값은 최대범위를 미리 계산하고 적절한 Data Type을 선택해야 합니다. Arithmetic Operation에서도 주의가 필요합니다. 두 개의 INT 값은 각각 범위 안에 있더라도 곱셈 결과는 INT 범위를 넘어갈 수 있습니다. 예를 들어 1,000 × 1,000은 1,000,000이므로 16-bit INT에 저장할 수 없습니다. 이런 계산에서는 DINT 등 충분한 범위의 Data Type으로 변환하거나 결과 Data Type을 적절하게 지정해야 안정적인 Program을 만들 수 있습니다.
INT·DINT와 UINT·UDINT는 무엇이 다를까?
INT와 DINT가 Signed Integer라면 UINT와 UDINT는 Unsigned Integer입니다. Unsigned Type은 음수를 표현하지 않는 대신 같은 Bit 수에서 양수방향으로 더 넓은 범위를 사용할 수 있습니다. 일반적으로 UINT는 16-bit로 0~65,535, UDINT는 32-bit로 0~4,294,967,295를 표현할 수 있습니다. 따라서 절대로 음수가 될 수 없는 누적 Count나 Bit Pattern을 처리할 때 Unsigned Type이 유용할 수 있습니다. 하지만 Signed와 Unsigned Data를 혼합하여 Comparison이나 Calculation을 수행하면 Type Conversion 규칙에 따라 예상하지 못한 결과가 발생할 수 있으므로 주의해야 합니다. 특히 외부 Device와 Communication할 때 16-bit Register 값을 PLC에서 INT로 해석할지 UINT로 해석할지에 따라 32,768 이상의 값이 완전히 다르게 보일 수 있습니다. Modbus와 같은 Protocol에서는 Register 자체가 Data의 의미까지 정의하는 것은 아니므로 장치의 Data Map에서 Signed 여부와 32-bit 값의 Word Order를 확인해야 합니다.
PLC에서는 INT와 DINT를 어떻게 선택해야 할까?
Data Type을 선택할 때는 현재 값보다 설비가 운전되는 전체 기간 동안 발생할 수 있는 Minimum·Maximum Value를 먼저 계산하는 것이 좋습니다. Temperature 설정값처럼 범위가 제한된 정수는 INT로 충분할 수 있지만 Encoder Count, Position Coordinate, Total Production Count와 Runtime 누적값처럼 큰 숫자가 예상된다면 DINT가 안전합니다. 계산 중간값도 중요합니다. 최종 결과가 INT 범위에 있더라도 중간 Multiplication 과정에서 값이 커질 수 있다면 더 넓은 Type을 사용해야 합니다. 반대로 무조건 모든 Integer를 DINT로 지정하기보다 PLC CPU, Communication Data Map, Function Interface와 기존 Program의 Data Type을 함께 고려하여 일관성을 유지하는 것이 좋습니다. REAL과 연산할 때는 Integer-to-REAL Conversion이 필요한 경우가 있으며 명시적인 Type Conversion을 사용하면 Program의 의도를 더 쉽게 파악할 수 있습니다. 결국 INT와 DINT의 핵심 차이는 16-bit와 32-bit에 따른 표현범위이며 올바른 선택은 Overflow를 방지하고 PLC 계산과 데이터 처리를 안정적으로 만드는 기본 조건입니다.




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