圖3:CAN總線模型
基于STM32F105微控制器的雙CAN冗余的方案設(shè)計(jì)
發(fā)布時(shí)間:2014-10-16 責(zé)任編輯:echolady
【導(dǎo)讀】控制局域網(wǎng)又稱CAN,是一種多主方式的串行通訊總線。CAN總線以其抗電磁干擾性強(qiáng)、位速率高、錯(cuò)誤檢測機(jī)制完善的特點(diǎn)被廣泛應(yīng)用于航空航天、汽車制造等工業(yè)領(lǐng)域。尤其是船在行駛時(shí),環(huán)境惡劣,通信方面的準(zhǔn)確性和可靠性高,雙CAN冗余總線的通信完全符合條件。針對這種情況,本文中的方案設(shè)計(jì)是基于STM32F105微控制器的雙CAN 冗余設(shè)計(jì)方案。
一、硬件設(shè)計(jì)
1、平臺(tái)搭建
STM32F105是一款基于ARM Co rtex- M3內(nèi)核的32位微控制器, 其內(nèi)核是專門設(shè)計(jì)于滿足高性能、低功耗、實(shí)時(shí)應(yīng)用的嵌入式領(lǐng)域的要求。由于采用Thumb - 2指令集,與ARM7微控制器相比STM32運(yùn)行速度最多可快35% 且代碼最多節(jié)省45% 。較高的主頻和代碼執(zhí)行效率使系統(tǒng)在進(jìn)行CAN 總線數(shù)據(jù)收發(fā)的同時(shí)仍可運(yùn)行總線冗余算法。STM32F105微控制器內(nèi)部集成2路獨(dú)立的CAN 控制器, 控制器集成在芯片內(nèi)部, 避免了總線外擴(kuò)引入的干擾, 同時(shí)簡化了電路設(shè)計(jì)、降低成本。
2、方案設(shè)計(jì)
系統(tǒng)使用兩條完全獨(dú)立的CAN 總線, 兩個(gè)CAN 總線收發(fā)器和總線控制器, 實(shí)現(xiàn)物理層、數(shù)據(jù)鏈路層的全面冗余。在初始化時(shí)兩個(gè)控制器被同時(shí)激活, 一個(gè)作為主CAN, 另一個(gè)作為從CAN, 為主控制器的備份。正常運(yùn)作時(shí), 數(shù)據(jù)通過主CAN 優(yōu)先發(fā)送; 當(dāng)主CAN 總線繁忙時(shí), 從CAN 總線分擔(dān)部分通信流量; 而當(dāng)主CAN 總線發(fā)生故障時(shí), 數(shù)據(jù)轉(zhuǎn)移至從CAN 控制器傳輸, 反之亦然。在任一總線發(fā)生故障時(shí),數(shù)據(jù)都能經(jīng)由另一條總線傳輸, 而當(dāng)兩條總線都正常時(shí), 使用兩總線同時(shí)傳輸, 增加約1倍的通信帶寬,這樣在保證了通信可靠性的同時(shí)提高了實(shí)時(shí)性。
CAN 總線接口電路設(shè)計(jì)如圖1所示,使用TJA1050作為總線收發(fā)器,它完成CAN 控制器與物理總線之間的電平轉(zhuǎn)換和差動(dòng)收發(fā)。盡管TJA1050本身具備一定的保護(hù)能力,但其與總線接口部分還是采用一定的安全和抗干擾措施;TJA1050的CANH 和CANL與地之間并聯(lián)兩只10pF的小電容, 可以濾除總線上的高頻干擾;另外,為了增強(qiáng)CAN 總線節(jié)點(diǎn)的抗干擾能力,總線輸入端與地之間分別接入一只瞬態(tài)抑制二極管,當(dāng)兩輸入與地之間出現(xiàn)瞬變干擾時(shí),收發(fā)器輸入端電壓被鉗位在安全范圍。
為防止總線過壓造成節(jié)點(diǎn)損壞,STM32F105內(nèi)置CAN 控制器的數(shù)據(jù)收發(fā)引腳并不與TJA1050直接相連,通過ADuM1201磁隔離器實(shí)現(xiàn)信號(hào)隔離傳輸。與傳統(tǒng)光耦隔離相比,磁隔離簡化了隔離電路設(shè)計(jì),并且磁隔離芯片的功耗很低,大約相當(dāng)于光耦隔離的1/10。除了將CAN 數(shù)據(jù)信號(hào)隔離外,TJA1050T使用的電源和地也必須與系統(tǒng)完全隔離,使用5V 隔離輸出的開關(guān)電源模塊IB0505LS提供隔離電源。由于CAN 總線數(shù)據(jù)傳輸率較高,為了提高信號(hào)質(zhì)量,網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)應(yīng)盡量設(shè)計(jì)成單線結(jié)構(gòu)以避免信號(hào)反射, 同時(shí)終端連接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í),這就要通過添加軟件冗余模塊來實(shí)現(xiàn)。冗余模塊在程序主循環(huán)中調(diào)用,根據(jù)不同總線錯(cuò)誤狀態(tài)執(zhí)行收發(fā)通道切換。CAN 總線錯(cuò)誤狀態(tài)分為3類:錯(cuò)誤激活、錯(cuò)誤認(rèn)可、總線關(guān)閉。總線正常工作時(shí)處于錯(cuò)誤激活狀態(tài),控制器檢測到錯(cuò)誤后將發(fā)送/接收錯(cuò)誤計(jì)數(shù)器的值遞增,當(dāng)值大于127時(shí)進(jìn)入錯(cuò)誤認(rèn)可,大于255時(shí)總線關(guān)閉狀態(tài),CAN 總線錯(cuò)誤檢測模塊通過讀取錯(cuò)誤狀態(tài)寄存器作為總線故障的測試條件,在錯(cuò)誤狀態(tài)發(fā)生改變時(shí)調(diào)用冗余算法,執(zhí)行總線切換操作。
通過實(shí)際調(diào)試發(fā)現(xiàn),總線連接斷開且只有1個(gè)節(jié)點(diǎn)不斷發(fā)送報(bào)文時(shí)產(chǎn)生發(fā)送錯(cuò)誤,控制器進(jìn)入錯(cuò)誤認(rèn)可狀態(tài),但不進(jìn)入總線關(guān)閉狀態(tài);其它錯(cuò)誤均使錯(cuò)誤計(jì)數(shù)器增加,依次進(jìn)入錯(cuò)誤認(rèn)可狀態(tài)、總線關(guān)閉狀態(tài),后兩種狀態(tài)表明總線被嚴(yán)重干擾 需要采取相應(yīng)措施。為簡化控制邏輯設(shè)計(jì)將錯(cuò)誤認(rèn)可和總線關(guān)閉合并為總線故障。
冗余算法使用狀態(tài)機(jī)實(shí)現(xiàn)發(fā)送模式的切換,根據(jù)不同總線故障選擇發(fā)送使用的總線。狀態(tài)切換流程圖如圖2所示,程序首先讀取錯(cuò)誤狀態(tài)寄存器獲得總線錯(cuò)誤狀態(tài),判斷當(dāng)前總線是否處于錯(cuò)誤激活模式,若檢測到總線故障程序置相應(yīng)標(biāo)志位向其他程序模塊指示錯(cuò)誤。為提高報(bào)文發(fā)送效率,發(fā)送程序一次將多個(gè)報(bào)文寫入發(fā)送郵箱由硬件控制自動(dòng)發(fā)送,在切換總線時(shí),需先把故障總線發(fā)送郵箱中的報(bào)文中回讀,通過備份總線優(yōu)先發(fā)送,這一機(jī)制保證報(bào)文不會(huì)因總線切換而丟失??刂破飨蚬收峡偩€發(fā)送數(shù)據(jù)域?yàn)榭盏臏y試報(bào)文,每成功發(fā)送1報(bào)文,總線發(fā)送錯(cuò)誤計(jì)數(shù)器的值遞減,直至其值小于128總線恢復(fù)到錯(cuò)誤被動(dòng)狀態(tài);每隔一定時(shí)間冗余程序讀取錯(cuò)誤狀態(tài)寄存器,檢測故障總線是否恢復(fù)正常。
在2總線同時(shí)傳輸模式,發(fā)送程序優(yōu)先寫入總線1郵箱,當(dāng)總線1郵箱滿時(shí)寫入總線2的郵箱,由于報(bào)文按優(yōu)先級(jí)仲裁發(fā)送,若某一路發(fā)送郵箱經(jīng)常為空,說明該路總線通信流量較小,發(fā)送程序?qū)⑤^多報(bào)文轉(zhuǎn)由空閑總線發(fā)送,實(shí)現(xiàn)報(bào)文的負(fù)載均衡。
圖2:總線狀態(tài)切換流程圖
[page]
三、雙總線冗余的可靠性分析與測試
對雙CAN 冗余系統(tǒng)的可靠性進(jìn)行定量分析,引入平均無故障運(yùn)行時(shí)間(M ean T ime To Fa ilure, MTTF)的概念。MTTF描述一個(gè)系統(tǒng)從開始工作到發(fā)生故障的時(shí)間間隔,也即平均壽命。為簡化分析作如下假設(shè): 每路CAN總線的故障率相同;CAN 總線的損壞屬于物理損壞。即不可修復(fù)的損壞。指數(shù)分布可以很好地用來描述電子元器件的壽命, 假設(shè)CAN總線的壽命分布服從指數(shù)分布, CAN 總線的可靠性模型如圖3所示。
圖3:CAN總線模型
模型1為單總線的可靠性模型,因?yàn)榭偩€壽命服從指數(shù)分布,根據(jù)單一CAN總線無故障運(yùn)行時(shí)間MTTF1 = 1 /λ。模型2為雙CAN總線冗余可靠性模型,系統(tǒng)由兩條獨(dú)立的總線并聯(lián)而成,即只有當(dāng)這2條總線都失效時(shí)系統(tǒng)通信才會(huì)失敗,于是系統(tǒng)的平均壽命MTTF2 = 3 /2。采用雙線冗余設(shè)計(jì)使CAN 通信的平均無故障時(shí)間增加了50%。
雙線CAN 冗余系統(tǒng)的另一關(guān)鍵指標(biāo)是總線切換時(shí)間,它等于檢測錯(cuò)誤所需時(shí)間與處理故障總線未發(fā)送報(bào)文所需時(shí)間之和,切換時(shí)間越短,總線故障對報(bào)文傳輸造成的延遲就越小。檢測錯(cuò)誤所需時(shí)間,即從總線錯(cuò)誤出現(xiàn)到被冗余程序檢測到所需的時(shí)間。以總線斷開故障為例,發(fā)送器每發(fā)送一個(gè)報(bào)文產(chǎn)生一次應(yīng)答錯(cuò)誤。錯(cuò)誤計(jì)數(shù)器每次加8, 需連續(xù)進(jìn)行16次發(fā)送,使錯(cuò)誤計(jì)數(shù)器值達(dá)到128引起總線切換。在位速率125kbps情況下,發(fā)送最長為128位的報(bào)文,若忽略控制器重發(fā)間隔時(shí)間,從故障發(fā)生到被檢測到的響應(yīng)時(shí)間為:
為避免在總線切換時(shí)丟失報(bào)文,冗余算法需回讀故障控制器中未發(fā)送報(bào)文,由此產(chǎn)生額外的故障處理時(shí)間,因?yàn)槊總€(gè)發(fā)送郵箱最多存儲(chǔ)3個(gè)報(bào)文,假定位速率125kbps不變,備份總線發(fā)送時(shí)即取得仲裁,最長故障處理時(shí)間為:
因此總線切換時(shí)間為16. 38+ 3. 07= 19. 45m s。
通過實(shí)驗(yàn)測得在125kbps位速率下連續(xù)發(fā)送不同報(bào)文長度的總線切換時(shí)間如表1所示:
表1:總線切換時(shí)間
在125kbps位速率下切換時(shí)間為22.80ms, 比理論計(jì)算值稍長,這是由總線切換時(shí)運(yùn)行冗余算法及讀取控制器錯(cuò)誤寄存器( ESR)所額外消耗的,但在實(shí)際應(yīng)用中,發(fā)送報(bào)文獲取仲裁所需的等待時(shí)間遠(yuǎn)大于切換時(shí)間,總線故障并不頻繁發(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)中能夠獲得良好的信號(hào)傳輸。
特別推薦
- 是否存在有關(guān) PCB 走線電感的經(jīng)驗(yàn)法則?
- 一文看懂電壓轉(zhuǎn)換的級(jí)聯(lián)和混合概念
- 第12講:三菱電機(jī)高壓SiC芯片技術(shù)
- 準(zhǔn) Z 源逆變器的設(shè)計(jì)
- 貿(mào)澤電子持續(xù)擴(kuò)充工業(yè)自動(dòng)化產(chǎn)品陣容
- 低功耗嵌入式設(shè)計(jì)簡介
- 如何通過基本描述找到需要的電容?
技術(shù)文章更多>>
- 歐盟新規(guī)實(shí)施:新車必須安裝
- 破局時(shí)效,跨越速運(yùn)領(lǐng)航零擔(dān)快運(yùn)新征途
- 瑞典名企Roxtec助力構(gòu)建安全防線
- 貿(mào)澤與Cinch聯(lián)手發(fā)布全新電子書深入探討惡劣環(huán)境中的連接應(yīng)用
- 第二十二屆中國國際軟件合作洽談會(huì)在成都順利舉行
技術(shù)白皮書下載更多>>
- 車規(guī)與基于V2X的車輛協(xié)同主動(dòng)避撞技術(shù)展望
- 數(shù)字隔離助力新能源汽車安全隔離的新挑戰(zhàn)
- 汽車模塊拋負(fù)載的解決方案
- 車用連接器的安全創(chuàng)新應(yīng)用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索
空心線圈
控制變壓器
控制模塊
藍(lán)牙
藍(lán)牙4.0
藍(lán)牙模塊
浪涌保護(hù)器
雷度電子
鋰電池
利爾達(dá)
連接器
流量單位
漏電保護(hù)器
濾波電感
濾波器
路由器設(shè)置
鋁電解電容
鋁殼電阻
邏輯IC
馬達(dá)控制
麥克風(fēng)
脈沖變壓器
鉚接設(shè)備
夢想電子
模擬鎖相環(huán)
耐壓測試儀
逆變器
逆導(dǎo)可控硅
鎳鎘電池
鎳氫電池