新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > Matlab與數(shù)字示波器的通信

Matlab與數(shù)字示波器的通信

作者: 時間:2006-05-07 來源:網(wǎng)絡 收藏

摘要:Windows環(huán)境下Matlab與TDS系列數(shù)字示波器的通信過程,給出了相關的通信程序,并在Matlab中對示波器讀取的波形數(shù)據(jù)進行了頻域處理。從而表明它們之間的通信在方面具有重要的實際意義。

本文引用地址:http://www.butianyuan.cn/article/242264.htm

關鍵詞:Matlab 串行通信 示波器

Tektronix公司的TDS系列數(shù)字實時示波器在國內(nèi)已經(jīng)得到廣泛的應用,與其配套的擴展模塊TDS2CM和TDS2MM模塊具有與外部設備雙向通訊的能力,可直接與打印機、微機連接,使波形的存儲打印等工作變得十分方面,其中TDS2MM還具有FFT功能,可以對波形進行實時的頻譜分析。同機配送的Wavestar軟件提供了PC機與示波器雙向通訊的功能,具有良好的用戶界面,其其數(shù)據(jù)處理功能卻是很少,僅能對波形的幅值、頻率、周期、上升和下降時間等進行測量,并且大多數(shù)用戶出于價格考慮而配置TDS2CM模塊,它不具備TDS2MM模塊的頻譜分析功能,這就限制了示波器的進一步開發(fā)利用。Mathworks公司的著名數(shù)值計算軟件Matlab具有強大的數(shù)值計算功能,它的Instrument Control Toolbox提供了強大的外設控制功能,可以對GPIB、RS-232、VXI、Centronics端口進行控制。用Matlab與TDS2CM模塊配合可以實現(xiàn)示波器與微機之間的數(shù)據(jù)通訊,利用Matlab強大的數(shù)值處理、矩陣運算功能可對示波器記錄的波形數(shù)據(jù)進行分析和處理。

1 通信原理

Matlab中的Instrument Control Toolbox包括兩大部件:M文件函數(shù)和接口驅(qū)動適配器。這兩部件提供了Matlab與外設的通訊功能,其與串行通訊端口的通訊原理如圖1所示。

由圖1可見,Matlab的兩大部件提供了一條外設與Matlab之間的交互通道,使用戶與外設之間進行信息獲取和傳送。同許多高級語言一樣,Matlab通過調(diào)用M文件函數(shù)來創(chuàng)建設備對象,得到設備的文件句柄,而設備驅(qū)動程序作為操作系統(tǒng)中直接控制硬件的模塊,是鏈接操作系統(tǒng)內(nèi)核與系統(tǒng)外部設備I/O操作的關鍵模塊。它將具體的硬件細節(jié)隱藏實現(xiàn)對外設操作的透明,因此Matlab可以象操作文件一樣實現(xiàn)對外設的讀、寫操作。讀寫時的數(shù)據(jù)傳輸格式、輸入輸出緩沖區(qū)大小以及讀寫溢出時間等由圖1中的屬性值定義,其根據(jù)為具體的通訊端口和通訊方式以及數(shù)據(jù)大小。示波器所產(chǎn)生的事件和狀態(tài)被示波器保存在標準事件狀態(tài)寄存器(SESR)狀態(tài)字節(jié)寄存器(SBR)和事件隊列中,供(Matlab)回調(diào)函數(shù)讀取。同時用戶可以通過設置設備事件狀態(tài)使能寄存器(DESER)以及事件狀態(tài)能寄存器(ESER)、服務請求使能寄存器(SRER)這三個使能寄存器來控制何種事件或狀態(tài)被保存在保存在狀態(tài)寄存器和事件隊列中。Matlab對示波器的設置詢問命令由fprintf函數(shù)以字符串的形式輸出。設置和詢問命令由具體的示波器廠商定義,其格式為:Header Arguments,多個參數(shù)之間由逗號相隔。當以二進制格式對示波器的波形進行數(shù)據(jù)讀寫時,讀寫數(shù)據(jù)與示波器實際數(shù)據(jù)換算由下式給出:

Xn=Xzero+Xincr·n

Yn=Yzero+Ymult(yn-Yoff) (1)

其中,yn為輸入、輸出緩沖區(qū)中的數(shù)據(jù),n為數(shù)據(jù)個數(shù),Xn、Yn為示波器中實際采樣時間與信號幅值。

2 數(shù)據(jù)傳輸

RS-232串行通信接口被廣泛應用于近距離的計算機和終端之間的相互通信當中,TDS210示波器也配接有DB9型插件的RS-232接口。當采用硬件握手方式進行通信控制時,示波器使用CD(Carrier Detect)、CTS(Clear To Send)、RI(Ring Indicator)三個控制信號表明其當前狀態(tài),而Matlab使用RTS(Request To Send)信號請求數(shù)據(jù)發(fā)送。由于采用異步通信協(xié)議對通信雙方的時鐘同步要求不太嚴格,由數(shù)據(jù)的起始位作為雙方通信的同步信號,因此Matlab與示波器之間采用異步通信,編制的從示波器讀取數(shù)據(jù)的部分程序如下:

%創(chuàng)造設備對象

g=serial('com1');

%通信初始化g.InputBufferSize=10000;

g.timeout=10;

%設定傳輸波特率為9600b/s,字符格式為:8位數(shù)據(jù)位,1位停止位,終止符為LF,沒有奇偶校驗位,使用硬件握手方式。

g.BaudRate=9600;

g.Parity='none';

g.StopBits=1;

g.Terminator='LF';

g.FlowControl='hardware';

%連接設備對象

fopen(g)

%數(shù)據(jù)傳輸

fprintf(g,'select: refa on');

fprintf(g,'data:source refa');

fprintf(g,'data:encdg srib');

fprintf(g,'data:start 1');

fprintf(g,'data:stop 2500');

fprinft(g,data:width 2');

fprintf(g,'wfmpre:xzero?');

xzero=fscanf(g,'%f');

fprintf(g,'wfmpre:xincr?');

xincr=fscanf(g,'%f');

fprintf(g,'wfmpre:yzero?');

yzero=fscanf(g,'%f');

fprintf(g,wfmpre:ymult?');

ymult=fscanf(g,'%f');

fprintf(g,'wfmpre:yoff?');

yoff=fscanf(g,'%f');

fprintf(g,'curve?');

out=fread(g,2500,'int16');

.

.

.

%釋放設備對象與端口

fclose(g);

delete(g);

freeserial('com1');

用上述程序?qū)κ静ㄆ鬟M行讀取的方波信號如圖2所示。

3 數(shù)據(jù)分析與實例

從示波器讀取的數(shù)據(jù)按(1)式轉(zhuǎn)換后就是實現(xiàn)測量所得的波形數(shù)據(jù)值,相應的采樣頻率為1/Xincr。L1空間的信號滿足絕對可積條件,可以用快速傅立葉變換算法直接進行頻譜分析。圖3為對讀取的方波所做的FFT結(jié)果。由于對采樣信號的截取相當于對信號加矩形窗,不可避免地引起頻譜泄漏和混疊,在滿足采樣定理和保證示波器波形周期完整的條件下,所做的頻譜分析結(jié)果與示波器所得的波形周期數(shù)無關。對于噪聲信號可作功率譜估計,上述采樣信號的功率譜估計如圖4所示。

從上面的數(shù)據(jù)通信過程和對采樣信號頻譜分析及功率譜估計實例可以看出:Matlab與示波器組成了一個信號采集及分析系統(tǒng),示波器在其間起數(shù)據(jù)采集和存儲作用,而Matlab則實現(xiàn)對采樣得到的信號進行分析和處理。

通信相關文章:通信原理




評論


相關推薦

技術專區(qū)

關閉