搞水处理项目的同行应该都有体会双级反渗透制水系统加混床加药看似流程固定真正写起PLC程序来却有不少讲究。尤其是用西门子S7-200 Smart这种中小型PLC既要保证制水流程自动跑得顺又要让现场维护的人看得懂程序注释和结构规划就成了成败关键。我前后做过几套类似方案从工艺梳理、I/O分配、程序框架到现场调试踩坑整理了一套完整做法。这篇文章不绕弯子直接讲清楚S7-200 Smart在这类双级反渗透和混床加药系统中的程序怎么写、硬件怎么配、注释怎么加、调试又该从哪下手。准备接这类项目的电气工程师、PLC编程员或者在水处理设备厂负责售后的朋友都可以参考。1. 系统组成与硬件选型1.1 双级反渗透的工艺流程先理顺写程序之前工艺必须吃透。这套系统的来水经过原水箱、原水泵、多介质过滤器、活性炭过滤器、保安过滤器然后进入一级反渗透。一级反渗透产水进中间水箱再由二级高压泵送入二级反渗透二级产水进纯水箱最后通过混床进行深度离子交换出水末端再接精密过滤器送到用水点。工艺流程里的几个关键衔接点原水泵要给一级反渗透供水但不能在中间水箱满水时一直打。一级反渗透的高压泵必须在进水管压力建立起来之后才能启动否则膜会憋坏。二级反渗透的启停直接取决于中间水箱液位中间水箱液位高才有条件开液位过低要停泵保护。混床加药系统一般包含阻垢剂加药、还原剂加药和pH调节加药加药点分别放在一级反渗透前、二级反渗透前这样既保护膜组件又能让产水水质更稳定。这些流程搞清楚了再去摸PLC就顺得多。我接触过的项目里程序迟迟调不通的往往不是PLC不会用而是工程师没有把现场管道仪表流程图画清楚就开始写梯形图。1.2 为什么这套系统用S7-200 Smart合适市面上做水处理控制大到几百个点的DCS小到几个泵的继电器控制都有。双级反渗透加混床加药这类系统数字量点数和模拟量点数都在几十个以内用S7-200 Smart这种小型PLC性价比很高。S7-200 Smart有几点优势很实际编程软件 STEP 7-MicroWIN SMART 免费下载授权好处理对设备厂商和小型工控团队友好不增加项目成本。CPU自带以太网口在线监控和程序上传下载非常快出差调试时一根网线就能搞定不用拖着编程电缆跑来跑去。扩展模块种类全模拟量模块、热电偶模块、数字量模块都有应对十几路DI、DO和几路AI绰绰有余。梯形图编程上手简单后续维护人员培训成本低很多电工师傅也能看懂一部分。当然如果项目点数特别多或者上位机系统要求冗余和复杂报表那就得考虑更大型的PLC和上位机组态软件不在今天讨论范围。1.3 I/O点数和模块选型计算我以一套典型双级反渗透加混床加药系统为例配置如下数字量输入DI主要采集原水箱液位开关中间水箱液位开关纯水箱液位开关加药箱液位低开关各水泵热继电器故障信号反渗透进水低压开关手动/自动切换开关系统启动按钮系统急停按钮数字量输出DO主要控制原水泵启停一级高压泵启停二级高压泵启停阻垢剂加药泵启停还原剂加药泵启停碱液加药泵启停进水电磁阀开关冲洗电磁阀开关声光报警器模拟量输入AI主要有一级反渗透进水压力一级反渗透产水流量二级反渗透进水压力纯水电导率混床出水流量pH值按这个规模CPU选SR40或者ST40都够用。如果模拟量多我再加一块EM AM06模拟量扩展模块4路AI加2路AO既能采集又能输出控制信号。ST系列CPU本身自带两路模拟量输入实际项目中经常ST40加一块EM AM06完全覆盖需求。选型时候还有两个细节值得注意一是数字量输出模块如果用继电器型带接触器线圈时不用再另外加中间继电器但触点寿命有限高频动作场合要留意加药泵这种频繁启停的回路建议还是配中间继电器缓冲一下二是DC24V传感器电源要单独算容量四个压力变送器加几个液位开关总电流加起来不小别让PLC自带的24V电源超载。2. 软件搭建与程序注释规范2.1 STEP 7-MicroWIN SMART的基本操作思路打开STEP 7-MicroWIN SMART新建工程第一步就是选择CPU型号。这里要跟实际硬件对上否则下载程序会报错。设置通信时把PLC的IP地址跟电脑设成同一网段比如PLC设192.168.2.1电脑本地连接设192.168.2.10子网掩码255.255.255.0然后点击查找CPU就能搜到。程序采用梯形图编辑器编写左边是项目树包括程序块、符号表、状态图表、数据块等。水处理程序逻辑分支多我倾向于在主程序OB1里做整体扫描逻辑把不同功能分成若干子程序比如“一级RO控制”、“二级RO控制”、“加药控制”、“报警处理”子程序可以在主程序里通过SM0.0常ON条件调用或者通过状态位条件调用。这种模块化写法好处很明显调试时只看当前相关的子程序就行不需要在整个梯形图里翻来翻去。比如二级反渗透出了问题直接进“二级RO控制”子程序很快就能定位是液位条件不满足还是压力报警触发。2.2 符号表和注释是给未来自己留的救命稻草很多工程师写程序时图快直接用I0.0、Q0.0、VW100这种绝对地址编程。前一个月自己还能看懂半年后项目要改造翻程序的时候就变成天书了。我在S7-200 Smart项目里强制自己建立完整的符号表给每个绝对地址取一个有意义的符号名。例如I0.0 —— 原水箱液位低I0.1 —— 中间水箱液位高I0.2 —— 中间水箱液位低Q0.0 —— 原水泵Q0.1 —— 一级高压泵AIW0 —— 一级进水压力VW100 —— 一级进水压力上限设定值同时在符号表中备注对应的图纸位号和工艺说明。这样梯形图里显示的就不是“常开触点I0.0”而是“原水箱液位低”这个一目了然的符号名。程序网络注释也很关键。S7-200 Smart每个网络可以写网络标题和网络注释。我会在每个网络的注释栏里写清楚该段逻辑的作用比如“一级高压泵启动条件进水压力大于0.15MPa中间水箱液位允许系统自动模式”。这样即使换一个人接手维护也能快速理解编程意图。2.3 数据规划和定时器计数器安排S7-200 Smart的V区用来保存变量和数据。我习惯给每类数据规划固定地址范围VW0到VW99系统参数设定值比如压力上下限、冲洗时间、加药时间。VW100到VW199模拟量处理后实时值。VW200到VW299累计值比如流量累计、加药次数。M0.0到M99.7内部中间变量和状态位。定时器规划上水处理程序常用的几个类型TON启动延时比如泵启动前先开进水阀延时3秒再启泵。TOF停止延时比如系统停产后保持冲洗1分钟再关断。TONR累积运行时间用来统计泵运行时长提醒维护保养。计数器用得少但加药泵如果按流量脉冲计数就需要用CTU来实现每达到一定流量就加药一次。3. 双级反渗透主流程控制逻辑3.1 自动启动的条件与顺序互锁自动模式下主流程启动逻辑按照阶梯式来写第一步原水泵的启动条件是原水箱液位正常且中间水箱液位不在高液位。这里为什么要用高液位停泵而不是低液位启泵因为一级反渗透在运行过程中会产生一部分浓水也会因为回收率变化导致进水流量波动如果只看中间水箱低液位才开泵容易造成原水泵频繁启停。用高液位作为停止条件低液位作为连锁停车条件再配合一个中间水箱液位开关做保护可靠性更高。第二步一级反渗透主机启动前先开进水电磁阀、冲洗电磁阀对膜组件进行低压冲洗。冲洗时间一般设定30到60秒然后才允许启动一级高压泵。高压泵启停条件里再串一个进水压力下限开关保证膜壳内有水。第三步一级反渗透产水进入中间水箱。当中间水箱液位达到高液位同时系统处于自动模式二级反渗透自动启动。二级启动前同样先执行冲洗程序时间可以短一些20秒左右。两侧反渗透都运行起来以后纯水箱液位逐渐升高。当纯水箱到达高液位系统要依次停掉二级反渗透、一级反渗透最后停原水泵同时进入自动冲洗模式用产水对膜表面进行短时间冲洗延长膜使用寿命。3.2 模拟量采集与工程量换算S7-200 Smart的模拟量输入通道默认采集数值范围是0到27648。4到20mA信号对应的是5530到27648如果用了0到20mA变送器则是0到27648。压力变送器量程如果是0到1.0MPa接到模拟量模块后原始值就要做线性换算。换算方法很简单实际工程量等于原始值除以满量程原始值再乘以变送器量程。比如现场压力变送器量程0到1.0MPa4到20mA输出。程序里读到的AIW0值是16384对应约12mA那么实际压力就是16384除以27648再乘以1.0结果是0.59MPa。严谨一点的做法是把计算式写成实际压力 AIW0 - 5530 * 1.0 / 27648 - 5530用这个公式4mA对应0MPa20mA对应1.0MPa中间呈线性关系。程序中用整数运算或者浮点运算都可以S7-200 Smart支持浮点指令直接用浮点计算精度更放心。流量和电导率的处理方式跟压力类似只是量程上下限不同。电导率变送器量程可能是0到200uS/cm同理换算。换算后的值要放到对应的VW寄存器里后续报警判断和HMI显示都用这个值。3.3 压力和流量保护逻辑反渗透系统最怕高压和低压。高压会伤膜低压会导致膜腔缺水干磨。程序里至少设置两重保护第一重是模拟量软保护。程序读取进水压力实时值后跟设定上限比较超过上限延时2秒停机报警。这个延时不能设太长也不能没有因为压力变送器信号在泵启动瞬间会有波动延时过滤干扰信号很有必要。第二重是硬保护开关。在高压泵进水管路装一个低压压力开关信号进DI。当进水压力低于开关动作值时直接停高压泵不经过模拟量计算响应更快更可靠。这种硬保护开关建议常闭信号进PLC因为断线故障时也会触发保护符合故障安全原则。流量信号我更多用于产水量累计和加药比例控制。一级反渗透产水流量通过流量计转换为4到20mA信号进入模拟量输入程序用流量值累加产水总量。累计流量既用来计算系统运行效率也用来触发定期的膜冲洗。4. 混床加药系统控制设计4.1 加药泵的手动/自动控制混床前面的加药系统通常包括三类药剂阻垢剂、还原剂和pH调节剂。阻垢剂主要投加在一级反渗透进水管道防止钙镁离子在膜表面结垢。还原剂的作用是去除进水中残留的余氯保护反渗透膜不被氧化。pH调节剂则根据进水pH值自动调节投加量。加药泵的自动控制逻辑比较直接以阻垢剂加药泵为例自动模式下一级高压泵启动且系统进水流量大于设定值加药泵自动启动。加药泵按定时方式运行启动运行30秒停止60秒循环往复这样比连续运行更省药剂也减少计量泵磨损。加药箱液位低时自动停止加药泵同时报警提示更换药剂。这个程序用两个TON定时器实现循环控制。第一个定时器计时运行时间时间到置位停止计时标志第二个定时器计时停止时间时间到又复位回到运行状态。如果还嫌不够灵活可以把运行时间和停止时间放到触摸屏上设置用VW寄存器作为定时器的预设值。4.2 混床再生与产水联动混床本体一般不带太多控制点主要是监视进出水电导率和流量。程序里对混床的控制重点是产水联动纯水箱液位达到中水位时混床进水阀打开出水阀打开产水送入用水端。纯水箱低液位时混床进口阀要维持打开但要检查后端用水条件。混床出口电导率超限时说明树脂饱和需要再生。普通设备会配一个再生过程包括反洗、进酸、进碱、置换等步骤这部分如果要求全自动做程序量会大不少。很多项目里选择简易的半自动方式PLC只负责记录产水量和运行周期到期提醒操作人员手动切换再生。我做过的一个升级方案里把混床进出口压差和电导率做成趋势记录通过触摸屏显示。当累计产水量达到设定值时触摸屏上弹出“建议再生”提示同时禁止不合格水进入后端系统。这样做既降低了编程复杂度又满足现场实用需求。4.3 加药量的PID调节思路如果现场要求pH值精确控制比如二级反渗透进水pH要保持在7.5到8.0那普通的定时循环加药就不够用了需要用PID闭环控制。S7-200 Smart自带PID指令块组态起来不复杂。思路是模拟量输入读取pH值作为过程变量PV设定值SV放在V寄存器里比如pH7.8PID输出控制加药泵的频率或者控制计量泵的冲程。实际应用中pH调节大滞后特性明显PID参数整定比较考验经验建议把比例和积分范围放得保守一些调试时逐步往回收。我通常的做法是先用手动模式把pH调到稳定区间记录大概需要的加药量把这个值作为PID的前馈基础。然后开启PID自动模式P值从较小值往上调I值保持在一个不引起震荡的水平。实测下来这样做比直接默认参数跑要快很多。5. 调试过程与典型故障排查5.1 上电初调的执行顺序新项目到现场调试我一般不急着把整个自动程序跑起来。上电之后先做静态检查把硬件点对点测一遍确保PLC输出到接触器的线序和图纸一致再进行软件逻辑调试。建议顺序PLC上电检查24V电源输出正常CPU运行灯绿色常亮。用编程软件在线连接PLC查看符号表中各输入信号状态逐个短接现场开关确认信号能够正确映射到PLC输入点。将设备切到手动模式逐个测试泵和阀门的启停同时观察接触器动作和电机方向。手动测试无误后切换到自动模式分步观察自动启动条件是否按程序逻辑动作。进行停机阶梯测试模拟高液位、低压、故障等信号记录设备停止顺序是否合理。这套流程虽然耗时但能把绝大部分接线问题挡在系统联动之前。5.2 常见故障速查表我整理了实际调试和使用中最常碰到的几个问题给各位参考。现象可能原因排查方法处理建议原水泵频繁启停液位开关安装位置不对或浮球卡滞观察PLC输入状态与实际液位是否一致调整浮球位置增加启停液位回差一级高压泵启动后立即停进水低压保护动作或模拟量压力换算错误检查压力变送器量程设置和PLC换算系数核对量程上下限修正换算公式模拟量读数在PLC里跳变屏蔽层未接地或变送器供电不足检查接线方式、屏蔽层是否单端接地用独立24V电源给变送器供电屏蔽层单端接地加药泵不启加药箱液位低或定时器循环逻辑未启动检查液位开关信号和定时器状态确认自动模式下发泵条件全部满足触摸屏连不上PLCIP地址冲突或不在同一网段ping测试并查看PLC通信状态统一IP网段关闭电脑多余网卡系统停机顺序异常程序互锁条件编写考虑不全逐段检查停止条件和联动逻辑重画启动停止时序图完善互锁条件5.3 模拟量干扰的处理经验水处理现场最大的敌人其实是电气干扰。变频器一启动模拟量信号经常出现0.1MPa左右的波动有时候电导率也会跟着跳。我在设备调试中发现这类干扰大部分来自两个方面。第一个是信号线没有用屏蔽电缆。压力变送器的信号线必须用两芯屏蔽线而且屏蔽层只能在水处理控制柜侧接地不能两边都接更不能在现场变送器那端接地。第二个是电缆沟里动力线和信号线挨太近。泵和变频器的动力电缆电流大谐波干扰强信号线要和动力线保持至少20厘米间距条件允许的话用穿管分隔。程序层面也能做点防护比如对模拟量信号加数字滤波采样值做滑动平均。S7-200 Smart里可以用循环累加的方式实现简单滤波比如取连续5次的平均值作为有效值。这样处理后干扰引起的瞬时突跳能被有效抑制对保障压力报警准确性很有帮助。5.4 程序注释在调试中的价值调试间隙我养成了一个很微妙的习惯每改完一段逻辑立刻更新对应的注释。现场调试节奏快人的记忆力在连续加班后是会打折扣的。白天改过的程序晚上再看一遍如果注释没更新第二天自己都会忘了当初为什么这么写。在这个项目里我还在程序开头留了一个“程序说明”网络用STL的注释写了整套系统的设备编号、主要工艺参数和操作注意事项还特别写明了急停复位和自动启动后的恢复步骤。后来设备交付给厂家维护他们的电气人员照着注释和符号表半天就上手了这就是注释带来的实际价值。6. 程序交接与后期维护经验6.1 交付时要准备哪些资料程序写完不是终点技术交接才是关键。我每次项目结束都会整理一份程序说明文档内容包括硬件配置清单、I/O分配表、符号表打印版、程序网络注释说明、HMI操作画面清单、参数设定值汇总。这些资料里参数设定值汇总尤其重要。比如一级反渗透进水压力上限、冲洗时间、中间水箱液位开关状态、电导率报警值全部整理成一张表格。用户后面想调整水质直接改VW寄存器的预设值就行不用翻完整段梯形图。6.2 后期改造时怎么扩点双级反渗透制水系统经常在运行一段时间后增加设备比如加装一套臭氧消毒装置或者增加一台送水泵。S7-200 Smart扩展性还算宽裕有余量的话直接加数字量或模拟量扩展模块就可以。程序扩展时要注意地址不冲突尤其是V区地址新增功能要避开老程序已经占用的地址。我会把新系统的数据区统一规划到VW800以后的区域避免覆盖原有参数。更新完程序也要同步修订符号表和说明文档保持现场资料和实际程序一致。最后说一句实在话PLC程序写得再好也离不开稳定的硬件和规范的现场施工。我在实际调试中受尽了接线不规范、地线乱拉、信号线不屏蔽的苦每次排查到最后往往发现不是逻辑问题而是现场电工图省事。水处理项目是个系统工程编程逻辑只是一块拼图真正能让系统长期稳定运行的是每个环节都认真负责的态度。