CANopen總線技術

在CAN總線協議飛速發展的20年中,很多領域都制定了CAN在該領域應用時所采用的高層協議規范。其中,比較著名的有美國汽車工程師協會(SAE)制定的車內通信規范J1939等。這些協議和規范對CAN的推廣起了很大的作用,但總體來說,協議的模塊化特性都不太好,一般只能應用于特定的領域。為了能夠把CAN推廣到更多的領域,歐洲一些公司推出了CAL(應用層CAN)協議,盡管CAL在理論上正確,并在工業上可以投入應用,但每個用戶都必須設計一個新的子協議,因為CAL 是一個真正的應用層協議。CAL 可以被看作一個應用CAN 方案的必要理論步驟,但在這一領域它不會被推廣。從1993 年起,由Bosch公司領導的一個歐洲機構研究出一個協議原型,由此發展成為CANopen規范。

CANopen是一個基于CAL的子協議,采用面向對象的思想設計,具有很好的模塊化特性和很高的適應性,通過擴展可以適用于大量的應用領域。在CANopen規范基本完成之后,Bosch將其移交給CIA組織,由其進行維護與發展。在1995年,CIA發表了完整版的CANopen通信子協議;僅僅用了5年的時間,它已成為全歐洲重要的嵌入式網絡標準。

CANopen不僅定義了應用層和通信子協議,而且為可編程系統、不同器件、接口、應用子協議定義了大量的行規,遵循這些行規開發出的CANopen設備將能夠實現不同公司產品間的互操作。另外,CANopen協議是免許可證的,任何組織和個人都可以開發支持CANopen協議的設備而不用支付版稅,這也是CANopen得到迅猛發展的重要原因之一。CANopen目前已在汽車工業控制系統,公共交通運輸系統,醫療設備,海運電子設備和建筑自動化系統中取得了廣泛的應用,是將CAN應用推向深化的理想選擇。

1. 采用CANopen協議實現通信

CANopen協議中包含了標準的應用層規范和通信規范,其通信模型如圖1所示。在CANopen的應用層,設備間通過相互交換通信對象進行通信。良好的分層和面向對象的設計思想將帶給用戶一個清晰的通信模型。

2. CANopen設備模型

一個CANopen設備模塊可以被分為3部分,如圖2所示。

通信接口和協議軟件提供在總線上收發通信對象的服務。不同CANopen設備間的通信都是通過交換通信對象完成的。這一部分直接面向CAN控制器進行操作。

對象字典描述了設備使用的所有的數據類型,通信對象和應用對象。是一個CANopen設備的核心部分。對象字典位于通信程序和應用程序之間,向應用程序提供接口,應用程序對對象字典進行操作就可以實現CANopen通信。理解對象字典的概念是理解CANopen模型的關鍵。

應用程序由用戶編寫,包括功能部分和通信部分。通信部分通過對對象字典進行操作實現CANopen通信,而功能部分由用戶根據應用要求實現。

CANopen網絡的通信和管理都是通過不同的通信對象來完成的,為了能夠實現通信,網絡管理,緊急情況處理等功能,CANopen規范定義了四類標準的通信對象:

3. 進程數據對象(PDO)

第一類通信對象為進程數據對象。PDO被映射到單一的CAN幀中,使用所有的8個字節的數據域來傳輸應用對象。每個PDO有一個獨立的標識符并且可能只被一個節點發送,但它可以被多于一個節點接收,這種模式被稱之為生產者/消費者通信模式。PDO可以通過多種模式傳送,內部事件,外部時鐘,遠程幀請求以及從特定節點接收到同步報文都可以啟動PDO發送。

4. 服務數據對象(SDO)

第二類通信對象為服務數據對象,該對象可以傳輸大于8個字節的配置信息。也就是說,SDO傳送協議允許傳送任意長度的對象。接收者將確認收到的每個段信息,發送和接收者間將建立點對點的通信,稱之為客戶機/服務器模式。未來,CANopen將允許快速傳輸SDO,不必對傳送的每個段都進行確認,只要在整個對象傳送完畢后進行確認即可。

5. 網絡管理對象(NMT)

第三類通信對象是網絡管理對象,包括節點警戒對象以及NMT對象。節點警戒對象是由NMT主節點遠程請求發送的帶有1字節數據的CAN幀,一個字節的數據中包含1個觸發位以及7個用于表示節點狀態的數據位。NMT主節點將周期性地發送節點警戒對象。發送周期(警戒時間)的長度在對象字典中規定并且可以通過SDO進行配置。另外,系統還定義了生命警戒時間,NMT主節點要在生命警戒時間過后向NMT從節點發送遠程請求。這種機制保證了即使NMT主節點不在了,系統中的其他節點也可以通過用戶定義的方式進行回應。

6. 特殊功能對象

CANopen還為同步,緊急狀態表示以及時間標記傳送定義了三個特定的對象。同步對象由同步制造者向網絡進行周期性廣播,該對象將提供基本的網絡時鐘。當設備發生嚴重的內部錯誤時,相關的一個緊急狀態客戶機將發送一個緊急狀態對象。時間標記對象將為應用設備提供公共的時間幀參考。

要理解CANopen規范,核心是要理解CANopen的設備模型和各類型的通信對象。掌握了這兩者后,通過利用各類標準的設備描述就可以開發出符合國際標準的CANopen設備了。

7. 展望

最近一段時期,國內開發、應用CAN系統的人員正在逐漸增多,對CAN協議的研究也在不斷加深。在很多領域,如研制電動汽車和混合動力汽車的863重大課題,已經將CAN作為標準的車內通信協議確定下來。電力,航天等部門也在CAN方面取得了不小的應用成績。

在CAN應用蓬勃發展的時候,我們也應當清醒地看到,盡管CAN協議在歐美已經發展了20年,應用層協議的發展也差不多有10年時間,但目前國內大多數的應用系統仍然基于CAN2.0B規范開發,還不能在應用層的水平上進一步深入,這不能不說是很遺憾的事情。另外,國內研究、開發CAN協議,尤其是CAN高層協議的組織和人員還太少,這對CAN在中國的推廣是十分不利的,筆者誠切希望更多的有識之士能夠加入這一行列。