网关连接ModbusRTU串行设备故障排查

15 5月 2026

客户在使用我们串行网关时常常遇到串行侧网络通讯问题,但是又无从下手,不知道如何排查。根据客户常见问题,进行了以下总结。即便是不连接我们网关,对于ModbusRTU串行设备在通讯故障时,都可以按照以下步骤来排查和解决。

1.检查物理连接-RS485接口

  • 使用带屏蔽双绞线,采用手拉手菊花链式拓扑结构将网关和各串行设备节点连接起来。
  • 在网络起始端和末尾端设备的RS485+和RS485-之间各跨接一个120Ω电阻以减少信号在两端的反射。

有的客户说,我用USB转RS485接线接到串行设备上进行测试通讯是正常的,但是接到网关上就不行。我们购买的标准USB转RS485接线,在RS485正和负之间通常有一个内置的终端电阻,但是网关是没有的,需要外接。

还有一类常见错误,没有采用手拉手连接,就会出现断掉某几个设备可以通讯,加上了之后通讯就出问题。在没有使用中继器的情况下,串行设备之间必须是手拉手连接。

首先必须排查物理连接问题,在我们遇到的客户问题当中至少一半以上都是物理连接错误导致的。确定物理连接没有问题后,我们在去看配置和报文。

2.抓取串行总线报文-串行设备无回复

在抓取的报文中,只有网关发出的请求报文( 方向: ),没有设备的响应报文

(方向: )。

A screenshot of a computer AI-generated content may be incorrect.

  1. 检查物理连接
  • RS485正, 负是否接反,网关2管脚RS485+,3管脚RS485-
  • 终端电阻是否连接(两端各120Ω)
  1. 检查配置中的节点地址与设备地址是否一致

如果设备的实际地址是5,而在配置中设置的是1,这显然是无法通讯上的。

  1. 检查串行设备是否正常工作

设备先不连接网关,找一根USB转RS485接线连接设备,在电脑中运行Modbus主站模拟工具,看是否能正常通信。

  1. 检查网关串行通讯参数(波特率、数据位、校验,停止位)设置是否与设备一致

3. 设备响应报文中第二个字节数据>0x80(128)

设备有响应报文(方向: ),但是响应报文中第二个字节数据>0x80,表明这是异常响应,根据响应报文中第三个字节的异常码来确定问题。

常见的异常码含义如下,根据异常码找到

相应的错误。譬如异常码是01,表明指令中使用的功能码不正确。异常码是02,表明指令中寄存器起始地址或者数量不正确。正确的功能码和可以访问的寄存器地址都需要查看串行设备手册。

4. 设备回复信息不在一条报文中

设备回复的报文(方向: )分多行显示,但总的信息是对的。

在“通讯”界面,“报文间隔设置”选择自定义。将“字符间间隔”和“报文间间隔”都改大。

先将默认值的17和38改为50和100,然后结合抓取的报文再调整。

A screen shot of a computer AI-generated content may be incorrect.

有的人就会问这两个参数的含义是什么。Modbus报文帧通过报文间间隔来确定一条报文的结束,协议中规定信息帧发送至少要以3.5个字符时间的停顿间隔开,也就是一条报文帧在最后一个字符传输后,需要至少间隔3. 5个字符时间的停顿来标定信息帧的结束,一个新的信息帧在此停顿之后才能开始。如果一个新消息在小于3.5个字符时间内接着前个消息开始,接受的设备将认为它是前一信息帧的延续,这将导致CRC校验出错。

同时整个信息帧必须作为连续的流传输。一条信息帧内字符间间隔需要小于1.5个字符,如果在帧完成之前有超过1.5个字符时间的停顿,接受设备将刷新不完整的信息帧并认为存在丢包现象。

当然我们可以根据实际设备去调整这两个参数值,但显然报文间间隔是要大于字符间间隔的,如果调整了字符间间隔,那么对应的报文间间隔也要做相应的调整。

字符由1bit起始位,8bit数据位,1bit校验位,1bit停止位组成。

6.设备很多,指令很多,如何过滤报文。

串行设备很多,指令很多,无法在网页界面找到问题,如何将报文导出并对信息进行过滤和筛选。

抓取问题时刻的报文,停止后点击右上角“导出”按钮,将报文导出到Excel表格中。您可以在Excel中进行过滤和筛选,譬如根据设备地址,或者功能码进行筛选,帮助我们快速找到问题。

A screenshot of a computer AI-generated content may be incorrect.

7.超时时间和重连时间的作用

客户在使用中常常不清楚超时时间,重连时间,重试次数之间的关系。

Modbus通讯采用轮询方式,更新时间是Modbus主站发送请求指令的更新时间,发送请求指令后,如果在超时时间内没有收到从站设备的正确响应信息,主站将重复发送该请求指令,如果在连续重试次数后都没有收到该设备的正确响应信息,主站认为该从站设备故障,在重连时间前将不再向该设备发送请求报文,以免增加总线轮询时间。

由于是轮询方式,如果有设备掉站,或者指令响应超时 ,都会影响总线轮询时间。