4. 柴电到纯电模式切换负载转移测试

测试对象与负载转移路径

本例针对一条由柴油发电机组(额定 250 kW)与磷酸铁锂动力电池组(额定 120 kWh,持续放电 150 kW)构成的直流母线混合动力系统,执行柴电模式向纯电模式的负载转移测试。切换前系统处于柴电模式:发电机组承担全部推进负载,电池组处于待机(仅维持 SOC 平衡的小功率充放)。切换指令下发后,能量管理系统(EMS)按斜坡将发电机组功率指令从当前值降至 0,同时电池组放电功率指令从 0 升至负载需求值,母线电压由双向 DC/DC 与发电机整流器共同支撑。

测试的核心不是“能否切过去”,而是转移过程中功率是否连续、母线电压是否在允许窗口内。因此需要同时采集三类量:发电机组实际输出功率(整流器直流侧)、电池组放电功率(BMS 上报与 DC/DC 实测)、直流母线电压。三者构成一个功率平衡关系:

P_gen(t) + P_batt(t) = P_load(t) + P_loss(t)

在负载近似恒定的短时窗口内,发电机组卸载曲线与电池组加载曲线应呈互补形态,其差值即母线电压波动的直接驱动量。

测试配置与采集设置

采用如下示例配置(参数为教学设定值,非实测):

  • 负载:推进电机对拖台架,设定恒功率 140 kW,切换期间保持恒定。
  • 切换斜坡时间:EMS 设定 2.0 s,即发电机组功率指令以 70 kW/s 速率下降。
  • 采样:功率通道 100 Hz,母线电压通道 10 kHz(用于捕捉暂态),时间戳统一由同一采集器打标。
  • 触发:以“模式切换使能”上升沿为 t=0,预触发记录 1 s。
  • 判据:母线电压额定 600 V,允许波动 ±5%(570–630 V);负载转移平稳性以功率互补偏差与电压恢复时间衡量。
采集前先确认发电机组整流器功率反馈与 BMS 放电功率反馈的量程、极性一致,避免出现“一方为正一方为负”导致的互补曲线误判。本例约定:放电/输出为正,充电/吸收为负。

负载转移过程的关键观察点

下图给出切换过程中发电机组卸载与电池组加载的互补关系,以及母线电压随功率缺额变化的响应路径。图中标注了三个判读位置:斜坡起点、功率交叉点、斜坡终点。

柴电→纯电负载转移:功率互补与母线电压响应 功率 (kW) 时间 (s) 0 70 140 -1 0 1 2 3 4 发电机组输出 P_gen 电池组放电 P_batt 负载 140 kW 功率交叉点 P_gen≈P_batt≈70 kW 母线电压 (V) 时间 (s) 570 600 630 -1 0 1 2 3 4 +5% 630 V -5% 570 V 直流母线电压 U_dc 最低点约 578 V(示例预期) 仍在 570 V 下限之上 判读要点 ① 斜坡起点 t=0: 发电机组开始卸载, 电池组开始加载。 ② 功率交叉点 t≈1 s: 两者各约 70 kW, 母线电压跌落最深。 ③ 斜坡终点 t=2 s: 发电机组归零, 电池组承担全部负载。 ④ 互补偏差: P_gen+P_batt 与 140 kW 的偏差反映转移平稳性。 ⑤ 电压恢复: t=2 s 后应回升至 600 V 附近并稳定。

执行与数据处理

按上述配置完成一次切换采集后,用下面的脚本对导出的 CSV(列:t, p_gen, p_batt, u_dc)做功率互补偏差与电压窗口统计。脚本只依赖标准库,可直接运行验证。

import csv

LOAD_KW = 140.0
U_NOM = 600.0
U_LOW, U_HIGH = 570.0, 630.0

rows = []
with open("transfer_log.csv", newline="") as f:
    for r in csv.DictReader(f):
        rows.append((float(r["t"]), float(r["p_gen"]),
                     float(r["p_batt"]), float(r["u_dc"])))

# 只统计切换窗口 t ∈ [0, 2.5] s
win = [x for x in rows if 0.0 <= x[0] <= 2.5]

dev = [abs(g + b - LOAD_KW) for _, g, b, _ in win]
u = [x[3] for x in win]

print(f"样本数: {len(win)}")
print(f"最大互补偏差: {max(dev):.2f} kW")
print(f"电压最低: {min(u):.1f} V  最高: {max(u):.1f} V")
print(f"越下限: {min(u) < U_LOW}  越上限: {max(u) > U_HIGH}")

# 电压恢复时间:最后一次跌出窗口到重新进入并保持的时刻
last_out = None
for t, _, _, uu in win:
    if uu < U_LOW or uu > U_HIGH:
        last_out = t
if last_out is None:
    print("全程未越限,恢复时间 0 s")
else:
    back = [t for t, _, _, uu in win
            if t > last_out and U_LOW <= uu <= U_HIGH]
    print(f"恢复时间约: {back[0] - last_out:.2f} s" if back else "窗口内未恢复")

判读逻辑:最大互补偏差反映发电机组卸载与电池组加载是否同步——偏差大说明某一侧响应滞后,母线需靠电容或其它源临时补缺;电压最低点通常出现在功率交叉点附近,因为此时两侧都在斜坡中段、调节余量最小;恢复时间则衡量切换完成后电压回到稳态的快慢。

结果判读与常见异常

观察现象可能原因处理方向
互补偏差持续偏大(>15 kW)电池组功率指令响应滞后,或发电机组卸载速率与电池加载速率不匹配核对两侧斜坡时间常数,检查 DC/DC 电流环带宽
电压最低点跌破 570 V交叉点附近功率缺额过大,母线电容储能不足缩短斜坡时间或提高电池组加载前馈,评估电容容量
电压在切换后长时间不回 600 V电池组进入限功率或 SOC 保护,实际放电低于指令查看 BMS 限流标志与 SOC,确认放电能力余量
发电机组功率出现反向(负值)卸载过快导致整流器短时吸收功率放缓卸载斜坡,检查整流器四象限控制使能
若测试中电池组 SOC 低于 30% 或温度超出放电允许区间,BMS 可能限制放电功率,此时负载转移将不完整,电压跌落会明显加大。此类数据不能用于评价切换策略本身,应先恢复电池可用状态再复测。

一次合格的负载转移测试应同时满足:互补偏差在设定阈值内、母线电压全程处于 570–630 V、切换完成后电压在约定恢复时间内回到稳态。三项中任一不满足,都应结合上表定位到具体环节,而不是简单判定“切换失败”。