第6章通信功能與總線接口附件-CANopen協(xié)議簡介與應(yīng)用開發(fā)_第1頁
第6章通信功能與總線接口附件-CANopen協(xié)議簡介與應(yīng)用開發(fā)_第2頁
第6章通信功能與總線接口附件-CANopen協(xié)議簡介與應(yīng)用開發(fā)_第3頁
第6章通信功能與總線接口附件-CANopen協(xié)議簡介與應(yīng)用開發(fā)_第4頁
第6章通信功能與總線接口附件-CANopen協(xié)議簡介與應(yīng)用開發(fā)_第5頁
已閱讀5頁,還剩81頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第6章 通信功能與總線接口附件 CANopen協(xié)議簡介與應(yīng)用開發(fā)協(xié)議簡介與應(yīng)用開發(fā) 要 點(diǎn):u CANopen協(xié)議簡介;u CANopen協(xié)議具體應(yīng)用開發(fā)。 第6章 通信功能與總線接口附件 CANopen協(xié)議是建立在CAN基礎(chǔ)上的通信網(wǎng)絡(luò)技術(shù),是歐洲CiA組織定義的幾種CAN高層協(xié)議標(biāo)準(zhǔn)之一,因其開放性和低成本等優(yōu)勢,發(fā)布后不久就得到了廣大廠商和用戶的親睞。在歐洲,在眾多基于CAN的工業(yè)系統(tǒng)中,CANopen協(xié)議是事實(shí)上占據(jù)領(lǐng)導(dǎo)地位的標(biāo)準(zhǔn)。目前CANopen協(xié)議已經(jīng)在運(yùn)動(dòng)控制、車輛工業(yè)、電機(jī)驅(qū)動(dòng)、工程機(jī)械、船舶海運(yùn)、樓宇自動(dòng)化等行業(yè)得到廣泛的應(yīng)用。一 CANopen協(xié)議簡協(xié)議簡介第6章 通信功

2、能與總線接口附件 協(xié)議特性協(xié)議特性u(píng) 基于多種網(wǎng)絡(luò)通信模式,適合對(duì)時(shí)間要求苛刻的通訊場合。u 以對(duì)象字典的形式來定義標(biāo)準(zhǔn)設(shè)備描述文件,并通過SDO(服務(wù)數(shù)據(jù)對(duì)象) 報(bào)文存取。u 包含標(biāo)準(zhǔn)的設(shè)備監(jiān)護(hù)服務(wù)信息(節(jié)點(diǎn)監(jiān)視/心跳)、網(wǎng)絡(luò)管理信息以及緊急信息對(duì)象。u 支持同步、異步傳輸模式。u 提供預(yù)定義連接集,簡化系統(tǒng)配置工作。u 在實(shí)際應(yīng)用中,一般以主從式結(jié)構(gòu)模式為主。第6章 通信功能與總線接口附件 1.1 主節(jié)點(diǎn)主要的功能 控制從節(jié)點(diǎn)運(yùn)行狀態(tài); 通過SDO對(duì)對(duì)象字典的參數(shù)進(jìn)行讀取和修改; 監(jiān)視從節(jié)點(diǎn)的運(yùn)行狀況和是否發(fā)生錯(cuò)誤(即進(jìn)行節(jié)點(diǎn)保護(hù)); 由從節(jié)點(diǎn)中獲得相應(yīng)的信息和運(yùn)行狀態(tài);啟動(dòng)和終止SDO通

3、訊; 發(fā)送SYNC報(bào)文; 提供分配特定標(biāo)識(shí)符等網(wǎng)絡(luò)管理的服務(wù)。 第6章 通信功能與總線接口附件 1.2 從節(jié)點(diǎn)功能負(fù)責(zé)底層的網(wǎng)絡(luò)通訊和控制任務(wù),每個(gè)從節(jié)點(diǎn)只完成屬于自己范圍內(nèi)的特定任務(wù)。進(jìn)行實(shí)時(shí)數(shù)據(jù)的傳輸,即PDO (過程數(shù)據(jù)對(duì)象)的通訊。響應(yīng)主節(jié)點(diǎn)發(fā)送的管理信息幀。對(duì)自己負(fù)責(zé)的底層設(shè)備進(jìn)行數(shù)據(jù)采集和控制。第6章 通信功能與總線接口附件 1.3 從節(jié)點(diǎn)架構(gòu)CAN驅(qū)動(dòng):CAN控制器初始化,報(bào)文收發(fā)處理。通信對(duì)象:收發(fā)和解析各種報(bào)文對(duì)象,實(shí)現(xiàn)數(shù)據(jù)交互過程。對(duì)象字典:存儲(chǔ)節(jié)點(diǎn)所有信息,向通信對(duì)象和應(yīng)用程序提供接口。應(yīng)用程序:實(shí)現(xiàn)節(jié)點(diǎn)的功能,如控制、數(shù)據(jù)采集等,用戶自定義。第6章 通信功能與總線接口附

4、件 1 1、 CAN CAN驅(qū)動(dòng)程序驅(qū)動(dòng)程序 CAN控制器初始化程序; CAN中斷處理程序; CAN報(bào)文發(fā)送程序。 第6章 通信功能與總線接口附件 2 2、對(duì)象字典、對(duì)象字典 對(duì)象字典就是一個(gè)有序的對(duì)象組,每個(gè)對(duì)象采用一個(gè)16位的索引值來尋址,為了允許訪問數(shù)據(jù)結(jié)構(gòu)中的單個(gè)元素,同時(shí)也定義了一個(gè)8位的索引值,這個(gè)索引值通常被稱為子索引。 每個(gè)CANopen設(shè)備都有一個(gè)對(duì)象字典,對(duì)象字典包含了描述這個(gè)設(shè)備和它的網(wǎng)絡(luò)行為的所有參數(shù),對(duì)象字典通常用電子數(shù)據(jù)文檔(EDS)來記錄這些參數(shù)。 第6章 通信功能與總線接口附件 第6章 通信功能與總線接口附件 通信子協(xié)議 SYNC報(bào)文參數(shù)設(shè)置(1005H、100

5、6H、1007H) SDO報(bào)文參數(shù)設(shè)置 客戶端SDO(1200H-127FH) 服務(wù)器SDO(1280H-12FFH) 接收PDO報(bào)文參數(shù)設(shè)置 PDO通信參數(shù)(1400H-15FFH) PDO映射參數(shù)(1600H-17FFH) 發(fā)送PDO報(bào)文參數(shù)設(shè)置 PDO通信參數(shù)(1800H-19FFH) PDO映射參數(shù)(1A00H-1BFFH) 設(shè)備子協(xié)議 與特定設(shè)備相關(guān)的參數(shù),用于存儲(chǔ)設(shè)備的相關(guān)參數(shù)。(6000H-9FFFH)第6章 通信功能與總線接口附件 對(duì)象的結(jié)構(gòu)Index: 指出該對(duì)象在對(duì)象字典中的位置Object:指明該對(duì)象的類型Name:對(duì)象的名稱Type: 指明該對(duì)象的數(shù)據(jù)類型Attrib:

6、 對(duì)象的屬性值M/O: 說明該對(duì)象是強(qiáng)制實(shí)現(xiàn)的還是可選的第6章 通信功能與總線接口附件 從節(jié)點(diǎn)對(duì)象字典實(shí)現(xiàn) 由于從節(jié)點(diǎn)需要實(shí)現(xiàn)的對(duì)象字典項(xiàng)不是很多,也不復(fù)雜,所以可以直接采用二維數(shù)組的形式來實(shí)現(xiàn)。例如: 第6章 通信功能與總線接口附件 對(duì)象字典實(shí)現(xiàn) 將所有對(duì)象集合起來,得到對(duì)象字典; const indextable ObjDict_objdict = (subindex*)ObjDict_Index1000,sizeof(ObjDict_Index1000)/sizeof(ObjDict_Index10000), 0 x1000, (subindex*)ObjDict_Index1001,s

7、izeof(ObjDict_Index1001)/sizeof(ObjDict_Index10010), 0 x1001, (subindex*)ObjDict_Index1003,sizeof(ObjDict_Index1003)/sizeof(ObjDict_Index10030), 0 x1003, ;第6章 通信功能與總線接口附件 掃描函數(shù) 根據(jù)對(duì)象字典的實(shí)現(xiàn)方式,相應(yīng)的掃描函數(shù)實(shí)現(xiàn)如下:const indextable * ObjDict_scanIndexOD (UNS16 wIndex, UNS32 * errorCode, ODCallback_t *callbacks) in

8、t i; *callbacks = NULL; switch(wIndex) case 0 x1000: i = 0;break; case 0 x1001: i = 1;break; case 0 x1003: i = 2;*callbacks = ObjDict_Index1003_callbacks; break; case 0 x1005: i = 3;*callbacks = ObjDict_Index1005_callbacks; break; case 0 x1008: i = 4;break; case 0 x1009: i = 5;break; case 0 x100A: i

9、 = 6;break; case 0 x1010: i = 7;break; case 0 x1011: i = 8;break; 第6章 通信功能與總線接口附件 存取函數(shù) 由getODentry()和setODentry()函數(shù)來實(shí)現(xiàn),思路如下: 通過掃描函數(shù)定位到指定對(duì)象的入口; 檢查對(duì)應(yīng)對(duì)象的訪問權(quán)限,若越權(quán)返回錯(cuò)誤碼; 若權(quán)限正確,允許訪問,根據(jù)調(diào)用的函數(shù),將指定內(nèi)容copy進(jìn)指定對(duì)象,或?qū)⒅付▽?duì)象里的內(nèi)容copy到目標(biāo)地址(注意檢查是否越界); 返回。第6章 通信功能與總線接口附件 3、報(bào)文對(duì)象、報(bào)文對(duì)象 報(bào)文格式 基于CAN總線的報(bào)文格式 11位標(biāo)識(shí)符(或29位)+1-8byte數(shù)

10、據(jù) 標(biāo)識(shí)符格式 Node-ID由系統(tǒng)集成商定義,例如通過設(shè)備上的撥碼開關(guān)設(shè)置。Node-ID范圍是1127(0不允許被使用)。 第6章 通信功能與總線接口附件 CANopen協(xié)議定義了四種報(bào)文對(duì)象,分別是: 網(wǎng)絡(luò)管理報(bào)文對(duì)象NMT 服務(wù)數(shù)據(jù)對(duì)象SDO 過程數(shù)據(jù)對(duì)象PDO 預(yù)定義報(bào)文或特殊功能對(duì)象第6章 通信功能與總線接口附件 1.4 NMT 管理報(bào)文(Network Management)主要負(fù)責(zé)層管理、網(wǎng)絡(luò)管理和ID分配服務(wù),例如,初始化、配置和網(wǎng)絡(luò)管理(其中包括節(jié)點(diǎn)保護(hù))。 網(wǎng)絡(luò)管理中,同一個(gè)網(wǎng)絡(luò)中只允許有一個(gè)主節(jié)點(diǎn)、一個(gè)或多個(gè)從節(jié)點(diǎn),并遵循主從模式。 第6章 通信功能與總線接口附件 NM

11、T狀態(tài)機(jī)狀態(tài)機(jī) 從節(jié)點(diǎn)內(nèi)必須實(shí)現(xiàn)一個(gè)狀態(tài)機(jī),其狀態(tài)轉(zhuǎn)換由主節(jié)點(diǎn)控制,不同的狀態(tài)對(duì)應(yīng)不同的報(bào)文對(duì)象可用性,目的是使主節(jié)點(diǎn)可以控制從節(jié)點(diǎn)在總線上的通信行為。第6章 通信功能與總線接口附件 Initialisation:從節(jié)點(diǎn)上電后自動(dòng)進(jìn)入該狀態(tài),主要完成節(jié)點(diǎn)的硬件初始化,通信參數(shù)和應(yīng)用參數(shù)的重置,成功后自動(dòng)進(jìn)入Pre-Operational狀態(tài)。第6章 通信功能與總線接口附件 Pre-Operational:在此狀態(tài)中,從節(jié)點(diǎn)SDO被允許,主節(jié)點(diǎn)通過SDO完成從節(jié)點(diǎn)通信參數(shù)的設(shè)置,如從節(jié)點(diǎn)的PDO參數(shù)映射設(shè)置。主節(jié)點(diǎn)發(fā)送start_remote_node命令使從節(jié)點(diǎn)進(jìn)入Operational狀態(tài)。

12、 Operational:在此狀態(tài)中,從節(jié)點(diǎn)完成自己的正常工作,采集數(shù)據(jù),控制設(shè)備,與主節(jié)點(diǎn)通信,所有報(bào)文對(duì)象類型都被允許。 Stopped:當(dāng)從節(jié)點(diǎn)發(fā)生錯(cuò)誤時(shí),或主節(jié)點(diǎn)檢測到從節(jié)點(diǎn)出錯(cuò)了,通過發(fā)送stop_remote_node命令使從節(jié)點(diǎn)進(jìn)入此狀態(tài),除了接受NMT報(bào)文,其他報(bào)文對(duì)象都被禁止,以此消除對(duì)總線的不良影響。若主節(jié)點(diǎn)檢測到錯(cuò)誤節(jié)點(diǎn)恢復(fù)正常,仍可通過NMT報(bào)文讓其正常運(yùn)行。第6章 通信功能與總線接口附件 只有NMT-Master節(jié)點(diǎn)能夠傳送NMT 狀態(tài)控制報(bào)文(通常都是主節(jié)點(diǎn))。所有從設(shè)備必須支持NMT模塊控制服務(wù)。NMT 狀態(tài)控制消息不需要應(yīng)答。NMT消息格式如右圖:第一個(gè)字節(jié)表示

13、從節(jié)點(diǎn)收到命令后需要進(jìn)入的狀態(tài),第二個(gè)字節(jié)是接收命令的從節(jié)點(diǎn)第二個(gè)字節(jié)是接收命令的從節(jié)點(diǎn)IDID,若為,若為0 0,此時(shí)所有,此時(shí)所有節(jié)點(diǎn)都接收該命令節(jié)點(diǎn)都接收該命令第6章 通信功能與總線接口附件 實(shí)現(xiàn) 定義一個(gè)狀態(tài)數(shù)組 包含所有的報(bào)文類型 狀態(tài)改變函數(shù) 原子操作 狀態(tài)報(bào)文可用性設(shè)置 狀態(tài)轉(zhuǎn)換 第6章 通信功能與總線接口附件 實(shí)現(xiàn)(續(xù)) 狀態(tài)轉(zhuǎn)換最終還需要報(bào)文的解析來實(shí)現(xiàn)報(bào)文可用性的控制。canDispatch() UNS16 cob_id = UNS16_LE(m-cob_id); switch(cob_id 7) 檢查COB_ID對(duì)應(yīng)的報(bào)文對(duì)象在目前節(jié)點(diǎn)狀態(tài)下是否可用; 若可用,則進(jìn)入相應(yīng)

14、的報(bào)文處理函數(shù); 不可用則跳出; 第6章 通信功能與總線接口附件 NMT節(jié)點(diǎn)保護(hù) 通過節(jié)點(diǎn)保護(hù)服務(wù),NMT主節(jié)點(diǎn)可以檢查每個(gè)節(jié)點(diǎn)的當(dāng)前狀態(tài),當(dāng)這些節(jié)點(diǎn)沒有數(shù)據(jù)傳送時(shí)這種服務(wù)尤其有意義。 數(shù)據(jù)部分包括一個(gè)觸發(fā)位(bit7),觸發(fā)位必須在每次節(jié)點(diǎn)保護(hù)應(yīng)答中交替置“0”或者“1”。觸發(fā)位在第一次節(jié)點(diǎn)保護(hù)請(qǐng)求時(shí)置為“0”。位0到位6(bits06)表示節(jié)點(diǎn)狀態(tài),可為下表中的數(shù)值。 第6章 通信功能與總線接口附件 NMT心跳報(bào)文 從節(jié)點(diǎn)可被配置為產(chǎn)生周期性的被稱作心跳報(bào)文的報(bào)文。 當(dāng)一個(gè)Heartbeat節(jié)點(diǎn)啟動(dòng)后它的Bootup報(bào)文是其第一個(gè)心跳報(bào)文。 Heartbeat消費(fèi)者通常是主節(jié)點(diǎn),它為每個(gè)H

15、eartbeat節(jié)點(diǎn)設(shè)定一個(gè)超時(shí)值,當(dāng)超時(shí)發(fā)生時(shí)采取相應(yīng)動(dòng)作。 一個(gè)節(jié)點(diǎn)不能夠同時(shí)支持Node Guarding和Heartbeat協(xié)議! 第6章 通信功能與總線接口附件 1.5 SDO SDO是服務(wù)數(shù)據(jù)對(duì)象接口(Service Data Object)的縮寫,顧名思義提供服務(wù)數(shù)據(jù)的訪問接口,所謂服務(wù)數(shù)據(jù)指一些實(shí)時(shí)性要求不高的數(shù)據(jù),一般是指節(jié)點(diǎn)配置參數(shù),因此,SDO一般用來配置和獲得節(jié)點(diǎn)的配置參數(shù),充當(dāng)OD對(duì)外的接口,其優(yōu)先級(jí)只比心跳(Heartbeat)高。第6章 通信功能與總線接口附件 SDO基于CS模式,所有報(bào)文都需要確認(rèn)。通常從節(jié)點(diǎn)作為SDO服務(wù)器,主節(jié)點(diǎn)作為客戶端??蛻舳送ㄟ^索引和子

16、索引,訪問服務(wù)器上的任意對(duì)象字典,SDO的上傳與下載,是從server的角度去理解的, 上傳:client對(duì)server的OD進(jìn)行讀操作; 下載:client對(duì)server的OD進(jìn)行寫操作。第6章 通信功能與總線接口附件 傳送機(jī)制: 加速傳送:最多傳送4Byte數(shù)據(jù) 分段傳送:傳送數(shù)據(jù)大于4Byte 報(bào)文基本結(jié)構(gòu):第6章 通信功能與總線接口附件 SDO 命令字包含如下信息: 下載/上傳(Download / Upload) 請(qǐng)求/應(yīng)答(Request /Response) 分段/加速傳送(Segmented / Expedited ) CAN幀數(shù)據(jù)字節(jié)長度 用于后續(xù)每個(gè)分段的交替清零和置位的觸

17、發(fā)位 SDO中實(shí)現(xiàn)了5個(gè)請(qǐng)求/應(yīng)答協(xié)議:啟動(dòng)域下載 ,域分段下載,啟動(dòng)域上傳 ,域分段上傳和域傳送中止。第6章 通信功能與總線接口附件 命令字細(xì)節(jié)第6章 通信功能與總線接口附件 命令字細(xì)節(jié)(續(xù))第6章 通信功能與總線接口附件 實(shí)現(xiàn)方案SDO線程 借鑒操作系統(tǒng)多線程機(jī)制的一套SDO服務(wù)處理方法,每個(gè)SDO線程表示的是與網(wǎng)絡(luò)上其他節(jié)點(diǎn)建立的一個(gè)SDO鏈接,相當(dāng)于在兩個(gè)節(jié)點(diǎn)間建立一個(gè)SDO通訊路徑,其中每個(gè)節(jié)點(diǎn)都擁有一個(gè)對(duì)這個(gè)路徑的描述,在通訊過程中雙方通過這個(gè)路徑來交流,SDO通訊結(jié)束則釋放該線程,每個(gè)節(jié)點(diǎn)可以同時(shí)與多個(gè)節(jié)點(diǎn)建立多個(gè)這樣的路徑且互不影響,就如同操作系統(tǒng)的多線程機(jī)制一樣。 第6章 通

18、信功能與總線接口附件 一次SDO訪問是這樣完成的:SDO發(fā)起節(jié)點(diǎn)(client)收集足夠的信息,建立一個(gè)SDO線程,將收集的信息以特定格式放入?yún)?shù)表,形成一幀SDO請(qǐng)求,發(fā)送出去;server收到這幀請(qǐng)求,為它建立一個(gè)SDO線程,將這幀請(qǐng)求解析以獲得足夠信息來初始化這個(gè)SDO線程對(duì)應(yīng)的參數(shù)表;程序按照參數(shù)表的描述去執(zhí)行server的功能收集數(shù)據(jù),然后將收集到的數(shù)據(jù)形成SDO應(yīng)答幀返回給client;如果此次請(qǐng)求結(jié)束則釋放該線程,否則等待下一幀請(qǐng)求到來;client在收到應(yīng)答后判斷該請(qǐng)求是否還有后續(xù)請(qǐng)求,無則釋放此SDO線程;如果在這個(gè)過程中,server 和client所在節(jié)點(diǎn)有收到其他節(jié)點(diǎn)的

19、SDO請(qǐng)求或需要通過SDO請(qǐng)求其它節(jié)點(diǎn),則新建SDO線程來實(shí)現(xiàn),跟上面的步驟一樣。第6章 通信功能與總線接口附件 1.6 PDO PDO(Process Data Object )被用來傳輸實(shí)時(shí)數(shù)據(jù),數(shù)據(jù)從一個(gè)生產(chǎn)者傳到一個(gè)或多個(gè)消費(fèi)者,采用無確認(rèn)的方式,數(shù)據(jù)長度被限制為18字節(jié)。PDO通訊沒有協(xié)議規(guī)定。PDO數(shù)據(jù)內(nèi)容只由它的映射參數(shù)對(duì)象定義,假定生產(chǎn)者和消費(fèi)者知道這個(gè)PDO的數(shù)據(jù)內(nèi)容。第6章 通信功能與總線接口附件 PDO通訊參數(shù):包含哪個(gè)COB-ID將被PDO使用,傳輸類型,禁止時(shí)間和定時(shí)器周期。 第6章 通信功能與總線接口附件 PDO通訊參數(shù) PDO可以指定禁止時(shí)間,避免由于高優(yōu)先級(jí)信息

20、的數(shù)據(jù)量太大,始終占據(jù)總線,而使其它優(yōu)先級(jí)較低的數(shù)據(jù)無力競爭總線的問題。禁止時(shí)間單位100us。 PDO可以指定一個(gè)事件定時(shí)周期,當(dāng)超過定時(shí)時(shí)間后,一個(gè)PDO傳輸可以被觸發(fā)(不需要觸發(fā)位)。事件定時(shí)周期由16位無符號(hào)整數(shù)定義,單位1ms。 第6章 通信功能與總線接口附件 PDO傳輸模式 異步觸發(fā)模式 遠(yuǎn)程索取模式 同步觸發(fā)模式 同步周期模式 同步非周期模式 PDO的同步傳輸模式 同步傳輸(通過接收SYNC對(duì)象實(shí)現(xiàn)同步),同步傳輸又可分為非周期和周期傳輸。非周期傳輸是由遠(yuǎn)程幀預(yù)觸發(fā)或者由設(shè)備子協(xié)議中規(guī)定的對(duì)象特定事件預(yù)觸發(fā)傳送。周期傳輸則是通過接收同步對(duì)象(SYNC)來實(shí)現(xiàn)。第6章 通信功能與總

21、線接口附件 每個(gè)SYNC后,有一段同步時(shí)間窗口,同步PDO在窗口內(nèi)發(fā)送??稍O(shè)置同步PDO的發(fā)送速率,如傳輸類型為0,表示PDO僅在有事件發(fā)生SYNC前,在時(shí)間窗口內(nèi)發(fā)送。若為N(1-240),傳送在每N個(gè)SYNC消息后觸發(fā)。第6章 通信功能與總線接口附件 PDO的異步傳輸模式 其觸發(fā)方式可有兩種,第一種是通過發(fā)送與PDO的COB-ID相同的遠(yuǎn)程幀來觸發(fā)PDO的發(fā)送(傳輸類型為253),第二種是由設(shè)備子協(xié)議中規(guī)定的對(duì)象特定事件來觸發(fā)(例如,定時(shí)傳輸,數(shù)據(jù)變化傳輸?shù)龋瑐鬏旑愋蜑?55)。 第6章 通信功能與總線接口附件 PDO映射參數(shù):包含一個(gè)對(duì)象字典中對(duì)象的列表,這些對(duì)象映射到PDO里,包括它們

22、的數(shù)據(jù)長度。生產(chǎn)者和消費(fèi)者必須知道這個(gè)映射,以解釋PDO內(nèi)容。第6章 通信功能與總線接口附件 舉個(gè)例子,一個(gè)PDO的映射參數(shù)對(duì)象(1A01):則這個(gè)PDO報(bào)文的內(nèi)容是: 改變1A01里面的內(nèi)容,就可以改變?cè)揚(yáng)DO報(bào)文的數(shù)據(jù)內(nèi)容。第6章 通信功能與總線接口附件 實(shí)現(xiàn)sendPDOevent函數(shù): 用于輔助proceedPDO函數(shù); 循環(huán)更新每個(gè)PDO的當(dāng)前trans_type_para; 若當(dāng)前傳輸類型等于原傳輸類型,調(diào)用buildPDO,發(fā)送PDO; 若傳參類型為TRANS_RTR_SYNC,則buildPDO,為遠(yuǎn)程請(qǐng)求的應(yīng)答做好準(zhǔn)備,設(shè)置當(dāng)前狀態(tài)為RTR_SYNC_READY; 若當(dāng)前傳參

23、類型為TRANS_SYNC_ACYCLIC或EVENT相關(guān)且未被禁止,則buildPDO,為事件觸發(fā)做好準(zhǔn)備; 若不是同步事件,且事件周期和禁止時(shí)間不為0,則設(shè)置兩個(gè)定時(shí)器,在計(jì)時(shí)器到達(dá)前將PDO狀態(tài)設(shè)為禁止。第6章 通信功能與總線接口附件 實(shí)現(xiàn)(續(xù))proceed PDO函數(shù): 接收到PDO報(bào)文,有兩種類型: 若RTR為0,表示普通PDO報(bào)文,對(duì)從節(jié)點(diǎn)就是主節(jié)點(diǎn)發(fā)出的控制命令,需要從節(jié)點(diǎn)來執(zhí)行。對(duì)普通PDO報(bào)文的處理:找到對(duì)應(yīng)COB-ID的PDO映射參數(shù),并把數(shù)據(jù)寫入相應(yīng)的對(duì)象中,等待應(yīng)用來執(zhí)行; 若RTR為1,表示遠(yuǎn)程請(qǐng)求,根據(jù)傳輸類型不同作相應(yīng)處理; 若傳輸類型為TRANS_RTR,則b

24、uildPDO,發(fā)送應(yīng)答PDO; 若傳輸類型為TRANS_RTR_SYNC,且當(dāng)前狀態(tài)為RTR_SYNC_READY ,則直接發(fā)送PDO; 若傳輸類型為EVENT相關(guān),則調(diào)用PDOEventTimerAlarm函數(shù)等待定時(shí)器到期,自動(dòng)觸發(fā)PDO發(fā)送。第6章 通信功能與總線接口附件 1.7 特殊功能對(duì)象 預(yù)定義報(bào)文或特殊功能對(duì)象為CANopen設(shè)備提供特定的功能,方便CANopen主站對(duì)從站管理。在CANopen協(xié)議中,已經(jīng)為特殊的功能預(yù)定義了COB-ID,其主要有以下幾種特殊報(bào)文: 緊急事件對(duì)象(Emergency),當(dāng)設(shè)備內(nèi)部發(fā)生錯(cuò)誤時(shí)觸發(fā)該對(duì)象,即發(fā)送設(shè)備內(nèi)部錯(cuò)誤代碼; 時(shí)間標(biāo)記對(duì)象(Ti

25、me Stamp),為各個(gè)節(jié)點(diǎn)提供公共的時(shí)間參考; 第6章 通信功能與總線接口附件 節(jié)點(diǎn)/壽命保護(hù)(Node/Life Guarding),主節(jié)點(diǎn)可通過節(jié)點(diǎn)保護(hù)方式獲取從節(jié)點(diǎn)的狀態(tài)。從節(jié)點(diǎn)可通過壽命保護(hù)方式獲取主節(jié)點(diǎn)的狀態(tài); 啟動(dòng)報(bào)文對(duì)象(Boot-up),從節(jié)點(diǎn)初始化完成后向網(wǎng)絡(luò)中發(fā)送該對(duì)象,并進(jìn)入到Pre-Operational狀態(tài)。 第6章 通信功能與總線接口附件 特殊功能對(duì)象特殊功能對(duì)象SYNC 同步(SYNC),該報(bào)文對(duì)象基于生產(chǎn)者/消費(fèi)者模式,由SYNC生產(chǎn)者周期性的廣播,作為網(wǎng)絡(luò)基本時(shí)鐘,實(shí)現(xiàn)整個(gè)網(wǎng)絡(luò)的同步傳輸,每個(gè)節(jié)點(diǎn)都以該同步報(bào)文作為同步PDO觸發(fā)參數(shù),因此該同步報(bào)文的COB

26、-ID具有比較高的優(yōu)先級(jí)以及最短的傳輸時(shí)間。第6章 通信功能與總線接口附件 描述(對(duì)象字典) 1005H:存放SYNC的COB-ID 1006H:存放SYNC的通信周期 1007H:存放SYNC時(shí)間窗口 實(shí)現(xiàn) sendSYNC:由定時(shí)器中斷來調(diào)用,定時(shí)值就是通信周期; proceedSYNC:檢查節(jié)點(diǎn)是否在Operation狀態(tài),調(diào)用sendPDOevent函數(shù)來處理同步PDO;第6章 通信功能與總線接口附件 預(yù)定義連接集預(yù)定義連接集 由于動(dòng)態(tài)分配CAN-ID將占用較多的系統(tǒng)資源,對(duì)于一些相對(duì)簡單的CANopen網(wǎng)絡(luò),動(dòng)態(tài)分配標(biāo)識(shí)符也沒有太大的必要性,為減少簡單網(wǎng)絡(luò)的組態(tài)工作量,CANopen

27、定義了強(qiáng)制性的缺省標(biāo)識(shí)符(CAN-ID)分配表。這些標(biāo)志符在預(yù)操作狀態(tài)下可用,通過動(dòng)態(tài)分配還可修改他們。 預(yù)定義連接集定義了4個(gè)接收PDO(ReceivePDO),4個(gè)發(fā)送PDO(TransmitPDO),1個(gè)SDO(占用2個(gè)CAN-ID),1個(gè)緊急對(duì)象和1個(gè)節(jié)點(diǎn)錯(cuò)誤控制(Node-Error-Control)ID。也支持不需確認(rèn)的NMT-Module-Control服務(wù),SYNC和Time Stamp對(duì)象的廣播。 第6章 通信功能與總線接口附件 第6章 通信功能與總線接口附件 第6章 通信功能與總線接口附件 CANopen支持多種類型設(shè)備模塊,不同的設(shè)備子協(xié)議(DS 4XX),對(duì)于預(yù)定義連接

28、集中的PDO定義是不同的。 例如CiA DS 401作為I/O模塊的設(shè)備子協(xié)議,詳細(xì)地規(guī)定了各個(gè)PDO的通信參數(shù)和數(shù)據(jù)映射參數(shù)。 四組PDO中一組用于DI/DO,其余三組用于AI/AO,若模塊只實(shí)現(xiàn)其中的部分功能,則其他功能部分可以不使用。第6章 通信功能與總線接口附件 DS 401 RPDO1:映射到6200H的8個(gè)8bit array (DO) TPDO1:映射到6000H的8個(gè)8bit array (DI) 對(duì)應(yīng)最大64個(gè)DI/DO(Boolean) RPDO2:映射到6411H的前4個(gè)16bit array(AO) TPDO2:映射到6401H的前4個(gè)16bit array(AI) R

29、PDO3:映射到6411H的中4個(gè)16bit array(AO) TPDO3:映射到6401H的中4個(gè)16bit array(AI) RPDO4:映射到6411H的后4個(gè)16bit array(AO) TPDO4:映射到6401H的后4個(gè)16bit array(AI) Integer類型第6章 通信功能與總線接口附件 2.1 2.1 應(yīng)用對(duì)象應(yīng)用對(duì)象 低溫等離子體設(shè)備系統(tǒng)。二 CANopen協(xié)議協(xié)議具體應(yīng)應(yīng)用開發(fā)開發(fā)第6章 通信功能與總線接口附件 PECVD設(shè)備系統(tǒng)概念圖設(shè)備系統(tǒng)概念圖除害裝置氣瓶柜氣瓶柜Gas Box出氣電極出氣電極( (陽極陽極) )Heater等離子等離子電源匹配箱電源匹

30、配箱 控制器電源電源下部電極下部電極( (陰極陰極) )壓力計(jì)壓力計(jì)節(jié)流閥節(jié)流閥Pump氣體供給氣體供給流量控制流量控制RF電源電源壓力控制壓力控制真空排氣真空排氣工藝腔室工藝腔室第6章 通信功能與總線接口附件 PECVD設(shè)備組成結(jié)構(gòu)示意圖設(shè)備組成結(jié)構(gòu)示意圖第6章 通信功能與總線接口附件 基于基于CANCAN總線的低溫等離子體設(shè)備系統(tǒng)設(shè)計(jì)方案總線的低溫等離子體設(shè)備系統(tǒng)設(shè)計(jì)方案2.2 2.2 系統(tǒng)設(shè)計(jì)方案系統(tǒng)設(shè)計(jì)方案第6章 通信功能與總線接口附件 系統(tǒng)軟件總體框架系統(tǒng)軟件總體框架CAN驅(qū)動(dòng)模塊狀態(tài)管理和反饋模塊實(shí)時(shí)過程數(shù)據(jù)傳輸模塊參數(shù)讀取和配置模塊緊急事件處理模塊對(duì)象字典模塊CANopen軟件模

31、塊組成用戶應(yīng)用程序第6章 通信功能與總線接口附件 2.3 2.3 軟件功能模塊設(shè)計(jì)軟件功能模塊設(shè)計(jì)CAN 驅(qū)動(dòng)模塊CAN控制器初始化模塊CAN中斷處理模塊CAN報(bào)文發(fā)送模塊2.3.1 CAN驅(qū)動(dòng)程序第6章 通信功能與總線接口附件 2.3.2 對(duì)象字典 對(duì)象字典是CANopen的核心概念,它存儲(chǔ)了節(jié)點(diǎn)的所有信息。是一個(gè)有序的對(duì)象組,每個(gè)對(duì)象采用一個(gè)16位的索引值來尋址,同時(shí)定義了一個(gè)8位的子索引用于訪問數(shù)據(jù)結(jié)構(gòu)中的單個(gè)元素。 第6章 通信功能與總線接口附件 對(duì)象字典實(shí)體結(jié)構(gòu) 對(duì)象字典功能框圖對(duì)象字典實(shí)體讀函數(shù)寫函數(shù)對(duì)象字典模塊0001H-0FFFH數(shù)據(jù)類型定義區(qū)(可選)1000H-1FFFH通信

32、子協(xié)議區(qū)(必要)2000H-5FFFH制造商特定協(xié)議區(qū)(可選)6000H-9FFFH標(biāo)準(zhǔn)設(shè)備子協(xié)議區(qū)(必要)存儲(chǔ)電流電壓輸入信號(hào)、電壓控制信號(hào)、啟/停、手/自動(dòng).第6章 通信功能與總線接口附件 實(shí)現(xiàn)方案 單片機(jī)計(jì)算資源緊缺,采用靜態(tài)結(jié)構(gòu)體數(shù)組 結(jié)構(gòu)簡單,易于實(shí)現(xiàn) 訪問效率高第6章 通信功能與總線接口附件 對(duì)象字典接口函數(shù) getODentry、setODentry 與對(duì)象字典配套使用 訪問指定對(duì)象 控制訪問行為,杜絕非法訪問,防止數(shù)據(jù)損壞第6章 通信功能與總線接口附件 2.3.3 狀態(tài)控制 在節(jié)點(diǎn)內(nèi)部運(yùn)行著一個(gè)狀態(tài)機(jī),狀態(tài)轉(zhuǎn)換由管理者控制,節(jié)點(diǎn)在不同的狀態(tài)下執(zhí)行不同的任務(wù),各個(gè)功能模塊的使能情

33、況也不同。第6章 通信功能與總線接口附件 狀態(tài)轉(zhuǎn)換過程 功能可用性控制 調(diào)用相應(yīng)的功能模塊時(shí)檢查功能使能表。 只有服務(wù)被使能,調(diào)用才生效。第6章 通信功能與總線接口附件 從節(jié)點(diǎn)上電后在狀態(tài)機(jī)里運(yùn)行,狀態(tài)受管理者控制,設(shè)計(jì)從節(jié)點(diǎn)的軟件總體流程如下:第6章 通信功能與總線接口附件 2.3.4 狀態(tài)反饋 節(jié)點(diǎn)可以通過一種叫做心跳的方式周期性地向主站匯報(bào)當(dāng)前的狀態(tài)。 生產(chǎn)者/消費(fèi)者模式 檢測節(jié)點(diǎn)是否在線 監(jiān)視節(jié)點(diǎn)狀態(tài) 定時(shí)器中斷處理發(fā)送,定時(shí)值取自對(duì)象字典。第6章 通信功能與總線接口附件 2.3.5 實(shí)時(shí)過程數(shù)據(jù)傳輸 引入CANopen的目的之一:更規(guī)范和有效地傳輸實(shí)時(shí)過程數(shù)據(jù)。 兩個(gè)問題: I/O數(shù)

34、據(jù)什么時(shí)候被傳輸? 數(shù)據(jù)如何封裝? 利用CANopen協(xié)議中的PDO(Process Data Object )功能 基于生產(chǎn)者/消費(fèi)者模式。 多種傳輸模式。 數(shù)據(jù)長度被限制為18字節(jié)。 數(shù)據(jù)內(nèi)容由映射參數(shù)對(duì)象決定,雙方都知道。第6章 通信功能與總線接口附件 多種傳輸模式?同步周期異步同步同步非周期遠(yuǎn)程幀預(yù)觸發(fā)事件預(yù)觸發(fā)遠(yuǎn)程幀觸發(fā)事件觸發(fā)第6章 通信功能與總線接口附件 映射參數(shù) 包含一個(gè)對(duì)象字典中對(duì)象的列表,這些對(duì)象映射到PDO報(bào)文里,包括對(duì)象的數(shù)據(jù)長度。生產(chǎn)者和消費(fèi)者必須知道這個(gè)映射,才能解釋PDO報(bào)文的內(nèi)容。第6章 通信功能與總線接口附件 實(shí)時(shí)過程數(shù)據(jù)傳輸模塊組成接收PDO報(bào)文模塊發(fā)送PD

35、O報(bào)文模塊建立PDO報(bào)文模塊實(shí)時(shí)過程數(shù)據(jù)傳輸模塊CAN驅(qū)動(dòng)模塊第6章 通信功能與總線接口附件 建立PDO函數(shù) 被發(fā)送和接收模塊調(diào)用。 根據(jù)映射參數(shù)表建立PDO報(bào)文。第6章 通信功能與總線接口附件 發(fā)送和接收模塊 實(shí)現(xiàn)PDO報(bào)文的各種傳輸方式。 處理收到的PDO報(bào)文。發(fā)送PDO模塊同步周期發(fā)送功能同步遠(yuǎn)程幀預(yù)觸發(fā)發(fā)送功能異步事件觸發(fā)發(fā)送功能接收PDO模塊同步事件預(yù)觸發(fā)發(fā)送功能PDO數(shù)據(jù)處理功能異步遠(yuǎn)程幀觸發(fā)發(fā)送功能第6章 通信功能與總線接口附件 2.3.6 參數(shù)讀取和設(shè)置 管理者如何配置和讀取節(jié)點(diǎn)服務(wù)的參數(shù)? 利用CANopen協(xié)議的SDO (Service Data Object)功能。 對(duì)象

36、字典的遠(yuǎn)程訪問接口 用來配置和讀取節(jié)點(diǎn)的參數(shù) 基于客戶端/服務(wù)器模式第6章 通信功能與總線接口附件 對(duì)象字典安全要求高,數(shù)據(jù)項(xiàng)長度不一,訪問須遵循一定的規(guī)范。 SDO服務(wù)定義了5個(gè)協(xié)議:啟動(dòng)域下載 ,域分段下載,啟動(dòng)域上傳 ,域分段上傳和域傳送中止。 訪問協(xié)議體現(xiàn)在SDO報(bào)文命令字中。第6章 通信功能與總線接口附件 SDO服務(wù)實(shí)現(xiàn) 關(guān)鍵是解析SDO命令字。命令字前三位只有0、1、2、3、4這幾種類型,對(duì)其進(jìn)行分類并按照協(xié)議規(guī)范處理,SDO功能即可以實(shí)現(xiàn)。 SDO服務(wù)處理模塊啟動(dòng)域下載模塊啟動(dòng)域上傳模塊域分段下載模塊域分段上傳模塊域傳送中止模塊01234第6章 通信功能與總線接口附件 2.3.7

37、 緊急事件服務(wù)屬于網(wǎng)絡(luò)管理的一部分嵌入到用戶應(yīng)用程序中若檢測到緊急情況(過壓、過流等),處理過程分兩步:采取既定的緊急保護(hù)措施,斷電保護(hù)、輸出復(fù)位。1.以高優(yōu)先級(jí)發(fā)送緊急事件報(bào)文,攜帶節(jié)點(diǎn)地址和錯(cuò)誤代碼,向管理者匯報(bào)報(bào)警信息,等待后續(xù)處理。第6章 通信功能與總線接口附件 2.4 2.4 協(xié)議棧測試協(xié)議棧測試2.4.1 測試與實(shí)驗(yàn)平臺(tái)搭建USB-CAN模塊作為監(jiān)控計(jì)算機(jī)的CAN網(wǎng)絡(luò)接口具備存儲(chǔ)功能的示波器觀察總線波形掛載4個(gè)智能節(jié)點(diǎn),囊括了基本的低溫等離子體設(shè)備ZLGCANtest軟件監(jiān)視總線上所有報(bào)文總線波特率500Kbps第6章 通信功能與總線接口附件 2.4.2 單節(jié)點(diǎn)通信周期測試單節(jié)點(diǎn)實(shí)時(shí)過程數(shù)據(jù)傳輸最小周期測試 計(jì)算機(jī)發(fā)送同步報(bào)文后,節(jié)點(diǎn)根據(jù)PDO通信參數(shù)發(fā)送報(bào)文。

溫馨提示

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

評(píng)論

0/150

提交評(píng)論