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