Tektronix AFG1022 函数发生器
基础信息
Tektronix 针对 AFG1022 双通道函数发生器 发布的官方编程指南,核心目标是指导用户通过 SCPI(Standard Commands for Programmable Instruments,标准可编程仪器命令集) 实现仪器的自动化控制,适用于需要将 AFG1022 集成到测试系统(如生产线测试、实验室自动化)的工程师。
产品核心参数:2 个独立通道,每通道最高带宽 120MHz,支持正弦波、方波、脉冲波等 11 种波形;
支持接口:GPIB(符合 IEEE 488.2 标准)、USB-TMC(USB 2.0 High Speed,兼容 USBTMC 协议);
软件兼容性:支持 TekVISA、NI-VISA 等主流 VISA 库,可通过 Python、C#、LabVIEW 等编程语言调用;
文档结构:按 “命令基础→功能控制→接口配置→错误处理→附录” 脉络组织,含大量命令示例与代码片段。
SCPI 命令基础(编程控制前提)
1. 命令结构与语法规则
AFG1022 的 SCPI 命令采用 层级式结构,通过冒号(:)分隔层级,便于按功能分类记忆,核心规则如下:
规则类别 具体说明 示例
层级结构 根命令(如:SOURce)+ 子命令(如:FREQuency),通道可省略(默认通道 1) 控制通道 1 频率::SOURce:FREQ 1000(或:SOURce1:FREQ 1000);控制通道 2::SOURce2:FREQ 2000
大小写敏感性 命令大小写不敏感,参数枚举(如 ON/OFF)同样不敏感 :SOURce:WAVEform SIN 与 :source:waveform sin 等效
空格规则 命令与参数间、参数与参数间可加空格,不影响解析 :SOURce:FREQ 1000 与 :SOURce:FREQ 1000 等效
缩写规则 命令可使用前 3 个字符缩写(部分命令支持更长缩写) :SOURce 可缩写为 :SOU,:FREQuency 可缩写为 :FRE
2. 命令类型与数据格式
命令类型:
设置命令:用于配置仪器参数,格式为 “命令 + 参数”,无返回值;
示例::SOURce:VOLTage:AMPlitude 5(设置通道 1 幅度为 5Vpp)。
查询命令:用于读取仪器当前参数,格式为 “命令 + 问号(?)”,返回对应值;
示例::SOURce:VOLTage:AMPlitude?(查询通道 1 当前幅度,返回 “5.000000e+00”)。
数据格式:
数据类型 格式要求 示例
数值型 支持整数(1000)、小数(1.234)、科学计数法(1e6) 频率设置::SOURce:FREQ 1.234e6(1.234MHz)
字符串型 需用双引号(")包裹,支持字母、数字、特殊字符 保存设置::SYSTem:SETup:SAVE "MY_SETUP1"
枚举型 预定义选项,需严格匹配(大小写不敏感) 波形选择::SOURce:WAVEform SQUare(方波)、:SOURce:WAVEform TRIangle(三角波)

核心功能编程控制(按功能模块划分)
1. 基础波形生成与参数控制
AFG1022 支持 11 种标准波形,可通过 SCPI 命令选择波形类型并配置核心参数(频率、幅度、DC 偏移等),参数范围与对应命令如下:
功能模块 核心参数 参数范围 控制命令(通道 1 为例) 查询命令
波形选择 波形类型 正弦波(SINusoid)、方波(SQUare)、脉冲波(PULSe)等 11 种 :SOURce:WAVEform SINusoid :SOURce:WAVEform?
频率设置 输出频率 0.1Hz ~ 120MHz(正弦波 / 方波);0.1Hz ~ 10MHz(脉冲波) :SOURce:FREQuency 1000(1kHz) :SOURce:FREQuency?
幅度设置 峰峰值幅度 10mVpp ~ 20Vpp(50Ω 负载);20mVpp ~ 40Vpp(高阻负载) :SOURce:VOLTage:AMPlitude 5(5Vpp) :SOURce:VOLTage:AMPlitude?
DC 偏移 直流偏移电压 ±10V(50Ω 负载);±20V(高阻负载) :SOURce:VOLTage:OFFset 2(+2V) :SOURce:VOLTage:OFFset?
方波占空比 方波高电平占比 10% ~ 90%(频率≤10MHz 时) :SOURce:PULSe:DCYCle 50(50%) :SOURce:PULSe:DCYCle?
2. 高级功能控制
(1)调制功能(AM/FM/PM)
支持幅度调制(AM)、频率调制(FM)、相位调制(PM),可配置调制源(内部 / 外部)、调制深度等参数:
启用调制::SOURce:MOD:STATe ON;
选择调制类型::SOURce:MOD:TYPE AM(AM 调制);
配置内部调制源频率::SOURce:MOD:INTernal:FREQ 100(100Hz 调制信号);
配置 AM 调制深度::SOURce:MOD:AM:DEPTh 50(50% 调制深度)。
(2)触发与同步
支持内部触发(连续输出)、外部触发(受外部信号控制)、软件触发,适用于同步多设备测试:
选择触发源::TRIGger:SOURce EXTernal(外部触发,触发信号接 rear panel 的 TRIG IN 接口);
设置触发沿::TRIGger:EDGE RISING(上升沿触发);
执行软件触发::TRIGger:IMMediate(立即触发一次输出);
触发延迟::TRIGger:DELay 0.1(触发后延迟 0.1 秒输出)。
(3)设置存储与调用
可将当前仪器配置(波形、参数、调制等)保存到内部存储区(支持 10 个用户设置),后续直接调用:
保存设置::SYSTem:SETup:SAVE "SET1",1(将当前设置保存为 “SET1”,存储位置 1);
调用设置::SYSTem:SETup:LOAD 1(调用存储位置 1 的设置);
删除设置::SYSTem:SETup:DELETE 1(删除存储位置 1 的设置)。
3. 多通道控制(AFG1022 为 2 通道)
两个通道独立可控,通过在命令中添加2区分通道 2,示例如下:
通道 2 波形选择::SOURce2:WAVEform TRIangle(通道 2 输出三角波);
通道 2 频率设置::SOURce2:FREQ 2000(通道 2 频率 2kHz);
通道同步::SOURce:SYNC:STATe ON(使通道 2 与通道 1 同步,相位一致)。
接口配置与通信实现
1. 支持的通信接口
AFG1022 提供两种编程接口,满足不同测试系统需求:
接口类型 标准协议 硬件要求 优势
GPIB IEEE 488.2 需 GPIB 卡(如 NI GPIB-USB-HS) 抗干扰性强,适合工业环境
USB-TMC USB 2.0 High Speed + USBTMC 标准 USB 线(A-B 型) 即插即用,无需额外硬件
2. 通信参数配置
GPIB 接口:默认地址为22,波特率115200,数据位8,停止位1,校验位None;可通过命令修改地址::SYSTem:GPIB:ADDRess 23(设置为 23)。
USB-TMC 接口:无需手动配置参数,系统自动识别为 “USBTMC 设备”,通过 VISA 库可直接连接(资源名称通常为USB0::0x0699::0x0368::C012345::0::INSTR)。
3. 典型通信示例(Python + pyvisa)
以 “生成 1kHz 正弦波、查询幅度” 为例,步骤如下:
安装依赖库:pip install pyvisa pyvisa-py;
编写代码:
python
import pyvisa # 导入VISA库
# 1. 初始化资源管理器
rm = pyvisa.ResourceManager()
# 2. 连接AFG1022(资源名称通过rm.list_resources()查询)
afg = rm.open_resource("USB0::0x0699::0x0368::C012345::0::INSTR")
# 3. 发送命令:通道1输出1kHz正弦波,幅度5Vpp
afg.write(":SOURce:WAVEform SINusoid") # 选择正弦波
afg.write(":SOURce:FREQuency 1000") # 频率1kHz
afg.write(":SOURce:VOLTage:AMPlitude 5")# 幅度5Vpp
afg.write(":OUTPut:STATe ON") # 开启输出
# 4. 查询当前幅度
amplitude = afg.query(":SOURce:VOLTage:AMPlitude?")
print(f"当前幅度:{amplitude} Vpp")
# 5. 关闭连接
afg.close()
rm.close()
生成中
错误处理与调试
1. 错误码查询与解析
仪器执行命令出错时(如参数超出范围、语法错误),会记录错误码,可通过命令查询并定位问题:
查询错误::SYSTem:ERRor?(返回格式:-221,"Parameter out of range");
常见错误码解析:
错误码 错误描述 可能原因 解决方案
-221 Parameter out of range 参数超出允许范围 检查参数是否在规定区间(如频率≤120MHz)
-102 Syntax error 命令语法错误 检查命令拼写(如:SOURce:FREQ 误写为:SOURce:FRE)
-256 Calibration required 仪器未校准,参数精度不保证 执行校准命令(:SYSTem:CALibrate)或联系售后
0 No error 命令执行成功 -
2. 状态寄存器与状态查询
通过读取状态寄存器,可获取仪器当前工作状态(如是否在输出、是否触发):
操作状态查询::STATus:OPERation:CONDition?(返回1表示正常运行,0表示待机);
事件状态查询::STATus:EVENT:CONDition?(返回事件状态码,如8表示触发完成)。
3. 调试工具
命令回显:启用:SYSTem:ECHO ON后,仪器会将接收到的命令返回,便于确认命令是否正确发送;
语法检查:发送命令前,可通过:SYSTem:CHECK:CMD "命令"检查语法(如:SYSTem:CHECK:CMD ":SOURce:FREQ 1000");
超时设置:在 VISA 库中设置超时时间(建议≥1000ms),避免因命令执行耗时过长导致通信中断(如afg.timeout = 2000)。
附录资源
命令索引:按 “源控制(Source)”“触发(Trigger)”“系统(System)” 分类的完整命令列表,含参数说明与示例;
示例程序:除 Python 外,还提供 C#、LabVIEW 的控制示例,覆盖波形生成、调制、触发等场景;
VISA 库兼容性:明确支持 TekVISA 4.0+、NI-VISA 5.0+,不建议使用旧版本;
固件版本说明:不同固件版本的命令差异(如某些高级命令需固件≥1.5.0)。
