Python示例:使用16-bit垂直分辨率的SDG2000X / SDG6000X构建任意波形

Python示例:使用16-bit垂直分辨率的SDG2000X / SDG6000X构建任意波形
2024年07月15日 15:21 电子产品世界

鼎阳科技SDG2000XSDG6000X具有16-bit垂直分辨率。它提供了多达65,535个离散电压等级,覆盖了输出电压的整个范围(高压负载为20 Vpp),本文将应用Python 2.7和PyVISA1.8来创建一个斜坡波形,这个斜坡波形由通道1输出的0到65535的最低有效位的步长合成。

2、正文

鼎阳科技SDG2000XSDG6000X具有16-bit垂直分辨率。它提供了多达65,535个离散电压等级,覆盖了输出电压的整个范围(高压负载为20 Vpp),通过信号源输出的微小变化波形可有效测试A / D转换和其他测量系统。

本文将应用Python 2.7和PyVISA 1.8来创建一个斜坡波形,这个斜坡波形由通道1输出的0到65535的最低有效位的步长合成。

SDG2000XSDG6000X还实现了TrueArb功能,支持输入特定的采样率并且确保逐点输出存储器中任意波形的每一个波形数据点,可精确地生成低抖动的任意波形。

注意:用户需要改变机器的ID来匹配连接特定的仪器。建议在打开仪器输出之前就设置好振幅和其他参数。

下图是设置好信号源参数并打开通道1输出的图片:

图1

下图是示波器捕获信号源输出信号的界面显示:

图2

点击这个链接可以下载Zipped 版本的.PY文件:

https://www.siglentamerica.com/wp-content/uploads/2018/03/SiglentSDG16BBitSteps.zip

附这段程序的文本:

##

#!/usr/bin/env python2.7

# -*- coding: utf-8 -*-

import visa #Uses PyVISA 1.8 and NI-VISA runtime Engine 15.5

import time

import binascii

#设备的USB 

rm = visa.ResourceManager()

device = rm.open_resource(‘USB0::0xF4EC::0x1101::SDG6XBAQ1R0071::INSTR’)  #CHANGE TO MATCH YOUR INSTRUMENT ID

#Little endian, 16位2的补码

# 创建一个波形

wave_points = []

for pt in range(0x8000, 0xffff, 1):

wave_points.append(pt)

wave_points.append(0xffff)

for pt in range(0x0000, 0x7fff, 1):

wave_points.append(pt)

def create_wave_file():

#创建要给文件

f = open(“wave1.bin”, “wb”)

for a in wave_points:

b = hex(a)

#打印波形

b = b[2:]

len_b = len(b)

if (0 == len_b):

b = ‘0000’

elif (1 == len_b):

b = ‘000’ + b

elif (2 == len_b):

b = ’00’ + b

elif (3 == len_b):

b = ‘0’ + b

b = b[2:4] + b[:2] #将big-endian改为little-endian

c = binascii.a2b_hex(b) #十六进制整数到ASCii编码的字符串

f.write(c)

f.close()

def send_wave_data(dev):

#将波形1文件发送到设备

f = open(“wave1.bin”, “rb”) #wave1.bin 是要被发送的波形

data = f.read()

print (“write bytes:”,len(data))

dev.write_raw(“C1:WVDT WVNM,wave1,FREQ,2000.0,TYPE,8,AMPL,4.0,OFST,0.0,PHASE,0.0,WAVEDATA,%s” % (data))

#”X” series (SDG1000X/SDG2000X/SDG6000X/X-E)

dev.write(“C1:ARWV NAME,wave1”)

f.close()

if __name__ == ‘__main__’:

create_wave_file()

send_wave_data(device)

device.write(“C1:SRATE MODE,TARB,VALUE,333333,INTER,LINE”) #Use TrueArb and fixed sample rate to play every point

###

python分辨率Bin
新浪科技公众号
新浪科技公众号

“掌”握科技鲜闻 (微信搜索techsina或扫描左侧二维码关注)

创事记

科学探索

科学大家

苹果汇

众测

专题

官方微博

新浪科技 新浪数码 新浪手机 科学探索 苹果汇 新浪众测

公众号

新浪科技

新浪科技为你带来最新鲜的科技资讯

苹果汇

苹果汇为你带来最新鲜的苹果产品新闻

新浪众测

新酷产品第一时间免费试玩

新浪探索

提供最新的科学家新闻,精彩的震撼图片