Python 控制 AWG70001

news2024/11/24 6:51:11

0. 实验准备

泰克 AWG70001
一台电脑
一根网线
使用网线连接 AWG70001 和电脑,并且配置 IP 在同一网段下

1. 环境要求

vxi11
numpy
struct
matplotlib

没有的库可以使用下面的命令安装

pip install vxi11
pip install numpy
pip install struct
pip install matplotlib

2.Python代码

首先导入库

import numpy as np
from matplotlib import pyplot as plt
import vxi11
import struct
from time import sleep

2.1 打开连接

ip = "192.168.0.1" # 这里设置为 AWG的 IP,AWG 自带 Windows,可以直接查看 IP 地址
session = vxi11.Instrument('TCPIP::{}::INSTR'.format(ip))
session.timeout = 500
session.clear()
idn_str = session.ask("*idn?")
print(idn_str)

能收到类似下面的回复说明连接成功

TEKTRONIX,AWG70001A,B030508,FV:5.3.0128.0

2.2 设置采样率

使用以下的命令设置采样率

sample_rate = 10e9 # 采样率为 10Gs/s
session.write( "CLOCK:SRATE {:e}".format(sample_rate))

2.3 生成并发送自定义波形

下面的代码生成了一个起始频率为 5G,终止频率为 5.1G ,Chirp 时长为 20us 的 FMCW 波形,并且发送给 AWG

# 参数设置
f_start = 5e9  # 起始频率(Hz)
f_end = 5.1e9  # 终止频率(Hz)
T_chirp = 20e-6  # Chirp时间(秒)
Fs = 1e10  # 采样率(Hz)

# 生成时间轴
t = np.arange(0, T_chirp, 1/Fs)

# 生成线性调频信号
slope = (f_end - f_start) / T_chirp
chirp_signal = np.cos(2 * np.pi * (f_start * t + (1/2) * slope * t**2))

trace = 1
idle_val    = 0
yscale      = 1
xscale      = 1
delay       = 0e-9
sample_rate = Fs
invert      = 0
period      = T_chirp
waveformName = "ExtWaveformCh{:d}".format(trace)

xdata = np.array(t)
ydata = np.array(chirp_signal)

session = vxi11.Instrument('TCPIP::{}::INSTR'.format(ip))
session.timeout = 500
session.clear()
idn_str = session.ask("*idn?")
print(idn_str)
local_objects["session"] = session

print("STOP!")
session.write("AWGControl:STOP")

MAX_MEM_SIZE = 262144 # this might not actually be true for the TEK device
MIN_SAMPLE_LEN = 2400
mem_size     = MAX_MEM_SIZE
session.write( "CLOCK:SRATE {:e}".format(sample_rate))
print("准备向通道 {:d}发送数据".format(trace))
xdata = xdata*xscale + delay
width = xdata[-1]
ydata = ydata*yscale

plt.figure()
plt.plot(xdata,ydata)
plt.show()

if(invert):
    idle_val = -idle_val
    ydata = -ydata

n = int(len(xdata))

sample_len = 0
if(period == 0):
    sample_len = np.max([MIN_SAMPLE_LEN,n])
else:
    sample_len = int(period * sample_rate)

dataList = idle_val*np.ones(sample_len)

n_ = np.min([n,sample_len])

dataList[0:n_] = ydata[0:n_]

#send data
data = bytearray()
waveform_length = sample_len
print("波形长度(样本长度*个数): {:d}".format(waveform_length))
print("样本长度(总时间*采样率): {:d}".format(sample_len))

for i in range(sample_len):
    value =  dataList[i]
    data += bytearray(struct.pack("f", value))

commandString = "WLIST:WAVEFORM:DATA \"{}\",0,{},#{}{}".format(waveformName, waveform_length, len(str(4*waveform_length)), str(4*waveform_length))# + datastring

print(commandString)
len(data)

# Open socket, create waveform, send data, read back, start playing waveform and close socket
session.write("WLIST:WAVEFORM:DELETE \"{}\"".format(waveformName))
session.write("WLIST:WAVEFORM:NEW \"{}\" ,{}".format(waveformName, waveform_length))
session.write_raw( str.encode(commandString) + data)
session.write("SOURCE{:d}:CASSET:WAVEFORM \"{}\"".format(trace,waveformName))

在这里插入图片描述

2.4 设置 Run mode

使用以下的命令设置 Run mode

# 可选参数: CONTinuous TRIGgered GATed SEQuence
session.write("AWGCONTROL:RMODE TRIGgered") # 设置为触发模式

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/702061.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android中构建多视图 RecyclerView的正确打开方式

Android中构建多视图 RecyclerView的正确打开方式 简介 漂亮的UI能极大提高用户留存率,相反糟糕的UI将导致App安装率下降。 UI体验对用户留存率有特别大的影响,较差的体验app我可能用不了2s就要卸载掉。 你需要学习内容如下: 使用单个R…

STM32F407开发板DS18B20应用案例

【1】DS18B20介绍 DS18B20是一种数字温度传感器,由Maxim Integrated公司生产。它采用单总线接口,能够在广泛的温度范围内测量温度,并通过数字方式输出温度值,具有较高的精度和稳定性。 以下是DS18B20温度传感器的主要特点和操作…

拯救者Lenovo Legion Y9000X IAH7 2022款(82TF)原装出厂Windows11系统恢复原厂OEM系统

Lenovo联想拯救者笔记本电脑 Legion Y9000X IAH7 2022款(82TF)出厂状态原装Win11系统,恢复原厂系统 系统自带所有驱动、出厂主题壁纸LOGO、Office办公软件、联想电脑管家等预装程序 所需要工具:16G或以上的U盘 文件格式:ISO 文件大小&am…

人类最新版去水印+外卖CPS小程序源码+独立后台微擎模块

最新版去水印外卖CPS小程序源码 本版本为目前最新版本 修复上个版本后台用户列表加载失败问题 新增轮播图跳转小程序 新增外卖CPS系统

layui学习

官网:Layui镜像站-经典开源模块化前端 UI 框架(官方文档完整镜像) 下载:可以在首页进行下载 快速入门Layui | 枫桥夜泊 如果不知道样式在哪个模块下,引入总的核心样式文件;如果知道样式在哪个模块下,直接引入module…

线程间通信

1、需求 现在两个线程操作一个初始值为0的变量实现一个线程对变量增加1,一个线程对变量减少1交替,来10轮 2、多线程编程模板中 1)判断 2)干活 3)通知 线程间通信: 1.生产者消费者 2.通知等待唤醒机制 3…

Aski AI: 基于人工智能的在线AI工具平台

【产品介绍】 Aski AI是一个基于人工智能的在线AI工具平台,它可以帮助用户快速、准确、全面地解决各种问题。无论是学习、工作、生活、娱乐还是其他领域,只要输入你的问题,Aski AI就会为你提供最合适的答案。此外还提供AI文章写作&#xff0c…

BHQ1 Mal,BHQ2 Maleimide,BHQ3 Mal,马来酰亚胺修饰的BHQ试剂有哪些特点?

一、BHQ-1 Maleimide 产品描述: BHQ-1 Maleimide黑洞猝灭剂-1(BHQ-1)被归类为暗猝灭剂,该淬灭剂能够将一定距离内荧光基团发出的光全部吸收,实现对荧光信号的淬灭,所以可得到更强的特异性,更优化的信噪比。 中文名&a…

【正点原子STM32连载】 第四十五章 FLASH模拟EEPROM实验 摘自【正点原子】STM32F103 战舰开发指南V1.2

第四十五章 FLASH模拟EEPROM实验 STM32本身没有自带EEPROM,但是STM32具有IAP(在应用编程)功能,所以我们可以把它的FLASH当成EEPROM来使用。本章,我们将利用STM32内部的FLASH来实现第三十六章实验类似的效果&#xff0…

设计模式第18讲——中介者模式(Mediator)

目录 一、什么是中介者模式 二、角色组成 三、优缺点 四、应用场景 4.1 生活场景 4.2 java场景 五、代码实现 5.0 代码结构 5.1 抽象中介者(Mediator)——LogisticsCenter 5.2 抽象同事类(Colleague)——Participant 5…

nvm安装node

使用 Windows 系统的我选择使用其推荐的 nvm-windows 来管理 Node.js 版本。 在安装 nvm-windows 前,如果你的电脑中已经安装了 Node.js,那么可以选择卸载,也可以选择不卸载。因为在安装 nvm-windows 的过程中其会询问你是否需要将已安装的 N…

mysql数据库迁移到kingbase人大金仓

1. 启动数据迁移工具 2. 浏览器打开网址[http://localhost:8080/]进入可视化操作界面,在源数据库添加人大金仓数据库信息,测试成功后保存 3.在目标数据库填写需要同步的mysql数据库,添加对应的mysql数据库信息,测试成功后保存 4.在…

The Company Requires Superficial StudyPHP 打开执行PHP ②

作者 : SYFStrive 博客首页 : HomePage 📜: PHP MYSQL 📌:个人社区(欢迎大佬们加入) 👉:社区链接🔗 📌:觉得文章不错可以点点关注 &#x1f44…

自制游戏引擎

这是一个玩具 1. 引擎使用流程 SmallEngine是引擎的核心模块,封装渲染功能和场景管理功能等Editor是编辑器,类似unity和ue编辑器,能够动态添加对象和组件Sandbox是游戏播放器,能够运行游戏 2. SmallEngine 参考 https://www.bilibili.com/video/BV1KE41117BD/?spm_id_from333…

ARM实验-ARM主程序调用ARM/C语言子程序

一、实验名称:ARM主程序调用ARM/C语言子程序 二、实验目的: 了解ARM应用程序框架。了解ARM汇编程序函数和C语言程序函数相互调用时,遵循的ATPCS标准;了解和掌握ARM汇编程序调用C语言程序函数的基本方法;了解和掌握AR…

操作系统第4章 文件系统 知识点

UNIX系统不存一些具体的指针了 只存文件名和指向i结点的指针 这个删除和截断有什么区别 目录本来放在外存的,有文件打开表,从外存复制到内存的文件打开表中,用户想继续读的时候,不用再去外存搜索目录 访问文件打开表的索引叫文…

基于“SRP模型+”多技术融合在生态环境脆弱性评价模型构建、时空格局演变分析与RSEI 指数的生态质量评价及拓展应用

近年来,国内外学者在生态系统的敏感性、适应能力和潜在影响等方面开展了大量的生态脆弱性研究,他们普遍将生态脆弱性概念与农牧交错带、喀斯特地区、黄土高原区、流域、城市等相结合,评价不同类型研究区的生态脆弱特征,其研究内容…

大数据Doris(五十二):Doris数据导出案例和注意事项

文章目录 Doris数据导出案例和注意事项 一、Doris数据导出到HDFS案例 1、创建Doris表并插入数据 2、创建Export ,数据导出到 HDFS 3、查看任务 4、查看导出结果 二、Doris数据导出到本地案例 1、配置 fe.conf 2、Doris 数据导出到本地 三、注意事项 Doris数据导出案例…

kettle源码远程debug调试

一、kettle启动时指定debug端口号 windows下,修改bat执行文件,同理 linux修改sh执行文件 在java执行参数的末尾添加debug参数 address为debug端口 -Xdebug -Xnoagent -Djava.compilerNONE -Xrunjdwp:transportdt_socket,servery,suspendn,address9080然…

从渲染流程、数据处理结构聊聊Flutter性能优化

不可否认 Flutter 是一个非常强大的移动应用开发框架,我们在技术架构选型时就是选用的 Flutter,特别是跨端能力属实很优秀,but 也逐渐发现在复杂的应用程序实现中,App 的性能会受到一些影响。 其实这个问题,我们内部也…