Modbus RTU 프로토콜은 산업용 장치 간의 "공통 언어"와 같아서 서로 다른 브랜드의 전기 계량기 및 센서와 같은 장치 간의 원활한 "통신"을 가능하게 합니다.
Modbus 통신 프로토콜 애플리케이션 시연
이 기사에서는 가장 간단하고 이해하기 쉬운 방식으로 에너지 계량기에 Modbus RTU를 적용하는 방법을 안내합니다. 기술적인 배경 지식이 전혀 없는 완전한 초보자라도 이 중요한 산업용 통신 프로토콜의 핵심 사항을 쉽게 파악할 수 있습니다.

Modbus RTU 프로토콜이란 무엇입니까?
Modbus RTU는 Modicon(현재 Schneider Electric의 일부)이 1979년에 PLC(Programmable Logic Controller)용으로 처음 개발한 직렬 통신 프로토콜입니다.
오늘날 이는 전 세계 400개 이상의 제조업체에서 지원하는 산업 자동화에서 가장 널리 사용되는 프로토콜 중 하나가 되었습니다.
왜 "RTU"라고 불리는가? RTU는 "Remote Terminal Unit"의 약어로, 이 프로토콜이 주로 원격 장치 간의 통신에 사용됨을 나타냅니다. 이는 간단한 요청 및 응답 메커니즘을 통해 데이터를 교환하는 전기 장비 간의 "문자 메시지 시스템"과 같습니다.
Modbus RTU는 어떻게 작동합니까?
Modbus RTU는 교실의 교사와 학생처럼 마스터{0}}슬레이브 통신 아키텍처를 사용합니다.
- 마스터: 일반적으로 컴퓨터, PLC 또는 집중 장치인 "교사"는 질문과 명령을 시작하는 역할을 담당합니다.
- 노예: 전기 계량기나 센서 같은 '학생'은 교사의 질문에만 대답할 수 있고 독립적으로 말할 수는 없습니다. (전기 계량기 응용 분야에서...)

Modbus RTU 메시지 형식
장치 간 "SMS 템플릿"
Modbus RTU 통신 메시지는 고정된 형식 요구 사항에 따라 세심하게 제작된 텍스트 메시지와 같습니다.
전체 Modbus RTU 메시지에는 다음 부분이 포함됩니다.
| 주소 코드 | 기능 코드 | 데이터 필드 | 코드 확인 |
|---|---|---|---|
| 8비트 | 8비트 | N × 8비트 | 16비트 |
- 주소 코드(1바이트): "수신자의 전화번호"와 동일하며 대상 에너지 측정기의 주소(1-247)를 식별하며 0은 브로드캐스트 주소입니다.
- 기능 코드(1바이트): 에너지 측정기에 수행할 작업(예: 데이터 읽기, 데이터 쓰기 등)을 지시하는 "텍스트 메시지 유형"과 동일합니다.
- 데이터 필드(N 바이트): 레지스터 주소, 데이터 값 등과 같이 전송될 특정 정보입니다.
- CRC 체크섬(2바이트): 전송 중 오류를 확인하는 데 사용되는 "위조 방지 코드"와 동일합니다.
UBS 에너지 측정기에서 총 양의 활성 에너지 데이터를 읽는 일반적인 메시지는 다음과 같습니다.
[주소 00][기능 코드 03][시작 주소 00 0C][읽기 길이 00 02][CRC 체크섬 05 D9]
이는 "모든 미터, 레지스터 1부터 시작하여 레지스터 000C의 데이터를 읽으십시오."라고 말하는 것과 같습니다.
메시지를 받은 후 측정기 #1은 다음과 같이 응답합니다.
[주소 01][기능 코드 03][데이터 길이 04][데이터 00 00 00 00][CRC 체크섬 FA 33]
이는 "미터 #1이 응답했습니다. 읽은 총 양의 활성 에너지 데이터 값은 00 00 00 00(16진수)"입니다. (참고: 이 미터 #1은 사용되지 않은 새 미터입니다.) 아래 이미지는 테스트 데모입니다.

전기 계량기의 "데이터 북": 레지스터 설명
Modbus RTU 프로토콜에서 전기 계량기의 모든 데이터는 "스프레드시트"-레지스터에 저장됩니다. 레지스터는 크게 네 가지 유형으로 나뉜다.
| 레지스터 유형 | 읽기/쓰기 권한 | 기능 코드 | 일반적인 저장 콘텐츠 |
|---|---|---|---|
| 코일 레지스터 | 읽기/쓰기 | 01, 05 | 릴레이 상태, 스위치 제어 |
| 개별 입력 레지스터 | 읽기{0}}전용 | 02 | 디지털 입력(예: 경보 신호) |
| 입력 레지스터 | 읽기{0}}전용 | 04 | 실시간{0}}측정 데이터(전압, 전류 등) |
| 보유 명부 | 읽기/쓰기 | 03, 06 | 장치 매개변수, 축적된 에너지 등 |
전기 계량기 애플리케이션에서 가장 일반적인 레지스터는 다음과 같습니다.
입력 레지스터
(기능 코드 04H): 전압, 전류, 전력 등 실시간 측정된-데이터를 저장합니다.
보유 명부
(기능 코드 03H): 누적 전력 소비량, 장치 매개 변수 등을 저장합니다.
UBS 에너지 미터 Modbus 레지스터 주소 정보 테이블
Modbus 프로토콜 브로드캐스트 주소는 0x00입니다. UBS 에너지 미터에 대한 자세한 Modbus 프로토콜 레지스터 주소 정보는 아래 표를 참조하십시오.
| 레지스터(16진수) | 변수 이름 | 속성(단위/R/W) | 데이터 유형 | 세다 | 비고 |
|---|---|---|---|---|---|
| 0x0000 | DC 전압 | 단위: V, R/W: RO | S16 | 1 | 범위: -9999~9999;=유효값 × 10^(소수점) 읽기 |
| 0x0001 | 전압 소수점 | 단위: 없음, R/W: RO | U16 | 1 | 고정값: 0 |
| 0x0002 | DC 전류 값 | 단위: A, R/W: RO | S16 | 1 | 범위: -9999~9999 |
| 0x0003 | 현재 소수점 | 단위: 없음, R/W: RO | U16 | 1 | 고정값: 1 |
| 0x0008 | 전력 값 | 단위: kW, R/W: RO | S16 | 1 | 범위: -9999~9999 |
| 0x0009 | 거듭제곱 소수점 | 단위: 없음, R/W: RO | U16 | 1 | 고정값: 1 |
| 0x000C | 총 순방향 활성 에너지 | 단위: 0.001kWh, R/W: RO | U32 | 2 | 높은 바이트가 먼저, 낮은 바이트가 마지막에 옵니다. 예: 데이터를 읽으면=5000 소수점=2 → 실제값=5000 × 10^(2-3)=500.0 |
| 0x203C | 채널 1 전압 | 단위: 0.0001V, R/W: RO | I32 | 2 | 높은 바이트가 먼저, 낮은 바이트가 마지막에 |
| 0x203E | 채널 2 전압 | 단위: 0.0001V, R/W: RO | I32 | 2 | 항상 0 |
| 0x2040 | 채널 1 전류 | 단위: 0.0001A, R/W: RO | I32 | 2 | 높은 바이트가 먼저, 낮은 바이트가 마지막에 |
| 0x2042 | 채널 2 전류 | 단위: 0.0001A, R/W: RO | I32 | 2 | 항상 0 |
| 0x2044 | 채널 1 전원 | 단위: 0.0001kW, R/W: RO | I32 | 2 | 높은 바이트가 먼저, 낮은 바이트가 마지막에 |
| 0x2046 | 채널 2 전원 | 단위: 0.0001kW, R/W: RO | I32 | 2 | 항상 0 |
| 0x9A00 | 순방향 활성 총 에너지 | 단위: kWh, R/W: RO | 뜨다 | 2 | |
| 0xA001/0x8900 | 장치 주소 | 단위: 없음, R/W: RW | U16 | 1 | 범위: 0~247 |
UBS 에너지 미터 메시지 읽기 시연
UBS 에너지 미터 호스트 컴퓨터 소프트웨어를 사용하여 DJZ1226 DC 스마트 에너지 미터에서 총 포지티브 활성 에너지, 전압, 전류, 전력 및 미터 주소와 같은 데이터를 읽습니다.

위의 그림과 같이 호스트 컴퓨터가 주고받는 자세한 메시지 내용은 다음과 같습니다.
13:25:30.229 총양활성에너지(000C0002) ...
13:25:30.256 ▼보내기:00 03 00 0C 00 02 05 D9
13:25:30.344 ▲수신:01 03 04 00 00 00 00 FA 33
13:25:30.359 직류전압(00000002) ...
13:25:30.424 ▼보내기:00 03 00 00 00 02 C5 DA
13:25:30.428 ▲수신:01 03 04 00 17 00 03 0A 36
13:25:30.494 직류전류(00020002) ...
13:25:30.522 ▼보내기:00 03 00 02 00 02 64 1A
13:25:30.610 ▲수신:01 03 04 00 30 00 02 7B FD
13:25:30.621 전원(00080002) ...
13:25:30.682 ▼보내기:00 03 00 08 00 02 44 18
13:25:30.690 ▲수신:01 03 04 00 01 00 02 2A 32
13:25:30.702 통신주소 2(A0010001) ...
13:25:30.779 ▼보내기:00 03 A0 01 00 01 F6 1B
13:25:30.783 ▲수신:01 03 02 00 01 79 84
13:25:30.795 데이터 읽기가 종료되었습니다.
일반적인 문제 및 문제 해결 기술
Modbus RTU 프로토콜은 상대적으로 간단하지만 실제 응용 분야에서는 여전히 다양한 문제가 발생할 수 있습니다. 다음은 전기 계량기 통신의 일반적인 결함과 해결 방법입니다.
통신 응답 없음
● 물리적 연결을 확인하세요.
▪ RS-485 배선이 올바른지(A/B 선 반전)?
▪ 종단 저항이 일치합니까(일반적으로 버스의 각 끝에 120Ω 저항을 연결합니다)?
▪ 통신거리가 한도를 초과하였는가?(RS-485는 이론적으로 1200미터까지 도달할 수 있으나, 실제 거리는 환경요인에 따라 영향을 받음).
● 매개변수 설정 확인:
▪ 전송 속도, 데이터 비트, 정지 비트 및 패리티 설정이 전력량계와 일치합니까?
▪ 장치 주소가 올바르게 설정되어 있습니까(중복 주소 없음)?
간헐적인 통신
● 회선 간섭 확인:
▪ 연선-차폐 케이블을 사용하고 차폐의 한쪽 끝이 접지되었는지 확인하세요.
▪ 케이블을 고전압 케이블과 평행하게 연결하지- 마세요.
● 개별 장치 테스트:
▪ 각 전기 계량기를 개별적으로 연결하여 결함이 있는 장치의 문제를 해결합니다.
▪ UBS Electronics의 전용 호스트 컴퓨터 소프트웨어(예: AMS)를 사용하여 전력량계와 직접 통신하고 문제를 정확히 찾아냅니다.
데이터 오류
● CRC 확인 확인:
▪ 송수신된 CRC 코드가 일치하는지 확인하세요.
▪ 데이터 바이트 순서를 확인합니다(Modbus RTU는 일반적으로 리틀-엔디안입니다).
● 레지스터 매핑 확인:
▪ 사용된 레지스터 주소가 전기 계량기 설명서와 일치하는지 확인하십시오.
▪ 레지스터 주소 오프셋을 기록해 두십시오.
이 문서에 언급된 UBS 호스트 컴퓨터 소프트웨어(Modbus RTU 프로토콜)를 사용해야 하는 경우 UBS 전기 계량기 주문 담당자에게 문의하여 추가 판매 후 기술 지원을 받으세요.-




