<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于STM32F105微控制器的雙CAN冗余的方案設計

基于STM32F105微控制器的雙CAN冗余的方案設計

作者: 時(shí)間:2016-11-11 來(lái)源:網(wǎng)絡(luò ) 收藏
控制器局域網(wǎng)( Contro llerA reaN etwo rk, CAN)是一種多主方式的串行通訊總線(xiàn)。CAN 總線(xiàn)具有較高的位速率, 很強的抗電磁干擾性, 完善的錯誤檢測機制, 在汽車(chē)、制造業(yè)以及航空工業(yè)領(lǐng)域中得到廣泛應用 。由于船舶機艙環(huán)境極為惡劣, 且船舶航行過(guò)程中維修條件不如陸上, 對CAN 通信的可靠性要求很高, 采取雙CAN 冗余總線(xiàn)提高通信可靠性。本文提出一種基于STM32F105微控制器的雙CAN 冗余設計方案。

  1 硬件平臺組成

本文引用地址:http://dyxdggzs.com/article/201611/316690.htm

  STM32F105是STM icroe lectron ics公司推出的一款基于A(yíng)RM Co rtex- M3內核的32位微控制器, 其內核是專(zhuān)門(mén)設計于滿(mǎn)足高性能、低功耗、實(shí)時(shí)應用的嵌入式領(lǐng)域的要求。由于采用Thumb - 2指令集,與ARM7微控制器相比STM32運行速度最多可快35% 且代碼最多節省45% 。較高的主頻和代碼執行效率使系統在進(jìn)行CAN 總線(xiàn)數據收發(fā)的同時(shí)仍可運行總線(xiàn)冗余算法。STM32F105微控制器內部集成2路獨立的CAN 控制器, 控制器集成在芯片內部, 避免了總線(xiàn)外擴引入的干擾, 同時(shí)簡(jiǎn)化了電路設計、降低成本。

  系統使用兩條完全獨立的CAN 總線(xiàn), 兩個(gè)CAN 總線(xiàn)收發(fā)器和總線(xiàn)控制器, 實(shí)現物理層、數據鏈路層的全面冗余。在初始化時(shí)兩個(gè)控制器被同時(shí)激活, 一個(gè)作為主CAN, 另一個(gè)作為從CAN, 為主控制器的備份。正常運作時(shí), 數據通過(guò)主CAN 優(yōu)先發(fā)送; 當主CAN 總線(xiàn)繁忙時(shí), 從CAN 總線(xiàn)分擔部分通信流量; 而當主CAN 總線(xiàn)發(fā)生故障時(shí), 數據轉移至從CAN 控制器傳輸, 反之亦然。在任一總線(xiàn)發(fā)生故障時(shí),數據都能經(jīng)由另一條總線(xiàn)傳輸, 而當兩條總線(xiàn)都正常時(shí), 使用兩總線(xiàn)同時(shí)傳輸, 增加約1倍的通信帶寬,這樣在保證了通信可靠性的同時(shí)提高了實(shí)時(shí)性。

  CAN 總線(xiàn)接口電路設計如圖1所示, 使用T JA1050作為總線(xiàn)收發(fā)器, 它完成CAN 控制器與物理總線(xiàn)之間的電平轉換和差動(dòng)收發(fā)。盡管TJA1050本身具備一定的保護能力, 但其與總線(xiàn)接口部分還是采用一定的安全和抗干擾措施; T JA1050的CANH 和CANL與地之間并聯(lián)兩只10pF的小電容, 可以濾除總線(xiàn)上的高頻干擾; 另外, 為了增強CAN 總線(xiàn)節點(diǎn)的抗干擾能力, 總線(xiàn)輸入端與地之間分別接入一只瞬態(tài)抑制二極管, 當兩輸入與地之間出現瞬變干擾時(shí), 收發(fā)器輸入端電壓被鉗位在安全范圍。

  為防止總線(xiàn)過(guò)壓造成節點(diǎn)損壞, STM32F105內置CAN 控制器的數據收發(fā)引腳并不與TJA1050直接相連, 通過(guò)ADuM1201磁隔離器實(shí)現信號隔離傳輸。與傳統光耦隔離相比, 磁隔離簡(jiǎn)化了隔離電路設計, 并且磁隔離芯片的功耗很低, 大約相當于光耦隔離的1 /10。除了將CAN 數據信號隔離外,TJA1050T使用的電源和地也必須與系統完全隔離, 使用5V 隔離輸出的開(kāi)關(guān)電源模塊IB0505LS提供隔離電源。由于CAN 總線(xiàn)數據傳輸率較高, 為了提高信號質(zhì)量, 網(wǎng)絡(luò )拓撲結構應盡量設計成單線(xiàn)結構以避免信號反射, 同時(shí)終端連接120歐姆左右的匹配電阻。

圖1 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%。

  雙線(xiàn)CAN 冗余系統的另一關(guān)鍵指標是總線(xiàn)切換時(shí)間, 它等于檢測錯誤所需時(shí)間與處理故障總線(xiàn)未發(fā)送報文所需時(shí)間之和, 切換時(shí)間越短, 總線(xiàn)故障對報文傳輸造成的延遲就越小。檢測錯誤所需時(shí)間,即從總線(xiàn)錯誤出現到被冗余程序檢測到所需的時(shí)間。以總線(xiàn)斷開(kāi)故障為例, 發(fā)送器每發(fā)送一個(gè)報文產(chǎn)生一次應答錯誤, 錯誤計數器每次加8, 需連續進(jìn)行16次發(fā)送, 使錯誤計數器值達到128引起總線(xiàn)切換。在位速率125kbps情況下, 發(fā)送最長(cháng)為128位的報文, 若忽略控制器重發(fā)間隔時(shí)間, 從故障發(fā)生到被檢測到的響應時(shí)間為:

  為避免在總線(xiàn)切換時(shí)丟失報文, 冗余算法需回讀故障控制器中未發(fā)送報文, 由此產(chǎn)生額外的故障處理時(shí)間, 因為每個(gè)發(fā)送郵箱最多存儲3個(gè)報文, 假定位速率125kbps不變, 備份總線(xiàn)發(fā)送時(shí)即取得仲裁,最長(cháng)故障處理時(shí)間為:

  因此總線(xiàn)切換時(shí)間為16. 38+ 3. 07= 19. 45m s。

  通過(guò)實(shí)驗測得在125kbps位速率下連續發(fā)送不同報文長(cháng)度的總線(xiàn)切換時(shí)間如表1所示:

表1 總線(xiàn)切換時(shí)間

  在125kbps位速率下切換時(shí)間為22. 80ms, 比理論計算值稍長(cháng), 這是由總線(xiàn)切換時(shí)運行冗余算法及讀取控制器錯誤寄存器( ESR)所額外消耗的, 但在實(shí)際應用中, 發(fā)送報文獲取仲裁所需的等待時(shí)間遠大于切換時(shí)間, 總線(xiàn)故障并不頻繁發(fā)生, 冗余切換算法對系統的運行并無(wú)顯著(zhù)影響。

  4 結束語(yǔ)

  與傳統單片機總線(xiàn)外擴兩片CAN 控制器的冗余方案相比, 本設計充分利用STM32F105微控制器內置的兩路CAN 控制器, 簡(jiǎn)化電路設計, 相對降低了成本, 同時(shí)雙CAN 冗余通信系統的采用提高了系統整體可靠性。所使用雙總線(xiàn)負載均衡技術(shù), 可以提高總線(xiàn)帶寬, 平衡通信負荷。系統船舶機艙監控系統的圖像和數據信號的傳輸中取得很好的效果。

參考文獻:

[1].TJA1050datasheethttp://www.dzsc.com/datasheet/TJA1050_649182.html.
[2].ADuM1201datasheethttp://www.dzsc.com/datasheet/ADuM1201_125006.html.
[3].TJA1050Tdatasheethttp://www.dzsc.com/datasheet/TJA1050T_649183.html.



關(guān)鍵詞: STM32F105微控制器雙CAN冗

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>