恒压供水1托3加1供水程序,PLC和触摸屏采用西门子smart200。 包含触摸屏程序,PLC程序带有注释,CAD接线图纸。
最近在折腾一个恒压供水项目,现场需要实现1主3辅+1备用的供水配置。整个系统用西门子S7-200 SMART PLC和配套触摸屏搭建,折腾过程中踩了不少坑,分享点实战经验。
先说硬件架构。核心是S7-200 SMART SR30 CPU,自带24DI/16DO,刚好够用。触摸屏选的是SMART LINE V3 7寸屏,通过以太网直连PLC。现场配了4台7.5kW水泵(3用1备),压力传感器用4-20mA信号接入。CAD图纸里有个关键点:模拟量模块的AIW16通道接压力反馈,输出控制变频器的AQW16对应0-10V信号。
PLC程序里有个有意思的轮换控制逻辑,用移位寄存器实现泵组均衡运行:
LD SM0.5 // 每分钟触发 EU SRB VB100, 3 // 移位寄存器控制3台主泵这段代码配合V100.0~V100.3的状态位,实现每次启动切换主用泵。比如V100.0=1时启1#泵,下个周期自动切到V100.1=1启2#泵,避免单泵长时间运行。
恒压供水1托3加1供水程序,PLC和触摸屏采用西门子smart200。 包含触摸屏程序,PLC程序带有注释,CAD接线图纸。
PID控制部分用了向导生成的子程序,但实际调试时发现死区设定很重要。原厂程序里的PID_CTRL块需要加个死区限制:
MOVR VD200, VD204 // 目标压力 MOVR VD208, VD212 // 反馈压力 SUB_R VD204, VD212, VD216 // 计算偏差 ABS VD216, VD220 // 取绝对值 LDR< VD220, 0.05 // 死区0.05MPa NOT = M10.0 // 超出死区才动作这个逻辑有效避免了压力在设定值附近震荡,实测能减少30%以上的变频器频繁调节。
触摸屏界面设计有个小技巧:用"棒图+趋势图"组合显示压力曲线。在WinCC Flexible里设置两个指针控件,一个实时显示当前压力,另一个显示30分钟趋势。关键参数设置用了带密码保护的输入框,防止现场误操作:
<NumInput> <Tag>DB1.DBD20</Tag> <PasswordLevel>2</PasswordLevel> <Limit>0.3~1.0</Limit> </NumInput>调试时发现个坑点:当备用泵自动投入时,原程序没有做运行时间清零。后来在OB1主循环加了段复位代码:
LD M20.1 // 备用泵启动信号 EU MOVD 0, VD300 // 清除备用泵运行计时现在看整个系统,最费劲的还是多泵切换时的压力突变问题。后来在输出控制上加了个斜坡函数,用定时中断实现每秒0.5%的增减幅度,总算把压力波动控制在±0.02MPa以内。
程序注释建议多用中文标注特殊逻辑,比如在PID参数设置块前写:
// 特别注意:夏季模式Kp=0.8,冬季模式Kp=1.2 // 切换时需同时调整Td时间 2023.11.15修改 MOVR 0.8, VD104这种注释比纯英文的更容易维护。整套程序现在跑了大半年,经历过零下15度到40度的环境考验,算是验证了稳定性和抗干扰能力。