python控制泰克示波器捕捉触发波形

对于一些针对开关机出现偶发启动异常的问题需要捕获下异常情况的波形,但是异常情况并不是每次都能触发到,所以需要自动化去捕捉波形然后进行分析,这里就介绍下使用python控制泰克示波器进行设置单次触发获取触发后进行保存数据。

一:驱动安装(这里介绍windows版本的visa驱动安装)

1,首先需要安装ni-visa到驱动程序,这个是电脑跟示波器通信到驱动程序,是必须安装的,想了解更多的就自行百度,下载链接如下:

下载NI-VISA - NI

python控制泰克示波器捕捉触发波形_第1张图片

这里是提供了两种安装方式,一种是下载在线安装,占用空间小,需要联网,点击【下载】就是该方式,不过不是特别推荐,安装可能需要其他依赖环境;另外一种是离线安装,需要下载全部的安装包,点击【离线安装】即可以下载完整的离线包,大概1.4G。

python控制泰克示波器捕捉触发波形_第2张图片

安装离线文件,直接点击iso文件进入到安装目录下:

python控制泰克示波器捕捉触发波形_第3张图片

点击Install.exe,有可能需要更新,直接先全部点击下一步。

python控制泰克示波器捕捉触发波形_第4张图片

出来如下的界面是进入到安装界面,这里我们只是需要visa的驱动支持就好了,其他环境和编写程序的IDE都不需要安装。

python控制泰克示波器捕捉触发波形_第5张图片

python控制泰克示波器捕捉触发波形_第6张图片

python控制泰克示波器捕捉触发波形_第7张图片

然后等待安装即可;

python控制泰克示波器捕捉触发波形_第8张图片

python控制泰克示波器捕捉触发波形_第9张图片

二:示波器连接

 这里使用的示波器是泰克的MDO4104C,不同的示波器连接方式基本都是一致,电脑与示波器通信有两种方式,一种是使用USB接口,另外一种是通过有线网络通信。

python控制泰克示波器捕捉触发波形_第10张图片

python控制泰克示波器捕捉触发波形_第11张图片

如果使用的是USB设备,USB连接之后在我的电脑-管理-设备管理器查看有这个驱动则是正常的,就是可以电脑控制泰克示波器了。

python控制泰克示波器捕捉触发波形_第12张图片

如果是使用网线的方式,则先需要在示波器里面给示波器设置一个IP地址,电脑跟示波器IP地址在同一个网段进行通信。

python控制泰克示波器捕捉触发波形_第13张图片

在电脑上ping或者打开仪器的IP地址查看WEB是否正常。出现这个界面便是电脑与仪器通信正常。

python控制泰克示波器捕捉触发波形_第14张图片

 

三:python环境安装

  这里使用的是python3.6的版本,需要先安装pyvisa的库文件,在cmd或者pycharm里面安装都可以。

python控制泰克示波器捕捉触发波形_第15张图片

先检查配置:

>>> import pyvisa

>>> rm = pyvisa.ResourceManager()

>>> rmlist = rm.list_resources()

>>> print(rmlist)

('USB0::0x0xxxx9::xxxxxx::xxxxx:INSTR',)  #返回的是一个USB的接口的元组。

python控制泰克示波器捕捉触发波形_第16张图片

 以上测试表明python与仪器使用USB连接成功。现在就可以编写程序了。

如果使用TCP的方式,则接口:TCPIP::xxx.xxx.xxx.xxx::INSTR

python控制泰克示波器捕捉触发波形_第17张图片

 选择一个比较常用的说明

先连接仪器

 rm = pyvisa.ResourceManager()      

my_instrument = rm.open_resource(TCP_connect)

 my_instrument.write('TRIGGER:STATE?')        获取示波器的状态

TRIGGER_STATE =my_instrument.read()        

print(TRIGGER_STATE)        

if TRIGGER_STATE[0] == "S":            读取到是SAVE的时候是在触发后的停止

#下面这两句比较关键,就是说触发后的停止需要执行这两句回到auto状态才能再次设置成单次触发模式

my_instrument.write('ACQUIRE:STOPAFTER RUNSTOP')             my_instrument.write('ACQuire:STATE RUN')            

else:            

print(TRIGGER_STATE) 

死循环的捕获出发后波形然后保存在外部U盘:

while True:            

time.sleep(1)            

my_instrument.write('TRIGGER:STATE?')            

TRIGGER_STATE =my_instrument.read()            

if TRIGGER_STATE[0] == "S":                  

print('have triggered')                  

dt = datetime.datetime.now()                

 fileName = dt.strftime("%Y%m%d_%H%M%S")                  

my_instrument.write('SAVE:IMAGE "F:/re_%s.bmp"' %fileName)                  

time.sleep(1)                  

my_instrument.write('FILESYSTEM:READFILE "F:/re_%s.bmp"' %fileName)                  

break

 

 

你可能感兴趣的:(python,fpga开发,压力测试,测试工具)