1. 项目概述:恒压供水系统的一拖二改造
去年接手工厂供水系统改造时,我发现老式单泵系统存在两个致命问题:一是主泵24小时连轴转导致寿命锐减,二是压力波动大时备用泵无法及时介入。于是决定用S7-200 SMART PLC+西门子KTP700触摸屏搭建一套带定时换泵功能的双泵恒压控制系统。
这套系统的核心创新点在于:
- 采用主备泵轮换机制,通过PLC定时器实现自动切换
- 压力闭环控制精度达到±0.2bar
- 触摸屏集成隐藏式参数设置界面
- 具备断电保持功能,异常恢复后仍能维持运行逻辑
实际运行半年后,水泵故障率下降70%,维修班老王再也没借口说"泵又坏了要检修"来偷懒了。
2. 硬件架构设计要点
2.1 核心器件选型
-
PLC模块:西门子S7-200 SMART SR20
- 选型理由:自带14点DI/10点DO,2路模拟量输入,满足双泵控制需求
- 关键配置:Q0.0/Q0.1分别控制M1/M2泵启停,AIW0接压力变送器(4-20mA)
-
HMI人机界面:KTP700 Basic PN
- 选用7寸屏原因:足够显示压力曲线和操作按钮,性价比高于更大尺寸
- 特殊功能:通过WinCC Flexible开发了长按5秒调出的工程师菜单
-
压力传感器:魏德米勒PACT系列
- 量程0-1.6MPa,精度0.5%FS
- 现场安装要点:必须与PLC模拟量输入模块共地,否则会出现信号漂移
2.2 电气接线规范
主电路采用双重互锁设计:
code复制KM1 ──┬── M1泵主接触器
│
KM2 ──┼── M2泵主接触器
│
FR1/FR2──热继电器保护
控制回路特别注意:
- 所有数字量输出点加装中间继电器隔离
- 模拟量信号线采用双绞屏蔽线,屏蔽层单端接地
- PLC与触摸屏通过Profinet连接,最大程度减少干扰
关键经验:调试时发现AI通道偶尔跳变,后在AIW0端口并联0.1μF电容解决噪声问题
3. PLC程序设计详解
3.1 主控制逻辑架构
程序采用模块化设计,主要功能块包括:
- 压力PID调节(FB41)
- 泵切换管理(FC1)
- 运行时间统计(FC2)
- 故障处理(FC3)
3.2 定时换泵核心代码解析
stl复制// 主泵运行计时逻辑
LDN M1_Running // 检测主泵是否运行
MOVW 0, T37 // 复位计时器
A M1_Running // 主泵运行时激活计时
TON T37, VW1000 // VW1000存储切换时间设定值
LDW>= T37, VW1000 // 达到设定时间触发切换
S M2_Start, 1 // 启动备用泵
R M1_Stop, 1 // 停止主泵
MOVW 0, T37 // 重置计时器
关键设计要点:
- 使用断电保持型定时器(T37设置为保持型)
- 切换时间参数VW1000通过触摸屏可调
- 添加5秒延时防止频繁切换:
stl复制// 切换延时处理
LD SM0.5 // 1Hz时钟脉冲
CTU C10, 5 // 计数5次实现5秒延时
LDW>= C10, 5
R C10, 1
S M2_RunCmd, 1 // 延时后执行切换
3.3 PID参数整定技巧
通过AutoTune功能获取基础参数后,需手动微调:
- 比例带(P):初始设为量程的30%
- 积分时间(I):从10秒开始逐步减小
- 微分时间(D):通常设为I值的1/4
实测最佳参数组合:
code复制P=25%, I=8s, D=2s
调试时注意观察压力曲线,理想状态是2-3个波动周期后稳定。
4. 触摸屏界面开发
4.1 主要画面设计
-
主监控画面:
- 实时压力曲线(采样周期500ms)
- 双泵运行状态指示灯
- 目标压力设定输入框
-
工程师菜单(长按5秒激活):
- 泵切换时间设置
- PID参数调整
- 运行时间清零
-
报警历史页面:
- 记录最近50条故障信息
- 支持按日期筛选
4.2 关键控件实现
压力设定输入框的防误操作设计:
javascript复制// 数值限制脚本
if (NewValue < 0.3) {
NewValue = 0.3; // 最低压力限制
} else if (NewValue > 1.2) {
NewValue = 1.2; // 最高压力限制
}
SetTag("TargetPressure", NewValue);
隐藏菜单的激活逻辑:
javascript复制var pressTime = 0;
OnMouseDown(function() {
pressTime = GetSystemTime();
});
OnMouseUp(function() {
if (GetSystemTime() - pressTime > 5000) {
ShowScreen("EngineerMenu");
}
});
5. 调试问题全记录
5.1 典型故障排查表
| 故障现象 | 可能原因 | 解决方案 |
|---|---|---|
| 泵频繁切换 | 压力波动过大 | 调整PID参数,增加切换延时 |
| 触摸屏无响应 | Profinet连接中断 | 检查网线,重启通信接口 |
| 压力显示异常 | 传感器供电不稳 | 检查24V电源,确认共地连接 |
| 定时器不累计 | 未设置保持型 | 在系统块中配置T37为保持型 |
5.2 现场调试心得
-
接地问题:最初压力值夜间漂移,发现是传感器与PLC地电位差导致,整改后:
- 所有设备共接同一接地铜排
- 模拟量信号线屏蔽层在PLC端接地
-
手动模式陷阱:手动启泵时需同步处理:
stl复制// 手动启动时复位定时器
LD Manual_Start
EU // 上升沿检测
MOVW 0, T37 // 复位计时
- 紧急停止设计:增加全局急停按钮,动作时:
- 立即切断所有泵输出
- 保持当前运行状态数据
- 需密码确认后才能复位
6. 系统优化方向
当前系统仍可改进:
- 能耗监控:增加电能计量模块,记录泵组耗电量
- 预测维护:基于运行时长自动生成保养提醒
- 远程监控:通过OPC UA接入厂区SCADA系统
一个实用的升级技巧:在PLC中添加这段代码可实现运行时间均衡:
stl复制// 累计运行时间比较
LDW> M1_Hours, M2_Hours
MOVW M2_Hours, VW1100 // 下次优先启动运行时间少的泵
ELSE
MOVW M1_Hours, VW1100
这套系统最让我自豪的不是技术实现,而是真正解决了设备管理的人性化问题——现在两台泵像训练有素的士兵一样准时换岗,再也不会出现"累死一台,闲坏另一台"的情况。