1. 项目背景与需求解析
工业自动化领域中,PLC与变频器的通讯控制一直是产线设备联动的核心环节。三菱FX3U作为经典的小型PLC,在中小型自动化项目中应用广泛,而通过Modbus RTU协议实现与多台变频器的稳定通讯,是许多设备工程师的刚需技能。
这个项目的核心在于解决三个实际问题:
- 如何在不增加额外通讯模块的情况下,利用FX3U自带的RS485接口实现Modbus主站功能
- 如何通过程序轮询机制稳定控制3台变频器的启停、频率给定和状态监控
- 如何在存在干扰的工业现场保证通讯成功率,避免因通讯失败导致的生产中断
我去年在某包装产线改造项目中就遇到过类似需求,当时需要同时控制三台E800系列变频器同步运行。经过实测,采用本文介绍的方案后,通讯周期可稳定控制在200ms以内,完全满足产线节拍要求。
2. 硬件配置与接线规范
2.1 硬件选型清单
- 主站设备:FX3U-32MT/ES-A(自带RS422/485接口)
- 从站设备:三菱FR-E800系列变频器3台(支持Modbus RTU协议)
- 通讯电缆:屏蔽双绞线(型号:BELDEN 9841)
- 终端电阻:120Ω 1/4W(用于线路两端)
2.2 接线要点图解
code复制FX3U RS485接口 变频器1 变频器2 变频器3
SDA ────────────┬───────────┬───────────┐
│ │ │
SDB ────────────┼───────────┼───────────┤
│ │ │
RDA ────────────┼───────────┼───────────┤
│ │ │
RDB ────────────┴───────────┴───────────┘
注意:必须确保所有设备的信号极性一致,SDA对应变频器的S+,SDB对应S-
2.3 关键参数设置
-
FX3U侧:
- 通讯格式:D8120=H0C87(19200bps,8,N,1)
- 超时设置:D8129=100(1秒超时)
-
变频器侧(以FR-E840为例):
- Pr.117=1(站号1)
- Pr.118=192(波特率19200)
- Pr.119=0(8位数据)
- Pr.120=2(偶校验)
- Pr.121=9999(无通讯超时)
3. 通讯程序架构设计
3.1 轮询机制实现
采用状态机方式轮询3台变频器,典型轮询周期分配:
code复制状态0:读取变频器1的输出频率(Holding Register 0x0002)
状态1:写入变频器1的运行指令(Coil 0x0000)
状态2:读取变频器2的输出频率
状态3:写入变频器2的运行指令
(以此类推...)
状态6:延时等待(50ms)
3.2 关键软元件分配
- D100-D119:通讯数据缓冲区
- M100-M102:变频器故障状态标志
- M200-M202:通讯超时标志
- C10:轮询状态计数器
4. 核心程序段详解
4.1 Modbus指令生成
以读取变频器1频率为例:
code复制MOV K1 D0 // 从站地址=1
MOV H2 D1 // 功能码=03(读保持寄存器)
MOV H0 D2 // 起始地址高字节
MOV H2 D3 // 起始地址低字节(0x0002)
MOV H0 D4 // 读取数量高字节
MOV H1 D5 // 读取数量低字节(1个字)
CALL P0 // 调用CRC计算子程序
RS D0 K6 D100 K8 // 发送6字节,接收8字节
4.2 CRC校验子程序
code复制P0:
MOV K65535 D10 // CRC寄存器初始值
LD M8000
FOR K8
...
NEXT // 完整CRC16算法实现
MOV D10 D6 // CRC结果存入D6-D7
MOV D11 D7
RET
5. 故障处理与调试技巧
5.1 常见故障代码
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| 通讯超时 | 波特率不匹配 | 检查Pr.118与D8120 |
| CRC错误 | 极性接反 | 交换SDA/SDB接线 |
| 无响应 | 站号设置错误 | 核对Pr.117与程序 |
5.2 现场调试心得
-
干扰处理:在变频器动力线与通讯线平行走线时,实测在30cm间距下仍会出现偶发干扰。最终采用以下措施解决:
- 通讯线全程穿金属管
- 在PLC端增加磁环(TDK ZCAT2032-0930)
- 所有变频器PE端子单独接地
-
参数优化:通过修改D8129(超时时间)与轮询间隔的平衡点,找到最优通讯效率:
- 当D8129=50(500ms)时,通讯成功率99.2%
- 当D8129=30时,成功率提升到99.8%但周期延长15%
6. 程序优化建议
6.1 通讯效率提升
采用"乒乓缓存"机制:
- 设置双缓冲区(D100-D119和D200-D219)
- 当前缓冲区正在通讯时,可处理上一周期数据
- 实测可减少约20%的轮询周期
6.2 安全保护措施
- 增加心跳检测:当连续3次通讯失败时,自动触发急停(M50)
- 频率渐变处理:在D寄存器中设置频率变化率限制(如每秒最大变化5Hz)
- 备用方案:保留硬接线控制回路作为应急备用
在实际项目中,这套系统已经连续运行超过8000小时无故障。最关键的体会是:通讯线的屏蔽处理比程序本身更重要。有一次产线改造时临时用了非屏蔽线,结果通讯误码率立即上升了20倍,换回屏蔽线后问题立刻消失。