許 爽,唐 青,肖再南,曹唯一,陳志強(qiáng)
(1.武漢科技大學(xué) 冶金裝備及其控制省部共建教育部重點(diǎn)實(shí)驗(yàn)室,湖北 武漢 430081;2.武漢科技大學(xué) 機(jī)械傳動(dòng)與制造工程湖北省重點(diǎn)實(shí)驗(yàn)室,湖北 武漢 430081;3.武漢科技大學(xué) 精密制造研究院,湖北 武漢 430081)
在通信系統(tǒng)中,可靠性是一項(xiàng)重要的技術(shù)性能指標(biāo),可以保證數(shù)據(jù)信息在通信過(guò)程中高效、連續(xù)、安全地運(yùn)行。在衛(wèi)星、艦船等復(fù)雜系統(tǒng)中,可靠的數(shù)據(jù)通信可以有效提高工作效率,保障設(shè)備安全。隨著通信系統(tǒng)復(fù)雜度的提高,其技術(shù)和保障要求也越來(lái)越高,提高其可靠性便具有更加重要的意義。
通信系統(tǒng)的可靠性取決于構(gòu)成該系統(tǒng)的各部件可靠性以及系統(tǒng)本身的結(jié)構(gòu),使用可靠性較高的元部件可以有效延長(zhǎng)通信系統(tǒng)的平均無(wú)故障間隔時(shí)間,但一旦部件出現(xiàn)故障,系統(tǒng)就會(huì)停機(jī),甚至丟失通信數(shù)據(jù)。采用容錯(cuò)技術(shù)是通過(guò)改進(jìn)通信系統(tǒng)自身結(jié)構(gòu)的方式來(lái)提高可靠性的一種常見(jiàn)手段。在容錯(cuò)技術(shù)中,可以通過(guò)增加具有相同功能的元部件來(lái)增加通信系統(tǒng)的冗余度,使系統(tǒng)可以在某個(gè)元部件出現(xiàn)故障時(shí)仍然可以正常工作。
目前研究中常用的冗余技術(shù)有雙CPU 冗余控制技術(shù),比如早在2010 年,為了保證單一部件的失效不影響整個(gè)通信系統(tǒng)的運(yùn)行,文獻(xiàn)[9]中采用了一種基于Device Net 總線(xiàn)的雙CPU 冗余技術(shù)來(lái)提高系統(tǒng)的可靠性。同樣,為了滿(mǎn)足通信系統(tǒng)能穩(wěn)定可靠地完成數(shù)據(jù)通信,本文采用結(jié)構(gòu)簡(jiǎn)單明了的雙CPU 冗余通信技術(shù)。
在通信系統(tǒng)中,常用靜態(tài)隨機(jī)存儲(chǔ)器SRAM 進(jìn)行雙CPU 的信息數(shù)據(jù)共享,但兩個(gè)CPU 直接讀/寫(xiě)SRAM 時(shí)容易造成沖突。為了完成雙CPU 之間的總線(xiàn)切換,同時(shí)解決SRAM 的讀/寫(xiě)沖突問(wèn)題,需要引入仲裁模塊。本文采用復(fù)雜可編程邏輯器件CPLD 作為仲裁模塊,分別與兩個(gè)CPU 連接,完成對(duì)雙CPU 的故障監(jiān)測(cè)和自動(dòng)切換,并連接SRAM 作為數(shù)據(jù)存儲(chǔ)器,使雙CPU 通過(guò)CPLD 對(duì)SRAM 進(jìn)行讀/寫(xiě)操作,避免沖突,實(shí)現(xiàn)雙CPU之間的高速通信和數(shù)據(jù)共享。
在網(wǎng)絡(luò)結(jié)構(gòu)上,本文采用以太網(wǎng)網(wǎng)絡(luò)接口、RS 232通信接口以及RS 422 通信接口,完成控制中心、上位機(jī)以及下位機(jī)之間的人機(jī)交互通信和數(shù)據(jù)信息傳輸,構(gòu)建由雙以太網(wǎng)與雙RS 422 組成的冗余網(wǎng)絡(luò),提高通信的實(shí)時(shí)性和可靠性。
在通信系統(tǒng)中,傳統(tǒng)的雙機(jī)熱備份方式是指主、從機(jī)同時(shí)工作,由主機(jī)負(fù)責(zé)接收數(shù)據(jù)并進(jìn)行處理,而從機(jī)處于備份運(yùn)行狀態(tài),在主機(jī)發(fā)生故障時(shí),從機(jī)立刻接替工作,提高系統(tǒng)運(yùn)行的穩(wěn)定性,待主機(jī)恢復(fù)正常后,系統(tǒng)又切換至主機(jī)運(yùn)行,不影響其他相關(guān)設(shè)備。在這種方式下,即使從機(jī)處于正常狀態(tài),在主機(jī)故障修復(fù)成功后,仍然要將工作交回給主機(jī)運(yùn)行,在主機(jī)故障率高的情況下,系統(tǒng)工作交接頻繁,不利于通信的實(shí)時(shí)性和系統(tǒng)的穩(wěn)定。為了改善這一情況,本文在傳統(tǒng)的雙CPU主從熱備份方式的基礎(chǔ)上對(duì)其進(jìn)行改進(jìn),圖1 為改進(jìn)的雙CPU 熱備份結(jié)構(gòu)圖。
圖1 改進(jìn)的雙CPU 熱備份結(jié)構(gòu)圖
在交互通信系統(tǒng)中,上位機(jī)傳輸數(shù)據(jù)信號(hào)給主機(jī),兩個(gè)CPU 同步接收相關(guān)數(shù)據(jù),但只有一個(gè)CPU 負(fù)責(zé)主要輸出信號(hào)到下位機(jī),另一個(gè)CPU 則處于監(jiān)控準(zhǔn)備狀態(tài),隨時(shí)準(zhǔn)備接管工作。當(dāng)負(fù)責(zé)主要輸出的CPU 發(fā)生故障時(shí),另一個(gè)CPU 接管工作,成為主要輸出,而原來(lái)負(fù)責(zé)主要輸出的CPU 在故障修復(fù)后就自動(dòng)成為備用輸出,隨時(shí)待命。這種方式可以減少主機(jī)切換頻率,提高通信系統(tǒng)的實(shí)時(shí)性。
通信系統(tǒng)在正常工作時(shí),兩個(gè)CPU 將其狀態(tài)信息上報(bào)給仲裁模塊CPLD,由CPLD 確認(rèn)CPU 的工作狀態(tài)并且實(shí)現(xiàn)總線(xiàn)切換。當(dāng)工作CPU 出現(xiàn)故障時(shí),由CPLD將總線(xiàn)切換到另一個(gè)CPU,使整個(gè)系統(tǒng)得以繼續(xù)執(zhí)行原來(lái)的工作,保證通信系統(tǒng)正確、不間斷地運(yùn)行,而原來(lái)的工作CPU 在停機(jī)檢查、修復(fù)故障后成為備用CPU,其工作流程如圖2 所示。
圖2 通信系統(tǒng)中雙CPU 工作流程圖
為了提高交互通信系統(tǒng)中數(shù)據(jù)通信的可靠性,選擇通過(guò)增加關(guān)鍵元部件和網(wǎng)絡(luò)結(jié)構(gòu)的冗余度來(lái)實(shí)現(xiàn),硬件系統(tǒng)的總體構(gòu)架如圖3 所示。
圖3 硬件系統(tǒng)的總體構(gòu)架
本文的兩個(gè)CPU 選用的是TI 公司C2000 系列的TMS320F28335,采用C28X+FPU 的 結(jié) 構(gòu),在C28X 定點(diǎn)系列的基礎(chǔ)上增加了浮點(diǎn)運(yùn)算單元,既保持了原有DSP 芯片性能好、可靠性高的優(yōu)點(diǎn),又能更高效、更精準(zhǔn)、更迅速地執(zhí)行復(fù)雜的浮點(diǎn)運(yùn)算,使其在通信系統(tǒng)的應(yīng)用中具有更大的優(yōu)勢(shì)。
在雙CPU 冗余通信系統(tǒng)中,實(shí)現(xiàn)兩個(gè)CPU 之間的實(shí)時(shí)切換是保證通信系統(tǒng)可靠性的重要條件。設(shè)計(jì)選用CPLD 進(jìn)行雙CPU 之間的仲裁切換,由CPLD 實(shí)時(shí)監(jiān)控兩個(gè)CPU 的狀態(tài),并通過(guò)邏輯判斷實(shí)現(xiàn)雙CPU 之間的實(shí)時(shí)切換。本文選用Altera 公司MAX Ⅱ系列的EPM1270T144C5N 型號(hào)芯片,該芯片具有116 個(gè)通用I/O 管腳,支持3.3 V 直流供電,具有編程靈活、集成度高、適用范圍廣等優(yōu)點(diǎn),而且可以多次反復(fù)擦寫(xiě)。
CPLD 在切換CPU 時(shí),備份CPU 需要獲取主CPU運(yùn)行時(shí)儲(chǔ)存的信息數(shù)據(jù),因此需要外接一個(gè)存儲(chǔ)器SRAM 來(lái)儲(chǔ)存CPU 的實(shí)時(shí)運(yùn)算數(shù)據(jù),使系統(tǒng)在切換CPU 時(shí)能保證數(shù)據(jù)信息的完整,進(jìn)一步提高通信系統(tǒng)數(shù)據(jù)傳輸?shù)目煽啃?。本文的SRAM芯片選用ISSI公司的IS61LV25616AL 芯片,這款芯片具有256 KB 的容量,容量大,讀/寫(xiě)速度高,而且能恒常保持其儲(chǔ)存的數(shù)據(jù),有效保障了通信系統(tǒng)的數(shù)據(jù)安全。
如圖3所示,系統(tǒng)的通信接口模塊主要包括三部分:
1)以太網(wǎng)網(wǎng)絡(luò)通信接口模塊,主要實(shí)現(xiàn)雙CPU 與控制中心之間的雙向通信,選用W5500 作為以太網(wǎng)控制器,分別與兩個(gè)CPU 連接,構(gòu)成雙以太網(wǎng)冗余通信網(wǎng)絡(luò)。兩個(gè)以太網(wǎng)控制器同時(shí)接收控制中心的數(shù)據(jù)信息,將其中一條通道設(shè)置為工作網(wǎng)口,完成數(shù)據(jù)信息的傳輸,當(dāng)出現(xiàn)網(wǎng)絡(luò)連接超時(shí)或網(wǎng)口中斷等故障時(shí),系統(tǒng)切換至另一備份網(wǎng)口繼續(xù)穩(wěn)定傳輸數(shù)據(jù)信息,并上報(bào)故障,保證數(shù)據(jù)傳輸?shù)目煽啃砸约皩?shí)時(shí)性。
2)RS 232 總線(xiàn),用于實(shí)現(xiàn)雙CPU 與上位機(jī)之間的交互數(shù)據(jù)通信,主要用于讀取故障數(shù)據(jù),監(jiān)測(cè)系統(tǒng)的運(yùn)行狀況、監(jiān)控相關(guān)設(shè)備的使用壽命以及更新相關(guān)軟件,當(dāng)系統(tǒng)出現(xiàn)故障時(shí),可以利用該通信接口將系統(tǒng)故障信息傳送到上位機(jī),實(shí)時(shí)實(shí)現(xiàn)人機(jī)交互。
3)RS 422 通信接口模塊,主要用于實(shí)現(xiàn)主機(jī)與下位機(jī)之間的外部總線(xiàn)通信,下位機(jī)接收并響應(yīng)控制中心和上位機(jī)發(fā)送的數(shù)據(jù)信息和指令,完成相應(yīng)工作。
本文選用CPLD 作為通信系統(tǒng)的仲裁模塊主要是因?yàn)槠淠軌驅(qū)崟r(shí)響應(yīng)通信系統(tǒng)中上位機(jī)的需求,減少總線(xiàn)切換的反應(yīng)時(shí)間,具有良好的穩(wěn)定性。在通信系統(tǒng)中,CPLD 與兩個(gè)CPU 通過(guò)I/O 管腳直接連接并互相驅(qū)動(dòng),接收來(lái)自?xún)蓚€(gè)CPU 自檢、互檢的狀態(tài)信息以及系統(tǒng)的強(qiáng)制接管信號(hào),一旦任意一個(gè)CPU 出現(xiàn)問(wèn)題,CPLD可以迅速做出判斷進(jìn)行仲裁切換,使系統(tǒng)在不丟失通信數(shù)據(jù)的情況下將總線(xiàn)切換至另一個(gè)正常CPU,保證系統(tǒng)通信的實(shí)時(shí)性和可靠性。
通信系統(tǒng)在工作時(shí),CPLD 根據(jù)一定的邏輯完成雙CPU 之間的仲裁,其邏輯關(guān)系表達(dá)式為:
表1 CPU1 為主CPU 時(shí)的仲裁切換結(jié)果
表2 CPU2 為主CPU 時(shí)的仲裁切換結(jié)果
同理,當(dāng)CPU2 為主CPU 時(shí),CPLD 以同樣的邏輯完成總線(xiàn)的切換。CPLD 的仲裁結(jié)果如表2 所示,將S作為邏輯仲裁的結(jié)果傳輸給對(duì)應(yīng)的CPU,完成雙CPU 之間的實(shí)時(shí)切換。
CPLD 的工作原理圖如圖4 所示,CPLD 與兩個(gè)CPU直接通過(guò)管腳連接,接收由CPU 上報(bào)的狀態(tài)信息以及處理的數(shù)據(jù)信息。首先,CPLD 根據(jù)邏輯關(guān)系表達(dá)式判斷兩個(gè)CPU 的工作狀況,并將仲裁結(jié)果傳輸給對(duì)應(yīng)的CPU;另外,CPLD 對(duì)CPU 的讀/寫(xiě)操作進(jìn)行分析并通時(shí)鐘驅(qū)動(dòng)完成CPU 對(duì)SRAM 的讀/寫(xiě)操作,實(shí)時(shí)獲取并儲(chǔ)存CPU 的工作數(shù)據(jù),保證數(shù)據(jù)的完整性。在CPU 對(duì)SRAM 進(jìn) 行讀/寫(xiě)操作時(shí),CPLD 對(duì)SRAM 的操作主要有讀/寫(xiě)控制、數(shù)據(jù)的存/取以及讀/寫(xiě)地址的產(chǎn)生,雙CPU通過(guò)CPLD 向SRAM 寫(xiě)入或者讀取數(shù)據(jù),極大地提高了通信系統(tǒng)數(shù)據(jù)采集以及提取的速度。
圖4 CPLD 的工作原理圖
為了避免外界信號(hào)對(duì)系統(tǒng)通信造成干擾,在以太網(wǎng)控制器W5500 與外部設(shè)備之間添加網(wǎng)口變壓器以實(shí)現(xiàn)信號(hào)的電平耦合,避免由信號(hào)電平波動(dòng)導(dǎo)致的系統(tǒng)穩(wěn)定性問(wèn)題,通信系統(tǒng)的電路設(shè)計(jì)如圖5 所示。
圖5 交互通信系統(tǒng)電路設(shè)計(jì)圖
在通信過(guò)程中,CPU 通過(guò)CPLD 對(duì)SRAM 進(jìn)行讀/寫(xiě)操作時(shí),首先要讀取對(duì)應(yīng)側(cè)CPLD 的BUSY 管腳電平,當(dāng)BUSY 為高電平時(shí),對(duì)應(yīng)側(cè)的CPU 執(zhí)行對(duì)SRAM 的讀/寫(xiě)操作,該CPU 向CPLD 寫(xiě)入使能控制信號(hào),但只有當(dāng)使能信號(hào)OE 和BUSY 信號(hào)均為低電平時(shí)該側(cè)CPU 才能對(duì)SRAM 進(jìn)行讀/寫(xiě)操作。當(dāng)信號(hào)R/W 為低電平時(shí),CPU 向SRAM 寫(xiě)入數(shù)據(jù);當(dāng)信號(hào)R/W 為高電平時(shí),CPU 從SRAM讀取數(shù)據(jù)。CPU 在對(duì)SRAM 進(jìn)行讀/寫(xiě)操作時(shí),通過(guò)CPLD 的數(shù)據(jù)總線(xiàn)和地址總線(xiàn)發(fā)送16 位數(shù)據(jù)和16 位地址,由CPLD 完成地址和數(shù)據(jù)轉(zhuǎn)換,進(jìn)而操作SRAM。
由上述分析可知,BUSY 管腳是確保兩個(gè)CPU 與SRAM 在通信時(shí)不發(fā)生沖突的關(guān)鍵,本文中兩個(gè)CPU 通過(guò)CPLD 對(duì)SRAM 進(jìn)行讀/寫(xiě)操作時(shí),可能存在兩種情況:兩個(gè)CPU 在不同時(shí)刻對(duì)SRAM 進(jìn)行讀/寫(xiě)操作;兩個(gè)CPU 同時(shí)對(duì)SRAM 進(jìn)行讀/寫(xiě)操作。在第一種情況下,兩個(gè)CPU 分別在不同的時(shí)間對(duì)SRAM 進(jìn)行操作,不會(huì)影響系統(tǒng)的工作;而在第二種情況下,兩個(gè)CPU 同時(shí)對(duì)SRAM 進(jìn)行讀/寫(xiě)操作時(shí),可能會(huì)由于數(shù)據(jù)的爭(zhēng)用造成沖突,此時(shí)CPLD 根據(jù)兩個(gè)CPU 讀/寫(xiě)操作指令到達(dá)的先后進(jìn)行競(jìng)爭(zhēng)仲裁,將先發(fā)出指令的CPU 的BUSY 管腳置為高電平,并將另一個(gè)CPU 的BUSY 管腳強(qiáng)制拉低,直到先發(fā)出指令的CPU 完成相應(yīng)操作后,再將另一個(gè)CPU的BUSY 管腳拉高,完成其未完成的操作。通過(guò)這種競(jìng)爭(zhēng)機(jī)制,CPLD 可以確保正確執(zhí)行兩個(gè)CPU 對(duì)SRAM 的讀/寫(xiě)操作,保證了通信系統(tǒng)信息數(shù)據(jù)傳輸?shù)目煽啃浴?/p>
本文對(duì)如何提高通信系統(tǒng)的可靠性進(jìn)行了研究,提出了新型的雙CPU 冗余技術(shù),并且構(gòu)建了基于CPLD 的雙CPU 冗余通信系統(tǒng)。系統(tǒng)采用CPLD 作為雙CPU 之間的仲裁模塊,CPLD 穩(wěn)定可靠、反應(yīng)迅速,能準(zhǔn)確實(shí)現(xiàn)雙CPU 之間的總線(xiàn)切換。同時(shí),系統(tǒng)采用SRAM 對(duì)通信系統(tǒng)中雙CPU 的工作數(shù)據(jù)進(jìn)行備份,使雙CPU 可以通過(guò)CPLD 對(duì)SRAM 進(jìn)行讀/寫(xiě)操作,保證雙CPU 在互相切換后仍能準(zhǔn)確獲取對(duì)方之前運(yùn)行的工作數(shù)據(jù),確保系統(tǒng)連續(xù)穩(wěn)定可靠地運(yùn)行,實(shí)現(xiàn)信息數(shù)據(jù)的實(shí)時(shí)交互。該通信系統(tǒng)能穩(wěn)定有效地提高通信可靠性,適用于各種工業(yè)場(chǎng)所,在日常的電力通信、條件苛刻的航天航空通信以及復(fù)雜工作環(huán)境的艦船通信等通信領(lǐng)域中都具有非常高的應(yīng)用價(jià)值。當(dāng)然,在信息技術(shù)不斷發(fā)展的當(dāng)下,優(yōu)化通信系統(tǒng)的性能仍有很多的發(fā)展空間,通信系統(tǒng)正在向速度更快、效率更高、通信范圍更廣的方向不斷進(jìn)步。