做污水泵站的项目,跟做普通工厂的设备控制真的很不一样。来水毫无规律,白天少晚上多,暴雨天直接翻倍涌进来;泵房环境又潮又脏,传感器探头隔三差五就结一层垢。所以泵站的控制系统,核心就俩字:可靠。PLC程序本身没多玄乎,真正拉开差距的,是联锁逻辑设计得严不严、现场调试时坑踩得深不深。这篇文章我以一套基于200系列PLC的污水泵站排水联锁控制系统为例,把整个设计过程、程序思路、硬件选型,还有现场调试时各种糟心事都捋一遍。这套系统管两台排水泵,带完整的联锁保护,能自动根据集水池液位启停水泵,还能故障自动切换。给刚入行搞自动化、或者准备接手水务站点项目的工程师做个参考,看完你至少能避开我在现场踩过的那几个大坑。
1. 系统功能与设计目标拆解
1.1 污水泵站到底需要什么样的控制逻辑
污水泵站跟自来水厂泵站不一样,它处理的介质是生活污水或工业废水,集水池的来水量完全不可控。白天居民用水高峰,污水哗哗往里流;半夜大家都睡了,可能一两个小时液位都不带动的。赶上雨季,雨水混入污水管网,液位可能十几分钟就从低液位飙到溢流报警位。这种工况下,如果靠人盯着液位手动开泵,效率低不说,一个走神就是污水漫溢的环保事故。
所以这套系统的第一个核心目标,就是实现排水泵的自动启停。控制依据是集水池的实时液位,液位高了自动开泵往外排,液位低了自动停泵防止空转。做到这一步,只能算“自动化”,还谈不上“联锁”。
真正要命的是设备本身的保护逻辑。污水泵有个特点:它靠水封和叶轮浸没来散热和润滑,一旦液位过低空转,几分钟就能把机械密封烧掉。反过来,液位高了不及时排,集水池漫溢,轻则淹掉电气间,重则污水倒灌进市政管网,被环保部门盯上全是麻烦。还有泵组之间的相互制约:如果两台泵同时启动,启动电流叠加会对变压器造成冲击;如果一台泵已经故障跳闸了,另一台还在傻乎乎地运行,整个泵站就没有冗余了。这些情况,都需要通过联锁逻辑来解决。
所谓联锁,简单说就是“条件不满足,动作就不允许执行”。比如泵的运行状态异常、液位信号丢失、另一台泵正在启动,这些情况下本台泵就不能启。不是写一条简单的“液位高就启动”能搞定的,要把所有可能出问题的边界条件都堵死。
1.2 联锁控制的需求整理
我接到这个项目时,先把业主的需求一条条列了下来,形成了一版需求清单。做工业控制最忌讳的就是需求没掰扯清楚就动手写程序,后面返工能让人崩溃。
这套系统的需求整理下来主要是这几条:
- 自动模式:根据集水池液位自动控制两台泵的启停,低水位停泵、高水位启泵、超高水位两台泵同时运行。
- 轮值控制:两台泵交替作为主泵运行,均衡磨损,避免某一台长期工作、另一台长期闲置。
- 故障联锁:任一泵发生故障(过载、缺相、热继电器动作等)时,自动停运故障泵并启动备用泵。
- 保护联锁:液位过低时禁止启动任何泵;液位信号异常时按安全策略动作,杜绝泵空转。
- 手自动切换:每台泵都支持就地手动、远程自动两种方式,且手动权限要优先。
- 报警功能:高液位、超高液位、泵故障、液位信号丢失等都需要声光报警。
这里有个容易被忽略的点,就是“液位信号丢失”这个联锁。污水池里的液位传感器如果在运行中突然断线或者故障,PLC读到的液位值可能变成0,那系统就会误判成“低液位”,把正在运行的泵给停了。这个逻辑如果不做信号有效性判断,后果很严重。后面我会细说这部分怎么处理。
1.3 控制层次划分
泵站控制系统一般分三层:就地手动、远程自动、中控室远程监控。
就地手动是第一优先级。检修时维修工直接在泵旁边的控制柜上按启动停止按钮,完全绕过PLC的自动逻辑,这时候就算PLC说“不许开”,手动按钮按下去了泵也得能开。当然,这不是说手动时什么保护都不要了,像热继电器跳闸这种硬保护还必须保留,那是接在接触器回路里的,不经过PLC。
远程自动是正常运行状态。PLC根据液位、故障信号、运行时间等自动决策,操作人员在现场触摸屏或中控室上位机上都能看到状态。
中控室远程监控属于附加功能,一般通过以太网和组态软件实现。它可以远程启停泵、修改液位设定值、查看历史趋势。考虑到污水泵站一般位置偏远,实际项目里我还会建议业主加一套物联网远程模块,用手机看现场报警。
2. 硬件选型与I/O规划要点
2.1 PLC选型思路
这套系统我用的是市面上非常常见的200系列小型PLC。选它的原因很简单:项目规模不大,数字量和模拟量加起来大概40多个点,200系列的CPU自带24个数字量I/O,加一个扩展模块就完全够用了。而且这个系列的指令集通用性强,梯形图编程上手快,后续维护起来备件也便宜。
CPU型号我选了带以太网口的版本,这样既能连触摸屏,又能连中控室的上位机,省掉一个通讯模块的钱。输出方式这里多说一句,控制水泵接触器这类交流负载,一定要选继电器输出型的。晶体管输出的PLC虽然响应快,但只能带直流负载,而且过载能力差,交流接触器线圈一旦短路,晶体管输出点直接烧毁。继电器输出就耐操得多,大不了触点烧坏了换一个,成本低。
泵站环境潮湿,PLC的防护也要考虑。我在设计电气柜时加了加热除湿器,PLC本体放在柜内远离电缆进线口的位置,防止凝露水珠滴到端子上。很多小泵站不重视这个,结果梅雨季一到,PLC输入端莫名其妙乱跳,查下来就是端子受潮。
2.2 传感器与执行机构选型
液位测量是这套系统最关键的感觉器官。我首选的是静压式液位变送器,就是浸入式投入液位计,原理是测传感器膜片感受到的液体静压,换算成液位。
为什么不用超声波液位计?我之前在另一个项目里吃过亏:污水池表面有浮渣和泡沫,超声波信号打到泡沫上会发生散射,测出来的液位忽高忽低,干扰严重。而且泵站进水时水面波动大,超声波的回波距离短,会有不少虚假回波。静压式的就不存在这个问题,它直接泡在液体里,测的是实实在在的静压,稳定可靠。缺点是不能干放,安装时要注意最低液位至少没过探头。
液位计信号输出选标准的4-20mA。这个信号制式在工业现场简直是生命线,原因很简单:0-20mA的0无法区分“真实0液位”和“信号断线”,而4-20mA的4就代表真实0液位,一旦信号电流小于3.6mA,基本可以判断是线路断了,便于故障诊断。变送器量程根据集水池深度选,我这座泵站池深6米,量程选0-5米,留了1米余量防止满量程溢出。
执行机构就是排水泵的交流接触器和热继电器。泵电机功率11kW,星三角启动。本来也可以选软启动器或变频器,但业主预算有限,而且泵是恒速运行,变频调速意义不大。星三角启动能降低启动电流,够用了。这里要注意,PLC输出点不能直接驱动接触器线圈,中间要经过中间继电器隔离,线圈电压选220V AC,触点容量选5A以上。PLC本身的输出点只带中间继电器,这样即使接触器线圈短路,也不会烧到PLC。
2.3 I/O点表规划
硬件设计的第一步是把I/O点表列清楚。我的习惯是先列点表,再画图纸,再写程序。点表列得越细,后面的麻烦越少。
输入信号这块,开关量输入包括每台泵的工作方式选择(自动/手动)、就地启动按钮、就地停止按钮、热继电器故障信号、泵运行反馈辅助触点,以及高液位报警灯测试等。模拟量输入有两路,一个是集水池液位4-20mA,另一个是预留的备用液位信号接口。数字量输出有两台泵的启动指令、停止指令、高液位指示灯、超高液位指示灯、蜂鸣器、故障指示灯等。
我把完整的I/O分配表放出来,供你直接参考套用:
| 地址 | 信号名称 | 信号类型 | 说明 |
|---|---|---|---|
| I0.0 | 1号泵热继电器故障 | DI | 常闭点接入,断开为故障 |
| I0.1 | 2号泵热继电器故障 | DI | 常闭点接入,断开为故障 |
| I0.2 | 1号泵运行反馈 | DI | 接触器辅助触点 |
| I0.3 | 2号泵运行反馈 | DI | 接触器辅助触点 |
| I0.4 | 1号泵控制方式 | DI | 自动/手动选择开关 |
| I0.5 | 2号泵控制方式 | DI | 自动/手动选择开关 |
| I0.6 | 1号泵就地启动按钮 | DI | 手动模式使用 |
| I0.7 | 2号泵就地启动按钮 | DI | 手动模式使用 |
| I1.0 | 1号泵就地停止按钮 | DI | 手动模式使用 |
| I1.1 | 2号泵就地停止按钮 | DI | 手动模式使用 |
| AIW0 | 集水池液位信号 | AI | 4-20mA,对应0-5m |
| AIW2 | 备用液位信号 | AI | 预留 |
| Q0.0 | 1号泵启动指令 | DO | 启动脉冲 |
| Q0.1 | 2号泵启动指令 | DO | 启动脉冲 |
| Q0.2 | 1号泵停止指令 | DO | 停止脉冲 |
| Q0.3 | 2号泵停止指令 | DO | 停止脉冲 |
| Q0.4 | 高液位报警指示 | DO | 液位≥4m |
| Q0.5 | 超高液位报警指示 | DO | 液位≥4.8m |
| Q0.6 | 故障蜂鸣器 | DO | 任一报警触发 |
这里要说明的是,故障信号为什么用常闭点接入。热继电器正常情况下是闭合的,出现过载动作后断开。如果用常开点接入,万一信号线断了,PLC会一直以为热继电器没动作,故障状态完全丢失。用常闭点的话,线路断线直接就等效成故障,这叫“故障安全型”设计。搞工业控制,故障安全是第一原则。
3. 联锁控制逻辑设计与程序实现
3.1 模拟量工程量转换
液位变送器输出4-20mA电流信号,PLC的模拟量输入模块把这4-20mA对应成数字量0-27648(这个是PLC的标准范围,16位A/D转换的结果)。要变成液位高度值,需要做一次线性变换。
算式很简单:实际液位 = 数字量读数 / 27648 × 变送器量程。我设定量程是5米,所以实际液位 = AIW0 / 27648 × 5。
但写程序的时候我建议先做滤波处理。污水池表面波动大,模拟量读数会跳,直接拿原始值去比较液位阈值,容易导致泵频繁启停。我在程序里做了一个滑动平均滤波,把最近5次的采样值做平均。这样液位信号比较平滑,泵启停的判定更稳定。滤波代价是响应变慢了一点,但对泵站这种慢变化对象来说完全无所谓。
滤波之后,还要做信号有效性判断。液位信号正常范围是4-20mA,对应数字量是0-27648。我设了上下限:数字量小于1380(大概2mA)认为断线,大于31000认为信号超限。只要液位信号无效,就触发报警,并且把液位强制置成一个安全值。安全值取多少?我的做法是强制置为高液位,也就是让系统倾向于开泵,而不是关泵。因为污水泵站最怕的是溢流,哪怕判断失误多开了会儿泵,也比液位漫出来强。这是跑现场总结出来的经验,安全策略要跟着事故等级走。
3.2 启停泵的三级液位控制逻辑
液位阈值我设了三档:停泵液位、启泵液位、报警液位。停泵液位定在1.2米,启泵液位定在2.5米,高液位报警定在4米。这里重点说一下这个区间设计的讲究。
为什么启泵液位和停泵液位不设成同一个值?如果用同一个值,液位刚好在这个值附近波动时,泵就会反复启停。三相异步电机频繁启动,启动电流是额定电流的4到7倍,对电机寿命的消耗非常大。所以我用回差控制,也叫迟滞控制,启泵和停泵之间留了1.3米的空间。液位升到2.5米才开泵,泵把水位抽到1.2米再停,这样泵的启动间隔就拉长了。做控制系统要给现场设备留点“缓冲”,这个道理跟家里的空调设定温度回差是一模一样的。
超高液位我设了4.8米,这个值一旦触发,不管自动手动,两台泵都必须同时启动。这是联锁系统里优先级最高的一条规则,专门用来应对暴雨天或者泵故障时的极端状况。
备用泵的启动逻辑稍微复杂一点。自动模式下,轮值逻辑决定了当前主泵是哪一台。主泵启动后运行一段时间,液位还是降不下来,说明单台泵的排水能力不够,这时候就要把另一台备用泵也启动起来,实现“双泵联合排水”。什么时候判断为“降不下来”?我用的方法是:主泵启动运行时间超过3分钟,且液位下降幅度小于0.3米,就认为排水能力不足,启动备用泵。为什么要看下降幅度而不是看绝对液位?因为如果赶上大雨持续进流,液位可能还在高位徘徊,但泵其实已经在全力排水了,这时候只看绝对液位会误判。用“液位下降速率”来做判断依据更合理。
3.3 泵组轮值逻辑实现
两台泵,一用一备。如果不做轮值,始终是1号泵在跑,2号泵躺着,用不了多久1号泵的机械密封就磨损了。所以我加了轮值逻辑:每次主泵完成一次“启动-停止”循环后,轮值信号翻转一次,下一次启动就换另一台泵当主泵。
程序实现上有几个细节要注意。轮值状态标志位要选掉电保持型的存储区,否则PLC一停电,轮值状态就丢了,又变成固定的1号泵优先。这个虽然是小问题,但现场维护时很烦人,业主会觉得系统“不稳定”。用保持型存储区只需要在系统块配置里把该区域设置成断电保持就行了。
故障状态下的轮值要优先于常规轮值。如果主泵故障跳闸,备用泵应该立即自动投入,这时候不管轮值不轮值了,先把故障泵顶替掉。等故障泵恢复并且故障复位后,轮值逻辑要重新初始化,让当前运行泵继续当主泵,故障泵转备用。这样做的目的是避免故障一恢复,系统马上又切回故障泵,引起不必要的启停。
还有一个关键联锁:两台泵不允许同时启动。星三角启动的启动过程大概10秒,如果在同一时刻两台泵都发启动指令,电流冲击叠加,变压器可能直接保护跳闸。所以我在启动指令前加了一个互锁:当检测到有泵处在启动过程中时,另一台泵的启动指令被暂时屏蔽,延时15秒后再允许。这个叫“启动互锁”,虽然简单,但在多泵站项目里是必备的。
3.4 手动自动切换与联锁保留策略
每台泵的控制方式有个就地选择开关。打到手动位置时,就地启动停止按钮直接控制接触器,不需要经过PLC。这是检修时的硬性需求,PLC坏掉了泵也要能开起来。
但手动模式下,PLC也不是完全撒手不管。这里有几种做法,级别从低到高:第一,硬保护回路。热继电器、热继电器的常闭触点直接串联在接触器控制回路中,任何模式下都有效,这个不依赖PLC,断了电也在起作用。第二,逻辑保护。即使开关在手动档,PLC如果检测到超高液位,输出Q0.4尝试把泵强切掉。这里我说“尝试”,是因为手动模式下外部按钮已经绕过PLC了,PLC想停泵只能靠急停回路来实现。我在设计时把手动模式的急停回路串了一个PLC的常闭触点,平时是通的,一旦PLC判断需要急停,就断开这个触点,强制切断接触器回路。这套回路保留了最终的控制权,又不影响平时的正常手动操作。
自动模式下的逻辑全部由PLC处理,就地和远程软按钮实际上只是把启动请求发给PLC内部逻辑,真正执行还是要过联锁条件。远程软按钮的好处是可以在中控室操作,不用跑到泵房,省了腿。但要注意安全,如果中控室和现场通讯中断,要确保PLC继续按自动逻辑执行,不能因为通讯丢失去停泵。我的做法是:通讯中断时,远程按钮失效,但不能影响PLC内部自动控制逻辑的执行。
3.5 报警与故障处理逻辑
报警这块,我分了三类:预警(高液位)、报警(超高液位/泵故障)、打扰(断线/信号超限)。预警处理方式是输出点Q0.4点亮高液位指示灯,不响蜂鸣器,提醒运行人员注意但别过分打扰。报警处理方式是Q0.5点亮超高液位灯,同时Q0.6驱动蜂鸣器,提醒现场人员立即查看。断线报警则是任何模拟量信号异常时点亮故障指示灯。
故障处理有一个关键点就是“锁存和复位”。泵一旦故障停机,即使故障源恢复了(比如热继电器自动复位),泵也不能自己重启。必须由运行人员按下故障复位按钮,才会清除故障记忆,恢复正常控制。这个逻辑非常重要,否则会出现泵反复故障、反复重启、反复损伤的情况。实现方法是在程序里用置位指令锁存故障标志,复位按钮用上升沿去复位。
蜂鸣器报警要有一个消音按钮,按一下消音,但如果后续又出现新的报警,蜂鸣器要能重新响起来。做法是做个报警状态变化的检测,有新的报警事件产生时,重新置位蜂鸣器输出。
4. 现场调试方法与踩坑实录
4.1 上电前的检查与I/O回路测试
程序下装前,别急着上电,先把I/O回路一根根对清楚。我用的是笨办法但也最可靠:在PLC端把24V电源断开,拿万用表二极管档,在PLC输入端子排上一根一根测量到接线端子的通断。这样能把从现场仪表、控制柜到PLC端子排的完整链路都验证一遍。
尤其是热继电器和接触器辅助触点这些关键的反馈,不仅要测通断,还要测一下动作时能不能可靠切换。有一次我在项目里发现,一个接触器的辅助触点老化,动作时接触电阻不稳定,万用表测是通的,但实际通过电流时电压降太大,导致PLC输入端始终读不到信号。这种隐蔽问题,最好在通电后,直接监控PLC的输入状态,然后去现场拨动按钮或者顶一下继电器,看输入是否立即变化。逐个点做,虽然枯燥,但能省掉后面联调时大量排查时间。
4.2 模拟量通道标定
模拟量通道调试是重头戏。我先用信号发生器给液位计的AIW通道输入4mA、12mA、20mA三个标准信号,观察PLC转换后的工程量数值是否分别对应0米、2.5米、5米。如果数值有偏差,说明模块的量程配置和程序里的转换系数不匹配,需要修正。
批完标准信号后,再做一次断线检测验证。把信号发生器的输出线拔掉,看程序是否触发了液位断线报警、液位值是否变成我设定的安全值(4米),同时看系统是否执行了保护动作。这些“非正常工况”的测试,其实比正常工况的测试更重要,因为真正出事的场景都是异常工况。
现场投运前,我还要做一次用真实液位的测试。把液位计放进集水池,通过临时加水泵改变水池液位,模拟水位上升过程中各个液位阈值的动作点。这时候你会直观地看到液位波动对滤波的影响,也能发现液位计量程校准的是否准确。这里提醒一下,液位计在安装前一定要做一次零点和满量程校准,安装位置避开进水口的水流冲击区,保证测量稳定。
4.3 联锁逻辑的动作验证
通电测试后,我把程序切到自动模式,先做空载逻辑测试,也就是把泵的接触器主回路断开,仅测试控制逻辑。这时候我可以通过监控软件里的变量表,直接手动修改液位值来模拟各种液位工况。
我建立了一个测试清单,每项都一一验证:
- 液位从0升到2.5米,验证主泵启动指令是否发出。
- 液位升到4米,验证高液位报警。
- 液位升到4.8米,验证超高液位报警和备用泵强制启动。
- 主泵故障置位,验证备用泵是否自动投入。
- 液位降到1.2米,验证停泵指令。
- 运行中突然模拟信号断线,验证液位安全值和保护动作。
- 两台泵同时手动启动,验证启动互锁逻辑是否延迟了其中一台。
这些测试全部通过后,才允许带泵负载试验。带泵试验要分两次:先启动单泵测试,再测试双泵联排。整个过程中我要在泵旁边观察启动声音和电流表指针,确认启动过程平稳。如果启动时出现过流,就要检查是不是星三角切换时间设置不合理。这个时间跟电机功率和负载特性有关,不能照抄标准值,要根据实际电流表读数微调。
4.4 现场踩过的几个典型坑
这个项目调试下来,有几个问题我印象特别深。
第一个是液位计探头结垢问题。投运两周后,业主打电话说系统误报警,泵频频乱启动。我过去一看,液位计探头表面结了厚厚一层淤泥和油脂,相当于给膜片糊了一层膜,受力响应不准确,读数比实际液位偏高。从那以后我每逢污水站项目,都会配两台液位计交替清洗,或者在控制逻辑里加一个“定期低液位反冲洗”的辅助功能,用水泵排水后形成的水流清洗探头。传感器装多了靠不住,关键在于维护策略。
第二个是变频器干扰导致模拟量波动。泵站里除了这台星三角启动的排水泵,旁边还有一台变频器驱动的回用水泵。变频器启动时,液位计信号在控制室里读到明显波动。排查下来是变频器和液位计信号线在同一根桥架里平行敷设,干扰耦合过来了。处理办法很简单:把液位计信号线从桥架里抽出来,单独穿管,屏蔽层单端接地。信号干扰的罪魁祸首往往是布线不规范,不要一上来就怀疑PLC抗干扰能力。
第三个是两台泵同时启动的电流冲击。设计时虽然做了启动互锁,但在一次模拟暴雨的急排水测试中,触发逻辑有点bug,在第一台泵启动的瞬间,因为程序扫描周期的原因,第二台泵的启动指令也过来了,互锁没拦住。后来我把互锁从软件逻辑里又加了一层硬接线:两台泵接触器的常闭触点互相串联在对方启动回路里。这种“电气互锁”响应速度是毫秒级的,比PLC扫描周期快得多,是双泵联锁系统的保底措施。
5. 常见故障排查速查表
调试和后期维护过程中,我整理了一张故障排查表,针对泵站控制系统最常见的几类问题可以直接对着查:
| 故障现象 | 可能原因 | 排查方法与处理措施 |
|---|---|---|
| 泵不启动,液位已超过启泵液位 | 液位信号异常被强制为安全值 | 检查液位计电流信号是否正常,万用表测4-20mA回路 |
| 泵频繁启停 | 液位回差设置过小 | 检查启泵/停泵液位差值,污水池至少设1米以上回差 |
| 泵启动后不反馈 | PLC输入点损坏或线路松动 | 检查接线端子、输入模块指示灯,用短接法测试输入点 |
| 泵在自动模式无法启动,手动正常 | 联锁条件未满足或轮值逻辑卡死 | 在线监控各联锁条件变量,检查轮值状态标志 |
| 模拟量读数大幅波动 | 线路受变频器干扰或液位计故障 | 检查信号线屏蔽接地、是否与动力电缆同桥架 |
| 热继电器频繁动作 | 泵负载异常或叶轮堵塞 | 检查泵电流、清理叶轮杂物、检查出口阀门开度 |
| 液位信号断线未报警 | 断线检测程序设计遗漏 | 检查液位信号是否低于4mA下限,PLC量程配置 |
| 两台泵同时启动 | 启动互锁逻辑失效或未加硬接线互锁 | 检查PLC程序互锁位,确认接触器辅助触点互锁接线 |
| 故障复位后泵仍然不启动 | 故障锁存未清除 | 检查复位按钮和复位逻辑,确认故障标志已清零 |
| 触摸屏通讯中断 | 通信线接触不良或PLC以太网异常 | 检查网线、交换机状态,Ping PLC IP地址 |
现场排障我有三板斧,能解决80%的控制系统疑难杂症:第一斧,直接看PLC模块上的指示灯,输入输出状态一目了然,哪个点该亮不亮、该灭不灭,问题基本锁定在回路层面。第二斧,万用表测电压,输入侧测DC24V是否到位,输出侧测触点是否导通,这能快速区分是传感器坏了、接线断了还是PLC本体出问题。第三斧,在线监控程序,看内部变量、中间状态、当前液位值,把逻辑链路一条条捋下来,直到找到哪个条件把动作卡住了。这三条做完还查不到的,大概率是偶发性干扰,那就得加趋势记录慢慢观察了。
回到这套系统上来,其实PLC程序本身并不复杂,花两三天就能写完。真正让项目做扎实的,是那些现场看不见的细节:常闭点接入的故障信号、液位信号的断线保护、泵组的电气互锁、轮值状态的掉电保持。搞污水泵站控制,要始终记着一句话:现场工况永远比程序逻辑更复杂。你把所有能想到的异常都堵住了,系统才能让业主省心。后来做类似项目时,我都会把这套联锁逻辑模板直接拿过来改改参数就用,干这行,攒的就是这些能复用的经验。