1 引言 近些年來,隨著軍事科學技術的發展,武器裝備的結構越來越復雜。為保證武器裝備系統在使用過程中的安全性和可靠性,要求對武器裝備進行以性能和故障檢測為主的技術保障,不僅要能實時、快速、精確地對多種參數進行測試,而且要實時地完成大量的數據和信息處理。動態測試系統所采取的技術途徑是測試成本可以承受的,對于掠海飛行導彈以及戰略導彈再入大氣層過程對常規的遙測系統在傳輸信息上是無法實現的,這就形成了對動態測試系統的特別需求。因此測試系統在不斷地發展以滿足現代武器裝備發展的要求。它包括獲取信息、傳輸信息、再現信息等。 動態參數采集系統常放置于被測體內,隨被測體作高速運動,要求有極高的可靠性設計和能對規定參數的實時采集,為及時查找被測物體在運作中可能發生故障的原因,提供有效的測試手段,為產品設計與問題故障分析提供依據。 2 系統設計 系統采用兩組并行的采集系統,分別采用兩種不同的采樣頻率對3路速變信號和16路緩變信號進行采樣,并且分別將采集數據存放在各自的存儲器中,兩套采集系統在統一的啟動電路和控制電路的協調下,完成對規定信號的采集。對三路速變信號采用單路83.33KHz的采樣率,數據存儲器采用16片單片容量為512K的靜態存儲器,記錄時間為33.55秒;對16路緩變信號采用單路976.5Hz的采樣率,用單片容量為512K靜態存儲器存儲數據,記錄時間為33.55秒。 圖1是采集系統總體設計框圖,其工作過程為:系統上電后,處于低功耗的待觸發狀態。當啟動電路檢測到有效的啟動信號后,其它電路的電源接通,時基電路產生系統的基本時鐘,供速變通道和緩變通道產生讀寫信號和地址推動信號;在時鐘1和時鐘2的統一協調下,三路速變信號和十六路緩變信號通過輸入適配網絡,依次到三路選一和十六選一電路,然后,分別進入A/D轉換電路進行數據采集,并分別將采集數據存入數據存儲器一和數據存儲器二。當達到設定的采集時間后停止記錄,同時使系統處于低功耗的數據保持狀態,此時,可通過計算機并行接口讀取采集系統的數據。 2.1 啟動電路設計 啟動電路完成采集電路的可靠啟動,具有自動判別有效啟動信號的能力,能有效防止誤觸發。在系統電源接通后,系統處于低功耗待觸發狀態,系統功耗較小,系統可以完成長時間的等待狀態。在此狀態下,啟動電路對啟動線的信號進行判別,當啟動信號的電平由低變為高,并且持續時間大于規定時間,啟動電路通過記錄決策電路啟動采集系統開始數據采集,記錄決策電路原理如圖2所示,5V為系統自帶電池供電,VCC為A/D變換電路及其他采集數據電路的供電電壓,系統利用如圖所示的決策電路控制VCC的供電,保證系統可靠的觸發,本系統可保證20V以下不觸發。D觸發器的1腳和13 腳的輸出狀態轉換圖如圖3所示,依圖可見記錄決策電路有效防止了誤觸發。 2.2 接口電路設計 利用計算機并行接口工作在ECP模式下,其控制端口提供的Auto Linefeed、Strobe和Select Printer 3根控制線,進行合理的組合,產生對速變、緩變信號的選擇信號SelDat和讀取數據時序信號RD,并產生系統復位信號RESET。SelDat信號輸出到中心控制邏輯,產生存儲器的片選信號,控制讀取速變信號或緩變信號;讀信號RD和復位信號RESET控制地址發生電路產生讀取存儲器所需的地址;RD使能存儲器,通過并行接口的數據端口將存儲器中的采集數據讀到計算機。圖4為并行接口ECP模式下接口電路連接框圖。 接口電路讀取緩變數據時序圖如圖5所示。 3 系統軟件的設計 并行接口應用系統軟件設計包括主機操作系統上的客戶驅動程序和主機應用程序。客戶驅動程序實際上是一系列控制硬件設備的函數,是操作系統中控制和連接硬件的關鍵模塊。主機應用軟件通過客戶驅動程序與系統外設進行通信,其主要任務是將采集進來的數據流,根據所需處理功能的要求來完成各種基于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:RV_NUC_READ_DATA_Handler(KIrp I) { NTSTATUS status = STATUS_SUCCESS; t << Entering Drv_NUCDevice:RV_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個字節數據 { _outp(para_base_address+2, tmp_in2); //向并行接口發控制命令 pData[j] = _inp(para_base_address); //讀取并行接口數據到計算機 _outp(para_base_address+2, tmp_in1); } I.Information() = 1024; return status; } 3.2 用戶程序設計 主機應用程序使用Visual Basic6.0編譯環境,主要是實現調用*.DLL中的函數,讀取采集系統中的數據到計算機,對數據進行存儲、顯示處理結構及向采集系統發送控制命令等。 而在編寫用戶程序時,首先要建立與外設的連接,然后才能實施數據的傳輸。本設計使用Visual C++6.0編譯環境中的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 結束語 本文所設計的采集系統已經在工程上應用,為及時查找被測物體工作過程中可能發生故障的原因,提供有效的測試手段,為產品設計與問題故障分析提供依據。 作者: 孫德沖, 甄國涌 出處:微計算機信息 2007 年 第23卷 第34期 |