做燃气轮机热电联产项目前期方案,最让人头疼的往往不是满负荷设计,而是部分负荷性能。厂家给的保证值通常只写额定功率、额定热耗、满负荷排气温度这些点,可真要做调峰测算、供热方案比选、运行成本评估的时候,偏偏要回答"60%负荷时排气温度还剩多少、能回收多少热量、燃料要烧多少"。最近我把一篇关于单轴燃气轮机及其热电联产部分负荷性能解析解与典型特性的论文完整复现了一遍,把压气机-燃烧室-透平的功平衡关系推导成归一化表达式,再挂上余热锅炉模型,用几十行脚本就得到了从30%到100%负荷的完整性能曲线。这篇文章就记录推导思路、代码实现和调试经验,适合做概念设计、方案测算和运行优化的人参考。
1. 这篇论文到底解决了什么问题
先说结论:论文的核心贡献,是把"单轴燃气轮机+余热锅炉"这套热电联产系统在部分负荷下的功率、效率、排气温度、可回收热量,全部用一组解析或半解析表达式描述出来。不需要依赖厂家详细变工况曲线,只需要设计点几个参数。这样做工程的人就能在几分钟内完成一套性能估算,而不是翻手册或者对着商业软件发呆。
1.1 部分负荷曲线为什么这么难拿
燃气轮机不是只在额定点跑。电网调峰、昼夜负荷波动、热用户用汽量变化,都会让机组长期停留在部分负荷工况。对热电联产项目尤其明显:电负荷跟着电网调度走,热负荷跟着蒸汽用户走,两者经常互相错位。如果只按满负荷设计,后面一定出问题——热用户端汽量不足、余热锅炉实际产汽参数偏低、燃料单耗比预期高,这些都是"满负荷思维"留下的坑。
但想拿到精确的部分负荷曲线并不容易。厂家性能数据在招标、合同谈判阶段通常不会完全公开,尤其是带技术保密的变工况曲线。商业热力仿真软件虽然能算,但建模型、标定参数、学习软件本身都要时间,对前期方案阶段的快速迭代来说太笨重。论文走的"解析解"路线,恰好用很少的输入参数,换取了工程上足够用的精度。
1.2 解析解的价值不只是"能算"
解析解的核心优势,是把复杂的部件特性压缩成一组代数方程,方程连续、可导,可以直接放进优化算法里做灵敏度分析。我在复现之后的一个实际体会是:当你要回答"负荷率从70%降到60%,总效率变化多少""热电比怎么变"这类连续性问题,解析模型可以秒出结果,而查表或者数值仿真还要做插值、对齐、反复试算。另外一个隐藏价值是物理含义清楚——哪一项参数对效率影响大、哪个环节损失占比高,看公式结构就知道,比黑盒仿真直观得多。
当然代价是精度。解析模型通常把压气机效率、透平效率、燃气组分变化都当常数,或者用设计点修正系数吸收掉,所以中低负荷段会有偏差。我复现后对比几个公开典型特性,电效率趋势和排气温度趋势能保持高度一致,绝对值偏差大约在1~3个百分点内,用于方案比选绰绰有余。
1.3 这个模型适合什么场景
给模型划个使用边界很重要。适合用它的场景有三类:
- 手头只有额定功率、压比、透平初温等公开设计参数,没有厂家详细的变工况数据。
- 需要快速生成热电联产系统的"负荷-效率-产汽量"特性曲线,用于热网规划、冷热电三联供方案比选。
- 要把机组特性嵌进区域能源优化模型,解析式能提供连续、光滑的特性函数,避免优化器在分段离散点上震荡。
反过来,如果要出投标保证值、做燃烧调整、判断机组寿命,那就别用这套模型了,那种场合必须上详细设计软件和厂家实测数据。模型是"快速估算工具",不是"设计复核工具"。
2. 单轴燃气轮机解析模型的设计与推导
复现的核心在于把单轴机组在恒定转速下的"压比-温比-负荷"耦合关系梳理清楚。这一步做对了,后面所有输出都会顺理成章。
2.1 部件模型与设计点参数约定
单轴燃气轮机的热力循环,通常用四个状态点表达:压气机入口(1)、燃烧室出口/透平入口(3)、透平出口(4)。压气机耗功、燃烧室燃料量、透平做功三个方程构成了整台机组的骨架。
压气机出口温度按等熵压缩加效率修正计算:
T2 = T1 × [1 + (π^mc - 1) / ηc]
压气机耗功:
Pc = G × cpc × (T2 - T1)
燃烧室燃料量,把燃烧效率考虑进去:
mf = G × cpt × (T3 - T2) / (ηcc × LHV)
透平出口温度,用等熵膨胀加效率修正:
T4 = T3 × [1 - ηt × (1 - π^(-mt))]
透平做功:
Pt = G × cpt × (T3 - T4)
净发电功率:
P_net = (Pt - Pc) × ηm
这里面mc = (kc-1)/kc,mt = (kt-1)/kt,取压气机绝热指数1.40、透平绝热指数1.33,其他参数如表所示。
确定设计工况参数时,我按某型10MW级工业燃机的公开量级来取数,确保模型自洽:额定功率约10.3MW、压比12、TIT 1200℃、空气流量30kg/s。验算下来净功率10.3MW、简单循环电效率35%左右,落在同级别机型的合理区间。
| 参数 | 符号 | 数值 | 单位 |
|---|---|---|---|
| 环境温度 | T1 | 288.15 | K |
| 环境压力 | P1 | 101.325 | kPa |
| 空气流量 | G | 30.0 | kg/s |
| 压比 | π | 12.0 | - |
| 透平进口温度 | T3 | 1473.15 | K |
| 压气机效率 | ηc | 0.87 | - |
| 透平效率 | ηt | 0.89 | - |
| 燃烧效率 | ηcc | 0.99 | - |
| 机械/发电效率 | ηm | 0.98 | - |
| 空气比热 | cpc | 1.005 | kJ/(kg·K) |
| 烟气比热 | cpt | 1.150 | kJ/(kg·K) |
| 燃料低位发热量 | LHV | 50145 | kJ/kg |
2.2 恒定转速下的压比-温比耦合关系
前面公式里,给定T3还缺一个π。满负荷时π和T3都是设计值,部分负荷时两者怎么联动?单轴并网机组的转速恒定,透平通流面积又不变,这给了我们一个关键近似:只要透平膨胀比处于临界状态以上,通过透平的折合流量基本保持常数。
用公式写就是:
G × √T3 / P3 ≈ 常数
把P3近似看作压气机出口压力P2,两侧同除以环境压力P1,就能得到单轴机组部分负荷时最著名的近似关系:
π_part = π_d × √(T3 / T3_d)
这个关系可以这么理解:透平的喷嘴就像一个尺寸固定的"阀门",进口气体温度越高,气体膨胀越厉害,同样流量下需要更高的压力才能把它"挤"过去。所以TIT一降,压比也跟着降。这个近似是整个解析模型的胜负手。如果换成双轴机组,高压转子转速和动力透平转速解耦,就不存在这么简单的显式关系了,这也正是论文标题特意强调"单轴"的原因。
2.3 从负荷反解透平初温:解析解与数值求根
有了π≈f(T3)的关系,压气机耗功和透平做功都变成了T3的一元函数。给定目标净功率,就能反解T3。
把净功率表达式整理后,会发现它与T3的关系是幂函数叠加的形式。论文里通常会在设计点附近做泰勒展开,只保留线性项,于是得到形如:
P_net ≈ a × T3 + b
的显式式,由此推出T3 = (P_target - b) / a,这就是"解析解"最快的形式。a、b由设计点参数和斜率决定,不同负荷率可以连续求值,对优化算法非常友好。
我复现时没有死磕纯显式公式,而是直接用了数值求根。原因很简单:现代工程脚本里求根就是一行函数调用,比手工推导线性化系数更省事,还能保留非线性精度。论文里的解析解思路用来理解物理规律、生成初始迭代值;代码里用求根来精确求解,两者互补。实际做的时候,我会用T3_d × √load作为求根的初值,几分钟就能跑完全部负荷点。
3. 把模型扩展到热电联产:总效率与典型特性
单轴燃机的排气温度通常在500~600℃之间,直接排掉就是白白浪费。热电联产的价值,就是把这部分余热通过余热锅炉回收,变成用户可用的蒸汽或热水。
3.1 余热锅炉热回收模型
工程上最常用的简化模型,只关心烟气侧放热:
Q_heat = G × cpt × (T4 - T_stack) × η_HRSG
这里T_stack是烟囱排气温度,η_HRSG是余热锅炉的综合换热效率,包含散热损失、排烟损失等。
烟囱温度不能定得太低。燃机烧天然气时含硫量很低,酸露点相对低,但工程上习惯还是把排烟温度控制在130~150℃以上,避免低温腐蚀。我取了140℃,也就是413.15K。η_HRSG取0.80,对单压余热锅炉来说是比较普遍的工程量级。这套模型不会给你精确的蒸汽参数,但用来算"能回收多少热量、总效率到多少"完全够用。
3.2 总能源利用率与热电比
在热电联产系统里,效率不能只看发电。常用的三个指标:
电效率:
η_el = P_net / (mf × LHV)
热效率:
η_heat = Q_heat / (mf × LHV)
总能利用率:
η_total = η_el + η_heat
还有一个评价热电系统结构的重要参数——热电比:
β = Q_heat / P_net
需要特别强调计算口径:P_net是发电机出口电功率,Q_heat是热用户侧可用的有效热量,分母是燃料化学能。总能利用率反映的是"燃料能量中被有效利用的份额",做到75%~80%是完全合理的。这里不存在超过100%的悖论,因为电和热本来就不同品级,只要指标计算口径清晰,就不会踩误区。
3.3 典型特性曲线的物理趋势
用设计点参数跑完30%~100%负荷区间,得到一组非常典型的特性数据:
| 负荷率 | 透平初温T3(K) | 排气温度T4(K) | 电效率η_el | 热效率η_heat | 总效率η_total | 热电比β |
|---|---|---|---|---|---|---|
| 30% | ~920 | ~573 | 26.7% | 37.8% | 64.5% | 1.42 |
| 50% | ~1083 | ~658 | 30.6% | 40.3% | 70.9% | 1.32 |
| 75% | ~1279 | ~766 | 33.4% | 42.2% | 75.6% | 1.26 |
| 100% | 1473 | 870 | 35.0% | 42.9% | 77.9% | 1.23 |
这张表浓缩了热电联产部分负荷的几大典型特征:
- 电效率对负荷最敏感。从100%降到30%,电效率掉了8个多百分点,原因是透平初温下降、压比下降,简单循环的热效率被明显压缩。
- 热效率下降温和得多。负荷降了,排气温度降了,但空气流量基本不变,烟气仍然具有换热能力,所以热回收降幅滞后于发电量降幅。
- 总效率曲线相对平缓。这恰好说明热电联产系统具备很好的"部分负荷柔性",即便发电出力下降,整体燃料利用率依然能维持在较高水平。
- 热电比随负荷降低而升高。这个特性对热电解耦运行很重要,意味着在低负荷工况下,系统会表现得"更像一台锅炉"。
4. 复现实操:从公式到能跑的脚本
下面给出一套可以直接跑通的脚本框架。我用的是Python语言加开源数值库,这也是目前工程前处理最顺手的环境。
4.1 脚本结构与计算流程
整个脚本分三块:设计点校验、部分负荷求解、余热回收与输出。核心流程是:
- 先用设计点参数验算整机功率、效率,确认模型自洽。
- 对目标负荷率,用数值求根反解透平初温T3。
- 由T3顺推压比、排气温度、燃料量、电效率、回收热量、总效率。
4.2 核心代码逐段拆解
第一段,参数与部件方程:
import numpy as np from scipy.optimize import fsolve # 设计工况参数 T1 = 288.15 # 环境温度 K G = 30.0 # 空气流量 kg/s pi_d = 12.0 # 设计压比 T3_d = 1473.15 # 设计透平初温 K cp_c = 1.005 # 空气比热 kJ/(kg.K) cp_t = 1.150 # 烟气比热 kJ/(kg.K) kc = 1.40 # 空气绝热指数 kt = 1.33 # 烟气绝热指数 eta_c = 0.87 eta_t = 0.89 eta_cc = 0.99 eta_m = 0.98 LHV = 50145.0 # 天然气低位发热量 kJ/kg mc = (kc - 1.0) / kc mt = (kt - 1.0) / kt def compressor_outlet(T1, pi, eta_c=eta_c): return T1 * (1.0 + (pi**mc - 1.0) / eta_c) def turbine_outlet(TIT, pi, eta_t=eta_t): return TIT * (1.0 - eta_t * (1.0 - pi**(-mt))) def gas_turbine_cycle(T3): # 恒定转速下的压比-温比耦合近似 pi = pi_d * np.sqrt(T3 / T3_d) T2 = compressor_outlet(T1, pi) T4 = turbine_outlet(T3, pi) Pc = G * cp_c * (T2 - T1) Pt = G * cp_t * (T3 - T4) P_net = (Pt - Pc) * eta_m mf = G * cp_t * (T3 - T2) / (eta_cc * LHV) eta_el = P_net / (mf * LHV) return pi, T2, T4, P_net, mf, eta_el第二段,设计点校验与负荷反解:
# 设计点校验 pi_d0, T2_d, T4_d, P_net_d, mf_d, eta_el_d = gas_turbine_cycle(T3_d) print(f"设计点: 净功率 {P_net_d:.1f} kW, 电效率 {eta_el_d*100:.1f}%") def solve_tit_for_load(load_ratio): # 目标负荷功率 P_target = P_net_d * load_ratio # 初值取设计点按负荷率折算,再给一点偏置 x0 = T3_d * np.sqrt(load_ratio) + 50.0 def residual(T3): _, _, _, P_net, _, _ = gas_turbine_cycle(T3) return P_net - P_target return fsolve(residual, x0=x0)[0]第三段,余热回收与结果汇总:
T_stack = 413.15 # 烟囱温度 140℃ eta_hrsg = 0.80 # 余热锅炉综合效率 def hrsg_heat(T4): return G * cp_t * (T4 - T_stack) * eta_hrsg loads = np.linspace(0.3, 1.0, 8) # 30%~100%负荷 print("负荷率 T3(K) T4(K) Pnet(kW) Qheat(kW) eta_el eta_total chi") for r in loads: T3 = solve_tit_for_load(r) _, _, T4, P_net, mf, eta_el = gas_turbine_cycle(T3) Q_heat = hrsg_heat(T4) mf_LHV = mf * LHV eta_total = (P_net + Q_heat) / mf_LHV chi = Q_heat / P_net print(f"{r*100:.0f}% {T3:.1f} {T4:.1f} {P_net:.0f} {Q_heat:.0f} " f"{eta_el*100:.1f}% {eta_total*100:.1f}% {chi:.2f}")这段脚本跑出来的数据,就是上一节表格里的那些值。要注意的是,低负荷时fsolve对初值敏感,上面取了T3_d * sqrt(load)作为初值,同时加了50K的偏置,这是调试后比较稳的组合。
4.3 运行结果与曲线判读
脚本运行后会直接输出负荷、透平初温、排气温度、净电功率、回收热量、电效率、总能利用率和热电比。把数据扔进绘图脚本画出来,会看到三条形状完全不同的曲线:电效率单调下降较快,热效率平缓下降,总效率从78%慢慢滑到65%附近。典型特性一目了然。
我复现时最关注的检查项是:满负荷电效率是否落在35%左右、低负荷电效率是否低于满负荷、热回收量是否始终为正、总效率是否始终小于100%。这几条只要都成立,模型基本就是自洽的,后续按需调整参数即可。
5. 调试现场:五个最容易踩的坑
复现过程中我踩了不少坑,有些是物理建模问题,有些纯属工程习惯问题。挑五个典型记录下来,能帮你少走弯路。
5.1 低负荷算不出来,根直接飞了
第一次跑脚本,负荷率低于30%时fsolve直接报错或者解出负温度。原因很简单:解析模型里T3降得太低,排气温度几乎接近烟囱温度,热回收热量趋近于零,方程组进入病态区。真实机组低负荷时也不可能维持模型假设的恒定流量和恒定效率,燃烧室稳燃、辅助蒸汽、机组最小技术出力这些约束开始起作用。解决办法:给模型设定使用下限,我统一取30%负荷作为最低工况点;如果必须算更低,就得换更详细的变工况模型。
5.2 效率曲线出现"越走越高"的假象
有一次跑出部分负荷电效率比满负荷还高,我检查了很久,最后发现是透平初温迭代初值给得不对,导致求根落到了非物理解上。具体表现是T3解得很低,但压比算得很高,两个参数失配。根源在于π = π_d × sqrt(T3/T3_d)是强耦合约束,不能单独调一个变量。排查方法很简单:把每一个负荷点的π、T3、T2、T4打出来,看看是否满足单调递增关系。如果出现T3下降但π上升,一定是迭代出了问题。
5.3 排气温度和热回收量对不上实测预期
模型里排气温度随负荷下降比较线性地下降,但实际机组配了IGV后,中低负荷段排气温度会被"托住",并不像模型预测的那么低。我刚复现完拿它跟公开典型曲线对比,发现50%负荷时模型排气温度偏低了几十度。这不是计算错误,而是IGV调节导致低负荷段流量减少、TIT维持较高,排气温度自然更高。理解这个偏差来源很重要,最简单的修正办法是给空气流量加一个随负荷变化的修正系数,后面会说。
5.4 与厂家数据对不齐,问题多半在IGV
厂家变工况曲线和模型对不齐,我几乎不怀疑模型方程本身,优先怀疑两个假设:空气流量恒定、效率恒定。实际单轴机组在中高负荷段为了保持较高排气温度,会主动关小IGV,导致流量下降、效率曲线形态和模型不同。复现论文里的解析模型大多为了简洁忽略了IGV,所以在做工程对比时,要明确模型对应的是"无IGV调节的理想单轴机组",而不是某台具体的带优化控制策略的机组。真要接手实际机组数据,建议把IGV修正项加进去。
5.5 单位混用导致"万倍跳变"
这个坑最蠢但最容易犯。G是kg/s,cp是kJ/(kg·K),温差是K,三者相乘得到的是kW。但燃料量mf也是kg/s,乘以LHV得到kW。整条链路里只要哪个地方用了MW和kW混用、或者把LHV当成kJ/kg却又不除以1000,结果就会差出千倍甚至上万倍。我的检查习惯是:每步计算都标注单位,跑通后用设计点功率反推一次,确保满负荷净功率在同一量级,再去做部分负荷扫描。
6. 这个模型还能往哪里扩展
解析模型最大的优势是方便扩展。复现完基本版之后,我顺手加了三个常用修正,工程里价值不小。
6.1 引入IGV调节修正
针对前面提到的问题,IGV修正可以这么处理:定义折合流量修正系数f_igv(load),空气流量G_part = G_d × f_igv,同时透平初温的求根式也会相应变化。修正后的典型效果是:中低负荷段效率抬高、排气温度抬高,曲线更接近真实带IGV机组。具体修正系数可以用少量实测点拟合,也可以用厂家公开曲线反算,适合在方案阶段做快速标定。
6.2 环境温度修正与折合负荷率
燃气轮机出力受环境温度影响极大,夏天气温升高,满负荷发电能力可能下降10%以上。引入环境温度修正有两种思路:要么把设计点参数随T1重新标定一遍,要么用折合负荷率把实际出力归一到标准工况。前一种做法更直接,后一种更适合做全年逐时能耗模拟。我在做区域能源规划时,会在模型外套一层环境温度扫描,直接生成"不同温度-不同负荷率-总效率"的三维曲面。
6.3 从能量指标到经济与碳排放指标
解析模型把电功率、热功率、燃料量都算清楚了,后面接经济指标就很容易:燃料成本、售电收入、供热收入、单位发电碳排放、单位供热量碳排放,都是一步代数运算的事。这让我在做热电联产项目可行性研究时,可以直接用一套模型完成"技术特性+经济性"联算,不用再手工把效率曲线搬进Excel。
复现这篇论文给我的最大收获,是明白了解析模型在工程前期的独特位置:它不能替代详细仿真,却能让你在十分钟内对一台机组的部分负荷行为形成肌肉记忆。后续我打算把双轴燃气轮机联合循环的部分负荷特性也按这个思路重构一遍,那套模型的压比-温比耦合会更复杂,但拆开来看,依然是功平衡和质量守恒这两条主线在支撑。