李廷軍1,張朝英2,邱麗波2,陳怡煥1
(1.海軍航空工程學(xué)院 山東煙臺(tái) 264001;2.煙臺(tái)市技術(shù)學(xué)院 山東煙臺(tái) 264000)
摘 要:介紹了一種高速、實(shí)時(shí)的數(shù)據(jù)采集系統(tǒng),重點(diǎn)介紹了該數(shù)據(jù)采集系統(tǒng)的軟件設(shè)計(jì)。
關(guān)鍵詞:高速;實(shí)時(shí);數(shù)據(jù)采集;VISA
本文介紹了一種數(shù)據(jù)采集系統(tǒng),他主要完成對(duì)某設(shè)備上交流電源、直流電源、模擬電壓、開關(guān)信號(hào)、脈沖信號(hào)等各種信號(hào)的采集工作。完成對(duì)上述信號(hào)的如下特征進(jìn)行紀(jì)錄:
。1)交流電源的電壓、頻率及相序,交流電源的供電時(shí)序;
。2)直流電源的電壓及供電時(shí)序;
(3)模擬信號(hào)的幅值及反映其變化規(guī)律的波形;
(4)開關(guān)信號(hào)的電平幅值及信號(hào)時(shí)序;
(5)脈沖信號(hào)的幅值、脈寬和周期、時(shí)序。
該數(shù)據(jù)采集系統(tǒng)總體上由硬件和軟件2部分組成,硬件是該系統(tǒng)的基礎(chǔ),他完成各種數(shù)據(jù)的采集;軟件是該系統(tǒng)的核心,他主要完成對(duì)各個(gè)硬件模塊的控制和調(diào)度,實(shí)現(xiàn)對(duì)數(shù)據(jù)的存儲(chǔ),并提供人機(jī)操作界面。
1 系統(tǒng)軟件結(jié)構(gòu)
在該數(shù)據(jù)采集系統(tǒng)的開發(fā)過程中,軟件扮演著極其重要的角色。從功能上講,他的涵蓋面很廣,從硬件設(shè)備的驅(qū)動(dòng)程序到開發(fā)整套系統(tǒng)所需的各個(gè)開發(fā)環(huán)節(jié)在內(nèi),他們的層次性很清晰。具體結(jié)構(gòu)如圖1所示。
。1)VISA管理程序及接口軟件
VISA(Virtual Instrument Software Architecture)是一個(gè)獨(dú)立于硬件設(shè)備、接口、操作系統(tǒng)、編程語言的I/O控制庫(kù),處理測(cè)控計(jì)算機(jī)與儀器間物理連接的通訊信息。通過VISA,由不同硬件接口(如:GPIB,VXI或RS232等)連接的儀器設(shè)備可以集成到一個(gè)系統(tǒng)中,由一個(gè)軟件、一套命令函數(shù)完成所有儀器設(shè)備的控制。
。2)測(cè)試資源層
測(cè)試資源層主要由測(cè)試儀器驅(qū)動(dòng)軟件組成,系統(tǒng)所選用的貨架成品測(cè)試儀器無論是VXI總線還是GPIB總線儀器,每臺(tái)儀器均對(duì)應(yīng)一個(gè)測(cè)試驅(qū)動(dòng)軟件,該軟件應(yīng)按VISA要求編寫,軟件功能函數(shù)則完成對(duì)儀器測(cè)試功能的控制和測(cè)試數(shù)據(jù)的讀寫。
該部分包含有VXI-MXI-II驅(qū)動(dòng)程序,HPE1413驅(qū)動(dòng)程序和HP E1459驅(qū)動(dòng)程序。各個(gè)驅(qū)動(dòng)程序負(fù)責(zé)完成對(duì)相應(yīng)模塊的初始化和各種配置,并實(shí)現(xiàn)對(duì)各種數(shù)據(jù)的讀寫。該驅(qū)動(dòng)程序一般不單獨(dú)執(zhí)行,他是由執(zhí)行程序來調(diào)用。
。3)應(yīng)用開發(fā)層
用戶開發(fā)層是一個(gè)軟件開發(fā)平臺(tái),為了充分利用CVI和儀器之間的方便通訊和VC的強(qiáng)大功能及友好的人機(jī)界面。該軟件將利用CVI和VC共同開發(fā),他首先用CVI編制和儀器通訊的動(dòng)態(tài)鏈接庫(kù),在用VC編寫控制函數(shù),并調(diào)用CVI編制的動(dòng)態(tài)鏈接庫(kù)里的函數(shù)來從儀器上讀取數(shù)據(jù)。
(4)用戶應(yīng)用層
用戶應(yīng)用層是軟件系統(tǒng)的頂層,他實(shí)際上就是一個(gè)執(zhí)行程序,實(shí)現(xiàn)對(duì)各種儀器模塊的調(diào)度,包括初始化及各個(gè)模塊子系統(tǒng)的配置,最后實(shí)現(xiàn)對(duì)導(dǎo)彈上各種數(shù)據(jù)的同時(shí)讀取,并以波形的形式顯示出來,用來觀察各個(gè)信號(hào)的幅度大小、頻率大小、相位關(guān)系及各種時(shí)序關(guān)系。并把數(shù)據(jù)存儲(chǔ)在硬盤中,好在以后進(jìn)行數(shù)據(jù)回放。
2 采集軟件的設(shè)計(jì)
該程序設(shè)計(jì)最主要的部分就是數(shù)據(jù)采集軟件模塊的設(shè)計(jì),他的主要任務(wù)就是完成對(duì)數(shù)據(jù)的采集、波形的顯示、數(shù)據(jù)的存儲(chǔ)和數(shù)據(jù)的回放。由于要采集的數(shù)據(jù)量很大,有一百多路信號(hào),包括數(shù)字信號(hào)和模擬信號(hào)。而且采樣間隔也很短,為1 ms。當(dāng)采用單線程來完成所有的工作時(shí),難以滿足要求。所以該程序?qū)⒉捎枚嗑程來編程。另外,為了便于更好地管理采集回來的數(shù)據(jù),該程序?qū)?shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)里。
。1)數(shù)據(jù)的采集
首先把對(duì)儀器進(jìn)行配置和數(shù)據(jù)讀取的函數(shù)做成動(dòng)態(tài)鏈接庫(kù),其動(dòng)態(tài)鏈接庫(kù)里的函數(shù)主要有3個(gè):初始化函數(shù)、讀取數(shù)據(jù)的函數(shù)和關(guān)閉儀器的函數(shù)。然后在主程序中調(diào)用動(dòng)態(tài)鏈接庫(kù)里的函數(shù),首先要加載動(dòng)態(tài)鏈接庫(kù),然后獲取其函數(shù)的指針,利用其指針來調(diào)用函數(shù),來實(shí)現(xiàn)對(duì)儀器的操作。
。2)波形的顯示
數(shù)據(jù)的顯示有2種情況,一種是從HPE1459來的開關(guān)信號(hào),還有一種是從HPE1413來的模擬信號(hào),通過選擇,可以顯示他們一部分通道的波形,通過翻頁,可以選擇其他的通道進(jìn)行顯示。
。3)數(shù)據(jù)的存儲(chǔ)
數(shù)據(jù)的存儲(chǔ)就是把讀入內(nèi)存的數(shù)據(jù)通過ODBC存入數(shù)據(jù)庫(kù),由于該數(shù)據(jù)的結(jié)構(gòu)非常簡(jiǎn)單,只需建立一個(gè)表格就可以把他們之間的關(guān)系描述清楚。所以在進(jìn)行數(shù)據(jù)存盤之前用SQL先建立一個(gè)表格,然后在數(shù)據(jù)存盤時(shí)和這個(gè)表格建立連接,然后把讀取的數(shù)據(jù)存入該表格。
。4)數(shù)據(jù)的回放
他主要是把存放在數(shù)據(jù)庫(kù)里的數(shù)據(jù)以波形的形式顯示出來。本程序采用多文檔形式,當(dāng)回放時(shí),可以通過按下面板上的按鈕來顯示不同通道的波形。顯示的波形還可以進(jìn)行放大和縮小變換。
其中軟件工作的程序流程如圖2所示。
3 關(guān)鍵技術(shù)
為了滿足采集系統(tǒng)的試驗(yàn)要求,本軟件在開發(fā)過程中采用了3項(xiàng)關(guān)鍵技術(shù)。
。1)動(dòng)態(tài)鏈接庫(kù)(DLL)技術(shù)。
動(dòng)態(tài)鏈接庫(kù)是運(yùn)行時(shí)模塊,他是把程序編譯成二進(jìn)制文件,在運(yùn)行程序時(shí)才加進(jìn)來,這使得他與編程語言沒有關(guān)系。所以可以利用動(dòng)態(tài)鏈接庫(kù)把幾種編程語言結(jié)合起來編程,充分利用各種編程語言的優(yōu)點(diǎn)。該軟件就是通過動(dòng)態(tài)鏈接庫(kù),充分利用CVI容易和儀器進(jìn)行通訊的優(yōu)點(diǎn)和VC的友好界面及靈活的顯示功能。
(2)多媒體定時(shí)器(Multimedia Timer)。
為了提高Windows操作系統(tǒng)的定時(shí)精度以滿足對(duì)通道的讀取精度要求,提高實(shí)時(shí)顯示的刷新速度和軟件存儲(chǔ)的效率,采用Windows下提供的多媒體定時(shí)器,其定時(shí)分辨率(Resolution)最高為1 ms,遠(yuǎn)遠(yuǎn)高于Windows提供的默認(rèn)Timer的性能(55 ms)。
。3)多線程技術(shù)。
Win32是一種搶占式多任務(wù)操作系統(tǒng),他為每一個(gè)線程輪流分配時(shí)間段,讓線程在分配的時(shí)間段里運(yùn)行。每個(gè)進(jìn)程除了系統(tǒng)自動(dòng)生成的主線程外,還可以創(chuàng)建多個(gè)線程來協(xié)同完成指定的操作。利用多線程可以大大提高CPU的利用率。對(duì)于該應(yīng)用程序,由于要處理的數(shù)據(jù)量非常大,只有利用多線程才能滿足要求,才能保證數(shù)據(jù)不丟失。
(4)ODBC(開放數(shù)據(jù)庫(kù)互連)技術(shù)。
通過ODBC技術(shù)實(shí)現(xiàn)與數(shù)據(jù)庫(kù)的連接,也即采用SQL數(shù)據(jù)庫(kù)查詢語言,可以保證軟件的通用性,避免應(yīng)用程序隨著數(shù)據(jù)庫(kù)的改變而改變。另外,利用數(shù)據(jù)庫(kù)技術(shù),可以更方便地對(duì)數(shù)據(jù)進(jìn)行顯示,可以很方便地定位到某一段數(shù)據(jù)的顯示,也可以選擇任意的通道波形進(jìn)行顯示。
4 結(jié) 語
使用該數(shù)據(jù)采集系統(tǒng),可以快速地記錄和存儲(chǔ)大量的實(shí)時(shí)數(shù)據(jù),這對(duì)分析某設(shè)備的性能參數(shù)和工作狀態(tài)具有非常重要的作用。
參考文獻(xiàn)
[1] 陳光禹.VXI總線測(cè)試平臺(tái)技術(shù)[M].成都:電子科技大學(xué)出版社,1996.
[2] Agilent E1313A and Agilent E1413CHigh Speed Scanning A/DConverter,2000.
[3] Agilent E1459A/Z2404B64-ChannelIsolatedInput Interrupt Module User′s and SCPI Programming Manual,2000.
摘自 現(xiàn)代電子技術(shù)