mcpField
K
Keithley SourceMeter SMU

Keithley SourceMeter SMU

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

关于 Keithley SourceMeter SMU

Keithley SourceMeter SMU 是用于 Keithley 源测量单元的 MCP 服务,支持设置电压或电流、测量 V/I,并运行受限的 IV 扫描。它兼容 2400、2450 系列 SCPI 和 2600B TSP;扫描结束时会关闭输出,目前仅经模拟器测试。

主要功能

  1. 01设置电压或电流及合规限值
  2. 02测量电压、电流和功率
  3. 03运行线性、对数及双向 IV 扫描
  4. 04支持 2400、2450 SCPI 与 2600B TSP
  5. 05扫描结束时关闭输出

适用场景

  1. 01测量 LED 或光电二极管的 IV 曲线
  2. 02以四线模式测量低电阻样品
  3. 03为器件施加受限电流或电压
  4. 04保存扫描数据并拟合曲线

MCP 相关

该 MCP 服务向客户端提供设备配置、读数、状态查询和输出控制工具,也提供有点数与时长限制的 IV 扫描工具。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"k-dense-ai-labmcp-keithley-smu": {
"command": "uvx",
"args": [
"labmcp-keithley-smu"
],
"env": {
"LABMCP_ADDRESS": "<LABMCP_ADDRESS>",
"LABMCP_SIMULATE": "<LABMCP_SIMULATE>",
"LABMCP_READ_ONLY": "<LABMCP_READ_ONLY>",
"LABMCP_LIMITS": "<LABMCP_LIMITS>"
}
}
}
}
启动命令uvx labmcp-keithley-smu
需要配置的环境变量
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-keithley-smu0.1.2

工具

12

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

此工具无需参数。

详细介绍

Keithley SourceMeter SMU — MCP 服务

让 AI Agent 使用Keithley (Tektronix) SourceMeter SMU输出带合规限值的电压或电流、测量 V 和 I,并运行有界 IV 扫描(线性、对数、双向)。每次扫描结束时,输出都会关闭,即使出现问题也不例外。此服务支持 Keithley 的全部三种远程控制方言:2400 系列 SCPI、2450 系列 SCPI 和 2600B TSP。

软件包labmcp-keithley-smu
仪器2400、2400-LV、2401、2410、2420、2425、2430(直流模式)、2440 · 2450、2460、2461、2470(SCPI 命令集)· 2601B、2602B、2604B、2611B、2612B、2614B、2634B、2635B、2636B
接口GPIB、USB(USBTMC)、以太网(VXI-11 / 原始套接字 5025)、RS-232(2400 系列),通过 VISA 或 tcp://
协议SCPI:2400 Series User's Manual 2400S-900-01 Rev. K §18、2450 Reference Manual 2450-901-01 Rev. D §6。TSP:2600B Reference Manual 2600BS-901-01 Rev. F §9
状态🧪 模拟:已针对三种方言的线路级模拟器进行测试,尚未在硬件上验证。报告硬件测试结果

无需硬件即可试用

uvx labmcp-keithley-smu --simulate --check                                   # 2450 + 1 kΩ resistor
uvx labmcp-keithley-smu --simulate --option dialect=2600 --option sim_dut=diode --check
uvx labmcp-keithley-smu --simulate --option dialect=2400 --option sim_resistance_ohm=47 --check

模拟 DUT 为电阻器(默认 1 kΩ)或类似 1N4148 的二极管(Shockley 方程,I_s = 2.52 nA,n = 1.752,R_s = 0.568 Ω)。合规限值钳位行为与真实 SMU 相同。

连接 SMU

  1. 仪器端。
    • **2400 系列:**GPIB(默认地址 24)或 RS-232。使用 RS-232 时,请设置 MENU > COMMUNICATION > RS-232:9600 波特、8 个数据位、无奇偶校验、终止符 LF、无流控制。
    • 2450 / 2460 / 2461 / 2470:使用 SCPI 命令集(MENU > System > Settings > Command Set > SCPI,然后重启)。如果仪器处于 TSP 模式,服务会停止并显示说明。在 SCPI2400 仿真模式下,仪器会使用 2400 方言进行控制。电压高于 ±21 V 时,2450 需要闭合安全联锁。
    • **2600B:**使用出厂设置即可(TSP)。保持 localnode.prompts 禁用(默认状态);启用提示符会导致其混入回复中。
  2. **查找地址:**运行 uvx labmcp ports(或 python -m pyvisa info)。GPIB 和 USBTMC 需要支持 GPIB 的 VISA 库。NI-VISA 可在所有环境中使用;pyvisa-py 支持 USBTMC/LAN(GPIB 则需搭配 gpib-ctypes/linux-gpib)。
  3. 测试连接:
    uvx labmcp-keithley-smu --address GPIB0::24::INSTR --check
    uvx labmcp-keithley-smu --address USB0::0x05E6::0x2450::04096331::INSTR --check
    uvx labmcp-keithley-smu --address tcp://192.168.1.50:5025 --check             # 2450 / 2600B LAN
    uvx labmcp-keithley-smu --address TCPIP0::192.168.1.51::inst0::INSTR --option channel=b --check   # 2602B, SMU B
    
    方言会根据 *IDN?(以及 2450 系列的 *LANG?)自动检测。使用 --option dialect=2400|2450|2600 可强制指定。

添加到 MCP 客户端

Claude Code

claude mcp add smu -- uvx labmcp-keithley-smu --address GPIB0::24::INSTR --limit max_voltage_v=5 --limit max_current_a=0.02

Claude Desktop / Cursor / Windsurf(claude_desktop_config.json、.cursor/mcp.json、……)

{
  "mcpServers": {
    "smu": {
      "command": "uvx",
      "args": ["labmcp-keithley-smu", "--address", "USB0::0x05E6::0x2450::04096331::INSTR",
               "--limit", "max_voltage_v=5", "--limit", "max_current_a=0.02"]
    }
  }
}

添加 --read-only,即可允许查看状态和测量数据,同时禁止配置、开启输出和扫描(仍可使用 output_off)。对于其他客户端,可通过 uvx labmcp config keithley-smu --address <resource> --client vscode 生成配置片段(也支持 cursor、codex、claude-code)。

工具

工具类型说明
configure_source🎛 控制在输出关闭时设置源(功能、量程、合规限值、范围、测量速度)。使用自动量程测量 V 和 I。如果输出已开启,则会拒绝操作;请先关闭输出,或使用 set_source_level。发送任何内容前都会检查限值。
get_command_log👁 读取返回最近发送给仪器的原始命令和收到的回复(最新记录在末尾)。可用于调试和记录操作内容。
get_connection_info👁 读取报告当前连接的仪器(标识、地址、模拟或真实)、服务是否为只读,以及当前生效的安全限值。请先调用此工具。
get_device_info👁 读取识别 SMU:制造商、型号、序列号、固件、命令方言(2400 / 2450 / 2600)、通道(2600B),以及该型号的最大源电压和电流。
get_status👁 读取报告输出是否开启、源功能(电压/电流)、设定值、合规限值、源是否处于合规状态、端子及 2/4 线测量方式。
measure👁 读取对已通电的 DUT 进行一次源测量读数(电压、电流、V/I、功率、合规标志)。不会更改任何设置;如果输出已关闭,则会拒绝操作。
output_off🛑 安全立即关闭 SMU 输出(并中止正在进行的任何 IV 扫描)。始终可用,包括在只读模式下。
output_on⚠️ 危险开启 SMU 输出:将配置的电压或电流施加到 DUT。首先从仪器读回设定值和合规限值,并检查是否超出安全限值。请向用户确认 DUT 已连接且可安全通电。
reconnect🛑 安全关闭并重新打开与仪器的连接(例如,仪器断电重启或重新插拔电缆后)。
run_iv_sweep⚠️ 危险运行阶梯式 IV 扫描:配置源、开启输出、逐步遍历各级并测量每级的 V 和 I,然后始终关闭输出(包括发生错误或调用 output_off 时)。返回曲线(经降采样)、合规标志、线性拟合结果和可选的完整 CSV(创建新文件;绝不会覆盖现有文件)。开始前必须关闭输出。首先检查限值。
set_4wire🎛 控制选择 4 线(远程感测,开尔文)或 2 线测量。对于低电阻 DUT,4 线测量可消除引线电阻的影响,但需要连接 SENSE 引线。如果输出已开启,则会拒绝操作。
set_source_level⚠️ 危险更改已配置源的设定值。如果输出已开启,新的电压/电流会立即施加到 DUT。首先检查设定值和当前合规限值是否超出安全限值。

get_connection_info、get_command_log 和 reconnect 内置于每个 LabMCP 服务中。

安全限值

限值默认值含义
max_voltage_v20 VAgent 可输出或允许作为电压合规限值的最大 |电压|
max_current_a0.1 AAgent 可输出或允许作为电流合规限值的最大 |电流|
max_power_w2 W最大最坏情况功率 |源设定值 × 合规限值|
max_sweep_points501单次 IV 扫描的最多点数(双向扫描的返回段也计入)
max_sweep_duration_s600 s估算扫描时长上限(点数 ×(延迟 + 2·NPLC/50 s + 20 ms))

发送任何内容前都会检查限值:configure_source 和 set_source_level 会检查;run_iv_sweep 会检查最大的 |start| 和 |stop|;output_on 会从仪器读回设定值和合规限值并进行检查。因此,在前面板上设置的值也会被检查。超出型号自身最大值的请求(例如,在 2602B 上请求 40 V)同样会被拒绝。启动时覆盖限值:--limit max_voltage_v=60 --limit max_power_w=10。对于易损 DUT,请收紧默认限值。

示例提示词

  • “以 20 mA 限制电流,分 61 步测量此 LED 在 0 到 3 V 范围内的 IV 曲线,然后告诉我电流为 1 mA 时的开启电压。”
  • “以 4 线模式让样品通过 1 mA 电流并告诉我其电阻,然后关闭输出。”
  • “对忆阻器从 −1 V 到 +1 V 执行双向扫描,限制电流为 1 mA,每点间隔 0.1 s,并将结果保存到 ~/data/memristor_run3.csv。”
  • “对光电二极管执行从 1 nA 到 10 mA 的对数电流扫描,电压限制为 2 V,并拟合理想因子。”
  • “SMU 现在在做什么?如果输出已开启,请将其关闭。”

注意事项

  • 简单、可验证的命令。 扫描采用分步循环:设置电平、等待 delay_s、读取一次并检查限制值。不使用仪器内置扫描和触发模型,因此每个点都会显示在 get_command_log 中。每次扫描结束时,都会在 try/finally 中关闭输出。扫描运行期间调用 output_off(即使扫描仍在配置中)会设置中止标志并立即关闭输出;随后扫描会停止,不会再次开启输出,并报告 aborted: true。

  • 扫描时长。 除了 max_sweep_duration_s,单次扫描最长可运行 1740 s(工具的 30 分钟超时减去余量):预估时长更长的扫描会被拒绝;如果扫描运行速度比预估慢,则会提前停止、关闭输出,并返回已测得的点(stop_reason 会说明原因)。

  • save_path 必须以 .csv 结尾,且文件必须尚不存在(绝不会覆盖现有文件);缺失的文件夹会自动创建。输出开启前会检查此项。

  • 溢出读数(SMU 的 +9.9E37 标记)在扫描曲线中会以 null 返回,计入 overflow_points,但不会纳入统计和拟合;measure 会将其报告为错误。

  • 测量内容。

    • 2400:同时测量 V 和 I(:SENS:FUNC:CONC ON、:SENS:FUNC "VOLT","CURR"),通过 :READ? 读取(:FORM:ELEM VOLT,CURR,STAT)。限制状态来自状态字的第 3 位。
    • 2450:测量函数为非源输出量,源读回功能已开启,:READ? "defbuffer1",SOUR,READ 会返回两者。限制状态来自 :SOUR:VOLT:ILIM:TRIP? / :SOUR:CURR:VLIM:TRIP?。
    • 2600B:print(smuX.measure.iv()) 和 print(smuX.source.compliance)。

    处于限制状态时,报告的 V 和 I 是测量值,而非编程设定的电平。

  • 2400 的 :MEAS? 会自行开启输出(手册第 18-72 页),因此绝不会使用。输出关闭时,measure 会拒绝运行。

  • 重新配置时输出必须关闭。 输出开启时,configure_source 和 set_4wire 会拒绝执行。若要更改正在运行的源,请使用 set_source_level(危险工具)。

  • 输出关闭状态(正常 / 零 / 高阻 / 保护)会保留为仪器上的配置。默认的正常状态下,关闭电流源后会变为 0 V 电压源。对于电池、已充电的电容或太阳能电池,请先选择高阻抗(2450 手册第 6-40 页)。

  • 2460/2461/2470 的最大值未内置(尚未审阅这些型号的手册)。安全限制仍然适用,超出量程的设置会被仪器拒绝。不使用 2430 脉冲模式和 2600B 的 limitp 功率限制功能。

  • 时序: NPLC 设置积分时间(60 Hz 下 1 PLC = 16.7 ms,50 Hz 下为 20 ms)。源自动延迟保持仪器默认设置(开启),而 delay_s 会为每个点增加稳定时间。

  • 模拟器错误回复遵循手册中的错误列表(+802 "Not permitted with OUTPUT off"、-222、-113;2600B 为 1101 "Parameter too big"、-285/-286)。实际固件上的确切消息措辞可能有所不同。

硬件验证

型号固件接口验证者日期
尚无: 成为第一位

评论

支持 Markdown

第一次接触 MCP?

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

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