4. VCU硬件架构设计

做VCU架构设计这些年,我踩过最大的坑,就是需求没理清楚就急着画框图。你想想看,一个需求理解偏差,到了实车测试阶段才暴露,那改动的成本可不是翻倍那么简单,简直是几何级增长。所以这一章,咱们把需求分析的方法论掰开揉碎了讲。

4.1 谁在提需求?—— Stakeholder 需求分析

很多人一上来就问“VCU要做什么功能”,这其实是个陷阱。你得先问“谁需要VCU做什么”。Stakeholder(利益相关方)不只有客户,还包括法规、生产、售后、甚至隔壁做BMS的兄弟团队。

我个人习惯,在项目启动阶段先拉一张 Stakeholder 清单。别嫌麻烦,这张表能帮你挡住至少一半的需求变更。

Stakeholder 角色 典型诉求 对VCU的影响
终端用户(驾驶员) 加速平顺、续航长、故障少 驱动控制策略、能量管理策略
整车集成工程师 接口标准化、诊断方便 CAN/LIN矩阵定义、UDS诊断栈
法规认证部门 符合GB/T 34590、ISO 26262 功能安全等级ASIL分解、安全机制
生产制造 刷写时间短、产线EOL测试通过率高 Bootloader设计、产线诊断服务
售后维修 故障码清晰、可远程升级 DTC定义、OTA功能架构
我的经验: 有一次我把“售后远程诊断”当成锦上添花的功能,结果项目后期售后部门拿着合同条款来找我——原来这是他们投标时的硬性承诺。从那以后,我每做一个新项目,第一件事就是拉着所有Stakeholder开需求澄清会,哪怕只开半小时。

4.2 从“想要”到“要做”—— 系统需求导出

Stakeholder 的需求往往是模糊的、口语化的。比如“加速要猛”,这没法写进软件需求规格书。系统需求导出的过程,就是把“想要”翻译成“要做”。

我常用的方法是 “5W1H + 量化”:

  • Who: 谁在什么场景下使用?
  • What: 期望的行为是什么?
  • Where: 在哪个系统边界内?
  • When: 触发条件是什么?
  • Why: 为什么需要这个行为?
  • How: 如何验证这个需求?

举个例子,Stakeholder说“上坡起步不能溜车”。导出的系统需求可能是:

系统需求编号:SYS-REQ-0042
需求描述:当车辆处于坡度 ≥ 5% 的上坡路面,且驾驶员从制动踏板切换到加速踏板的时间间隔 ≤ 2s 时,VCU应通过EPB或液压制动保持车辆静止,溜车距离 ≤ 10cm。
验证方法:在20%坡道上进行实车测试,记录溜车距离。

你看,这样写出来的需求,测试工程师拿到手就知道怎么测,软件工程师也知道怎么实现。

4.3 功能需求 vs 非功能需求

很多刚入行的工程师容易把这两者混在一起写。我建议你从一开始就分开管理,否则后期做测试用例和架构评估时会非常痛苦。

维度 功能需求 非功能需求
定义 系统“做什么” 系统“做得怎么样”
示例 VCU应能根据车速和制动踏板位置计算再生制动扭矩 再生制动扭矩响应时间 ≤ 50ms
可测试性 通常通过功能测试验证 通常通过性能测试、压力测试验证
变更影响 影响功能逻辑 影响架构选型、硬件资源
我曾经踩过的坑: 在一个量产项目中,非功能需求只写了“系统响应要快”,没有量化。结果软件团队按100ms响应去设计,测试团队按50ms去验收,最后扯皮了两个月。记住,非功能需求必须可量化、可测量、可验证。

非功能需求在VCU领域尤其重要,因为它直接决定了你用什么样的MCU、多大的RAM、什么样的通信协议。比如:

  • 实时性: 扭矩控制周期 ≤ 10ms,状态机切换 ≤ 5ms
  • 可靠性: 系统在 -40°C ~ 125°C 环境下连续运行 1000 小时无故障
  • 安全性: 满足 ASIL C/D 等级,单点故障覆盖率 ≥ 99%
  • 可维护性: 支持通过 CAN 进行 Bootloader 刷写,刷写时间 ≤ 3 分钟

4.4 需求追溯矩阵 —— 别让需求“失联”

需求追溯矩阵(RTM),说白了就是一张“需求-设计-测试”的对照表。它的核心价值在于:当有人提出需求变更时,你能立刻知道哪些代码、哪些测试用例、哪些文档需要跟着改。

我习惯用三层追溯结构:

  1. Stakeholder 需求 → 系统需求: 确保每个“想要”都被翻译成了“要做”
  2. 系统需求 → 软件/硬件需求: 确保每个“要做”都有对应的实现方案
  3. 系统需求 → 测试用例: 确保每个“要做”都有验证手段

下面是一个简化的 RTM 示例:

需求ID 需求描述 来源 设计文档 测试用例 状态
SH-001 驾驶员松开加速踏板时,车辆应平滑减速 用户访谈 SW-ARCH-003 再生制动策略 TC-REGEN-001 ~ 005 已实现
SH-002 车辆在-30°C环境下能正常启动 法规要求 HW-ARCH-007 低温启动电路 TC-ENV-010 ~ 015 验证中
SH-003 故障发生时,仪表盘应在1s内显示警告 售后反馈 SW-ARCH-012 故障诊断与显示 TC-DIAG-020 ~ 025 已实现
核心原则: 每一个系统需求都必须有对应的测试用例。如果某个需求写出来发现没法测,那这个需求本身就有问题。要么重新定义,要么砍掉。

4.5 知识体系总览

为了让你更直观地理解这一章的知识结构,我画了一张图。它把需求分析的四个核心步骤串在了一起,从Stakeholder出发,最终落到可追溯的测试验证。

VCU 需求分析方法论 —— 知识体系 Stakeholder 需求 系统需求导出 功能/非功能需求 需求追溯矩阵 测试用例验证 核心原则: 每个Stakeholder需求 → 导出系统需求 → 分解为功能/非功能需求 → 纳入RTM → 最终由测试用例覆盖。 任何一环断裂,都意味着需求“失联”,后期必然返工。

这张图从左到右、从上到下,就是需求分析的标准流程。你每次做新项目,都可以拿这张图来对照,看看自己走到了哪一步,有没有跳步。

一个小建议: 在实际项目中,RTM 不要等到所有需求都写完了再建。我习惯在写第一个系统需求的时候就同步建立 RTM 表格,每写一条需求,就顺手填上对应的测试用例编号。这样项目后期做需求覆盖率分析时,你只需要跑一个脚本,几分钟就能出报告。