西门子S7-1200博途PID恒温恒压冷却水系统整定实战

发布时间:2026/10/9 3:45:25
西门子S7-1200博途PID恒温恒压冷却水系统整定实战
第一次在车间里调试这套恒温恒压冷却水系统时温度曲线在设定值附近来回拉锯电动阀像抽风一样频繁开关变频器也跟着嗡嗡响。后来我把两个PID拆开压力环先上温度环故意慢半拍整个系统才算安静下来。这套基于西门子S7-1200博途TIA Portal的PID恒温恒压供冷却水方案难度其实不高但真正要调稳你得先弄明白温度和压力这两个量在同一个管网上是怎么互相牵扯的而不是简单堆两个PID块就完事。这个项目适合所有给设备供循环冷却水的场景比如注塑机、激光器、反应釜夹套、实验室仪器、空压机冷却。核心就两件事让供水压力恒定让供水温度恒定。设备和负载一变流量波动会同时冲击压力和温度没有PID光靠人工看表拧阀门根本忙不过来。下面我把硬件选型、博途组态、PID整定、现场避坑按实际调试顺序完整过一遍。1. 冷却水系统为什么必须上两个PID温度和压力的耦合关系1.1 从换热工艺看温度和压力的控制目标先看工艺侧。水泵从水池或者冷却塔集水盘抽水加压后送到各台设备设备换热后热水回流经过换热器或者冷机把热量带走再回到水池。这套系统里用户关心的就两个数设备入口水的温度以及管网供水压力。压力决定了流量供给能力。多台设备同时开关进水阀时管网压力会瞬间跌落或飙升如果压力不稳流量就会忽大忽小。流量一变换热器的换热量跟着变温度自然就飘了。所以恒压不是设备厂商的“强迫症”它是温度稳定的前提。温度控制的本质是调节冷源侧的换热能力。常见的执行机构是电动三通调节阀或电动球阀温度高了把冷源水多放进来一些温度低了减少冷源水流量。这里面的换热过程有滞后换热器管壁、水体的热容都不小水温从阀位动作到实际变化往往要几十秒甚至更久。生活里打个比方水泵类似市政供水管网里的水厂负责把压力顶住调节阀类似你家里的冷热水龙头负责把水温调合适。你洗澡时如果旁边有人冲马桶水压一下掉下去水温也会突然变烫这就是压力和温度耦合的直观感受。工业系统里这个“冲马桶”的动作每天都在发生光靠手动跟不上必须让两个PID各管一项。1.2 快环和慢环的分工逻辑压力环是快环。变频器调节电机转速电机带动水泵改变流量管网压力在几秒内就能响应。温度环是慢环。从阀位变化到换热器出水温度变化再到传感器检测到变化周期常常是几十秒到分钟级。两个环路速度差这么多如果采样周期和PID参数混着来就会打架。压力环为了快速稳压比例增益通常取得比较大输出会跟着温度环造成的流量扰动剧烈摆动温度环又慢感受不到压力环的“努力”还在按自己的想法慢慢推阀位。最终表现就是两个PID互相较劲现场曲线全是毛刺和锯齿。正确做法是“快环包慢环”压力PID执行周期控制在100~200毫秒温度PID放到500毫秒甚至1秒。压力环先把流量扰动消化掉温度环只管水温的缓慢变化两者各干各的互不干扰。我实际测试过把两个环的采样周期拉开后压力波动从±0.05MPa收敛到±0.02MPa温度也从±3℃收窄到±1℃以内。2. 硬件接线与信号链路的搭建思路2.1 机身扩展与模拟量通道分配CPU我习惯选S7-1200 1214C DC/DC/DC机身自带14路数字输入和10路数字输出做联锁和报警足够。但模拟量必须扩展温度、压力、阀位反馈加起来至少4路输入再加上变频器频率给定和阀门开度指令两路输出我一般配一块SM1231 AI 8x13bit模拟量输入模块和一块SM1232 AQ 4x14bit模拟量输出模块。通道分配要有规律别瞎排。我的习惯是AI通道0接供水温度AI通道1接供水压力AI通道2留作回水温度备用AI通道3接阀位反馈。AQ通道0给变频器频率给定AQ通道1给电动调节阀开度指令。这样做的目的是方便接线工对线也方便后期程序里查变量。模块地址在博途硬件组态里能看到默认按槽位分配我把它们手动改成连续地址方便后续NORM_X和SCALE_X指令引用。有一点必须提醒S7-1200的模拟量模块电流信号对应的原始值是0到27648电压信号0~10V也是0到27648不是0到10000。很多新手在这里算错工程量导致PID输入看起来“满量程振荡”。程序里记得先用NORM_X把原始值归一化到0~1再用SCALE_X换算到实际工程值比如温度0~100℃压力0~1MPa。硬件的供电和信号线也要规划好。4~20mA变送器如果是两线制需要模块或者外部电源供电四线制变送器要注意电源负端和信号负端是否隔离不隔离的话在PLC侧可能形成共地回路产生十几毫伏的共模电压直接体现在AI原始值的跳动上。我调试中碰到过一次压力信号周期性波动查到最后就是变频器地线上串过来的干扰把信号线屏蔽层重新单端接地后就好了。2.2 传感器量程、接线与滤波设置温度传感器两种方案都行一种是一体化温度变送器输出4~20mA接SM1231 AI另一种是Pt100热电阻接SM1231 RTD模块。我图省事常用一体式变送器量程选0~100℃精度0.5%FS。注意变送器探头要插入管道足够深一般要求进入管径的1/3到1/2否则测得的是管壁温度反应慢还不准。压力变送器量程不能拍脑袋。系统工作压力如果设计在0.3~0.5MPa选0~1MPa的量程别选0~1.6MPa量程选大了分辨率就摊薄了。取压点尽量靠近泵出口主管路远离调节阀下游因为调节阀附近水流紊乱压力波动大会给PID喂“假数据”。博途里SM1231每个通道可以单独配置滤波方式。我的经验是温度通道用64ms均值滤波压力通道用16ms均值滤波。滤波太重比如温度搞到256ms以上加上变送器本身的时间常数测量滞后会吃掉PID的相位裕度容易诱发持续振荡。压力通道尽量不要用重滤波压力环本身要快滤波带来的滞后比噪声更致命。2.3 变频器和调节阀的执行端匹配压力环的执行机构是变频器带水泵电机。频率给定用4~20mA比0~10V电压信号抗干扰能力强。变频器里要设置好最低频率我一般设25~30Hz。水泵是离心式低频段扬程严重不足压力建立不起来PID给多大输出压力都上不去积分会一直累积等频率越过拐点压力又突然冲上去非常难调。温度环的执行机构是电动调节阀这里有个关键选型问题阀门的流量特性。优先选等百分比特性小开度时放大系数低大开度时放大系数高正好和PID的线性增益互补。如果现场已经装了线性特性阀小开度区域会特别灵敏PID给1%输出温度就窜出去一大截程序里需要做折线补偿。阀门口径也不能选太大。我见过一个系统设计流量50m³/h结果选了个100m³/h的阀正常工况下阀位只有百分之十几工作在小开度非线性区温度根本稳不住。选型时按最大负载流量乘1.2的安全系数计算Kv值即可别盲目放大。如果工艺上允许最好选带阀位反馈的阀门把实际阀位引回PLC一是可以诊断阀门卡涩二是后续要做位置校验和死区补偿都用得上。另外电动阀要确认失电时的安全位置。冷却水系统一般要求失电后阀门保持原位或回到全开位防止设备断水烧毁选型时和厂家确认阀门的失电保护模式并在博途里把对应的反馈做成故障联锁。3. 博途组态与PID_Compact工艺对象的配置要点3.1 在OB30循环中断里挂载PIDPID_Compact调用位置很关键别放在OB1主程序里扫描。主循环扫描周期受程序长短影响可能会跳动PID算法的时间基准就不准了积分项会出问题。正确做法是新建一个循环中断OB我用OB30循环时间设100ms把压力PID放这里再建一个循环中断OB32循环时间设500ms放温度PID。组态步骤不复杂先添加CPU和AI/AQ模块设置好IP地址然后在程序块里添加循环中断OB最后在工艺对象文件夹里新建两个PID_Compact实例一个命名带P另一个带T避免混淆。调用方式是直接在SCL或STL里写调用语句结构大致是这样// 温度回路调用 PID_Compact_T( Setpoint : HMI_温度设定, // REAL单位℃ Input : Tag_温度工程量, // REAL单位℃ ManualEnable : HMI_温度手动, ManualValue : HMI_温度手操输出, Output Tag_阀位指令); // 0~100% // 压力回路调用 PID_Compact_P( Setpoint : HMI_压力设定, // REAL单位MPa Input : Tag_压力工程量, // REAL单位MPa ManualEnable : HMI_压力手动, ManualValue : HMI_压力手操输出, Output Tag_变频频率指令); // 0~100%这里两个PID的Input直接用我前面说的NORM_X和SCALE_X换算后的工程量单位清晰曲线看起来也直观。不建议把AI原始值直接喂给PID出了问题不好判断是传感器还是算法有毛病。3.2 几个容易被忽略的PID_Compact参数PID_Compact有几个参数是现场最容易踩坑的地方。第一个是循环时间。PID_Compact会自动读取所在OB的循环时间但你要是把同一个PID实例在OB1里也调一次或者在两个不同周期的OB里调用它会把时间基准搞乱。一个实例只能在一个循环中断里调用这是死规矩。第二个是输入死区InputDeadBand。温度回路我设0.3~0.5℃压力回路设0.01~0.02MPa。死区太小执行器会频繁动作阀门寿命受影响死区太大控制精度下降。这个值要根据传感器重复精度和现场噪声来定先往小了设观察阀位动作频率再做调整。第三个是输出限幅。输出上限100%下限0%必须设置。PID_Compact内部自带抗积分饱和但它的前提就是输出限幅正确。你要是把限幅留成默认的-100%~100%阀门在0~100%范围动作时积分饱和模型就算错了温度过冲会明显变大。第四个重要但容易被忽略的是正反作用。温度升高时如果执行机构是“开大阀增加冷水量”那阀位输出应该是增大属于正作用。压力低于设定时变频器频率要增大也是正作用。但如果阀门或变频信号接反了PID会发现“越调越偏”输出一路冲到极限。S7-1200的PID_Compact没有像老式PLC控制器那样直观的正反作用切换旋钮现场习惯做法是把输入信号前加负号或者把执行机构的信号极性调反具体看硬件接法。我每次调新系统都先手动给定一个输出确认温度、压力随输出的变化方向对了才敢切自动。3.3 手自动切换的无扰逻辑冷却水系统调试期间手自动切换是高频操作切不好就会出现输出跳变现场会被打得很惨。S7-1200的PID_Compact对手动和自动切换做了内部无扰处理从手动切自动时算法会自动把积分项放到一个合适的位置保证输出不从当前值跳走。但前提是手动模式下你给的值是真实的。HMI上做“手动/自动”按钮时手动值ManualValue要绑定到手操器并且初始值要和当前输出一致。更稳的做法是切换到手动前程序把当前PID输出值赋给ManualValue这样无论怎么切输出都连续。还要注意设定值同步。从手动切自动时如果设定值和当前值差得远PID会认为偏差巨大输出猛冲虽然最终能拉回来但过程中的扰动足够让设备报警了。我在HMI里做了个按钮切自动的同时把设定值强制赋成当前值然后操作员再慢慢把设定值拉到目标值非常平稳。4. 现场整定的顺序与典型参数参考4.1 先整定压力环再整定温度环整定顺序不是随意的我的原则是“先快后慢先内后外”。压力环作为快环是整个系统的基层必须先稳住。压力不稳流量就波动温度环会持续收到随机扰动你以为是在整定温度环实际上一直在处理压力环留下的烂摊子。具体操作是先手动开泵确认管道压力能建立起来。然后压力PID切自动只加比例不加积分和微分从0.5开始试观察压力曲线有没有等幅振荡。有振荡就减半不振荡就往上加0.3直到出现“轻微2~3个波动的衰减振荡”记录此时的比例增益再乘0.6作为工作比例增益。然后加积分时间从60秒往下压压到压力回调时间合适、稳态没有余差为止。压力环整定好之后再整温度环。温度环的滞后大整定过程要耐住性子。阀门给定一个阶跃扰动记录温度从开始变化到稳定所需的时间这个时间决定了积分时间的大致量级。温度环比例增益不要大我一般从2起步积分时间从上一环的时间常数出发倾向于取大一些。4.2 用临界比例法的实用变形逼近参数书本上的临界比例法是把积分和微分关掉纯比例让系统出现等幅振荡记录临界增益Ku和临界周期Tu再按表格算PID参数。但工业现场你不可能让温度在设定值两边震荡五分钟设备那边早就报警了。我用的实用变形是“衰减振荡法”纯比例下慢慢加大增益直到系统出现明显的衰减振荡也就是波动幅度逐渐缩小的那种曲线而不是等幅。记录此时的增益和振荡周期按衰减振荡的经验公式算初值。这个方法的好处是不需要等幅振荡对生产工艺的冲击小很多适合在线投运阶段使用。每次参数调整后要给系统足够的观察时间。温度环尤其如此阀门动作后温度可能要一两分钟才见分晓你十分钟改三组参数毫无意义。我调试温度环的经验是改一次参数至少观察10到15分钟记录超调量、恢复时间再决定下一步往哪个方向调。4.3 我常用的几组初始参数和边界判断下表是我在不同规模的冷却水系统上常用的初始参数注意只是起点不是万能公式。系统容积、管道长度、阀门特性、换热器形式都会影响最终参数。回路比例增益P积分时间Ti微分时间Td执行周期压力环0.8~2.05~15s0100ms温度环2~860~300s3~20s500ms压力环我坚决不用微分。压力信号里混杂着泵脉动和设备启停的噪声微分对噪声是放大器用了之后你会看到频率设定值高频抖动电机热负荷也大。温度环可以加一点微分用来补偿换热过程的热惯性改善超调但Td一般不超过20秒再大了就成了噪声放大器。判断参数方向有个简单原则曲线反应慢、总是差着一截到不了设定值说明比例太小或者积分太慢往大调曲线过冲大、在设定值附近反复横跳说明比例太大或者积分太快往小调。至于微分只有在超调明显且恢复拖沓的时候才需要加加了之后曲线会变得“急刹”效果好但加多了就像踩点刹踩出ABS全是高频小幅波动这时候果断回退。5. 调试期最容易翻车的三个典型问题5.1 温度通道的滤波滞后与极限环这是我在现场见过最多的问题之一。表现是温度曲线在设定值附近走出一个接一个的三角波幅度不大但非常规律阀门也在跟着有节奏地大幅摆动。乍一看像PID参数没整好实际上根子在测量滞后。排查方法很直接把PID输出固定在一个值让阀位不动然后观察温度曲线是否平稳。如果固定输出后温度还在周期性波动说明工艺侧或测量侧有问题如果温度平了说明PID动态有问题。我遇到的情况是温度变送器响应慢加上SM1231滤波设得偏重温度显示值比实际值晚了一拍PID以为偏差没消除积分一直往上推等到真实温度过冲了又开始反向修正形成极限环。处理办法是减轻滤波把温度通道的均值滤波从256ms降回64ms同时把变送器换成响应快的型号。如果传感器无法更换就在PID上做妥协适当增大输入死区减小比例增益加大积分时间用“慢一点但稳一点”的代价换掉锯齿。5.2 阀门死区叠加积分饱和电动调节阀和电动球阀都有死区。执行器接收到的开度指令在小范围内变化时阀杆根本不动但PID不知道积分还在继续累积。等误差累积到超过死区阀门突然动作一大步温度哗啦一下过冲然后又是新的反向过程。这种问题在现场的表现是曲线时不时出现突兀的台阶式变化阀门动作记录显示它在某一个开度附近反复“跳进跳出”。解决办法有三招按优先级排。第一在输出端做一个位置死区逻辑如果PID输出变化量小于某个阈值比如2%就不更新AQW输出让阀门歇着等PID输出确实变化超过2%了再动作。这个逻辑可以滤掉PID输出端的小幅抖动减少阀门磨损。第二设置好PID_Compact的输出限幅和抗积分饱和让积分在输出接近极限时停止累积。第三如果阀门带阀位反馈可以把PID输出和目标阀位做成一个位置闭环让PID的输出先经过位置PID校正再驱动阀门这样能消除大部分死区影响。5.3 变频器低频段的压力波动泵类负载在低频段特性很差。频率低于30Hz时电机输出转矩小水泵扬程低管网压力建立不起来压力变送器信号会明显波动。这时候压力PID的输出在小范围变化频率虽然变了但压力几乎没什么响应积分又在那儿积累等到频率穿过某个点压力突然窜上去形成间断性冲击。我处理这个问题的办法是给变频器设最低频率限制一般25~30Hz不让泵进入特性恶化的区域。如果实际负载确实需要更小流量不要靠压低频率硬撑加一个旁通泄压阀把多余的流量旁通回去让泵始终工作在特性较好的区间。另外可以在程序中根据当前频率分段选择PID增益低频段比例增益小一点防止波动高频段比例增益恢复正常保证响应速度。6. 联锁保护、投运顺序与运行优化6.1 一套够用的保护联锁清单PID把系统稳住了但保护逻辑才是设备安全的底线。我不能保证PID永远不出错传感器也可能断线所以联锁必须独立于PID运行。我在这套系统里做的联锁有这几条泵出口压力过低比如低于0.15MPa持续5秒判断为缺水或泵故障立即停泵并报警。这个保护要加延时因为开泵瞬间压力建立需要一个过程直接停会起不来泵。供水温度过高高于设定值8℃并且阀位已经开到100%说明换热能力不够了声光报警提示检查冷源设备。变频器故障信号接到DI点程序里一有故障就停泵同时HMI弹出故障画面。电动阀故障反馈和传感器断线也要做检测4~20mA信号断线后AIW会显示32767程序判断超过量程上限105%就切手动并报警防止PID对着一个假数据疯狂输出。6.2 标准投运流程与试运行记录我每次投运都按这个流程走顺序不能乱手动模式开泵确认变频器输出正常压力表读数逐渐上升并稳定。观察压力曲线平稳后压力环切自动先把目标压力设到当前值附近等稳定后再渐变到目标值。手动给调节阀一个固定开度比如50%观察供水温度的变化方向确认正反作用正确同时判断阀门对温度的作用时间常数。温度环切自动设定值从当前值渐变到目标值开始长时间观察。人为模拟负载变化开关一台设备的进水阀记录压力和温度的恢复时间。这个流程里的每一步都有明确目的。第2步的“设定值渐变”是为了避免切自动瞬间压力突跳第3步是整定温度环前必须做的一次开环“摸脉”第5步则是对整个闭环系统做一次实战考核。试运行记录我会用博途的Trace功能把PID输出、压力、温度三个量记录下来供后期参数微调对比用。6.3 运行一段时间后的参数优化系统连续运行一段时间后PID参数可能需要回访调整别指望一次性整定完就能管一年。最常见的情况是换热器结垢污垢热阻增大后同一阀位下换热量下降温度环的积分时间可能需要调小一些或者需要提高冷源侧的出力。这个变化不是突然发生的而是慢慢累积的所以最好每个季度导一次趋势曲线对比设定值附近的超调量和稳态偏差有劣化趋势就及时调整。季节变化也要考虑。冷源水温夏天高冬天低同一套PID参数在不同季节的表现差异很大。我在HMI上做了两组参数的存储操作员在夏季和冬季各切一组实测下来比一套参数硬扛四个季节稳定得多。另外如果阀门是线性特性的可以在输出到AQW之前加一段折线补偿把阀门实际流量特性往等百分比方向“掰”这属于锦上添花但对控制品质的提升非常明显。最后再分享一个调试体会我在多次调这种恒温恒压系统后最大的心得是PID参数不是算出来的是“试加看曲线”试出来的但前提是你把传感器、接线、滤波、执行器这些基础活都干干净了。测量不准、执行器卡涩、接线干扰任何一项没处理好PID参数再怎么调都是白费劲。先把硬件通道和手动功能逐一验证到位再谈整定顺序对了系统稳下来就是时间问题。