新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > CAN和CANopen相關(guān)技術(shù)

CAN和CANopen相關(guān)技術(shù)

作者: 時間:2011-08-13 來源:網(wǎng)絡(luò) 收藏

  一、open簡介   

總線全稱為Controller Area 包裝機械、煙草等行業(yè)得到了廣泛的應(yīng)用。CAN總線是德國BOSCH公司從80年代初為解決現(xiàn)代汽車中眾多的控制與測試儀器之間的數(shù)據(jù)交換而開發(fā)的一種串行數(shù)據(jù)通信協(xié)議,它是一種多主總線,通信介質(zhì)可以是雙絞線、同軸電纜或光導(dǎo)纖維。通信速率可達1MBPS。CAN總線通信接口中集成了CAN協(xié)議的物理層和數(shù)據(jù)鏈路層功能,可完成對通信數(shù)據(jù)的成幀處理,包括位填充、數(shù)據(jù)塊編碼、循環(huán)冗余檢驗、優(yōu)先級判別等項工作。

CAN協(xié)議的一個最大特點是廢除了傳統(tǒng)的站地址編碼,而代之以對通信數(shù)據(jù)塊進行編碼。采用這種方法的優(yōu)點可使網(wǎng)絡(luò)內(nèi)的節(jié)點個數(shù)在理論上不受限制,數(shù)據(jù)塊的標識碼可由11位或29位二進制數(shù)組成,因此可以定義211或229個不同的數(shù)據(jù)塊,這種按數(shù)據(jù)塊編碼的方式,還可使不同的節(jié)點同時接收到相同的數(shù)據(jù),這一點在分布式控制系統(tǒng)中非常有用。數(shù)據(jù)段長度最多為8個字節(jié),可滿足通常工業(yè)領(lǐng)域中控制命令、工作狀態(tài)及測試數(shù)據(jù)的一般要求。同時,8個字節(jié)   不會占用總線時間過長,從而保證了通信的實時性。CAN協(xié)議采用CRC檢驗并可提供相應(yīng)的錯誤處理功能,保證了數(shù)據(jù)通信的可靠性。CAN卓越的特性、極高的可靠性和獨特的設(shè)計,特別適合工業(yè)過程監(jiān)控設(shè)備的互連,因此,越來越受到工業(yè)界的重視,并已公認為最有前途的現(xiàn)場總線之一。

另外,CAN總線采用了多主競爭式總線結(jié)構(gòu),具有多主站運行和分散仲裁的串行總線以及廣播通信的特點。CAN總線上任意節(jié)點可在任意時刻主動地向網(wǎng)絡(luò)上其它節(jié)點發(fā)送信息而不分主次,因此可在各節(jié)點之間實現(xiàn)自由通信。CAN總線協(xié)議已被國際標準化組織認證,技術(shù)比較成熟,控制的芯片已經(jīng)商品化,性價比高,特別適用于分布式測控系統(tǒng)之間的數(shù)通訊。CAN總線插卡可以任意插在PC、AT、XT兼容機上,方便地構(gòu)成分布式監(jiān)控系統(tǒng)。

是基于CAN總線的應(yīng)用層協(xié)議,在開放的現(xiàn)場總線標準中是最著名和成功的一種,已經(jīng)在歐洲和美國獲得廣泛的認可和大量應(yīng)用。1992年在德國成立了“自動化CAN用戶和制造商協(xié)會”(CiA,CANinAutomation),開始著手制定自動化CAN的應(yīng)用層協(xié)議。此后,協(xié)會成員開發(fā)出一系列CANopen產(chǎn)品,在機械制造、鐵路、車輛、船舶、制藥、食品加工等領(lǐng)域獲得大量應(yīng)用。目前CANopen協(xié)議已經(jīng)成為了一種新的工業(yè)現(xiàn)場總線標準EN-50325-4。CANopen協(xié)議是CAN-in-Automation(CiA)定義的標準之一,在歐洲,CANopen協(xié)議被認為是在基于CAN的工業(yè)系統(tǒng)中占領(lǐng)導(dǎo)地位的標準。大多數(shù)重要的設(shè)備類型,例如數(shù)字和模擬的輸入輸出模塊、驅(qū)動設(shè)備、操作設(shè)備、控制器、可編程控制器或編碼器,都在稱為“設(shè)備描述”的協(xié)議中進行描述;“設(shè)備描述”定義了不同類型的標準設(shè)備及其相應(yīng)的功能。依靠CANopen協(xié)議的支持,可以對不同廠商的設(shè)備通過總線進行配置。

二、CANopen的基本知識   

EDS文件   

EDS (Electronic Data Sheet)   EDS文件描述了CAN網(wǎng)絡(luò)上設(shè)備通信屬性(波特率、輸出類型、I/O提供…)。它由設(shè)備制造商提供,用于在配置工具中配置節(jié)點(就像Windows里的設(shè)備驅(qū)動程序)。

PDO   PDO (過程數(shù)據(jù)對象)   

CANopen幀包含I/O數(shù)據(jù)   區(qū)分在:   

1、傳送PDO:TXPDO 帶有節(jié)點提供給其他節(jié)點的數(shù)據(jù)   

2、接收PDO:RXPDO 節(jié)點消耗的數(shù)據(jù)   傳送的方向從節(jié)點的觀點看總是可見的。PDO沒有必要包含所有節(jié)點映象。通常模擬量和數(shù)字量被分成不同的PDO進行傳送。對輸出也是同樣如此!   SDO   SDO (服務(wù)數(shù)據(jù)對象)   CANopen幀包含參數(shù)   SDO主要用于在程序運行時,從設(shè)備讀參數(shù)或者向設(shè)備寫參數(shù)   COB-ID   COB-ID(通訊對象標識符)   每個CAN幀以一個COB-ID開頭,COB-ID作為CAN幀的標識符。

在配置階段,每個節(jié)點在接收COB-ID時,對幀來說,他是提供者或者消費者。

三、關(guān)于CANopen   

介紹   

CANopen是一個標準的工業(yè)控制系統(tǒng)現(xiàn)場總線協(xié)議。它特別適合實時控制的PLC ,因為它為集成的和可傳輸?shù)墓I(yè)應(yīng)用提供了一個高效、低成本的解決方案。

CANopen協(xié)議   

CANopen協(xié)議是建立在CAL協(xié)議基礎(chǔ)上的一個子協(xié)議。通過定義設(shè)備規(guī)范,它甚至更加適合于標準工業(yè)組件。C   ANopen是一個CIA(CAN in Automation)標準,投入市場之初,它就迅速被推廣。在歐洲,CANopen現(xiàn)在已經(jīng)被公認為基于CAN設(shè)計的工業(yè)系統(tǒng)的工業(yè)標準。

物理層   

CAN使用差分驅(qū)動兩總線(公共回路)。CAN信號是CAN-high和CAN-low線之間的電壓差值。

CANopen協(xié)議   

1:CAN-high線   

2:CAN-low線   

3:終端電阻:120Ω   

4:節(jié)點   

根據(jù)電磁兼容要求,總線可以使用平行、雙絞或者屏蔽走線方式。單線結(jié)構(gòu)使反射最小化。

CANopen規(guī)范文件   

通訊規(guī)范文件   

CANopen規(guī)范文件時基于“通信規(guī)范文件”的,用來規(guī)定主要通訊機制和它們的描述(DS301)。

設(shè)備規(guī)范文件   

在設(shè)備規(guī)范文件中描述了工業(yè)自動化領(lǐng)域最重要的設(shè)備類型,同時也定義了設(shè)備功能類型。

標準設(shè)備描述例子為:   ◆數(shù)字量和模擬量輸入/輸出模塊(DS401)   ◆電機(DS402)   ◆控制設(shè)備(DS4P403)   ◆閉環(huán)控制器(DSP404)   ◆PLC   (DS405)   ◆編碼器(DS406)   通過CAN總線配置設(shè)備   通過CAN總線配置設(shè)備的可能性是制造商要求自治的基本原則之一。

CANopen規(guī)范文件的通用規(guī)格   CANopen是符合以下規(guī)定文件的,用于CAN系統(tǒng)的一套規(guī)范:   ◆開發(fā)的總線系統(tǒng)   ◆無協(xié)議超負荷的實時數(shù)據(jù)交換   ◆可重新定義尺寸的模塊化設(shè)計   ◆設(shè)備互用性和交換性   ◆被大量國際制造商支持   ◆標準的網(wǎng)絡(luò)配置   ◆訪問所有的參數(shù)設(shè)備   ◆同步和循環(huán)過程數(shù)據(jù)/事件驅(qū)動數(shù)據(jù)   CANopen產(chǎn)品認證   在市場上提供CANopen認證產(chǎn)品的制造商都是CiA組織成員。

CAN標準   CANopen協(xié)議被CIA組織定義并且可訪問該組織(須遵守某些限制)站點:http://www.can-cia.com.對主從設(shè)備的源代碼可以從不同的供應(yīng)商得到。

與CANopen網(wǎng)絡(luò)通訊   通訊協(xié)議文件基于CAL服務(wù)和協(xié)議。

它提供用戶對兩種交換類型的訪問:SDO、PDO。

在上電時,設(shè)備進入一個初始化階段,接著進入預(yù)處理階段。在這個階段,只有SDO可以通訊。在接到一個啟動命令后,設(shè)備進入工作狀態(tài),在這個階段PDO可以進行通訊,SDO通訊仍然有效。

CANopen啟動Boot-up   啟動過程 最小設(shè)備配置指定了簡化的啟動程序。這個過程描述如下:   CANopen啟動Boot-up   詳細步驟介紹:   1、模塊上電   2、模塊初始化,進入預(yù)處理狀態(tài)   3、NMT服務(wù):啟動遠程節(jié)點   4、NMT服務(wù):預(yù)處理   5、NMT服務(wù):停止遠程節(jié)點   6、NMT服務(wù):重啟節(jié)點   7、NMT服務(wù):重啟節(jié)點通訊   初始   進入“重新啟動通訊”后,設(shè)備進入初始模式。

該狀態(tài)允許的操作有:   ◆定義要求的通訊對象(SDO、PDO、緊急事件處理)   ◆安裝相關(guān)的CAL服務(wù)   ◆配置CAN控制器   初始化完成后設(shè)備自動進入預(yù)處理模式。

預(yù)處理   進入預(yù)處理的條件:   ◆在初始化完成后   ◆在正常工作模式下,接收到“進入預(yù)處理”NMT命令   在這種情況下,設(shè)備的配置可以被修改。然而只有SDO可以用來讀或?qū)懺O(shè)備的參數(shù)。

當配置完成后,通過接收相關(guān)的命令,設(shè)備進入以下的工作狀態(tài):   ◆停止 ,當接收到“停止遠程節(jié)點”NMT命令   ◆運行 ,當接收到“啟動遠程節(jié)點”NMT命令   停止   如果設(shè)備處于“預(yù)處理”或者“正常工作”狀態(tài),接收到“節(jié)點停止”命令(NMT服務(wù)),設(shè)備進入“停止狀態(tài)”。

在這種情況下,設(shè)備不能被配置。不能讀寫設(shè)備相關(guān)參數(shù)(SDO),只有從設(shè)備的監(jiān)視功能(即節(jié)點保護)有效。

操作   當設(shè)備處于“預(yù)處理”狀態(tài),接收到“啟動遠程節(jié)點”,設(shè)備進入操作狀態(tài)。在“運行”狀態(tài),當使用“節(jié)點啟動”NMT服務(wù)啟動CANopen網(wǎng)絡(luò),所有的設(shè)備功能性被使用,PDO、SDO均可進行通訊。

過程數(shù)據(jù)對象(PDO)   PDO定義   PDO是過程數(shù)據(jù)通信相關(guān)的通信對象,它能保證過程數(shù)據(jù)的實時交換。

一個CANopen設(shè)備的PDO對象定   義了它與網(wǎng)絡(luò)上其他CANopen設(shè)備之間的隱式數(shù)據(jù)交換。

當設(shè)備運行時,PDO交換被激活。

PDO類型   有兩種PDO類型:   ◆ TXPDO/TPDO:PDO被設(shè)備傳送   ◆ RXPDO/RPDO:PDO被設(shè)備接收   PDO的供給者與消費者   PDO基于“供給者/消費者”模型。傳送的叫“供給者”,接收的叫“消費者”。

PDO的傳送模式   ◆同步(通過接收SYNC對象實現(xiàn)同步)   非周期:由遠程幀預(yù)觸發(fā)傳送,或者由設(shè)備子協(xié)議中規(guī)定的對象特定事件預(yù)觸發(fā)傳送。 周期:傳送在每1到240個SYNC消息后觸發(fā)。

◆ 異步   由遠程幀觸發(fā)傳送。

由設(shè)備子協(xié)議中規(guī)定的對象特定事件觸發(fā)傳送。

服務(wù)數(shù)據(jù)對象(SDO)   SDO定義   服務(wù)數(shù)據(jù)對象SDO允許使用顯示請求交換數(shù)據(jù)。

當設(shè)備處于預(yù)處理、工作狀態(tài),SDO服務(wù)是有效的 。

SDO的類型   有兩種SDO類型:   ◆讀SDO(上傳)   ◆寫SDO(下載)   客戶端/服務(wù)器模型   SDO協(xié)   議是基于“客戶端/服務(wù)器”模型。

對于下載SDO   客戶端發(fā)送一個標示被寫對象的請求,服務(wù)器返回一個確認信息。

對于上傳SDO   客戶端發(fā)送一個標示被讀對象的請求,服務(wù)器返回被讀對象的數(shù)據(jù)。

對于一個未處理的SDO   對于以上的兩種情況,如果一個SDO不能被處理,服務(wù)器返回一個錯誤代碼。

“節(jié)點保護”和“壽命保護”   使用期限的定義   “使用期限”參數(shù)是按以下來計算的:   使用期限=保護時間(看門狗時間)使用期限系數(shù);保護時間的典型值在250ms到2S之間。對象0X100CH含有以毫秒時間定義的保護時間,對象0X100DH含有“使用期限系數(shù)”。

監(jiān)控機制:   1、節(jié)點保護   2、心跳報文   監(jiān)控激活   如果兩個參數(shù)中有一個為零,那么模塊不執(zhí)行監(jiān)控,即無壽命保護。為了激活監(jiān)控,必須在兩個對象中輸入非零的數(shù)值。

保證可靠工作   為了保證可靠工作,建議設(shè)置“使用期限系數(shù)”為2。如果不是只樣,主模塊會產(chǎn)生延時(例如,在“節(jié)點保護”時高優(yōu)先級信息的處理或者內(nèi)部處理時),模塊會轉(zhuǎn)入預(yù)處理模式而不產(chǎn)生錯誤。

監(jiān)控的重要性   這兩種保護機制對CANopen系統(tǒng)的安全運行特別重要,特別是對不工作于事件-被控模式的設(shè)備。

從設(shè)備的監(jiān)控   監(jiān)控按以下的方法執(zhí)行:   ◆ 主設(shè)備發(fā)送遠程幀,來讀取從設(shè)備的狀態(tài);   COB-ID   0x700+Node_ID   從設(shè)備答復(fù):   COB-ID Byte0   0x700+Node_ID Bit 7 : toggle Bit6-0 : 狀態(tài)   ◆從設(shè)備可以被配置為產(chǎn)生周期性的被稱著“心跳報文”的報文,周期性的發(fā)送從設(shè)備的狀態(tài)。

COB-ID Byte0   0x700+Node_ID狀態(tài)   主設(shè)備的監(jiān)控   如果主設(shè)備基于嚴格循環(huán)請求“保護”信息,從設(shè)備可以檢測主設(shè)備的狀態(tài)。如果從設(shè)備在也定義的使用期限內(nèi)沒有收到主設(shè)備的請求(保護錯誤),它會認為主設(shè)備故障。這種情況下相應(yīng)輸出進入出錯狀態(tài)并且從設(shè)備進入預(yù)處理狀態(tài)。

“保護”協(xié)議   在第一個“保護”信息里,“鎖住位”(t)的值是0,然后在每個后來的保護信息里,該位都會改變,只有可以顯示信息是否丟失??偩€頭部用7個剩余的位來指示網(wǎng)絡(luò)狀態(tài):   網(wǎng)絡(luò)狀態(tài) 響應(yīng)   被停止 0x04或0x84   預(yù)處理 0x7f或0xff   操作 0x05或0x85   四、CANopen設(shè)備   CAN總線網(wǎng)絡(luò)中有如下幾類設(shè)備:   (1) PLC:PLC做CAN上的一個主站,起到中央控制器的作用,對整個系統(tǒng)的工作起安排、調(diào)度、執(zhí)行各個操作等作用。作為CAN網(wǎng)絡(luò)中的主站,PLC可以訪問網(wǎng)絡(luò)中任何節(jié)點的任何可以訪問的數(shù)據(jù),并起總線監(jiān)控作用,實時監(jiān)控總線上各個節(jié)點的工作狀態(tài),如果出現(xiàn)錯誤并執(zhí)行相應(yīng)的處理程序;   (2) 分散式I/O:通常由電源部分、通信適配器部分、接線端子部分組成。 分散式I/O不具有程序存儲和程序執(zhí)行,通信適配器部分接收主站指令,按主站指令驅(qū)動I/O,并將I/O輸入及故障診斷等信息返回給主站。

(3) 驅(qū)動器、傳感器、執(zhí)行機構(gòu)等現(xiàn)場設(shè)備:即帶CAN接口的現(xiàn)場設(shè)備,可由主站在線完成系統(tǒng)配置、參數(shù)修改、數(shù)據(jù)交換等功能。至于哪些參數(shù)可進行通信及參數(shù)格式由CANopen行規(guī)決定。



關(guān)鍵詞: CAN CANopen

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉