1. 项目背景与核心价值
恒压供水系统是工业自动化领域最常见的应用场景之一,它通过PLC控制水泵的运行状态,维持管网压力恒定。三菱FX系列PLC因其高性价比和稳定性能,在国内中小型供水项目中占据主流地位。这次我要拆解的是一套实际运行超过3年的成熟系统程序,包含完整的压力闭环控制逻辑和故障处理机制。
这套代码最值得学习的地方在于它完美展现了工业控制程序的"工匠精神":没有花哨的算法,而是通过扎实的基础指令组合实现可靠控制。程序中每个定时器的设定值、每个比较指令的阈值都经过现场反复验证,可以直接移植到类似项目中。对于刚接触PLC编程的工程师,研究这类实战代码比看理论教材进步更快。
2. 系统架构与硬件配置
2.1 硬件组成清单
- 主控单元:三菱FX3U-48MT/ES-A
- 模拟量模块:FX3U-4AD(4通道12位模拟量输入)
- 压力变送器:量程0-1.6MPa,输出4-20mA
- 变频器:三菱FR-E740-3.7K,控制3台7.5kW水泵
- HMI:威纶通MT8071iE人机界面
2.2 信号分配表
| PLC地址 | 设备信号 | 类型 | 备注 |
|---|---|---|---|
| X0 | 手动/自动切换 | DI | 旋钮开关 |
| X1 | 急停信号 | DI | 常闭触点 |
| Y0 | 1#泵变频运行 | DO | 继电器输出 |
| Y1 | 2#泵变频运行 | DO | 继电器输出 |
| D100 | 管网压力值 | AI | 来自FX3U-4AD |
| D200 | 压力设定值 | 参数 | HMI设置,单位kPa |
关键细节:压力变送器的4-20mA信号接入AD模块后,程序中需要做量程转换。例如当AD模块返回值0-4000对应0-1600kPa,转换公式为:实际压力 = (AD值 × 1600) / 4000
3. 核心控制逻辑解析
3.1 PID控制实现
三菱FX系列PLC原生支持PID指令,但本例采用更基础的比较指令+定时器方案,便于理解底层逻辑:
ladder复制// 压力偏差计算
LD M8000 // 常ON触点
SUB D200 D100 D300 // D300=设定值-实际值
// 压力偏低控制
LD M8000
CMP K50 D300 // 比较偏差是否>50kPa
OUT M100 // 标记压力不足
LD M100
TON T0 K50 // 延时5秒防抖动
LD T0
OUT Y0 // 启动1#泵
// 压力过高保护
LD M8000
CMP D300 K-30 // 比较偏差是否<-30kPa
OUT M101 // 标记压力过高
LD M101
TOF T1 K30 // 延时3秒
LD T1
RST Y0 // 停止1#泵
3.2 水泵轮换策略
为避免单台泵长期运行,程序设计了智能轮换逻辑:
- 每次系统上电时,自动记录上次运行的泵编号到D500
- 当前泵运行满8小时后,自动切换至下一台泵
- 故障泵会被标记,跳过该泵启动顺序
ladder复制// 运行时间统计
LD Y0
OUT M200 // 1#泵运行标志
LD M200
TMH C0 K800 // 8小时计时器
// 泵切换逻辑
LD C0
MOV K2 D500 // 下次启动2#泵
RST C0
4. 故障处理机制
4.1 常见故障代码
| 故障代码 | 含义 | 处理建议 |
|---|---|---|
| E01 | 压力传感器故障 | 检查4-20mA回路接线 |
| E02 | 水泵过载 | 复位热继电器,检查机械负载 |
| E03 | 通讯超时 | 检查HMI与PLC通讯线 |
4.2 硬件保护电路
除了软件保护,必须配置硬件安全回路:
- 每台水泵主回路加装热继电器(设定值9A)
- 变频器故障输出信号串联进PLC急停回路
- 压力开关直接切断控制电源(双重保护)
5. 实操调试技巧
5.1 压力控制参数整定
- 先设定较小的压力偏差阈值(如±20kPa)
- 观察水泵启停频率,逐步调整至每小时6-8次为宜
- 冬季用水量变化大时,可适当放宽阈值
5.2 GX Works2编程要点
- 使用"注释生成器"功能批量添加指令说明
- 对关键参数(D200压力设定值)设置写入保护
- 在线修改时务必勾选"变换后写入PLC"
6. 系统优化方向
- 睡眠模式:夜间低用水时段,可设置压力降低10%运行
- 流量预测:通过记录每日用水曲线,预判高峰时段
- 远程监控:加装4G模块上传运行数据到云平台
这套代码最精妙之处在于用基础指令搭建出稳定控制系统,这种化繁为简的设计思路特别适合教学。我在现场调试时发现,将水泵启动间隔调整为15秒(原程序10秒)后,电机寿命明显延长。工业编程就是这样,往往一个小参数的调整就能带来显著改善。