(上海工業(yè)自動(dòng)化儀表研究院1,上海 200233;上海儀器儀表自控檢驗(yàn)測(cè)試所功能安全中心2,上海 200233)
在安全相關(guān)產(chǎn)品的實(shí)現(xiàn)過(guò)程中,為達(dá)到控制危險(xiǎn)失效的目的,需在軟硬件的設(shè)計(jì)和開(kāi)發(fā)中針對(duì)相應(yīng)的安全完整性等級(jí)選擇合適的措施,以保證安全相關(guān)產(chǎn)品在運(yùn)行中控制失效??刂剖前踩嚓P(guān)產(chǎn)品的內(nèi)在特性,這也是用于功能安全的安全相關(guān)產(chǎn)品有別于普通產(chǎn)品的典型特性。
安全相關(guān)產(chǎn)品的安全完整性包括硬件安全完整性和系統(tǒng)性安全完整性,所以控制失效就是控制隨機(jī)硬件失效和控制系統(tǒng)性失效。在運(yùn)行中,不同的元器件有不同的退化機(jī)理且以不同的速率退化,雖然硬件失效是不可控的,但硬件失效可以通過(guò)采用一定的方法診斷出來(lái),所以可采用一些技術(shù)和措施檢測(cè)出硬件的故障和失效,從而控制隨機(jī)硬件失效。從功能安全的理念來(lái)說(shuō),控制隨機(jī)硬件失效本質(zhì)上就是降低不可診斷的危險(xiǎn)失效。同樣控制系統(tǒng)性失效有利于在線控制失效。
為了控制隨機(jī)硬件失效,在標(biāo)準(zhǔn)IEC 61508.2附錄A中,表A.2~表A.14對(duì)構(gòu)成安全相關(guān)系統(tǒng)和產(chǎn)品的所有可能的各功能模塊給出了推薦的診斷技術(shù)和措施,并推薦了在使用這些技術(shù)和措施時(shí)可實(shí)現(xiàn)的最高診斷覆蓋率。當(dāng)然對(duì)硬件模塊的故障和失效的診斷方法不只限于標(biāo)準(zhǔn)所給出的,還可使用其他技術(shù)和措施。這些技術(shù)和措施只要能提供相應(yīng)的證據(jù),保證支持所聲明的診斷覆蓋率。表A.15~A.17為每一安全完整性等級(jí)推薦了控制系統(tǒng)性失效的技術(shù)和措施。
下面就控制隨機(jī)硬件失效和系統(tǒng)性失效所采用的一些技術(shù)和措施進(jìn)行解析。
存儲(chǔ)器的存儲(chǔ)單元在邏輯上可用D觸發(fā)器描述,對(duì)其操作是寫(xiě)入一位“1”或者“0”,寫(xiě)入的信息在下一次覆蓋操作到來(lái)前一直保留。
可變內(nèi)存的功能模型如圖1所示。
圖1 RAM功能模型
存儲(chǔ)器由于自身的缺陷及受周?chē)h(huán)境的影響而產(chǎn)生故障,預(yù)期主要有五類(lèi)故障,這五類(lèi)故障分別介紹如下。
① 固定型故障(stuck-at fault):一個(gè)存儲(chǔ)器的存儲(chǔ)單元總是保持在“0”狀態(tài)或“1”狀態(tài),不能寫(xiě)入其他值。
② 變遷故障(transition fault):一個(gè)存儲(chǔ)單元不能從“0”狀態(tài)變遷到“1”狀態(tài),或者不能從“1”狀態(tài)變遷到“0”狀態(tài)。
③ 固定開(kāi)故障(stack-open fault):一個(gè)存儲(chǔ)單元無(wú)法進(jìn)入,即對(duì)這個(gè)單元既不能進(jìn)行寫(xiě)操作,也不能進(jìn)行讀操作。
④ 耦合故障(coupling fault):對(duì)一個(gè)存儲(chǔ)單元進(jìn)行寫(xiě)操作時(shí),會(huì)影響到其相鄰的單元,反之亦然。
⑤ 數(shù)據(jù)保留故障(data retention fault):一個(gè)存儲(chǔ)單元在一定的時(shí)間后會(huì)丟失它所保存的內(nèi)容。
這五類(lèi)故障在存儲(chǔ)器的故障概率中約占90%~99%,現(xiàn)有的嵌入式存儲(chǔ)器測(cè)試算法都是直接對(duì)存儲(chǔ)器內(nèi)部單元測(cè)試,不對(duì)存儲(chǔ)器外圍互連線進(jìn)行測(cè)試。
可變內(nèi)存的診斷測(cè)試方法常用的有跳步模式(Galpat)測(cè)試法和跨步(March)測(cè)試法兩種。
(1) 跳步模式(Galpat)測(cè)試法
Galpat算法目前是RAM測(cè)試法之一,它的具體步驟如下。
① 先將被測(cè)試的RAM存儲(chǔ)單位的數(shù)據(jù)備份;
② 初始化該存儲(chǔ)單位為0;
③ 將存儲(chǔ)單位的值與1左移n位的值進(jìn)行按位或運(yùn)算(n為從0開(kāi)始的存儲(chǔ)器位數(shù));
④ 讀取該存儲(chǔ)單位的值與運(yùn)算后的值是否一致;
⑤ 如果不一致,報(bào)故障錯(cuò)誤,程序停止執(zhí)行;
⑥ 否則,重復(fù)執(zhí)行步驟②~⑤,直到該存儲(chǔ)單位的每一位都測(cè)試完;
⑦ 重新按位初始化存儲(chǔ)單位的值為1;
⑧ 將存儲(chǔ)單位的值與1左移n位的值進(jìn)行按位異或運(yùn)算;
⑨ 讀取該存儲(chǔ)單位的值與運(yùn)算后的值是否一致;
⑩ 如果不一致,報(bào)故障錯(cuò)誤,程序停止執(zhí)行;
Galpat測(cè)試法簡(jiǎn)化圖如圖2所示。
圖2 Galpat 測(cè)試法簡(jiǎn)化圖
Galpat測(cè)試算法的測(cè)試故障覆蓋率較高,能夠測(cè)試固定型故障、變遷故障、固定開(kāi)故障以及大部分耦合故障。由Galpat的時(shí)間復(fù)雜度為o(n2)(n為被測(cè)試存儲(chǔ)器的位數(shù))可知,該測(cè)試算法需要花費(fèi)的測(cè)試時(shí)間較長(zhǎng),對(duì)于大容量存儲(chǔ)器來(lái)說(shuō)并不適合。
(2) 跨步(March)測(cè)試法
常見(jiàn)的March算法包含MATS+、March C-、March C+、March B、March LR、March SR等。這些算法的不同之處就是包含的March元素各不相同,每種March算法包含多個(gè)March元素,每個(gè)March元素都由地址變化順序、讀寫(xiě)的操作和操作的數(shù)據(jù)三部分組成。目前最常用的是March C+,因?yàn)槠涔收细采w率最高。
March C+算法簡(jiǎn)化圖如圖3所示。
圖3 March C+算法簡(jiǎn)化圖
圖3中:符號(hào)“↑”表示地址升序;符號(hào)“↓”表示地址降序;“R0”表示讀0操作;“R1”表示讀1操作;“W0”表示寫(xiě)0操作;“W1”表示寫(xiě)1操作;M2~M7表示6個(gè)March單元或6個(gè)狀態(tài)機(jī)狀態(tài)。
March C+算法的步驟如下。
① 先將被測(cè)試的RAM存儲(chǔ)單位的數(shù)據(jù)備份;
② 初始化該存儲(chǔ)單元為0;
③ 按照升序從地址0到最大地址依次進(jìn)行讀出0,再寫(xiě)入1,再讀出1;
④ 按照升序從地址0到最大地址依次進(jìn)行讀出1,再寫(xiě)入0,再讀出0;
⑤ 按照降序從最大地址到0地址依次進(jìn)行讀出0,再寫(xiě)入1,再讀出1;
⑥ 按照降序從最大地址到0地址依次進(jìn)行讀出1,再寫(xiě)入0,再讀出0;
⑦ 按照降序從最大地址到0地址依次進(jìn)行讀出0。
March C+算法同樣能夠測(cè)試固定型故障、變遷故障、固定開(kāi)故障和耦合故障。由該算法的時(shí)間復(fù)雜度為o(n)可知,該測(cè)試算法可以運(yùn)用到大容量的SRAM測(cè)試、SDRAM測(cè)試等存儲(chǔ)器測(cè)試領(lǐng)域。
采用軟件測(cè)試內(nèi)存的完好性,需兼顧到測(cè)試所需時(shí)間與診斷覆蓋率,原則上對(duì)處理器及內(nèi)存的故障診斷測(cè)試不應(yīng)影響到產(chǎn)品(系統(tǒng))的主功能,所耗時(shí)間不應(yīng)大于1 h。所以在實(shí)際產(chǎn)品開(kāi)發(fā)中,采用軟件診斷處理器及可變內(nèi)存的故障時(shí),在低要求模式下需考慮以下三個(gè)時(shí)間量的兼容性:①診斷測(cè)試時(shí)間間隔;②診斷程序完成一次對(duì)可變內(nèi)存檢查的時(shí)間;③平均修復(fù)時(shí)間(mean time to restoration,MTTR)。在高要求連續(xù)模式下,當(dāng)故障裕度(hardware fault tolerance,HFT)=0時(shí)需考慮以下四個(gè)時(shí)間量的兼容性:①診斷測(cè)試時(shí)間間隔;②診斷程序完成一次對(duì)可變內(nèi)存檢查的時(shí)間;③過(guò)程安全時(shí)間(process safety time,PST);④要求率。因此,在選擇故障診斷測(cè)試方法時(shí)需兼顧診斷覆蓋率及以上所提到的幾個(gè)時(shí)間量。
當(dāng)使用復(fù)雜硬件和軟件時(shí),失效的重點(diǎn)將從隨機(jī)失效轉(zhuǎn)變?yōu)橄到y(tǒng)性失效??刂葡到y(tǒng)性失效包括:①控制軟硬件設(shè)計(jì)引起的失效;②控制由環(huán)境應(yīng)力或影響引起的失效;③控制操作過(guò)程的失效??刂葡到y(tǒng)性失效的部分技術(shù)和措施解析如表1所示。
表1 控制系統(tǒng)性失效的部分技術(shù)和措施解析
由表1可以看出,控制系統(tǒng)性失效歸根結(jié)底還是由產(chǎn)品的設(shè)計(jì)尤其是軟件和硬件的設(shè)計(jì)來(lái)實(shí)現(xiàn)的。譬如,在自動(dòng)扶梯安全相關(guān)系統(tǒng)上實(shí)現(xiàn)“修改保護(hù)”。為了防止對(duì)安全相關(guān)系統(tǒng)的硬件進(jìn)行更改,安全相關(guān)系統(tǒng)的邏輯處理單元通過(guò)對(duì)傳感器信號(hào)特征的辨識(shí)確定傳感器單元的完好性和正確性。更進(jìn)一步講,為了防止自動(dòng)扶梯用戶私自拆除安全相關(guān)系統(tǒng),在自動(dòng)扶梯控制系統(tǒng)上設(shè)置了“門(mén)鎖”,只有在安全相關(guān)系統(tǒng)正常啟動(dòng)給出解鎖信號(hào)后,自動(dòng)扶梯控制系統(tǒng)的“門(mén)鎖”才會(huì)打開(kāi)。這里“門(mén)鎖”和“鑰匙”通過(guò)軟硬件設(shè)計(jì)來(lái)實(shí)現(xiàn),以防止拆除安全相關(guān)系統(tǒng)這一重大硬件更改。
控制失效是安全相關(guān)產(chǎn)品設(shè)計(jì)的關(guān)鍵點(diǎn),是安全相關(guān)產(chǎn)品的內(nèi)在特性。在安全相關(guān)產(chǎn)品的軟件設(shè)計(jì)和硬件設(shè)計(jì)中融入控制失效的要求,就能設(shè)計(jì)出滿足硬件安全完整性和系統(tǒng)性安全完整性要求的用于功能安全的合格的產(chǎn)品。