前一阵子做了一个冷却水恒温恒压系统,从方案评审到现场调试折腾了半个多月,用西门子S7-1200做主控,温度环路靠霍尼韦尔电动比例阀,压力环路走变频器PID,两条PID链路一起跑,最后水温稳定在设定值正负1摄氏度以内,管网压力波动控制在0.05兆帕以内。这套东西听起来不复杂,逻辑一句话就能说清楚,但真正落地的时候,选型、接线、参数整定、通讯抗干扰,每一步都有藏着的小坑。整个过程跑下来,光是PID参数就修了三轮,中间还因为阀门动作特性和传感器安装位置吃了不少亏。这篇文章就把整个项目的设计和调试过程完整拆开,把这套系统的原理、配置、参数计算和现场踩坑经验都整理出来,给要做类似水冷、冷却循环、恒温恒压控制的朋友们一个能直接抄作业的参考。
这套方案适合谁看?做设备电气设计的工程师、现场维护设备的电工、刚接触S7-1200 PID和变频器闭环控制的技术人员,都能从里面找到用得上的东西。不管你是要给激光器、模具、反应釜配冷却水,还是想把现有的普通循环水泵升级成恒温恒压控制,这篇文章的思路和参数都能套用一大半。
1. 项目概述与系统架构拆解
1.1 这套系统解决什么问题
先说现场背景。大多数用水冷却的工艺设备,对冷却水有两个硬性要求:一是水温要稳定,水温波动直接影响工艺质量;二是水压要稳定,因为现场可能同时开着好几台设备,压力波动会导致某些用水点流量忽大忽小,设备报警甚至停机。
传统的做法是循环水泵一直全速运转,水温靠一个机械温控阀或者人工拧阀门来调,压力更是顾不上的。结果是水温大起大落、泵白耗电、阀门经常卡死,维护师傅每天跑现场累得够呛。这次改造的核心目标就两个:把水温恒定在设定值附近,把供水压力稳住,同时让泵跟着用水量自动调速,省电也是实打实的收益。项目最终的工艺要求是水温设定在25摄氏度,允许正负1摄氏度的波动;供水压力设定在0.4兆帕,允许正负0.05兆帕的波动。
1.2 整体控制链路与信号流向
这套系统实际上是两个独立的PID闭环,各管各的,之间只有很弱的耦合。温度回路负责比例阀,压力回路负责变频器,PLC作为运算核心和逻辑协调中枢。
温度这个回路的信号流这样走:温度传感器检测回水温度,变送器转成标准的4到20毫安电流信号送给S7-1200的模拟量模块,PLC里的PID指令算出当前需要的阀门开度,再通过模拟量输出模块把开度指令发给霍尼韦尔电动比例阀,阀门根据信号调节开度,改变冷却水流量,最终把水温拉回设定值。
压力回路的信号流则是:压力变送器安装在供水主管道上,同样输出4到20毫安信号,这个信号可以直接进变频器的模拟量输入端子,也可以在PLC里处理后再通过通讯或者模拟量输出给到变频器。这里我采用的是S7-1200通过Modbus RTU和变频器通讯,把压力设定值、启停命令、频率给定写进去,把变频器运行频率、电流、故障状态读回来。变频器本身内置了PID控制功能,压力反馈直接接在变频器的模拟量输入上,由变频器自己完成恒压运算,这样PLC不参与压力闭环的实时运算,反应更快,逻辑也更清晰。
除了两个主回路,还有几个硬联锁和保护信号:冷却水箱的低液位信号要进PLC做联锁,液位过低时禁止启动水泵;水泵过载信号也要接入PLC的急停回路,这样保证即使是半夜没人盯着,系统也不会出安全事故。
1.3 方案选型背后的逻辑
选型这事看着简单,实际上每一步都是在平衡成本、可靠性和调试难度。
主控选S7-1200是顺理成章的选择。CPU 1214C本身支持模拟量扩展,最多可以挂好几个模拟量模块,而且博途软件里的PID_Compact指令块做得非常成熟,不需要外插专门的PID回路模块,组态方便还便宜。比用S7-300或者S7-1500实惠,比用S7-200 SMART功能更强,PID指令块自带抗积分饱和、手动自动无扰切换和趋势监控,对现场调试来说真的省力。
温度执行器选霍尼韦尔电动比例阀,主要看中的是连续调节能力和耐用性。冷却水阀门不是开关阀能搞定的,开关阀一开一关,水温必然来回跳。电动比例阀通过4到20毫安或者0到10伏信号控制阀门开度,可以精确停留在任意开度,这样PID的输出才能有实际意义。霍尼韦尔的阀门执行器动作结构扎实,现场环境不算好也扛得住,比一些杂牌阀门稳定得多。
压力执行器选变频器加普通异步电机水泵,是最经典也最经济的恒压方案。变频器自带PID宏,设置好给了给定源和反馈源就能直接跑恒压闭环;即使以后想改成PLC来做压力闭环,变频器也可以通过Modbus完全受控于PLC。这个可进可退的架构,让系统后期扩展的空间大了很多。从成本上看,比配一台专用恒压供水控制器再加一台普通变频器要简单,而且在ABB、汇川、森兰这些主流品牌上都能找到对应的PID参数组,互换性很好。
1.4 逻辑控制与冗余设计
除了两个PID环路,PLC还负责水泵的启停顺序、手自动切换、故障复位和报警处理。考虑到单台泵故障会影响整个供水,我特意在程序设计里预留了第二台泵的启停接口和变频器切换逻辑,当前泵故障时,PLC可以直接启动备用泵。这一块不算核心,但会让这套系统真正具备“可以无人值守”的基本条件。
2. 核心控制原理:两个PID环路怎么分工
2.1 温度环:霍尼韦尔电动比例阀PID控制水温
温度控制在整个系统里是最难调的一个环节,原因是冷却水系统本身是一个大惯性、大滞后的被控对象。水温不会因为你关小阀门立刻变化,它要先经过管路传输、混水过程才在传感器位置体现出来。传感器离换热器越远,滞后越明显。这就导致PID参数不合适的典型症状就是温度长时间等幅振荡,忽高忽低,怎么调都压不下来。
比例阀在这里本质上是一个流量调节元件。PID算出来的输出是0到100的百分比开度,对应阀门从全关到全开连续变化。阀门开大,冷水量增加,回水温度下降;阀门关小,冷水量减少,回水温度上升。需要特别注意阀门方向和PID作用方向的匹配:如果水温高于设定值,PID输出应该让阀门朝开大的方向动作,这一点配错了,整个回路就会变成正反馈,一开车温度就跑飞。
霍尼韦尔电动比例阀的另一个特性是行程时间,也就是从全关到全开需要多少秒。常见的执行器行程时间有30秒、60秒、90秒几种,选择的时候要和系统惯性匹配。如果阀门动作太快,温度还没反应过来,阀门已经开过头了,必然会振荡;如果阀门动作太慢,温度变化的响应又跟不上扰动。这个参数在选型阶段就要想清楚,不要等到调试时再后悔。
2.2 压力环:变频器PID控制恒压供水
压力控制和温度控制的对象特性完全不同。供水压力系统惯性小、响应快,水泵转速一变,压力在几秒内就会有明显反应。变频器内置的PID控制频率输出,当出水压力低于设定值时,PID输出频率上升,水泵转速提高,压力回升;当压力高于设定值时,输出频率下降,转速降低,压力回落。整个过程相当于变频器不断根据压力偏差自动调整电机的转速,让供水量和实际用水量动态匹配。
这里有个常见的坑:变频器已经内置了PID功能,就不要在PLC里对压力再加一个PID,否则等于两个PID串联在一个回路里,参数很难收敛,系统会变得异常敏感,随便一点扰动都会振荡。如果是用PLC侧做压力PID,那就把变频器设成普通端子启停加外部频率给定模式,二选一,不要混用。
2.3 PID算法类型和工程选型
聊到PID算法,很多朋友会纠结位置式还是增量式。位置式PID的输出是一个绝对值,对应阀门开度百分之几、或者变频器频率多少赫兹。增量式PID的输出是本次在上次基础上的变化量,适合步进电机这类自带位置记忆的执行机构。
S7-1200的PID_Compact指令块本质上是位置式PID,内部做了完整的处理,包括比例、积分、微分、输出限幅、抗积分饱和和手自动无扰切换。工程上我们并不需要自己写PID算法代码,只需要正确配置参数就好。但理解原理仍然关键:比例项决定响应速度,太大会振荡;积分项消除稳态误差,太大会让系统反复冲过头;微分项预测偏差趋势,温度回路可以少量使用,压力回路通常不用或者只用很小的值,因为压力信号本身带噪声,微分会对噪声放大,反而搞坏系统。
另外提一句串级PID。这个项目里温度和压力两个回路是独立的,不是串级关系。串级PID是两个环嵌套,内环先快速稳定一个中间量,外环再去校正最终被控量,典型的是温度加流量串级。如果以后现场对温度控制要求特别高,可以把流量环做内环、温度环做外环,构成串级结构。但这次恒温恒压项目中,两条回路耦合很弱,独立控制就够用了。
3. 实操干货:硬件接线与组态配置
3.1 S7-1200与博途组态基础
S7-1200的组态用博途(TIA Portal)。新建项目后,第一步是在设备组态里把CPU型号选对,我用的CPU 1214C DC/DC/DC,加上一个SM1231模拟量输入模块和一个SM1232模拟量输出模块。温度信号和压力信号都进模拟量输入模块,阀门控制信号从模拟量输出模块出来,接线方式推荐用两线制4到20毫安,抗干扰能力比0到10伏电压信号强得多。
在程序里用PID_Compact指令块时,一定要把它调用在一个循环中断组织块里,而不是主程序OB1里。原因是PID_Compact需要一个固定的扫描周期来完成离散化计算,放在OB1里会因为程序执行时间不稳定导致PID参数失效。我通常建一个OB30循环中断,设置周期为100毫秒,PID_Compact就放在这个中断里,温度环和压力环各用一个实例DB。
模拟量换算这块,S7-1200的输入输出都是原始整数值。4到20毫安对应0到27648的原始值。在程序里用NORM_X和SCALE_X指令,把原始值线性映射成0到100的工程量百分比。这里有个细节,AI模块报错或者断线时,原始值会变成32767或者0,做转换之前一定要先做限幅,避免把异常值当成真实值参与PID运算,否则阀门会突然开到最大,温度掉到没法看。
3.2 霍尼韦尔电动比例阀的接线与调试要点
接线前先看阀门的铭牌,确认供电电压是24伏直流还是220伏交流,确认控制信号是4到20毫安还是0到10伏。这个确认动作千万别省,我就遇见过一次铭牌看不清导致接错信号类型的情况,阀门在调试时怎么给信号都没反应,折腾了半天。
电动比例阀接入系统之前,一定要先做手动开度测试。具体做法是在PLC程序里给模拟量输出模块一个固定值,比如输出12毫安,对应阀门开度50%,然后去现场听阀门有没有动作声,再看看管路里的流量或者压差有没有变化。这一步的目的是确认三件事:阀门供电正常、阀门能动作、信号方向和阀门实际开度方向一致。确认完手动开度,再切到PID自动模式,否则PID一通上就直接乱调,你还分不清是阀门的锅还是参数的锅。
比例阀还有一个容易忽视的点是“关不死”。有些阀门因为机械限位没有调好,或者阀芯有异物卡住,在PID输出0%时阀门并没有完全关闭,冷却水一直在往里渗,结果就是水温永远压不到设定值以下,积分项一直在累积,系统进入恶性循环。检查方法很简单:手动输出0%,去现场听阀门是否彻底无水流声,或者看温度是否持续下降。
3.3 变频器侧PID参数设置与通讯
变频器我这次用的是ABB ACS510,选它是因为内置PID宏比较成熟,在造纸、供水行业用得很多。通过面板把应用宏切换为PID控制宏之后,主要设置几组参数:PID给定源选择,通常使用内部给定或者外部模拟量给定,我这边因为用Modbus通讯,给定值由PLC写入控制字;PID反馈源选择模拟量输入AI1,接压力变送器的4到20毫安信号;再设定PID正反作用、比例增益、积分时间、输出频率上下限和加减速时间。
Modbus RTU通讯这块,S7-1200的CM1241 RS485通讯模块或者CPU自带的RS485接口都可以做。波特率我设成9600,8位数据位,无校验,1位停止位,这是变频器默认最稳的配置。PLC侧通过MODBUS_Master指令块读写变频器的保持寄存器,把启动停止命令、频率给定、压力设定值写进去,把运行频率、电流、故障字读回来。通讯稳定性的关键有两个:一是通讯线要用屏蔽双绞线,屏蔽层在PLC侧单端接地;二是通讯线两端要接终端电阻,尤其是距离超过50米的时候。这两个点做到位,基本不会出现偶发掉线的问题。
如果用的是汇川、森兰等国产变频器,参数名称可能不同,但思路完全一样:找到PID功能组,设置给定源和反馈源;找到通讯功能组,设好站地址、波特率和校验方式;找到频率上下限,根据水泵额定参数设定好,防止PID异常时频率跑飞。
3.4 系统初始参数对照表
为了方便复现,我把这套系统的关键配置和初始参数整理成了一张表,给拿来参考的朋友们一个起点:
| 项目 | 配置与参数 |
|---|---|
| CPU | S7-1200 CPU 1214C DC/DC/DC |
| 温度输入 | PT100热电阻,变送器输出4-20毫安,量程0-100摄氏度 |
| 压力输入 | 压力变送器,4-20毫安,量程0-1.0兆帕 |
| 阀门输出 | 模拟量输出4-20毫安,对应电动比例阀0-100%开度 |
| 变频器 | ABB ACS510,Modbus RTU通讯,站地址1 |
| 温度环初始PID | 比例增益Kp=2.0,积分时间Ti=120秒,微分时间Td=0 |
| 压力环初始PID | 比例增益Kp=1.5,积分时间Ti=5秒,微分时间Td=0 |
| PID执行周期 | 100毫秒,OB30循环中断 |
注意这张表里的PID参数只是调试起点,千万不要拿着直接上生产,具体的整定过程看下一部分。
4. 整定实例:PID参数怎么一步步调稳
4.1 先做开环测试,摸清对象脾气
调PID之前,有一件事必须做:开环测试。很多人上来就凭经验填参数,结果系统一跑就振荡,然后陷入了“调参数、振荡、再调参数”的死循环。正确的路径是先摸清被控对象的特性。
温度环开环测试的做法:把PID切到手动模式,给阀门一个固定开度,比如50%,然后记录水温从当前值变化到新的稳定值需要多长时间、变化了多少。通过这个测试,你可以直观感受到温度的大滞后特性。我这次实测下来,阀门开度变化后,回水温度要大约2到3分钟才开始有明显变化,完全稳定要接近10分钟。这个滞后时间直接决定了积分时间不能设得太小,否则必然振荡。
压力环的开环测试更直观:手动给定变频器一个固定频率,比如35赫兹,看压力从启动到稳定需要几秒。我实测大约5到8秒就能稳下来。这个响应速度比温度环快了一个数量级,所以压力环的积分时间和比例参数都要用完全不同的量级来调。
4.2 温度环整定过程:从振荡到稳定
温度环我用的是临界比例度法来找初始值。先把积分时间和微分时间关掉,只保留纯比例作用,然后逐步增大比例增益Kp,观察回水温度曲线。当Kp调到某个值时,温度开始出现等幅振荡,这个Kp值就是临界增益Ku,振荡周期就是临界周期Tu。记录下这两个值,然后用齐格勒-尼科尔斯经验公式算出PID参数。
我这次实际测出来的临界增益大概在3.5左右,临界周期大约8分钟。按经验公式计算,Kp大约取临界增益的0.6倍,积分时间取临界周期的0.5倍,微分时间取临界周期的0.125倍。算下来的初始值是Kp=2.1,Ti=240秒,Td=60秒。但这里注意,经验公式给的参数只是为了让你有一个不会爆炸的起点,不是最优值,还需要根据实际曲线微调。
实际运行后,我发现微分时间60秒有点太敏感了,温控回路本来信号波动就慢,微分作用经常把阀门指令拉得来回晃。我把微分时间一路减到15秒,系统的阻尼感马上好多了。然后积分时间从240秒逐步缩短到180秒,温度曲线的稳态误差被消除,最终水温稳定在设定值正负0.8摄氏度左右,完全满足工艺要求。最终温度环参数是Kp=1.2,Ti=180秒,Td=15秒,这个参数和初始值差了不少,说明现场微调真的不能省。
4.3 压力环整定过程:警惕超调和振荡
压力环的整定比温度环快很多。初始参数Kp=1.5,Ti=5秒,一上电就出现了一个典型症状:水泵加速瞬间压力冲到0.5兆帕以上,然后回落到0.4兆帕附近,随后轻微来回震荡。变频器的输出频率也能看到明显的上下波动,这就是比例增益偏大、积分时间偏短叠加在一起的效果。
我把比例增益从1.5降到0.8,积分时间从5秒加长到8秒,同时把变频器的加速时间从3秒设为5秒,减速时间设为8秒,让泵转速变化不要那么猛。这三条改动下去,压力的超调明显减少,最终稳定在设定值正负0.03兆帕。压力环最终参数是Kp=0.8,Ti=8秒,Td=0,完全不用微分。
这里特别说一个很多人会忽略的点:变频器自己的加减速时间其实是压力环的“额外惯性环节”。加减速时间设得太短,频率变化过快,水锤效应会把压力顶得很高;加减速时间设得太长,PID调半天压力也跟不上。理想的加减速时间应该和水泵管路的实际响应时间匹配,而不是图省事随便设一个3秒。
4.4 调参技巧:无扰切换与在线监控
在博途里调试PID_Compact时,有个功能必须用起来:在线监控。把PID_Compact的Process Value、Setpoint和Output三个变量都放进监控表里,就能看到实时的控制曲线,比在现场拿万用表量信号效率高出一大截。
手动自动切换也要学会用。具体手法是这样的:先在手动模式下给一个相对合理的输出值,比如温度环给阀门开度50%,等温度稳下来不再变化之后,再切到自动模式。因为PID_Compact带无扰切换功能,切换瞬间输出不会跳变,系统不会因为切换产生冲击。如果一切自动就出现输出跳变,十有八九是手动状态下PID的积分项没有正确跟踪实际输出,需要检查PID_Compact的ManualEnable信号是不是在切换前一直处于True状态。
还有一个实用技巧:调参的时候一次只改一个参数,改完等系统稳定下来再看趋势。不要同时动Kp和Ti,不然出了问题你都分不清是哪个参数造成的。
5. 常见问题与排查技巧实录
5.1 温度波动大,温差来回跳怎么调
这是温度控制最常遇到的现象,特征是温度曲线呈现有规律的波浪形振荡,阀门开度也在跟着大幅度摆动。大部分情况下是积分时间偏短,或者比例增益偏大。排查思路是先在博途里调出PID的趋势图,看温度波动周期和阀门动作周期是否一致。如果阀门一动作,温度跟着朝一个方向走,然后矫枉过正,再朝另一个方向走,基本就是参数太激进。
处理方法分两步:先把积分时间加倍,让积分作用慢下来,消除低频振荡;如果振荡频率还是比较快,再把比例增益减半。不要指望调一次就能好,每调一次都要观察至少一个完整振荡周期,温度这种大惯性对象尤其要有耐心。我见过有人在一天之内把参数改了二十多次,这种调法很难找到稳定的点。
5.2 压力超调大、泵频繁启停
压力回路一个比较头疼的问题,是变频器PID输出频率已经掉到下限,压力还是偏高,或者频率来回跳动,导致水泵频繁启停或者频繁加减速。除了PID参数问题,还要重点检查变频器的休眠唤醒功能。恒压供水场合用水量经常会降到接近零,如果变频器没有设置休眠频率和休眠延时,泵就会一直在低频下限底下磨蹭,电机发热,压力还控制不住。
我这次的系统就设置了变频器休眠频率20赫兹、休眠延时30秒,唤醒压力设定为比目标压力低0.05兆帕。这样夜间或者车间不用水的时候,泵自动停掉;一旦压力掉下来,泵自动重新启动。这个功能对节能和泵寿命的提升都非常明显,强烈建议开启。
5.3 模拟量信号漂移和现场干扰
4到20毫安信号本身抗干扰能力不错,但如果施工不规范,照样出问题。最常见的是信号线和动力线穿同一根电缆桥架,变频器一启动,温度信号和压力信号都跟着跳。解决方法是信号线单独走桥架,或者至少和动力线保持20厘米以上的距离。压力变送器和温度变送器就近供电,不要跟变频器共用同一个电源回路。如果实在没法分开,在信号进入PLC前加一个信号隔离器也能解决大部分干扰问题。
还有一次遇到压力值出现规律性跳变,排查了很久,最后发现是压力变送器的电缆屏蔽层没有接地,屏蔽层悬空变成了天线,变频器一工作就拾取噪音。把屏蔽层在PLC侧单端接地之后,跳变立刻消失。
5.4 与变频器485通讯不稳定的处理
Modbus RTU通讯掉线、频率指令写不进去、读回数据偶尔乱码,这些问题项目里经常遇到,而且排查起来比模拟量干扰更隐蔽。我的经验是按下边的顺序来查:先用万用表确认通讯线A/B有没有接反;再确认PLC和变频器的波特率、校验位完全一致;然后用万用表测通讯端子之间的电压,正常情况下应该在2到7伏之间波动,完全没有电压就说明线路断路。最后检查屏蔽层接地和终端电阻。这一套流程走完,九成的通讯问题都能解决。
实在不行还可以换个思路:把压力反馈和频率给定改用硬线模拟量连接,通讯只负责读取运行状态和故障信号。这样即使通讯偶尔抖一下,闭环控制不受影响,系统的鲁棒性反而更高。
5.5 阀门方向与PID作用方向不匹配
这个属于低级错误,但现场出现频率奇高。现象是自动模式下,水温高于设定值时阀门开度反而变小,冷却水越来越少,温度越来越高,PID输出一路冲到头。处理方法是把PID_Compact的ReverseAction设置为Reverse,或者把阀门执行器的动作方向调整一下。关键是搞清楚了什么信号对应什么方向再下手,不要凭感觉乱设。
6. 项目跑了一段时间后的体会
这次S7-1200加霍尼韦尔比例阀加变频器的恒温恒压系统,到写这篇文章的时候已经连续运行一个多月了,温度波动基本维持在正负0.8摄氏度以内,压力波动在正负0.03兆帕以内,一直很稳定。回过头总结,稳定运行的关键往往不在控制器本身,而在于执行机构的真实特性和传感器安装位置这些细节。温度探头装得离换热器太近,滞后小但测的是局部温度,代表不了整体;装得太远,滞后大了PID又不好调。这些需要在现场根据实际情况反复斟酌。
最后再分享一个个人习惯:每次调试完,我都会把最终确认的PID参数、变频器参数和阀门的信号一致性测试结果整理成表格,贴在控制柜门内侧。线上设备过了几个月参数漂了、或者换了维护师傅,贴着这个表能少走太多弯路。PID参数不是一个定死的东西,季节一变、用水负荷一变,可能就要微调,但把过程记录下来,下次调整就有据可查了。