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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于CAN的多通道數(shù)據(jù)采集系統(tǒng)的設(shè)計

          基于CAN的多通道數(shù)據(jù)采集系統(tǒng)的設(shè)計

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

          系統(tǒng)的校正分為硬件校正和軟件校正,硬件校正是在設(shè)計電路時完成的,主要包括選用高可靠性的電子元器件、減少電路設(shè)計時的電磁干擾、選用高質(zhì)量穩(wěn)壓電源等。如在放大電路中選用高精度小溫漂電阻,A/D芯片的工作電源及參考電壓上加濾波電容,運算放大器的電源盡量采用雙電源供電減小其零點漂移等,這些都是減小其非線性關(guān)系的方法,但這些方法只是在硬件上減小了其非線性關(guān)系但并不能使其消除。單憑硬件校正是無法滿足系統(tǒng)對誤差的要求,所以必須在軟件上對采集得到的數(shù)據(jù)進(jìn)行校正。

          考慮整個動態(tài)測試系統(tǒng)是一個實時的動態(tài)測試過程,如果數(shù)據(jù)的實時性達(dá)不到要求會影響整個測試過程,甚至使整項測試失敗,所以在選擇校正算法時要考慮其復(fù)雜性及計算量的大小,有些算法精度較高但其計算量大,實現(xiàn)起來比較復(fù)雜,并不適合本系統(tǒng)應(yīng)用,如BP人工神經(jīng)網(wǎng)絡(luò)和函數(shù)逼近算法等。為此必須尋找一種既滿足系統(tǒng)誤差要求、計算量又小的方法對其進(jìn)行校正。

          設(shè)實際物理量y”與微處理器獲得的數(shù)字量戈之差為δ,即8=y-x,x與δ間的關(guān)系曲線(虛擬曲線)如圖3所示。xi與xi+1為通過高精度萬用表實際標(biāo)定的點,其對應(yīng)的誤差分別為δi和δi+1,Xa為介于xi與Xi+1之間的某次采樣值,該點對應(yīng)的實際誤差為δa,在滿足系統(tǒng)誤差要求的條件下如何通過簡便的方法獲得δa的近似值δ”是該系統(tǒng)進(jìn)行非線性誤差標(biāo)定的初衷。如圖3所示,以標(biāo)定的相鄰兩點做回歸直線來代替該區(qū)間上的曲線是最簡單的方法,在該曲線連續(xù)的條件

          點擊放大圖片

          點擊放大圖片

          圖3數(shù)字量與其對應(yīng)誤差關(guān)系曲線

          進(jìn)行系統(tǒng)標(biāo)定及校準(zhǔn)的步驟如下:

          ①根據(jù)實際信號范圍,將待采集信號的電壓范圍分成N段后計算出應(yīng)該標(biāo)定的點;

          ②采用高精度低波紋的穩(wěn)壓源和精密電位器調(diào)出標(biāo)定點電壓的近似值后接入調(diào)理電路輸入端;

          ③用高精度萬用表測量標(biāo)定點的實際值,同時取A/D轉(zhuǎn)換100次數(shù)據(jù)的平均值代表該點A/D的采樣值;

          ④將A/D采樣換算值和真實值與A/D采樣換算值之差分別填寫到相應(yīng)的表格中;

          點擊放大圖片

          4 CAN總線通信設(shè)計

          4.1 系統(tǒng)中CAN總線結(jié)構(gòu)

          數(shù)據(jù)采集系統(tǒng)是整個動態(tài)測試系統(tǒng)中的一個分系統(tǒng),同時動態(tài)測試系統(tǒng)中還有其他分系統(tǒng),各個系統(tǒng)之間要進(jìn)行實時通信。所以在選擇系統(tǒng)間傳輸總線的時候要考慮各系統(tǒng)的組網(wǎng)、數(shù)據(jù)傳輸速率以及總線的抗干擾性等問題。USB是一種高速的數(shù)據(jù)傳輸方式,但其組網(wǎng)困難、通信協(xié)議復(fù)雜,使得其在工業(yè)控制當(dāng)中應(yīng)用并不成熟。

          CAN總線是一種支持分布式控制和實時控制的串行通信網(wǎng)絡(luò),它適用于工業(yè)控制、汽車電子等方面,具有通信速率高、抗干擾性強、接口靈活、性價比高等優(yōu)點,是應(yīng)用最成功的現(xiàn)場總線之一。對于本系統(tǒng)選用CAN總線建立通信網(wǎng)絡(luò)無疑是較好的選擇。

          IPC2292中自帶CAN控制器,為了增強CAN總線的抗干擾性,在數(shù)據(jù)采集系統(tǒng)節(jié)點上增加一個CTM1050T高速CAN隔離收發(fā)器,該芯片具有DC2500V的隔離功能及ESD保護(hù)作用,硬件連接如圖4所示。

          CAN控制器在硬件上實現(xiàn)了CAN物理層和數(shù)據(jù)鏈路層的大部分功能,用戶只需對CAN控制器進(jìn)行正確初始化,并對總線上的數(shù)據(jù)進(jìn)行收發(fā)操作即可實現(xiàn)不同節(jié)點間的通信;CAN總線支持多主節(jié)點,節(jié)點之間通過總線仲裁的方式獲得總線的控制權(quán),其完善的處理機制保證了其在惡劣環(huán)境下數(shù)據(jù)傳輸?shù)目煽啃浴?P align=center>點擊放大圖片

          圖4 IPC2292組網(wǎng)詳細(xì)接線

          4.2 CAN通信軟件設(shè)計

          要實現(xiàn)CAN的正常通信則必須按照其通信協(xié)議嚴(yán)格規(guī)范設(shè)計程序。完成傳輸層有關(guān)功能,包括幀控制、總線仲裁、消息過濾、出錯警告及故障隔離等。需要完成以下幾個方面:

          ①CAN控制器初始化。CAN控制器的初始化主要包括設(shè)置波特率寄存器、錯誤警告寄存器、中斷寄存器等,只有正確配置好這些寄存器,CAN控制器才能工作在正常的狀態(tài)下。要使CAN控制器對接收到的報文具有全局驗收過濾的功能,還必須對驗收過濾器進(jìn)行設(shè)置,建立標(biāo)識符LUT表格填寫到相應(yīng)的RAM中。值得注意的是,在完成這些配置之前應(yīng)先將控制器進(jìn)行軟件復(fù)位,并對CAN控制器進(jìn)行硬件使能、對CAN的引腳進(jìn)行正確配置。CAN的初始化是在主程序中完成,其流程如圖5所示

          點擊放大圖片

          圖5 CAN初始化流程

          ②發(fā)送報文。在完成CAN控制器的初始化之后就可以進(jìn)行報文發(fā)送,本系統(tǒng)為每個信號通道分配一個標(biāo)識符,A/D采集得到的數(shù)據(jù)通過誤差標(biāo)定后被寫入到事先分配好的內(nèi)存緩沖區(qū)中,同時查看控制器的3個發(fā)送郵箱,并把緩沖區(qū)數(shù)據(jù)寫入到判斷為空的郵箱數(shù)據(jù)寄存器中,添加該幀數(shù)據(jù)的標(biāo)識碼、幀格式、數(shù)據(jù)長度等信息后啟動發(fā)送命令,當(dāng)該控制器得到總線控制權(quán)時就會把數(shù)據(jù)發(fā)送到總線上。

          ③接收報文。當(dāng)CAN控制器的接收端接收到一個完整的標(biāo)識符時,它將通知驗收過濾器搜索RAM中的表格,以決定接收或放棄這一幀信息。CAN控制器若采用中斷的方式接收總線上的報文,在報文通過驗收過濾時,CAN控制器將產(chǎn)生接收中斷,由CAN接收中斷服務(wù)程序完成對該報文的讀取。

          5 系統(tǒng)軟件結(jié)構(gòu)設(shè)計

          系統(tǒng)上電后,待數(shù)據(jù)采集系統(tǒng)完成各模塊的初始化后,下位機的控制權(quán)將交給上位機。上位機首先命令數(shù)據(jù)采集系統(tǒng)進(jìn)行自檢,查看其能否正常工作以及通信是否正常。自檢完成之后,上位機根據(jù)測試項目的要求來對某些傳感器、發(fā)動機電子控制單元輸出信號和電源信號進(jìn)行循環(huán)采樣,同時數(shù)據(jù)采集系統(tǒng)將根據(jù)上位機命令對某些信號進(jìn)行立即采樣,或執(zhí)行其他操作。主程序的流程圖如圖6所示。



          評論


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