2. 线控底盘系统概述
聊冗余之前,我想先问个问题:为什么功能安全离不开冗余?
说白了,单一通道总会失效。芯片会烧、线束会断、软件会跑飞。你没法保证一个东西永远不出错,但你可以准备一个“备胎”。这就是冗余最朴素的逻辑——用多个通道,换一个确定的结果。
冗余的核心定义:在系统中引入超过实现功能所需的最小资源,使得当部分资源失效时,系统仍能维持安全状态或降级运行。
注意,这里的关键词是“超过最小资源”。不是堆料,而是有目的地多放一份。
冗余的三个层级
我在项目中见过不少工程师一上来就谈“双机热备”,却忽略了更底层的冗余机会。其实冗余可以发生在三个层级,每个层级的代价和收益完全不同。
| 层级 | 典型对象 | 我见过的例子 |
|---|---|---|
| 系统级 | 整机、控制器、ECU | 两套独立的制动控制器,一套失效另一套接管 |
| 子系统级 | 传感器、执行器、通信总线 | 双路轮速传感器,一路断线另一路还能读数 |
| 组件级 | 芯片、电阻、电容、焊点 | 关键信号路径上并联两个电阻,一个开路还有另一个 |
系统级冗余,说白了就是“再买一套”。成本最高,但隔离性最好。我记得有个项目,客户要求转向系统达到ASIL D。单套ECU怎么都过不了诊断覆盖率,最后上了两套完全独立的ECU,一套主控,一套监控。代价是成本翻倍、重量翻倍、线束翻倍。但没办法,安全目标摆在那里。
子系统级冗余,是我个人最常用的手法。不需要复制整个系统,只复制最脆弱的环节。比如制动踏板位置传感器,我习惯用两个不同原理的传感器——一个霍尔,一个磁阻。为什么?因为共因失效。如果两个传感器用同一种技术,一个电磁干扰就能同时干掉两个。嗯,这里要注意,多样性冗余比同构冗余更抗造。
组件级冗余,最容易被忽视。我刚开始做硬件时,觉得一个电阻能出什么问题?直到有一次,一个电源管理芯片的反馈电阻虚焊,整板电压飙到5.8V,烧了一片。从那以后,关键路径上的电阻我至少并联两个。代价?多花几分钱,但换来了一个不会因为单点失效就炸板的系统。
我的经验:组件级冗余适合对付随机硬件失效,系统级冗余适合对付系统性失效。选哪个层级,取决于你分析出来的失效模式是什么。
冗余的代价:没有免费的午餐
你想想看,冗余不是白给的。每多一份冗余,就多一份代价。我把它总结成三类:
- 成本代价:硬件翻倍、开发翻倍、验证翻倍。一个双通道系统的测试用例,比单通道多三倍不止。
- 重量与空间代价:汽车上每一克都算钱。多一个ECU,多一套线束,多一个外壳,整车重量就上去了。
- 诊断与维护代价:冗余系统需要诊断机制来判断“哪个通道坏了”。我曾经遇到一个项目,冗余做得很好,但诊断覆盖率只有60%。结果两个通道都坏了,系统还不知道,直接进入危险状态。你说冤不冤?
避坑指南:我曾经见过一个团队,为了追求ASIL D,在一条信号路径上堆了三个传感器。结果三个传感器互相干扰,误报率飙升。冗余不是越多越好,够用就行。多一个冗余,就多一个失效点。
冗余的典型架构:1oo1、1oo2、2oo2
聊到冗余,绕不开这几个缩写。我画了一张图,帮你快速理解它们的区别。
这张图里,1oo2 是我最常用的安全架构。为什么?因为它能容忍一个通道失效,系统还能继续跑。代价是多了诊断逻辑——你得知道哪个通道坏了,否则第二个通道再坏,系统就无声无息地挂了。
一个小技巧:1oo2 架构里,两个通道的供电、时钟、复位必须独立。我见过一个设计,两个通道共用一个电源芯片,结果电源短路,两个通道一起死。这就不叫冗余了,这叫“一个故障干掉两个通道”。
冗余的代价:一个真实案例
我参与过一个线控制动项目。客户要求冗余,我们上了 1oo2 架构:两套独立的液压单元,两套独立的电机,两套独立的控制器。听起来很完美,对吧?
结果呢?
- 成本:从单通道的 800 元涨到 2200 元。
- 重量:从 3.5kg 涨到 6.8kg。
- 开发周期:从 12 个月延长到 20 个月。
- 诊断覆盖率:花了 6 个月才从 70% 提升到 95%。
你看,冗余不是简单的“复制粘贴”。每多一个通道,你就多了一倍的失效模式需要分析、测试、验证。这也是为什么我常说:冗余是最后的手段,不是第一选择。能用诊断解决的,别急着上冗余。
再强调一次:冗余的代价不只是钱,还有时间、重量、复杂度。做架构决策时,先问自己三个问题:
- 这个失效模式能不能通过诊断检测到?
- 检测到之后,系统能不能进入安全状态?
- 如果以上两个答案都是“否”,再考虑冗余。