RFモニター関係

RFに関する情報 Python 波形表示プログラム

下記のpythonで波形表示が可能

 /usr/users/control/epics/R3.14.12/operation/RFMonitor/rfmonApp/GUI/rfmon_wvf2.py

パネル上の領域設定やOffset値の変更を行う時には、adminモードで開くと設定変更ができる。

adminモードは、下記のように開く。

 rfmon_wvf2.py admin
Amplitude / phaseI / Q
wf2_ap.pngwf2_iq.png

各種レコード名

RFモニターEPICSレコード

 各入力信号(5ch):KLYPF,  SLEDPF,  SLEDPB,  ACC,  REF

ただし、ACCは4本目の加速管出口の信号,REFはマスターオシレータからの2856 MHzである。

上記、振幅(AMP), 位相(PHASE)がアーカイバに登録されている。

現在、振幅はADCの値になっている。位相の単位はdegree.

EPICSレコードは、次のようになっている。

 LIiRM:(ユニット名):入力信号_種類(AMP/PHASE)_(PEAK/AVE):イベントモード

  例1) LIiRM:KL_34:KLYPF_AMP_AVE:NIM => 3-4ユニットのKLY Pfの振幅平均値、No injection mode

例2) LIiRM:KL_34:SLEDPF_PHASE_AVE:PFE => 3-4ユニットのSLED Pf、位相、平均値、PFEモード

Waveformレコード

 LIiRM:(ユニット名):入力信号_WAVE_(I/Q/A/P):イベントモード

LIiRM:KL_B1:KLYPF_WAVE_I:KBE

ピーク値や平均値の領域設定レコード

 LIiRM:(ユニット名):入力信号_AMP_PEAK_sa:KBE.INDX 
 LIiRM:(ユニット名):入力信号_AMP_PEAK_sa:KBE.NELM
  • LIiRM:KL_B1:KLYPF_AMP_PEAK_sa:KBE.INDX
  • LIiRM:KL_B1:KLYPF_AMP_PEAK_sa:KBE.NELM

INDXからNELMの幅で領域設定

INDX=100, NELM=30 ならば100から130までの平均やピークの取得を行う

I/Qオフセットレコード : ADCのDCオフセット値補正用

  • LIiRM:KL_A2:SLEDPF_I:OFFSET
  • LIiRM:KL_A2:SLEDPF_Q:OFFSET

位相ローテーション用位相オフセットレコード

0deg.の前後で360deg.飛んで安定度が測定しにくい。 そのため、調整用の位相オフセットレコードを用意した。

  • KLYPF:LIiRM:KL_A2:KLYPF:OFFSET_ANGL

上記、I/Qオフセットや位相オフセットは、 rfmon_wvf2.py admin でGUIから変更可能

ラスト波形関連レコード

  • LIiRM:KL_xx:KLY_ON_THRESHOLD - KLYONのThreshold設定、波形の5点連続でThresholdの値を超えればONと判定
  • LIiRM:KL_xx:LASTWF_CSV_OFF - csvファイルの書き込みON/OFF設定(0:ON,1:OFF)

IQの桁あふれ検出レコード

  • LIiRM:KL_xx:IQOverflow - 1ch ~ 5chに対応したbitをたてて値を表示

Phase 0 Cross detectionレコード

 LIiRM:(ユニット名):入力信号_PHASE_0CROSS_DETECTION:ビームモード
  • LIiRM:KL_B1:KLYPF_PHASE_0CROSS_DETECTION:KBE - 位相の平均値を計算する範囲の最大値と最小値の差を計算

Waveform の取得プログラム

/usr/users/control/epics/R3.14.12/operation/RFMonitor/rfmonApp/Python/rfmonGetWf.py
 rfmonGetWf.py -h     : help
 rfmonGetWf.py mode signal location > xxx.csv
  • signal : KLYPF, SLEDPF,SLEDPB,ACC,REF
  • location : ALL,A,B,C,1,2,3,4,5,6
rfmonGetWf.py KBP SLEDPF KL_B2
rfmonGetWf.py NIM SLEDPF C    : Csector

SiTCP関係

RFモニターのデータフォーマット

最初のヘッダーにFPGA番号を入れる。 レコードは、FPGAVERとする。

ラスト波形

  • クライストロンの ON->OFF を検知して、データを csv ファイルに保存。
  • csvファイルは定期的に実行される python スクリプトによってグラフ化。
  • Webからの閲覧が可能な場所に保存。日付毎のディレクトリは python スクリプトで毎日作成。
 http://www-linac2.kek.jp/rf/RFM_lastwf/

概要

  • 開発・運転用ディレクトリ
 /nfs/linacfs-users/control/epics/R3.14.12/operation/RFMonitor/
  • 共有メモリを拡張(rfmonApp/src/rfmon.h)
 struct ringbuff {
 
	int pidx;               /* last pulse index */    <-- (既存)リングバッファの番号
	struct data data[PULSENUM];                       <-- (既存)I/Q/振幅/位相を PULSENUM 分保存、I/QはSiTCPのデータ、振幅/位相は計算している
 
	/* for Last & Normal WF */
	double last_amp[SIGNUM][DATALENGTH];           <-- (拡張)KLYOFF時のラスト波形・振幅(1or2shot前)を保存
 	double last_phase[SIGNUM][DATALENGTH];            <-- 拡張、KLYOFF時のラスト波形・位相(1or2shot前)を保存
	double kly_off_amp[SIGNUM][DATALENGTH];        <-- (拡張)KLYOFFと判断した波形・振幅(1or2shot前)を保存
 	double kly_off_phase[SIGNUM][DATALENGTH];        <-- (拡張)KLYOFFと判断した波形・位相(1or2shot前)を保存
 	double normal_amp[SIGNUM][DATALENGTH];        <-- (拡張)ノーマル波形・振幅保存様、現在は未使用
	double normal_phase[SIGNUM][DATALENGTH];        <-- (拡張)ノーマル波形・位相保存様、現在は未使用
 };
  • PULSENUM は 50 に設定、50Hzで1秒分のリングバッファとなる

デバイスサポート側の処理

  • SiTCPデータ受信時にEPICSデバイスサポート(devRFMonRecvEvent?.c)にてKLYOFFを判断
  • ThresholdレコードでOFFを判断(LIiRM:KL_xx:KLY_ON_THRESHOLD)
  • 波形のどこかでThresholdレコードの値を5点連続で上回っていればONと判断、なければOFFと判断
  • OFFと判断した場合、直前がONと判断されていればラスト波形を更新

IOC側の処理

  • 振幅波形更新時に処理(LIiRM:KL_xx:KLYPF_WAVE_AMP)
  • aSubレコードでデバイスサポートと同じ判断でKLYOFFを判断
  • ON->OFFと判断されたら共有メモリからデータ取得
  • 取得したデータをcsvファイルに保存(tmpcsvディレクトリ)
  • csvファイルを作成しない為のレコードを準備、値が1ならばcsvファイルは作成しない(LIiRM:KL_xx:LASTWF_CSV_OFF)
  • 1度csvファイルを作成したら1分間は同じKL_xxについてはcsvを作成しない

グラフ化とWeb閲覧対応

  • /usr/new/pkg/apache2.2.8/home/rf/RFM_lastwf/
  • tmpcsvディレクトリのcsvファイルをpythonスクリプトで処理(filecheck.py)
  • Gnuplotにてグラフ(pngファイル)を作成(filecheck.py/CSVtoGraph?.plt/CSVtoGraph_A1A.plt)
  • 日付に対応したディレクトリにcsv/pngファイルを移動

添付ファイル: fileRFモニタデータフォーマット(120604).pdf 50件 [詳細] filewf2_ap.png 47件 [詳細] filewf2_iq.png 49件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-04-14 (金) 16:21:03 (45d)