chore: 优化批量下发缓存与测试模式逻辑

解决问题:南向队列容量的溢出风险,以及状态机的错别字还有快速启动加动态测试的导致没有继电器开启的问题
1.  apps/chrg/applications/thread/chrg_roll_sou.h
   - 调整SOU_COM_BATCH_REG_MAX为32并补充注释说明预留空间
2.  apps/chrg/applications/utils/chrg_sink.h
   - 移除废弃的SINK_WORK_RUNING_2枚举项
   - 重命名测试模式枚举项为更清晰的名称
3.  apps/chrg/applications/thread/chrg_comm.c
   - 更新测试模式匹配逻辑为新枚举项
4.  apps/chrg/applications/thread/chrg_roll_sou.c
   - 新增批量缓存空间回收与异常校验逻辑
   - 优化批量满日志输出信息
5.  apps/chrg/applications/utils/chrg_sink.c
   - 重构测试启动函数为更语义化的名称
   - 调整动态测试命令寄存器数量与内容
   - 更新工作状态分派逻辑适配新枚举项
6.  新增编译日志与程序流程说明文档
This commit is contained in:
yhf
2026-07-19 11:49:38 +08:00
parent ee76d8782d
commit b68ffe3bf3
7 changed files with 393 additions and 19 deletions
+17 -13
View File
@@ -524,20 +524,27 @@ static int chrg_sink_nor_work_off(eIDX_SOU_CH idx, struct chrg_switch_t *pSW)
}
//动态测试启动
static int chrg_sink_change_ON(rt_uint8_t ch, struct chrg_switch_t *pSW)
static int chrg_sink_TEST_DYNA_ON(rt_uint8_t ch, struct chrg_switch_t *pSW)
{
struct test *pTest = &pSW->sink.test;
rt_uint16_t regs[6] = {ModbusRTU_DYNA_L1, ModbusRTU_DYNA_T1,
ModbusRTU_DYNA_L2, ModbusRTU_DYNA_T2, ModbusRTU_DYNA_CMD_MODE_FLAG, REG_WORK};
rt_uint16_t vals[6] = {pTest->change_test.curr1_set, pTest->change_test.time1_set,
rt_uint16_t regs[8] = {REG_REL_ON, REG_REL_ON,
ModbusRTU_DYNA_L1, ModbusRTU_DYNA_T1, ModbusRTU_DYNA_L2,
ModbusRTU_DYNA_T2, ModbusRTU_DYNA_CMD_MODE_FLAG, REG_WORK};
rt_uint16_t vals[8] = {0x02, 0x03,
pTest->change_test.curr1_set, pTest->change_test.time1_set,
pTest->change_test.curr2_set, pTest->change_test.time2_set,
ModbusRTU_DYNA_CMD_MODE_RUN, WORK_START};
return chrg_sou_com_batch_submit((eIDX_SOU_CH)ch, regs, vals, 6);
/*
* 动态测试可能在普通 RUNING 状态打开功率板继电器之前进入。
* 因此动态启动流程必须自行打开两路继电器,避免快速从 PD 设置
* 切换到动态测试时,负载已经启动但功率板继电器仍处于关闭状态。
*/
return chrg_sou_com_batch_submit((eIDX_SOU_CH)ch, regs, vals, 8);
}
//短路测试启动
static int chrg_sink_SHOUT_ON(rt_uint8_t ch, struct chrg_switch_t *pSW)
static int chrg_sink_TEST_SHORT_ON(rt_uint8_t ch, struct chrg_switch_t *pSW)
{
rt_uint16_t regs[2] = {ModbusRTU_ShortTest_CMD_MODE_FLAG, REG_WORK};
rt_uint16_t vals[2] = {ModbusRTU_DYNA_CMD_MODE_RUN_ALWAYS_KEPP, WORK_START};
@@ -572,14 +579,11 @@ int chrg_sink_work(eIDX_SOU_CH idx, struct chrg_switch_t *pSW)
case SINK_WORK_RUNING:
ret = chrg_sink_work_volt_runing(idx,pSW);
break;
case SINK_WORK_RUNING_2:
ret = chrg_sink_work_volt_runing(idx,pSW);
break;
case SINK_WORK_ON_TEST_CHANGE:
ret = chrg_sink_change_ON(idx,pSW);
case SINK_WORK_ON_TEST_DYNA:
ret = chrg_sink_TEST_DYNA_ON(idx,pSW);
break;
case SINK_WORK_ON_TEST_SHOUT:
ret = chrg_sink_SHOUT_ON(idx,pSW);
case SINK_WORK_ON_TEST_SHORT:
ret = chrg_sink_TEST_SHORT_ON(idx,pSW);
break;
case SINK_WORK_LOW:
ret = chrg_sink_nor_work_low(idx,pSW);