CANopen總線技術(shù)
在CAN總線協(xié)議飛速發(fā)展的20年中,很多領(lǐng)域都制定了CAN在該領(lǐng)域應(yīng)用時所采用的高層協(xié)議規(guī)范。其中,比較著名的有美國汽車工程師協(xié)會(SAE)制定的車內(nèi)通信規(guī)范J1939等。這些協(xié)議和規(guī)范對CAN的推廣起了很大的作用,但總體來說,協(xié)議的模塊化特性都不太好,一般只能應(yīng)用于特定的領(lǐng)域。為了能夠把CAN推廣到更多的領(lǐng)域,歐洲一些公司推出了CAL(應(yīng)用層CAN)協(xié)議,盡管CAL在理論上正確,并在工業(yè)上可以投入應(yīng)用,但每個用戶都必須設(shè)計一個新的子協(xié)議,因為CAL 是一個真正的應(yīng)用層協(xié)議。CAL 可以被看作一個應(yīng)用CAN 方案的必要理論步驟,但在這一領(lǐng)域它不會被推廣。從1993 年起,由Bosch公司領(lǐng)導(dǎo)的一個歐洲機(jī)構(gòu)研究出一個協(xié)議原型,由此發(fā)展成為CANopen規(guī)范。
CANopen是一個基于CAL的子協(xié)議,采用面向?qū)ο蟮乃枷朐O(shè)計,具有很好的模塊化特性和很高的適應(yīng)性,通過擴(kuò)展可以適用于大量的應(yīng)用領(lǐng)域。在CANopen規(guī)范基本完成之后,Bosch將其移交給CIA組織,由其進(jìn)行維護(hù)與發(fā)展。在1995年,CIA發(fā)表了完整版的CANopen通信子協(xié)議;僅僅用了5年的時間,它已成為全歐洲重要的嵌入式網(wǎng)絡(luò)標(biāo)準(zhǔn)。
CANopen不僅定義了應(yīng)用層和通信子協(xié)議,而且為可編程系統(tǒng)、不同器件、接口、應(yīng)用子協(xié)議定義了大量的行規(guī),遵循這些行規(guī)開發(fā)出的CANopen設(shè)備將能夠?qū)崿F(xiàn)不同公司產(chǎn)品間的互操作。另外,CANopen協(xié)議是免許可證的,任何組織和個人都可以開發(fā)支持CANopen協(xié)議的設(shè)備而不用支付版稅,這也是CANopen得到迅猛發(fā)展的重要原因之一。CANopen目前已在汽車工業(yè)控制系統(tǒng),公共交通運輸系統(tǒng),醫(yī)療設(shè)備,海運電子設(shè)備和建筑自動化系統(tǒng)中取得了廣泛的應(yīng)用,是將CAN應(yīng)用推向深化的理想選擇。
1. 采用CANopen協(xié)議實現(xiàn)通信
CANopen協(xié)議中包含了標(biāo)準(zhǔn)的應(yīng)用層規(guī)范和通信規(guī)范,其通信模型如圖1所示。在CANopen的應(yīng)用層,設(shè)備間通過相互交換通信對象進(jìn)行通信。良好的分層和面向?qū)ο蟮脑O(shè)計思想將帶給用戶一個清晰的通信模型。
2. CANopen設(shè)備模型
一個CANopen設(shè)備模塊可以被分為3部分,如圖2所示。
通信接口和協(xié)議軟件提供在總線上收發(fā)通信對象的服務(wù)。不同CANopen設(shè)備間的通信都是通過交換通信對象完成的。這一部分直接面向CAN控制器進(jìn)行操作。
對象字典描述了設(shè)備使用的所有的數(shù)據(jù)類型,通信對象和應(yīng)用對象。是一個CANopen設(shè)備的核心部分。對象字典位于通信程序和應(yīng)用程序之間,向應(yīng)用程序提供接口,應(yīng)用程序?qū)ο笞值溥M(jìn)行操作就可以實現(xiàn)CANopen通信。理解對象字典的概念是理解CANopen模型的關(guān)鍵。
應(yīng)用程序由用戶編寫,包括功能部分和通信部分。通信部分通過對對象字典進(jìn)行操作實現(xiàn)CANopen通信,而功能部分由用戶根據(jù)應(yīng)用要求實現(xiàn)。
CANopen網(wǎng)絡(luò)的通信和管理都是通過不同的通信對象來完成的,為了能夠?qū)崿F(xiàn)通信,網(wǎng)絡(luò)管理,緊急情況處理等功能,CANopen規(guī)范定義了四類標(biāo)準(zhǔn)的通信對象:
3. 進(jìn)程數(shù)據(jù)對象(PDO)
第一類通信對象為進(jìn)程數(shù)據(jù)對象。PDO被映射到單一的CAN幀中,使用所有的8個字節(jié)的數(shù)據(jù)域來傳輸應(yīng)用對象。每個PDO有一個獨立的標(biāo)識符并且可能只被一個節(jié)點發(fā)送,但它可以被多于一個節(jié)點接收,這種模式被稱之為生產(chǎn)者/消費者通信模式。PDO可以通過多種模式傳送,內(nèi)部事件,外部時鐘,遠(yuǎn)程幀請求以及從特定節(jié)點接收到同步報文都可以啟動PDO發(fā)送。
4. 服務(wù)數(shù)據(jù)對象(SDO)
第二類通信對象為服務(wù)數(shù)據(jù)對象,該對象可以傳輸大于8個字節(jié)的配置信息。也就是說,SDO傳送協(xié)議允許傳送任意長度的對象。接收者將確認(rèn)收到的每個段信息,發(fā)送和接收者間將建立點對點的通信,稱之為客戶機(jī)/服務(wù)器模式。未來,CANopen將允許快速傳輸SDO,不必對傳送的每個段都進(jìn)行確認(rèn),只要在整個對象傳送完畢后進(jìn)行確認(rèn)即可。
5. 網(wǎng)絡(luò)管理對象(NMT)
第三類通信對象是網(wǎng)絡(luò)管理對象,包括節(jié)點警戒對象以及NMT對象。節(jié)點警戒對象是由NMT主節(jié)點遠(yuǎn)程請求發(fā)送的帶有1字節(jié)數(shù)據(jù)的CAN幀,一個字節(jié)的數(shù)據(jù)中包含1個觸發(fā)位以及7個用于表示節(jié)點狀態(tài)的數(shù)據(jù)位。NMT主節(jié)點將周期性地發(fā)送節(jié)點警戒對象。發(fā)送周期(警戒時間)的長度在對象字典中規(guī)定并且可以通過SDO進(jìn)行配置。另外,系統(tǒng)還定義了生命警戒時間,NMT主節(jié)點要在生命警戒時間過后向NMT從節(jié)點發(fā)送遠(yuǎn)程請求。這種機(jī)制保證了即使NMT主節(jié)點不在了,系統(tǒng)中的其他節(jié)點也可以通過用戶定義的方式進(jìn)行回應(yīng)。
6. 特殊功能對象
CANopen還為同步,緊急狀態(tài)表示以及時間標(biāo)記傳送定義了三個特定的對象。同步對象由同步制造者向網(wǎng)絡(luò)進(jìn)行周期性廣播,該對象將提供基本的網(wǎng)絡(luò)時鐘。當(dāng)設(shè)備發(fā)生嚴(yán)重的內(nèi)部錯誤時,相關(guān)的一個緊急狀態(tài)客戶機(jī)將發(fā)送一個緊急狀態(tài)對象。時間標(biāo)記對象將為應(yīng)用設(shè)備提供公共的時間幀參考。
要理解CANopen規(guī)范,核心是要理解CANopen的設(shè)備模型和各類型的通信對象。掌握了這兩者后,通過利用各類標(biāo)準(zhǔn)的設(shè)備描述就可以開發(fā)出符合國際標(biāo)準(zhǔn)的CANopen設(shè)備了。
7. 展望
最近一段時期,國內(nèi)開發(fā)、應(yīng)用CAN系統(tǒng)的人員正在逐漸增多,對CAN協(xié)議的研究也在不斷加深。在很多領(lǐng)域,如研制電動汽車和混合動力汽車的863重大課題,已經(jīng)將CAN作為標(biāo)準(zhǔn)的車內(nèi)通信協(xié)議確定下來。電力,航天等部門也在CAN方面取得了不小的應(yīng)用成績。
在CAN應(yīng)用蓬勃發(fā)展的時候,我們也應(yīng)當(dāng)清醒地看到,盡管CAN協(xié)議在歐美已經(jīng)發(fā)展了20年,應(yīng)用層協(xié)議的發(fā)展也差不多有10年時間,但目前國內(nèi)大多數(shù)的應(yīng)用系統(tǒng)仍然基于CAN2.0B規(guī)范開發(fā),還不能在應(yīng)用層的水平上進(jìn)一步深入,這不能不說是很遺憾的事情。另外,國內(nèi)研究、開發(fā)CAN協(xié)議,尤其是CAN高層協(xié)議的組織和人員還太少,這對CAN在中國的推廣是十分不利的,筆者誠切希望更多的有識之士能夠加入這一行列。