基于LabVIEW的虛擬信號(hào)分析儀的軟件設(shè)計(jì)
虛擬儀器(VI)概念的提出是測(cè)控技術(shù)領(lǐng)域的一次革命。由于虛擬儀器可借助PC機(jī)強(qiáng)大的計(jì)算及處理能力,可由用戶(hù)定義和擴(kuò)展功能,且價(jià)格低廉,深受廣大用戶(hù)青睞。目前,虛擬儀器已經(jīng)逐漸走進(jìn)大學(xué)實(shí)驗(yàn)室,開(kāi)始為實(shí)驗(yàn)教學(xué)和科研服務(wù)。本文介紹一種虛擬信號(hào)分析儀的軟件設(shè)計(jì)方法,以美國(guó)NI公司的Labview6.1為開(kāi)發(fā)平臺(tái),配合NI公司的6024E采集卡,實(shí)現(xiàn)虛擬信號(hào)分析儀設(shè)計(jì)。
2 分析儀功能介紹
信號(hào)分析儀是用來(lái)對(duì)電信號(hào)進(jìn)行測(cè)量、顯示、波形存儲(chǔ)、時(shí)域和頻域分析的儀器。虛擬信號(hào)分析儀主要由參數(shù)設(shè)置、功能選擇、信號(hào)一、信號(hào)二和互相關(guān)分析五個(gè)模塊構(gòu)成:
(1) 參數(shù)設(shè)置模塊。完成通道配置,設(shè)置掃描率、掃描數(shù)和緩沖區(qū)大小。
(2) 功能選擇模塊。實(shí)現(xiàn)波形顯示、波形存儲(chǔ)、讀取波形數(shù)據(jù)、更新信號(hào)和退出。
(3) 信號(hào)一。對(duì)應(yīng)采集通道一,可實(shí)現(xiàn)濾波及加窗、自相關(guān)分析、自功率譜分析、統(tǒng)計(jì)分析和幅值分析。
(4) 信號(hào)二。對(duì)應(yīng)采集通道二,功能與信號(hào)一類(lèi)似。
(5) 互相關(guān)分析。對(duì)信號(hào)一和信號(hào)二進(jìn)行互相關(guān)分析和功率譜分析。
程序運(yùn)行時(shí),首先通過(guò)往通道控件中輸入通道號(hào),來(lái)控制數(shù)據(jù)采集時(shí)的通道數(shù),同時(shí)對(duì)掃描數(shù)、掃描率和緩沖大小進(jìn)行配置。配置完成以后,可以點(diǎn)擊波形采集,先觀察信號(hào)的具體波形,如果不滿(mǎn)足要求,則可以重新進(jìn)行參數(shù)配置。當(dāng)所要采集的波形滿(mǎn)足要求后,可以點(diǎn)擊波形存儲(chǔ),把波形數(shù)據(jù)保存到指定的文件當(dāng)中。點(diǎn)擊讀取波形數(shù)據(jù),把以前存儲(chǔ)到文件中的數(shù)據(jù)讀出來(lái),并把相應(yīng)的信號(hào)輸送到信號(hào)一和信號(hào)二。此時(shí)通過(guò)點(diǎn)擊濾波及加窗,對(duì)信號(hào)進(jìn)行濾波及加窗函數(shù)處理,同時(shí)把處理之后的數(shù)據(jù)輸出到相關(guān)分析單元,對(duì)輸出信號(hào)進(jìn)行相關(guān)分析。
3 波形采集
框圖程序中用到的子函數(shù)功能如下。
AI Config VI:設(shè)置采樣前的各種參數(shù)。
DAQ Occurrence Config VI:設(shè)置一個(gè)數(shù)據(jù)采集事件。
AI Start VI:指定程序中用于開(kāi)始采集的參數(shù),如設(shè)置掃描次數(shù)、采樣率等。
AI Read VI:設(shè)定從采樣緩存區(qū)讀取數(shù)據(jù)的那些參數(shù),如設(shè)定每次讀取的數(shù)量。
Clear VI:把task ID廢除,從而將采樣所用的內(nèi)存緩存區(qū)和其它資源釋放。
Simple Error Handler VI:將出錯(cuò)信息通知用戶(hù)。
Wait On Occurrence VI:處理事件等待。
在波形采集程序中,用上述函數(shù),根據(jù)數(shù)據(jù)流將它們組合起來(lái),再對(duì)其進(jìn)行一些必要的處理。第一個(gè)DAQ Occurrence Config VI設(shè)置一個(gè)數(shù)據(jù)采集事件。在While循環(huán)中,Wait On Occurrence函數(shù)在后臺(tái)休眠,也就有效地把While循環(huán)設(shè)置于休眠狀態(tài)。在設(shè)定的數(shù)據(jù)采集事件發(fā)生后,即采集到事先指定數(shù)量的數(shù)據(jù),LabVIEW通知Wait On Occurrence函數(shù)停止等待。由于 Wait On Occurrence函數(shù)的time out(超時(shí))輸出參數(shù)連接到包含有AI Read VI的選擇結(jié)構(gòu)的選擇端口上,就一定在 Wait On Occurrence函數(shù)停止等待后,才會(huì)用AI Read VI。
4 波形存儲(chǔ)
Open/Creat/Replace File VI:提示數(shù)據(jù)是以BIN(二進(jìn)制)為后綴的形式存儲(chǔ)在文件中。
AI Config VI:設(shè)置采樣前的各種參數(shù)。
AI Start VI:指定程序中用于開(kāi)始采集的參數(shù),如設(shè)置掃描次數(shù)、采樣率等。
AI Read VI:設(shè)定從采樣緩存區(qū)讀取數(shù)據(jù)的那些參數(shù),如設(shè)定每次讀取的數(shù)據(jù)點(diǎn)數(shù)。
AI Clear VI:把task ID作廢,從而將采樣所用的內(nèi)存緩存區(qū)和其它資源釋放。
Simple Error Handler VI:將出錯(cuò)信息告訴用戶(hù)。
時(shí)間日期子VI:顯示數(shù)據(jù)存儲(chǔ)時(shí)的具體時(shí)間和日期。
Match Pattern VI:把輸入的字符串分成3段來(lái)表示,如年、月、日。
Scan Form String VI:把輸入的字符串轉(zhuǎn)換為相關(guān)格式的字符串。
Concatenate String VI:把輸入的字符串放在一個(gè)數(shù)組中輸出。
Format Date/Time String:把輸入的時(shí)間、日期字符串以規(guī)定的格式輸出。
Replace Array Subset VI:用其它的數(shù)據(jù)代替索引所指數(shù)組中的數(shù)據(jù)。
Search 1D Array VI:從一維數(shù)組的第一個(gè)數(shù)開(kāi)始尋找指定的元素。
Seconds To Date/Time:輸出的格式為年、月、日、小時(shí)、秒。
配置頭文件子VI:把時(shí)間日期子VI中所顯示的日期和時(shí)間及通道號(hào)的配置放在一起,以字符串的形式輸出。
寫(xiě)頭文件子VI:把配置頭文件子VI輸出的字符串,以頭文件的形式存入前面指定的文件中。
Write File位于Functions>>File I/O子模板,通過(guò)Open/Creat/Replace File函數(shù)中的dup refnum(文件標(biāo)識(shí))把配置頭文件子VI輸出的字符竄以頭文件的形式存儲(chǔ)到指定的文件中。
Write File位于Functions>>File I/O子模板。該函數(shù)通過(guò)寫(xiě)頭文件子VI中的dup refnum,把采集來(lái)的數(shù)據(jù)以二進(jìn)制的形式存儲(chǔ)到前面指定的文件里。同時(shí)輸出dup refnum、出錯(cuò)信息和已寫(xiě)到文件里的字節(jié)數(shù)。
關(guān)閉文件用于關(guān)閉文件,并輸出相關(guān)的出錯(cuò)信息。
在波形存儲(chǔ)程序中調(diào)用上述函數(shù)和子VI,根據(jù)數(shù)據(jù)流將它們組合起來(lái),再對(duì)其進(jìn)行必要的處理。
5 波形讀取
Open/Creat/Replace File VI:用于提示數(shù)據(jù)是以BIN為后綴的形式存儲(chǔ)于文件中的。
Simple Error Handler VI:將出錯(cuò)信息告訴用戶(hù)。
讀頭文件子VI:用來(lái)讀取文件中的內(nèi)容。程序中通過(guò)前面Open/Creat/Replace File VI的dup refnum,把指定文件中的內(nèi)容讀出來(lái),并且把文件中的相關(guān)內(nèi)容,如時(shí)間、日期等字符串的形式輸出;mark after read表示為所讀數(shù)據(jù)的字節(jié)數(shù);同時(shí)輸出 dup refnum和出錯(cuò)信息。
顯示頭文件子VI把讀頭文件子VI輸出的相關(guān)信息,如時(shí)間、日期、通道等信息在波形讀取的前面板顯示出來(lái)。
AI Hardware Config VI:把二進(jìn)制中的數(shù)據(jù)轉(zhuǎn)換為可讀的電壓數(shù),以便把圖形畫(huà)出來(lái)。
Type Cast VI:該函數(shù)將輸出的數(shù)據(jù)轉(zhuǎn)換成指定的數(shù)據(jù)。
Search/Split String:將輸出的字符串分解成兩個(gè)子字符串。
讀波形數(shù)據(jù)子VI:把文件中的波形數(shù)據(jù)讀出來(lái),輸出到波形讀取的前面板顯示器上。
Read File:通過(guò)前面的dup refnum,把文件中的二進(jìn)制數(shù)據(jù)讀出來(lái),并把數(shù)據(jù)以16位整形的形式輸出到一個(gè)二維數(shù)組中,同時(shí)輸出文件的dup refnum、出錯(cuò)信息和所讀數(shù)據(jù)的字節(jié)數(shù)。
6 結(jié)束語(yǔ)
本虛擬信號(hào)分析儀軟件以Labview6.1為開(kāi)發(fā)平臺(tái),在配以NI6024E采集卡,實(shí)現(xiàn)了信號(hào)分析儀的基本功能。所構(gòu)成的信號(hào)分析儀成功地用于教學(xué)實(shí)驗(yàn)中,具有造價(jià)低、操作方便等特點(diǎn)。