重构充电协议模块,统一源载参数管理与流程

1.  apps/chrg/applications/utils/chrg_def.h: 移除vc_pd_t结构体中mm数组下标,改为单实例
2.  apps/chrg/applications/utils/chrg_north_pkg.c: 修正CRC校验调用,调整pd_get参数访问方式
3.  apps/chrg/applications/utils/chrg_source.h: 重构src_vc_t和chrg_src_t结构体,移除冗余字段,新增set_volt/set_curr和pd_set单实例
4.  apps/chrg/applications/thread/chrg_roll_nor.c: 修正CC选择变量名,新增PD数据获取流程
5.  apps/chrg/applications/thread/chrg_lcd.c: 重构LCD解析逻辑,区分源载电压处理,新增工作状态触发
6.  apps/chrg/applications/thread/chrg_north.c: 新增协议电压规则修正函数,重构源参数控制逻辑
7.  apps/chrg/applications/thread/chrg_comm.c: 新增pd_changed参数差异标志,重构源参数读写与差异比较逻辑
8.  apps/chrg/applications/utils/chrg_source.c: 重构源工作状态机,新增电压补偿逻辑,重构PD协议填充函数
9.  docs\2026-07-29-self-loop-aging-test-plan.md: 新增四通道自举老化测试计划文档
This commit is contained in:
wrh
2026-07-29 11:27:29 +08:00
parent 4beeb02382
commit 79c63f7b8e
10 changed files with 558 additions and 142 deletions
@@ -0,0 +1,210 @@
# 四通道自举老化测试计划
## 1. 测试目的
验证四通道在源载自连接条件下长期运行的稳定性,重点覆盖:
- Source/Sink启动、停止及角色切换流程;
- 标准、PD、QC、FCP、AFC及UFCS等已实现协议的协商稳定性;
- 四通道连续控制、南向指令执行及量测轮询稳定性;
- 电压、电流阶梯变化和长时间带载能力;
- 通信超时、协议掉线、功率板故障、异常复位和温升等问题。
本计划不包含短路和OCP破坏性测试。此类项目应使用独立限流电源、专用线材及人员值守,不能混入无人值守老化。
## 2. 测试连接
### 2.1 第一组连接
| 回路 | Source通道 | Sink通道 | 连接方式 |
| --- | --- | --- | --- |
| A | CH1 | CH2 | VBUS、GND及协议线完整连接 |
| B | CH3 | CH4 | VBUS、GND及协议线完整连接 |
### 2.2 反向角色连接
完成正向老化后不改变线束,停止全部通道并交换角色:
| 回路 | Source通道 | Sink通道 |
| --- | --- | --- |
| A | CH2 | CH1 |
| B | CH4 | CH3 |
线束必须满足目标电流要求。PD测试连接CC,QC/FCP/AFC测试连接D+、D-,并保证协议板GND与功率GND连接符合硬件设计。严禁两个Source输出直接相连。
## 3. 测试条件
- 使用待发布版本的主控、Source协议板、Sink协议板和功率板固件;
- 记录固件版本、硬件版本、设备序列号、线材规格及环境温度;
- 风扇、保险丝、急停和输入电源工作正常;
- 输入电源功率至少保留20%余量;
- 测试电流不得超过连接器、线材、功率板和协议档位中的最小额定值;
- 常规量测查询周期设为1秒,状态及故障寄存器至少每5秒记录一次;
- 30ms查询仅用于不超过60秒的波形专项采样,结束后恢复1秒周期;
- 上位机必须收到并校验上一条Modbus响应后再发送下一条命令;
- Modbus异常响应必须单独记录,特别是异常码`0x06`(设备忙)。
## 4. 单回路启动流程
每次启动必须按照以下顺序执行:
1. 向Source和Sink发送停止,确认功率板工作状态为停止;
2. 设置Source角色、协议、协议档位、最大电压、最大电流及CC线;
3. 设置Sink角色、协议、申请电压、申请电流、恒流模式及负载电流;
4. 对Source执行参数生效并启动;
5. 对Sink执行参数生效并启动;
6. 等待协议协商和南向功率板命令实际执行,不能将COM响应当作输出已经生效;
7. 连续读取量测值,电压稳定并保持3次有效采样后再进入老化计时;
8. 启动失败时先停止Sink,再停止Source,禁止直接反复发送启动命令。
正常停止顺序为:Sink停止并确认电流下降,然后Source停止并确认电压下降,最后才允许切换角色或协议。
## 5. 判定标准
### 5.1 单次启动合格条件
- Source和Sink协议类型与设定一致;
- 启动后5秒内进入稳定运行状态;
- 稳态电压与目标电压误差不超过200mV;
- 稳态电流误差不超过`max(50mA, 设定值的5%)`;
- 连续3次采样均满足要求后判定本次启动成功;
- 状态和故障寄存器无新增故障位;
- 无南向连续3次超时、队列取消、协议掉线或系统复位。
### 5.2 老化过程停止条件
出现以下任一情况应立即停止对应回路;出现过压、异味、冒烟或连接器异常发热时停止整机:
- 电压持续3秒超出目标值±500mV;
- 电流持续3秒超出设定值±10%;
- 协议掉线后5秒内不能自动恢复;
- 功率板报告欠压、过压、过流或其他故障;
- 连续3次COM无响应,或出现南向批量命令失败;
- 任一通道量测值连续5秒不更新;
- 设备复位、线程停止、LED2/LED3长时间停止刷新;
- 温度超过器件或整机规格。规格未明确时,连接器和线缆表面达到70摄氏度应停止测试。
## 6. 48小时老化安排
### 阶段A:低功率预老化,2小时
| 时间 | 回路A | 回路B | 目的 |
| --- | --- | --- | --- |
| 0~1小时 | 标准5V/0.5A | PD 5V/0.5A | 检查基础源载和PD启动 |
| 1~2小时 | QC3.0 9V/0.5A | FCP 9V/0.5A | 检查D+/D-协议带载稳定性 |
每15分钟执行一次停止、等待5秒、重新启动。阶段结束后检查连接器、继电器和线材温升。
### 阶段B:协议覆盖,6小时
共执行8个测试时段,每个时段45分钟。两组回路同时使用不同协议;后4个时段交换协议分配,确保两组回路都覆盖全部协议。
| 时段 | 回路A | 回路B |
| --- | --- | --- |
| 1 | 标准 | PD固定档 |
| 2 | PD PPS | QC2.0 |
| 3 | QC3.0 | FCP |
| 4 | AFC | UFCS |
| 5 | PD固定档 | 标准 |
| 6 | QC2.0 | PD PPS |
| 7 | FCP | QC3.0 |
| 8 | UFCS | AFC |
每个时段内轮换该协议支持的电压档位,负载电流在0.5A和1A之间交替。协议不支持对应电压时,使用协议实际支持的最近档位。
| 序号 | 协议 | 电压 | 负载电流 |
| --- | --- | --- | --- |
| 1 | 标准 | 5V、9V、12V | 0.5A、1A |
| 2 | PD固定档 | 5V、9V、12V、15V、20V | 0.5A、1A |
| 3 | PD PPS | 5V、9V、12V | 0.5A、1A |
| 4 | QC2.0 | 5V、9V、12V | 0.5A、1A |
| 5 | QC3.0 | 5V、9V、12V | 0.5A、1A |
| 6 | FCP | 5V、9V、12V | 0.5A、1A |
| 7 | AFC | 5V、9V、12V | 0.5A、1A |
| 8 | UFCS | 按当前固件支持档位 | 0.5A、1A |
未正式实现或尚未完成硬件验证的协议应标记为“不适用”,不得用其他协议的通过结果代替。
### 阶段C:额定功率长期运行,20小时
- 两组回路同时运行;
- 优先选择PD 20V和QC3.0 12V两个代表性协议;
- 电流按照额定能力的25%、50%、80%循环;
- 每个电流档保持30分钟;
- 每2小时停止两组回路,等待30秒后重新启动;
- 每4小时记录一次主控板、协议板、功率板、连接器和线缆温度;
- 第10小时交换两组回路使用的协议,避免固定通道只验证一种协议。
若设备额定值或散热条件不允许80%档位长时间运行,应以硬件额定连续功率为上限,并在记录中说明限制原因。
### 阶段D:动态调节与协议重协商,8小时
每个循环执行以下步骤,循环间隔不得小于30秒:
1. 在同一协议下按`0.5A -> 1A -> 2A -> 1A -> 0.5A`调节负载;
2. 每个电流档保持60秒;
3. 固定电流,在协议允许范围内按`5V -> 9V -> 12V -> 9V -> 5V`调节电压;
4. 每个电压档稳定后保持60秒;
5. 停止Sink,再停止Source;
6. 在PD与QC3.0之间切换协议并重新启动;
7. 检查切换前输出是否先降为0,以及新协议是否重新协商成功。
2A仅在源、载、线材及连接器均支持时使用,否则替换为额定电流的80%。
### 阶段E:角色切换,6小时
执行200次角色切换动作,即100个完整往返循环:
1. CH1 Source/CH2 Sink、CH3 Source/CH4 Sink运行60秒;
2. 停止Sink并确认电流下降;
3. 停止Source并确认电压下降;
4. 等待5秒;
5. 切换为CH2 Source/CH1 Sink、CH4 Source/CH3 Sink;
6. 运行60秒并记录结果;
7. 再按相同步骤切换回原角色,完成第二次切换动作和一个完整往返循环。
每20个完整往返循环更换一次协议,依次使用标准、PD、QC3.0、FCP和AFC。任何一次切换失败都必须保存前后30秒日志。
### 阶段F:通信和整机重启,6小时
- 正常运行时每秒读取一次全部四通道量测;
- 每10分钟执行一次四通道连续参数设置,命令之间等待Modbus响应;
- 四通道参数生效完成后等待300ms,再开始判断量测结果;
- 每30分钟执行一次全部停止和重新启动;
- 每小时执行一次整机断电重启,断电保持30秒;
- 重启后确认四通道初始状态安全,不允许未经上位机启动就输出或带载;
- 共完成不少于6次整机断电重启。
## 7. 数据记录
老化程序至少保存以下字段,建议使用CSV格式:
```text
timestamp,stage,cycle,pair,source_ch,sink_ch,protocol,
target_voltage_mv,target_current_ma,source_voltage_mv,source_current_ma,
sink_voltage_mv,sink_current_ma,source_status1,source_status2,
sink_status1,sink_status2,source_fault1,source_fault2,
sink_fault1,sink_fault2,com_error_count,south_timeout_count,
protocol_drop_count,restart_count,board_temp_c,connector_temp_c,result
```
发生异常时额外保存:
- 异常前后至少30秒的原始COM收发帧;
- Source/Sink协议板原始回码;
- 南向功率板写命令、响应、重试次数及失败寄存器;
- 四通道状态、故障、电压、电流和工作状态机;
- 异常时温度、输入电压及现场照片。
## 8. 最终通过条件
- 48小时计划全部完成,无安全类故障;
- 四个通道均完成Source和Sink角色老化;
- 所有声明支持的协议完成正向和反向连接验证;
- 200次角色切换动作(100个完整往返循环)无失败;
- 不少于6次整机断电重启均正常恢复;
- 无不明复位、线程阻塞、量测长期不更新或通道永久失联;
- 电压、电流和温升满足本计划判定标准;
- 所有异常均有日志、复现条件和明确结论。
测试完成后形成汇总表,按通道统计启动次数、成功率、协议掉线次数、南向超时次数、最大电压误差、最大电流误差和最高温度。任何未达到100%启动成功率的项目均不得直接判定整机老化通过。