ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

PLC+多台变频器恒压供水:Modbus通信与多泵协调控制实战

PLC+多台变频器恒压供水:Modbus通信与多泵协调控制实战

1. 恒压供水到底在控制什么:不只是一台泵转起来

恒压供水这个项目,我做过的次数两只手数不过来,但每次拿到需求还是会认真把控制逻辑从头理一遍。你给的这个标题其实非常典型——"多台变频器,一台、两台、三台都可以,变频器和PLC用Modbus通信"。这背后通常不是某个单一泵房的需求,而是设备厂商或供水工程公司在做标准化产品:同一个控制柜,既能卖到只带一台泵的小泵房,也能覆盖三台泵的小区泵站。硬件可以按标配加扩展,但程序和控制逻辑必须是一套通用的。

很多人一听到恒压供水,第一反应是"水泵能变频不就行了"。但真正到了现场你会发现,难点从来不在变频器本身,而在"用户的用水量永远在变,而你要让管网压力保持不动"这件事上。白天高峰和夜间低谷的用水量可能差出几十倍,如果只有一台泵,变频调速范围是有限的,晚上小流量时泵可能在极低频率下运行,效率低、电机发热,甚至触发过温保护。而多泵系统要解决的问题,就是让投入运行的泵数量和当前用水量匹配。

1.1 用水的"变"和压力的"恒"之间的矛盾

恒压供水的闭环逻辑很简单:压力传感器装在出水母管或最不利点,把4-20mA或0-10V信号送给PLC,PLC做PID运算得出一个频率给定,再通过Modbus写到变频器,让电机转速跟着用水量走。用户开一个龙头,压力下降,传感器信号变化,PID输出升高,变频器频率往上走,压力拉回来。这个过程每时每刻都在发生。

但这里有一个关键认知:泵不是"转速越高压力越高"这么简单。水泵有流量-扬程特性曲线,变频调速改变的是转速,转速改变后整条特性曲线会平移。同一个转速下,流量大时扬程天然下降,流量小时扬程会上升。所以单泵系统在流量变化范围很大的工况下,要么高频小流量时压力过高,要么低频时电机散热变差。多泵并联的意义就是用"泵的数量"来匹配"流量的量级",用"频率"来做量级之内的精细调节,这两件事必须分开处理。

1.2 从相似定律看为什么必须有多台泵

水泵的相似定律是理解这个问题的钥匙:流量和转速成正比,扬程和转速的平方成正比,轴功率和转速的三次方成正比。也就是说,一台泵从50Hz降到40Hz,流量掉到80%,但轴功率会掉到大约51%。这说明变频调速本身是极其节能的手段,但也暴露了一个问题——如果系统只需要10%的流量,你把一台泵调到10Hz左右才够低,这时候电机转速太低、散热风扇几乎不起作用,泵也可能已经在特性曲线的死区里"空转",效率非常差。

更合理的做法是:夜间小流量时只开一台小泵或者干脆停泵靠气压罐保压,白天高峰时两台甚至三台泵并联运行,每台泵都在40-50Hz的高效区间工作。所以"一台、两台、三台都可以"不是简单的数量堆叠,而是根据系统设计流量来决定的。一个标准化的控制柜,只要PLC程序里泵数量可配、加减泵逻辑可调,就能一套产品覆盖所有规格。

1.3 一套程序管一、二、三台泵的真正含义

说句实在话,写"三台泵的恒压控制程序"不难,难的是写一套程序,现场只改参数就能从一台切到三台。这要求程序里不能有任何写死的泵号,所有和泵相关的逻辑都要用"数组+循环"来处理。比如压力PID的输出,在一台泵时直接给1号变频器;在两台泵时要把这个输出按系数分给两台;在三台时又要按三台分配。加减泵的判断、轮泵的时间累计、故障泵的隔离,全部要基于一个"启用泵数量"的配置参数来动态执行。

我在后续章节会把这个参数化思路详细展开。先记住一个结论:好的恒压供水程序,核心不是PID写得多漂亮,而是"加减泵什么时候动作、动作之后频率怎么分配、分配之后PID怎么重新接管"这一整套时序逻辑足够健壮。

2. 硬件拓扑:三种规模的接法与选型红线

硬件拓扑决定了后面所有程序怎么写。以你标题里的场景为例,我按"每台泵配一台变频器"来理解,这是目前二次供水、楼宇恒压的主流做法,因为每台泵都能软启动,切换时冲击小,互为备用。下面把一拖一、一拖二、一拖三的接法逐个过一遍。

2.1 一拖一:基础配置与最容易踩的坑

一拖一系统是最小的闭环:PLC加一台变频器加一台水泵加一个压力传感器。PLC需要有一路模拟量输入接压力变送器,一路RS485通信口接变频器。控制逻辑上,PLC读压力、算PID、把频率给定写到变频器,同时通过Modbus控制变频器的启停。

这个配置看似简单,但有一个坑我见过很多人踩:压力传感器的供电电源和变频器的控制端子电源混用。变频器功率越大,开关器件对控制电源的干扰越明显,表现在模拟量信号上就是压力值乱跳,PID跟着乱调,频率忽高忽低。我的习惯是模拟量传感器单独用一路高质量的隔离电源,信号线用屏蔽双绞线,屏蔽层在PLC侧单端接地。

另外一个容易忽略的点是压力变送器的量程。恒压供水设定压力如果是0.5兆帕,传感器的量程最好选0-1.0兆帕而不是0-1.6兆帕。量程选大了,同样的压力变化对应的模拟量变化幅度小,分辨率变差,PID调起来会感觉"迟钝"。量程选小了又怕超量程损坏传感器。一般让正常压力落在量程的50%到70%之间最合适。

2.2 双泵系统:两台变频器还是"一拖二"切换

双泵系统有两种做法,现场经常被搞混。第一种是标题里的"两台变频器",每台泵各带一台变频器,PLC通过Modbus分别控制。第二种是只有一台变频器,通过接触器切换分别驱动两台泵。后者成本低,但切换时泵必须先停机再切换,管网压力会断档,只适用于对压力波动不敏感的场景。恒压供水这种对压力连续性要求高的场合,强烈建议用前者。

两台变频器并联工作时,各自驱动一台泵,出口通过止回阀汇流到母管。这里要注意泵出口止回阀必须可靠,否则一台泵停机时,另一台泵打过来的水会倒灌,让停机的泵反转。我遇到过止回阀卡涩导致停泵反转、机械密封损坏的案例,后来在程序里加了"停机后延时检测反转"的逻辑,发现反转立即报警,提醒维护。

电气接线上,两台变频器的进线要分别用独立断路器保护,不要共用一个大断路器再分支。这样单台变频器出故障时,检修不影响另一台泵继续供水。功率超过几十千瓦时,建议每台变频器进线前加交流电抗器,否则多台变频器并联运行时谐波会互相干扰,严重的会导致整流模块过热报警。

2.3 三台变频器的RS485总线布线细节

三台变频器加PLC,RS485总线上就有四个站。布线方式必须是手拉手的菊花链拓扑,从PLC的通信口出来,第一台变频器、第二台、第三台依次串联,不允许星形接法。星形接法在低速短距离时可能能跑,但现场电力电缆和变频器干扰一叠加,通信错误帧就上来了。

终端电阻是很多人忽略的点。RS485标准要求在总线两端各接一个120欧终端电阻,一端通常已经在PLC通信口内部或需要外部端子接入,另一端接在最后一台变频器的A/B端子之间。距离短、速率低(比如9600波特率、几十米以内)时,不接终端电阻可能也能跑,但只要距离超过二三十米或者现场干扰明显,这个电阻就是救命的。

通信线必须用屏蔽双绞线,A和B是一对绞线。屏蔽层原则上单端接地,接在PLC侧或控制柜的接地排上,不要两端都接地,否则地电位差会在屏蔽层里形成环流,反而引入干扰。我在现场见过一个案例,屏蔽层两端接地,变频器一启动通信就乱码,把一端剪断后问题消失。另外通信线在柜内走线时,要和变频器的主回路动力线分开槽道,至少保持20厘米以上距离,不要贴着变频器的进出线扎在一起。

2.4 传感器和数字量IO的准备

三泵系统的输入输出点比想象中多。每台变频器除了Modbus通信外,我建议至少预留两个硬接线信号:一个是变频器的故障输出触点,接到PLC的数字量输入,作为通信失效时的后备保护;另一个是变频器的运行状态触点或继电器输出,用于在某些逻辑场景下快速判断泵是否在转,不用等通信轮询。

压力传感器只装一个母管压力点通常不够。如果一个系统覆盖了不同的供水区域,或者泵房离最远处楼栋很远,最好在母管和远端各装一个压力点,程序里取最小值或按需切换。远端压力点和泵房压力点差得太多时,说明管网有堵塞或阀门没全开,这种问题光靠泵房压力是看不出来的。

3. Modbus通信:PLC和变频器之间到底在传什么

Modbus是恒压供水项目里PLC和变频器之间最常用的协议,原因无非是开放、简单、几乎所有变频器都支持。但"支持"和"好用"是两回事,通信参数、寄存器地址、读写时机,每一环都有讲究。

3.1 通信参数:站号、波特率、校验位缺一不可

Modbus RTU在RS485上跑,物理层定了之后,通信参数必须全部一致。最常见的组合是9600波特率、8数据位、1停止位、无校验,也有很多变频器出厂默认是8E1(偶校验)。PLC侧和变频器侧任何一个参数不一致,通信就完全不通,而且不会有任何提示,只能一个一个去核对。

站号分配是另一个容易出错的地方。变频器默认站号通常是1,如果三台变频器都不改站号,总线上的通信会互相冲突,表现为时而能读到数据、时而超时。站号范围是1到247,建议在变频器面板上预先设好:1号泵、2号泵、3号泵分别设1、2、3,并在柜门上贴一张纸记录每台变频器地址和对应泵号。不要依赖记忆,调试时你永远不会记得哪台设成了几。

还有一个细节:变频器通信参数的生效方式。有的变频器修改站号和波特率后需要断电重启才生效,有的在通信参数菜单里有个"确认"操作。批量设置时,我习惯先把三台变频器都断电,然后一台一台单独上电设置,避免同时上电时默认同站号互相干扰。

3.2 寄存器地图:每台变频器的手册都不一样

Modbus说到底是读写寄存器,但"频率给定存在哪个地址"这事情,每个品牌甚至同一品牌不同系列都可能不同。以常见的某国产变频器为例,控制命令字可能映射到地址2000H,频率给定在2001H,运行状态在2002H,输出频率在2003H;而换个品牌可能就是40001、40002这样的PLC视角地址。

这里必须强调一个让新手头痛的差异:变频器手册里写的是十六进制地址还是Modbus报文地址。有时候手册写"频率给定地址为0x2000",但实际写寄存器时要用40001逻辑地址或把0x2000换算成十进制再按功能码规则偏移。最稳妥的办法是找变频器的"Modbus通信应用篇",里面会给出明确的寄存器列表和功能码说明,照着填就行,不要凭经验猜。

功能码也要分清:读保持寄存器用03,写单个保持寄存器用06,写多个保持寄存器用16(0x10)。频率给定这种单寄存器用06就够了,如果变频器支持一次写多个相邻寄存器,把控制字和频率一起用16写会更高效,但前提是这两个地址连续、且变频器手册明确说明支持批量写。

3.3 PLC读写程序的通用骨架

PLC侧程序的核心逻辑不复杂:每个控制周期内,把PID运算出的频率值写到当前运行泵的变频器频率给定寄存器,同时把运行命令写到控制字寄存器;再从每台变频器读回输出频率、输出电流、故障状态,用于显示和保护。

实际写程序时要避免一个误区:不要在一个扫描周期里把三台变频器全部读一遍,又全部写一遍。通信轮询是串行的,一个周期做太多事,总线占用率高,而且某个站响应慢会拖垮整个周期。我习惯的做法是做一个轮询调度:把"读1号状态、读2号状态、读3号状态、写当前运行泵频率"这四个任务分配到四个扫描周期轮流执行,即使通信偶尔慢一拍,也不会影响主循环。

下面给一个类ST语言的骨架,注意这是示意代码,具体寄存器地址和函数名称要按你手头PLC和变频器的说明书改。

// 假设置配置: nPumps 为启用泵数量, 由参数寄存器设定 FOR i := 1 TO nPumps DO // 写控制字: 第i台变频器运行/停止 Modbus_Write_Single( SlaveAddr[i], REG_CONTROL_WORD, CtrlWord[i] ); END_FOR // 频率给定: 只写给当前运行的主泵 IF PumpRunning[CurrentPump] THEN Modbus_Write_Single( SlaveAddr[CurrentPump], REG_FREQ_SET, FreqValue ); END_IF // 状态回读: 每周期只读一台, 轮询切换 ReadIndex := ReadIndex MOD nPumps + 1; Modbus_Read_Holding( SlaveAddr[ReadIndex], REG_STATUS, 1, StatusBuf[ReadIndex] );

通信超时要设置重试机制,不要一次没读到就认为变频器故障。通常连续3次超时才判定通信故障,并输出报警同时让该泵退出自动轮换。复位逻辑也要做:通信恢复后,要经过手动确认或自动延时才能重新投入,避免故障泵在条件不明的情况下突然参与加减泵。

3.4 通信异常的排查顺序

现场通信不通,我的排查顺序永远是固定的:先物理层,再参数层,最后程序层。

物理层用万用表量A/B两条线的对地电压和差模电压,正常空闲时A相对B大约有2到5伏的压差。量不到压差,大概率是线路断了或两个站根本没上电。线序反了(A接B、B接A)、端子虚接、屏蔽层悬空,都是高频故障点。

参数层就核对站号、波特率、校验位、停止位。这是最枯燥但最有效的一步,我见过太多"通信时好时坏"最后发现是两台变频器站号重复。

程序层则要检查PLC侧功能码是不是和变频器支持的一致,地址有没有偏移,轮询周期是否太长导致超时。实际调试中,我建议先用串口调试助手或变频器自带的上位机软件直连单台变频器,把通信先跑通,再接入PLC。这样能快速区分是变频器侧问题还是PLC侧问题,而不是两边一起猜。

4. 多泵控制逻辑:加减泵、轮泵和休眠

恒压供水程序里,真正值钱的部分是泵组管理逻辑。PID在单泵系统里已经足够成熟,但多泵系统里"什么时候加一台泵、什么时候减一台、加减之后频率怎么重新分配",这套逻辑写不好,系统就会频繁振荡、压力忽高忽低,或者某台泵磨损严重。

4.1 PID放PLC还是变频器

很多变频器内置了PID,可以直接接压力传感器做恒压控制,省掉PLC。但这个方案在多泵场景下有先天缺陷:内置PID只能控制本机水泵,无法协调多台泵的加减和轮换。如果三台泵各自独立做PID,它们会互相抢流量,压力振荡非常难看。

因此,在多台变频器加PLC的架构里,PID应放在PLC中完成。PLC读压力、算PID、把输出转化为频率给定,再通过Modbus写到各台泵的变频器。变频器只做执行机构,它的PID功能屏蔽掉,工作在外部给定模式。这样加减泵、轮泵、休眠这些逻辑和PID在同一个程序里联动,整体行为可控。

4.2 加泵、减泵的判定与时序

加泵和减泵不能看瞬时值,必须加延时和滞环。我常用的判定逻辑如下表所示,实际参数按系统大小调整:

动作判定条件典型延时说明
加泵PID输出持续大于48Hz15-30秒说明单台已到出力极限,压力仍不够
加泵当前压力持续低于设定值3%以上15-30秒防止PID输出未到上限但压力持续偏低
减泵PID输出持续小于30Hz30-60秒说明当前泵数量过多,最低转速仍能维持压力
减泵当前压力持续高于设定值5%以上30-60秒防止多泵低速运行效率过低

这里的关键是"先加后减、先启后停"的时序。加泵时,新泵要先用变频软启动,频率从0或从PID输出的一半左右开始爬升,等到压力传感器确认压力没有继续下跌,再把主泵频率逐步降低,让两台泵平分流量。这个过程至少要给新泵10到20秒的启动时间,不要一启动就直接拉到目标频率。

加泵后频率怎么分配是个容易算错的地方。假设当前一台泵在48Hz运行,PID输出对应48Hz,现在加第二台泵。如果你让两台泵都运行在48Hz,总流量会过冲,压力飙升。正确的做法是把两台泵的目标频率都降到大约24到28Hz,让后一台泵继续升、前一台泵继续降,直到两者都在PID输出对应的"单位泵频率"附近稳定。多泵系统里,PID的输出换算成单泵频率时要做除法:两台泵就除以2,三台泵就除以3。

减泵逻辑则相反:先停止一台泵,让剩余泵在允许范围内升频补偿。但要注意减泵延时一定要比加泵延时更长,因为停一台泵对压力的冲击比加一台泵更大。如果减泵太激进,会出现加加减减的循环振荡,系统始终稳定不下来。

4.3 轮泵:让每一台泵都"雨露均沾"

多泵恒压最容易被忽视的是轮泵机制。如果不做轮换,1号泵永远是主泵,运行时间最长,磨损最快;其他泵只有在高峰时才偶尔启动。等1号泵故障了,2号泵顶上,系统往往才发现3号泵长期不用已经锈死或电气触点氧化。

轮泵的基本逻辑是累计每台泵的运行时间,每隔一个设定的周期(比如24小时或72小时)切换主泵顺序。切换动作要平稳:先把下一台泵变频启动到当前压力对应的频率附近,确认压力稳定,再停掉前一台泵。这个过程和加泵类似,本质上是"无缝倒换"。

轮泵还有一个作用:故障隔离。如果某台泵通信故障或变频器报警,程序里要自动把这一台从轮换序列里摘除,系统只管理剩余的泵。等故障解除,再手动或自动重新投入。我的经验是,轮换序列用数组存储泵号,程序每次从数组里取泵,比用固定泵号加一堆判断语句要清晰得多。

4.4 小流量休眠:节能的最后一块拼图

夜间用水量很低时,即使一台泵在最低频率运行,也可能压力偏高、浪费电能。此时需要休眠功能:当单台泵已经在最低频率(比如20到25Hz)且压力超过设定值时,持续一段时间后停泵,依靠气压罐或高位水箱维持管网压力。当压力下降到唤醒设定值,再自动启动泵。

休眠和唤醒的判定必须可靠。我见过因为休眠逻辑过于敏感,泵一晚上启停几十次的情况,接触器和电机都受不了。休眠延时建议至少3到5分钟,唤醒压力设定值和正常设定值之间保留适当压差,例如正常设定0.4兆帕,休眠压力设为0.42兆帕,唤醒压力设为0.35兆帕。这个压差能保证泵一旦启动,至少在正常频率区间运行一段时间,而不是刚停又被唤醒。

还要注意:没有气压罐或高位水箱的系统,不能盲目启用休眠。没有储压装置时,停泵就意味着脱开管网,一开龙头压力瞬间掉光。这种情况下,最低频率保护比休眠更重要,宁可让泵低速运行也不能停。

5. PID整定:恒压系统为什么老在振荡

PID参数是恒压供水系统里最玄学也最实际的一环。程序逻辑写得再好,PID参数不对,系统要么反应迟钝压力波动大,要么高频振荡啸叫。我调过的系统多了,总结出一条铁律:先确认系统"干净",再谈调参。

5.1 动手调参前先确认三件事

第一,压力反馈是否稳定。把变频器频率固定在一个值,观察压力变送器输出,如果压力值本身就在跳,那问题出在传感器、电源或信号线,而不是PID。第二,频率给定回路是否可靠。在程序里直接写一个固定频率给变频器,看压力是否跟着有响应,确认Modbus通信没有丢字、变频器没有限流或跳频。第三,确认管道系统没有憋压或漏气。管网里有空气时,压力波动会出现奇怪的滞后,这时候调PID怎么调都调不好。

这三件事任何一件有问题,PID整定都是空中楼阁。我见过一个项目,现场调了两天参数,压力始终低频振荡,最后发现是压力传感器取压管里有一段空气柱,排掉空气后系统立刻稳定。

5.2 现场整定的具体操作路径

整定PID我不用复杂的自动整定工具,现场用手动步骤就足够,而且效果好。

第一步,把积分项和微分项全部设为0,只保留比例项。给一个较小的比例增益,比如1到2,观察系统阶跃响应。如果压力最终离设定值有静差,不用管,这是纯比例控制的正常现象。第二步,逐步增大比例增益,直到压力出现持续等幅振荡。记录下此时的临界增益和振荡周期。第三步,根据经验公式取一个比临界增益小一半左右的增益,加上积分时间。恒压供水系统的积分时间通常取振荡周期的1.5到2倍,大约在5到30秒之间。

一个具体的例子:某三泵恒压项目,设定压力0.5兆帕,压力传感器量程0到1.0兆帕,PLC控制周期200毫秒。临界增益大约是4,振荡周期约12秒。我最终取比例增益2.0,积分时间18秒,微分设为0。投入运行后压力波动范围在0.48到0.52兆帕之间,加减泵时不振荡,效果稳定。

恒压供水一般不建议用微分。压力变送器信号本身有脉动,微分项会放大高频噪声,让变频器频率跟着抖,反而加剧压力波动。多泵并联时尤其如此。如果系统需要抑制超调,优先考虑积分分离或输出限幅,而不是加微分。

5.3 采样周期与滤波的取舍

PLC做PID的采样周期不必追求快。恒压供水的响应速度以秒级计,采样周期定在100到500毫秒就足够。采样太快反而容易把管道中的水锤脉动和传感器噪声带进来,让输出抖动。

压力信号滤波是必须的,但滤波强度要克制。我常用移动平均,窗口取5到10个采样点。滤波太强会让PID看到的压力变化滞后太多,导致系统反应迟钝;滤波太弱则压力值毛刺多,PID输出不稳。一个判断标准:滤波后的压力曲线在稳态时波动不超过设定值的0.5%即可。

另外,PID输出要做限幅处理。恒压供水时,频率给定的下限要高于变频器的最低允许频率,一般设为25到30Hz,防止泵在极低速下空转或过热;上限设置为48到50Hz,留出一点余量让变频器在加减泵时仍然有调节空间。

6. 调试记录:四个真实问题和你该有的排查思路

最后分享几个我在现场真实遇到过的故障,每个都花了不少时间排查,把这些经验写下来,能帮你少走很多弯路。

6.1 通信偶发掉线,先查地再查屏蔽

某项目三台变频器,白天空载时通信一切正常,下午主机一启动,PLC频繁报通信超时。一开始怀疑是变频器参数问题,反复核对无果。后来用示波器抓RS485的波形,发现变频器启动瞬间A/B线上的共模电压尖峰非常高。

问题的根源有两个:一是通信线屏蔽层两端都接了地,地电位差在屏蔽层里形成了环流,环流感应到信号线上就成了干扰;二是通信线在柜内和变频器动力线走在同一个线槽里,距离太近。处理方法是把屏蔽层改为PLC侧单端接地,通信线从动力线旁边移走,单独走一个槽,同时在变频器的输出端加磁环。处理后通信再没掉过线。

这个案例说明一个道理:RS485通信出问题,特别是变频器启动就出问题,绝大多数不是Modbus参数的问题,而是物理层干扰。先解决干扰,再怀疑程序。

6.2 加泵瞬间压力跳水

还有一个项目,加泵逻辑触发后,压力从0.45兆帕一下子掉到0.25兆帕,整个系统像被"放气"一样。排查发现,控制逻辑里新泵启动时,变频器频率是先从0Hz开始爬升的,爬升期间新泵出口的止回阀还没有打开,但泵却在往管道里打水,消耗了流量,更糟的是,新泵启动瞬间工频接触器先吸合了一下,造成瞬时抢水。

正确的加泵顺序应该是:新泵的变频器先输出一个基础频率(不低于运行泵当前频率的一半),让泵建立转速和压头,然后再打开出口阀或让泵自行顶开止回阀,确认压力稳住后,再平滑降频让两台泵平分负荷。本质上,加泵过程要模仿"先建压、后并网"的思路,而不是直接把一台冷泵扔进管网。

6.3 第二台泵启动就过流报警

新装的三泵系统,1号泵运行正常,2号泵一启动变频器就报过流。检查发现变频器升速时间用的是出厂默认值5秒。启动时出口压力已经是0.5兆帕,低速泵要在高压管道里启动,负载扭矩很大,5秒升到额定转速根本带不动。

解决方法是把2号、3号泵的升速时间单独设为20到30秒,并且启动曲线选S型,让启动过程更柔和。同时,程序里加泵时的初始频率不要再从0开始,而是从当前运行泵频率的一半开始爬升,这样泵启动时压头更接近管网压力,冲击电流会明显减小。

6.4 用参数化设计让一套程序适配1/2/3台泵

最后回到标题的核心:一台、两台、三台变频器都可以。我是怎么实现的?

在PLC内部数据块里定义一个配置参数,存"启用泵数量"。所有泵相关的逻辑,从读压力、算PID到给每台泵发频率和启停命令,全部用循环遍历数组的方式实现。数组的下标对应泵号,运行时间、故障标志、通信状态都挂在数组元素上。上电后,程序先按配置参数扫描所有已启用的泵,通过Modbus读每台的设备标识或状态寄存器,读不到就标记为通信故障并退出轮换。

有了这套参数化设计,现场调试时只需要三件事:设好启用泵数量、核对每台泵的站号、设定加减泵和轮泵参数。程序一个字都不用改。我做过最小的系统只有一台泵,最大的系统六台泵(两套三泵并联),共用同一套程序,只是配置参数不同。

这套思路的价值在于,它把"开发"和"调试"彻底分开了。开发阶段把逻辑做完整、做健壮,现场阶段要做的事只是输入参数。对于做标准化产品的团队来说,这才是真的省时间。

做恒压供水这些年,我最大的体会是:变频器和Modbus只是工具,真正考验人的是多泵之间的协调逻辑和现场调试的耐心。硬件选型可以照着手册来,程序逻辑可以反复测试,但现场那些通信干扰、压力跳水、启动过流的问题,每一个都要靠积累才能快速定位。希望这篇实战笔记能帮你把基础打牢,少走几步弯路。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进