杜 明 張于燕 劉玉蘭
(中國電子科技集團(tuán)公司第五十四研究所河北石家莊050081)
數(shù)據(jù)信息是當(dāng)今社會進(jìn)步和發(fā)展的關(guān)鍵,面對日益龐大的計算機(jī)網(wǎng)絡(luò),用戶的要求是網(wǎng)絡(luò)能夠可靠和高速。隨著測控網(wǎng)絡(luò)系統(tǒng)的廣泛應(yīng)用,用于完成對設(shè)備的遙控、遙測、跟蹤定位及傳輸傳感器信息的測控系統(tǒng)[1],其穩(wěn)定性在未來的信息化戰(zhàn)爭中扮演越來越重要的角色。因此設(shè)計和開發(fā)雙機(jī)備份技術(shù)適應(yīng)高穩(wěn)定的測控網(wǎng)絡(luò)系統(tǒng),就顯得尤為重要。雙機(jī)備份是一種軟硬件結(jié)合的較高的容錯應(yīng)用方案。雙機(jī)備份方案中,根據(jù)性質(zhì)和需要可以由3種不同的工作模式:即雙機(jī)熱備模式。雙機(jī)互備模式和雙機(jī)雙工模式。在這3種模式采用的是基于小規(guī)模網(wǎng)絡(luò)最為常用的雙機(jī)備份模式。雙機(jī)備份模式的引入,極大的提高了測控系統(tǒng)的可靠性與安全性[2]。
雙機(jī)備份軟件主要分布在主計算機(jī)和備用計算機(jī)上,同時和GCS的地面測控軟件組成,系統(tǒng)組成如圖1所示。主計算機(jī)與備計算機(jī)同時和GCS測控軟件進(jìn)行網(wǎng)絡(luò)連接,主機(jī)與備機(jī)通過心跳包連接進(jìn)行仲裁,同一時刻只能由一臺計算機(jī)的軟件來控制GCS的測控軟件。
圖1 雙機(jī)備份軟件系統(tǒng)示意圖
雙機(jī)備份軟件的設(shè)計準(zhǔn)則是:
①只有主機(jī)軟件才能與GCS測控軟件進(jìn)行連接發(fā)送指令,接收設(shè)備遙測狀態(tài)信息;
②同一時刻只能有一臺主機(jī)軟件出現(xiàn)[3];
③人在回路,特殊情況可以人工強(qiáng)制切換,切換準(zhǔn)則參考主機(jī)軟件發(fā)令和主機(jī)軟件唯一的準(zhǔn)則。
雙機(jī)備份系統(tǒng)的主要功能是確保系統(tǒng)的不間斷運(yùn)行[4],其主要分為:啟動優(yōu)先原則,雙機(jī)中先啟動是主機(jī),后啟動者為備機(jī);互檢互顯,主備機(jī)能夠互相檢測連接狀態(tài),并同時發(fā)送自身運(yùn)行狀態(tài),當(dāng)檢測到本機(jī)故障時給予提示信息,以便于人工切換;主備切換,當(dāng)備機(jī)在網(wǎng)絡(luò)監(jiān)測周期3 s內(nèi)未發(fā)現(xiàn)主機(jī)信息時自動提升到主機(jī)狀態(tài)。人工切換,特殊情況時可人工介入進(jìn)行強(qiáng)制切換,確保設(shè)備安全。
雙機(jī)備份軟件根據(jù)軟件功能分為啟動仲裁軟件單元、心跳檢驗(yàn)軟件單元、主備切換軟件單元和強(qiáng)制切換軟件單元,軟件單元組成如圖2所示。
圖2 雙機(jī)備份軟件單元功能示意圖
雙機(jī)備份軟件是在Visual C++6.0編程環(huán)境下結(jié)合GCS地面站測控軟件來進(jìn)行開發(fā)的,各個軟件單元所完成的功能都是通過調(diào)用C++語言中的類來實(shí)現(xiàn),硬件接口為網(wǎng)絡(luò)接口。
雙機(jī)備份軟件首先根據(jù)配置文件和計算機(jī)網(wǎng)絡(luò)地址初始化通信端口并且進(jìn)行A、B機(jī)辨別。
/*初始化端口*/
m_Link_UDP.Init (m_HBControlPara.m_pLocalIP,m_HBControlPara.m_pPeerIP,m_HBControlPara.m_uLocalPort,m_HBControlPara.m_uPeerPort);
m_Link_Async.Init(m_HBControlPara.m_pLocalCom);
m_uTimeOut=g_HBControlPara.m_uMaxTickCount;//初始化節(jié)點(diǎn)
m_Link_UDP.m_pParent=this;m_Link_Async.m_pParent=this;
啟動仲裁單元初始化要素,如表1所示。
表1主備切換主要單元數(shù)據(jù)表
程序啟動完畢后系統(tǒng)根據(jù)配置文件辨別A、B機(jī),心跳檢驗(yàn)軟件單元開始創(chuàng)建網(wǎng)絡(luò)接收心跳線程,當(dāng)在網(wǎng)絡(luò)上3 s內(nèi)為發(fā)現(xiàn)有主機(jī)發(fā)送心跳信息時,依據(jù)設(shè)計準(zhǔn)則將自己提升為主機(jī),并通過網(wǎng)絡(luò)向其他設(shè)備發(fā)送主機(jī)的心跳信息;如果啟動發(fā)現(xiàn)能接收到網(wǎng)絡(luò)其他設(shè)備發(fā)來的主機(jī)心跳信息,依據(jù)設(shè)計準(zhǔn)則認(rèn)為主機(jī)存在,將自己創(chuàng)建為備機(jī),成為備機(jī)如果有3 s檢測不到主機(jī)發(fā)送的心跳信息,便依據(jù)設(shè)計準(zhǔn)則將自己提升為主機(jī),雙機(jī)備份軟件處理流程如圖3所示。
圖3 雙機(jī)備份軟件處理流程圖
接收用戶對主備機(jī)的選擇,然后根據(jù)選擇結(jié)果向其他席位軟件發(fā)出主備消息,通過消息參數(shù)傳遞主備信息。通過網(wǎng)絡(luò)信息實(shí)時接收本席位其他軟件的主備狀態(tài)信息進(jìn)行狀態(tài)顯示,主備切換本機(jī)主備狀態(tài)發(fā)生改變時,通過網(wǎng)絡(luò)信息觸發(fā)本席位其他軟件改變當(dāng)前主備機(jī)狀態(tài)。與其他軟件通信狀態(tài)只有正常、故障和未知3種狀態(tài),設(shè)計函數(shù)模型如下:
int GetPeerStatus()
{
if(!m_PeerOnline)//正常再線狀態(tài)
return 0;
if(m_PeerStatus)//故障狀態(tài)
return 1;
else
return-1;//未知狀態(tài)
}
主備切換軟件根據(jù)計算機(jī)的本機(jī)網(wǎng)絡(luò)地址和配置信息辨別自己的主備狀態(tài),工作流程是:根據(jù)主備機(jī)信息辨別本機(jī)是發(fā)令軟件或受令軟件,發(fā)令軟件發(fā)送控制命令,改變雙機(jī)備份軟件和本機(jī)其他軟件主備狀態(tài),受令軟件在遠(yuǎn)方接收控制命令,改變雙機(jī)備份軟件和本機(jī)其他軟件的主備狀態(tài)。
強(qiáng)制切換軟件單元是指在遇到特殊情況下,依據(jù)設(shè)計準(zhǔn)則,可以手動地切換到對應(yīng)的非故障系統(tǒng)[5],人工干預(yù)將2臺計算機(jī)一臺設(shè)為主機(jī),一臺設(shè)為備機(jī)。主備切換示意圖如圖4所示。
圖4 主備切換示意圖
在強(qiáng)制切換模式下,程序均不在響應(yīng)遠(yuǎn)程網(wǎng)絡(luò)設(shè)置,此功能就是由操作人員強(qiáng)制軟件產(chǎn)生一臺主機(jī)和一臺備機(jī),或遇到特殊環(huán)境,可以產(chǎn)生2臺備機(jī),切斷與測控設(shè)備的實(shí)時通信。模型如下:
SwitchMain();//強(qiáng)制升為主機(jī)的函數(shù)
SwitchCopy();//強(qiáng)制降為備機(jī)的函數(shù)
if(f_pApp->m_uSwitchMode==1)//手動切換模式下不響應(yīng)心跳模塊的狀態(tài)判斷return;
目前設(shè)計的雙機(jī)備份的軟件在一些測控網(wǎng)絡(luò)系統(tǒng)中開始實(shí)驗(yàn)并應(yīng)用,實(shí)驗(yàn)證明雙機(jī)備份是解決由軟硬件故障引起的可靠性降低的有效措施高,是提高測控網(wǎng)絡(luò)安全性和可靠性的有力保障。當(dāng)前根據(jù)系統(tǒng)設(shè)計在自動模式下,軟件可以達(dá)到顯示18種狀態(tài)圖,這里不在逐一顯示。分別顯示了雙機(jī)備份軟件在系統(tǒng)應(yīng)用時的2種狀態(tài),如圖5和圖6所示。
圖5 主機(jī)軟件顯示狀態(tài)示意圖
圖6 備機(jī)軟件顯示狀態(tài)示意圖
本文給出了雙機(jī)備份軟件在測控網(wǎng)絡(luò)系統(tǒng)的實(shí)現(xiàn)和設(shè)計方法,該技術(shù)較為成熟、操作簡單和成本相對較低,具有安裝維護(hù)簡單、穩(wěn)定可靠和監(jiān)測直觀等優(yōu)點(diǎn)。在測控軟件中,往往對設(shè)備的可靠性要求很高,需要設(shè)備能夠長期不間斷地可靠運(yùn)行,因此設(shè)備的可靠性設(shè)計是設(shè)備開發(fā)的關(guān)鍵內(nèi)容,也是保障設(shè)備可用性的重要環(huán)節(jié)。雙機(jī)備份技術(shù)保證了測控系統(tǒng)在異常狀態(tài)下的快速恢復(fù)能力,能有效的提高裝備的生存能力,雙機(jī)備份技術(shù)在測控網(wǎng)絡(luò)保障中將會得到了廣泛的應(yīng)用[6]。
[1]鄧宏宇,王立夫.外軍無人機(jī)數(shù)據(jù)鏈發(fā)展及趨勢[J].艦船電子工程,2011,11(3):15-17.
[2]賈文濤.高可靠性在雙機(jī)備份系統(tǒng)的設(shè)計與評估[D].國防科大碩士論文,2010(11):1-67.
[3]唐永林.監(jiān)控管理中雙機(jī)備份技術(shù)研究[J].計算機(jī)與網(wǎng)絡(luò),2008,5(13):37-42.
[4]徐立云,邵惠鶴.一種雙機(jī)備份系統(tǒng)的軟實(shí)現(xiàn)[J].測控技術(shù),2000,19(8):43-44.
[5]陳 寶,高仲輝,郝立勇.機(jī)場多普勒天氣雷達(dá)雙機(jī)備份技術(shù)及可靠性分析[J].成都信息工程學(xué)院報,2012,27(3):247-252.
[6]楊玲,黃海,侯穎.基于分布存儲的嵌入式系統(tǒng)雙機(jī)備份設(shè)計[J].計算機(jī)與現(xiàn)代化,2007,2(2):16-21.