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)

Development of Gateway System Using EPICS for KEKB Injector Linac
K.Nakao∗ A) , K.FurukawaB)A) Graduate School of Science and Technology, Nihon University
7-24-1 Narashinodai, Funabashi, Chiba 274-8501
B) High Energy Accelerator Research Organization
1-1 Oho, Tsukuba, Ibaraki 305-0801
Abstract
EPICS gateway has been developed for the control system of the KEKB injector linac. EPICS clients canmonitor the device status through this gateway with EPICS channel access network protocol. This system provides
information of following devices: klystron, beam position monitor, vaccume, interlock and beam switch. These
data are accumulated in Channel Archiver, which is one of EPICS clients, and are displayed by a Web browser. The
gateway has a capability to treat over 4900 transactions per second practically.

KEK 入射器における EPICS Gateway の構築
1.

はじめにKEK 電子陽電子線形加速器では、クライストロンや Beam Position Monitor(BPM) といった機器のパラメータの履歴は、各機器毎に特化した専用の履歴ソフトウェアによって保存、管理されていた。しかし時を経る毎に履歴ソフトウェアは乱立し、ファイルフォーマットも統一されていなかった。別の履歴ソフトで管理されているデータと相関を見る事が困難であるだけでなく維持管理すら困難な状態に陥ってしまった。さらに KEKB から、入射器の状態をモニタしたいという要望も寄せらており何らかの対策を講じる必要が出てきた。
KEKB、J-PARC をはじめとする大規模加速器施設
では制御ソフトウェアの開発に EPICS(ExperimentalPhysics and Industrial Control System) を使用している。EPICS Collaboration によって開発された、利用可能なソフトウェアが既に多く存在している。開発及びメンテナンス効率を考えると、これらの存在を無視する事ができない。
上記のような要求に応えるべく、既存のモニタライブラリから取得した値を EPICS で公開する EPICS
Gateway を構築することにした。また、EPICS クライアントソフトウェアの一種である Channel Archiverを用いて、各機器の履歴を一元的に記録、公開することとした。本稿ではこの EPICS Gateway についての詳細を述べる。

2.

システム構成EPICS Gateway System の構成を図 1 に示す。KEK入射器では Ethernet インターフェースを持つ PLC(Programmable Logic Controller) でクライストロン等の機器を制御しており、各機器の状態はこれらの PLCから取得することができる。ネットワークアクセスによる PLC の負荷を軽減するため、毎秒 1 回各機器
∗E-mail: nakao@lebra.nihon-u.ac.jpの状態をスキャンし、キャッシュする Cache Server がある。機器を監視するプログラムは原則この Cache
Server から、ネットワーク上の異なるホストで処理を実行する Remote Procedure Call (RPC) を用いて状態を取得する。このようなデータの取得は、C で書かれたライブラリ (Legacy Monitor Library) を使用することで簡単に行うことができる。EPICS Gateway はこのライブラリを使い、EPICS の Channel Access Network
Protocol に変換する。Operator Console や、履歴ソフ
トウェア (archiver) といった EPICS Client は、EPICS
Gateway を通して各機器の情報にアクセスすることができる。

EPICS は、WindRiver 社製リアルタイム OS である
vxWorks でしか動作しなかったが、バージョン 3.13
以降 Win32、Linux 等に移植された。ハードウェア、開発環境の入手性から、現在この Gateway は RedHat
Linux 8.0、Pentium4 搭載の PC で動作している。

3.

DEVICE SUPPORT の実装

3.1

Device Support とは

EPICS は Client/Server モデルで実装されており、Server は IOC(Input/Output Controller) と呼ばれる。オ
ペレータコンソール等のクライアントは、ネットワー
ク経由で IOC と通信し、各機器を制御監視する。Device Support は、制御コマンドの送受信といった実際の制御を隠蔽するもので、OS におけるデバイスドライバに相当する。Device Support によって機器が隠蔽しているおかげで、クライアントはその機器についての情報を知っている必要が無い。
開発者は各機器毎に Device Support を実装することで、その機器を EPICS を用いて制御監視することができる。今回以下の機器に対する Device Support を実装した。
486

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)

図 2: CGIExport 出力画面

3.5 その他

図 1: EPICS Gateway System の構成

3.2 クライストロン

その他インターロックモード、ビーム on/off、 PLC
Watchdog 情報を得る事ができる。PLC Watchdog は、ごくまれに PLC がハングアップすることから導入されたもので PLC に毎秒カウントアップするチャンネルを用意しておき、その変化を監視する。このカウンタが 2 秒以上変化しなかったら、警告を発するものである。これにより PLC がハングアップした 2 秒後に、ハングアップした PLC を特定し対策を講じることができる。

クライストロンの場合、印加電圧、位相設定値、出力電力、反射電力を公開することとした。これらは、 4 . CHANNEL ARCHIVER
モニタライブラリから得られる ADC 出力の配列に定Channel Archiver は Bob Dalesio 氏らによって開数を乗ずることで取得している。Device Support に各発された
EPICS クライアントである [3] 。Channel
値に対応する要素の index と、定数を指定することでArchiver は IOC から指定されたチャンネルの値を記これらに対応した。
録する。履歴データはコマンドラインから ASCII テ
キストファイルや、MatLab フォーマットで出力する
3.3 真空ことができるだけでなく、CGIExport を使うことで図要所要所に設置されている真空計の真空値の取得 2 のように Web ブラウザから履歴データをグラフ表も必要である。真空値は狭い範囲であるが常に変動 示することができる。
しているため、後述する履歴データの容量を肥大化させる。これには動的に ADEL (archive deadband) を変化させることで対応した。EPICS は最後に取得した 5 . 運用
値が、現在の値よりも ADEL で指定した値以上変化
EPICS には IOC に接続されている機器の情報を保した場合データ蓄積プログラム (archiver) に現在の値 持する Record Database がある。Record Database に前を記録するように促す [2] 。同じ割合変化したときに 述の ADEL 値や、値の名前、警告を出す閾値等を記だけ記録するように、データを取得する度に ADEL 録させる。Record Database の初期値は、IOC 起動時を変更するようにした。このことで、履歴データサ にテキストファイルからロードされる。この Gateway
イズを大幅に節約することができた。の IOC は、3000 を越える機器の情報を管理しており3.4 ビーム位置、ビーム電流各バンチのビーム電流、ビーム位置、ビーム位置の標準偏差を BPM から取得する事ができる。履歴デー
タ容量節約のため、ビーム Off 時には、これらの値を 0 にするようになっている。値を変化させないことで、ADEL による履歴の抑制が行われる。

Record Database の管理が容易でなければならない。
そこで既存の機器テーブルから、生成するスクリプトを作成し起動時に自動生成するようにした。これにはテキスト処理スクリプト言語として広く使われている awk を用いた。
IOC は、vxWorks での動作を前提に開発されてきた経緯があるのでデーモンプロセスとして動作せず、
487

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)

IOC が動作している terminal が終了すると IOC も終了してしまうという問題がある。また IOC は実行中、
IOC shell という shell が terminal で動いている。この shell にはコマンドを入力することができ、またエラー情報が表示される。IOC shell にネットワーク経由でアクセスできるようにするために制御用計算機上
で IOC を起動し、IOC shell を VNC (Virtual NetworkComputing) でアクセスできるようにした。

6.

パフォーマンス

この Gateway のパフォーマンスを計測するために、一秒間連続して IOC から値を取得し取得できた値の数を表示するテストプログラムを作成し、100BaseT のLAN で接続された PC で実行した。100 回の試行で、毎秒平均 5968 回データを取得することができ、標準偏差 529 はであった。よって毎秒 4900 回は IOC からデータを取得できる。このテストは Channel Archiverを停止せずに行った。

7.

問題点

先日 IP 55 と呼ばれる真空計の値が大きく変動したにもかかわらずその変動が履歴に残っていないことが判明した。意図的に大きく変動する Device Supportを書き、再現を試みたが再現することができなかった。真空計の Device Support の ADEL は、データ取得の度に変更している。そのため ADEL が有効になるタイミングが原因ではないかと考えられるが、原因はまだわかっていない。
このようなシステムでは、ハードウェア等のトラブルによるサービス停止を防ぐために、複数のホストにこの Gateway をインストールしておき、冗長性を持たせておく事が望ましい。しかし現在このシステムには冗長性がない。冗長性を持たせた場合、本番機が落ちた時に自動的にバックアップ側の待機状態を解除することが必要である。そのためには本番機が落ちたことを検出しなければならないが、その方法として IOC に本番機を監視する Device Supportを書く、High Availability Linux[4] を使うというアイデアが提案されている。

8.

まとめ

KEK 入射器で乱立していた履歴データベースを統一し、KEKB に入射器の状態を提供するために
EPICS Gateway を PC Linux Box 上に構築し、Channel Archiver を導入した。EPICS を採用したことにより、EPICS Collaboration によって開発された多くのソフトウェアを利用できるようになり、ソフトウェア開発効率を向上させることができた。また Channel
Archiver の CGIExport によって、履歴データを Webブラウザで取得できるようになった。
この Gateway は、クライストロンの出力電力、反射電力、印加電圧、ビーム位置、ビーム電流、真空値、インターロックモード、ビーム On/Off 情報等を公開している。

運用面では、設定ファイルのほとんどを自動的に生成するスクリプトを作成し機器類の移動、撤去にも迅速に対応する事ができるようになった。
ChannelArchiver 動作中に、毎秒 4900 回以上 Gateway からデータを取り出す事ができ、パフォーマンスは十分であることが確認された。
履歴データのファイルサイズを削減するために、真空の ADEL を真空値に応じて変化させているが、真空値が大きく変動した場合、その変動が履歴に反映されないという問題が報告されている。しかし再現性が無く原因の特定に至っていない。

9.

今後の予定

KEKB では制御に EPICS を使っているが、Channel Archiver ではなく KBLog という自家製の履歴ソフトを使用している。そのため KEKB の履歴データと、入射器の履歴データと相関を求めることは容易ではない。現在 KBLog に、XML(Extensible MarkupLanguage) を介して遠隔操作できる規格である XMLRPC インターフェースを追加する作業が行われている [5, 6] 。Channel Archiver の新しいバージョンでは、XML-RPC で履歴データにアクセスできることから、Channel Archiver のバージョンアップを行う予定である。これにより KEKB と入射器の履歴データの相関を容易に求めることができるようになる。
現在テスト運用中であるが、履歴データは日常的に使われている。2004 年の夏季メンテナンス期間中に、ソフトウェアのバージョンアップ等を行い、9 月から本格運用に入る予定である。

参考文献[1] EPICS Home Page
http://www.aps.anl.gov/epics/index.php[2] Philip Stanley, et al., “EPICS Record Reference Manual”
http://www.aps.anl.gov/epics/base/R3-13.php[3] “Channel Archiver”
http://lansce.lanl.gov/lansce8/Epics/Archiver/Default.htm[4] “High-Availability Linux Project”
http://linux-ha.org[5] Tim Bray, et al., “Extensible Markup Language (XML)1.1” http://www.w3.org/TR/xml11/[6] Dave Winer “XML-RPC Specification”
http://xmlrpc.com/spec488