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