摘 要:介紹了CAN總線的應用層協議CANopen;介紹了CANopen系統的應用;詳細介紹了CANopen的協議結構,通信對象以及標識符的地址分配。
關鍵詞:現場總線; CAN總線; CANopen; 協議
引言
現場總線的應用研究日益廣泛,在眾多的現場總線中,其中 CAN總線以其易于掌握、易于開發等優點,成為一種很有應用前景的現場總線。但CAN不是一種完整的網絡協議,缺少應用層和網絡管理部分。CANopen是最初由從事工業控制的CiA(CAN in Automation)會員開發的針對工業系統,并基于CAN通信協議的應用層協議。CANopen在包括海上電子設備,醫療設備以及鐵路系統等多個領域都有廣泛的應用。
一、CANopen 協議結構
CANopen協議的結構定向根據ISO11898國際標準,以開放系統互聯網絡OSI為參考模型,結構如圖1所示:
[align=center]

圖1 CANopen通信參考模型[/align]
如圖所示,在數據鏈路層,具有CAN控制芯片,遵循CAN 2.0A/2.0B協議,物理層規定執行ISO11898國際標準,數據鏈路層和物理層由硬件實現
CANopen的設備規范,使得制造商可以按照其規范生產標準的通用設備,也不需要特殊的軟件來把不同廠家的網絡設備組建起來。基本的網絡操作由明確的強制的設備規范所保證。CiA提供了包括CiA-401的I/O模型,以及CiA-404的用于測量設備和閉環控制的規程。這些規程都由一個叫做“對象字典”的標準化數據庫來實現。對象字典可以用一個16 位的索引進行存取,在數組和結構的情況下再用一個8 位的子索引。該字典也描述了設備的全部應用對象。
二、CANopen通信對象
CANopen通信標準規定了四中通信對象(報文),通過通信標識符(COB-ID)或CAN標識符來表示區分。
1. 網絡管理報文NMT
網絡管理報文提供網絡管理服務,例如,初始化,錯誤控制和設備狀態控制。所有這些功能都是基于主-從這個概念上的。
1.1 NMT對象
NMT 對象映象到一個單一的帶有2 個字節數據長度的CAN 幀,它的標識符為0 ,第一個字節包含命令說明符,第二個字節包含必須執行此命令的設備的節點標識符,當節點標識符為0 時,所有的從節點必須執行此命令。由NMT 主站發送的NMT 對象強制節點轉換成另一個狀態。
1.2 NMT節點保護(Node guarding)
節點保護對象是由NMT 主站節點遠程請求的具有一個字節的CAN 幀。 數據字節主要包含節點的狀態, 節點保護時間在對象定期發送,節點保護時間也在對象字典中作了規定。此外還規定了保護時間壽命(Life Guarding Time) ,在該時間區內NMT 主站必須保護一個NMT 從站,這就確保了即使在主站不存在的情況下,節點仍能以用戶指定的方式作出反應。
圖2顯示了NMT功能和特定命令字的關系:
[align=center]

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