PortDock

Modbus RTU 타임아웃·폴링 주기 정하기 — 3.5문자 시간과 응답 시간 계산

응답 타임아웃과 폴링 주기를 몇 ms 로 둘지 — 문자 시간·t3.5·프레임 전송 시간·슬레이브 처리 시간으로 하한을 계산하고, 값이 짧거나 길 때 생기는 증상을 정리합니다.

이 글에서 쓰는 도구Modbus Master 윈도우 프로그램 · 무료Serial 윈도우 프로그램 · 무료시리얼 통신 시간 계산기 웹 · 설치 없음Modbus RTU 요청 만들기 웹 · 설치 없음

Modbus RTU 마스터(PLC·HMI·PC 프로그램)에는 보통 «응답 타임아웃», «재시도 횟수», «요청 간격», «폴링 주기» 설정이 있습니다. 타임아웃이 너무 짧으면 멀쩡한 장비가 «응답 없음» 으로 보이고, 너무 길면 장비 하나가 꺼졌을 때 버스 전체의 갱신이 느려집니다. 이 글은 보율과 프레임 길이로 «적어도 얼마가 필요한지» 를 계산하는 방법입니다.

1. 문자 시간 — 한 바이트에 몇 ms

시리얼은 한 바이트를 시작 비트·데이터 비트·패리티·정지 비트로 묶어 보냅니다. Modbus RTU 규격의 문자는 데이터 8 비트에 짝수 패리티 1·정지 1 이고(기본값), 패리티를 쓰지 않으면 정지 비트를 2 로 둡니다. 어느 쪽이든 한 문자는 11 비트이고, 문자 시간 = 11 ÷ 보율 입니다.

보율문자 시간t1.5t3.5초당 최대 바이트
96001.146 ms1.719 ms4.010 ms872
192000.573 ms0.859 ms2.005 ms1745
384000.286 ms0.75 ms (고정)1.75 ms (고정)3490
1152000.095 ms0.75 ms (고정)1.75 ms (고정)10472

RTU 에는 프레임 길이 칸이 없어서, 받는 쪽은 «조용한 시간» 으로 프레임을 나눕니다. 규격은 바이트 사이 틈이 1.5 문자(t1.5)를 넘으면 그 프레임을 버리고, 3.5 문자(t3.5) 이상 조용하면 프레임이 끝난 것으로 봅니다. 19200 bps 를 넘으면 이 시간이 너무 짧아 처리 부담이 커지므로 t1.5 = 750 µs, t3.5 = 1.75 ms 고정값을 권장합니다.

2. 프레임 길이 — 몇 바이트를 주고받나

RTU 프레임은 국번 1 + 함수 1 + 데이터 + CRC 2 바이트입니다. 읽기 요청은 늘 8 바이트이고, 응답 길이는 읽는 개수에 따라 늘어납니다.

함수요청정상 응답개수 한도
03·04 레지스터 읽기85 + 2N125
01·02 코일·입력 읽기85 + ⌈N ÷ 8⌉2000
05·06 단일 쓰기881
10 여러 레지스터 쓰기9 + 2N8123
예외 응답—5—

보유 레지스터 125 개를 한 번에 읽으면 응답이 255 바이트라, 9600 bps 8E1 에서 전송에만 약 292 ms 가 걸립니다. 블록이 클수록 요청 수는 줄지만 응답 하나가 길어지므로 타임아웃도 그만큼 길어야 합니다.

3. 거래 하나에 걸리는 시간

9600 bps 8E1 에서 FC03 레지스터 10개를 읽는 거래의 시간선: t3.5 4.0 ms, 요청 8 바이트 9.2 ms, 슬레이브 처리 10 ms, 응답 25 바이트 28.6 ms, t3.5 4.0 ms. 요청 끝부터 응답 끝까지가 응답 타임아웃의 하한
거래 하나 = 요청 + 슬레이브 처리 + 응답 + 다음 요청 전 t3.5. 응답 타임아웃은 요청을 다 보낸 뒤부터 응답이 다 올 때까지보다 길어야 합니다.

9600 bps 8E1 에서 레지스터 10 개(FC03)를 읽으면 요청 8 바이트 9.2 ms, 응답 25 바이트 28.6 ms, t3.5 4.0 ms 입니다. 슬레이브 처리 시간이 10 ms 라면 거래 하나에 약 51.8 ms, 장비 5 대를 차례로 읽으면 한 바퀴에 약 259 ms 가 걸립니다. 폴링 주기를 이보다 짧게 잡아도 버스가 하나라 더 빨라지지 않습니다.

슬레이브 처리 시간은 장비마다 다릅니다. 매뉴얼에 «응답 시간» 이나 «응답 지연(Response delay)» 설정이 있으면 그 값을 쓰고, 없으면 통신 기록에서 요청과 응답 사이 시간을 잽니다. 처리 시간이 전송 시간보다 긴 장비가 많아, 보율만 올려서는 한 바퀴가 생각만큼 줄지 않습니다.

4. 응답 타임아웃 정하기

5. 증상으로 보는 잘못된 설정

증상의심할 것
가끔 응답 없음, 다음 요청의 응답이 이전 요청의 답처럼 보임타임아웃이 처리 + 응답 시간보다 짧음 — 늦게 온 응답이 다음 요청 자리에 들어옴
큰 블록 읽기만 실패하고 작은 읽기는 됨응답 전송 시간(5 + 2N 바이트)이 타임아웃보다 김
응답이 둘로 쪼개져 CRC 틀림USB 변환기 지연, 또는 장비가 바이트 사이를 t1.5 보다 길게 띄움
장비 하나가 꺼지면 전체 갱신이 몇 초씩 멈춤타임아웃 × 재시도가 큼
연달아 보낸 요청 중 일부만 응답 없음, 예외 06(바쁨)요청 사이 쉼이 장비가 처리하기에 짧음 — 요청 간격을 늘림

PortDock 에서는

작성 2026-10-23