mcpField
S
SRS Lock-in Amplifier

SRS Lock-in Amplifier

ローカル
github.com科学・教育235 週間前に更新

SRS Lock-in Amplifier について

SRS Lock-in Amplifierは、Stanford Research SystemsのSR810/SR830およびSR860/SR865Aロックインアンプを読み取り・制御するMCPサーバーです。対応機種のコマンドセットを通じて、出力測定、設定操作、範囲を制限した周波数スイープを提供します。

主な機能

  1. 01X、Y、R、θ出力の読み取り
  2. 02基準・入力・フィルター設定
  3. 03位相・ゲイン・レンジの自動調整
  4. 04範囲を制限した周波数スイープの記録
  5. 05出力振幅の制限と読み取り専用モード

活用シーン

  1. 01設定変更後のロックイン出力測定
  2. 02周波数スイープによる共振点の探索
  3. 03位相、ゲイン、入力レンジの自動調整
  4. 04正弦波出力を最小値に設定

MCP 対応

測定値、設定、制御、周波数スイープのツールをMCPクライアントに公開します。読み取り専用モードでは設定変更と正弦波出力の駆動ができません。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"k-dense-ai-labmcp-srs-lockin": {
"command": "uvx",
"args": [
"labmcp-srs-lockin"
],
"env": {
"LABMCP_ADDRESS": "<LABMCP_ADDRESS>",
"LABMCP_SIMULATE": "<LABMCP_SIMULATE>",
"LABMCP_READ_ONLY": "<LABMCP_READ_ONLY>",
"LABMCP_LIMITS": "<LABMCP_LIMITS>"
}
}
}
}
起動コマンドuvx labmcp-srs-lockin
設定が必要な環境変数
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-srs-lockin0.1.3

ツール

15

掲載時のツール一覧 · 2 週間前に更新

このツールにパラメーターはありません。

詳細

SRS ロックインアンプ — MCP サーバー

AI エージェントが、X/Y/R/θ の読み取り、基準周波数・高調波・位相・駆動レベル・感度・時定数の設定、オートフェーズ/オートゲインの実行、範囲を制限した周波数スイープの記録を行えるようにします。対象は、旧型の SR810/SR830 と現行の SR860/SR865A を含む、Stanford Research Systems の DSP ロックインアンプです。

パッケージlabmcp-srs-lockin
計測器SR830、SR810(SR8x0 コマンドセット);SR860、SR865A(SR86x コマンドセット)
インターフェースGPIB(VISA)、RS-232;SR86x は USB(USBTMC)と Ethernet(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 で上書きできます)。

  1. GPIB(全モデル): セットアップメニューで GPIB アドレスを設定します(SR830 の工場出荷時のデフォルトは 8)。labmcp[visa](同梱)と VISA バックエンドをインストールします(pyvisa-py はほとんどの USB-GPIB アダプターで動作します。NI-VISA の場合は ?backend=@ivi を使用します)。
  2. 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 に設定してください。
  3. SR86x USB/Ethernet: USBTMC または VXI-11 の VISA リソースを使用します(TCPIP0::<ip>::inst0::INSTR。システムメニューで VXI-11 を有効にし、PC を信頼する IP 範囲に追加してください)。
  4. 接続をテストする:
    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
    
    SR830 の GPIB ポートに未加工の TCP アダプター経由で接続する場合は、--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 AGANでは、時定数が1 sより長い場合は何もしません。
auto_phase🎛 制御Auto Phase(APHS)を実行します。Y ≈ 0、X ≈ Rとなるように基準位相をシフトします。その後、出力が安定するまでに数時定数かかります。位相が不安定な場合は何もしません。
auto_range🎛 制御現在の信号に合わせて入力段を最適化します。SR830 Auto Reserve(ARSV)、またはSR86xの電圧入力レンジのAuto Range(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👁 読み取りX、Y、R、θを一貫したスナップショット(SNAP?)として読み取り、基準周波数、感度、フルスケールに対する割合、および前回の読み取り以降にラッチされたオーバーロードを返します。
reconnect🛑 安全装置との接続を閉じて、再度開きます(電源を入れ直した後や、ケーブルを再接続した後など)。
set_amplitude⚠️ 危険試料または励起回路を駆動するSINE OUTの振幅(V rms)を設定します。max_amplitude_vの安全制限を超える値は拒否されます。新しい駆動レベルを先にユーザーに伝えてください。
set_amplitude_minimum🛑 安全正弦波出力を装置の最小値(ロックインの「出力オフ」に最も近い状態)まで下げ、実行中の周波数スイープを停止します。SR810/SR830:4 mV rms(ゼロにはできません。試料に駆動信号を一切与えてはならない場合は、ケーブルを外してください)。SR86x:1 nV rms、DCレベルは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_v1.0 Vset_amplitude で設定できる正弦波出力の最大振幅(V rms)です。スイープの実行時に、現在の振幅がこの値を超えている場合も実行を拒否します
max_sweep_duration_s600 sエージェントが開始できる、推定周波数スイープ(ポイント数 × 整定時間)の最長時間です

起動時に上書きできます:--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とθを10回読み取り、Rの平均と標準偏差を教えてください。」
  • 「ドライブを30~34 kHzで201個の対数間隔ステップにわたって10 mVでスイープし、音叉の共振周波数とQを求めてください。」
  • 「電流入力に切り替え、ゲインを100 MΩ、カップリングをDCに設定し、感度を自動選択してください。」
  • 「測定が終わりました。正弦波出力を最小値まで下げてください。」

注意事項

  • 危険なのは正弦波出力です。 サンプルにドライブを印加するため(発熱、エレクトロマイグレーション、圧電応力が発生します)。set_amplitude は max_amplitude_v をチェックします。出力をオフにする操作に最も近いのは set_amplitude_minimum です。SR810/SR830は4 mV rms未満に設定できないため、サンプルにドライブを印加したくない場合はケーブルを外してください。SR86xでは1 nV rmsと0 VのDCレベル(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のマニュアル(SR530互換の QX/QY コマンド、第5章)には、電流入力が選択されている場合、出力はアンペアで返されると記載されています。SR86xのマニュアルには明記されていません。お使いの機器が返す値を報告してください。
  • overloads は LIAS? から取得します。このビットは最後に読み取ってからラッチされるため、一時的な過負荷の後、最初の読み取りではすでに解消した過負荷が表示される場合があります。
  • frequency_sweep は、settle_time_constants が指定されていない場合、各ポイントでマニュアルに記載された99%整定時間(6/12/18/24 dB/octの場合、それぞれ5/7/9/10時定数)待機し、その後、開始時の周波数に戻します。スイープの実行中に set_amplitude_minimum を呼び出すと、次のポイントでスイープが停止します(設定を読み取り中の場合も同様です)。max_sweep_duration_s の値にかかわらず、1回のスイープは最大3640秒(ツールのタイムアウトから余裕時間を差し引いた値)までです。これを超える推定時間のスイープは拒否されます。また、推定より遅く実行されているスイープは早期に停止し、それまでに測定したポイントを返します(completed: false)。save_path は .csv で終わる必要があり、かつファイルがまだ存在していてはいけません(既存のファイルは上書きされません)。この条件はスイープ開始前に確認されます。
  • set_amplitude_minimum は、振幅とDCレベル(SR86x)の両方を設定しようとします。いずれかが失敗してももう一方を試し、その後すべての失敗を報告します。
  • auto_gain は AGAN(SR830)または ASCL(SR86x)に対応します。auto_range は ARSV(SR830のオートリザーブ)または ARNG(SR86xの自動入力レンジ)に対応します。SR830の AGAN は、時定数が1 sを超えると動作しません。
  • データバッファー、ストリーミング、FFTの機能は公開されていません。SR850、SR844(RF)、SR865(非Aモデル)は検証されていないため、対象外です。--option model=... を明示的に指定すると、互換モデルを自己責任で試すことができます。

ハードウェア検証

モデルファームウェアインターフェース検証者日付
まだありません:最初の検証者になる

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。