1. 项目背景与核心需求
这个水处理工程项目采用了西门子WinCC 7.0作为上位机监控系统,配合S7系列PLC实现完整的自动化控制。项目主要处理工业废水中的重金属离子(特别是锌、铬)以及实现渗透与反渗透工艺的自动化控制。整套系统需要实现实时监控、工艺参数调节、报警记录与处理等核心功能。
在工业水处理领域,重金属去除和膜分离技术是两大技术难点。锌、铬离子是电镀、制革等行业废水的典型污染物,国家排放标准对其有严格限制(锌≤2.0mg/L,铬≤0.5mg/L)。而渗透与反渗透工艺对压力、流量、电导率等参数的控制精度要求极高,传统手动操作难以满足稳定运行需求。
2. 系统架构设计
2.1 硬件组成
-
控制层:S7-300 PLC(CPU315-2DP)作为主站,通过Profibus-DP网络连接:
- 4台ET200M分布式I/O站(负责模拟量采集和数字量控制)
- 2台MM440变频器(控制高压泵和加药泵)
- 1台SITRANS FM电磁流量计(带Profibus-PA接口,通过DP/PA耦合器接入)
-
检测仪表:
- pH/ORP变送器(梅特勒-托利多)
- 重金属在线分析仪(HACH ChromaCOD)
- 压力变送器(西门子SITRANS P)
- 电导率仪(Endress+Hauser)
-
上位机:
- 工控机(研华IPC-610H)
- 双屏显示器(实现工艺流程与参数报表同步显示)
- 冗余服务器(WinCC Redundancy配置)
2.2 软件配置
-
WinCC 7.0 SP3:
- 512点外部标签(实际使用487个)
- 启用报警记录(5000条循环缓冲区)
- 配置趋势曲线(8条实时曲线,15条历史曲线)
- 用户管理(5级权限设置)
-
STEP7 V5.6:
- 主程序OB1(循环周期100ms)
- 中断组织块OB35(定时中断,周期1s)
- 报警处理FB(FB125,带时间戳功能)
- PID控制块(FB41用于压力控制,FB58用于pH调节)
3. 核心工艺实现
3.1 重金属处理单元
采用化学沉淀+过滤工艺,PLC程序实现:
scl复制// 加药控制逻辑
IF "pH_Value" < 9.0 THEN
"Dosing_Pump".Speed := 70; // 70%频率
"Mixing_Valve" := TRUE;
ELSIF "pH_Value" > 9.5 THEN
"Dosing_Pump".Speed := 30;
"Mixing_Valve" := FALSE;
END_IF;
// 沉淀池排泥控制
IF "Tank_Level" > 85.0 AND "Sludge_Time" >= 1800 THEN // 30分钟间隔
"Drain_Valve" := TRUE;
"Sludge_Pump" := TRUE;
END_IF;
关键参数设置:
| 参数名称 | 设定值 | 报警阈值 |
|---|---|---|
| pH调节范围 | 9.0-9.5 | <8.5 或 >10.0 |
| 反应时间 | ≥20分钟 | <15分钟触发报警 |
| 锌离子浓度 | ≤0.8mg/L | >1.5mg/L一级报警 |
| 铬离子浓度 | ≤0.3mg/L | >0.4mg/L一级报警 |
3.2 反渗透系统控制
采用恒压变流量控制策略,程序要点:
-
高压泵变频器通过PID调节(FB41)
- 过程变量:RO膜前压力(PV)
- 设定值:12bar(可HMI调整)
- 输出:变频器频率(0-50Hz)
-
冲洗程序(S7-Graph实现):
scl复制// 自动冲洗序列
GRAPH
STEP S1: // 等待冲洗条件
TRANSITION T1 := "Flush_Time" >= 7200; // 2小时
ACTION "Flush_Status" := "等待冲洗";
STEP S2: // 开启冲洗阀
TRANSITION T2 := "Flush_Valve" = TRUE;
ACTION
"High_Pump" := FALSE;
"Flush_Valve" := TRUE;
STEP S3: // 启动冲洗泵
TRANSITION T3 := "Flush_Pump" = TRUE;
ACTION
"Flush_Pump" := TRUE;
"Flush_Timer" := 120; // 2分钟
STEP S4: // 结束冲洗
TRANSITION T4 := "Flush_Timer" <= 0;
ACTION
"Flush_Pump" := FALSE;
"Flush_Valve" := FALSE;
"Flush_Time" := 0;
END_GRAPH
4. WinCC界面设计要点
4.1 主监控画面
-
动态元素:
- 管道颜色随流量变化(绿色→黄色→红色)
- 泵图标旋转动画(关联实际运行状态)
- 实时数据显示(数值+颜色报警)
-
关键控件:
- 工艺选择按钮组(切换不同处理单元)
- 紧急停止按钮(直接硬线连接PLC)
4.2 报警管理
-
报警分级:
- 1级(红色):设备故障/安全风险
- 2级(黄色):工艺参数偏离
- 3级(白色):提示信息
-
报警处理:
vbs复制Sub Button_AckAll_Click()
Dim alarm
For Each alarm In HMIRuntime.Alarms
If alarm.State = 1 Then // 未确认报警
alarm.Acknowledge
End If
Next
End Sub
5. 典型问题解决方案
5.1 通信中断处理
现象:WinCC偶尔显示"PLC未连接"
排查步骤:
- 检查PLC诊断缓冲区(OB86错误)
- 确认Profibus终端电阻(两端ON,中间OFF)
- 使用Simatic Net OPC Scout测试通信
- 调整WinCC通信参数:
- "Cycle"改为1000ms
- "Timeout"设为3000ms
5.2 报警记录卡顿
优化方案:
- 修改WinCC配置:
ini复制[AlarmLogging] MaxEntries=5000 SegmentSize=1000 - 增加报警归档周期:
vbs复制HMIRuntime.Tags("AlarmArchiveCycle").Write 86400 // 24小时 - 禁用不必要的报警声音提示
6. 项目调试心得
-
信号滤波处理:
- 对pH信号采用移动平均滤波(S7程序实现):
scl复制// 模拟量滤波FC FUNCTION FC105 : REAL VAR_INPUT RawValue : REAL; END_VAR VAR_STATIC Buffer : ARRAY[1..5] OF REAL; Index : INT := 1; END_VAR Buffer[Index] := RawValue; Index := Index MOD 5 + 1; FC105 := (Buffer[1]+Buffer[2]+Buffer[3]+Buffer[4]+Buffer[5])/5; END_FUNCTION -
维护建议:
- 每月执行WinCC数据库压缩(项目激活状态下)
- 定期备份以下文件:
- WinCC项目包(.pck)
- PLC符号表(.sdf)
- 报警文本(.csv)
-
扩展性设计:
- 预留15%的I/O点余量
- 变量命名采用"设备_参数_单位"格式(如"RO1_Pressure_kPa")
- 关键设备增加手动/自动切换功能
