<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 測試測量 > 設計應用 > 設計基于LabVIEW的虛擬儀器系統

設計基于LabVIEW的虛擬儀器系統

作者: 時(shí)間:2012-08-09 來(lái)源:網(wǎng)絡(luò ) 收藏

  本文將介紹如何在下快速搭建基于MSP-060101的虛擬和頻譜分析軟件。

  一、硬件部分

  本文中所用到的MSP-060101是一款16bit、500ksps的單通道USB卡。它具有接口簡(jiǎn)單、量程可選(±1V與±10V)、速度快、精度高、驅動(dòng)函數接口簡(jiǎn)單等優(yōu)點(diǎn),非常適合用來(lái)快速實(shí)現虛擬和頻譜分析功能。

  MSP-060101硬件連接非常簡(jiǎn)單,將采集卡插入PC的USB接口,按說(shuō)明安裝好驅動(dòng)程序,就可以進(jìn)行了,不需要外接電源和其他繁瑣的設備。MSP-060101前端接信號的端口只有兩個(gè),分別接到差分輸入信號的正端和負端即可,簡(jiǎn)單明了,一目了然。

  二、底層函數

  連接好硬件,接下來(lái)了解該卡驅動(dòng)函數的使用。該卡驅動(dòng)函數只有兩個(gè),封裝于MSP-16bitDAQCard.dll中,用戶(hù)可通過(guò)調用DLL的方式來(lái)執行函數。函數定義如下:

  int SetSampleRate (int SampleRate, int DeviceNumber)

  int GetVoltage(float *DataArray, int ArraySize, float mult, float Offset, int DeviceNumber)

  SetSampleRate 函數用來(lái)設置采集卡的采樣率。其參數為 SampleRate(采樣率,1K-500K范圍內任意設置) 和 DeviceNumber(設備序號,同時(shí)支持10塊采集卡)。

  GetVoltage 函數用來(lái)采集電壓數據。其參數為DataArray(緩存數組)、ArraySize(緩存長(cháng)度)、mult(增益系數)、Offset(偏移量)和DeviceNumber(設備序號)。

  這兩個(gè)函數都有返回值,如果函數執行成功,則返回1,否則返回0。

  在中,是通過(guò)Call Library Function Node來(lái)調用DLL函數的。為了便于使用,我們將調用DLL的代碼做成子VI函數,子VI主要有兩個(gè),即采集數據.VI 和 頻率設置.VI。其內部程序框圖如下:

內部程序框圖

內部程序框圖

  三、軟件編寫(xiě)

  編寫(xiě)好子VI,接下來(lái)的工作就是按照的程序設計方法來(lái)設計應用軟件。本文以基本的示波軟件為例,并結合頻譜分析,示范如何利用LABVIEW的高效控件來(lái)編寫(xiě)測試軟件。

  軟件的整體設計思路大致如下:軟件執行為一個(gè)無(wú)限循環(huán),每次循環(huán)分為三個(gè)步驟,一是設置采集卡的采樣率,二是連續采集一段長(cháng)度的數據,三是進(jìn)行數據分析。因此,程序的主體框架就是一個(gè)while循環(huán)內嵌套一個(gè)順序結構。

  下面我們來(lái)看每次循環(huán)的第一個(gè)步驟,設置采樣率。采樣率的設置很簡(jiǎn)單,直接調用子VI即可。但為了讓程序運行的穩定,防止由于采集卡無(wú)響應造成的程序死機,同時(shí)也使軟件更人性化,在這里需要加入一個(gè)硬件檢查報錯機制。其思路是調用設置采樣率的函數,如果采集卡硬件沒(méi)有連好,或是硬件工作不正常,函數執行不成功,將返回0,則通過(guò)判斷返回值是否為0,就可以判斷采集卡硬件是否出現問(wèn)題。如果出現問(wèn)題,則向用戶(hù)報錯,提示用戶(hù)檢查硬件,并停止程序,不再向下執行。如果硬件正常,則繼續執行程序。

  接下來(lái)是第二個(gè)步驟,采集一定長(cháng)度的數據。這部分也較為簡(jiǎn)單,直接調用采集函數即可。數據采集的同時(shí)可以設置數據的增益系數和偏移量,以便獲得更好的波形效果,也可以用來(lái)進(jìn)行數據校準。

  對于一個(gè)數據采集軟件來(lái)講,重點(diǎn)在于第三個(gè)步驟,即數據的處理。本例中,目的是要顯示一個(gè)穩定的波形,并對其頻譜做初步的分析。這里將用到一個(gè)比較重要的功能,即軟件的內觸發(fā)。該功能是通過(guò)判斷波形在某一個(gè)特定電平(觸發(fā)電平)點(diǎn)上是上升還是下降(觸發(fā)極性)來(lái)決定后續顯示波形的起始點(diǎn)。經(jīng)過(guò)內觸發(fā)后,每次采集得到的波形都將從相同的電壓點(diǎn),按相同的變化趨勢開(kāi)始,因此對于周期變化的信號來(lái)說(shuō),波形就能較為穩定的重復出現,便于人們進(jìn)行觀(guān)察和分析。在本例中,內觸發(fā)功能被做成了功能子VI,通過(guò)調用該VI就可以將波形進(jìn)行軟件觸發(fā)。

  波形經(jīng)過(guò)觸發(fā)后,基本已經(jīng)有了一個(gè)較為穩定的顯示效果。接下來(lái)需要給波形數據加入時(shí)間特性。其方法是根據采樣率算出采樣間隔時(shí)間Δt,并通過(guò)建立波形的控件將Δt賦給波形數據。

  至此,我們已經(jīng)得到了一個(gè)較為完整的顯示波形,簡(jiǎn)單的功能就已經(jīng)實(shí)現了。

  想要給軟件加上頻譜分析的功能,在LabVIEW中也是很容易實(shí)現的。只需將我們前面得到的波形數據直接送入FFT函數中,就可以得到波形的頻域數據。但為了便于分析,我們希望能自動(dòng)從頻域中提取信號的主頻。其算法也很簡(jiǎn)單,就是由低到高依次掃描不同頻率的功率分布值,找到最大值后,根據最大值所在的位置序號來(lái)推算主頻。值得注意的是掃描時(shí)不能從頻率0點(diǎn)開(kāi)始,不然0頻率可能對應的是最大的功率分布,一般要把前幾個(gè)點(diǎn)排除在外。


上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>