[KEKB Bunch Feedback Group]

Stanford Research Systems SR830 Lock-in amplifier用EPICSデバイスサポートの製作(Japanese)


by とびやま まこと(Makoto Tobiyama)/KEKB ビームモニターグループ

警告
以下の記述に関しては、意図する、しないに関わらず多くの誤り、誤解が含まれていると思われますので、決して信用してはいけません。また、正確でない記述、曖昧な根拠による推定も多く含まれています。これを信じて起きた損害に関しては、当方は一切責任を持ちません。


If you want to contact with the author, please E-mail makoto.tobiyama@kek.jp.
目次

1.はじめに

Stanford Research Systems SR830は1mHzから102.4kHzまでの 周波数レンジで動作するLock-Inアンプです。リモートIFとして GP-IBとRS-232Cを持っています。ちなみに、GP-IBのコネクタが 背面の足のすぐ近くにあるうましかな設計のため、 通常よくあるGP-IBケーブルだと 足と干渉して接続出来ません。諦めて足を外す(ネジ1本で外れます)か、 特殊なGP-IBケーブル、アダプタを用意してください(この時点で すでに忌々しく悪態をつくことになります)。

2.GP-IBコマンド

使用したGP-IBコマンドは以下の通りです。デリミタはあるいはEOIです。 後述の理由で、殆どの(読み出し系の)コマンドは実際には使用しません。 なお、この機種用のEPICS device support、データベース例は ちゃんとしたものがEPICSコミュニティで公表されていますので、 そちらをお使いになるのが安全と思われます。
機能Command応答例備考
位相設定 PHAS 値PHAS 10.5なし
位相設定読み出しPHAS?PHAS?10.5
周波数設定 FREQ 値FREQ 44500ナシHz単位に注意
周波数読み出し FREQ?FREQ?44500
出力設定 SLVL 値SLVL 0.1ナシV単位
出力読み出し SLVL?SLVL?0.1
感度設定 SENS 値SENS 26ナシ2nVから1Vまで27ステートもある
感度読み出し SENS?SENS?26
時定数設定 OFLT 値OFLT 6ナシ10μs〜30ksまで19ステートもある
時定数読み出し OFLT?OFLT?6
データ読みだし OUTP?番号OUTP?4-0.51X(1),Y(2),R(3),Theta(4)
データ読み出し(同時)SNAP?番号SNAP?1,2,3,4,910.5,0.1,0.01,-2.5,44500

3.EPICS環境

本デバイスサポートは、EPICS R314のAsynドライバー用に開発したものです。 前に書きましたように、web上を探すと専門家が作ったまともなものが 見つかりますので、 このような駄文を読むよりそちらをご参照いただくのが良いと思います。 EPICSそのものに対する説明、入門出家入道遁世については専門家に帰依するなり、自活するなり御随意にお願いします。動作はLinux上の EPICS R314.9+Asyn-4.10で、Agilent LAN-GPIBを使って検証しています。

4.コードの概要

コードを以下に示します。 単純なGP-IB用デバイスサポートですが、SNAP命令時のデータは waveformで取らなければなりませんので、いつもの変換ルーチン を使用することになります。

5.EPICSデータベースサンプル

サンプルファイルは以下を参照してください。 当初、データ読み出しはOUTPコマンドを結構早し繰り返しで使い、他の読み出し系 コマンドは5秒に1回程度読むようにしていました。これで動作させてみますと という超常現象に見舞われてしまいました。マニュアルを拝読すると、この(くさ れ)機械はGP-IBの入力、出力にバッファーを持っていて、バッファーフルまで GP-IBラインの制御をしない(だから高速動作可能なのだ)、と誇らしげに書いてあ りました(超うましか)。言う までもなく、このような制御はGP-IBの規格違反で、うましかGP-IBの典型例です。 これでも、コマンドに対して正しい順序で答えがバッファーに出ていればまだしも、 内部でなぜか答えの順序が狂ってしまったため、上記現象がおきたものと思われま す。これを回避するため ことをしてみましたが、これでもSNAPコマンドの答えにSLVLコマンドの答えが 入ってしまい、いきなりプロセスが落ちることの繰り返しで、どうにもなりませんでした。

本来はこうなったらGP-IBアナライザを持ち出して現象の追求をするのですが、 大変まずい事に現在GP-IBアナライザカードが行方不明で(震災以降行方不明) すぐにはどうにもなりませんでした。そこで仕方なく、LAN-GPIBのコマンド機能 を使い、コマンドの応答を確認などしてみましたが、手での動作 なので、当然正しく動いており、現象の究明が出来ませんでした。ところが 多分この操作でデバイスクリアをしたのが効いたのか、もう一度EPICS 環境で動作させてみるとデータの入れ替えが起きなくなってしまいました。 大変不吉で今後またこの現象が起きたときどうすれば良いか分かりませんが、 とりあえずは原因不明のまま現象は解決してしまいました。

PLL用シーケンサ例

このlock-inアンプを使う目的は、ビームを一定振幅で励振するた め、ビーム振動データからその振幅、位相を見て周波数を追いかける、 PLL動作をさせるためです。そのためのシーケンサを作ってみました。 可変バンドパスフィルターを使って、バンドパスフィルターの中心値を変えて 追随性を見てみましたが、SNAPのスキャンを0.1秒に設定した場合、1kHz程度 周波数を変えたときは0.3〜0.4秒程度で収まるようでした。

6.スタートアップファイルサンプル

スタートアップの必要部分は以下の通りです。
dbLoadRecords("db/SR830.db","USER=FBM, ADD=8")

vxi11Configure("L1","172.19.xx.xx",0,0.0,"gpib0",0,0)

7.まとめ

Stanford Research Systems殿製SR830 lock-in amplifierのEPICS デバイスサポートおよびPLL用シーケンサについて紹介しました。
Makoto Tobiyama
16/Sep/2011

Return to FB Home Page...