專利名稱:多機容錯系統主機判別方法
技術領域:
本發明涉及一種計算機自動控制技術,尤其是城市軌道交通控制系統中的多機系統中主機的判別方法,具體地說是一種多機容錯系統主機判別方法。
背景技術:
眾所周知,在一些涉及重大人身和設備安全的自動控制系統領域,要求系統具有極高的可靠性,并且要求系統不僅在正常工作時保證系統安全,而且必須在發生故障時確保系統由故障導向安全。為此,基于容錯技術的高可靠性、高安全性多機容錯系統應運而生。在這些多機容錯系統中,處理多機間運算關系的方法有兩種方式一種方式是多機之間處于相互平等的關系,通過鎖步模式協同工作或者由第三方設備對輸出結果進行比較;但無論采用哪種模式,該種方式都需要添加額外的硬件來維持多機之間的同步關系;另一種方式是設立一臺主機,由主機協調處理多機之間的同步等相互關系。這種方式多機資源統一由主機進行管理,多機之間協同工作較為容易實現,但一旦指定的主機發生故障,則其它處理單元則無法自動替代已有主機協調多機之間的協同工作,其可靠性相對較低。
發明內容
本發明的目的是針對現有的多機系統中需要硬件來實現主機的判別及確定的問題,發明一種無需添加硬件即實現主機的自動設定的多機容錯系統主機判別方法。
本發明的技術方案是一種多機容錯系統主機判別方法,其特征是首先,在多機系統的每個處理單元中設置一張相同格式的多機狀態記錄表,該多機狀態記錄表至少應包括與之通訊的處理單元的數量、主機狀態記錄內容,該多機狀態記錄表不僅記錄自身處理單元的當前狀態,而且記錄多機系統中所有其他處理單元的當前狀態,并在與其它處理單元進行通訊時將該多機狀態記錄表作為數據包附件發送出去;其次,當任一處理單元的狀態發生變化時,即刻將其變化信息寫入多機狀態記錄表;而其他處理單元的狀態則由通訊模塊在接收數據時,根據數據包附帶的發送方的狀態記錄表信息實時更新;第三,由各處理單元中安裝有狀態判別模塊定時分析狀態記錄表,檢查狀態記錄表中的信息變化,并根據以下原則結合狀態變化及時調整自身處理單元為主機或非主機的狀態系統剛剛上線時,首先設置自身主機狀態為非主機狀態;并定期檢測多機狀態記錄表;如自己是在線的唯一一臺處理單元,則等待其他處理單元上線;有一個以上的處理單元同時在線時,則根據多機狀態記錄表中記錄的數據判斷當前在線處理單元中是否已經有主機,如果有則繼續保持自身非主機狀態,如果沒有,則判斷自身是否具備成為主機的條件,如自身運行狀態正常,數據接收狀況良好,具備成為主機的條件則將自身設置為主機,否則繼續保持自身非主機狀態;如果檢測到在線處理單元中已有一個成為主機,且自身也為主機狀態,則說明產生主機沖突,此時自動將自身設置為非主機狀態,并等待下一個主機狀態檢測周期的到來,在下一個檢測周期重新進行檢測。
所述的多機狀態記錄表的行數和列數與系統中的處理單元的數量相等。
本發明的有益效果本發明利用處理單元本身所具備的功能,通過對記錄信息的分析與判斷,解決了多機之間的主機篩選與確定問題,同時本發明無需增加任何輸入輸出單元等硬件設備,并且具有極強的可移植性。
圖1是本發明實施例的三機容錯系統的主機判別用狀態記錄表描述;
圖2是本發明實施例的三機容錯系統中只有一臺在線處理單元時的主機判別用狀態記錄表中記錄的數據;圖3是本發明實施例的三機容錯系統中僅有二臺在線處理單元時的主機判別用狀態記錄表中記錄的數據;圖4是本發明實施例的三機容錯系統中三臺處理單元均在線且通訊正常時的主機判別用狀態記錄表中記錄的數據;圖5是本發明實施例的三機容錯系統中三臺處理單元均在線且有一路通訊鏈路出現故障時的主機判別用狀態記錄表中記錄的數據。
具體實施例方式
下面結合附圖和實施例對本發明作進一步的說明。
如圖1-5所示。
一種三機容錯系統主機判別方法,假定三機容錯系統處理單元分別為A、B、C機。相互具有連接鏈路的處理單元設定為伙伴單元。本發明提出的多機容錯系統的主機判別方法在每個處理單元中維護如圖1所示的狀態記錄表。其中第一行記錄系統自身狀態如自身處理單元判斷的在線單元數,自身主機狀態。第二行記錄第一個伙伴單元(定義為B機)的狀態如從B機接收到的B機在線單元數(由B機判斷得出)、從C機接收到的B機在線單元數(由B機判斷得出,并通過BC間的通訊通道傳給C機并保存在C機狀態記錄表中)、以及從B機接收到的B機當前主機狀態。第三行記錄第二個伙伴單元(定義為C機)的狀態如從C機接收到的C機在線單元數(由C機判斷得出)、從B機接收到的C機在線單元數(由C機判斷得出,并通過BC間的通訊通道傳給B機并保存在B機狀態記錄表中)、以及從C機接收到的C機當前主機狀態。
當A機是唯一在線處理單元時狀態記錄單元如圖2所示自身檢測的在線單元數量為1,從伙伴單元獲得的狀態信息均為0(未知)。此時由于A機是唯一在線處理單元,沒有設定主機的必要,因此,自身主機狀態仍然設為0(非主機狀態)。
當存在兩個在線處理單元時(以AB兩個處理單元在線為例),A機的狀態記錄單元如圖3所示第一行自身檢測的在線單元數量為2。第二行從B機接收到的B機在線單元數為2、從C機接收到的B機在線單元數為0(未知)。第三行從C機接收到的C機在線單元數為0、從B機接收到的C機在線單元數為0、以及從C機接收到的C機當前主機狀態為0。此時,自身檢測的在線單元數量與從B機接收到的B機在線單元數相等。表明當前系統中確實只有兩個處理單元在線。此時,如果第二行的從B機接收到的B機當前主機狀態如果為0,表明B機尚未成為主機,而同時A機自身尚未成主機,則A機目前已具備了成為主機的條件,狀態檢測模塊會將A機設為主機。如果第二行的從B機接收到的B機當前主機狀態為1,說明此時B機已經成為主機,而同時A機自身是非主機,則繼續保持非主機狀態,如果A機自身也為主機狀態,則說明出現了主機沖突。則狀態檢測模塊將A機自身設為非主機,并等待下一個狀態檢測周期重新判斷主機狀態。
當存在三個在線處理單元時(ABC三個單元均在線),A機的狀態記錄單元如圖4所示第一行自身檢測的在線單元數量為3。第二行從B機接收到的B機在線單元數為3、從C機接收到的B機在線單元數為3、從B機接收到的B機當前主機狀態為0。第三行從C機接收到的C機在線單元數為3、從B機接收到的C機在線單元數為3、以及從C機接收到的C機當前主機狀態為0。此時,每個直接或間接獲得的在線單元數均相等。表明當前系統中確實三個處理單元均在線。此時,如果第二行的從B機接收到的B機當前主機狀態以及第三行的從C機接收到的C機當前主機狀態均為0,表明BC兩機均未成為主機,而同時A機自身尚未成主機。則A機目前已具備了成為主機的條件,狀態檢測模塊會將A機設為主機。如果第二行的從B機接收到的B機當前主機狀態為1,或者第三行的從C機接收到的C機當前主機狀態為1,說明B機或C機已經成為主機,而同時A機自身是非主機,則繼續保持非主機狀態,如果A機自身也為主機狀態,則說明出現了主機沖突。則狀態檢測模塊將A機自身設為非主機,并等待下一個狀態檢測周期重新判斷主機狀態。
當存在三個在線處理單元時且存在通訊故障時(以ABC三個單元均在線,且AB通訊故障為例),A機的狀態記錄單元如圖5所示第一行自身檢測的在線單元數量為2。第二行從B機接收到的B機在線單元數為0、從C機接收到的B機在線單元數為2、從B機接收到的B機當前主機狀態為0。第三行從C機接收到的C機在線單元數為3、從B機接收到的C機在線單元數為0、以及從C機接收到的C機當前主機狀態為0。此時,由于自身檢測的在線單元數量與從C機接收到的C機在線單元數不相等。說明系統中存在通訊故障,則此時,狀態檢測模塊發出報警信息。等待操作員介入處理故障。
權利要求
1.一種多機容錯系統主機判別方法,其特征是首先,在多機系統的每個處理單元中設置一張相同格式的多機狀態記錄表,該多機狀態記錄表至少應包括與之通訊的處理單元的數量、主機狀態記錄內容,該多機狀態記錄表不僅記錄自身處理單元的當前狀態,而且記錄多機系統中所有其他處理單元的當前狀態,并在與其它處理單元進行通訊時將該多機狀態記錄表作為數據包附件發送出去;其次,當任一處理單元的狀態發生變化時,即刻將其變化信息寫入多機狀態記錄表;而其他處理單元的狀態則由通訊模塊在接收數據時,根據數據包附帶的發送方的狀態記錄表信息實時更新;第三,由各處理單元中安裝有狀態判別模塊定時分析狀態記錄表,檢查狀態記錄表中的信息變化,并根據以下原則結合狀態變化及時調整自身處理單元為主機或非主機的狀態系統剛剛上線時,首先設置自身主機狀態為非主機狀態;并定期檢測多機狀態記錄表;如自己是在線的唯一一臺處理單元,則等待其他處理單元上線;有一個以上的處理單元同時在線時,則根據多機狀態記錄表中記錄的數據判斷當前在線處理單元中是否已經有主機,如果有則繼續保持自身非主機狀態,如果沒有,則判斷自身是否具備成為主機的條件,如自身運行狀態正常,數據接收狀況良好,具備成為主機的條件則將自身設置為主機,否則繼續保持自身非主機狀態;如果檢測到在線處理單元中已有一個成為主機,且自身也為主機狀態,則說明產生主機沖突,此時自動將自身設置為非主機狀態,并等待下一個主機狀態檢測周期的到來,在下一個檢測周期重新進行檢測。
2.根據權利要求1所述的一種多機容錯系統主機判別方法,其特征是所述的多機狀態記錄表的行數和列數與系統中的處理單元的數量相等。
全文摘要
本發明公開了一種實現多機容錯系統的主機判別方法,通過傳輸與記錄多機的狀態信息,并通過對記錄信息的分析與判斷的方法解決多機之間的主機篩選與確定問題,同時本方法無需增加任何輸入輸出單元等硬件設備,并且具有極強的可移植性。
文檔編號G06F11/07GK101078909SQ200710024558
公開日2007年11月28日 申請日期2007年6月22日 優先權日2007年6月22日
發明者陳文賽, 苗剛 申請人:南京恩瑞特實業有限公司