Modbus RTU 是一种串行通讯协议,由于具有协议透明,实现本钱低,简朴易用等诸多特点,至今仍然普遍应用在工业控制的各个领域。
为了通讯可以恒久稳固的运行,并且可以在故障时可以实时处置惩罚和排查,特梳理此文,用做参考学习使用。
诊断事情以 S7-1200/S7-1500 PLC的串口通讯�?樯系闹甘镜谱钕龋�
1)�?楸咎寮� RX/TX LED 指示灯,用来指示串口通讯�?榈男畔⑹辗⒆刺�。
2)TX 代表发送,RX 代表吸收,例如 CM PtP RS422/RS485 HF 通讯�?榈� LED 指示灯如图1所示。

图1 LED指示灯
通过 RX/TX 指示灯的状态可以快速定位 Modbus RTU 通讯故障,并且团结 Modbus RTU 通讯指令状态代码,可以高效率地解决在现场中遇到的种种Modbus RTU 通讯问题,故障诊断判断流程如图 2 所示。

图2 通讯故障的判断流程图
作为 Modbus 主站,当与从站装备通讯不上时,触发主站指令后,视察串口通讯�?榈� TX 指示灯是否闪灼:
1)若是闪灼,则说明程序已经准确执行,此时若是 RX 不亮,则故障的判断偏向为接线或从站一侧。若是 RX 也闪灼,则捕获主站指令的状态代码,凭证代码的详细寄义排查故障缘故原由;
2)若是串口通讯�?榈� TX 指示灯不闪灼,则说明程序并未准确执行,故障缘故原由主要偏向为编程问题,检查初始化指令和主站指令是否编程准确,并捕获初始化指令和主站指令的状态代码,凭证代码的详细寄义排查故障缘故原由。
作为 Modbus 从站,当与主站装备通讯不上时,视察串口通讯�?榈� RX 指示灯是否闪灼:
1)若是闪灼,则说明可以吸收主站发来的新闻。在确认主站参数设置准确之后,故障主要判断偏向为从站的编程问题,检查初始化指令和从站指令是否编程准确,并捕获初始化指令和从站指令的状态代码,凭证代码的详细寄义排查故障缘故原由;
2)若是串口通讯�?榈� RX 指示灯不闪灼,则说明�?椴⑽次盏嚼醋灾髡镜娜魏涡挛�,故障缘故原由主要为接线或主站一侧,需检查接线是否准确、主站是否已乐成启动等问题。
捕获状态代码
由于 Modbus RTU 通讯指令的状态代码仅一连一个扫描周期,直接在线监控无法实时看到,以是我们可以编写程序捕获代码。
捕获代码示例如图3所示。初始化指令、主站指令、从站指令均需捕获状态代码。

图3 捕获代码
16#80C8
该代码寄义为:从站在设置时间内未响应,需要检查数据传输率、奇偶校验和从站的接线情形。
爆发该代码的可能缘故原由:
①接线过失。
在主从站接线时,许多用户习惯性的将装备间的 A 与 A,B 与 B 相连,进而组成总线式 RS485 网络,着实,准确方法为凭证正负举行组网,应将装备间的正与正,负与负相连,由于并非所有装备的 A 为正,B 为负,如 CB1241 通讯板,B 为正,A 为负,如图4所示。

图4 CB1241 通讯接线
16#81Ex
该代码均指向字符帧过失,如16#81EA:字符帧过短,16#81E2:字符帧过失。
爆发该代码的可能缘故原由:
①? 字符帧设置过失。
依次检查起始位、数据位、奇偶校验位、数据传输速率和竣事位个数的设置是否一致。
其中,竣事位的个数是在初始化指令的配景 DB 块中举行设置,默以为1个阻止位。如图5所示。

图5 配景DB设置
② 字符间最大字符延迟时间 “ICHAR_GAP”
在 Modbus RTU 规约中, Modbus RTU 报文帧之间距离不小于 3.5 个字符时间。如图6所示。

图6 Modbus RTU 报文帧以及距离
西门子串口通讯�?槟� Modbus RTU 报文帧竣事的默认条件为 3.5 个字符时间。
假设波特率为 9600 bit/s,1 个起始位,1 个阻止位,8 个数据位,1 个校验位,则 3.5 个字符时间为(1/9600)*1000*11*3.5=4 ms,差别波特率,对应的字符时间差别。
若是由于同伴响应时间稍长、线路阻抗较大,或外界滋扰等问题,Modbus RTU 报文帧中的字符间延时凌驾 3.5 个字符时间,则 PLC 会误以为报文帧竣事,但现实并未竣事,进而爆发该类过失。
可以适当增大字符间最大字符延迟时间 “ICHAR_GAP”,阻止该过失的爆发,如图7所示。

图7 字符延迟时间
16#8280/16#8281
该代码寄义为:读取/写入�?槭笔О�,请检查 Port 参数的输入。
爆发该代码的可能缘故原由:
①?初始化指令 Port 管脚输入过失
初始化指令 Port 管脚应输入串口通讯�?榈挠布晔斗�,过失的硬件标识符将导致初始化失败。
②?未指定事情模式
应在初始化指令的配景 DB 块 Mode 参数中,指定串口通讯�?榈氖虑槟J�,模式 4 为半双工(RS485)两线模式,如图 8 所示,下载程序后断电重启生效。差别的 Mode 数值代表差别的事情模式,如表 1所示。
该设置仅适用于 Modbus(RTU)指令集,不适用 Modbus 指令集。

图8 DB块模式

表1 种种模式列表
总结:以上内容是针对经常泛起的 S7-1200/1500 Modbus RTU 通讯故障的处置惩罚总结,更多内容接待与我们交流。