简介:这份PPT源自东南大学电气工程学院专家的专题报告,以虚拟电厂为核心,系统讲解其商业模式、售电业务及共享储能等新型业态。内容从新能源并网挑战切入,逐步展开VPP定义、资源组成、功能类型,以及参与主体、市场定位与政策支撑,适合电力市场从业者、售电公司及能源领域研究者把握趋势。包体为单个PPT文件,共70页,压缩包约12.73MB,版式完整,可自由编辑复用。目前已有50人学习,是一份高密度、专题化的行业趋势资料。通过学习可获得系统化的知识框架:既能了解虚拟电厂如何聚合分布式电源、柔性负荷与储能设备参与市场交易,也能从实际商业模式案例与政策建议中,获取售电业务设计、储能共享运营的参考思路,适合快速建立“双碳”目标下新型电力系统的全景认知。
1. 虚拟电厂不只是聚合:售电业务的资源编排与技术底座
在电力现货市场上,一个 10 MW 的用户侧储能电站白天按日前出清价放电、夜里低谷充电,同时还在虚拟电厂平台上参与调频和需求响应。这个场景已经不是概念演示,东南大学电气工程学院在 70 页研究 PPT 里拆解了虚拟电厂售电业务和共享储能业态的完整链条,核心结论是:虚拟电厂的本质不是把分布式资源堆在一起,而是用软件把资源编排成可交易的产品,在多时间尺度市场上找到最优出清组合,这本身就是一个典型的智慧能源调度问题。对售电公司、负荷聚合商和储能投资方来说,真正需要掌握的是三件事:VPP 如何参与不同电力品种、共享储能如何配置容量、以及价格和需求波动时收益边界在哪里。这篇博文会沿着这三个问题展开,并把可运行的收益测算法直接给出来。
2. 售电商业模式拆解与市场品种选择逻辑
2.1 参与主体与价值分配
虚拟电厂的商业模式要协调四类主体:待聚合资源(参与用户)提供灵活性,虚拟电厂运营商负责聚合、调度和交易,电网公司作为需求主体购买电力辅助服务,政府监管机构设定市场规则并监督运行。在这个链条里,VPP 运营商的利润不是固定服务费,而是来自价差、分成和响应补偿。不同主体对同一资源的定价权不同:用户侧可控负荷在需求响应里的单位补偿通常高于现货电能量收益,但响应时长、通知时间和考核要求也更严格。以美国 PJM 市场为例,终端用户不能直接参与市场交易,必须通过负荷服务实体或削减服务提供商作为代理,因此聚合商的角色在零售侧几乎是刚需。
2.2 多市场品种收益矩阵
虚拟电厂可以横跨电能量、容量和辅助服务市场。把 PPT 中的交易品种整理成一张收益矩阵,能更直观地看出哪些收益是稳定的,哪些是机会型的:
| 市场品种 | 申报方式 | 收益来源 | 典型参数或地区 |
|---|---|---|---|
| 中长期双边/集中交易 | 双边协商、集中竞价 | 合同价差收益 | 山西、山东中长期市场 |
| 日前现货市场 | 单边报量、报量报价 | 日前出清价与成本之差 | 山西日前市场、山东日内竞价 |
| 实时现货市场 | 单边报量、15 分钟粒度 | 实时出清价与偏差收益 | 上海申报容量单位 0.01 MW、间隔 15 分钟 |
| 辅助服务:调频 | 单边报量报价、固定容量补偿 | 调频容量补偿 + 里程补偿 | 重庆日前 3 元/MW、日内 10 元/MW |
| 辅助服务:调峰/备用 | 省内/区域市场报量报价 | 容量补偿或出清价 | 南方区域采用“日前出清 + 日内调整” |
| 零售市场/需求响应 | 邀约、实时响应 | 补贴或降低购电成本 | 广州削峰填谷按邀约与实时分类补偿 |
从这张表能看到两个关键点:现货市场收益依赖价格预测,波动最大;辅助服务和需求响应收益依赖容量可用率和响应速度,相对可预期。售电公司要做的不是单一品种押注,而是把不同品种按时间尺度组合起来:中长期合同锁定基础电量,现货市场赚边际价差,辅助服务在空闲时段增厚收益。
2.3 申报流程与关键参数
虚拟电厂参与市场交易的一般流程是:资源聚合 → 可调潜力评估 → 注册签约 → 市场成员竞标 → 优化调度策略 → 市场出清 → 执行与互动调节 → 结算考核。这里最影响结算结果的三个参数是上报容量、持续响应时间和响应延迟。上报容量单位过小,收益被压缩;过大则容易出现偏差考核。持续响应时间不够,无法参与调频和备用市场。响应延迟直接决定资源是否能进入调频,而不是只做调峰或需求响应。
例如上海实时市场的申报容量单位是 0.01 MW,时间间隔 15 分钟,最短持续时间 30 分钟,报价上限 400 元/MWh。这意味着一份 0.1 MW 的资源曲线要拆成 6 个 15 分钟点上报,每个点都有独立的功率和价格。做市场申报前,必须把预测曲线、储能 SOC 曲线和负荷可控曲线对齐到同一时间粒度。
2.4 用 Python 做基础收益测算
在决定参与哪个市场之前,通常先做一个简单的收益测算:
def spot_profit(capacity_mw, duration_h, peak_price_yuan_kwh, valley_price_yuan_kwh, efficiency=0.92): # 放电量 MWh,计及充放电损耗的充电量 discharge = capacity_mw * duration_h charge = discharge / efficiency # 换算成 kWh 后按峰谷价差结算 return discharge * 1000 * peak_price_yuan_kwh - charge * 1000 * valley_price_yuan_kwh def dr_income(capacity_mw, duration_h, unit_comp_yuan_kwh): # 需求响应按实际削减电量补偿,单位为元/kWh return capacity_mw * duration_h * 1000 * unit_comp_yuan_kwh # 10MW/2h 储能,峰价1.2元/kWh,谷价0.3元/kWh spot = spot_profit(10, 2, 1.2, 0.3) # 实时需求响应补贴3元/kWh,一次响应2小时 dr = dr_income(10, 2, 3) print(f"现货套利日收益: {spot:.2f} 元") print(f"需求响应单次补偿: {dr:.2f} 元")spot_profit里charge = discharge / efficiency把充放电损耗折算进充电成本,避免高估收益;dr_income则按削减电量直接计算补偿。从输出结果可以看到,同样是 10 MW/2 h 资源,一次实时需求响应补偿可能超过好几个正常现货日的套利收益,但需求响应次数有限,不能只看单次值。
提示:现货收益中的峰谷价差是预测值,实际结算价可能偏离,报价前应留出安全裕度。
3. 从资源聚合到市场出清:VPP 售电业务的技术实现
3.1 异构资源接入:协议、数据点与接口规范
虚拟电厂首先要解决异构资源接口不统一的问题。常见做法是用 Modbus TCP 拉取储能 PCS 的有功、无功和 SOC 状态,用 IEC 104 对接变电站侧可控负荷,用户侧智能楼宇和充电桩走 MQTT。数据点至少要有有功功率、无功功率、SOC、可用容量、响应状态和事件告警。对老旧设备,一般加装边缘网关做协议转换,把数据统一成 15 分钟粒度的时序数据写入时序数据库。这一层如果不稳定,上层调度和结算就会失真。
从 PPT 的资源组合看,VPP 可以只含分布式电源、只含柔性负荷、只含储能,也可以混合组合。资源类型不同,可交易的产品也不同:分布式电源 + 储能主要卖电能量和调频,柔性负荷 + 储能主要卖辅助服务。因此接入层除了采集数据,还要给每种资源打上“可调能力”标签:最大上调和下调功率、最长持续时间、最小响应延迟。
3.2 聚合调控层:组合约束与优化空间
聚合调控层是把多个异构资源变成一个可调度主体的关键。储能需要满足 SOC 约束、充放电功率约束、爬坡速率和循环次数;柔性负荷需要满足连续响应时长和用户舒适度约束;分布式电源受天气预测影响,出力上限随时间变化。
以一个储能 + 可控负荷的混合型 VPP 为例,基础约束可以写成:
SOC_t+1 = SOC_t + (eta_c * P_c_t - P_d_t / eta_d) * delta_t / C 0 <= P_c_t <= P_c_max 0 <= P_d_t <= P_d_max SOC_min <= SOC_t <= SOC_max P_load_t = P_load_base_t - P_reduce_t 0 <= P_reduce_t <= P_reduce_max_t第一行是 SOC 递推,eta_c和eta_d是充放电效率,delta_t是调度时间间隔,C是储能容量;后面几行分别限制充电功率、放电功率、SOC 上下限和负荷削减量。优化目标就是在市场价格曲线上最大化收益,同时保证响应能力可被实时调用。这里最容易被忽略的是:储能和可控负荷不能同时申报到两个市场,否则实际调度时会互相挤占容量。
3.3 可调潜力预测与需求响应基线计算
需求响应市场的结算量通常由“基线负荷 - 实际负荷”得到,基线算不准,响应做了也拿不到钱。常见的基线算法是取响应日前 5 个同星期几的负荷平均值,剔除节假日后按时刻对齐。下面这个函数展示核心逻辑:
import pandas as pd def calc_baseline(df, target_date, k=5): # df 需要包含 DatetimeIndex 和 load 列 target = pd.Timestamp(target_date) hist = df.loc[:target - pd.Timedelta(days=1)] # 只保留与目标日星期相同的历史数据 hist = hist[hist.index.dayofweek == target.dayofweek] # 按日期分组,取最近 k 天 dates = hist.index.date unique_dates = sorted(set(dates))[-k:] seg = hist[hist.index.date.isin(unique_dates)] # 按一天内的时刻求平均,得到 96 点基线 baseline = seg.groupby(seg.index.time)['load'].mean() return baseline这个函数先过滤掉非同日星期,再取最近 k 天的同时刻平均值。实际项目中还要剔除停电、检修和节假日等异常日,并且要和交易机构确认基线的统计窗口。15 分钟粒度一天有 96 个点,如果粒度是 5 分钟,就是 288 点,基线计算的方法不变,但数据量会明显增加。
3.4 市场申报数据与结算字段
VPP 对接交易平台时,申报和结算数据通常围绕以下几个字段:
| 字段名 | 含义 | 示例值 |
|---|---|---|
| resource_id | 聚合资源标识 | VPP_ES_001 |
| market_type | 交易品种 | day_ahead / realtime / freq / dr |
| power_profile | 上报功率曲线 | 15 分钟粒度的 MW 序列 |
| price_profile | 申报价格曲线 | 元/MWh 序列 |
| duration_h | 可响应持续时间 | 2 |
| actual_energy | 实际执行电量 | 12.5 |
| settle_price | 结算单价 | 按市场出清价或固定补偿 |
申报功率曲线和实际执行电量之间的偏差会进入偏差考核,因此上报前要做置信度校验。调频市场通常要求响应延迟在分钟级以内,需求响应的通知时间可能是提前 1 天或实时下发,技术平台上必须对这些差异做统一管理。
4. 共享储能技术与商业模式的落地路径
4.1 从独立储能到共享储能:为什么比自建划算
共享储能的核心是把储能资产的所有权与使用权分离,由独立投资方建设,向多个用户提供容量租赁或调节服务。对用户来说,自建储能一次性投资高、年利用率低,还要自担电池衰减风险;共享模式按容量或电量付费,把固定成本转成可变成本。对运营商来说,多个用户的负荷曲线错峰后,储能年利用小时数能显著提高,技术侧的关键是 BMS/EMS 要支持多租户隔离,PCS 要能快速切换调度指令,计费系统要区分容量租赁费与能量电费。
这种业态和 VPP 很自然地叠加:共享储能可以把自己的部分容量授权给 VPP 运营商,由 VPP 在现货市场、辅助服务市场和需求响应市场统一报价。此时储能既是独立盈利主体,又是 VPP 的可调度资源。
4.2 收益模型对比与关键参数
| 模式 | 收入来源 | 适用主体 | 关键参数 |
|---|---|---|---|
| 容量租赁 | 按元/kW/月向用户收取租赁费 | 储能投资商、工商业用户 | 月租赁单价、可租赁容量、签约时长 |
| 峰谷套利 | 低谷充电、高峰放电的价差 | 独立储能电站、VPP 运营商 | 峰谷价差、循环次数、往返效率 |
| 辅助服务 | 调频容量补偿、里程补偿 | 储能运营商 | 容量补偿单价、响应速度、可用率 |
| 需求响应 | 削减负荷的响应补偿 | 负荷聚合商、虚拟电厂 | 基线偏差、补贴单价、通知时间 |
这几类收益的时间尺度不同。容量租赁是月度固定现金流,峰谷套利是日内高频收益,调频和需求响应则是事件驱动。共享储能通常以容量租赁打底,用峰谷套利覆盖日常运维,再用辅助服务增厚收益,但三种模式会争抢同一个储能容量,所以需要做联合优化,而不是简单相加。
4.3 容量配置优化计算示例
配置储能容量时,不能只看单位充放电成本,还要看当地峰谷价差窗口能容纳几个循环。下面这个函数用枚举方式比较不同容量方案的年度收益:
def annual_profit(capacity_mwh, power_mw, peak_valley_gap, cycles_per_day, rental_price_yuan_kw_month, opex_per_kwh): # 容量租赁收益,按 MW 换算成 kW 乘月单价乘 12 个月 rental = power_mw * 1000 * rental_price_yuan_kw_month * 12 # 峰谷套利:每天循环次数乘全年天数乘净价差 arbitrage = capacity_mwh * cycles_per_day * 365 * peak_valley_gap * 1000 # 运维成本按充电电量估算 opex = capacity_mwh * cycles_per_day * 365 * opex_per_kwh * 1000 return rental + arbitrage - opex for capacity, power in [(10, 5), (20, 5), (20, 10)]: profit = annual_profit(capacity, power, peak_valley_gap=0.8, cycles_per_day=1.2, rental_price_yuan_kw_month=30, opex_per_kwh=0.02) print(f"{power}MW/{capacity}MWh 年化收益约 {profit/10000:.1f} 万元")注意这里peak_valley_gap是 0.8 元/kWh 的净价差,已经扣除了充电成本,所以不要再减一次充电费用。cycles_per_day要根据当地峰谷时段长度来定,如果每天只有一段高峰、一段低谷,循环次数通常到不了 2 次。输出结果可以做不同时长的横向对比,但要在方案里叠加上电池衰减成本,否则会高估后期收益。
4.4 与售电业务叠加的多业态边界
共享储能进入 VPP 后,还会产生一种新的机会:在电力现货价格低谷时充电,在价格尖峰时放电,同时把一部分容量用于调频备用。这相当于把同一个电池资源切分到不同市场,但切分粒度要足够细,AGC 指令到达时,储能 SOC 必须已经预留出调频窗口。常见做法是在每个调度时段预留 10%~20% 的 SOC 裕度给调频,剩余容量参与现货套利。这样虽然牺牲了一部分套利收益,但整体收益曲线更平滑。
注意:同一时刻的储能功率不能同时卖给两个市场,申报前要做市场间的耦合约束校验,避免“双重出售”被结算系统判定为违约。
5. 用敏感性分析验证 VPP 收益边界与报价裕度
验证 VPP 收益模型是否可靠,最直接的方法是单变量敏感性分析:把每一个输入参数向上和向下扰动,观察总收益的变化幅度,找出影响最大的变量。下面这段代码可以快速做这个验证:
def profit(peak_price, valley_price, capacity_mw, dr_unit_price, dr_count_per_month): # 现货:每天一次充放,容量按2小时放电 daily_spot = (capacity_mw * 2 * peak_price - capacity_mw * 2 / 0.92 * valley_price) * 1000 # 需求响应:每月固定次数,每次2小时 dr = 12 * dr_count_per_month * capacity_mw * 2 * 1000 * dr_unit_price return 365 * daily_spot + dr base = dict(peak_price=1.2, valley_price=0.3, capacity_mw=10, dr_unit_price=3, dr_count_per_month=2) for param, delta in [('peak_price', 0.1), ('dr_unit_price', 0.5), ('dr_count_per_month', 1)]: up = profit(**{**base, param: base[param] + delta}) down = profit(**{**base, param: base[param] - delta}) print(f"{param} 上调 {delta}: {up/1e4:.1f} 万,下调 {delta}: {down/1e4:.1f} 万")这里delta的大小不代表市场真实波动,只是用来观察单位变化对全年收益的影响。比如dr_count_per_month从 2 调到 3,年收益增加的值如果远大于peak_price上调 0.1 元/kWh 的效果,说明这个项目对需求响应签约次数的依赖远高于现货价格波动。那么策略重点就应该放在签约更多可控负荷、提高响应成功率上,而不是去赌现货高价。
同样的逻辑可以用于共享储能容量决策:把capacity_mwh、rental_price_yuan_kw_month和cycles_per_day分别扰动 10%,看哪个参数对净现值影响最大。如果发现cycles_per_day只要从 1.2 降到 1.0 收益就明显恶化,那在合同里就要争取更高的容量租赁单价,或者寻找能提供更多循环次数的峰谷价差窗口。报价前把市场规则、预测偏差和考核风险填进这个模型,算出来的不是精确利润,而是收益边界和需要让步的空间。
本文还有配套的精品资源,点击获取