1. Modbus RTU通讯基础认知
第一次接触Modbus RTU时,我盯着设备说明书里的"9600-8-N-1"参数发懵。后来才明白,这串数字就像设备的"方言密码"——9600波特率、8位数据位、无校验、1位停止位。工业现场最常见的通讯协议之一,用RS485接口时最远传输距离能达到1.2公里,比蓝牙的10米强了不止一星半点。
Modbus协议家族有三个兄弟:RTU、ASCII和TCP。RTU用二进制直接传输,效率最高;ASCII码像电报机一样把数据转成字符;TCP则是给网络设备用的。三菱FX3U这类PLC最常用的就是RTU模式,因为它的报文紧凑,同样带宽下能传更多数据。实测在9600波特率下,RTU报文传输速度比ASCII快3倍以上。
2. 硬件连接实战
去年给工厂改造时,我用FX3U-32MT PLC搭配485ADP-MB模块搭建从站。接线时踩过坑——RS485必须用双绞线,A/B线绝对不能接反。有次偷懒用了普通电线,通讯时不时丢包,后来换了带屏蔽的双绞线立刻稳定。接线口诀:"A对A,B对B,地线不要忘",就像接网线一样简单。
硬件清单要备齐:
- 主站设备:带串口的电脑+USB转485转换器(推荐用FTDI芯片的)
- 从站设备:FX3U PLC + 485BD或485ADP-MB模块
- 线材:RVSP 2×1.0mm²屏蔽双绞线
- 终端电阻:线路超过50米时要在两端接120Ω电阻
3. PLC从站配置详解
给FX3U配置Modbus从站就像给手机设WiFi。关键三个特殊寄存器:
- D8420设通讯格式:MOV H1087 D8420 (9600bps/8位/偶校验)
- D8421设协议模式:MOV H11 D8421 (Modbus RTU从站)
- D8434设站号:MOV K1 D8434 (站地址设为1)
最容易被忽略的是触发位M8411,配置完必须用脉冲指令触发:SET M8411。有次调试两小时不通,最后发现忘了这个"保存按钮"。建议用GX Works2的监视功能,直接查看这些寄存器的十六进制值是否写入成功。
4. 报文构造与解析
Modbus RTU报文就像快递包裹:
- 地址码:快递单号(从站地址)
- 功能码:寄件类型(01读线圈/03读寄存器)
- 数据区:包裹内容
- CRC校验:防拆封贴纸
读M0-M15的报文示例:
01 01 00 00 00 10 3D C6- 01:从站地址
- 01:读线圈功能码
- 00 00:起始地址M0
- 00 10:读取16个位
- 3D C6:CRC校验
用串口助手发送时,记得勾选"16进制发送"和"CRC校验"。收到回复可能是:
01 01 02 FF 00 B8 44这里的"FF 00"表示M0-M7全ON,M8-M15全OFF。注意PLC的位地址是8位一组打包返回的。
5. 功能码实战技巧
最常用的五个功能码:
- 01H读线圈:监控X/Y/M状态
- 02H读离散输入:专读X输入点
- 03H读保持寄存器:读D寄存器
- 05H写单线圈:控制Y/M点
- 10H写多寄存器:批量写D值
重点注意:
- 读线圈数量别超2000个(250字节)
- 写寄存器时注意字节序:三菱是高字节在前
- 功能码出错时会返回异常码(原功能码+0x80)
6. 错误排查手册
常见故障现象及对策:
通讯超时:
- 检查接线(A/B线是否反接)
- 确认波特率/校验位设置
- 测量RS485电压(A-B应有2-6V差分电压)
CRC校验错误:
- 检查终端电阻(长距离需120Ω)
- 避免与变频器共用电源
- 用示波器看信号波形是否畸变
从站无响应:
- 确认PLC已切RUN模式
- 检查M8411是否触发
- 用串口监听工具确认主站是否发出报文
有个快速测试技巧:先用电脑接PLC,用串口调试助手手动发报文,排除硬件问题后再对接主站设备。曾经有台设备死活不通,最后发现是供应商给的协议文档里寄存器地址偏移量写错了。