運用高效能電壓監控電路提升工業功能安全合規性——第4部分:使用看門狗計時器進行程式序列監測
運用高效能電壓監控電路提升工業功能安全合規性——第4部分:使用看門狗計時器進行程式序列監測
作者:ADI 資深產品應用工程師 Bryan Angelo Borres 及 Christopher Macatangay
摘要
看門狗計時器是確保數位控制器(如微控制器(MCU))安全運作的關鍵元件。為了控制數位元件程式序列中的硬體故障,基本功能安全(FS)標準IEC 61508-2附錄A表A.10推薦了幾種診斷技術和措施。其中包括:具有獨立時間基準和時間視窗的看門狗,具有獨立時間基準但無時間視窗的看門狗,程式序列的時間和邏輯監測的組合。雖然每種技術都有相應的可達到的最大診斷覆蓋率(如本系列的第3部分所述),但無一例外都使用了看門狗計時器。因此,本文將展示如何使用看門狗計時器實現這些診斷功能。
引言
隨著安全相關系統(SRS)廣泛採用微控制器(MCU)作為處理器,為了確保安全運行,診斷措施不可或缺。IEC 61508-2推薦使用由硬體(一個通道)支援的自檢作為針對處理器的診斷技術之一。其中使用特殊硬體來提高故障檢測的速度並擴大檢測範圍。例如,使用看門狗計時器IC來週期性地監測MCU輸出的特定位元模式。
此外,IEC 61508-2規定了兩種類型的看門狗:一種是具有獨立時間基準但無時間視窗的看門狗,另一種是具有獨立時間基準和時間視窗的看門狗。儘管如此,其也可以用於其他技術中,例如用於程式序列的時間和邏輯監測的組合中。因此,本文將深入探討此類程式序列監測診斷措施配合ADI的具有看門狗功能的高性能監控電路時,在運作和診斷覆蓋率方面的差異。
具有獨立時間基準但無時間視窗的看門狗
IEC 61508的第2部分將簡易看門狗描述為具有獨立時間基準的外部定時元件。藉由此類元件,可以在指定的時間間隔內檢測計算元件(如MCU)中的程式序列故障。其運行機制是這樣的:允許MCU在看門狗達到超時之前向看門狗發出重定訊號(表示程式序列運行順利),或者讓看門狗超時,以便看門狗可以向MCU發出重定訊號(表示程式運行不順利)。
圖1a顯示了透過MAX6814.實現的具有獨立時間基準但無時間視窗的看門狗示例。值得注意的是,MCU通常內建看門狗計時器(WDT),但如果其是故障微控制器的一部分,則不能僅依靠它來檢測故障,否則當發生共因故障(CCF)時,故障檢測並不可靠。為了解決此類CCF問題,應使用單獨的WDT來確保MCU處於重定模式。1,2
圖1b透過流程圖說明了嵌入MCU程式執行中的看門狗計時器的行為。在流程開始之前,必須設定看門狗超時週期(WDT)的最大復位間隔。定義了如此的週期或間隔後,WDT將在程式執行時運行。MCU必須能夠在MAX6814達到超時之前向其WDI接腳發送訊號,否則如果達到超時,該元件將向MCU發出重定訊號。當MCU重定時,應將系統置於安全狀態。
這種WDT的超時週期將能擷取程式序列問題。例如:程式序列卡在迴圈中,或者插斷服務常式未及時返回。舉例來說,軟體的每個迴圈中原本應該運作10個子常式,但結果只有5個被執行。然而,它不會涉及其他與程式序列相關的問題,例如程式的執行時間是否比預期更長或更短,或者程式的序列是否正確執行。這些問題可以透過下一種類型的WDT來解決。
具有獨立時間基準和時間視窗的看門狗
視窗型WDT存在獨立的時間視窗,既能檢測到過度延遲情況,也能檢測到過早執行情況。因此,其禁止MCU在超出或短於規定的開放(或稱「有效」)視窗時作出回應。相較於簡易看門狗,其能保證程式按時執行所有子常式;否則,它將使MCU復位。3
圖2顯示了採用MAX6753實現的程式序列監測示例。其有一個視窗型看門狗,其看門狗週期可透過外部電容配置。圖3顯示了採用MAX42500的另一種實現方案,其看門狗時間設定可透過 I2C配置,這使得外部元件數量有效減少,並且能夠透過分組差錯校驗(PEC)位元組提高故障覆蓋率,如圖4所示。PEC位元組能夠提高對I2C通訊相關故障的診斷覆蓋率,例如匯流排錯誤、卡塞匯流排情況、時序問題和不當配置。
雖然相較於簡易WDT,具有獨立時間基準和時間視窗的看門狗能夠實現更高的診斷覆蓋率,但其仍然無法擷取軟體子常式是否按正確循序執行的問題。而這就是下一種類型的診斷技術所要解決的問題。
程式序列的時間和邏輯監測的組合
根據IEC 61508-2,採用時間和邏輯監測組合的診斷技術能夠對程式序列實現高診斷覆蓋率。這種技術的實現方案中包含視窗型看門狗和一項檢查程式序列是否按正確循序執行的功能。當圖2中的電路與圖5中的序列結合時,可得到一個視覺化範例,其中MCU的每個程式常式都採用唯一的字元與數位組合。每次執行常式時,這些唯一的組合都會放置在一個陣列中。執行完最後一個常式之後,只有當陣列中的所有字都正確設定時,MCU才會向看門狗發送重定訊號。
質詢/響應式架構
某些系統可能需要更高的診斷覆蓋率來擷取MCU的故障,因而僅在視窗時間內發送回脈衝是不夠的。為此,可能要求MCU完成一項複雜的任務(如計算),以驗證MCU的功能完整性。在這種情況下,MAX42500的質詢/響應式看門狗可以派上用場。在這種看門狗模式下,必須讀取IC中的一個鍵-值暫存器,作為質詢訊息的起始點。MCU須利用此訊息來計算需要發送回看門狗IC的適當回應,以便在有效視窗內重啟看門狗。此類質詢/響應式看門狗的工作方式類似於簡易視窗型看門狗,區別在於鍵暫存器會被更新,而不是透過升緣刷新看門狗,如圖6所示。值得注意的是,對於MAX42500的看門狗計時器,看門狗輸入是透過 I2C實現的,而看門狗輸出是輸出復位接腳。
MAX42500包含一個線性回饋移位元鍵控(LFSK)暫存器,其使用多項式 x8 + x6 + x5 + x4 + 1,將所有位上移到最高有效位(MSB),並將計算出的位作為新的最低有效位(LSB)插入。因此,MCU必須以這種方式計算回應,並透過 I2C將其返回到MAX42500的暫存器。值得注意的是,這種多項式既是本原多項式,也是8位元情況下的最大長度回饋多項式。其確保所有位元值組合(1到255)都由該多項式生成,並且數位的順序確實是偽隨機的。4,5
這種質詢/響應可以實現比時間和邏輯程式序列監測組合更高的覆蓋率,因為其顯示MCU仍然可以進行實際計算。這不同於MCU僅實現決策常式的情形,例如僅檢查由字組成的陣列是否正確,然後發出重定看門狗的訊號。
可達到的診斷覆蓋率
根據基本功能安全標準,針對SRS中每個模組推薦的每項診斷措施,提供了可達到的最大診斷覆蓋率。表1列出了IEC 61508標準中採用看門狗計時器的程式序列。
| 診斷技術/措施 | 經考量認為能夠達到的最大診斷覆蓋率 |
| 具有獨立時間基準但無時間視窗的看門狗 | 低 |
| 具有獨立時間基準和時間視窗的看門狗 | 中 |
| 程式序列的時間和邏輯監測的組合 | 高 |
此外,由於存在標準可能未涵蓋的其他實現方案,可達到的診斷覆蓋率只能透過故障插入測試進行驗證。
結論
本文列舉了三類使用看門狗計時器的診斷措施,IEC 61508-2推薦採用這些措施來因應程式序列中的故障。第一類看門狗具有獨立的時間基準但沒有時間視窗,可以利用簡易看門狗實現。這種診斷措施只能實現較低的診斷覆蓋率。第二類看門狗具有獨立的時間基準和時間視窗,可以透過視窗型看門狗實現。這種措施可以實現中等診斷覆蓋率。為將診斷覆蓋率提升到更高水準,可以在通常使用看門狗的時間監測之外,採用邏輯監測。質詢/響應式視窗型看門狗架構能夠檢查MCU的計算能力,因此可以進一步提高對程式序列故障的診斷覆蓋率。
參考資料
1“IEC 61508 All Parts, Functional Safety of Electrical/Electronic/Programmable Electronic Safety-Related Systems”,國際電子馬達委員會(IEC),2010年。
2 “Top Misunderstandings About Functional Safety”,TÜV SÜD,2025年。
3 「視窗型看門狗操作的基礎知識」,ADI,2021年12月。/p>
4 “Pseudo Random Number Generation Using Linear Feedback Shift Registers”,Maxim,2010年6月。
5Mohammed Abdul Samad AL-khatib和Auqib Hamid Lone,“Acoustic Lightweight Pseudo Random Number Generator based on Cryptographically Secure LFSR”,International Journal of Computer Network and Information Security,Vol. 2,2018年2月。