[KEKB Bunch Feedback Group]

アドバンテスト製R3361Dスペクトラムアナライザ用EPICS Device Support(Japanese)


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

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


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

1.はじめに

R3361Dは株式会社アドバンテスト製の9kHz〜3.6GHzの周波数領域をカバーするポータブル・スペクトラムアナライザです。この広範囲において最高分解能30Hz、残留FM20Hzp-p、近傍ノイズ特性-105dBc/Hzという高度な基本性能を有しています。トラッキングジェネレーターは、9kHzから3.6GHzまで掃引可能で、HP8590Eなどと異なり、自動的にトラッキングエラーを較正する機能を有しています。

2.サポートする機能

R3361Dは非常に多くの機能を持っており、それぞれGP-IB経由でコントロールする事ができます。このデバイスサポートでは、ベータトロンチューン測定に必要最低限な機能をサポートしています。

3.EPICS環境

本デバイスサポートは、EPICS R313で開発したものです。EPICSそのものに対する説明、入門出家入道遁世については専門家に帰依するなり、コントロールグループのページをご参照なさるなりしてください。動作はPPC750で確認しています。

4.コードの概要

GDLコードを以下に示します。SRQ割り込みがかかったとき、ステータスバイトをクリアするEPICSレコードが動作するようにしています。ということで、SRQのあとの動作は、このデータベースからFLINKしたデータベースが行うように、データベース内のリンクを作成する必要があります。
waveform転送はバイナリー転送です(倍しか早くならないけど)。このため、waveform転送の時だけはデリミタをEOIのみにする必要があります。

また、超う×××ったれなことに、ADVANTEST殿のSpectrum Analyzerは 伝統的に トレースデータは「測定値」ではなく、トレースポジションを出力して くださるので、一般的にはどこかで使い物になるデータに変換する必要があると 思われますが、その機能をデータベースではなくEPICSシーケンサに やらせることに しました。

ステータスバイトクリアのデータベース(FBLAS:SRQREC)のFLINK先のどこかに calcレコード(FBLAS:SWTRIG)をリンクしておき、これをモニターしてTRACE:Aを SPECTRUM:AあるいはSPECTRUM:Bに変換します。

dbdファイルの中で次のように定義します。(自動的にできるはず)
#R3361 dbd list
device(ai,GPIB_IO,devAiR3361Gpib,"R3361")
device(ao,GPIB_IO,devAoR3361Gpib,"R3361")
device(bi,GPIB_IO,devBiR3361Gpib,"R3361")
device(bo,GPIB_IO,devBoR3361Gpib,"R3361")
device(stringin,GPIB_IO,devSiR3361Gpib,"R3361")
device(stringout,GPIB_IO,devSoR3361Gpib,"R3361")
device(longin,GPIB_IO,devLiR3361Gpib,"R3361")
device(longout,GPIB_IO,devLoR3361Gpib,"R3361")
device(mbbi,GPIB_IO,devMbbiR3361Gpib,"R3361")
device(mbbo,GPIB_IO,devMbboR3361Gpib,"R3361")
device(waveform,GPIB_IO,devWfR3361Gpib,"R3361")

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

このデバイスサポートで使うデータベースの例を示します。
DTYPRecordSignalNameFunctionRemarks
R3361ao0$(USER):SETCF中心周波数設定
R3361ai1$(USER):GETCF中心周波数読み取り
R3361ao2$(USER):SETSTARTFスタート周波数設定
R3361ai3$(USER):GETSTARTFスタート周波数読み取り
R3361ao4$(USER):SETSTOPFストップ周波数設定
R3361ai5$(USER):GETSTOPFストップ周波数読み取り
R3361ao6$(USER):SETCFSTEP周波数ステップ設定要るまい
R3361ao7$(USER):SETCFSTEP:AUTO周波数ステップ自動要らんじゃろう
R3361ai8$(USER):GETCFSTEP周波数ステップ読み取り要らんわ
R3361ao9$(USER):SETSPANスパン周波数設定
R3361ai10$(USER):GETSPANスパン周波数読み取り
R3361ao11$(USER):SETRBWRBW設定
R3361ao12$(USER):SETRBW:AUTORBW自動
R3361ai13$(USER):GETRBWRBW読み取り
R3361ao14$(USER):SETVBWVBW設定
R3361ao15$(USER):SETVBW:AUTOVBW自動
R3361ai16$(USER):GETVBWVBW読み取り
R3361ao17$(USER):SETSWEEPsweep設定
R3361ao18$(USER):SETSWEEP:AUTOsweep自動
R3361ai19$(USER):GETSWEEPVBW読み取り
R3361ao20$(USER):SETATattenuator設定
R3361ao21$(USER):SETAT:AUTOattenuator自動
R3361ai22$(USER):GETATattenuator読み取り
R3361ao23$(USER):SETCPL:AUTOcoupling auto
R3361ao24$(USER):SETYSCALEY軸設定10,5,2,1,0.5,0.2,0.1のみ受け付ける(mbboにしろよ!)
R3361mbbi25$(USER):GETYSCALEY軸読み出し0=10dB,1=5dB,2=2dB,3=1dB,4=0.5dB,5=0.2dB,6=0.1dB
R3361ao26$(USER):SETREFreference level設定
R3361ai27$(USER):GETREFreference level読み取り
R3361ao28$(USER):SETTGPWRTG power設定
R3361ao29$(USER):SETTGPWR:ONTG on
R3361ao30$(USER):SETTGPWR:OFFTG off
R3361ai31$(USER):GETTGPWRTG power読み取り
R3361ao32$(USER):SETTGCAL:AUTOTGトラッキング自動調整通常は使用可。manualでないとダメなこともある。
R3361so33$(USER):TITLETITLE設定LON/たいとる/としてくだされ
R3361so34$(USER):TITLE:OFFTITLE off
R3361waveform35$(USER):GETTRACE:AトレースA転送701点、0から400の値になる
R3361waveform36$(USER):GETTRACE:BトレースB転送701点、0から400の値になる
R3361ao37$(USER):SETTRIG:SINGLEシングルショットトリガー
R3361ao38$(USER):SETTRIG:STARTトリガースタート
R3361ao39$(USER):SETTRIG:CONTフリーラン
R3361ao40$(USER):SETTRACE:CLEARAトレースAクリアいらん
R3361ao41$(USER):SETTRACE:CLEARBトレースBクリア不要
R3361ao42$(USER):SETMARKER:PEAKマーカーをpeakに
R3361ao43$(USER):SETMARKER:ONマーカーON
R3361ao44$(USER):SETMARKER:OFFマーカーをOFF要らんかも
R3361ao45$(USER):SETMARKER:DELTAマーカーをdelta modeにいりませんとも
R3361ao46$(USER):SETMARKER:NORMALマーカーをnormal modeに
R3361ai47$(USER):GETMARKER:FREQマーカー周波数読み取り
R3361ai48$(USER):GETMARKER:AMPマーカーamplitude読み取り
R3361ao49$(USER):SETVEW:TRATrace Aをアクティブ設定
R3361ao50$(USER):SETVEW:TRBTrace Bをアクティブ設定
R3361ao51$(USER):INIT_ALLSA初期化やめて
R3361ao52$(USER):SETVEW:WRITEAA write?
R3361ao53$(USER):SETVEW:WRITEBB write?
R3361ao54$(USER):SETVEW:VIEWAA view?
R3361ao55$(USER):SETVEW:VIEWBB view?
R3361ao56$(USER):SETVEW:MAXAA maxhold?
R3361ao57$(USER):SETVEW:MAXBB maxhold?
R3361longout58$(USER):SETAVGAA avarage回数設定
R3361ao59$(USER):SETVEW:AVGA:STARTA Average start
R3361ao60$(USER):SETVEW:AVGA:STOPA Average stop
R3361ao61$(USER):SOFTINITStatus clear役に立たないかも
R3361longout62$(USER):SETAVGBB avarage回数設定
R3361ao63$(USER):SETVEW:AVGB:STARTB Average start
R3361ao64$(USER):SETVEW:AVGB:STOPB Average stop
R3361longout65$(USER):SETTGMANTGトラッキングマニュアル調整
R3361so66$(USER):SRQONSRQ ON掃引終了時(など)にSRQ出る
R3361so67$(USER):SRQOFFSRQ OFF
R3361so68$(USER):SRQRECステータスバイトクリアSRQ後このレコードが起動される
R3361so69$(USER):SETDIV8画面8divに設定初期状態
R3361so70$(USER):SETDIV12画面12divに設定とてものろくなる
R3361mbbi71$(USER):GETDIV画面div数0=8div,1=12div,2=その他(って何じゃ?)
SoftwaveformN/A$(USER):SPECTRUM:AトレースAの値シーケンサが変換
SoftwaveformN/A$(USER):SPECTRUM:BトレースBの値シーケンサが変換
SoftbiN/A$(USER):TRACE:SELSPECTRUMAB変換選択0ならA、その他はB
SoftcalcN/A$(USER):SWTRIGスイープ終了トリガシーケンサ使用
まだ全部はテストしていません。

データベースファイル本体例は以下をご参照ください。

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

通常通りのGP-IB設定およびシーケンサ設定をします。
memAddToPool(0x2000000,0x2000000)

enableSlaveA24()
sysA24MallocInit(0x40000)

dbLoadDatabase("dbd/fbppcApp.dbd")
dbLoadRecords("fbppcApp/Db/FBLSAA.db","USER=FBLAS, ADDR=A2")

nigpib_num_links = 1
ht2992_num_cards = 0
iocInit

seq &AD_SA1

EPICSシーケンサを使って波形転送をするためには、FBLSA:SRQONを設定してください。

7.おわりに

現在このspectrum analyzerは運転に使用していませんが、現有機のトラブル時に は代替機として使用する予定です。とはいってもコマンド、トレースデータいずれ をとっても互換性がないので、簡単にはいきませんけど。
Makoto Tobiyama
28/Apr/2004

Return to FB Home Page...