女人被狂躁到高潮视频免费无遮挡,内射人妻骚骚骚,免费人成小说在线观看网站,九九影院午夜理论片少妇,免费av永久免费网址

當(dāng)前位置:首頁 > 單片機 > 單片機
[導(dǎo)讀]CANopen是一種開放的應(yīng)用層協(xié)議,其應(yīng)用可以進(jìn)一步提高系統(tǒng)的可靠性、通信效率及靈活性,可使產(chǎn)品具有很好的兼容性。本文以3臺P1C18系列單片機組成的溫度測控系統(tǒng)為例,闡述CANopen協(xié)議的軟件實現(xiàn)過程。其中主要包括溫度測控系統(tǒng)中各個節(jié)點的硬件接口設(shè)計,節(jié)點的對象字典和通信模型的建立。通過測試實驗證明,系統(tǒng)的通信具有高效性和可靠性。

引 言
    CAN總線由于具有實時性和可靠性高、組網(wǎng)成本低等優(yōu)點,近年來在汽車工業(yè)、樓宇自動化、工廠自動化、機器人控制等領(lǐng)域得到廣泛應(yīng)用。CANopen協(xié)議不僅定義了通信規(guī)范,而且為可編程系統(tǒng)、不同器件、接口等設(shè)備應(yīng)用子協(xié)議定義了大量的行規(guī)。遵循CANopen協(xié)議開發(fā)出的設(shè)備能實現(xiàn)不同生產(chǎn)廠家的產(chǎn)品間的互操作。
    要掌握CANopen協(xié)議,重點是對對象字典和設(shè)備模型的理解以及對4類通信對象的掌握。本文先對CANopen協(xié)議進(jìn)行削析,再重點介紹在PICl8F458單片機上開發(fā)基于CANopen協(xié)議的節(jié)點,最后通過溫度測控系統(tǒng)實驗驗證了系統(tǒng)信息傳遞的可靠性、準(zhǔn)確性和實時性。

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

    CANopen協(xié)議是CiA協(xié)會基于CAN總線定義的應(yīng)用層協(xié)議之一,在各種控制系統(tǒng)中得到了廣泛應(yīng)用。它以CAN芯片為硬件基礎(chǔ),有效利用CAN芯片所提供的簡單通信功能來滿足工業(yè)控制網(wǎng)絡(luò)的復(fù)雜應(yīng)用層協(xié)議要求。CANopen網(wǎng)絡(luò)是主從站(Master—Slave)結(jié)構(gòu),系統(tǒng)的運行由主站控制,主站可以對127個從設(shè)備進(jìn)行控制,不同設(shè)備通過CAN總線進(jìn)行連接組網(wǎng)。圖1為CANopen設(shè)備模型。CANopen通信協(xié)議接口用于提供在總線上收發(fā)通信對象的服務(wù),不同CANopen設(shè)備間的通信都是通過交換通信對象來完成的。CANopen協(xié)議中定義了4種通信對象(通信模式),用于對不同作用的信息進(jìn)行處理:NMT對象(網(wǎng)絡(luò)管理對象)、SDO對象(服務(wù)數(shù)據(jù)對象)、PDO對象(過程數(shù)據(jù)對象)、特殊功能對象。
    設(shè)備對象字典是CANopen協(xié)議的核心概念,位于CANopen設(shè)備模型中通信層和用戶應(yīng)用層之間,為用戶應(yīng)用層提供接口。它是一個結(jié)構(gòu)標(biāo)準(zhǔn)化的、有序的對象組,描述了該設(shè)備使用的所有數(shù)據(jù)類型、通信對象和應(yīng)用對象?;贑ANopen協(xié)議的網(wǎng)絡(luò)系統(tǒng)中每一個設(shè)備都要實現(xiàn)一個唯一的對象字典,區(qū)別在于設(shè)備類型不同其內(nèi)容則不同。對象字典中每個對象擁有一個唯一的16位主索引和8位子索引,由此實現(xiàn)對其中各種對象的訪問。對象字典在系統(tǒng)軟件設(shè)計中得以實現(xiàn),然后使用標(biāo)準(zhǔn)化的EDS文件對其進(jìn)行描述。

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

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

    對于各個節(jié)點都采用預(yù)定義連接集中規(guī)定的11位ID。它由4位功能碼和7位節(jié)點ID組成。其中各通信對象具體分配的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é)點的ID為6,以TPDO對象方式發(fā)送測到的溫度。所以發(fā)送對象的COB—ID分別為TP—D02(200+6)、TSD()(580+6)、HEARTBEAT(700+6)、EMERGENCY(080+6),接收對象的COB—ID分別為NMT SERVICE(000)、RSD()(600+6)。
    設(shè)定溫度調(diào)節(jié)節(jié)點的ID為7,以RPDO對象方式接收從傳感溫度節(jié)點發(fā)送的溫度,并以TPDO對象方式發(fā)送調(diào)節(jié)狀態(tài)。所以發(fā)送對象的COB—ID分別為TPD01(180+7)、TSDO(580+7)、HEARTBEAT(700+7)、EMERGENCY(080+7),接收對象的COB—ID分別為NMT SERVICE(000)、RSDO(600+7)、RPDO2(280+6)。
    設(shè)定命令節(jié)點的ID為8,以RPDO對象方式分別接收從傳感溫度節(jié)點發(fā)送的溫度和從溫度調(diào)節(jié)節(jié)點發(fā)送的調(diào)節(jié)狀態(tài),也可用NMT對象方式發(fā)送NMT報文。所以發(fā)送對象的COB—ID分別為TSDO(580+8)、HEART—BEAT(700+8)、EMERGENCY(080+8)、NMT MAS—TER(000),接收對象的COB—ID分別為NMT SERVICE(000)、RSD0(600+8)、RPD02(280+6)、RPD01(180+7)。
2.2 節(jié)點對象字典的建立
   
對象字典的內(nèi)容除了包括CANopen協(xié)議規(guī)定的必需項外,還包括調(diào)用的各功能模塊和參數(shù)設(shè)定項。它的正確配置和使用,是保證整個CANopen網(wǎng)絡(luò)正常運行的核心,是節(jié)點實現(xiàn)其預(yù)定功能的必要保證。對象字典的組建采用C語言在頭文件中編寫,通過Struct(結(jié)構(gòu))語句實現(xiàn)對象字典內(nèi)容的尋址。對象字典的規(guī)劃賦值設(shè)計按照CANopen協(xié)議規(guī)定的格式完成,每個節(jié)點的對象字典都具有相同的結(jié)構(gòu),但具體內(nèi)容要根據(jù)不同的設(shè)備而定義,包含了描述這個設(shè)備和它網(wǎng)絡(luò)的所有參數(shù)。對象字典的操作是CANopen協(xié)議軟件的核心,通過對象字典實現(xiàn)網(wǎng)絡(luò)間參數(shù)的映射從而完成各種數(shù)據(jù)的處理,需要編寫對象字典解碼子函數(shù)、讀對象字典子函數(shù)和寫對象字典子函數(shù)。下面以溫度調(diào)節(jié)節(jié)點為例介紹對象字典的創(chuàng)建、賦值和具體操作。表1顯示了此節(jié)點中PDO的各個參數(shù)。

    OD_ENTRY(0x3000,Ox00,ATTR_RW | ATTR_ROM,TempLo),(對象主索引3000-下限溫度)OD_ENTRY(0x3001,0x00,ATTR_RW|ATTR_ROM,TempHi),(對象主索引3001-上限溫度)
    OD_ENTRY(0x3100,0x00,ATTR_RO,Status),(對象主索引3100一狀態(tài))
    OD_ENTRY(0x3200,0x00,ATTR_RWW,RemoteTemperature),(對象主索引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定位對象字典索引3200子索引00長度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定位對象字典索引3100子索引00長度1)
    if(RemoteTemperature<TempLo){Status=2;}(低于下限溫度加熱,為加熱狀態(tài))
    else if(RemoteTemperature>TempHi){Status=1;}(高于上限溫度降溫,為降溫狀態(tài))
    else{Status=0;}(在設(shè)定溫度范圍內(nèi),為保持狀態(tài))
    在此例中,PDO報文是在對象字典中用通信參數(shù)和映射參數(shù)來描述的。通信參數(shù)決定哪個COB—ID將被PDO使用,此例中RPD0的COB—ID為286,TPDO的COB—ID為187。映射參數(shù)包含映射到PDO里的對象在對象字典中的索引和子索引,以及對象的數(shù)據(jù)長度。此例中映射到RPDO里的對象在對象字典中的索引為3200,子索引為OO,長度為2;映射到TPDO里的對象在對象字典中的索引為3100,子索引為00,長度為1。另外某些相關(guān)變量也由對象字典所描述,可以通過sD0對象傳輸方式進(jìn)行下載修改或上傳觀察。此例中的上限溫度、下限溫度,就由對象字典主索引3000、子索引00和主索引3001、子索引00分別描述。
2.3 節(jié)點的CANopen協(xié)議的軟件實現(xiàn)
    在節(jié)點上實現(xiàn)CANopen協(xié)議軟件,首先要實現(xiàn)節(jié)點接收報文和發(fā)送報文的功能。接收報文的過程是,一旦有接收中斷產(chǎn)生,就把CAN接收緩沖區(qū)接收到的數(shù)據(jù)和地址放到一內(nèi)部陣列中,對接收到的報文進(jìn)行分析,并送去執(zhí)行相應(yīng)的子函數(shù)(NMT報文接收處理子函數(shù)、SDO報文接收處理子函數(shù)、心跳報文接收處理子函數(shù)、SDO報文接收處理子函數(shù)),最后返回主程序。發(fā)送報文的過程是,把需要發(fā)送的變量放到對象字典里,再把它們映射封裝成相應(yīng)的對象,最后將報文發(fā)送到總線上。
    主程序按照通信流程編寫,模塊上電后先進(jìn)行通信初始化。其首先初始化CANopen協(xié)議中的通信相關(guān)參數(shù)、對象字典、節(jié)點號,再初始化CAN控制器的硬件,包括單片機的內(nèi)部寄存器、定時器、串行口、CAN控制器。通信初始化后自動進(jìn)入節(jié)點初始化,并進(jìn)行一些特定用戶的初始化。完成后,發(fā)送一個啟動報文自動進(jìn)入預(yù)操作狀態(tài)。此時用戶的程序循環(huán)執(zhí)行著,在每個循環(huán)里,調(diào)用接收報文1次。這個模塊用來檢查接收到的對象,并作相應(yīng)的處理。在NMT報文到來之前一直持續(xù)在預(yù)操作狀態(tài)。在
這個狀態(tài)里,節(jié)點可以通過SD0被配置和設(shè)置參數(shù),但是不允許發(fā)送PDO。在相應(yīng)的NMT報文到來后,即收到啟動遠(yuǎn)程節(jié)點命令后,進(jìn)入操作狀態(tài),在這個狀態(tài)就可以進(jìn)行正常的通信了。在收到NMT報文,即停止遠(yuǎn)程節(jié)點命令,節(jié)點進(jìn)入了停止?fàn)顟B(tài),從而停止PDO和SDO通信。

3 實驗結(jié)果
   
在軟件設(shè)計中編寫了與上位機的通信模塊程序,可以將每個節(jié)點接收和發(fā)送報文的ID號、數(shù)據(jù)長度、數(shù)據(jù)轉(zhuǎn)發(fā)到串口,便于上位機進(jìn)行觀測。
    圖3為系統(tǒng)傳輸數(shù)據(jù)的過程,溫度傳感節(jié)點發(fā)送報文過程為發(fā)送自啟動報文后以周期為1 s發(fā)送心跳報文,以周期為100 ms發(fā)送PDO1報文,發(fā)送數(shù)據(jù)為傳感溫度(分別為19°,20°,…,21°…)。上限溫度和下限高溫都為20°時,溫度調(diào)節(jié)節(jié)點接收報文過程為接收到NMT報文命令后進(jìn)入操作狀態(tài),不斷接收PDOl報文。溫度調(diào)節(jié)節(jié)點發(fā)送報文過程為發(fā)送自啟動報文后以周期為1 s發(fā)送心跳報文,以事件觸發(fā)方式發(fā)送PDOO報文(發(fā)送數(shù)據(jù)為工作狀態(tài)長度為1,當(dāng)接收到的溫度低于20°時發(fā)送數(shù)據(jù)為02表示加熱,當(dāng)接收到的溫度高于20°時發(fā)送數(shù)據(jù)為01表示降溫,當(dāng)接收的溫度為20°時發(fā)送數(shù)據(jù)為OO表示保持),狀態(tài)顯示燈不斷閃爍紅色、黃色、藍(lán)色。如在命令節(jié)點中發(fā)送SDO報文改變對象字典中的上限溫度和下限溫度,再觀察各節(jié)點變化。情況1,當(dāng)上限溫度低于20°(為15°)時,溫度調(diào)節(jié)節(jié)點一直在降溫狀態(tài),狀態(tài)顯示燈為紅色。情況2,當(dāng)下限溫度高于20°(為25°)時,溫度調(diào)節(jié)節(jié)點一直在加熱狀態(tài),狀態(tài)顯示燈為黃色,情況3,當(dāng)上限溫度高于20°(為25°),下限溫度低于20°(為15°)時,溫度調(diào)節(jié)節(jié)點一直在保持狀態(tài),狀態(tài)顯示燈為藍(lán)色。命令節(jié)點在液晶顯示屏中顯示實時溫度,在狀態(tài)顯示燈中顯示實時狀態(tài)。

    命令節(jié)點進(jìn)行NMT對象操作時再觀察各節(jié)點狀態(tài):當(dāng)按下按鈕1時,節(jié)點進(jìn)入欲操作狀態(tài);當(dāng)按下按鈕2時,節(jié)點重啟。
    從以上兩個實驗可以看出,整個系統(tǒng)在運行過程中達(dá)到了滿意的控制效果,實現(xiàn)了基于CANopen協(xié)議的對象數(shù)據(jù)的交換,通信傳輸理想。


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

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

串口作為單片機開發(fā)的一個常用的外設(shè),應(yīng)用范圍非常廣。大部分時候,串口需要接收處理的數(shù)據(jù)長度是不定的。那么怎么才能判斷一幀數(shù)據(jù)是否結(jié)束呢,今天就以STM32單片機為例,介紹幾種接收不定長數(shù)據(jù)的方法。

關(guān)鍵字: 單片機 串口 STM32

單片機誕生于1971年,經(jīng)歷了SCM、MCU、SoC三大階段。單片機由以前的1位、4位、8位、16位,發(fā)展到現(xiàn)在的32位甚至64位。當(dāng)前國內(nèi)MCU廠商已有上百家,對標(biāo)進(jìn)口芯片的情況非常嚴(yán)重,導(dǎo)致國內(nèi)MCU產(chǎn)品將陷入同質(zhì)化...

關(guān)鍵字: 單片機 MCU 市場

(微控制單元 MCU(Microcontroller Unit),又稱單片機,是把中央處理器(CentralProcess Unit; CPU)的頻率與規(guī)格做適當(dāng)縮減,并將內(nèi)存(memory)、計數(shù)器(Timer)、US...

關(guān)鍵字: 單片機 芯片 CPU

摘要:隨著我國城鎮(zhèn)化進(jìn)程加快,汽車保用量劇增,土地資源緊缺,停車難問題日益嚴(yán)重,提升車位空間的利用率是目前解決這個問題的有效途徑之一。鑒于此,設(shè)計了一種基于PLC與小程序的自助立體停車庫,以PLC為控制系統(tǒng)的核心,服務(wù)器...

關(guān)鍵字: 控制系統(tǒng) PLC 通信協(xié)議

在疫情的影響下,出門后、用餐前使用酒精消毒已成了人們的日常,而酒精噴霧機也因此變得十分熱銷。為了避免交叉感染的風(fēng)險,自動酒精噴霧器也就應(yīng)運而生。不同于傳統(tǒng)手動噴霧器不美觀、手部接觸不衛(wèi)生的bug,此款自動感應(yīng)酒精噴霧器使...

關(guān)鍵字: 芯嶺技術(shù) 方案開發(fā) 解決方案 單片機

在實際的單片機控制系統(tǒng)中,有時候會使用數(shù)字邏輯芯片對單片機和受控元件進(jìn)行隔離,以保護(hù)單片機,或者令單片機更好地對后級進(jìn)行控制。

關(guān)鍵字: 單片機 數(shù)字邏輯芯片 受控元件

MH32F103AVET6使用高性能的32位內(nèi)核,內(nèi)置了多達(dá)2個高級定時器、10個通用定時器、2個基本定時器、3個12位的ADC、2個12位的DAC,還包含標(biāo)準(zhǔn)和先進(jìn)的通信接口包括:3個SPI接口、2個I2S接口、2個I...

關(guān)鍵字: 單片機 MCU

最近由于換季,天氣突然的轉(zhuǎn)涼,大家也是直呼好冷。天冷了自然是要注意防寒保暖。一個能夠當(dāng)充電寶用的暖手寶會是你最好的陪伴。暖手寶是一種非常便捷易用的發(fā)熱工具,并且體形小巧,可以隨身攜帶并輕易握在手中,也可以放置在身上的其它...

關(guān)鍵字: 芯嶺技術(shù) 方案開發(fā) 解決方案 單片機

XL32F003 系列微控制器采用高性能的 32 位 ARM?Cortex?- M0+ 內(nèi)核,寬電壓工作范圍的MCU。嵌入高達(dá)64 Kbytes flash和8 Kbytes SRAM存儲器,最高工作頻率32 MHz。包...

關(guān)鍵字: 單片機 MCU

電動洗鼻器是一種全新的鼻腔清潔工具,一般是通過水壓將生理鹽水送進(jìn)鼻腔,借助于生理鹽水的殺菌作用及水流的沖擊力,將鼻腔內(nèi)已聚集的致病菌及污洉排出,從而使鼻腔恢復(fù)正常的生理環(huán)境,恢復(fù)鼻腔的自我排毒功能,達(dá)到保護(hù)鼻腔的目的。讓...

關(guān)鍵字: 芯嶺技術(shù) 方案開發(fā) 解決方案 單片機

單片機

21600 篇文章

關(guān)注

發(fā)布文章

編輯精選

技術(shù)子站

關(guān)閉