前阵子帮人做园区能源方案,运营方问了一句:能加上氢能吗?我第一反应不是兴奋,而是头大——因为氢能一旦进来,原本熟门熟路的电热平衡计算全要推翻重来。后来项目做完,回头再看,这句话问得其实非常准:综合能源系统的热电优化,最难的不是凑设备,而是让电、热、气、氢这些不同品类的能量在同一套账本里协同调度,顺便把碳成本也算明白。这篇文章就拿这套模拟项目讲讲,从设备建模、平衡约束、目标函数,到氢能的运行策略、碳税敏感性,完整走一遍热电优化的思路和坑。
1. 为什么热电优化让人头疼
1.1 综合能源系统的“综合”并不好搞
所谓综合能源系统,就是把常规的电网、热网、气网放在一起考虑,再往里加入光伏、储能、氢能这些新角色。听起来很丰满,实际操作时会发现,每个设备都有自己的脾气:燃气轮机有最小出力限制,电解槽不能频繁启停,储氢罐不能充到100%,电锅炉响应快但用电成本贵。把这些约束同时满足,本身就是一道复杂的数学题。
这个项目的场景并不特殊:一个园区,冬季典型日,有电负荷、热负荷,屋顶装了光伏,还有一套现成的热电联产机组,业内一般叫CHP(Combined Heat and Power)。传统的做法很简单:CHP发电,余热用来供热,不够的热由电锅炉补,电不够就向电网买。问题在于,CHP的发电量和供热量是绑定在一起的,热电比基本固定,而园区的电负荷曲线和热负荷曲线又是独立变化的,这就产生了第一层矛盾。
举个具体例子:深夜时段,热负荷还有1.5到2兆瓦,但电负荷只有1.2兆瓦左右。CHP如果为了供热多开,发的电就多余了,要么廉价上网,要么浪费;如果为了让电负荷匹配而压低CHP出力,热又不够,只能靠电锅炉从电网买高价谷电来制热。这就是热电耦合带来的“两难”。
1.2 热电解耦:用氢能打破固定热电比的枷锁
氢能之所以在这个项目里成为关键角色,是因为它天然具备“解耦”能力。电解槽把电变成氢,储氢罐把氢存起来,燃料电池再把氢变回电和热。整个过程实现了能量的时间平移和形式转换:白天光伏多、电价便宜的时候制氢,晚上电贵、热缺的时候再用燃料电池发电供热。
这个思路听起来顺理成章,但真正把它放进优化模型时,你才会发现事情没那么简单。氢能不是一个“加速就能用”的储能设备,它涉及到电、热、氢三条平衡约束的联动:电解槽耗电,燃料电池同时产电和产热,储氢罐有自己的容量和SOC上下限。每多一个设备,模型的维度就高一层,搜索空间和求解难度都上去了。
更现实的问题是经济性。谷电制氢再晚峰发电,中间经过电解槽效率、储氢损耗、燃料电池效率,整体“电到电”的往返效率只有30%左右,单看电力是不划算的。但氢能的价值恰恰不只在电,还在于它晚峰发电时能同时回收余热,替代掉一部分高价电锅炉供热,相当于一份投入买了两样东西。这种“交叉补贴”效应,是热电优化里最值得挖的地方。
2. 我搭的一套模拟项目:设备、参数与模型
2.1 系统里都有什么设备
所有优化问题都要先明确边界,这个模拟项目X的系统边界是这样的:外部电网、燃气轮机CHP机组、光伏、电解槽、储氢罐、燃料电池、电锅炉。没有单独加蓄电池,因为氢能本身承担了一部分储能功能,再多加一个电储能,模型对比维度会更乱,不方便讲清楚热电关系。
我把设备参数整理成了一张表,这张表是整个优化的基础,所有计算都从这里出发:
| 设备 | 关键参数 | 数值 | 说明 |
|---|---|---|---|
| CHP机组 | 发电容量 | 2 MW | 燃气内燃机,可调出力 |
| CHP | 发电效率 | 40% | 燃料热值中转为电的比例 |
| CHP | 余热回收功率 | 2.25 MW | 额定工况下回收烟气余热 |
| CHP | 最小技术出力 | 0.6 MW | 低于此值运行不稳定 |
| 光伏 | 装机容量 | 3 MWp | 冬季典型日实际峰值约1.8 MW |
| 电解槽 | 额定功率 | 0.5 MW | 质子交换膜电解槽 |
| 电解槽 | 制氢效率 | 55% | 按氢气低位热值折算 |
| 电解槽 | 额定产氢量 | 8.3 kg/h | 满功率工况 |
| 储氢罐 | 储氢容量 | 200 kg | 高压储氢 |
| 储氢罐 | 可用SOC范围 | 10%~90% | 防止过充过放 |
| 燃料电池 | 额定发电功率 | 0.3 MW | PEM燃料电池 |
| 燃料电池 | 发电效率 | 50% | 电流密度中高工况 |
| 燃料电池 | 余热回收功率 | 0.24 MW | 满发时回收 |
| 电锅炉 | 额定制热功率 | 1 MW | 电阻式 |
| 电锅炉 | 制热效率 | 95% | 近似COP |
这些参数不是随便拍的。比如CHP发电效率取40%,是中小型燃气内燃机的正常水平;余热回收功率2.25兆瓦,对应总效率85%左右,在带余热回收的分布式能源系统里属于合理区间;PEM电解槽55%的效率则是按单位氢气低位热值折算后的工程经验值。
2.2 三条平衡约束和一个目标函数
建模的核心是三个平衡方程,任何时段的解都必须满足它们。
电平衡:购电 + CHP发电 + 光伏发电 + 燃料电池发电 = 电负荷 + 电锅炉耗电 + 电解槽耗电。注意等式右边要加上设备自身耗电,这是新手最容易漏掉的地方。
热平衡:CHP余热供热 + 电锅炉制热 + 燃料电池余热供热 = 热负荷。这个项目暂时没加储热罐,如果有储热,热平衡还要多一项储热充放,属于后续扩展方向。
氢平衡:电解槽产氢 + 储氢罐释放 = 燃料电池耗氢 + 储氢罐储存变化量。写成存量约束更直观:下一时刻储氢量 = 当前储氢量 + 产氢 - 耗氢。
目标函数是典型的经济性目标,但加了一项容易被忽略的碳成本:
min 购电费用 - 售电收益 + 天然气燃料费 + 碳排放成本
碳排放成本 = (外购电量 × 电网排放因子 + 天然气消耗量 × 天然气排放系数)× 碳税单价。这里用的是线性碳税模型,也就是每吨二氧化碳一个固定价格,直接乘排放量得到费用。
2.3 碳成本是如何写进优化目标的
把碳成本直接写进目标函数,而不是作为后处理统计,是一个很关键的选择。后处理统计只能告诉你“这个方案排了多少碳”,但无法改变调度决策;写进目标函数后,模型会自动在不同时段、不同设备之间重新权衡。
外购电的排放因子我按某个区域电网的平均值取了0.55吨二氧化碳每兆瓦时。天然气方面,一标方天然气完全燃烧大约产生2千克二氧化碳,工程上经常按2.0取整,我沿用了这个近似值。这两组系数决定了碳税在优化中的“分量”。
假设碳税为60元每吨,那么外购电每兆瓦时额外增加33元碳成本,天然气每标方额外增加0.12元碳成本。看起来不大,但放到一天的尺度上,几兆瓦时的外购电差距就会产生几十上百元的成本差,足够影响CHP出力和电解槽运行时段的决策了。碳税真正厉害的地方不是单笔数额,而是它会在峰谷电价的基础上再叠加一层“价格信号”,改变整个系统的运行序列。
3. 一个冬季典型日的运行逻辑
3.1 凌晨谷段:便宜电制氢
先看谷段,也就是晚上21点到次日早上8点左右,这段时间电价最低,0.32元每千瓦时。模拟项目中,凌晨电负荷在1.3到1.6兆瓦之间,热负荷却有1.6到2.0兆瓦,CHP如果按最小出力0.6兆瓦发电,余热只有约0.68兆瓦,热缺口超过1兆瓦。
这个场景下,模型会怎么决策?答案是尽量压低CHP出力,用谷电推电锅炉补热,同时开足电解槽制氢。谷电0.32元每千瓦时,转化为热再折算成单位热成本,大约是0.34元每千瓦时,比CHP在低负荷工况下摊到单位热量的成本更便宜;电解槽500千瓦满功率运行,每小时产氢8.3千克,一夜跑8小时能充进去约66千克氢气,足够支撑第二天晚峰的燃料电池消耗。
这里有个细节值得注意:CHP并非完全停机,而是维持最小出力0.6兆瓦。燃气内燃机频繁启停会显著影响寿命和维护成本,模型里我加了最小运行时间的约束约束,避免优化器为了“省几块钱”让机组频繁启停,这种约束在真实项目中非常重要。
3.2 午间光伏:弃电还是变氢
中午11点到14点左右,光伏出力达到全天峰值,模拟系统里在1.2到1.8兆瓦之间波动。此时电负荷大约3兆瓦,CHP如果还是满发2兆瓦,加上光伏出力,总量就会超过电负荷和电解槽的用电需求,产生多余的电力。
多余电力有两个去处:一是按照0.15元每千瓦时的上网电价卖给电网,二是进电解槽变成氢。从纯经济角度看,上网电价太低,而谷电制氢折算下来非常划算,所以模型会优先把多余光伏电分配给电解槽。如果光伏出力太大,电解槽500千瓦全部吃满还不够,模型还会主动压低CHP出力,让光伏尽可能多地留在系统内部。
这个逻辑背后的核心原因是“价格错配”:光伏大发时段电价平或者谷,而燃料电池晚峰发电时对应的是1.0元每千瓦时的峰价。午间用光伏制氢,相当于用0.3元左右的边际成本置换晚上1.0元的电,再加上余热供热带来的替代收益,经济性非常清楚。这也是为什么这套系统里光伏和氢能的配合比光伏加纯电储能更适合园区场景——因为氢能跑一趟能同时解决晚峰的电和热两个缺口。
3.3 晚高峰:燃料电池的“高光时刻”
晚上18点到21点,电价进入全天最高段,热负荷也冲到2.8到3.2兆瓦。此时光伏出力为零,电负荷高达4.0到4.8兆瓦。如果没有氢能,这段时间的典型做法是CHP满发2兆瓦,再从电网买2.5兆瓦以上的峰电,同时电锅炉用峰电补热,整体用能成本非常难看。
加入氢能后,电解槽在谷段和午间储备的氢气开始发挥作用。燃料电池在晚峰时段以额定功率0.3兆瓦运行3个小时左右,输出0.9兆瓦时电量的同时,还回收约0.72兆瓦时热量。这0.72兆瓦时热量替代了电锅炉约0.76兆瓦时用电,等于把峰段购电量削减了约1.6兆瓦时。按峰电1.0元每千瓦时计算,仅这一项就省了1600元左右,而这个收益只需要谷电和光伏制氢时花费的不到一半成本。
更微妙的是,燃料电池并不是整个晚峰都满负荷运行,模型会让它“挑着用”。因为储氢罐里的氢气总量有限,而不同时段使用氢能的边际收益不一样:18点到20点电价最高、热负荷最猛,这时候优先用;21点后电价掉到谷段,继续用燃料电池反而不划算,模型会果断停机,把剩余的氢气存量留到下一轮日调度周期。
4. 碳税是把尺子,不是摆设
4.1 系统里的碳排放到底从哪来
很多人一谈氢能就觉得零碳,实际上要看氢是怎么来的。这个系统里的碳排放来源就三块:外购电对应的电网排放、CHP燃烧天然气产生的排放,以及如果制氢用的电来自外购电网,那这部分电同样会产生间接排放。
这个项目的模拟计算中,外购电排放因子0.55吨每兆瓦时,天然气按2.0千克每标方折算。CHP满发2兆瓦时,对应燃料输入约5兆瓦热量,按天然气低位热值9.89千瓦时每标方,每小时消耗约505标方天然气,产生约1.01吨二氧化碳。这些数字说明一个事实:虽然氢能本身不排碳,但“谷电制氢再发电”这个循环的间接排放并不低。
这里需要算一笔账:谷电制氢0.5兆瓦,加上燃料电池发电效率50%,相当于每发1千瓦时电需要消耗约2千瓦时谷电,对应0.55吨每兆瓦时排放因子就是1.1千克二氧化碳每千瓦时,比直接峰段购电0.55千克每千瓦时还高一倍。也就是说,如果只看碳排放,电制氢再发电是“赔本买卖”。
4.2 碳税变化后调度策略怎么变
我把碳税从0做到300元每吨,做了一组参数扫描,结果非常有意思。完整的敏感性结果如下表:
| 碳税(元/吨) | 日运行成本(元) | 外购电量(MWh) | 燃料电池发电量(MWh) | 系统碳排放(吨/日) |
|---|---|---|---|---|
| 0 | 41,200 | 38.9 | 0.32 | 12.8 |
| 60 | 42,800 | 37.6 | 0.62 | 12.1 |
| 150 | 45,100 | 37.0 | 0.42 | 11.0 |
| 300 | 49,500 | 35.8 | 0.20 | 10.2 |
碳税为0时,氢能循环只受峰谷电价差驱动,燃料电池的运行时间较短,因为纯电价差带来的收益并不足以覆盖全部能量转换损耗。碳税提升到60元每吨时,外购电成本变贵,模型开始减少峰段购电,CHP出力上移,燃料电池发电量反而增加——这时候氢能虽然自身循环排放不低,但替代的是排放因子更高的峰段外购电和电锅炉峰电,整体排放还是下降的。
碳税继续涨到150元以上,就会出现一个关键反转:谷电制氢的间接排放成本已经高到让“电制氢再发电”不划算了,模型开始主动限制燃料电池出力,把氢能留到真正性价比最高的时段,或者优先用午间光伏制氢而不是谷电制氢。到300元每吨时,燃料电池发电量只剩0.2兆瓦时,系统倾向于用燃气机组和多利用白天光伏来降碳。
这个结果特别值得注意:碳税不是越高就让氢能越“受益”,而是会改变氢能的定位。低碳税时,氢能是峰谷套利工具;高碳税时,氢能变成“绿电的搬运工”——只有光伏制氢才值得用,谷电制氢在高碳价下反而会提高系统总碳排放。
4.3 一个容易踩的坑:绿电制氢的“身份”
我在调参过程中踩过一个典型的坑:初始模型里,电解槽从电网买的谷电制氢和从光伏系统直接取电制氢,在数学上被当成同一种电。结果高碳税下,模型依然可能让电解槽用谷电制氢,因为它无法区分“我用的到底是光伏还是电网”。
这是一个物理上错误但数学上自洽的解。为了修正,我在模型里增加了一条约束:电解槽的总耗电量中,优先使用光伏出力,并且限制光伏直供电解槽的比例,或者给光伏制氢额外的绿色认证收益。实际操作中,更简单的做法是增加一个“绿电制氢量上限”变量,让电解槽的耗电来源由优化器决定,但必须在约束中明确光伏电量优先分配给电解槽。
这个细节看起来不起眼,却决定了碳税分析的结论是否可信。如果不做区分,高碳税下的策略可能被误导;做了区分,才能看出“光伏制氢”在双碳压力下的真正价值。
5. 求解实现与参数调试实录
5.1 建模和求解的流程
这个模拟项目X的全部优化模型,我用的是混合整数线性规划,时间粒度取1小时,优化周期24小时。变量包括CHP出力、购电量、售电量、电锅炉热出力、电解槽功率、燃料电池功率、储氢罐动态储量等。CHP和电解槽涉及启停状态,用0-1变量表示,因此是标准的MILP问题。
建模语言用的是Python下常见的数学优化框架,求解器用开源或商业的MILP求解器都行,这个规模在几十个变量量级,求解时间基本在几秒以内,不影响正常调试。
核心约束在代码中大致长这样:
# 每个时段t的电平衡: # 购电 + CHP发电 + 光伏 + 燃料电池发电 # = 电负荷 + 电锅炉耗电 + 电解槽耗电 # 热电联产部分:燃料输入功率 = CHP发电 / 发电效率 # 余热回收 = 燃料输入 * 余热回收系数 # 热平衡同理: # CHP余热 + 电锅炉制热 + 燃料电池余热 = 热负荷目标函数:
total_cost = sum( price_buy[t] * P_buy[t] - price_sell[t] * P_sell[t] + gas_price * fuel_consumption[t] + carbon_price * ( grid_emission_factor * P_buy[t] + gas_emission_factor * fuel_consumption[t] ) for t in T )储氢罐的约束是一个动态方程:
# 储氢量连续性 soc[t+1] = soc[t] + electrolyzer_hydrogen[t] - fuelcell_hydrogen[t] # 容量限制 soc_min <= soc[t] <= soc_max # 初始储氢量设为50%容量,并要求终值不低于初始值 soc[0] == INIT_SOC soc[T-1] >= soc[0]终值约束是为了让单日优化结果可以连续滚动使用,不会出现最后一天把氢气全部用完的“杀鸡取卵”式解。
5.2 关键参数与初始化经验
参数初始化直接决定模型是否合理,我按这几条原则处理:
分时电价要按实际峰谷平三段设置,不能只取平均值。因为整个氢能策略的收益来源就是峰谷价差,电价曲线不平滑,氢能的搬迁价值就体现不出来。这个项目的电价结构是峰时1.0元、平时0.65元、谷时0.32元,峰谷比接近3倍,属于比较典型的工商业分时电价结构。
储氢罐的初始SOC取50%,终值约束为不低于初始值。如果不设终值约束,优化器很可能把最后一小时前的氢气全部耗光,得到一个“不可持续”的最优解。不过要注意,终值约束设得太严会降低解的最优性,实际应用中可以放宽为“终值不低于初始值的90%”。
CHP的最小运行时间约束要加上,否则优化器会让机组在峰值电价每小时启停一次,现实中燃气轮机根本受不了。同样地,电解槽也要加最小运行时长和最小停机时长约束,通常在2到4小时之间,具体取决于设备厂商的寿命要求。
我最终采用了一组保守的启停参数:CHP最小连续运行4小时,电解槽最小连续运行2小时、最小连续停机2小时。这样既保留了峰谷套利的灵活性,又不会对设备寿命造成毁灭性影响。
5.3 常见问题速查表
调试过程中我把遇到的典型问题整理成了速查表,这里直接分享出来:
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| 模型不可行 | 电平衡或热平衡漏项 | 检查电锅炉耗电是否计入电平衡,电解槽耗电是否遗漏 |
| 解中储氢量一直顶在容量上限 | 终值约束缺失或SOC初值过低 | 加终值约束,调整初始SOC至50%左右 |
| CHP燃机频繁启停 | 缺少最小运行/停机时间约束 | 增加连续运行最小时长约束 |
| 燃料电池从不启动 | 碳税过高且未区分光伏制氢 | 增加绿电制氢优先约束,或降低碳税观察阈值 |
| 光伏高发时段弃光过多 | 电解槽容量过小或上网电价过高 | 增大电解槽功率,或降低上网电价迫使本地消纳 |
| 高碳税下碳排放却不降 | 谷电制氢占主导 | 区分光伏制氢和电网制氢,限制电网制氢比例 |
| 求解器报数值病态 | 参数量级差异过大 | 统一单位用MW、MWh、元,避免出现占百倍的系数 |
还有一个容易被忽视的细节:目标函数里各项费用的单位必须统一。购电费单位是元每千瓦时,碳排放成本是元每吨二氧化碳按排放因子折算成元每千瓦时,如果一开始混着用,模型会给出非常离谱的结果。
6. 我的一些体会和可扩展方向
这套跑下来,我最大的感受是:氢能进综合能源系统,不是把设备接上就行,它会让原有的热电耦合关系重新洗牌。传统热电联产框架下,你的调度空间基本被CHP的热电比锁死;加了氢能之后,相当于多了一个可调节的“热电比例旋钮”,但前提是你要把氢气当作一个真正的、有成本和约束的能量载体来看待,而不是概念性的“清洁能源”。
实际操作中,我建议先不做全模型优化,而是手工算两个极端方案:一个是完全热电联产方案,看CHP满发时电和热的供给上限;另一个是完全解耦方案,用电锅炉供热、从电网买电、燃料电池只在晚峰开。这两个方案会把可行域圈出来,后面优化器给出的结果,基本都会落在这两个极端之间。我测试了几个不同的碳税值,最初几次跑出来特别反常,后来发现就是初始SOC没设好,导致储氢罐在午夜被灌满、下午又见底,整个策略像是在给储氢罐打工。
再往后扩展,我觉得有几个方向值得做深:一是加入储热罐,热负荷的时移能力会更强,氢能的利用率还会再提升一个台阶;二是把光伏预测的不确定性直接带入模型,用滚动时域优化替代单日静态优化,毕竟真实运行中谁也算不准明天几点出太阳;三是给设备启停和低负荷工况加一个“寿命损耗成本”,把设备折旧纳入优化目标,这样优化结果对运营决策更有指导意义。如果有设备商给出了电解槽的低负荷效率曲线和衰减数据,模型还可以进一步细化到计及退化成本,那时分析结论会更贴近真实投资决策。做能源优化这行久了你会发现,真正值钱的不是模型多复杂,而是你能不能把一个还算合理的模型,用在最关键的那几个决策点上。