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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于CAN現場總線的分布式柴油發(fā)動機測試系統(tǒng)

          基于CAN現場總線的分布式柴油發(fā)動機測試系統(tǒng)

          作者: 時間:2016-12-20 來源:網絡 收藏

            SJA1000是Philips公司的CAN控制器,它實現了CAN總線網絡中的數據鏈路層和物理層功能,通過對其編程,微處理器可以設置它的工作方式,控制它的工作狀態(tài),進行數據的發(fā)送和接收,把應用層建立在它的基礎之上。在本設計中,為了增強CAN總線節(jié)點的抗干擾能力,采用SJA1000的具有光電隔離的CAN總線接口。SJA1000的發(fā)送輸出端TX0與接收輸入端RX0、RX1分別經高速集成光電耦合器6N137隔離后與CAN總線接口驅動芯片82C250的TXD和RXD相連,82C250則直接與CAN物理總線相連。

            上位機監(jiān)控軟件采用組態(tài)軟件進行開發(fā)。組態(tài)軟件作為用戶可定制功能的軟件平臺工具,是隨著分布式控制系統(tǒng)及計算機控制技術的日趨成熟而發(fā)展起來的

            當前,隨著現場總線技術的逐步推廣,現場總線和開放系統(tǒng)已成為組態(tài)軟件成長所依賴的外部環(huán)境,這使得組態(tài)軟件更易于與眾多的輸入/輸出設備連接,從而促進了組態(tài)軟件在現場總線控制系統(tǒng)中的應用。通過對現有組態(tài)軟件性能及價格的比較,同時結合本技改項目的實際需要,選擇國產"世紀星"組態(tài)軟件來開發(fā)CAN總線系統(tǒng)的監(jiān)控程序。為了將上位機人機界面程序與下位機數據采集與交換程序有機地結合起來,我們把臨控程序分成兩部分,即:將服務器-客戶機結構應用到CAN總線控制系統(tǒng)的組態(tài)軟件設計中,實現以人機界面程序作為客戶機端程序,以與硬件進行數據交換的程序作為服務器端程序。

            (2) 下位機軟件:

          柴油發(fā)動機測試系統(tǒng)軟件結構示意圖

            每個柴油發(fā)動機試車臺作為CAN總線的一個智能節(jié)點,通過CAN通信接口將各試車臺的檢測狀態(tài)和控制結果等信息向上位機傳送,并隨時準備接收上位機的控制指令。下位機控制程序采用模塊化編程,包括CAN總線通信管理模塊、柴油發(fā)動機運行狀態(tài)監(jiān)控模塊、A/D巡檢采樣及數據轉存模塊、I/O開關量信號處理模塊等。其中,CAN節(jié)點通信模塊部分至關重要,它關系到整個分布式控制網絡能否正常工作。CAN節(jié)點通信模塊由CAN初始化子程序、CAN中斷程序和CAN數據收發(fā)子程序組成,如圖4所示。

          試車臺CAN節(jié)點通信控制流程圖

            4. 結束語

            本論文的研究內容在圍產135系列柴油發(fā)動機的試車臺上已經過試驗并運行良好,實踐表明:基于CAN總線的分布式測試系統(tǒng)穩(wěn)定可靠,具有配置靈活簡單、成本低、可靠性高、抗干擾能力強和可擴充性好等優(yōu)點,可以對柴油機的測試過程進行全面監(jiān)控,大大減少了測試時間,改善了監(jiān)控工作條件,提高了對設備的科學化管理,對某些故障還能夠及早發(fā)現,防止滯后處理所造成的損失。


          上一頁 1 2 下一頁

          評論


          技術專區(qū)

          關閉
          看屁屁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); })();