PLC 与变频器 485 通讯的程序中,实现对变频器故障的实时诊断、报警提示、故障复位,核心是通过 Modbus RTU 读取变频器的故障码寄存器,解析故障类型后触发 PLC 的报警输出(如指示灯、蜂鸣器),并支持手动 / 自动复位故障,这是工业现场变频器控制的必备功能。
以下我基于上一轮的三菱 FX3U+FR-D700 变频器程序,补充完整的故障诊断与报警梯形图逻辑,包含「故障码读取、故障解析、报警输出、故障复位」四大核心模块,同时适配其他品牌变频器的通用思路。
一、核心原理(通用所有 Modbus 变频器)
故障码读取:变频器会将当前故障 / 报警代码存储在固定的 Modbus 寄存器中(如三菱 D700 的故障码寄存器地址为 40009),PLC 通过 485 通讯周期性读取该寄存器;
故障解析:将读取到的故障码与变频器手册中的故障定义匹配(如 E.OC 是过流、E.OV 是过压);
报警输出:PLC 检测到非 0 故障码时,触发硬件报警(蜂鸣器、指示灯)+ 软件报警(寄存器记录、触摸屏提示);
故障复位:PLC 通过 Modbus 写入复位指令到变频器指定寄存器,或触发硬件复位端子,清除故障。
二、先明确关键参数(以三菱 FR-D700 为例)
| 功能 | Modbus 寄存器地址 | 说明 |
|---|---|---|
| 故障码读取 | 40009 | 0 = 无故障,非 0 = 对应故障码(如 1=E.OC1) |
| 故障复位指令写入 | 40010 | 写入 1 = 触发故障复位,写入 0 = 取消 |
| 变频器运行状态读取 | 40002 | 辅助判断:故障时状态应为停机 |
FR-D700 常见故障码对照表(需存入 PLC 寄存器,用于解析):
| 故障码(D600) | 故障类型 | 含义 |
|---|---|---|
| 1 | E.OC1 | 加速时过流 |
| 2 | E.OC2 | 恒速时过流 |
| 3 | E.OC3 | 减速时过流 |
| 5 | E.OV1 | 加速时过压 |
| 6 | E.OV2 | 恒速时过压 |
| 7 | E.OV3 | 减速时过压 |
| 9 | E.TH | 变频器过热 |
| 10 | E.IPF | 输入缺相 |
三、完整故障诊断 + 报警梯形图程序(三菱 FX3U)
基于上一轮的程序,新增以下模块,所有指令可直接在 GX Works2 中录入:
模块 1:故障码读取(周期性读取,1s 一次)
plaintext
LD M8013 // 1s脉冲,避免频繁通讯 MOV K0 D600 // 先清空故障码缓存 // Modbus读指令:读取变频器40009寄存器(故障码),存入D600 RS D600 K1 Y3 D8120 // D600=接收缓冲区,K1=读取1个字,Y3=通讯触发位
模块 2:故障判断与报警触发(核心)
plaintext
// 故障检测:D600≠0表示有故障 LD D600 <> K0 OUT M100 // M100=故障报警总继电器(ON=有故障) // 硬件报警输出:Y10=红色故障指示灯,Y11=蜂鸣器 LD M100 OUT Y10 // 故障灯常亮 ANI X10 // X10=报警消音按钮(常闭) OUT Y11 // 蜂鸣器响(按下X10消音) // 故障码存储:记录当前故障码,故障复位前不刷新 LD M100 AND M8000 MOV D600 D601 // D601=当前故障码(锁存)
模块 3:故障类型解析(可选,精准定位故障)
plaintext
// 过流故障(E.OC1/E.OC2/E.OC3) LD D600 >= K1 <= K3 OUT M101 // M101=过流故障 // 过压故障(E.OV1/E.OV2/E.OV3) LD D600 >= K5 <= K7 OUT M102 // M102=过压故障 // 过热故障(E.TH) LD D600 = K9 OUT M103 // M103=过热故障 // 输入缺相(E.IPF) LD D600 = K10 OUT M104 // M104=缺相故障
模块 4:故障复位(手动 + 自动)
plaintext
// 手动复位:X11=故障复位按钮(常开) LD X11 AND M100 // 只有故障时才能复位 OUT M110 // 复位触发继电器 SET Y4 // Y4=通讯触发位 // Modbus写指令:向40010寄存器写入1,触发变频器复位 LD M110 MOV K1 D610 // D610=复位指令(1=复位) RS D610 K1 Y4 D8120 // 发送复位指令 // 复位后清空故障状态 LD M110 RST M100 // 清除故障总报警 RST M101 // 清除过流故障 RST M102 // 清除过压故障 RST M103 // 清除过热故障 RST M104 // 清除缺相故障 MOV K0 D601 // 清空故障码存储 RST Y10 // 关闭故障灯 RST Y11 // 关闭蜂鸣器 RST M110 // 复位触发继电器清零
模块 5:故障报警联动(停机保护)
plaintext
// 故障时强制停止变频器输出 LD M100 RST M0 // M0=变频器运行保持继电器(上一轮程序中的运行触发) MOV K0 D401 // 向变频器40003寄存器写入0,停止变频器 RS D401 K1 Y2 D8120 // 发送停机指令
四、程序关键部分解释
故障码读取:用
M8013(1s 脉冲)触发RS指令读取故障码,避免高频通讯占用 PLC 资源;故障锁存:用
D601存储故障码,即使故障消失(如瞬间过流后恢复),也能保留故障记录,方便排查;报警输出:
Y10(故障灯)常亮,Y11(蜂鸣器)可通过X10消音,符合工业现场操作习惯;故障复位:必须先通过 Modbus 写入复位指令,再清除 PLC 内部的报警状态,确保变频器故障真正清除;
停机联动:故障时自动停止变频器,避免故障扩大(如过流时继续运行烧毁电机)。
五、适配其他品牌变频器的通用思路
不同品牌变频器的故障码寄存器地址、复位指令地址不同,但逻辑完全一致,只需修改寄存器地址和故障码对照表:
| 变频器品牌 | 故障码寄存器 | 复位指令寄存器 | 备注 |
|---|---|---|---|
| 西门子 MM440 | 40019 | 40020 | 写入 16#0001 触发复位 |
| 台达 VFD-M | 40005 | 40006 | 写入 1 = 复位 |
| 汇川 MD300 | 40008 | 40009 | 写入 255 = 复位 |
| 施耐德 ATV312 | 40007 | 40008 | 写入 1 = 复位 |
示例(台达 VFD-M):只需将故障码读取地址改为 40005,复位指令写入 40006,故障码对照表替换为台达的定义(如 01 = 过流、02 = 过压)即可。
六、实操注意事项
通讯可靠性:故障码读取需加超时判断,若多次读取失败(如 485 通讯中断),PLC 需触发「通讯故障」报警(可通过
D8129(通讯错误标志)实现);plaintext
LD M8013 MOV K0 D8129 LD D8129 <> K0 OUT M105 // M105=通讯故障 OUT Y12 // Y12=通讯故障指示灯
故障记录:可增加故障时间记录(用
D8015(年)、D8016(月)、D8017(日)、D8018(时)、D8019(分)),方便追溯:plaintext
LD M100 AND M8000 MOV D8015 D700 // 故障发生年份 MOV D8016 D701 // 月份 MOV D8017 D702 // 日期 MOV D8018 D703 // 小时 MOV D8019 D704 // 分钟
复位条件:部分故障(如过热、缺相)需先排除硬件问题再复位,可在程序中增加「复位权限」(如 X12 = 复位允许开关),避免误复位。
总结
变频器故障诊断核心是读取故障码寄存器→判断非 0→触发报警→写入复位指令,所有步骤均通过梯形图实现;
关键指令:
RS(读写 Modbus 寄存器)、MOV(数据存储)、=/>=/<=(故障码判断)、OUT/RST(报警 / 复位);需注意通讯可靠性(加通讯故障报警)、故障记录(方便追溯)、复位条件(避免故障扩大)三大要点。


