星恒讯工业路由器头像
工业路由器连接PLC及Modbus RTU转TCP透传实战指南封面图

工业路由器连接PLC及Modbus RTU转TCP透传实战指南

一、硬件连接拓扑

1.1 整体链路结构

典型的Modbus RTU转TCP链路包含三个物理节点:

text

[PLC (RS485/Modbus RTU从站)]
        │  RS485 A/B 双绞线
        ▼
[工业路由器 (Modbus网关模式)]
        │  以太网 / 4G / 5G
        ▼
[上位机 (Modbus TCP主站)]

PLC作为Modbus RTU从站,通过RS485接口与工业路由器的串口相连;路由器将RTU帧转换为Modbus TCP帧后,通过以太网口或蜂窝网络送达上位机。上位机侧以标准Modbus TCP主站身份发起请求。

1.2 RS485接线定义

以西门子S7-200 SMART为例,其RS485端口采用DB9母头,引脚定义中 Pin 3 为A(RS485+),Pin 8 为B(RS485-) 。PLC端的A、B分别与路由器串口的A、B对应连接。若通信异常,可在断电条件下对调A、B两端再试,这是RS485极性不匹配时的常规排查手段。

对于三菱PLC或其他品牌,RS485端子通常直接标注A/B或DA/DB,接线逻辑相同:正对正、负对负。RS485采用差分信号传输,建议使用屏蔽双绞线,屏蔽层单端接地,以降低现场电磁干扰对CRC校验的影响。

1.3 以太网连接

若上位机与路由器在同一局域网内,使用标准网线连接路由器LAN口与上位机网口,并为两者分配同网段IP。若上位机位于远端,则通过路由器的WAN口(4G/5G或以太网上行)建立可达路径,此时需确保上位机能够路由到路由器的LAN侧IP或WAN侧公网/专网IP。

二、参数配置详解

配置的核心原则是:串口两侧参数严格一致,TCP侧参数与主站预期匹配。

2.1 PLC通信参数设定

Modbus RTU的串口参数包括波特率、数据位、校验位和停止位,常见组合为9600/8/N/1(9600 bps,8数据位,无校验,1停止位)。部分电力仪表使用8/E/1(偶校验),高干扰环境可能使用8/N/2(双停止位)以增强抗干扰能力。

在PLC编程软件中设置自由口通信参数时,需确保与路由器侧完全一致。以S7-200 SMART的Modbus主站指令为例,MBUS_CTRL指令中的波特率、奇偶校验参数必须与所连接从站设备的设置逐一匹配,超时参数典型值为1000 ms。若PLC作为RTU从站(本教程场景),则参数在PLC系统块或通信端口设置中指定。

关键检查项:PLC的从站地址(Slave ID / Unit ID)需记录,后续在路由器或上位机侧需要用到。常见取值为1,但允许范围为1–247。

2.2 工业路由器串口参数配置

登录工业路由器的Web管理界面,找到串口配置或DTU/Modbus网关相关页面。

需要设置的串口参数:

text

波特率:9600(与PLC一致)
数据位:8
校验位:无(None)
停止位:1
流控:无(None)

部分路由器以“8N1”的简写形式呈现串口参数,与上述设置等价。若PLC实际使用偶校验,则对应修改为8E1,切勿仅在路由器侧使用默认值而忽略PLC侧的差异。

2.3 工作模式选择:透传 vs 协议转换

工业路由器的Modbus相关功能通常提供两种模式,二者用途不同:

透传模式(Transparent / DTU Mode)

路由器将串口收到的原始字节流直接封装为TCP载荷发出,不做任何协议解析或帧格式转换。上位机侧必须自行按Modbus RTU格式解析数据。适用于:上位机软件仅支持串口RTU协议、需要将串口“延长”到IP网络,或现场协议并非标准Modbus的场景。

Modbus RTU转TCP网关模式(Protocol Conversion Mode)

路由器在指定端口上运行Modbus TCP Server,接收标准Modbus TCP请求(含功能码、Unit ID、寄存器地址、寄存器数量),将其转换为RTU帧从RS485口发出,等待从站响应后再封装为Modbus TCP应答返回主站。适用于:上位机或SCADA平台仅支持Modbus TCP,而现场PLC仅具备RTU接口的典型场景。

本教程以Modbus RTU转TCP网关模式为主线,因为这是工业物联网改造中最常见的需求形态。

2.4 TCP侧参数配置

text

工作模式:TCP Server(路由器作为服务端,等待上位机连接)
监听端口:502(Modbus TCP标准端口)
Unit ID映射:与PLC从站地址一致(例如1)
最大连接数:根据实际主站数量设置

若路由器侧的Modbus转换功能有独立开关,需确认已启用“Modbus RTU ↔ TCP”转换选项。部分设备在选择该选项后会自动将端口设为502。若上位机作为TCP Client主动连接路由器,则路由器为TCP Server;若上位机为Server而路由器需主动上报,则切换为TCP Client模式并填写上位机的IP与端口。

关于Unit ID:在协议转换模式下,路由器通常保留Modbus TCP报文中的Unit ID,并将其作为目标RTU从站地址使用。因此上位机侧填写的Slave ID应与PLC的实际从站地址一致。若转换过程中Unit ID丢失或映射错误,PLC可能不响应请求。

三、通信测试与验证

测试分为两步:先验证串口侧RTU链路正常,再验证完整的RTU→TCP转换链路。

3.1 串口侧验证(可选但推荐)

若条件允许,先用USB转RS485工具直接连接PLC,配合Modbus Slave或串口调试工具确认PLC的RTU响应正常。这可以排除PLC参数错误、接线极性错误等底层问题,避免在TCP侧反复排查却始终找不到根因。

3.2 使用Modbus Poll(TCP主站)与Modbus Slave(RTU从站)联合测试

一种不依赖实际PLC的验证方法是:使用Modbus Slave软件在串口侧模拟RTU从站,Modbus Poll通过TCP连接路由器的Modbus TCP端口,观察数据能否双向穿透。

步骤一:配置Modbus Slave(串口RTU从站模拟)

打开Modbus Slave,Connection设置:

text

Connection:Serial Port
串口:选择连接PLC的COM口(或USB转485虚拟串口)
模式:RTU
波特率/数据位/校验位/停止位:与PLC及路由器设置一致
Slave ID:与PLC从站地址一致

定义若干保持寄存器(如功能码03,起始地址0,数量10),并写入测试值。

步骤二:配置Modbus Poll(TCP主站)

打开Modbus Poll,Connection设置:

text

Connection:Modbus TCP/IP
IP地址:工业路由器的LAN口IP(或可达的WAN IP)
端口:502(与路由器监听端口一致)
Slave ID:与PLC从站地址一致

在Setup → Read/Write Definition中设置功能码(如03 Holding Register)、起始地址和数量,点击OK后观察轮询状态。

步骤三:读写验证

  • 在Modbus Slave中修改寄存器值,观察Modbus Poll对应地址的数据是否同步变化;

  • 在Modbus Poll中对可写寄存器(功能码06或16)执行写入,观察Modbus Slave侧数值是否更新。

双向读写均正常,说明串口参数、Unit ID映射、TCP连接与协议转换链路均已打通。

若使用实际PLC替代Modbus Slave,验证逻辑相同:将Modbus Poll的IP与端口指向路由器,读取PLC中已知的寄存器地址,与PLC编程软件监控到的值进行比对。

四、常见排错指南

4.1 通信超时

现象:Modbus Poll持续显示Timeout,无有效响应。

排查顺序:

  1. 确认TCP连接是否建立:在Modbus Poll的Connection状态或路由器管理页面查看TCP连接数。连接未建立时,优先检查IP可达性、端口是否监听、防火墙是否放行。

  2. 区分TCP超时与RTU超时:TCP连接已建立但无数据返回,说明请求已到达路由器但RTU侧无响应。此时应转向排查串口参数、A/B接线极性和PLC从站地址。

  3. 检查超时参数是否过紧:4G/5G链路存在抖动,延迟可能从数十毫秒跳升至数百毫秒。超时时间建议设置为实测最大延迟的2–3倍,典型范围500–2000 ms。超时过短会导致正常响应尚未返回即被判定失败,进而引发重发和链路拥塞。

4.2 CRC校验错误

现象:Modbus Poll返回CRC错误,或路由器日志中出现CRC异常计数,偶发通信成功但错误率很高。

CRC错误属于RTU帧层面的问题,通常指向串口物理层或参数不一致,而非TCP网络层。

常见原因与处理:

  • 串口参数不匹配:PLC与路由器的波特率、数据位、校验位、停止位中任一不一致,都会导致接收端按错误的位边界解析,产生CRC失败。最隐蔽的情形是校验位不一致(如PLC为8E1、路由器为8N1),偶尔因干扰恰好“碰对”校验位而间歇性成功,但绝大部分帧仍CRC错误。逐一核对并统一参数。

  • RS485接线或极性错误:A/B接反或接触不良会导致差分信号判决错误。断电后对调A/B测试,检查端子紧固情况。

  • 电磁干扰与线缆质量:变频器、电机等干扰源附近的非屏蔽线缆容易引入位错误。使用屏蔽双绞线、单端接地,并尽量远离动力电缆。

  • 协议转换模式下的帧处理:若路由器工作在透传模式而主站按TCP协议解析,或路由器进行了转换而上位机仍按RTU解析,会出现“格式不对导致CRC失败”的假象。先确认两端期望的协议格式,再选择路由器模式。

4.3 端口占用与连接数限制

现象:第二台上位机无法连接,或首次连接后路由器拒绝新连接。

Modbus TCP的502端口在同一时刻可能被一个主站独占,或路由器固件对并发连接数设有限制。排查时:

  • 确认路由器Modbus TCP Server的最大连接数配置是否大于实际主站数量;

  • 检查是否有已断开的TCP连接处于TIME_WAIT或未正常释放的状态,必要时在路由器侧清除残留会话或重启服务;

  • 若多主站需要同时访问同一PLC,应确认路由器是否支持多连接,或通过上层代理进行串行化。

4.4 读写值正确但数据异常

现象:通信正常,寄存器数量也正确,但读出的浮点数或32位整数与预期不符。

这通常与通信链路无关,而是字节序(Endianness) 问题。Modbus寄存器本身以16位为单位,32位数据跨两个寄存器,不同设备对高低字顺序的约定不同(常见ABCD、CDAB、BADC、DCBA四种)。透传模式下路由器不修改数据,协议转换模式下路由器仅进行ADU封装转换,也不改变寄存器数据的字节序。应在主站软件中调整字序设置,或对照PLC手册确认其存储约定。

五、小结

工业路由器实现Modbus RTU转TCP的核心链路可以概括为:RS485物理层正确接线 → 串口参数两端严格一致 → 路由器选择正确的桥接模式(透传或协议转换) → TCP侧端口与Unit ID映射匹配 → 分阶段验证(串口侧→TCP侧→端到端读写) 。

排错时应遵循“先链路、后协议,先底层、后应用”的顺序:先确认TCP连接与串口物理层,再检查CRC与参数一致性,最后排查字节序和应用层解析。超时、CRC错误和端口占用是现场最高频的三类问题,分别对应TCP/串口参数、物理层/参数一致性、并发资源约束三个不同层面,不宜混为一谈。
 

转载自 CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/movingcomm/article/details/168245443

文章来源转载

评论

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--