1 引言
在上期文章中介紹了CAN總線,本期文章中將介紹CANopen協(xié)議相關(guān)概念及其組網(wǎng)方式。
CANopen協(xié)議是在20世紀(jì)90年代末,由CIA(CAN in Automation)組織在CAL(CAN Application Layer)的基礎(chǔ)上發(fā)展而來(lái),一經(jīng)推出便在歐洲得到了廣泛的認(rèn)可與應(yīng)用。經(jīng)過(guò)對(duì)CANopen協(xié)議規(guī)范文本的多次修改,使得CANopen協(xié)議的穩(wěn)定性、實(shí)時(shí)性、抗干擾性都得到了進(jìn)一步的提高。并且CIA在各個(gè)行業(yè)不斷推出設(shè)備子協(xié)議,使CANopen協(xié)議在各個(gè)行業(yè)得到更快的發(fā)展與推廣。目前CANopen協(xié)議已經(jīng)在運(yùn)動(dòng)控制、車(chē)輛工業(yè)、電機(jī)驅(qū)動(dòng)、工程機(jī)械、船舶海運(yùn)等行業(yè)得到廣泛的應(yīng)用。
2 CANopen協(xié)議簡(jiǎn)介
圖1所示為CANopen設(shè)備結(jié)構(gòu),CANopen協(xié)議通常分為用戶應(yīng)用層、對(duì)象字典以及通信三個(gè)部分。其中最為核心的是對(duì)象字典,這部分將在本文以下章節(jié)中介紹。CANopen通信是CANopen關(guān)鍵部分,其定義了CANopen協(xié)議通信規(guī)則以及與CAN控制器驅(qū)動(dòng)之間對(duì)應(yīng)關(guān)系,熟悉這部分對(duì)全面掌握CANopen協(xié)議至關(guān)重要,這部分將在以下章節(jié)中進(jìn)行介紹。用戶應(yīng)用層是用戶根據(jù)實(shí)際需求編寫(xiě)的應(yīng)用對(duì)象,本文對(duì)此將不作介紹。
?
3 CANopen對(duì)象字典
CANopen對(duì)象字典OD(Object Dictionary)是CANopen協(xié)議最為核心的概念。所謂的對(duì)象字典就是一個(gè)有序的對(duì)象組,每個(gè)對(duì)象采用一個(gè)16位的索引值來(lái)尋址,這個(gè)索引值通常被稱為索引,其范圍在0x1000~0x9FFF之間。為了允許訪問(wèn)數(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(Electronic Data Sheet)來(lái)記錄這些參數(shù),而不需要把這些參數(shù)記錄在紙上。對(duì)于CANopen網(wǎng)絡(luò)中的主節(jié)點(diǎn)來(lái)說(shuō),不需要對(duì)CANopen從節(jié)點(diǎn)的每個(gè)對(duì)象字典項(xiàng)都訪問(wèn)。
CANopen對(duì)象字典中的項(xiàng)由一系列子協(xié)議來(lái)描述。子協(xié)議為對(duì)象字典中的每個(gè)對(duì)象都描述了它的功能、名字、索引、子索引、數(shù)據(jù)類型,以及這個(gè)對(duì)象是否必需、讀寫(xiě)屬性等等,這樣可保證不同廠商的同類型設(shè)備兼容。
CANopen協(xié)議的核心描述子協(xié)議是DS301,其包括了CANopen協(xié)議應(yīng)用層及通信結(jié)構(gòu)描述,其他的協(xié)議子協(xié)議都是對(duì)DS301協(xié)議描述文本的補(bǔ)充與擴(kuò)展。在不同的應(yīng)用行業(yè)都會(huì)起草一份CANopen設(shè)備子協(xié)議,子協(xié)議編號(hào)一般是DS4xx。
CANopen協(xié)議包含了許多的子協(xié)議,其主要?jiǎng)澐譃橐韵氯悾?BR> (1)通信子協(xié)議(Communication Profile)
通信子協(xié)議,描述對(duì)象字典的主要形式和對(duì)象字典中的通信對(duì)象以及參數(shù)。這個(gè)子協(xié)議適用所有的CANopen設(shè)備,其索引值范圍從0x1000~0x1FFF。
(2)制造商自定義子協(xié)議(Manufacturer-specific Profile)
制造商自定義子協(xié)議,對(duì)于在設(shè)備子協(xié)議中未定義的特殊功能,制造商可以在此區(qū)域根據(jù)需求定義對(duì)象字典對(duì)象。因此這個(gè)區(qū)域?qū)τ诓煌膹S商來(lái)說(shuō),相同的對(duì)象字典項(xiàng)其定義不一定相同,其索引值范圍為0x2000~0x5FFF。
(3)設(shè)備子協(xié)議(Device Profile)
設(shè)備子協(xié)議,為各種不同類型的設(shè)備定義對(duì)象字典中的對(duì)象。目前已有十幾種為不同類型的設(shè)備定義的子協(xié)議,例如DS401、DS402、DS406等,其索引值范圍為0x6000~0x9FFF。
4 CANopen通信
在CANopen協(xié)議中主要定義了管理報(bào)文對(duì)象NMT(Network Management)、服務(wù)數(shù)據(jù)對(duì)象SDO(Service Data Object)、過(guò)程數(shù)據(jù)對(duì)象PDO(Process Data Object)、預(yù)定義報(bào)文或特殊功能對(duì)象等四種對(duì)象。
(1)管理報(bào)文NMT
管理報(bào)文負(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),并遵循主從模式。
(2)服務(wù)數(shù)據(jù)對(duì)象SDO
SDO主要用于主節(jié)點(diǎn)對(duì)從節(jié)點(diǎn)的參數(shù)配置。服務(wù)確認(rèn)是SDO的最大特點(diǎn),為每個(gè)消息都生成一個(gè)應(yīng)答,確保數(shù)據(jù)傳輸?shù)臏?zhǔn)確性。在一個(gè)CANopen系統(tǒng)中,通常CANopen從節(jié)點(diǎn)作為SDO服務(wù)器,CANopen主節(jié)點(diǎn)作為客戶端??蛻舳送ㄟ^(guò)索引和子索引,能夠訪問(wèn)數(shù)據(jù)服務(wù)器上的對(duì)象字典。這樣CANopen主節(jié)點(diǎn)可以訪問(wèn)從節(jié)點(diǎn)的任意對(duì)象字典項(xiàng)的參數(shù),并且SDO也可以傳輸任何長(zhǎng)度的數(shù)據(jù)(當(dāng)數(shù)據(jù)長(zhǎng)度超過(guò)4 B時(shí)就拆分成多個(gè)報(bào)文來(lái)傳輸)。
(3)過(guò)程數(shù)據(jù)對(duì)象PDO
PDO用來(lái)傳輸實(shí)時(shí)數(shù)據(jù),其傳輸模型為生產(chǎn)者消費(fèi)者模型,如圖2所示。數(shù)據(jù)長(zhǎng)度被限制為1~8 B。PDO通信對(duì)象具有如下的特點(diǎn):
?、貾DO通信沒(méi)有協(xié)議規(guī)定,PDO數(shù)據(jù)內(nèi)容由它的CAN-ID(也可稱為COB-ID)定義。
?、诿總€(gè)PDO在對(duì)象字典中用2個(gè)對(duì)象描述:
· PDO通信參數(shù),該通信參數(shù)定義了該設(shè)備所使用的COB-ID、傳輸類型、定時(shí)周期;
· PDO映射參數(shù),映射參數(shù)包含了一個(gè)對(duì)象字典中的對(duì)象列表,這些對(duì)象映射到相應(yīng)的PDO,其中包括數(shù)據(jù)的長(zhǎng)度(單位為bit),對(duì)于生產(chǎn)者和消費(fèi)者都必須要知道這個(gè)映射參數(shù),才能夠正確地解釋PDO內(nèi)容。
? ?、跴DO消息內(nèi)容是預(yù)定義的,如果PDO支持可變PDO映射,那么該P(yáng)DO可以通過(guò)SDO進(jìn)行配置。
?、躊DO可以有多種傳輸方式:
· 同步傳輸(通過(guò)接收同步對(duì)象實(shí)現(xiàn)同步),同步傳輸又可分為非周期和周期傳輸。非周期傳輸是由遠(yuǎn)程幀預(yù)觸發(fā)或者由設(shè)備子協(xié)議中規(guī)定的對(duì)象特定事件預(yù)觸發(fā)傳送。周期傳輸則是通過(guò)接收同步對(duì)象(SYNC)來(lái)實(shí)現(xiàn),可以設(shè)置1~240個(gè)同步對(duì)象觸發(fā)。
· 異步傳輸(由特定事件觸發(fā)),其觸發(fā)方式可有兩種,第一種是通過(guò)發(fā)送與PDO的COB-ID相同的遠(yuǎn)程幀來(lái)觸發(fā)PDO的發(fā)送,第二種是由設(shè)備子協(xié)議中規(guī)定的對(duì)象特定事件來(lái)觸發(fā)(例如定時(shí)傳輸、數(shù)據(jù)變化傳輸?shù)龋?BR> (4)預(yù)定義報(bào)文或特殊功能對(duì)象
預(yù)定義報(bào)文或特殊功能對(duì)象為CANopen設(shè)備提供特定的功能,方便CANopen主站對(duì)從站管理。在CANopen協(xié)議中,已經(jīng)為特殊的功能預(yù)定義了COB-ID,其主要有以下幾種特殊報(bào)文:
?、偻剑⊿YNC),該報(bào)文對(duì)象主要實(shí)現(xiàn)整個(gè)網(wǎng)絡(luò)的同步傳輸,每個(gè)節(jié)點(diǎn)都以該同步報(bào)文作為PDO觸發(fā)參數(shù),因此該同步報(bào)文的COB-ID具有比較高的優(yōu)先級(jí)以及最短的傳輸時(shí)間;
?、跁r(shí)間標(biāo)記對(duì)象(Time Stamp),為各個(gè)節(jié)點(diǎn)提供公共的時(shí)間參考;
?、劬o急事件對(duì)象(Emergency),當(dāng)設(shè)備內(nèi)部發(fā)生錯(cuò)誤觸發(fā)該對(duì)象,即發(fā)送設(shè)備內(nèi)部錯(cuò)誤代碼;
④節(jié)點(diǎn)/壽命保護(hù)(Node/Life Guarding),主節(jié)點(diǎn)可通過(guò)節(jié)點(diǎn)保護(hù)方式獲取從節(jié)點(diǎn)的狀態(tài),從節(jié)點(diǎn)可通過(guò)壽命保護(hù)方式獲取主節(jié)點(diǎn)的狀態(tài);
?、輪?dòng)報(bào)文對(duì)象(Boot-up),從節(jié)點(diǎn)初始化完成后向網(wǎng)絡(luò)中發(fā)送該對(duì)象,并進(jìn)入到預(yù)操作狀態(tài)。
5 CANopen預(yù)定義連接集
CANopen預(yù)定義連接是為了減少網(wǎng)絡(luò)的組態(tài)工作量,定義了強(qiáng)制性的缺省標(biāo)識(shí)符(CAN-ID)分配表,該分配表是基于11位CAN-ID的標(biāo)準(zhǔn)幀格式。將其劃分為4位的功能碼和7位的節(jié)點(diǎn)號(hào)(Node-ID)。如圖3所示,在CANopen中也通常把CAN-ID稱為COB-ID(通信對(duì)象編號(hào))。
其中節(jié)點(diǎn)號(hào)由系統(tǒng)集成商給定,每個(gè)CANopen設(shè)備都需要分配一個(gè)節(jié)點(diǎn)號(hào),節(jié)點(diǎn)號(hào)的范圍為1~127(0不允許被使用)。預(yù)定義連接集定義了4個(gè)接收PDO(Receive-PDO)、4個(gè)發(fā)送PDO(Transmit-PDO)、1個(gè)SDO(占用2個(gè)CAN-ID)、1個(gè)緊急對(duì)象和1個(gè)節(jié)點(diǎn)錯(cuò)誤控制(Node-Error-Control)ID。也支持不需確認(rèn)的NMT模塊控制服務(wù)、同步(SYNC)和時(shí)間標(biāo)志(Time Stamp)對(duì)象報(bào)文。
6 CANopen網(wǎng)絡(luò)結(jié)構(gòu)
圖4所示為CANopen典型的網(wǎng)絡(luò)結(jié)構(gòu),該網(wǎng)絡(luò)中有一個(gè)主節(jié)點(diǎn),三個(gè)從節(jié)點(diǎn)以及一個(gè)CANopen網(wǎng)關(guān)掛接的其他設(shè)備。由于CANopen是基于CAN總線,因此其也屬于總線型網(wǎng)絡(luò),在布線和維護(hù)等方面非常方便,可最大限度地節(jié)約組網(wǎng)成本。
CAN總線作為新型成熟的現(xiàn)場(chǎng)總線已經(jīng)應(yīng)用到生活生產(chǎn)的各個(gè)領(lǐng)域。其中基于CAN總線的CANopen協(xié)議,以其獨(dú)特的優(yōu)勢(shì)已經(jīng)成為行業(yè)標(biāo)準(zhǔn),CANopen也必將成為現(xiàn)場(chǎng)總線的發(fā)展趨勢(shì)。
廣州致遠(yuǎn)電子有限公司提供各種接口的CANopen接口卡、CANopen終端設(shè)備(包括數(shù)據(jù)采集,電機(jī)控制等)、CANopen分析儀、網(wǎng)關(guān)及網(wǎng)橋、OPC服務(wù)器以及基于CANopen協(xié)議的整套組網(wǎng)方案及應(yīng)用開(kāi)發(fā)。