高エネルギー加速器制御システムにおけるPythonの活用 高エネルギー加速器研究機構 加速器研究施設 山本 昇 KEKとは KEKの加速器:KEKB/PF-AR/J-PARC EPICSとPython Pythonの応用例 KEKB, PF-ARなどの加速器は素粒子実験や、物性物理学で利用されている。 この加速器自体も最高性能に到達するためには、様々な測定やそれに基づく改善が必要。 加速器制御システムも、日々改善される運転状況に対応して変わって行く。 スクリプト言語を使うことで柔軟に対応する。 Python 制御データ GUI Database アクセス Zope Tcl/Tk SAD:KEKで開発された加速器物理用プログラム、独自のスクリプト言語機能を実装
KEK:大学共同利用機関法人 高エネルギー加速器研究機構 荷電粒子 (電子や陽子) を高エネルギー=高速 (〜 光速) に加速する装置 (粒子加速器) を使った研究 を推進している。 素粒子原子核物理学研究所 :素粒子、原子核レベル での物理学研究 物質構造科学研究所:物質の構造解析、応用など 加速器研究施設:加速器の開発と建設 電子LINAC / PF / PF-AR / KEKB J-PARC(日本原子力研究開発機構と共同で建設中) 共通基盤研究施設など [ http://www.kek.jp/ ]
KEK 約1km 電子LINAC KEKB PF PF-AR KEKは茨城県つくば市の研究学園都市と呼ばれる地域の北端に位置しています。 写真でご覧いただける様に、幅約一キロ、長さ約1.5kmの敷地にKEKBをはじめとする加速 器が建設されています。 展示施設「KEKコミュニケーションプラザ」は週末も開放(午前9:30から 午後 4:30まで)されて おりますので、 是非お越し下さい。 この写真で示されいる様に、高エネルギー加速器は直径一キロ、円周約3Kmの地下トンネ ルに設置されています。 このトンネル内に設置された電磁石や真空ポンプ、各種の診断装置を中央制御室から制御 することが加速器制御システムの 目的です。 電子LINAC KEKB PF PF-AR
Japan Proton Accelerator Research Complex J-PARC(大強度陽子加速器施設)は現在原子力研究開発機構(JAEA)とKEKが共同して茨城 県東海村に建設中の加速器です。現在陽子リニアック部分は陽子ビームの加速等のテストを進 めており、来年度中にはMR加速器でのビーム試験が始められる予定です。 この加速器の制御システムもEPICSをベースに開発されており、Pythonもツールの一つとして利 用されています。
加速器の制御システム Network 中央制御室 分散配置された装置群 KEKやJ−パRCの様な大型の加速器装置では、ネットワーク分散型の制御システムわ使われ ています。中央制御室のオペレータからの指示は、ホスト計算機から、遠方のローカル制御 室に設置された機器制御計算機にネットワーク経由で送られます。機器制御計算機はkれら のデータをもとに実際の機器にDAC/ADCなどのモジュールを経由して KEKBのトンネルサイズは? 分散配置された装置群
EPICS Experimental Physics and Industrial Control System:分散制御システム構築用ツールキット 中央制御室 制御 アプリケーション 制御 アプリケーション 制御 アプリケーション 制御 アプリケーション PYTHON CA クライアント ライブラリ ネットワーク:Channel Access プロトコル EPICSは米国LANLとANLが共同で開発した分散制御システムのためのフレームワークです。現在も国際的な共同研究として 開発が進められています。KEKのKEKB、PF−AR, J-PARCなどの加速器の制御システムはこのフレームワークの上に構築されています。(理化学研究所のRIBFも一部にEPICSを採用しています。) 機器制御室 CA サーバ EPICS Database:機器の状態を管理 機器制御
Python 活用例1:スクリプト 利用モジュール: 利用形態 プログラム例: ca モジュール:EPICS-CAライブラリへの接続 機器やプログラムの動作確認など プログラム例: import ca ca.Get(“fred”) ca.Put(“jane”, 1.0) ca.Monitor(“albert”)
Python 活用例2:GUI 利用モジュール 利用形態 プログラム例: Tkinter : GUI部品 Pmw/BLT: グラフ表示 加速器運転/モニタ用機器制御用パネル プログラム例: 運転状態表示ディスプレイ 次ページ 機器操作画面
Python/Tkinterを使った例 一台の電磁石電源の操作パネル EPICS CA経由で動的にデータを取得 状態表示+操作 一台の電磁石電源の操作パネル EPICS CA経由で動的にデータを取得
Tkinter/Pmw/BLT-Graphnの応用例 Pmw/BLTグラフを利用した例(strip chart)。Python/Tkinter/Pmw/BLT-Graphsで柔軟な動的データの表示が可能。 プラットフォームは OSF1/HP-UX/Linux/MacOSX(with X11). MacOSXではPmw/BLT以外は AquaのTkwidgetを利用可能であるが、Pmw/BLT-GraphはAqua-Tkの上では動作していない。 加速器の運転状況を実時間で表示する。グラフはBLTグラフを使用。
Python活用例3:RDB連携 利用モジュール: 利用形 プログラム例: oracledb モジュール:ORACLEとのインタフェース pg モジュール:postgreSQL sqlobject モジュール:postgreSQL等 利用形 RDB上の機器データベースに基づいて設定ファイルなどを自動 生成。 プログラム例: oracleviewer.py:Oracleのテーブルを表示・編集 clone_adl : EPICSアプリケーション(medm)設定ファイルを RDB中のデータを元に、自動生成する。
RDB:画面定義ファイルの生成 KEKB加速器には約200 0台の電磁石とその電源 がある。 これらの電源の動作状態 を確認するモニタ画面の一 部。 Pythonプログラムは RDB(Oracle)から電源の 情報を取得、表示画面の テンプレートを組み合わせ て、画面定義ファイルを作 成する。 EPICSの標準ツールの一 つ(medm)を使用。
Python活用例4:電子ログ 利用モジュール 利用形態 プログラム例: Zope: Webアプリケーションフレームワーク pg: postgreSQL データベースとの連携 利用形態 Web ブラウザーを運転記録の記入と閲覧に利用 制御システムからの自動的運転記録と運転員による記 録との統合(RDBMSをバックエンドに利用) プログラム例: 次ページ
Zlog:Zopeの応用例 KEKB Zlogのログ閲覧画面の一例。別途記録入力用Webページも用意されている。 画像は別ディレクトリで管理。リンク情報だけがRDBに記録される。
Python活用例おまけ:おしゃべりアラーム 利用モジュール macspeech: Webアプリケーションフレームワーク ctypes: システムライブラリの呼び出し FrameWork, MiniAEFrame: MacOSのGUI作成 利用形態 運転時のアラームメッセージの読み上げ network 経由で送られたメッセージを MacOS/MacOSXの読み上げ機能を使って読み上げる 。 プログラム例: 省略、全体でも137行のプログラム。
まとめ PythonはKEKのKEKB/PF-ARなどの加速器制御 システムで有効に使われている。 様々な改善のアイデアを素早く試すことができる。 制御システムはPythonだけでできている訳ではあ りません。 EPICS applications その他のスクリプト言語:SAD, Tcl/tk