本文档用于说明 pro_case1_8node_pv_bat_load_pcc.py。该案例把两组 PV—电池—负载接入同一功率平衡策略,由两台电池共同承担系统总差额,并通过分批归零和 S 形软启动降低多节点同时启动的冲击。
节点映射为:
| 节点 | 设备 | 控制方式 |
|---|---|---|
| 1 | PV1 | 功率控制 |
| 2 | Battery1 | 功率控制 |
| 3 | Load1 | 功率控制 |
| 4 | PCC | 20V CV-only |
| 5 | PV2 | 功率控制 |
| 6 | Battery2 | 功率控制 |
| 7 | Load2 | 功率控制 |
| 8 | ACDC | 本案例不控制 |
六个功率控制节点共同满足:
先计算两台电池需要承担的总功率:
再按配置把总功率分配给 node2 与 node6。PCC4 只维持 20V,不下发功率;node8 完全不参与本案例。
脚本支持:
equal:两台电池各承担 50%;ratio:按 battery2_ratio:battery6_ratio 加权分配;默认使用 equal。
内部约定:PV 和电池放电为正,电池充电与负载耗电为负。CAN 设定域采用相反符号:
node.p = -internal_power
默认依次把以下组别设置为 0W:
[PV1, Load3];[PV5, Load7];[Battery2];[Battery6]。相邻批次默认间隔 10 秒,全部归零后再保持 3 秒。该过程用于避免六个功率节点在同一瞬间切换。
脚本在正常计时开始前,按 t=0 的波形捕获首组目标,并通过 api.soft_start_node_p_sigmoid() 在 10 秒内、40 步、形状参数 10 的 S 形曲线从 0W 平滑升至目标。
按默认参数,从点击运行到进入正常控制约需 58 秒:5 秒安全延时 + 10 秒 PCC 等待 + 30 秒批次间隔 + 3 秒零功率保持 + 10 秒软启动。
进入 3 Hz 主循环后,每周期执行:
PowerClamp 向 node1/2/3 和 node5/6/7 下发命令。日志中的 sum_non_pcc 按理论公式应接近 0W,pcc_p_expected 是在 node.p 命令符号域计算的预期剩余量;PCC4 本身不接收该功率值。
| 参数名 | 默认值 | 作用 |
|---|---|---|
run_duration_s |
18000.0 |
正常控制时长,约 5 小时;<=0 时手动停止。 |
send_hz |
3.0 |
正常控制频率。 |
pcc_cv_v |
20.0 |
PCC4 CV 电压。 |
battery_split_mode |
equal |
电池总功率分配方式。 |
battery2_ratio |
1.0 |
比例模式下 node2 权重。 |
battery6_ratio |
1.0 |
比例模式下 node6 权重。 |
| 参数名 | 默认值 | 作用 |
|---|---|---|
startup_batch_enable |
True |
是否启用分批归零。 |
startup_batch_interval_s |
10.0 |
相邻批次间隔。 |
startup_zero_hold_s |
3.0 |
全部归零后的保持时间。 |
soft_start_enable |
True |
是否启用 S 形软启动。 |
soft_start_duration_s |
10.0 |
软启动持续时间。 |
soft_start_steps |
40 |
软启动离散步数。 |
soft_start_shape |
10.0 |
S 形曲线陡峭程度。 |
| 参数名 | 默认值 | 作用 |
|---|---|---|
battery_voltage_v |
20.0 |
两台电池估算电压。 |
battery2_capacity_ah |
0.2 |
Battery2 估算容量。 |
battery6_capacity_ah |
0.2 |
Battery6 估算容量。 |
battery_soc_min_pct |
20.0 |
SOC 显示下边界。 |
battery2_init_soc_pct |
50.0 |
Battery2 初始 SOC。 |
battery6_init_soc_pct |
50.0 |
Battery6 初始 SOC。 |
两路光伏使用相同 1200 秒周期:前 600 秒为 0~35W 半波,后 600 秒为 0W。
周期 450 秒,范围 5~30W。
Load7 使用周期 600 秒、相移 127 秒的三角波,范围 8~30W。两种负载轨迹不同,可观察双电池总功率在多源多负载条件下的变化。
PowerClamp 限值相容。ratio 并填写权重。pro_case1_8node_pv_bat_load_pcc.py 并运行。sum_non_pcc、双电池功率和 SOC。sum_non_pcc 理论上应接近 0W。equal 模式下 Battery2 与 Battery6 的内部功率应相同。ratio 模式下两者比例应与正权重一致。pcc_p_expected 接近 0 表示计划交换功率已由两台电池抵消。clamp_p 裁剪了任一命令,理论平衡可能不再对应实际发送结果,应以设备遥测为准。PowerClamp 会分别限制 1/2/3 与 5/6/7 的命令,裁剪后总和可能偏离理论值。api.should_stop() 分支,停止响应仍取决于运行时 API 的休眠和软启动实现。本平台仅提供脚本运行接口、样例与开发支持说明。用户基于本平台进行的拓扑确认、节点映射、参数配置、电池分配与运行操作,均由用户自行评估风险并承担后果。对于因拓扑不符、权重错误、设备能力不足、保护配置不当或操作失误引发的直接或间接问题,本平台不承担责任。