- 核心概念:什么是 SCPI?
- 远程连接方式
- 常用命令分类详解
- 实用示例
- 查找更多命令的方法
核心概念:什么是 SCPI?
SCPI (Standard Commands for Programmable Instruments) 是一种标准的、通用的仪器编程语言,几乎所有主流的示波器、万用表、信号发生器等测试测量设备都支持 SCPI 命令。

- 语法结构:SCPI 命令通常由命令头和参数组成,用空格隔开。
- 命令头:通常是英文单词的缩写,表示仪器的功能或子系统。
MEASure: 测量ACQuire: 采集DISPlay: 显示CHANnel: 通道TRIGger: 触发VOLTage: 电压TIMebase: 时基
- 参数:指定具体的设置值,如
ON,OFF,5V,1kHz,AUTO等。 - 分隔符:命令之间用分号 隔开,可以一次发送多条命令。
示例:
CHAN1:VOLT 1.0; TRIG:MODE EDGE; ACQ:MODE AVER
这条命令的含义是:
- 设置通道1的垂直灵敏度为 1.0V/格。
- 设置触发模式为边沿触发。
- 设置采集模式为平均模式。
远程连接方式
要发送 SCPI 命令,您需要将计算机与示波器连接起来,主要有两种方式:
a) LAN (以太网) - 推荐方式
这是现代泰克示波器最常用、速度最快的方式。
- 硬件连接:用网线将示波器的 LAN 口和您的计算机连接到同一个路由器(或直接交叉连接)。
- 设置 IP 地址:
- 在示波器上,按
Utility->I/O->Network Setup,设置一个静态 IP 地址(如168.1.10)或启用 DHCP。 - 确保您的计算机与示波器在同一个网段。
- 在示波器上,按
- 软件连接:
- 泰克 OpenChoice Desktop 软件:官方提供的免费软件,可以方便地发送命令、下载波形和数据。
- Python +
pyvisa库:非常流行的编程方式,适合自动化测试。 - LabVIEW / MATLAB:专业测试软件,也支持 VISA 驱动。
- 任何支持 Socket/TCP 的终端软件:如 PuTTY, Tera Term (需设置为 "Raw" 模式) 或 Telnet 客户端。
b) USB (GPIB 或虚拟 COM 口)
一些较老的型号或特定型号可能支持 USB-GPIB 或 USB 转虚拟 COM 口。

- 硬件连接:用 USB 线连接示波器和电脑。
- 安装驱动:安装泰克官方提供的 VISA 驱动。
- 识别设备:在计算机的设备管理器中,会看到一个 COM 端口。
- 软件连接:使用串口调试助手或任何支持 COM 端口的编程语言(如 Python 的
pyserial)。
常用命令分类详解
以下是按功能分类的常用 SCPI 命令,适用于大多数泰克示波器(如 MDO, MSO, DPO 系列)。
a) 系统与通用命令
| 命令 | 描述 | 示例 |
|---|---|---|
*IDN? |
识别仪器,返回厂商、型号、序列号等。 | *IDN? -> 返回 TEKTRONIX,MDO3024,C010578,FV4.2 |
*RST |
复位示波器到出厂默认设置。 | *RST |
*CLS |
清除所有状态寄存器。 | *CLS |
SYST:ERR? |
查询最后一个错误信息。 | SYST:ERR? -> 返回 +0, "No error" |
SYST:OPT? |
查询已安装的选件。 | SYST:OPT? |
b) 通道设置
| 命令 | 描述 | 示例 |
|---|---|---|
CHAN<n>:DISP ON |
显示通道 n。<n> 为 1, 2, 3, 4。 |
CHAN1:DISP ON |
CHAN<n>:DISP OFF |
隐藏通道 n。 |
CHAN2:DISP OFF |
CHAN<n>:COUP AC |
设置通道 n 耦合为交流。 |
CHAN1:COUP AC |
CHAN<n>:COUP DC |
设置通道 n 耦合为直流。 |
CHAN1:COUP DC |
CHAN<n>:PROB <value> |
设置通道 n 的探头衰减比。 |
CHAN1:PROB 10 (表示 10:1 探头) |
CHAN<n>:RANG <value> |
设置通道 n 的电压范围 (伏特)。 |
CHAN1:RANG 5.0 (5V/格) |
CHAN<n>:OFFS <value> |
设置通道 n 的垂直偏移。 |
CHAN1:OFFS 0.0 |
c) 时基设置
| 命令 | 描述 | 示例 |
|---|---|---|
TIM:MAIN:SCAL <value> |
设置主时基的秒/格。 | TIM:MAIN:SCAL 1e-6 (1μs/格) |
TIM:MAIN:POS <value> |
设置主时基的水平位置。 | TIM:MAIN:POS 0.0 |
TIM:MODE MAIN |
设置时基模式为主时基。 | TIM:MODE MAIN |
TIM:MODE ROLL |
设置时基模式为滚动模式。 | TIM:MODE ROLL |
d) 触发设置
| 命令 | 描述 | 示例 |
|---|---|---|
TRIG:MODE EDGE |
设置触发模式为边沿触发。 | TRIG:MODE EDGE |
TRIG:EDGE:SOUR CHAN1 |
设置触发源为通道 1。 | TRIG:EDGE:SOUR CHAN2 |
TRIG:EDGE:SLOPE POS |
设置触发边沿为上升沿。 | TRIG:EDGE:SLOPE NEG (下降沿) |
TRIG:EDGE:LEV <value> |
设置触发电平 (伏特)。 | TRIG:EDGE:LEV 2.5 |
TRIG:MODE AUTO |
设置触发模式为自动。 | TRIG:MODE NORM (正常) |
TRIG:MODE SINGLE |
设置触发模式为单次。 | TRIG:MODE SINGLE |
e) 数据采集
| 命令 | 描述 | 示例 |
|---|---|---|
ACQ:MODE SAM |
设置采集模式为采样。 | ACQ:MODE SAM |
ACQ:MODE PEAK |
设置采集模式为峰值检测。 | ACQ:MODE PEAK |
ACQ:MODE AVER <count> |
设置采集模式为平均,<count> 为平均次数。 |
ACQ:MODE AVER 16 |
ACQ:STOP |
停止采集。 | ACQ:STOP |
ACQ:RUN |
开始运行采集。 | ACQ:RUN |
f) 测量
| 命令 | 描述 | 示例 |
|---|---|---|
MEAS:ITEM:VPP CHAN1 |
在通道 1 上测量峰峰值电压。 | MEAS:ITEM:VPP CHAN1 |
MEAS:ITEM:FREQ CHAN1 |
在通道 1 上测量频率。 | MEAS:ITEM:FREQ CHAN1 |
MEAS:ITEM:PER CHAN1 |
在通道 1 上测量周期。 | MEAS:ITEM:PER CHAN1 |
MEAS:ITEM:RISE CHAN1 |
在通道 1 上测量上升时间。 | MEAS:ITEM:RISE CHAN1 |
MEAS:ITEM:MAX CHAN1 |
在通道 1 上测量最大值。 | MEAS:ITEM:MAX CHAN1 |
MEAS:RES? |
查询所有测量结果。 | MEAS:RES? |
g) 数据记录与波形导出
| 命令 | 描述 | 示例 |
|---|---|---|
HEADER OFF |
禁止在数据前添加文本头。 | HEADER OFF (导出数据时常用) |
DATA:SOURCE CHAN1 |
设置数据源为通道 1。 | DATA:SOURCE CHAN1 |
DATA:ENCdg SRI |
设置数据编码为 SRI (二进制)。 | DATA:ENCdg SRI |
DATA:WIDTH 2 |
设置数据位宽为 2 字节。 | DATA:WIDTH 2 |
CURVE? |
将当前波形数据作为曲线数据发送。 | CURVE? (返回一长串二进制或ASCII数据) |
SAVE:WAVEFORM CHAN1, 'C:\temp\ch1.wfm' |
将通道 1 的波形保存到示波器硬盘。 | (需要示波器有硬盘) |
实用示例
示例 1:使用 Python (pyvisa) 进行自动化测量
import pyvisa
# 1. 创建资源管理器
rm = pyvisa.ResourceManager()
# 2. 打开与示波器的连接 (IP地址根据实际情况修改)
# 'TCPIP0::192.168.1.10::inst0::INSTR' 是VISA资源名格式
scope = rm.open_resource('TCPIP0::192.168.1.10::inst0::INSTR')
# 3. 发送SCPI命令进行配置
scope.write('*RST') # 复位示波器
scope.write('CHAN1:DISP ON') # 显示通道1
scope.write('CHAN1:COUP DC') # 通道1直流耦合
scope.write('CHAN1:RANG 1.0') # 通道1设置为1V/格
scope.write('CHAN1:PROB 1') # 通道1探头衰减比1:1
scope.write('TIM:MAIN:SCAL 1e-6') # 时基设置为1μs/格
scope.write('TRIG:MODE EDGE') # 边沿触发
scope.write('TRIG:EDGE:SOUR CHAN1') # 触发源为通道1
scope.write('TRIG:EDGE:LEV 0.5') # 触发电平0.5V
scope.write('ACQ:MODE AVER 16') # 平均模式,平均16次
# 4. 开始采集
scope.write('ACQ:RUN')
# 5. 等待采集稳定
import time
time.sleep(2)
# 6. 查询测量结果
vpp = scope.query('MEAS:ITEM:VPP? CHAN1')
freq = scope.query('MEAS:ITEM:FREQ? CHAN1')
print(f"峰峰值电压: {vpp} V")
print(f"频率: {freq} Hz")
# 7. 读取波形数据
scope.write('DATA:SOURCE CHAN1')
scope.write('HEADER OFF')
scope.write('DATA:ENCdg SRI') # 使用SRI二进制格式
scope.write('DATA:WIDTH 2')
# CURVE? 会返回二进制数据,前面有2字节描述符
curve_data = scope.query_binary_values('CURVE?', datatype='h', is_big_endian=False, container=list)
# 8. 关闭连接
scope.close()
rm.close()
示例 2:使用 OpenChoice Desktop 发送命令
- 打开 OpenChoice Desktop 软件。
- 连接到您的示波器。
- 在 "Command" 窗口中,可以直接输入 SCPI 命令,然后点击 "Send"。
- 输入
CHAN1:VOLT 2.0; TRIG:MODE AUTO; ACQ:RUN,点击 "Send",示波器会立即执行这些操作。
查找更多命令的方法
-
示波器内置帮助:这是最直接的方法。
- 在示波器上按
Help按钮。 - 选择 "SCPI Reference" 或 "命令参考"。
- 您可以在这里浏览所有命令的语法和描述。
- 在示波器上按
-
官方编程手册:
- 访问泰克官网。
- 在支持页面搜索您的示波器型号。
- 下载 "Programmer Manual" 或 "SCPI Programmer Manual",这是最权威、最完整的命令参考。
-
在线资源:
(图片来源网络,侵删)- 泰克知识库和论坛。
- 第三方技术博客和论坛。
希望这份详细的指南能帮助您更好地使用泰克示波器的命令!如果您有特定型号或特定功能的需求,可以提供更多信息,我可以给出更精确的命令。
