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