BPM 向け Pulse 列発生に向けた情報交換 - MRF, Nov.1-18.2016
=====
BPM 向け Pulse 列発生に向けた飯塚氏と古川の情報交換
MRF EVG-EVR について (SINAP EVO-EVE に関しては別 File)
期間:Nov.1-18.2016.
情報共有:飯塚、宮原、佐藤政、諏訪田、中村達、古川
関連:打ち合わせ Memo, Nov.22.2016
===
Nov.1.2016. k.furukawa
Beam に同期しない Revolution 信号は Multiplexed counter (MXC) で生成し、Distributed bus で分配することができる
(RF group も作ってくれるらしい)
Harmonic number 230 と同期するために Prescaler 値は 5 または 10
MR RF 同期と DR RF 同期の双方が必要らしい
BPM 用の信号(Beam 同期の Revolution 信号)は MXC では作れない、例えば Sequencer に生成させることができると思われる
適当な長さの Event 列を Sequencer に書き込み、Recycle させる
Event clock と Beam bucket の Offset を Bucket number から計算しておき、EVR の出力 Delay を Pulse 毎に調整する
Nov.2.2016. k.furukawa
[A] Revolution clock の生成
* EVG 側
(A1) RF Clock の Divider を 5 として Event clock を生成する
(A2) Multiplexed counter を 46 として Distributed bus #0 に接続する
* EVR 側
(A3) Distributed bus #0 を 出力に接続する (A4) Revolution clock (RF/230) を確認する
[B] BPM 用信号の生成
* EVG 側
(B1) AC divider/phase-shifter を bypass する
(B2) Sequencer RAM 1 に、Event clock 46 個毎に例えば 4 回 Event #1 を、そして最後に End sequence code 0x7f を書いておく
(B3) Sequencer RAM 1 を Not single、Recycle とする
* EVR 側
(B4) Event #1 を出力に接続する
(B5) AC 入力から始まる Revolution clock (RF/230) を確認する
===
Nov.4.2016. iitsuka
東日本技術研究所の飯塚です。
11/2(水)の打ち合わせで伺った509MHzの230分周でパルスを
出し続ける機能について、とりあえず実現する事はできました。
使用した方法は下記の通りで、それぞれについてデメリットが
あります。
(1) MXC+TriggerEvent
外部からのTTL信号でトリガー出来ない。
(IOC起動とともにパルスが出続ける)
※DbusではうまくいかなかったのでTriggerEventを使ってみました。
(2) SeqRAM+RecycleMode
なぜかパルス出力開始とともに、ChannelAccessできなくなる。
(ただしIOCは動作している模様)
自席に動作環境がありますので、ご覧頂く事も可能です。
===
Nov.4.2016. k.furukawa
こんにちは、飯塚さま、古川です。
早速の連絡をありがとうございます。
一昨日お願いした件の Memo を、
<http://www-linac2.kek.jp/cont/trigger/dr/dr-event-161102.pdf>
<http://www-linac2.kek.jp/cont/trigger/dr.html>
に置きました。
(1) [A] で Distributed bus が使えないのは不思議ですが、最低限
MXC+TriggerEvent が Starting point かと思います。外部 TTL 信号で起動で
きないのは仕様ですね。
MXC+TriggerEvent は他の Event と重ねられないと思うので、全体構成を良く
考える必要があると思います。Distributed bus で実現できると、他の Event
と重ねられるので、もう少し試していただけますか。
(2) [B] について、考え方が正しいのかどうか、Jukka に一昨日質問しました。
回答待ちです。特に、Recycle を指定した Sequencer を、AC input で Re-
trigger できるのかどうかなど気になっているところがあります。だめかもし
れません。
Channel access できない、ということは、VxWorks の Prompt も来ないとい
うことでしょうか。別問題もあるかもしれないですね。別の機能が Enable に
なっていて、Conflict しているかもしれません。
まずは、Recycle 無しで数発だけ Event を送り、Pulse を出すなどから確認
してみていただけますか。
よろしくお願いします。
===
Nov.4.2016. iitsuka
東日本技術研究所の飯塚です。
> (1) [A] で Distributed bus が使えないのは不思議ですが、最低限
すみません。Dbus については説明が不足していました。
パルスを出す事は可能なのですが、Duty 比がほぼ 50% で変えられそう
になかったため、うまくいかないと申しました。頂いた資料では Duty 比
を 20% とするような記載がありましたので、そう判断致しました。こちら
の勘違いでしたら申し訳ございません。
> Channel access できない、ということは、VxWorks の Prompt も来ないとい
> うことでしょうか。
vxWorks のプロンプトは返ってきます。その状態で i コマンドや、EPICS の
dbl コマンド等も動作いたします。
> まずは、Recycle 無しで数発だけ Event を送り、Pulse を出すなどから確認
> してみていただけますか。
こちらは既に確認済みで、Recycle でなければ、問題なく動作する事が確認
できております。
===
Nov.8.2016. k.furukawa
こんにちは、飯塚さま、古川です。
申し訳ありませんが、昨日の試験で忘れたことが 2 件あります。確認をお願い
します。
(1) 最後のころの試験で、AC input 調整の Bypass を行いました。その前に行っ
た Sequencer の Recycle の試験では、出力が AC input に同期しませんでした
が、その時には、Bypass になっていたでしょうか。Bypass になっていなかった
としたら、Bapass にした上で、Sequencer 出力が AC input に同期するかどう
か、確認してもらえますか。
(2) Channel access の確認には caget (相当) の Command を使用して、
Sequencer を Recycle にすると PV が見つからなくなりました。Recycle 前に
camonitor (相当) の Command で PV に接続しておき、その後 Recycle を
Enable すると、接続は維持されて、値は取れる、ということがないか、確認し
てもらえますか。
===
Nov.8.2016. iitsuka
東日本技術研究所の飯塚です。
以下、回答になります。
(1) あの時にはBypass設定されておりませんでしたので、本日Bypass設定に
して確認してみましたが、同期しませんでした。
(2) Recycleに設定後、PV値の更新が停止し、しばらく後に"Virtual circuit
unresponsive"と表示されました。
以下はその時のログになります。
hig-i:DRTM:EVR0:Monitor:EventNum 2016-11-08 09:14:43.202275 1
hig-i:DRTM:EVR0:Monitor:EventNum 2016-11-08 09:14:44.202275 1
hig-i:DRTM:EVR0:Monitor:EventNum 2016-11-08 09:14:45.202275 1
hig-i:DRTM:EVR0:Monitor:EventNum 2016-11-08 09:14:46.202275 1
hig-i:DRTM:EVR0:Monitor:EventNum 2016-11-08 09:14:47.202275 1
hig-i:DRTM:EVR0:Monitor:EventNum 2016-11-08 09:14:48.202475 1
hig-i:DRTM:EVR0:Monitor:EventNum 2016-11-08 09:14:49.202475 1
hig-i:DRTM:EVR0:Monitor:EventNum 2016-11-08 09:14:50.202475 1
hig-i:DRTM:EVR0:Monitor:EventNum 2016-11-08 09:14:51.204475 1
hig-i:DRTM:EVR0:Monitor:EventNum 2016-11-08 09:17:46.769654 *** disconnected
CA.Client.Exception...............................................
Warning: "Virtual circuit unresponsive"
Context: "iocccctmp7:5064"
Source File: ../tcpiiu.cpp line 945
Current Time: Tue Nov 08 2016 09:17:46.769619000
..................................................................
===
Nov.8.2016. iitsuka
東日本技術研究所の飯塚です。
(2)のRecycleモードを使用すると、Channel Accessが出来なくなる件ですが、
以下の事が分かりました。
EVRの割込みを使用しないようにして起動すると、cagetでPVが読めます。
また、EVRの割込みを有効にした状態でも、EVRFIFOタスクの優先度を、CA
サーバー関連タスクより下げてあげれば、cagetでPVを読む事が出来ました。
上記から、Channel Accessが出来なくなる原因は、EVRのイベント受信割込み
が頻発してCA関連のタスクが動けなくなるためと思われます。
===
Nov.8.2016. k.furukawa
こんにちは、飯塚さま、古川です。
連絡をありがとうございます。
残念ですが、了解しました。次の Action は Jukka からの回答を待って考えた
いと思います。
===
Nov.8.2016. k.furukawa
こんにちは、飯塚さま、古川です。
連絡をありがとうございます。
割り込みを掛けているとは思いませんでした。2.2MHz で割り込みが掛かってい
たということですね。割り込みが多過ぎると Console に Error message が出る
のではないかと思うのですが、Error message は無かったということでしょうか。
いずれにせよ、誤解していたようです。
今回は割り込みは必要無いので一応解決ということですね。この Event とは別に
20ms に一回程度の割り込みは掛けたいと思いますが、それは別 Event とすれば、
可能ですね。
ただ、AC input 同期ができていないので、やはり Jukka の回答待ちです。
===
Nov.8.2016. iitsuka
東日本技術研究所の飯塚です。
イベントがきちんと出ているかどうかを確認するために
セットしておいたのが仇になったようです。お騒がせして
申し訳ありませんでした。
それと、エラーメッセージの表示はありませんでした。
===
Nov.10.2016. iitsuka
東日本技術研究所の飯塚です。
ACとのズレの件ですが、テストとして以下の処理を試してみました。
パルスは32,000回でいいという事だったと思いますので、SequenceRAM上に
2,000回分のイベントを格納し、それを16シーケンス分送出すれば32,000回に
なります。
この状態で、16シーケンス目の送出はNormalモードで送り、送出完了時に
Recycleに戻すという処理を加えたところ、短期的な経過観察ではありますが、
ACとの同期ずれが観測されなくなりました。
ただし、Normal⇔Recycleの変更に時間がかかるのか、ACを40Hzより大きく
すると、次のTriggerが受け取れなくなる現象が発生するようになります。
以上、まだ試験不足の部分もあるかと思いますが、取り急ぎご報告させて
頂きます。
===
Nov.10.2016. k.furukawa
こんにちは、飯塚さま、古川です。
連絡をありがとうございます。返答遅くなりました。
ちょっと理解できていません。どのようにして、16 回目の Recycle で Normal
に戻しているのでしょうか。私は良い方法が無いかと思っていました。
Sequence の最後に割り込み用の Event を入れているのでしょうか。そうすると、
16 回続けて割り込みが掛かるということですね。900 μs 毎に割り込み、とい
うのは、少し重いかもしれないですね。実は、全て間に合っているわけではなく、
間に合わない場合もあって、16 回以上廻っている可能性もあるのでしょうか。
===
Nov.11.2016. iitsuka
東日本技術研究所の飯塚です。
以下に回答させて頂きます。
> Sequence の最後に割り込み用の Event を入れているのでしょうか。そうすると、
割込み用のイベントは入れておりません。
先日少しお話をさせて頂いたと思いますが、シーケンスRAMの
送出完了後に割込みがかけられるようになっておりまして、その
割込みを使用して送出回数をカウントしております。
> 間に合わない場合もあって、16 回以上廻っている可能性もあるのでしょうか。
オシロをしばらく観察していましたが、AC 40Hz以下ならば、
私が見ていた限りでは、そういった事はなかったように思います。
===
Nov.11.2016. k.furukawa
こんにちは、飯塚さま、古川です。
連絡をありがとうございます。
そういう手がありましたね。確認ありがとうございます。
繰り返しが変わっても、Interrupt の間隔は約 900 μs で一定なので、繰り返
しが影響する理由がにわかにはわかりませんが、最大 1 秒間に 16 x 50 回の
割り込みに耐えられなければならないので、全体としては大き過ぎる Load で
すね。
まずは、来週以降の SINAP module の進展に期待したいと思います。
並行して、SINAP module での Data buffer や Distributed bus の扱いについ
て尋ねています。
===
Nov.11.2016. iitsuka
東日本技術研究所の飯塚です。
> 繰り返しが変わっても、Interrupt の間隔は約 900 μs で一定なので、繰り返
> しが影響する理由がにわかにはわかりませんが、最大 1 秒間に 16 x 50 回の
Interruptの間隔は900μsで一定ですが、ACの周波数が変わる事で、
最後のシーケンス転送が完了してから、次のTrigger待ちのために、
Recycleに戻して次のTriggerに備える処理にかけられる時間が変わっ
てくると思います。
32000パルスの出力は14.46msですから、40Hzですと10.54msですが、
50Hzになると、5.54ms内に完了させなければならない計算になると
思います。
ただ、Recycle->Normalへの変更は900μs内に出来ているはずなのに、
なぜNormal->Recycleは5.54msでも完了しない場合があるのかという
疑問は残ります。
===
Nov.11.2016. k.furukawa
こんにちは、飯塚さま、古川です。
連絡をありがとうございます。
処理時間は数十μs x n 程度だと思いますので、不思議です。
今後、他の処理も行わなければならないので、現在の試験 Code だけで CPU が
足りないのは論外ですね。
その速度だけが問題ならば、現在は、EPICS の PV Link で処理していると思い
ますが、Driver 内に C で処理を書けば問題なくなるでしょうから、遅くなる原
因の理解は必要でしょう。
===
Nov.11.2016. iitsuka
東日本技術研究所の飯塚です。
> 今後、他の処理も行わなければならないので、現在の試験 Code だけで CPU が
> 足りないのは論外ですね。
もしくは、単純にCPUの処理速度だけではなくて、EVGのファーム内部の処理に
時間が必要と言う可能性はないでしょうか?
CPU側から見れば Recycle→Normal も Normal→Recycle も処理内容としては
大差ない訳わけですから、Normal→Recycle だけ時間がかかるというのは不思議
です。
ともかく、時間のある時に、この辺りのドライバ処理を見てみます。
===
Nov.14.2016. iitsuka
東日本技術研究所の飯塚です。
Recycleモードでの繰り返し回数の制御を、mrfioc2ドライバを改造して、
C言語で書いてみました。また、制御の方法を下記 (1) から (2) に変更
してみました。
(1) 15回目のシーケンス送出完了後に転送モードをNormalにし、
16回目のシーケンス送出完了後に転送モードをRecycleに戻す
(2) 16回目のシーケンス送出完了後にPauseによる送出の中断と
Enableによる再許可を同時に行う。
この方法ならば、AC 60Hz でも問題なく動作しているようです。
(2)の方法は、転送モードの変更が必要ない分、高速に処理できるのかも
しれません。ただし、中断と再許可を16シーケンス送出後に行っているので
パルスは32,000+α回出力されます。
===
Nov.18.2016. iitsuka
東日本技術研究所の飯塚です。
mrfioc2 を改造して EVG で 32,000 回パルスを出力する試験
につきまして、TDC を使用してトリガー抜けが発生していないか
の確認を行いました。
トリガー周期を 50Hz として、昨日の 18 時から試験を開始して、
本日 12 時までの 18 時間に渡って試験を行い、その間にトリガー
抜けが発生していない事が確認できました。
=====
<kazuro.furukawa@kek.jp>,
Linac, KEK, Nov.26.2016.
[今回打ち合わせ Memo]
[DR Timing]
[Linac Event Timing]
[Linac Timing Another]
[Control]
[Linac]
[Accelerator]
[KEK]