《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 通信与网络 > 业界动态 > Matlab与数字示波器的通信

Matlab与数字示波器的通信

2009-02-11
作者:李国治 徐春华 余岳辉 彭昭廉

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

??? 關(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');?

??? fprintf(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í)際測(cè)量所得的波形數(shù)據(jù)值,相應(yīng)的采樣頻率為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)行分析和處理。?

參考文獻(xiàn)?

1 于英民,莫 瑋,于佳.計(jì)算機(jī)接口技術(shù).北京:電子工業(yè)出版社,1999.10?

2 王炳武, 胥 谞. MATLAB5.3實(shí)用教程.北京:中國(guó)水利水電出版社, 2000.7?

3 Programmer Manual.TDS 200-Serial Digital Real-Time Oscilloscope. Tektronix, Inc.

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請(qǐng)及時(shí)通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。

相關(guān)內(nèi)容