1. 项目概述与系统架构
这个一拖三恒压供水系统是我去年为某纺织厂设计的完整解决方案,核心目标是实现75kW主泵和两台55kW辅泵的智能联动控制。系统采用西门子S7-1200 PLC作为控制中枢,搭配威纶通MT8071iE触摸屏提供人机交互界面。在纺织厂的染整车间稳定运行两年多来,系统压力波动始终控制在±0.05bar范围内,完全满足生产工艺要求。
1.1 硬件配置详解
主控部分选用S7-1215C DC/DC/DC型号,具体硬件配置如下:
- CPU 1215C:自带2AI/2AO,满足基础压力信号采集需求
- SM1231 AI模块:8通道模拟量输入,扩展压力传感器接入点
- CM1241:RS485通信模块,用于变频器Modbus通信
- 威纶通MT8071iE:7寸触摸屏,800×480分辨率
传感器选型方面特别要注意量程匹配:
- 压力传感器:0-10bar量程,4-20mA输出(实际工作压力3.2bar)
- 变频器:主泵配90kW变频器(留15%余量),辅泵配65kW
关键提示:AI模块必须配置为4线制电流测量模式,现场遇到过因设置为2线制导致信号漂移的问题
2. 控制程序设计精要
2.1 PID控制核心逻辑
系统采用西门子标准PID_Compact指令块,几个关键参数设置如下:
pascal复制"PID_Compact_DB".Setpoint := 3.2; // 设定压力值(bar)
"PID_Compact_DB".Input := "AI_Pressure";
"PID_Compact_DB".CyclicExecute := TRUE;
"PID_Compact_DB".Input_PER := "AI_Raw"; // 原始模拟量值
调试过程中发现三个重要经验:
- 采样周期设为500ms比默认100ms更稳定
- 微分时间不宜过长,建议设为积分时间的1/4
- 输出限幅范围设为20%-80%可避免频繁启停
2.2 水泵切换逻辑实现
水泵轮换采用累计运行时间算法,在DB块中定义数据结构:
pascal复制STRUCT
Pump1_Runtime : TIME;
Pump2_Runtime : TIME;
Pump3_Runtime : TIME;
Last_Start_Time : ARRAY[1..3] OF TIME;
END_STRUCT
启动判断逻辑示例:
pascal复制IF "PID_Output" > 0.7 AND NOT #Pump2_Running THEN
TON(IN:=TRUE, PT:=T#30S);
IF TON.Q THEN
// 选择运行时间最短的水泵
IF #Pump1_Runtime <= #Pump2_Runtime AND #Pump1_Runtime <= #Pump3_Runtime THEN
"Start_Pump1" := TRUE;
ELSIF #Pump2_Runtime <= #Pump3_Runtime THEN
"Start_Pump2" := TRUE;
ELSE
"Start_Pump3" := TRUE;
END_IF;
END_IF;
END_IF;
3. 威纶通HMI设计技巧
3.1 动态压力曲线实现
使用历史数据控件时,关键配置步骤如下:
- 在[历史数据采集]设置中,创建Pressure_Log通道
- 采样间隔设为1秒,存储深度1800点(30分钟)
- 在画面中插入趋势图控件,绑定Pressure_Log
- 设置X轴时间范围为30分钟,Y轴量程2.5-4.0bar
vbnet复制' 通过VBS脚本实现动态刷新
Sub UpdateTrend()
SmartTags("Pressure_Offset") = SmartTags("AI_Pressure") + 0.1
End Sub
3.2 水泵状态可视化
自定义水泵图形元件时要注意:
- 创建多状态显示元件,设置运行/停止/故障三种状态
- 在[闪烁]属性页勾选"启用闪烁"
- 故障状态设置红色背景+2Hz闪烁频率
- 绑定PLC变量时使用间接寻址:
vbnet复制"Pump_Status[" & SmartTags("Pump_Index") & "]"
4. 现场调试问题实录
4.1 压力信号滤波处理
最初遇到的信号跳变问题通过移动平均滤波解决:
pascal复制#Pressure_Buffer[0] := "AI_Raw";
FOR #i := 0 TO 9 DO
#Sum := #Sum + #Pressure_Buffer[#i];
END_FOR;
"AI_Pressure" := #Sum / 10;
滤波参数选择建议:
- 缓冲区长度的选择:响应速度要求高选5点,稳定性要求高选15点
- 采样周期与滤波周期的比值建议1:5
4.2 变频器通信故障
Modbus通信配置要点:
pascal复制// 通信参数设置
"MB_MASTER_DB".MB_MODE := 0; // RTU模式
"MB_MASTER_DB".MB_BAUD := 19200;
"MB_MASTER_DB".MB_PARITY := 2; // 偶校验
// 读频率命令
"MB_MASTER_DB".MB_ADDR := 1; // 站地址
"MB_MASTER_DB".MB_DATA_ADDR := 108; // 频率寄存器
"MB_MASTER_DB".MB_DATA_LEN := 1;
常见故障处理:
- 通信超时:检查终端电阻是否启用
- CRC错误:确认波特率和校验位设置
- 无响应:测量RS485线路A/B间电压(正常2-6V)
5. 系统优化与扩展
5.1 时段压力设定功能
在HMI上新增时间调度表:
vbnet复制' 时段压力设定VBS脚本
Function GetPressureSetpoint()
Dim hour
hour = Hour(Now)
Select Case hour
Case 8 To 19 ' 工作时间
GetPressureSetpoint = 3.2
Case Else ' 夜间
GetPressureSetpoint = 2.8
End Select
End Function
5.2 能耗统计功能
在PLC中新增能耗计算:
pascal复制// 功率计算(kW)
#Pump1_Power := "Pump1_Current" * 380 * 1.732 * 0.8 / 1000;
// 能耗累计(kWh)
"Pump1_Energy" := "Pump1_Energy" + (#Pump1_Power * "Cycle_Time" / 3600);
HMI上添加能源报表页面,包含:
- 实时功率曲线
- 日/月能耗柱状图
- 泵组效率分析(m³/kWh)
这套系统经过持续优化,水泵切换时间从最初的45秒缩短到22秒,年节电量达到3.2万度。维护人员特别赞赏运行时间自动均衡功能,相比之前手动切换方案,设备寿命预计可延长30%以上。