mcpField
R
Rigol Oscilloscope

Rigol Oscilloscope

本地服务
github.com科研与教育235 周前更新

关于 Rigol Oscilloscope

Rigol Oscilloscope 是面向 Rigol 示波器的 MCP 服务,供 AI Agent 读取仪器数据并操作采集与设置。它支持测量和校准波形捕获;目前尚未经过硬件验证。

主要功能

  1. 01读取示波器设置和设备信息
  2. 02测量电压与时序参数
  3. 03捕获校准波形及统计数据
  4. 04将波形数据保存为 CSV
  5. 05获取示波器屏幕截图
  6. 06调整通道、时基和触发

适用场景

  1. 01查看通道设置、时基和触发状态
  2. 02测量信号频率和上升时间
  3. 03捕获波形以检查是否削波
  4. 04保存示波器截图作为实验记录

MCP 相关

通过 MCP 工具提供 Rigol 示波器的读数、测量、波形与截图捕获以及设置控制。只读选项可阻止更改示波器设置的工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"k-dense-ai-labmcp-rigol-scope": {
"command": "uvx",
"args": [
"labmcp-rigol-scope"
],
"env": {
"LABMCP_ADDRESS": "<LABMCP_ADDRESS>",
"LABMCP_SIMULATE": "<LABMCP_SIMULATE>",
"LABMCP_READ_ONLY": "<LABMCP_READ_ONLY>",
"LABMCP_LIMITS": "<LABMCP_LIMITS>"
}
}
}
}
启动命令uvx labmcp-rigol-scope
需要配置的环境变量
LABMCP_ADDRESSInstrument address, e.g. serial:///dev/ttyUSB0 or tcp://192.168.1.50:5025
LABMCP_SIMULATESet to 1 to use the built-in simulator (no hardware)
LABMCP_READ_ONLYSet to 1 to disable all state-changing tools
LABMCP_LIMITSSafety limit overrides, e.g. max_temperature_c=80

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypilabmcp-rigol-scope0.1.2

工具

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。

连接示波器

  1. **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 查找资源。
  2. **LAN:**在示波器的 Utility I/O / LAN 设置中启用 DHCP 或设置静态 IP,并记下地址。
  3. 测试连接:
    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_points1 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)会保存到磁盘,并返回文件路径。

硬件验证

型号固件接口验证者日期
暂无: 成为首位验证者

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。