[导读] 在知乎上看到一个网友的问题:为什么自己设计的嵌入式系统稳定性远不如工业级产品?我觉得这是一个非常好的问题,尤其国内很多中小企业可能关注点更多在于产品的功能,而不在性能,产品功能很炫可是稳定性往往差强人意。所以就产品稳定性,来聊聊我的一些认知和体会。 稳定性,英文中用(可靠性)Reliability engineering来研究,可靠性工程是系统工程的一个子学科,它主要研究设备无故障运行的能力。可靠性描述了系统或组件在指定条件下持续指定时间段内运行的能力。 一个产品一般从设计的角度基本包含哪些主要的设计呢?常见的嵌入式系统,可能包含机械设计、硬件设计、软件设计,那么从设计来谈一个产品的可靠性,就必然要从这几个主要的方面下功夫。另外工业级产品为什么表现的更加可靠呢? 为了要相对深入的谈这个问题,来看看这个相关的一些术语指标是怎么描述一个系统或者零件的可靠性的。 啥是可靠性概率?可靠性定义为设备在规定条件下在指定时间段内将执行其预期功能的概率。从数学上讲,这可以表示为系统的可靠性是指在时间t内没有发生某F类故障的概率。
<section role="presentation" style="margin: 0px; padding: 0px; max-width: 100%; box-sizing: border-box !important; word-wrap: break-word !important; text-align: center; overflow: auto;" data-formula-type="block-equation" data-formula="R_F(t) = P_r\{t_{init}\geq t 作何理解呢?
上面的概念是针对某类故障的统计规律,那么推广开来,从系统而言去掉下标F,也满足上述关系。一个系统由不同的组件组成。 系统失效率当系统的寿命呈指数分布时,系统的可靠性为:这个曲线相信很多人应该见过,这就是产品的澡盆曲线,在产品前期老化阶段比较容易暴露故障,失效率比较高。不要问我为什么,这是无数先辈们统计所得的统计规律,对于工程应用相信即可(当然如果是做理论研究的则另当别论)。这个规律也解释了为何有的厂家出厂的产品需要做老化试验的原因,因为做老化试验可以将故障充分暴露出来,如此筛选出来的产品在客户端将很少会出故障。 为啥费这么多话来讨论这个失效率呢,来看看这个例表: 汽车嵌入式系统组件 失效率 军工级微处理器0.0225 C, h ^! i; Z/ p9 e+ N4 \ 车规级微处理器0.12 电动马达16.9 不同的组件的失效率是不一样的,那么在设计之初在成本允许的情况下,就需要尽量选取失效率低的组件。 失效模式不同的组件的失效模式是不一样的,啥概念呢?也就是组件产生故障的原因各异,比如电路板上的电阻其失效模式就有可能是短路失效,断路失效、参数漂移失效,对于软件而言其失效模式就有可能有很多,比如栈溢出、RAM数据错误、芯片总线错误等等。每种失效模式,其失效率也是不一样的。如要深入其了解这些指标的含义可以参考IEC61508或者其他等同的标准。 如何提高产品的可靠性呢?那么究竟如何能提高产品的可靠性呢?我想大体上可以从这几个方面着手:
这是IEC61508界定软件、硬件都须采用如下的V&V开发模型(注明IEC61508标准里图不太一样),简单介绍一下这个模型: 现在流行很多的开发流程,比如敏捷开发模型就比较受追捧,个人并不反对敏捷开发模型,但是从产品开发的可靠性角度更推崇这种双V模型,其实很多跑敏捷的项目在每一个迭代中其实可以融入这种双V模型。这个模型从设计的需求>架构>详细子模块设计每向下走一步,都需要verfication 测试检验前级,同时还最终输出validation确认设计。 在IEC 61508(功能安全等级标准)等标准中都有体现这一套路,简略看看相关标准:
个人对于V&V模型理解的几个要点:
开发流程每个公司都各有不同,但是从产品生命周期以及产品可靠性自身规律角度,个人觉得还是应该考虑这些要点。关于开发流程以及功能安全标准内容很多,这里泛泛总结这些个人体会。 成功的项目管理
一个可靠性很高的的产品开发,与一个完善的项目管理是密不可分的。项目管理在项目的执行过程中作用是非常重要的,从启动、计划、执行、监管、收尾中对项目进行管理。 项目管理在这些过程中,所需的知识以及在每个阶段需从事的活动可参考下图(来源MBOK 第6版): 好的设计发布,如没有严格的生产质量控制,所出售的产品质量也定然没有保障。对于这一点不怎么了解,就不做过多的描述了。 总结一下回到问题本身,如想得到一个可靠的产品,个人认为从产品设计流程、项目管理、以及生产质控方面都应有完善的要求且须很好的落实,工业级产品砸钱做那么多的认证,不是没有缘由的。这些认证里有很多就是可靠性的具体考核。 * R, |& i' t O: x |
西门子PROFINET工业通信指南
工业以太网总线ETHERCAT驱动程序设计及应用(扫描版)
【STM32】STM32G030C8T6 开发板分享
基于STM32的自动跟踪小车
获取STM32代码运行时间的技巧
IAR ETM Trace提供哪些调试功能
USB4 产品设计将会令 USB4 取得成功
【原创】【MCU实战经验】+ 可在产品中使用的bootloader程序...
小缓存实现大效果:X-NUCLEO-GFX01M1 和 TouchGFX 4.15让你的产品...
小缓存实现大效果:X-NUCLEO-GFX01M1 和 TouchGFX 4.15让你的产品...