<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è) > 汽車(chē)電子 > 設計應用 > CAN總線(xiàn)的淺析CANopen協(xié)議

CAN總線(xiàn)的淺析CANopen協(xié)議

作者:中國單片機公共實(shí)驗室 呂京建 張宏韜 時(shí)間:2004-07-23 來(lái)源: 收藏
摘  要: 本文分析了CAN總線(xiàn)的一些特點(diǎn)以及在國內的的應用狀況,提出了引入國際上通用的CAN總線(xiàn)高層應用協(xié)議,以提高國內CAN系統應用水平的建議,并簡(jiǎn)要介紹了一種CAN的高層協(xié)議—CANopen協(xié)議。文章最后部分介紹了國際上一些較先進(jìn)的CAN產(chǎn)品和開(kāi)發(fā)方法。
關(guān)鍵詞: CAN-bus協(xié)議;CANopen協(xié)議;嵌入式軟件中間件

在設計嵌入式系統,尤其是分布式嵌入式系統時(shí),解決好系統各單元間可靠、有效的通信是系統設計成敗的關(guān)鍵,對實(shí)時(shí)性和安全可靠性要求高的網(wǎng)絡(luò )而言就更是如此。解決這一問(wèn)題有多種方案,如RS232/485串行總線(xiàn)、CAN、ProfitBus、FF、WorldFIP、LonWorks等各類(lèi)型的現場(chǎng)總線(xiàn),還有嵌入式以太網(wǎng)等。其中,盡管RS485串行總線(xiàn)協(xié)議的性能不高,但由于其在硬件成本以及開(kāi)發(fā)簡(jiǎn)便性上的巨大優(yōu)勢,目前仍然是國內廣泛的總線(xiàn)應用。
隨著(zhù)嵌入式系統應用的發(fā)展,RS485性能上的不足逐漸顯露出來(lái),已經(jīng)不能滿(mǎn)足設計一個(gè)高性能、高實(shí)時(shí)性系統的要求。盡管還需要實(shí)踐的證明,但筆者經(jīng)過(guò)多年的觀(guān)察和實(shí)踐,感覺(jué)到CAN總線(xiàn)是其中最有希望成功的。

選擇CAN總線(xiàn)實(shí)現
通信的原因
選擇CAN總線(xiàn)作為最佳候選者,主要是基于以下幾方面原因:
CAN串行總線(xiàn)具有高性能
CAN的傳輸距離可以達到10公里;通信速率最高可達1Mbps;具有完善的錯誤檢測機制;采用“多重訪(fǎng)問(wèn)沖突仲裁”機制的幀傳輸方式,可保證不丟失信息;每一幀中最多可以傳輸8個(gè)字節數據,可提供很高的實(shí)時(shí)性等等。性能上的優(yōu)勢保證了CAN可以應用在很多的領(lǐng)域,在汽車(chē)工業(yè)、船舶運輸、機械控制、工廠(chǎng)自動(dòng)化、樓宇自動(dòng)化等都可以看到CAN的應用。
CAN在硬件成本上很具優(yōu)勢
除了性能外,和其它現場(chǎng)總線(xiàn)相比,CAN總線(xiàn)在硬件成本上也有很大優(yōu)勢。從硬件芯片上來(lái)說(shuō),智能節點(diǎn)要收發(fā)信息需要一個(gè)CAN控制器和一個(gè)CAN收發(fā)器。經(jīng)過(guò)20多年的發(fā)展,CAN已經(jīng)獲得了國際上各大半導體制造商的大力支持,據CAN最主要的推廣組織CIA(自動(dòng)化CAN)統計,目前已經(jīng)有20余種CAN控制器和收發(fā)器可供選擇,片內集成CAN控制器的單片機更多達100余種。CAN在開(kāi)發(fā)成本上的優(yōu)勢也很明顯
目前,從廣泛應用的8位/16位單片機,到DSP和32位的PowerPC、ARM等嵌入式處理器,均在芯片內部含有CAN總線(xiàn)硬件接口單元。因此,從硬件角度看,CAN具備其它現場(chǎng)總線(xiàn)無(wú)法比擬的高集成化優(yōu)勢和廣泛的市場(chǎng)支持基礎。
CAN的開(kāi)發(fā)平臺也比較簡(jiǎn)單,用戶(hù)如果選擇普通單片機加上CAN控制器進(jìn)行開(kāi)發(fā),則CAN的開(kāi)發(fā)平臺和普通單片機的開(kāi)發(fā)平臺完全相同;如果選擇帶有片內CAN控制器的單片機進(jìn)行開(kāi)發(fā),則只要換用支持該單片機的仿真器就可以了,其他開(kāi)發(fā)設備完全相同。開(kāi)發(fā)CAN也需要相應的驅動(dòng)程序。用戶(hù)可以自行根據選擇的CAN控制器開(kāi)發(fā)驅動(dòng)程序。


圖1 CANopen協(xié)議通信模型



圖2  CANopen設備模型



通過(guò)采用高層協(xié)議將CAN的應用推向深化
和其他的現場(chǎng)總線(xiàn)相比,CAN只定義了物理層和數據鏈路層的規范(遵循OSI標準),這種設計和CAN規范定義時(shí)的歷史條件有關(guān),也可以使CAN能夠更廣泛地適應不同的應用條件,但必然給用戶(hù)應用帶來(lái)一些不便。用戶(hù)在應用CAN協(xié)議時(shí),必須自行定義高層協(xié)議。
如何將CAN協(xié)議的應用推向更深的層次,同時(shí)滿(mǎn)足產(chǎn)品的兼容和互操作性?國際上通行的辦法是發(fā)展基于CAN的高層應用協(xié)議,只用在應用層上,不同公司的產(chǎn)品才可能實(shí)現互操作,好的應用層協(xié)議更可以為用戶(hù)帶來(lái)系統性能的飛躍。
在CAN總線(xiàn)協(xié)議飛速發(fā)展的20年中,很多領(lǐng)域都制定了CAN在該領(lǐng)域應用時(shí)所采用的高層協(xié)議規范。其中,比較著(zhù)名的有美國汽車(chē)工程師協(xié)會(huì )(SAE)制定的車(chē)內通信規范J1939等。這些協(xié)議和規范對CAN的推廣起了很大的作用,但總體來(lái)說(shuō),協(xié)議的模塊化特性都不太好,一般只能應用于特定的領(lǐng)域。為了能夠把CAN推廣到更多的領(lǐng)域,歐洲一些公司推出了CAL(應用層CAN)協(xié)議,盡管CAL在理論上正確,并在工業(yè)上可以投入應用,但每個(gè)用戶(hù)都必須設計一個(gè)新的子協(xié)議,因為CAL 是一個(gè)真正的應用層協(xié)議。CAL 可以被看作一個(gè)應用CAN 方案的必要理論步驟,但在這一領(lǐng)域它不會(huì )被推廣。從1993 年起,由Bosch公司領(lǐng)導的一個(gè)歐洲機構研究出一個(gè)協(xié)議原型,由此發(fā)展成為CANopen規范。
CANopen是一個(gè)基于CAL的子協(xié)議,采用面向對象的思想設計,具有很好的模塊化特性和很高的適應性,通過(guò)擴展可以適用于大量的應用領(lǐng)域。在CANopen規范基本完成之后,Bosch將其移交給CIA組織,由其進(jìn)行維護與發(fā)展。在1995年,CIA發(fā)表了完整版的CANopen通信子協(xié)議;僅僅用了5年的時(shí)間,它已成為全歐洲最重要的嵌入式網(wǎng)絡(luò )標準。
CANopen 不僅定義了應用層和通信子協(xié)議,而且為可編程系統、不同器件、接口、應用子協(xié)議定義了大量的行規,遵循這些行規開(kāi)發(fā)出的CANopen設備將能夠實(shí)現不同公司產(chǎn)品間的互操作。另外,CANopen協(xié)議是免許可證的,任何組織和個(gè)人都可以開(kāi)發(fā)支持CANopen協(xié)議的設備而不用支付版稅,這也是CANopen得到迅猛發(fā)展的重要原因之一。CANopen目前已在汽車(chē)工業(yè)控制系統,公共交通運輸系統,醫療設備,海運電子設備和建筑自動(dòng)化系統中取得了廣泛的應用,是將CAN應用推向深化的理想選擇。

采用CANopen協(xié)議
實(shí)現通信
CANopen協(xié)議中包含了標準的應用層規范和通信規范,其通信模型如圖1所示。在CANopen的應用層,設備間通過(guò)相互交換通信對象進(jìn)行通信。良好的分層和面向對象的設計思想將帶給用戶(hù)一個(gè)清晰的通信模型。

CANopen設備模型
一個(gè)CANopen設備模塊可以被分為3部分,如圖2所示。
通信接口和協(xié)議軟件提供在總線(xiàn)上收發(fā)通信對象的服務(wù)。不同CANopen設備間的通信都是通過(guò)交換通信對象完成的。這一部分直接面向CAN控制器進(jìn)行操作。
對象字典描述了設備使用的所有的數據類(lèi)型,通信對象和應用對象。是一個(gè)CANopen設備的核心部分。對象字典位于通信程序和應用程序之間,向應用程序提供接口,應用程序對對象字典進(jìn)行操作就可以實(shí)現CANopen通信。理解對象字典的概念是理解CANopen模型的關(guān)鍵。
應用程序由用戶(hù)編寫(xiě),包括功能部分和通信部分。通信部分通過(guò)對對象字典進(jìn)行操作實(shí)現CANopen通信,而功能部分由用戶(hù)根據應用要求實(shí)現。
CANopen網(wǎng)絡(luò )的通信和管理都是通過(guò)不同的通信對象來(lái)完成的,為了能夠實(shí)現通信,網(wǎng)絡(luò )管理,緊急情況處理等功能,CANopen規范定義了四類(lèi)標準的通信對象:


關(guān)鍵詞:

評論


相關(guān)推薦

技術(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>