基于STM32F105微控制器的雙CAN冗余設計方案
2 軟件設計
CAN 協(xié)議規范定義的數據鏈路層和部分物理層并不完整, 雙CAN 冗余應用需要實(shí)現總線(xiàn)狀態(tài)監控、網(wǎng)絡(luò )故障的診斷和標識, 這就要通過(guò)添加軟件冗余模塊來(lái)實(shí)現。冗余模塊在程序主循環(huán)中調用, 根據不同總線(xiàn)錯誤狀態(tài)執行收發(fā)通道切換。CAN 總線(xiàn)錯誤狀態(tài)分為3類(lèi): 錯誤激活、錯誤認可、總線(xiàn)關(guān)閉??偩€(xiàn)正常工作時(shí)處于錯誤激活狀態(tài),控制器檢測到錯誤后將發(fā)送/接收錯誤計數器的值遞增, 當值大于127時(shí)進(jìn)入錯誤認可, 大于255時(shí)總線(xiàn)關(guān)閉狀態(tài), CAN 總線(xiàn)錯誤檢測模塊通過(guò)讀取錯誤狀態(tài)寄存器作為總線(xiàn)故障的測試條件, 在錯誤狀態(tài)發(fā)生改變時(shí)調用冗余算法, 執行總線(xiàn)切換操作。
通過(guò)實(shí)際調試發(fā)現, 總線(xiàn)連接斷開(kāi)且只有1個(gè)節點(diǎn)不斷發(fā)送報文時(shí)產(chǎn)生發(fā)送錯誤, 控制器進(jìn)入錯誤認可狀態(tài), 但不進(jìn)入總線(xiàn)關(guān)閉狀態(tài); 其它錯誤均使錯誤計數器增加, 依次進(jìn)入錯誤認可狀態(tài)、總線(xiàn)關(guān)閉狀態(tài), 后兩種狀態(tài)表明總線(xiàn)被嚴重干擾, 需要采取相應措施。為簡(jiǎn)化控制邏輯設計將錯誤認可和總線(xiàn)關(guān)閉合并為總線(xiàn)故障。
冗余算法使用狀態(tài)機實(shí)現發(fā)送模式的切換, 根據不同總線(xiàn)故障選擇發(fā)送使用的總線(xiàn)。狀態(tài)切換流程圖如圖2所示, 程序首先讀取錯誤狀態(tài)寄存器獲得總線(xiàn)錯誤狀態(tài), 判斷當前總線(xiàn)是否處于錯誤激活模式, 若檢測到總線(xiàn)故障程序置相應標志位向其他程序模塊指示錯誤。為提高報文發(fā)送效率, 發(fā)送程序一次將多個(gè)報文寫(xiě)入發(fā)送郵箱由硬件控制自動(dòng)發(fā)送, 在切換總線(xiàn)時(shí), 需先把故障總線(xiàn)發(fā)送郵箱中的報文中回讀, 通過(guò)備份總線(xiàn)優(yōu)先發(fā)送, 這一機制保證報文不會(huì )因總線(xiàn)切換而丟失。控制器向故障總線(xiàn)發(fā)送數據域為空的測試報文, 每成功發(fā)送1報文, 總線(xiàn)發(fā)送錯誤計數器的值遞減, 直至其值小于128總線(xiàn)恢復到錯誤被動(dòng)狀態(tài); 每隔一定時(shí)間冗余程序讀取錯誤狀態(tài)寄存器, 檢測故障總線(xiàn)是否恢復正常。
在2總線(xiàn)同時(shí)傳輸模式, 發(fā)送程序優(yōu)先寫(xiě)入總線(xiàn)1郵箱, 當總線(xiàn)1郵箱滿(mǎn)時(shí)寫(xiě)入總線(xiàn)2的郵箱, 由于報文按優(yōu)先級仲裁發(fā)送, 若某一路發(fā)送郵箱經(jīng)常為空, 說(shuō)明該路總線(xiàn)通信流量較小, 發(fā)送程序將較多報文轉由空閑總線(xiàn)發(fā)送, 實(shí)現報文的負載均衡。
圖2 總線(xiàn)狀態(tài)切換流程圖。
3 雙總線(xiàn)冗余的可靠性分析與測試
對雙CAN 冗余系統的可靠性進(jìn)行定量分析, 引入平均無(wú)故障運行時(shí)間(M ean T ime To Fa ilure, MTTF)的概念。MTTF描述一個(gè)系統從開(kāi)始工作到發(fā)生故障的時(shí)間間隔, 也即平均壽命。為簡(jiǎn)化分析作如下假設: 每路CAN總線(xiàn)的故障率相同; CAN 總線(xiàn)的損壞屬于物理?yè)p壞, 即不可修復的損壞。指數分布可以很好地用來(lái)描述電子元器件的壽命, 假設CAN總線(xiàn)的壽命分布服從指數分布, CAN 總線(xiàn)的可靠性模型如圖3所示。
圖3 CAN 總線(xiàn)可靠性模型圖
模型1為單總線(xiàn)的可靠性模型, 因為總線(xiàn)壽命服從指數分布, 根據單一CAN總線(xiàn)無(wú)故障運行時(shí)間MTTF1 = 1 /λ。模型2為雙CAN總線(xiàn)冗余可靠性模型, 系統由兩條獨立的總線(xiàn)并聯(lián)而成, 即只有當這2條總線(xiàn)都失效時(shí)系統通信才會(huì )失敗, 于是系統的平均壽命MTTF2 = 3 /2。采用雙線(xiàn)冗余設計使CAN 通信的平均無(wú)故障時(shí)間增加了50%。
pid控制器相關(guān)文章:pid控制器原理
評論