趙 昕,白志科,朱 健
(西安精密機(jī)械研究所,西安 710075)
近些年,水聲探測有針對體積小、動態(tài)、活動海域廣的目標(biāo)需求,這樣帶來了探測時間短、目標(biāo)回波信號強(qiáng)度明顯下降,海平面反射信號等情況更為復(fù)雜,以上情況使得水聲探測難度加大,最終導(dǎo)致水聲探測器的接收機(jī)組件、數(shù)字機(jī)組件、發(fā)射機(jī)組件在性能和功能上均需要大幅提升,從而整個水聲探測器的復(fù)雜度有了明顯增加,此時再利用標(biāo)準(zhǔn)臺式儀器對其進(jìn)行測試,需要使用中高端的示波器,信號源,經(jīng)核算所需以上儀器總成本高昂,同時在測試的過程中,由于測試的項目眾多,指標(biāo)分析更深入,操作繁瑣,檢測周期過長。
針對上述問題,文章利用虛擬儀器技術(shù)開發(fā)了一套自動化測試系統(tǒng),系統(tǒng)硬件由基于PXIe總線的機(jī)箱、零槽、采集卡、CAN卡、多路復(fù)用開關(guān)、單刀雙擲開關(guān)、以及衰減器和適配箱組成,上位機(jī)測試軟件利用Labwindows/CVI[1-2]開發(fā),其中引入了自功率譜函數(shù),實現(xiàn)了對信號幅度和頻率的快捷計算;利用Database Editor機(jī)制回避了用代碼創(chuàng)建CAN會話句柄的繁瑣方式,以及采用stream模式,提高了CAN幀數(shù)據(jù)接收效率;采用多線程結(jié)合通道觸發(fā)的方法,實現(xiàn)了對短調(diào)制脈沖信號準(zhǔn)確測試;通過以上設(shè)計開發(fā),很理想的完成了水聲探測器的自動化測試。
水聲探測器測試系統(tǒng)主要是對接收機(jī)組件,數(shù)字機(jī)組件,發(fā)射機(jī)組件進(jìn)行測試,它需要D/A、A/D、DI/O、多路復(fù)用開關(guān),單刀雙擲開關(guān),CAN通信接口,衰減器等功能設(shè)備,原理框圖如圖1所示。
圖1 水聲探測器測試系統(tǒng)原理
D/A設(shè)備一方面用于模擬目標(biāo)回波信號,產(chǎn)生不同頻率、不同幅度、不同回波延時和不同脈寬的目標(biāo)反射回波,另一方面模擬不同頻率和不同幅度的目標(biāo)輻射噪聲,經(jīng)衰減后分別輸出給接收機(jī)組件的輸入通道;CAN通信設(shè)備用于收發(fā)命令數(shù)據(jù),模擬水下航行體中探測與各個系統(tǒng)之間的信息交互;DI/O設(shè)備主要采集數(shù)字機(jī)組件輸出的指示信號,以及輸出數(shù)字控制信號作為接收機(jī)的數(shù)字激勵信號;A/D設(shè)備用于采集接收機(jī)組件輸出的輸出信號、數(shù)字機(jī)組件輸出的指示信號、XOUT信號、混頻信號、發(fā)射機(jī)組件輸出的發(fā)射信號;多路復(fù)用開關(guān)用于切換被采集的通道;單刀雙擲開關(guān)實現(xiàn)控制兩種電源供電。
在硬件設(shè)計方面,主要是選用機(jī)箱、零槽、采集卡、CAN卡、多路復(fù)用開關(guān)卡、單刀雙擲開關(guān)卡。目前PXIe總線相比PXI總線在傳輸帶寬和兼容性方面具有明顯優(yōu)勢,因此以上均選用基于PXIe總線的設(shè)備。采集卡的選擇主要是依據(jù):生成模擬信號的頻率范圍、幅度范圍、輸出通道數(shù);被采集模擬信號的頻率范圍、幅度范圍、采集通道數(shù)、采樣率、采樣精度;數(shù)字信號輸入輸出的通道數(shù)以及是否需要同步采集。本設(shè)計采用了2塊4個差分采集通道、16 bit分辨率、單通道最高4 MS/s、輸入量程±10 V、24通道DI/O、可支持56 MB板載存儲器的采集卡。在CAN卡方面,按照標(biāo)準(zhǔn)配置即可,因此選用了1塊1 M bit/s的CAN接口卡。在多路復(fù)用開關(guān)方面,因為處理的是微弱信號,要求多路復(fù)用開關(guān)具有盡量低的阻抗,另外參考每個采集通道要切換的被測通道數(shù),選擇了具有24x1 線制多路復(fù)用,完整通路阻抗<1 Ω的多路復(fù)用卡。在單刀雙擲開關(guān)卡方面,由于需要能支持40 V供電,以及需要為3個組件和整個裝置供電,采用了獨立4路且最高120 VDC,120 VAC的單刀雙擲開關(guān)。在機(jī)箱零槽方面,根據(jù)選用的板卡數(shù)量及考慮后期的可擴(kuò)展性,選擇了8槽機(jī)箱;根據(jù)處理速度和存儲需求,采用了具有2.3 GHz雙核Intel Core i7-3610QE處理器、8 GB (2×4 GB) DDR31600 MHz RAM、1 TB的嵌入式零槽。
由于生成模擬信號的板卡最小輸出信號幅度為5.64 mVpp,不滿足激勵的要求,所以需要對輸出信號進(jìn)行衰減,這里采用了常用的π型電阻衰減網(wǎng)絡(luò)對信號進(jìn)行分壓衰減,同時衰減器要與探測器具有相同的檢測通道,各通道的衰減系數(shù)相同。另外設(shè)計了信號適配箱,目地是將測試系統(tǒng)中各板卡的接線端子集成為電纜,便于測試系統(tǒng)與探測器的連接;同時可將模擬負(fù)載集成在內(nèi),方便管理。
水聲探測器的測試軟件設(shè)計是分別對接收機(jī)組件、數(shù)字機(jī)組件、發(fā)射機(jī)組件進(jìn)行設(shè)計,利用labwindows/CVI平臺完成開發(fā)。
接收機(jī)測試軟件流程如圖2所示,根據(jù)模擬回波參數(shù),編輯模擬回波數(shù)據(jù),對接收機(jī)組建上的增益用控制碼進(jìn)行設(shè)定,并加載混頻信號進(jìn)行模擬回波信號調(diào)制[3],前期工作準(zhǔn)備好后,閉合第一通道開關(guān),加載模擬回波信號,采集接收機(jī)輸出信號,在計算信號幅度和頻率方面,由于自功率譜函數(shù)[4],可同時直接得到所有信號幅度的有效值以及頻譜上的頻率間隔,因有用信號幅度有效值最大,所以只要再利用尋找最值函數(shù),便可得到有用信號幅度有效值及其在所有信號中的序號,序號乘以頻率間隔既是頻率,因此采用自功率譜函數(shù),來計算輸出信號幅度和頻率參數(shù)比較簡便,測完一個通道后,切換多路復(fù)用開關(guān),直到接收機(jī)輸出通道全部測完為止。
圖2 接收機(jī)組件測試軟件流程
數(shù)字機(jī)組件測試軟件流程與接收機(jī)組件測試軟件流程一致,只是加載的激勵信號為接收機(jī)輸出信號和激勵命令,測試的信號是XOUT信號,指示信號、混頻信號,發(fā)射輸入信號,然后計算出各信號的幅度的峰值和頻率,對于模擬信號的輸出,開關(guān)切換,模擬信號采集及計算與上節(jié)編程思路一致,不再做贅述,對于激勵命令輸出是通過CAN[6-7]接口卡來實現(xiàn)。
在CAN通信前,需要創(chuàng)建CAN會話句柄[8],傳統(tǒng)的創(chuàng)建首先要用nxdbOpenDatabase函數(shù)創(chuàng)建Database標(biāo)識符,然后將其傳給nxdbCreatObject函數(shù)創(chuàng)建Cluster標(biāo)識符,再將Cluster標(biāo)識符傳給nxdbCreatObject創(chuàng)建CAN Frame標(biāo)識符,最后還要調(diào)用nxdbSetPropertyp函數(shù)配置CAN幀格式、幀ID、數(shù)據(jù)段長度,這些完成后,才能調(diào)用nxCreateSession函數(shù)來創(chuàng)建CAN會話,因此這種用代碼編寫創(chuàng)建相對麻煩,為了簡化創(chuàng)建過程,應(yīng)用了Database Edior的方法,具體實現(xiàn)方法是: 利用Database Editor創(chuàng)建一個Database文件,然后直接利用菜單按鈕繼續(xù)創(chuàng)建Cluster和CAN Frame,便得到了圖3所示界面,CAN幀格式、幀ID、數(shù)據(jù)段長度等參數(shù)可直接配置,配置完成后,點擊保存該文件,創(chuàng)建CAN會話時,直接將該文件名賦給nxCreateSession函數(shù),便可得到CAN會話句柄。
圖3 Database Editor創(chuàng)建CAN會話句柄
在CAN通信時,采用了stream模式。因Stream模式不是只讀最近時刻且希望獲取類型的CAN幀,它不檢測總線上是什么類型的CAN幀,只檢測總線上在某一時刻所有的CAN幀,然后一次性取回,后期用戶再根據(jù)自身需求處理各類CAN幀,由于本測試系統(tǒng)模擬水下航行體中探測與各個系統(tǒng)之間的信息交互,所以對各系統(tǒng)發(fā)來的CAN幀數(shù)據(jù)都關(guān)心,這樣采用stream模式,減少讀取次數(shù),提高了接收效率。具體實現(xiàn)方法是:在nxCreateSession函數(shù)中設(shè)置成nxMode_FrameInStream模式,并將幀類型參數(shù)設(shè)置為NULL,按照CAN協(xié)議設(shè)置一個結(jié)構(gòu)體類型struct can_frame,其成員包括:時間戳、ID、幀類型、標(biāo)志位、狀態(tài)信息、數(shù)據(jù)段長度,數(shù)據(jù)緩沖區(qū)。開辟一個該類型的結(jié)構(gòu)體數(shù)組,將創(chuàng)建的CAN會話句柄,結(jié)構(gòu)體數(shù)組首地址賦給nxReadFrame,調(diào)用此函數(shù)進(jìn)行數(shù)據(jù)讀取。
發(fā)射機(jī)組件測試主要是檢測負(fù)載箱輸出,由于此輸出為一段短調(diào)制脈沖信號,激勵信號加載后,立即輸出,然后結(jié)束。為了能夠準(zhǔn)確測試此信號的參數(shù),需要在調(diào)制脈沖信號內(nèi)采集一段小于該信號脈寬的數(shù)據(jù),所以將采集狀態(tài)用線程的方式先啟動起來,并當(dāng)信號輸出時,再觸發(fā)采集,即通道觸發(fā)采集[9]。發(fā)射機(jī)組件激勵信號為方波信號,因為負(fù)載箱輸出有固定的判斷正常與否的標(biāo)準(zhǔn),所以計算出負(fù)載箱輸出信號的頻率和幅度與判據(jù)比較,得出信號輸出正常與否。軟件設(shè)計流程如圖4所示。
圖4 發(fā)射機(jī)組件測試軟件流程圖
利用DAQmxCfgAnlgEdgeStartTrig函數(shù)配置通道觸發(fā),將其觸發(fā)源參數(shù)設(shè)置成本通道,觸發(fā)沿參數(shù)設(shè)置成上升沿,觸發(fā)電平根據(jù)輸出幅度范圍設(shè)置,這樣通道有信號并超過觸發(fā)電平便開始采集。利用CmtScheduleThreadPoolFunction函數(shù)創(chuàng)建線程,然后定義一個函數(shù),由此函數(shù)完成具體操作,將該函數(shù)的指針賦給CmtScheduleThreadPoolFunction函數(shù)的參數(shù),因此要將DAQmxReadAnalogF64函數(shù)和計算輸出信號的頻率和幅度置于自定義的函數(shù)中。對于多線程編程[10],線程管理需考慮全面,在整個發(fā)射機(jī)組件檢測完畢后,需要關(guān)閉線程,釋放相關(guān)資源,但有時操作異常,也導(dǎo)致程序即將退出,因此要在啟動線程后設(shè)置線程啟動標(biāo)識,測試程序結(jié)束前,如果判斷出線程真實啟動,再進(jìn)行線程關(guān)閉,首先需要調(diào)用CmtWaitForThreadPoolFunctionCompletion函數(shù)等待線程結(jié)束,然后調(diào)用函數(shù)CmtReleaseThreadPoolFunctionID將線程關(guān)閉。
將各板卡的接線盒附件安裝到板卡上,板卡另一端用電纜將信號引出,接到適配箱后面板上,將電源也連接到后面板上,前面板通過電纜與水聲探測器相連,運行上位機(jī)測試軟件,測試軟件由接收機(jī)檢查、數(shù)字機(jī)檢查,發(fā)射機(jī)檢查3部分組成,每部分有配置區(qū)域和顯示區(qū)域,顯示通過表格形式完成,在水聲探測增加了圖形顯示。配置區(qū)域有測試手自一體功能,在接收機(jī)測試和發(fā)射機(jī)測試中,手動是各通道單獨測試,自動是各通道一次測完,對于數(shù)字機(jī)測試,手動是針對單項輸出信號測試,自動是所有項輸出信號測試,另外配置成自動模式,配置區(qū)及其他各項檢測為不可操作模式,防止錯誤操作。將各組件測試配置成自動,分別點擊接收機(jī)按鈕、自動按鈕,負(fù)載箱輸出按鈕,便完成了水聲探測器各項指標(biāo)的測試。
對以上測試進(jìn)行分析,利用文章提出的設(shè)計方案及開發(fā)方法,能夠精準(zhǔn)地實現(xiàn)水聲探測器所有指標(biāo)測試,同時大幅縮短了測試周期,從過去需要近50分鐘下降到僅需幾分鐘;測試操作得到簡化了,并且具有誤操作防止功能;測試結(jié)果顯示更加直觀,并更方便比較各通道的性能指標(biāo)情況;后期在外場工作中,溫度、濕度等環(huán)境因素變化的情況下,多次利用本測試系統(tǒng)對水聲探測器進(jìn)行測試,測試系統(tǒng)功能良好,運行可靠,無故障發(fā)生。工程應(yīng)用效果相比基于傳統(tǒng)的標(biāo)準(zhǔn)臺式儀器明顯更具優(yōu)勢。
應(yīng)用虛擬儀器技術(shù),開發(fā)了一套自動化測試系統(tǒng),實現(xiàn)了高效且快捷地對水聲探測器的測試,本文引入了自功率譜函數(shù)實現(xiàn)信號頻率和幅度快速計算,在CAN通信開發(fā)方面;提出了應(yīng)用Database Editor機(jī)制,簡化了CAN會話句柄的創(chuàng)建過程,采用了Stream讀取模式,提升了CAN數(shù)據(jù)接收效率;為了能夠準(zhǔn)確測試短調(diào)制脈沖信號,提出了多線程結(jié)合通道觸發(fā)的方法;同時涵蓋了模擬信號激勵和采集、數(shù)字信號激勵和采集、各類開關(guān)切換等測試測量領(lǐng)域里常用功能單元設(shè)計,為利用Labwindows/CVI開發(fā)自動化測試系統(tǒng)提供了有價值的參考。