1 引 言
隨著計(jì)算機(jī)應(yīng)用技術(shù)的發(fā)展,計(jì)算機(jī)應(yīng)用已經(jīng)早就從單機(jī)系統(tǒng)發(fā)展到網(wǎng)絡(luò)系統(tǒng),。但是隨著網(wǎng)絡(luò)系統(tǒng)的擴(kuò)大,,要保證整個(gè)大系統(tǒng)的正常運(yùn)轉(zhuǎn)就遠(yuǎn)比保證單機(jī)系統(tǒng)的正常運(yùn)轉(zhuǎn)困難得多,不過(guò)只要處理好各個(gè)系統(tǒng)的協(xié)調(diào)關(guān)系以及提高關(guān)鍵系統(tǒng)(服務(wù)器系統(tǒng))運(yùn)行的可靠性,,那么網(wǎng)絡(luò)系統(tǒng)在某種程度上就比單機(jī)系統(tǒng)更有保障,。
如何保證系統(tǒng)的可靠性,是當(dāng)今科技應(yīng)用研究的熱點(diǎn)?,F(xiàn)在常用的方法是:采用冗余技術(shù)提高系統(tǒng)的可靠性,。常用的技術(shù)有:冷備份、溫備份和熱備份,。冷備份指后備系統(tǒng)未運(yùn)行,;溫備份指后備系統(tǒng)在工作系統(tǒng)停止之前啟動(dòng)并同步后才能停止運(yùn)行系統(tǒng);熱備份指后備系統(tǒng)運(yùn)行并保持與工作系統(tǒng)時(shí)時(shí)同步,。這些技術(shù)各有優(yōu)缺點(diǎn)。熱備份需要時(shí)時(shí)保持后援系統(tǒng)與工作系統(tǒng)的狀態(tài)一致,,那么后援系統(tǒng)必須時(shí)時(shí)運(yùn)行,,降低了系統(tǒng)的使用壽命,可冷備份又不能保證后援系統(tǒng)啟動(dòng)后與工作系統(tǒng)的狀態(tài)一致,。
2 實(shí)際中遇到問(wèn)題的描述
該問(wèn)題是在一個(gè)網(wǎng)絡(luò)ERP應(yīng)用系統(tǒng)中遇到的,,在該系統(tǒng)中,所有客戶(hù)端運(yùn)行的軟件都需要訪問(wèn)數(shù)據(jù)庫(kù)服務(wù)器上的數(shù)據(jù)庫(kù),,而客戶(hù)軟件記錄的是每天生產(chǎn)中的實(shí)時(shí)數(shù)據(jù),,這就必須保證數(shù)據(jù)庫(kù)服務(wù)器正常工作,否則整個(gè)網(wǎng)絡(luò)系統(tǒng)就不能運(yùn)行,,這將導(dǎo)致停止生產(chǎn),,給公司造成巨大的損失。如何保證系統(tǒng)的可靠性,,就成為問(wèn)題的關(guān)鍵所在,。本文根據(jù)冗余技術(shù)的相關(guān)理論,結(jié)合三種備份技術(shù)的優(yōu)缺點(diǎn),,使用溫備份技術(shù),,設(shè)計(jì)了一個(gè)基于Nios處理器的智能容錯(cuò)系統(tǒng),在實(shí)際應(yīng)用中取得了良好的效果,。
3 智能容錯(cuò)系統(tǒng)的整體規(guī)劃
本文設(shè)計(jì)的系統(tǒng)可以在智能仲裁中制定系統(tǒng)的運(yùn)行計(jì)劃,,即:可以制定系統(tǒng)中兩個(gè)服務(wù)器的運(yùn)行時(shí)間。在該系統(tǒng)中,,每天兩臺(tái)服務(wù)器以12小時(shí)為單位交替運(yùn)行,。具體過(guò)程如下:
1)給智能仲裁器上電,然后按下仲裁器上的按鈕啟動(dòng)一臺(tái)服務(wù)器,這臺(tái)服務(wù)器啟動(dòng)后就開(kāi)始工作,。
2)工作服務(wù)器在更新數(shù)據(jù)庫(kù)的同時(shí),,通過(guò)串口通訊把相關(guān)同步信息發(fā)送給仲裁器(這里是操作數(shù)據(jù)庫(kù)的SQL語(yǔ)句),仲裁器收到同步信息后就把這些信息存入與仲裁器相連接的IDE硬盤(pán)上(在同步信息不多的情況下,,最好在仲裁器上使用Flash),。
3)當(dāng)計(jì)劃時(shí)間到了后,仲裁器就啟動(dòng)后援服務(wù)器,,然后每隔一定的時(shí)間檢測(cè)啟動(dòng)的后援服務(wù)器是否已經(jīng)到了可以工作的狀態(tài),。
4)如果在規(guī)定的檢測(cè)次數(shù)中,啟動(dòng)的后援服務(wù)器還沒(méi)有到達(dá)可以工作的狀態(tài),,那么仲裁器就報(bào)警,,提示用戶(hù)后援服務(wù)器出現(xiàn)故障了,這時(shí)就保持原工作服務(wù)器繼續(xù)運(yùn)行,。反之,,如果在規(guī)定的檢測(cè)次數(shù)中檢測(cè)到后援服務(wù)器到達(dá)可以工作的狀態(tài),就接著如下步驟運(yùn)行,。
5)仲裁器向后援服務(wù)器發(fā)送啟動(dòng)同步的命令,,后援服務(wù)器收到該命令后就通過(guò)串行口向仲裁器發(fā)送同步請(qǐng)求。
6)仲裁器收到后援服務(wù)器的同步請(qǐng)求后,,就從硬盤(pán)中讀取同步信息并發(fā)送給后援服務(wù)器,,后援服務(wù)器收到后就根據(jù)同步信息執(zhí)行同步操作(這里是運(yùn)行操作數(shù)據(jù)庫(kù)的SQL語(yǔ)句)。
7)當(dāng)同步工作完成后,,后援服務(wù)器就給仲裁器發(fā)送同步完成的消息,,仲裁器收到該消息后,就分別向兩臺(tái)服務(wù)器發(fā)送網(wǎng)絡(luò)配置信息(如:IP地址等),,以便命令各個(gè)服務(wù)器修改自己的網(wǎng)絡(luò)配置,。
8)此時(shí)后援服務(wù)器已經(jīng)成為工作服務(wù)器了,仲裁器向原工作服務(wù)器發(fā)送關(guān)機(jī)命令,,以便關(guān)閉原工作服務(wù)器使之成為后援服務(wù)器,。
整個(gè)過(guò)程到此為止,以后就反復(fù)上述過(guò)程運(yùn)行整個(gè)系統(tǒng),,該系統(tǒng)的整體框架如圖1所示:
圖1 系統(tǒng)整體框架圖
圖1是工作服務(wù)器未發(fā)生故障時(shí)的流程,。實(shí)際上,在工作服務(wù)器工作期間,,仲裁器會(huì)在一定的時(shí)間間隔(這個(gè)時(shí)間間隔可以通過(guò)仲裁器設(shè)置,,如系統(tǒng)要求的實(shí)時(shí)性較高,該間隔就要設(shè)置短一些,;反之,,設(shè)置長(zhǎng)一些)內(nèi)查詢(xún)服務(wù)器的狀態(tài),從而得知服務(wù)器是否發(fā)生故障,如果發(fā)生故障,,仲裁器就報(bào)警提示用戶(hù),,并且此時(shí)仲裁器啟動(dòng)后援服務(wù)器。當(dāng)仲裁器檢測(cè)到后援服務(wù)器可以工作時(shí),,就從硬盤(pán)上獲取同步信息進(jìn)行后援服務(wù)器的同步工作,。
4 智能容錯(cuò)系統(tǒng)具體實(shí)現(xiàn)思想
4.1 硬件設(shè)計(jì)思想
本文討論的智能容錯(cuò)系統(tǒng),主要使用FPGA芯片,,利用Nios軟核處理器強(qiáng)大的功能定制出一個(gè)滿足我們實(shí)際需要的SOC(系統(tǒng)級(jí)芯片),,并使用該芯片與相關(guān)的外圍電路以及配合一定的軟件設(shè)計(jì),實(shí)現(xiàn)了一個(gè)智能仲裁器,,其原理框圖[5]如圖2所示:
圖2 仲裁器的原理圖
下面對(duì)上述原理圖進(jìn)行簡(jiǎn)單的介紹:
1)通用IO口PIO1只是當(dāng)作輸出口使用,,用于控制連接/斷開(kāi)服務(wù)器電源的兩個(gè)繼電器、表示服務(wù)器狀態(tài)的雙色發(fā)光二極管(紅綠兩種顏色)和用于顯示時(shí)間間隔(用于決定多長(zhǎng)時(shí)間檢測(cè)服務(wù)器的狀態(tài))等級(jí)的一位八段數(shù)碼管,。LED1,、LED2分別用于指示兩臺(tái)服務(wù)器的工作狀態(tài),綠色表示對(duì)應(yīng)服務(wù)器正在工作,;紅色表示對(duì)應(yīng)服務(wù)器停止工作,;紅色閃爍表示對(duì)應(yīng)服務(wù)器發(fā)生故障,此時(shí)蜂鳴器會(huì)發(fā)出報(bào)警聲音,。上圖中沒(méi)有畫(huà)出相應(yīng)的驅(qū)動(dòng)電路[7]。PIO1共占16位,,高八位用于控制八段數(shù)碼管,;0~3位用于控制兩個(gè)雙色發(fā)光二極管;4~5位用于控制兩個(gè)繼電器,;6位用于控制蜂鳴器,。
2)通用IO口PIO2只是當(dāng)作輸入口使用,用于接受仲裁器上的控制按鍵,。仲裁器上的SWA,、SWB及SWL分別表示開(kāi)啟A服務(wù)器、開(kāi)啟B服務(wù)器及設(shè)置時(shí)間間隔等級(jí)的按鍵,。SWA和SWB是開(kāi)關(guān)型按鍵,,即:按一下開(kāi),再按一下就關(guān),。SWL按鍵從0~9循環(huán)改變時(shí)間間隔的等級(jí),,并在八段數(shù)碼管上顯示等級(jí)。
3)IDE接口控制器是自定義用戶(hù)邏輯,,用于訪問(wèn)與仲裁器連接的IDE硬盤(pán),。
4)Timer1定時(shí)器用于控制各臺(tái)服務(wù)器的工作時(shí)間以及定時(shí)查詢(xún)服務(wù)器的工作狀態(tài)的,該定時(shí)器采用中斷方式工作。
5)Flash控制器,,這里指的是CFI(Common Flash Interface)控制器,,只要支持CFI命令的Flash都可以連接到該系統(tǒng)上。此處用于連接片外的16MB閃存,,以便于存儲(chǔ)用戶(hù)程序和相關(guān)數(shù)據(jù),。在該仲裁器中,F(xiàn)lash的開(kāi)始處保存Boot Loader,,在系統(tǒng)啟動(dòng)時(shí),,它把用戶(hù)程序復(fù)制到SDRAM中運(yùn)行,這樣可以提高系統(tǒng)效率,。
6)SDRAM控制器,,用于連接片外64MB同步動(dòng)態(tài)隨機(jī)訪問(wèn)存儲(chǔ)器,以便于為程序提供運(yùn)行環(huán)境,。
7)UART0和UART1通過(guò)電平轉(zhuǎn)換芯片(MAX3232)轉(zhuǎn)換成RS-232電平以便與服務(wù)器通過(guò)串口通信,。
8)WD Timer定時(shí)器,在這里作為看門(mén)狗定時(shí)器使用,,以便提高仲裁器的可靠性,,在仲裁器中運(yùn)行的程序出現(xiàn)故障時(shí),它給系統(tǒng)提供復(fù)位信號(hào),。
該系統(tǒng)是使用Quartus II進(jìn)行硬件設(shè)計(jì)的,,用其中的SOPC Builder工具[4]進(jìn)行Avalon架構(gòu)設(shè)計(jì),圖3是仲裁器的Avalon架構(gòu)的設(shè)計(jì)最終界面,。由于篇幅有限,,此處僅提供UART0、UART1和IDE硬盤(pán)相關(guān)的部分原理圖,,如圖4所示,。
圖3 SOPC Builder設(shè)計(jì)界面
圖4 部分原理圖
4.2 軟件設(shè)計(jì)思想
以上主要介紹了硬件部分的設(shè)計(jì)思想,下面簡(jiǎn)單描述一下軟件開(kāi)發(fā)的相關(guān)思想,。該仲裁器的軟件開(kāi)發(fā)使用Nios IDE[6](Nios集成開(kāi)發(fā)環(huán)境),,主要包括如下模塊:
1)狀態(tài)獲取模塊:該模塊被Timer1定時(shí)器中斷例程定期調(diào)用,主要用于獲取服務(wù)器的當(dāng)前狀態(tài),,其設(shè)計(jì)流程如圖5所示:
圖5 狀態(tài)獲取模塊流程
2)顯示模塊:用于輸出用戶(hù)關(guān)心的信息,,如根據(jù)服務(wù)器的狀態(tài)用不同顏色點(diǎn)亮雙色發(fā)光二極管、顯示當(dāng)前時(shí)間間隔等級(jí)以及控制蜂鳴器報(bào)警,。
3)通訊模塊:主要用于與服務(wù)器進(jìn)行通訊,,以便給服務(wù)器發(fā)送命令以及獲得工作服務(wù)器的同步信息并把同步信息寫(xiě)入硬盤(pán)中。
4)按鍵處理模塊:用于處理用戶(hù)按鍵,,根據(jù)不同的按鍵進(jìn)行不同的控制,,如:開(kāi)/關(guān)繼電器以及設(shè)置時(shí)間間隔等級(jí),。
5)硬盤(pán)訪問(wèn)模塊:用于提供對(duì)硬盤(pán)進(jìn)行讀寫(xiě)操作的函數(shù),以便需要操作硬盤(pán)的模塊調(diào)用,。
6)讀寫(xiě)Flash的模塊:用于讀取/修改仲裁器的相關(guān)參數(shù),,如:各服務(wù)器運(yùn)行時(shí)間,檢測(cè)服務(wù)器狀態(tài)的時(shí)間間隔等,。
5 結(jié) 論
本文提出的軟硬件設(shè)計(jì)思想經(jīng)實(shí)踐證明是可行的,,并且在實(shí)際的系統(tǒng)中工作良好。該思想可以進(jìn)一步推廣到多機(jī)容錯(cuò)系統(tǒng)中,。在多機(jī)系統(tǒng)中,,我們?cè)诙ㄖ坪酶髋_(tái)機(jī)器的工作計(jì)劃后,就可以利用本文提到的給每臺(tái)服務(wù)器一個(gè)計(jì)劃運(yùn)行時(shí)間這一思想來(lái)解決實(shí)際問(wèn)題,。另外,,使用Nios軟核處理器,可以定制很多的UART口,,這一點(diǎn)就遠(yuǎn)遠(yuǎn)優(yōu)于需要擴(kuò)展串口電路的普通單片機(jī),,從而在硬件設(shè)計(jì)和軟件設(shè)計(jì)上大大降低了難度。
本文作者創(chuàng)新點(diǎn):1) 采用SOC(系統(tǒng)級(jí)芯片)設(shè)計(jì)出溫備份高速仲裁器,。2) 將同步信息放到了仲裁器中,。這樣,所有同步信息就不依賴(lài)于工作設(shè)備(如PC機(jī)),,所以即使工作設(shè)備出現(xiàn)故障也無(wú)妨,,這樣就大大提高了系統(tǒng)的可靠性。3) 能夠?qū)ぷ髟O(shè)備進(jìn)行計(jì)劃定制,,傳統(tǒng)的溫備份仲裁器沒(méi)有這一功能,。
參考文獻(xiàn)
[1] 王仲生.智能故障診斷與容錯(cuò)控制[M].西安:西北工業(yè)大學(xué)出版社,2005,。
[2] 潘松,黃繼業(yè),,曾毓.SOPC技術(shù)實(shí)用教程[M].北京:清華大學(xué)出版社,,2005。
[3] 宋保維,,系統(tǒng)可靠性設(shè)計(jì)與分析.西安:西北工業(yè)大學(xué)出版社,,2000。
[4] Sylvain Poussier, Hassan Rabah, Serge Weber.SOPC-based Embedded Smart Strain Gage Sensor. Lecture Notes in Computer Science[J],2002,2438:1131-1132,。
[5] 徐光輝,,程?hào)|旭等.基于FPGA的嵌入式開(kāi)發(fā)與應(yīng)用[M].北京:電子工業(yè)出版社,2006,。
[6] 郭書(shū)軍,,王玉花,, 葛紉秋.嵌入式處理器原理及應(yīng)用——Nios系統(tǒng)設(shè)計(jì)和C語(yǔ)言編程[M].北京:清華大學(xué)出版社,2004,。
[7] 沙占友,,孟志永,王彥朋.單片機(jī)外圍電路設(shè)計(jì)(第2版)[M].北京:電子工業(yè)出版社,,2006,。
[8] 王俊卿,楊揚(yáng),,劉慶文.基于NIOS軟核處理器的uClinux的移植[J].微計(jì)算機(jī)信息,,2005,21-1:123-124,?! ?/p>