CANopen協(xié)議介紹_第1頁
CANopen協(xié)議介紹_第2頁
CANopen協(xié)議介紹_第3頁
CANopen協(xié)議介紹_第4頁
CANopen協(xié)議介紹_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、CANopen協(xié)議介紹(講義)2010-10-12 15:58:28| 分類: 技術(shù)文檔 | 標(biāo)簽:|舉報|字號大中小 訂閱很長一段時間以來,很多人問我CANopen總線優(yōu)勢到底在什么地方,我也大體的給了 口頭的講述,但是比較籠統(tǒng),沒辦法做到詳 細(xì)解釋,加上純技術(shù)的話語比較晦澀,遇上 內(nèi)行還能多聊幾句,如果是剛接觸的,那就 是云里霧里了。這次正好要進行公司業(yè)務(wù)員 培訓(xùn),要講講 CANopen ,在整理過程中把 我的講義貼出來,希望能幫到大家,以下內(nèi) 容是我講課的口述內(nèi)容,比較白話,不能作 為資料,大家見諒,鑒于我整理也比較辛苦, 也算個小小的知識產(chǎn)權(quán),所以PPT我就不貼出來了。'A講義

2、內(nèi)容:通常CANopen協(xié)議相關(guān)的一些資料相對 來說比較晦澀,非專業(yè)人士看起來比較困 難。我盡量以淺顯易懂的方式將CANopen協(xié)議的框架和它在實際應(yīng)用中存在的優(yōu)缺點展示給大家。我按照最先接觸的內(nèi)容由淺入深的講解,直接講 CANopen 協(xié)議會有點跳躍的感覺,所以,我以產(chǎn)品作為切入點,分析一下如何使用,在這個過程中,讓大家理解什么是CANopen 協(xié)議。首先,我們拿到一個產(chǎn)品,比方說是編碼器, 它的用途是作為位置傳感器, 那我們就需要將編碼器送出的數(shù)據(jù)進行采集。一般自然界中存在的信號有多種形式,大多以模擬量形式存在,類似于人感覺到溫度的高低、水流的快慢、風(fēng)力的大小等等。但這是很模糊的概念,今天

3、熱了還是冷了,風(fēng)大風(fēng)小,沒有比較是很難界定的,為了規(guī)范這些量,方便描述時的統(tǒng)一性,溫度計量標(biāo)準(zhǔn)有華氏和攝氏、 水流有每秒多少立方、風(fēng)力有級數(shù)。這些,就是數(shù)字量。數(shù)字量在人與人之間傳遞時,可以通過嘴和耳,語言和聽力, 在設(shè)備之間如何來傳遞呢?學(xué)過數(shù)電的人知道, 燈泡有兩種狀態(tài), 亮和暗,在最基礎(chǔ)的電路回路里, “通 ”和 “斷”是兩個最基本的狀態(tài),我們可以把他理解為“ 1和”“ 0,”這樣,就有了表述的方法。但是單獨使用這兩種狀態(tài)是無法傳遞信息的, 如何把編碼器的數(shù)據(jù)傳遞出去,就需要使用到協(xié)議,下面我就講講協(xié)議。我們知道,人與人交流需要用到語言,我們要表達出一個完整的意思就要使用一句話,一句話內(nèi)

4、會包含很多的字,每個字又由筆畫構(gòu)成。這樣,我們協(xié)議的基本框架就出來了,在整個CANopen 協(xié)議傳遞過程中,最大的單位稱為 “幀”,類似于一句話, “幀” 由 “字節(jié) ”組成,就代表了字,每個 “字節(jié) ”由 “位 ”組成,我們稱為筆畫。那地球上還有英語、法語、德語、還有聽不懂的鳥語呢!那就是各個通訊協(xié)議,比如 Profibus-DP 、DeviceNet 、 CC-Link 、 Hart 、 Modbus 等。讓 DP 和 CANopen 通訊,那就是相當(dāng)于一個講德語的與講中文的對話,雞同鴨講,能溝通嗎?需要翻譯,對吧。回過頭來我們講講 CANopen 的幀格式, CANopen 一幀數(shù)據(jù)由一

5、個 COB-ID (報文頭)和最大8 字節(jié)數(shù)據(jù)組成,其中 COB-ID 可以是 11 位( CAN2.0 ) , 也可以是 29 位( CAN2.0B ) ,當(dāng)然, CAN2.0B 需要向下兼容11 位 CAN報文。對于每字節(jié)數(shù)據(jù)由哪些位組成,這里就不再贅述,因為這部分內(nèi)容不在 OSI模型 的第七層應(yīng)用層內(nèi)描述,開發(fā)人員也不必過 多考慮這塊內(nèi)容。由于 CANopen協(xié)議內(nèi)對 COB-ID的各個地址段報文有詳細(xì)規(guī)范,這 里就花點時間講一下,當(dāng)然也沒時間全部討論,只選一些重要內(nèi)容來說。以前我們培訓(xùn)一直在說 CANopen協(xié)議 好,速度快,廣播報文,這些關(guān)鍵字聽的多 了,但是大家可能不是很理解這些內(nèi)

6、容?,F(xiàn) 在就來解釋一下。在編碼器應(yīng)用中,CAN報 文我們常用的有 SDO (Service Data Object服務(wù)數(shù)據(jù)對象)和 PDO (Process Data Object過程數(shù)據(jù)對象),從字面描述意義看, 通常數(shù)據(jù)的發(fā)送讀取是采用 PDO來實現(xiàn) 的,CAN參數(shù)的修改是通過 SDO來實現(xiàn)的 (當(dāng)然這不是絕對的, 具體的如果有興趣可 以會后詢問)。先來說說 PDO ,我們在很多資料上會看到這樣一張表COB-ID通訊參數(shù)在081-0PDO1(發(fā)181HH1201FHH2OD1024H 索弓 1805HPDO128FH-2PDO2(彩PDO2(接PDO3n304HH3381HH3FFH140

7、0H1801H4404H1802HPDO3PDO4(鼠PDO4(接SDO叫孕SDO401H-4 481HH4501HH5581HH51402H1803H403H 200H101600017注燃MPDOOSDO"愛送/接收則由(slave)CAN節(jié)點方觀察的表一:CANopen主/從連接集對象假設(shè)我們讀取到一組編碼器數(shù)據(jù)是這樣的0x181 0x30 0x1F 0x00 0x00,我們應(yīng)該如何理解呢?首先,“0雙是一個符號, 它代表了緊跟著的數(shù)據(jù)是十六進制的(等同于在數(shù)據(jù)后面直接標(biāo) “ H'上述表達式也可 以表述為 « 181H 30H 1FH 00H 00H 

8、7; ),“ 18俄們查看上表后發(fā)現(xiàn),它包含在PDO1 (發(fā)送)里面,它代表了是由編碼器發(fā)出的過程數(shù)據(jù)對象,表上顯示是“181H1FFH,這是因為COB-ID包含了節(jié)點號信息,地址 1對應(yīng)著181H ,地址2對應(yīng)了 182H ,以此 類推,最大127個節(jié)點?!?x30 0x1F 0x00 0x00”就代表了數(shù)據(jù)內(nèi)容,在 CAN協(xié)議內(nèi), 幀數(shù)據(jù)是低位在前,高位在后的。所以上述 數(shù)據(jù)直接讀取后得出編碼器送出1F30H ,這就代表了編碼器的當(dāng)前位置值。 那在總線上面,多個節(jié)點同時發(fā)送數(shù)據(jù)不會產(chǎn)生沖突么?以前我們說過, CAN 協(xié)議具有仲裁, 這里簡單介紹一下仲裁是如何實現(xiàn)的。 上面說了, COB-I

9、D 包含了節(jié)點號信息, 也就是說,只要總線上的設(shè)備節(jié)點號不同, 所送出的廣播報文的 COB-ID 肯定是不同的,如果一個是 182H , 一個是 183H , 仲裁時怎么做?本文最開始的時候介紹了每個字由筆畫組成,現(xiàn)在就要用到位(bit)的概念了, 182H換算成二進制是0001 1000 0010( B ),“ B”代表了二進制, 183H 換算成二進制是00011000 0011( B ),關(guān)于顯性位、隱形位這里不再贅述,這個有興趣可以找我要資料看,這里我就簡單描述為“ 0比” “ 1的優(yōu)先級”高,可以理解為拖后腿,“0為低電平,”“1”為高電平,在線上低電平會把高電平拉低,一旦 183H

10、 發(fā)現(xiàn)數(shù)據(jù)傳輸過程中與自身數(shù)據(jù)不符合,就終止上傳,保證了 182H 的數(shù)據(jù)先上總線。我們在實踐中會發(fā)現(xiàn), 編碼器的數(shù)據(jù)在不斷的更新輸出,那輸出周期如何定義呢?這個我們就來討論一下引申的 PDO 傳送方式。我們以前在培訓(xùn)時一直介紹CANopen協(xié)議與 DP 協(xié)議相比的好處在于 DP 是輪詢的,問答方式浪費了大量的時間,而 CAN協(xié)議是廣播的, 可以將 1MHz 的速率發(fā)揮至極致。這種說法形象,一般可以解釋給初步接觸 CANopen 的人聽。其實 CANopen 的報文形式很多樣化,在不同的應(yīng)用場合可以采取不同的方式,上面說的稱為異步方式,異步方式也分兩種,一種是上面的內(nèi)部時鐘觸發(fā),也就是按照固定

11、時間間隔發(fā)送,另一種是事件觸發(fā),假設(shè)編碼器發(fā)生轉(zhuǎn)動,數(shù)據(jù)相應(yīng)送出。還有一種同步方式,我們也可以口述為踏拍方式,當(dāng)主站要求報數(shù)是,所有從節(jié)點按照仲裁的優(yōu)先順序進行數(shù)據(jù)發(fā)送。這三種報文方式分別在哪些場合適用呢?我們以車輛來舉例。車輛開在路上,在整個車輛控制內(nèi),最重要的,具有高優(yōu)先級的,應(yīng)該是牽涉到安全的制動(剎車),安全氣囊等等。其次是轉(zhuǎn)向、車燈。再次是音響、影視系統(tǒng)(當(dāng)然,我對車不是很熟悉,這是我的主觀認(rèn)識,作為一個例程)。我們可以把小的節(jié)點號分配給制動系統(tǒng), 以保證數(shù)據(jù)能及時送達控制器,并采用定時報數(shù),實時監(jiān)測車輛制動系統(tǒng)的情況。對于音箱什么的,我們可以采用事件觸發(fā)方式,在有輸入控制時(比方說

12、打開收音機)進行響應(yīng)。同步數(shù)據(jù)一般用在實時數(shù)據(jù)監(jiān)測方面, 比方是在同一時間點查閱角度、 位置、 重量、 壓力、流量等等信息,保證所監(jiān)測的各個數(shù)據(jù)在很小的時間變化范圍內(nèi)。當(dāng)然CANopen 不可能摒棄問答方式的數(shù)據(jù)采集,這可以通過SDO 訪問 OD 來實現(xiàn)。講到 SDO 服務(wù)數(shù)據(jù)對象,我們可以這么理解, PDO 報文在發(fā)送出去后不需要反饋信號, 總線上能消化這個數(shù)據(jù)的都可以消化,所以白話叫廣播報文。而 SDO 報文是需要響應(yīng)的,每一幀SDO 發(fā)出后需要等待反饋。 那這會不會引起無反饋時總線死機呢?不會, CAN 數(shù)據(jù)鏈路內(nèi)規(guī)定了超時, 在一定時間內(nèi)得不到回答, 總線將進行后面的作業(yè),多次詢問無果

13、,總線會對錯誤節(jié)點進行屏蔽處理。 SDO 的幀格式和 PDO 的幀格式是一致的,但對有些字節(jié)的定義不同,下面就簡單介紹一些編碼器修改參數(shù)時用到 的幀格式。SDO中實現(xiàn)了 5個請求/應(yīng)答協(xié)議,這里我只講講啟動域下載與上傳,其他的有興趣可以問我要資料看。COB-ID命令 字對象 字典OD子索 引數(shù)據(jù)主從 連接 集1 byte2 bytes1 byte4 bytes我來解釋一下上表,COB-ID引用第一張表的SDO地址段。假設(shè)主站需要讀取1號編碼器對象字典(OD) 6200H內(nèi)的參數(shù), 我們應(yīng)該如何做呢?我們需要發(fā)送0x601 0x40 0x00 0x62 0x00 0x00 0x000x00 0x

14、00我們得到編碼器的反饋數(shù)據(jù)是0x581 0x4B 0x00 0x62 0x00 0x0A 0x000x00 0x00上述命令的解釋是,控制器通過SDO 指令讀取 1 號編碼器 OD 為 6200H 的編碼器發(fā)送數(shù)據(jù)周期的參數(shù), 得到編碼器的回答是每隔 10ms 發(fā)送一次。 40H 和 4BH 是啟動 域上傳的命令字。如果需要將6200H 的參數(shù)修改為 20ms一次數(shù)據(jù),我們應(yīng)該怎么做?發(fā)送: 0x601 0x22 0x00 0x62 0x00 0x140x00 0x00 0x00反饋: 0x581 0x60 0x00 0x62 0x00 0x000x00 0x00 0x00未完待續(xù)。作為十大

15、總線來說, CANOpen 的開放性等等就不贅述了。該協(xié)議最早在汽車總線中得到了大量的推廣。目前很多廠家都支持CANOpen 總線。比如施耐德、菲尼克斯等。尤其是施耐德, 目前在所有的傳動產(chǎn)品、 中高端的 PLC 上都支持 CANOpen 總線??赡苁怯捎谒挟a(chǎn)品在總線支持上不然Rockwell 和西門子的緣故吧。目前 CANOpen 在連接現(xiàn)場從站設(shè)備時,很多廠家的 PLC已經(jīng)可以像step7 軟件組態(tài) profibus DP 從站設(shè)備一樣,只需導(dǎo)入 eds 文件后,在軟件中直接選擇或拖拉即可。相關(guān)參數(shù)的地址定義等等都自動完成。相對來說比較簡單。當(dāng)然如果軟件即便不支持上述方式,有個公司專門開

16、發(fā)了一個 sycon 的軟件, 利用 sycon 軟件也可以直接定義CANOpen從站設(shè)備。相對來說也比較簡單。只不過需要做sycon 到PLC 軟件的地址的映射的操作。CANOpen 總線與 Profibus DP 總線相比:1. CANOpen 的通訊速率較低, 最高 1Mbps 。 而 Profibus DP最高支持 12Mbps ;2. 兩種總線隨著距離的增加都會衰減, 但是 CANOpen 衰減 的更快一些;3. 理論上 CANOpen 支持 127 個子站(當(dāng)然和 CANOpen 主站設(shè)備有關(guān),在實際 PLC 產(chǎn)品中一般最大只能支持64 ,有的只能支持32 或 16 個) ,而 P

17、rofibus DP 在子站支持能力上較強;4. CANOPen 的中繼器支持樹形結(jié)構(gòu)連接,這一點與Profibus 的總線型連接方式有區(qū)別;5. 從組態(tài)來說,集成 CANOpen 總線的設(shè)備組態(tài)方式與Profibus DP 的組態(tài)方式類似。只需導(dǎo)入 eds 文件即可;6. 抗干擾能力經(jīng)過我使用了,感覺和 Profibus DP 差不多。當(dāng)然 CANOpen 電纜有 4 種, DP 應(yīng)該分普通和復(fù)雜環(huán)境兩種。從電纜來說, CANOpen 電纜的適用性更強一些。以上內(nèi)容,只是一己之見,不含任何廣告內(nèi)容,也請各位批評指正于 CANopen 協(xié)議的分布式控制系統(tǒng)設(shè)計孫樹文楊建武(北京工業(yè)大學(xué)機械工程

18、與應(yīng)用電子學(xué)院,北京 100022 )摘要:針對印刷機外圍設(shè)備多分散、數(shù)據(jù)傳輸信息量大、實時性和可靠性要求高等問題,設(shè)計了一種基于 CAN 現(xiàn)場總線的分布式控制系統(tǒng)。監(jiān)控主機運行軟PLC 程序,通過PC-CAN 卡與現(xiàn)場 I/O 從站進行通信,形成分布式網(wǎng)絡(luò),簡化了系統(tǒng)結(jié)構(gòu),提高了可靠性。 本文介紹了分布式監(jiān)控系統(tǒng)的整體結(jié)構(gòu)、 工作原理及特點;分析了 CANopen 協(xié)議、詳細(xì)說明了采用 P87C591單片機開發(fā) I/O 從站的硬件電路、 軟件設(shè)計流程以及從站節(jié)點的調(diào)試方法。經(jīng)系統(tǒng)測試和模擬運行表明, I/O 從站與監(jiān)控主機通訊可靠、準(zhǔn)確,實時性滿足了印刷機控制系統(tǒng)的要求,具有一定的參考價值和

19、廣闊的應(yīng)用前景。關(guān)鍵詞: CANopen ; CAN 總線; 軟 PLC ; 分布式控制系統(tǒng);P87C591中國分類號: TP247 文獻標(biāo)識碼: ATheDesignofDistributedControlSystemI/OSlaveBasedonCANopenProtocolSunShuwen,YangJianwu,ZhangHuihui,ZhaoJianguang(CollegeofMechanicalEngineering&AppliedElectronicsTechnol ogy,BeijingUniversityofTechnology,Beijing100022,Chin

20、a)Abstract:Counteringtheproblemsexistingintheprintingmachine, suchastheexcessiveanddistributedperipheralequipment,manyi nformationexchange,thereliability,veracityandrealtimefeatureof datacommunication,adistributedcontrolsystembasedonCAN(C ontrolAreaNetworks)Busisdesigned.TheSo sbrilliantandvalidity

21、beyondtraditionalcontrolmethodsandissuitableforsimilarpractic alengineering.Keywords:CANopen,CANbus,So0 引言印刷機有大量的外圍設(shè)備,存在大量的I/O 信號,如何保證外圍設(shè)備與控制主機之間的實時通訊, 使得印刷機可靠運行, 目 前采用的方式主要有2種:1)采用傳統(tǒng)的PLC構(gòu)成集散型控制系統(tǒng)(DCS); 2)采用基于現(xiàn)場總線的分布式 I/O系統(tǒng)。采 用前一種方式存在系統(tǒng)不開放、硬件投資大、布線復(fù)雜、維修不 便的缺點, 具有明顯的局限性1 。 而采用第二種方式基本局限于國外產(chǎn)品, 如西門子公司的基

22、于 Profibus 分布式 I/O 系統(tǒng), WAGO公司基于 CANbus 、 DeviceNET 、 Profibus 分布式 I/O 系統(tǒng),但價格較高。 因此我們設(shè)計了基于 CAN 現(xiàn)場總線技術(shù)與軟PLC 的印刷機分布式控制系統(tǒng)。CAN ( ControllerAreaNetwork )總線,又稱控制器局域網(wǎng),是由德國 Bosch 公司在 80 年代初為分布式系統(tǒng)在強電磁干擾環(huán)境下可靠工作而開發(fā)的一種串行數(shù)據(jù)通信網(wǎng)絡(luò), 并有效支持分布式控制和實時控制。 目前 CAN 總線規(guī)范已被ISO 國際標(biāo)準(zhǔn)組織指定為國際標(biāo)準(zhǔn), 并得到了 Motorola , Intel , Philips , Si

23、emens ,NEC 等公司的支持1。 CANopen 是 CAN 總線的一種有影響力的應(yīng)用層協(xié)議, 近年來得到了廣泛的應(yīng)用, 它保證了各種廠商設(shè)備的互用性、互換性,同時提高了信息傳輸?shù)目煽啃?,實時性。其應(yīng)用范圍已經(jīng)擴展到了汽車行業(yè)、機械工業(yè)、紡織機械、農(nóng)用機械、 機器人、 數(shù)控機床、 醫(yī)療器械、 家用電器及傳感器等領(lǐng)域。軟 PLC 是一種基于 PC 機的新興自動控制技術(shù),不僅能夠?qū)崿F(xiàn)硬 PLC 的所有功能,而且遵循IEC61131-3 編程標(biāo)準(zhǔn),為用戶提供了更多的開放性和適用性。1 控制系統(tǒng)的整體構(gòu)成2整個控制系統(tǒng)由監(jiān)控計算機、 PC-CAN 適配卡、 I/O 從站節(jié)點( n<110

24、) 、 CAN 總線網(wǎng)絡(luò)組成,其系統(tǒng)結(jié)構(gòu)如圖 1 所示。分布在現(xiàn)場的 I/O 從站節(jié)點連接印刷機的外圍設(shè)備,并通過CAN通信接口與總線相連;監(jiān)控計算機運行軟PLC 軟件并通過PC-CAN 適配卡和連接在CAN 總線網(wǎng)絡(luò)上的各個從站節(jié)點之間進行實時通信,從而實現(xiàn)整個印刷機組的分散控制和集中監(jiān)管??刂葡到y(tǒng)中的 I/O 從站節(jié)點由 CAN 控制器、 CAN 收發(fā)器和外圍電路(如:光電隔離、 I2C 、 LED 顯示等)組成。監(jiān)控計算機可以選用普通PC 或工控機 IPC 。 PC-CAN 適配卡用來完成CAN 總線和監(jiān)控計算機之間的協(xié)議轉(zhuǎn)換,可以選用 PCI 總線適配卡、 ISA 總線適配卡。各個控制

25、節(jié)點之間通過屏蔽雙絞線互聯(lián)構(gòu)成CAN總線網(wǎng)絡(luò),總線兩端連接 120Q的阻抗匹配電阻,用來提高系統(tǒng)的穩(wěn)定性、增強系統(tǒng)的抗干擾能力。2 I/O 從站的硬件設(shè)計目前, 有兩種 CAN 總線器件可以選擇: 一種是帶片上CAN的微控制器,如 P8XC591/2 、 87C196CA/CB 、 MC68376 等;另一種是獨立的CAN 控制器,如控制 Philips 公司的 SJA1000 、82C200,Intel 公司的 82526 、以及 Microchip 公司的 MCP2510等,但是獨立的CAN 控制芯片需要外接一個微處理器,接收外部 CPU 的控制才能運行。 本系統(tǒng)選用的是Philips 公

26、司的帶有在片 CAN 控制器的 P87C591 微型控制器,這樣大大簡化了節(jié)點的硬件設(shè)計,提高系統(tǒng)的可靠性2 。I/O 從站節(jié)點的硬件設(shè)計上采用了模塊化結(jié)構(gòu), 由微控制器、CAN 通信模塊、輸入輸出接口模塊、擴展接口模塊、參數(shù)設(shè)置模塊組成,其整體結(jié)構(gòu)如圖 2 所示。P87C591 是一款 8 位高性能微控制器, 具有片內(nèi) CAN 控制器,從 80C51 微控制器家族派生而來,采用了強大的 80C51 指令集并成功的包括了 Philips 半導(dǎo)體 SJA1000CAN 控制器的PeliCAN 功能。 CAN 收發(fā)器采用的是PhilipsPCA82C250 芯片,它具有高速穩(wěn)定的差動發(fā)送和接收能力

27、;為了提高抗干擾能力,系統(tǒng)中采用雙路電源模塊供電, 在控制器和傳輸介質(zhì)之間加接光電隔離器件ADuM1201 高速數(shù)字隔離器替代傳統(tǒng)的光電耦合器(如 6N137 ) ,簡化了電路,極大的降低了功耗。從站節(jié)點 I/O接口模塊采用了光電隔離電路, 提高了抗干擾能力; 為了使本系統(tǒng)具有更好的適用性和擴展性, 預(yù)留了基于 I2C 總線擴展接口模塊。此外,從站節(jié)點還外擴了 RS232 接口;以及電源信號、通訊狀態(tài)、 I/O 端口、故障信號等狀態(tài)的 LED 顯示。3 I/O 從站的軟件設(shè)計在 I/O 從站的軟件設(shè)計中,使用 C51Windows 編程語言實現(xiàn)各種功能, 與從站節(jié)點的硬件設(shè)計相一致, 軟件設(shè)計

28、也遵循模塊化的設(shè)計原則, 使控制軟件具有易讀、 易擴展和易維護的優(yōu)點。各功能模塊之間通過入口和出口參數(shù)相互聯(lián)系, 組合靈活且方便3 。從站節(jié)點的軟件設(shè)計流程如圖 3 所示。3.1 CANopen 通訊協(xié)議 45CANopen 協(xié)議是 CiA 協(xié)會基于 CAN 總線定義的應(yīng)用層協(xié)議之一,在各種控制系統(tǒng)中得到了廣泛應(yīng)用。 CANopen 設(shè)備模型如圖4所示,不同設(shè)備通過CAN總線進行連接組網(wǎng),CANopen 通信協(xié)議接口用于提供在總線上收發(fā)通信對象的服務(wù); 不同 CANopen 設(shè)備間的通信都是通過交換通信對象來完成的。CANopen 協(xié)議中定義了 4 種通信對象 (通訊模式) , 用于處理不同作

29、用的信息,包括:1) NMT對象,用來傳遞主節(jié)點對整個網(wǎng)絡(luò)系統(tǒng)的管理信息;2) SDO對象,用來傳遞網(wǎng)絡(luò)系統(tǒng)中的配置信息;3) PDO對象,用來實時傳送過程數(shù)據(jù)信息;4 )特殊功能對象,包括同步對象(Sync )緊急對象(Emergency )時間戳對象( TimeStamp )等,詳細(xì)內(nèi)容可參考CANopen 協(xié)議相關(guān)文檔 4 。 設(shè)備對象字典是CANopen 協(xié)議的核心概念, 描述了該設(shè)備使用的所有數(shù)據(jù)類型、 通信對象和應(yīng)用對象, CANopen協(xié)議的網(wǎng)絡(luò)系統(tǒng)中每一個設(shè)備都要實現(xiàn)一個唯一的對象字典, 區(qū)別在于設(shè)備類型不同其內(nèi)容則不同。 對象字典中每個對象擁有一個唯一的 16 位主索引和8

30、位子索引,由此實現(xiàn)對其中各種對象的訪問。 對象字典在系統(tǒng)軟件設(shè)計中得以實現(xiàn), 然后使用標(biāo)準(zhǔn)化的 EDS 文件對其進行描述。 EDS 文件的編寫,基本可以借鑒同類設(shè)備的 EDS 文件, 只需針對具體不同應(yīng)用做出相應(yīng)修改即可。3.2 I/O 從站的 CANopen 通訊協(xié)議實現(xiàn)I/O 從站的軟件設(shè)計遵循CANopen 協(xié)議預(yù)定義主/從連接集,在程序中采用預(yù)定義的強制性的缺省標(biāo)識符( CAN-ID )分配表。從站節(jié)點支持4 個接收 PDO 對象, 4 個發(fā)送 PDO 對象,1 個 SDO 對象, 1 個緊急對象和 1 個節(jié)點錯誤控制對象。協(xié)議的相關(guān)細(xì)節(jié)可查看文檔 6 。 在系統(tǒng)的軟件設(shè)計中, 結(jié)合通

31、訊協(xié)議的特點,大多采用了結(jié)構(gòu)體的方式來定義諸如 CAN 報文、發(fā)送和接收 PDO 配置對象、 CANopen 協(xié)議配置對象等,通過定義結(jié)構(gòu)體型指針變量完成對相關(guān)數(shù)據(jù)的讀寫, 給程序的編制帶來了方便。 此外, 利用定義數(shù)組的方法實現(xiàn)了對象字典和過程數(shù)據(jù)影像的操作。在SDO 報文處理子函數(shù)中,通過被訪問對象的主索引和子索引,以數(shù)組查詢的方式實現(xiàn)了對對象字典的讀寫訪問。CANopenI/O 從站的狀態(tài)機轉(zhuǎn)換通過判斷接收 NMT 報文命令字, 對心跳報文標(biāo)志字節(jié)代碼進行讀寫, 通過程序散轉(zhuǎn)方式得以實現(xiàn)。對 PDO 、 SDO 通訊對象的處理則根據(jù)心跳報文標(biāo)志字節(jié)代碼指明的當(dāng)前狀態(tài)分別進行處理。3.3

32、I/O 從站的調(diào)試從站節(jié)點的開發(fā)與調(diào)試采用了德國 PEAK 公司的 CANopen開發(fā)系統(tǒng),硬件包括PCI 和 USB 接口的 CAN 卡,軟件是PCANopenMagicPro3.07 專業(yè)開發(fā)版,很好的實現(xiàn)了對CANopen 網(wǎng)絡(luò)節(jié)點的配置、分析和實時監(jiān)控。調(diào)試所采用的通訊結(jié)構(gòu)如圖1所示,通過USB-CAN適配器監(jiān)控主機與CAN 總線網(wǎng)絡(luò)連接,構(gòu)成主從式的網(wǎng)絡(luò)結(jié)構(gòu),這種方式在后續(xù)系統(tǒng)組網(wǎng)調(diào)試時可以方便地實現(xiàn)對CAN 總線網(wǎng)絡(luò)的監(jiān)控。 通過 PCANopenMagicPro3.0 軟件可以對網(wǎng)絡(luò)上傳輸?shù)腃ANopen 通訊對象報文進行實時跟蹤;通過加載從站設(shè)備的EDS 文件實現(xiàn)對從站節(jié)點進行

33、配置;可以方便地實現(xiàn)對某個設(shè)備對象字典的訪問。在調(diào)試過程中,要注意保持CAN 總線網(wǎng)絡(luò)中主從設(shè)備的 CAN 波特率要一致, 否則將不能建立正常的通信。4 控制系統(tǒng)的測試平臺控制系統(tǒng)的整體測試采用如圖1所示的網(wǎng)絡(luò)結(jié)構(gòu)。監(jiān)控計算機運行德國 3S 公司的 CoDeSys 軟 PLC 軟件及 RTE 實時程序組件,作為 CAN 總線網(wǎng)絡(luò)的主站(相當(dāng)于一臺高性能可編程控制器) ,通過 PCAN-PCI 卡與自行設(shè)計開發(fā)的 I/O 從站節(jié)點進行數(shù)據(jù)通信, 構(gòu)成了基于軟PLC 和 CAN 現(xiàn)場總線的分布式I/O 控制系統(tǒng)。在控制系統(tǒng)的硬件連接完成后, 還需要在監(jiān)控計算機上通過CoDeSys 軟件對整個網(wǎng)絡(luò)進行組態(tài),包括:安裝系統(tǒng)支持的PCAN-PCI 卡的驅(qū)動程序(由 3S 提供) ,并加載到 RTE 中;加載從站設(shè)備的 EDS 文件;設(shè)置CAN 相關(guān)通訊參數(shù)(如波特率,本系統(tǒng)設(shè)置為

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論