Matlab與數(shù)字示波器的通信
摘要:Windows環(huán)境下Matlab與TDS系列數(shù)字示波器的通信過程,給出了相關(guān)的通信程序,并在Matlab中對(duì)示波器讀取的波形數(shù)據(jù)進(jìn)行了頻域處理。從而表明它們之間的通信在數(shù)字信號(hào)處理方面具有重要的實(shí)際意義。
本文引用地址:http://m.butianyuan.cn/article/242264.htm關(guān)鍵詞:Matlab 串行通信 示波器 數(shù)字信號(hào)處理
Tektronix公司的TDS系列數(shù)字實(shí)時(shí)示波器在國(guó)內(nèi)已經(jīng)得到廣泛的應(yīng)用,與其配套的擴(kuò)展模塊TDS2CM和TDS2MM模塊具有與外部設(shè)備雙向通訊的能力,可直接與打印機(jī)、微機(jī)連接,使波形的存儲(chǔ)打印等工作變得十分方面,其中TDS2MM還具有FFT功能,可以對(duì)波形進(jìn)行實(shí)時(shí)的頻譜分析。同機(jī)配送的Wavestar軟件提供了PC機(jī)與示波器雙向通訊的功能,具有良好的用戶界面,其其數(shù)據(jù)處理功能卻是很少,僅能對(duì)波形的幅值、頻率、周期、上升和下降時(shí)間等進(jìn)行測(cè)量,并且大多數(shù)用戶出于價(jià)格考慮而配置TDS2CM模塊,它不具備TDS2MM模塊的頻譜分析功能,這就限制了示波器的進(jìn)一步開發(fā)利用。Mathworks公司的著名數(shù)值計(jì)算軟件Matlab具有強(qiáng)大的數(shù)值計(jì)算功能,它的Instrument Control Toolbox提供了強(qiáng)大的外設(shè)控制功能,可以對(duì)GPIB、RS-232、VXI、Centronics端口進(jìn)行控制。用Matlab與TDS2CM模塊配合可以實(shí)現(xiàn)示波器與微機(jī)之間的數(shù)據(jù)通訊,利用Matlab強(qiáng)大的數(shù)值處理、矩陣運(yùn)算功能可對(duì)示波器記錄的波形數(shù)據(jù)進(jìn)行分析和處理。
1 通信原理
Matlab中的Instrument Control Toolbox包括兩大部件:M文件函數(shù)和接口驅(qū)動(dòng)適配器。這兩部件提供了Matlab與外設(shè)的通訊功能,其與串行通訊端口的通訊原理如圖1所示。
由圖1可見,Matlab的兩大部件提供了一條外設(shè)與Matlab之間的交互通道,使用戶與外設(shè)之間進(jìn)行信息獲取和傳送。同許多高級(jí)語言一樣,Matlab通過調(diào)用M文件函數(shù)來創(chuàng)建設(shè)備對(duì)象,得到設(shè)備的文件句柄,而設(shè)備驅(qū)動(dòng)程序作為操作系統(tǒng)中直接控制硬件的模塊,是鏈接操作系統(tǒng)內(nèi)核與系統(tǒng)外部設(shè)備I/O操作的關(guān)鍵模塊。它將具體的硬件細(xì)節(jié)隱藏實(shí)現(xiàn)對(duì)外設(shè)操作的透明,因此Matlab可以象操作文件一樣實(shí)現(xiàn)對(duì)外設(shè)的讀、寫操作。讀寫時(shí)的數(shù)據(jù)傳輸格式、輸入輸出緩沖區(qū)大小以及讀寫溢出時(shí)間等由圖1中的屬性值定義,其根據(jù)為具體的通訊端口和通訊方式以及數(shù)據(jù)大小。示波器所產(chǎn)生的事件和狀態(tài)被示波器保存在標(biāo)準(zhǔn)事件狀態(tài)寄存器(SESR)狀態(tài)字節(jié)寄存器(SBR)和事件隊(duì)列中,供(Matlab)回調(diào)函數(shù)讀取。同時(shí)用戶可以通過設(shè)置設(shè)備事件狀態(tài)使能寄存器(DESER)以及事件狀態(tài)能寄存器(ESER)、服務(wù)請(qǐng)求使能寄存器(SRER)這三個(gè)使能寄存器來控制何種事件或狀態(tài)被保存在保存在狀態(tài)寄存器和事件隊(duì)列中。Matlab對(duì)示波器的設(shè)置詢問命令由fprintf函數(shù)以字符串的形式輸出。設(shè)置和詢問命令由具體的示波器廠商定義,其格式為:Header Arguments,多個(gè)參數(shù)之間由逗號(hào)相隔。當(dāng)以二進(jìn)制格式對(duì)示波器的波形進(jìn)行數(shù)據(jù)讀寫時(shí),讀寫數(shù)據(jù)與示波器實(shí)際數(shù)據(jù)換算由下式給出:
Xn=Xzero+Xincr·n
Yn=Yzero+Ymult(yn-Yoff) (1)
其中,yn為輸入、輸出緩沖區(qū)中的數(shù)據(jù),n為數(shù)據(jù)個(gè)數(shù),Xn、Yn為示波器中實(shí)際采樣時(shí)間與信號(hào)幅值。
2 數(shù)據(jù)傳輸
RS-232串行通信接口被廣泛應(yīng)用于近距離的計(jì)算機(jī)和終端之間的相互通信當(dāng)中,TDS210示波器也配接有DB9型插件的RS-232接口。當(dāng)采用硬件握手方式進(jìn)行通信控制時(shí),示波器使用CD(Carrier Detect)、CTS(Clear To Send)、RI(Ring Indicator)三個(gè)控制信號(hào)表明其當(dāng)前狀態(tài),而Matlab使用RTS(Request To Send)信號(hào)請(qǐng)求數(shù)據(jù)發(fā)送。由于采用異步通信協(xié)議對(duì)通信雙方的時(shí)鐘同步要求不太嚴(yán)格,由數(shù)據(jù)的起始位作為雙方通信的同步信號(hào),因此Matlab與示波器之間采用異步通信,編制的從示波器讀取數(shù)據(jù)的部分程序如下:
%創(chuàng)造設(shè)備對(duì)象
g=serial('com1');
%通信初始化g.InputBufferSize=10000;
g.timeout=10;
%設(shè)定傳輸波特率為9600b/s,字符格式為:8位數(shù)據(jù)位,1位停止位,終止符為L(zhǎng)F,沒有奇偶校驗(yàn)位,使用硬件握手方式。
g.BaudRate=9600;
g.Parity='none';
g.StopBits=1;
g.Terminator='LF';
g.FlowControl='hardware';
%連接設(shè)備對(duì)象
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');
.
.
.
%釋放設(shè)備對(duì)象與端口
fclose(g);
delete(g);
freeserial('com1');
用上述程序?qū)κ静ㄆ鬟M(jìn)行讀取的方波信號(hào)如圖2所示。
3 數(shù)據(jù)分析與實(shí)例
從示波器讀取的數(shù)據(jù)按(1)式轉(zhuǎn)換后就是實(shí)現(xiàn)測(cè)量所得的波形數(shù)據(jù)值,相應(yīng)的采樣頻率為1/Xincr。L1空間的信號(hào)滿足絕對(duì)可積條件,可以用快速傅立葉變換算法直接進(jìn)行頻譜分析。圖3為對(duì)讀取的方波所做的FFT結(jié)果。由于對(duì)采樣信號(hào)的截取相當(dāng)于對(duì)信號(hào)加矩形窗,不可避免地引起頻譜泄漏和混疊,在滿足采樣定理和保證示波器波形周期完整的條件下,所做的頻譜分析結(jié)果與示波器所得的波形周期數(shù)無關(guān)。對(duì)于噪聲信號(hào)可作功率譜估計(jì),上述采樣信號(hào)的功率譜估計(jì)如圖4所示。
從上面的數(shù)據(jù)通信過程和對(duì)采樣信號(hào)頻譜分析及功率譜估計(jì)實(shí)例可以看出:Matlab與示波器組成了一個(gè)信號(hào)采集及分析系統(tǒng),示波器在其間起數(shù)據(jù)采集和存儲(chǔ)作用,而Matlab則實(shí)現(xiàn)對(duì)采樣得到的信號(hào)進(jìn)行分析和處理。
通信相關(guān)文章:通信原理
評(píng)論