1. 项目背景与需求解析
三菱FX3U PLC与变频器之间的RTU通讯是工业自动化领域一个经典且实用的技术组合。在实际产线中,我们经常需要让一台PLC同时控制多台变频器,实现电机转速、转向、运行状态的集中管理。这种架构既能节省布线成本,又能实现精准控制,但通讯配置过程往往让不少工程师头疼。
去年我在一个纺织机械改造项目中,就遇到了FX3U-48MT需要通过RS485总线同时控制两台安川GA700变频器的需求。客户要求实现:
- 实时读取两台变频器的输出频率、电流等运行参数
- 能够分别设置每台变频器的目标频率
- 在触摸屏上显示所有参数并支持远程操作
- 通讯中断时能自动重连并报警
这个看似简单的需求,在实际调试中却遇到了通讯超时、数据错位、从站无响应等一系列问题。经过两周的反复测试,最终总结出一套稳定可靠的实施方案,今天就把这些实战经验分享给大家。
2. 硬件连接与参数设置
2.1 硬件配置清单
- 主站:FX3U-48MT + FX3U-485ADP-MB通讯模块
- 从站1:安川GA700-04变频器(站号1)
- 从站2:安川GA700-07变频器(站号2)
- 通讯线:屏蔽双绞线(AWG18)带终端电阻
- 其他:DC24V开关电源、避雷器、接线端子等
关键提示:FX3U-485ADP-MB模块必须安装在紧邻PLC的位置,最远不超过50cm。我曾遇到过因模块安装位置不当导致通讯不稳定的案例。
2.2 变频器参数设置
两台GA700需要设置以下关键参数(以站号1为例):
| 参数代码 | 参数名称 | 设置值 | 说明 |
|---|---|---|---|
| H1-01 | 通讯站号 | 1 | 与PLC程序中保持一致 |
| H1-02 | 通讯速率 | 6 | 对应19200bps |
| H1-03 | 通讯停止位 | 1 | 1位停止位 |
| H1-04 | 通讯奇偶校验 | 2 | 偶校验 |
| H1-05 | 通讯协议 | 1 | Modbus RTU模式 |
| H1-06 | 通讯超时 | 1.0 | 1秒超时 |
2.3 PLC硬件组态
在GX Works2中需要进行以下配置:
- 在参数设置中启用串行通讯功能
- 设置通讯格式:19200bps/8位/偶校验/1停止位
- 指定通讯协议为"无协议通讯"(实际通过梯形图实现Modbus协议)
- 设置通讯超时检测时间为1500ms
3. 通讯程序设计与实现
3.1 数据地址映射
安川GA700的Modbus地址与功能码对应关系:
| 参数 | 地址(Hex) | 功能码 | 数据类型 | PLC存储地址 |
|---|---|---|---|---|
| 运行频率 | 0001 | 03 | 16bit | D100 |
| 输出电流 | 0002 | 03 | 16bit | D101 |
| 目标频率 | 0003 | 06 | 16bit | D200 |
| 启动命令 | 0004 | 05 | 位 | M100 |
3.2 轮询程序设计
采用分时复用的方式交替访问两台变频器:
ladder复制// 站号1读取程序段
LD M8000 // 运行常ON触点
OUT M100 // 置位站1通讯标志
MOV K1 D10 // 站号写入寄存器
MOV H0001 D11 // 起始地址
MOV K2 D12 // 读取2个字
CALL P0 // 调用通讯子程序
// 站号2读取程序段
LD M8000
OUT M101
MOV K2 D10
MOV H0001 D11
MOV K2 D12
CALL P0
// 写入程序段(示例:设置站1频率)
LD X001 // 启动按钮
MOV K100 D200 // 目标频率值
OUT M102
MOV K1 D10
MOV H0003 D11
MOV D200 D12
CALL P1 // 调用写入子程序
3.3 通讯子程序优化
在P0子程序中需要处理以下关键点:
- 使用RS指令前清除通讯缓冲区(MOV K0 D8120)
- 设置合适的延时时间(建议20ms间隔)
- 添加CRC校验计算(使用D8000-D8003作为计算缓冲区)
- 错误重试机制(最多3次重试)
4. 常见问题与解决方案
4.1 通讯超时排查
遇到通讯超时(M8063置位)时,建议按以下步骤排查:
- 检查终端电阻:总线两端需接120Ω电阻
- 测量信号电压:A-B间差分电压应在1.5-5V之间
- 确认波特率:所有设备必须完全一致
- 检查接地:屏蔽层单端接地,避免地环路
4.2 数据错位处理
当收到数据但值不正确时:
- 确认字节顺序:GA700默认高位在前
- 检查地址偏移:有些设备需要地址+1
- 验证数据类型:频率值可能需要除以100
4.3 多从站干扰问题
两台变频器同时响应会导致数据冲突,解决方法:
- 严格保证轮询间隔(建议≥50ms)
- 在程序中添加从站响应超时判断
- 使用M8129标志位检测通讯完成状态
5. 系统优化建议
经过实际运行测试,我总结出几个提升稳定性的技巧:
-
电缆敷设:RS485总线应与动力线保持30cm以上距离,交叉时采用垂直交叉。曾经有个项目因为并行敷设导致通讯时断时续,重新布线后问题立即解决。
-
终端电阻:除了总线两端,建议在每个变频器的通讯端口上并联1kΩ电阻,能有效抑制信号反射。
-
程序优化:
- 对关键参数读取采用"读取-验证-重读"三重保障
- 添加通讯质量计数器(记录成功/失败次数)
- 重要写操作前先读取当前值作为校验
-
故障预警:
- 设置通讯中断计时器(超过3次失败触发报警)
- 在HMI上显示通讯状态指示灯
- 记录最后一次错误代码到D寄存器
这个方案在纺织厂连续运行一年后,通讯成功率保持在99.98%以上。对于需要同时控制多台变频器的场景,关键在于处理好轮询时序和错误恢复机制。实际应用中,这套方法也可以扩展到其他支持Modbus RTU协议的设备上。