圖3:CAN總線模型
基于STM32F105微控制器的雙CAN冗余的方案設(shè)計(jì)
發(fā)布時間:2014-10-16 責(zé)任編輯:echolady
【導(dǎo)讀】控制局域網(wǎng)又稱CAN,是一種多主方式的串行通訊總線。CAN總線以其抗電磁干擾性強(qiáng)、位速率高、錯誤檢測機(jī)制完善的特點(diǎn)被廣泛應(yīng)用于航空航天、汽車制造等工業(yè)領(lǐng)域。尤其是船在行駛時,環(huán)境惡劣,通信方面的準(zhǔn)確性和可靠性高,雙CAN冗余總線的通信完全符合條件。針對這種情況,本文中的方案設(shè)計(jì)是基于STM32F105微控制器的雙CAN 冗余設(shè)計(jì)方案。
一、硬件設(shè)計(jì)
1、平臺搭建
STM32F105是一款基于ARM Co rtex- M3內(nèi)核的32位微控制器, 其內(nèi)核是專門設(shè)計(jì)于滿足高性能、低功耗、實(shí)時應(yīng)用的嵌入式領(lǐng)域的要求。由于采用Thumb - 2指令集,與ARM7微控制器相比STM32運(yùn)行速度最多可快35% 且代碼最多節(jié)省45% 。較高的主頻和代碼執(zhí)行效率使系統(tǒng)在進(jìn)行CAN 總線數(shù)據(jù)收發(fā)的同時仍可運(yùn)行總線冗余算法。STM32F105微控制器內(nèi)部集成2路獨(dú)立的CAN 控制器, 控制器集成在芯片內(nèi)部, 避免了總線外擴(kuò)引入的干擾, 同時簡化了電路設(shè)計(jì)、降低成本。
2、方案設(shè)計(jì)
系統(tǒng)使用兩條完全獨(dú)立的CAN 總線, 兩個CAN 總線收發(fā)器和總線控制器, 實(shí)現(xiàn)物理層、數(shù)據(jù)鏈路層的全面冗余。在初始化時兩個控制器被同時激活, 一個作為主CAN, 另一個作為從CAN, 為主控制器的備份。正常運(yùn)作時, 數(shù)據(jù)通過主CAN 優(yōu)先發(fā)送; 當(dāng)主CAN 總線繁忙時, 從CAN 總線分擔(dān)部分通信流量; 而當(dāng)主CAN 總線發(fā)生故障時, 數(shù)據(jù)轉(zhuǎn)移至從CAN 控制器傳輸, 反之亦然。在任一總線發(fā)生故障時,數(shù)據(jù)都能經(jīng)由另一條總線傳輸, 而當(dāng)兩條總線都正常時, 使用兩總線同時傳輸, 增加約1倍的通信帶寬,這樣在保證了通信可靠性的同時提高了實(shí)時性。
CAN 總線接口電路設(shè)計(jì)如圖1所示,使用TJA1050作為總線收發(fā)器,它完成CAN 控制器與物理總線之間的電平轉(zhuǎn)換和差動收發(fā)。盡管TJA1050本身具備一定的保護(hù)能力,但其與總線接口部分還是采用一定的安全和抗干擾措施;TJA1050的CANH 和CANL與地之間并聯(lián)兩只10pF的小電容, 可以濾除總線上的高頻干擾;另外,為了增強(qiáng)CAN 總線節(jié)點(diǎn)的抗干擾能力,總線輸入端與地之間分別接入一只瞬態(tài)抑制二極管,當(dāng)兩輸入與地之間出現(xiàn)瞬變干擾時,收發(fā)器輸入端電壓被鉗位在安全范圍。
為防止總線過壓造成節(jié)點(diǎn)損壞,STM32F105內(nèi)置CAN 控制器的數(shù)據(jù)收發(fā)引腳并不與TJA1050直接相連,通過ADuM1201磁隔離器實(shí)現(xiàn)信號隔離傳輸。與傳統(tǒng)光耦隔離相比,磁隔離簡化了隔離電路設(shè)計(jì),并且磁隔離芯片的功耗很低,大約相當(dāng)于光耦隔離的1/10。除了將CAN 數(shù)據(jù)信號隔離外,TJA1050T使用的電源和地也必須與系統(tǒng)完全隔離,使用5V 隔離輸出的開關(guān)電源模塊IB0505LS提供隔離電源。由于CAN 總線數(shù)據(jù)傳輸率較高,為了提高信號質(zhì)量,網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)應(yīng)盡量設(shè)計(jì)成單線結(jié)構(gòu)以避免信號反射, 同時終端連接120歐姆左右的匹配電阻。
圖1:CAN 接口電路設(shè)計(jì)
二、軟件設(shè)計(jì)
CAN 協(xié)議規(guī)范定義的數(shù)據(jù)鏈路層和部分物理層并不完整,雙CAN 冗余應(yīng)用需要實(shí)現(xiàn)總線狀態(tài)監(jiān)控、網(wǎng)絡(luò)故障的診斷和標(biāo)識,這就要通過添加軟件冗余模塊來實(shí)現(xiàn)。冗余模塊在程序主循環(huán)中調(diào)用,根據(jù)不同總線錯誤狀態(tài)執(zhí)行收發(fā)通道切換。CAN 總線錯誤狀態(tài)分為3類:錯誤激活、錯誤認(rèn)可、總線關(guān)閉。總線正常工作時處于錯誤激活狀態(tài),控制器檢測到錯誤后將發(fā)送/接收錯誤計(jì)數(shù)器的值遞增,當(dāng)值大于127時進(jìn)入錯誤認(rèn)可,大于255時總線關(guān)閉狀態(tài),CAN 總線錯誤檢測模塊通過讀取錯誤狀態(tài)寄存器作為總線故障的測試條件,在錯誤狀態(tài)發(fā)生改變時調(diào)用冗余算法,執(zhí)行總線切換操作。
通過實(shí)際調(diào)試發(fā)現(xiàn),總線連接斷開且只有1個節(jié)點(diǎn)不斷發(fā)送報文時產(chǎn)生發(fā)送錯誤,控制器進(jìn)入錯誤認(rèn)可狀態(tài),但不進(jìn)入總線關(guān)閉狀態(tài);其它錯誤均使錯誤計(jì)數(shù)器增加,依次進(jìn)入錯誤認(rèn)可狀態(tài)、總線關(guān)閉狀態(tài),后兩種狀態(tài)表明總線被嚴(yán)重干擾 需要采取相應(yīng)措施。為簡化控制邏輯設(shè)計(jì)將錯誤認(rèn)可和總線關(guān)閉合并為總線故障。
冗余算法使用狀態(tài)機(jī)實(shí)現(xiàn)發(fā)送模式的切換,根據(jù)不同總線故障選擇發(fā)送使用的總線。狀態(tài)切換流程圖如圖2所示,程序首先讀取錯誤狀態(tài)寄存器獲得總線錯誤狀態(tài),判斷當(dāng)前總線是否處于錯誤激活模式,若檢測到總線故障程序置相應(yīng)標(biāo)志位向其他程序模塊指示錯誤。為提高報文發(fā)送效率,發(fā)送程序一次將多個報文寫入發(fā)送郵箱由硬件控制自動發(fā)送,在切換總線時,需先把故障總線發(fā)送郵箱中的報文中回讀,通過備份總線優(yōu)先發(fā)送,這一機(jī)制保證報文不會因總線切換而丟失。控制器向故障總線發(fā)送數(shù)據(jù)域?yàn)榭盏臏y試報文,每成功發(fā)送1報文,總線發(fā)送錯誤計(jì)數(shù)器的值遞減,直至其值小于128總線恢復(fù)到錯誤被動狀態(tài);每隔一定時間冗余程序讀取錯誤狀態(tài)寄存器,檢測故障總線是否恢復(fù)正常。
在2總線同時傳輸模式,發(fā)送程序優(yōu)先寫入總線1郵箱,當(dāng)總線1郵箱滿時寫入總線2的郵箱,由于報文按優(yōu)先級仲裁發(fā)送,若某一路發(fā)送郵箱經(jīng)常為空,說明該路總線通信流量較小,發(fā)送程序?qū)⑤^多報文轉(zhuǎn)由空閑總線發(fā)送,實(shí)現(xiàn)報文的負(fù)載均衡。
圖2:總線狀態(tài)切換流程圖
[page]
三、雙總線冗余的可靠性分析與測試
對雙CAN 冗余系統(tǒng)的可靠性進(jìn)行定量分析,引入平均無故障運(yùn)行時間(M ean T ime To Fa ilure, MTTF)的概念。MTTF描述一個系統(tǒng)從開始工作到發(fā)生故障的時間間隔,也即平均壽命。為簡化分析作如下假設(shè): 每路CAN總線的故障率相同;CAN 總線的損壞屬于物理損壞。即不可修復(fù)的損壞。指數(shù)分布可以很好地用來描述電子元器件的壽命, 假設(shè)CAN總線的壽命分布服從指數(shù)分布, CAN 總線的可靠性模型如圖3所示。
圖3:CAN總線模型
模型1為單總線的可靠性模型,因?yàn)榭偩€壽命服從指數(shù)分布,根據(jù)單一CAN總線無故障運(yùn)行時間MTTF1 = 1 /λ。模型2為雙CAN總線冗余可靠性模型,系統(tǒng)由兩條獨(dú)立的總線并聯(lián)而成,即只有當(dāng)這2條總線都失效時系統(tǒng)通信才會失敗,于是系統(tǒng)的平均壽命MTTF2 = 3 /2。采用雙線冗余設(shè)計(jì)使CAN 通信的平均無故障時間增加了50%。
雙線CAN 冗余系統(tǒng)的另一關(guān)鍵指標(biāo)是總線切換時間,它等于檢測錯誤所需時間與處理故障總線未發(fā)送報文所需時間之和,切換時間越短,總線故障對報文傳輸造成的延遲就越小。檢測錯誤所需時間,即從總線錯誤出現(xiàn)到被冗余程序檢測到所需的時間。以總線斷開故障為例,發(fā)送器每發(fā)送一個報文產(chǎn)生一次應(yīng)答錯誤。錯誤計(jì)數(shù)器每次加8, 需連續(xù)進(jìn)行16次發(fā)送,使錯誤計(jì)數(shù)器值達(dá)到128引起總線切換。在位速率125kbps情況下,發(fā)送最長為128位的報文,若忽略控制器重發(fā)間隔時間,從故障發(fā)生到被檢測到的響應(yīng)時間為:
為避免在總線切換時丟失報文,冗余算法需回讀故障控制器中未發(fā)送報文,由此產(chǎn)生額外的故障處理時間,因?yàn)槊總€發(fā)送郵箱最多存儲3個報文,假定位速率125kbps不變,備份總線發(fā)送時即取得仲裁,最長故障處理時間為:
因此總線切換時間為16. 38+ 3. 07= 19. 45m s。
通過實(shí)驗(yàn)測得在125kbps位速率下連續(xù)發(fā)送不同報文長度的總線切換時間如表1所示:
表1:總線切換時間
在125kbps位速率下切換時間為22.80ms, 比理論計(jì)算值稍長,這是由總線切換時運(yùn)行冗余算法及讀取控制器錯誤寄存器( ESR)所額外消耗的,但在實(shí)際應(yīng)用中,發(fā)送報文獲取仲裁所需的等待時間遠(yuǎn)大于切換時間,總線故障并不頻繁發(fā)生,冗余切換算法對系統(tǒng)的運(yùn)行并無顯著影響。
結(jié)語:此次設(shè)計(jì)方案充分利用了微控制器STM32F105,在其中內(nèi)置了兩路CAN控制器,這種設(shè)計(jì)思路與傳統(tǒng)的在單片機(jī)總線外擴(kuò)兩片CAN控制器的冗余方案相比,電路設(shè)計(jì)更加簡單,成本更低,系統(tǒng)的整體可靠性得到了提高。利用雙總線負(fù)載均衡技術(shù),能夠平衡通信負(fù)荷,提高總線帶寬。在船舶機(jī)艙監(jiān)控系統(tǒng)中能夠獲得良好的信號傳輸。
特別推薦
- 授權(quán)代理商貿(mào)澤電子供應(yīng)Same Sky多樣化電子元器件
- 使用合適的窗口電壓監(jiān)控器優(yōu)化系統(tǒng)設(shè)計(jì)
- ADI電機(jī)運(yùn)動控制解決方案 驅(qū)動智能運(yùn)動新時代
- 倍福推出采用 TwinSAFE SC 技術(shù)的 EtherCAT 端子模塊 EL3453-0090
- TDK推出新的X系列環(huán)保型SMD壓敏電阻
- Vishay 推出新款采用0102、0204和 0207封裝的精密薄膜MELF電阻
- Microchip推出新款交鑰匙電容式觸摸控制器產(chǎn)品 MTCH2120
技術(shù)文章更多>>
- 功率器件熱設(shè)計(jì)基礎(chǔ)(九)——功率半導(dǎo)體模塊的熱擴(kuò)散
- 準(zhǔn) Z 源逆變器的設(shè)計(jì)
- 第12講:三菱電機(jī)高壓SiC芯片技術(shù)
- 一文看懂電壓轉(zhuǎn)換的級聯(lián)和混合概念
- 意法半導(dǎo)體推出首款超低功耗生物傳感器,成為眾多新型應(yīng)用的核心所在
技術(shù)白皮書下載更多>>
- 車規(guī)與基于V2X的車輛協(xié)同主動避撞技術(shù)展望
- 數(shù)字隔離助力新能源汽車安全隔離的新挑戰(zhàn)
- 汽車模塊拋負(fù)載的解決方案
- 車用連接器的安全創(chuàng)新應(yīng)用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索
單向可控硅
刀開關(guān)
等離子顯示屏
低頻電感
低通濾波器
低音炮電路
滌綸電容
點(diǎn)膠設(shè)備
電池
電池管理系統(tǒng)
電磁蜂鳴器
電磁兼容
電磁爐危害
電動車
電動工具
電動汽車
電感
電工電路
電機(jī)控制
電解電容
電纜連接器
電力電子
電力繼電器
電力線通信
電流保險絲
電流表
電流傳感器
電流互感器
電路保護(hù)
電路圖