爲什麼自己設計的嵌入式系統不如工業級產品穩定?

[導讀] 在知乎上看到一個網友的問題:爲什麼自己設計的嵌入式系統穩定性遠不如工業級產品?我覺得這是一個非常好的問題,尤其國內很多中小企業可能關注點更多在於產品的功能,而不在性能,產品功能很炫可是穩定性往往差強人意。所以就產品穩定性,來聊聊我的一些認知和體會。

什麼是穩定性?

穩定性,英文中用(可靠性)Reliability engineering來研究,可靠性工程是系統工程的一個子學科,它主要研究設備無故障運行的能力。可靠性描述了系統或組件在指定條件下持續指定時間段內運行的能力。

一個產品一般從設計的角度基本包含哪些主要的設計呢?常見的嵌入式系統,可能包含機械設計、硬件設計、軟件設計,那麼從設計來談一個產品的可靠性,就必然要從這幾個主要的方面下功夫。另外工業級產品爲什麼表現的更加可靠呢?

爲了要相對深入的談這個問題,來看看這個相關的一些術語指標是怎麼描述一個系統或者零件的可靠性的。

啥是可靠性概率?

可靠性定義爲設備在規定條件下在指定時間段內將執行其預期功能的概率。從數學上講,這可以表示爲系統的可靠性是指在時間t內沒有發生某F類故障的概率。

作何理解呢?系統開始工作的時間,是發生類故障的時刻。也即表徵系統由於某類故障而失效的概率

啥是失效概率

有可靠性概率,自然就有失效概率,失效概率剛好與可靠性概率是互補,滿足下面關係:

 

上面的概念是針對某類故障的統計規律,那麼推廣開來,從系統而言去掉下標F,也滿足上述關係。一個系統由不同的組件組成。

系統失效率

當系統的壽命呈指數分佈時,系統的可靠性爲:,其中就是失效率(failure rate)的概念

這個曲線相信很多人應該見過,這就是產品的澡盆曲線,在產品前期老化階段比較容易暴露故障,失效率比較高。不要問我爲什麼,這是無數先輩們統計所得的統計規律,對於工程應用相信即可(當然如果是做理論研究的則另當別論)。這個規律也解釋了爲何有的廠家出廠的產品需要做老化試驗的原因,因爲做老化試驗可以將故障充分暴露出來,如此篩選出來的產品在客戶端將很少會出故障。

爲啥費這麼多話來討論這個失效率呢,來看看這個例表:

 

汽車嵌入式系統組件失效率
軍工級微處理器0.022
車規級微處理器0.12
電動馬達16.9

不同的組件的失效率是不一樣的,那麼在設計之初在成本允許的情況下,就需要儘量選取失效率低的組件。

失效模式

不同的組件的失效模式是不一樣的,啥概念呢?也就是組件產生故障的原因各異,比如電路板上的電阻其失效模式就有可能是短路失效,斷路失效、參數漂移失效,對於軟件而言其失效模式就有可能有很多,比如棧溢出、RAM數據錯誤、芯片總線錯誤等等。每種失效模式,其失效率也是不一樣的。如要深入其瞭解這些指標的含義可以參考IEC61508或者其他等同的標準。

如何提高產品的可靠性呢?


如果產品老是出問題,不光攻城獅惱火,甚至會決定一個公司的前途命運,所以如何提升產品的可靠性,絕對是一個需要花大力氣去研究的課題,也是每個從業人員需要在靈魂深處深深刻下烙印。做產品不是兒戲,產品不穩定,不僅僅會影響升職加薪,可能一個公司就會因此歇菜。

那麼究竟如何能提高產品的可靠性呢?我想大體上可以從這幾個方面着手:

  • 成功的開發流程

  • 成功的項目管理

  • 嚴格的質量控制

開發流程

這是IEC61508界定軟件、硬件都須採用如下的V&V開發模型(註明IEC61508標準裏圖不太一樣),簡單介紹一下這個模型:

現在流行很多的開發流程,比如敏捷開發模型就比較受追捧,個人並不反對敏捷開發模型,但是從產品開發的可靠性角度更推崇這種雙V模型,其實很多跑敏捷的項目在每一個迭代中其實可以融入這種雙V模型。這個模型從設計的需求>架構>詳細子模塊設計每向下走一步,都需要verfication 測試檢驗前級,同時還最終輸出validation確認設計

在IEC 61508(功能安全等級標準)等標準中都有體現這一套路,簡略看看相關標準:

IEC 61508是適用於各種行業的基本功能安全標準。它將功能安全定義爲:“與EUC(受控設備)和EUC控制系統相關的整體安全的一部分,它依賴於E/E/PE安全相關係統、其他技術安全相關係統和外部風險降低設施的正確運行。”“基本的概念是:任何安全相關的系統都必須正確工作或以可預測的(安全的)方式失效。”

個人對於V&V模型理解的幾個要點:

  • 要可執行的流程,不要形式化套路!

  • 標準規定的科學嚴謹套路,遵循從需求到設計的雙向可追溯,從設計到測試的雙向可追溯。

  • 可靠性從一開始轉化市場需求時就需引入,中小型企業更多聚焦於功能實現,而忽略了性能、可靠性需求。注意這些可靠性需求都是設計目標,沒有目標如何能從體系上產出一個優良的產品呢?如不遵循嚴格的體系流程,或許一個公司偶然能出一個高質量產品,但個人認爲一定很難保證出來的產品的整體質量

  • 需求環節:可靠性是需要提需求的,舉些栗子:

    • 環境需求,比如溫度、溼度、振動等,這些在需求階段就應界定相關的測試等級,其實即便公司的產品不需要去做相關強制認證,但是從可靠性角度,提出這樣的需求,勢必需要相應的設計以及測試去保證。那麼定然從這些維度會提升產品的可靠性。

    • EMC需求:比如常規的抗擾度測試要求,都需要需求階段明確提出。

    • .....

  • 設計環節,可靠性需要提出需求,更需要設計去實現。對於每項可靠性需求,事實上都可以儘量轉化成設計的檢查項去追溯。比如硬件中的器件失效模型及影響分析FMEA(Failure mode and effects analysis),軟件中同樣也有對應的失效模型可做分析以及影響分析,通過失效模型分析,可參考標準中的推薦做法去從設計的角度採取對策。

  • 測試環節:測試包含驗證(verification)和確認(validation) ,V&V模型每向下一步,都應向上一步去verification,每一個設計輸出,其實都應有對應的驗證去保障,最終的產品級還需要確認環節。另一個重要的要點就是工業級產品開發,往往在需求階段,設計就已然介入。

開發流程每個公司都各有不同,但是從產品生命週期以及產品可靠性自身規律角度,個人覺得還是應該考慮這些要點。關於開發流程以及功能安全標準內容很多,這裏泛泛總結這些個人體會。

成功的項目管理

項目管理是在特定的時間內領導團隊實現目標和達到成功標準的過程。項目管理的主要挑戰是在給定的約束條件下實現所有的項目目標。這些信息通常在項目文檔中描述,在開發過程的開始創建。主要的限制是範圍、時間、質量和預算。其次的挑戰是優化必要投入的分配,並應用它們來滿足預先確定的目標。

一個可靠性很高的的產品開發,與一個完善的項目管理是密不可分的。項目管理在項目的執行過程中作用是非常重要的,從啓動、計劃、執行、監管、收尾中對項目進行管理。

項目管理在這些過程中,所需的知識以及在每個階段需從事的活動可參考下圖(來源:PMBOK 第6版):

嚴格的質量控制

好的設計發佈,如沒有嚴格的生產質量控制,所出售的產品質量也定然沒有保障。對於這一點不怎麼了解,就不做過多的描述了。

總結一下

回到問題本身,如想得到一個可靠的產品,個人認爲從產品設計流程、項目管理、以及生產質控方面都應有完善的要求且須很好的落實,工業級產品砸錢做那麼多的認證,不是沒有緣由的。這些認證裏有很多就是可靠性的具體考覈。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章