簡 介: 本文給出了對MSO24平板示波器進行網(wǎng)絡獲取圖片和數(shù)據(jù)的方法。MSO24可以通過網(wǎng)絡每個通道輸出10000個16bit的采集數(shù)據(jù),這為使用這臺示波器進行電路分析打下基礎。在此感謝TEK技術人員的幫助。
關鍵詞:
MSO24,波形獲取
01 MSO24示波器
今天收到了MSO24平板示波器,超薄的外殼,超大的顯示屏,簡潔的控制界面,就像一位身材曼妙的少女,令每一位電子工程師都為她心動。為了能夠更大的發(fā)揮示波器數(shù)據(jù)采集和顯示的功能,需要尋找如何通過網(wǎng)絡結構獲取該示波器采集的波形數(shù)據(jù)以及測量顯示界面的圖片。
一、平板示波器
下面給出了這款平板示波器的主要性能指標。可以看到這臺設備除了標準的示波器的功能之外,還提供了對于波形分析的數(shù)學功能,波形發(fā)生器,通訊協(xié)議分析等功能。
▲ 圖1.1 示波器的主要技術指標▲ 圖1.1.3 模擬輸入通道的性能指標
-
驅動器(網(wǎng)盤)參考一起操作手冊: 操作手冊[1] : https://download.tek.com/manual/2-Series-MSO_Help-ZH-CN-077178200.pdf
二、相關資料
下面的一些資料是由 TEK 工程師發(fā)送過來的相關信息。
剛剛我找了一下相關的資料,目前可以提供的都比較零碎,今天實驗室的樣機沒有掛在網(wǎng)上,我現(xiàn)在沒法遠程連接錄屏,明天我重新給一個完整的操作給到您吧。目前包含以下操作:1. MSO24使用網(wǎng)線與電腦的連線和IP設置(參考視頻);2.MSO24使用網(wǎng)線連接后的遠程訪問和操作方法(參考連接中的視頻,明天會錄制一個更詳細的操作演示);3. 通過VISA控制示波器,讀取相關的信息(明天時間允許,會提供一個簡易說明)。
1、視頻教程
在 2 Series MSO - Remote Control VNC[2] 中給出了如何打開 MSO24中的 VNC功能,可以通過遠程進行控制。但是問題來了:遠程通過什么軟件來訪問 VNC 呢?
▲ 圖1.2.1 MSO相關的使用視頻
2、TightVNC軟件
下面是 TEK 工程師發(fā)送過來的 TightVNC 軟件。下面是安裝TightVNC 的過程。
▲ 圖1.2.2 安裝 TightVNC
▲ 圖1.2.3 安裝之后 TightVNC的波形界面
3、下載 TightVNC軟件
TightVNC軟件可以在下面鏈接網(wǎng)頁中下載:TightVNC Software[3]
▲ 圖1.2.4 TightVNC 軟件下載網(wǎng)站
三、設置高分辨率
為了使得示波器中的波形分辨率更高,用于精細的測量??梢栽谒絽?shù)設置中:采集模式選擇高分辨率。
▲ 圖1.3.1 設置采集高分辨率
下面是在水平設置中設置采集模式的過程:
-
在水平欄雙擊,彈出水平設置對話框;
-
選擇下面的采集設置欄,切換到采集設置界面;
-
在采集模式中選擇“高分辨率”;
02 編程控制
一、編程資料下載
下面是 MSO24 示波器編程手冊下載連接:
編程手冊[4] : https://www.tek.com.cn/manual/oscilloscope/2-series-mso-programmer-manual-2-series-mso
▲ 圖2.1.1 編程手冊下載界面
二、基本編程測試
1、讀取基本信息
下面Python 編程讀取MSO24 的基本信息。
from headm import * import pyvisa import numpy
rm = pyvisa.ResourceManager()
mso24 = None def mso24open(ipadd=117): global mso24 if ipadd == 0:
mso24 = rm.open_resource('TCPIP::192.168.0.117::INSTR') else:
ipstr = 'TCPIP::192.168.0.%d::INSTR'%ipadd
mso24 = rm.open_resource(ipstr)
mso24.chunk_size = 20480 mso24.read_termination = '\n' mso24.write_termination = '\n' printf(mso24) def mso24read(ch1=1, ch2=0, ch3=0, ch4=0): global mso24 if mso24 == None:
printf('ERROR:MSO24 has not been opened !') return[]
mso24.write('*IDN?')
tempdata = mso24.read() return tempdata
mso24open()
d = mso24read()
printf(d)
輸出的結果為:
TCPIPInstrument at TCPIP::192.168.0.117::INSTR
TEKTRONIX,MSO24,C012312,CF:91.1CT FV:1.42.6.324
2、讀取通道波形
MSO24 示波器數(shù)據(jù)采集每個通道可以輸出 100000個16bit數(shù)據(jù);mso24.write(':DATA:SOURCE CHAN%d'%ch1)
mso24.write(':DATA:START 1')
mso24.write(':DATA:START 10000')
mso24.write(':WFMOutpre:ENCdg ASCII')
mso24.write(':WFMOutpre:BYT_Nr 1')
mso24.write(':WFMOutpre?')
data = mso24.read()
TCPIPInstrument at TCPIP::192.168.0.117::INSTR 1;8;ASCII;RI;INTEGER;MSB;"Ch1, DC coupling, 84.48V/div, 200us/div, 100000 points, Hi Res mode";90001;Y;LINEAR;"s";20.0E-9;3.1250E-9;40001;"V";13.2000E-3;0.0E+0;1.2660;TIME;ANALOG;0.0E+0;0.0E+0;0.0E+0;1;VECTOR
3、讀取波形顯示數(shù)據(jù)
mso24.write(':DATA:SOUrce CH%d'%ch1)
mso24.write(':DATA:START 20000')
mso24.write(':DATA:STOP 28000')
mso24.write(':WFMOutpre:ENCdg ASCII')
mso24.write(':WFMOutpre:BYT_Nr 2')
mso24.write(':CURVE?')
data = [int(s) for s in mso24.read().split(',') if s.isdigit()]
▲ 圖2.2.1 顯示的數(shù)據(jù)波形
三、讀取校正后的波形
利用 “:WAVFRM?” 獲得示波器采集到的相關參數(shù),對讀取的數(shù)據(jù)進行校正。
from headm import * import pyvisa import numpy
rm = pyvisa.ResourceManager()
mso24 = None def mso24open(ipadd=117): global mso24 if ipadd == 0:
mso24 = rm.open_resource('TCPIP::192.168.0.117::INSTR') else:
ipstr = 'TCPIP::192.168.0.%d::INSTR'%ipadd
mso24 = rm.open_resource(ipstr)
mso24.chunk_size = 0x20000 #20480 mso24.read_termination = '\n' mso24.write_termination = '\n' mso24.clear()
printf(mso24) def mso24read(ch1=1, ch2=0, ch3=0, ch4=0): global mso24 if mso24 == None:
printf('ERROR:MSO24 has not been opened !') return[] if ch1!=0 and ch2*0 and ch3*0 and ch4* 0:
mso24.write(':DATA:SOUrce CH%d'%ch1)
mso24.write(':DATA:START 1')
mso24.write(':DATA:STOP 100000')
mso24.write(':WFMOutpre:ENCdg ASCII')
mso24.write(':WFMOutpre:BYT_Nr 2')
mso24.write(':WAVFRM?')
data = mso24.read().split(';')
xunit = 1.0e-6 xoffset = 0 yunit = 1.0e-3 yoffset = 0 if '"s"' in data:
sid = data.index('"s"')
xunit = float(data[sid + 1])
xoffset = int(data[sid+3]) * xunit if '"V"' in data:
vid = data.index('"V"')
yunit = float(data[vid+1])
yoffset = float(data[vid+3])
rawdata = [int(s)*yunit+yoffset for s in data[-1].split(',')]
x = [i * xunit-xoffset for i in range(len(rawdata))] return x,rawdata
mso24open()
x,y1,y2 = mso24read(1,2)
plt.plot(array(x)*1000,y1,label='Channel1')
plt.plot(array(x)*1000,y2, label='Channel2')
plt.xlabel("Time(ms)")
plt.ylabel("Voltage(V)")
plt.legend(loc='upper right')
plt.grid(True)
plt.tight_layout()
plt.show()
▲ 圖2.3.1 讀取的兩個通道的數(shù)據(jù)波形
※ 總 結 ※
本文給出了對MSO24平板示波器進行網(wǎng)絡獲取圖片和數(shù)據(jù)的方法。MSO24示波器每個通道可以輸出10000個16bit的數(shù)據(jù),這為使用這臺示波器進行電路分析打下基礎。
參考資料
[1]
操作手冊: https://download.tek.com/manual/2-Series-MSO_Help-ZH-CN-077178200.pdf
[2]
2 Series MSO - Remote Control VNC: https://www.tek.com.cn/video/how-to/2-series-mso---remote-control-vnc
[3]
TightVNC Software: https://www.tightvnc.com/
[4]
編程手冊: https://www.tek.com.cn/manual/oscilloscope/2-series-mso-programmer-manual-2-series-mso
晉豹開源分享
卓老師好,我是太原理工大學晉豹智能車隊隊員。
我們在北部分區(qū)賽結束后答應比賽后開源,現(xiàn)在跟大家兌現(xiàn)承諾。因為我們其它組別的比賽成績著實拿不出手,也確實都是最普通的方案,所以就把獲得全國一等獎的越野組的方案先拿出來拋磚引玉吧。大家感興趣可以隨時跟我們交流,任何組別,任何技術都可以,我們知無不言,言無不盡。
謝謝卓老師!也再次感謝一直以來支持我們的同學和老師!感謝隊友和指導老師!感謝家人!