1. 项目概述:工业自动化中的PLC与变频器通讯
在工业自动化控制系统中,PLC与变频器的协同工作构成了现代生产线的基础架构。三菱FX5U作为新一代紧凑型PLC,其内置的专用通讯指令为变频器控制提供了高效解决方案。本项目实现了FX5U通过RS485总线同时控制三台E700系列变频器的完整系统,相比传统I/O控制方式,这种基于通讯的控制方案具有以下显著优势:
- 接线简化:传统控制需要每个变频器单独连接启停、频率信号线,而本方案仅需一条双绞线即可完成所有控制
- 功能扩展:通过IVDR/IVCK指令不仅能实现基础控制,还能直接读写变频器内部参数
- 实时监控:可同步获取三台变频器的运行频率、电流等实时数据
- 维护便捷:参数修改完全通过程序实现,无需现场操作变频器面板
关键提示:E700系列变频器包含E740/E720等型号,新型F700/A700同样兼容本方案,但需注意参数地址可能略有差异。
2. 硬件配置与接线规范
2.1 设备选型要点
核心设备清单:
- 三菱FX5U-32MT/ES:基本单元,带RS485接口
- E700变频器×3(推荐E740-0.75kW):根据实际负载功率选择
- MCGS TPC7062Ti:7寸触摸屏,带RS485接口
- 终端电阻:120Ω 1/4W(用于总线两端)
选型注意事项:
- PLC的RS485接口型号为FX5U-485-BD,若使用内置接口需确认固件版本
- 变频器建议选择同型号批次,避免参数差异导致通讯异常
- 通讯距离超过50米时需使用屏蔽双绞线(AWG18以上)
2.2 电气接线详解
RS485总线连接规范:
code复制FX5U 变频器1 变频器2 变频器3
SDA ──────── SDA ──────── SDA ──────── SDA
│ │ │
SDB ──────── SDB ──────── SDB ──────── SDB
│ │ │
RDA ──────── RDA ──────── RDA ──────── RDA
│ │ │
RDB ──────── RDB ──────── RDB ──────── RDB
实操要点:
- 使用菊花链拓扑,严禁使用星型连接
- SDA/SDB为发送端,RDA/RDB为接收端,需按颜色统一接线
- 首尾设备需接入终端电阻(拨码开关或外接)
- 屏蔽层单端接地(建议在PLC侧接地)
常见错误排查:
- 通讯不稳定:检查线序是否正确,终端电阻是否启用
- 完全无响应:测量总线电压(正常时SDA-SDB间应有2-5V波动)
- 个别设备离线:检查该节点接线是否松动
3. 通讯协议深度解析
3.1 IVCK/IVDR指令详解
指令格式:
python复制IVCK S1 S2 S3 D
IVDR S1 S2 S3 D
- S1:站号(K1-K31)
- S2:功能码(见下表)
- S3:数据值(写入时有效)
- D:结果存储寄存器
功能码对应表:
| 功能码 | 含义 | 数据范围 | 备注 |
|---|---|---|---|
| K0 | 读取运行频率 | 0-4000(0.1Hz) | 实际值=读取值×0.1 |
| K1 | 写入最高频率 | 0-4000 | 需先设置Pr.1 |
| K2 | 写入最低频率 | 0-4000 | 需先设置Pr.2 |
| K3 | 读取输出电流 | 0-2000(0.1A) | 实际值=读取值×0.1 |
| K10 | 启动命令 | 1:启动 0:停止 | 需设置Pr.79=2 |
3.2 程序架构设计
典型程序流程:
- 初始化阶段
- 设置通讯参数(波特率、校验等)
- 读取变频器型号验证连接
- 主循环
- 周期读取运行数据(频率、电流等)
- 处理HMI操作指令
- 异常检测与处理
关键程序段示例:
python复制// 初始化通讯参数
MOV K9600 D8120 // 波特率设置
MOV K3 D8121 // 数据位8位+偶校验
// 读取1号变频器状态
LD M8000 // 运行常ON触点
IVCK K1 K0 K0 D100 // 读取频率
IVCK K1 K3 K0 D101 // 读取电流
// 频率设定处理
LD X0 // 启动按钮
IVDR K1 K10 K1 D200 // 发送启动命令
MOV K3000 D210 // 设定频率30Hz
IVDR K1 K0 D210 D211 // 写入频率
4. 参数配置实战
4.1 变频器关键参数设置
必须设置的参数列表:
| 参数号 | 名称 | 设定值 | 说明 |
|---|---|---|---|
| Pr.1 | 上限频率 | 500 | 50.0Hz |
| Pr.2 | 下限频率 | 50 | 5.0Hz |
| Pr.7 | 加速时间 | 100 | 10.0秒 |
| Pr.8 | 减速时间 | 100 | 10.0秒 |
| Pr.79 | 运行模式选择 | 2 | 外部/PU切换模式 |
| Pr.117 | 通讯站号 | 1-31 | 必须与PLC程序一致 |
| Pr.118 | 通讯速率 | 96 | 对应9600bps |
| Pr.119 | 停止位长 | 1 | 8位数据+1停止位 |
| Pr.120 | 有无校验 | 2 | 偶校验 |
| Pr.549 | 协议选择 | 1 | 选择Modbus-RTU协议 |
参数设置技巧:
- 先设置Pr.549=1再设置其他通讯参数
- 修改参数后需断电重启生效
- 批量设置时可使用参数复制功能(Pr.160)
4.2 PLC通讯参数配置
GX Works3中的设置路径:
code复制参数 → FX5UCPU → 模块参数 → 串行通讯 → CH1通讯设置
- 协议:Modbus-RTU主站
- 波特率:9600bps
- 数据位:8位
- 校验:偶校验
- 停止位:1位
- 超时设置:3000ms
5. MCGS触摸屏开发要点
5.1 画面布局设计
推荐画面结构:
- 主监控画面
- 频率设定输入框
- 运行/停止按钮组
- 实时数据显示区(频率、电流、报警)
- 参数设置画面
- 加减速时间设置
- 上下限频率调整
- 报警历史画面
5.2 关键控件配置
频率设定输入框属性:
- 变量类型:16位无符号数
- 寄存器地址:D210(对应PLC寄存器)
- 量程转换:0-4000 → 0.0-40.0Hz
- 输入限制:最小值50,最大值500
运行状态指示灯脚本:
javascript复制if(GetDevice("D200") == 1){
SetFillColor(1, "绿色");
SetText(1, "运行中");
} else {
SetFillColor(1, "红色");
SetText(1, "已停止");
}
6. 调试与故障处理
6.1 通讯测试步骤
-
单节点测试
- 仅连接一台变频器
- 使用IVCK K1 K9 K0 D500读取设备ID
- 确认返回值与变频器铭牌一致
-
多节点压力测试
- 同时发送三台变频器的读取指令
- 监控通讯错误计数器(SD1290)
- 逐步缩短轮询周期至目标值
6.2 常见故障代码处理
| 错误代码 | 含义 | 解决方案 |
|---|---|---|
| 4080 | 从站无响应 | 检查站号设置和物理连接 |
| 4081 | CRC校验错误 | 确认Pr.120校验设置 |
| 4082 | 非法功能码 | 核对指令中的功能码值 |
| 4083 | 数据地址非法 | 确认参数号在变频器中存在 |
| 4084 | 数据值超出范围 | 检查写入值是否符合参数范围 |
高级调试技巧:
- 使用串口监听工具抓取通讯报文
- 在PLC程序中添加通讯延时(M8129)
- 对于干扰环境,可降低波特率至4800bps
7. 系统优化建议
-
通讯效率优化
- 采用块读取指令(IVBKR)批量获取数据
- 设置合理的轮询周期(建议≥200ms)
- 对非关键参数使用变化触发读取
-
安全增强措施
- 添加通讯超时报警功能
- 关键操作需二次确认
- 定期备份变频器参数(使用IVWR指令)
-
扩展应用方向
- 增加能耗统计功能
- 实现变频器参数自动备份
- 与MES系统集成生产数据
实际项目中,我发现当通讯距离超过100米时,使用Belden 3106A专用通讯电缆可显著提升稳定性。另外,在变频器参数初始化阶段,建议先恢复出厂设置(Pr.CL=1)再按顺序配置参数,可避免很多难以排查的异常问题。