1. 工业自动化通讯的典型场景
在工厂自动化产线中,PLC与变频器的通讯控制是最基础也最关键的环节。三菱FX系列PLC作为日系小型PLC的代表,与台达变频器通过Modbus RTU协议实现数据交互,这种组合在纺织、包装、输送线等场景中非常普遍。我最近刚完成一个饮料灌装线的改造项目,就采用了FX3U-485BD扩展模块与台达VFD-M系列变频器的通讯方案。
这种方案的优势很明显:硬件成本低(485通讯模块仅几百元)、接线简单(仅需A/B两线)、协议开放(Modbus是行业通用标准)。但实际调试时会遇到各种"坑",比如通讯超时、数据错位、参数写入失败等。下面我就结合实战经验,从硬件配置到程序编写完整梳理整个实现过程。
2. 硬件连接与参数设置
2.1 硬件接线要点
先看物理层连接,需要准备:
- 三菱FX PLC(需带485通讯扩展能力,如FX3U+FX3U-485BD)
- 台达变频器(支持Modbus RTU的型号如VFD-M/VFD-E)
- 双绞屏蔽线(建议使用AWG22规格的RS485专用线)
接线时特别注意:
- PLC端的485BD模块SDA接变频器的R+,SDB接R-
- 终端电阻根据网络拓扑设置:当变频器作为末端设备时,需启用其内置120Ω终端电阻
- 屏蔽层单端接地(通常在PLC侧接地)
重要提示:曾遇到过因接地不良导致通讯时好时坏的情况,后来用万用表测量发现屏蔽层与地之间有0.8V交流电压,重新处理接地后问题解决。
2.2 变频器参数设置
以台达VFD-M为例,关键参数如下表:
| 参数代码 | 名称 | 设定值 | 说明 |
|---|---|---|---|
| P00 | 来源选择 | 03 | 通讯控制模式 |
| P01 | 操作方式 | 03 | 通讯给定频率 |
| P88 | 通讯地址 | 1 | 站号(与PLC程序需一致) |
| P89 | 波特率 | 19200 | 需与PLC保持一致 |
| P90 | 通讯格式 | 8N1 | 数据位8/无校验/停止位1 |
| P92 | 应答延时 | 20 | 单位ms(干扰大时可增大) |
2.3 PLC侧通讯设置
在GX Works2中配置:
- 打开"参数"-"PLC参数"-"PLC系统设置"
- 设置通道2(对应485BD模块):
- 协议:专用协议(实际仍用Modbus)
- 传输速度:19200bps
- 数据位/停止位:8/1
- 校验:无
- 设置站号:通常PLC作为主站设为0
3. 通讯程序编写详解
3.1 Modbus功能码选择
台达变频器常用功能码:
- 03H:读取保持寄存器(如输出频率、电流等)
- 06H:写入单个寄存器(如设定频率)
- 10H:写入多个寄存器(批量参数设置)
3.2 三菱专用指令应用
使用RS指令实现Modbus通讯,典型程序结构:
st复制MOV H81 D8120 // 设置通讯格式:19200/8/N/1
LD M8002
MOV K1 D8121 // 设置站号
// 读取运行频率(Modbus地址2000H)
LD X0 // 触发信号
RS D100 K8 D200 K5 // 发送帧存放在D100-D107
// 接收数据存入D200-D204
发送帧构成(D100-D107):
code复制D100: 01 // 变频器站号
D101: 03 // 功能码
D102: 20 // 寄存器地址高字节
D103: 00 // 寄存器地址低字节
D104: 00 // 读取数量高字节
D105: 01 // 读取数量低字节
D106: CRC低字节
D107: CRC高字节
3.3 CRC校验计算
三菱PLC需自行计算CRC16校验,算法如下:
st复制// CRC计算子程序示例
LD SM0
MOV K0 D0 // CRC初始值
MOV K8 D1 // 待计算字节数
LD M0
FOR K8
LD D100Z0 // 取数据字节
XOR D0 // 异或运算
MOV D0 D2
FOR K8
LD D2.15
AND M1
JMPC P1
SHL D2
XOR HA001
JMP P2
P1:
SHL D2
P2:
NEXT
MOV D2 D0
INC Z0
NEXT
调试技巧:初次调试时可先用串口调试助手验证CRC计算是否正确,我曾因字节顺序错误导致通讯失败。
4. 典型问题排查指南
4.1 常见故障现象与对策
| 故障现象 | 可能原因 | 解决方案 |
|---|---|---|
| 通讯超时 | 波特率不匹配 | 检查P89与PLC设置是否一致 |
| 收到错误响应(80H) | 功能码不支持 | 确认变频器型号支持的功能码 |
| 数据错乱 | 寄存器地址偏移错误 | 台达地址需加40000(16#2000) |
| 偶发通讯中断 | 电磁干扰 | 增加终端电阻/缩短通讯距离 |
| 只能读不能写 | 变频器处于运行状态 | 先停止运行再写入参数 |
4.2 调试工具推荐
- 串口监听工具(如AccessPort):
- 可抓取原始数据帧
- 验证CRC校验是否正确
- 台达变频器调试软件(如ISPSoft):
- 在线监控寄存器值
- 快速验证参数设置
4.3 性能优化建议
- 通讯间隔:
- 状态监控建议200ms以上
- 参数设置建议单次操作后延时500ms
- 数据分组:
- 将需要同步读取的参数放在连续地址
- 使用功能码10H批量写入
- 异常处理:
- 添加通讯超时判断(M8123)
- 重要参数设置后需回读验证
5. 完整应用案例解析
以输送带控制系统为例,需要实现:
- 读取:输出频率(2000H)、输出电流(2001H)
- 写入:设定频率(2000H)、运行命令(2001H)
程序结构:
st复制// 主循环程序
LD M8000
CALL P10 // 读取状态
CALL P20 // 写入控制
// 子程序P10:状态读取
LD T0 K20 // 200ms定时触发
RS D100 K8 D200 K7
MOV D202 D50 // 频率值转换
MOV D204 D51 // 电流值转换
// 子程序P20:运行控制
LD X1 // 启动按钮
MOV K1 D110 // 运行命令
RS D110 K8 D300 K5
频率换算公式:
实际频率 = 读取值 × 最大频率 / 4000H
(例如读取16#0FA0对应50Hz)
6. 进阶应用技巧
- 多台变频器轮询:
- 采用站号轮询方式(D100站号动态修改)
- 每台设备间隔增加50ms延时
- 参数备份与恢复:
- 批量读取P00-P99参数组
- 使用MOV指令保存到文件寄存器
- 安全保护机制:
- 添加通讯中断自动停机逻辑
- 关键参数设置双重验证
实际项目中,曾通过优化轮询时序将32台变频器的监控周期从3秒缩短到1.2秒,关键点是合理分组通讯请求,避免等待单个设备超时影响整体效率。