亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于USBee DX數(shù)據(jù)采樣和LabVIEW編程的虛擬示波器

        2016-08-04 01:52:57胡險(xiǎn)峰
        物理實(shí)驗(yàn) 2016年7期
        關(guān)鍵詞:數(shù)據(jù)采集

        胡險(xiǎn)峰

        (四川大學(xué) 物理科學(xué)與技術(shù)學(xué)院,四川 成都 610064)

        ?

        基于USBee DX數(shù)據(jù)采樣和LabVIEW編程的虛擬示波器

        胡險(xiǎn)峰

        (四川大學(xué) 物理科學(xué)與技術(shù)學(xué)院,四川 成都 610064)

        摘要:介紹了用LabVIEW軟件對(duì)USBee DX數(shù)據(jù)采集器編程的方法,LabVIEW通過(guò)執(zhí)行系統(tǒng)命令模塊調(diào)用C可執(zhí)行程序,實(shí)現(xiàn)USBee DX的控制和采集數(shù)據(jù)與LabVIEW程序間傳遞,實(shí)現(xiàn)用計(jì)算機(jī)模擬虛擬雙蹤示波器.

        關(guān)鍵詞:數(shù)據(jù)采集;虛擬示波器;LabVIEW;USBee DX

        利用數(shù)據(jù)采集卡或聲卡,編制程序在微機(jī)上模擬示波器[1-7],可用于各種物理實(shí)驗(yàn). 廉價(jià)的數(shù)據(jù)采集卡或聲卡,由于數(shù)據(jù)采集速度較低,虛擬的示波器帶寬小,不能滿足信號(hào)頻率較高的場(chǎng)合. USBee DX數(shù)據(jù)采集器使用USB接口,采樣速率可達(dá)24 MB/s,價(jià)格便宜,有多個(gè)數(shù)字模入和模出通道,主要用于虛擬邏輯分析器;還有2個(gè)獨(dú)立的8位AD模入通道可用于虛擬示波器. 用USBee DX數(shù)據(jù)采集器使用手冊(cè)[8]介紹的API函數(shù)編寫LabVIEW庫(kù)函數(shù)節(jié)點(diǎn)調(diào)用不成功,則利用USBee DX數(shù)據(jù)采集器安裝程序提供的工具創(chuàng)建器的C原程序,修改創(chuàng)建兩通道AD變換可執(zhí)行程序,通過(guò)LabVIEW執(zhí)行系統(tǒng)命令模塊調(diào)用該可執(zhí)行程序,將USBee DX采集到的數(shù)據(jù)通過(guò)執(zhí)行系統(tǒng)命令模塊的標(biāo)準(zhǔn)輸出傳遞到LabVIEW程序中. 用For循環(huán)、字符截取模塊和字符數(shù)據(jù)轉(zhuǎn)換模塊重新組織數(shù)據(jù)隊(duì)列,再?gòu)臄?shù)據(jù)隊(duì)列中拆分出數(shù)字通道信號(hào)和2個(gè)AD模入通道信號(hào). 利用LabVIEW編程進(jìn)行后續(xù)的信號(hào)處理做成虛擬示波器.

        1兩通道AD變換可執(zhí)行程序

        USBee DX數(shù)據(jù)采集器安裝程序提供的工具創(chuàng)建器的C原程序[8],包含初始化功能、基本I/O功能、邏輯分析器及示波器和信號(hào)發(fā)生器等幾個(gè)程序段,刪除其中基本I/O功能和信號(hào)發(fā)生器等幾段,保留初始化功能和邏輯分析器及示波器兩段. USBee DX的采樣速率隨應(yīng)用程序的運(yùn)行環(huán)境需要做相應(yīng)調(diào)整,不然采樣速率過(guò)高采樣會(huì)失敗,需要自動(dòng)回調(diào)過(guò)高的采樣速率. 添加采樣速率自動(dòng)調(diào)整,以及與LabVIEW程序通過(guò)讀寫文本文件交換采樣通道、采樣速率、采樣長(zhǎng)度、數(shù)據(jù)傳遞長(zhǎng)度、數(shù)據(jù)傳遞間隔和3個(gè)觸發(fā)控制數(shù)據(jù)的程序段,編譯后生成可執(zhí)行程序供LabVIEW通過(guò)執(zhí)行系統(tǒng)命令模塊調(diào)用. 修改后的原程序如下,其中斜體部分為添加或修改的語(yǔ)句.

        #include “stdio.h”

        #include “conio.h”

        #include “windows.h”

        #define CWAV_API __stdcall

        #define CWAV_IMPORT __declspec(dllimport)

        CWAV_IMPORT unsigned long * CWAV_API MakeBuffer(unsigned long Size);

        CWAV_IMPORT int CWAV_API DeleteBuffer(unsigned long *buffer);

        CWAV_IMPORT int CWAV_API EnumerateDXPods(unsigned int *Pods);

        CWAV_IMPORT int CWAV_API InitializeDXPod(unsigned int PodNumber);

        CWAV_IMPORT int CWAV_API StartCapture(unsigned int Channels, unsigned int Slope, unsigned int AnalogChannel, unsigned int Level,unsigned int SampleRate, unsigned int ClockMode, unsigned long *Triggers, signed int TriggerNumber, unsigned long *buffer, unsigned long length, unsigned long poststore);

        CWAV_IMPORT int CWAV_API CaptureStatus(char *breaks, char *running, char *triggered, long *start, long *end, long *trigger, char *full);

        CWAV_IMPORT int CWAV_API StopCapture(void);

        int main()

        {unsigned int PodNumber, PodID[10], NumberOfPods;

        int ReturnVal;

        NumberOfPods = EnumerateDXPods(PodID);

        if (NumberOfPods == 0) {

        printf(“No USBee DX Pods found ”);

        return 0;

        }

        PodNumber = PodID[0];

        ReturnVal = InitializeDXPod(PodNumber);

        if (ReturnVal != 1) {

        printf(“Failure Initializing the Pod ”);

        return 0;

        }

        unsignedlongx,y,z;

        unsignedlonglabview[8];

        FILE*fp;

        fp=fopen(“C:\ProgramFiles\USBeeDxLabViewOSC\data\labview.txt”,“r+”);

        y=8

        for(x= 0;x

        {fscanf(fp, “%d”, &labview[x]);

        }

        long Channels =labview[0];

        unsigned char Slope =labview[1];

        unsigned char AnalogTriggerChannel =labview[2];

        unsigned char Level =labview[3];

        unsigned char Rate =labview[4];

        unsigned char ClockMode = 2;

        unsigned long Triggers[2];

        Triggers[0]= 0;.

        Triggers[1]= 0;

        char NumberOfTriggers = 1;

        long SampleBufferLength =labview[5]* 65536;

        unsigned long *SampleBuffer;

        *SampleBuffer =MakeBuffer(SampleBufferLength);

        long PostStore = SampleBufferLength;

        char Breaks, Running, Triggered, Full;

        long Start, End, Trigger;

        SR: ReturnVal = StartCapture(Channels, Slope,

        AnalogTriggerChannel, Level, Rate, ClockMode,

        Triggers, NumberOfTriggers, SampleBuffer,

        SampleBufferLength, PostStore);

        if (ReturnVal != 1) {

        printf(“Failure Starting Capture ”);

        return 0;

        }

        do {

        Sleep(50);

        ReturnVal = CaptureStatus(&Breaks, &Running,

        &Triggered, &Start, &End, &Trigger, &Full);

        if (Running && (Breaks != 0)) {

        break;

        }

        } while (Running && (Breaks == 0));

        StopCapture();

        if(Breaks==0)

        {gotoI;}

        if(Rate==247)

        {Rate=167;gotoSR;}

        if(Rate==167)

        {Rate=127;gotoSR;}

        if(Rate==127)

        {Rate=87;gotoSR;}

        if(Rate==87)

        {Rate=67;gotoSR;}

        if(Rate==67)

        {Rate=47;gotoSR;}

        if(Rate==47)

        {Rate=37;gotoSR;}

        if(Rate==37)

        {Rate=27;gotoSR;}

        if(Rate==27)

        {Rate=17;gotoSR;}

        I:y=labview[6];

        z=labview[7];

        for(x= 0;x

        {printf(“%8x”,SampleBuffer[x]);

        }

        DeleteBuffer(SampleBuffer);

        return Rate;

        }

        由于USBee DX提供的API函數(shù)允許的最小采樣速率為1 MB/s,最小采樣長(zhǎng)度為65 536. 當(dāng)信號(hào)頻率低時(shí),要測(cè)量到幾個(gè)周期的信號(hào),要增大采樣時(shí)間,則采樣長(zhǎng)度太長(zhǎng),用printf方式和LabVIEW通過(guò)執(zhí)行系統(tǒng)命令模塊調(diào)用,來(lái)傳遞數(shù)據(jù)的時(shí)間太長(zhǎng),程序運(yùn)行速度很慢. 對(duì)于低頻信號(hào),C可執(zhí)行程序按最低采樣速率1 MB/s采樣,盡管采樣長(zhǎng)度會(huì)到數(shù)倍或幾十倍最小采樣長(zhǎng)度,由于采樣速率高耗時(shí)還可以接受. 在數(shù)據(jù)傳遞時(shí)增大步長(zhǎng),即數(shù)據(jù)間隔,虛擬地調(diào)整采樣速率,可以減少數(shù)據(jù)傳遞量,縮短數(shù)據(jù)傳遞時(shí)間. 在LabVIEW程序中相應(yīng)調(diào)大繪圖點(diǎn)的時(shí)間間隔,以保持繪圖和采樣的總時(shí)長(zhǎng)一致.

        2LabVIEW程序

        LabVIEW程序外層為兩級(jí)平鋪式順序結(jié)構(gòu),第一級(jí)是打開與C可執(zhí)行程序交換數(shù)據(jù)的文本文件,并初始化運(yùn)行參量;第二級(jí)中嵌入一個(gè)While循環(huán),其中又嵌入兩級(jí)平鋪式順序結(jié)構(gòu),這個(gè)平鋪式順序結(jié)構(gòu)的第一級(jí)為虛擬示波器主程序,第二級(jí)則向文本文件寫入采樣速率和采樣長(zhǎng)度等參量. 虛擬示波器主程序如圖1所示,其中t_Scale條件語(yǔ)句框根據(jù)示波器掃描時(shí)基,設(shè)定USBee DX的采樣速率、采樣長(zhǎng)度、數(shù)據(jù)傳遞長(zhǎng)度和傳遞間隔,與通道選擇和觸發(fā)控制參量組成8個(gè)字符串的隊(duì)列寫入文本文件LabVIEW.txt中,C可執(zhí)行程序讀該文件取得這些參量.

        改變掃描時(shí)基也就是改變繪圖模塊橫向標(biāo)尺的時(shí)間長(zhǎng)度,而繪圖窗體長(zhǎng)度不變,則要改變繪圖模塊的Δt,即繪圖點(diǎn)之間的間隔. 若選擇固定的基本標(biāo)尺時(shí)間長(zhǎng)度,掃描時(shí)基增大,Δt的值相應(yīng)減小. 例如標(biāo)尺長(zhǎng)度T,分度10格,則時(shí)基為0.1T/div,若采樣速率為SR,1個(gè)標(biāo)尺長(zhǎng)度時(shí)間里采樣點(diǎn)數(shù)為TSR,數(shù)據(jù)點(diǎn)時(shí)間間隔等于1/SR,取Δt=1/SR,在標(biāo)尺長(zhǎng)度內(nèi)可繪完全部采樣點(diǎn). 若增加采樣點(diǎn)數(shù)為2TSR,數(shù)據(jù)點(diǎn)時(shí)間間隔仍為1/SR,而標(biāo)尺長(zhǎng)度變?yōu)?T,時(shí)基為0.2T/div,標(biāo)尺長(zhǎng)度增大1倍,保持繪圖窗體不變,要縮小繪圖點(diǎn)之間的間隔Δt,取Δt=1/2SR,仍然可以在1個(gè)標(biāo)尺長(zhǎng)度T內(nèi)繪完全部采樣點(diǎn),繪圖窗體不變,總時(shí)長(zhǎng)還是2T,時(shí)基還是0.2T/div. 若數(shù)據(jù)傳遞間隔Δτ大于采樣間隔1/SR,則傳遞的數(shù)據(jù)點(diǎn)數(shù)為2TSR/Δτ,則繪圖間隔要調(diào)整為Δt=Δτ/2SR,則保持繪圖窗體不變. 也可以選擇繪圖窗體的時(shí)間長(zhǎng)度隨掃描時(shí)基增大,則繪圖模塊的Δt也要隨之增大,相應(yīng)的游標(biāo)位置也要隨之變化. 由于觸發(fā)控制模塊Trigger在篩選滿足觸發(fā)條件的數(shù)據(jù)點(diǎn)時(shí),會(huì)篩除數(shù)據(jù)隊(duì)列前面不滿足觸發(fā)條件的部分?jǐn)?shù)據(jù),實(shí)際傳遞數(shù)據(jù)的時(shí)間長(zhǎng)度要大于繪圖數(shù)據(jù)的時(shí)間長(zhǎng)度,選擇采樣的時(shí)間長(zhǎng)度是繪圖的時(shí)間長(zhǎng)度的2倍.

        圖1 虛擬示波器主程序

        經(jīng)1個(gè)For 循環(huán)語(yǔ)句框,將C可執(zhí)行程序傳遞的16進(jìn)制字符串重新分割成8個(gè)字符1組,即4 Bytes 1組的數(shù)據(jù)隊(duì)列,其中低16位為16個(gè)數(shù)字通道的信號(hào),高16位為2個(gè)模擬通道信號(hào),這其中低8位為1號(hào)模擬通道信號(hào),高8位為2號(hào)模擬通道信號(hào). 用字符截取模塊和字符數(shù)據(jù)轉(zhuǎn)換模塊重新組織數(shù)據(jù)隊(duì)列,再經(jīng)拆分?jǐn)?shù)字模塊,從數(shù)據(jù)隊(duì)列中拆分出數(shù)字通道信號(hào)和2個(gè)AD模入通道信號(hào). 再按采樣的電壓分辨率換算成電壓值后,經(jīng)過(guò)Trigger模塊后進(jìn)行增益控制和垂直位移控制. 最后用捆綁模塊將數(shù)據(jù)隊(duì)列和時(shí)基數(shù)據(jù)捆綁成信號(hào)簇送波形圖模塊顯示信號(hào)波形. 數(shù)據(jù)隊(duì)列變換成動(dòng)態(tài)數(shù)據(jù)送單頻測(cè)量模塊和幅值電平測(cè)量模塊,測(cè)量顯示信號(hào)的頻率和峰-峰值.

        按照USBee DX使用手冊(cè)[8]介紹的數(shù)字和模擬信號(hào)采集函數(shù)StartCapture編寫USBee DX采集卡采樣觸發(fā)控制參量,生成的C可執(zhí)行程序沒(méi)有觸發(fā)控制功能. 觸發(fā)控制由LabVIEW程序?qū)崿F(xiàn),虛擬示波器主程序中觸發(fā)控制模塊Trigger,虛擬示波器觸發(fā)同步功能,改編自LabVIEW資源庫(kù)中數(shù)字虛擬示波器示例,將其中的觸發(fā)同步程序創(chuàng)建成新的IV子模塊,取名“Trigger”模塊,該模塊可以選擇觸發(fā)源、觸發(fā)電平和觸發(fā)極性.

        主程序框左側(cè)中下部分的程序用于控制4個(gè)分別綁定在信號(hào)曲線上的游標(biāo),通過(guò)控制和讀取波形圖模塊的游標(biāo)屬性,決定游標(biāo)是否可見(jiàn),以及顯示游標(biāo)之間的差值.

        虛擬示波器前面板見(jiàn)圖2,時(shí)基和增益調(diào)節(jié)分度均按傳統(tǒng)示波器分度值設(shè)置,手動(dòng)調(diào)節(jié)縮放. 起用波形圖模塊的游標(biāo)功能,還可以拖動(dòng)游標(biāo)線測(cè)量信號(hào)的電壓差和時(shí)間差. 主程序包含自動(dòng)測(cè)量2個(gè)通道信號(hào)的峰-峰值和頻率的功能,在前面板上自動(dòng)顯示信號(hào)的峰-峰值和頻率.

        圖2 程序運(yùn)行前面板

        在Windows XP SP3系統(tǒng)下,Tualatin Celeron 1.2 GHz CPU,Geforce4 MX 440 顯卡,768 MB SDROM 內(nèi)存的老舊計(jì)算機(jī)可以充當(dāng)一臺(tái)雙蹤示波器用,采樣率最大可達(dá)到6 MB/s;若選擇單蹤顯示,采樣率最大可達(dá)到12 MB/s. 最高測(cè)量到頻率約600 kHz或1.2 MHz的信號(hào),這時(shí)波形略微有些失真. 從C可執(zhí)行程序向LabVIEW程序傳遞數(shù)據(jù)的速率大約50 kB/s. 信號(hào)頻率低到幾十Hz,信號(hào)刷新速度也還可以接受. 當(dāng)時(shí)基為1 s/div擋,信號(hào)波形刷新時(shí)間約24 s,要測(cè)量幾Hz的信號(hào),波形刷新過(guò)慢. 虛擬的示波器適合在幾十Hz到幾百kHz使用.

        3結(jié)束語(yǔ)

        USBee DX數(shù)據(jù)采集器的價(jià)格比市面上的一些USB接口或PCI接口的AD卡要低,而采樣速率要高得多. 雖然,該AD卡提供的API函數(shù)不支持LabVIEW的庫(kù)函數(shù)節(jié)點(diǎn)調(diào)用,不便于結(jié)合LabVIEW強(qiáng)大的信號(hào)處理分析功能. 通過(guò)LabVIEW調(diào)用可執(zhí)行程序功能,可以實(shí)現(xiàn)USBee DX采樣數(shù)據(jù)與LabVIEW程序?qū)?,發(fā)揮USBee DX數(shù)據(jù)采集器的價(jià)格低、采樣速率高、LabVIEW信號(hào)處理分析功能強(qiáng)的優(yōu)勢(shì). 盡管該AD口只有8位的采樣分辨率,輸入范圍-10~10 V,電壓分辨率僅有約78 mV, 配上10∶1的測(cè)量筆,對(duì)幾V到幾十V的電壓信號(hào),這個(gè)電壓分辨率已經(jīng)夠用. 對(duì)于信號(hào)幅度為幾V的調(diào)相信號(hào),如外腔調(diào)制激光二極管自混合干涉信號(hào),可以進(jìn)一步設(shè)計(jì)成傅里葉分量提取、解調(diào)和信息分析的虛擬儀器,解調(diào)出來(lái)的位移信號(hào)可達(dá)到與12位AD卡相同的位移分辨率.

        參考文獻(xiàn):

        [1]胡險(xiǎn)峰. 用微機(jī)觀測(cè)交流磁滯回線[J]. 物理實(shí)驗(yàn),1997,17(1):19-20,18.

        [2]冷國(guó)華. 電腦示波器[J]. 物理實(shí)驗(yàn),2004,24(3):28-30.

        [3]戴新宇,王群,閆長(zhǎng)春. 基于虛擬示波器動(dòng)態(tài)判別溶液濃度[J]. 物理實(shí)驗(yàn),2004,24(6):44-46.

        [4]胡險(xiǎn)峰,朱世國(guó). 激光二極管反饋干涉的實(shí)驗(yàn)觀測(cè)[J]. 物理實(shí)驗(yàn),2006,26(3):3-7,15.

        [5]余觀夏,王軍,阮錫根. 基于聲卡和LabVIEW測(cè)量金屬的動(dòng)態(tài)楊氏模量[J]. 物理實(shí)驗(yàn),2007,27(8):6-9.

        [6]陳東生,熊慧萍,王瑩. 以虛擬儀器為平臺(tái)的聲學(xué)實(shí)驗(yàn)[J]. 物理實(shí)驗(yàn),2008,28(2):26-29.

        [7]陳映純,吳先球. 基于虛擬儀器的楊氏模量實(shí)驗(yàn)中共振頻率的測(cè)量[J]. 物理實(shí)驗(yàn),2012,32(5):40-41,45.

        [8]CWAV. USBee DX Test Pod User’s Manual [DB/OL]. 2008. www.usbee.com.

        [責(zé)任編輯:尹冬梅]

        收稿日期:2016-02-22;修改日期:2016-03-04

        作者簡(jiǎn)介:胡險(xiǎn)峰(1962-),男,江西玉山人,四川大學(xué)物理科學(xué)與技術(shù)學(xué)院副教授,碩士,主要從事基礎(chǔ)物理實(shí)驗(yàn)教學(xué).

        中圖分類號(hào):TM935.37

        文獻(xiàn)標(biāo)識(shí)碼:A

        文章編號(hào):1005-4642(2016)07-0012-05

        Virtual oscilloscope based on USBee DX data sampling and LabVIEW programming

        HU Xian-feng

        (Physics College, Sichuan University, Chengdu 610064, China)

        Abstract:A programming method of USBee DX data acquisition with LabVIEW software was introduced. LabVIEW program called a C executable program by the System Exec.vi, to realize the exchange of control and sample data between USBee DX and LabVIEW. A double trace oscilloscope was virtualized.

        Key words:data acquisition; virtual oscilloscope; LabVIEW; USBee DX

        猜你喜歡
        數(shù)據(jù)采集
        Web網(wǎng)絡(luò)大數(shù)據(jù)分類系統(tǒng)的設(shè)計(jì)與改進(jìn)
        CAN總線通信技術(shù)在電梯監(jiān)控系統(tǒng)中的應(yīng)用
        基于大型嵌入式系統(tǒng)的污水檢測(cè)系統(tǒng)設(shè)計(jì)
        社會(huì)保障一卡通數(shù)據(jù)采集與整理技巧
        基于AVR單片機(jī)的SPI接口設(shè)計(jì)與實(shí)現(xiàn)
        CS5463在植栽用電子鎮(zhèn)流器老化監(jiān)控系統(tǒng)中的應(yīng)用
        大數(shù)據(jù)時(shí)代高校數(shù)據(jù)管理的思考
        科技視界(2016年18期)2016-11-03 22:51:40
        鐵路客流時(shí)空分布研究綜述
        基于廣播模式的數(shù)據(jù)實(shí)時(shí)采集與處理系統(tǒng)
        軟件工程(2016年8期)2016-10-25 15:54:18
        通用Web表單數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
        軟件工程(2016年8期)2016-10-25 15:52:53
        粉嫩极品国产在线观看免费一区 | 亚洲欧洲偷自拍图片区| 八戒网站免费观看视频| 一区二区三区婷婷在线| 美女视频永久黄网站免费观看国产| 在线视频一区二区三区中文字幕| 国产精品亚洲一区二区三区久久| 国产亚洲精品一区二区无| 亚洲狠狠婷婷综合久久久久图片| 亚洲不卡中文字幕无码| 久久这里只有精品9| 亚洲日本在线中文字幕| 美女主播福利一区二区| 色噜噜狠狠狠综合曰曰曰| 在线不卡av天堂| 亚洲精品女同在线观看| 国产三级精品av在线| 97碰碰碰人妻无码视频| 中文人妻无码一区二区三区在线| 亚洲色欲Aⅴ无码一区二区| 蜜臀av一区二区三区人妻在线| 国产不卡视频在线观看| 少妇被粗大的猛烈进出69影院一| 97无码人妻Va一区二区三区| 视频一区中文字幕亚洲| 亚洲中文字幕精品乱码2021| 99精品国产在热久久无码 | 乱中年女人伦av三区| 中国精品久久久久国产| 国产精品亚洲一区二区三区16| 日韩aⅴ人妻无码一区二区| 国产自国产在线观看免费观看| 亚洲国产精品久久久久秋霞1| 国产免费的视频一区二区| 久久99热只有频精品8国语| 日本一卡2卡3卡4卡无卡免费网站 亚洲av无码一区二区三区不卡 | 亚洲av中文无码乱人伦在线咪咕| 人妻少妇精品视中文字幕免费| 亚洲avav天堂av在线网毛片| 免费中文熟妇在线影片| 中文字幕东京热一区二区人妻少妇 |