Modbus RTU Slave Address Mapping

내부 절대 주소(I, Q, D 등)를 아래와 같이 MODBUS 주소 공간에 매핑하였습니다.

  • Coil : Bit 데이터 (I, Q, M 등)
  • Holding Register : Word / Double / Float 데이터 (D, T, C 등)

주소 체계 : 0-base와 1-base

  • 0-base (0부터 시작) : 주로 내부 주소용으로 쓰입니다. 반드시 펑션코드와 같이 쓰여야 정확한 억세스 위치를 알 수 있습니다.
  • 1-base (1부터 시작) : HMI, SCADA 등에서는 주로 1-base (00001, 40001 등)로 표시됩니다. 펑션코드없이 주소만으로 메모리 영역을 구분할 수 있습니다.

예 (1-base 기준):

  • 00001 → Coil (디지털 입출력)
  • 10001 → Discrete Input (디지털 입력)
  • 30001 → Input Register (아날로그 입력값)
  • 40001 → Holding Register (일반 데이터 레지스터)

즉, 주소의 앞자리 숫자만 보고도 어떤 메모리 영역인지 바로 구분할 수 있습니다.

이중 CUBLOC2에서는 Coil과 Holding Register만 사용합니다.

  • 00001 → Coil (디지털 입출력)
  • 40001 → Holding Register (일반 데이터 레지스터)

Coil (Bit 영역)

CUBLOC2의 비트 데이터(I, Q, M 등)는 Modbus Coil 주소로 매핑됩니다. 타이머(T), 카운터(C)는 내부적으로 32bit 데이터이지만, 접점으로 사용할 경우 완료 상태(Done Bit)가 Coil 영역에 별도 매핑됩니다.

주소 (1-base) 내부 주소 (0-base) 영역 설명
000001 ~ 000016 0 ~ 15 I Physical Input (Read Only)
000017 ~ 000032 16 ~ 31 Q Physical Output
000101 ~ 000228 100 ~ 227 S Special Relay (Read Only)
001001 ~ 001731 1000 ~ 1731 X Expansion Input (Read Only)
002001 ~ 002731 2000 ~ 2731 Y Expansion Output
004001 ~ 006048 4000 ~ 6047 M Internal Relay
007001 ~ 009048 7000 ~ 9047 R Retain Bit (Read Only)
010001 ~ 011000 10000 ~ 10999 T Timer Done Bit
011001 ~ 012000 11000 ~ 11999 C Counter Done Bit
  • I, X, R, S 영역은 읽기 전용(Read Only) 입니다.
  • T, C 영역은 내부 32bit 타이머/카운터의 완료 상태(Contact 상태) 를 나타냅니다.
  • 예: T0 접점 ON → Coil 010001 = ON
  • 예: C5 접점 ON → Coil 011006 = ON

Holding Register (Word 영역)

모든 Word 및 32bit 데이터는 Holding Register(4xxxx)에 매핑되며, 5~6 digit 표기로 통일합니다.

주소 (1-base) 내부 주소 (0-base) 영역 타입 설명
400001 ~ 408000 0 ~ 7999 D 16bit 일반 데이터
409001 ~ 409100 9000 ~ 9099 SD 16bit 시스템 데이터
410001 ~ 412000 10000 ~ 11999 T 32bit 타이머 현재값
415001 ~ 417000 15000 ~ 16999 C 32bit 카운터 현재값
420001 ~ 436000 20000 ~ 35999 DD 32bit 더블워드
440001 ~ 456000 40000 ~ 55999 DF Float 실수 데이터
  • SD (시스템 데이터) 영역은 읽기 전용(Read Only) 입니다.
  • T, C 영역은 현재값(Current Value)을 의미하며, 접점 상태는 Coil 영역의 T/C 주소를 사용합니다.

Retain 영역 (정전시 유지)

Retain 영역(RD, RDD, RDF)은 Modbus에서 읽기 전용(Read Only) 입니다.

주소 (1-base) 내부 주소 (0-base) 영역 타입 설명
460001 ~ 460100 60000 ~ 60099 RD 16bit Retain (Read Only)
460301 ~ 460500 60300 ~ 60499 RDD 32bit Retain Double (Read Only)
460501 ~ 460700 60500 ~ 60699 RDF Float Retain Float (Read Only)

32bit 데이터 표현

32bit 데이터는 2개의 Holding Register를 사용합니다.

하위 워드 (Low Word) → 낮은 주소
상위 워드 (High Word) → 다음 주소

예:

DD0 = [420001, 420002]

주의 사항 : HMI(또는 SCADA)는 대부분 1-base 주소를 사용하지만, 일부 장비나 설정에 따라 0-base 주소를 요구하기도 합니다.

← CUBLOC2 목차로 돌아가기