
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里留一个“调试模式”开关打开后可以强制某些信号或者跳过某些延时方便现场快速验证逻辑。但这个开关一定要加密码保护并且调试完成后必须关闭否则可能被误用导致安全事故。这个功能在紧急排查时特别好用但管理上不能放松。