1 引言
現(xiàn)場(chǎng)總線在控制系統(tǒng)中的應(yīng)用使各領(lǐng)域的綜合自動(dòng)化控制技術(shù)飛速發(fā)展,成為控制領(lǐng)域的一個(gè)新熱點(diǎn)。而CAN總線是現(xiàn)場(chǎng)總線領(lǐng)域中一種很有前途的通訊技術(shù),CAN稱為控制器局域網(wǎng),屬于總線式通訊網(wǎng)絡(luò)。它是20世紀(jì)80年代初德國(guó)BOSCH公司提出為解決汽車內(nèi)部眾多控制器與測(cè)量設(shè)備之間的數(shù)據(jù)交換而開發(fā)的一種串行數(shù)據(jù)通信總線,是一種有效支持分布式控制系統(tǒng)或?qū)崟r(shí)控制的串行通信網(wǎng)絡(luò)。后來,因其可靠性高、抗干擾性強(qiáng)、開發(fā)簡(jiǎn)單、造價(jià)低廉及其短幀傳輸和無破壞仲裁技術(shù)等使其應(yīng)用極為廣泛。
2 CAN總線技術(shù)概述
在現(xiàn)場(chǎng)總線系統(tǒng)中,節(jié)點(diǎn)間通過公共傳輸介質(zhì)傳輸數(shù)據(jù),因而數(shù)據(jù)鏈路層是總線的核心部分。CAN總線數(shù)據(jù)鏈路層的通信介質(zhì)訪問控制方式為事件觸發(fā),采用帶優(yōu)先級(jí)的隨機(jī)載波偵聽方式(CSMA/CD)。只要總線空閑,任何節(jié)點(diǎn)都可以主動(dòng)向網(wǎng)絡(luò)上其它節(jié)點(diǎn)發(fā)送數(shù)據(jù)。規(guī)定CAN報(bào)文具有最低二進(jìn)制數(shù)值的標(biāo)識(shí)符優(yōu)先級(jí)別最高。當(dāng)發(fā)生沖突時(shí),采用“非破壞性總線優(yōu)先逐位仲裁”技術(shù)當(dāng)多個(gè)節(jié)點(diǎn)開始傳送它們各自的報(bào)文時(shí),標(biāo)識(shí)符的每一個(gè)位都被寫到總線上(高位在先,低位在后),而且能夠被每一個(gè)節(jié)點(diǎn)讀回。如果一個(gè)節(jié)點(diǎn)寫進(jìn)了隱性位“1”而讀回顯性位“0”,它會(huì)知道另一個(gè)較低標(biāo)識(shí)符號(hào)碼的(高優(yōu)先權(quán))節(jié)點(diǎn)正在訪問總線,于是停止傳送報(bào)文(丟失仲裁)并繼續(xù)接收更重要的報(bào)文。這種非破壞性的逐位仲裁與每一個(gè)節(jié)點(diǎn)都可以監(jiān)控自己發(fā)送的能力聯(lián)合使用。
CAN協(xié)議的一個(gè)特點(diǎn)是廢除了傳統(tǒng)的站地址編碼。而代之以標(biāo)識(shí)符,采用這種方法的優(yōu)點(diǎn)是網(wǎng)絡(luò)內(nèi)的節(jié)點(diǎn)個(gè)數(shù)在理論上不受限制。還可使不同的節(jié)點(diǎn)同時(shí)接收到相同的數(shù)據(jù),這一點(diǎn)在分布式控制系統(tǒng)中非常有用。CAN的數(shù)據(jù)幀數(shù)據(jù)段的長(zhǎng)度少于8字節(jié),可滿足通常工業(yè)領(lǐng)域中控制命令、工作狀態(tài)或測(cè)試數(shù)據(jù)的要求。同時(shí),短的幀也不會(huì)占用總線時(shí)間過長(zhǎng),保證了實(shí)時(shí)性的要求。CAN幀中的標(biāo)識(shí)符除具有幀編碼的功能外,另一個(gè)重要作用是實(shí)現(xiàn)“非破壞性優(yōu)先權(quán)逐位仲裁規(guī)則”。采用這種規(guī)則既能保證具有最高優(yōu)先權(quán)的幀在遇到?jīng)_突時(shí)數(shù)據(jù)不被破壞,又能保證不延誤傳輸時(shí)間,提高了系統(tǒng)的效率和實(shí)時(shí)性。
CAN的報(bào)文有兩種不同的幀格式,不同之處是標(biāo)識(shí)符域的長(zhǎng)度不同,含有11位標(biāo)識(shí)符的幀稱之為標(biāo)準(zhǔn)幀,而含有29位標(biāo)識(shí)符的幀為擴(kuò)展幀。
3 基于CAN總線的高層協(xié)議CANopen
雖然CAN具有諸多優(yōu)點(diǎn),但CAN本身并非一個(gè)完整的協(xié)議,只包括物理層和數(shù)據(jù)鏈路層兩個(gè)底層協(xié)議,要進(jìn)行高效率的通訊還需要進(jìn)一步開發(fā)高層協(xié)議,Philips Semiconductors制定的CAN技術(shù)規(guī)范( Version2. 0)和ISO頒布的國(guó)際標(biāo)準(zhǔn)ISO 11898推動(dòng)了CAN的規(guī)范化、標(biāo)準(zhǔn)化和應(yīng)用系統(tǒng)設(shè)計(jì),各種基于CAN協(xié)議的高層協(xié)議的開發(fā)使得CAN總線的功能更強(qiáng),應(yīng)用范圍更廣。其中有DeviceNet應(yīng)用層協(xié)議、CAN Kingdom、SDS(Smart Distributed System)以及CANopen等。CANopen是由從事工業(yè)控制的CiA(CAN in Automation)的會(huì)員開發(fā),廣泛應(yīng)用于電力系統(tǒng)等工業(yè)控制,裝載機(jī)械,樓宇自動(dòng)化等多種領(lǐng)域。已被接受為CAN高層協(xié)議的標(biāo)準(zhǔn)之一。
CANopen是一個(gè)基于CAL的子協(xié)議,采用面向?qū)ο蟮乃枷朐O(shè)計(jì),具有很好的模塊化特性和很高的適應(yīng)性,通過擴(kuò)展可以適用于大量的應(yīng)用領(lǐng)域。CANopen不僅定義了應(yīng)用層和通信子協(xié)議,而且為可編程系統(tǒng)、不同器件、接口、應(yīng)用子協(xié)議定義了大量的行規(guī),遵循這些行規(guī)開發(fā)出的CANopen設(shè)備將能夠?qū)崿F(xiàn)不同公司產(chǎn)品間的互操作。另外,CANopen協(xié)議是免許可證的,任何組織和個(gè)人都可以開發(fā)支持CANopen協(xié)議的設(shè)備而不用支付版稅,這也是CANopen得到迅猛發(fā)展的重要原因之一。CANopen協(xié)議中包含了標(biāo)準(zhǔn)的應(yīng)用層規(guī)范和通信規(guī)范,其通信模型如圖1所示:

圖1 CANopen 協(xié)議層互操作描述
在CANopen的應(yīng)用層,設(shè)備間通過相互交換通信對(duì)象進(jìn)行通信。良好的分層和面向?qū)ο蟮脑O(shè)計(jì)思想將帶給用戶一個(gè)清晰的通信模型。協(xié)議層的相互操作描述了不同協(xié)議如果通信的。在CANopen的應(yīng)用層,設(shè)備相互交換通信對(duì)象和應(yīng)用對(duì)象,所有這些對(duì)象都可以通過一個(gè)16位的索引和一個(gè)8位的子索引檢索到。這些通信對(duì)象(COB)由預(yù)先定義或配置的標(biāo)識(shí)符映像到CAN的框架中。
一個(gè)CANopen設(shè)備模塊可以被分為3部分,如圖2所示:

圖2 CANopen設(shè)備模型
通信接口和協(xié)議軟件提供在總線上收發(fā)通信對(duì)象的服務(wù)。不同CANopen設(shè)備間的通信都是通過交換通信對(duì)象完成的。這一部分直接面向CAN控制器進(jìn)行操作。對(duì)象字典描述了設(shè)備使用的所有的數(shù)據(jù)類型、通信對(duì)象和應(yīng)用對(duì)象,它提供應(yīng)用軟件接口,是一個(gè)CANopen設(shè)備的核心部分。對(duì)象字典位于通信程序和應(yīng)用程序之間,向應(yīng)用程序提供接口,應(yīng)用程序?qū)?duì)象字典進(jìn)行操作就可以實(shí)現(xiàn)CANopen通信。理解對(duì)象字典的概念是理解CANopen模型的關(guān)鍵。對(duì)象字典更符合可選設(shè)備的特征,制造商不必為他的設(shè)備提供特定的擴(kuò)展功能。通過為可能增加的功能再對(duì)象字典的可選目錄中定義入口,那些希望那些增強(qiáng)功能的制造商都可以以同樣的方式實(shí)現(xiàn)自己的想法??梢酝ㄟ^一個(gè)16位的索引和一個(gè)8位的子索引檢索CANopen設(shè)備中最重要的部分是對(duì)象字典,對(duì)象字典實(shí)際上是一組對(duì)象,這些對(duì)象可以以一種有順序的預(yù)先定義好的方式通過網(wǎng)絡(luò)訪問到。
應(yīng)用程序由用戶編寫,包括功能部分和通信部分。通信部分通過對(duì)對(duì)象字典進(jìn)行操作實(shí)現(xiàn)CANopen通信,而功能部分由用戶根據(jù)應(yīng)用要求實(shí)現(xiàn)。CANopen網(wǎng)絡(luò)的通信和管理都是通過不同的通信對(duì)象來完成的,考慮到工業(yè)自動(dòng)化系統(tǒng)中數(shù)據(jù)流量的不同需要,CANopen規(guī)范定義了四類標(biāo)準(zhǔn)的通信對(duì)象:SDO、PDO、NMT和特殊對(duì)象,來實(shí)現(xiàn)通信,網(wǎng)絡(luò)管理,緊急情況處理等功能。協(xié)議利用CAN芯片通訊報(bào)文的標(biāo)示符段,定義出CANopen的通信對(duì)象標(biāo)識(shí)COB-ID (Communication Object Identfier)。COB-ID使用CAN芯片的標(biāo)識(shí)符段,如圖3所示:

圖3 CANopen COB-ID
服務(wù)數(shù)據(jù)對(duì)象SDO和過程數(shù)據(jù)對(duì)象PDO是CANopen的基本傳輸機(jī)制,PDO對(duì)小型數(shù)據(jù)進(jìn)行高速傳輸,以及通過SDO對(duì)對(duì)象字典進(jìn)行訪問,SDO主要用于在設(shè)備配置過程中傳遞參數(shù)以及大數(shù)據(jù)塊。
(1) 進(jìn)程數(shù)據(jù)對(duì)象PDO用于數(shù)據(jù)傳輸,優(yōu)先級(jí)較高,通常采用事件觸發(fā)、循環(huán)或者請(qǐng)求方式發(fā)送,作為廣播對(duì)象,它的上層沒有附加協(xié)議。一個(gè)PDO最大可傳輸8個(gè)字節(jié)數(shù)據(jù)。通過存儲(chǔ)在對(duì)象字典中的PDO映像(PDO Mapping)結(jié)構(gòu),可以對(duì)應(yīng)用對(duì)象到PDO對(duì)象的分配(Transmission Object)進(jìn)行調(diào)整,這可以保證設(shè)備可以對(duì)不同的應(yīng)用需求進(jìn)行調(diào)整。PDO通訊可以由任意節(jié)點(diǎn)發(fā)送數(shù)據(jù),由任意數(shù)目其它節(jié)點(diǎn)接收數(shù)據(jù)。
(2) 通過傳輸SDO用于對(duì)對(duì)象字典的讀寫訪問,它的優(yōu)先級(jí)較低,但可以實(shí)現(xiàn)可靠的數(shù)據(jù)傳輸,通過傳輸對(duì)象字典的索引以及子索引,可以定位相應(yīng)的對(duì)象字典入口,以實(shí)現(xiàn)對(duì)節(jié)點(diǎn)參數(shù)的設(shè)置、下載程序、定義PDO通信類型和數(shù)據(jù)的格式等。它由兩個(gè)CAN對(duì)象在兩個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)之間通過點(diǎn)對(duì)點(diǎn)的通信來實(shí)現(xiàn)這一過程。通過SDO傳送報(bào)文可以不受長(zhǎng)度的限制,但傳送SDO報(bào)文需要額外的協(xié)議開銷。
PDO和SDO的CAN報(bào)文標(biāo)識(shí)符可以直接通過對(duì)象字典的數(shù)據(jù)結(jié)構(gòu)的入口標(biāo)志符進(jìn)行分配,或者在簡(jiǎn)單的系統(tǒng)中,也可以用預(yù)定義的標(biāo)識(shí)符。
PDO的通信方式可以用制造商/消費(fèi)者模式來形容,進(jìn)程數(shù)據(jù)可以從一個(gè)設(shè)備那里發(fā)送到另一個(gè)設(shè)備或許多其它的設(shè)備,所以PDO應(yīng)該是無確認(rèn)模式的傳輸。
SDO下載/上載塊協(xié)議在初始化一個(gè)SDO塊下載/S上載消息時(shí)初始化,在這之后是一個(gè)SDO下載/上載序列塊。這個(gè)協(xié)議載收到一個(gè)結(jié)束SDO塊下載/上載消息時(shí)結(jié)束。
(3) 系統(tǒng)管理命令NMT控制從站工作狀態(tài)。CAN open網(wǎng)絡(luò)管理是基于節(jié)點(diǎn)的并且采用主/從結(jié)構(gòu)。這就要求在網(wǎng)絡(luò)中的一個(gè)設(shè)備專門作為NMT的管理者。其它節(jié)點(diǎn)都是NMT的從屬。在網(wǎng)絡(luò)上電進(jìn)程中,NMT主節(jié)點(diǎn)通過NMT服務(wù)控制從節(jié)點(diǎn)的初始化進(jìn)程,為監(jiān)視節(jié)點(diǎn)提供錯(cuò)誤控制服務(wù)和網(wǎng)絡(luò)通信狀態(tài),從網(wǎng)絡(luò)中的一個(gè)模塊到其它各個(gè)節(jié)點(diǎn)的配置數(shù)據(jù)的上傳和下載的配置控制服務(wù)。
(4) CANopen還定義了三個(gè)特定用于同步、時(shí)間標(biāo)記和應(yīng)急指示的同步對(duì)象,時(shí)間標(biāo)簽對(duì)象和緊急對(duì)象的特殊對(duì)象。同步對(duì)象用于同步設(shè)備周期性的對(duì)所有應(yīng)用設(shè)備廣播SYNC對(duì)象。SYNC對(duì)象提供基本的網(wǎng)絡(luò)時(shí)鐘。需要進(jìn)行同步操作的設(shè)備可以使用SYNC對(duì)象來同步本地時(shí)鐘和同步設(shè)備的時(shí)鐘。時(shí)間印記對(duì)象為應(yīng)用程序的設(shè)備提供一個(gè)通用的時(shí)間幀參考。緊急對(duì)象由設(shè)備內(nèi)部致命錯(cuò)誤的發(fā)生來觸發(fā),并且由相關(guān)的應(yīng)用程序設(shè)備以最高優(yōu)先級(jí)發(fā)往其它設(shè)備。這使得它很合適作設(shè)備內(nèi)部錯(cuò)誤的中斷報(bào)警器。
4 結(jié)束語(yǔ)
CAN總線因其具備其獨(dú)特的設(shè)計(jì)思想、優(yōu)良的性能和極高的可靠性受到工業(yè)界的青睞。在各個(gè)領(lǐng)域有著很好的應(yīng)用,而CAN高層協(xié)議的開發(fā)滿足了不同產(chǎn)品的兼容和互操作性,更進(jìn)一步推進(jìn)了CAN總線的推廣和應(yīng)用。CANopen協(xié)議和CAN協(xié)議構(gòu)成了一個(gè)完整的協(xié)議體系,使得CAN總線的功能更加的豐富和適應(yīng)更加復(fù)雜的應(yīng)用。實(shí)踐證明,基于CAN總線的控制系統(tǒng)在各個(gè)領(lǐng)域?qū)⒂蟹浅V闊的應(yīng)用前景。
參考文獻(xiàn)
[1> Phlips Semiconductor Company. CAN Specification [Vertion 2.0>,1999(9)
[2> 陽(yáng)憲惠. 現(xiàn)場(chǎng)總線技術(shù)及其應(yīng)用. 北京:清華大學(xué)出版社,1999:309~325
[3> 鄔寬明. CAN總線原理和應(yīng)用系統(tǒng)設(shè)計(jì). 北京:北京航空航天大學(xué)出版社,1996: 85~91
作者簡(jiǎn)介
薛 敏(1977-) 女 碩士研究生 從事CAN總線和高層協(xié)議的工業(yè)應(yīng)用工作。