高エネルギー加速器制御システムにおけるPythonの活用

Download Report

Transcript 高エネルギー加速器制御システムにおけるPythonの活用

高エネルギー加速器制御システムに
おけるPythonの活用
高エネルギー加速器研究機構
加速器研究施設 山本 昇
KEKとは
KEKの加速器:KEKB/PF-AR/J-PARC
EPICSとPython
Pythonの応用例

KEK:大学共同利用機関法人
高エネルギー加速器研究機構

荷電粒子 (電子や陽子) を高エネルギー=高速 (〜
光速) に加速する装置 (粒子加速器) を使った研究
を推進している。

素粒子原子核物理学研究所 :素粒子、原子核レベル
での物理学研究

物質構造科学研究所:物質の構造解析、応用など

加速器研究施設:加速器の開発と建設

電子LINAC / PF / PF-AR / KEKB

J-PARC(日本原子力研究開発機構と共同で建設中)

共通基盤研究施設など

[ http://www.kek.jp/ ]
KEK
電子LINAC
KEKB
PF-AR
PF
Japan Proton Accelerator Research Complex
加速器の制御システム
中央制御室
Network
分散配置された装置群
EPICS

Experimental Physics and Industrial Control
System:分散制御システム構築用ツールキット
中
央
制
御
室
機
器
制
御
室
制御
制御
制御
アプリケーション アプリケーション アプリケーション
制御
アプリケーション
PYTHON
CA クライアント ライブラリ
ネットワーク:Channel Access プロトコル
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経由で
動的にデータを取得
Tkinter/Pmw/BLT-Graphnの応用例
加速器の運転状況を実時間で表示する。グラフは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