Files
chrg/docs/修改日志.md
T
wrh 03b313d9fe docs: 更新变更日志,补充低电流待机恢复逻辑修改
refactor: 重构负载电流处理与状态机,优化待机恢复流程
- 修改chrg_comm.c:将低电流待机恢复改为先等待北向电压稳定
- 更新chrg_sink.h:新增/修改负载工作状态枚举与阈值参数
- 新增chrg_sou_com_batch_cancel接口并完善超时重试安全机制
- 优化chrg_north.c:调整电压稳定判断逻辑与计数阈值
- 修改chrg_sink.c:简化负载启动批次、更新关闭电流与卸载阈值

docs: 补充相关注释与文档说明,修正部分历史描述错误
2026-08-09 20:34:09 +08:00

8.5 KiB

修改日志

V1.1.7 - 2026-08-08

修改主题

并行执行Sink完整握手中的南向低电流确认与北向协议/CC设置。

主要修改

  • 南向安全批次完成并收到辅助继电器回码、建立量测基线后,立即允许北向设置协议和CC线。
  • 南向实际电流连续两次不大于 100mA 的确认过程与北向协议/CC设置并行执行。
  • 北向进入 GET_SINK_VC 后,只有低电流确认完成且CC后的 200ms 查询保护时间到期,才发送第一条 0x20。
  • 电压稳定后再发送 ALL_REL_ON -> 目标电流 -> WORK_START,防止协议协商期间提前带载。

涉及文件

  • apps/chrg/applications/thread/chrg_roll_nor.c
  • apps/chrg/applications/utils/chrg_sink.c
  • apps/chrg/applications/utils/chrg_sink.h

编译验证

  • Keil MDK 编译结果:0 Error(s), 0 Warning(s)。

V1.1.5 - 2026-08-08

修改主题

协议电压和协议电流变化统一采用软卸载重发协议流程。

主要修改

  • 协议类型、CC线和协议组号变化仍进入完整握手并切换南向继电器。
  • 协议电压、协议电流单独变化或同时变化时,只发送 WORK_STOP,不关闭南向继电器。
  • 软卸载不再额外发送 CURRENT=0,仅通过实际电流连续两次不大于 100mA确认电子负载已停止。
  • 协议重新生效且电压稳定后,由RUNNING先写入实际负载电流,再发送 WORK_START。

涉及文件

  • apps/chrg/applications/thread/chrg_comm.c
  • apps/chrg/applications/utils/chrg_sink.c

编译验证

  • Keil MDK 编译结果:0 Error(s), 0 Warning(s)。

V1.1.4 - 2026-08-07

修改主题

调整负载低电流启动时的继电器和工作命令顺序。

主要修改

  • 设定电流为 0A 或低于 100mA 时,协议握手仍正常执行。
  • 电压达到目标后发送 ALL_REL_ON,确保主继电器打开。
  • 主继电器打开后继续发送 WORK_STOP 和 CURRENT=0,保持电子负载不带载。
  • 已经处于运行状态切换到低电流时,沿用原有停止流程,不重复切换继电器。

涉及文件

  • apps/chrg/applications/utils/chrg_sink.c

编译验证

  • Keil MDK 编译结果:0 Error(s), 0 Warning(s)。

V1.1.3 - 2026-08-07

修改主题

并行执行Sink南向初始化与北向握手,并优化握手查询和RUNING继电器时序。

主要修改

  • INIT将 FU_REL_ON -> CURRENT=0 -> MODE -> VON 作为一个有序南向批次提交。
  • 南向初始化批次成功入队后立即打开北向Sink继电器、设置 enable=1 并开始协议握手。
  • SINK_WORK_INIT_AUX_WAIT改为后台监控南向初始化,不再阻塞北向协议、CC和电压查询。
  • 南向初始化失败重试时保留当前北向 sub,不重复拉回协议设置起点。
  • 协议或CC有效回码后,首条 0x20 等待 200ms;电压未稳定时后续每 100ms 查询一次。
  • 一帧通过CRC、ID、命令和配置版本校验的电压达到目标后立即进入 RUNING,不再等待第二帧。
  • 进入稳定运行后立即解除查询节流,恢复北向正常轮询速度。
  • RUNING删除重复的 FU_REL_ON,调整为 ALL_REL_ON -> 目标负载值 -> WORK_START。

涉及文件

  • apps/chrg/applications/utils/chrg_sink.c
  • apps/chrg/applications/thread/chrg_roll_nor.c
  • apps/chrg/applications/thread/chrg_north.c

编译验证

  • Keil MDK 编译结果:0 Error(s), 0 Warning(s)。

硬件验证

  • 待确认南向初始化命令与北向协议/CC设置并行执行且互不重置状态。
  • 待确认首条和后续 0x20 间隔分别约为 200ms 和 100ms。
  • 待确认进入 RUNING 时不再发送 FU_REL_ON,主继电器不会被重复断开。

V1.1.2 - 2026-08-07

修改主题

降低Sink协议握手阶段的北向电压电流查询频率。

主要修改

  • 新增 SINK_HANDSHAKE_QUERY_INTERVAL_MS,设置为 200ms。
  • Sink协议或CC设置收到有效回码后,不立即发送或连续快速发送 0x20 查询。
  • CC路径的 200ms 从有效 0x17 回码时刻开始计时,包含原有 50ms CC稳定保护。
  • 协议握手、软恢复等待和掉电恢复监控阶段的 0x20 查询按每 200ms 一次执行。
  • 北向量测连续两次达到稳定条件后解除节流,RUNING 和低电流待机恢复正常查询频率。
  • 仅重发协议的 IDX_SET_SINK_PD_ONLY 路径同样启动 200ms 查询等待。
  • 设置协议和CC命令仍然按有效回码、超时和原有重试机制处理。

涉及文件

  • apps/chrg/applications/thread/chrg_roll_nor.c

编译验证

  • Keil MDK 编译结果:0 Error(s), 0 Warning(s)。

硬件验证

  • 待观察协议/CC设置后 0x20 的发送间隔是否稳定为不小于 200ms。
  • 待验证电压连续两次稳定后是否恢复正常量测频率。

V1.1.1 - 2026-08-07

修改主题

增加普通负载最低带载电流控制,低电流时保持协议在线但关闭电子负载。

主要修改

  • 新增 SINK_LOAD_ENABLE_MIN_MA,恒流负载设定低于 100mA 时禁止发送 WORK_START。
  • 最低带载门限只判断南向负载电流 loadc,不影响北向协议电流 pro_loadc 和协议握手。
  • 首次启动或完整重握手后为低电流时,发送 WORK_STOP -> CURRENT=0 并保持主继电器关闭。
  • 运行中由有效电流降至低电流时,发送 WORK_STOP -> CURRENT=0,保持协议、CC和继电器不变。
  • 运行中低电流待机恢复有效电流时,只发送目标电流和 WORK_START,不重新握手或切换继电器。
  • 主继电器未打开的低电流待机使用独立 SINK_WORK_LOAD_START 恢复入口,避免被 RUNING 状态去重。
  • 低电流待机期间仅修改协议电压时不重复卸载,并保持原有主继电器状态语义。
  • 将 COM 端运行电流跨门限判断封装为 chrg_comm_handle_sink_load_current(),避免生效分支继续膨胀。
  • 北向解析将两种低电流待机状态作为稳定状态,不因实际电流为零反复进入 RUNING。
  • 低电流待机恢复有效电流时,SINK_WORK_LOAD_START/SINK_WORK_LOAD_RESUME 只作为待启动标记,必须等北向实际电压稳定后才下发 WORK_START。

涉及文件

  • apps/chrg/applications/utils/chrg_sink.h
  • apps/chrg/applications/utils/chrg_sink.c
  • apps/chrg/applications/thread/chrg_comm.c
  • apps/chrg/applications/thread/chrg_north.c

编译验证

  • Keil MDK 编译结果:0 Error(s), 0 Warning(s)。

硬件验证

  • 待验证 20V/3A -> 20V/0A -> 20V/3A 的南向命令顺序和协议保持情况。
  • 待验证首次以低于 100mA 的电流启动时,北向握手正常且南向不执行 WORK_START。

V1.1.0 - 2026-08-07

修改主题

负载启动、掉电恢复、协议重握手和协议电压软切换时序调整。

主要修改

  • 负载启动时先向南向发送 FU_REL_ON,收到有效回码后才打开北向 Sink 继电器。
  • 剩余的负载初始化命令在副继电器确认后入队,北向协议握手与南向初始化并行执行。
  • RUNING 阶段的南向命令继续追加到同一队列,保持初始化配置、继电器、目标电流/电压和 WORK_START 的顺序。
  • 掉电恢复时执行 WORK_STOP -> CURRENT=0 -> ALL_REL_OFF -> FU_REL_ON,副继电器恢复后等待输入电压重新出现。
  • 掉电恢复检测到电压后重新设置协议和 CC,不能使用掉电前的电压样本直接进入 RUNING。
  • 协议类型、CC、协议组号或协议电流变化进入完整重握手,关闭主副继电器后重新打开副继电器。
  • 仅协议电压变化使用软卸载,只发送 WORK_STOP 和 CURRENT=0,不切换继电器。
  • 软卸载恢复时只发送目标电流/电压和 WORK_START,不再发送继电器命令。
  • 保留连续两次实际电流不大于 100mA 的安全确认,以及连续两次稳定电压确认。
  • 暂时保持南向主副继电器之间的固定延时为屏蔽状态。

涉及文件

  • apps/chrg/applications/utils/chrg_sink.h
  • apps/chrg/applications/utils/chrg_sink.c
  • apps/chrg/applications/thread/chrg_comm.c
  • apps/chrg/applications/thread/chrg_roll_nor.c
  • apps/chrg/applications/thread/chrg_north.c

编译验证

  • Keil MDK 编译结果:0 Error(s), 0 Warning(s)。
  • 尚未完成硬件验证,需重点观察南向命令顺序、北向协议握手时刻、掉电恢复和协议电压软切换。

后续记录格式

后续每次修改按以下格式追加:

## Vx.y.z - YYYY-MM-DD

### 修改主题
### 主要修改
### 涉及文件
### 编译验证
### 硬件验证