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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 現(xiàn)場總線技術(shù)在汽車檢測線上的應(yīng)用

          現(xiàn)場總線技術(shù)在汽車檢測線上的應(yīng)用

          作者: 時(shí)間:2012-07-07 來源:網(wǎng)絡(luò) 收藏

          下位機(jī)N是汽車檢測儀表中帶有CAN的CAN控制模塊,它不需要CAN卡直接與CAN總線相連。在這種方式下,工控機(jī)只連接CAN 總線,每個(gè)下位機(jī)用并聯(lián)的方式掛接在總線上,而不需要每個(gè)下位機(jī)與工控機(jī)相連。具有節(jié)省屏蔽線、布線方式簡單和抗干擾性強(qiáng)的優(yōu)點(diǎn)。工位機(jī)也可以由DSP或單片機(jī)組成的嵌入式控制器代替工控機(jī)。這種方案對(duì)檢測設(shè)備的影響較小、成本較低,總線獲取數(shù)據(jù)的可靠性較高。

          1.2 汽車檢測儀表中帶有CAN的CAN控制模塊設(shè)計(jì)

          CAN控制模塊是由8位的微處理器89C58、獨(dú)立CAN通信控制器SJA1000、CAN總線收發(fā)器82C250以及相關(guān)的接口組成的實(shí)時(shí)多任務(wù)的嵌入式控制系統(tǒng)(如圖3所示),實(shí)現(xiàn)CAN總線的通信協(xié)議以及相關(guān)功能,可以分成3個(gè)部分:

          (1) 總線接口部分,包括總線收發(fā)器和總線控制器,這部分對(duì)于所有CAN總線智能模塊都是相同的。

          (2) 與傳感器及執(zhí)行機(jī)構(gòu)與單片機(jī)的接口部分,不同的接口將各單元分成不同的類型。

          (3) 將前兩部分連接成一個(gè)有機(jī)系統(tǒng)的微控制器及其外圍接口部分,稱為模塊,不同的模塊要求單片機(jī)實(shí)現(xiàn)不同的功能。微處理器負(fù)責(zé)從傳感器中采集數(shù)據(jù)、對(duì)SJAIO00初始化并且控制SJAIO00實(shí)現(xiàn)數(shù)據(jù)的接收和發(fā)送等通信任務(wù)。

          2、CAN通信協(xié)議的制定

          SJA1000 CAN總線控制器支持CAN 通信協(xié)議約定的4種不同幀格式,即數(shù)據(jù)幀、遠(yuǎn)程幀、出錯(cuò)幀和超載幀。

          汽車檢測系統(tǒng)中下位機(jī)將檢測得到的數(shù)據(jù)以數(shù)據(jù)文件的形式緩存,傳輸時(shí)打包成數(shù)據(jù)幀,以報(bào)文為單位進(jìn)行數(shù)據(jù)傳送。定義幀由優(yōu)先級(jí)、單元地址、數(shù)據(jù)組成。

          優(yōu)先級(jí)的制定如表1所示,系統(tǒng)復(fù)位命令的優(yōu)先級(jí)定義為0x00,由于1讓位于0的機(jī)制,其值越小,優(yōu)先級(jí)越高。所以復(fù)位命令的優(yōu)先級(jí)最高,只要收到這個(gè)命令下位機(jī)將停止發(fā)送及采集數(shù)據(jù),并執(zhí)行復(fù)位。



          評(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); })();