news 2026/10/12 6:26:47

储能系统峰谷套利与调度策略:从收益测算到工程落地的完整拆解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
储能系统峰谷套利与调度策略:从收益测算到工程落地的完整拆解

电力系统调度员最头疼的,永远是日负荷曲线上那几个“尖峰时刻”。真正在调度台前待过的人都有体会——早上九点工业负荷一股脑上来,傍晚照明和空调叠加,电话基本没停过,该并的备用机组要并,该顶的顶峰电源要顶,电价也往往被拉到全天最高。储能系统这时候出场,做的事情本质上只有一件:把低谷时段用不完的电先“存”起来,等高峰时段再“吐”出来,玩一个时间维度上的差价。在这个过程里,它就像一个会算账的中间商,低处买、高处卖,只不过它搬运的商品不是实物,而是电能。今天我想用数学语言,把这套“高抛低吸”的生意经完整拆一遍——收益怎么算、约束怎么列、策略怎么落,还有我在实际项目里踩过的那些坑。

1. 从负荷曲线看“尖峰时刻”:谷底太深、峰尖太高,谁为这两头买单

1.1 日负荷曲线长什么样,调度员在看什么

大多数电网的典型日负荷曲线,都是“早高峰+晚高峰+夜间低谷”的结构。早高峰一般从上午七八点开始,工厂开工、商业运转、办公照明一起上;晚高峰则集中在傍晚六点到十点,日落之后照明负荷起来,空调或采暖负荷还在叠加。全天负荷的最低点通常在凌晨两三点,大部分人睡觉、大量工业设备停运,整个系统处于相对松弛的状态。

调度员盯着这条曲线,看得最多的不是平均值,而是两个极端:最大负荷是多少,最低负荷是多少,两者之间的峰谷差能达到多少。在很多地区,峰谷差率(峰谷差除以最大负荷)超过40%并不稀奇。这个数字越大,系统为“峰”付出的代价就越高——你必须在全年最高负荷那几天,甚至那一小时,准备好对应的发电容量,而这些容量在其余时间里大多数睡大觉。

新能源渗透率提高之后,曲线形态变得更难看。中午光伏大发,净负荷被压低,下午光伏退坡,负荷又急速反弹,出现一个陡峭的“爬坡段”。这种净负荷变化率极高的情况,会让调度员更加紧张,因为常规机组启停并网跟不上这个速度,调峰压力和调频压力同时上来。说白了,尖峰时刻越来越贵,爬坡过程越来越陡,这正是储能系统能介入的核心场景。

1.2 尖峰时刻的真实成本:容量、煤耗与平衡压力

尖峰为什么贵?第一是容量成本。为了满足一年中少数的最大负荷时段,电网需要配置足够的发电和输变电容量,这些容量在非尖峰时段利用率很低,相当于为一年中用不到几次的“保险”花了大钱。第二是运行成本。峰时并入的机组通常是边际成本最高的那一批,很多是老旧机组或快速启停机组,它们的发电煤耗高、度电成本高。如果系统不得不调用旋转备用,这些备用容量本身就带价格,占用越多,系统平衡成本越高。

第三是网架压力。高峰时段输电线路、变压器的负载率会明显升高,线损按电流平方增加,重载还可能导致设备过热、寿命下降甚至故障。极端情况下,负荷尖峰叠加上一台机组跳闸,调度员只能在几分钟内做出一系列平衡决策,切负荷是最后手段,谁都希望避开这种局面。所以,如果能把高峰负荷“削”掉一块,把低谷负荷“填”起来一点,对整个系统的经济性和安全性都是正向的。

1.3 储能为什么天然适合当这个“时间搬运工”

储能系统不增加电量,它只是把电能从一个时间段移到另一个时间段。低谷时段电网电量富余、电价便宜,储能系统把电“吸”进来;高峰时段电价贵、供电紧张,它再把电“吐”出去。整个过程不改变总电量,改变的只是电量在时间轴上的分布。

用生活里的话说,它就像一台大号冰箱——把低谷的多余能量“冰”起来,留到高峰用。不过冰箱冷藏食物基本不损耗,储能充放是有损耗的,每进出一次都要交一部分“能量税”。这个损耗的大小直接决定了生意赚不赚,所以后面算账的时候,效率参数必须放在核心位置。

调度员会喜欢储能,是因为它让负荷曲线变平缓;储能运营商喜欢这个生意,是因为峰谷价差提供了盈利空间。两种视角落在同一个设备上,要求它既能响应电网调度的需求,又能照顾投资者的收益。这两者之间的平衡,就是我们需要用数学模型解决的问题。

2. 把“高抛低吸”翻译成数学语言:一条公式说清储能生意经

2.1 核心公式:充放电净利润怎么算

储能运营最朴素的目标,就是最大化一段时期内的充放电净利润。用数学写出来大概是这样的:

max Σ [ π_t × P_dch,t × Δt − π_t × P_ch,t × Δt ]

其中π_t表示第t个时段的价格,P_dch,t是放电功率,P_ch,t是充电功率,Δt是时段长度。注意这里用同一个π_t是简化的写法,实际中充电时看购电价格,放电时看售电价格,两者往往不同,很多地区还有输配电价、政府性基金等附加,真正算钱要以关口电表的结算价格为准。

写利润函数之前,我习惯先把单位统一。价格一般用元/kWh,功率用MW,时间用小时,那么1 MW持续1小时就是1 MWh,换算成kWh要乘1000。很多初做储能运营的人,公式写得很漂亮,最后在单位上栽了跟头。

这个目标函数看起来简单,但真实情况没那么容易。第一,价格是变化的,你要先预测未来的峰谷走势;第二,储能不能同时充和放,一个时段必须决定自己是买方还是卖方;第三,电池有容量和功率限制,还有健康状态约束。把这些约束加进去,目标函数才是实际可用的优化模型。

2.2 关键参数:SOC、倍率、效率与窗口

搞懂目标函数,接着就要吃透几个参数。

**SOC(荷电状态)**是电池当前电量与额定容量的比值,0到1之间。调度策略无论多复杂,最终都落在每时每刻的SOC上。BMS(电池管理系统)会实时计算SOC,但它是估算值,长期用下来会有漂移,这一点后面排查章节要专门说。

**C-rate(充放电倍率)**表示充放电功率与额定容量的比值。1C意味着1小时充满或放完,0.5C表示2小时。比如一个1MW/2MWh的储能系统,额定功率1MW、额定容量2MWh,那么满功率充放对应的倍率就是0.5C。倍率越高,对电池的损伤通常越大,实际项目里很少让电池长时间顶满倍率跑。

往返效率η_rt是充进去的能量和放出来的能量的比值,一般取90%到95%左右。它由充电效率和放电效率相乘得到,还要考虑PCS(储能变流器)损耗、辅助设备损耗、电池内阻损耗。这个参数对净利润的影响极大,不能拍脑袋填,最好从现场充放电试验取实测值。

SOC运行窗口指的是实际运行中SOC的最低和最高限制。很多电池厂家建议窗口设在10%到90%,甚至更窄。长期满充满放会显著加速衰减,运营方宁可牺牲一点可用容量,也要保护循环寿命。

2.3 一个可复现的算例:1MW/2MWh储能每天一充一放能赚多少

纸上谈兵没意思,用一个具体算例来走一遍流程。假设有一个工业园区的储能系统,额定容量2MWh,额定功率1MW,往返效率90%,SOC运行窗口10%到90%。当地峰段电价1.0元/kWh,谷段电价0.3元/kWh,价差0.7元/kWh。

如果每天只做一次完整循环,先放电、后充电:

  • 放电深度90%,放电电量 = 2 × 90% = 1.8MWh。
  • 放电收益 = 1.8 × 1000 × 1.0 = 1800元。
  • 要放出1.8MWh,考虑往返效率90%,充电电量 = 1.8 / 0.9 = 2.0MWh。
  • 充电成本 = 2.0 × 1000 × 0.3 = 600元。
  • 单次循环净收益 = 1800 − 600 = 1200元。

假设全年运行330天,理论净收益约39.6万元。再考虑电池衰减、冬季低温折减、辅助设备功耗以及部分日子峰谷时段不到位,实际运营中打个八折是常见的,大约30万元/年。

投资成本方面,如果按当前储能系统单位造价约1500元/kWh来估算,2MWh系统大概需要300万元,静态回收期接近10年。如果没有补贴或额外的辅助服务收入,单靠峰谷套利其实并不宽裕。所以实际项目里,很少有人把全部希望押在峰谷价差上,通常是“峰谷套利打底,辅助服务增收”,这一点后面第5章展开。

这个算例也说明一个道理:峰谷价差每下降0.1元,利润就明显缩水。所以运营者必须像精算师一样盯住价格曲线,而不是只凭“晚上充、白天放”的直觉做事。

3. 调度策略怎么落地:从目标函数到控制逻辑

3.1 约束条件:SOC边界、功率限制与充放互斥

写优化模型不能只有目标函数,约束条件才是让模型贴近现实的关键。我常说的储能调度基本约束有四类。

第一是功率限制。充电功率和放电功率都不能超过设备额定值,并且实际项目中PCS通常还会有一个最小功率限制,指令太小无法执行,需要处理死区。

第二是SOC动态方程。soc_{t+1} = soc_t + (η_ch × P_ch,t − P_dch,t / η_dch) × Δt / C,其中C是额定容量。这个公式把每个时段的充放电电量累进到SOC中,是整个调度模型的核心。它提醒我们一件事:充电时有一部分电变成了热量损耗,放电时也有损耗,必须把这些放进公式,不能只做电量守恒。

第三是SOC边界。SOC不能在哪个时段都随便跑,必须限制在窗口范围内。尤其要注意,不要只看单时段SOC,还要看未来计划的可行性——比如预测明天早上有高峰,今晚就不能把电放光,要留出可充空间。

第四是充放互斥。同一个时段不能既充电又放电,否则目标函数会利用“同时充放”钻空子。数学上可以用P_ch,t × P_dch,t = 0,或者引入二进制变量。

还有一个经常被忽视的约束:末端SOC回退。很多优化算法会在优化窗口末尾把SOC放到最低,因为这样可以最大化收益,但第二天清晨就无电可放了。实际运营中必须加一个“末端SOC回到初始值”的约束,或者在滚动优化里反复用SOC目标惩罚项纠正。

3.2 滚动优化:处理价格预测不准的常规做法

只做一次“离线计划”是不够的。电价预测不可能百分百准确,负荷预测也会偏,如果离线计划定死了,现场工况一变,策略立刻失效。

我常用的框架是“日前计划+日内滚动修正”。日前先根据第二天的预测价格、预测负荷、SOC初值,求解一个24小时的最优充放电计划,作为基准线。日内每15分钟或1小时滚动一次,窗口取4到6小时,用最新的实测数据(当前SOC、实时价格、最新预测)重新求解,只执行未来一个时段的指令,然后下个时段再滚一次。

这种滚动优化里,罚函数是关键。当SOC偏离目标区间、或者功率指令接近边界时,在目标函数中加一个惩罚项,让优化器“不敢”把状态推到极端。否则预测稍有偏差,优化结果就可能在下一个时刻不可行,控制软件只能硬切到保护模式。

我常跟团队里人说,储能调度优化本质上不是“一次性猜对未来的比赛”,而是一个“预测—执行—反馈—再预测”的循环。谁接受预测误差、及时修正,谁的系统才稳。这里放一小段简化的Python示意,帮助理解大致的滚动逻辑:

import numpy as np # 参数初始化 C = 2.0 # 额定容量 MWh P_max = 1.0 # 额定功率 MW eta_ch, eta_dch = 0.95, 0.95 soc_min, soc_max = 0.1, 0.9 T_horizon = 24 # 24小时滚动窗口 # 初始化状态 soc = np.ones(T_horizon + 1) * 0.5 p_ch = np.zeros(T_horizon) p_dch = np.zeros(T_horizon) # 假设价格曲线:高峰在9-12点和18-21点 price = np.array([0.3]*8 + [1.0]*4 + [0.3]*5 + [1.0]*4 + [0.3]*3) for t in range(T_horizon): if price[t] >= 0.8 and soc[t] >= soc_min + 0.05: # 高峰放电,不超过当前可放容量 max_dch = (soc[t] - soc_min) * C / eta_dch p_dch[t] = min(P_max, max_dch) elif price[t] < 0.4 and soc[t] <= soc_max - 0.05: # 低谷充电,不超过剩余空间 max_ch = (soc_max - soc[t]) * C * eta_ch p_ch[t] = min(P_max, max_ch) soc[t+1] = soc[t] + (eta_ch * p_ch[t] - p_dch[t] / eta_dch) / C profit = np.sum(p_dch * price - p_ch * price) print(f"示意策略全天净利润: {profit * 1000:.0f} 元")

这段代码只是一个启发式示意,真实项目里会用线性规划或动态规划求解,但核心逻辑是一样的:每个时段根据当前SOC和价格,决定充多少、放多少,并不断用新数据刷新决策。

3.3 指令执行:从策略到PCS,存在物理偏差

优化算完只是第一步,指令执行才是另一番天地。能量管理系统(EMS)算出功率指令后,要通过通信下发到储能变流器,变流器再控制IGBT去执行。这个链路有时间延迟,也有执行偏差。

现场常见的现象是:EMS发“放电0.8MW”,PCS实际出力可能只有0.78MW,或者先冲到0.85MW再回落。偏差不修正,系统积累的收益就会和公式计算值对不上。解决办法是在EMS里做有功闭环控制,用实际功率反馈去修正指令,而不是只发一次开环指令。

另外,调度模式和本地模式要区分清楚。调度员直接下发AGC指令时,储能通常切到远方模式,由调度系统控制;平时没有远方指令,储能按本地策略运行。切换过程要防止功率突变,一般有斜坡限制,避免对电网造成冲击。现场调试储能时,我第一步永远是测试指令斜坡、通信中断保护、SOC上下限保护,这些安全逻辑没问题了,再谈优化收益。

4. 实战中的问题排查与参数修正:那些让“算账先生”翻车的坑

4.1 收益跑不赢预期的三大原因

价格预测不准是最常见的原因。有些项目简单地把一天分成峰、平、谷三段,按固定时段充放,结果实际天气、节假日、新能源出力变化会让高峰时段整体偏移。预测中说晚上10点后进入低谷,实际可能提前到9点,策略就白白错过了高价窗口。

SOC估算漂移是第二号元凶。电池SOC来自BMS估算,电流测量误差、自放电、温度变化都会让估算值慢慢偏离真实值。如果估算偏高了,实际电量可能已经很低,系统还按“有电可放”去执行,结果运行中途触发低SOC保护,输出瞬间归零。

辅助功耗被忽略也常见。储能系统不是只有电池和PCS,还有空调、消防、监控、照明等辅助设备,它们全天都在耗电。这些电量通常是厂用电,如果结算模型只算电池充放电电量,不算辅助损耗,算出来的利润就比实际高10%到20%。时间久了,运营报告和财务报表对不上。

我现在的习惯是做“事后复盘”:每天记录实际充放电量、实际结算电费、辅助设备电耗,每周算一次“每度电吞吐带来的净利润”。这个指标一出来,哪些问题在吃利润,立刻清楚。

4.2 电池衰减与循环次数:算细账才能决定“一天几充几放”

储能做“两充两放”还是“一充一放”,看似是策略问题,本质是经济性问题。早高峰和晚高峰都做一次,日净收益接近翻倍,但电池循环次数也会变成原来的两倍,寿命衰减加快。

这里要引入一个“全寿命吞吐成本”的概念。假设一套2MWh储能系统总投资300万元,按90%放电深度循环寿命4000次来算,全生命周期总放电量 = 2 × 90% × 4000 = 7200MWh。每MWh放电对应的设备损耗成本 = 300万 / 7200 ≈ 417元/MWh,也就是大约0.42元/kWh。

这意味着什么呢?如果峰谷价差只有0.5元,扣掉0.42元的衰减成本,再扣掉效率损耗和运维费,毛利所剩无几。价差0.7元时,度电毛利大概是0.28元,才有点赚头。所以很多储能项目测算时热衷于“每天两充两放”,实际却不敢这么跑,因为价格信号没那么整齐,循环寿命也会被时间稀释。现实运营中,我往往先按“一充一放”保底,另留出30%的SOC空间给辅助服务,而不是每天榨干两次。

4.3 现场运维视角:温度、通信与校核一个都不能少

储能系统对工作温度非常敏感,锂电池在高温下循环寿命下降明显,低温下充电策略又必须限制倍率。现场通风和空调如果故障,PCS会自动降功率,整个收益策略都会跟着变形。排查过程中,看到监控平台上报“功率为零”,不能只查EMS策略,先看是不是温度保护动作了。

通信问题也是重灾区。EMS和PCS之间如果采用不同协议或现场链路不稳定,时常出现指令丢失、数据跳变。更麻烦的是,并网点电表数据、EMS计算数据、PCS上报数据三套数对不齐。处理办法只有一个:以关口计量电表为准,定期校准。不要以为EMS里显示的收益就是实际收入,结算时必须拿电表数据说话。

还有SOC校准,我建议每季度做一次完整校准——把电池放到接近空态,再按标准曲线充满,更新BMS的SOC参考值。这个操作会损失一些充放循环,但长期看是值得的,它能让所有策略在正确的电量基础上运行。

5. 从削峰填谷到辅助服务:同一块电池的多元变现路径

5.1 调频与备用:收益更高,但模型更复杂

峰谷套利只是储能的第一层生意。储能参与电力系统辅助服务,比如调频、备用容量、需求响应,往往收益单价更高。调频要求秒级响应,储能速度快、精度高,天然适合。但调频信号频繁双向变化,会在短时间内增加大量微小循环,对电池寿命的影响跟长时间的“一充一放”完全不同。

参与调频时,优化目标不能再是最简单的“峰谷价差最大化”,而应该是“综合收益最大”: [总收益 = 峰谷套利收益 + 调频里程收益 + 备用容量收益 − 电池损耗 − 综合功耗成本]。其中电池损耗部分,要建立基于DOD和倍率的寿命模型,否则会出现表面赚了调频钱、实际电池寿命快速消耗的情况。

我的经验是:不要一开始就把所有收益品种都压上去。先跑三个月纯峰谷套利,把SOC窗口、效率、衰减模型校准好,再尝试叠加单一辅助服务品种,做A/B对比。一上来就搞“全业务融合”,往往哪个都做不好。

5.2 新能源配储:把弃电变成“低价货源”

光伏、风电大发时,如果负荷跟不上,系统容易出现弃电,现货市场里甚至可能出现极低价格甚至负价格。储能此时充电,相当于拿了一批“极低成本的货源”,等到晚间负荷高峰再放电,收益模型比单纯峰谷套利更优。

不过这件事的前提是预测能力。一个光伏电站配储项目,如果午间预测发电量偏大,以为能充满电,实际下午云一多,充不满,晚间就没东西可放。所以策略里必须加上新能源出力的实时监测和滚动修正,不能依赖日前固定计划。

从系统角度看,新能源配储也把“尖峰时刻”的来源改变了:白天的净负荷低谷和傍晚的爬坡尖峰,正好给了储能两个发力点——午间吸电、傍晚放电。这套打法和常规削峰填谷相比,更贴近现代电力系统的真实需求。

5.3 数字化运营:让每一度电的流向都算得清

储能生意做大了以后,靠人盯监控是盯不过来的。需要把价格预测、负荷预测、电池管理、能量管理、交易结算统一到一个平台上。很多平台表面功能很全,一结算就对不上账,原因就是各子系统用的数据源不统一。

我踩过不少坑之后,习惯在架构上做两个明确划分:执行层和管理层分开。执行层只管EMS策略和PCS控制,实时性要求高;管理层管数据分析、收益结算、预测模型,不要求毫秒级响应。两个层之间通过中间库解耦,这样任何一方升级调试,都不会影响现场运行。

数字化平台更大的价值在于复盘。每次充放电结束后,自动生成一份“这一单赚了多少钱、损耗了多少、衰减成本多少”的账目。长期积累下来,你就能摸清自己这套储能系统在不同季节、不同天气、不同价格曲线下的真实表现。到那个时候,“高抛低吸”就不再是一句生意经,而是一套被数据验证过的运营能力。

我自己做储能项目的体会是,这个行业里真正拉开收益差距的,往往不是算法多高级,而是基础参数管得多精细。SOC窗口选得对不对、效率测得到不到位、衰减成本算得清不清楚,这三点只要做扎实,收益基本不会太差。倒是那些一上来就堆复杂模型、忽视物理约束的项目,后期要么频繁保护停机,要么账目对不上,最后连充电都不敢多充。如果你也想在电网里玩转这个时间差,我的建议很简单:先把最近一周的充放电记录翻出来,算一算每度电吞吐到底赚了多少钱,再谈下一步优化。算得清,才搬得动。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/12 6:26:24

本地部署27B大模型:量化档位与显存配置实操指南

最近大半年&#xff0c;我隔三差五就会被同一个问题砸中&#xff1a;“我手里有一张 XX 显卡&#xff0c;到底能不能跑本地大模型&#xff1f;”前几天一个做设计的朋友问得更具体——“我想跑开源 27B 参数的 Qwen3.8-27B&#xff0c;显卡是 RTX 4090 24G&#xff0c;内存 64G…

作者头像 李华
网站建设 2026/10/12 6:25:10

adb录屏完全指南:从基础命令到自动化测试实战

用adb录屏这个事&#xff0c;说简单是真简单&#xff0c;一条命令就能开始&#xff1b;说麻烦也是真麻烦&#xff0c;码率、时长、方向、声音&#xff0c;每个环节都有人踩坑。我过去两年在不同项目里反复用adb shell screenrecord&#xff0c;从最开始只会录默认三分钟&#x…

作者头像 李华
网站建设 2026/10/12 6:24:59

dnSpy 6.1.3 + .NET Framework 4.7.2 逆向调试实战指南

简介&#xff1a;dnSpy-6.1.3-net472.zip 是一款面向.NET开发者与逆向分析人员的开源集成调试与反编译工具包&#xff0c;专为Windows平台设计&#xff0c;解决.NET程序动态调试、IL代码逆向还原及二进制级修改等核心需求。资源包大小22.37MB&#xff0c;含x64/x86双架构可执行…

作者头像 李华
网站建设 2026/10/12 6:24:11

开源+私有化:打造能主动干活的企业AI工作伙伴

1. 从"只会聊天"到"能干活"&#xff1a;企业AI落地的真实断层在哪过去两年&#xff0c;我参与过好几个企业内部的AI助手项目&#xff0c;几乎每一个都经历过同样的尴尬&#xff1a;上线第一周大家图新鲜&#xff0c;问天气、写周报、翻译邮件&#xff0c;用…

作者头像 李华
网站建设 2026/10/12 6:23:41

Python压缩包自动化处理:zipfile与tarfile办公实战指南

1. 办公场景下的压缩包处理需求拆解1.1 为什么压缩包操作值得单独拿出来讲日常办公里&#xff0c;压缩包几乎无处不在。财务部门每月要打包发票扫描件发给审计&#xff0c;运营团队要把活动素材整理成压缩包上传到共享盘&#xff0c;开发同学需要把日志文件压缩后归档。这些操作…

作者头像 李华
网站建设 2026/10/12 6:23:06

VS2019静态编译jsoncpp+json-rpc:零依赖C++ JSON通信方案

简介&#xff1a;本资源为Windows平台下VS2019编译完成的libjsoncpp与libjson-rpc-cpp静态库套件&#xff0c;专为C开发者快速集成JSON-RPC通信功能而设计&#xff0c;解决常见下载包缺失依赖库、架构不匹配&#xff08;如仅提供x86&#xff09;等实际部署痛点。压缩包共355个文…

作者头像 李华