修订记录
| 版本 | 修改描述 | 日期 | 作者 | 评审 |
|---|---|---|---|---|
| V1.0 | 初稿; | 2025.11.28 | yingbo.tang | |
| V1.1 | 1. 模板结构调整:第一章背景改为概要、第二章功能介绍改为需求追溯、第九章经验分享和评审记录; 2. 模板内容调整:增加每个模块的案例说明; | 2026.07.08 | yingbo.tang |
注意:文档版本应当与模块代码版本保持一致。
1. 概要
1.1 目的
描述本文档的编写目的及用途,说明本文档面向的读者对象(如开发、测试、审查人员);
例:本文档对 XXX(英文名称,中文名称)模块进行软件详细设计,内容涵盖模块接口、功能策略、实现流程及参数配置方法,作为编码实现、集成验证及测试用例编写的依据,面向软件开发、系统设计及测试人员。
1.2 适用范围
描述本文档适用的产品系列、项目型号及软件框架版本;如有不适用的范围,一并说明;没有填写”无”;
例:本文档适用于泛欧家储与北美家储项目,软件应用层基于家储软件平台化 HES BMS V1.0,软件底层框架基于 StdFrame V1.x。
1.3 缩略语
列出本文档中使用到的专业术语及缩略语,要求包含缩略语、英文全称、中文说明;通用术语无需列出;
例:
| 编号 | 用语、缩略语 | 英文全称 | 中文说明 |
|---|---|---|---|
| 1 | RTE | Runtime Environment | 运行时环境 |
| 2 | PCDM | Parameter Configuration Data Management | 参数配置数据管理 |
2. 需求追溯
列出与本模块相关的需求条目,建立需求到设计章节的追溯关系;若需求文档未建立,填写模块功能来源说明;
例:
| 编号 | AR 名称 | 需求描述 | 需求来源 | 对应设计章节 |
|---|---|---|---|---|
| 1 | 充放电电流策略 / SOP 策略 | 1. 按电池系统规格书中充/放电 MAP,根据电芯电压、温度区间计算当前充/放电电流; 2. 根据 SOH 实时调整充/放电电流(当前依赖 cycle 定义 SOH); | 电池模块AR需求基线 | 5.2 |
| 2 | SOP功率限制 | 1. 根据温度,电压等因素限制充、放电功率; | RE002/RE009项目电池模块AR需求 | 5.3 |
3. 需求追溯
3.1 系统制约
识别本模块受到的电芯、PACK及电池系统层面的限制条件;没有填写”无”;
例:
| 编号 | 制约类别 | 制约描述 |
|---|---|---|
| 1 | 电芯 | 电芯最大持续充电电流 1C,脉冲充电电流 2C(30s) |
| 2 | PACK | PACK 最大允许充电功率受温度限制,低温(<5℃)需降额 |
3.2 软件制约
识别本模块所需满足的软件设计规范、平台化要求、框架限制等条件;没有填写”无”;
例:
| 编号 | 制约类别 | 制约描述 |
|---|---|---|
| 1 | 框架 | 模块运行在 100ms 周期任务中,单次执行时间不超过 500μs |
| 2 | 编码规范 | 浮点运算优先使用定点化实现 |
| 3 | 平台化 | 须支持通过配置头文件裁剪,满足多项目复用 |
3.3 硬件制约
识别本模块受到的电路设计层面的限制条件,如采样电路精度、驱动能力、通信硬件等;没有填写”无”;
例:
| 编号 | 制约类别 | 制约描述 |
|---|---|---|
| 1 | 采样电路 | 电压采样回路精度 ±5mV |
| 2 | 电源驱动 | 隔离电源 PWM 频率 200kHz,占空比须从 0% 逐步增至 50%,时间 ≤ 500ms,否则输出过压 |
4. 模块接口
4.1 输入接口
描述本模块的输入数据,要求包含名称、类型、单位、来源模块;含义内尽可能描述清晰,通俗易懂;
例:
| 编号 | 信号名 | 类型 | 单位 | 含义 | RTE宏(输入) |
|---|---|---|---|---|---|
| 1 | displaySoc | float | % | 显示 SOC | RTE_DATA_F32_BMS_SOC_DISPLAY_SOC |
| 2 | displaySoh | uint8 | % | 显示 SOH | RTE_DATA_U08_BMS_SOH_DISP_SOH |
4.2 输出接口
描述本模块的输出数据,要求包含名称、类型、单位;含义内尽可能描述清晰,通俗易懂;
例:
| 编号 | 信号名 | 类型 | 单位 | 含义 | RTE宏(输出) |
|---|---|---|---|---|---|
| 1 | displaySoc | float | % | 显示 SOC | RTE_DATA_F32_BMS_SOC_DISPLAY_SOC |
| 2 | UserSoc | uint8 | % | 用户 SOC,由显示SOC四舍五入 | RTE_DATA_U08_BMS_SOC_USER_SOC |
4.3 标定信号量
描述本模块标定信号量,要求包含名称、类型、单位、标定范围及含义;含义内尽可能描述清晰,通俗易懂;
例:
编译时标定量
| 编号 | 宏名称 | 类型 | 单位 | 默认值 | 最小值 | 最大值 | 含义 |
|---|---|---|---|---|---|---|---|
| 1 | CDHG_SOC_AC_CHG_TRIG_THD | uint8 | % | 3 | 0 | 5 | 交流补电请求触发阈值 |
| 2 | CDHG_SOC_AC_CHG_RECV_THD | uint8 | % | 5 | 3 | 7 | 交流补电请求恢复阈值 |
运行时标定量
| 编号 | 变量名称 | 类型 | 单位 | 默认值 | 最小值 | 最大值 | 含义 |
|---|---|---|---|---|---|---|---|
| 1 | SOP_ManualForce | uint8 | - | 0 | 0 | 2 | 手动强制设置SOP使能标志:0-不使能,1-使能 |
| 2 | Sop_ManualChgLimit | uint32 | mA | 0 | 0 | 500000 | 手动强制设置充电SOP值 |
4.4 外部调用
描述本模块提供给外部调用的函数接口,要求包含编号、函数名、调用时机及功能说明;
例:
| 编号 | 函数名 | 功能说明 | 调用时机 |
|---|---|---|---|
| 1 | ASW_SopInit() | SOP模块初始化,完成参数加载及内部变量清零 | 初始化阶段调用一次 |
| 2 | ASW_SopRunnable() | SOP模块主运行函数,执行功率估算 | 周期调用 |
5. 功能详细设计
按照功能点来写,xxx模块详细设计包含软件策略、实现流程及方法,要求描述清晰,可采用状态机、流程图、时序图结合,不要求描述实现代码;
5.1 功能概述
概述本模块包含哪些功能点及其关系;需要输出模块层级关系框图,包含调用关系;
例:
| 编号 | 功能点 | 功能简要说明 |
|---|---|---|
| 1 | 充电功率限制 | 基于电压、温度估算最大允许充电功率 |
| 2 | 放电功率限制 | 基于电压、温度估算最大允许放电功率 |
例:
5.2 功能点1/2/3
5.2.1 设计策略
描述本功能点的设计方案,包括为什么这样做、核心思路是什么;
例:
5.2.2 具体逻辑
描述本功能点的执行流程,推荐使用流程图/时序图/状态图表达;
例:
5.2.3 关键逻辑说明
补充流程图中不便表达的判断条件、边界处理、特殊场景等;
例:
6. 自测报告
新开发模块需要补充自测报告,并附上自测报告链接;
7. 移植指南
7.1 文件移植
描述需要添加/拷贝哪些文件,并在开发环境中完成编译验证;需要图文结合讲解;
例:
- 从主仓库 clone 代码到本地后;
- 将 bms_sop 文件目录拷贝至新项目对应路径;
- 在 KEIL/MDK 工程中新建分组并添加 .c 文件及对应头文件路径;
- 编译通过,确保无报错;
7.2 标定量配置
描述移植时需要修改的标定量(宏定义),要求说明每个标定量的修改依据;
例:
| 编号 | 宏名称 | 类型 | 单位 | 默认值 | 修改依据 |
|---|---|---|---|---|---|
| 1 | CDHG_STATE_CHG_CUR_THD | float | mA | 300 | 根据硬件启动后静态功耗调整,若更换硬件平台需重新实测 |
| 2 | CDHG_STATE_JUDGE_MS | uint32 | mS | 500 | 根据防抖需求调整,值越大抗干扰越强但状态切换响应越慢 |
8. 资源使用情况
描述本模块的资源占用情况,作为系统资源分配的参考;主要根据 Map 文件分析;
- Code,Code / Text Segment / 可执行指令区,程序的全部可执行机器指令,存储在 FLASH。所有函数/方法的机器指令。
- RO Data,Read-Only Data,只读数据,程序运行期间不可被修改的常量,存储在 FLASH。用 const 修饰的常量、固定的字符串、只读的查表数据等;
- RW Data,Read-Write Data,已初始化的读写数据,变量在定义时被赋予了非零的初值,存储在 RAM 和FLASH(存储初值)。已初始化的全局变量和静态变量;
ZI Data,Zero-initialized Data,零初始化的数据,变量在定义时未被初始化或被初始化为0,存储在 RAM。未初始化的全局变量/静态变量;
| 版本 | Code [Bytes] | RO Data [Bytes] | RW Data [Bytes] | ZI Data [Bytes] | RO Size (Code + RO Data) [KB] | RW Size (RW Data + ZI Data) [KB] | ROM Size Raw (Code + RO Data + RW Data) [KB] |
|---|---|---|---|---|---|---|---|
| V1.0 | 0 | 0 | 0 | ||||
| V1.1 | 0 | 0 | 0 |