[KEKB Bunch Feedback Group]

株式会社デジテックス研究所社製14ビット4チャンネルログレシオビーム位置モニタ18K07用EPICS Device Supportの製作(Japanese)


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

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


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

1.はじめに

18K07は、4点のビーム位置モニター信号を508MHz帯域濾波器及びログアンプ を通過した後、14ビットAD変換しメモリーにセーブ出来るVME 1幅のモジュールです。

2.VMEバスレジスタ

18K07ボードのI/Oマップは以下の通りです。
アドレスWrite/Readデータ
313029282726252423222120191817161514131211109876543210
0x**(**00)00000(R/W)****CH3:ADデータ****CH1:ADデータ
****Ch3****CH1
0x**(**00)0FFFC****CH3:ここまで(32kワード時)****CH1:32k
****Ch3****CH1
0x**(**00)FFFFC****CH3:ここまで(256kワード時)****CH1:256k
0x**(**01)00000(R/W)****CH4:ADデータ****CH2:ADデータ
****CH4****CH2
0x**(**01)0FFFC****CH4:ここまで(32kワード時)****CH2:32k
****CH4****CH2
0x**(**01)FFFFC****CH4:ここまで(256kワード時)****CH2:256k
0x**(**10)00000R/W*AD_START
0x**(**10)00004R/W*AD_MEMORY
0x**(**10)00008R/W*TRG_POS
0x**(**10)0000CR/W*IRQ_ENB
0x**(**10)00010R/W*Reserved
0x**(**10)00014R*AD_STATUS
0x**(**10)00018R*IRQ_NO
0x**(**10)0001CR*IRQ_ID
0x**(**11)*****R*トリガポインタレジスタ(R)
0x**(**11)FFFFFN/A*(NOT USED)

ADCのデータフォーマットは、
入力電圧ディジタル出力
(MSB)(LSB)
2V0011111111111111
1V0010000000000000
0V0000000000000000

です。

3.EPICS環境

本デバイスサポートは、EPICS R313のVxWORKS(PowerPC 750)用に開発したものです。EPICSそのものに対する説明、入門出家入道遁世については専門家に帰依するなり、コントロールグループのページをご参照なさるなり、御随意に。動作はForce PPC750でのみ確認しています。MVME5500で使用するときは、デバイスサポート及びシーケンサの書き直しが必要です。

4.コードの概要

コードを以下に示します。

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

サンプルファイルは以下を参照してください。 mbbiDirectのsignal=1をI/O Intrに設定し、これのFLINKに waveformレコードを指定、そのFLINKにFanoutを指定して、 EVENT確認用のレコード(Sequencerで利用)及び各compactsubArray をプロセスします。

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

10枚の18K07ボードを使用する時のスタートアップファイル(の関係部分)は次のようになります。
dbLoadRecords("fbppcApp/Db/FB_ADC3.db","USER=FB41: , CHAN=C0")
dbLoadRecords("fbppcApp/Db/FB_ADC3.db","USER=FB42: , CHAN=C1")
dbLoadRecords("fbppcApp/Db/FB_ADC3.db","USER=FB43: , CHAN=C2")
dbLoadRecords("fbppcApp/Db/FB_ADC3.db","USER=FB44: , CHAN=C3")
dbLoadRecords("fbppcApp/Db/FB_ADC3.db","USER=FB45: , CHAN=C4")
dbLoadRecords("fbppcApp/Db/FB_ADC3.db","USER=FB46: , CHAN=C5")
dbLoadRecords("fbppcApp/Db/FB_ADC3.db","USER=FB47: , CHAN=C6")
dbLoadRecords("fbppcApp/Db/FB_ADC3.db","USER=FB48: , CHAN=C7")
dbLoadRecords("fbppcApp/Db/FB_ADC3.db","USER=FB49: , CHAN=C8")
dbLoadRecords("fbppcApp/Db/FB_ADC3.db","USER=FB50: , CHAN=C9")

dev18k07Config(10,0x20000000,0x4,0xf0)

iocInit

dbpf "FB41:ADC4:MEMSIZE","0"
dbpf "FB41:ADC4:TRGPOS","4"
dbpf "FB41:ADC4:IRQENB","3"
dbpf "FB41:ADC4:START","1"
dbpf "FB42:ADC4:MEMSIZE","0"
dbpf "FB42:ADC4:TRGPOS","4"
dbpf "FB42:ADC4:IRQENB","3"
dbpf "FB42:ADC4:START","1"
dbpf "FB43:ADC4:MEMSIZE","0"
dbpf "FB43:ADC4:TRGPOS","4"
dbpf "FB43:ADC4:IRQENB","3"
dbpf "FB43:ADC4:START","1"
dbpf "FB44:ADC4:MEMSIZE","0"
dbpf "FB44:ADC4:TRGPOS","4"
dbpf "FB44:ADC4:IRQENB","3"
dbpf "FB44:ADC4:START","1"
dbpf "FB45:ADC4:MEMSIZE","0"
dbpf "FB45:ADC4:TRGPOS","4"
dbpf "FB45:ADC4:IRQENB","3"
dbpf "FB45:ADC4:START","1"
dbpf "FB46:ADC4:MEMSIZE","0"
dbpf "FB46:ADC4:TRGPOS","4"
dbpf "FB46:ADC4:IRQENB","3"
dbpf "FB46:ADC4:START","1"
dbpf "FB47:ADC4:MEMSIZE","0"
dbpf "FB47:ADC4:TRGPOS","4"
dbpf "FB47:ADC4:IRQENB","3"
dbpf "FB47:ADC4:START","1"
dbpf "FB48:ADC4:MEMSIZE","0"
dbpf "FB48:ADC4:TRGPOS","4"
dbpf "FB48:ADC4:IRQENB","3"
dbpf "FB48:ADC4:START","1"
dbpf "FB49:ADC4:MEMSIZE","0"
dbpf "FB49:ADC4:TRGPOS","4"
dbpf "FB49:ADC4:IRQENB","3"
dbpf "FB49:ADC4:START","1"
dbpf "FB50:ADC4:MEMSIZE","0"
dbpf "FB50:ADC4:TRGPOS","4"
dbpf "FB50:ADC4:IRQENB","3"
dbpf "FB50:ADC4:START","1"

1Hzでトリガーをかけたときの動作の様子(WMV 2MB)

7.EPICS sequencerを使った平均、標準偏差計算

EPICSシーケンサを使って、waveformレコードを全部読み込み、平均値及び標準偏 差を計算させてみました。コードを以下に示します。
LR.st
R313でのアクセス可能なwaveformの長さが2048までの様なので(正確には分からないが、USHORTでこれ以上の長さにするとくたばる模様)、2048毎に読み出し、INDX フィールドを変更する、という処理が必要です。また、横着をして読み出した時点で値のsumと自乗のsumを取っておいてあとで一括して引き算しようとしていますの で、floatのままだと激しい桁落ちを起こしsqrtの中がマイナスにまでなってしまうので注意が必要です。また、数学関数はすべてexternal宣言しておかないと 何のエラーも警告もなく大嘘の計算をされるのでこちらも注意が必要です。
iocInitの後に
seq &LR, "USER=FB41"
seq &LR, "USER=FB42"
seq &LR, "USER=FB43"
seq &LR, "USER=FB44"
seq &LR, "USER=FB45"
seq &LR, "USER=FB46"
seq &LR, "USER=FB47"
seq &LR, "USER=FB48"
seq &LR, "USER=FB49"
seq &LR, "USER=FB50"
とします。

8.おわりに

4チャンネル同時サンプルの 14ビットログレシオADCモジュール、18K07ボードの のEPICSデバイスサポートおよびデータベースについて紹介しました。本ボードについてご興味のある方はより詳しい資料がありますので、飛山までご連絡ください。
Makoto Tobiyama
10/Jul/2010

Return to FB Home Page...