国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于PXI總線數(shù)據(jù)采集系統(tǒng)的設(shè)計

2016-10-14 06:44:33苗忠海徐志躍
電子設(shè)計工程 2016年12期
關(guān)鍵詞:板卡驅(qū)動程序總線

苗忠海,徐志躍

(北京航空航天大學(xué)北京100191)

基于PXI總線數(shù)據(jù)采集系統(tǒng)的設(shè)計

苗忠海,徐志躍

(北京航空航天大學(xué)北京100191)

本文介紹一種通用的數(shù)據(jù)采集系統(tǒng)來對壓力,溫度等進(jìn)行數(shù)據(jù)采集和處理。文中包含了采集系統(tǒng)的硬件設(shè)計和軟件設(shè)計兩部分,其中硬件部分包括PXI采集板卡,軟件部分包括采集板卡WDM驅(qū)動,基于C#的上位機(jī)界面以及與MATLAB的混合編程。實(shí)際應(yīng)用表明,該系統(tǒng)具有操作簡便、測試準(zhǔn)確的特點(diǎn),達(dá)到了設(shè)計要求。

數(shù)據(jù)采集;PXI;WDM驅(qū)動;混合編程

數(shù)據(jù)采集與處理是計算機(jī)應(yīng)用的重要分支,主要研究的是數(shù)據(jù)的采集、存儲和處理。在工業(yè)生產(chǎn)、科研及醫(yī)療等領(lǐng)域經(jīng)常需要針對一些現(xiàn)象來進(jìn)行處理,比如在工業(yè)生產(chǎn)中對壓力,溫度等進(jìn)行監(jiān)測控制,在科研方面對某些現(xiàn)象進(jìn)行系統(tǒng)分析,提取關(guān)鍵因素從而進(jìn)行系統(tǒng)建模。而數(shù)據(jù)采集系統(tǒng)在里面具有很大重要性。對于簡單的數(shù)據(jù)采集系統(tǒng)一般采用單片機(jī)或者ARM等微控制器加上外部模擬電路來實(shí)現(xiàn),但對于復(fù)雜的采集系統(tǒng),需要對數(shù)據(jù)進(jìn)行實(shí)時傳輸和存儲并且需要復(fù)雜處理的情況,是不能夠滿足的。計算機(jī)在后續(xù)的數(shù)據(jù)處理方面擁有絕對的優(yōu)勢。因此基于PXI的計算機(jī)數(shù)據(jù)采集系統(tǒng)具有廣泛的應(yīng)用性。利用PC機(jī)作為數(shù)據(jù)采集的平臺,通過PXI數(shù)據(jù)總線將采集的數(shù)據(jù)傳輸?shù)絇C機(jī)內(nèi)存中,然后進(jìn)行數(shù)據(jù)處理。

1 總體設(shè)計

本文將基于PXI總線設(shè)計一種數(shù)據(jù)采集系統(tǒng)。系統(tǒng)結(jié)構(gòu)圖如圖1所示。主要包括PXI數(shù)據(jù)采集卡的板卡設(shè)計,板卡驅(qū)動開發(fā),上位機(jī)軟件編程以及與MATLAB的混合編程。

2 系統(tǒng)硬件設(shè)計

基于PXI數(shù)據(jù)采集卡主要分為5部分:PXI總線接口芯片PCI 9054、FPGA、數(shù)字量輸出調(diào)理電路、AD采集電路和輸入/輸出連接器。其原理框圖如圖2所示。

其板卡實(shí)物圖如圖3所示。

為了實(shí)現(xiàn)板卡與主機(jī)物理連接,板卡設(shè)計成PXI總線連接器,通過與主機(jī)的PXI總線插座連接。圖中的FPGA芯片通過對主機(jī)傳過來的上位機(jī)指令進(jìn)行解析譯碼,配合上位機(jī)的讀寫時序,將設(shè)計的數(shù)字量傳至底層的硬件,或者將下層采集的AD值傳給主機(jī)。底層的AD采集硬件主要包括多路選擇器,量程設(shè)置電路,差分/單端選擇電路和AD轉(zhuǎn)換電路。AD采集的工作流程為將采集到的數(shù)據(jù)先緩存至FPGA里面的FIFO中,判斷是否滿足觸發(fā)條件,然后進(jìn)行觸發(fā)上位機(jī)中斷,此時上位機(jī)讀取轉(zhuǎn)換的AD采集數(shù)據(jù)[1]。

雖然主機(jī)與板卡進(jìn)行了物理連接,但要進(jìn)行通信需要一定的邏輯電路來實(shí)現(xiàn)接口。采用PLX公司的PCI總線接口芯片(PCI9054)來實(shí)現(xiàn)接口,配合時序、邏輯電路,以PCI9054為核心來實(shí)現(xiàn)Local總線與PXI總線的接口[2]。

圖1 系統(tǒng)總體結(jié)構(gòu)圖

3 軟件設(shè)計

3.1驅(qū)動程序的編寫

在Windows操作系統(tǒng)下,一般的應(yīng)用程序不能直接操作I/O端口,往往通過驅(qū)動程序?qū)?shù)據(jù)讀至計算機(jī)的內(nèi)存中,然后再進(jìn)行數(shù)據(jù)操作。因此驅(qū)動程序在硬件和上層應(yīng)用程序之間具有紐帶作用。然而如何去設(shè)計驅(qū)動程序,不同的硬件具有不同的驅(qū)動程序,特別是不同類型硬件更是有不同的方式[3],比如USB驅(qū)動,PCI驅(qū)動等不同種類的驅(qū)動開發(fā)方法。所以在設(shè)計驅(qū)動前要明確以下步驟:

1)寄存器:設(shè)備具有寄存器的數(shù)量,功能,以及何種類型(控制、數(shù)據(jù)、狀態(tài));

2)設(shè)備錯誤和狀態(tài):設(shè)備具有哪些狀態(tài)和錯誤信號,最后需要反饋給用戶;

3)中斷行為:確定設(shè)備所使用的中斷數(shù)量和觸發(fā)條件;

4)數(shù)據(jù)傳輸機(jī)制:數(shù)據(jù)傳輸方式基本包含I/O傳輸和DMA傳輸;

5)操作流程和注意事項(xiàng)。

驅(qū)動類型為WDM驅(qū)動程序,它編寫規(guī)范,源自Windows NT驅(qū)動程序體系,具有即插即用、電源管理等功能。開發(fā)所需要的環(huán)境有微軟公司提供的DDK(Device Driver Kits),開發(fā)軟件選擇Driver Studio+VC6.0。

圖2 數(shù)據(jù)采集板卡原理圖

圖3 數(shù)據(jù)采集板卡實(shí)物圖

PXI板卡驅(qū)動開發(fā)流程:

①首先參照DDK的幫助文檔等相關(guān)資料,實(shí)現(xiàn)PCI驅(qū)動程序的框架,設(shè)計一個虛擬的驅(qū)動程序,不對真實(shí)硬件操作,初步能夠?qū)崿F(xiàn)在操作系統(tǒng)上進(jìn)行安裝和卸載[4]。

②同樣編寫驅(qū)動程序與應(yīng)用程序的接口,能夠完成基本的的虛擬設(shè)備操作。不操作硬件,主要驗(yàn)證驅(qū)動程序與應(yīng)用程序通信的可行性。

③將設(shè)計的板卡插入至機(jī)箱,驗(yàn)證所編寫的驅(qū)動程序的正確性,此時只完成了驅(qū)動的基本操作,如簡單的讀寫寄存器,突發(fā)傳輸方式讀寫板載FIFO,同時驗(yàn)證FPGA邏輯程序的正確性。

④驗(yàn)證中斷服務(wù)程序和延遲過程調(diào)用例程的正確性。

⑤去掉開發(fā)板卡,直接對自主設(shè)計的PCI板卡進(jìn)行驗(yàn)證。

⑥完善整個驅(qū)動程序,實(shí)現(xiàn)與應(yīng)用程序的接口部分,并進(jìn)行封裝。

3.2上層界面設(shè)計

系統(tǒng)的上位機(jī)采用C#語言進(jìn)行界面開發(fā),如圖4所示。C#具有縮短軟件開發(fā)周期,入門簡單,移植性優(yōu)秀的特點(diǎn),支持.NET技術(shù)增加了軟件的可移植性和可靠性。C#作為微軟公司在2000年發(fā)布的全新的面向?qū)ο笳Z言,吸取了之前的C,C++和JAVA的語言的優(yōu)點(diǎn),經(jīng)過這些年的使用更新,越來越占有編程軟件的市場份額,這也使它始終位于科技前沿,在現(xiàn)代企業(yè)計算環(huán)境里作為一種效率高,可用性強(qiáng)的高級編程語言。C#融合了當(dāng)今世界上使用最為廣泛的3種程序設(shè)計語言,還增加自己獨(dú)有的新技術(shù),為程序設(shè)計提供了全新的開發(fā)設(shè)計平臺。

但C#不能直接去操作硬件,在開發(fā)完驅(qū)動后,生成對應(yīng)的DLL庫,通過對庫進(jìn)行封裝,通過引用DLL的方式去操作板卡[5]。對相應(yīng)函數(shù)進(jìn)行說明。

①初始化模擬采集任務(wù)CPXI7040Card(uint dev)

在該方法中,首先通過DAQmxCreateTask()函數(shù)創(chuàng)建模擬輸入任務(wù),通過DAQmxCreateAIChan()函數(shù)創(chuàng)建模擬輸入通道。

②設(shè)置板卡參數(shù)AIConfig()

與數(shù)字輸出不同的是模擬采集任務(wù)需要配置任務(wù)參數(shù),使用板卡驅(qū)動的API函數(shù)DAQmxCfgSampClkTiming()可以設(shè)置采樣率、采集觸發(fā)方式、采樣模式、每通道采樣點(diǎn)數(shù)。分別設(shè)置為10000S/s,上升沿觸發(fā)、連續(xù)采樣、每通道采集100個點(diǎn)。

③啟動模擬采集任務(wù)AIStart()

圖4 上層界面設(shè)計

啟動模擬采集任務(wù),通過調(diào)用板卡驅(qū)動的API函數(shù)DAQmxStartTask()來啟動數(shù)據(jù)采集。這時板卡不斷地對模擬信號進(jìn)行采集。如果想獲得采集到的數(shù)據(jù),則需要在啟動數(shù)據(jù)采集前調(diào)用驅(qū)動API提供的注冊函數(shù)DAQmxRegisterEveryNSamplesEven()注冊回調(diào)函數(shù),并在回調(diào)函數(shù)中調(diào)用DAQmxReadAnalogF64()讀取數(shù)據(jù)即可。

④停止模擬采集任務(wù)AIStop()

在該方法中通過板卡驅(qū)動API的DAQmxClearTask()來停止采集任務(wù),清理采集通道。

3.3C#與MATLAB混合編程

MATLAB在算法和數(shù)學(xué)計算方面具有很大的優(yōu)勢,可以處理各種數(shù)據(jù),然而卻沒有比較好的界面去顯示,同時C#具有很好的界面,但作為C家族的成員,在計算方面一般,不能進(jìn)行復(fù)雜的運(yùn)算,因此將兩者結(jié)合充分發(fā)揮他們的有點(diǎn),彌補(bǔ)他們的缺點(diǎn)是很好的數(shù)據(jù)處理方法。

MATLAB軟件提供了多種方法來和供C#使用,其中還可以利用MATLAB自身的編譯工具(MATLAB COM Builder)將M文件生成COM組件,然后再C#可以添加引用里調(diào)用生成的COM組件[6]。

1)環(huán)境配置

在開發(fā)之前要搭載好開發(fā)環(huán)境,需要安裝的軟件有:

①M(fèi)ATLAB 2010b;

②MCR(Matlab Compile Runtime)。

③Microsoft Visual Studio 2008;

其中MCR在安裝目錄下可以找到。

2)設(shè)計COM組件

首先編寫MATLAB的M文件,M文件里包含了數(shù)據(jù)處理的方法函數(shù),然后在MATLAB菜單欄里新建Deployment Project。在Type類型里選擇.net assembly。選擇好名字點(diǎn)擊下一步,在Add Class選項(xiàng)添加M文件,點(diǎn)擊編譯等待一段時間即可生成對應(yīng)DLL文件。

3)混合編程

在C#里引用生成的DLL文件,從而對MATLAB生成的算法進(jìn)行使用。首先新建一個C#工程,在引用里添加生成的DLL文件,同時,由于MATLAB和C#有不同的數(shù)據(jù)類型,因此在使用時要給兩者提供一個翻譯機(jī)制。因此我們還需要引用MATLAB提供的.NET支持的DLL庫(MWArray.dll),同時在文件中引用他們。最后在程序中可以使用M文件的功能函數(shù)進(jìn)行數(shù)據(jù)處理了。

4 結(jié)論

利用模擬信號技術(shù)和數(shù)字信號技術(shù),基于計算機(jī)的PXI總線數(shù)據(jù)采集系統(tǒng)能夠有效地解決科研,工業(yè)等領(lǐng)域的數(shù)據(jù)采集問題。擁有良好的界面且具有處理復(fù)雜數(shù)據(jù)的能力,是科研人員有益的工具。在溫度監(jiān)控,壓力測試等數(shù)據(jù)采集領(lǐng)域具有重要的應(yīng)用。

[1]韓喜春.計算機(jī)總線技術(shù)應(yīng)用實(shí)例[M].北京:化學(xué)工業(yè)出版社,2010.

[2]李貴山,陳金鵬.PCI局部總線及其應(yīng)用[M].西安:西安電子科技大學(xué)出版社,2003.

[3]尹勇,李宇.PCI總線設(shè)備開發(fā)寶典[M].北京:北京航空航天大學(xué)出版社,2005.

[4]武安河.Windows 2000/XP WDM設(shè)備驅(qū)動程序開發(fā)[M],北京:電子工業(yè)出版社,2003.

[5]李煥英.數(shù)據(jù)采集系統(tǒng)的研究與設(shè)計[D].南京理工大學(xué),2012.

[6]張亮.MATLAB與C/C++混合編程[M].北京:人民郵電出版社,2008.

Design of data acquisition system based on PXI bus

MIAO Zhong-hai,XU Zhi-yue
(Bei Hang University,Beijing 100191,China)

In order to collect and deal with the data,such as pressure and temperature,a general-purpose data acquisition system is designed in this paper.It contains the hardware system and the software system.The hardware part introduces the design of the PXI Card.what's more,the software part introduces the Card WDM driver,the mixed programming of MATLAB and C#.The experiment and application show that this test system has good performance,and achieve the design requirement.

data collection;PXI;WDM driver;hybrid programming

TN919

A

1674-6236(2016)12-0067-03

2015-06-29稿件編號:201506247

苗忠海(1991—),男,山東日照人,碩士。研究方向:WDM驅(qū)動開發(fā)、計算機(jī)測控。

猜你喜歡
板卡驅(qū)動程序總線
基于PCI Express總線的xHC與FPGA的直接通信
基于PCI9054的多總線通信板卡的研制
基于FPGA的多通道模擬量采集/輸出PCI板卡的研制
機(jī)載飛控1553B總線轉(zhuǎn)以太網(wǎng)總線設(shè)計
一種基于光纖數(shù)據(jù)傳輸?shù)亩喟蹇ㄜ浖绦驘龑懠夹g(shù)
多通道ARINC429總線檢查儀
一種通用模擬量及開關(guān)量信號采集板卡的設(shè)計
基于EtherCAT總線的ROV控制系統(tǒng)設(shè)計
河南科技(2014年16期)2014-02-27 14:13:22
驅(qū)動程序更新與推薦
驅(qū)動程序更新與推薦
岳普湖县| 喀喇沁旗| 崇州市| 平陆县| 永清县| 凤阳县| 页游| 陆良县| 焉耆| 安图县| 三明市| 理塘县| 额济纳旗| 津市市| 平乡县| 盱眙县| 内黄县| 岫岩| 涡阳县| 扎赉特旗| 宁阳县| 宜丰县| 阿鲁科尔沁旗| 衡南县| 乐安县| 高碑店市| 娱乐| 油尖旺区| 彭山县| 汉沽区| 岳阳市| 库尔勒市| 合江县| 承德市| 泰和县| 水富县| 广灵县| 抚远县| 邮箱| 板桥市| 房山区|