摘 要:介紹了CAN總線的應(yīng)用層協(xié)議CANopen;介紹了CANopen系統(tǒng)的應(yīng)用;詳細(xì)介紹了CANopen的協(xié)議結(jié)構(gòu),通信對(duì)象以及標(biāo)識(shí)符的地址分配。
關(guān)鍵詞:現(xiàn)場(chǎng)總線; CAN總線; CANopen; 協(xié)議
引言
現(xiàn)場(chǎng)總線的應(yīng)用研究日益廣泛,在眾多的現(xiàn)場(chǎng)總線中,其中 CAN總線以其易于掌握、易于開(kāi)發(fā)等優(yōu)點(diǎn),成為一種很有應(yīng)用前景的現(xiàn)場(chǎng)總線。但CAN不是一種完整的網(wǎng)絡(luò)協(xié)議,缺少應(yīng)用層和網(wǎng)絡(luò)管理部分。CANopen是最初由從事工業(yè)控制的CiA(CAN in Automation)會(huì)員開(kāi)發(fā)的針對(duì)工業(yè)系統(tǒng),并基于CAN通信協(xié)議的應(yīng)用層協(xié)議。CANopen在包括海上電子設(shè)備,醫(yī)療設(shè)備以及鐵路系統(tǒng)等多個(gè)領(lǐng)域都有廣泛的應(yīng)用。
一、CANopen 協(xié)議結(jié)構(gòu)
CANopen協(xié)議的結(jié)構(gòu)定向根據(jù)ISO11898國(guó)際標(biāo)準(zhǔn),以開(kāi)放系統(tǒng)互聯(lián)網(wǎng)絡(luò)OSI為參考模型,結(jié)構(gòu)如圖1所示:
[align=center]
圖1 CANopen通信參考模型[/align]
如圖所示,在數(shù)據(jù)鏈路層,具有CAN控制芯片,遵循CAN 2.0A/2.0B協(xié)議,物理層規(guī)定執(zhí)行ISO11898國(guó)際標(biāo)準(zhǔn),數(shù)據(jù)鏈路層和物理層由硬件實(shí)現(xiàn)
CANopen的設(shè)備規(guī)范,使得制造商可以按照其規(guī)范生產(chǎn)標(biāo)準(zhǔn)的通用設(shè)備,也不需要特殊的軟件來(lái)把不同廠家的網(wǎng)絡(luò)設(shè)備組建起來(lái)?;镜木W(wǎng)絡(luò)操作由明確的強(qiáng)制的設(shè)備規(guī)范所保證。CiA提供了包括CiA-401的I/O模型,以及CiA-404的用于測(cè)量設(shè)備和閉環(huán)控制的規(guī)程。這些規(guī)程都由一個(gè)叫做“對(duì)象字典”的標(biāo)準(zhǔn)化數(shù)據(jù)庫(kù)來(lái)實(shí)現(xiàn)。對(duì)象字典可以用一個(gè)16 位的索引進(jìn)行存取,在數(shù)組和結(jié)構(gòu)的情況下再用一個(gè)8 位的子索引。該字典也描述了設(shè)備的全部應(yīng)用對(duì)象。
二、CANopen通信對(duì)象
CANopen通信標(biāo)準(zhǔn)規(guī)定了四中通信對(duì)象(報(bào)文),通過(guò)通信標(biāo)識(shí)符(COB-ID)或CAN標(biāo)識(shí)符來(lái)表示區(qū)分。
1. 網(wǎng)絡(luò)管理報(bào)文NMT
網(wǎng)絡(luò)管理報(bào)文提供網(wǎng)絡(luò)管理服務(wù),例如,初始化,錯(cuò)誤控制和設(shè)備狀態(tài)控制。所有這些功能都是基于主-從這個(gè)概念上的。
1.1 NMT對(duì)象
NMT 對(duì)象映象到一個(gè)單一的帶有2 個(gè)字節(jié)數(shù)據(jù)長(zhǎng)度的CAN 幀,它的標(biāo)識(shí)符為0 ,第一個(gè)字節(jié)包含命令說(shuō)明符,第二個(gè)字節(jié)包含必須執(zhí)行此命令的設(shè)備的節(jié)點(diǎn)標(biāo)識(shí)符,當(dāng)節(jié)點(diǎn)標(biāo)識(shí)符為0 時(shí),所有的從節(jié)點(diǎn)必須執(zhí)行此命令。由NMT 主站發(fā)送的NMT 對(duì)象強(qiáng)制節(jié)點(diǎn)轉(zhuǎn)換成另一個(gè)狀態(tài)。
1.2 NMT節(jié)點(diǎn)保護(hù)(Node guarding)
節(jié)點(diǎn)保護(hù)對(duì)象是由NMT 主站節(jié)點(diǎn)遠(yuǎn)程請(qǐng)求的具有一個(gè)字節(jié)的CAN 幀。 數(shù)據(jù)字節(jié)主要包含節(jié)點(diǎn)的狀態(tài), 節(jié)點(diǎn)保護(hù)時(shí)間在對(duì)象定期發(fā)送,節(jié)點(diǎn)保護(hù)時(shí)間也在對(duì)象字典中作了規(guī)定。此外還規(guī)定了保護(hù)時(shí)間壽命(Life Guarding Time) ,在該時(shí)間區(qū)內(nèi)NMT 主站必須保護(hù)一個(gè)NMT 從站,這就確保了即使在主站不存在的情況下,節(jié)點(diǎn)仍能以用戶指定的方式作出反應(yīng)。
圖2顯示了NMT功能和特定命令字的關(guān)系:
[align=center]
圖2 NMT功能命令字[/align]
2. 過(guò)程數(shù)據(jù)對(duì)象(PDO)
過(guò)程數(shù)據(jù)對(duì)象用來(lái)傳遞實(shí)時(shí)數(shù)據(jù),數(shù)據(jù)由一個(gè)生產(chǎn)者發(fā)出,可以有一個(gè)或多個(gè)消費(fèi)者接受。數(shù)據(jù)傳輸被限制在1到8個(gè)字節(jié)內(nèi),每個(gè)PDO 有一個(gè)唯一的標(biāo)識(shí)符,標(biāo)識(shí)符具有高優(yōu)先級(jí)以確保良好的實(shí)時(shí)性能,如果需要硬實(shí)時(shí)控制,那么系統(tǒng)的設(shè)計(jì)者可為每個(gè)PDO 組態(tài)一個(gè)禁止時(shí)間(inhibit-time) ,該“禁止時(shí)間”嚴(yán)禁在特定的時(shí)間內(nèi)發(fā)送這個(gè)對(duì)象。PDO有三種傳輸模式:
?。?)事件或定時(shí)器觸發(fā)PDO模式。此種傳輸模式又叫做異步PDO模式。當(dāng)設(shè)備內(nèi)的特別設(shè)備或特別制造商事件發(fā)生時(shí)PDO被傳送,這些事件如應(yīng)用數(shù)值的改變,例如數(shù)字輸入的改變,溫度的改變等。使用這種傳輸模式對(duì)網(wǎng)絡(luò)帶寬的要求最低。
(2)遠(yuǎn)程請(qǐng)求觸發(fā)PDO模式。PDO消費(fèi)者可以通過(guò)發(fā)送一個(gè)CAN遠(yuǎn)程幀,相應(yīng)的PDO生產(chǎn)者將對(duì)遠(yuǎn)程幀做出反應(yīng)。由于不同CAN控制器的遠(yuǎn)程幀行為不同,所以在正常運(yùn)作時(shí)這種傳輸模式是不允許的。此外,相比事件或定時(shí)器觸發(fā)PDO模式,此傳輸模式對(duì)帶寬有更高的要求。
(3)同步觸發(fā)PDO模式。同步PDO模式由Sync(同步)報(bào)文觸發(fā)。負(fù)責(zé)發(fā)送同步報(bào)文的是同步生產(chǎn)者(Sync producer),同步生產(chǎn)者可以存在于如簡(jiǎn)單的輸入輸出設(shè)備,驅(qū)動(dòng)器和復(fù)雜的過(guò)程控制設(shè)備中。
3. 服務(wù)數(shù)據(jù)對(duì)象(SDO)
服務(wù)數(shù)據(jù)對(duì)象用于建立兩個(gè)CANopen設(shè)備的點(diǎn)對(duì)點(diǎn)通信,這種連接是基于客戶/服務(wù)器機(jī)理的。SDO服務(wù)器是對(duì)要求連接設(shè)備提供對(duì)象字典的設(shè)備,SDO客戶是想連接特定設(shè)備的對(duì)象字典的設(shè)備。SDO服務(wù)是基于具有兩個(gè)不同標(biāo)識(shí)符的CAN報(bào)文之上的,一個(gè)報(bào)文由SDO服務(wù)器使用,另外一個(gè)由SDO客戶使用。一個(gè)SDO客戶可以有最多127個(gè)通道,也就意味著一個(gè)SDO客戶可以同時(shí)和最多127個(gè)不同設(shè)備連接。
4. 預(yù)定報(bào)文或特殊功能對(duì)象
CANopen 還定義了三個(gè)特定對(duì)象:同步,時(shí)間標(biāo)記,和應(yīng)急對(duì)象。
(1)同步對(duì)象(Synchronization object)。同步對(duì)象通過(guò)外部事件同步所有設(shè)備。在網(wǎng)絡(luò)上有一個(gè)設(shè)備是同步發(fā)生器,它的唯一功能就是產(chǎn)生同步信號(hào),網(wǎng)絡(luò)上的任何設(shè)備在接受到同步信號(hào)后都必須同步。同步信號(hào)是一個(gè)短報(bào)文,它只是一個(gè)CAN報(bào)文,而沒(méi)有任何數(shù)據(jù),但它可具有多達(dá)8 個(gè)字節(jié)的用戶專用數(shù)據(jù)
?。?)時(shí)間標(biāo)記對(duì)象(Time Stamp Object)。時(shí)間標(biāo)記對(duì)象利用系統(tǒng)時(shí)鐘同步本地時(shí)鐘。一個(gè)通用的時(shí)間幀參考提供給設(shè)備,它包含一個(gè)時(shí)間和日期的值,相關(guān)的CAN 幀有標(biāo)識(shí)符256 和一個(gè)6 個(gè)字節(jié)長(zhǎng)度的數(shù)據(jù)字段。
?。?)應(yīng)急對(duì)象(Emergency object)。應(yīng)急對(duì)象被用來(lái)傳遞應(yīng)用設(shè)備的狀態(tài)信息。由設(shè)備內(nèi)部出現(xiàn)致命錯(cuò)誤來(lái)觸發(fā)。因此應(yīng)急對(duì)象適用于中斷類型的報(bào)警信號(hào)。每個(gè)“錯(cuò)誤事件”(error event)只能發(fā)送一次應(yīng)急對(duì)象,只有當(dāng)設(shè)備發(fā)生新的應(yīng)急事件時(shí),才可以再發(fā)送應(yīng)急對(duì)象。CANopen通信標(biāo)準(zhǔn)規(guī)定了應(yīng)急錯(cuò)誤代碼,它是一個(gè)單一的具有8 個(gè)數(shù)據(jù)字節(jié)的CAN 幀。
三、標(biāo)識(shí)符的地址分配
為了減少對(duì)簡(jiǎn)單網(wǎng)絡(luò)管理工作,CANopen 定義了強(qiáng)制性的缺省標(biāo)識(shí)符地址分配表。這些標(biāo)識(shí)符在初始化后可以在預(yù)操作狀態(tài)中獲得。這個(gè)缺省ID分配表包括一個(gè)功能部分和一個(gè)模塊ID部分。標(biāo)識(shí)符規(guī)定了其對(duì)象的優(yōu)先級(jí)別。
這些ID分配表允許單一主設(shè)備與多達(dá)127個(gè)從設(shè)備進(jìn)行點(diǎn)對(duì)點(diǎn)(peer-to-peer)通信。也支持非確認(rèn)的NMT 廣播,同步和時(shí)間標(biāo)定對(duì)象以及節(jié)點(diǎn)保護(hù)。預(yù)定的主/從連接集支持1個(gè)應(yīng)急對(duì)象(Emergency object),1個(gè)SDO,最多4個(gè)接收PDO(Receive-PDO)和4個(gè)發(fā)送PDO(Transmit-PDO) 和節(jié)點(diǎn)保護(hù)對(duì)象(Node Guarding Object)。
預(yù)定主/從連接集定義了一些CAN標(biāo)示符,而其他的是開(kāi)放的,可以有設(shè)計(jì)者定義。NMT(0),缺省SDO(1405-1535和1537-1663),NMT錯(cuò)誤控制報(bào)文(1793-1919)這些標(biāo)示符是固定不可改變的。
四、結(jié)束語(yǔ)
總之,CANopen為客戶提供了標(biāo)準(zhǔn)的CAN的應(yīng)用層協(xié)議。CANopen非常靈活的應(yīng)用層協(xié)議和許多可供選擇的特性都有利于嵌入式網(wǎng)絡(luò)設(shè)計(jì)者設(shè)計(jì)出更有競(jìng)爭(zhēng)力的產(chǎn)品。此外,已經(jīng)有很多通用的管理工具及軟件,客戶可以根據(jù)自己的需要設(shè)計(jì)特定的網(wǎng)絡(luò)設(shè)備。隨著對(duì)現(xiàn)場(chǎng)總線研究的深入,CANopen將會(huì)在更多領(lǐng)域得到廣泛應(yīng)用。
參考文獻(xiàn)
[1] CAN-in-Automation ,CAL, CAN Application Layer for Industrial Applications, CiA Draft Standard DS-201 to DS-207, Version 1.1, Feb 1996.
[2] CAN-in-Automation,CANopen, CAL-based Communication Profile for Industrial Systems, CiA DS-301, Version 4.0, June 16 1999.
[3] CAN-in-Automation, CANopen Device Profile for I/O Modules, CiA DSP-401, Version 1.4, Dec 1996.
[4] 陽(yáng)憲惠,現(xiàn)場(chǎng)總線技術(shù)及其應(yīng)用,清華大學(xué)出版社,2001.12