做恒压供水这套东西,我前前后后也做过七八个项目了,从最开始的S7-200 SMART到后来的S7-1200/1500,从一拖一到三用一备都碰过。西门子、变频器、压力变送器、触摸屏,这套组合在供水行业太常见了,但越常见的系统,越容易在细节上翻车。很多刚入行的朋友一上来就问"恒压供水PLC程序怎么写",我的回答通常是:程序本身不难,难的是你写出来的程序在现场能不能稳定运行、泵切换会不会振荡、信号干扰会不会让PID发疯。这篇我就把一套完整的恒压供水PLC程序逻辑拆开来讲,代码直接贴出来给你参考,同时把调试过程中真正容易踩的坑也一并说了,适合正在做二次供水、小区加压、厂区恒压供水的工程师和刚接触PLC项目的新手。
1. 恒压供水不是什么黑科技,但大部分失败项目都栽在细节上
1.1 为什么要恒压,单泵工频供水的痛点
我接过不少用户的电话,都是同一类描述:家里或者厂里的水压忽大忽小,洗澡的时候水温跟着变,车间一楼水压刚好,三楼却出不来水。传统做法是水泵直接接工频电源,水塔或者高位水箱补水,这种方式不是不行,问题在于用水峰谷差太大的场合,工频泵一直全速转,不用水的时候压力一路往上顶,管道被冲得"砰砰"响,用水量一上来压力又掉得厉害。恒压供水做的就是一件事:把出口母管压力稳定在一个设定值,不管用水量怎么变,变频器通过调节泵的转速把压力压住,该快就快、该慢就慢,本质就是一个典型的闭环控制系统。
这里有个关键认知要建立:恒压供水的核心不是一台水泵,而是一套"压力检测—控制器—变频器—水泵"的闭环链路。压力变送器把出水管压力读回来,PLC内部跑着PID或者类似算法,输出一个0~100%的频率给定给变频器。PID输出大,泵跑得快,压力往上顶;用水量增加导致压力掉下去,PID输出自动加上来。整个过程每隔几十毫秒就循环一遍,所以稳态压力波动能被控制在很小的范围内。反过来说,如果你只是把泵启停和变频器简单拼在一起,不把反馈和调节关系理清楚,那就算PLC程序写得再花哨,现场也稳不住。
1.2 一套完整系统由哪些部件组成
一个标准的恒压供水项目,机柜里大概包含这几样东西:水泵(一般2~4台,含备用)、变频器(一拖多或者每泵配一台)、压力变送器(1~2路,装在出水管上)、PLC(西门子S7-200 SMART、S7-1200、S7-1500都有人用,看项目预算和规模)、触摸屏(MCGS用的很多,西门子精简面板也不少)、以及一堆电气回路上必须有的断路器、接触器、电机保护器和中间继电器。
以最常见的西门子S7-1200配合MM430或SINAMICS G120变频器举例:PLC通过模拟量输入模块读压力变送器输出的4~20mA信号,AI模块把电流换算成工程量,比如0~1.6MPa对应4~20mA。变频器的启动和停止由PLC的数字量输出控制,频率给定有两种常见方式:一种是PLC模拟量输出0~10V或者0~20mA接到变频器模拟量输入端子,另一种是走通讯,比如USS、Modbus或者是PROFINET。这几年我做项目更倾向于走通讯给定频率,因为模拟量通道需要做校准,电压漂移也让人头疼,而通讯写一个字就完成给定,抗干扰能力反而更好。
1.3 控制架构:PID放变频器里还是放PLC里
这是方案阶段第一个要拍板的问题。很多人图省事,直接使用变频器内置PID功能,靠变频器内部调节器闭环,PLC只负责启停和逻辑切换。这种方案在单泵恒压、工况非常简单的场合确实可行,维护也简单。但系统一旦超过一拖一,需要泵轮换、需要备用泵自动投入、需要多泵调度,变频器内置PID的局限性就暴露了——它只能控制单台泵的转速,多泵协调、压力设定切换、休眠唤醒这些逻辑堵在一起,出了问题排查非常费劲。
我的做法很明确:只要系统超过一拖一,PID一律放PLC里做,变频器只负责接收频率给定和返回状态字。这样做还有一个额外的好处:如果压力变送器损坏,PLC能立刻从控制层感知反馈异常,可以无缝切到第二路变送器或者直接报故障停机;而PID在变频器里的话,很多时候变频器会进入振荡状态,现场看泵在忽快忽慢地转,实际是变送器已经坏了,这种隐性故障我至少处理过三次,把PID搬进PLC之后都根治了。
2. 选型和方案设计:一拖一、一拖二还是一拖三,怎么拍板
2.1 系统配置取决于用水曲线和可靠性要求
做方案前先看用水曲线,这是选泵和定配置的出发点。如果峰值流量一台泵的额定流量就能覆盖,直接一拖一,系统最简单,成本也最低。如果峰值流量明显超过单泵能力,就要考虑一拖二甚至一拖三,常见的配置有:
- 一拖一:单泵变频,无备用,适合小型换热站、家庭供水、流量波动很小的场合
- 一用一备:一台变频泵加一台备用泵(也可切换变频/工频),适合不允许长时间停水的场合
- 二用一备:平时两台泵变频运行,一台备用,适合小区二次供水、中小型厂区
- 三用一备:三台主泵加一台备用,适合大型市政加压、高楼层多分区供水
选泵的规律是:所有泵的额定流量之和,要大于最大设计秒流量,再留10%~20%的余量。很多项目一上来就选大泵,觉得流量大了用着放心,结果泵长期在低频运行,效率和散热都很差,反而是麻烦。恒压供水的理想工况是让大部分时间内泵都在工频点附近波动,而不是长期趴在20Hz低转速。如果算出来的结果单台泵就能覆盖峰值流量,那就一拖一,别硬凑一用一备。
2.2 变频器和电机配套的几个细节
变频器选型方面,大原则是变频器额定电流要大于等于电机额定电流的1.1~1.2倍。目前市场上西门子、ABB、施耐德这些一线品牌质量都稳定,就看项目预算和售后响应。有一点特别注意:变频器出线电缆超过50米时,建议加输出电抗器,否则电缆分布电容会导致电机端子过电压,长期下来绝缘受损。另外如果系统有高位水箱或者管道回灌的可能,倒灌压力会让泵反转,这种场合需要装止回阀,更严密的方案还包括制动电阻。
电机的选型是我踩过的最深的坑之一。早期做的一个项目,为了省成本用普通异步电机直连水泵,变频运行到低频段时,电机自带风扇的散热能力大幅下降,轴承温度高得离谱,不到半年烧了两台。后来全部换成带独立风机的变频电机,问题才消失。恒压供水有大量时间是低频运行,普通电机在低速时几乎没有冷却效果,这个成本不能省。
2.3 传感器选型:量程、安装位置和取压方式
压力变送器量程一般按系统最大压力的1.5~2倍选。比如正常工作压力0.6MPa,选0~1MPa量程就比较合理,既留出超压余地,读数分辨率也够。我一般建议选带现场数显的数字型变送器,调试时直接看表头就能判断传感器有没有问题,不用万用表去怼电流信号换算。
安装位置非常关键,压力变送器不能安装在泵出口很近的地方,因为泵出口流体扰动大,压力波动剧烈,反馈信号毛刺多,PID容易跟着抖。正确做法是装在出水母管上,尽量远离泵出口,取压口加一个截止阀。这个截止阀几块钱的事,但调试和检修时不用整条管泄压,省出来的麻烦远超这个阀的价格。
2.4 通讯方案:控制字和状态字的走法
做西门子方案,最舒服的是变频器支持PROFINET,PLC直接走标准报文,比如G120的标准报文1,控制字、状态字、速度给定一条网线全搞定。老项目用USS或者Modbus的也有,USS走串口,Modbus RTU也走串口,这两类方案需要设置变频器从站地址、波特率和数据格式,参数又多又琐碎。
这里提醒一点:无论走哪种通讯,变频器侧必须保证相关参数使能。Modbus的话,从站地址、波特率、数据格式只要有一个不一致就连接失败,现场半小时连不上的情况,八成是数据格式(比如8E1、8N1、8O1)没对上去。用PROFINET的话,重点看设备名称和IP地址是否和设备组态一致,名字对不上,即便IP能Ping通也连不上。
3. 程序整体架构:PID是核心,但真正练功的是泵切换
3.1 程序块怎么划分
我自己写恒压供水程序,习惯把逻辑拆成几块,而不是把代码堆成一个OC。模块划分大概是这样的:
- 泵管理块:手自动切换、启停顺序、泵轮换、故障停机
- PID计算块:输入设定压力和实际反馈,输出0~100%频率
- 报警保护块:压力超限、无水干转、变频器故障
- 休眠唤醒块:夜间小流量时自动休眠,压力掉到下限再唤醒
每个块单独调试,压力控制出问题就查PID块,泵不轮换就查泵管理块,不会像一整坨梯形图一样,动一个触点牵连一堆网络。模拟量转换建议单独建一个FC做线性换算,4~20mA断线检测也放在这里。这样写可能前期稍微费点功夫,但后期维护的人会感谢你。
3.2 手自动切换和无扰切换逻辑
手动模式不是拿来长期运行的,更像是检修模式。手动状态下,每台泵可以单独启停,PID不参与,频率给定由触摸屏上的滑杆或者手动电位器给出。自动模式下,所有泵的运行由逻辑自动调度。手自动切换要做无扰切换,否则用户一拨"自动"档,泵突然全速跑或者转速掉到零,现场直接吓一跳。
无扰切换的常见做法是:手动模式下,让PID的积分项和输出始终跟踪当前运行频率;切到自动那一瞬间,PID输出从当前值开始调整,而不是从初始零状态开始算,这样频率给定不会有突变。实际调试中发现切换跳变的,优先检查PID是否上电后一直处于初始化状态,其次看输出限幅有没有生效,这两个位置占切换问题的大头。
3.3 PID参数的经验初值和整定步骤
恒压供水这种对象,属于大惯性、存在纯滞后的过程,PID参数其实不需要上来就做精确整定。我先给一个能直接上电跑起来的经验初值:比例系数P在0.8~1.5之间,积分时间T_I在5~15秒之间,微分时间T_D基本设0或者很小(0~0.5)。实测下来,大多数小区的压力稳态波动能控制在0.02MPa以内,参数大致在这个范围。核心逻辑是:压力反馈滞后大,P不能太大,I不能太短,D基本放弃。
整定步骤我习惯先P后I。先把积分时间调到很大,让积分基本不起作用,只留比例作用,从P=0.5开始,给一个阶跃输入(比如设定压力从0.4突然提到0.5),观察压力反馈是否出现等幅振荡。如果振荡就减半P;如果反应太慢就稍微加一点P。等比例环节调得差不多,再把积分时间逐渐减小,直到稳态压力波动最小。整个过程别指望一次调好,现场至少要观察10分钟压力趋势再下结论。
4. 代码直接扒给你看:S7-1200/1500 SCL版本
4.1 为什么用SCL,主程序骨架长什么样
西门子博途环境里,恒压供水逻辑用SCL写,比梯形图更紧凑,也方便在这篇文章里直接展示。下面的代码是参考框架,变量名、通道地址要根据实际项目改,但是逻辑骨架可以直接抄。整体分四个环节:采反馈、跑PID、管泵、查故障,顺序不能乱。
// OB1 主循环(参考结构) FUNCTION "MainCycle" // 1. 模拟量输入处理:压力反馈换算 "FC_AI_READ"( AI_Channel := 64, Raw := "IW64", EngineeringHigh := 1.0, // 对应压力上限 MPa EngineeringLow := 0.0, // 对应压力下限 MPa Value => "HMI_Pressure_Actual" ); // 2. PID计算 "FB_PRESSURE_PID_Instance"( Auto := "System_Auto", Setpoint := "HMI_Pressure_Setpoint", Feedback := "HMI_Pressure_Actual", PID_Output => "PID_Output_0_100" ); // 3. 泵管理调度 "FB_PUMPS_MANAGE_Instance"( Auto := "System_Auto", Frequency_Cmd := "PID_Output_0_100", Pump1_Run := "DI_Pump1_Feedback", Pump2_Run := "DI_Pump2_Feedback", Cmd_Pump1 => "DO_Pump1", Cmd_Pump2 => "DO_Pump2", Cmd_Pump3 => "DO_Pump3" ); // 4. 报警与保护 "FB_ALARM_AND_PROTECT_Instance"( Pressure := "HMI_Pressure_Actual", DryRun := "DI_DryRun_Limit", Fault1 := "DI_VFD_Fault1", Alarm_Word => "HMI_Alarm_Word" ); END_FUNCTION主程序看起来简单,但每一个FB内部的细节才是关键。下面一个个拆开。
4.2 自写PID功能块:积分分离和输出限幅
我在这里提供一个自己写的PID块,不使用系统自带的PID_Compact。为什么这么干?因为自写的逻辑完全透明,现场调参时能清楚知道每一个参数对输出的影响,排查问题也方便,不依赖附加的工艺对象版本。缺点是采样周期需要自己维护,不能太随意。
FUNCTION_BLOCK "FB_PRESSURE_PID" VAR_INPUT Auto : BOOL; // 自动模式 Setpoint : REAL; // 设定压力 MPa Feedback : REAL; // 实际压力反馈 MPa Kp : REAL := 1.0; // 比例系数 Ti : REAL := 8.0; // 积分时间 秒 Td : REAL := 0.0; // 微分时间 秒 Out_Min : REAL := 0.0; // 输出下限 % Out_Max : REAL := 100.0; // 输出上限 % END_VAR VAR_OUTPUT PID_Output : REAL; // 频率给定 0~100% END_VAR VAR e_prev : REAL; integral : REAL; sample_sec : REAL := 0.2; // 采样周期:每0.2秒调用一次 END_VAR BEGIN // 偏差 e := Setpoint - Feedback; // 积分分离:偏差大于0.3MPa时不积分,防止大偏差下超调 IF ABS(e) < 0.3 THEN integral := integral + e * sample_sec; END_IF; // 抗积分饱和:积分项限幅,防止长时间偏差导致输出卡在极限 IF integral > 200 THEN integral := 200; END_IF; IF integral < -200 THEN integral := -200; END_IF; // PID计算:微分项用最近两个扫描周期的偏差差,此处一般置0 out_tmp := Kp * e + (Kp / Ti) * integral + Kp * Td * (e - e_prev) / sample_sec; // 输出限幅 IF out_tmp > Out_Max THEN out_tmp := Out_Max; END_IF; IF out_tmp < Out_Min THEN out_tmp := Out_Min; END_IF; PID_Output := out_tmp; e_prev := e; END使用时要根据实际CPU循环时间和调用方式调整sample_sec,如果OB的周期是50ms,那这个值就改成0.05。要是直接用系统自带的PID_Compact,建议把输出上限设为100、下限设为0,积分时间不要小于3秒,否则启动瞬间频率容易直接冲到顶。
4.3 泵切换逻辑:延时、限幅、防振荡,三件事缺一不可
泵切换是恒压供水程序里最容易写坏的部分,也是现场问题最集中的地方。逻辑上必须满足三点:第一,只有当PID输出持续达到上限(比如95%)并且延时15秒以上,才允许加泵;第二,加泵后必须保持至少一台泵参与变频调节,其余泵转工频;第三,只有PID输出持续低于下限(比如20%)并且延时30秒以上,才允许减泵。下面给两泵系统的调度参考逻辑。
FUNCTION_BLOCK "FB_PUMPS_MANAGE" VAR_INPUT Auto : BOOL; Frequency_Cmd : REAL; // 0~100% Pump1_Run : BOOL; Pump2_Run : BOOL; Pump1_Fault : BOOL; Pump2_Fault : BOOL; END_VAR VAR_OUTPUT Cmd_Pump1 : BOOL; Cmd_Pump2 : BOOL; VFD_Select : INT; // 0=无 1=1号变频 2=2号变频 END_VAR VAR acc_timer : TIME := T#0S; // 加泵计时 dec_timer : TIME := T#0S; // 减泵计时 END_VAR BEGIN // 加泵条件:频率给定>=95% 持续15秒 IF Frequency_Cmd >= 95.0 THEN acc_timer := acc_timer + T#1S; dec_timer := T#0S; ELSE acc_timer := T#0S; END_IF; IF acc_timer >= T#15S THEN IF NOT Pump2_Run AND NOT Pump2_Fault THEN Cmd_Pump2 := TRUE; // 2号泵投入运行 VFD_Select := 2; // 2号泵作为当前变频泵 END_IF; acc_timer := T#0S; END_IF; // 减泵条件:频率给定<=20% 持续30秒 IF Frequency_Cmd <= 20.0 THEN dec_timer := dec_timer + T#1S; acc_timer := T#0S; ELSE dec_timer := T#0S; END_IF; IF dec_timer >= T#30S THEN IF Pump2_Run THEN Cmd_Pump2 := FALSE; // 先停掉2号泵 VFD_Select := 1; // 1号泵恢复变频调节 END_IF; dec_timer := T#0S; END_IF; // 泵轮换逻辑(可选):根据泵运行小时数,周期性互换主泵和备泵 END这里的延时和阈值是参考值,必须根据系统管网容积、泵的大小做调整。管网越大,延时越长,否则压力还没来得及变化,系统就频加泵,随后又由于超压频减泵,来回振荡。我在现场见过最短的振荡周期是每20秒加一台、每20秒减一台,最后查下来就是加泵逻辑没有延时,同时PID参数又调得太硬。
4.4 报警和保护逻辑的几个可靠写法
除了变频器故障、电机过载这些由电气回路直接给到的报警信号外,恒压供水报警和保护还要写三类自己的逻辑:
- 低压报警:压力持续低于设定值以下一定幅度(比如0.1MPa)且持续10秒,判定为保压失败或者无水进水管
- 超压报警:压力超过设定值1.2倍且持续5秒,立即停止主泵
- 干转保护:进口液位开关或者流量开关触发,立即停泵
关键点是:报警不能只判断瞬时值,必须通过定时器加"持续"条件。原因是PID调节本身就会让压力在设定点附近波动,启动大泵瞬间还会出现暂时性的压力下降,如果不加延时,系统几乎每次加泵都会误报一次低压。所以所有报警都加3~10秒的确认时间,这是一种便宜又有效的防误报手段。
4.5 移植到S7-200 SMART的注意事项
不少老项目还在用S7-200 SMART,代码结构可以移植,但有四个坑必须提前注意:
- SMART的模拟量模块分辨率只有12位,约等于0.5%的精度,压力量程1.6MPa的话,反馈波动大约0.008MPa,对恒压供水来说够用,别指望它和S7-1500一样细腻
- SMART没有标准SCL,多数人用梯形图加整数运算,做除法前务必把整数转成实数,不然压力计算会直接截断归零
- 浮点常量在SMART里需要单独放到VD区,不能直接写在比较指令里,这是新手常犯的错
- 定时器T37/T101是100ms单位,用延时前先看清楚自己用的是10ms还是100ms,不然延时缩水十倍,加泵减泵全乱套
5. 触摸屏与通讯实战:MCGS跨网段连接S7-1500,以及一票连不上的事
5.1 MCGS与S7-1500的跨网段通讯设置
MCGS触摸屏和西门子S7-1500跨网段通讯,问的人非常多。所谓跨网段,最常见场景是触摸屏在192.168.1.2网段,PLC在192.168.2.10网段,中间隔了一个路由器。MCGS驱动直接访问PLC的IP,默认状态下跨网段是有问题的,需要在驱动配置里正确设置网关,或者使用支持S7协议的驱动版本。
我踩过的板子是这样的:MCGS屏选设备驱动时,要选"西门子S7-1200/1500"这类以太网驱动,而不是老的S7-200 PPI驱动。地址一栏填PLC的IP,端口填102。跨网段时,除了子网掩码要正确外,最容易被忽略的是PLC侧需要勾选"允许来自远程对象的通信"。在TIA Portal的CPU属性里,防护与安全→连接机制,必须勾选"允许来自远程对象的PUT/GET通信访问",不勾这个,触摸屏能Ping通PLC也连不上数据。
5.2 通讯连不上的排查链路
我把现场通讯排查的顺序固定下来,照着走基本能解决九成问题。第一步先Ping,看触摸屏能否Ping通PLC的IP,不通就查网线、IP、子网掩码、路由器。第二步查端口,S7通讯默认TCP 102端口,确认防火墙没有拦截。第三步查PLC侧机制,TIA项目里"允许来自远程对象的PUT/GET通信访问"是否勾选。第四步查组态地址,触摸屏里填的PLC IP要和CPU实际IP一致,注意是设备视图里的实际IP,不是项目树里默认的地址。第五步查驱动版本,老版本MCGS驱动对S7-1500的新加密机制支持不好,需要升级驱动。第六步查跨网段路由,不同网段必须在MCGS里配置网关,子网掩码不能错。
5.3 通讯稳定性的硬件建议
通讯稳定性的关键,很多时候根本不是协议,而是线缆和隔离。通讯线和动力线绝不能走同一根线管,24V信号线和220V动力线至少保持20厘米以上距离。如果触摸屏和PLC距离超过50米,强烈建议中间加工业交换机,不要直接串两段网线。现场最头疼的"偶尔连不上、又自己恢复"问题,九成出在网线质量差或水晶头压接不良,还有一种是拿家用路由器当工业交换机用,发热导致掉线,这个我见得太多了。
接地方面也要专门说一句。PLC和变频器如果共地,变频器的高频干扰可能通过地线窜到通讯口,引起丢包。我现在的习惯是:开关电源的0V和柜体地之间要有专门的接地排,PLC、变频器、触摸屏各自的接地端子独立引到接地排,不串在一起。这样做之后,很多奇奇怪怪的通讯丢包和模拟量波动问题都消失了。
6. 调试实测:第一次上电的大坑和一些实在的调节建议
6.1 反馈值抖动与信号线干扰
第一个容易踩的坑,是压力变送器的4~20mA信号线在柜内和变频器输出线走到了一起,或者屏蔽层接错。上电后能看到压力反馈值在正常值附近上下跳,PID跟着来回波动,泵的频率也跟着抖。处理办法是:信号线必须用屏蔽双绞线,屏蔽层单端接到柜内接地排,不能两端都接,防止地环路。线管和动力线分开走,变送器供电尽量用隔离的24V开关电源,不要和电机控制回路共用一个直流电源。
如果干扰已经存在,程序侧的缓解方法是对压力反馈做一阶惯性滤波,比如alpha取0.2~0.5:
// 一阶低通滤波 Filter := alpha * Raw_Value + (1 - alpha) * Filter_Prev;我的实际体验是,程序滤波只是堵漏,真正解决问题的还是源头治理。把线缆布局理顺之后再保留一个轻滤波,系统会稳很多。
6.2 变送器量程设置错了整半天
调试过程里最常见、最隐蔽的一个错误是:压力变送器的量程拨码或者表头设置成0~2.5MPa,但PLC组态按0~1.6MPa换算,结果触摸屏显示的压力比实际高出一大截。PID一看反馈值不对劲,频率一直往下掉,泵低速运行,实际压力又不够,现场就是一头雾水。排查方法是直接看变送器表头显示值和触摸屏显示值,对不上就直接量变送器输出电流,用PLC的原始模拟量值反算一下,很快就能定位。
我后来在项目里坚持把变送器量程设置写进触摸屏维护界面,并在柜门上挂牌写清楚,这能省掉后面所有调试人员的时间。量程不一致这个问题,至少让我在四个项目里多花了半天排查。
6.3 泵切换瞬间压力波动的处理
切换瞬间压力波动,要么是因为减泵太慢导致压力瞬间冲高,要么是加泵后PID输出仍然是满频,新泵一启动就冲到50Hz,压力急剧上升。我后来形成的标准做法是:加泵后让变频泵的输出频率先保持当前值运行2~3秒,再交给PID连续调节,给系统一个缓冲;减泵前先把变频泵的频率给定降到20%~30%左右,再停掉工频泵,这样停泵瞬间的高压水锤就会小很多。出口母管上建议加装缓闭式止回阀,对水锤有明显的抑制作用。
6.4 变频器故障复位后泵一直跳
变频器故障复位后泵跳个不停,这个问题很多时候不是变频器真故障,而是启停控制回路在复位瞬间存在抖动。西门子G120的DO运行状态在变频器复位过程中会产生不确定值,PLC如果直接判断"故障信号消失就允许启动",就可能出现启动命令始终保持着,变频器刚复位又收到启动命令,形成恶性循环。
我的做法是:故障复位后加2~5秒的封锁时间,这个时间内PLC不允许发启动命令;同时用变频器的故障字而不是运行状态来判断故障,避免状态字瞬时抖动引起误判。自动复位最多尝试两次,再复位不了就报检修,等人工到场处理,这个保护思路在无人值守的泵房里很重要。
6.5 几个能立刻用上的调节经验
触摸屏上的PID参数最好做成可写的,运营人员现场经常需要微调,但修改权限要分级,普通操作员只能改设定压力,工程师才能改PID。设定压力范围要在触摸屏里做上下限限制,比如0.2~1.0MPa,防止有人误输入0或者10。变频器加减速时间建议设在5~8秒,太短会引起压力波动,太长会导致压力跌落严重,这两个数对整套系统的动态响应影响很大。
我现在做恒压供水项目,调试完毕以后都会放一台记录仪连续跑24小时,看压力趋势曲线,确认没有缓慢振荡和长期漂移才交付。整体感受是,90%的问题都出在信号干扰和参数匹配这两个地方,但根治它们的都不是复杂算法,而是一点一滴的现场基本功。希望这篇能帮少走点弯路。