PortDock

Modbus TCP 연결이 안 될 때 — 502 포트·Unit ID·접속 수 점검 순서

핑은 되는데 Modbus TCP 가 안 될 때. 네트워크, 502 포트 접속, MBAP 응답, 값 순서로 층을 나눠 대역·방화벽·포트·Unit ID·접속 수 제한을 확인합니다.

Modbus TCP 는 Modbus 요청(PDU)에 7바이트 MBAP 머리를 붙여 TCP 로 보냅니다. RTU 의 CRC 는 없고, 국번 자리는 MBAP 의 Unit ID 가 맡습니다. «안 된다» 는 증상은 아래 네 층 중 하나에서 나므로 아래층부터 차례로 확인합니다. 규격 내용은 Modbus Messaging on TCP/IP Implementation Guide V1.0b 를 따릅니다.

층확인통과하면
1. 네트워크같은 대역인가, ARP·핑이 닿는가장비가 네트워크에 있음
2. TCP 접속502(또는 설정한 포트)에 접속되는가Modbus 서버가 듣고 있음
3. Modbus 응답요청에 MBAP 응답이 오는가Unit ID·함수가 맞음
4. 값값이 말이 되는가주소 표기·워드 순서가 맞음

1. 네트워크: 대역부터

공장 장비는 192.168.1.x 같은 고정 IP 로 나오는 경우가 많아, PC 가 다른 대역이면 핑도 닿지 않습니다. PC 에 그 대역의 IP 를 하나 더 붙이면 지금 네트워크를 끊지 않고 장비에 닿을 수 있습니다(예: 장비 192.168.1.10 → PC 192.168.1.200, 서브넷 마스크 255.255.255.0). 핑을 막아 둔 장비도 있으므로 «핑 안 됨» 만으로 장비가 없다고 단정하지 않습니다 — 같은 대역이면 ARP 로 물어 찾을 수 있습니다.

2. 502 포트에 접속되는가

3. 접속은 되는데 답이 없을 때: MBAP 와 Unit ID

보유 레지스터 0 부터 2개를 읽는 요청과 그 응답(값 100, 200)입니다.

요청  00 01 00 00 00 06 01 03 00 00 00 02
응답  00 01 00 00 00 07 01 03 04 00 64 00 C8
바이트뜻
00 01트랜잭션 ID — 서버가 응답에 그대로 돌려줌
00 00프로토콜 ID — Modbus 는 0
00 06길이 — 뒤따르는 바이트 수(Unit ID + PDU)
01Unit ID
03 00 00 00 02PDU — 함수 03, 시작 주소 0, 개수 2

4. 접속이 자꾸 끊기거나 다시 안 붙을 때

응답은 오는데 값이 이상하면

통신이 아니라 해석 문제입니다. 값이 한 칸씩 밀리면 주소 표기(0 기준·40001), 32비트 값만 이상하면 워드 순서를 봅니다. 예외 응답이 오면 Modbus 응답 없음 점검 글의 예외 표를 보세요.

PortDock 에서는

작성 2026-10-22