1. 项目背景与系统概述
去年冬天接手了某老旧小区换热站改造项目,原系统还是靠老师傅手动调节阀门开度,不仅能耗高得离谱,住户投诉温度波动大的电话就没断过。这次用西门子S7-1200 PLC搭建的智能控制系统,核心目标就两个:一是实现二次网供水温度±0.5℃的精准控制,二是根据热负荷变化自动调节循环泵频率。整套系统包含:
- 西门子S7-1215C DC/DC/DC主控制器
- SM1231 8路模拟量输入模块(用于温度/压力传感器)
- SM1232 4路模拟量输出模块(控制电动调节阀)
- 6ES7223-1PL32-0XB0数字量扩展模块
- 昆仑通态TPC7062KX触摸屏
现场传感器布局很有讲究:一次网供回水各装了两支PT100铂电阻(互为冗余),二次网在每栋楼入户管井加装了温度传感器。特别提醒:温度传感器必须装在管道上半部,避免气泡积聚导致测量失真。这个细节我们吃过亏——初期装在管道底部,读数比实际低了整整3℃。
2. 硬件配置与IO分配实战
2.1 信号类型处理要点
现场28个数字量点(16DI+12DO)和12路模拟量(8AI+4AO)的配置看似常规,但有几个坑必须提前规避:
- 电动阀的220VAC控制回路必须通过中间继电器转换,PLC的DO点最大只能带2A负载。我们用的欧姆龙MY2N-J继电器,线圈电压24VDC正好匹配PLC输出
- 流量计建议选用脉冲输出型(如开封仪表的LWGY系列),比4-20mA信号抗干扰能力强。现场实测发现,变频器运行时对模拟量通道的干扰能达到0.5mA
- 温度传感器三线制接法必须严格遵循色标:红-电源+,黑-信号+,蓝-公共端。接反会导致补偿失效
2.2 模拟量信号处理代码优化
原始程序里的SCALE_IN指令问题其实有更稳妥的写法:
STL复制// 改进后的流量值转换
L "AIW64" // 读取AI0通道原始值
T #TEMP1
L 27648
DTR
T #TEMP2 // 量程上限转浮点
L #TEMP1
DTR
/R // 原始值/27648
L 100.0
*R // 乘以工程量程
T "流量实际值"
这种分段处理方式虽然代码量多,但能清晰看到每个转换步骤,调试时更容易定位问题。特别要注意DTR(整数转浮点)指令的运用——西门子PLC的数学运算必须统一数据类型。
3. 温度控制算法深度解析
3.1 PID参数整定技巧
项目初期直接调用PID_Compact功能块,默认参数下系统震荡严重。后来采用临界比例度法整定:
- 先置Ti=∞,Td=0,逐渐增大Kp直到系统等幅振荡(此时Kp=5.2)
- 记录振荡周期Tu=42秒
- 按Ziegler-Nichols公式计算:
- Kp=0.6*5.2≈3.1
- Ti=0.5*42=21s
- Td=0.125*42=5.25s
实际运行中发现二次网存在3分钟左右的滞后,最终采用的参数组合:
SCL复制"PID_Compact_0".GAIN := 2.8; // 比例系数
"PID_Compact_0".TI := T#30s; // 积分时间
"PID_Compact_0".TD := T#8s; // 微分时间
"PID_Compact_0".DEADB_W := 0.5; // 死区宽度
3.2 多回路耦合处理
当同时调节一次网阀门和二次网循环泵时,会出现耦合干扰。我们的解决方案:
- 给一次网控制回路增加前馈补偿:当二次网温度设定值变化超过2℃时,直接叠加20%阀门开度
- 两个PID回路采用不同采样周期:一次网1秒,二次网2秒
- 在WinCC里建立耦合系数矩阵,通过趋势图观察相互影响程度
4. 抗干扰设计与故障排查
4.1 电源系统改造
整点温度跳变的根本原因是电网污染,采取三级防护:
- 第一级:在总进线加装正弦波滤波器(施耐德LV434000)
- 第二级:模拟量模块单独使用1kVA隔离变压器(输入220VAC,输出220VAC)
- 第三级:每个传感器信号线加装EMC磁环(TDK ZCAT2035-0930)
4.2 典型故障速查表
| 故障现象 | 可能原因 | 排查方法 |
|---|---|---|
| 温度显示-3276.8℃ | PT100断线 | 测量传感器电阻,正常应为110Ω左右 |
| 阀门动作滞后 | 继电器触点氧化 | 用万用表测继电器触点压降,大于1V需更换 |
| 流量计读数波动 | 接地不良 | 检查传感器外壳与柜体间电阻,应小于4Ω |
| PID输出饱和 | 执行机构行程受限 | 手动模式测试阀门全开/全关时间 |
5. 组态画面开发心得
5.1 动态元素优化技巧
- 趋势图刷新优化:在WinCC的全局脚本中添加:
VBS复制Sub SetUpdateRate()
Dim obj
Set obj = HMIRuntime.Screens("TrendView").ScreenItems("Trend1")
obj.UpdateCycle = 500
End Sub
- 报警界面采用分层显示:第一屏只显示未确认报警,用颜色区分优先级(红色-紧急,黄色-重要,蓝色-提示)
5.2 数据记录策略
- 关键参数采用循环记录:最新数据存内存(采样周期1秒),历史数据存SD卡(采样周期1分钟)
- 使用S7-1200的数据日志功能配置:
TIA复制// 在DB中定义数据结构
STRUCT
TimeStamp : DATE_AND_TIME;
Temp1 : REAL;
Flow1 : REAL;
END_STRUCT
6. 系统调试关键步骤
- 分模块测试:先单独测试每个IO点,再测试控制回路
- 闭环测试时采用阶梯设定值:从30℃开始,每次升高5℃,观察系统响应
- 满载测试时注意记录:
- 阀门从全开到全关时间(应≤30秒)
- 温度超调量(应<1℃)
- 稳态误差(应<0.3℃)
这套系统运行一个采暖季后,小区能耗同比下降18%,投诉电话减少95%。最让我欣慰的是物业王师傅现在每天就看看趋势图,再也不用半夜爬起来调阀门了。
