PortDock

Modbus 프레임 해석기

Modbus RTU·TCP 프레임의 HEX 를 붙여 넣으면 국번·함수·주소·값·CRC 와 MBAP 머리, 예외 코드까지 풀어 줍니다. 레지스터 값은 10진·HEX·40001 표기 표로 보여 줍니다.

예시

모든 풀이는 이 브라우저 안에서만 하고, 붙여 넣은 바이트는 어디에도 보내지 않습니다.

자주 묻는 것

RTU 와 TCP 는 어떻게 가리나요?

끝 2바이트가 CRC16 Modbus 와 맞으면 RTU 로, 앞 7바이트의 프로토콜 ID 가 0 이고 길이 칸이 뒤에 오는 바이트 수와 같으면 Modbus TCP 로 봅니다. 둘 다 아니면 CRC 가 틀린 RTU 로 풀고, 올바른 CRC 를 함께 보여 줍니다. 형식은 직접 고를 수도 있습니다.

왜 요청과 응답 두 해석이 나오나요?

프레임 안에는 방향 표시가 없어서 길이와 바이트 수로 가립니다. 함수 01·02 에서 바이트 수가 3 인 응답은 요청과 길이가 같고(RTU 8바이트), 함수 17 도 모양이 둘 다 맞을 수 있습니다. 이럴 때는 두 해석을 다 보여 주니 앞뒤 프레임으로 고르세요. 함수 05·06 의 정상 응답은 요청을 그대로 되돌립니다.

주소 0 과 40001 은 무엇이 다른가요?

프레임에 실리는 주소는 0 기준입니다. 40001 은 «보유 레지스터 4xxxx 의 1번째» 를 뜻하는 표기라서 프레임에는 00 00 으로 실립니다. 코일은 0xxxx, 입력 접점은 1xxxx, 입력 레지스터는 3xxxx 입니다.

코일 응답 끝에 0 이 더 붙어 있습니다

비트 값은 바이트 단위로 보내고 마지막 바이트의 남는 비트는 0 으로 채웁니다. 요청한 개수만큼만 읽으세요.

예외 코드

코드이름뜻
01Illegal Function장비가 이 함수 코드를 지원하지 않거나 지금 상태에서 처리할 수 없습니다.
02Illegal Data Address요청한 주소(또는 시작 주소+개수 범위)가 장비에 없습니다.
03Illegal Data Value요청에 담긴 값이 허용되지 않습니다(개수·바이트 수 같은 요청 모양 포함).
04Server Device Failure요청을 처리하는 동안 장비에서 복구할 수 없는 오류가 났습니다.
05Acknowledge요청은 받았고 처리에 시간이 걸립니다. 끝났는지는 나중에 다시 물어야 합니다.
06Server Device Busy장비가 오래 걸리는 명령을 처리 중입니다. 나중에 다시 보내야 합니다.
07—Application Protocol V1.1b3 에 정의되지 않은 코드입니다.
08Memory Parity Error파일 레코드 읽기·쓰기(함수 0x14·0x15)에서 메모리 패리티 오류가 났습니다.
09—Application Protocol V1.1b3 에 정의되지 않은 코드입니다.
0AGateway Path Unavailable게이트웨이가 대상 장비로 가는 경로를 잡지 못했습니다(설정 오류·과부하).
0BGateway Target Device Failed to Respond게이트웨이 뒤의 대상 장비가 응답하지 않았습니다.

Modbus Application Protocol Specification V1.1b3 7장 기준. 07·09 는 이 판에 정의되지 않았습니다.

근거

  • Modbus Application Protocol Specification V1.1b3 — 함수 코드·요청/응답 모양·개수 한도·예외 코드
  • Modbus over Serial Line Specification and Implementation Guide V1.02 — RTU 프레임·국번(0 브로드캐스트, 1~247)·CRC
  • Modbus Messaging on TCP/IP Implementation Guide V1.0b — MBAP 머리(트랜잭션·프로토콜·길이·유닛 ID)

바이트 하나하나의 풀이는 가이드 Modbus RTU 프레임 읽는 법, 주소 표기는 Modbus 주소 표기(0 기준·40001) 를 보세요.

장비와 주고받는 통신을 줄마다 풀어 보려면 PortDock Modbus Master.