999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于USBee DX數據采樣和LabVIEW編程的虛擬示波器

2016-08-04 01:52:57胡險峰
物理實驗 2016年7期
關鍵詞:數據采集

胡險峰

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

?

基于USBee DX數據采樣和LabVIEW編程的虛擬示波器

胡險峰

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

摘要:介紹了用LabVIEW軟件對USBee DX數據采集器編程的方法,LabVIEW通過執行系統命令模塊調用C可執行程序,實現USBee DX的控制和采集數據與LabVIEW程序間傳遞,實現用計算機模擬虛擬雙蹤示波器.

關鍵詞:數據采集;虛擬示波器;LabVIEW;USBee DX

利用數據采集卡或聲卡,編制程序在微機上模擬示波器[1-7],可用于各種物理實驗. 廉價的數據采集卡或聲卡,由于數據采集速度較低,虛擬的示波器帶寬小,不能滿足信號頻率較高的場合. USBee DX數據采集器使用USB接口,采樣速率可達24 MB/s,價格便宜,有多個數字模入和模出通道,主要用于虛擬邏輯分析器;還有2個獨立的8位AD模入通道可用于虛擬示波器. 用USBee DX數據采集器使用手冊[8]介紹的API函數編寫LabVIEW庫函數節點調用不成功,則利用USBee DX數據采集器安裝程序提供的工具創建器的C原程序,修改創建兩通道AD變換可執行程序,通過LabVIEW執行系統命令模塊調用該可執行程序,將USBee DX采集到的數據通過執行系統命令模塊的標準輸出傳遞到LabVIEW程序中. 用For循環、字符截取模塊和字符數據轉換模塊重新組織數據隊列,再從數據隊列中拆分出數字通道信號和2個AD模入通道信號. 利用LabVIEW編程進行后續的信號處理做成虛擬示波器.

1兩通道AD變換可執行程序

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

#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函數允許的最小采樣速率為1 MB/s,最小采樣長度為65 536. 當信號頻率低時,要測量到幾個周期的信號,要增大采樣時間,則采樣長度太長,用printf方式和LabVIEW通過執行系統命令模塊調用,來傳遞數據的時間太長,程序運行速度很慢. 對于低頻信號,C可執行程序按最低采樣速率1 MB/s采樣,盡管采樣長度會到數倍或幾十倍最小采樣長度,由于采樣速率高耗時還可以接受. 在數據傳遞時增大步長,即數據間隔,虛擬地調整采樣速率,可以減少數據傳遞量,縮短數據傳遞時間. 在LabVIEW程序中相應調大繪圖點的時間間隔,以保持繪圖和采樣的總時長一致.

2LabVIEW程序

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

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

圖1 虛擬示波器主程序

經1個For 循環語句框,將C可執行程序傳遞的16進制字符串重新分割成8個字符1組,即4 Bytes 1組的數據隊列,其中低16位為16個數字通道的信號,高16位為2個模擬通道信號,這其中低8位為1號模擬通道信號,高8位為2號模擬通道信號. 用字符截取模塊和字符數據轉換模塊重新組織數據隊列,再經拆分數字模塊,從數據隊列中拆分出數字通道信號和2個AD模入通道信號. 再按采樣的電壓分辨率換算成電壓值后,經過Trigger模塊后進行增益控制和垂直位移控制. 最后用捆綁模塊將數據隊列和時基數據捆綁成信號簇送波形圖模塊顯示信號波形. 數據隊列變換成動態數據送單頻測量模塊和幅值電平測量模塊,測量顯示信號的頻率和峰-峰值.

按照USBee DX使用手冊[8]介紹的數字和模擬信號采集函數StartCapture編寫USBee DX采集卡采樣觸發控制參量,生成的C可執行程序沒有觸發控制功能. 觸發控制由LabVIEW程序實現,虛擬示波器主程序中觸發控制模塊Trigger,虛擬示波器觸發同步功能,改編自LabVIEW資源庫中數字虛擬示波器示例,將其中的觸發同步程序創建成新的IV子模塊,取名“Trigger”模塊,該模塊可以選擇觸發源、觸發電平和觸發極性.

主程序框左側中下部分的程序用于控制4個分別綁定在信號曲線上的游標,通過控制和讀取波形圖模塊的游標屬性,決定游標是否可見,以及顯示游標之間的差值.

虛擬示波器前面板見圖2,時基和增益調節分度均按傳統示波器分度值設置,手動調節縮放. 起用波形圖模塊的游標功能,還可以拖動游標線測量信號的電壓差和時間差. 主程序包含自動測量2個通道信號的峰-峰值和頻率的功能,在前面板上自動顯示信號的峰-峰值和頻率.

圖2 程序運行前面板

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

3結束語

USBee DX數據采集器的價格比市面上的一些USB接口或PCI接口的AD卡要低,而采樣速率要高得多. 雖然,該AD卡提供的API函數不支持LabVIEW的庫函數節點調用,不便于結合LabVIEW強大的信號處理分析功能. 通過LabVIEW調用可執行程序功能,可以實現USBee DX采樣數據與LabVIEW程序對接,發揮USBee DX數據采集器的價格低、采樣速率高、LabVIEW信號處理分析功能強的優勢. 盡管該AD口只有8位的采樣分辨率,輸入范圍-10~10 V,電壓分辨率僅有約78 mV, 配上10∶1的測量筆,對幾V到幾十V的電壓信號,這個電壓分辨率已經夠用. 對于信號幅度為幾V的調相信號,如外腔調制激光二極管自混合干涉信號,可以進一步設計成傅里葉分量提取、解調和信息分析的虛擬儀器,解調出來的位移信號可達到與12位AD卡相同的位移分辨率.

參考文獻:

[1]胡險峰. 用微機觀測交流磁滯回線[J]. 物理實驗,1997,17(1):19-20,18.

[2]冷國華. 電腦示波器[J]. 物理實驗,2004,24(3):28-30.

[3]戴新宇,王群,閆長春. 基于虛擬示波器動態判別溶液濃度[J]. 物理實驗,2004,24(6):44-46.

[4]胡險峰,朱世國. 激光二極管反饋干涉的實驗觀測[J]. 物理實驗,2006,26(3):3-7,15.

[5]余觀夏,王軍,阮錫根. 基于聲卡和LabVIEW測量金屬的動態楊氏模量[J]. 物理實驗,2007,27(8):6-9.

[6]陳東生,熊慧萍,王瑩. 以虛擬儀器為平臺的聲學實驗[J]. 物理實驗,2008,28(2):26-29.

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

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

[責任編輯:尹冬梅]

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

作者簡介:胡險峰(1962-),男,江西玉山人,四川大學物理科學與技術學院副教授,碩士,主要從事基礎物理實驗教學.

中圖分類號:TM935.37

文獻標識碼:A

文章編號: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

猜你喜歡
數據采集
Web網絡大數據分類系統的設計與改進
CAN總線通信技術在電梯監控系統中的應用
基于大型嵌入式系統的污水檢測系統設計
社會保障一卡通數據采集與整理技巧
基于AVR單片機的SPI接口設計與實現
CS5463在植栽用電子鎮流器老化監控系統中的應用
大數據時代高校數據管理的思考
科技視界(2016年18期)2016-11-03 22:51:40
鐵路客流時空分布研究綜述
基于廣播模式的數據實時采集與處理系統
軟件工程(2016年8期)2016-10-25 15:54:18
通用Web表單數據采集系統的設計與實現
軟件工程(2016年8期)2016-10-25 15:52:53
主站蜘蛛池模板: 国产欧美精品一区aⅴ影院| 欧美福利在线| 91无码人妻精品一区二区蜜桃| 国产在线自在拍91精品黑人| 亚洲日本精品一区二区| 动漫精品啪啪一区二区三区| 色婷婷丁香| 看国产毛片| 久久中文无码精品| 日韩欧美国产另类| 国产成人亚洲精品无码电影| 欧美一级色视频| 久久综合九色综合97婷婷| 亚洲Av激情网五月天| 狠狠色噜噜狠狠狠狠色综合久 | 91久久国产综合精品| 国产伦片中文免费观看| 久久夜色精品国产嚕嚕亚洲av| 亚洲国产91人成在线| 天天做天天爱天天爽综合区| 日韩一级毛一欧美一国产| 日本午夜三级| 亚洲中文字幕久久精品无码一区| 国产午夜一级淫片| 久久这里只精品国产99热8| 欧美视频在线播放观看免费福利资源| 黄色网在线| 91亚洲精品第一| 女人18毛片一级毛片在线| 国产福利在线观看精品| 精品国产成人av免费| 国产99精品视频| 欧美中文字幕无线码视频| 中文字幕在线日本| 亚洲九九视频| 日韩区欧美国产区在线观看| 高清欧美性猛交XXXX黑人猛交| 国产亚洲精| 国产午夜精品鲁丝片| www亚洲精品| 欧日韩在线不卡视频| 亚洲国产天堂久久综合| 成人91在线| 亚洲性日韩精品一区二区| 91久久性奴调教国产免费| 久久精品国产91久久综合麻豆自制| 亚洲AⅤ无码日韩AV无码网站| 美女被狂躁www在线观看| 全免费a级毛片免费看不卡| 妇女自拍偷自拍亚洲精品| 999福利激情视频 | 波多野结衣一二三| 国产精品99一区不卡| 91区国产福利在线观看午夜| 免费观看精品视频999| 米奇精品一区二区三区| 波多野结衣久久精品| 国产精品嫩草影院av | 国产精品白浆在线播放| 亚洲av无码人妻| 欧美黄网在线| 日韩欧美成人高清在线观看| 亚洲国产中文在线二区三区免| 国产99精品视频| 免费无遮挡AV| 99精品在线视频观看| 欧美日韩午夜| AV天堂资源福利在线观看| 成人一区专区在线观看| 精品福利网| 久久久久国色AV免费观看性色| 日韩AV无码一区| 漂亮人妻被中出中文字幕久久| 不卡无码h在线观看| 日韩在线视频网站| 国产噜噜噜| 亚洲天堂成人在线观看| 国产精品欧美日本韩免费一区二区三区不卡 | 无码国内精品人妻少妇蜜桃视频| 波多野结衣一级毛片| 国产美女人喷水在线观看| 日本人真淫视频一区二区三区|