国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

PIC18單片機(jī)的CANopen通信協(xié)議

發(fā)布時(shí)間:2010-6-3 18:36    發(fā)布者:李寬
關(guān)鍵詞: CANopen , PIC18
引言

CAN總線由于具有實(shí)時(shí)性和可靠性高、組網(wǎng)成本低等優(yōu)點(diǎn),近年來(lái)在汽車(chē)工業(yè)、樓宇自動(dòng)化、工廠自動(dòng)化、機(jī)器人控制等領(lǐng)域得到廣泛應(yīng)用。CANopen協(xié)議不僅定義了通信規(guī)范,而且為可編程系統(tǒng)、不同器件、接口等設(shè)備應(yīng)用子協(xié)議定義了大量的行規(guī)。遵循CANopen協(xié)議開(kāi)發(fā)出的設(shè)備能實(shí)現(xiàn)不同生產(chǎn)廠家的產(chǎn)品間的互操作。

要掌握CANopen協(xié)議,重點(diǎn)是對(duì)對(duì)象字典和設(shè)備模型的理解以及對(duì)4類(lèi)通信對(duì)象的掌握。本文先對(duì)CANopen協(xié)議進(jìn)行削析,再重點(diǎn)介紹在 PICl8F458單片機(jī)上開(kāi)發(fā)基于CANopen協(xié)議的節(jié)點(diǎn),最后通過(guò)溫度測(cè)控系統(tǒng)實(shí)驗(yàn)驗(yàn)證了系統(tǒng)信息傳遞的可靠性、準(zhǔn)確性和實(shí)時(shí)性。

1 CANopen通信協(xié)議簡(jiǎn)介

CANopen協(xié)議是CiA協(xié)會(huì)基于CAN總線定義的應(yīng)用層協(xié)議之一,在各種控制系統(tǒng)中得到了廣泛應(yīng)用。它以CAN芯片為硬件基礎(chǔ),有效利用CAN芯片所提供的簡(jiǎn)單通信功能來(lái)滿足工業(yè)控制網(wǎng)絡(luò)的復(fù)雜應(yīng)用層協(xié)議要求。CANopen網(wǎng)絡(luò)是主從站(Master—Slave)結(jié)構(gòu),系統(tǒng)的運(yùn)行由主站控制,主站可以對(duì)127個(gè)從設(shè)備進(jìn)行控制,不同設(shè)備通過(guò)CAN總線進(jìn)行連接組網(wǎng)。圖1為CANopen設(shè)備模型。CANopen通信協(xié)議接口用于提供在總線上收發(fā)通信對(duì)象的服務(wù),不同CANopen設(shè)備間的通信都是通過(guò)交換通信對(duì)象來(lái)完成的。CANopen協(xié)議中定義了4種通信對(duì)象(通信模式),用于對(duì)不同作用的信息進(jìn)行處理:NMT對(duì)象(網(wǎng)絡(luò)管理對(duì)象)、SDO對(duì)象(服務(wù)數(shù)據(jù)對(duì)象)、PDO對(duì)象(過(guò)程數(shù)據(jù)對(duì)象)、特殊功能對(duì)象。



設(shè)備對(duì)象字典是CANopen協(xié)議的核心概念,位于CANopen設(shè)備模型中通信層和用戶(hù)應(yīng)用層之間,為用戶(hù)應(yīng)用層提供接口。它是一個(gè)結(jié)構(gòu)標(biāo)準(zhǔn)化的、有序的對(duì)象組,描述了該設(shè)備使用的所有數(shù)據(jù)類(lèi)型、通信對(duì)象和應(yīng)用對(duì)象。基于CANopen協(xié)議的網(wǎng)絡(luò)系統(tǒng)中每一個(gè)設(shè)備都要實(shí)現(xiàn)一個(gè)唯一的對(duì)象字典,區(qū)別在于設(shè)備類(lèi)型不同其內(nèi)容則不同。對(duì)象字典中每個(gè)對(duì)象擁有一個(gè)唯一的16位主索引和8位子索引,由此實(shí)現(xiàn)對(duì)其中各種對(duì)象的訪問(wèn)。對(duì)象字典在系統(tǒng)軟件設(shè)計(jì)中得以實(shí)現(xiàn),然后使用標(biāo)準(zhǔn)化的EDS文件對(duì)其進(jìn)行描述。

2 溫度測(cè)控系統(tǒng)的軟、硬件設(shè)計(jì)

2.1 溫度測(cè)控系統(tǒng)組成

圖2所示溫度測(cè)控系統(tǒng)包含3個(gè)節(jié)點(diǎn),它們構(gòu)成一個(gè)CAN網(wǎng)絡(luò)。傳感溫度節(jié)點(diǎn)發(fā)送測(cè)到的溫度,此節(jié)點(diǎn)由主芯片和溫度傳感器組成。溫度調(diào)節(jié)節(jié)點(diǎn)接收到從傳感溫度節(jié)點(diǎn)發(fā)送的溫度數(shù)據(jù)后,低于下限溫度加熱,高于上限溫度降溫,并發(fā)送調(diào)節(jié)狀態(tài);此節(jié)點(diǎn)由主芯片、狀態(tài)顯示燈和空調(diào)設(shè)備組成。命令節(jié)點(diǎn)接收從傳感溫度節(jié)點(diǎn)發(fā)送的溫度和溫度調(diào)節(jié)節(jié)點(diǎn)發(fā)送的狀態(tài)在液晶屏上顯示,并有按鈕可以發(fā)送NMT對(duì)象,對(duì)整個(gè)系統(tǒng)進(jìn)行控制;此節(jié)點(diǎn)由主芯片、液晶屏、狀態(tài)顯示燈和按鈕組成。



針對(duì)系統(tǒng)的要求,選用PICl8F458單片機(jī)作為從節(jié)點(diǎn)的主芯片。它是Microchip公司的單片16位高性能微控制器,具有片內(nèi)CAN控制器,CAN模塊符合CAN2.0B標(biāo)準(zhǔn),帶有3個(gè)發(fā)送緩沖區(qū)、2個(gè)接收緩沖區(qū)、2個(gè)接收屏蔽寄存器、6個(gè)完全接收濾波器。CAN收發(fā)器采用 PCA82C250芯片,它具有高速穩(wěn)定的差動(dòng)發(fā)送和接收能力,可作為CAN協(xié)議控制器和物理總線接口。此外,為了便于調(diào)試和與主控制器的通信,系統(tǒng)中還擴(kuò)展了RS232接口。



對(duì)于各個(gè)節(jié)點(diǎn)都采用預(yù)定義連接集中規(guī)定的11位ID。它由4位功能碼和7位節(jié)點(diǎn)ID組成。其中各通信對(duì)象具體分配的COB—ID為NMT SERVICE一000、EMER—GENCY一080、TIMESTAMP一100、SYNC一080、TPD01—180、RPD01—200、 TPD02—280、RPD02—300、TSDO一580、RSDO一600、HEARTBEAT一700。

設(shè)定傳感溫度節(jié)點(diǎn)的ID為6,以TPDO對(duì)象方式發(fā)送測(cè)到的溫度。所以發(fā)送對(duì)象的COB—ID分別為T(mén)P—D02(200+6)、TSD() (580+6)、HEARTBEAT(700+6)、EMERGENCY(080+6),接收對(duì)象的COB—ID分別為NMT SERVICE(000)、RSD()(600+6)。

設(shè)定溫度調(diào)節(jié)節(jié)點(diǎn)的ID為7,以RPDO對(duì)象方式接收從傳感溫度節(jié)點(diǎn)發(fā)送的溫度,并以TPDO對(duì)象方式發(fā)送調(diào)節(jié)狀態(tài)。所以發(fā)送對(duì)象的COB—ID分別為 TPD01(180+7)、TSDO(580+7)、HEARTBEAT(700+7)、EMERGENCY(080+7),接收對(duì)象的COB—ID分別為NMT SERVICE(000)、RSDO(600+7)、RPDO2(280+6)。

設(shè)定命令節(jié)點(diǎn)的ID為8,以RPDO對(duì)象方式分別接收從傳感溫度節(jié)點(diǎn)發(fā)送的溫度和從溫度調(diào)節(jié)節(jié)點(diǎn)發(fā)送的調(diào)節(jié)狀態(tài),也可用NMT對(duì)象方式發(fā)送NMT報(bào)文。所以發(fā)送對(duì)象的COB—ID分別為T(mén)SDO(580+8)、HEART—BEAT(700+8)、EMERGENCY(080+8)、NMT MAS—TER(000),接收對(duì)象的COB—ID分別為NMT SERVICE(000)、RSD0(600+8)、RPD02(280+6)、RPD01(180+7)。

2.2 節(jié)點(diǎn)對(duì)象字典的建立

對(duì)象字典的內(nèi)容除了包括CANopen協(xié)議規(guī)定的必需項(xiàng)外,還包括調(diào)用的各功能模塊和參數(shù)設(shè)定項(xiàng)。它的正確配置和使用,是保證整個(gè) CANopen網(wǎng)絡(luò)正常運(yùn)行的核心,是節(jié)點(diǎn)實(shí)現(xiàn)其預(yù)定功能的必要保證。對(duì)象字典的組建采用C語(yǔ)言在頭文件中編寫(xiě),通過(guò)Struct(結(jié)構(gòu))語(yǔ)句實(shí)現(xiàn)對(duì)象字典內(nèi)容的尋址。對(duì)象字典的規(guī)劃賦值設(shè)計(jì)按照CANopen協(xié)議規(guī)定的格式完成,每個(gè)節(jié)點(diǎn)的對(duì)象字典都具有相同的結(jié)構(gòu),但具體內(nèi)容要根據(jù)不同的設(shè)備而定義,包含了描述這個(gè)設(shè)備和它網(wǎng)絡(luò)的所有參數(shù)。對(duì)象字典的操作是CANopen協(xié)議軟件的核心,通過(guò)對(duì)象字典實(shí)現(xiàn)網(wǎng)絡(luò)間參數(shù)的映射從而完成各種數(shù)據(jù)的處理,需要編寫(xiě)對(duì)象字典解碼子函數(shù)、讀對(duì)象字典子函數(shù)和寫(xiě)對(duì)象字典子函數(shù)。下面以溫度調(diào)節(jié)節(jié)點(diǎn)為例介紹對(duì)象字典的創(chuàng)建、賦值和具體操作。表1顯示了此節(jié)點(diǎn)中PDO的各個(gè)參數(shù)。

OD_ENTRY(0x3000,Ox00,ATTR_RW | ATTR_ROM,TempLo),(對(duì)象主索引3000-下限溫度)OD_ENTRY(0x3001,0x00,ATTR_RW|ATTR_ROM,TempHi),(對(duì)象主索引3001-上限溫度)
    OD_ENTRY(0x3100,0x00,ATTR_RO,Status),(對(duì)象主索引3100一狀態(tài))
    OD_ENTRY(0x3200,0x00,ATTR_RWW,RemoteTemperature),(對(duì)象主索引3200-遠(yuǎn)程溫度)#define ODD_RPDO_PAR_COB_ID_0 Ox40000286L(RPDO的COB-ID為0x286)
    OD_ENTRY(0x160l,0x00,ATTR_RO | ATTR_ROM,ODE_RPDO_Mapping_NoOfEntries),OD_ENTRY(0x1601,0x01,ATTR_RO|ATTR_ROM,ODD_RPDO_MAP_0_1, (RPDO映射參數(shù)描述)
    #define ODD_RPDO_MAP_0_1 0x32000010L(RPDO定位對(duì)象字典索引3200子索引00長(zhǎng)度2)
    OD_ENTRY(0xlA00,0x00,ATTR_RO|ATTR_ROM,ODE_TPDO_Mapping_NoOfEntries),
    OD_ENTRY(0xlA00,0x01,ATTR_RO|ATTR_ROM,ODD_TPD0_MAP_0_l,(TPDO映射參數(shù)描述)
    #define ODD_TPDO_MAP_0_1 0x31000008L(TP-DO定位對(duì)象字典索引3100子索引00長(zhǎng)度1)
    if(RemoteTemperature     else if(RemoteTemperature>TempHi){Status=1;}(高于上限溫度降溫,為降溫狀態(tài))
    else{Status=0;}(在設(shè)定溫度范圍內(nèi),為保持狀態(tài))

在此例中,PDO報(bào)文是在對(duì)象字典中用通信參數(shù)和映射參數(shù)來(lái)描述的。通信參數(shù)決定哪個(gè)COB—ID將被PDO使用,此例中RPD0的COB—ID為 286,TPDO的COB—ID為187。映射參數(shù)包含映射到PDO里的對(duì)象在對(duì)象字典中的索引和子索引,以及對(duì)象的數(shù)據(jù)長(zhǎng)度。此例中映射到RPDO里的對(duì)象在對(duì)象字典中的索引為3200,子索引為OO,長(zhǎng)度為2;映射到TPDO里的對(duì)象在對(duì)象字典中的索引為3100,子索引為00,長(zhǎng)度為1。另外某些相關(guān)變量也由對(duì)象字典所描述,可以通過(guò)sD0對(duì)象傳輸方式進(jìn)行下載修改或上傳觀察。此例中的上限溫度、下限溫度,就由對(duì)象字典主索引3000、子索引00和主索引3001、子索引00分別描述。

2.3 節(jié)點(diǎn)的CANopen協(xié)議的軟件實(shí)現(xiàn)

在節(jié)點(diǎn)上實(shí)現(xiàn)CANopen協(xié)議軟件,首先要實(shí)現(xiàn)節(jié)點(diǎn)接收?qǐng)?bào)文和發(fā)送報(bào)文的功能。接收?qǐng)?bào)文的過(guò)程是,一旦有接收中斷產(chǎn)生,就把CAN接收緩沖區(qū)接收到的數(shù)據(jù)和地址放到一內(nèi)部陣列中,對(duì)接收到的報(bào)文進(jìn)行分析,并送去執(zhí)行相應(yīng)的子函數(shù)(NMT報(bào)文接收處理子函數(shù)、SDO報(bào)文接收處理子函數(shù)、心跳報(bào)文接收處理子函數(shù)、SDO報(bào)文接收處理子函數(shù)),最后返回主程序。發(fā)送報(bào)文的過(guò)程是,把需要發(fā)送的變量放到對(duì)象字典里,再把它們映射封裝成相應(yīng)的對(duì)象,最后將報(bào)文發(fā)送到總線上。

主程序按照通信流程編寫(xiě),模塊上電后先進(jìn)行通信初始化。其首先初始化CANopen協(xié)議中的通信相關(guān)參數(shù)、對(duì)象字典、節(jié)點(diǎn)號(hào),再初始化CAN控制器的硬件,包括單片機(jī)的內(nèi)部寄存器、定時(shí)器、串行口、CAN控制器。通信初始化后自動(dòng)進(jìn)入節(jié)點(diǎn)初始化,并進(jìn)行一些特定用戶(hù)的初始化。完成后,發(fā)送一個(gè)啟動(dòng)報(bào)文自動(dòng)進(jìn)入預(yù)操作狀態(tài)。此時(shí)用戶(hù)的程序循環(huán)執(zhí)行著,在每個(gè)循環(huán)里,調(diào)用接收?qǐng)?bào)文1次。這個(gè)模塊用來(lái)檢查接收到的對(duì)象,并作相應(yīng)的處理。在NMT報(bào)文到來(lái)之前一直持續(xù)在預(yù)操作狀態(tài)。在
這個(gè)狀態(tài)里,節(jié)點(diǎn)可以通過(guò)SD0被配置和設(shè)置參數(shù),但是不允許發(fā)送PDO。在相應(yīng)的NMT報(bào)文到來(lái)后,即收到啟動(dòng)遠(yuǎn)程節(jié)點(diǎn)命令后,進(jìn)入操作狀態(tài),在這個(gè)狀態(tài)就可以進(jìn)行正常的通信了。在收到NMT報(bào)文,即停止遠(yuǎn)程節(jié)點(diǎn)命令,節(jié)點(diǎn)進(jìn)入了停止?fàn)顟B(tài),從而停止PDO和SDO通信。

3 實(shí)驗(yàn)結(jié)果

在軟件設(shè)計(jì)中編寫(xiě)了與上位機(jī)的通信模塊程序,可以將每個(gè)節(jié)點(diǎn)接收和發(fā)送報(bào)文的ID號(hào)、數(shù)據(jù)長(zhǎng)度、數(shù)據(jù)轉(zhuǎn)發(fā)到串口,便于上位機(jī)進(jìn)行觀測(cè)。

圖3為系統(tǒng)傳輸數(shù)據(jù)的過(guò)程,溫度傳感節(jié)點(diǎn)發(fā)送報(bào)文過(guò)程為發(fā)送自啟動(dòng)報(bào)文后以周期為1 s發(fā)送心跳報(bào)文,以周期為100 ms發(fā)送PDO1報(bào)文,發(fā)送數(shù)據(jù)為傳感溫度(分別為19°,20°,…,21°…)。上限溫度和下限高溫都為20°時(shí),溫度調(diào)節(jié)節(jié)點(diǎn)接收?qǐng)?bào)文過(guò)程為接收到 NMT報(bào)文命令后進(jìn)入操作狀態(tài),不斷接收PDOl報(bào)文。溫度調(diào)節(jié)節(jié)點(diǎn)發(fā)送報(bào)文過(guò)程為發(fā)送自啟動(dòng)報(bào)文后以周期為1 s發(fā)送心跳報(bào)文,以事件觸發(fā)方式發(fā)送PDOO報(bào)文(發(fā)送數(shù)據(jù)為工作狀態(tài)長(zhǎng)度為1,當(dāng)接收到的溫度低于20°時(shí)發(fā)送數(shù)據(jù)為02表示加熱,當(dāng)接收到的溫度高于 20°時(shí)發(fā)送數(shù)據(jù)為01表示降溫,當(dāng)接收的溫度為20°時(shí)發(fā)送數(shù)據(jù)為OO表示保持),狀態(tài)顯示燈不斷閃爍紅色、黃色、藍(lán)色。如在命令節(jié)點(diǎn)中發(fā)送SDO報(bào)文改變對(duì)象字典中的上限溫度和下限溫度,再觀察各節(jié)點(diǎn)變化。情況1,當(dāng)上限溫度低于20°(為15°)時(shí),溫度調(diào)節(jié)節(jié)點(diǎn)一直在降溫狀態(tài),狀態(tài)顯示燈為紅色。情況2,當(dāng)下限溫度高于20°(為25°)時(shí),溫度調(diào)節(jié)節(jié)點(diǎn)一直在加熱狀態(tài),狀態(tài)顯示燈為黃色,情況3,當(dāng)上限溫度高于20°(為25°),下限溫度低于 20°(為15°)時(shí),溫度調(diào)節(jié)節(jié)點(diǎn)一直在保持狀態(tài),狀態(tài)顯示燈為藍(lán)色。命令節(jié)點(diǎn)在液晶顯示屏中顯示實(shí)時(shí)溫度,在狀態(tài)顯示燈中顯示實(shí)時(shí)狀態(tài)。



命令節(jié)點(diǎn)進(jìn)行NMT對(duì)象操作時(shí)再觀察各節(jié)點(diǎn)狀態(tài):當(dāng)按下按鈕1時(shí),節(jié)點(diǎn)進(jìn)入欲操作狀態(tài);當(dāng)按下按鈕2時(shí),節(jié)點(diǎn)重啟。

從以上兩個(gè)實(shí)驗(yàn)可以看出,整個(gè)系統(tǒng)在運(yùn)行過(guò)程中達(dá)到了滿意的控制效果,實(shí)現(xiàn)了基于CANopen協(xié)議的對(duì)象數(shù)據(jù)的交換,通信傳輸理想。

結(jié)語(yǔ)

應(yīng)用PIC18單片機(jī)自行開(kāi)發(fā)的基于CANopen協(xié)議的節(jié)點(diǎn),實(shí)現(xiàn)了對(duì)4種通信對(duì)象信息的通信處理,并通過(guò)測(cè)試驗(yàn)證了系統(tǒng)信息傳遞的可靠性、準(zhǔn)確性和實(shí)時(shí)性,很好地滿足了基于CANopen協(xié)議的溫度測(cè)控系統(tǒng)的要求;對(duì)于CANopen在國(guó)內(nèi)的應(yīng)用和普及,以及CAN網(wǎng)絡(luò)和驅(qū)動(dòng)產(chǎn)品盡早和國(guó)際接軌,具有重要的意義。

參考文獻(xiàn)

   1. 鄧遵義 CANopen 協(xié)議剖析及其在伺服電機(jī)控制中的實(shí)現(xiàn) [期刊論文] -機(jī)電工程2007(24)
   2. CANopen high-level protocol for CAN-bus H.Boterenbrood NIKHEF 2000
   3. 馬凱歌 基于DSP 的CANopen通信協(xié)議的實(shí)現(xiàn) [期刊論文] -微計(jì)算機(jī)信息2006
   4. Microchip Technology Inc PICI8F458 英文手冊(cè) 2003

作者:廣西大學(xué) 蔣智康 宋春寧 宋紹劍
來(lái)源:?jiǎn)纹瑱C(jī)與嵌入式系統(tǒng) 2008(9)
本文地址:http://m.qingdxww.cn/thread-11975-1-1.html     【打印本頁(yè)】

本站部分文章為轉(zhuǎn)載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé);文章版權(quán)歸原作者及原出處所有,如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,我們將根據(jù)著作權(quán)人的要求,第一時(shí)間更正或刪除。
yuhuikeji 發(fā)表于 2015-12-29 16:42:08
很好,
yuhuikeji 發(fā)表于 2015-12-29 16:42:29
很有用!
您需要登錄后才可以發(fā)表評(píng)論 登錄 | 立即注冊(cè)

廠商推薦

  • Microchip視頻專(zhuān)區(qū)
  • 探索PIC16F13145 MCU系列——快速概覽
  • PIC32CK SG單片機(jī)——輕松滿足新型網(wǎng)絡(luò)安全要求
  • PIC32CM LS00 Curiosity Pro評(píng)估工具包
  • dsPIC® DSC集成電機(jī)驅(qū)動(dòng)器:非常適合在緊湊空間內(nèi)進(jìn)行實(shí)時(shí)控制
  • 貿(mào)澤電子(Mouser)專(zhuān)區(qū)

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號(hào) | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 三级毛片在线免费观看| 色香婷婷| 亚洲精品欧美精品日韩精品| 日本黄色小视频在线观看| 一级片免费看| 手机看片1024欧美一级| 校园春色欧美日韩| 亚洲国产成人久久笫一页| 欧洲精品一区二区三区| 欧美一级高清片欧美国产欧美| 欧美中文在线| 亚洲第一伊人| 四虎hu| 亚洲福利天堂| 欧美日韩一日韩一线不卡| 色yeye在线观看| 亚洲日本高清| 婷婷六月久久综合丁香一二| 日本中文字幕一区二区有码在线| 日韩v片| 欧美综合精品一区二区三区| 欧美乱一级在线观看| 青青福利视频| 青草精品| 四虎社区| 日韩美女片视频| 欧美日韩在线看| 四虎免费在线| 天天久久狠狠色综合| 西班牙一级特级毛片dvd| 亚洲国产精久久久久久久| 婷婷色一二三区波多野衣| 一级黄色夫妻片| 一本到亚洲网| 四虎黄色影院| 日韩精品永久免费播放平台| 色噜噜狠狠色综合久| 亚色网址| 婷婷狠狠操| 青青青免费高清视频在线| 亚洲 欧美 中文 日韩欧美|