关于 Rigol Oscilloscope
Rigol Oscilloscope 是面向 Rigol 示波器的 MCP 服务,供 AI Agent 读取仪器数据并操作采集与设置。它支持测量和校准波形捕获;目前尚未经过硬件验证。
主要功能
- 01读取示波器设置和设备信息
- 02测量电压与时序参数
- 03捕获校准波形及统计数据
- 04将波形数据保存为 CSV
- 05获取示波器屏幕截图
- 06调整通道、时基和触发
适用场景
- 01查看通道设置、时基和触发状态
- 02测量信号频率和上升时间
- 03捕获波形以检查是否削波
- 04保存示波器截图作为实验记录
MCP 相关
通过 MCP 工具提供 Rigol 示波器的读数、测量、波形与截图捕获以及设置控制。只读选项可阻止更改示波器设置的工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
uvx labmcp-rigol-scopeLABMCP_ADDRESSInstrument address, e.g. serial:///dev/ttyUSB0 or tcp://192.168.1.50:5025LABMCP_SIMULATESet to 1 to use the built-in simulator (no hardware)LABMCP_READ_ONLYSet to 1 to disable all state-changing toolsLABMCP_LIMITSSafety limit overrides, e.g. max_temperature_c=80本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
16收录的工具列表 · 更新于 2 周前
此工具无需参数。
详细介绍
Rigol 示波器 — MCP 服务
让 AI Agent 通过 SCPI 读取 Rigol 数字示波器的设置、调整通道、时基和触发,运行单次采集,获取示波器自身的测量结果、采集经校准的波形并抓取屏幕截图。
| 软件包 | labmcp-rigol-scope |
| 仪器 | DS1000Z / MSO1000Z(DS1054Z、DS1074Z、DS1104Z、MSO1104Z、“Plus”型号)、DS1000Z-E(DS1102Z-E、DS1202Z-E)、MSO5000(MSO5072 … MSO5354)、DHO800 / DHO900(DHO802、DHO804、DHO914、DHO924)、DHO1000 / DHO4000(DHO1072 … DHO4804) |
| 接口 | USB(USB-TMC)、LAN(VXI-11/LXI、原始套接字) |
| 协议 | 遵循 Rigol 编程指南的 SCPI:MSO1000Z/DS1000Z PGA19109-1110、DS1000Z-E PGA27100-1110、MSO5000 PGA25104-1110、DHO800/DHO900、DHO1000/DHO4000 PGA34101-1110 |
| 状态 | 🧪 模拟:已通过线级 SCPI 模拟器测试(包括二进制波形和屏幕截图数据块),尚未在硬件上验证。报告硬件测试结果 |
无需硬件即可试用
uvx labmcp-rigol-scope --simulate --check
uvx labmcp-rigol-scope --simulate --option sim_model=DHO804 --check # also DS1202Z-E, MSO5074, DHO1204 ...
模拟示波器在 CH1 上生成 1 kHz、0-3 V 方波,在 CH2 上生成 2 kHz、1 V 正弦波(CH3/CH4 接地)。它会使用真实的 IEEE 488.2 二进制数据块响应 :WAVeform:DATA? 和 :DISPlay:DATA?,保留 SCPI 错误队列;只有当触发电平位于信号范围内时才会触发,因此你可以尝试使用错误的触发电平运行 single。
连接示波器
- **USB:**插入 USB 设备端口。服务使用 PyVISA 和纯 Python 的
pyvisa-py后端,该后端需要系统安装libusb(brew install libusb、apt install libusb-1.0-0;在 Windows 上使用 NI-VISA,并指定?backend=@ivi)。使用python -m pyvisa info或uvx labmcp ports查找资源。 - **LAN:**在示波器的 Utility I/O / LAN 设置中启用 DHCP 或设置静态 IP,并记下地址。
- 测试连接:
uvx labmcp-rigol-scope --address USB0::0x1AB1::0x04CE::DS1ZA123456789::INSTR --check # USB-TMC uvx labmcp-rigol-scope --address TCPIP0::192.168.1.50::INSTR --check # LAN (VXI-11) uvx labmcp-rigol-scope --address tcp://192.168.1.50:5555 --check # LAN raw socket--check会输出*IDN?标识信息和检测到的命令系列。
添加到 MCP 客户端
Claude Code
claude mcp add scope -- uvx labmcp-rigol-scope --address TCPIP0::192.168.1.50::INSTR
Claude Desktop / Cursor / Windsurf(claude_desktop_config.json、.cursor/mcp.json、…)
{
"mcpServers": {
"scope": {
"command": "uvx",
"args": ["labmcp-rigol-scope", "--address", "TCPIP0::192.168.1.50::INSTR"]
}
}
}
添加 --read-only,即可读取设置、测量结果、波形和屏幕截图,同时阻止所有会更改示波器设置的工具。对于其他客户端,可使用 uvx labmcp config rigol-oscilloscope --address TCPIP0::192.168.1.50::INSTR --client vscode 生成配置片段(也支持 cursor、codex、claude-code)。
工具
| 工具 | 类型 | 描述 |
|---|---|---|
autoscale | 🎛 控制 | 运行示波器的自动设置(AUTO 键):为已连接的信号选择垂直刻度、时基和触发设置。此操作会覆盖用户当前的设置——仅在收到要求时使用。信号幅度需大致高于 20 mVpp,频率需高于 40 Hz。 |
capture_waveform | 👁 读取 | 捕获通道波形,根据示波器的波形前导信息将其换算为伏特和秒,并返回统计数据及降采样后的波形;也可选择将所有点保存为 CSV。 |
force_trigger | 🎛 控制 | 强制触发一次(FORCE 键)。仅在 NORMal 或 SINGle 扫描模式下等待时有效。 |
get_command_log | 👁 读取 | 返回最近发送至仪器或从仪器收到的原始命令(最新记录在最后)。可用于调试和记录操作。 |
get_connection_info | 👁 读取 | 报告已连接的仪器(标识、地址、仿真或真实)、服务是否为只读,以及当前的安全限制。请先调用此工具。 |
get_device_info | 👁 读取 | 识别示波器(型号、序列号、固件)、使用的命令系列、模拟通道数量,以及当前采样率和存储器深度。 |
get_settings | 👁 读取 | 读取每个通道当前的垂直设置(开/关、V/div、偏移、耦合、探头倍率、带宽限制)、时基、触发设置(类型、扫描模式、状态、边沿源/电平/斜率),以及采集采样率/存储器深度。 |
measure | 👁 读取 | 读取示波器对单个通道进行的自动测量:电压(Vpp、Vmax、Vmin、Vtop、Vbase、Vamp、Vavg、Vrms、过冲、预冲)和时间(周期、频率、上升/下降时间、正/负脉宽、正/负占空比)。示波器无法确定的值为 null。 |
reconnect | 🛑 安全 | 关闭并重新打开与仪器的连接(例如,仪器断电重启或重新插拔线缆后)。 |
run | 🎛 控制 | 开始连续采集(RUN)。 |
screenshot | 👁 读取 | 保存示波器显示画面的截图(PNG;MSO5000 使用 BMP),并返回其路径。对于 PNG 截图,还会返回图像,以便模型查看屏幕。 |
set_channel | 🎛 控制 | 更改通道的垂直设置;未指定的设置保持不变。探头倍率会优先应用,因为它会改变有效刻度范围。返回示波器实际应用的设置(刻度会调整为 1-2-5 步进)。被拒绝的值会从示波器的错误队列中报告。 |
set_timebase | 🎛 控制 | 设置主时基刻度和/或偏移。返回应用后的值。 |
set_trigger | 🎛 控制 | 配置边沿触发(源、电平、斜率)和扫描模式。将触发类型设为 EDGE。电平必须位于源通道的屏幕范围内。 |
single | 🎛 控制 | 启动一次采集(SINGLE 键):示波器触发一次后停止。若 wait_s > 0,则等待采集完成(状态为 STOP)。若始终未满足触发条件,状态会保持为 WAIT——请检查触发电平/源,或使用 force_trigger。 |
stop | 🎛 控制 | 停止采集(STOP)并冻结当前波形,例如在读取深存储器之前。 |
get_connection_info、get_command_log 和 reconnect 是每个 LabMCP 服务都内置的工具。命令日志会显示发送的所有 SCPI 命令。
安全限制
| 限制 | 默认值 | 含义 |
|---|---|---|
max_memory_points | 1 200 000 点 | 单次采集从采集存储器中读取的点数上限(限制传输时间) |
可在启动时覆盖,例如 --limit max_memory_points=24000000。示波器不会输出能量,因此没有危险操作工具;此服务不会控制某些型号内置的波形发生器。
示例提示词
- "示波器当前显示什么?告诉我通道设置、时基和触发设置。"
- "测量 CH1 的频率、Vpp 和上升时间。"
- "将 CH2 设置为 200 mV/div、交流耦合,在 CH2 下降沿、0 V 处触发,然后进行一次采集,并将完整存储器记录保存到 ~/data/burst.csv。"
- "从屏幕采集 CH1 波形,并告诉我占空比以及波形是否削波。"
- "截取示波器屏幕,以便我放进实验记录本。"
说明
- 一个驱动程序,三个命令系列。 所有指南中通用的命令均按原样使用(长格式,例如
:TRIGger:EDGE:LEVel、:MEASure:ITEM? VPP,CHANnel1、:WAVeform:PREamble?)。差异则遵循各指南:自动缩放命令为:AUToscale(DS1000Z、MSO5000)或:AUToset(DHO);屏幕截图命令为:DISPlay:DATA? ON,OFF,PNG(DS1000Z)、:DISPlay:DATA? PNG(DHO),或:DISPlay:DATA?→ BMP(MSO5000);屏幕采集返回 1200 个点(DS1000Z,12 个格)或 1000 个点(MSO5000/DHO,10 个格)。通过*IDN?检测系列;除非强制指定--option profile=DS1000Z|MSO5000|DHO,否则不支持未知的 Rigol 型号。 - 波形缩放始终使用
:WAVeform:PREamble?和 BYTE 格式:伏特 = (字节 − YORigin − YREFerence) × YINCrement。由于 DHO 指南未说明字节序,因此不使用 WORD 格式。对于 12 位 DHO 示波器,这意味着屏幕/存储器数据为 8 位。 - 深存储器(
mode="memory")遵循文档所述的 RAW 流程:停止示波器,然后使用:WAVeform:STARt/STOP分批读取,每批 250 000 个点(BYTE 格式下 DS1000Z 的最大值)。MSO5000 和 DHO 指南说明了分批读取,但没有说明最大值;服务会检查每批的长度,如果返回的批次长度不足,会明确报错。尚未在 MSO5000/DHO 硬件上验证。 - 采集过程会从选择来源起一直保持连接,直到读取最后一个字节,然后重新读取前导码:如果读取期间 V/div 或时基发生变化,就会拒绝此次采集,而不会使用错误的比例进行缩放。
clipped_fraction会在两种模式下统计处于 ADC 限值(代码 0/255)的点。返回的波形会保留每个数据块中的最小和最大采样值,因此狭窄的毛刺不会在降采样时丢失。save_path(CSV)和屏幕截图的save_path(MSO5000 使用.png、.bmp)必须指定新文件:读取任何内容前都会检查文件是否存在,绝不会覆盖现有文件。 - 测量在示波器返回 9.9E37(无法测量)时会返回
null。占空比和过冲会按示波器返回的值原样报告(DS1000Z 指南将占空比定义为比值)。 - 设置命令会经过检查:之后会读取
:SYSTem:ERRor?,因此超出范围的量程、偏移或触发电平会被报告,而不会被静默忽略。除非启用微调(VERNier),否则量程会按 1-2-5 步进调整。 - LAN: 编程指南介绍通过 VISA(VXI-11/LXI,
TCPIP0::<ip>::INSTR)进行 LAN 访问。Rigol 示波器也支持通过 TCP 端口 5555 使用原始 SCPI(tcp://<ip>:5555);该端口被广泛使用,但这些指南未提及。 - USB 还需要
libusb才能使用pyvisa-py;安装此软件包时也会安装pyusb。 - 仅 PNG 屏幕截图会作为 MCP 图像内容返回;较大的 BMP 屏幕截图(MSO5000)会保存到磁盘,并返回文件路径。
硬件验证
| 型号 | 固件 | 接口 | 验证者 | 日期 |
|---|---|---|---|---|
| 暂无: 成为首位验证者 |
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。