??? 摘?? 要:主備倒換技術(shù)是提高系統(tǒng)可靠性的一項(xiàng)重要技術(shù)。本文以提高控制系統(tǒng)的可靠性為出發(fā)點(diǎn),提出了應(yīng)用于該系統(tǒng)中的一種高可靠主備倒換技術(shù)的設(shè)計(jì)。?
??? 關(guān)鍵詞: 控制系統(tǒng); 可靠性; 主備倒換技術(shù)
?
??? 當(dāng)今電子信息處理系統(tǒng)向高可靠、大容量、高速化發(fā)展,高可靠、高速化電子信息處理系統(tǒng)是市場(chǎng)需求的發(fā)展趨勢(shì)。隨著嵌入式智能設(shè)備的進(jìn)一步發(fā)展和普及,電子信息處理系統(tǒng)的可靠性設(shè)計(jì)變得越來(lái)越重要,特別是嵌入式智能控制系統(tǒng),如果電子信息處理系統(tǒng)出現(xiàn)故障,其后果不堪設(shè)想,造成的損失可能是無(wú)法估量。1993年3月10日,浙江省寧波市北侖發(fā)電廠因控制系統(tǒng)失靈,導(dǎo)致一號(hào)機(jī)組發(fā)生特大鍋爐爆炸事故,造成傷亡幾十人。1996年6月,歐洲“阿麗亞娜”號(hào)航天飛機(jī)因智能控制系統(tǒng)出現(xiàn)故障,使航天飛機(jī)墜毀,造成了數(shù)億美元的巨大損失。每一次慘痛教訓(xùn)都提醒人們要重視控制系統(tǒng)的可靠性。因此,主備倒換技術(shù)就是為克服完善設(shè)計(jì)無(wú)法解決這類(lèi)高可靠要求的困難發(fā)展起來(lái)的,其設(shè)計(jì)思想是允許故障存在,并能自動(dòng)地消除其影響??梢哉f(shuō),主備倒換技術(shù)從根本上開(kāi)辟了一條實(shí)現(xiàn)系統(tǒng)可靠性的途徑。本文對(duì)一種高可靠的主備倒換技術(shù)設(shè)計(jì)進(jìn)行闡述,并對(duì)其在控制系統(tǒng)中的應(yīng)用進(jìn)行了研究。?
1 主備倒換電路設(shè)計(jì)?
1.1 主備倒換邏輯控制圖?
??? 主備倒換邏輯控制框圖如圖1所示,具有人工倒換、軟件倒換、自動(dòng)倒換功能。?
?
?
??? 主備用狀態(tài)控制板各信號(hào)的功能如下:?
??? (1)復(fù)位信號(hào):?jiǎn)伟宓膹?fù)位信號(hào),當(dāng)復(fù)位信號(hào)為低時(shí),該板變?yōu)閭溆冒?,用于人工倒換。?
??? (2) 軟件控制位:?jiǎn)伟宓能浖刂菩盘?hào),它是由單板軟件控制,初始化為高,當(dāng)CPU把該位改為低時(shí),該板變?yōu)閭溆冒?,?duì)方控制板變?yōu)橹饔冒?。這樣可以實(shí)現(xiàn)快速軟件倒換。?
??? (3) 心跳狀態(tài)位:CPU必須在500 μs內(nèi)至少訪問(wèn)CPLD一次,使CPLD輸出心跳波形。心跳波形環(huán)回CPLD的心跳檢測(cè)電路,CPU如果在500 μs內(nèi)沒(méi)有訪問(wèn)CPLD,CPLD就沒(méi)有輸出心跳波形。當(dāng)有心跳時(shí),心跳狀態(tài)位為1;當(dāng)沒(méi)有心跳時(shí),心跳狀態(tài)位為0,通過(guò)這個(gè)方法就可以監(jiān)控CPU是否正常運(yùn)行,如果CPU沒(méi)有正常運(yùn)行,該板就變?yōu)閭溆冒鍫顟B(tài)。?
??? (4) 本板主備用狀態(tài)位:該位為0 狀態(tài)時(shí),本板為主用;該位為1狀態(tài)時(shí),本板為備用。當(dāng)該狀態(tài)位發(fā)生改變時(shí),CPLD會(huì)產(chǎn)生中斷INT告訴CPU,CPU會(huì)查詢(xún)?cè)摖顟B(tài)位,以便知道本板的主備用狀態(tài)。?
??? (5) 對(duì)方板主備用狀態(tài)位:該位為0 狀態(tài)時(shí),對(duì)方板為主用;該位為1狀態(tài)時(shí),對(duì)方板為備用。當(dāng)該狀態(tài)位發(fā)生改變時(shí),CPLD會(huì)產(chǎn)生中斷INT告訴CPU,CPU會(huì)查詢(xún)?cè)摖顟B(tài)位,以便知道對(duì)方板的主備用狀態(tài)。?
??? (6) 中斷信號(hào)INT: 當(dāng)對(duì)方板主備用狀態(tài)或本板主備用狀態(tài)發(fā)生改變時(shí),CPLD會(huì)產(chǎn)生中斷信號(hào)INT通知CPU,保證CPU及時(shí)知道對(duì)方板主備用狀態(tài)或本板主備用狀態(tài),以保證系統(tǒng)正常運(yùn)行。?
??? (7) CPLD通信總線:就是CPU通過(guò)該總線與CPLD通信,通過(guò)該總線完成CPLD的心跳,同時(shí)通過(guò)該總線完成對(duì)方板主備用狀態(tài)或本板主備用狀態(tài)的查詢(xún)。?
??? (8) 數(shù)據(jù)同步端口:該數(shù)據(jù)同步端口就是網(wǎng)絡(luò)通信端口,主要是同步兩塊主備用狀態(tài)控制板的數(shù)據(jù),保證在主備板都是運(yùn)行同一數(shù)據(jù)和程序,只是主用板有控制權(quán),備用板沒(méi)有控制權(quán),倒換后,使得原來(lái)備用板能夠無(wú)縫運(yùn)行原來(lái)主用板的程序,保證系統(tǒng)的可靠性。?
1.2 主備用工作原理?
??? 工作原理是:兩塊主備用狀態(tài)控制板的U2A的第3腳先為低的控制板為主用。在主備倒換邏輯控制圖中,當(dāng)主備用狀態(tài)控制板1的復(fù)位信號(hào)、軟件控制位、心跳狀態(tài)位較主備用狀態(tài)控制板2的復(fù)位信號(hào)、軟件控制位、心跳狀態(tài)位先都為高時(shí),這時(shí)主備用狀態(tài)控制板1的U1B的第6腳為高,主備用狀態(tài)控制板2的U1B的第6腳輸出為低,導(dǎo)致主備用狀態(tài)控制板1的U2A的第3腳為低,主備用狀態(tài)控制板2的U2A的第3腳為高。則主備用狀態(tài)控制板1為主用,主備用狀態(tài)控制板2為備用。反之,當(dāng)主備用狀態(tài)控制板2的復(fù)位信號(hào)、軟件控制位、心跳狀態(tài)位較主備用狀態(tài)控制板1的復(fù)位信號(hào)、軟件控制位、心跳狀態(tài)位先都為高時(shí),主備用狀態(tài)控制板2為主用,主備用狀態(tài)控制板1為備用。?
1.3 CPLD的邏輯實(shí)現(xiàn)?
??? CPLD邏輯設(shè)計(jì)圖如圖2所示。當(dāng)CPU向心跳產(chǎn)生寄存器寫(xiě)入0X55,心跳波形輸出低電平,寫(xiě)入0XAA,心跳波形則輸出高電平,這樣就能產(chǎn)生心跳脈沖輸出。這個(gè)心跳脈沖就能監(jiān)控單板內(nèi)關(guān)鍵器件的好壞,如FPGA、時(shí)鐘、電源等。如果這些被監(jiān)控的芯片、信號(hào)或電源出現(xiàn)問(wèn)題,那這個(gè)心跳脈沖就不能環(huán)回CPLD的心跳波形輸入腳,則CPLD的心跳檢測(cè)電路就不能檢測(cè)到心跳的存在,即CPLD的心跳狀態(tài)位為0,根據(jù)圖1的主備倒換邏輯控制圖,該主備用狀態(tài)控制板只能作為備用。這樣主備用狀態(tài)就能夠?qū)崿F(xiàn)自動(dòng)倒換。心跳脈沖監(jiān)控FPGA、時(shí)鐘、電源邏輯圖如圖3所示。?
?
?
?
2 軟件主備用倒換過(guò)程的實(shí)現(xiàn)?
??? 主備用狀態(tài)控制板啟動(dòng)程序流程圖如圖4所示。如果主用板要通過(guò)軟件進(jìn)行倒換,只要主用板把軟件控制位設(shè)置為0,向備用板表明自己變?yōu)閭溆?,備用板的邏輯發(fā)中斷告訴備用板CPU,備用板進(jìn)行中斷處理,通過(guò)狀態(tài)寄存器檢測(cè)對(duì)方是否變?yōu)閭溆?,則原備用板將軟件控制位置為1,原備用板升為主用。?
?
?
3 主備用狀態(tài)控制板的倒換波形?
??? 根據(jù)圖1原理框圖,示波器探頭的二通道接主備用狀態(tài)控制板1的U2A的第3腳(倒換前為低即主用),示波器探頭的一通道接主備用狀態(tài)控制板2的U2A的第3腳(倒換前為高即備用),通過(guò)把主備用狀態(tài)控制板1的軟件位置為低,兩塊主備用狀態(tài)控制板的主備用狀態(tài)發(fā)生改變,其倒換波形如圖5所示。從示波器的顯示可知,時(shí)間軸每格20 ns,則倒換時(shí)間大約20 ns就可以實(shí)現(xiàn)硬件完全倒換。實(shí)現(xiàn)了快速穩(wěn)定的倒換,從而可在工業(yè)控制領(lǐng)域得到廣泛應(yīng)用。?
?
?
4 主備用狀態(tài)控制板的倒換測(cè)試?
??? (1)手動(dòng)倒換: 如圖1按下主用板(如主備用狀態(tài)控制板1為主用) 的復(fù)位鍵SW1。這時(shí), 原主用板(如主備用狀態(tài)控制板1為主用)重啟,變?yōu)閭溆?,原備用?如主備用狀態(tài)控制板2為備用)變?yōu)橹饔?硬件切換時(shí)間約為20 ns,軟件同步切換時(shí)間約為20? μs。?
??? (2)軟件倒換:主用板(如主備用狀態(tài)控制板1為主用)的CPU置CPLD 的控制寄存器的軟件控制位為0,使CPLD 的軟件控制位引腳輸出為0。這時(shí), 原主用板(如主備用狀態(tài)控制板1為主用)變?yōu)閭溆冒?原備用板(如主備用狀態(tài)控制板2為備用)變?yōu)橹饔冒?硬件切換時(shí)間約為20 ns,軟件同步切換時(shí)間約為1 μs。這樣可以實(shí)現(xiàn)快速軟件倒換。?
??? (3)自動(dòng)倒換:由于CPU必須在500?μs內(nèi),至少訪問(wèn)CPLD一次,使CPLD輸出心跳波形,CPU如果在500 μs內(nèi)沒(méi)有訪問(wèn)CPLD,CPLD就沒(méi)有輸出心跳波形,當(dāng)沒(méi)有心跳時(shí),心跳狀態(tài)位為0,短路主用板的內(nèi)存,讓主用板死機(jī),CPU不去訪問(wèn)CPLD, 這時(shí), 原主用板(如主備用狀態(tài)控制板1為主用)變?yōu)閭溆冒?原備用板(如主備用狀態(tài)控制板2為備用)變?yōu)橹饔冒?硬件切換時(shí)間為20 ns左右,軟件同步切換時(shí)間為10 ms左右。這樣可以實(shí)現(xiàn)可靠的自動(dòng)倒換。?
5 主備用狀態(tài)控制板在工控領(lǐng)域的應(yīng)用?
??? 很多高可靠性要求的場(chǎng)合要求系統(tǒng)的可靠性指標(biāo)為99.999%,即系統(tǒng)一年的平均故障時(shí)間不超過(guò)3 min。如電力控制系統(tǒng)、交通導(dǎo)航系統(tǒng)等,系統(tǒng)僅靠提供元件的可靠性是無(wú)法滿足要求的,需要對(duì)系統(tǒng)的關(guān)鍵設(shè)備進(jìn)行主備份,主備用設(shè)備通過(guò)控制通信網(wǎng)進(jìn)行數(shù)據(jù)備份,使得主備用設(shè)備完全同步,保證當(dāng)這些主備用設(shè)備出現(xiàn)故障時(shí),熱切換到備份設(shè)備,使系統(tǒng)能不間斷運(yùn)行。?
??? (1) 在數(shù)據(jù)采集處理方面的應(yīng)用如圖6所示,通過(guò)本板的主備用狀態(tài)位來(lái)控制總線,當(dāng)本板主用時(shí),數(shù)據(jù)采集卡的總線可以與本板的CPU通信,當(dāng)備用時(shí),數(shù)據(jù)采集卡的總線不與本板的CPU通信。?
?
?
??? (2) 在網(wǎng)絡(luò)通信方面的應(yīng)用如圖7所示,通過(guò)本板的主備用狀態(tài)位來(lái)控制網(wǎng)絡(luò)通信口切換開(kāi)關(guān)。如果服務(wù)器1為主用時(shí),外部通信設(shè)備通過(guò)網(wǎng)絡(luò)通信口切換開(kāi)關(guān)與服務(wù)器1的CPU通信;服務(wù)器2為備用,網(wǎng)絡(luò)通信口的切換開(kāi)關(guān)斷開(kāi),不與外部通信設(shè)備通信。當(dāng)兩個(gè)服務(wù)器發(fā)生倒換后,服務(wù)器1為備用,服務(wù)器2為主用時(shí),服務(wù)器1的網(wǎng)絡(luò)通信口切換開(kāi)關(guān)斷開(kāi),服務(wù)器2的CPU通過(guò)網(wǎng)絡(luò)通信口切換開(kāi)關(guān)與外部通信設(shè)備通信。?
?
?
參考文獻(xiàn)?
[1] 蔡開(kāi)元.軟件可靠性工程基礎(chǔ)[M].北京:清華大學(xué)出版社,1995.?
[2] 王珍熙.可靠性、主備倒換及容錯(cuò)技術(shù)[M]. 北京:航空工業(yè)出版社,1991.?
[3] 錢(qián)華明,袁贛南.分布式數(shù)據(jù)總線及其在慣性組合導(dǎo)航系統(tǒng)中的應(yīng)用[J].中國(guó)慣性技術(shù)學(xué)報(bào),1997,5(4).?
[4] MUSA J D. Software reliability: measurement, prediction,application. McgrawHill, New York,1987.?
[5] 張有志.可編程邏輯器件PLD原理與應(yīng)用.北京:中國(guó)鐵道出版社,1996.?
[6] 高傳善.接口與通信.上海:復(fù)旦大學(xué)出版社,1989.