电流工况分析第 7 章 — 分电池型号的放电与寿命边界
| 项 | 内容 |
|---|---|
| 日期 | 2026-10-13 |
| 状态 | 已跑完。报告在 current-distribution-analyzer/output_v3/battery/index.html |
| 底座 | analysis/reports/surfboard_current_distribution_analysis_plan_v3.md 第一至六章 |
| 实现时 | 在 current-distribution-analyzer/analyze_v3.py 的同一套连续航段和点级池上分组,不另写一套筛选 |
| 数据 | current-distribution-analyzer/data/oss_cache(已与正式库未删除航次对齐,约 3.0 万个文件) |
本章不改前六章的工况定义。它做两件事:每一张前六章的表按电池型号拆开;每一款电池单独给出电流分布、功率分布、最大电流和正态电流。
1. 电池怎么认
只认日志头上的 batterySn,取前 6 位。不使用点上的电量百分比来猜型号。
| 产品名 | 型号 | SN 前缀 | 归组 |
|---|---|---|---|
| 长续航电池 | BP2400 | 210AAA |
单独一组 |
| 高性能电池 | BP1700 | 210AAB、210ABB |
先合成一组出边界;表里仍分列两个前缀的航次数 |
| 半固态电池 | BP1300 | 210AAC |
单独一组 |
| 其他或空 SN | — | 以上都不是 | UNKNOWN,不进三款边界,只在覆盖率表里计数 |
210AAB 与 210ABB 若航次数差一个数量级,或同一速度段的 P95 电流差超过 15%,边界表拆开报,不合成一个 BP1700 数字。
一场日志一个 batterySn。中途换电池而头上只有一个 SN 的,整场算这个 SN,不拆点。
2. 和前六章共用的样本
沿用 v3,不放宽:
- 连续航段平均速度 ≥ 20 km/h,最长连续飞行 ≥ 8 min,飞行点占比 ≥ 50%,断联时长占比 ≤ 10%
- 断断续续、未起飞的新手日志整条丢掉
- 巡航 / 高负荷池:
hourSpeed ≥ 15,electricCurrent ≥ 5,batteryVoltage ≥ 38 - 高负荷:25–35 km/h 且电流 ≥ 该速度段均值 × 1.5,从巡航正态里剔除
- 起飞池单独保留 0–20 km/h 的加速峰值
v3 点级条件里的 batteryElectricity ≥ 10% 是遥控电量,不是板体电池电量。本章分组不使用它。板体电量若要卡低电,用 boardBattery,且缺键就丢掉该点,不把缺键写成 0。
前六章已经算过的全局 μ、P95、Top 15 保留为「不分电池」对照列。本章的数必须能对回同一批入选航次,只是多一列 battery_model。
3. 两套电流,不能合成一列
前六章的「电流」是电调电流 electricCurrent,功率是 electricCurrent × batteryVoltage。本章为了和前六章可比,分布主表继续用这一套。
电池放电边界另开一套,不能用电调电流冒充:
| 量 | 字段 | 规则 |
|---|---|---|
| 电池放电电流 | batteryCurrent |
放电在日志里为负。统计用绝对值。缺键的点不进入这套表,禁止填 0 |
| 电池放电功率 | batteryVoltage × \|batteryCurrent\| |
单位 W。没有 batteryCurrent 的航次,这套功率为空 |
| 电调电流 / 电调功率 | 与 v3 相同 | 主分布表、和第一至六章对齐 |
batteryCurrent 从 2026-09 新固件才稳定出现。旧日志整场没有这个键。因此每款电池先出覆盖率:入选航次、其中有 batteryCurrent 的航次、有效放电点数。有电池电流的航次少于 30 场,或有效点少于 1 万,该型号的「电池侧」表标注样本不足,只发布电调侧分布。
4. 每款电池要出的表
三款电池各一套,外加一行「全部入选航次」对照。速度段与 v3 总览相同,不另发明箱子。
4.1 覆盖率
battery_coverage.csv
| 列 | 含义 |
|---|---|
| battery_model / sn_prefix | BP2400、BP1700,以及 AAB/ABB 分列 |
| logs_kept | 通过 v3 连续航段后的航次数 |
| logs_with_battery_current | 其中至少一个点有 batteryCurrent |
| points_esc | 电调侧入池点数 |
| points_pack | 电池侧入池点数 |
4.2 电调电流与功率的正态表(主表)
battery_esc_distribution.csv
在巡航池(已剔除 1.5 倍高负荷)上,按电池 × 速度段:
| 列 | 含义 |
|---|---|
| speed_band | 与 v3 总览相同的速度段;另加一行「巡航合计」 |
| n_logs / n_points | 样本量 |
| i_mu_a / i_sigma_a | 正态拟合的均值和标准差,单位 A |
| i_p50_a / i_p95_a / i_p99_a | 分位数,不依赖拟合好坏 |
| i_max_a | 该组最大电调电流,一个点 |
| p_mu_w / p_p50_w / p_p95_w / p_max_w | 同一批点的电调功率 I × V,单位 W |
正态拟合用 scipy.stats.norm。若直方图明显偏态(高负荷尾巴没剔干净),表里仍给分位数,并在备注写「μ 仅供形状,边界用 P95」。最大电流永远单列,不拿 μ 或 P99 窗口平均值代替。
4.3 高负荷、起飞、峰值(仍按电池拆)
这三张不是正态主表,但边界要用:
| 文件 | 内容 |
|---|---|
battery_high_load_25_35.csv |
各电池在 25–35 km/h、≥1.5× 与 ≥2.0× 的点数、电流 P50/P95/最大、功率 P50/P95/最大 |
battery_takeoff.csv |
各电池起飞加速峰值电流的中位、P95、最大,及对应功率 |
battery_top15_current.csv |
每款电池各自的电流 Top 15 航次(不是全局 Top 15 再过滤)。列:trajectory_id、battery_sn、速度、电流、功率、电压 |
全局 Top 15 若三款电池挤在一起,看不出某一款的模组边界。所以 Top 15 按型号各取 15 条。
4.4 电池侧放电表(仅新固件)
battery_pack_distribution.csv
列与 4.2 相同,电流改为 |batteryCurrent|,功率改为 V × |batteryCurrent|。速度段仍用巡航池。没有电池电流的点不出现在这张表里。
寿命边界不从日志里编循环次数。日志能给的是放电边界,供后面和厂家的寿命曲线对齐:
| 边界名 | 取数 | 给谁用 |
|---|---|---|
| 连续放电 | 该电池巡航 20–30 km/h 的电调电流 P95,及电池侧 P95(有样本才写) | 连续工况、容量 |
| 高负荷放电 | 25–35 km/h 且 ≥1.5× 的 P95 | 带人 / 大载重 |
| 峰值放电 | 该电池 Top 15 的最大电流,逐条列出,不取这 15 条的平均 | 模组峰值 |
| 起飞 | 起飞峰值的 P95 | 短时大电流 |
厂家寿命曲线上的循环次数、截止电压、温度条件,本章不填。那些不是航行日志里的量。
5. 输出与对照
结果写到 current-distribution-analyzer/output_v3/battery/,不覆盖已经发出的 v3 总表。
跑完后先看三件事,再读分布数字:
- 三款电池的入选航次是否都不少于约 100 场。某一款太少,边界表照出,但标题标明样本不足。
210ABB是否值得并进 BP1700。- 电池侧表的覆盖率。覆盖率低时,对外只给电调侧的分型号表,并写明「电池包电流尚未覆盖该型号的旧日志」。
前六章的筛选、连续航段、1.5 倍高负荷定义保持不动。本章只加分组和上述四张新表。