西门子200SMART加显控触摸屏水处理程序案例控制系统程序,30吨双级反渗透加EDI工艺。 系统采用成熟、可靠、先进、自动化程度高的二级反渗透+EDI除盐水处理工艺,确保处理后的超纯水水质确保处理后出水电阻率达到18.2MΩ.cm,采用PLC+触摸屏控制,全套系统自动化程度高,系统稳定性高。
最近在搞一个30吨双级反渗透+EDI的水处理项目,用西门子S7-200 SMART PLC配显控触摸屏做控制,目标是搞出电阻率18.2MΩ.cm的超纯水。这系统要自动完成原水预处理、反渗透膜冲洗、EDI电流调节这些骚操作,咱们今天就扒扒这个项目的核心代码设计。
硬件配置真香现场
PLC用了个200 SMART SR40,自带的24DI/16DO刚好够用,模拟量模块接PH计、电导率仪这些。触摸屏选显控SK-070AE,7寸屏塞得下十几个工艺流程图。重点在于RO膜组和EDI模块的连锁控制——这俩大爷要是罢工,整套系统直接GG。
核心控制逻辑拆解
先说反渗透膜自动冲洗这个经典需求。程序里用了个带条件判断的循环定时器,每次开机前先来波酸洗:
// 西门子200 SMART 梯形图 LD 自动冲洗使能 AN T37 TON T37, 600 // 10分钟冲洗计时 LD T37 = 冲洗水泵 // 启动冲洗泵 = V0.5 // 打开冲洗电磁阀这段代码看着简单,其实藏了个坑——冲洗完成后的排空时间得卡准,我们后来加了个T38做30秒排空延时。调试时发现T37和T38的EN端必须用上升沿触发,不然会出现定时器累计误差。
触摸屏交互骚操作
显控屏的脚本编辑器是真方便,搞了个动态参数显示面板。比如EDI模块的工作电流随水质波动,直接上脚本:
-- 显控屏Lua脚本 function on_update() local resistivity = GetTagValue("电导率") if resistivity > 16.0 then SetTagValue("EDI电流", 3.0) elseif resistivity > 17.5 then SetTagValue("EDI电流", 2.2) else SetTagValue("EDI电流", 1.5) end end这里有个骚操作:电导率转电阻率的计算公式直接嵌在触摸屏里做标度变换,省了PLC的浮点运算资源。不过要注意触摸屏的数值滤波得做好,不然参数跳得跟蹦迪似的。
PID调节的实战坑位
高压泵控制用了PLC自带的PID模块,调试时发现个魔幻现象——PV值采样总是滞后。后来发现是模拟量模块的滤波参数设太大,改成20ms采样周期后稳如老狗:
// S7-200 SMART PID向导生成的代码 PID_CTRL:LD SM0.0 MOVR VD200, VD204 // PV值 MOVR VD208, VD212 // SP值 PID VB300, 0 // 调用PID回路 MOVR VD216, AQW0 // 输出到变频器重点在PID的自整定姿势——必须在系统带压运行时做整定,空载整定出来的参数能用就见鬼了。还有个玄学问题:PID输出下限不能设0%,否则停泵时会有压力反冲,设到5%就神奇解决了。
这个项目最深的体会是:水处理自动化就是和各种滞后系统斗智斗勇。比如EDI模块的响应延迟能到2分钟,程序里必须做预测控制。现在这套系统在客户那跑了半年多,听说RO膜寿命比预期长了30%,可能跟咱们程序里的智能降压冲洗逻辑有关——果然优秀的代码连设备都会感恩啊。