使用 Python 生成任意波形并观察输出信号
任意波形发生器和示波器的Python实现
Moku的任意波形发生器 (AWG) 可以部署在 Python 中以驱动输出信号。同时,Python AWG 可以用作示波器来查看输出信号。为此,您需要将输出 1 环回到输入 1。
这是在下面的 Python 中实现的:
#
# Moku 例子: 绘图 示波器 和 文库 波形 发电机
#
# 这 例子 演示 如何 你 能 配置 这 任意波形发生器 乐器,
# 和 看法 触发 时间电压 数据 框架 在 即时的。
#
# (三) 2023 Liquid 私人有限公司 有限公司
#
从 moku.instruments 进口 任意波形发生器, 多仪器 示波器
进口 numpy 作为 NP
进口 matplotlib
进口 matplotlib.pyplot 作为 血小板
# 发射 管理硕士 和 连接 到 你的 设备 通过 知识产权
米 = MultiInstrument('192.168.###.###', force_connect=True, 平台ID=4)
特设工作组 = m.设置仪器(1, 任意波形发生器
awg.设置默认值()
振荡器 = m.设置仪器(2, 示波器
osc.set_defaults()
連接 = [dict(source="Slot1OutA", 目的地=“Slot2InB”),
字典(源=“Slot1OutA”, 目标="输出1",
字典(源=“Slot2OutA”, 目的地=“Slot2InA”)]
m.set_connections(连接=连接)
电流正弦 = np.零(1000)
克 = 0
为了 十 在 电流正弦:
电流正弦[g] = np.sin((float(g)*2*np.pi/len(current_sine)))
克 +=1
尝试:
# 产生 一个 输出 正弦波 在 渠道 2、 500毫伏峰峰值, 1兆赫, 0伏 抵消
awg.生成波形(通道=1, 频率=1e6, 振幅 = 0.5, 采样率='自动', lut_data=列表(当前正弦波), 插值 = 真的)
# 扳机 在 输入 渠道 2、 上升 边缘, 0伏 和 0.1伏 滞后
osc.set_trigger(源='ChannelA', 类型=“边缘”, 级别=0, 滞后=0.1)
# 看法 +-5微秒, IE 扳机 在 这 中心
osc.set_timebase(-5e-6, 5e-6)
osc.生成波形(1, ‘正弦’ 振幅=0.5, 频率=1e6, 对称性=0.0)
# 得到 最初的 数据 框架 到 放 向上 密谋 参数。 这 能 是 完毕 一次
# 如果 我们 知道 那 这 轴 不是 去 到 改变 (否则 我们会 做
# 这 在 这 环形)
plt_dt = osc.获取数据()
# 放 向上 这 密谋 参数
plt.ion()
plt.显示()
plt.grid(真)
plt.ylim([-1,1])
plt.xlim([plt_dt['时间'][0], plt_dt['时间'][-1]])
第1行, = plt.绘图([])
第2行, = plt.绘图([])
斧头=plt.gca()
# 这 循环 持续地 更新 这 阴谋 和 新的 数据
尽管 真的:
# 得到 新的 数据
数据 = osc.获取数据()
# 更新 这 阴谋
line1.set_ydata(数据['ch1'])
line1.set_xdata(数据['时间'])
line2.set_ydata(数据['ch2'])
line2.set_xdata(数据['时间'])
plt.暂停(0.001)
除了 例外 作为 电子邮件:
打印(f'异常 发生: {e}')
最后:
# 关闭 这 联系 到 这 Moku 设备
# 这 确保 网络 资源 和 发布 正确地
m.放弃所有权()