<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è) > 手機與無(wú)線(xiàn)通信 > 設計應用 > CANopen從站協(xié)議的設計與實(shí)現

CANopen從站協(xié)議的設計與實(shí)現

作者: 時(shí)間:2013-05-31 來(lái)源:網(wǎng)絡(luò ) 收藏

摘要:CANopcn作為一種開(kāi)放性好、標準化、低成本的基于CAN總線(xiàn)的應用層協(xié)議,目前已經(jīng)廣泛地應用于工業(yè)自動(dòng)化領(lǐng)域。文章根據CANop-en DS301應用層協(xié)議規范,在以單片機為控制核心的開(kāi)發(fā)平臺上建立了從節點(diǎn)協(xié)議??偪蚣?,并實(shí)現了其中的各種功能模塊,整合成完整的協(xié)議棧,在搭建的實(shí)驗平臺上進(jìn)行了協(xié)議棧的測試,實(shí)驗表明:該協(xié)議棧功能完整,實(shí)時(shí)性滿(mǎn)足使用要求。
關(guān)鍵詞:;;

0 引言
隨著(zhù)現代工業(yè)的發(fā)展,控制系統的規模與復雜度成倍增長(cháng),數據傳輸的吞吐量和可靠性要求也隨之提升,現場(chǎng)總線(xiàn)技術(shù)就是在這種情況下被提出并迅速發(fā)展起來(lái)的。CAN總線(xiàn)是現場(chǎng)總線(xiàn)國際標準之一,它具有可靠性好、實(shí)時(shí)性高、抗干擾能力較強等優(yōu)點(diǎn),廣泛應用于汽車(chē)和工業(yè)控制領(lǐng)域。但由于其只定義了物理層和數據鏈路層,并非一個(gè)完整的協(xié)議,在高級應用中需要應用層的支持,于是標準應運而生。
CANopen是自動(dòng)化CAN用戶(hù)和制造商協(xié)會(huì )(CiA,CAN-in-Automation)定義的CAN總線(xiàn)應用層協(xié)議。它采用面向對象的思想設計,具有很好的模塊化特性和很高的適應性。CANopcn不僅定義了應用層和通信子協(xié)議,還為大多數重要的設備類(lèi)型定義了大量的規范,不同廠(chǎng)商遵循這些規范開(kāi)發(fā)出的設備之間能夠輕易實(shí)現互操作。
CANopen作為基于CAN總線(xiàn)的高層協(xié)議標準,在發(fā)布后不久就獲得了廣泛的承認。尤其是在歐洲,CANopcn協(xié)議被認為是在基于CAN的工業(yè)系統中占據領(lǐng)導地位的標準。

1 CANopen協(xié)議總體框架
CANopen協(xié)議棧主要包含了兩部分,一部分是通信規范,另一部分是設備規范。通信規范(CiA:DS-3011定義了基本的數據通信方式和特性,設備規范(CiA DSP 401-DSP4XX)則針對不同的設備類(lèi)型進(jìn)行了報文ID的分配和設備特征數據的定義,規范了設備的行為規范。其中通信規范是通用的,本文設計與實(shí)現的就是這一部分。
在通信規范中,為了互操作性和兼容性,CANopcn設備都必須遵從標準的CANopen設備模型來(lái)進(jìn)行軟件設計,如圖1所示。

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

a.jpg


CAN通信接口通過(guò)操作CAN控制器,在總線(xiàn)上收發(fā)各種通信對象,來(lái)實(shí)現與其他CANopen節點(diǎn)基于協(xié)議規范的數據交互;對象字典是CANop-cn設備的核心,存儲節點(diǎn)所有的信息,并向應用程序和通信對象提供訪(fǎng)問(wèn)接口;通信部分通過(guò)對對象字典進(jìn)行操作,與其他節點(diǎn)交換各種通信對象實(shí)現CANopen操作;應用程序由用戶(hù)根據應用要求和設備的具體任務(wù)自己實(shí)現。

2 CANopen功能模塊實(shí)現
2.1 CAN驅動(dòng)程序實(shí)現
針對單片機,實(shí)現了CAN驅動(dòng)程序。CAN驅動(dòng)程序負責完成CAN控制器的操作、報文收發(fā)、CAN錯誤處理等任務(wù),由以下部分組成:1)CAN控制器的初始化,主要對CAN控制器的相關(guān)寄存器進(jìn)行配置,包括波特率的設置,消息對象的配置,接收、發(fā)送屏蔽寄存器的設置;2)CAN發(fā)送程序,任務(wù)是將打包好的數據根據幀標識符,通過(guò)接口寄存器分發(fā)到相應的郵箱里,然后啟動(dòng)發(fā)送;3)CAN接收程序,由CAN中斷處理程序來(lái)完成,負責將報文分配給各個(gè)通信模塊處理。
2.2 對象字典實(shí)現
對象字典OD(Object Dictionary)是一個(gè)有序的對象組:每個(gè)對象采用一個(gè)16位的索引值來(lái)尋址,同時(shí)定義了一個(gè)8位的子索引用于訪(fǎng)問(wèn)數據結構中的單個(gè)元素。每個(gè)CANopen設備中都必須包含一個(gè)對象字典。對象字典分為了兩部分,通用的通信子協(xié)議區域和特定的設備子協(xié)議區域,前者包含了描述這個(gè)設備通信行為的所有參數,后者包含了設備任務(wù)相關(guān)的所有數據。
本文設計的對象字典結構如圖2所示。

b.jpg


針對單片機計算資源緊缺的特點(diǎn),對象字典實(shí)體采用二維靜態(tài)結構體來(lái)實(shí)現,它具有結構簡(jiǎn)單、訪(fǎng)問(wèn)效率高等優(yōu)點(diǎn)。讀寫(xiě)函數與對象字典實(shí)體配套使用,目的是將對象字典封閉起來(lái),有效地杜絕非法訪(fǎng)問(wèn)的情況,保障對象字典的數據安全。
2.3 通信對象的實(shí)現
CANopcn協(xié)議規定了4類(lèi)通訊對象:SDO(Service Data Objeet,服務(wù)數據對象)、過(guò)程數據對象)、NMT(NetworkManagement,網(wǎng)絡(luò )管理對象)以及特殊功能對象。


上一頁(yè) 1 2 3 下一頁(yè)

關(guān)鍵詞: CANopen C8051F500 從站協(xié)議

評論


相關(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>