Matlab與TDS系列數(shù)字示波器的通信過程
RS-232串行通信接口被廣泛應用于近距離的計算機和終端之間的相互通信當中,TDS210示波器也配接有DB9型插件的RS-232接口。當采用硬件握手方式進行通信控制時,示波器使用CD、CTS、RI三個控制信號表明其當前狀態(tài),而Matlab使用RTS信號請求數(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ù)無關(guān)。對于噪聲信號可作功率譜估計,上述采樣信號的功率譜估計如圖4所示。
從上面的數(shù)據(jù)通信過程和對采樣信號頻譜分析及功率譜估計實例可以看出:Matlab與示波器組成了一個信號采集及分析系統(tǒng),示波器在其間起數(shù)據(jù)采集和存儲作用,而Matlab則實現(xiàn)對采樣得到的信號進行分析和處理。
評論