障安全狀態(tài)。以此方式,表決子系統(tǒng)檢測活躍FSC104和待命FSC108之一中的錯誤。當(dāng)檢測活躍FSC104和待命FSC108之一中的錯誤時,表決子系統(tǒng)通過迫使有錯誤的FSC進(jìn)入故障安全狀態(tài),將系統(tǒng)100帶入安全狀態(tài)。
[0088]表決子系統(tǒng)還從I/O子系統(tǒng)接收分組。例如,1U模塊128經(jīng)由交換模塊124a與表決子系統(tǒng)通信。1U模塊128將第一分組傳遞至交換模塊124a。交換模塊124a復(fù)制第一分組。例如,交換模塊124a生成第二分組。第二分組是第一分組的復(fù)本。交換模塊124a將第一分組傳遞至主CPUl 16a和檢查器CPU120a。主CPUl 16a和檢查器CPU120a如上面描述的那樣對第一分組和第二分組運行表決邏輯。以此方式,表決子系統(tǒng)驗證所接收的分組的有效性。
[0089]在另一示例中,由于外部組件中的硬件(如軌道系統(tǒng)中的安全臨界硬件)失靈,第一分組可能與第二分組不同。當(dāng)表決子系統(tǒng)確定第一分組與第二分組不同時,安全應(yīng)用迫使活躍FSC104進(jìn)入故障安全狀態(tài)。此外或可替代地,可以悄悄地丟棄不匹配的分組。例如,主CPUl 16a和檢查器CPU120a都不基于第一分組和第二分組生成外出分組。以此方式,系統(tǒng)100可以避免由其它可恢復(fù)的差錯引起的過多故障轉(zhuǎn)移/故障安全轉(zhuǎn)換。在另一實現(xiàn)中,可以將輸入表決配置為導(dǎo)致故障轉(zhuǎn)移/故障安全轉(zhuǎn)換。
[0090]現(xiàn)在參考圖2,200處示出根據(jù)本公開原理的示例性故障安全底架(FSC)的框圖。FSC200包括主CPU204和檢查器CPU208。主CPU204和檢查器CPU208運行相同的軟件并且實現(xiàn)相同的處理功能。將主CPU204和檢查器CPU208配置為執(zhí)行相同的功能,以便保持安全臨界硬件和軟件的全硬件錯誤和差錯檢測覆蓋。
[0091]例如,主CPU204從外部安全系統(tǒng)的安全臨界硬件或軟件至少之一中接收執(zhí)行任務(wù)的請求。外部安全系統(tǒng)可以是需要根據(jù)預(yù)確定的安全標(biāo)準(zhǔn)操作的系統(tǒng),如軌道系統(tǒng)。軌道系統(tǒng)包括安全臨界硬件和軟件。安全臨界硬件和軟件與軌道系統(tǒng)的組件交互,以便控制軌道系統(tǒng)的方面。例如,安全臨界硬件和軟件控制在軌道系統(tǒng)內(nèi)操作的列車。
[0092]執(zhí)行任務(wù)的請求可以包括但不限于:確定硬件組件的狀態(tài)、接合軌道系統(tǒng)的制動器或者向軌道系統(tǒng)的操作者指示在軌道系統(tǒng)內(nèi)操作的列車的位置。執(zhí)行任務(wù)的請求是以分組的形式接收的。例如,執(zhí)行任務(wù)的請求可以是多個進(jìn)入數(shù)據(jù)分組之一。
[0093]同時,檢查器CPU208接收同一請求的復(fù)本。將主CPU204和檢查器CPU208中每個CPU都配置為將所請求的任務(wù)的復(fù)本傳遞至主CPU204和檢查器CPU208中的另一 CPU。在主CPU204執(zhí)行所請求的任務(wù)以前,主CPU204和檢查器CPU208對由主CPU204和檢查器CPU208中每個CPU接收的所請求的任務(wù)進(jìn)行比較。
[0094]當(dāng)所請求的任務(wù)相同時,主CPU204和檢查器CPU208將所請求的任務(wù)傳遞至安全臨界硬件和軟件。例如,主CPU204和檢查器CPU208生成與所請求的任務(wù)關(guān)聯(lián)的外出分組。外出分組包括操作數(shù)據(jù)元素。操作數(shù)據(jù)元素可以包括指示安全臨界硬件和軟件之一運行預(yù)確定的過程的一組指令。例如,操作數(shù)據(jù)元素可以指示安全臨界軟件運行制動器接合過程。制動器接合過程包括控制至少一個安全臨界硬件組件。該至少一個硬件組件可以包括軌道系統(tǒng)的制動器機(jī)構(gòu)。
[0095]相反,當(dāng)所請求的任務(wù)不同時,主CPU204和檢查器CPU208不將所請求的任務(wù)傳遞至安全臨界硬件和軟件。以此方式,主CPU204驗證所請求的任務(wù)是來自有效源(B卩外部硬件組件或軟件應(yīng)用)的有效請求。僅例如,主CPU204接收由外部硬件故障、軟件差錯或整體系統(tǒng)失靈引起的執(zhí)行任務(wù)的差錯請求。
[0096]主CPU204和檢查器CPU208包括屏蔽寄存器。屏蔽寄存器是主CPU204和檢查器CPU208內(nèi)的可編程的位。在屏蔽寄存器內(nèi)存儲的值是所請求的任務(wù)是否是安全相關(guān)任務(wù)的指示。例如,當(dāng)系統(tǒng)100確定所請求的任務(wù)是安全相關(guān)任務(wù)時,將屏蔽寄存器設(shè)置為I。進(jìn)一步,當(dāng)系統(tǒng)100最初起動時,健康和安全應(yīng)用設(shè)置屏蔽寄存器。
[0097]主CPU204和檢查器CPU208每個均基于所請求的任務(wù)是否相同的確定,連續(xù)地生成模塊健康信號。當(dāng)主CPU204和檢查器CPU208確定所請求的任務(wù)相同時,主CPU204和檢查器CPU208連續(xù)地生成模塊健康信號脈沖。當(dāng)主CPU204和檢查器CPU208確定所請求的任務(wù)不同時,主CPU204和檢查器CPU208使模塊健康信號脈沖失效。
[0098]主CPU204和檢查器CPU208基于由與FSC200關(guān)聯(lián)的多個模塊中每個模塊生成的多個模塊健康信號脈沖,生成底架健康信號脈沖。FSC200包括與關(guān)于活躍FSC104描述的那些特征類似的特征。例如,F(xiàn)SC200包括如上面描述的前刀片124a-128f。FSC200內(nèi)的每個模塊連續(xù)地生成模塊健康信號(如上面所述的)。當(dāng)多個模塊健康信號表示FSC200是健康的時,主CPU204生成第一底架健康信號脈沖。換言之,當(dāng)屏蔽寄存器表示所請求的任務(wù)是安全相關(guān)的并且多個模塊健康信號表示FSC200是健康的時,第一底架健康信號脈沖被連續(xù)地生效(即設(shè)置為I)。
[0099]要理解,當(dāng)屏蔽寄存器表示所請求的任務(wù)不是安全相關(guān)的時(即屏蔽寄存器被設(shè)置為0),可以使第一模塊健康信號脈沖失效。然而,將不運行安全相關(guān)的過程(即,迫使活躍FSC204進(jìn)入安全狀態(tài)。以此方式,當(dāng)在安全相關(guān)任務(wù)期間發(fā)生錯誤時,僅實現(xiàn)故障轉(zhuǎn)移/故障安全過程。底架健康信號脈沖表不FSC200的總體健康狀況。
[0100]要理解,關(guān)于主CPU204描述的原理適用于檢查器CPU208。檢查器CPU208基于由與FSC200關(guān)聯(lián)的多個模塊中每個模塊生成的多個模塊健康信號脈沖,生成第二底架健康信號脈沖。當(dāng)多個模塊健康信號表示FSC200是健康的時,檢查器CPU208連續(xù)地生成第二底架健康信號脈沖。主CPU204將第一底架健康信號脈沖傳遞至安全繼電器箱212。類似地,檢查器CPU208將第二底架健康信號脈沖傳遞至安全繼電器箱212。
[0101]安全繼電器箱模塊212基于多個底架健康信號,選擇性地確定FSC200是否將作為活躍FSC操作。例如,當(dāng)初始化FSC200時,安全繼電器箱模塊212開始從主CPU204接收底架健康信號脈沖。安全繼電器箱212還開始從檢查器CPU208接收底架健康信號脈沖。安全繼電器箱模塊212基于底架健康信號,確定FSC200將被選擇作為活躍FSC。
[0102]在一些實現(xiàn)中,安全繼電器箱模塊212還從另一 FSC接收多個底架健康信號脈沖。安全繼電器箱模塊212基于多個底架健康信號脈沖,確定FSC200或另一 FSC將被選擇作為活躍FSC。例如,安全繼電器箱模塊212首先確定FSC200或另一 FSC之一是否是健康的。當(dāng)從FSC200接收的底架健康信號脈沖表示FSC200是健康的時,安全繼電器箱模塊212確定FSC200是健康的。例如,當(dāng)安全繼電器箱模塊212從FSC200接收底架健康信號時,安全繼電器箱模塊212確定FSC200是健康的。
[0103]類似地,當(dāng)從另一 FSC接收的多個底架健康信號脈沖表示另一 FSC是健康的時,安全繼電器箱模塊212確定另一 FSC是健康的。當(dāng)安全繼電器箱模塊212確定FSC200和另一 FSC都是健康的時,安全繼電器箱模塊212基于FSC200和另一 FSC中哪個FSC首先傳遞多個底架健康信號脈沖之一,選擇活躍FSC。例如,當(dāng)FSC200在另一 FSC向安全繼電器箱模塊212傳遞信號以前向安全繼電器箱模塊212傳遞信號時,安全繼電器箱212選擇FSC200作為活躍FSC。
[0104]安全繼電器箱模塊212監(jiān)視活躍FSC的健康狀況。例如,安全繼電器箱模塊212從FSC200接收第一底架健康信號脈沖和第二底架健康信號脈沖。安全繼電器箱模塊212基于第一底架健康信號脈沖和第二底架健康信號脈沖,確定在FSC200中是否已發(fā)生錯誤。當(dāng)?shù)谝坏准芙】敌盘柮}沖和第二底架健康信號脈沖表示所請求的任務(wù)的不匹配時,安全繼電器箱模塊212確定在FSC200中已經(jīng)發(fā)生錯誤。換言之,當(dāng)安全繼電器箱模塊212未收到第一底架健康信號脈沖和第二底架健康信號脈沖之一時,安全繼電器箱模塊212確定已經(jīng)發(fā)生錯誤。
[0105]當(dāng)安全繼電器箱模塊212確定在FSC200中已經(jīng)發(fā)生錯誤時,安全繼電器箱模塊212生成故障安全信號。安全繼電器箱模塊212將故障安全信號傳遞至活躍FSC200。FSC200基于該故障安全信號確定是否進(jìn)入安全狀態(tài)。例如,當(dāng)FSC20接收故障安全信號時,F(xiàn)SC200進(jìn)入安全狀態(tài)。相反,F(xiàn)SC200將繼續(xù)在活躍FSC模式下操作,除非FSC200接收故障安全信號。
[0106]可替代地,當(dāng)FSC200未收到活躍信號時,F(xiàn)SC200可以進(jìn)入待命狀態(tài)。當(dāng)安全繼電器箱模塊212確定FSC200要作為活躍FSC操作時,安全繼電器箱模塊212傳遞活躍信號。安全繼電器箱模塊212將活躍信號連續(xù)地傳遞至FSC200。當(dāng)安全繼電器箱模塊212確定FSC200有錯誤時,安全繼電器箱模塊212不將活躍信號傳遞至FSC200。然后,F(xiàn)SC200操作在待命狀態(tài)。
[0107]在一些實現(xiàn)中,將多個底架健康信號脈沖實現(xiàn)為動態(tài)脈沖信號,以消除未檢測到的潛在的故障模式。將安全繼電器箱模塊212配置為確定脈沖信號被卡在O還是被卡在I。例如,安全繼電器箱212從主CPU204接收第一脈沖信號。將安全繼電器箱模塊212配置為等待一預(yù)確定的時間段。
[0108]例如,該預(yù)確定的時間段可以是與對于使動態(tài)脈沖復(fù)位而言足夠長的時間對應(yīng)的時間段。當(dāng)在預(yù)確定的時間段以后尚未復(fù)位第一脈沖信號時,安全繼電器箱模塊212確定第一脈沖信號被卡住。然后,當(dāng)安全繼電器箱模塊212確定第一脈沖信號被卡住時,安全繼電器箱模塊212確定主CPU204中的錯誤。安全繼電器箱模塊212基于確定主CPU204中的錯誤,生成故障安全信號。
[0109]在一些實現(xiàn)中,主CPU204和檢查器CPU208彼此以松鎖步(I oose lockstep)運行。在一些場景中,需要主CPU204和檢查器CPU208以同步模式運行。特別參考圖3,示出實現(xiàn)同步模式的同步系統(tǒng)300的功能框圖。該同步模式包括首先使主CPU204和檢查器CPU208中每個CPU的系統(tǒng)時鐘同步以及其次使操作系統(tǒng)(OS)調(diào)度器同步,以便使主CPU204和檢查器CPU208在數(shù)據(jù)元素層次上以相同順序運行。
[0110]主CPU204和檢查器CPU208中每個CPU包括被配置為運行同步邏輯的現(xiàn)場可編程門陣列(FPGA)。例如,主CPU204包括主FPGA304,檢查器CPU208包括檢查器FPGA308。主FPGA304和檢查器FPGA308中每個FPGA均被配置為實現(xiàn)任務(wù)同步邏輯。例如,當(dāng)任務(wù)請求時間指令時以及當(dāng)任務(wù)發(fā)送和/或接收以太網(wǎng)分組時,主CPU204和檢查器CPU208中每個CPU同步。進(jìn)一步地,主FPGA304和檢查器FPGA308中每個FPGA可以同步至參考時鐘。
[0111]參考時鐘是系統(tǒng)100內(nèi)的25兆赫茲(MHz)時鐘。僅例如,參考時鐘可以是CPU減量器(decrementer)。參考時鐘是公共參考時鐘,系統(tǒng)100內(nèi)的每個模塊與該公共參考時鐘同步。系統(tǒng)100內(nèi)的每個模塊包括與參考時鐘同步的鎖相環(huán)。例如,主CPU204包括以第一間隔計數(shù)的第一時鐘。主CPU204包括第一鎖相環(huán),該第一鎖相