有太多的自由度无法理解“所有”可能的故障。但是,有一些技术可以在设计周期的早期(即在广泛发布之前)识别和缓解故障。
设计时活动(硬件前)
同行评审始终是发现错误的好方法。让其他人分析您的设计,并准备好对他们的问题进行辩护(或承认他们发现了一个错误,并加以修复!)审查无可替代,而且新鲜的眼睛经常看到疲倦的人遗漏的事物。这适用于硬件和软件-原理图可以像源代码一样容易地进行查看。
正如其他人所说,对于硬件,DFMEA(设计失败模式和效果分析)是一个很好的建议。对于每个组件,问自己“如果短路会发生什么”和“如果短路会发生什么”,并记录下您的分析。对于IC,还要想象一下如果相邻的引脚彼此短路(焊桥等)会发生什么情况。
对于固件,可以使用静态代码分析工具(MISRA,棉绒等)来揭示代码中的隐藏错误。浮动指针和相等而不是比较(= vs ==)之类的东西是这些工具不会错过的常见“麻烦”。
对于硬件和软件,书面的操作理论也非常有帮助。一种操作理论应该在较高的层次上描述系统的工作方式,保护的工作方式,排序等。简单地说一句逻辑应该如何流动通常会导致人们意识到可能遗漏了某些情况(“嗯, waitasec,这种情况如何?”)
原型水平测试
一旦掌握了硬件,就可以开始“工作”了。
完成所有理论分析后,准确表征器件在规格范围内的工作方式至关重要。这通常称为验证测试或鉴定。所有允许的极端都需要进行测试。
另一个重要的鉴定活动是组件应力分析。在定义的工作条件下,根据其最大电压/电流/温度评估每个零件。为了确保坚固性,应采用适当的降额指南(不要超过电压的80%,功率的70%等)
只有了解了正常情况后,您才能开始推测外部异常或您描述的多种异常。同样,DFMEA模型(如果发生X会发生什么)是一个很好的方法。想一想用户可以对设备执行的任何操作-缩短输出,将信号绑在一起,在设备上洒水-尝试一下,看看会发生什么。
HALT测试(高度加速寿命测试)对于这些类型的系统也很有用。将设备放入环境室,并在最低至最高温度,最低和最高输入和输出振动的条件下进行运动。这将发现各种电气和机械问题。
这也是进行一些嵌入式模糊测试的好时机-对所有输入进行充分超出其预期范围的输入,通过UART / I2C发送乱码等,以查找逻辑漏洞。(例如,臭名昭著的I2C例程以锁定总线而臭名昭著。)
冲突测试是证明鲁棒性的好方法。禁用所有保护功能,例如过热,过载等,并施加压力直到发生故障。将设备尽可能地升高温度,直到出现故障或出现不稳定现象。重载设备,直到动力总成发生故障。如果某个参数仅在最坏情况下仅略微失败,则可能需要重新考虑其边缘性和一些设计考虑因素。
您还可以采用下一种方法,并对DFMEA的一些结论进行物理测试-实际做空头,空头和短脚,看看会发生什么。
进一步阅读
我的背景是电源转换。我们有一个称为IPC-9592A的行业标准,该标准旨在根据测试内容和测试方法对产品的合格性进行标准化。本文档引用的许多类型的测试和方法都可以轻松地用于其他电气学科。