<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > PIC18單片機(jī)的CANopen通信協(xié)議

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

          作者: 時(shí)間:2009-12-25 來(lái)源:網(wǎng)絡(luò) 收藏

          本文引用地址:http://www.ex-cimer.com/article/173498.htm

          程序

            在此例中,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)的的軟件實(shí)現(xiàn)

            在節(jié)點(diǎn)上實(shí)現(xiàn)軟件,首先要實(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ā)送到總線上。

            主程序按照流程編寫,模塊上電后先進(jìn)行通信初始化。其首先初始化中的通信相關(guān)參數(shù)、對(duì)象字典、節(jié)點(diǎn)號(hào),再初始化CAN控制器的硬件,包括的內(nèi)部寄存器、定時(shí)器、串行口、CAN控制器。通信初始化后自動(dòng)進(jìn)入節(jié)點(diǎn)初始化,并進(jìn)行一些特定用戶的初始化。完成后,發(fā)送一個(gè)啟動(dòng)報(bào)文自動(dòng)進(jìn)入預(yù)操作狀態(tài)。此時(shí)用戶的程序循環(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ì)中編寫了與上位機(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)。


          系統(tǒng)傳輸數(shù)據(jù)的過(guò)程

            命令節(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)用自行開(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ó)際接軌,具有重要的意義。


          上一頁(yè) 1 2 下一頁(yè)

          評(píng)論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();