2. 储能系统建模与SOC动态方程

要对储能进行SOC约束调度优化,第一步不是写优化算法,而是把储能单元本身描述成一个可以被计算的数学模型。调度层关心的是"这一时段充多少、放多少、SOC会走到哪里、会不会越限",因此本节聚焦于电池储能系统的功率—能量关系,并推导SOC随时间演化的离散动态方程。

一、符号约定与基本物理量

为避免后续公式与图示出现方向歧义,先统一定义:以储能系统为观察对象,充电功率为正、放电功率为负,即净功率 P(t) > 0 表示从电网吸收能量,P(t) < 0 表示向电网释放能量。SOC 定义为当前可用剩余电量与额定容量之比,取值范围 0~1(工程上常写成 0%~100%)。

  • Erated:额定容量,单位 kWh,表示满充状态下可存储的能量。
  • SOC(t):t 时刻的荷电状态,无量纲。
  • P(t):t 时刻的并网侧净功率,单位 kW,充电为正。
  • ηc:充电效率,典型 0.90~0.98。
  • ηd:放电效率,典型 0.90~0.98。
  • σ:自放电率(每小时),典型 0.0001~0.001 h⁻¹。
  • Δt:调度时间步长,单位 h,常见 0.25 h(15 min)或 1 h。

需要特别强调效率的"方向性":充电时,只有 ηc·P·Δt 的能量真正进入电池;放电时,要从电池取出 |P|·Δt/ηd 的能量,才能在并网侧输出 |P|·Δt。这一不对称是SOC轨迹呈现"充得慢、放得快"的直接原因。

二、连续时间功率—能量关系

把电池内部能量记为 E(t) = SOC(t)·Erated,则连续时间下的能量平衡可写为:

dE/dt = η_c · P(t)          , P(t) ≥ 0   (充电)
dE/dt = P(t) / η_d          , P(t) < 0   (放电)
dE/dt = -σ · E(t)                        (自放电,始终存在)

合并后得到统一的连续动态方程:

dSOC/dt = [ η_c · P⁺(t) + P⁻(t)/η_d ] / E_rated − σ · SOC(t)

其中 P⁺ = max(P, 0),P⁻ = min(P, 0)

该式说明SOC的变化由三股力量叠加:充电注入、放电抽取、自放电损耗。自放电项与SOC本身成正比,因此SOC越高,自放电造成的绝对损失越大,这也是长期静置的储能需要定期补电的原因。

三、离散动态方程推导

调度优化通常按离散时段建模,需要对连续方程在 [t, t+Δt] 上积分。对自放电项采用一阶线性常微分方程的解,对功率项采用步内功率恒定的假设,可得精确离散形式:

SOC(k+1) = SOC(k) · e^(−σ·Δt)
         + [ η_c · P⁺(k) + P⁻(k)/η_d ] · Δt / E_rated · (1 − e^(−σ·Δt)) / (σ·Δt)

当 σ·Δt 很小时(例如 σ=0.0002 h⁻¹、Δt=0.25 h,σ·Δt=5×10⁻⁵),可做一阶近似 e^(−σ·Δt) ≈ 1 − σ·Δt,得到工程上最常用的简化离散方程:

SOC(k+1) = (1 − σ·Δt) · SOC(k)
         + [ η_c · P⁺(k) + P⁻(k)/η_d ] · Δt / E_rated

这个式子就是后续所有SOC约束调度的核心递推关系。它把"功率决策"与"SOC状态"直接连起来:给定当前SOC和本时段功率,下一时段SOC即可算出。反过来,若要求 SOC(k+1) 落在 [SOCmin, SOCmax] 内,就等价于对 P(k) 施加了一组上下界约束。

单储能单元 SOC 离散递推与功率约束关系 并网净功率 P(k) P>0 充电 / P<0 放电 受 P_min ≤ P ≤ P_max 限制 充电支路 η_c · P⁺(k) 能量注入电池 放电支路 P⁻(k)/η_d 能量从电池抽取 自放电 −σ·SOC(k) 与SOC成正比,持续损耗 能量平衡 ΔE = 注入 − 抽取 − 自放电损耗 ÷ E_rated → ΔSOC SOC(k+1) = (1−σΔt)·SOC(k) + [η_c P⁺ + P⁻/η_d] · Δt / E_rated SOC 约束反馈:SOC_min ≤ SOC(k+1) ≤ SOC_max 越限时反向收紧 P(k) 的可行区间 关键参数:E_rated=100 kWh | η_c=0.95 | η_d=0.95 | σ=0.0002 h⁻¹ | Δt=0.25 h | SOC_min=0.10 | SOC_max=0.90 参数变化 → 递推系数变化 → SOC 轨迹斜率与可达范围变化

四、参数对SOC轨迹的影响

把离散方程拆开看,各参数的作用非常直观:

参数在方程中的位置对SOC轨迹的影响
额定容量 Erated分母容量越大,同样功率下ΔSOC越小,轨迹越平缓,可调节时间越长
充电效率 ηc充电项系数效率越低,充电时SOC上升越慢,充电时段需更长或功率更大
放电效率 ηd放电项分母效率越低,放电时SOC下降越快,可用放电时长缩短
自放电率 σ衰减系数σ越大,静置时SOC缓慢下滑,长期调度需预留补电余量
步长 Δt乘子步长越大,单步SOC变化越剧烈,离散误差也越大

以 Erated=100 kWh、ηc=ηd=0.95、σ=0.0002 h⁻¹、Δt=0.25 h 为例:若 P=20 kW 充电,则单步SOC增量为 0.95×20×0.25/100 ≈ 0.0475,即约4.75个百分点;若 P=−20 kW 放电,单步SOC变化为 −20×0.25/(0.95×100) ≈ −0.0526,约5.26个百分点。可见同样20 kW,放电造成的SOC下降比充电带来的上升更大,这正是效率不对称的体现。

五、单储能单元SOC仿真任务

下面给出一个可直接运行的最小仿真示例,用于观察SOC轨迹与约束触发情况。设定:Erated=100 kWh,SOC(0)=0.50,ηc=ηd=0.95,σ=0.0002 h⁻¹,Δt=0.25 h,SOCmin=0.10,SOCmax=0.90,功率序列为 8 个时段:+20、+20、−30、−30、+10、−25、−25、+15(kW)。

E_rated = 100.0      # kWh
eta_c   = 0.95
eta_d   = 0.95
sigma   = 0.0002     # 1/h
dt      = 0.25       # h
soc     = 0.50
soc_min, soc_max = 0.10, 0.90
P = [20, 20, -30, -30, 10, -25, -25, 15]   # kW

for k, p in enumerate(P):
    if p >= 0:
        delta = eta_c * p * dt / E_rated
    else:
        delta = p * dt / (eta_d * E_rated)
    soc = (1 - sigma * dt) * soc + delta
    flag = "OK" if soc_min <= soc <= soc_max else "越限"
    print(f"k={k+1:2d}  P={p:+4d} kW  SOC={soc:.4f}  {flag}")

按上述参数逐步计算,SOC大致演化如下(示例计算结果,用于说明方法):k=1 后约 0.5474,k=2 后约 0.5948,k=3 放电后约 0.5159,k=4 后约 0.4370,k=5 充电后约 0.4607,k=6 后约 0.3949,k=7 后约 0.3291,k=8 充电后约 0.3647。全程SOC落在 0.10~0.90 之间,未触发越限。

观察要点:连续两个 −30 kW 放电时段使SOC从约0.59快速降到约0.44,降幅约15个百分点;而两个 +20 kW 充电时段仅把SOC从0.50抬到约0.59,升幅约9个百分点。这说明在效率不对称下,放电对SOC的"消耗速度"明显快于充电的"补充速度",调度中若只按功率平衡安排充放电,很容易在连续放电后触及SOC下限。

六、从仿真到约束调度的衔接

仿真跑通后,把递推式反过来用即可得到约束条件。对每个时段 k,要求 SOC(k+1) 落在允许区间内,等价于:

SOC_min ≤ (1 − σΔt)·SOC(k) + [η_c·P⁺(k) + P⁻(k)/η_d]·Δt/E_rated ≤ SOC_max

由于 P⁺ 与 P⁻ 是分段线性的,该式可拆成充电、放电两种情形分别化为对 P(k) 的线性上下界,从而直接嵌入线性规划或混合整数规划模型。至此,储能单元的物理模型已转化为调度器可用的数学约束,后续章节将在此基础上加入功率平衡、电价与多储能协同等条件。

建模时务必核对三件事:一是功率正负号约定是否与优化目标一致;二是效率是乘还是除(充电乘ηc、放电除ηd);三是自放电项是否被忽略。这三处一旦写反,SOC轨迹会系统性偏移,约束边界随之失真。