ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

基于Simulink的锅炉燃烧控制系统建模与PID整定

基于Simulink的锅炉燃烧控制系统建模与PID整定 简介面向自动化、控制工程及热能动力专业学生和工程技术人员的锅炉燃烧过程控制系统仿真设计文档。内容围绕火电厂锅炉燃烧工艺设计了蒸汽压力控制、燃料与空气比值控制、炉膛负压控制三个子系统其中蒸汽压力采用单回路控制、炉膛负压采用串级控制、燃料与空气则按比值进行调节随后基于MATLAB/Simulink搭建仿真模型经PID参数整定后验证系统在扰动下的稳定性。文档从引言、控制系统构成与控制方式、各子系统设计、仿真模型实现到结论均有较完整论述可作为课程设计、毕业设计或现场人员理解燃烧控制逻辑的参考。包内为单个doc文档压缩包共1个文件大小807KB包含摘要、关键词、目录及正文内容结构清晰便于查阅和二次编辑。目前已有155人学习下载适合需要借鉴Simulink建模思路和燃烧控制回路设计方法的读者。1. 炉膛负压是锅炉运行里最先“报信”的参数炉膛负压不像汽包水位那样有直观的显示负压一开始波动往往是送风量、燃料量或引风机状态变化的第一信号。燃烧过程控制通常被拆成蒸汽压力、燃料空气比值、炉膛负压三个子系统但它们在同一个炉膛里互相耦合燃料量增加蒸汽压力上升同时炉膛负压也会被扰动。这也是为什么只做单回路很难做好燃烧控制。Simulink 适合做这件事是因为系统可以先写成带纯滞后的传递函数再把燃料回路、空气比值回路和负压前馈-反馈回路放进同一个模型用阶跃响应和 Bode 图判断整定方向。仿真不能替代现场投运但它能把参数调反、方向接错这类风险提前暴露。这篇内容适合正在做过程控制课程设计、准备热工自动化面试或者想把 Simulink 控制仿真从“搭得出来”升级到“整定得明白”的人。2. 燃烧过程被控对象辨识与传递函数建模2.1 为什么三个子系统不能孤立建模燃料量不仅影响蒸汽压力还通过烟气量和送风量影响炉膛负压蒸汽压力波动又会反过来改变燃料调节阀的工作点。建模时除了单回路对象还要保留扰动通道。火电厂锅炉燃烧系统的常见做法是先把现场阶跃响应数据整理成带纯滞后的一阶惯性环节再在 Simulink 里用传递函数块搭建。此时对象模型不需要非常精确关键是把时间常数、增益、纯滞后这三个参数定准因为它们直接决定 PID 整定的方向和稳定裕量。2.2 燃烧子系统的被控对象模型整理按照锅炉燃烧过程辨识结果可以把通道模型整理成下表。这里的时间常数和滞后都是标幺化后的数值单位是秒和百分比不同机组会有差异但结构大致相同信号通道传递函数作用燃料阀指令 - 燃料流量(2e^{-3s}/(13s1))燃料主通道增益 2纯滞后 3 s燃料流量 - 蒸汽压力(1/(3s1))燃烧产热到汽压的惯性环节蒸汽压力 - 燃料流量反馈(1/(s1))流量检测变换近似小惯性送风门开度 - 空气流量(e^{-2s}/(11s3))送风通道时间常数较小引风机挡板 - 炉膛负压(10e^{-5s}/(17s1))负压主通道增益 10滞后较长送风量 - 炉膛负压扰动(2/(3s1))送风量扰动负压的通道这些模型在 MATLAB 里可以用tf直接构造代码很短s tf(s); G_fuel 2 * exp(-3*s) / (13*s 1); % 燃料主通道 G_steam 1 / (3*s 1); % 燃料流量到蒸汽压力 G_air 1 * exp(-2*s) / (11*s 3); % 送风通道 G_draft 10 * exp(-5*s) / (17*s 1); % 引风到炉膛负压 G_dist 2 / (3*s 1); % 送风量对负压的扰动说明exp(-3*s)在 MATLAB 中表示纯滞后 (e^{-3s})等价于 Simulink 里的 Transport Delay 模块。增益、时间常数和滞后三个参数决定对象动态后续 PID 整定全部围绕它们展开。2.3 从传递函数到 Simulink 模块的映射Simulink 里搭建这类模型有两种常见方式一种是直接拖 Continuous 库的 Transfer Fcn 和 Transport Delay另一种是把tf对象写入工作区再拖一个 LTI System 块引用变量。我一般推荐后者因为批量整定 PID 时只需改工作区的对象参数模型图不需要改动。LTI System 块可以直接接收带输入延迟的对象但仿真步长要小于最小时间常数。燃料对象最小时间常数是 13 s看起来步长可以大一点但前馈补偿里还有 (1/(s1)) 这类快速环节采样周期最好小于 0.1 s否则会引入额外相位误差。3. 串级、比值与前馈-反馈三个子系统的控制方案设计3.1 蒸汽压力控制内环燃料、外环汽压蒸汽压力对象包含燃料流量对象和燃料-汽压对象整体纯滞后约 3~6 s。直接用单回路控制比例增益稍微加大就容易振荡。常见做法是把燃料流量回路作为内环蒸汽压力作为外环构成串级控制。内环用 PI 控制器外环用 PID。外环输出是燃料流量给定内环输出是燃料阀开度。这样内环可以快速消除燃料阀非线性、燃料压力波动带来的扰动外环只负责把蒸汽压力拉回设定值。串级连接时要注意两个控制器的输出限幅外环 PID 输出作为内环给定一般限制在 0~100% 燃料量内环 PI 输出限制在 0~100% 阀位。限幅设置不当积分饱和会把内环给定推到超出物理范围仿真结果会出现很长时间的平顶段。3.2 燃料空气比值控制的实现燃料-空气比值控制不是简单做除法而是要保留过量空气系数。常规实现是蒸汽压力调节器输出燃料量设定值 (F_{sp})乘以比值系数 (K) 得到空气量设定值 (A_{sp})然后空气流量回路跟踪 (A_{sp})。(K) 的初值根据燃料低位发热量和理论空气量计算现场再用烟气氧量修正。在 Simulink 中比值系数用一个 Gain 模块实现。为了避免燃料波动时送风量滞后导致燃烧不充分实际工程里会在 (K) 后面加一个超前环节形成“燃料-空气交叉限制”。本次仿真先做基本比值控制交叉限制可以留到后续扩展。3.3 炉膛负压控制前馈-反馈结构炉膛负压的主要扰动来自送风量。送风量由空气回路决定燃料量变化会先引起送风量变化再引起负压变化。如果只靠负压反馈要等负压偏差出现后引风机才动作动态偏差比较大。常用方案是前馈-反馈前馈信号取自送风量经过补偿器送到引风机指令反馈回路使用负压 PID 对残余偏差修正。静态前馈增益按扰动通道增益与主通道增益之比计算K_ff dcgain(G_dist) / dcgain(G_draft); % 静态前馈系数 G_ff -K_ff * (17*s 1) / (5*s 1); % 加入超前滞后近似补偿方向解释送风量增加会导致炉膛负压发生变化引风量需要朝相反方向调整所以补偿器带负号。(17s1)/(5s1) 是超前滞后环节(5s) 是经验初值需要根据闭环响应调整。下表是三个子系统的控制策略汇总子系统被控量操纵量主要扰动控制结构控制器蒸汽压力汽包/主汽压力燃料阀开度负荷变化串级外环 PID内环 PI燃料空气比值空气流量/比值送风门开度燃料波动比值控制比值器 PI炉膛负压炉膛顶部负压引风机挡板送风量变化前馈-反馈前馈补偿 PID注意PID 正反作用是最容易搞错的地方。燃料流量对象增益为正燃料内环控制器应为反作用蒸汽压力随燃料量增加而升高外环控制器也是反作用。如果 Simulink 仿真一开始就发散先检查 PID 的 P 和 I 是否接反不要急着改参数。4. PID 参数整定与系统稳定性校验4.1 用 margin 函数求稳定裕量整定 PID 之前先看对象开环 Bode 图。燃料对象 (2e^{-3s}/(13s1)) 有一个极点和一个纯滞后相位裕量会随滞后增大而下降。MATLAB 的margin函数可以快速得到幅值裕量和相位裕量figure(1); margin(G_fuel); grid on; [Gm, Pm, Wcg, Wcp] margin(G_fuel); fprintf(GM %.2f dB, PM %.2f deg\n, 20*log10(Gm), Pm);注意margin返回的Gm是线性幅值比不是 dB输出时要乘20*log10。纯滞后对象在穿越频率处相位下降明显如果相位裕量小于 30°就必须限制控制器比例增益。4.2 时域指标与 PID 初值参考整定 PID 时我会先用衰减曲线法估算初值再在 Simulink 里微调。下面的初值适用于本次锅炉燃烧模型单位采用百分比和工程秒回路PID说明燃料内环流量 PI0.8~1.20.05~0.10内环不要加 D流量噪声大蒸汽压力外环 PID0.4~0.60.02~0.050.2~0.5D 项作用在测量值上不要作用在误差上空气流量 PI1.0~1.50.08~0.150风量对象响应快积分时间不宜太小负压 PID1.5~2.50.3~0.50.1负压回路允许较强比例以上初值基于单位反馈、执行机构近似比例环节。如果对象增益不同先做增益归一化把开环增益折算到 1 附近再整定。4.3 阶跃响应验证与采样时间整定完成后用step观察闭环响应。系统带滞后阶跃响应早期会出现水平段这是正常现象但如果出现等幅振荡优先怀疑 PID 增益过大或积分时间太小。仿真中经常遇到的“数值发散”多数情况不是参数问题而是求解器步长不合理。Simulink 里建议使用固定步长 ode4步长 0.01 s仿真时长 200 s这样既能覆盖 17 s 时间常数的负压对象又不会让滞后环节的插值误差过大set_param(boiler_combustion, Solver, ode4, FixedStep, 0.01); set_param(boiler_combustion, StopTime, 200); sim(boiler_combustion);另外不要在燃料内环使用纯微分。燃料流量信号本身带测量噪声D 项会放大噪声使阀门指令高频抖动。需要微分作用时只加在外环蒸汽压力上并且把 D 项滤波系数设置成大于 10 的数值。5. Simulink 模型搭建与三个子系统仿真验证5.1 总体模型结构模型建立四个一级通道燃料主通道、空气比值通道、负压通道、送风量到负压的扰动通道。信号流从蒸汽压力给定开始SP 经过外环 PID 得到燃料量给定燃料流量闭环输出进入燃料-汽压对象同时燃料流量信号乘以比值系数 (K) 作为空气流量 PID 的给定空气对象输出送风量送风量既进入炉膛负压加法器又作为前馈补偿器的输入。模块连接顺序如下蒸汽压力给定用 Step 模块加在加法器正端。蒸汽压力反馈来自燃料-汽压对象输出。外环 PID1 输出到燃料内环给定。内环由 PI、燃料对象、反馈组成。燃料流量信号同时进入比值器 Gain 模块。比值器输出作为空气流量 PI 的设定值。空气对象输出送风量送入负压对象加法器。送风量经前馈补偿器叠加到引风机 PID 输出。5.2 燃料内环和蒸汽压力外环仿真先单独调试燃料内环。给内环 PI 一个 50% 阶跃观察燃料流量跟随速度。燃料对象增益是 2反馈信号需要经过 1/2 的测量增益归一化否则给定和反馈之间存在静差。蒸汽压力外环投入后燃料量会随压力偏差变化。仿真时间 50 s 时给负荷阶跃观察汽压恢复过程。以本项目仿真结果来看内环调节时间通常在 15 s 以内外环在 60 s 以内恢复超调量小于 10%。5.3 空气流量比值回路实现比值回路不需要独立给定源燃料流量信号通过 Gain 模块 K 后直接接到空气 PI 的 Setpoint 端。K 的初值按理论空气量估算天然气取 9.5~10.5煤粉炉按过量空气系数 1.2~1.25 折算。仿真时先将 K 固定观察燃料阶跃时空气流量是否同步。如果空气流量跟踪滞后负压扰动会变大。此时可以把比值器后的纯增益改成带超前的时间领先模块相当于提前加大送风指令。5.4 负压前馈补偿仿真对比在负压回路中对比“仅反馈”“静态前馈反馈”“超前滞后前馈反馈”三种情况。仿真条件为燃料量在 30 s 时阶跃增加 10%记录炉膛负压最大偏差和恢复时间方案负压最大偏差/Pa恢复时间/s波动次数仅负压 PID 反馈62453静态前馈 PID38282超前滞后前馈 PID25181上表为本项目仿真对比结果。前馈补偿器方向一旦接反负压偏差会比不加前馈更大表现为送风量增加的瞬间负压突然向反方向跳变。检查方法很简单在送风量信号上加一个阶跃看引风机指令是否朝增大引风量的方向移动。方向正确后再调超前滞后时间常数。6. 从离线仿真到半实物Simulink 外部模式与模型整理技巧6.1 排查仿真发散优先看三个位置如果仿真发散先查执行机构是否加了限幅。没有限幅时PID 输出可能在积分作用下跑到上千而实际阀门早已开满。给 PID 输出加饱和模块限幅设为 0~100积分限幅同步设置。第二步检查代数环。负压前馈通道如果直接从送风量引出再接回空气回路容易形成代数环在送风量测量模块后加一个 (1e-3) 的小惯性可以打破代数环又不影响实际动态。第三步检查 PID 正反作用。前面已经强调过内环和外环方向接反是燃烧仿真最常出现的问题。6.2 外部模式、FMU 导出与模型引用当模型仿真通过想验证控制器在真实 PLC 或 DCS 上的行为可以先把 Simulink 模型切到外部模式。外部模式允许控制器模型运行在目标机上通过 Host 机在线调整 PID 参数适合参数快调set_param(boiler_combustion, SimulationMode, external); set_param(boiler_combustion, ExtModeTransport, 1);如果后续要做联合仿真或导出给其他工具使用可以把控制器子系统导出为 FMU。Simulink 的 Export To FMU 工具在 R2020a 之后已经集成。导出的 FMU 只包含控制器逻辑不包含锅炉对象模型这样上游热力系统仿真和下游 DCS 逻辑测试可以共用同一个控制器模型。最后是模型整理。多回路系统不要全挤在一个模型文件里。建议按“被控对象库”“控制器库”“顶层测试台”分层管理被控对象库里的 LTI System 块引用工作区变量控制器库里的 PID 块封装成 Subsystem顶层测试台只放信号发生器和 Scope。换一组锅炉参数时只需要更新工作区变量不需要改任何连线。模型引用比子系统复制更适合这种场景因为多个测试用例可以独立仿真同一个控制器模型不会出现多处副本参数不同步的问题。把 PID 输出限幅和采样步长的检查放在最前面比盲目调参数有效得多。本文还有配套的精品资源点击获取
返回列表