Siglent SDM3045X multimeter

io.github.shaag7967由 GitHub 帳號 shaag7967 發布v0.1.1更新於 Nov 3, 2026

Measurements with a Siglent SDM3045X bench multimeter via USB or LAN (unofficial)

已驗證STDIO僅桌面開發者工具資料與分析

概覽

AI 產生的概覽

非官方 MCP 伺服器,讓助理透過 USB 或區域網路從 Siglent SDM3045X 桌上型電表取得即時讀值。

可以做什麼
  • 依儀器目前設定的功能與檔位取一次讀值,或先選擇功能再量測一次
  • 以固定間隔在一段時間內記錄帶時間戳的取樣,並回傳最小值、最大值、平均值與標準差
  • 依儀器自身節奏快速連續擷取一批讀值並附上統計結果
  • 讀取型號、序號、韌體版本、連線方式與目前量測設定
  • 啟用原始 SCPI 工具後,可送出任意 SCPI 指令與查詢
適用情境
適合桌上有一台 SDM3045X、希望助理代為記錄電壓、電流、電阻、頻率或溫度讀值、進行短時間取樣,或查看儀器身分與目前設定而不必手動輸入指令的情況。
執行需求
需在本機執行,依賴 Python 3.10 以上與 uv(uvx)。儀器需以 USB 或網路連線。Linux 的 USB 需要 usbtmc 驅動程式與 udev 存取權限;Windows 與 macOS 的 USB 需安裝 VISA 並使用 @ivi 後端。選用設定:SDM_RESOURCE、SDM_SERIAL、SDM_VISA_BACKEND、SDM_ALLOW_SCPI、SDM_LOG_LEVEL。
安裝前請注意
讀值來自真實硬體:切換功能或檔位會改變前方面板顯示,並可能向電路注入最高 1 mA 的測試電流,而伺服器無法得知測試棒如何連接。遠端控制期間儀器前方面板會被鎖定,需在儀器上按 Shift 才能恢復。啟用原始 SCPI 工具後可變更任何設定,包括區域網路設定。精度數值為規格書標稱值,並非校正保證。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Siglent SDM3045X multimeter,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

mcp-server-siglent-sdm3045x

An MCP server that lets AI assistants take measurements with a Siglent SDM3045X bench multimeter connected via USB or LAN.

Unofficial project, not affiliated with or endorsed by Siglent. Tested with an SDM3045X, firmware 5.02.01.10, over USB (Linux) and LAN.

Tools

ToolDescription
readOne reading with the function and range set on the instrument, keeping them
measureSelect a function (DC/AC voltage and current, 2/4-wire resistance, capacitance, frequency, period, continuity, diode, temperature) and take one reading
sampleTimestamped readings over a period (max 600 s, interval ≥ 0.1 s) with min/max/mean/stdev
burstUp to 10000 readings as fast as the instrument can (about 180/s at speed fast), with statistics
get_device_infoModel, serial number, firmware, connection and the present measurement configuration

Every reading comes with its unit, the range used and, where the data sheet gives a single figure, its accuracy (e.g. ±(0.06 % of reading + 8 counts) as an absolute value). Overloads are reported as "overload": true instead of the instrument's 9.9E37.

With --allow-scpi one more tool is available:

ToolDescription
scpiSend any SCPI command or query from the Remote Manual (statistics, limits, null, …)

The raw SCPI tool is off by default because it can change any setting, including the LAN configuration.

Requirements

  • Python ≥ 3.10 and uv

  • The instrument connected to the USB device port on the rear, or to the network.

  • Linux, USB: the kernel usbtmc driver makes the instrument available as /dev/usbtmc0. Give logged-in users access with a udev rule:

    bash
    echo 'SUBSYSTEM=="usbmisc", KERNEL=="usbtmc[0-9]*", TAG+="uaccess"' | sudo tee /etc/udev/rules.d/70-usbtmc.rulessudo udevadm control --reload && sudo udevadm trigger
  • Windows / macOS, USB: install a VISA (NI-VISA or Keysight IO Libraries) and start the server with --visa-backend @ivi.

  • LAN: no extra software. The instrument needs an address in your subnet; then the server finds it by itself. On the instrument open Utility → I/O Config → LAN Settings and turn on DHCP, or enter a static IP address, subnet mask and gateway under Modify Settings (User Manual, section I/O Configuration, available on the Siglent product page). Check that the instrument's subnet matches your network: ours came with the static address 10.11.13.220, which the broadcast search does not reach. While USB is connected, SYST:COMM:LAN:IPAD? (e.g. with the scpi tool) shows the address in use.

Configuration

Claude Code

bash
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 and other clients

json
{  "mcpServers": {    "siglent-sdm3045x": {      "command": "uvx",      "args": ["mcp-server-siglent-sdm3045x"]    }  }}

Options

OptionEnvironment variableDefault
--resource RESOURCESDM_RESOURCEauto-detect on USB, then LAN
--serial SERIALSDM_SERIALany SDM3045X
--allow-scpiSDM_ALLOW_SCPI=1off
--visa-backend BACKENDSDM_VISA_BACKEND@py (pyvisa-py)
--log-level LEVELSDM_LOG_LEVELWARNING (or DEBUG, INFO, ERROR, CRITICAL)

RESOURCE can be a device file (/dev/usbtmc0), an IP address or host name (VXI-11), or any VISA resource string such as TCPIP::192.168.1.50::5025::SOCKET (raw socket) or USB0::0xF4EC::0x1203::SDM34XXXXXXXXX::INSTR. Port 5024 is a telnet console and does not work as a socket resource.

Auto-detection tries /dev/usbtmc* first, then Siglent instruments listed by VISA on USB (leaving out those already asked through /dev/usbtmc*, since pyvisa-py would take them away from the kernel driver), then VXI-11 instruments in every network this computer is connected to (UDP broadcast to the portmapper, about 1 s). It accepts the first one that identifies itself as an SDM3045X. With several instruments, --serial picks one by its serial number (shown by get_device_info, on the rear label and under Utility → System Setup → System Info). Set --resource instead if the instrument is in another subnet, where the broadcast does not reach it; the two options exclude each other.

Measurement notes

  • The server cannot see how the test leads are connected. It tells the assistant to only switch to functions that match the wiring: currents need the red lead in the I jack; resistance, continuity, diode and capacitance drive a test current of up to 1 mA through the circuit.
  • Switching function or range remotely also changes what the front panel shows.
  • Once the server has sent a command, the instrument is in remote mode: the front panel shows "Immediate Trig" and its keys are locked. Press Shift to return to front panel operation. The instrument offers no remote command for this, so the server cannot release it by itself.
  • Above 7 A, the data sheet recommends 30 s off after 30 s on.
  • Accuracy figures are the one-year data sheet values (23 °C ± 5 °C, 30 min warm-up, speed slow). 2-wire resistance adds 0.2 Ω unless the leads were nulled; AC accuracy depends on the signal frequency and is given per frequency band; thermocouple figures exclude the cold junction error (up to ±3.5 °C with the built-in sensor).

Development

bash
uv syncuv run pytest                                   # tests use a simulated instrumentnpx @modelcontextprotocol/inspector uv run mcp-server-siglent-sdm3045x   # try the tools interactively

To check a real instrument, connect it and run:

bash
uv run python scripts/hardware_test.py                      # voltage-type functions onlyuv 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

The basic checks only use functions that put no current into the inputs. Observed instrument behaviour, including where it differs from the Remote Manual, is described in docs/protocol.md.

License

MIT

來源:README.md,提交 8358573

工具

5

read

Take one reading with the function, range and speed currently set on the instrument. Function, range and speed are kept; the trigger is set to immediate with one reading per trigger, as measure does. Returns value, unit, range, timestamp (UTC) and, where the data sheet allows, the accuracy.

無需輸入參數。

measure

Select a measurement function and take one reading. This switches the instrument (front panel included) to the given function, with autorange unless a range is given. Returns value, unit, range used, timestamp (UTC) and, where the data sheet allows, the accuracy of the reading. Args: function: Measurement function. Leads in HI/LO for voltage, resistance_2w, capacitance, frequency, period, continuity, diode and temperature; in I/LO for currents; resistance_4w also uses HI Sense/LO Sense. range: Fixed range in V, A, Ω or F; omit for autorange. dc_voltage 0.6, 6, 60, 600, 1000; ac_voltage 0.6, 6, 60, 600, 750; dc_current 0.0006, 0.006, 0.06, 0.6, 6, 10; ac_current 0.06, 0.6, 6, 10; resistance_2w/resistance_4w 600, 6000, 60000, 600000, 6e6, 6e7, 1e8; capacitance 2e-9, 2e-8, 2e-7, 2e-6, 2e-5, 0.0002, 0.01. Other functions have no range. speed: Only for dc_voltage, dc_current, resistance_2w, resistance_4w: slow (10 PLC, default, most accurate), medium (1 PLC), fast (0.3 PLC). sensor: Required for temperature: pt100 (RTD) or thermocouple type B, E, J, K, N, R, S or T.

輸入參數rangespeedsensorfunction必填

sample

Record timestamped readings at a fixed interval and return statistics plus all samples. Readings are paced by this computer. A reading takes about 0.3 s at speed slow and in most other functions, 0.6 s for frequency and period; with a shorter interval readings are taken back to back, and none starts later than one interval after duration_s, so the recording ends on time with fewer samples. Without function the present function and range are kept; otherwise they are set as in measure. Args: duration_s: Recording time in seconds (max 600). interval_s: Time between readings in seconds (min 0.1). function: Measurement function. Leads in HI/LO for voltage, resistance_2w, capacitance, frequency, period, continuity, diode and temperature; in I/LO for currents; resistance_4w also uses HI Sense/LO Sense. range: Fixed range in V, A, Ω or F; omit for autorange. dc_voltage 0.6, 6, 60, 600, 1000; ac_voltage 0.6, 6, 60, 600, 750; dc_current 0.0006, 0.006, 0.06, 0.6, 6, 10; ac_current 0.06, 0.6, 6, 10; resistance_2w/resistance_4w 600, 6000, 60000, 600000, 6e6, 6e7, 1e8; capacitance 2e-9, 2e-8, 2e-7, 2e-6, 2e-5, 0.0002, 0.01. Other functions have no range. speed: Only for dc_voltage, dc_current, resistance_2w, resistance_4w: slow (10 PLC, default, most accurate), medium (1 PLC), fast (0.3 PLC). sensor: Required for temperature: pt100 (RTD) or thermocouple type B, E, J, K, N, R, S or T.

輸入參數rangespeedsensorfunctionduration_sinterval_s

burst

Take a series of readings as fast as the instrument can and return statistics plus all values. Readings are paced by the instrument and have no individual timestamps. Approximate rates (50 Hz mains): dc_voltage, dc_current and resistance 4/s at speed slow, 40/s medium, 175/s fast; ac functions and temperature 4/s; frequency and period 2/s. Bursts estimated to take longer than 600 s are refused. Without function the present function and range are kept; otherwise they are set as in measure. Args: count: Number of readings, 1 to 10000. function: Measurement function. Leads in HI/LO for voltage, resistance_2w, capacitance, frequency, period, continuity, diode and temperature; in I/LO for currents; resistance_4w also uses HI Sense/LO Sense. range: Fixed range in V, A, Ω or F; omit for autorange. dc_voltage 0.6, 6, 60, 600, 1000; ac_voltage 0.6, 6, 60, 600, 750; dc_current 0.0006, 0.006, 0.06, 0.6, 6, 10; ac_current 0.06, 0.6, 6, 10; resistance_2w/resistance_4w 600, 6000, 60000, 600000, 6e6, 6e7, 1e8; capacitance 2e-9, 2e-8, 2e-7, 2e-6, 2e-5, 0.0002, 0.01. Other functions have no range. speed: Only for dc_voltage, dc_current, resistance_2w, resistance_4w: slow (10 PLC, default, most accurate), medium (1 PLC), fast (0.3 PLC). sensor: Required for temperature: pt100 (RTD) or thermocouple type B, E, J, K, N, R, S or T.

輸入參數countrangespeedsensorfunction

get_device_info

Instrument model, serial number, firmware, VISA resource and the present measurement configuration.

無需輸入參數。

版本歷史

1
  1. v0.1.1最新Oct 29, 2026

評分

已滿足適用檢查項的 90%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分
  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分