近些年來(lái),隨著軍事科學(xué)技術(shù)的發(fā)展,武器裝備的結(jié)構(gòu)越來(lái)越復(fù)雜。為保證武器裝備系統(tǒng)在使用過(guò)程中的安全性和可靠性,要求對(duì)武器裝備進(jìn)行以性能和故障檢測(cè)為主的技術(shù)保障,不僅要能實(shí)時(shí)、快速、精確地對(duì)多種參數(shù)進(jìn)行測(cè)試,而且要實(shí)時(shí)地完成大量的數(shù)據(jù)和信息處理。動(dòng)態(tài)測(cè)試系統(tǒng)所采取的技術(shù)途徑是測(cè)試成本可以承受的,對(duì)于掠海飛行導(dǎo)彈以及戰(zhàn)略導(dǎo)彈再入大氣層過(guò)程對(duì)常規(guī)的遙測(cè)系統(tǒng)在傳輸信息上是無(wú)法實(shí)現(xiàn)的,這就形成了對(duì)動(dòng)態(tài)測(cè)試系統(tǒng)的特別需求。因此測(cè)試系統(tǒng)在不斷地發(fā)展以滿足現(xiàn)代武器裝備發(fā)展的要求。它包括獲取信息、傳輸信息、再現(xiàn)信息等。
動(dòng)態(tài)參數(shù)采集系統(tǒng)常放置于被測(cè)體內(nèi),隨被測(cè)體作高速運(yùn)動(dòng),要求有極高的可靠性設(shè)計(jì)和能對(duì)規(guī)定參數(shù)的實(shí)時(shí)采集,為及時(shí)查找被測(cè)物體在運(yùn)作中可能發(fā)生故障的原因,提供有效的測(cè)試手段,為產(chǎn)品設(shè)計(jì)與問(wèn)題故障分析提供依據(jù)。
2 系統(tǒng)設(shè)計(jì)
系統(tǒng)采用兩組并行的采集系統(tǒng),分別采用兩種不同的采樣頻率對(duì)3路速變信號(hào)和16路緩變信號(hào)進(jìn)行采樣,并且分別將采集數(shù)據(jù)存放在各自的存儲(chǔ)器中,兩套采集系統(tǒng)在統(tǒng)一的啟動(dòng)電路和控制電路的協(xié)調(diào)下,完成對(duì)規(guī)定信號(hào)的采集。對(duì)三路速變信號(hào)采用單路83.33KHz的采樣率,數(shù)據(jù)存儲(chǔ)器采用16片單片容量為512K的靜態(tài)存儲(chǔ)器,記錄時(shí)間為33.55秒;對(duì)16路緩變信號(hào)采用單路976.5Hz的采樣率,用單片容量為512K靜態(tài)存儲(chǔ)器存儲(chǔ)數(shù)據(jù),記錄時(shí)間為33.55秒。
圖1是采集系統(tǒng)總體設(shè)計(jì)框圖,其工作過(guò)程為:系統(tǒng)上電后,處于低功耗的待觸發(fā)狀態(tài)。當(dāng)啟動(dòng)電路檢測(cè)到有效的啟動(dòng)信號(hào)后,其它電路的電源接通,時(shí)基電路產(chǎn)生系統(tǒng)的基本時(shí)鐘,供速變通道和緩變通道產(chǎn)生讀寫(xiě)信號(hào)和地址推動(dòng)信號(hào);在時(shí)鐘1和時(shí)鐘2的統(tǒng)一協(xié)調(diào)下,三路速變信號(hào)和十六路緩變信號(hào)通過(guò)輸入適配網(wǎng)絡(luò),依次到三路選一和十六選一電路,然后,分別進(jìn)入A/D轉(zhuǎn)換電路進(jìn)行數(shù)據(jù)采集,并分別將采集數(shù)據(jù)存入數(shù)據(jù)存儲(chǔ)器一和數(shù)據(jù)存儲(chǔ)器二。當(dāng)達(dá)到設(shè)定的采集時(shí)間后停止記錄,同時(shí)使系統(tǒng)處于低功耗的數(shù)據(jù)保持狀態(tài),此時(shí),可通過(guò)計(jì)算機(jī)并行接口讀取采集系統(tǒng)的數(shù)據(jù)。
2.1 啟動(dòng)電路設(shè)計(jì)
啟動(dòng)電路完成采集電路的可靠啟動(dòng),具有自動(dòng)判別有效啟動(dòng)信號(hào)的能力,能有效防止誤觸發(fā)。在系統(tǒng)電源接通后,系統(tǒng)處于低功耗待觸發(fā)狀態(tài),系統(tǒng)功耗較小,系統(tǒng)可以完成長(zhǎng)時(shí)間的等待狀態(tài)。在此狀態(tài)下,啟動(dòng)電路對(duì)啟動(dòng)線的信號(hào)進(jìn)行判別,當(dāng)啟動(dòng)信號(hào)的電平由低變?yōu)楦?,并且持續(xù)時(shí)間大于規(guī)定時(shí)間,啟動(dòng)電路通過(guò)記錄決策電路啟動(dòng)采集系統(tǒng)開(kāi)始數(shù)據(jù)采集,記錄決策電路原理如圖2所示,5V為系統(tǒng)自帶電池供電,VCC為A/D變換電路及其他采集數(shù)據(jù)電路的供電電壓,系統(tǒng)利用如圖所示的決策電路控制VCC的供電,保證系統(tǒng)可靠的觸發(fā),本系統(tǒng)可保證20V以下不觸發(fā)。D觸發(fā)器的1腳和13 腳的輸出狀態(tài)轉(zhuǎn)換圖如圖3所示,依圖可見(jiàn)記錄決策電路有效防止了誤觸發(fā)。
2.2 接口電路設(shè)計(jì)
利用計(jì)算機(jī)并行接口工作在ECP模式下,其控制端口提供的Auto Linefeed、Strobe和Select Printer 3根控制線,進(jìn)行合理的組合,產(chǎn)生對(duì)速變、緩變信號(hào)的選擇信號(hào)SelDat和讀取數(shù)據(jù)時(shí)序信號(hào)RD,并產(chǎn)生系統(tǒng)復(fù)位信號(hào)RESET。SelDat信號(hào)輸出到中心控制邏輯,產(chǎn)生存儲(chǔ)器的片選信號(hào),控制讀取速變信號(hào)或緩變信號(hào);讀信號(hào)RD和復(fù)位信號(hào)RESET控制地址發(fā)生電路產(chǎn)生讀取存儲(chǔ)器所需的地址;RD使能存儲(chǔ)器,通過(guò)并行接口的數(shù)據(jù)端口將存儲(chǔ)器中的采集數(shù)據(jù)讀到計(jì)算機(jī)。圖4為并行接口ECP模式下接口電路連接框圖。
接口電路讀取緩變數(shù)據(jù)時(shí)序圖如圖5所示。
3 系統(tǒng)軟件的設(shè)計(jì)
并行接口應(yīng)用系統(tǒng)軟件設(shè)計(jì)包括主機(jī)操作系統(tǒng)上的客戶(hù)驅(qū)動(dòng)程序和主機(jī)應(yīng)用程序??蛻?hù)驅(qū)動(dòng)程序?qū)嶋H上是一系列控制硬件設(shè)備的函數(shù),是操作系統(tǒng)中控制和連接硬件的關(guān)鍵模塊。主機(jī)應(yīng)用軟件通過(guò)客戶(hù)驅(qū)動(dòng)程序與系統(tǒng)外設(shè)進(jìn)行通信,其主要任務(wù)是將采集進(jìn)來(lái)的數(shù)據(jù)流,根據(jù)所需處理功能的要求來(lái)完成各種基于Windows 程序的處理。
3.1 驅(qū)動(dòng)程序設(shè)計(jì)
DriverStudio中的DriverWorks為WDM驅(qū)動(dòng)程序提供了一個(gè)完整的框架,我們利用其 DriverWizard生成驅(qū)動(dòng)程序框架,然后添加各功能函數(shù)。在驅(qū)動(dòng)程序*.cpp中,用戶(hù)只需要自己填寫(xiě)下面函數(shù):在由Drivestudio生成的*Device.cpp中的*_Handler(I)函數(shù)中填寫(xiě)應(yīng)用程序消息,如(READ_DATA,CTL_RTYPE)等,或?qū)?yīng)用程序的值寫(xiě)給端口或把端口值由驅(qū)動(dòng)程序返回給應(yīng)用程序。在*_Handler(I) 中填寫(xiě)應(yīng)用程序變量應(yīng)在*Device.h中先定義,然后在*Device.cpp中的消息處理中填寫(xiě)產(chǎn)生此消息后自己如何處理的代碼。
下面是我們驅(qū)動(dòng)程序中類(lèi)實(shí)例:對(duì)存儲(chǔ)器的讀操作功能函數(shù)。
NTSTATUS Drv_NUCDevice::DRV_NUC_READ_DATA_Handler(KIrp I)
{
NTSTATUS status = STATUS_SUCCESS;
t << Entering Drv_NUCDevice::DRV_NUC_READ_DATA_Handler, << I << EOL;
unsigned char *pData;
unsigned char tmp, tmp_in1, tmp_in2;
int para_base_address = 0x378; //并行接口地址
int i, j;
pData = (unsigned char*)I.IoctlBuffer();
tmp = _inp(para_base_address+2);
tmp_in1 = tmp & 0xfd;
tmp_in2 = tmp | 0x02;
for(j = 0; j < 1024; j++) //讀取1024個(gè)字節(jié)數(shù)據(jù)
{
_outp(para_base_address+2, tmp_in2); //向并行接口發(fā)控制命令
pData[j] = _inp(para_base_address); //讀取并行接口數(shù)據(jù)到計(jì)算機(jī)
_outp(para_base_address+2, tmp_in1);
}
I.Information() = 1024;
return status;
}
3.2 用戶(hù)程序設(shè)計(jì)
主機(jī)應(yīng)用程序使用Visual Basic6.0編譯環(huán)境,主要是實(shí)現(xiàn)調(diào)用*.DLL中的函數(shù),讀取采集系統(tǒng)中的數(shù)據(jù)到計(jì)算機(jī),對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ)、顯示處理結(jié)構(gòu)及向采集系統(tǒng)發(fā)送控制命令等。
而在編寫(xiě)用戶(hù)程序時(shí),首先要建立與外設(shè)的連接,然后才能實(shí)施數(shù)據(jù)的傳輸。本設(shè)計(jì)使用Visual C++6.0編譯環(huán)境中的API函數(shù)編譯*.DLL連接程序文件:首先查找設(shè)備,打開(kāi)設(shè)備的句柄,然后進(jìn)行控制和讀操作,最后關(guān)閉設(shè)備句柄。程序主要用到兩個(gè)API函數(shù)CreatFile()和DeviceControl()。下面是一個(gè)讀取外設(shè)數(shù)據(jù)的實(shí)例:
DNUCEXPORT int CALLBACK ReadData(unsigned char *pData)
{
ULONG nOutput;
DeviceIoControl(handle,
DRV_NUC_READ_DATA,
NULL,
0,
pData,
1024,
&nOutput,
NULL);
return 1;
}
4 結(jié)束語(yǔ)
本文所設(shè)計(jì)的采集系統(tǒng)已經(jīng)在工程上應(yīng)用,為及時(shí)查找被測(cè)物體工作過(guò)程中可能發(fā)生故障的原因,提供有效的測(cè)試手段,為產(chǎn)品設(shè)計(jì)與問(wèn)題故障分析提供依據(jù)。
參考文獻(xiàn)
[1] 張文棟. 存儲(chǔ)測(cè)試系統(tǒng)的設(shè)計(jì)理論及其在導(dǎo)彈動(dòng)態(tài)數(shù)據(jù)測(cè)試中的實(shí)現(xiàn)[D]. 北京理工大學(xué),1995,17-22.
[2] 劉強(qiáng),謝川,楊文通.12位高速數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì).微計(jì)算機(jī)信息,2006,23.
[3] Dhananjay.V.Gadre. 并行端口編程. 中國(guó)電力出版社,2000,54-63.
[4] 武安河,邰銘,于洪濤. Windows 2000/XP WDM 設(shè)備驅(qū)動(dòng)程序開(kāi)發(fā).北京:電子工業(yè)出版社,2000.
文章創(chuàng)新點(diǎn):本文介紹了基于并行接口的數(shù)據(jù)采集系統(tǒng),具有自動(dòng)判別有效啟動(dòng)信號(hào)能力的啟動(dòng)電路,有效防止了誤觸發(fā)造成的損失,提高了系統(tǒng)的可靠性,并以?xún)煞N不同的采樣率對(duì)規(guī)定要求的信號(hào)進(jìn)行了采樣,采用計(jì)算機(jī)并行接口將采樣數(shù)據(jù)讀到計(jì)算機(jī)。