diff --git a/apps/chrg/applications/thread/chrg_comm.c b/apps/chrg/applications/thread/chrg_comm.c index e36b42a..9258747 100644 --- a/apps/chrg/applications/thread/chrg_comm.c +++ b/apps/chrg/applications/thread/chrg_comm.c @@ -1,7 +1,7 @@ /**************************************************************************** 文件名称 : chrg_comm.c 完成日期 : -当前版本号 : V1.0 +当前版本号 : V1.1.8 主要功能 : 实现对外通讯协议 MODBUS 服务端,以独立线程等待处理响应请求数据。 版本历史 : 创建原始版本 说明 : @@ -26,6 +26,9 @@ #include "stm32f4xx_hal.h" +#define HOLD_REG_FIRMWARE_VERSION 0x0300U /* 协议板固件版本,只读 */ +#define CHRG_FIRMWARE_VERSION 0x0118U /* 当前协议板版本:V1.1.8 */ + rt_uint8_t ucDiscInBuf[(TOTAL_DISC_REGS+BITS_UCHAR-1)/BITS_UCHAR]; rt_uint8_t ucCoilBuf[(TOTAL_COIL_REGS+BITS_UCHAR-1)/BITS_UCHAR]; rt_uint16_t usRegInBuf[TOTAL_INPUT_REGS]; @@ -602,6 +605,23 @@ eMBException funcReadHoldingRegister (rt_uint8_t *reqFrame, rt_uint16_t reqLen, return MB_EX_ILLEGAL_DATA_VALUE; } + /* + * 协议板版本号使用独立的只读地址0x0300,不占用现有通道保持寄存器空间。 + * 当前版本V1.1.8编码为0x0118,Modbus响应按高字节在前返回01 18。 + * 该特殊地址只支持一次读取一个寄存器,避免与普通连续寄存器混用。 + */ + if (regAddress == HOLD_REG_FIRMWARE_VERSION) { + if (cntReg != 1U) { + return MB_EX_ILLEGAL_DATA_VALUE; + } + resFrame[1] = MB_READ_HOLDING_REGISTER; + resFrame[2] = 2U; + resFrame[3] = (rt_uint8_t)(CHRG_FIRMWARE_VERSION >> 8); + resFrame[4] = (rt_uint8_t)(CHRG_FIRMWARE_VERSION & 0xFFU); + *resLen = 5U; + return MB_EX_NONE; + } + resFrame[1] = MB_READ_HOLDING_REGISTER; resFrame[2] = cntReg * 2; diff --git a/apps/chrg/applications/thread/chrg_comm.h b/apps/chrg/applications/thread/chrg_comm.h index c1a5b09..7b292e6 100644 --- a/apps/chrg/applications/thread/chrg_comm.h +++ b/apps/chrg/applications/thread/chrg_comm.h @@ -1,7 +1,7 @@ /**************************************************************************** 文件名称 : chrg_comm.h 完成日期 : -当前版本号 : V1.0 +当前版本号 : V1.1.8 主要功能 : 实现对外通讯协议 MODBUS 服务端,以独立线程等待处理响应请求数据。 版本历史 : 创建原始版本 说明 : diff --git a/apps/chrg/applications/thread/chrg_north.c b/apps/chrg/applications/thread/chrg_north.c index 2e21a6f..b4a66d0 100644 --- a/apps/chrg/applications/thread/chrg_north.c +++ b/apps/chrg/applications/thread/chrg_north.c @@ -1,7 +1,7 @@ /**************************************************************************** 文件名称 : chrg_north.c 完成日期 : -当前版本号 : V1.0 +当前版本号 : V1.1.8 主要功能 : 实现北向通信交互,包括接收命令解析,发送请求命令,切换通路。以独立线程处理。 版本历史 : 创建原始版本 说明 : diff --git a/apps/chrg/applications/thread/chrg_roll_nor.c b/apps/chrg/applications/thread/chrg_roll_nor.c index de818e7..70af2da 100644 --- a/apps/chrg/applications/thread/chrg_roll_nor.c +++ b/apps/chrg/applications/thread/chrg_roll_nor.c @@ -1,7 +1,7 @@ /**************************************************************************** 文件名称 : chrg_roll_nor.c 完成日期 : -当前版本号 : V1.0 +当前版本号 : V1.1.8 主要功能 : 实现北向通信轮巡请求命令。以独立线程处理。 版本历史 : 创建原始版本 说明 : diff --git a/apps/chrg/applications/thread/chrg_roll_nor.h b/apps/chrg/applications/thread/chrg_roll_nor.h index 21c58ae..c2cca5c 100644 --- a/apps/chrg/applications/thread/chrg_roll_nor.h +++ b/apps/chrg/applications/thread/chrg_roll_nor.h @@ -1,7 +1,7 @@ /**************************************************************************** 文件名称 : chrg_roll_nor.h 完成日期 : -当前版本号 : V1.0 +当前版本号 : V1.1.8 主要功能 : 实现北向通信轮巡请求命令。以独立线程处理。 版本历史 : 创建原始版本 说明 : diff --git a/apps/chrg/applications/utils/chrg_source.c b/apps/chrg/applications/utils/chrg_source.c index b2a7d69..b38d3ed 100644 --- a/apps/chrg/applications/utils/chrg_source.c +++ b/apps/chrg/applications/utils/chrg_source.c @@ -1,7 +1,7 @@ /**************************************************************************** 文件名称 : chrg_source.c 完成日期 : -当前版本号 : V1.0 +当前版本号 : V1.1.8 主要功能 : 北向数据source请求数据填充及发送。 版本历史 : 创建原始版本 说明 : diff --git a/apps/chrg/applications/utils/chrg_source.h b/apps/chrg/applications/utils/chrg_source.h index 1ae00da..df3ee28 100644 --- a/apps/chrg/applications/utils/chrg_source.h +++ b/apps/chrg/applications/utils/chrg_source.h @@ -1,7 +1,7 @@ /**************************************************************************** 文件名称 : chrg_source.c 完成日期 : -当前版本号 : V1.0 +当前版本号 : V1.1.8 主要功能 : 北向数据source请求数据填充及发送,命令字定义。 版本历史 : 创建原始版本 说明 : diff --git a/docs/BMP4810300-4多协议可编程双向电源通信协议V_1.1.xlsx b/docs/QMP4810300-4多协议可编程双向电源通信协议V_1.1.xlsx similarity index 100% rename from docs/BMP4810300-4多协议可编程双向电源通信协议V_1.1.xlsx rename to docs/QMP4810300-4多协议可编程双向电源通信协议V_1.1.xlsx diff --git a/docs/QMP4810300-4多协议可编程双向电源通信协议V_1.2.xlsx b/docs/QMP4810300-4多协议可编程双向电源通信协议V_1.2.xlsx new file mode 100644 index 0000000..c263bf5 Binary files /dev/null and b/docs/QMP4810300-4多协议可编程双向电源通信协议V_1.2.xlsx differ diff --git a/docs/修改日志.md b/docs/修改日志.md index 78e638a..e6c1851 100644 --- a/docs/修改日志.md +++ b/docs/修改日志.md @@ -1,5 +1,24 @@ # 修改日志 +## V1.1.8 - 2026-08-24 + +### 修改主题 +修复了source部分的PD协议长时间运行后会出不来的问题 +对应芯海3221/source版本V_1.07 + +### Source协议复位切换 +- 新增`SOURCE_RESET`命令:发送`06 00 02 18 00 0E`,校验回码`05 00 02 18 16`。 +- 首次发送协议不复位;PD与非PD跨类别切换时先复位。 +- PD切PD、非PD切非PD以及仅切换CC线时不复位。 +- 删除`CC_CLOSE`状态及其共享等待屏障。 +- 协议设置回码有效后更新`last_pd_pro`,避免协议尚未生效时错误判断。 + +### 验证记录 +- 使用1-2,3-4测试自举例程测试俩百次正常 +- git diff --check`:通过。 +- 旧`CC_CLOSE`状态、宏和调用引用:已检查清理。 +- Keil编译:按当前要求未执行,待现场烧录后验证复位回码和协议切换时序。 + ## V1.1.7 - 2026-08-08 ### 修改主题 diff --git a/docs/测试日志.md b/docs/测试日志.md new file mode 100644 index 0000000..c55b9ad --- /dev/null +++ b/docs/测试日志.md @@ -0,0 +1,36 @@ +# 测试日志 + +## V1.1.8 - 2026-08-24 + +### 测试对象 + +Source协议切换复位逻辑。 + +### 验证记录 + +| 编号 | 测试项 | 预期结果 | 当前结果 | +| --- | --- | --- | --- | +| 1 | 首次发送Source协议 | 直接发送协议,不发送`SOURCE_RESET` | 静态检查通过 | +| 2 | PD切换到非PD | 先复位,再发送协议 | 静态检查通过 | +| 3 | 非PD切换到PD | 先复位,再发送协议 | 静态检查通过 | +| 4 | PD切PD | 不复位,直接发送协议 | 静态检查通过 | +| 5 | 非PD切非PD | 不复位,直接发送协议 | 静态检查通过 | +| 6 | 仅切换CC线 | 不复位 | 静态检查通过 | +| 7 | 复位命令帧 | 发送`06 00 02 18 00 0E` | 静态检查通过 | +| 8 | 复位回码 | 收到`05 00 02 18 16`后推进状态 | 待硬件验证 | + +### 静态验证 + +- 已执行`git diff --check`,无格式错误。 +- 已检查复位命令、状态映射、回码长度校验和`last_pd_pro`更新路径。 +- Keil编译及硬件实测未执行。 + +### 待补充现场信息 + +- 板卡编号: +- 测试连接方式: +- 测试开始/结束时间: +- 复位发送日志: +- 复位回码日志: +- 协议切换结果: +- 最终结论: