레지스터 맵 기반 설정
- 엑셀로 정리한 레지스터 맵을 불러와 태그로 등록
- 태그별 주소·기능코드·데이터형·배율·단위 지정
- 장비가 늘어도 코드 수정 없이 맵만 추가
MODBUS RTU / TCP
Modbus(모드버스)는 장비 안의 값을 레지스터 번호로 읽고 쓰는 산업용 통신 규약으로, 제조사가 달라도 같은 방식으로 데이터를 가져올 수 있습니다. 시리얼(RS-485 등) 선로에서는 Modbus RTU를, 이더넷에서는 Modbus TCP를 주로 씁니다.
program1472는 장비 매뉴얼의 레지스터 맵을 바탕으로 필요한 값만 골라 주기적으로 읽고, 데이터형과 배율을 바로잡아 DB·대시보드·다른 시스템으로 넘기는 프로그램을 만듭니다.
최종 수정
아래는 대표 구성이며, 실제 범위는 현장 업무에 맞춰 필요한 기능만 골라 정합니다.
| 항목 | Modbus RTU | Modbus ASCII | Modbus TCP |
|---|---|---|---|
| 물리 계층 | RS-485·RS-232 등 시리얼 | 시리얼 | 이더넷(TCP, 기본 포트 502) |
| 프레임 | 바이너리 | ASCII 문자 | MBAP 헤더 + PDU |
| 오류 검출 | CRC-16 | LRC | TCP 계층에 맡김(별도 CRC 없음) |
| 장비 주소 | 슬레이브 ID 1~247 | 1~247 | Unit ID(게이트웨이 경유 시 사용) |
| 기능코드 | 대상 | 동작 |
|---|---|---|
| 01 / 02 | Coil / Discrete Input | 비트 읽기 |
| 03 / 04 | Holding Register / Input Register | 16비트 워드 읽기 |
| 05 / 06 | Coil / Holding Register | 단일 쓰기 |
| 15 / 16 | Coils / Holding Registers | 다중 쓰기 |
한 번에 읽을 수 있는 개수에도 제한이 있어(레지스터 읽기는 요청당 최대 125개) 많은 값을 읽을 때는 나눠서 요청합니다.
네, 레지스터 맵(주소·데이터형·단위가 적힌 표)이 있으면 대부분 개발할 수 있습니다. 맵에 없는 값은 제조사 문의나 시험 통신으로 확인합니다.
Modbus를 지원하는 장비라면 인버터·전력량계·온도조절기처럼 종류와 제조사가 달라도 한 프로그램에서 함께 수집할 수 있습니다. 같은 선로에서는 국번만 겹치지 않으면 됩니다.
대부분 워드 순서, 부호(INT16/UINT16) 해석, 배율 적용 가운데 하나의 문제입니다. 장비 매뉴얼의 데이터형 표기와 장비에 표시되는 값을 비교해 바로잡습니다.
RTU↔TCP 게이트웨이(하드웨어 또는 소프트웨어)를 두면 RS-485 장비를 이더넷의 Modbus TCP 장비처럼 읽을 수 있습니다.
기능코드 06·16으로 쓰기가 가능한 장비라면 구현할 수 있습니다. 잘못된 값이 설비에 바로 반영될 수 있으므로 권한 제한과 확인 절차를 반드시 함께 둡니다.
연동하려는 장비의 모델명이나 지금 쓰는 기록지 사진을 보내 주시면, 연동 가능 여부와 시작하기 좋은 범위를 먼저 알려 드립니다.
문의하기