我需要把所显示的信号加载到一个波发生器中。
通过USBTMC驱动波形发生器的代码:
我使用了下面的代码来创建示例代码。
如何将产生的啁啾信号加载到波发生器中?
发布于 2017-01-24 08:42:50
USBTMC是USB测试与测量类。这些命令是SCPI命令。必须加载的驱动程序系统驱动程序是usb_tmc (http://lxr.free-electrons.com/source/drivers/usb/class/usbtmc.c)。在插入Agilent设备后,在dmesg的输出中检查这一点。然后,波形发生器应该出现在/dev/usbtmcx或/dev/ttySx中(将x替换为系统上的数字)。
配置接口 最近的Linux内核支持即插即用的USBTMC。连接您的仪器并检查是否存在
/dev/usbtmc*。为/dev/usbtmc*设置适当的权限 打开USB仪器t0 = usbtmc('/dev/usbtmc0')的接口 写入侦听器:usbtmc_write(t0, '*IDN?')阻塞读取调用二进制读取,返回uint8 array data = usbtmc_read(t0, 10000)转换uint8数组为字符串,char(数据) 关闭usbtmc会话usbtmc_close(t0)
套餐 (不是Python;是八度,只是为了显示基本用法)。
在Python中,这是类似的。见http://scruss.com/blog/tag/usbtmc/。
首先检查dmesg在插入Agilent设备时是否加载了驱动程序usb_tmc,并按照https://github.com/python-ivi/python-usbtmc上的说明(创建udev规则,.,检查是否出现/dev/usbtmc0 0等)。
如果一切正常,编写一个简单的测试脚本,查看Agilent设备是否响应:
import usbtmc
instr = usbtmc.Instrument(2391, 5973) // The 2391 and 5973 are USB idVendor and idProduct of the Agilent MSO7104A converted to decimal
print(instr.ask("\***IDN?"))
# returns 'AGILENT TECHNOLOGIES,MSO7104A,MY********,06.16.0001'然后编写一个Python‘驱动程序’,将标准的TMC命令映射到Python函数(read(),write(),.)就像usbtmc.py in https://gist.github.com/pklaus/2597049。你在这里里有这个。
在http://markjones112358.co.nz/projects/Python-Controlled-Function-Generator/中有一个非常基本的波形发生器控制脚本。
如果要设置频率,则编写SCPI命令FREQ,后面跟着所需的值:
freq = 1000
write("FREQ %f" % freq)如果您想设置一个振幅,可以编写命令VOLT,后面跟着所需的值:
amplitude = 5
write("VOLT %f" % amplitude)复杂的部分是创建和下载二进制任意文件。
您不能直接用NumPy矩阵加载Agilent,因为它只接受特殊的二进制文件,因此必须将chirp矩阵转换为二进制文件。见http://cp.literature.agilent.com/litweb/pdf/E4400-90627.pdf第42页,62。可以将第62页中的示例转换为Python以生成二进制arb文件。
当您创建波形二进制arb文件时,可以使用SCPI写操作https://community.keysight.com/thread/20217 (在C#中)传输它。
// Downloading
oFio.WriteIEEEBlock("SOURce1:DATA:ARBitrary testarb,",z,true); binary write在使用像上面这样的Python驱动程序时,可以将其转换为Python:
binary_write("SOURce1:DATA:ARBitrary testarb,", z, true); (二进制写入)
请参阅Subsystem.htm
(在用户指南中,第234ff页上的http://cp.literature.agilent.com/litweb/pdf/33220-90002.pdf也是相关SCPI命令的摘要。在互联网上搜索'agilent write arb')。
在https://de.mathworks.com/company/newsletter/articles/downloading-a-custom-waveform-to-an-arbitrary-waveform-generator.html中有一个MATLAB工具箱,称为“仪表控制工具箱中的快速控制函数生成器”,它解决了这一问题。
https://stackoverflow.com/questions/41810965
复制相似问题