PortDock 웹 도구 «산업 통신 pcap 해석기» 는 캡처 파일에서 Modbus TCP 요청과 응답을 트랜잭션 ID 로 짝지어 응답 시간을 잽니다. 이 글은 그 결과 표를 읽는 순서입니다. MC 프로토콜도 같은 표로 나오며, 짝은 4E 일련번호(3E 는 보낸 순서)로 맞춥니다.
1. 응답 시간은 무엇을 잰 것인가
요청 프레임의 마지막 바이트가 캡처된 시각부터, 같은 트랜잭션 ID 의 응답 프레임 마지막 바이트가 캡처된 시각까지입니다. 장비의 처리 시간과 네트워크 왕복이 들어 있고, 게이트웨이 뒤 시리얼 장비라면 시리얼로 주고받는 시간까지 들어갑니다. 캡처한 위치에 따라 숫자가 달라집니다 — 클라이언트 PC 에서 뜨면 그 PC 가 본 시간, 미러 포트에서 뜨면 장비 사이에 가까운 시간입니다.
2. 요약 칸 읽기
| 칸 | 뜻 | 볼 점 |
|---|---|---|
| 중앙 | 응답 시간을 줄 세웠을 때 가운데 값 | 평소 속도. 폴링 주기보다 충분히 짧은지 |
| 95% | 응답의 95% 가 이 값 안에 들어옴 | 타임아웃을 정할 때의 바닥. 타임아웃이 이보다 짧으면 평소에도 가끔 무응답이 남 |
| 최대 | 가장 늦은 응답 | 한 번 튄 값인지 여러 번인지는 시간축 그래프로 |
| 무응답 | 기준 시간(기본 1000ms) 안에 짝 응답이 없음 | 캡처 누락일 수도 있음 — 아래 4절 |
| 짝 없는 응답 | 요청 없이 온 응답, 또는 기준 시간이 지난 뒤 온 응답 | 늦게라도 답이 온 것 — 클라이언트 타임아웃이 짧을 수 있음 |
| 캡처 끝 | 캡처가 끝나 판단할 수 없는 마지막 요청 | 문제로 세지 않음 |
무응답 기준 시간은 화면에서 바꿀 수 있습니다. 쓰는 HMI·PLC·프로그램의 타임아웃과 같게 두면, 그쪽이 «시간 초과» 로 본 요청과 같은 것을 셉니다.
3. 표를 어느 순서로 보나
- 연결별: 클라이언트가 같은 서버에 연결을 여러 개 열었는지, 연결마다 요청 간격(폴링 주기)과 응답 시간이 다른지. 재전송·빠짐 수가 크면 네트워크(선·스위치·혼잡) 쪽부터 봅니다.
- 장치(국번)별: 게이트웨이 하나 뒤에 유닛 ID 가 여럿이면, 특정 국번만 느리거나 무응답이 몰리는지. 그 국번의 시리얼 배선·국번 설정·보율을 봅니다.
- 함수 코드별: 읽기(03·04)는 빠른데 쓰기(06·10)만 느린 장비가 있습니다. 한 번에 읽는 개수가 많은 요청이 느린지도 봅니다.
- 예외 코드: 02(주소 없음)·03(값 틀림)은 요청을 고칠 일이고, 04·06·0B 는 장비·게이트웨이 상태 쪽입니다. 행을 누르면 그 프레임을 Modbus 해석기로 열어 칸마다 볼 수 있습니다.
4. «무응답» 이 정말 장비 탓인지 가리기
- 결과 위의 알림에 «빠진 바이트» 가 있으면 캡처 자체가 패킷을 잃은 것입니다. 미러 포트가 바쁘거나 느리면 생깁니다.
- 같은 시각에 다른 연결·다른 국번도 함께 무응답이면 장비 하나보다 네트워크나 게이트웨이 쪽일 가능성이 큽니다.
- 무응답 직후 같은 트랜잭션 ID 의 짝 없는 응답이 오면, 장비는 답했지만 기준 시간보다 늦은 것입니다.
- 무응답 뒤 클라이언트가 연결을 끊고 다시 여는 모습(연결 끊김, 새 연결)도 흔합니다 — 접속 수가 적은 장비는 새 연결을 거절하기도 합니다.
5. 게이트웨이 뒤 시리얼 장비라면
Modbus TCP → RTU 게이트웨이 뒤의 장비는 시리얼로 주고받는 시간이 응답 시간에 그대로 더해집니다. 예를 들어 9600bps, 1문자 11비트(8비트 + 시작·정지·패리티)에서 보유 레지스터 10개 읽기는 요청 8바이트 + 응답 25바이트 = 33문자로, 전송만 약 37.8ms 입니다(33 × 11 ÷ 9600). 여기에 장비 처리 시간과 프레임 사이 쉼(3.5문자)이 붙습니다. 보율·개수별 시간은 «시리얼 통신 시간 계산기» 로 셉니다. 게이트웨이 하나에 국번이 여럿이면 요청을 차례로 처리하므로 국번 수만큼 기다림이 늘어납니다.
6. 숫자로 설정 정하기
- 타임아웃: 95% 와 최대를 보고 최대보다 여유 있게 — 시간축 그래프에서 한두 번 튄 값이 모두 무응답이 되지 않을 만큼.
- 폴링 주기: 연결의 요청 간격(중앙)이 응답 시간 중앙에 너무 가까우면 요청이 쌓입니다. 장비 수 × 응답 시간보다 길게 둡니다.
- 바꾼 뒤 다시 떠서 같은 표로 비교합니다. 장비 없이 늦은 응답·무응답을 일부러 만들어 보려면 PortDock Modbus Slave 의 장애 주입(응답 지연·응답 안 함)을 씁니다.
Wireshark 는 Wireshark Foundation 의 상표이며, PortDock 은 Wireshark·Microsoft 와 제휴 관계가 아닙니다.
근거
- Modbus Messaging on TCP/IP Implementation Guide V1.0b — MBAP 머리 — 트랜잭션 ID 로 요청·응답 짝, 유닛 ID
- Modbus Application Protocol Specification V1.1b3 — §7 예외 코드
- Wireshark Wiki — CaptureSetup/Ethernet — 미러 포트의 캡처 손실
작성 2026-10-31