本發(fā)明涉及一種基于硬件冗余的安全儀表高可靠性存儲與診斷方法,屬于工業(yè)過程控制領(lǐng)域。
背景技術(shù):
隨著我國經(jīng)濟(jì)的迅速發(fā)展以及基礎(chǔ)投入加大,生產(chǎn)環(huán)境和人身安全越來越受到重視,為了保證現(xiàn)場設(shè)備的正常運(yùn)行和操作人員的人身安全,安全儀表已經(jīng)成為必須的安全保證。安全儀表在儀表基本功能的基礎(chǔ)上加入了大量的診斷功能,使儀表一旦監(jiān)測到危險(xiǎn),立刻發(fā)出報(bào)警信息或直接執(zhí)行預(yù)定程序,防止事故的發(fā)生、降低事故帶來的危害。存儲器作為安全儀表的重要組成部分,對它的診斷不可缺少,找到一種安全可靠和實(shí)用的存儲和診斷方法,是安全儀表研究與開發(fā)的一個(gè)重點(diǎn)。
目前,對存儲器的診斷有很多種方法,按診斷方式可以分成實(shí)時(shí)的診斷和定時(shí)的診斷,實(shí)時(shí)的診斷是在一定的時(shí)間范圍內(nèi)對存儲器的固定區(qū)域進(jìn)行診斷,在幾個(gè)循環(huán)后完成整個(gè)存儲器的診斷,這種方法大多需要數(shù)據(jù)的拷貝,還要考慮整個(gè)系統(tǒng)的時(shí)間控制,因此,這種方法大多用在安全儀表功能比較簡單,對系統(tǒng)實(shí)時(shí)性要求不高的儀表系統(tǒng),因?yàn)槎〞r(shí)的診斷會耗費(fèi)大量的時(shí)間,如何協(xié)調(diào)儀表運(yùn)行時(shí)間以及存儲器診斷時(shí)間是該方法的重點(diǎn);隨著容錯(cuò)技術(shù)的發(fā)展,基于硬件冗余的存儲器診斷方法響應(yīng)產(chǎn)生,這種方法用兩片存儲器,中間經(jīng)過cpld邏輯控制單元連接到mcu,診斷算法在cpld中進(jìn)行,把mcu從繁重的存儲器診斷中解放出來,mcu利用率比較高,但該方法硬件電路比較復(fù)雜成本較高。
技術(shù)實(shí)現(xiàn)要素:
針對現(xiàn)有技術(shù)中存在的上述不足之處,本發(fā)明要解決的技術(shù)問題是提供一種基于硬件冗余的安全儀表高可靠性存儲與診斷方法,主要用于安全儀表系統(tǒng)外部易失性存儲器的存儲與診斷。
本發(fā)明為實(shí)現(xiàn)上述目的所采用的技術(shù)方案是:一種基于硬件冗余的安全儀表高可靠性存儲與診斷方法,用于安全儀表在運(yùn)行的過程中對外部易失性存儲器進(jìn)行數(shù)據(jù)存儲和數(shù)據(jù)診斷,包括以下步驟:
將mcu連接兩個(gè)存儲器,分別為數(shù)據(jù)存儲器和備份存儲器:數(shù)據(jù)存儲器用于程序和數(shù)據(jù)的運(yùn)行,備份存儲器用于數(shù)據(jù)存儲器的數(shù)據(jù)備份;
mcu將數(shù)據(jù)存儲器中的診斷區(qū)域分為n個(gè)小診斷區(qū)域,將備份存儲器中的備份區(qū)域分為n個(gè)小備份區(qū)域,n為大于1的自然數(shù),每個(gè)小診斷區(qū)域?qū)?yīng)一個(gè)小備份區(qū)域;
mcu按次序?qū)γ總€(gè)小診斷區(qū)域分別進(jìn)行診斷:mcu對某一小診斷區(qū)域進(jìn)行診斷時(shí),控制對應(yīng)程序運(yùn)行在對應(yīng)的小備份區(qū)域中,診斷完成后將該小備份區(qū)域的數(shù)據(jù)拷貝回對應(yīng)的小診斷區(qū)域。
未被mcu進(jìn)行診斷的小診斷區(qū)域,其中的程序和數(shù)據(jù)正常運(yùn)行。
相對應(yīng)的小診斷區(qū)域和小備份區(qū)域具有相同的序號。
所述mcu將數(shù)據(jù)存儲器中的診斷區(qū)域等分為n個(gè)小診斷區(qū)域,將備份存儲器中的備份區(qū)域等分為n個(gè)小備份區(qū)域,
所述mcu具備ebi總線,對應(yīng)ebi0與ebi1的設(shè)備分別對應(yīng)于不同的系統(tǒng)地址,ebi0與ebi1的片選相與后接到數(shù)據(jù)存儲器和備份存儲器的片選上。
所述mcu在正常運(yùn)行時(shí)將程序分為3個(gè)部分:數(shù)據(jù)拷貝程序、數(shù)據(jù)診斷程序和用戶應(yīng)用程序,分別對應(yīng)于不同線程;
數(shù)據(jù)拷貝程序用于根據(jù)不同的系統(tǒng)ebi地址將某一小診斷區(qū)域的數(shù)據(jù)拷貝到對應(yīng)的小備份區(qū)域中,且數(shù)據(jù)拷貝程序優(yōu)先級最高,在拷貝的過程中不允許其他線程打斷;
數(shù)據(jù)診斷程序通過傳統(tǒng)的ram測試方法對某一小診斷區(qū)域進(jìn)行診斷,且數(shù)據(jù)診斷程序的優(yōu)先級比數(shù)據(jù)拷貝程序低,在mcu空閑時(shí)對診斷區(qū)域進(jìn)行數(shù)據(jù)診斷,在診斷的過程中,用戶應(yīng)用程序運(yùn)行在備份存儲器中;
用戶應(yīng)用程序用于實(shí)現(xiàn)安全儀表的基本功能。
本發(fā)明是用于為安全儀表運(yùn)行提供保證,具有如下優(yōu)點(diǎn):
1.硬件電路設(shè)計(jì)方便。本發(fā)明采用冗余的方式,用簡單的硬件電路替代了傳統(tǒng)方法的cpld,硬件設(shè)計(jì)簡單;又因?yàn)椴捎糜布娜哂?,減少了數(shù)據(jù)拷貝的次數(shù),大大解放了mcu,使mcu的利用率大幅提高;應(yīng)用硬件電路切換的方式,實(shí)現(xiàn)程序在數(shù)據(jù)存儲器和備份存儲器之間的切換,硬件電路設(shè)計(jì)方便,解決了傳統(tǒng)方法硬件設(shè)計(jì)復(fù)雜的問題。
2.軟件設(shè)計(jì)簡單,對mcu的依賴性小。本發(fā)明應(yīng)用硬件電路和軟件配合的方式,通過硬件的配合很容易實(shí)現(xiàn)程序運(yùn)行空間的切換,程序設(shè)計(jì)簡單,解決了傳統(tǒng)方法診斷程序設(shè)計(jì)復(fù)雜的問題,把mcu從繁重的存儲器診斷中解放出來,大大提高了mcu的利用率,效率較高。
3.實(shí)時(shí)性好。本發(fā)明在安全儀表正常運(yùn)行中,備份存儲器作為數(shù)據(jù)存儲器的備份,只要進(jìn)行數(shù)據(jù)寫入,就會進(jìn)行數(shù)據(jù)備份,實(shí)時(shí)性好,可靠性高。
4.通用性強(qiáng)。本發(fā)明能實(shí)現(xiàn)實(shí)時(shí)性的存儲和數(shù)據(jù)診斷,對外部易失性存儲和mcu的參數(shù)沒有特殊要求,通用性強(qiáng)。
附圖說明
圖1是本發(fā)明硬件冗余的安全儀表外部易失性存儲器存儲與診斷功能圖;
圖2是本發(fā)明硬件冗余的安全儀表用戶程序運(yùn)行的功能圖;
圖3是本發(fā)明硬件冗余的安全儀表存儲器診斷程序運(yùn)行的功能圖;
圖4是本發(fā)明硬件冗余的安全儀表數(shù)據(jù)拷貝程序運(yùn)行的功能圖;
圖5是本發(fā)明硬件冗余的安全儀表數(shù)據(jù)存儲器和備份存儲器控制電路及真值表;
圖6是本發(fā)明硬件冗余的安全儀表外部易失性存儲器存儲與診斷的流程圖。
具體實(shí)施方式
下面結(jié)合附圖及實(shí)施例對本發(fā)明做進(jìn)一步的詳細(xì)說明。
本發(fā)明是一種基于硬件冗余的安全儀表高可靠性存儲與診斷方法,如圖1所示,存儲器采用冗余的方式,一個(gè)是數(shù)據(jù)存儲器,用于程序和數(shù)據(jù)的運(yùn)行, 另一個(gè)為備份存儲器,用于數(shù)據(jù)存儲器的數(shù)據(jù)備份;
對數(shù)據(jù)存儲器和備份存儲器分別進(jìn)行n等分區(qū),每個(gè)診斷區(qū)域和備份區(qū)域按序號一一對應(yīng),當(dāng)mcu對某一診斷區(qū)域診斷時(shí),程序運(yùn)行在相對應(yīng)的備份區(qū)域內(nèi),診斷完成后將備份區(qū)域數(shù)據(jù)拷貝回相應(yīng)的診斷區(qū)域。
mcu在正常運(yùn)行時(shí)將程序主要分為3個(gè)部分:數(shù)據(jù)拷貝程序、數(shù)據(jù)診斷程序和用戶應(yīng)用程序,分別對應(yīng)于不同線程;數(shù)據(jù)拷貝程序根據(jù)不同的系統(tǒng)ebi地址將某一診斷區(qū)域數(shù)據(jù)拷貝到相應(yīng)備份區(qū)域中,且數(shù)據(jù)拷貝程序優(yōu)先級最高,在拷貝的過程中不允許其他線程打斷;數(shù)據(jù)診斷程序通過傳統(tǒng)的ram測試方法對某一診斷區(qū)域進(jìn)行診斷,且數(shù)據(jù)診斷程序優(yōu)先級比較低,可以在mcu空閑時(shí)對診斷區(qū)域進(jìn)行數(shù)據(jù)診斷;用戶應(yīng)用程序?qū)崿F(xiàn)安全儀表的基本功能。
圖2為硬件冗余的安全儀表用戶程序運(yùn)行的功能圖。用戶程序運(yùn)行的過程中,mcu向存儲器寫數(shù)據(jù)的時(shí),數(shù)據(jù)存儲器和備份存儲器oe片選均使能,數(shù)據(jù)同時(shí)寫入兩個(gè)存儲器,備份存儲器作為數(shù)據(jù)存儲器的數(shù)據(jù)備份;在用戶程序運(yùn)行的過程中,mcu向存儲器讀數(shù)據(jù)的時(shí),通過test、write、ebi0和ebi1管腳控制2選1開關(guān),使數(shù)據(jù)存儲器片選oe使能,備份存儲器片選oe失能,這樣,數(shù)據(jù)只能從數(shù)據(jù)存儲器讀出。
圖3為硬件冗余的安全儀表數(shù)據(jù)診斷的功能圖。mcu進(jìn)行數(shù)據(jù)診斷的過程中,通過test、write、ebi0和ebi1管腳控制2選1開關(guān),使ebi1對應(yīng)于數(shù)據(jù)存儲器,ebi0對應(yīng)于備份存儲器,這樣通過ebi1進(jìn)行診斷區(qū)域的數(shù)據(jù)診斷,通過硬件的切換使診斷程序和數(shù)據(jù)運(yùn)行在備份區(qū)域,減少數(shù)據(jù)的拷貝;數(shù)據(jù)診斷的方法可以用一些傳統(tǒng)的ram測試方法,可以選擇walk-path、parity-bit、abraham等方法,具體方法在iec61508-2-a.6中有具體介紹。
圖4是硬件冗余的安全儀表數(shù)據(jù)拷貝的功能圖,數(shù)據(jù)拷貝程序的優(yōu)先級最高,在數(shù)據(jù)拷貝的過程中掛起其他線程,不允許系統(tǒng)做其他工作,防止數(shù)據(jù)拷貝沒有完成,而程序運(yùn)行更改了診斷區(qū)域的數(shù)據(jù)值;數(shù)據(jù)的拷貝是ebi1向ebi0對應(yīng)的地址進(jìn)行數(shù)據(jù)拷貝,是在診斷程序運(yùn)行完成后,數(shù)據(jù)從備份區(qū)域拷貝回 相應(yīng)的診斷區(qū)域的過程。
圖5是硬件冗余的安全儀表數(shù)據(jù)存儲器和備份存儲器控制電路及真值表,其功能就是通過控制硬件電路,使用戶程序運(yùn)行的過程中,程序和數(shù)據(jù)運(yùn)行在數(shù)據(jù)存儲器;當(dāng)診斷程序運(yùn)行,對數(shù)據(jù)存儲器進(jìn)行診斷,通過硬件電路切換使程序和數(shù)據(jù)運(yùn)行在備份區(qū)域。
用戶程序運(yùn)行時(shí)具體工作流程為:在程序進(jìn)行寫的過程,通過test、write、ebi0和ebi1管腳控制2選1開關(guān),對應(yīng)于數(shù)據(jù)存儲器,使test信號為底,選通信號為ebi0,對應(yīng)于備份存儲器,當(dāng)write信號低有效時(shí),test信號和write信號經(jīng)過與非門控制2選1開關(guān),使選通信號為ebi0,當(dāng)write信號為高時(shí),仍然選通ebi1,對讀信號沒影響,這樣能保證在寫的過程中同時(shí)寫到數(shù)據(jù)存儲器和備份存儲器,而在讀的過程中ebi0和ebi1互不影響。
診斷程序運(yùn)行時(shí)的具體工作流程為:當(dāng)診斷程序運(yùn)行時(shí),通過test、write、ebi0和ebi1管腳控制2選1開關(guān),使test管腳置為高電平,這樣使數(shù)據(jù)存儲器工作在ebi1模式,備份存儲器工作在ebi0模式,這樣通過ebi1進(jìn)行對數(shù)據(jù)存儲區(qū)域的診斷,使診斷程序和數(shù)據(jù)運(yùn)行在備份區(qū)域,從而通過ebi功能將診斷程序和數(shù)據(jù)挪到備份存儲器,將數(shù)據(jù)診斷相應(yīng)區(qū)域提供給診斷程序。
數(shù)據(jù)拷貝程序運(yùn)行時(shí)的具體工作流程為:數(shù)據(jù)拷貝程序運(yùn)行時(shí)的硬件控制與用戶程序運(yùn)行的硬件控制相似,數(shù)據(jù)拷貝時(shí)是通過備份存儲器ebi1地址向相應(yīng)備份存儲器的ebi0地址拷貝數(shù)據(jù),且數(shù)據(jù)拷貝程序的優(yōu)先級最高,在數(shù)據(jù)拷貝的過程中掛起其他線程,不允許系統(tǒng)做其他工作,防止數(shù)據(jù)拷貝沒有完成,而程序運(yùn)行更改了診斷區(qū)域的數(shù)據(jù)值。
圖6是硬件冗余的安全儀表外部易失性存儲器存儲與診斷的流程圖,首先判斷是不是運(yùn)行用戶程序,當(dāng)用戶程序運(yùn)行時(shí)不進(jìn)行數(shù)據(jù)診斷,當(dāng)系統(tǒng)空閑,用戶程序完成時(shí)進(jìn)行數(shù)據(jù)診斷,數(shù)據(jù)診斷完成后將備份數(shù)據(jù)拷貝回診斷區(qū)域,數(shù)據(jù)拷貝的優(yōu)先級最高,在拷貝的過程中不允許其他程序運(yùn)行,防止在數(shù)據(jù)沒拷貝完成,更改了備份區(qū)域的數(shù)據(jù),使數(shù)據(jù)存儲器診斷區(qū)域的數(shù)據(jù)沒有及時(shí)更 新,導(dǎo)致mcu數(shù)據(jù)紊亂。