李華龍 張穎穎
摘要:隨著時(shí)代的發(fā)展,對(duì)于DCS系統(tǒng)的安全性和穩(wěn)定性要求也越來(lái)越高,由于DCS系統(tǒng)的結(jié)構(gòu)復(fù)雜繁多、運(yùn)行環(huán)境多樣,為了提升系統(tǒng)的安全可靠性,大部分DCS系統(tǒng)中都為關(guān)鍵設(shè)備配備了主備冗余機(jī)制,當(dāng)系統(tǒng)中的某個(gè)設(shè)備被診斷出故障時(shí),為了保證系統(tǒng)的正常運(yùn)行,可以根據(jù)故障情況進(jìn)行切換或重啟。
關(guān)鍵詞:主備冗余;故障診斷;可靠性
中圖分類(lèi)號(hào):TP391 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2019)12-0253-02
開(kāi)放科學(xué)(資源服務(wù))標(biāo)識(shí)碼(OSID):
1概述
在DCS系統(tǒng)中,關(guān)鍵設(shè)備(如服務(wù)器、控制器等)一般都采用主備冗余配置,當(dāng)一臺(tái)服務(wù)器出現(xiàn)掉電、關(guān)鍵進(jìn)程崩潰、網(wǎng)絡(luò)通訊中斷或手動(dòng)切換等情況時(shí),可以實(shí)現(xiàn)進(jìn)程重啟或主備切換。本文主要講述一種包含進(jìn)程PID監(jiān)控、健康值決策功能的冗余結(jié)構(gòu)設(shè)計(jì)和實(shí)現(xiàn)方法。
2冗余結(jié)構(gòu)設(shè)計(jì)與實(shí)現(xiàn)
本文描述冗余軟件分為三層:頂層為監(jiān)測(cè)層,監(jiān)測(cè)主機(jī)主備狀態(tài)、網(wǎng)絡(luò)狀態(tài)和進(jìn)程狀態(tài);中間層為決策層,根據(jù)主機(jī)和進(jìn)程狀態(tài),發(fā)布主備切換、進(jìn)程重啟或無(wú)動(dòng)作等命令;底層為執(zhí)行層,負(fù)責(zé)執(zhí)行主備切換或者進(jìn)程重啟動(dòng)作。
本軟件主要由9個(gè)進(jìn)程:主機(jī)監(jiān)測(cè)、網(wǎng)絡(luò)監(jiān)測(cè)、進(jìn)程診斷、進(jìn)程重啟、狀態(tài)同步、手動(dòng)切換、主備切換、決策判斷和守護(hù)進(jìn)程組成。冗余系統(tǒng)的軟件數(shù)據(jù)流圖如圖2:
2.1主機(jī)監(jiān)測(cè)功能
主機(jī)監(jiān)測(cè)功能負(fù)責(zé)在啟動(dòng)時(shí)確定本機(jī)的啟動(dòng)狀態(tài)以及在運(yùn)行時(shí)探測(cè)對(duì)等機(jī)是否存在。若本機(jī)以主機(jī)狀態(tài)啟動(dòng),主機(jī)監(jiān)測(cè)進(jìn)程將會(huì)先探測(cè)對(duì)等機(jī)的工作狀態(tài),若對(duì)等機(jī)存在且為主機(jī),則將本機(jī)工作狀態(tài)設(shè)置為備機(jī)。探測(cè)結(jié)束后,進(jìn)入心跳探測(cè)階段,監(jiān)視對(duì)等機(jī)是否存在,是否存在雙主沖突或雙備沖突。
2.2狀態(tài)同步功能
狀態(tài)同步功能指主備之間的狀態(tài)信息同步,主要包括兩部分內(nèi)容:發(fā)送狀態(tài)包,將本機(jī)狀態(tài)發(fā)送給對(duì)等機(jī);接收狀態(tài)包和狀態(tài)強(qiáng)制包,獲知對(duì)等機(jī)的狀態(tài)以及對(duì)等機(jī)發(fā)來(lái)的命令,在接收到狀態(tài)強(qiáng)制包后返回狀態(tài)強(qiáng)制包。
2.3進(jìn)程診斷功能
冗余管理進(jìn)程與被管理的應(yīng)用進(jìn)程通信,分為N個(gè)消息區(qū)域,由冗余管理進(jìn)程維護(hù)。應(yīng)用進(jìn)程1~N啟動(dòng)時(shí)向管理進(jìn)程注冊(cè),冗余管理進(jìn)程為其分配一個(gè)消息區(qū)域,進(jìn)程診斷模塊根據(jù)應(yīng)用進(jìn)程的PID在操作系統(tǒng)中查詢(xún)應(yīng)用進(jìn)程的狀態(tài),將狀態(tài)和健康值寫(xiě)入屬于本進(jìn)程的消息區(qū)域。決策進(jìn)程周期性查詢(xún)各應(yīng)用進(jìn)程的狀態(tài)和健康值。
2.4網(wǎng)絡(luò)監(jiān)控功能
服務(wù)器為了與其他節(jié)點(diǎn)進(jìn)行通信,均需要與網(wǎng)絡(luò)進(jìn)行連接。冗余服務(wù)會(huì)實(shí)時(shí)監(jiān)控本機(jī)的網(wǎng)絡(luò)連接狀態(tài),并將其存儲(chǔ)在特定的消息區(qū)域中,供決策進(jìn)程調(diào)用,由決策進(jìn)程根據(jù)網(wǎng)絡(luò)連接狀態(tài)來(lái)決定是否進(jìn)行主備切換。
2.5決策功能
決策制定功能在冗余服務(wù)中擔(dān)任決策者的角色,每隔一段時(shí)間會(huì)根據(jù)當(dāng)前主機(jī)狀態(tài)、對(duì)等機(jī)狀態(tài)、進(jìn)程健康值、主機(jī)命令、雙機(jī)監(jiān)控卡工作狀態(tài)、網(wǎng)絡(luò)狀態(tài)和強(qiáng)制命令進(jìn)行一次邏輯計(jì)算,并發(fā)布執(zhí)行不動(dòng)作、進(jìn)程重啟動(dòng)作、主備切換動(dòng)作。當(dāng)進(jìn)程崩潰或消失、或主機(jī)出現(xiàn)故障等情況是,主機(jī)的健康值會(huì)減少,為決策進(jìn)程提供參考。
2.6主備切換功能
主備切換過(guò)程中狀態(tài)的切換包含兩部分,一是主機(jī)狀態(tài)的切換,二是進(jìn)程狀態(tài)的切換。進(jìn)程的狀態(tài)的切換跟隨著主機(jī)狀態(tài)的切換,使得在主機(jī)狀態(tài)改變時(shí),每個(gè)應(yīng)用進(jìn)程能夠進(jìn)入相應(yīng)狀態(tài),進(jìn)行不同主機(jī)狀態(tài)下的相關(guān)處理。
2.7進(jìn)程重啟功能
冗余服務(wù)的一個(gè)重要功能就是重啟故障的被管理應(yīng)用進(jìn)程。該功能會(huì)循環(huán)掃描決策進(jìn)程發(fā)出的執(zhí)行動(dòng)作,如果該執(zhí)行動(dòng)作是重啟進(jìn)程,則獲取所有故障進(jìn)程信息,并重啟故障進(jìn)程。
2.8守護(hù)進(jìn)程
守護(hù)進(jìn)程監(jiān)控其余8個(gè)冗余管理模塊(主機(jī)監(jiān)測(cè)、狀態(tài)同步、主備切換、進(jìn)程診斷、進(jìn)程重啟、網(wǎng)絡(luò)監(jiān)控、硬冗余、決策制定),是冗余模塊的冗余。同時(shí)守護(hù)進(jìn)程也被納入被管理應(yīng)用進(jìn)程范圍內(nèi)。如果冗余管理的8個(gè)進(jìn)程中有進(jìn)程出現(xiàn)故障,守護(hù)進(jìn)程會(huì)重啟該故障進(jìn)程,如果守護(hù)進(jìn)程出現(xiàn)故障,冗余管理進(jìn)程也會(huì)重啟守護(hù)進(jìn)程。
2.9手動(dòng)切換
手動(dòng)切換功能利用狀態(tài)強(qiáng)制命令來(lái)實(shí)現(xiàn)主備狀態(tài)的切換或保持,不依賴(lài)于進(jìn)程或者主機(jī)的健康值。決策模塊在邏輯判斷中優(yōu)先根據(jù)強(qiáng)制命令決定是否進(jìn)行主備切換。狀態(tài)強(qiáng)制命令有6種:不強(qiáng)制、切為主機(jī)、切為備機(jī)、保持為主機(jī)、保持為備機(jī)、清除保持。
3結(jié)論
本文提出的冗余結(jié)構(gòu)設(shè)計(jì)與實(shí)現(xiàn)方法,并詳細(xì)描述了每個(gè)冗余功能以及實(shí)現(xiàn),該冗余系統(tǒng)已經(jīng)應(yīng)用在多個(gè)實(shí)際工程項(xiàng)目中,能夠在主服務(wù)器出現(xiàn)斷電、進(jìn)程崩潰、網(wǎng)絡(luò)通訊中斷或者手動(dòng)切換時(shí),實(shí)現(xiàn)進(jìn)程重啟和主備切換功能,切實(shí)提高工業(yè)冗余系統(tǒng)的安全行和可靠性,為DCS系統(tǒng)的安全、穩(wěn)定運(yùn)行保駕護(hù)航。
【通聯(lián)編輯:梁書(shū)】