修订记录

版本修改描述日期作者评审
V1.0初稿;2025.11.28yingbo.tang
V1.11. 模板结构调整:第一章背景改为概要、第二章功能介绍改为需求追溯、第九章经验分享和评审记录;
2. 模板内容调整:增加每个模块的案例说明;
2026.07.08yingbo.tang

注意:文档版本应当与模块代码版本保持一致。

1. 概要

1.1 目的

描述本文档的编写目的及用途,说明本文档面向的读者对象(如开发、测试、审查人员);

例:本文档对 XXX(英文名称,中文名称)模块进行软件详细设计,内容涵盖模块接口、功能策略、实现流程及参数配置方法,作为编码实现、集成验证及测试用例编写的依据,面向软件开发、系统设计及测试人员。

1.2 适用范围

描述本文档适用的产品系列、项目型号及软件框架版本;如有不适用的范围,一并说明;没有填写”无”;

例:本文档适用于泛欧家储与北美家储项目,软件应用层基于家储软件平台化 HES BMS V1.0,软件底层框架基于 StdFrame V1.x。

1.3 缩略语

列出本文档中使用到的专业术语及缩略语,要求包含缩略语、英文全称、中文说明;通用术语无需列出;

例:

编号用语、缩略语英文全称中文说明
1RTERuntime Environment运行时环境
2PCDMParameter Configuration Data Management参数配置数据管理

2. 需求追溯

列出与本模块相关的需求条目,建立需求到设计章节的追溯关系;若需求文档未建立,填写模块功能来源说明;

例:

编号AR 名称需求描述需求来源对应设计章节
1充放电电流策略 / SOP 策略1. 按电池系统规格书中充/放电 MAP,根据电芯电压、温度区间计算当前充/放电电流;
2. 根据 SOH 实时调整充/放电电流(当前依赖 cycle 定义 SOH);
电池模块AR需求基线5.2
2SOP功率限制1. 根据温度,电压等因素限制充、放电功率;RE002/RE009项目电池模块AR需求5.3

3. 需求追溯

3.1 系统制约

识别本模块受到的电芯、PACK及电池系统层面的限制条件;没有填写”无”;

例:

编号制约类别制约描述
1电芯电芯最大持续充电电流 1C,脉冲充电电流 2C(30s)
2PACKPACK 最大允许充电功率受温度限制,低温(<5℃)需降额

3.2 软件制约

识别本模块所需满足的软件设计规范、平台化要求、框架限制等条件;没有填写”无”;

例:

编号制约类别制约描述
1框架模块运行在 100ms 周期任务中,单次执行时间不超过 500μs
2编码规范浮点运算优先使用定点化实现
3平台化须支持通过配置头文件裁剪,满足多项目复用

3.3 硬件制约

识别本模块受到的电路设计层面的限制条件,如采样电路精度、驱动能力、通信硬件等;没有填写”无”;

例:

编号制约类别制约描述
1采样电路电压采样回路精度 ±5mV
2电源驱动隔离电源 PWM 频率 200kHz,占空比须从 0% 逐步增至 50%,时间 ≤ 500ms,否则输出过压

4. 模块接口

4.1 输入接口

描述本模块的输入数据,要求包含名称、类型、单位、来源模块;含义内尽可能描述清晰,通俗易懂;

例:

编号信号名类型单位含义RTE宏(输入)
1displaySocfloat%显示 SOCRTE_DATA_F32_BMS_SOC_DISPLAY_SOC
2displaySohuint8%显示 SOHRTE_DATA_U08_BMS_SOH_DISP_SOH

4.2 输出接口

描述本模块的输出数据,要求包含名称、类型、单位;含义内尽可能描述清晰,通俗易懂;

例:

编号信号名类型单位含义RTE宏(输出)
1displaySocfloat%显示 SOCRTE_DATA_F32_BMS_SOC_DISPLAY_SOC
2UserSocuint8%用户 SOC,由显示SOC四舍五入RTE_DATA_U08_BMS_SOC_USER_SOC

4.3 标定信号量

描述本模块标定信号量,要求包含名称、类型、单位、标定范围及含义;含义内尽可能描述清晰,通俗易懂;

例:

编译时标定量

编号宏名称类型单位默认值最小值最大值含义
1CDHG_SOC_AC_CHG_TRIG_THDuint8%305交流补电请求触发阈值
2CDHG_SOC_AC_CHG_RECV_THDuint8%537交流补电请求恢复阈值

运行时标定量

编号变量名称类型单位默认值最小值最大值含义
1SOP_ManualForceuint8-002手动强制设置SOP使能标志:0-不使能,1-使能
2Sop_ManualChgLimituint32mA00500000手动强制设置充电SOP值

4.4 外部调用

描述本模块提供给外部调用的函数接口,要求包含编号、函数名、调用时机及功能说明;

例:

编号函数名功能说明调用时机
1ASW_SopInit()SOP模块初始化,完成参数加载及内部变量清零初始化阶段调用一次
2ASW_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 文件移植

描述需要添加/拷贝哪些文件,并在开发环境中完成编译验证;需要图文结合讲解;

例:

  1. 从主仓库 clone 代码到本地后;
  2. 将 bms_sop 文件目录拷贝至新项目对应路径;
  3. 在 KEIL/MDK 工程中新建分组并添加 .c 文件及对应头文件路径;
  4. 编译通过,确保无报错;

7.2 标定量配置

描述移植时需要修改的标定量(宏定义),要求说明每个标定量的修改依据;

例:

编号宏名称类型单位默认值修改依据
1CDHG_STATE_CHG_CUR_THDfloatmA300根据硬件启动后静态功耗调整,若更换硬件平台需重新实测
2CDHG_STATE_JUDGE_MSuint32mS500根据防抖需求调整,值越大抗干扰越强但状态切换响应越慢

8. 资源使用情况

描述本模块的资源占用情况,作为系统资源分配的参考;主要根据 Map 文件分析;

  1. Code,Code / Text Segment / 可执行指令区,程序的全部可执行机器指令,存储在 FLASH。所有函数/方法的机器指令。
  2. RO Data,Read-Only Data,只读数据,程序运行期间不可被修改的常量,存储在 FLASH。用 const 修饰的常量、固定的字符串、只读的查表数据等;
  3. 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.0000
V1.1000