ARTICLE · INTELLIGENCE

战地情报 · 详情页

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

换热器温度-流量串级控制:原理、PLC实现与参数整定

换热器温度-流量串级控制:原理、PLC实现与参数整定 简介这是一份面向PLC控制系统学习者和过程控制工程技术人员的PDF文档系统讲解换热器温度与冷水流量串级控制系统的设计与实现。内容以热水循环、冷水循环和换热器构成的工艺对象为背景详细说明采用S7-300 PLC搭建串级控制的完整流程包括创建工程、MPI通信设置、硬件组态、OB1主程序编写以及FB41 PID控制块和FC201/FC202数值转换功能的调用方法。内容还涉及PID背景数据块、手自动切换、变量表配置和模拟量信号处理等关键编程细节配有图表和程序片段便于在实验环境中参照练习。文档共1个PDF文件大小约330KB。目前已有92人浏览学习适合自动化、电气工程及过程控制方向的学生和工程师用于课程设计、实验指导或现场调试参考。1. 换热器的温度为什么非要用温度和流量串级控制一台蒸汽-水换热器热水出口温度要求稳定在 75℃±1℃。单回路温度控制看起来合理PT100 测出口温度PID 直接去调蒸汽阀。但投运后你会发现蒸汽压力波动稍大或者热水流量一变温度就像慢动作一样爬坡等到 PID 反应过来过冲已经接近 5℃。这不是 PID 参数没整好而是对象特性决定的换热器温度回路的大滞后、大惯性让单回路反馈控制天生反应慢。串级控制之所以在这个场合是标准答案是因为它把扰动进来先被副回路吃掉这个思路变成了工程上可落地的结构——副回路抢先克服流量、压力侧扰动主回路只负责慢慢校正温度偏差两条回路各干各的事。这篇文章就沿着换热器温度-流量串级控制这条线从对象特性、方案设计、PLC 程序实现到参数整定和投运调试给你一套能直接搬用的做法。2. 换热器对象特性与串级控制方案选型2.1 换热器温度回路的滞后在哪换热器的温度被控对象实际上是由三个环节串联组成的调节阀和管道构成第一个惯性环节换热器本身的热容构成第二个出口温度传感器及测温套管构成第三个。这些环节串联在一起温度和流量在时间常数上差着数量级——流量回路的时间常数通常在 3~8 秒温度回路却要 60~300 秒甚至更长。这个数量级差异是串级控制能够成立的根本前提。热工过程里常把换热器出口温度对蒸汽阀位变化的响应拆成纯滞后加一阶惯性滞后时间主要由介质在管道里的停留时间决定。停留时间等于管道容积除以体积流量管道越长、流量越小滞后越大。很多现场把温度测点装得离换热器出口很远美其名曰测混合温度结果把管道滞后加进了主回路。主回路本身的惯性已经够大了测点如果再滞后PID 参数只能往越来越保守的方向调。单回路温度控制在这里的困境是流量、压力、蒸汽热焓这些扰动都要先影响出口温度再被温度变送器感知PID 才开始动作。扰动到校正之间隔着一整个换热器的时间常数这段时间里偏差已经形成了。换句话说单回路控制的校正时机永远是事后的。2.2 温度-流量串级控制的方框图拆解串级控制的结构是在原温度回路里嵌套一个流量回路作为副回路。主回路的 PID 输出不再直接去驱动执行机构而是作为副回路的设定值 SP2副回路以自己的流量测量值 PV2 为反馈PID 输出直接控制蒸汽调节阀。SP1(温度设定) - 主PID - SP2(流量设定) - 副PID - 调节阀 - 换热器 - PV1(出口温度) ^ | --- PV2(流量变送) ---------- -------------- PV1 反馈 -----主回路的作用是校正温度稳态偏差输出随时间缓慢变化副回路的作用是快速克服流量侧扰动。蒸汽压力波动时流量先变副回路立即调整阀门开度把流量拉回设定值这整个过程温度还没有感知到扰动。从控制原理上说串级控制是用一个快速回路把慢速对象中的主要扰动隔离在回路之外。这里有一个工程上常犯的误解把串级控制理解成两个 PID 串起来就完事。实际上副回路的设计目标不是追求温度控制精度而是追求对扰动的快速抑制能力和对象的近似线性化。副回路包进来的对象越靠近执行机构它克服扰动的速度越快、范围越大副回路包进来的对象越靠近主被控变量它的滞后越大稳定性越差。对换热器来说把流量作为副变量、把调节阀和管道作为副对象是包住扰动最多、副回路速度最快的组合这就是行业里温度-流量串级成为换热器标配控制方案的原因。2.3 什么时候不需要串级控制不是所有换热器都值得上串级。三种情况应当考虑更简单方案主回路滞后本来就小于 15 秒的小型换热器串级带来的收益极其有限单回路 PID 加前馈完全可以应付扰动主要发生在介质入口温度侧而不是流量侧时串级控制拦不住这种扰动需要的是前馈补偿或把入口温度并入报警联锁如果天然气、蒸汽总管压力本身就由上游稳定装置控制得很平稳副回路的存在意义也会大打折扣。| 工况特征 | 控制方案建议 | 理由 | | --- | --- | --- | | 蒸汽压力波动频繁、流量侧扰动大 | 温度-流量串级控制 | 副回路快速抑制流量扰动 | | 主回路滞后小(15s)扰动源单一 | 单回路PID 前馈 | 串级收益低投资和维护成本不划算 | | 扰动主要来自入口介质温度 | 温度单回路 入口温度前馈 | 串级副回路无法感知温度侧扰动 | | 换热器用于产品冷却要求严格无超调 | 串级 副回路SP限幅 或 纯手动站 | 副回路SP过冲会直接传导至主回路 |选型时还要看 DCS 或 PLC 的负荷。S7-1200 这样的小型 PLC 两个 PID 块只占微不足道的资源不存在性能瓶颈但如果项目里控制回路超过八十个或者主控制器还要兼做通信网关优先把串级拆给独立控制器去做避免中断抖动影响 PID 的计算周期。3. 测点布置、仪表选型与 PLC 硬件组态3.1 温度、流量测点位置对控制品质的影响测点位置决定控制方案能发挥多少性能。温度测点应装在换热器出口管道上距离出口法兰至少 5 倍管径保证流体充分混合后的平均温度。套管插入深度要达到管道中心线附近否则贴壁层流会让温度响应更慢。流量测点有两种布置习惯一种是装在蒸汽入口管上测蒸汽流量副变量是蒸汽流量另一种是装在冷介质侧用冷介质流量做副变量。热水加热场景里我通常选择冷介质侧流量作为副变量。原因有两个冷介质是用户侧工艺流量本身波动频繁用流量副回路直接稳住它等于把所有负荷扰动都隔离在温度主回路之外用蒸汽流量做副变量时蒸汽调节阀前后差压波动会直接影响流量测量副回路反而可能成为一个新的扰动源。冷却场景则相反多数工艺要求稳定冷媒流量直接用冷媒流量做副变量即可测点装在调节阀后 10 倍管径直管段处。3.2 仪表量程、信号制式与模拟量模块接线换热器串级控制常用仪表配置是温度用 PT100 热电阻配温度变送器输出 4-20mA 两线制流量用涡街或电磁流量计输出 4-20mA 或脉冲调节阀用电-气阀门定位器接收 4-20mA 信号。温度量程按工艺上限的 1.5 倍选比如出口温度最高 80℃量程取 0~120℃流量量程按正常流量 1.2~1.5 倍选保证正常工况下信号在 50%~80% 区间留出调节余量。接线时注意信号共地和屏蔽层单端接地。模拟量输入模块的通道之间如果共用一个 24V 电源要把电源负端和 AI 模块的 MANA 端子连好否则传感器与模块之间的电位差会导致测量值漂移。很多现场干扰问题不是仪表坏了而是信号回路接地位置不对形成地环路引入 50Hz 工频干扰温度值跳变 0.5~1℃这部分在串级系统里会被放大因为主回路偏差直接叠加到副回路设定值上。| 信号 | 仪表选择 | 量程设置 | 接线注意 | | --- | --- | --- | --- | | 出口温度 | PT100 温度变送器 4-20mA | 0~120℃ | 屏蔽层单端接地 | | 冷介质流量 | 电磁流量计 4-20mA | 0~30 m³/h | 直管段前10D后5D | | 蒸汽/热水调节阀 | 电气阀门定位器 4-20mA | 0~100% | 反馈信号用 4-20mA 或 HART |3.3 S7-1200/1500 硬件组态的 3 个必调参数使用博途组态时三个参数不调好后面程序写得再对也白搭。第一个是模拟量输入模块的滤波设置。博途里 AI 模块默认启用了数字滤波滤波时间常数的选择与一次元件有关。流量计信号本身比较干净滤波时间建议设 1~2 个扫描周期温度变送器输出的信号叠加了电源纹波滤波可以设 5~10ms但注意滤波时间越长温度信号滞后越大串级主回路的相位裕度损失越多。我的习惯是温度滤波不超过 10ms宁可程序里加工程滤波也不用硬件模块的重滤波。第二个是 CPU 循环中断的周期设置。串级控制两个 PID 的计算频率由循环中断驱动推荐把 PID 计算放在 OB30 里中断周期设为 100ms。温度主回路周期可以到 500ms但流量副回路周期最好不超过 200ms取 100ms 是两者兼顾的折中。中断周期大于 500ms 时副回路对流量扰动的抑制能力明显下降温度波动会重新变大。第三个是 PID 参数和手动初始化值。博途的 PID_Compact 在首次下载后处于手动模式输出为 0%如果程序一启动就切自动调节阀会全关流量瞬间跌落。硬件组态后先手动输出 30%~50% 开度确认调节阀动作方向和流量信号极性正确再切自动。这一步能省掉后面大量排查时间。4. 用 SCL 写温度-流量串级控制 FB4.1 串级 PID 功能块的结构设计串级控制在 PLC 里有三种常见实现方式用两个 PID_Compact 功能块串联、用 SCL 写自定义 PID 功能块、用模拟量调节功能块手动搭位置式 PID。前两种用的最多。两个 PID_Compact 串联的好处是集成了手自动切换、输出限幅、抗积分饱和但需要注意主回路的输出要直接接到副回路的 Setpoint 输入中间不能夹带线性转换。自定义 SCL 功能块的好处是逻辑透明积分饱和处理、无扰切换、批处理安全逻辑都能按自己的规则写。无论哪种方式FB 的接口都要包含主回路输入——温度 PV、温度 SP、主回路 PID 参数副回路输入——流量 PV、副回路 PID 参数模式输入——手动/自动切换、跟踪值输出——阀位输出、主回路输出即副回路 SP、运行状态字。关键的内部处理是主回路输出经过限幅后作为副回路 SP副回路输出经限幅后作为阀位给定。FUNCTION_BLOCK FB_CascadeHeatExchanger // 换热器温度-流量串级控制 // 主回路: 温度 PID - 输出作为流量设定 // 副回路: 流量 PID - 输出控制调节阀 TITLE Cascade Control VERSION : 1.0 VAR_INPUT TempPV : REAL; // 出口温度测量值 单位 ℃ TempSP : REAL; // 出口温度设定值 FlowPV : REAL; // 冷介质流量测量值 单位 m3/h ManualOut : REAL; // 手动模式下的阀位开度 % ModeAuto : BOOL; // TRUE自动串级 FALSE手动 Reset : BOOL; // 复位积分 CycleTime : TIME; // 采样周期 100ms END_VAR VAR_OUTPUT ValveOut : REAL; // 调节阀输出 % FlowSP : REAL; // 流量设定值(主回路输出) StatusWord : WORD; // 状态字 END_VAR VAR TempPID : FB_MyPID; // 温度主回路 PID 实例 FlowPID : FB_MyPID; // 流量副回路 PID 实例 TempOutMin : REAL : 0.0; // 主回路输出下限副回路 SP下限 TempOutMax : REAL : 30.0; // 主回路输出上限副回路 SP上限 FlowOutMin : REAL : 0.0; // 副回路输出下限 FlowOutMax : REAL : 100.0; // 副回路输出上限 END_VAR逻辑说明主回路和副回路各用了一个 PID 功能块实例。TempOutMax 的取值范围很关键它代表流量回路设定值的上限比如正常流量是 20m3/h最大允许流量是 30m3/h那么主回路输出上限就设为 30。如果忘了限幅温度偏差大时主回路输出会冲到 100流量设定变成 100m3/h副回路拼命追也追不上流量回路长期处于饱和状态流量剧烈震荡。4.2 主回路输出限幅与副回路跟踪的逻辑// 串级投用顺序: 先副回路手动 → 副回路自动 → 主回路自动 // 任何时候切手动, 主回路输出跟踪当前流量设定, 副回路输出跟踪当前阀位 IF NOT ModeAuto THEN // 手动模式 FlowPID.TrackValue : ManualOut; // 副回路跟踪手动阀位 FlowPID.TrackEnable : TRUE; TempPID.TrackValue : FlowPV; // 主回路输出跟踪当前流量 TempPID.TrackEnable : TRUE; ValveOut : ManualOut; StatusWord : 16#0001; // 手动状态 ELSE // 自动串级模式 TempPID.SP : TempSP; TempPID.PV : TempPV; TempPID.CycleTime : CycleTime; TempPID.Enable : TRUE; TempPID.TrackEnable : FALSE; TempPID.RunFB(); // 主回路输出限幅后作为副回路 SP FlowSP : LIMIT(TempOutMin, TempPID.Out, TempOutMax); FlowPID.SP : FlowSP; FlowPID.PV : FlowPV; FlowPID.CycleTime : CycleTime; FlowPID.Enable : TRUE; FlowPID.TrackEnable : FALSE; FlowPID.RunFB(); // 副回路输出限幅后作为阀位输出 ValveOut : LIMIT(FlowOutMin, FlowPID.Out, FlowOutMax); StatusWord : 16#0002; // 串级自动状态 END_IF;逻辑说明ModeAuto 为 FALSE 时是两个 PID 都处于跟踪状态主回路输出跟踪当前流量、副回路输出跟踪手动阀位这样手动转自动的瞬间主回路输出等于当前流量设定、副回路输出等于当前阀位不会有跳变。切到串级自动时先运行温度 PID 计算限幅后把结果写成流量 SP再运行流量 PID 计算限幅后输出阀位。那一条 FlowSP 赋值语句就是串级控制的核心连接——主回路输出不直接对应阀门开度而是对应流量设定值这个量纲上的差别经常让初次接触的人困惑。LIMIT 函数是西门子 SCL 的标准指令LIMIT(MIN, IN, MAX) 把输入限制在 MIN 和 MAX 之间。这里要特别讲一下 FlowSP 的限幅下限设 0 相对安全但必须大于流量计的量程下限否则流量为负时副回路会追一个不存在的负流量上限设置要考虑两个约束——换热器最大允许流量和副回路 PID 的可控范围一般取正常流量的 120%~150%。在 DCS 组态里这一步常在 CMP 块后面加一个 H/L LIMIT 块作用完全相同。4.3 手自动无扰切换与抗积分饱和逻辑PID 控制里最被低估的环节是手自动切换。现场操作工不会管你算法多先进切换瞬间阀位如果跳了 20%下次就不会有人敢用自动。无扰切换的本质是让 PID 的积分项在切换前跟踪实际输出这一点在自定义 PID 里特别容易做到。// 抗积分饱和与无扰切换核心 IF TrackEnable THEN IntSum : TrackValue; // 跟踪模式下积分跟随外部值 ELSE // 正常控制模式下的积分累加 IntSum : IntSum (Gain * CycleSec / Ti) * Err; // 输出限幅与积分抗饱和 Out : LIMIT(OutMin, Gain * Err IntSum, OutMax); // 输出达上下限时, 冻结积分, 防止深度饱和 IF Out OutMin THEN IntSum : IntSum - MAX(0.0, Gain * Err IntSum - OutMin); ELSIF Out OutMax THEN IntSum : IntSum - MIN(0.0, Gain * Err IntSum - OutMax); END_IF; END_IF;逻辑说明TrackEnable 为 TRUE 时积分项直接等于跟踪值这是无扰切换的实现核心。控制器从手动切自动瞬间PID 输出等于当前手动阀位偏差为 0 或很小输出自然连续。比较讲究的实现是让积分项跟踪跟踪值减去比例项而不是直接等于跟踪值这样切自动瞬间比例项不会额外叠加一个跳变。抗饱和的逻辑是输出到达上限时如果继续累加积分流量偏差会不断把 SP 顶在上限等温度回落时阀门迟迟退不下来。这里用的是冻结积分法输出到上限时只允许积分往减小的方向走不允许继续增大。另一种常见的做法是积分限幅法直接对 IntSum 做高限低限在串级控制里推荐用冻结法因为它能更自然地处理主回路输出限幅与副回路 SP 上限之间的配合。5. 参数整定与常见故障排除5.1 先副后主的整定步骤与经验参数表串级控制参数整定的顺序固定是先副后主副回路整定只追求快和稳主回路整定才追求温度精度。副回路整定时把主回路切手动手动给出一个固定的流量 SP比如正常流量的 80%然后对副回路 PID 做整定。目标是流量实际值对流量 SP 的跟随要快、无超调或很小超调这一环整好了主回路面对的是一个叫它去流量 A 它就能到 A的快速对象线性度和响应速度都大幅改善。副回路通常用 PI 就够了加微分容易把流量测量的噪声放大。整定方法可以用临界比例度法也可以用试凑法。试凑时先设 Gain 一个偏小的值比如 0.3 到 0.8Ti 从 5 秒开始每调一次观察流量趋势曲线流量波动收敛快、阀门不频繁动作就算合格。副回路整定合格的标准是流量给定变化 20% 时实际流量在 10 秒内跟上且超调小于 5%。主回路整定在副回路自动运行的基础上进行。主回路对象包括副回路闭环和被控温度对象整体滞后比单回路控制时略小但仍是慢对象所以主回路的 Gain 通常不大Ti 却要大得多。| 控制回路 | Gain | Ti (s) | Td (s) | 采样周期 | 说明 | | --- | --- | --- | --- | --- | --- | | 流量副回路 | 0.3~0.8 | 3~10 | 0 | 100ms | 先整定追求快且稳 | | 温度主回路 | 0.5~2.0 | 60~200 | 0~10 | 500ms | 后整定追求温度无余差 | | 温度主回路(滞后3min) | 0.3~0.8 | 180~400 | 15~30 | 1000ms | 大滞后时考虑微分或改用PID |表格中的 Gain 是比例增益无量纲在西门子 PID_Compact 里对应 Proportional gain。Ti 的单位是秒对应积分时间常数Td 对应微分时间常数。主回路参数跨度大原因是不同换热器的热容、换热面积、介质流速差别悬殊表里的范围只作起点你从最小组合开始加比直接取中间值更稳妥。5.2 副回路振荡、主回路发散怎么查串级控制投运后最常见的两类故障是副回路持续振荡和主回路发散。副回路振荡的表现是流量始终在 SP 上下 5% 以上波动阀门频繁动作声音听着就像电钻。常见原因有三个流量计信号有周期性脉动尤其涡街流量计在小流量时这时先查 DSP 设置的滤波时间把滤波增加到 2~5 秒再看副回路 Gain 偏大流量对阀门动作过于敏感呈现等幅振荡把 Gain 降到原来的 60% 再试再就是阀门定位器灵敏度太高实际阀位在目标值附近来回过冲这时需要在定位器里调大死区。主回路发散的表现是温度不但没稳定反而越偏越远波动幅度比投串级前还大。最典型的原因是副回路响应太慢主回路输出的流量 SP 变化后流量实际值跟不上温度 PID 以为没效果继续加大输出形成主回路激进、副回路迟钝的恶性循环。排查步骤是先切手动稳住阀位检查副回路整定是否达标——如果副回路本身就不行主回路参数再准也白搭。另一个常见错误是正反作用方向设反。温度升高时需要关小蒸汽阀温度变送器量程增大方向是正作用如果 PLC 里把负反馈设成了正反馈温度偏高时反而开大阀门温度直奔上限。凡是出现设定值一变实际值往反方向冲的情况优先检查回路作用方向。5.3 零流量信号与换热器保护的连锁规则串级控制里流量信号异常是最危险的故障。流量变送器断线、电源掉电、信号线松动都会让流量 PV 跌到 0如果副回路还在自动状态它看到 SP 是 20 而 PV 是 0会全力开大阀门——蒸汽换热器这时可能超温水-水换热器则可能憋压。因此零流量信号必须进入联锁逻辑。// 零流量联锁保护 IF FlowPV 0.5 AND NOT FlowSensorFault THEN // 流量低于量程下限 5% 视为断线或阻塞 FlowSensorFault : TRUE; END_IF; IF FlowSensorFault THEN ModeAuto : FALSE; // 强制切手动 ValveOut : ManualOut; // 保持当前阀位或按安全位置输出 FaultLight : TRUE; // 发出报警: 流量信号异常, 串级已退出 END_IF;逻辑说明流量低于量程下限的 5% 且持续时间超过 2 秒判定为流量信号故障强制把控制器切回手动并保持当前阀位。这里不直接关阀是因为阀门突然全关可能造成水击或换热器冻堵保持当前阀位加声光报警更安全。工程上更稳妥的做法是切手动的同时把阀位设为预设的安全开度这个开度在调试纪要里由工艺人员签字确认。联锁逻辑要放在 PID 计算之前保证流量故障期间 PID 处于跟踪状态故障恢复后切回串级依然无扰。复位按钮要等故障排除后由操作人员手动确认不能自动复位防止流量计断断续续导致控制器频繁切进切出。如果换热器下游有重要工艺设备流量低低联锁还应该同时触发换热器旁路阀切换或者上游泵停机这部分属于装置级安全联锁系统的范畴不与控制联锁混用。6. 投运时能救场的几个验证技巧6.1 用趋势曲线验证串级投运的 4 个判据串级投运后不要只看温度波动范围四个判据能帮你判断方案真的有效还是只是看起来在自动。第一温度 SP 改变 2℃ 时温度实际值应在 3~5 个主回路时间常数内跟上且无余差超调量小于 10%。第二改变流量 SP 前先记录当前阀位流量回路稳定后阀门应停留在合理区间20%~80%如果阀门长期在上限或下限附近挣扎说明副回路负载系数设计不合理。第三人为制造蒸汽压力波动比如开大旁路阀 5%观察温度曲线投串级前的温度波动应在 1.5~2℃ 范围投串级后应压缩到 0.5℃ 以内如果波动没有明显变化先检查流量副回路是否真的在起调节作用。第四手自动切换瞬间阀位输出不应出现超过 2% 的跳变。这四条在博途的 Trace 里都能方便地验证把 TempPV、FlowPV、ValveOut、ModeAuto 四个变量拉入趋势曲线手动打标签分析。6.2 从方案到现场参数表、联锁逻辑和操作工培训PDF 方案落到现场最后一步是把它变成操作工看得懂的调试单。我习惯准备一张 A4 参数表包含每个回路的 Gain、Ti、Td、正反作用、量程上下限、SP 上下限一栏一栏填好调试完由工艺和仪表双方签字确认。这张表的价值在半年后设备检修或仪表更换时体现——新人照着表就能恢复参数不需要翻原 PDF 找控制方案描述。操作工培训要讲清楚三个画面串级模式指示、手动/自动切换按钮、流量 SP 的数值显示。很多人看到流量 SP 在自动变化会误以为系统有故障必须强调流量 SP 是主回路自动算出来的不是操作工设的手动状态下流量 SP 跟随实际流量切自动时才无扰接上。给 PID 参数整定留一个手自动切换画面方便他们觉得控制不理想时切回手动稳住工况再打电话叫仪表人员来调。串级这层关系跟操作工讲透比留一堆电子文档管用得多。本文还有配套的精品资源点击获取
RELATED READING

延伸阅读

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