雙冗余CAN總線模塊的設計與實現
摘要:為滿足惡劣環境下計算機系統的高可靠性需求,將冗余技術結合到CAN總線模塊的硬件與軟件開發中,介紹其總體方案。硬件及軟件設計方法,重點描述了在V×Works系統下的驅動軟件實現,給出了部分實現細節及設計流程。測試結果表明,此設計可成功實現CAN冗余模塊在總線故障情況下的冗余切換,提高了設備可靠性。
本文引用地址:http://www.j9360.com/article/148011.htm引言冗余技術有兩種方式:工作冗余和后備冗余。工作冗余是對關鍵設備以雙重或三重的原則來重復配置,這些設備同時處于工作運行狀態,工作過程中若某一臺設備出現故障,它會自動脫離系統,但并不影響系統的正常工作。后備冗余方式是使一臺設備投入運行,另一臺冗余設備處于熱備用狀態,但不投入運行,在線運行設備一旦出現故障,后備設備立即投入運行。常用的冗余系統按其結構可分為并聯系統。備用系統和表決系統3種。最簡單的冗余設計是并聯裝置,其它方法還有串并聯或并串聯混合裝置和多數表決裝置等。
本文通過以上冗余技術的分析選擇,將其結合到CAN總線模塊的設計中,并在V×Works系統下設計了雙冗余驅動,通過測試,驗證了本設計的有效性。
1 總體設計雙冗余CAN總線模塊設計主要包括硬件與軟件設計兩部分。為實現冗余功能,硬件上需要有幾個相同可獨立工作的設備支持;軟件上要具備錯誤檢測和動態切換功能,且切換時間要盡可能短。在本設計中,雙冗余CAN總線模塊硬件配置兩個獨立的CAN控制器,并有FPGA對其進行控制,軟件通過讀取CAN總線狀態寄存器判斷是否進行冗余切換動作。
下面將詳細描述雙冗余CAN總線模塊的硬件與軟件設計,以及冗余功能的實現細節。
2硬件設計我們選擇PCI9052作為接口芯片,利用功能芯片實現硬件的邏輯和物理實現。CAN控制器采用PHILIPS的SJAl000,可工作于BasicCAN模式或PeI.CAN模式下,其中PeIiCAN模式支持CAN 2.0B協議,采用8位地址/數據復用總線接口。如圖1所示,PC J總線雙CAN接口卡由兩片SJAl000提供兩路獨立的CAN接口,每片芯片的8位地址/數據總線和讀寫控制信號。鎖存信號直接與PCI9052相連。SJAl000輸出信號經過光耦到CAN收發器PCA82C250,82C250供電電源為隔離電源,由隔離電源轉換模塊提供。CAN總線的復位信號由FPGA提供,CAN控制器SJAl000的中斷信號輸出到FPGA.

在硬件上CAN總線冗余模塊要求使用相同兩套CAN設備(CAN0.CANl),每套包含獨立的總線電纜。總線驅動器和總線控制器,從而實現物理介質。物理層。數據鏈路層及應用層的全面冗余。兩套設備采用熱備份方式運行:一個CAN控制器作為系統上電后默認的CAN(稱為主CAN);另一個為系統的備用CAN(稱為從CAN)。系統正常工作時,主CAN設備(CAN0)投入運行,當主CAN設備發生故障時,系統自動切換至從CAN設備運行,保證整個系統的正常通信,提高系統可靠性。
3軟件設計3.1 VXWorks驅動開發模型VXWorks操作系統是風河公司(Wind River SyStem)推出的一款運行在目標機上的高性能。可裁減的嵌入式強實時操作系統,它包括進程管理。存儲管理。設備管理。文件系統管理。網絡協議及系統應用等幾個部分,只占用了很小的存儲空間,并可高度裁減,保證了系統能以較高的效率運行。它以其良好的可靠性和卓越的實時性被廣泛地應用在通信。軍事。航空。航天等高精尖技術及實時性要求極高的領域中。
VXWorks操作系統提供幾種標準驅動模型,如串行設備驅動。塊設備驅動。網絡接口驅動。總線控制器驅動等。根據設備不同,可選擇相應的標準驅動模型或自定cAN模塊是串行設備,設計選擇了標準串行設備驅動模型。CAN總線驅動VXWorks系統中的結構框圖如圖2所示。

3.2.1 CAN模塊驅動設計CAN模塊驅動設計主要包括實現設備初始化。與上層IO通信。數據收發。參數設置。驗收濾波器設置等。其中設備初始化要針對CAN設備冗余的特點,對兩個CAN控制器進行相同的初始化操作;與上層IO通信。數據收發。參數設置。驗收濾波器設置操作只控制當前處于工作狀態的CAN控制器。
3.2.2驅動冗余設計在雙CAN冗余系統的設計中,較之硬件結構而言,軟件設計相對復雜,其關鍵之處在于CAN系統故障檢測及CAN系統自動切換。由于采用兩套完全獨立的傳輸介質。總線驅動器和總線控制器,因此它們能分別獨立檢測到自己通道的故障,比如CANH與CANL短路,CANH或CANL斷開。CANH與地短路。CANL與電源短路。總線驅動器損壞等。實際調試中發現,如果CANH.CANL斷開或只有一個發送器在總線上,均會造成發送/接收錯誤計數器不斷增加到128,使節點處于忽略錯誤態;而CANH與CANL短路。CANH與地短路或CANL與電源短路均會造成發送/接收錯誤計數器不斷增加到256,使節點處于總線脫離態。所以,通過節點狀態改變中斷子程序中調用CAN冗余模塊,可以達到實現上述故障自動檢測及CAN系統自動切換的目的。
(1)接收冗余設計CAN設備接收時無法主動檢測連接線路的通斷狀態,這時就要求系統中的兩個CAN控制器都同時工作于接收狀態。這時系統中出現以下幾種情況:①正常工作。這個時候兩個CAN控制器都在接收數據,此時我們只要取其中主CAN設備中的數據即可,從CAN設備中的數據丟棄;②主CAN設備沒有接收到數據而從CAN設備能正常接收到數據,主CAN設備控制器的狀態寄存器中并沒有錯誤標志,這種情況是因為主CAN設備的連接線路斷開而引起的,此時進行通道切換,將主CAN設備設置為備用通道,把從CAN設備設置為工作通道并從中取出數據送給10系統;③主CAN設備能接收到數據,但其狀態寄存器中有錯誤標志,這是因為線路上的數據出錯引起的,此時主CAN設備中的數據為錯誤數據,不能被使用,因此要進行通道切換,把從CAN設備設定為工作通道,從中取出數據送IO系統,而主CAN設備進行復位處理后再讓其工作于接收狀態,作為備用通道。數據接收流程如圖3所示。

光耦相關文章:光耦原理
評論