1. 项目背景与核心需求
在工业自动化控制系统中,PLC与变频器之间的稳定通讯是实现复杂控制逻辑的基础。三菱FX3U系列PLC作为中小型控制系统的核心设备,经常需要与多台E700变频器协同工作。传统的一对一硬接线控制方式不仅布线复杂,还存在信号干扰、维护困难等问题。
这个项目的核心在于利用FX3U的功能块(FB)编程方式,通过RS485总线实现与四台三菱E700变频器的Modbus RTU通讯。相比传统的梯形图编程,FB方式具有以下优势:
- 程序结构更清晰,相同控制逻辑只需编写一次功能块
- 参数修改集中化,避免多处修改导致的版本混乱
- 故障诊断更直观,所有变频器状态集中显示
- 扩展性强,新增变频器时只需调用现有功能块
2. 硬件配置与接线规范
2.1 硬件选型清单
- 主控单元:FX3U-48MT/ES-A
- 通讯模块:FX3U-485ADP-MB(支持Modbus RTU协议)
- 变频器:三菱FR-E720-0.4K(共4台)
- 终端电阻:110Ω 1/2W(用于总线两端)
- 线缆:屏蔽双绞线(AWG18以上)
2.2 RS485接线要点
- 总线拓扑必须采用手拉手方式连接,禁止星型连接
- 每台设备接线顺序保持一致:
- SDA→SDB→SG
- 终端电阻仅安装在首尾两台设备上
- 屏蔽层单端接地(建议在PLC端接地)
重要提示:E700变频器的通讯端子位于控制回路端子排,与主电路端子分开布置,接线时需特别注意防止高压窜入。
2.3 硬件参数设置
每台变频器需要设置以下参数:
code复制Pr.117 = 1(站号1,其余设备依次为2-4)
Pr.118 = 192(波特率19200bps)
Pr.119 = 0(8位数据位,无校验)
Pr.120 = 2(停止位2位)
Pr.121 = 9999(通讯超时不检测)
Pr.122 = 9999(通讯校验时间不限制)
3. PLC程序架构设计
3.1 FB功能块定义
创建名为"E700_CTRL"的功能块,包含以下接口变量:
structured复制VAR_INPUT
i_Enable : BOOL; // 功能块使能
i_Station : WORD; // 变频器站号(1-4)
i_FreqSet : REAL; // 频率设定值(Hz)
i_RunCmd : BOOL; // 运行命令
END_VAR
VAR_OUTPUT
o_Ready : BOOL; // 通讯就绪
o_Running : BOOL; // 运行状态反馈
o_FreqOut : REAL; // 实际输出频率
o_Current : REAL; // 输出电流
o_Fault : WORD; // 故障代码
END_VAR
VAR
r_ReqSent : BOOL; // 请求已发送标志
r_RespWait : BOOL; // 等待响应标志
r_Timeout : TON; // 超时定时器
r_RetryCnt : INT; // 重试计数器
END_VAR
3.2 通讯协议实现
E700变频器采用Modbus RTU协议,关键指令如下:
- 写入运行命令:功能码06H,地址2000H
- 写入频率设定:功能码06H,地址2001H(单位0.01Hz)
- 读取运行状态:功能码03H,地址2100H
- 读取输出频率:功能码03H,地址2103H
程序处理流程:
- 使用RS指令发送请求帧
- 启动超时定时器(建议300ms)
- 接收响应后解析数据
- 错误时自动重试(最多3次)
3.3 多设备轮询策略
为避免总线冲突,采用分时轮询机制:
code复制第1个扫描周期:处理站号1的变频器
第2个扫描周期:处理站号2的变频器
...
第4个扫描周期:处理站号4的变频器
第5个扫描周期:全局状态更新与故障处理
使用PLC的扫描计数器(D8013的低4位)作为轮询基准。
4. 关键问题与解决方案
4.1 通讯超时处理
当出现通讯超时时,程序应:
- 记录错误日志(包括时间戳和站号)
- 自动重试当前站号
- 连续3次失败后切换至下一设备
- 在HMI上显示通讯异常报警
错误处理程序段示例:
structured复制IF r_Timeout.Q THEN
r_RetryCnt := r_RetryCnt + 1;
IF r_RetryCnt >= 3 THEN
o_Fault := 16#8001; // 通讯故障代码
r_RetryCnt := 0;
i_Enable := FALSE; // 自动禁用功能块
ELSE
// 重新发送请求
END_IF;
END_IF;
4.2 数据同步问题
由于采用轮询方式,各变频器的数据更新存在时间差。解决方法:
- 在FB内部添加数据缓存区
- 使用边缘触发方式更新HMI显示
- 重要参数(如急停命令)采用广播指令同步发送
4.3 干扰抑制措施
- 在PLC和每台变频器的通讯端口并联100Ω电阻+0.1μF电容
- 通讯线远离动力线(最小间距30cm)
- 在程序中添加软件滤波器(移动平均算法)
- 定期检查总线终端电阻阻值
5. 调试与优化技巧
5.1 调试步骤
- 先用单个变频器测试基本通讯
- 逐步增加设备数量至4台
- 监控D8120(通讯错误计数器)
- 使用串口监视器抓取原始数据帧
5.2 性能优化
- 将波特率提升至38400bps(需同步修改变频器参数)
- 精简数据帧(如只读取必要参数)
- 采用状态机编程减少扫描周期占用
- 对非关键参数采用间隔读取策略
5.3 维护建议
- 定期备份变频器参数(可通过程序自动完成)
- 建立设备通讯状态历史记录
- 在HMI上添加手动通讯复位按钮
- 保留10%的通讯时间裕量
实际项目中,这套方案在纺织机械生产线上稳定运行超过2年,通讯成功率保持在99.9%以上。最大的收获是发现E700变频器对信号地(SG)的处理比较敏感,当总线长度超过50米时,必须确保SG线的连通性,否则会出现间歇性通讯失败。后来我们改用三芯屏蔽线(SDA/SDB/SG)后问题彻底解决。