1. 项目背景与需求解析
在工业自动化控制领域,PLC与变频器的通讯集成是最基础也最关键的环节之一。这次要分享的是基于三菱FX3U PLC通过Modbus RTU协议同时控制3台三菱变频器的完整实现方案。这个配置在恒压供水、流水线调速、多电机同步控制等场景中非常常见。
为什么选择Modbus RTU?相比三菱专用的CC-Link或N:N网络,Modbus的优势在于:
- 协议开放,不同品牌设备互联更方便
- 硬件成本低,只需RS485接口
- 三菱全系变频器都内置Modbus从站功能
- 布线简单,双绞线即可实现百米级通讯
实际项目中,我们经常遇到这样的需求:一个PLC需要同时控制多台变频器,比如:
- 纺织机械的多轴同步控制
- 中央空调的压缩机群控
- 生产线的多段速协调运行
FX3U作为三菱经典的小型PLC,自带RS485接口(需加装FX3U-485-BD扩展板),通过串口通讯指令就能实现Modbus主站功能。下面我会详细拆解从硬件配置到程序编写的全流程。
2. 硬件连接与参数设置
2.1 硬件组网方案
典型接线拓扑如下:
code复制FX3U(RS485) ---- 终端电阻
|
|-- 变频器1
|-- 变频器2
|-- 变频器3
关键硬件选型:
- PLC:FX3U-32MT/ES-A(基本单元)+ FX3U-485-BD(通讯板)
- 变频器:FR-D700系列(支持Modbus RTU协议)
- 通讯线:屏蔽双绞线(如BELDEN 9842)
- 终端电阻:120Ω 1/4W(接在末端变频器)
注意:三菱变频器的RS485接口标识为PU口,接线时注意A+/B-的极性,所有设备的A+、B-必须分别并联。
2.2 变频器参数设置
每台变频器需要设置以下参数(以FR-D720为例):
| 参数编号 | 参数名称 | 设置值 | 说明 |
|---|---|---|---|
| Pr.117 | 站号 | 1~3 | 分别设置1,2,3 |
| Pr.118 | 通讯速率 | 192 | 对应19200bps |
| Pr.119 | 数据长度/停止位 | 8 | 8位数据+1位停止位 |
| Pr.120 | 奇偶校验 | 2 | 偶校验 |
| Pr.121 | 通讯重试次数 | 9999 | 不限制 |
| Pr.122 | 通讯校验时间 | 9999 | 无超时 |
| Pr.549 | 协议选择 | 1 | 选择Modbus RTU模式 |
设置完成后断电重启变频器使参数生效。
2.3 PLC通讯参数设置
在GX Works2中配置PLC的通讯参数:
- 导航窗口 → 参数 → PLC参数
- 选择"PLC系统设置2"
- 设置通道1(对应485BD板):
- 协议:无顺序协议
- 传输速度:19200bps
- 数据位:8位
- 停止位:1位
- 校验:偶校验
- 控制线:无
- 站号设置:0(主站)
3. Modbus协议帧解析
3.1 变频器Modbus地址映射
三菱变频器的运行频率、电流等参数对应Modbus保持寄存器地址:
| 功能 | 寄存器地址 | 数据类型 | 读写权限 |
|---|---|---|---|
| 运行频率 | 0x0001 | 16bit | R/W |
| 输出电流 | 0x0002 | 16bit | R |
| 设定频率 | 0x0003 | 16bit | R/W |
| 运行命令 | 0x0005 | 16bit | R/W |
注:地址值为十六进制,实际发送时需要转换为十进制。例如0x0001对应十进制1。
3.2 典型指令帧示例
读取变频器1的输出电流(功能码03H)
code复制发送帧:01 03 00 02 00 01 25 CA
(站号1 功能码3 起始地址2 读取1个字 CRC校验)
设置变频器2的运行频率50Hz(功能码06H)
code复制发送帧:02 06 00 01 13 88 58 0B
(站号2 功能码6 地址1 数据5000(50.00Hz) CRC校验)
批量启动3台变频器(功能码10H)
code复制发送帧:03 10 00 05 00 03 06 00 01 00 01 00 01 XX XX
(站号3 功能码16 地址5 3个字 6字节数据 CRC校验)
4. PLC程序实现
4.1 通讯初始化程序
ladder复制LD M8002 // PLC上电初始化
OUT M8161 // 设置8位数据处理模式
MOV H0C96 D8120 // 设置通讯格式:19200,8,E,1
4.2 频率写入子程序(以变频器1为例)
ladder复制LD X0 // 启动写入条件
MOV K1 D100 // 站号1
MOV H6 D101 // 功能码06H
MOV H1 D102 // 寄存器地址0001H
MOV K5000 D103 // 频率值50.00Hz(5000=50.00×100)
CRC D100 K6 D110 // 计算CRC校验
RS D100 K8 // 发送8字节数据
4.3 多机轮询读取程序
ladder复制// 变频器1电流读取
LD T0
MOV K1 D200
MOV H3 D201
MOV H2 D202
MOV H1 D203
CRC D200 K6 D210
RS D200 K8
MOV K10 T1
// 变频器2电流读取
LD T1
MOV K2 D200
RS D200 K8
MOV K10 T2
// 变频器3电流读取
LD T2
MOV K3 D200
RS D200 K8
MOV K100 T0 // 循环周期100ms
4.4 数据接收处理
ladder复制LD M8122 // 接收完成标志
MOV D100 D300 // 存储接收数据
RST M8122 // 清除接收标志
5. 调试技巧与故障排查
5.1 常见问题速查表
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| 通讯超时 | 站号设置错误 | 检查Pr.117参数 |
| CRC校验错误 | 波特率不匹配 | 确认Pr.118与PLC设置一致 |
| 只能读取不能写入 | 写保护使能 | 检查Pr.77是否为0(允许写入) |
| 数据跳动不稳定 | 终端电阻未接 | 末端变频器接120Ω电阻 |
| 从站无响应 | 接线极性反接 | 交换A+/B-线序 |
5.2 现场调试心得
-
信号质量检测:用示波器观察RS485波形,正常应为对称的差分信号。若出现削顶或震荡,需检查终端电阻和线缆质量。
-
地址冲突测试:临时修改某台变频器站号与另一台相同,验证PLC是否能检测到冲突。
-
干扰排查技巧:
- 通讯线远离动力线至少30cm
- 使用屏蔽层单端接地(PLC侧)
- 在PLC端口并联100Ω电阻和1000pF电容滤波
-
数据验证方法:
ladder复制// 在发送指令后添加校验 LD M8123 // 发送完成标志 AND<> D110 K0 // 检查CRC校验和 OUT Y0 // 报警输出 -
波特率自适应技巧:当不确定变频器波特率时,可以用以下方法自动检测:
- 从最低波特率(9600)开始尝试
- 发送广播指令(站号0)
- 通过M8121(接收超时标志)判断是否成功
6. 程序优化建议
6.1 通讯效率提升
-
批量读写优化:使用功能码16(0x10)一次性写入多个寄存器:
ladder复制MOV K3 D100 // 站号3 MOV H10 D101 // 功能码10H MOV H5 D102 // 起始地址0005H MOV K3 D103 // 写入3个字 MOV H6 D104 // 数据字节数6 MOV K1 D105 // 运行命令1(启动) MOV K3000 D106 // 频率30.00Hz MOV K500 D107 // 加速时间5.0秒 CRC D100 K13 D110 RS D100 K15 -
轮询策略改进:根据设备优先级动态调整查询间隔:
ladder复制// 变频器1(关键设备)每50ms查询 // 变频器2/3(次要设备)每200ms查询
6.2 安全保护机制
-
超时重发逻辑:
ladder复制LD M8121 // 接收超时标志 INC D500 // 错误计数器+1 CMP K3 D500 // 超过3次错误 OUT M100 // 触发报警 -
数据范围校验:
ladder复制CMP K500 D103 // 检查频率设定值 AND<= K0 D103 // 不小于0 AND>= K5000 D103 // 不大于50Hz -
心跳检测机制:
ladder复制// 每5秒发送广播指令 LD T10 K50 OUT T10 K50 MOV K0 D100 // 广播地址0 MOV H3 D101 // 功能码03H CRC D100 K6 D110 RS D100 K8
这套系统在某包装生产线已稳定运行2年,控制3台变频器实现同步调速。实际应用中要注意定期检查接线端子紧固情况,特别是振动环境下的设备。对于更复杂的多机通讯,可以考虑采用FX3U-485ADP模块实现更高速的通讯链路。