1. 项目缘起与整体设计思路
污水泵站的排水控制,乍一听像是传统自动化领域里一个老生常谈的题目,但真正在一线做过现场调试的人都清楚,这东西远没有教科书上画的梯形图那么简单。我前后参与过几个不同规模的泵站改造项目,从最初继电器逻辑硬接线,到后来上小型PLC做单机控制,再到现在做多泵联锁加远程监控,每一次迭代踩的坑都不一样。这个项目标题“基于PLC的污水泵站排水联锁控制系统设计”,核心要解决的就是一件事:让多台排水泵根据集水井液位自动、有序、安全地启停,并且在泵与泵之间建立可靠的联锁关系,避免出现干转、频繁启停、溢流或者设备互相打架的情况。
先说清楚这个系统是干什么的。污水泵站通常设有一个集水井,市政管网来的污水先汇入井中,再由排水泵提升输送到下游处理厂或者下一级泵站。井里的液位是不断变化的,来水量受时段、季节、管网状况影响很大,所以泵不能一直开着,也不能等满了才开。传统做法是靠浮球开关或者电极式液位计控制单台泵,液位到了就启,低了就停。但多台泵的场合,如果各自为政,就会出现两台泵同时抢着启动、电流冲击大、或者某台泵长期不用导致锈死等问题。联锁控制要做的,就是给这些泵排好班、定好规矩。
那为什么选PLC而不是继续用继电器或者单片机?这里面的考量很实际。继电器逻辑一旦点位多了,柜内接线会变得极其复杂,改一个逻辑就要动好几根线,维护成本高,而且机械触点有寿命限制,污水站环境潮湿、有腐蚀性气体,触点氧化是家常便饭。单片机方案成本低,但抗干扰能力、防护等级、长期运行的稳定性在工业现场往往撑不住,尤其是泵站这种无人值守、电网波动大的场合。PLC的强项恰好在这里:工业级防护、丰富的I/O扩展、成熟的编程环境、故障诊断方便,而且梯形图逻辑直观,后来的运维人员哪怕不是原设计者,对着图纸也能大致看懂。所以这个项目选PLC作为核心控制器,是综合了可靠性、可维护性和成本之后的决定。
整体设计思路可以概括为“分层控制、联锁优先、轮换均衡、故障降级”。分层控制指的是把控制逻辑分成手动层、自动层和远程层,现场检修用手动,正常运行时用自动,中控室可以远程干预。联锁优先指的是任何自动逻辑都不能绕过安全联锁,比如泵的故障信号、过载信号、液位超高信号,这些一旦触发,必须无条件执行保护动作。轮换均衡是为了让多台泵的运行时长大致相当,避免一台累死、一台闲死。故障降级则是说,当某台泵或者某个传感器出问题时,系统要能自动降级运行,比如液位计坏了就切到浮球备用,而不是直接停摆。这套思路不是拍脑袋想出来的,是现场教训换来的——我见过因为没做轮换,一台泵连续运行三个月后密封失效,也见过因为联锁没做好,两台泵同时启动把进线开关顶跳的。
2. 核心硬件选型与联锁逻辑拆解
2.1 PLC及关键电气元件怎么选
PLC的选型主要看I/O点数、通讯需求和环境适应性。以一个中等规模泵站、三台排水泵为例,数字量输入大概需要:每台泵的故障信号、过载信号、手动/自动状态、运行反馈、就地/远程状态,加上液位开关信号、急停信号等,算下来DI点在20到30个。数字量输出主要是每台泵的接触器线圈、指示灯、报警输出,DO点在10到15个。模拟量输入看液位计类型,如果是4-20mA的投入式液位计,需要1到2个AI通道。这样算下来,选一个本体带24DI/16DO、再加一个4AI扩展模块的小型PLC就够了,比如常见的那几个日系或欧系品牌的中小型机型都能满足。
这里有个经验:I/O点数一定要留20%到30%的余量。我吃过亏,当初觉得算得刚刚好,结果后来甲方要求加一个格栅机联动和硫化氢检测,点数不够,只能再加一个扩展模块,柜内空间又紧张,接线返工花了两天。所以宁可一开始选大一号的CPU,也别卡着点数选。
液位计的选择是另一个关键。投入式静压液位计精度高、输出连续信号,适合做自动调节,但探头容易被污水中的杂物缠绕或堵塞。超声波液位计非接触,维护量小,但井内有蒸汽或泡沫时读数会飘。浮球开关最简单可靠,但只能给开关量,不能做连续控制。我的做法是“主用模拟量、备用开关量”:正常时用投入式液位计做连续控制,同时在井内不同高度装两到三个浮球开关作为硬联锁和备用触发。这样即使液位计坏了,浮球还能保证泵不会干转或者溢流。
接触器和热继电器按电机功率配。假设每台泵是15kW的潜污泵,额定电流约30A,接触器选40A规格,热继电器整定到额定电流的1.1到1.15倍。这里要注意,潜污泵启动电流大,如果是直接启动,接触器要能承受6到7倍的启动电流冲击,所以选型时不能只看额定电流,要看AC-3使用类别下的容量。
2.2 联锁逻辑的核心规则
联锁逻辑是这个系统的灵魂,我把它拆成几条硬规则,每条都对应现场的真实风险。
第一条,液位联锁。设四个液位点:超低液位、低液位、高液位、超高液位。超低液位时,所有泵禁止启动,已经在运行的泵要延时停机,这是防止干转烧泵。低液位时,停掉部分泵,只留一台维持。高液位时,逐台增开泵。超高液位时,所有泵全开,同时发报警。这四个点之间的差值要合理,不能太近,否则液位稍微波动就频繁启停。一般低液位和高液位之间至少留1.5到2米,高液位和超高之间留0.5米左右。
第二条,泵间轮换联锁。三台泵不能固定谁先启谁后启,要按累计运行时间排序,每次需要增开泵时,优先启动运行时间最短的那台;需要减泵时,优先停运行时间最长的那台。这样做的目的是均衡磨损。实现方法是在PLC里给每台泵建一个运行小时计数器,每次启动时累加,然后做排序比较。这个逻辑用梯形图写稍微绕一点,用结构化文本或者功能块会清爽很多。
第三条,故障联锁。任何一台泵出现故障信号(过载、缺相、漏水、超温),立即将该泵从可用泵组中剔除,并自动启动备用泵。如果故障泵正在运行,先停故障泵,再启备用泵,中间加一个1到2秒的延时,避免同时动作造成电流冲击。这里有个细节:故障信号要区分“报警”和“跳闸”。报警可以只提示不动作,跳闸必须立即停机并联锁。
第四条,启动间隔联锁。多台泵不能同时启动,否则启动电流叠加,可能顶跳上级开关。所以每台泵启动之间要设一个时间间隔,一般5到10秒。这个间隔用定时器做,前一台泵启动命令发出后,定时器开始计时,时间到了才允许下一台启动。
第五条,液位计与浮球联锁。如果模拟量液位计读数超过量程或者断线(4-20mA信号低于3.5mA或高于21mA),系统自动切换到浮球开关控制,并发出传感器故障报警。这个切换逻辑要做得干脆,不能犹豫,否则液位计坏了系统还在等它的信号,泵就不动了。
3. 实操过程与核心环节实现
3.1 控制柜布局与接线要点
控制柜的布局直接影响后期维护和散热。我的习惯是:PLC和通讯模块放在柜内上部,远离发热元件;接触器、断路器等强电元件放在中下部;变频器如果单独有柜就分开,如果必须同柜,要和PLC保持至少20厘米距离,并且变频器进出线加磁环。柜内配线槽要强弱电分开走,模拟量信号线用屏蔽双绞线,屏蔽层单端接地,接在PLC侧的接地排上。
接线时最容易出问题的是模拟量信号。投入式液位计一般是两线制4-20mA,供电和信号共用两根线。接线时要确认PLC的AI模块是 sourcing 还是 sinking,两线制液位计通常需要模块提供24V回路供电。如果接反了,要么没读数,要么读数乱跳。我一般会在接线完成后,先用万用表串在回路里量电流,看液位变化时电流是否在4-20mA之间平滑变化,确认无误再上电。
数字量输入接线要注意干接点和湿接点的区别。浮球开关、按钮、继电器触点都是干接点,需要PLC提供24V查询电源。接近开关、光电开关可能是湿接点,自带电压输出,接线时要看清NPN还是PNP。污水站现场干扰大,所有DI点建议加RC滤波或者软件滤波,PLC里设10到20毫秒的输入滤波时间,能滤掉大部分抖动。
3.2 梯形图程序框架与关键代码
程序框架我一般分成几个块:主程序块、手动控制块、自动控制块、联锁保护块、报警处理块、通讯块。主程序块负责调用其他块和做模式切换。手动模式下,操作员可以在触摸屏上单独启停每台泵,但联锁保护仍然有效。自动模式下,液位信号驱动泵组启停。
液位处理部分,先把4-20mA信号转换成工程量。假设液位计量程是0到5米,对应4-20mA,那么转换公式是:液位 = (AI原始值 - 5530) / (27648 - 5530) * 5.0,这里的5530和27648是西门子PLC 0-27648对应4-20mA的典型值,不同品牌不一样,要查手册。转换后做滤波,用一阶滞后滤波或者移动平均,滤掉液面波动造成的假信号。
泵轮换逻辑用结构化文本写起来更清楚。思路是:建一个数组存三台泵的运行小时数,每次需要启动一台泵时,在可用泵中找小时数最小的;需要停一台时,在运行泵中找小时数最大的。伪代码大概是这样:
IF need_start THEN min_index := 0; min_value := 999999; FOR i := 1 TO 3 DO IF pump_available[i] AND NOT pump_running[i] THEN IF run_hours[i] < min_value THEN min_value := run_hours[i]; min_index := i; END_IF; END_IF; END_FOR; IF min_index > 0 THEN start_pump[min_index] := TRUE; END_IF; END_IF;这段逻辑每次扫描周期都执行,但启动命令要加自锁和延时,避免重复触发。运行小时数在泵运行时每秒累加一次,或者每分钟累加一次,存到掉电保持区,防止断电丢失。
联锁保护块里,把所有硬联锁条件串起来。比如泵启动输出前面串上:急停未按下、液位未超低、该泵无故障、该泵未过载、启动间隔定时器已到。这些条件用常闭触点串联,任何一个断开,输出就断开。这种“串联安全链”的写法是电气控制的经典做法,PLC里同样适用,而且比一堆IF语句更直观。
3.3 触摸屏画面与报警设计
触摸屏是操作员和系统对话的窗口,画面设计要遵循“一眼看清、两步操作”的原则。主画面显示集水井液位柱状图、三台泵的运行状态和故障状态、当前控制模式、报警条。液位柱状图用不同颜色区分超低、低、高、超高四个区间,操作员扫一眼就知道现在是什么情况。
参数设置画面放液位设定值、启动间隔时间、轮换使能开关、通讯参数等。这些参数要加权限,普通操作员只能看,工程师才能改。我见过因为操作员误改了液位设定值导致泵频繁启停的事故,所以权限管理不能省。
报警画面要记录历史报警,带时间戳和确认功能。报警分三级:提示、警告、故障。提示类比如“液位计通讯正常”,不需要确认;警告类比如“液位高”,需要操作员确认;故障类比如“泵过载跳闸”,需要确认并且排除故障后才能复位。报警记录存到触摸屏的存储卡或者上传到上位机,方便事后分析。
3.4 现场调试步骤与参数整定
调试分三步:空载测试、带载测试、联动测试。
空载测试不接电机,只测PLC输出和接触器动作。用手动模式逐台启动,看接触器是否吸合、指示灯是否亮、触摸屏状态是否变化。然后用信号发生器模拟4-20mA液位信号,看自动模式下泵的启停顺序和轮换逻辑是否正确。这一步要把所有联锁条件都试一遍,比如模拟过载信号,看故障泵是否退出、备用泵是否启动。
带载测试接上电机,但先不进水,让泵空转几秒确认转向。潜污泵转向反了出水很小,而且容易损坏叶轮。确认转向后,开始进水,观察实际液位变化和泵的响应。这时候要整定几个关键参数:启动间隔时间、停泵延时、液位设定点回差。启动间隔我一般设5到8秒,停泵延时设10到15秒,防止液位波动导致频繁启停。液位设定点回差至少0.3米,比如高液位启动点设3.5米,停泵点设3.2米,中间0.3米就是不动作区。
联动测试是让系统连续运行至少24小时,观察轮换是否正常、故障切换是否可靠、报警是否准确。我通常会人为制造一些故障,比如拔掉一个浮球开关、断开一台泵的过载信号,看系统反应是否符合预期。这一步最能暴露问题,也最能积累经验。
4. 常见问题与排查技巧实录
4.1 液位信号跳变导致泵频繁启停
这是最常见的投诉。现象是液位明明没怎么变,泵却一会儿开一会儿停。原因通常有三个:液位计探头被杂物缠绕、信号线屏蔽没做好受干扰、液位设定点回差太小。
排查时先看液位计读数是否平滑。如果读数在触摸屏上跳来跳去,先检查探头。投入式液位计的探头膜片容易被纤维、油脂糊住,拆下来用清水冲洗,必要时用软布轻轻擦。如果探头干净但读数还跳,检查信号线是否和动力线走在一起,屏蔽层是否接地良好。可以在PLC程序里加一个移动平均滤波,取最近10个采样值的平均,能明显改善。如果还不行,把回差加大,比如从0.3米加到0.5米。
4.2 泵启动时上级开关跳闸
多台泵同时启动或者启动间隔太短,启动电流叠加超过开关整定值。解决办法:确认启动间隔时间是否足够,一般5到10秒;检查是否有两台泵同时收到启动命令,比如液位刚好卡在两个启动点之间;如果电机功率大,考虑改用软启动器或者变频器,把启动电流降到额定电流的2到3倍。
还有一种情况是单台泵启动就跳闸,那可能是电机绝缘老化、电缆短路或者接触器触点粘连。用兆欧表测电机绝缘,用万用表测电缆相间电阻,逐步排除。
4.3 轮换逻辑不生效
现象是某台泵一直运行,其他泵不动。先检查运行小时数是否在累加。如果小时数不变,可能是累加程序没执行或者掉电保持区没设对。再检查可用泵判断条件,比如故障信号是否误触发导致某台泵被剔除。我遇到过因为过载信号线接错,常闭接成常开,PLC一直认为该泵过载,所以永远不启动它。这种接线错误在调试初期很隐蔽,要对着图纸一根一根核对。
4.4 通讯中断导致远程失控
如果系统有远程通讯功能,通讯中断时本地控制必须能独立运行。我的做法是:远程控制命令和本地自动逻辑做“或”逻辑,但远程命令加一个通讯心跳检测,心跳丢失超过30秒自动切回本地。同时触摸屏上显示通讯状态,提醒操作员。通讯线建议用屏蔽双绞线,走线避开变频器输出电缆,必要时加隔离器。
4.5 常见问题速查表
| 问题现象 | 可能原因 | 排查方法 | 解决措施 |
|---|---|---|---|
| 液位读数跳变 | 探头污染、干扰、滤波不足 | 清洗探头、检查屏蔽、观察趋势 | 加滤波、加大回差、更换探头位置 |
| 泵频繁启停 | 回差太小、液位波动大 | 查看液位曲线和启停记录 | 加大回差、加停泵延时 |
| 多泵同时启动 | 启动间隔失效、逻辑错误 | 检查定时器和启动条件 | 修正定时器、加互锁 |
| 轮换不动作 | 小时数不累加、可用条件误判 | 监控小时数和故障信号 | 修正累加逻辑、核对接线 |
| 远程失控 | 通讯中断、心跳丢失 | 检查通讯状态和线路 | 加心跳检测、切本地 |
| 过载误报 | 热继电器整定偏小、接线错误 | 测实际电流、核对触点 | 重新整定、修正接线 |
4.6 几个容易被忽略的细节
第一个是泵的冷却。潜污泵靠周围水冷却,如果液位太低泵露出水面运行,电机容易过热。所以超低液位停泵的保护一定要可靠,不能只靠软件,最好再加一个独立的浮球开关直接串在接触器线圈回路里,做硬保护。
第二个是冬季防冻。北方泵站冬天液位计探头可能结冰,导致读数不变。可以在井内加伴热带,或者选用带防冻功能的液位计。如果实在没法加,至少要在程序里加一个“液位长时间不变”的报警,提醒人员去现场查看。
第三个是备用泵的定期试运行。长期不用的泵容易锈死,所以即使液位不需要,也建议每周让备用泵运行几分钟。这个功能可以在PLC里做定时测试,比如每周一凌晨自动启动备用泵运行5分钟,同时记录运行状态。
第四个是接地。污水站环境潮湿,接地不良会导致PLC误动作或者通讯异常。控制柜的接地排要单独接到接地网,接地电阻小于4欧姆。模拟量信号的屏蔽层只在PLC侧接地,现场侧悬空,防止地环流。
5. 系统扩展与个人实操体会
这套系统做完之后,其实还有很多可以扩展的方向。比如加一个无线通讯模块,把泵站数据传到中控室,操作员不用跑现场就能看到液位和泵状态。再比如加一个能耗监测,记录每台泵的电流和功率,分析效率变化,提前发现叶轮磨损或者堵塞。还可以和格栅机、输送机做联动,实现整个泵站的无人值守。
我个人在实际操作中的体会是,PLC程序写得再漂亮,现场接线不规范照样出问题。我见过太多因为一根线接错、一个屏蔽层没接好导致调试拖了好几天的案例。所以每次调试前,我都会花半天时间对着图纸把柜内接线全部核对一遍,特别是模拟量回路和联锁回路。这个时间花得值,比出了问题再回头查要省事得多。
另外,程序里的注释和图纸的更新一定要同步。我接手过一些老项目,程序里没注释,图纸和实际接线对不上,查一个故障要花几个小时。所以我自己做项目时,强制要求每改一次程序就更新注释,每改一根线就更新图纸,哪怕只是临时改动也要记录。这个习惯看起来麻烦,但长期来看省下的时间远超投入。
最后再分享一个小技巧:在PLC里留一个“调试模式”开关,打开后可以强制某些信号或者跳过某些延时,方便现场快速验证逻辑。但这个开关一定要加密码保护,并且调试完成后必须关闭,否则可能被误用导致安全事故。这个功能在紧急排查时特别好用,但管理上不能放松。