有沒有這樣一種情況,就是通過腳本控制你的測(cè)量設(shè)備,比如示波器,那是不是就可以不用人為的去分析數(shù)據(jù),直接由腳本就可以完成整個(gè)操作了。
是的,有這樣一種方式就可以,就是利用python中的pyvisa庫(kù),實(shí)現(xiàn)這樣的控制。
pyvisa是什么?
pyvisa中的visa全程是虛擬一起軟件結(jié)構(gòu)(Virtual Instrument Software Architecture),是python的一個(gè)第三方庫(kù),可以用來控制各種測(cè)量?jī)x器,比如示波器,萬用表,頻譜儀等等。并且它支持包括Ethernet(LAN), USB, GPIB(通用接口總線), RS232(一種串行通訊接口)等接口的數(shù)據(jù)接入。
在python中,可以直接通過”pip install pyvisa”就可以安裝這個(gè)實(shí)用的測(cè)量?jī)x器第三方庫(kù)。
在安裝了pyvisa之后,為了保證pyvisa能夠正常工作,還需要安裝NI-VISA庫(kù),然后就可以開始連接相應(yīng)的設(shè)備,也就是通過支持的接口。
LAN:[TCPIP0::192.168.0.1::inst0::INSTR]
GPIB:[GPIB0::1::INSTR]
Serial:[serial('COM1','BaudRate',4800)]
USB:[USB::XXX::XXX::XXX::INSTR]
所以連接示波器的指令就是連接這個(gè)接口地址,假設(shè)接口是個(gè)網(wǎng)口地址
Visa_address=”[TCPIP0::192.168.0.1::inst0::INSTR]”
然后建立管理器,再去連接這個(gè)地址
Rm=pyvisa.ResourceManager()
Scope=rm.open_resource(visa_address)
此時(shí)建立了一個(gè)示波器對(duì)象Scope,可以對(duì)它進(jìn)行控制,比如寫入和讀取,方法分別是write(), query()。
常用的寫入項(xiàng):
“*RST”: 重啟示波器
“AUTOSET EXECUTE”: 自動(dòng)設(shè)置示波器
“HORIZONTAL”: 采樣率
常用的讀取項(xiàng):
“MEASU:MEAS1: xxx”: 添加測(cè)量項(xiàng)
“MEASU:MEAS1: SOU CH1”: 設(shè)置測(cè)量通道為1
“MEASU:MEAS1: xxx?”: 讀取測(cè)量結(jié)果
獲取示波器信息方式有兩種,一種是用query(‘*idn?’),一種是先write(‘*idn?’)寫入,然后使用read()讀的方式。就可以獲得示波器的廠家型號(hào),儀器型號(hào),序列號(hào),固件的版本號(hào)等等信息。
示波器中最重要的就是所抓取的波形了,那么它的波形數(shù)據(jù)如何讀取。
對(duì)于波形數(shù)據(jù)的抓取,可以利用query_ascii_values去讀取ASCII數(shù)據(jù),或者讀取二進(jìn)制數(shù)據(jù)的query_binary_values。
最后就是工具的關(guān)閉了,也就是連接上的示波器對(duì)象和整個(gè)測(cè)量?jī)x器管理器。
Scope.close()
Rm.close()
可以看到,python控制示波器的指令中,有很多指令是示波器所固有的,那如何去理解這些指令到底是干什么用的呢?對(duì)于這個(gè),其實(shí)這些指令都可以叫SCIP命令,它們可以通過去廠家的官方網(wǎng)站進(jìn)行下載。
進(jìn)入官網(wǎng)之后,找到相應(yīng)的示波器型號(hào),然后下載它的manual(說明書),一般名字會(huì)是編程手冊(cè),比如下圖:
比如說獲取示波器長(zhǎng)度的指令“horizontal: recordlength?”就可以從中找到。
獲取示波器長(zhǎng)度指令:
Record=int(scope.query(‘horizontal: recordlength?’))
Scope.write(‘date:stop {}’.format(record))
在示波器正式連接并調(diào)整好參數(shù)之后,就可以看是采集了,可以選擇單次或多次運(yùn)行。
Scope.write(‘acquire:stopafter SEQINCE’) #單次運(yùn)行
Scope.write(‘a(chǎn)cquire:stopafter run’) #多次運(yùn)行
運(yùn)行之后,如何采集示波器的數(shù)據(jù),可以通過諸如指令:scope.query_binary_values(‘curve?’, datatype=’h’,container=np.array)獲取到它的數(shù)據(jù),如果想具體到某一項(xiàng),可以在相應(yīng)示波器manual中尋找。
不過上面采集的數(shù)據(jù)會(huì)比較亂,要通過公式轉(zhuǎn)換,才能得到示波器中我們看到的電壓值。
最后,在有是電壓值和時(shí)間參數(shù)之后,就可以得到坐標(biāo)系的X軸和Y軸,然后就可以繪制出示波器的圖像,一般會(huì)用到Python中的圖形繪制庫(kù)matplotlib和科學(xué)計(jì)算庫(kù)numpy。
-
示波器
+關(guān)注
關(guān)注
113文章
6267瀏覽量
185384 -
軟件
+關(guān)注
關(guān)注
69文章
4973瀏覽量
87734 -
自動(dòng)化控制
+關(guān)注
關(guān)注
4文章
242瀏覽量
20456 -
測(cè)量?jī)x器
+關(guān)注
關(guān)注
3文章
802瀏覽量
42244
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論