mcpField
S
Siglent SDM3045X multimeter

Siglent SDM3045X multimeter

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

关于 Siglent SDM3045X multimeter

这是一款非官方 MCP 服务,可通过 USB 或 LAN 操作 Siglent SDM3045X 台式万用表。它向 MCP 客户端提供单次读数、定时采样、快速连续读数及设备信息。

主要功能

  1. 01读取当前设置下的测量值
  2. 02选择测量功能与量程
  3. 03定时采样并计算统计值
  4. 04快速采集最多 10,000 次读数
  5. 05查看设备与配置信息
  6. 06可选原始 SCPI 命令

适用场景

  1. 01通过 MCP 客户端读取电压或电阻
  2. 02在指定时间段内采集读数
  3. 03快速采样并获取汇总统计值

MCP 相关

向 MCP 客户端提供万用表测量和设备信息工具。启用后还可使用 SCPI 工具。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"shaag7967-mcp-server-siglent-sdm3045x": {
"command": "uvx",
"args": [
"mcp-server-siglent-sdm3045x"
],
"env": {
"SDM_RESOURCE": "<SDM_RESOURCE>",
"SDM_SERIAL": "<SDM_SERIAL>",
"SDM_ALLOW_SCPI": "<SDM_ALLOW_SCPI>",
"SDM_VISA_BACKEND": "<SDM_VISA_BACKEND>"
}
}
}
}
启动命令uvx mcp-server-siglent-sdm3045x
需要配置的环境变量
SDM_RESOURCEInstrument address: /dev/usbtmc0, an IP address or a VISA resource string. Auto-detected on USB and in the local network if not set.
SDM_SERIALSerial number of the instrument to use when several are connected (auto-detection only)
SDM_ALLOW_SCPISet to 1 to enable the raw SCPI tool, which can change any instrument setting
SDM_VISA_BACKENDPyVISA backend: @py (pyvisa-py) or @ivi for an installed NI/Keysight VISA

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

安装包
pypimcp-server-siglent-sdm3045x0.1.1

工具

5

收录的工具列表 · 更新于 2 周前

此工具无需参数。

详细介绍

mcp-server-siglent-sdm3045x

一个 MCP 服务,让 AI 助手能够使用通过 USB 或 LAN 连接的 Siglent SDM3045X 台式万用表进行测量。

非官方项目,与 Siglent 无关,也未获其认可。 已在 SDM3045X 上测试,固件版本为 5.02.01.10,分别通过 USB(Linux)和 LAN 连接。

工具

工具描述
read使用仪器上设定的功能和量程读取一次,并保留这些设置
measure选择功能(直流/交流电压和电流、二线/四线电阻、电容、频率、周期、通断、二极管、温度)并读取一次
sample在一段时间内读取带时间戳的数据(最长 600 s,间隔 ≥ 0.1 s),并计算最小值/最大值/平均值/标准差
burst尽可能快地读取最多 10000 次(快速模式下约为 180 次/秒),并提供统计数据
get_device_info获取型号、序列号、固件、连接方式和当前测量配置

每次读数都会附带单位、所用量程,以及数据手册提供单一数值时的准确度(例如 ±(0.06 % of reading + 8 counts),以绝对值表示)。超量程会报告为 "overload": true,而不是仪器的 9.9E37。

启用 --allow-scpi 后,还会提供一个工具:

工具描述
scpi发送远程手册中的任意 SCPI 命令或查询(统计、限值、归零等)

原始 SCPI 工具默认关闭,因为它可以更改任何设置,包括 LAN 配置。

要求

  • Python ≥ 3.10 和 uv

  • 仪器已连接到后部的 USB 设备端口,或已接入网络。

  • Linux、USB: 内核的 usbtmc 驱动会将仪器映射为 /dev/usbtmc0。 使用 udev 规则为已登录用户授予访问权限:

    echo 'SUBSYSTEM=="usbmisc", KERNEL=="usbtmc[0-9]*", TAG+="uaccess"' | sudo tee /etc/udev/rules.d/70-usbtmc.rules
    sudo udevadm control --reload && sudo udevadm trigger
    
  • Windows / macOS、USB: 安装 VISA(NI-VISA 或 Keysight IO Libraries),并使用 --visa-backend @ivi 启动服务。

  • LAN: 无需额外软件。仪器需要有一个与子网匹配的地址,之后服务会自动找到它。在仪器上打开 Utility → I/O Config → LAN Settings 并启用 DHCP,或在 Modify Settings 中输入静态 IP 地址、子网掩码和网关(用户手册的 I/O Configuration 一节,可在 Siglent 产品页面 查阅)。请确认仪器的子网与网络匹配:我们的仪器出厂时使用静态地址 10.11.13.220,广播搜索无法访问该地址。连接 USB 时,SYST:COMM:LAN:IPAD?(例如通过 scpi 工具)会显示正在使用的地址。

配置

Claude Code
claude mcp add siglent-sdm3045x -- uvx mcp-server-siglent-sdm3045x
# fixed address instead of auto-detection:
claude mcp add siglent-sdm3045x -- uvx mcp-server-siglent-sdm3045x --resource 192.168.1.50
Claude Desktop 和其他客户端
{
  "mcpServers": {
    "siglent-sdm3045x": {
      "command": "uvx",
      "args": ["mcp-server-siglent-sdm3045x"]
    }
  }
}
选项
选项环境变量默认值
--resource RESOURCESDM_RESOURCE先在 USB 上自动检测,然后在 LAN 上检测
--serial SERIALSDM_SERIAL任意 SDM3045X
--allow-scpiSDM_ALLOW_SCPI=1关闭
--visa-backend BACKENDSDM_VISA_BACKEND@py(pyvisa-py)
--log-level LEVELSDM_LOG_LEVELWARNING(也可以是 DEBUG、INFO、ERROR、CRITICAL)

RESOURCE 可以是设备文件(/dev/usbtmc0)、IP 地址或主机名(VXI-11),也可以是任意 VISA 资源字符串,例如 TCPIP::192.168.1.50::5025::SOCKET(原始套接字)或 USB0::0xF4EC::0x1203::SDM34XXXXXXXXX::INSTR。端口 5024 是 telnet 控制台,不能用作套接字资源。

自动检测会先尝试 /dev/usbtmc*,然后检测 VISA 列出的 USB 上的 Siglent 仪器 (排除已通过 /dev/usbtmc* 查询过的仪器,因为 pyvisa-py 会将其从内核驱动接管),接着检测 这台计算机所连接的每个网络中的 VXI-11 仪器(向端口映射器发送 UDP 广播,约需 1 秒)。它会选择 第一个标识为 SDM3045X 的仪器。如果有多台仪器,--serial 可按序列号选择仪器(序列号可通过 get_device_info 查看,也印在后面板标签上,并显示在 Utility → System Setup → System Info 下)。如果 仪器位于其他子网,广播无法到达,请改用 --resource;这两个选项不能同时使用。

测量说明

  • 服务无法查看测试线的连接方式。它会告知助手,只切换到与接线相匹配的功能:测量电流时,红色测试线必须插在 I 插孔中;测量电阻、通断、二极管和电容时,会向电路中施加最高 1 mA 的测试电流。
  • 远程切换功能或量程也会改变前面板上的显示。
  • 服务发送命令后,仪器会进入远程模式:前面板显示“Immediate Trig”,按键也会被锁定。按 Shift 可返回前面板操作。仪器没有用于退出远程模式的命令,因此服务无法自行解除该模式。
  • 电流超过 7 A 时,数据表建议通电 30 s 后断电 30 s。
  • 精度数据采用数据表中的一年期数值(23 °C ± 5 °C、预热 30 min、慢速)。如果未对测试线调零,二线电阻测量会增加 0.2 Ω;交流精度取决于信号频率,并按频段给出;热电偶数据不包括冷端误差(使用内置传感器时最高可达 ±3.5 °C)。

开发

uv sync
uv run pytest                                   # tests use a simulated instrument
npx @modelcontextprotocol/inspector uv run mcp-server-siglent-sdm3045x   # try the tools interactively

如需检查真实仪器,请连接仪器并运行:

uv run python scripts/hardware_test.py                      # voltage-type functions only
uv run python scripts/hardware_test.py --with-test-current  # also resistance, current, capacitance, …
uv run python scripts/hardware_test.py --reconnect          # also unplug/replug USB when asked

基本检查只会使用不会向输入端施加电流的功能。仪器的实际行为(包括与 Remote Manual 不同之处)见 docs/protocol.md。

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

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

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