Matlab與TDS系列數字示波器的通信過(guò)程
RS-232串行通信接口被廣泛應用于近距離的計算機和終端之間的相互通信當中,TDS210示波器也配接有DB9型插件的RS-232接口。當采用硬件握手方式進(jìn)行通信控制時(shí),示波器使用CD、CTS、RI三個(gè)控制信號表明其當前狀態(tài),而Matlab使用RTS信號請求數據發(fā)送。由于采用異步通信協(xié)議對通信雙方的時(shí)鐘同步要求不太嚴格,由數據的起始位作為雙方通信的同步信號,因此Matlab與示波器之間采用異步通信,編制的從示波器讀取數據的部分程序如下:
%創(chuàng )造設備對象
g=serial(com1);
%通信初始化g.InputBufferSize=10000;
g.timeout=10;
%設定傳輸波特率為9600b/s,字符格式為:8位數據位,1位停止位,終止符為L(cháng)F,沒(méi)有奇偶校驗位,使用硬件握手方式。
g.BaudRate=9600;
g.Parity=none;
g.StopBits=1;
g.Terminator=LF;
g.FlowControl=hardware;
%連接設備對象
fopen(g)
%數據傳輸
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);
用上述程序對示波器進(jìn)行讀取的方波信號如圖2所示。
3 數據分析與實(shí)例
從示波器讀取的數據按(1)式轉換后就是實(shí)現測量所得的波形數據值,相應的采樣頻率為1/Xincr。L1空間的信號滿(mǎn)足絕對可積條件,可以用快速傅立葉變換算法直接進(jìn)行頻譜分析。圖3為對讀取的方波所做的FFT結果。由于對采樣信號的截取相當于對信號加矩形窗,不可避免地引起頻譜泄漏和混疊,在滿(mǎn)足采樣定理和保證示波器波形周期完整的條件下,所做的頻譜分析結果與示波器所得的波形周期數無(wú)關(guān)。對于噪聲信號可作功率譜估計,上述采樣信號的功率譜估計如圖4所示。
從上面的數據通信過(guò)程和對采樣信號頻譜分析及功率譜估計實(shí)例可以看出:Matlab與示波器組成了一個(gè)信號采集及分析系統,示波器在其間起數據采集和存儲作用,而Matlab則實(shí)現對采樣得到的信號進(jìn)行分析和處理。
評論