# bms 模块说明 > 路径:`app/bms/` > 返回主说明:[README](../../README.md) ## 1. 模块职责 - 负责 BMS 通信报文收发与协议状态机处理; - 管理 BMS 充电阶段控制、超时处理与异常状态; - 提供与流程控制模块对接的 BMS 数据接口。 ## 2. 关键文件 - `bms_task.c/h` - `bms_interface.c/h` - `sae1939.c/h` ## 3. 功能说明 - 周期接收/发送 BMS 报文并更新运行状态; - 维护关键定时器(超时、等待、状态切换计时); - 将 BMS 结果映射为流程层可用的控制/状态数据。 ## 4. 调度与对外接口 该模块由 FreeRTOS 任务 `BmsComm` 周期运行(单位:ms),周期来自 `app/app_init/app_init.c`: - `BmsComm`:`5ms`(任务入口:`v_bms_task(void *arg)`) 对外接口(来自 `bms_task.h / bms_interface.h`,列出主要用法入口): - `uint16_t u16_bms_get_sys_para(U8_T gunNo, E_BMS_GET_PARA_TYPE e_type)`:读取 BMS 系统参数 - `uint16_t u16_bms_put_data(U8_T gunNo, E_BMS_PUT_DATA_TYPE e_type, U8_T u8_dataPara)`:设置/上报 BMS 数据(按 e_type 不同) - `void v_bms_put_vin_str(U8_T u8_gunNo, U8_T *u8_vin, U8_T u8_len)`:写入 VIN 字符串 - `void v_bms_get_rt_time(Comm_Time *time)`:读取 BMS/系统时间(取决于实现) - `U8_T u8_bms_get_cst(U8_T gunNo, U8_T *u8_data)`:读取充电阶段/状态相关值 - `void v_bms_get_pile_nun(U8_T *pilenum)`:读取桩侧枚举/数量(命名以代码为准) ## 5. 维护建议 - 修改报文处理流程时需同步校验超时逻辑; - 与流程控制交互字段应保持枚举/状态码一致。 ## 6. 关联文档 - 主索引:[README](../../README.md)