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

          新聞中心

          EEPW首頁 > 測試測量 > 設(shè)計(jì)應(yīng)用 > 基于CAN總線的數(shù)據(jù)采集與控制系統(tǒng)設(shè)計(jì)

          基于CAN總線的數(shù)據(jù)采集與控制系統(tǒng)設(shè)計(jì)

          作者: 時間:2011-05-20 來源:網(wǎng)絡(luò) 收藏


          3 軟件設(shè)計(jì)
          該系統(tǒng)軟件設(shè)計(jì)主要分為兩個部分:與控制模塊程序設(shè)計(jì)和通信程序設(shè)計(jì)。
          3.1 與控制模塊程序設(shè)計(jì)
          與控制模塊程序設(shè)計(jì)流程圖如圖6所示。

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

          f.jpg


          3.2 通信程序設(shè)計(jì)
          通信程序設(shè)計(jì)分為三個部分:CAN總線初始化、數(shù)據(jù)發(fā)送和數(shù)據(jù)接收。
          (1)CAN總線初始化。CAN總線初始化主要是設(shè)置一些通信參數(shù),保證通信的正常進(jìn)行。初始化主要包括工作方式的設(shè)置、驗(yàn)收濾波方式的設(shè)置、驗(yàn)收屏蔽寄存器和驗(yàn)收代碼寄存器的設(shè)置、波特率參數(shù)設(shè)置、中斷允許寄存器的設(shè)置等。特別需要注意的是,初始化只有在復(fù)位模式下才可以進(jìn)行,因?yàn)镾JA1000配置信息的寄存器只有在復(fù)位模式下才可以進(jìn)行寫操作。
          (2)數(shù)據(jù)發(fā)送。數(shù)據(jù)發(fā)送前,微處理器周期查詢狀態(tài)寄存器,查看發(fā)送緩沖器是否被鎖定。若沒有鎖定,則把從現(xiàn)場取得的開關(guān)量數(shù)據(jù)發(fā)向CAN總線控制器的發(fā)送緩沖區(qū),然后啟動CAN總線控制器發(fā)送命令,此時CAN總線控制器自動向總線發(fā)送數(shù)據(jù)。數(shù)據(jù)發(fā)送的流程圖如圖7所示。

          g.jpg


          (3)數(shù)據(jù)接收。數(shù)據(jù)接收采用中斷方式。系統(tǒng)中的CAN控制器檢測到總線上有數(shù)據(jù)時會自動接收總線上的數(shù)據(jù),存入其接收緩沖區(qū),并向微控制器發(fā)送接收中斷,啟動中斷接收服務(wù)程序,通過執(zhí)行中斷接收服務(wù)程序,從CAN控制器的接收緩沖區(qū)讀取數(shù)據(jù),并對其進(jìn)行進(jìn)一步處理工作。數(shù)據(jù)接收流程圖如圖8所示。

          4 結(jié)語
          通過對系統(tǒng)的軟硬件的反復(fù)調(diào)試表明,該數(shù)據(jù)采集和控制系統(tǒng)的設(shè)計(jì)方案是成功的。該系統(tǒng)能高速有效地采集、傳遞和處理現(xiàn)場數(shù)據(jù),并且能在惡劣環(huán)境下保證通信速率和極低的出錯率,運(yùn)行效果很好,體現(xiàn)了CAN總線高性能和高可靠性的優(yōu)點(diǎn)。


          上一頁 1 2 3 4 下一頁

          評論


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