[KEKB Bunch Feedback Group]

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


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

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


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

1.はじめに

R3172+OPT20+OPT27+OPT74は株式会社アドバンテスト製の9kHz〜26.5GHzの周波数領域をカバーするポータブル・スペクトラムアナライザです。この広範囲において最高分解能30Hz(OPT27)、残留FM20Hzp-p、測波帯雑音-100dBc/Hz(OPT27、10kHzオフセット)という高度な基本性能を有しています。OPT74トラッキングジェネレーターは、100kHzから3GHzまで掃引可能です。

2.サポートする機能

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

3.EPICS環境

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

4.コードの概要

GDLコードを以下に示します。ご先祖筋のR3361デバイスサポートと良く似ていますが(というか、ほとんど流用)、月日は流れ、滄海変じて桑田となってしまい、結構変えないと動きませんでした。R3361と同じくSRQ割り込みがかかったとき、ステータスバイトをクリアするEPICSレコードが動作するようにしています。ということで、SRQのあとの動作は、このデータベースからFLINKしたデータベースが行うように、データベース内のリンクを作成する必要があります。
waveform転送はバイナリー転送です(7/2倍しか早くならないけど)。このため、waveform転送の時だけはデリミタをEOIのみにする必要があります。なお、横軸点数は1001点か501点かコマンドで選べますが、waveform変換は1001点版しか対応していませんのでご注意ください。

しつこく超う×××ったれな伝統に従い、ADVANTEST殿のSpectrum Analyzerは トレースデータは「測定値」ではなく、画面上のトレースポジションを出力します。 しかも今回は恐れ入ったことに縦軸は1792から14592という 超訳分からん値となります。デバイスサポート内である程度 変換しても良いのですが、 何か私のごとくには理解不能な深遠な理由があるかも知れませんのでwaveform にはこの値を直接出力することにしました。そこで、 使い物になるデータに変換するのは例によって例のごとく EPICSシーケンサに やらせています。

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

dbdファイルの中で次のように定義します。(自動的にできるはず)
#R3172 dbd list
device(ai,GPIB_IO,devAiR3172Gpib,"R3172")
device(ao,GPIB_IO,devAoR3172Gpib,"R3172")
device(bi,GPIB_IO,devBiR3172Gpib,"R3172")
device(bo,GPIB_IO,devBoR3172Gpib,"R3172")
device(stringin,GPIB_IO,devSiR3172Gpib,"R3172")
device(stringout,GPIB_IO,devSoR3172Gpib,"R3172")
device(longin,GPIB_IO,devLiR3172Gpib,"R3172")
device(longout,GPIB_IO,devLoR3172Gpib,"R3172")
device(mbbi,GPIB_IO,devMbbiR3172Gpib,"R3172")
device(mbbo,GPIB_IO,devMbboR3172Gpib,"R3172")
device(waveform,GPIB_IO,devWfR3172Gpib,"R3172")

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

このデバイスサポートで使うデータベースの例を示します。
DTYPRecordSignalNameFunctionRemarks
R3172ao0$(USER):SETCF中心周波数設定
R3172ai1$(USER):GETCF中心周波数読み取り
R3172ao2$(USER):SETSTARTFスタート周波数設定
R3172ai3$(USER):GETSTARTFスタート周波数読み取り
R3172ao4$(USER):SETSTOPFストップ周波数設定
R3172ai5$(USER):GETSTOPFストップ周波数読み取り
R3172ao6$(USER):SETCFSTEP周波数ステップ設定やっぱり要りますか?
R3172ao7$(USER):SETCFSTEP:AUTO周波数ステップ自動本当に?
R3172ai8$(USER):GETCFSTEP周波数ステップ読み取り
R3172ao9$(USER):SETSPANスパン周波数設定
R3172ai10$(USER):GETSPANスパン周波数読み取り
R3172ao11$(USER):SETRBWRBW設定
R3172ao12$(USER):SETRBW:AUTORBW自動
R3172ai13$(USER):GETRBWRBW読み取り
R3172ao14$(USER):SETVBWVBW設定
R3172ao15$(USER):SETVBW:AUTOVBW自動
R3172ai16$(USER):GETVBWVBW読み取り
R3172ao17$(USER):SETSWEEPsweep設定
R3172ao18$(USER):SETSWEEP:AUTOsweep自動
R3172ai19$(USER):GETSWEEPVBW読み取り
R3172ao20$(USER):SETATattenuator設定
R3172ao21$(USER):SETAT:AUTOattenuator自動
R3172ai22$(USER):GETATattenuator読み取り
R3172ao23$(USER):SETCPL:AUTOcoupling auto
R3172ao24$(USER):SETYSCALEY軸設定10,5,2,1のみ受け付ける(mbboにしろよ!)
R3172mbbi25$(USER):GETYSCALEY軸読み出し0=10dB,1=5dB,2=2dB,3=1dB
R3172ao26$(USER):SETREFreference level設定
R3172ai27$(USER):GETREFreference level読み取り
R3172ao28$(USER):SETTGPWRTG power設定
R3172ao29$(USER):SETTGPWR:ONTG on
R3172ao30$(USER):SETTGPWR:OFFTG off
R3172ai31$(USER):GETTGPWRTG power読み取り
R3172ao32$(USER):SETTGCAL:AUTOTGトラッキング自動調整
R3172so33$(USER):TITLETITLE設定LON/たいとる/としてくだされ
R3172so34$(USER):TITLE:OFFTITLE off
R3172waveform35$(USER):GETTRACE:AトレースA転送1001点、1792から14592の値になる
R3172waveform36$(USER):GETTRACE:BトレースB転送1001点、1792から14592の値になる
R3172ao37$(USER):SETTRIG:SINGLEシングルショットトリガー
R3172ao38$(USER):SETTRIG:STARTトリガースタート
R3172ao39$(USER):SETTRIG:CONTフリーラン
R3172ao40$(USER):SETTRACE:CLEARAトレースAクリアいらん
R3172ao41$(USER):SETTRACE:CLEARBトレースBクリア不要
R3172ao42$(USER):SETMARKER:PEAKマーカーをpeakに
R3172ao43$(USER):SETMARKER:ONマーカーON
R3172ao44$(USER):SETMARKER:OFFマーカーをOFF要らんかも
R3172ao45$(USER):SETMARKER:DELTAマーカーをdelta modeに
R3172ao46$(USER):SETMARKER:NORMALマーカーをnormal modeに
R3172ai47$(USER):GETMARKER:FREQマーカー周波数読み取り
R3172ai48$(USER):GETMARKER:AMPマーカーamplitude読み取り
R3172ao49$(USER):SETSA:INITSA初期化やめて
R3172ao50$(USER):SETVEW:WRITEAA write?
R3172ao51$(USER):SETVEW:WRITEBB write?
R3172ao52$(USER):SETVEW:VIEWAA view?
R3172ao53$(USER):SETVEW:VIEWBB view?
R3172ao54$(USER):SETVEW:MAXAA maxhold?
R3172ao55$(USER):SETVEW:MAXBB maxhold?
R3172longout56$(USER):SETAVGAA avarage回数設定
R3172ao57$(USER):SETVEW:AVGA:STARTA Average start
R3172ao58$(USER):SETVEW:AVGA:STOPA Average stop
R3172ao59$(USER):SOFTINITStatus clear役に立たないかも
R3172longout60$(USER):SETAVGBB avarage回数設定
R3172ao61$(USER):SETVEW:AVGB:STARTB Average start
R3172ao62$(USER):SETVEW:AVGB:STOPB Average stop
R3172longout63$(USER):SETTGMANTGトラッキングマニュアル調整
R3172so64$(USER):SRQONSRQ ON掃引終了時だけにSRQ出る
R3172so65$(USER):SRQOFFSRQ OFF
R3172so66$(USER):SRQRECステータスバイトクリアSRQ後このレコードが起動される
R3172so67$(USER):SETTRACE501横軸501点にしないで
R3172so68$(USER):SETTRACE1001横軸1001点初期状態
R3172mbbi69$(USER):GETTRACE:NUM横軸点数0=501,1=1001
R3172so70$(USER):SETHISENSE:ONHi Sense On
R3172so71$(USER):SETHISENSE:OFFHi Sense OFF
R3172mbbi72$(USER):GETSENSESense Mode0=OFF,1=ON
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/FBLSAA2.db","USER=FBLAS2, ADDR=A3")

nigpib_num_links = 1
ht2992_num_cards = 0
iocInit

seq &AD_SA2

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

7.おわりに

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

Return to FB Home Page...