<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

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

          作者: 時(shí)間:2006-05-07 來(lái)源:網(wǎng)絡(luò) 收藏

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

          本文引用地址:http://www.ex-cimer.com/article/242264.htm

          關(guān)鍵詞:Matlab 串行通信 示波器

          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í)語(yǔ)言一樣,Matlab通過(guò)調(diào)用M文件函數(shù)來(lái)創(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í)用戶可以通過(guò)設(shè)置設(shè)備事件狀態(tài)使能寄存器(DESER)以及事件狀態(tài)能寄存器(ESER)、服務(wù)請(qǐng)求使能寄存器(SRER)這三個(gè)使能寄存器來(lái)控制何種事件或狀態(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ù)無(wú)關(guān)。對(duì)于噪聲信號(hào)可作功率譜估計(jì),上述采樣信號(hào)的功率譜估計(jì)如圖4所示。

          從上面的數(shù)據(jù)通信過(guò)程和對(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)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();