Proceedings of the 1st Annual Meeting of Particle Accelerator Society of Japanand the 29th Linear Accelerator Meeting in Japan (August 4 - 6, 2004, Funabashi Japan)

RAPID APPLICATION DEVELOPMENT BY KEKB ACCELERATOROPERATORS USING EPICS/PYTHON
M.Tanaka1
T.Aoyama,A), Y.Satoh

A), S.Shimomura

A), T.Kitabayashi

A), K.Sugino

A), H.Iida

A), T.Nakamura

A)A), T.Kawasumi, T.Ohkubo

A), K.Yoshii

A), S.FukeA)

A),, N. YamamotoB)A)

Mitsubishi Electric System & Service Co. Ltd.
2-8-8 Umezono, Tsukuba, Ibaraki 305-0045, JapanB)

High Energy Accelerator Research Organization (KEK)
1-1, Oho ,Tsukuba, Ibaraki 305-0801, JapanAbstract
In the KEKB accelerator facility, the control system is constructed based on the framework of EPICS. By using
EPICS/Python API, which is originated from KEK, we can develop an EPICS channel access application besed onsimple Python techology with only a few knowledge of EPICS channel access protocols. The operator’s new tuning
ideas are quickly implemented to the control system. In this paper, we introduce the EPICS/Python API and report theeffectiveness of rapid application development by the KEKB operators using the API.

KEKB加速器運転員のEPICS/PythonによるRapid Application Development
１．はじめに
我々オペレーターは1999年からKEKBコミッショ
ニンググループ（KCG）と共にKEKB加速器の運転を行なっている。KCGの主な役割はビーム調整や装置開発である。オペレーターはKCGの指示の下Ringへのビーム入射、ルミノシティ調整及び調整方法の改善、加速器の状態監視や安全管理等を行なっている。加速器を常時運転していると様々な監視対象や新しい調整アイデアが出てくる。これまではその度にKCG又は制御グループにモニター用のアプリケーション開発を依頼するか制御室内に点在する専用端末で監視していた。しかしアプリケーション完成までの時間がかかり過ぎたり、完成したアプリケーションに対する要求がいろいろあったりと問題点も多かった。オペレーターはソフトウェア技術の専門家 で は な か っ た が KEK で 開 発 さ れ た EPICS/Python
APIを使用することでオペレーターにもアプリケーションの開発が可能となった。オペレーターのアプリケーション開発への参加により上記の問題も軽減された。

２．KEKB制御システム
２によるオペレーターインターフェース部と約100台のIOC（デバイス制御用のVME計算機）による機器
制 御 部 の 構 成 に な っ て い る 。 全 IOC上 の EPICSレ
コード数は約28万個ありこのレコードの状態の変化を知ることでオペレーターは加速器の状態を把握している。KEKではKEKBとPF-ARにEPICSを採用しており今後PFの一部でも採用が予定されている。

３．GUI開発環境
KEKB で は GUI （ Graphical User Interface ） を
MEDM 、 SAD/Tkinter 、 Python/Tkinter で 開 発 し て おりこれらを通して加速器の制御を行っている。
3.1 MEDM (Motif Editor and Display Manager)：
EPICS標準のGUI作成ツールで簡単にパネル作成が可能である。しかし条件分岐などが出来ない為単純な操作や監視向きである。
3.2 SAD/Tkinter：KEKで開発された加速器設計の3計算言語であるSAD （Strategic Accelerator Design）にEPICSアクセス部分とTkのグラフィック表示を加えた言語である。KEKB加速器の制御用に使用されて い る ア プ リ ケ ー シ ョ ン は KCG の 大 半 がSAD/TkinterのユーザーであることからSAD/Tkinterで作成されたものがほとんどを占めている。

KEKB加速器の制御システムはEPICS をベースに構築されている。EPICSとは加速器や大型測定装置、大型望遠鏡などの分散型制御システムを開発するた3.3 Python/Tkinter：Pythonは比較的覚えやすく迅
めのソフトウェア開発環境と汎用アプリケーション速なアプリケーション開発に適したオブジェクト指のセットである。KEKBの場合、数台のUnix計算機向型のインタプリタ型言語である。また構文がシン
1E-mail: tmanabu@post.kek.jp
http://www.aps.anl.gov/epics/index.php
3
http://acc-physics.kek.jp/SAD/sad.html
2513

Proceedings of the 1st Annual Meeting of Particle Accelerator Society of Japanand the 29th Linear Accelerator Meeting in Japan (August 4 - 6, 2004, Funabashi Japan)

プルで便利な機能が多く組み込まれており、起動しただけで使用できる多数のコマンドが用意されている。そのほかにも豊富な拡張モジュールが提供されていて、プログラム開発者は拡張モジュールをimport(取り込み)するだけでその機能が使用出来る。

表1 コマンドの役割
Camonitor
Caget
Caput

４．EPICS/Python API
EPICS/Python APIによってEPICSの詳細を知らなくてもPython言語を用いて制御パネルの開発が可能である。図1、2にEPICS/Python APIの概略図とソースコードの例を示す。

図1 EPICS/Python API 概略図
Python(Python Application) か ら 送 ら れ た 命 令 はEPICS/Python API （cas.py→ca.py→_ca.c）を経由して EPICS System （ EPICS CA Library→EPICS BaseSystem）からContorol Equipmentへと伝えられる。

常にモニターし状態に変化があれば状態を返す
レコード状態を返す
レコードに対して値をセットする

５ ． EPICS/Python に よ る Rapid Application
Development (RAD)
特定のレコード数個をモニターするパネルなどは形にこだわらなければ開発時間は1時間以内である。
また他のモニターパネルを開発する時はモニターするレコード名を変えるだけでよいので数分で開発可能である。さらに条件文を追加することにより運転員が状況を把握しやすいようなパネルの開発も容易である。アイデアや要求があればすぐに追加や新規開発したりして数分後にはアプリケーションとしての使用が可能である。
オペレーターが開発したアプリケーションはKEKBのプログラムランチャーに登録されているだけで開発中を含め約90個ある。そのほとんどが運転を効率的に行うために開発されたもので、表2に運転開始から開発されたアプリケーション数を示す。
2003/4からは飛躍的にアプリケーション数が増加して い る が こ れ は EPICS/Python APIの 有 効 性 が オ ペ
レーターに広まったのと2003年度にソフトウェア技術習得機会を設けたことによると思われる。
表2 アプリケーション数
年月2003/3（技術講習会開催前）
2003/4〜2004/6

import文

アプリケーション数
約 10
約 80（SAD 20)

EPICS/Python APIを使った簡単なアプリケーションを図4、5、6に示す。

図2 ソースコード
図4 ルミノシティ調整用Knobモニター
プログラム開発者はcas.pyをimportする（プログラムの最初に“from cas import ＊ ”と 書 く ） こ と でEPICS/Python APIを利用することが出来る。プログ
ラム中ではレコード名（チャンネル名）で指定されるEPICSレコードに対してCamonitor、Caget、Caputの３つのコマンドを使用すれば加速器に対する全ての制御を実現可能である。表1にコマンドの役割を示す。

ルミノシティ調整用KnobのレコードをCamonitorすることで値が変化してもリアルタイムで値を把握することが出来る。

514

Proceedings of the 1st Annual Meeting of Particle Accelerator Society of Japanand the 29th Linear Accelerator Meeting in Japan (August 4 - 6, 2004, Funabashi Japan)

事が可能である。図7にSAD/Tkinterで開発したルミノシティ調整用モニターパネルを示す。オペレー
ターのルミノシティ調整時に浮かんだアイデアや意見が集められ、それをオペレーターが開発に生かしている。パネルの使用者と開発者がオペレーターであることはパネルの開発に有効でありオペレーターのアイデアや意見が開発に素早く反映されることになる。

図5 ルミノシティ調整Knobの調整履歴モニター
ルミノシティ調整に使用中のKnob名とその値を表示し、値に変化があれば履歴リストに順に追加する。

図7 ルミノシティ調整用モニターパネル

６．まとめ

図6 ベータトロンチューンの履歴グラフ
ベータトロンチューンの値だけでも把握出来るが電流値と一緒にPython/Tkinterの拡張モジュールであるグラフ表示に追加することによって一目で状況が把握出来る。

このようなパネル以外にもEPICS/Python APIを利[1] [2]用したアプリケーションが多々あり加速器の運転状態把握に役立っている。
EPICS/PythonによるRADを通じてPython言語を習得することはSAD/Tkinterを使用したアプリケーション開発にも有効であった。SAD/TkinterにもEPICSアクセス機能がありEPICS/PythonによるRADと同様のプログラム経験の少ないオペレーターがアプリケーションを開発するのにEPICS/Pythonは有効であり、EPICS/Pythonを習得することによって得た知識はSAD/Tkinterを使用したアプリケーション開発にも有効であった。オペレーターがEPICS/Pythonを使って迅速にアプリケーション開発をすることによって加速器の運転状態を素早く把握することが可能になった。

謝辞
本論文を書くにあたりご助言、ご指導を頂きまし
たKEKBコミッショニンググループの方々にお礼申し上げます。

参考文献
K.Yoshii, et al., “The Operator-developed Useful Tools at
KEKB Accelerator”, Proceedings of Workshop on
Accelerator Operation 2003, March 10-14, 2003
[2] K.Sugino, et al., “Effectiveness of Operation Tools
Developed by KEKB Operatos”, 第１回日本加速器学会会年会・第29回リニアック技術研究会プロシーディングス, Aug. 4-6, 2004

[1]515