WDM定時器在冗余技術中的應用
WDM 的開發(fā)可采用DDK, DriverWorks 等開發(fā)工具。以下重點描述在此WDM 驅(qū)動實例中采用定時查詢實現(xiàn)CAN 總線冗余功能。
3. 2 驅(qū)動冗余設計
本設計中, CAN 通路采用2 路冗余, 使得當一個CAN 總線接口出現(xiàn)故障時, 可以很方便地切換到另一個CAN 總線接口。
故障檢測在定時器中實現(xiàn)。在DriverWorks 中有兩種定時器對象, 即附屬于設備對象的1 Hz 定時器和KTimedCallback 類定義的定時器, WDM 定時方法是通過它們實現(xiàn)的。KT imedCal lback 是KTimer 的派生類, KTimer 封裝了系統(tǒng)定時器, 構成分發(fā)對象定時器類, 可用于同步目的。KT imedCal lback 類包含了系統(tǒng)延時過程調(diào)用( DPC) 對象, 當定時器超時后系統(tǒng)就調(diào)用DPC。KTimedCallback 的成員函數(shù)主要是Set 和SetPeriodic, Set 用于設置一次有效定時器參數(shù), SetPeriodie 設置周期性定時器參數(shù), Set 和SetPeriodic 在設置定時參數(shù)時同時啟動定時器并建立與回調(diào)函數(shù)的關聯(lián),定時器超時后調(diào)用回調(diào)函數(shù)。
具體的切換工作放在DPC 中完成。DPC 為推遲過程調(diào)用, 一些操作不適合在ISR 中處理需放入限制較少的DPC 中, 如通知事件置標記等等。DPC 是一個通用機制, 但通常都用在中斷處理中。在最普通的情況下, ISR 決定當前請求的完成并請求一個DPC。之后,內(nèi)核在DISPATCH_LEVEL 級上調(diào)用這個DPC 例程。
因此DPC 中的代碼要比ISR 中的代碼有更少的限制。
特別是, DPC 例程可以調(diào)用像IoCompleteRequest 或Io StartNextPacket 這樣的例程, 在一個I/ O 操作的結尾處調(diào)用這些例程在邏輯上是必要的。圖3 描述了具體DPC 調(diào)用處理過程。
圖3 DPC 處理過程。
冗余切換查詢時間可以在設備屬性中添加切換時間周期項, 通過修改設備屬性的方式在線修改, 修改后設備管理器自動更新驅(qū)動。
在雙CAN 冗余系統(tǒng)中, 較之硬件結構而言, 軟件設計相對復雜得多, 其關鍵之處在于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 與地短路或CAN L 與電源短路均會造成發(fā)送/ 接收錯誤計數(shù)器不斷增加到256, 使節(jié)點處于總線脫離態(tài)。所以,通過節(jié)點狀態(tài)改變中斷子程序中調(diào)用CAN 冗余模塊,可以達到實現(xiàn)上述故障自動檢測及CAN 系統(tǒng)自動切換的目的。
3. 3 冗余測試
測試時采用一個有兩個通道CAN 分析儀分別連接本CAN 板的A, B 通道上, 在從A 通道連續(xù)發(fā)送數(shù)據(jù)至分析儀的過程中, 手動斷開此鏈接, 則備用通道B開始工作, 切換成功。對冗余切換時間的測試可以通過比較發(fā)送端和接收端間數(shù)據(jù)量的差值來判斷。具體方法是在發(fā)送端以10 ms 為周期不停發(fā)送數(shù)據(jù)包, 正常情況下發(fā)送端的數(shù)據(jù)包數(shù)量與接收端的數(shù)據(jù)包數(shù)量是相等的。在切換動作時, 會有一些數(shù)據(jù)包被丟棄, 這時通過計算發(fā)送端與接收端數(shù)據(jù)包的差值乘以10 ms, 即為此次切換的切換時間。在本例中, 通過多次這樣的測試, 得出平均切換時間在30 ms 左右, 完全能滿足對計算機系統(tǒng)高可靠性的要求。
4 結 論
提出一種設備冗余的系統(tǒng)設計方法, 為系統(tǒng)的故障檢測和切換技術提供了一種解決方案。利用此方法設計了雙冗余CAN 總線板卡以及在Window s XP 系統(tǒng)下的WDM 驅(qū)動。該模塊工作穩(wěn)定, 數(shù)據(jù)傳輸可靠, 冗余切換切實可行。并可依據(jù)實際使用要求在線修改定時查詢時間。這種冗余實現(xiàn)方法在提高設備可靠性方面具有一定的實用價值。
評論