雙冗余CAN總線模塊的設(shè)計與實現(xiàn)
摘要:為滿足惡劣環(huán)境下計算機系統(tǒng)的高可靠性需求,將冗余技術(shù)結(jié)合到CAN總線模塊的硬件與軟件開發(fā)中,介紹其總體方案。硬件及軟件設(shè)計方法,重點描述了在V×Works系統(tǒng)下的驅(qū)動軟件實現(xiàn),給出了部分實現(xiàn)細節(jié)及設(shè)計流程。測試結(jié)果表明,此設(shè)計可成功實現(xiàn)CAN冗余模塊在總線故障情況下的冗余切換,提高了設(shè)備可靠性。
本文引用地址:http://2s4d.com/article/148011.htm引言冗余技術(shù)有兩種方式:工作冗余和后備冗余。工作冗余是對關(guān)鍵設(shè)備以雙重或三重的原則來重復配置,這些設(shè)備同時處于工作運行狀態(tài),工作過程中若某一臺設(shè)備出現(xiàn)故障,它會自動脫離系統(tǒng),但并不影響系統(tǒng)的正常工作。后備冗余方式是使一臺設(shè)備投入運行,另一臺冗余設(shè)備處于熱備用狀態(tài),但不投入運行,在線運行設(shè)備一旦出現(xiàn)故障,后備設(shè)備立即投入運行。常用的冗余系統(tǒng)按其結(jié)構(gòu)可分為并聯(lián)系統(tǒng)。備用系統(tǒng)和表決系統(tǒng)3種。最簡單的冗余設(shè)計是并聯(lián)裝置,其它方法還有串并聯(lián)或并串聯(lián)混合裝置和多數(shù)表決裝置等。
本文通過以上冗余技術(shù)的分析選擇,將其結(jié)合到CAN總線模塊的設(shè)計中,并在V×Works系統(tǒng)下設(shè)計了雙冗余驅(qū)動,通過測試,驗證了本設(shè)計的有效性。
1 總體設(shè)計雙冗余CAN總線模塊設(shè)計主要包括硬件與軟件設(shè)計兩部分。為實現(xiàn)冗余功能,硬件上需要有幾個相同可獨立工作的設(shè)備支持;軟件上要具備錯誤檢測和動態(tài)切換功能,且切換時間要盡可能短。在本設(shè)計中,雙冗余CAN總線模塊硬件配置兩個獨立的CAN控制器,并有FPGA對其進行控制,軟件通過讀取CAN總線狀態(tài)寄存器判斷是否進行冗余切換動作。
下面將詳細描述雙冗余CAN總線模塊的硬件與軟件設(shè)計,以及冗余功能的實現(xiàn)細節(jié)。
2硬件設(shè)計我們選擇PCI9052作為接口芯片,利用功能芯片實現(xiàn)硬件的邏輯和物理實現(xiàn)。CAN控制器采用PHILIPS的SJAl000,可工作于BasicCAN模式或PeI.CAN模式下,其中PeIiCAN模式支持CAN 2.0B協(xié)議,采用8位地址/數(shù)據(jù)復用總線接口。如圖1所示,PC J總線雙CAN接口卡由兩片SJAl000提供兩路獨立的CAN接口,每片芯片的8位地址/數(shù)據(jù)總線和讀寫控制信號。鎖存信號直接與PCI9052相連。SJAl000輸出信號經(jīng)過光耦到CAN收發(fā)器PCA82C250,82C250供電電源為隔離電源,由隔離電源轉(zhuǎn)換模塊提供。CAN總線的復位信號由FPGA提供,CAN控制器SJAl000的中斷信號輸出到FPGA.
在硬件上CAN總線冗余模塊要求使用相同兩套CAN設(shè)備(CAN0.CANl),每套包含獨立的總線電纜??偩€驅(qū)動器和總線控制器,從而實現(xiàn)物理介質(zhì)。物理層。數(shù)據(jù)鏈路層及應用層的全面冗余。兩套設(shè)備采用熱備份方式運行:一個CAN控制器作為系統(tǒng)上電后默認的CAN(稱為主CAN);另一個為系統(tǒng)的備用CAN(稱為從CAN)。系統(tǒng)正常工作時,主CAN設(shè)備(CAN0)投入運行,當主CAN設(shè)備發(fā)生故障時,系統(tǒng)自動切換至從CAN設(shè)備運行,保證整個系統(tǒng)的正常通信,提高系統(tǒng)可靠性。
3軟件設(shè)計3.1 VXWorks驅(qū)動開發(fā)模型VXWorks操作系統(tǒng)是風河公司(Wind River SyStem)推出的一款運行在目標機上的高性能??刹脺p的嵌入式強實時操作系統(tǒng),它包括進程管理。存儲管理。設(shè)備管理。文件系統(tǒng)管理。網(wǎng)絡協(xié)議及系統(tǒng)應用等幾個部分,只占用了很小的存儲空間,并可高度裁減,保證了系統(tǒng)能以較高的效率運行。它以其良好的可靠性和卓越的實時性被廣泛地應用在通信。軍事。航空。航天等高精尖技術(shù)及實時性要求極高的領(lǐng)域中。
VXWorks操作系統(tǒng)提供幾種標準驅(qū)動模型,如串行設(shè)備驅(qū)動。塊設(shè)備驅(qū)動。網(wǎng)絡接口驅(qū)動??偩€控制器驅(qū)動等。根據(jù)設(shè)備不同,可選擇相應的標準驅(qū)動模型或自定cAN模塊是串行設(shè)備,設(shè)計選擇了標準串行設(shè)備驅(qū)動模型。CAN總線驅(qū)動VXWorks系統(tǒng)中的結(jié)構(gòu)框圖如圖2所示。
3.2.1 CAN模塊驅(qū)動設(shè)計CAN模塊驅(qū)動設(shè)計主要包括實現(xiàn)設(shè)備初始化。與上層IO通信。數(shù)據(jù)收發(fā)。參數(shù)設(shè)置。驗收濾波器設(shè)置等。其中設(shè)備初始化要針對CAN設(shè)備冗余的特點,對兩個CAN控制器進行相同的初始化操作;與上層IO通信。數(shù)據(jù)收發(fā)。參數(shù)設(shè)置。驗收濾波器設(shè)置操作只控制當前處于工作狀態(tài)的CAN控制器。
3.2.2驅(qū)動冗余設(shè)計在雙CAN冗余系統(tǒng)的設(shè)計中,較之硬件結(jié)構(gòu)而言,軟件設(shè)計相對復雜,其關(guān)鍵之處在于CAN系統(tǒng)故障檢測及CAN系統(tǒng)自動切換。由于采用兩套完全獨立的傳輸介質(zhì)??偩€驅(qū)動器和總線控制器,因此它們能分別獨立檢測到自己通道的故障,比如CANH與CANL短路,CANH或CANL斷開。CANH與地短路。CANL與電源短路??偩€驅(qū)動器損壞等。實際調(diào)試中發(fā)現(xiàn),如果CANH.CANL斷開或只有一個發(fā)送器在總線上,均會造成發(fā)送/接收錯誤計數(shù)器不斷增加到128,使節(jié)點處于忽略錯誤態(tài);而CANH與CANL短路。CANH與地短路或CANL與電源短路均會造成發(fā)送/接收錯誤計數(shù)器不斷增加到256,使節(jié)點處于總線脫離態(tài)。所以,通過節(jié)點狀態(tài)改變中斷子程序中調(diào)用CAN冗余模塊,可以達到實現(xiàn)上述故障自動檢測及CAN系統(tǒng)自動切換的目的。
(1)接收冗余設(shè)計CAN設(shè)備接收時無法主動檢測連接線路的通斷狀態(tài),這時就要求系統(tǒng)中的兩個CAN控制器都同時工作于接收狀態(tài)。這時系統(tǒng)中出現(xiàn)以下幾種情況:①正常工作。這個時候兩個CAN控制器都在接收數(shù)據(jù),此時我們只要取其中主CAN設(shè)備中的數(shù)據(jù)即可,從CAN設(shè)備中的數(shù)據(jù)丟棄;②主CAN設(shè)備沒有接收到數(shù)據(jù)而從CAN設(shè)備能正常接收到數(shù)據(jù),主CAN設(shè)備控制器的狀態(tài)寄存器中并沒有錯誤標志,這種情況是因為主CAN設(shè)備的連接線路斷開而引起的,此時進行通道切換,將主CAN設(shè)備設(shè)置為備用通道,把從CAN設(shè)備設(shè)置為工作通道并從中取出數(shù)據(jù)送給10系統(tǒng);③主CAN設(shè)備能接收到數(shù)據(jù),但其狀態(tài)寄存器中有錯誤標志,這是因為線路上的數(shù)據(jù)出錯引起的,此時主CAN設(shè)備中的數(shù)據(jù)為錯誤數(shù)據(jù),不能被使用,因此要進行通道切換,把從CAN設(shè)備設(shè)定為工作通道,從中取出數(shù)據(jù)送IO系統(tǒng),而主CAN設(shè)備進行復位處理后再讓其工作于接收狀態(tài),作為備用通道。數(shù)據(jù)接收流程如圖3所示。
光耦相關(guān)文章:光耦原理
評論