摘 要:介紹了CAN總線的應(yīng)用層協(xié)議CANopen;介紹了CANopen系統(tǒng)的應(yīng)用;詳細(xì)介紹了CANopen的協(xié)議結(jié)構(gòu),通信對象以及標(biāo)識符的地址分配。
關(guān)鍵詞:現(xiàn)場總線; CAN總線; CANopen; 協(xié)議
引言
現(xiàn)場總線的應(yīng)用研究日益廣泛,在眾多的現(xiàn)場總線中,其中 CAN總線以其易于掌握、易于開發(fā)等優(yōu)點,成為一種很有應(yīng)用前景的現(xiàn)場總線。但CAN不是一種完整的網(wǎng)絡(luò)協(xié)議,缺少應(yīng)用層和網(wǎng)絡(luò)管理部分。CANopen是最初由從事工業(yè)控制的CiA(CAN in Automation)會員開發(fā)的針對工業(yè)系統(tǒng),并基于CAN通信協(xié)議的應(yīng)用層協(xié)議。CANopen在包括海上電子設(shè)備,醫(yī)療設(shè)備以及鐵路系統(tǒng)等多個領(lǐng)域都有廣泛的應(yīng)用。
一、CANopen 協(xié)議結(jié)構(gòu)
CANopen協(xié)議的結(jié)構(gòu)定向根據(jù)ISO11898國際標(biāo)準(zhǔn),以開放系統(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國際標(biāo)準(zhǔn),數(shù)據(jù)鏈路層和物理層由硬件實現(xiàn)
CANopen的設(shè)備規(guī)范,使得制造商可以按照其規(guī)范生產(chǎn)標(biāo)準(zhǔn)的通用設(shè)備,也不需要特殊的軟件來把不同廠家的網(wǎng)絡(luò)設(shè)備組建起來?;镜木W(wǎng)絡(luò)操作由明確的強制的設(shè)備規(guī)范所保證。CiA提供了包括CiA-401的I/O模型,以及CiA-404的用于測量設(shè)備和閉環(huán)控制的規(guī)程。這些規(guī)程都由一個叫做“對象字典”的標(biāo)準(zhǔn)化數(shù)據(jù)庫來實現(xiàn)。對象字典可以用一個16 位的索引進行存取,在數(shù)組和結(jié)構(gòu)的情況下再用一個8 位的子索引。該字典也描述了設(shè)備的全部應(yīng)用對象。
二、CANopen通信對象
CANopen通信標(biāo)準(zhǔn)規(guī)定了四中通信對象(報文),通過通信標(biāo)識符(COB-ID)或CAN標(biāo)識符來表示區(qū)分。
1. 網(wǎng)絡(luò)管理報文NMT
網(wǎng)絡(luò)管理報文提供網(wǎng)絡(luò)管理服務(wù),例如,初始化,錯誤控制和設(shè)備狀態(tài)控制。所有這些功能都是基于主-從這個概念上的。
1.1 NMT對象
NMT 對象映象到一個單一的帶有2 個字節(jié)數(shù)據(jù)長度的CAN 幀,它的標(biāo)識符為0 ,第一個字節(jié)包含命令說明符,第二個字節(jié)包含必須執(zhí)行此命令的設(shè)備的節(jié)點標(biāo)識符,當(dāng)節(jié)點標(biāo)識符為0 時,所有的從節(jié)點必須執(zhí)行此命令。由NMT 主站發(fā)送的NMT 對象強制節(jié)點轉(zhuǎn)換成另一個狀態(tài)。
1.2 NMT節(jié)點保護(Node guarding)
節(jié)點保護對象是由NMT 主站節(jié)點遠(yuǎn)程請求的具有一個字節(jié)的CAN 幀。 數(shù)據(jù)字節(jié)主要包含節(jié)點的狀態(tài), 節(jié)點保護時間在對象定期發(fā)送,節(jié)點保護時間也在對象字典中作了規(guī)定。此外還規(guī)定了保護時間壽命(Life Guarding Time) ,在該時間區(qū)內(nèi)NMT 主站必須保護一個NMT 從站,這就確保了即使在主站不存在的情況下,節(jié)點仍能以用戶指定的方式作出反應(yīng)。
圖2顯示了NMT功能和特定命令字的關(guān)系:
[align=center]

圖2 NMT功能命令字[/align]
2. 過程數(shù)據(jù)對象(PDO)
過程數(shù)據(jù)對象用來傳遞實時數(shù)據(jù),數(shù)據(jù)由一個生產(chǎn)者發(fā)出,可以有一個或多個消費者接受。數(shù)據(jù)傳輸被限制在1到8個字節(jié)內(nèi),每個PDO 有一個唯一的標(biāo)識符,標(biāo)識符具有高優(yōu)先級以確保良好的實時性能,如果需要硬實時控制,那么系統(tǒng)的設(shè)計者可為每個PDO 組態(tài)一個禁止時間(inhibit-time) ,該“禁止時間”嚴(yán)禁在特定的時間內(nèi)發(fā)送這個對象。PDO有三種傳輸模式:
?。?)事件或定時器觸發(fā)PDO模式。此種傳輸模式又叫做異步PDO模式。當(dāng)設(shè)備內(nèi)的特別設(shè)備或特別制造商事件發(fā)生時PDO被傳送,這些事件如應(yīng)用數(shù)值的改變,例如數(shù)字輸入的改變,溫度的改變等。使用這種傳輸模式對網(wǎng)絡(luò)帶寬的要求最低。
?。?)遠(yuǎn)程請求觸發(fā)PDO模式。PDO消費者可以通過發(fā)送一個CAN遠(yuǎn)程幀,相應(yīng)的PDO生產(chǎn)者將對遠(yuǎn)程幀做出反應(yīng)。由于不同CAN控制器的遠(yuǎn)程幀行為不同,所以在正常運作時這種傳輸模式是不允許的。此外,相比事件或定時器觸發(fā)PDO模式,此傳輸模式對帶寬有更高的要求。
?。?)同步觸發(fā)PDO模式。同步PDO模式由Sync(同步)報文觸發(fā)。負(fù)責(zé)發(fā)送同步報文的是同步生產(chǎn)者(Sync producer),同步生產(chǎn)者可以存在于如簡單的輸入輸出設(shè)備,驅(qū)動器和復(fù)雜的過程控制設(shè)備中。
3. 服務(wù)數(shù)據(jù)對象(SDO)
服務(wù)數(shù)據(jù)對象用于建立兩個CANopen設(shè)備的點對點通信,這種連接是基于客戶/服務(wù)器機理的。SDO服務(wù)器是對要求連接設(shè)備提供對象字典的設(shè)備,SDO客戶是想連接特定設(shè)備的對象字典的設(shè)備。SDO服務(wù)是基于具有兩個不同標(biāo)識符的CAN報文之上的,一個報文由SDO服務(wù)器使用,另外一個由SDO客戶使用。一個SDO客戶可以有最多127個通道,也就意味著一個SDO客戶可以同時和最多127個不同設(shè)備連接。
4. 預(yù)定報文或特殊功能對象
CANopen 還定義了三個特定對象:同步,時間標(biāo)記,和應(yīng)急對象。
?。?)同步對象(Synchronization object)。同步對象通過外部事件同步所有設(shè)備。在網(wǎng)絡(luò)上有一個設(shè)備是同步發(fā)生器,它的唯一功能就是產(chǎn)生同步信號,網(wǎng)絡(luò)上的任何設(shè)備在接受到同步信號后都必須同步。同步信號是一個短報文,它只是一個CAN報文,而沒有任何數(shù)據(jù),但它可具有多達(dá)8 個字節(jié)的用戶專用數(shù)據(jù)
?。?)時間標(biāo)記對象(Time Stamp Object)。時間標(biāo)記對象利用系統(tǒng)時鐘同步本地時鐘。一個通用的時間幀參考提供給設(shè)備,它包含一個時間和日期的值,相關(guān)的CAN 幀有標(biāo)識符256 和一個6 個字節(jié)長度的數(shù)據(jù)字段。
(3)應(yīng)急對象(Emergency object)。應(yīng)急對象被用來傳遞應(yīng)用設(shè)備的狀態(tài)信息。由設(shè)備內(nèi)部出現(xiàn)致命錯誤來觸發(fā)。因此應(yīng)急對象適用于中斷類型的報警信號。每個“錯誤事件”(error event)只能發(fā)送一次應(yīng)急對象,只有當(dāng)設(shè)備發(fā)生新的應(yīng)急事件時,才可以再發(fā)送應(yīng)急對象。CANopen通信標(biāo)準(zhǔn)規(guī)定了應(yīng)急錯誤代碼,它是一個單一的具有8 個數(shù)據(jù)字節(jié)的CAN 幀。
三、標(biāo)識符的地址分配
為了減少對簡單網(wǎng)絡(luò)管理工作,CANopen 定義了強制性的缺省標(biāo)識符地址分配表。這些標(biāo)識符在初始化后可以在預(yù)操作狀態(tài)中獲得。這個缺省ID分配表包括一個功能部分和一個模塊ID部分。標(biāo)識符規(guī)定了其對象的優(yōu)先級別。
這些ID分配表允許單一主設(shè)備與多達(dá)127個從設(shè)備進行點對點(peer-to-peer)通信。也支持非確認(rèn)的NMT 廣播,同步和時間標(biāo)定對象以及節(jié)點保護。預(yù)定的主/從連接集支持1個應(yīng)急對象(Emergency object),1個SDO,最多4個接收PDO(Receive-PDO)和4個發(fā)送PDO(Transmit-PDO) 和節(jié)點保護對象(Node Guarding Object)。
預(yù)定主/從連接集定義了一些CAN標(biāo)示符,而其他的是開放的,可以有設(shè)計者定義。NMT(0),缺省SDO(1405-1535和1537-1663),NMT錯誤控制報文(1793-1919)這些標(biāo)示符是固定不可改變的。
四、結(jié)束語
總之,CANopen為客戶提供了標(biāo)準(zhǔn)的CAN的應(yīng)用層協(xié)議。CANopen非常靈活的應(yīng)用層協(xié)議和許多可供選擇的特性都有利于嵌入式網(wǎng)絡(luò)設(shè)計者設(shè)計出更有競爭力的產(chǎn)品。此外,已經(jīng)有很多通用的管理工具及軟件,客戶可以根據(jù)自己的需要設(shè)計特定的網(wǎng)絡(luò)設(shè)備。隨著對現(xiàn)場總線研究的深入,CANopen將會在更多領(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] 陽憲惠,現(xiàn)場總線技術(shù)及其應(yīng)用,清華大學(xué)出版社,2001.12