1 引言
從1982年2月 RobertBosch公司在SAE(汽車工程協(xié)會)大會上宣布CAN控制器局部網(wǎng)的那一刻開始, CAN已經(jīng)走過20多年的歷史,。1992年,Mercedes(奔馳)在他們的高級客車中使用CAN技術(shù),相繼Volvo,、Volkswagen、BMW 等幾十家公司都在各自的汽車上應(yīng)用CAN技術(shù),。今天,在歐洲幾乎每一輛新客車均裝有CAN控制器局部網(wǎng),。CAN技術(shù)近年在我國發(fā)展也比較迅猛,國內(nèi)的高級客車也都開始應(yīng)用CAN技術(shù)。
CAN的協(xié)議在應(yīng)用過程中,用戶層直接訪問數(shù)據(jù)鏈接層,每個廠商提供的數(shù)據(jù)調(diào)用方式各不相同,而CAN的標(biāo)準(zhǔn)沒有規(guī)定應(yīng)用層的相關(guān)信息,因此,CAN設(shè)備的兼容性和互換性不是很規(guī)范,。而且,隨著應(yīng)用領(lǐng)域的擴(kuò)展,CAN協(xié)議在實際工業(yè)控制應(yīng)用過程中,即使執(zhí)行一些簡單的分布式網(wǎng)絡(luò),除了標(biāo)準(zhǔn)中的物理層和數(shù)據(jù)鏈接層外,客戶還要求有更多的功能,如發(fā)送長于8字節(jié)的數(shù)據(jù)塊,、響應(yīng)和確定數(shù)據(jù)傳送、標(biāo)識符分配,、網(wǎng)絡(luò)節(jié)點的狀態(tài)等,。如果這些功能正確執(zhí)行,通信和應(yīng)用過程的界線就十分清晰,將明顯提高各個廠商之間的設(shè)備互換性和兼容性。鑒于這些原因,產(chǎn)生了一些針對不同的目的和要求的基于CAN協(xié)議的較高層協(xié)議標(biāo)準(zhǔn),。下面就對CAN 協(xié)議及其較高層協(xié)議DeviceNet和CANopen進(jìn)行一些比較,。
2 三種協(xié)議的比較項目
CAN(Controller Area Network)1993年形成了CAN總線國際標(biāo)準(zhǔn),2003年又進(jìn)行了修訂,是BOSCH公司為改進(jìn)汽車內(nèi)部電器線路開發(fā)的一種總線。CAN協(xié)議的實現(xiàn)簡單,成本低,可靠性高,抗干擾能力強(qiáng),。
DeviceNet在美國市場占有率比較高,它是由美國Rockwell公司在CAN的基礎(chǔ)上推出的一種低成本的通信鏈接,它使用抽象的對象模型,其協(xié)議和規(guī)范都是開放的,用戶將設(shè)備連接到系統(tǒng)時無需購買硬件,、軟件和許可權(quán)。
CANopen 是由CiA(CAN in Aoutmation)成員編制,主要盛行于歐洲,它在通訊和系統(tǒng)服務(wù)以及網(wǎng)絡(luò)管理方面使用了CAL(CAN Application Layer)子集,設(shè)備建模是借助于對象目錄而基于設(shè)備功能性的描述,標(biāo)準(zhǔn)設(shè)備以設(shè)備子協(xié)議的形式規(guī)定。CANopen標(biāo)準(zhǔn)由CiA同行機(jī)構(gòu)集團(tuán)支持,設(shè)備子協(xié)議由CiA中專門的同行機(jī)構(gòu)制定,。
本文就以下項目對三種協(xié)議進(jìn)行比較,。
(1) 信息標(biāo)識符的分配;
(2) 數(shù)據(jù)交換的方法;
(3) 建立信息連接的方法;
(4) 網(wǎng)絡(luò)管理;
(5) 設(shè)備建模和子協(xié)議。
2.1 信息標(biāo)識符的分配
由于CAN采用非破壞性的仲裁方法,因此,標(biāo)識符決定了塊信息傳送的優(yōu)先權(quán)和信息等待時間,信息標(biāo)識符的分配的方法被認(rèn)為是 CAN系統(tǒng)的主要結(jié)構(gòu)元素,它同時也影響了信息濾波和標(biāo)識符的使用效率問題,。
由于標(biāo)識符分配的方法不同,不同的協(xié)議在解決方案已把不同的原則考慮進(jìn)去,。CAN基本協(xié)議和DeviceNet的標(biāo)識符采用預(yù)定義的方式,不同的是在 CAN 協(xié)議中節(jié)點標(biāo)識符在設(shè)計時被確定后就不能動態(tài)更改,而DeviceNet每個節(jié)點預(yù)定義多個標(biāo)識符,不同的功能標(biāo)識符優(yōu)先級不同。在CANopen協(xié)議中,除了預(yù)定義了一些用于管理的標(biāo)識符外,其它標(biāo)識符統(tǒng)一組成一個通用的標(biāo)識符庫,用戶可根據(jù)設(shè)備的需要進(jìn)行手動或者自動分配所有的設(shè)備標(biāo)識符,。這樣的分配方案用戶就可以完全自由決定標(biāo)識符的使用及系統(tǒng)實時通訊的過程,。
表1 DeviceNet關(guān)于CAN標(biāo)識符的使用分配
DeviceNet 的標(biāo)識符分配方案是面向節(jié)點的信息標(biāo)識符分配,對于DeviceNet系統(tǒng),最多數(shù)量為64個的節(jié)點,其每一個節(jié)點擁有一組出自于3個信息組的標(biāo)識符,如表1所示。信息組1為每個設(shè)備的16個信息提供一高優(yōu)先信息組,報文ID較小的總是優(yōu)先發(fā)送;信息組2的信息優(yōu)先權(quán)主要取決于節(jié)點的號碼,信息的MAC- ID可以是目標(biāo)或源地址該段共計分配512個標(biāo)識符,。信息組3與信息組1結(jié)構(gòu)相似,但提供給每個設(shè)備7個標(biāo)識符優(yōu)先級比較低,這組的標(biāo)識符優(yōu)先權(quán)被平均分配到網(wǎng)絡(luò)上的所有設(shè)備,。信息組4只有48個標(biāo)識符,不包含任何設(shè)備地址,該組信息主要用于網(wǎng)絡(luò)管理。由于采用了基本CAN類型的控制器,信息濾波的潛能受到限制,信息組2以這種受到限制的潛能去支持多個設(shè)備,因此選擇了根據(jù)節(jié)點號碼的濾波功能,。即DeviceNet規(guī)定了一個預(yù)定義主從連接組,以便于觀察主-從系統(tǒng)配置的通訊,。下面的信道功能是為了向基于預(yù)定義連接組的主從設(shè)備間的I/O與顯式信息的交換提供支持:
l 顯式信息信道。
l 主機(jī)查詢改變信道的狀態(tài)循環(huán),。
l 從機(jī)I/O改變信道的狀態(tài)循環(huán),。
顯式信息主要服務(wù)于設(shè)備的配置。主機(jī)查詢改變狀態(tài)信道使得主機(jī)可以向設(shè)備請求I/O數(shù)據(jù)并把輸出數(shù)據(jù)發(fā)送到從機(jī),。借助于改變狀態(tài)循環(huán)或從機(jī)I/O(通過改變狀態(tài)循環(huán)觸發(fā)或通過應(yīng)用觸發(fā)),從機(jī)將輸入數(shù)據(jù)發(fā)送到主機(jī),。通過位選通指令,主機(jī)可以從最多為64個的從機(jī)中請求接收一個輸入數(shù)據(jù)。由于所有的這些信息都是被響應(yīng)的,所以對這些不同的功能性分配了8個信息標(biāo)識符,。如果請求獲取數(shù)據(jù)的位選通沒有使用一高效的標(biāo)識符,則通過目的地址場在從機(jī)上對信息進(jìn)行濾波,。
CANopen 系統(tǒng)的標(biāo)識符分配使用在CAL子集,其中CMS(CAN-based Message Specification)將信息標(biāo)識符定義了8個優(yōu)先級,每個級別擁有220個ID,范圍從1~1760,剩余的標(biāo)志(0,1761~2031)保留給NMT(Network MessagemenT)。在CANopen的系統(tǒng)中,可能訪問的節(jié)點為128個,所以保留128個信息標(biāo)識符作為節(jié)點保護(hù),。
在最小系統(tǒng)配置中,CANopen規(guī)定了一個面向設(shè)備的標(biāo)識符分配方案,這種方法可以供127臺設(shè)備默認(rèn)連接到一臺主設(shè)備上(如圖1所示),。通過4位的功能代碼可以區(qū)分某些情況的16種基本功能,這些情況分別是:2個數(shù)據(jù)過程信道的接收和發(fā)送、一個點對點信道,、節(jié)點狀態(tài)控制,、節(jié)點保護(hù)、緊急情況通報以及接收同步信息和有時間標(biāo)記的信息,。由于信息的優(yōu)先級由它的功能決定,所以功能代碼位于信息標(biāo)識符的最高幾位,。
圖2 CANopen最小系統(tǒng)標(biāo)識符分配方案
2.2 交換過程數(shù)據(jù)
在一分布式自動化系統(tǒng)的設(shè)備之間發(fā)送過程數(shù)據(jù)是CAN 通訊系統(tǒng)的目的,它應(yīng)以最高效率的方式完成。因此,對于應(yīng)用規(guī)定的數(shù)據(jù)(過程數(shù)據(jù),、I/O數(shù)據(jù))其傳送應(yīng)該根據(jù)產(chǎn)生者使用者的模型來執(zhí)行,其意思就是說, 通過相關(guān)的信息ID推斷所發(fā)送的數(shù)據(jù),。信息的產(chǎn)生者和使用者在這種情況下被假設(shè)擁有使用數(shù)據(jù)的知識或明白發(fā)送數(shù)據(jù)的含義。
在CAN基本協(xié)議中,各個節(jié)點采用規(guī)定的模式交換數(shù)據(jù),。CAN的數(shù)據(jù)流由數(shù)據(jù)幀,、遠(yuǎn)程幀、錯誤幀和超載幀4種不同的幀類型所表示和控制。數(shù)據(jù)幀攜帶數(shù)據(jù)從發(fā)送器至接收器,。遠(yuǎn)程幀由總線單元發(fā)出,請求發(fā)送具有同一識別符的數(shù)據(jù)幀,。任何單元檢測到一總線錯誤就發(fā)出錯誤幀。超載幀用以在先行的和后續(xù)的數(shù)據(jù)幀(或遠(yuǎn)程幀)之間提供一附加的延時,。
但是,DeviceNet和CANopen在過程數(shù)據(jù)交換采用不同的解決方案,。DeviceNet過程數(shù)據(jù)通過“I/O信息”傳送,CANopen過程數(shù)據(jù)通過“過程數(shù)據(jù)對象”(PDOs Process Data Object)傳送。
DeviceNet 支持下列的觸發(fā)模式:循環(huán),、改變狀態(tài)和應(yīng)用對象觸發(fā),。通過循環(huán)觸發(fā)的模式當(dāng)指定信息的傳送觸發(fā)定時器終止時,信息的發(fā)送就會被啟動。通過狀態(tài)改變的模式當(dāng)檢測到應(yīng)用對象狀態(tài)改變時,信息發(fā)送就會開始,當(dāng)一特定間隔時間結(jié)束而沒有發(fā)送信息,信息也會被發(fā)送,。通過應(yīng)用對象觸發(fā)模式,應(yīng)用對象可以決定何時觸發(fā)信息的發(fā)送,當(dāng)一特定間隔時間結(jié)束而沒有發(fā)送信息時信息也會被發(fā)送,。
CANopen的觸發(fā)模式劃分為事件、應(yīng)用請求或預(yù)定義同步信息接收后的觸發(fā)模式,。事件觸發(fā)可以在子協(xié)議(Profile)或應(yīng)用指定的事件(異步 PDO)中產(chǎn)生。PDO的發(fā)送也可以通過接收一遠(yuǎn)程請求信息而被觸發(fā),。“同步PDO” 是通過接收同步信息的一指定號碼而被循環(huán)觸發(fā)的,。同步信息也可以被用作為整個網(wǎng)絡(luò)中數(shù)據(jù)獲得的同步以及輸出數(shù)據(jù)濾波的同步。傳輸實時數(shù)據(jù)時,數(shù)據(jù)從一個生產(chǎn)者傳到一個或多個消費(fèi)者,傳送限制在1到8個字節(jié),即一個PDO可以傳輸最多64個數(shù)字I/O值或者4個16位的AD值,。
數(shù)據(jù)交換過程中,網(wǎng)絡(luò)設(shè)備會產(chǎn)生或者消耗一個以上的映射應(yīng)用對象,。DeviceNet和CANopen為靈活地將應(yīng)用數(shù)據(jù)映射到通訊對象而提供了非常完善的方法。
DeviceNet 中,應(yīng)用數(shù)據(jù)的分組是由集合對象的實例(instance)規(guī)定的,。這個“集合”對象的實例定義了發(fā)送的應(yīng)用對象數(shù)據(jù)格式,。一個設(shè)備可能包含多于一個 I/O集合而且其相應(yīng)集合的選擇也是一個可配置的設(shè)備選項。
CANopen 規(guī)定了有關(guān)應(yīng)用對象映射,應(yīng)用對象通過一個叫“PDO映射記錄”的數(shù)據(jù)結(jié)構(gòu)映射到PDO中,。這個結(jié)構(gòu)以對象標(biāo)識符列表(對象目錄索引子索引)和數(shù)據(jù)長度的形式規(guī)定了映射的應(yīng)用對象數(shù)據(jù),。由于PDO映射可通過SDO(Service Data Object)訪問,所以PDO映射可通過配置工具配置。
2.3 建立過程數(shù)據(jù)信息連接
在CAN 網(wǎng)絡(luò)里,信息生產(chǎn)者發(fā)送信息以及信息消耗者接收信息,其各自標(biāo)識符的分配建立了通訊路徑,。通過已經(jīng)分配的信息標(biāo)識符的預(yù)定義信息可以建立信息的連接,或通過信息的各種標(biāo)識符分配來達(dá)到建立信息的連接目的,。非預(yù)定義標(biāo)識符分配的主要優(yōu)點是:建立任何類型的通訊結(jié)構(gòu)的可能性,根據(jù)應(yīng)用需求的最大數(shù)量信息標(biāo)示符的有效性以及面向控制而設(shè)計的信息標(biāo)示符分配有效性。
在一預(yù)定義信息的系統(tǒng)中,信息的功能和信息的標(biāo)示符已經(jīng)被定義DeviceNet和 CANopen使用1:n系統(tǒng)結(jié)構(gòu)的預(yù)定義連接組方法,。根據(jù)預(yù)定義組,一個已經(jīng)分配了從設(shè)備預(yù)定義查詢連接的DeviceNet主機(jī),已經(jīng)知道關(guān)于發(fā)送查詢請求以及期待查詢響應(yīng)信息的信息ID,因為它們來源于從機(jī)的MAC-ID,。同樣的,在CANopen中除了其他的預(yù)定義信息之外, 默認(rèn)的預(yù)定義連接組提供了2個預(yù)定義的接收和發(fā)送PDO, 默認(rèn)PDO的用法和含義是由設(shè)備的類型決定。
DeviceNet標(biāo)識符分配方法是通過設(shè)備擁有的信息標(biāo)示符庫決定的,這個標(biāo)示符出自于信息發(fā)送設(shè)備的標(biāo)示符庫,。DeviceNet最大為64個設(shè)備發(fā)布有效的標(biāo)識符,。在連接過程中,一個產(chǎn)生模塊的信息從它的信息ID庫中,分配一個空閑的信息ID,并將此空閑的信息ID與它的源MAC ID(Source MAC ID)結(jié)合在一起,產(chǎn)生一個所謂的“連接ID”。而CANopen的變量標(biāo)識符分配方案基于中央信息標(biāo)識符庫,系統(tǒng)管理員通過SDO(Service Data Object)信道設(shè)置設(shè)備對象目錄中相應(yīng)的PDO標(biāo)識符實現(xiàn)信息連接的建立,。
2.4 網(wǎng)絡(luò)管理
由于應(yīng)用是分布的,所以必須處理某些事件,如應(yīng)用部件的故障或節(jié)點的故障,如果同一應(yīng)用還沒有被分配,則這些事件就不會出現(xiàn),。因此,對于一個正確的網(wǎng)絡(luò)管理,其主要任務(wù)是檢測和顯示網(wǎng)絡(luò)中的錯誤,并通過服務(wù)以一協(xié)調(diào)的方式控制分布節(jié)點的通訊。狀態(tài)取決于系統(tǒng)的解決方案,網(wǎng)絡(luò)的功能性可以通過顯式網(wǎng)絡(luò)管理設(shè)施提供,或通過其他方法提供。
CAN網(wǎng)絡(luò)的錯誤檢測包括位錯誤,、填充錯誤,、CRC錯誤、格式錯誤和應(yīng)答錯誤,每當(dāng)檢測到一個錯誤該節(jié)點的錯誤計數(shù)器就加1,當(dāng)節(jié)點的錯誤計數(shù)器大于或等于256時,節(jié)點進(jìn)入總線關(guān)閉狀態(tài),。
CANopen 網(wǎng)絡(luò)管理基于CAL NMT(Network ManagemenT)服務(wù)元素,這些元素應(yīng)用了“節(jié)點保護(hù)”原則來檢測節(jié)點故障,。為了這個目的,一個NMT主機(jī)通過一個遠(yuǎn)程請求幀對網(wǎng)絡(luò)的每個節(jié)點 NMT從機(jī)循環(huán)發(fā)送一個保護(hù)請求。被訪問的從機(jī)用它的實際通訊狀態(tài)響應(yīng)每個請求,。如果NMT主機(jī)檢測到節(jié)點狀態(tài)改變或被訪問的節(jié)點沒有響應(yīng),就會有一個保護(hù)錯誤告示NMT主機(jī)應(yīng)用,。當(dāng)節(jié)點連接到網(wǎng)絡(luò)上后,節(jié)點保護(hù)就啟動。每一個節(jié)點也監(jiān)督到達(dá)節(jié)點的保護(hù)請求信息,。節(jié)點的“生存時間”過期后如果沒有進(jìn)一步的保護(hù)請求信息,則此節(jié)點的應(yīng)用被告之有網(wǎng)絡(luò)錯誤,。
根據(jù)面向連接的設(shè)計,DeviceNet中的每個連接都受到監(jiān)控。因此,根據(jù)配置的期望信息包速率(expected packet rate),每個接收的連接端點都有靜止看門狗定時器(Inactivity/Watchdog-Timer),用于監(jiān)控到達(dá)節(jié)點的信息,。如果定時器溢出,連接就會執(zhí)行專有的超時行動,。在接收到創(chuàng)建服務(wù)(Create Service)顯式信息后,可以通過使用專有的顯式信息服務(wù)的順序來配置連接,并且,要在整個連接完成了配置以后才允許連接。在訪問每個 DeviceNet節(jié)點之前,每個節(jié)點必須重復(fù)執(zhí)行MAC ID檢查,使用這個特殊的協(xié)議順序,可以確保設(shè)備MAC ID的唯一性,。所有的DeviceNet模塊都要求參與這個MAC ID的檢測算法,。
2.5 設(shè)備建模和設(shè)備子協(xié)議
除了標(biāo)準(zhǔn)的通訊外, 還要求相似設(shè)備在開放式自動化系統(tǒng)中應(yīng)具有額外的互用性和可交換性。CAN協(xié)議各個廠商間的設(shè)備功能可交換性較差DeviceNet和CANopen在這方面改進(jìn)了很多,。DeviceNet和CANopen以設(shè)備模型的形式描述網(wǎng)絡(luò)上所看見的設(shè)備的功能性,。為了提高相似設(shè)備的可交換性,DeviceNet 和CANopen規(guī)定了工業(yè)自動化中主要設(shè)備類型的設(shè)備子協(xié)議,以確保不同廠家器件的相同基本標(biāo)準(zhǔn)行為。除了設(shè)備的功能性描述外,設(shè)備模型還提供關(guān)于設(shè)備的身份特點,、版本號,、狀態(tài)診斷信息、通訊設(shè)施和配置參數(shù)的描述,。
DeviceNet的節(jié)點模型包括了幾個對象,其中一些是由DeviceNet要求的,其他則是由產(chǎn)品的應(yīng)用功能要求的,。對象提供有關(guān)于設(shè)備中特殊部件的描繪和相關(guān)的數(shù)據(jù)屬性以及數(shù)據(jù)的過程服務(wù)的描繪。DeviceNet中的對象訪問是基于一個具有等級劃分的訪問方案,對象訪問包括媒體訪問控制標(biāo)識符,、類型標(biāo)識符,、實例標(biāo)示符以及屬性標(biāo)識符。媒體訪問控制標(biāo)識符用以將一個節(jié)點從同一網(wǎng)絡(luò)中的所有其他節(jié)點中區(qū)分開來,類型標(biāo)識符用以識別對象類型,實例標(biāo)示符用以在相同類型的所有實例中識別一個實例,屬性標(biāo)示符用以識別一個類型或?qū)嵗锏膶傩浴?br />
DeviceNet的設(shè)備子協(xié)議(Device Profile) 包含三方面的信息:設(shè)備類型的對象模型,、設(shè)備類型的I/O數(shù)據(jù)格式以及配置數(shù)據(jù)和數(shù)據(jù)的公共接口,。一個設(shè)備可能包含高達(dá)32個嵌入對象,而且這些對象都是總線可尋址的實體。根據(jù)嵌入對象的級別可以確定屬性,、行為和事件,。
CANopen通過對象目錄描述對象設(shè)備的功能性。目錄項是由一個16位索引和一個8位子索引號碼識別,數(shù)據(jù)和參數(shù)的功能被規(guī)定其中,。除了用于定義數(shù)據(jù)類型的區(qū)段外,還有3個主要的區(qū)段,分別是:通訊子協(xié)議區(qū)段,、標(biāo)準(zhǔn)化的設(shè)備子協(xié)議區(qū)段和廠商細(xì)節(jié)區(qū)段,。通訊子協(xié)議區(qū)段信息對于任何CANopen設(shè)備類型都是一致的,并包含與信息、參數(shù)和功能相關(guān)的設(shè)備,。這些信息參數(shù)和功能又與設(shè)備的鑒別,、錯誤管理、包括將應(yīng)用對象映射到過程數(shù)據(jù)對象的設(shè)備通訊信道的定義有關(guān),。CANopen設(shè)備子協(xié)議區(qū)段為特殊類別的基本標(biāo)準(zhǔn)設(shè)備的功能性提供了一個接口,其中有些條目是強(qiáng)制的,有些是可選的,。強(qiáng)制的、共有的條目要確保設(shè)備在一個定義的基本方式中運(yùn)轉(zhuǎn),。主要工業(yè)設(shè)備不同的設(shè)備子協(xié)議用以提高設(shè)備的可交換性,。廠商特殊的或不標(biāo)準(zhǔn)的設(shè)備的功能性可以通過廠商特殊子協(xié)議區(qū)段進(jìn)行提供。
3 結(jié)束語
文章通過對CAN,、DeviceNet,、CANopen在五方面的比較,使CAN總線用戶更深入的了解這幾種總線。這幾種協(xié)議最明顯的不同是信息標(biāo)識符的使用,。DeviceNet基于面向連接的觀點,CANopen基于面向信息的觀點,。DeviceNet、CANopen協(xié)議和 CAN協(xié)議構(gòu)成了一個完整的協(xié)議體系CAN總線因其具備其獨(dú)特的設(shè)計思想,、優(yōu)良的性能和高可靠性在汽車,、醫(yī)學(xué)、機(jī)器人等領(lǐng)域有著很好的應(yīng)用,而CAN的高層協(xié)議DeviceNet,、CANopen滿足了不同產(chǎn)品的兼容和互操作性,使得CAN總線的功能更加的豐富和適應(yīng)更加復(fù)雜的應(yīng)用,進(jìn)一步推進(jìn)了CAN總線在工業(yè)領(lǐng)域的推廣和應(yīng)用。