CANopen協(xié)議詳情講解_第1頁
CANopen協(xié)議詳情講解_第2頁
CANopen協(xié)議詳情講解_第3頁
CANopen協(xié)議詳情講解_第4頁
CANopen協(xié)議詳情講解_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

實用標準文案精彩文檔根據DS301的內容進行介紹1、CAN總線CAN標準報文2、CANopen應用層協(xié)議CANopen協(xié)議不針對某種特別的應用對象,具有較高的配置靈活性,高數(shù)據傳輸能力,較低的實現(xiàn)復雜度。同時,CANopen完全基于CAN標準報文格式,而無需擴展報文的支持,最多支持127個節(jié)點,并且協(xié)議開源.一個標準的CANopen節(jié)點(下圖),在數(shù)據鏈路層之上,添加了應用層。該應用層一般由軟件實現(xiàn),和控制算法共同運行在實時處理單元內.一個標準的CANopen節(jié)點CANopen應用層協(xié)議細化了CAN總線協(xié)議中關于標識符的定義。定義標準報文的11比特標識符中高4比特為功能碼,后7比特為節(jié)點號,重命名為通訊對象標識符(COB-ID)。功能碼將所有的報文分為7個優(yōu)先級,按照優(yōu)先級從高至低依次為:網絡命令報文(NMT)同步報文(SYNC)緊急報文(EMERGENCY)時間戳(TIME)過程數(shù)據對象(PDO)服務數(shù)據對象(SDO)節(jié)點狀態(tài)報文(NMTErrControl)7位的節(jié)點號則表明CANopen網絡最多可支持127個節(jié)點共存(0號節(jié)點為主站).下表給出了各報文的COB-ID范圍.NMT命令為最高優(yōu)先級報文,由CANopen主站發(fā)出,用以更改從節(jié)點的運行狀態(tài)。SYNC報文定期由CANopen主站發(fā)出,所有的同步PDO根據SYNC報文發(fā)送。EMERGENCY報文由出現(xiàn)緊急狀態(tài)的從節(jié)點發(fā)出,任何具備緊急事件監(jiān)控與處理能力的節(jié)點會接收并處理緊急報文。TIME報文由CANopen主站發(fā)出,用于同步所有從站的內部時鐘.PDO分為4對發(fā)送和接收PDO,每一個節(jié)點默認擁有4對發(fā)送PDO和接收PDO,用于過程數(shù)據的傳遞。SDO分為發(fā)送SDO和接收SDO,用于讀寫對象字典.MTErrorControl報文由從節(jié)點發(fā)出,用以監(jiān)測從節(jié)點的運行狀態(tài)。狀態(tài)機CANopen的每一個節(jié)點都維護了一個狀態(tài)機。該狀態(tài)機的狀態(tài)決定了該節(jié)點當前支持的通訊方式以及節(jié)點行為。初始化時,節(jié)點將自動設置自身參數(shù)和CANopen對象字典,發(fā)出節(jié)點啟動報文,并不接收任何網絡報文。初始化完成后,自動進入預運行狀態(tài).在該狀態(tài),節(jié)點等待主站的網絡命令,接收主站的配置請求,因此可以接收和發(fā)送除了PDO以外的所有報文。運行狀態(tài)為節(jié)點的正常工作狀態(tài),接收并發(fā)送所有通訊報文。停止狀態(tài)為一種臨時狀態(tài),只能接收主站的網絡命令,以恢復運行或者重新啟動.CANopen節(jié)點狀態(tài)轉換圖CANopen節(jié)點狀態(tài)轉換條件3、DeviceModelCommunication提供通信對象和傳輸經過底層的數(shù)據的適當功能;ObjectDictionary對此設備上的應用程序對象,通信對象和狀態(tài)機的行為有影響的所有數(shù)據項的集合。Application由在處理環(huán)境方面的設備功能組成.設備應用在數(shù)據條目中的完整描述在對象字典中叫設備子文件(deviceprofile)4、OD每個節(jié)點維護一個對象字典(ObjectDictionary,OD)。該對象字典保存了節(jié)點信息、通訊參數(shù)和所有的過程數(shù)據,是CANopen節(jié)點的核心數(shù)據結構。上層應用程序也主要通過讀寫對象字典和CANopen應用層進行交互。CANopen對象字典為兩級數(shù)組結構,通過索引(16bits)和子索引(8bits)來編址。設備子文件中最重要的就是對象字典的描述,對象字典在slave節(jié)點中一般是在設備初始化寫好的不會修改,而在master節(jié)點中可以在運行過程中動態(tài)修改,不修改的OD一般存在ROM中,而修改的存在RAM中。由于它是由16bits的位索引,所以最多有65536個entries.根據節(jié)點所支持的通訊方式,每一個節(jié)點都必須實現(xiàn)1000h~1FFFh當中的一個必要子集,同時實現(xiàn)6000h以上部分的數(shù)據區(qū)。數(shù)據區(qū)大小由節(jié)點的功能自行決定.1000h以下部分所有的節(jié)點都不需實現(xiàn).對象字典作為在CAN總線上連接application和通信的媒介,其允許來自application數(shù)據在CAN網絡上進行交換。CANopen定義了可以進入對象字典的服務和通信對象。每一個入口通過索引和子索引來編址。在一個主索引里中的子索引入口的類型和屬性可能會變化.5、PDO數(shù)據處理對象(PDO)特別適合快速的數(shù)據處理傳輸.通信模塊針對這些數(shù)據處理對象定義了一個PDOproducer和一個或多個PDOconsumers。PDO的傳輸是由事件觸發(fā)的,這樣的事件可以是代表一個PDO變量的變化;可以是時間的過期或者是接收到一個特定的消息。過程數(shù)據直接在一個CAN消息中傳輸而不需要協(xié)議頭文件.一個PDO的長度是在0到8個字節(jié)之間。PDOs包含在其映射參數(shù)和通信參數(shù)中。TPDOs和RPDOs的最大的數(shù)可以被定義為512。一個簡單的CANopen設備一般支持4個PDOs。實際當中,對一個具體的CANopen設備而言,其PDOs的個數(shù)由應用層或設備profile來決定的。3。1PDO的結構—映射參數(shù)在對象詞典中一個PDO由臨近的條目構成。所謂的映射參數(shù)定義了這些條目的連接.一個映射參數(shù)通過索引、分索引和位數(shù)定義數(shù)據源.例如:一個CAN消息最多有8個字節(jié)。這意味著當使用一個PDO時,在一個PDO中發(fā)送8個字典的對象條目。3.2PDO的結構—通信參數(shù)為了傳輸一個PDO,通信參數(shù)定義了傳輸?shù)男再|和CAN標識符(CANidentifier)。PDO通信參數(shù)是在對象詞典的條目(RPDOs:index0x1400–0x15FF,TPDOs:0x1800—0x19FF)如果允許,映射參數(shù)在數(shù)據服務對象幫助下可以通過CAN修改。3。2COB—ID(CAN標識符,分索引1)COB-ID作為身份證明,PDO的優(yōu)先權在總線入口(access)之前。對于每一個CAN消息來說只允許有一個發(fā)送者(生產者)。然而,對這個已存在的消息來說其允許多個接收者(消費者)。位30=0,著對這個PDO來說一個遠程發(fā)送請求(RTR)是被允許.3。3PDO連接的例子設備A的輸入2和3被轉移到設備B的輸出1和3。兩個設備都支持完全映射。傳輸和接收都是PDOs使用的是相同的標識符0x01C0。因此設備B自動的接收由設備A發(fā)送的PDO。設備B作為接收者根據映射原理分析數(shù)據:它傳遞第一個字節(jié)到輸出1,傳遞第二個字節(jié)到輸出3.在另一方面,發(fā)送設備A以同樣的字節(jié)存儲它的輸入2和3。6、SDO數(shù)據字典作為應用層和通信層的主要數(shù)據交換媒介.一個CANopen設備的所有數(shù)據的入口可以通過對象字典來管理。每一個對象字典的入口可以用索引和子索引來表示其地址。CANopen定義了所謂的SDO就是用于進入到這些入口。通信模塊基于客戶-服務器框架上的數(shù)據交換。讀或寫入口總是由客戶來初始化并且是由服務器服務.每一個CANopen設備必須有一個數(shù)據服務對象服務器來進入到它的對象字典。SDO發(fā)送需要兩類不同的COBIDs(CANidentifier)。第一個COBID用于從客戶到服務器發(fā)送一個請求。服務器通過第二個COBID發(fā)送反饋信號到客戶。不同的COBID必須用于各自的方向以防止在CAN總線上的沖突。通信profile定義了COBIDs可以用defaultSDPserver.每一個CANopen設備可以處理127個SDOservers.CANopen標準CiADS-301定義了不同的協(xié)議用于發(fā)送SDOs。讀OD入口稱作為上傳,寫入口稱為下載。一個正在進行的發(fā)送可以在終止轉移服務幫助下由客戶或服務器來中斷。TPDO傳輸?shù)氖遣蓸拥臄?shù)據,當發(fā)生觸發(fā)TPDO傳輸?shù)氖录r,各個TPDO根據自己的傳輸類型決定是否進行采樣并傳輸。TPDO的傳輸分為同步和異步兩大類,傳輸類型為同步的,需要在接收到同步消息(SYNC)時采樣數(shù)據。同步又分為周期和非周期兩種.傳輸類型0為非周期傳輸,表示只有接收到同步消息并且規(guī)定的事件發(fā)生才進行采樣數(shù)據發(fā)送,具體是在收到同步對象后,判斷規(guī)定的事件是否發(fā)生,如果發(fā)生則進行采樣并觸發(fā)TPDO的發(fā)送。傳輸類型1~240為周期傳輸,傳輸類型的值表示在接收到對應個數(shù)的同步消息后采樣并觸發(fā)TPDO的發(fā)送,例如某個TPDO的傳輸類型為10,就表示此TPDO每次接收到10個同步消息后采樣并發(fā)送數(shù)據。傳輸類型252為非周期傳輸,在接收到同步對象后進行采樣但不發(fā)送,在接收到請求該數(shù)據的遠程幀后發(fā)送.傳輸類型253—255為異步傳輸,定義為此三種類型的TPDO在接收到遠程幀或規(guī)定的事件發(fā)生后進行傳輸.7、CANopen中的協(xié)議CANmessageinCANopen數(shù)據放在CAN幀中是按最小位在前的順序存放.NMTprotocol設置節(jié)點進入操作設置節(jié)點進入停止設置節(jié)點進入預操作設置節(jié)點進入復位應用設置節(jié)點進入復位通信配置所有節(jié)點時,使用nodeID=00NodeGuardProtocol主節(jié)點發(fā)送下列命令來詢問節(jié)點的狀態(tài)節(jié)點響應HeartBeatProtocol節(jié)點周期傳送它的狀態(tài)。BootupProtocol節(jié)點進入預操作狀態(tài)時,它發(fā)送:SDOprotocol所有SDO幀都具有相同的CAN幀長度:8bytes數(shù)據和rtr=0。SDODownloadexpeditedprotocol為了寫0xd0d1…到服務器節(jié)點對象字典,客戶機發(fā)送請求:SDOUploadexpeditedprotocol為了讀0xd0d1…到服務器節(jié)點對象字典,客戶機發(fā)送請求:SDOabortprotocolAbortcode(hexa)05030000Togglebitnotalternated05040000SDOprotocoltimedout05040001Client/servercommandspecifiernotvalidorunknown05040002Invalidblocksize(blockmodeonly)05040003Invalidsequencenumber(blockmodeonly)05040004CRCerror(blockmodeonly)05040005Outofmemory06010000Unsupportedaccesstoanobject06010001Attempttoreadawriteonlyobject06010002Attempttowriteareadonlyobject06020000Objectdoesnotexistintheobjectdictionary06040041ObjectcannotbemappedtothePDO06040042ThenumberandlengthoftheobjectstobemappedwhouldexeedPDOlength06040043Generalparameterincompatibilityreason06040047Generalinternalincompatibilityinthedevice06060000Accessfailedduetoahardwareerror06070010Datatypedoesnotmatch,lengthofserviceparameterdoesnotmatch06070012Datatypedoesnotmatch,lengthofserviceparametertoohight06070013Datatypedoesnotmatch,lengthofserviceparametertoolow06090011Sub—indexdoesnotexist。06090030Valuerangeofparameterexceeded(onlyforwriteaccess)06090031Valueofparameterwrittentoohight06090032Valueofparameterwrittentoolow06090036Maximumvalueislessthanminimumvalue08000000Generalerror08000020Datacannotbetransferredorstoredtotheapplication08000021Datacannotbetransferredorstoredtotheapplicationbecauseoflocalcontrol08000022Datacannotbetransferredorstoredtotheapplicationbecauseofthepresentdevicestate08000023Objectdictionarydynamicgenerationfailsornoobjectdictionaryispresent.8、CANopen中PDO與SDO配置HowtoconfigureaPDOTransmit?例子:--—-配置PDO0x1800+n—-——它的COBID是0x387-—--該PDO始終觸發(fā)傳輸—--—它必須包含數(shù)據:dataX(2bytes),dataY(4bytes),按下面的順序——dataX定義在索引0x6000,子索引03——dataY定義在索引0x2010,子索引211—索引1800+n,子索引01:寫COBID(4bytes)2—-子索引02:寫傳輸字節(jié)《t》(1byte)t=1to0xF0:PDO在每接到《t》個SYNC后被傳輸t=FD:在接收到PDO請求(rtr=1)后傳輸t=FF:根據事件進行傳輸,節(jié)點自發(fā)發(fā)送PDO3—索引1A00+n:定義第n個數(shù)據的映射子索引0:寫嵌入到PDO中的數(shù)據個數(shù)(1byte),本例是,寫入《2》子索引1:定義在哪里尋找嵌入的第一個數(shù)據和大小。(8bytes)格式是:index(2bytes)–subindex(1byte)–sizeinbits(1byte)本例,寫入《60000310》子索引2:定義在哪里尋找嵌入的第二個數(shù)據和大小。(8bytes)本例,寫入《20102120》配置節(jié)點5的PDO1802在每3個SYNC傳輸,發(fā)送的SDO(s)應為60523021801000087036052F021802030000006052F021A000200000060523021A011003006060523021A0220211020什么是PDOTransmitedPAGEXXX〈onrequestPAGEXXX〉?當一個節(jié)點接受到帶有相同COBID的rtr,該PDO必須傳輸。例如:如果帶有COBID384的PDO被請求,它就必須被傳輸.HowtoconfigureaPDOReceive?例子-———配置PDO0x1400+n——--它的COBID是0x183—--—該PDO始終觸發(fā)傳輸——-—它必須包含數(shù)據:dataX(2bytes),dataY(4bytes),按下面的順序--dataX定義在索引0x6000,子索引03--dataY定義在索引0x2010,子索引211—索引1400+n,子索引01:寫COBID(4bytes)2--子索引02:寫傳輸字節(jié)《t》(1byte)t=1to0xF0:PDO在每接到《t》個SYNC后被傳輸t=FD:在接收到PDO請求(rtr=1)后傳輸t=FF:根據事件進行傳輸,節(jié)點自發(fā)發(fā)送PDO3—索引1600+n:定義映射子索引0:寫嵌入到PDO中的數(shù)據個數(shù)(1byte),本例是,寫入《2》子索引1:定義在哪里尋找嵌入的第一個數(shù)據和大小。(8bytes)格式是:index(2bytes)–subindex(1byte)–sizeinbits(1byte)本例,寫入《60000310》子索引2:定義在哪里尋找嵌入的第二個數(shù)據和大小。(8bytes)本例,寫入《20102120》配置節(jié)點5的PDO1802在每3個SYNC接收,發(fā)送的SDO(s)應為60523021401000083016052F021402030000006052F0216000200000060523021601100300606052302160220211020HowtoconfigureaSDOclient?在CANopen網絡,每一個slave節(jié)點實現(xiàn)一個SDO服務器(index1200),來接收來自client節(jié)點的SDO.缺省情況下,slave節(jié)點功能都是很好的配置的了。一般,slave節(jié)點不需要實現(xiàn)任何SDOclient,因為它不需要發(fā)送SDO到其他的節(jié)點。Master節(jié)點為了發(fā)送SDO到slave節(jié)點,它應該有幾個SDOclients(每個slave一個)。項必須被配置在1280,1281,…配置SDOclient定義在index0x1280+n來和節(jié)點nsl通信1–Index1280+n,subindex01:writethecobIdtransmit(4bytes):600+nsl2–subindex02:writethecobIdreceive(4bytes):580+nsl3–subindex03:writetheslavenodeid(1byte):nsl(Optional)HowtoconfigureanodetosendtheSYNC?Index1006,subindex00:writetheperiodinmicroseconds。(4bytes):例子:tosendaSYNCevery10(dec)ms(1000micro),writethevalue:0x2710TheSDOshouldbeifitisthenode9:6092306100010270000Tostop,write0。Tostart,write0x40000080atindex0x1005,subindex0WhatistheSYNCmessage?Howtoconfigureanodetosenditsheartbeat?Tosenditsheartbeateverynmilliseconds:1–Index1017–subindex00:write《n》PAGEXXX(2bytes):例子:tosendaheartbeatevery100ms,writethevalue:0x64TheSDOshouldbe,ifitisthenode9:6092B17100064000000Tostop,write0。9、CANopen如何修改對象字典的理解SDO的基本結構如下:Client→Server/Server→Client下載/上傳(Download/upload)請求/應答(Request/response)分段/加速傳送(Segmented/expeditedtransfer)CAN幀數(shù)據字節(jié)長度用于后續(xù)每個分段的交替清零和置位的觸發(fā)位(togglebit)SDO中實現(xiàn)了5個請求/應答協(xié)議:啟動域下載(InitiateDomainDownload);域分段下載(DownloadDomainSegment);啟動域上傳(InitiateDomainUpload);域分段上傳(UploadDomainSegment)和域傳送中止(AbortDomainTransfer)?!煜螺d(Download)是指對對象字典進行寫操作,上傳(Upload)指對對象字典進行讀操作?!靺f(xié)議的SDO命令字(SDOCAN報文的第一個字節(jié))語法和細節(jié)在下面部分說明:(‘-’表示不相關,應為0).§讀取參數(shù)時,使用啟動域上傳(InitiateDomainUpload)協(xié)議§設置參數(shù)時,使用啟動域下載(InitiateDomainDownload)協(xié)議n:表示報文數(shù)據中無意義數(shù)據的字節(jié)數(shù)【從(8-n)字節(jié)到第7字節(jié)數(shù)據無意義】(當e=1且s=1時n有效,否則n為0)。e:e=0時正常傳送,e=1時加速傳送。s:表示是否指明數(shù)據長度,0為數(shù)據長度未指明,1為數(shù)據長度指明。e=0,s=0:由CiA保留。e=0,s=1:數(shù)據字節(jié)為字節(jié)計數(shù)器,byte4是數(shù)據低位部分(LSB),byte7是數(shù)據高位部分(MSB).e=1:數(shù)據字節(jié)為將要下載(download)的數(shù)據。Examples:※讀取參數(shù)發(fā)送SDO報文接收SDO報文(**為最大字節(jié)數(shù)據)※注:SDO報文發(fā)送時命令字均為0x40如果數(shù)據為1個字節(jié),則接收命令字為0x4F如果數(shù)據為2個字節(jié),則接收命令字為0x4B如果數(shù)據為3個字節(jié),則接收命令字為0x47如果數(shù)據為4個字節(jié),則接收命令字為0x43※修改參數(shù)時發(fā)送SDO報文(**為最大字節(jié)數(shù)據)如果數(shù)據為1個字節(jié),則發(fā)送命令字為0x2F如果數(shù)據為2個字節(jié),則發(fā)送命令字為0x2B如果數(shù)據為3個字節(jié),則發(fā)送命令字為0x27如果數(shù)據為4個字節(jié),則發(fā)送命令字為0x23接收SDO報文※注:SDO報文接收時命令字均為0x60讀取參數(shù)舉例Send:6014001650000000000->讀取6501h/00h地址的參數(shù)(節(jié)點地址01)(SingleTurnresolution:四個字節(jié))Receive:58143016500A08C0000-〉6501h/00h地址的參數(shù)值為0x00008CA0Send:6014000200000000000—>讀取2000h/00h地址的參數(shù)(Mode:一個字節(jié))Receive:5814F00200000000000-〉2000h/00h地址的參數(shù)值為0x00寫入參數(shù)舉例Send:60123016500A08C0000->將6501h/00h地址的參數(shù)值設為0x00008CA0(SingleTurnresolution:四個字節(jié))Receive:5816001650000000000—>6501h/00h地址的參數(shù)值修改成功Send:6012F00200000000000->將2000h/00h地址的參數(shù)值設為0x00(Mode:一個字節(jié))Receive:5816000200000000000->2000h/00h地址的參數(shù)值修改成功§注:參數(shù)修改后并沒有直接保存,必須在Object1010h:Saveparameters(保存參數(shù))內進行“save”寫入才能保存所修改參數(shù)。在Sub-Index1寫入命令“save”(0x65766173h),參數(shù)將會存入存儲器。舉例:Send:6012310100173617665-〉將0x65766173h寫入1010h/01h地址Receive:581601010010

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論