陸 琦,郝 波,周學(xué)勛
(中車(chē)株洲電力機(jī)車(chē)研究所有限公司, 湖南 株洲 412001)
列車(chē)通信網(wǎng)絡(luò)主要用于列車(chē)控制、狀態(tài)監(jiān)視、故障診斷、車(chē)載信息服務(wù)及視頻監(jiān)控等方面的數(shù)據(jù)傳輸,是保證列車(chē)行車(chē)安全與提升軌道交通服務(wù)質(zhì)量水平的重要系統(tǒng)之一[1]。在機(jī)箱式結(jié)構(gòu)列車(chē)通信網(wǎng)絡(luò)系統(tǒng)中,主控板通過(guò)背板總線和IO子板進(jìn)行數(shù)據(jù)交互,實(shí)現(xiàn)數(shù)據(jù)的收集、分析、處理以及控制指令發(fā)送的功能[2];其作為整個(gè)系統(tǒng)的“大腦”,存在單點(diǎn)失效隱患,一旦發(fā)生故障,會(huì)引起整個(gè)系統(tǒng)失效甚至癱瘓,嚴(yán)重影響行車(chē)安全,因此可采用冗余主控板架構(gòu)來(lái)提高系統(tǒng)的可靠性。兩塊主控板互相監(jiān)測(cè)對(duì)方的狀態(tài),一旦工作中的主控板發(fā)生故障,備用主控板就能立刻接管整個(gè)系統(tǒng)的工作,實(shí)現(xiàn)快速無(wú)縫的切換[3-4]。雖然冗余主控板的架構(gòu)可用來(lái)提高系統(tǒng)的可靠性,但如果冗余主控板之間缺乏一種合理的競(jìng)爭(zhēng)以及切換機(jī)制的約束,反而會(huì)導(dǎo)致系統(tǒng)控制的混亂。因此,需要設(shè)計(jì)一種快速可靠的機(jī)制來(lái)保障系統(tǒng)運(yùn)行的正確性和可靠性[5-6]。
目前比較常規(guī)的切換方法是兩個(gè)互為冗余的處理器通過(guò)相應(yīng)的協(xié)議進(jìn)行互相監(jiān)視,比如監(jiān)視對(duì)方的心跳和狀態(tài)等[7]。但這種方法有一定的弊端:CPU的任務(wù)受資源占用和調(diào)度優(yōu)先級(jí)的影響,監(jiān)視程序有失效的風(fēng)險(xiǎn);實(shí)時(shí)性不強(qiáng),如需要進(jìn)行主備切換,切換時(shí)間過(guò)長(zhǎng),可能會(huì)出現(xiàn)短暫的系統(tǒng)紊亂現(xiàn)象。為了提高冗余系統(tǒng)的可靠性,本文提出一種基于可編程邏輯器件(complex programmable logic device,CPLD)實(shí)現(xiàn)主控冗余切換的機(jī)制,并進(jìn)行了相關(guān)的通信協(xié)議和切換狀態(tài)機(jī)的設(shè)計(jì)。由于CPLD具有可并行操作的特點(diǎn),相比CPU,其可實(shí)現(xiàn)異常情況下更快速的主控切換,實(shí)時(shí)性大幅提高,且平穩(wěn)的冗余切換機(jī)制不會(huì)帶來(lái)錯(cuò)誤切換、頻繁切換等問(wèn)題,提高了系統(tǒng)的可靠性。
冗余主控板架構(gòu)如圖1所示,兩塊主控板被分別插在機(jī)箱背板的不同槽位,并通過(guò)背板上硬線實(shí)現(xiàn)兩塊主控板CPLD的交叉連接。
圖1 主控板冗余示意圖Fig.1 Schematic diagram of main control redundancy
通過(guò)4根硬線可進(jìn)行冗余主控板之間的全雙工通信,一個(gè)主控板的輸出是另一個(gè)主控板的輸入,具體如表1所示。
表1 信號(hào)說(shuō)明Tab.1 Signal description
在冗余主控板之間設(shè)計(jì)一種通信協(xié)議,可將自身的狀態(tài)信息傳送給對(duì)方;對(duì)方主控板可接收此狀態(tài)信息,并與自身的狀態(tài)信息進(jìn)行比較。上電初始化時(shí),可抉擇出性能更好的主控板對(duì)系統(tǒng)進(jìn)行控制;運(yùn)行過(guò)程中,可判斷當(dāng)前工作的主控板是否出現(xiàn)故障,若有故障,則需進(jìn)行切換,由備用主控板接管系統(tǒng)。主控板的故障大致有以下幾種類(lèi)型:CPU啟動(dòng)異常、CPU生命信號(hào)異常和CPLD生命信號(hào)異常等。另外,也可根據(jù)實(shí)際需要,主動(dòng)進(jìn)行切換主控板的操作。圖2示出主控板冗余切換邏輯。
圖2 主控板冗余切邏輯Fig.2 Redundant logic of main control board
下面對(duì)整個(gè)主備切換過(guò)程進(jìn)行簡(jiǎn)單的邏輯梳理和說(shuō)明:
(1)主控板初始化爭(zhēng)主。兩塊主控板同時(shí)啟動(dòng),若初始化狀態(tài)都正常,則取槽位號(hào)小的主控板為工作主控板,槽位號(hào)大的為備用主控板;若槽位號(hào)小的主控板初始化狀態(tài)異常,則取槽位號(hào)大且狀態(tài)正常的主控板為工作主控板。
(2)工作主控板切主。工作主控板在運(yùn)行過(guò)程中一旦狀態(tài)異常,則隨即轉(zhuǎn)入錯(cuò)誤狀態(tài),放棄對(duì)整個(gè)系統(tǒng)的控制,并將自身狀態(tài)信息發(fā)送至備用主控板;即使之后狀態(tài)正常,其也只能先轉(zhuǎn)為備用主控板。
(3)備用主控板升主。當(dāng)備用主控板獲知工作主控板狀態(tài)異常后,若自身狀態(tài)正常,則立即由備用狀態(tài)轉(zhuǎn)為工作狀態(tài),接管整個(gè)系統(tǒng)。
冗余主控板之間狀態(tài)信息的傳輸。采用類(lèi)似串行外設(shè)接口(serial peripheral interface,SPI)的通信方式[8],通信數(shù)據(jù)幀結(jié)構(gòu)(圖3)包括幀頭、槽位號(hào)、CPLD生命信號(hào)、主備狀態(tài)和CRC校驗(yàn)[9],具體如下:
圖3 通信數(shù)據(jù)幀格式Fig.3 Communication data frame format
(1)幀頭,字節(jié)長(zhǎng)度為8 bit,用于實(shí)現(xiàn)數(shù)據(jù)幀的同步與識(shí)別。
(2)槽位號(hào),字節(jié)長(zhǎng)度為6 bit,為主控板槽位信息,同等條件下槽位號(hào)小的主控板優(yōu)先。
(3)生命信號(hào),字節(jié)長(zhǎng)度為7 bit,為CPLD生命信號(hào)。
(4)主備狀態(tài),字節(jié)長(zhǎng)度為3 bit,包括初始化狀態(tài)、工作主狀態(tài)、備用主狀態(tài)、錯(cuò)誤狀態(tài)等信息。
(5)CRC校驗(yàn),字節(jié)長(zhǎng)度為8 bit,用于數(shù)據(jù)校驗(yàn)。
冗余主控板之間的通信時(shí)序如圖4所示。其中,一根線傳輸時(shí)鐘信號(hào)(clk_out),另一根線傳輸數(shù)據(jù)信號(hào)(d_out);交叉連接之后,一塊主控板輸出的時(shí)鐘和數(shù)據(jù)信號(hào)能輸入另一塊主控板并被采集。發(fā)送數(shù)據(jù)時(shí),在時(shí)鐘的下降沿發(fā)送有效的數(shù)據(jù);接收數(shù)據(jù)時(shí),確保在時(shí)鐘的上升沿能采集到正確的有效數(shù)據(jù)[10]。數(shù)據(jù)以幀為單位被周期性地發(fā)送,傳輸周期可根據(jù)應(yīng)用需求進(jìn)行調(diào)整,從而實(shí)現(xiàn)快速無(wú)縫地切換。
圖4 通信時(shí)序示意圖Fig.4 Schematic diagram of communication sequences
兩塊主控板的切換機(jī)制非常重要,錯(cuò)誤切換、頻繁切換、過(guò)慢切換都會(huì)導(dǎo)致系統(tǒng)錯(cuò)誤,降低系統(tǒng)的安全性和可靠性。主備切換機(jī)制由CPLD內(nèi)所設(shè)計(jì)的狀態(tài)機(jī)實(shí)現(xiàn)[11-12]。根據(jù)冗余主控板的競(jìng)爭(zhēng)和切換條件,將整個(gè)狀態(tài)機(jī)流轉(zhuǎn)流程按以下幾種情況分別進(jìn)行闡述。
初始化分兩種情況:上電啟動(dòng)初始化和軟復(fù)位啟動(dòng)初始化。
當(dāng)兩塊主控板上電啟動(dòng)時(shí),其同時(shí)處于初始化狀態(tài)。若啟動(dòng)狀態(tài)都正常,取槽位號(hào)小的主控板為工作主控板,槽位號(hào)大的為備用主控板。若某個(gè)主控板啟動(dòng)狀態(tài)異常,則進(jìn)入故障狀態(tài),另外一塊正常啟動(dòng)的主控板為工作主控板。
某主控板軟復(fù)位重啟時(shí),初始化成功后則需判斷對(duì)方主控板狀態(tài):若對(duì)方已是工作主控板,則進(jìn)入備用主控板狀態(tài);若對(duì)方狀態(tài)異常,則升為工作主控板;若對(duì)方剛好也處于初始化狀態(tài),則參照上電啟動(dòng)進(jìn)行判斷。
初始化狀態(tài)機(jī)流轉(zhuǎn)流程如圖5所示,具體如下:
圖5 初始化狀態(tài)流轉(zhuǎn)示意圖Fig.5 Schematic diagram of the initialization state flow
(1)IDLE(初始化狀態(tài))。上電或軟件復(fù)位重啟時(shí),主控板處于初始化狀態(tài),不進(jìn)行控制和數(shù)據(jù)處理。若啟動(dòng)正常,進(jìn)入CPU_ON狀態(tài);否則,則進(jìn)入CPU_DOWN狀態(tài)。
(2)CPU_DOWN(CPU初始化異常狀態(tài))。該狀態(tài)下,主控板被置為錯(cuò)誤狀態(tài),并將此狀態(tài)信息發(fā)送至對(duì)方主控板;若之后CPU恢復(fù)正常,再轉(zhuǎn)入CPU_ON狀態(tài)。
(3)CPU_ON(CPU初始化正常狀態(tài))。該狀態(tài)下,若收到對(duì)方主控板發(fā)送的數(shù)據(jù),則進(jìn)入COMP狀態(tài);若長(zhǎng)時(shí)間未獲取對(duì)方主控板的狀態(tài)信息,則認(rèn)為對(duì)方主控板未插入或未正常工作,于是進(jìn)入MASTER狀態(tài)。
(4)COMP(比較狀態(tài))。該狀態(tài)下,系統(tǒng)首先通過(guò)幀頭和CRC校驗(yàn)信息判斷所接收的數(shù)據(jù)幀是否正確,若正確,則獲取對(duì)方的槽位號(hào)、CPLD生命信號(hào)及主備狀態(tài)等信息,并與自身狀態(tài)信息進(jìn)行比較。自身槽位號(hào)小,則優(yōu)先級(jí)高,如果對(duì)方已是工作主控板狀態(tài),則進(jìn)入備用主控板狀態(tài)(SLAVE);否則,進(jìn)入工作主控板狀態(tài)(MASTER)。若自身槽位號(hào)大,則優(yōu)先級(jí)低,當(dāng)且僅當(dāng)對(duì)方主控板的狀態(tài)為錯(cuò)誤時(shí),才進(jìn)入MASTER狀態(tài);否則,進(jìn)入SLAVE狀態(tài)。
若接收的數(shù)據(jù)幀不正確,為防止出現(xiàn)多主的情況,暫時(shí)還是會(huì)進(jìn)入SLAVE狀態(tài),等待下一幀數(shù)據(jù)的到來(lái),但會(huì)產(chǎn)生中斷告知處理器,兩個(gè)主控板之間的通信不可信,無(wú)法抉擇出工作主控板;若之后多次接收到的數(shù)據(jù)幀都不正確,則需通知上層應(yīng)用檢查硬件狀態(tài)。
(5)SLAVE狀態(tài)。該狀態(tài)下,備用主控板一直監(jiān)測(cè)自身以及工作主控板的狀態(tài)信息;若工作主控板有異常情況,則需要進(jìn)行升主操作。
(6)MASTER狀態(tài)。該狀態(tài)下,工作主控板接管整個(gè)系統(tǒng)的工作且需實(shí)時(shí)監(jiān)測(cè)自身的狀態(tài);若有異常,則要進(jìn)行切主操作。
主控板處于備用主控板狀態(tài)時(shí),需實(shí)時(shí)監(jiān)測(cè)自身以及工作主控板的狀態(tài)信息。若工作主控板有異常但自身正常,則需要進(jìn)行升主操作。備用主控板的狀態(tài)機(jī)流轉(zhuǎn)流程如圖6所示,具體如下:
圖6 備用主控板狀態(tài)流轉(zhuǎn)示意Fig.6 Schematic diagram of the slave state flow
(1)SLAVE狀態(tài)。當(dāng)監(jiān)測(cè)到SLAVE異常時(shí),進(jìn)入ERROR狀態(tài),并將此故障狀態(tài)信息發(fā)送至工作主控板;若長(zhǎng)時(shí)間未獲取工作主控板的狀態(tài)信息,則認(rèn)為工作主控板已掉電或異常,進(jìn)入MASTER狀態(tài);接收到工作主控板發(fā)送的數(shù)據(jù)后,進(jìn)入工作主控板狀態(tài)信息獲?。–OMP1)狀態(tài),獲取工作主控板的狀態(tài)信息。
(2)COMP1狀態(tài)。該狀態(tài)下,首先通過(guò)幀頭和CRC校驗(yàn)判斷所接收的幀是否正確,若正確,則獲取工作主控板的狀態(tài)信息。當(dāng)工作主控板的狀態(tài)為錯(cuò)誤時(shí),進(jìn)入MASTER狀態(tài);否則,進(jìn)入SLAVE狀態(tài)。若接收的數(shù)據(jù)幀不正確,為防止出現(xiàn)多主的情況,暫時(shí)還是會(huì)進(jìn)入SLAVE狀態(tài),等待下一幀數(shù)據(jù)的到來(lái),但是會(huì)產(chǎn)生中斷告知處理器,所接收到的數(shù)據(jù)幀不可信。若之后多次接收到的數(shù)據(jù)幀都不正確,則需通知上層應(yīng)用檢查硬件狀態(tài)。
(3)MASTER狀態(tài)。該狀態(tài)下,備用主控板作為工作主控板接管整個(gè)系統(tǒng)的工作。
(4)ERROR狀態(tài)。該狀態(tài)下,需將“狀態(tài)異?!毙畔⒏嬷ぷ髦骺匕?;當(dāng)狀態(tài)恢復(fù)正常后,隨即進(jìn)入SLAVE狀態(tài)。
主控板為工作主控板狀態(tài)時(shí),接管整個(gè)系統(tǒng)的工作。此時(shí)主設(shè)備需實(shí)時(shí)監(jiān)測(cè)自身的狀態(tài),且需接受應(yīng)用的切主指令,若自身狀態(tài)有異常或接收到切主指令,則要進(jìn)行切主操作。主狀態(tài)流轉(zhuǎn)流程如圖7所示,具體如下:
圖7 主狀態(tài)流轉(zhuǎn)示意圖Fig.7 Schematic diagram of the master state flow
(1)MASTER狀態(tài)。該狀態(tài)下,主控板接管整個(gè)系統(tǒng)的工作,當(dāng)自身狀態(tài)異常時(shí),進(jìn)入ERROR狀態(tài),并將此故障狀態(tài)發(fā)送至備用主控板;當(dāng)應(yīng)用出現(xiàn)切換指令時(shí),進(jìn)入切換狀態(tài)(SWITCH),并判斷備用主控板是否符合升主條件。
(2)SWITCH狀態(tài)。該狀態(tài)下,應(yīng)判斷SLAVE狀態(tài),若其正常,則進(jìn)入切主狀態(tài)(SW_S);若異常,則進(jìn)入保持主狀態(tài)(HOLD_MASTER)。
(3)HOLD_MASTER狀態(tài)。在得到應(yīng)用軟件切主指令后,發(fā)現(xiàn)SLAVE狀態(tài)異常,不滿(mǎn)足切換條件,需維持主狀態(tài),且告知應(yīng)用不具備切主條件,隨即進(jìn)入MASTER狀態(tài)。
(4)SW_S狀態(tài)。在得到應(yīng)用軟件的切主指令后,發(fā)現(xiàn)備用主控板狀態(tài)正常,滿(mǎn)足切主條件,在切換成功后隨即進(jìn)入SLAVE狀態(tài)。
(5)SLAVE狀態(tài)。此時(shí)工作主控板完成切主,處于SLAVE狀態(tài),并監(jiān)測(cè)新的工作主控板的狀態(tài)信息。
(6)ERROR狀態(tài)。此狀態(tài)下,主控板自身狀態(tài)異常且需通知備用主控板;當(dāng)自身狀態(tài)恢復(fù)正常后,隨即進(jìn)入SLAVE狀態(tài)。
由于數(shù)據(jù)幀的通信周期為亞毫秒級(jí)別,因此系統(tǒng)能快速地獲取、比較兩塊主控板的狀態(tài)信息,并在主控板故障時(shí)迅速實(shí)現(xiàn)冗余主控板的切換,做到無(wú)縫切換[8]。以上機(jī)制保證了上電初始狀態(tài)下主設(shè)備的正確競(jìng)爭(zhēng)以及故障或應(yīng)用切換條件下的有序安全的切換,大大提高了整個(gè)系統(tǒng)的安全性和可靠性。
功能仿真可以用來(lái)檢查設(shè)計(jì)行為的正確性,一般通過(guò)編寫(xiě)測(cè)試平臺(tái)(testbench)來(lái)實(shí)現(xiàn)。測(cè)試平臺(tái)是給待驗(yàn)證的設(shè)計(jì)添加激勵(lì),并且通過(guò)仿真工具來(lái)觀察輸出響應(yīng)是否符合設(shè)計(jì)要求[13]。為驗(yàn)證上述切換機(jī)制的有效性和正確性,本文針對(duì)上述狀態(tài)機(jī)編寫(xiě)測(cè)試平臺(tái),并采用ModelSim仿真工具對(duì)切換過(guò)程中常見(jiàn)的幾種情況進(jìn)行了功能仿真[14]。
上電,兩塊主控板都正常啟動(dòng),槽位號(hào)小的主控板經(jīng)過(guò)狀態(tài)對(duì)比后升級(jí)為工作主控板,槽位號(hào)大的主控板經(jīng)過(guò)狀態(tài)對(duì)比后進(jìn)入備用主控板狀態(tài),如圖8和圖9所示。
圖8 槽位號(hào)小的主控板啟動(dòng)仿真Fig.8 Start-up simulation of the main control board with small slot number
圖9 槽位號(hào)大的主控板啟動(dòng)仿真Fig.9 Start-up simulation of the main control board with large slot number
主控板處于備用狀態(tài),不斷地監(jiān)視工作主控板的狀態(tài)。若工作主控板狀態(tài)正常,則保持備用主控板狀態(tài)不變;若工作主控板狀態(tài)異常而備用主控板自身狀態(tài)正常,則備用主控板升級(jí)為工作主控板,如圖10和圖11所示。
圖10 工作主控板狀態(tài)正常仿真Fig.10 Simulation as the status of the working main control board is normal
圖11 工作主控板狀態(tài)異常仿真Fig.11 Simulation as the status of the working main control board is abnormal
當(dāng)主控板處于工作主控板狀態(tài),若應(yīng)用使能切主指令,則其會(huì)進(jìn)行切主判斷:若備用主控板狀態(tài)正常,則進(jìn)行正常切主;若備用主控板狀態(tài)不正常,則通知系統(tǒng)“應(yīng)用切主條件不滿(mǎn)足”,繼續(xù)保持工作主狀態(tài),如圖12和圖13所示。
圖12 正常切主仿真Fig.12 Simulation of normal switching of the working main control board
圖13 切主條件不滿(mǎn)足仿真Fig.13 Simulation as switching condition of the working main control board are not met
在實(shí)驗(yàn)室中,取一個(gè)機(jī)箱,插入2塊功能正常的主控板并分別標(biāo)識(shí)為A主控板(簡(jiǎn)稱(chēng)“A板”)和B主控板(簡(jiǎn)稱(chēng)“B板”),其中A板槽位號(hào)小。經(jīng)測(cè)試,背板硬線連接正常。正常運(yùn)行時(shí),A板為工作主控板,B板為備用主控板。針對(duì)本文提出的主控冗余及切換機(jī)制,主要進(jìn)行上電啟動(dòng)、故障切換和應(yīng)用切主實(shí)驗(yàn),并記錄實(shí)驗(yàn)結(jié)果。
主控板面板配有工作主控板指示燈,若主控板為工作主控板,則燈亮;若主控板為備用主控板,則燈滅。
(1)正常啟動(dòng)試驗(yàn)
試驗(yàn)時(shí),對(duì)插入互為冗余的A板和B板的機(jī)箱進(jìn)行多次上下電啟動(dòng),觀察現(xiàn)象,要求“A板由于槽位號(hào)小而優(yōu)先級(jí)高,每次都競(jìng)爭(zhēng)為工作主控板”。試驗(yàn)結(jié)果顯示,每次啟動(dòng)完成后,都是A板指示燈亮(指示為工作主控板),符合設(shè)計(jì)要求。
(2)異常啟動(dòng)試驗(yàn)
試驗(yàn)時(shí),將A板在啟動(dòng)過(guò)程中卡滯,B板正常啟動(dòng),要求“雖然A板槽位號(hào)小,但啟動(dòng)異常;B板優(yōu)先級(jí)低,正常啟動(dòng)后監(jiān)測(cè)到A板異常,也會(huì)競(jìng)爭(zhēng)為工作主控板”。試驗(yàn)結(jié)果顯示,每次啟動(dòng)完成后,都是B板上指示燈亮,符合設(shè)計(jì)要求。
該測(cè)試分為以下步驟:
(1)對(duì)正常運(yùn)行的機(jī)箱,中止A板生命信號(hào),要求“A板狀態(tài)異常,喪失主控資格;備用B板自身狀態(tài)正常,一旦監(jiān)測(cè)到A板狀態(tài)異常,B板則立即升級(jí)為工作主控板”。試驗(yàn)結(jié)果顯示,中止A板生命信號(hào)后,A板立即發(fā)生切主動(dòng)作,同時(shí)B板升級(jí)為工作主控板,符合設(shè)計(jì)要求。
(2)將B板升級(jí)為工作主控板,恢復(fù)A板的生命信號(hào),要求“雖然A板狀態(tài)恢復(fù)正常,但只要B板狀態(tài)正常,A板也只會(huì)先進(jìn)入備用主控板狀態(tài),不會(huì)發(fā)生頻繁切主的情況”。試驗(yàn)結(jié)果顯示,B板沒(méi)有發(fā)生切主動(dòng)作,符合設(shè)計(jì)要求。
(3)中止B板生命信號(hào),要求“A板雖然狀態(tài)恢復(fù)正常,但只在B板狀態(tài)異常情況下才會(huì)進(jìn)入工作主控板狀態(tài),不會(huì)發(fā)生錯(cuò)誤切主的情況”。試驗(yàn)結(jié)果顯示,中止生命信號(hào)后,B板立即發(fā)生切主動(dòng)作,同時(shí)A板升級(jí)為工作主控板,符合設(shè)計(jì)要求。
多次重復(fù)上述故障切主試驗(yàn)過(guò)程,結(jié)果顯示,工作主控板沒(méi)有出現(xiàn)錯(cuò)誤切換、頻繁切換現(xiàn)象。
該測(cè)試過(guò)程如下:
(1)對(duì)正常運(yùn)行的機(jī)箱,在A板上輸入切主指令,要求“A板能響應(yīng)切主指令且觀測(cè)到B板狀態(tài)正常后會(huì)切主進(jìn)入備用主控板狀態(tài),同時(shí)B板升級(jí)為工作主控板”。試驗(yàn)結(jié)果顯示,A板得到切主指令后,立即完成切主任務(wù),同時(shí)B板升級(jí)為工作主控板,符合設(shè)計(jì)要求。
(2)若B板升為工作主控板,中止A板的生命信號(hào),同時(shí)在B板上輸入切主指令,要求“B板響應(yīng)切主指令,觀測(cè)到A板狀態(tài)異常,不會(huì)切主進(jìn)入備用主控板狀態(tài),但保持為工作主控板”。試驗(yàn)結(jié)果顯示,B板并沒(méi)有發(fā)生切主動(dòng)作,且產(chǎn)生中斷并通知系統(tǒng)“應(yīng)用切主條件不滿(mǎn)足”,符合設(shè)計(jì)要求。
(3)恢復(fù)A板生命信號(hào),同時(shí)在B板上輸入切主指令,要求“B板響應(yīng)切主指令且觀測(cè)到A板狀態(tài)恢復(fù)正常后,B板進(jìn)入備用主控板狀態(tài),A板升級(jí)為工作主控板”。試驗(yàn)結(jié)果顯示,B板立即完成切主,且A板升級(jí)為工作主控板。
經(jīng)實(shí)驗(yàn)室測(cè)試,采用本機(jī)制后,異常工況下主控切換時(shí)間為亞毫秒級(jí),相比既往系統(tǒng)數(shù)十毫秒的切換時(shí)間,實(shí)時(shí)性大幅提升。綜上可知,本機(jī)制不僅可實(shí)現(xiàn)更快速的主控切換,而且平穩(wěn)的冗余切換機(jī)制不會(huì)帶來(lái)錯(cuò)誤切換、頻繁切換等問(wèn)題,也提高了系統(tǒng)的可靠性。
目前,此冗余機(jī)制已在城市軌道交通領(lǐng)域進(jìn)行小批量應(yīng)用且運(yùn)行效果良好。
本文提出一種快速、可靠的主控冗余及切換機(jī)制,其通過(guò)CPLD實(shí)現(xiàn),機(jī)箱內(nèi)的兩塊冗余主控板通過(guò)背板通信協(xié)議來(lái)實(shí)現(xiàn)互相監(jiān)測(cè)。仿真和應(yīng)用結(jié)果顯示,采用該機(jī)制后,當(dāng)系統(tǒng)主控板發(fā)生故障時(shí),備用主控板能實(shí)現(xiàn)無(wú)縫切換,且再?zèng)]出現(xiàn)以往常見(jiàn)的多主、錯(cuò)誤搶主、切換不及時(shí)等故障現(xiàn)象,大大提高了系統(tǒng)的安全性和可靠性。
后續(xù)還可通過(guò)配置對(duì)所設(shè)計(jì)的切換機(jī)制進(jìn)行故障模式注入,以適配不同應(yīng)用場(chǎng)景需求,同時(shí)記錄主控切換原因并形成診斷日志,進(jìn)一步提高可移植性和可診斷性。