关于 SRS Lock-in Amplifier
SRS Lock-in Amplifier 是用于读取和控制 Stanford Research Systems SR810/SR830 与 SR860/SR865A 锁相放大器的 MCP 服务。它提供输出测量、设置控制和有界频率扫描,支持这些仪器的命令集。
主要功能
- 01读取 X、Y、R 和 θ 输出
- 02配置参考、输入和滤波设置
- 03自动执行相位、增益和量程调整
- 04记录有界频率扫描
- 05限制驱动幅度并支持只读操作
适用场景
- 01调整设置后测量锁相输出
- 02通过频率扫描查找共振
- 03自动优化相位、增益或输入量程
- 04将正弦输出降至最低
MCP 相关
向 MCP 客户端提供仪器读数、设置、控制和频率扫描工具。只读模式会阻止更改设置和驱动正弦输出。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
uvx labmcp-srs-lockinLABMCP_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+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
15收录的工具列表 · 更新于 2 周前
此工具无需参数。
详细介绍
SRS 锁相放大器 — MCP 服务
让 AI Agent 读取 X/Y/R/θ,设置参考频率、谐波和相位、驱动电平、灵敏度和时间常数,运行自动相位/增益调整,并在 Stanford Research Systems DSP 锁相放大器 上记录范围受限的频率扫描,包括经典的 SR810/SR830 和当前的 SR860/SR865A。
| 软件包 | labmcp-srs-lockin |
| 仪器 | SR830、SR810(SR8x0 命令集);SR860、SR865A(SR86x 命令集) |
| 接口 | GPIB(VISA)、RS-232;SR86x 还支持 USB(USBTMC)和以太网(VXI-11) |
| 协议 | SRS ASCII 远程命令,采用 IEEE-488.2 风格(SR830 手册 第 5 章,SR810 手册,SR860 手册 第 4 章,SR865A 手册) |
| 状态 | 🧪 模拟:已通过两种命令集的线级模拟器测试,尚未在硬件上验证。报告硬件测试 |
无需硬件即可试用
uvx labmcp-srs-lockin --simulate --check # SR830 simulator
uvx labmcp-srs-lockin --simulate --option model=sr860 --check # SR860 simulator
模拟样品是由正弦输出驱动的谐振器(10 kHz,Q = 50),因此从 9 到 11 kHz 执行 frequency_sweep 会显示谐振峰。
连接锁相放大器
根据 *IDN? 检测型号(可使用 --option model=sr830|sr810|sr860|sr865a 覆盖)。
- **GPIB(所有型号):**在设置菜单中设置 GPIB 地址(SR830 出厂默认值为 8)。安装
labmcp[visa](已包含)和 VISA 后端(pyvisa-py 适用于大多数 USB-GPIB 适配器;NI-VISA 使用?backend=@ivi)。 - **RS-232:**在仪器上设置波特率和奇偶校验(SR830 默认波特率为 9600,无奇偶校验;字长始终为 8 位)。SR830 只会响应
OUTX选定的接口;服务器会在串行连接上自动发送OUTX 0,在 GPIB 上发送OUTX 1。SR830 的 RS-232 回复以 CR 结尾。对于通过 RS-232 连接的 SR86x,传入--option model=sr860(回复以 LF 结尾),或将 SR86x 的发送终止符设置为 CR。 - **SR86x USB / 以太网:**使用 USBTMC 或 VXI-11 VISA 资源(
TCPIP0::<ip>::inst0::INSTR;在系统菜单中启用 VXI-11,并将你的 PC 添加到可信 IP 范围)。 - 测试连接:
如果通过原始 TCP 适配器连接 SR830 的 GPIB 端口,请使用uvx labmcp-srs-lockin --address GPIB0::8::INSTR --check uvx labmcp-srs-lockin --address /dev/ttyUSB0 --check # SR830 RS-232 uvx labmcp-srs-lockin --address "serial://COM3?baudrate=19200" --check # non-default baud uvx labmcp-srs-lockin --address TCPIP0::192.168.1.20::inst0::INSTR --check # SR86x LAN--option interface=gpib。
添加到 MCP 客户端
Claude Code
claude mcp add lockin -- uvx labmcp-srs-lockin --address GPIB0::8::INSTR
Claude Desktop / Cursor / Windsurf(claude_desktop_config.json、.cursor/mcp.json、……)
{
"mcpServers": {
"lockin": {
"command": "uvx",
"args": ["labmcp-srs-lockin", "--address", "GPIB0::8::INSTR"]
}
}
}
添加 --read-only,即可读取输出和设置,但会阻止所有设置更改以及正弦输出驱动。对于其他客户端,可使用 uvx labmcp config srs-lockin --address GPIB0::8::INSTR --client vscode 生成配置片段(也支持 cursor、codex、claude-code)。
工具
| 工具 | 类型 | 描述 |
|---|---|---|
auto_gain | 🎛 控制 | 根据当前信号自动选择灵敏度(SR830 AGAN / SR86x ASCL)。在 SR830 上,如果时间常数超过 1 s,则 AGAN 不执行任何操作。 |
auto_phase | 🎛 控制 | 执行自动相位(APHS):调整参考相位,使 Y ≈ 0 且 X ≈ R。随后输出需要经过数个时间常数才能稳定。如果相位不稳定,则不执行任何操作。 |
auto_range | 🎛 控制 | 根据当前信号优化输入级:SR830 自动储备(ARSV)或 SR86x 自动设置电压输入范围(ARNG)。 |
frequency_sweep | ⚠️ 危险 | 将内部参考(和 SINE OUT 驱动)从 start_hz 逐步调整到 stop_hz,在每个点等待输出滤波器稳定,并记录 X/Y/R/θ 随频率的变化,例如用于测量共振或传递函数。驱动幅度保持当前值。需要使用内部参考。估算时长必须在 max_sweep_duration_s 范围内;set_amplitude_minimum 会停止正在运行的扫描。save_path 必须是一个新的 .csv 文件。 |
get_command_log | 👁 读取 | 返回最近发送给仪器的原始命令和从仪器收到的回复(最新记录在最后)。有助于调试和记录操作。 |
get_connection_info | 👁 读取 | 报告当前连接的仪器(身份、地址、模拟或真实)、服务是否为只读,以及当前生效的安全限制。请先调用此工具。 |
get_settings | 👁 读取 | 报告参考设置(源、频率、谐波、相位)、正弦输出、灵敏度、时间常数/斜率(含 99% 稳定时间)和输入配置。 |
read_outputs | 👁 读取 | 通过一次一致的快照(SNAP?)读取 X、Y、R 和 θ,并返回参考频率、灵敏度、满量程占比,以及自上次读数以来锁存的任何过载状态。 |
reconnect | 🛑 安全 | 关闭并重新打开与仪器的连接(例如仪器断电重启或重新插拔电缆后)。 |
set_amplitude | ⚠️ 危险 | 设置 SINE OUT 幅度(V rms),用于驱动样品或激励电路。超过 max_amplitude_v 安全限制时将被拒绝。请先告知用户新的驱动电平。 |
set_amplitude_minimum | 🛑 安全 | 将正弦输出调至仪器最小值(锁相放大器最接近“关闭输出”的状态),并停止任何正在运行的频率扫描。SR810/SR830:4 mV rms(无法降至零——如果样品必须完全不受驱动,请断开电缆)。SR86x:1 nV rms,直流电平为 0 V。 |
set_input | 🎛 控制 | 配置信号输入:A / A-B / 电流、AC 或 DC 耦合、屏蔽浮地/接地,以及(SR86x)电压输入范围。低于约 160 mHz 时使用 DC 耦合。未指定的参数保持不变。 |
set_reference | 🎛 控制 | 设置参考:源(内部/外部)、内部频率、检测谐波和相移。未指定的参数保持不变。改变频率也会改变 SINE OUT 驱动频率(幅度保持当前值)。 |
set_sensitivity | 🎛 控制 | 设置灵敏度(满量程范围)。将选择不小于 full_scale 的最小可用量程,以避免该幅度的信号造成过载。在 SR810/SR830 上,也可以同时设置动态储备。 |
set_time_constant | 🎛 控制 | 设置输出滤波器时间常数(选择最接近的可用值),并可选设置滤波器斜率和同步滤波器。SR830 可能会将过短的时间常数提高到当前斜率/储备对应的最小值;返回的设置会显示实际采用的值。 |
get_connection_info、get_command_log 和 reconnect 内置于每个 LabMCP 服务中。
安全限制
| 限制 | 默认值 | 含义 |
|---|---|---|
max_amplitude_v | 1.0 V | set_amplitude 可设置的最大正弦输出振幅(V rms);如果当前振幅高于此值,扫描也会被拒绝执行 |
max_sweep_duration_s | 600 s | Agent 可启动的最长估算频率扫描时长(点数 × 稳定时间) |
启动时覆盖:--limit max_amplitude_v=0.1 --limit max_sweep_duration_s=1800。
示例提示词
- “将锁相放大器设为 13.7 Hz 内部参考、100 mV 驱动、1 s 时间常数和 24 dB/oct,并在稳定后告诉我 X 和 Y。”
- “自动调相,然后读取 R 和 θ 十次,并给我 R 的均值和标准差。”
- “以 10 mV 驱动,在 30 到 34 kHz 之间按对数间隔分 201 步扫描,并找出我的音叉的谐振频率和 Q 值。”
- “切换到电流输入,增益设为 100 MΩ,采用直流耦合,并自动选择灵敏度。”
- “我们完成了——将正弦输出调至最低。”
备注
- 正弦输出具有危险性。 它会驱动样品(产生热量、电迁移和压电应力)。
set_amplitude会检查max_amplitude_v;set_amplitude_minimum是最接近“关闭输出”的设置:SR810/SR830 无法低于 4 mV rms,因此如果样品必须完全不受驱动,请断开电缆。对于 SR86x,它会将振幅设为 1 nV rms,并将直流电平设为 0 V(SOFF)。SR830 上电和重置(*RST)后的振幅为 1.000 V rms。 - 每条设置命令后都会执行
*ESR?;如果锁相放大器标记执行错误(例如参数超出范围,如在外部参考模式下使用FREQ)或命令非法,工具会报告错误,而不会静默继续。 set_sensitivity会选择不低于所请求满量程的最小量程(绝不会选择更小的量程,以免过载)。set_time_constant会选择最接近的可用值;SR830 可能会根据斜率/储备将其调高到允许的最小值,返回的设置会显示实际使用的值。read_outputs在电压输入时返回unit= V,在电流输入时返回unit= A(根据手册,灵敏度映射为 1 V ↔ 1 µA)。SR830 手册(第 5 章,兼容 SR530 的QX/QY命令)指出,选择电流输入时输出以安培为单位返回;SR86x 手册没有明确说明——请报告仪器实际返回的单位。overloads来自LIAS?,其位会从上次读取后保持锁存;瞬态之后的首次读数可能会显示已经消失的过载。frequency_sweep会在每个点等待手册规定的 99% 稳定时间(对于 6/12/18/24 dB/oct,分别为 5/7/9/10 个时间常数),除非提供了settle_time_constants,并会在之后恢复起始频率。调用set_amplitude_minimum会在下一个点停止正在运行的扫描(包括仍在读取设置的扫描)。无论max_sweep_duration_s设置为何,单次扫描最长可运行 3640 s(工具超时时间减去余量):会拒绝更长的估算时长;如果扫描的实际运行速度低于估算速度,则会提前停止并返回已测量的点(completed: false)。save_path必须以.csv结尾,且文件必须尚不存在(绝不会覆盖已有文件);此项会在扫描开始前检查。set_amplitude_minimum会尝试设置振幅和(SR86x 的)直流电平,即使其中一项失败也会继续尝试另一项,然后报告所有失败。auto_gain对应AGAN(SR830)或ASCL(SR86x);auto_range对应ARSV(SR830 自动储备)或ARNG(SR86x 自动输入量程)。当时间常数大于 1 s 时,SR830 的AGAN不会执行任何操作。- 不提供数据缓冲区、流式传输和 FFT 功能。未纳入 SR850、SR844(RF)和 SR865(非 A 型),因为尚未验证;使用显式的
--option model=...可以尝试兼容型号,但风险自负。
硬件验证
| 型号 | 固件 | 接口 | 验证者 | 日期 |
|---|---|---|---|---|
| 暂无:成为首位验证者 |
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。