fix: 修复放电功能相关的若干问题
1. 修改apps/chrg/applications/utils/chrg_sink.c: - 调整寄存器数组长度,新增继电器控制相关的初始化配置 - 在放电初始化前先关闭所有功率板继电器 2. 修改apps/chrg/applications/thread/chrg_north.c: - 修复变量类型不匹配问题,将uint8_t改为rt_uint8_t - 新增参数合法性校验逻辑,避免空指针和越界访问 - 新增电压状态标记,仅在电压有效后才将低压视为故障 - 修复无符号整数溢出问题,避免电压差值计算异常 - 优化电流异常时的状态机切换逻辑 - 非工作状态下重置所有状态标记
This commit is contained in:
@@ -448,8 +448,8 @@ static int chrg_sink_work_init(eIDX_SOU_CH idx, struct chrg_switch_t *pSW)
|
||||
{
|
||||
struct chrg_south_t *pSOU = &chrgsouth;
|
||||
struct chrg_north_t *pNOR = &chrgnorth;
|
||||
rt_uint16_t regs[3] = {REG_CURRENT_OUT + 1, REG_MODE, 0};
|
||||
rt_uint16_t vals[3] = {0, pSW->CV_mode, 0};
|
||||
rt_uint16_t regs[4] = {REG_CURRENT_OUT + 1, REG_MODE, 0, 0};
|
||||
rt_uint16_t vals[4] = {0, pSW->CV_mode, 0, 0};
|
||||
rt_uint8_t count = 2;
|
||||
|
||||
if (pSW->sink.test.test_mode_old == 1) {
|
||||
@@ -459,6 +459,9 @@ static int chrg_sink_work_init(eIDX_SOU_CH idx, struct chrg_switch_t *pSW)
|
||||
regs[count] = ModbusRTU_DYNA_CMD_MODE_FLAG;
|
||||
vals[count++] = ModbusRTU_DYNA_CMD_MODE_STOP;
|
||||
}
|
||||
/* Close both power-board relays before starting sink init. */
|
||||
regs[count] = REG_REL_ON;
|
||||
vals[count++] = ALL_REL_OFF;
|
||||
if (chrg_sou_com_batch_submit(idx, regs, vals, count) != 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user