電子線形加速器の制御の初歩 - 実習

   古川 和朗 <kazuro.furukawa at kek.jp>, June 11 2007.
実習の目的

この実習では、Linac の Beam 制御の実際を計算機の制御 Program を通 して体験してみる。Beam 輸送の考え方、Beam Monitor の実際、のさわりを学 び、国際協力で開発されている EPICS 制御 Toolkit に触れてみる。(特に入 射器を対象に選んだのは Beam 時間が取りやすいからである。)

参考として、今回の実習向けの解説と大穂の教科書とを用意してい る。

今回の解説

Linac Beam の基礎 (佐藤 政則) [pdf] [word]
Linac Beam 位置計測 (諏訪田 剛) [pdf] [word]
EPICS 入門 (中村 達郎) [pdf] [word]

参考資料

大穂'02 ビーム輸送 (奥木 敏行)
大穂'02 ビーム計測 I (諏訪田 剛)
大穂'02 制御 (古川 和朗、上窪田 紀彦)
大穂'04 加速器制御入門 (佐藤 政則)
大穂'04 KEKB 入射器入門 (杉村 高志)

実習の進め方

今回の実習の内容は、数日を必要とする内容を含んでいる。また、準 備も充分でない可能性もあり、実習時間は充分でない。そこで、適宜説明を省 き、概要をつかんでいただくことに注力することにする。なお、実習の担当者 4 人は KEKB Linac 及び Ring において Beam 制御や Beam 計測を担当してい る。

Linac での EPICS 環境

KEKB Ring では、実際の Hardware の取り扱いから EPICS を使用し ているが、Linac では、現在のところ、ほとんどの Hardware は EPICS が導 入される以前から使用されている独自の機構により制御されている。これらの 制御情報はいくつかの Gateway により Channel Access を通して EPICS Client と直接接続することができ、EPICS Client Software を通常の EPICS 環境と変わり無く利用することができる。

簡単な EPICS 動作の確認

今回の実習用の環境の特殊事情で、次の環境変数を入れておく。

setenv EPICS_CA_AUTO_ADDR_LIST NO
setenv EPICS_CA_ADDR_LIST 172.19.95.255

Command linac tool である camonitor を利用して Stripline 型 Beam-position-monitor (BPM) から得られる Beam の位置情報や Steering 電 磁石の設定値などを読んでみる。

camonitor LIiBM:SP_54_4_1:XSNGL

camonitor LI3MG:SX_57_3:IREAD_R

medm xxx.adl

EPICS の Install

Simulator を作成するために EPICS Toolkit を Install する。通 常は EPICS Toolkit は加速器の運転環境で用意されているはずだが、今回は 慣れるために自分で Install してみる。

現在は EPICS は Open Source になっているので、だれでも比較的 簡単に導入することができる。まず、次の URL を参考にして自分で導入して みる。

Linux 用 EPICS の Build 例

実際には次のような Command を実行すればよい。

    (新しい EPICS 用 directory の作成)
mkdir epics ; cd epics
    (Source code の展開, 数分かかる)
tar xzf ~control/epics/jisshu/baseR3.14.9.tar.gz
cd base-3.14.9
    (便利のための環境変数, ` は backquote)
setenv EPICS_BASE `configure/tools/fullPathName.pl .`
    (今回は次のようにする)
setenv EPICS_BASE $PWD
    (計算機 Platform/Architecture の指 定, ` backquote)
setenv EPICS_HOST_ARCH `startup/EpicsHostArch.pl`
    (Compile/Link してみる, 10 - 30 分くら いかかる)
make | & tee make.log
    (正しく動作しているか確認する)
make runtests | & tee test.log

ちなみに、Windows や MacOSX で EPICS を使用したい場合 も、ほぼ同様に Install することができるので、自宅等でも試してみること ができる。

Windows 用 EPICS の Build 例
MacOSX 用 EPICS の Build 例

EPICS の Demonstration 環境を試す

EPICS に Demonstration 用の Program や Database が含まれている ので、まずそれを試して、理解する。

実際には次のような Command を実行すればよい。

    (Base を自分で Install しなかった 場合)
setenv EPICS_BASE ~control/epics/R3.14.9/base/
setenv EPICS_HOST_ARCH `$EPICS_BASE/startup/EpicsHostArch.pl`
    (新しい試験用 directory の作成)
mkdir test ; cd test
    (Demonstration 環境の作成)
$EPICS_BASE/bin/$EPICS_HOST_ARCH/makeBaseApp.pl -t example myapp
    (Server Program の指定)
$EPICS_BASE/bin/$EPICS_HOST_ARCH/makeBaseApp.pl -i -a $EPICS_HOST_ARCH -t example -p myapp myapp
    (Compile/Link してみる)
make | & tee make.log
    (うまく行ったら Server Program の Directory に移動する)
cd iocBoot/iocmyapp/
    (うまく行かなかったら別に準備して ある Server Program の Directory に移動する)
cd ~control/epics/jisshu/epics/test/iocBoot/iocmyapp/
    (Demonstration 環境を起動してみる)
chmod +x st.cmd
./st.cmd
    (作成された Record 名を表示する)
dbl
    (ひとつの Record の各 Field を表示する, ai Record と calc Record を比べてみる)
dbpr {Record 名} 3
    (他の端末からも値が取れることを確認する)
caget {Record 名}
caget {Record 名}.VAL
caget {Record 名}.DESC
camonitor {Record 名}

この Demonstration の Database の構成の一部が db/dbExample1.db にあるので中を調べてみる。

時間があれば、Database を vdct という Database Configuration Tool で視覚的に表示してみる。また、Record も medm という Display manager で視覚的に表示してみる。

例えば

setenv US $USER
medm -x -macro "V1=${US}Host:aiExample,V2=${US}Host:aiExample3" ~control/epics/jisshu/adl/plot.adl

簡単な Simulator の作成

db/dbExample1.db を修正して、ai Record A, B, C, D, E, ao Record X, Y と calc Record CALC1, CALC2 を作り、CALC1 には X=A+BxC という関係を作る。うまくできなければ、~ control/epics/jisshu/db/myapp.db を利用する。

A が Steering 電磁石での Beam 位置、B が Steering 電磁石の強さ、 C 転送行列(の一部)、X が BPM での Beam 位置と考えることができる。A を変更しても、B を変更しても、X が変化することを確認する。

さらに B=(X-D)xE という関係を作り、X を D に安 定させることが可能かどうかやってみる。

時間があれば、Database を vdct という Database Configuration Tool で視覚的に表示してみる。また、Record も medm という Display manager で視覚的に表示してみる。

例えば

setenv US $USER
medm -x -macro "V1=${US}Host:A,V2=${US}Host:X" ~control/epics/jisshu/adl/plot.adl
medm -x -macro "US=${US}" ~control/epics/jisshu/adl/value.adl

PID を使ってみる。

実際の世界では、各種の値に制限があったり、不要な外乱を避けるた めに平均操作をしたり、収束をよくするために積分、微分を行ったりする、そ のために EPICS ではいくつかの仕組みがあるが、ここでは epid Record を使 用してみる。

PID 制御の説明については例えばこの Link

epid Record の説明についてはこの Link

epid を使用するために、上の test という directory の代わりに test2 を 用意する。

実際には次のような Command を実行すればよい。

    (新しい試験用 directory の作成)
mkdir ../test2 ; cd ../test2
    (Demonstration 環境の作成)
setenv EPICS_BASE ~control/epics/R3.14.9/base/
$EPICS_BASE/bin/$EPICS_HOST_ARCH/makeBaseApp.pl -t pidTest mypid
    (Server Program の指定)
$EPICS_BASE/bin/$EPICS_HOST_ARCH/makeBaseApp.pl -i -a $EPICS_HOST_ARCH -t pidTest -p mypid mypid
    (Compile/Link してみる)
make | & tee make.log
    (うまく行ったら Server Program の Directory に移動する)
cd iocBoot/iocmypid/
    (うまく行かなかったら別に準備して ある Server Program の Directory に移動する)
cd ~control/epics/jisshu/test2/iocBoot/iocmypid/
    (Demonstration 環境を起動してみる)
chmod +x st.cmd
./st.cmd
    (作成された Record 名を表示する)
dbl
    (ひとつの Record の各 Field を表示する, ai Record と calc Record を比べてみる)
dbpr {Record 名} 3
    (他の端末からも値が取れることを確認する)
caget {Record 名}
caget {Record 名}.VAL
caget {Record 名}.DESC
camonitor {Record 名}

この Demonstration の epid 用 Database の構成が db/dbExample3.db にあるので中を調べてみる。

時間があれば、Database を vdct という Database Configuration Tool で視覚的に表示してみる。また、Record も medm という Display manager で視覚的に表示してみる。
    (例えば)
cd
medm -x -macro "P=usernameHost:,PID=epidExample" pid_control.adl

[Please Comment on This Page]
Kazuro Furukawa <webmaster@mail-linac.kek.jp>, Jun.6.2007 - Jun.11.2007. 
[e-Linac-Int] [e-Linac-Ext] [KEKB 1] [KEKB 2] [Accelerator] [KEK] [EPICS]
[EPICS-tutorial] [Record-ref]