EPICSExperimental Physics and Industrial Control System)は、加速器望遠鏡、その他の大規模は実験用機器を運用する分散制御システムを開発・実装するのに使われるソフトウェア環境である。EPICS は SCADA の機能も提供する。このツールは、多数のコンピュータからなるネットワークで制御とフィードバックを行うシステムの開発の補助となるよう設計されている。アルゴンヌ国立研究所2004年に開発したもので、独自のオープンソースライセンスでリリースされている。

EPICS
開発元 Free software community
初版 1994年1月19日 (1994-01-19)
最新版
3.15.8 / 2020年5月15日 (4年前) (2020-05-15)
最新評価版
7.0.4.1 / 2020年8月14日 (4年前) (2020-08-14)
リポジトリ ウィキデータを編集
対応OS Cross-platform
種別 Open Source
ライセンス EPICS Open License
公式サイト epics-controls.org
テンプレートを表示

EPICS は、コンピュータ間の通信モデルとしてクライアントサーバモデル出版-購読型モデルを採用している。コンピュータ群(サーバまたは Input Output Controller)が、付随する測定機器を使って実験データと制御データを収集する。この情報を Channel Access (CA) というプロトコルで別のコンピュータ群(クライアント)に送る。CA は広帯域のネットワークプロトコルであり、科学実験のようなリアルタイム性を要する応用に適している。

概要

編集

EPICS は IOC (Input Output Controller) 経由で実世界とインタフェースする。IOCとしては、一般的なPCまたはVMEバス規格の組み込みプロセッサがあり、各種標準(GPIBRS-232IPキャリア)で制御対象機器(電動機熱電対スイッチなど)と接続したり、制御システム装置(オシロスコープネットワーク・アナライザなど)と接続する。IOC上にはレコード (record) のデータベースがあり、個々のレコードがデバイスやデバイスの制御を表している。IOCのオペレーティングシステムとしては、高いリアルタイム性を求める場合は VxWorksRTEMS を使うが、他のシステムへの移植も進んでいる。ある程度のリアルタイム性でよい場合は、LinuxWindows が使える。

ネットワーク上の他のコンピュータは、チャンネル (channel) という概念を通して IOC とやり取りする。例えば、加速器に複数のセクターがあり、セクター間にシャッターがあるとする。一般に1つのシャッターには複数のチャンネルが対応する。シャッターの動きを起動する出力チャンネルと、シャッターの状態(閉じている、開いている、動作中など)を見る入力チャンネルと、シャッターの両側の温度や圧力を示すアナログの入力チャンネル群である。チャンネルには名前が付けられ、[装置名]:[信号名] の形式である(例えば、ACCELERATOR_RING:TEMP_PROBE_4 など)。

ほとんどの操作は、EDM (editor/display manager) または MEDM (Motif/EDM) といった独立したGUIパッケージから直接行える。これらによって、ダイヤル、ゲージ、テキストボックス、単純なアニメーションなどを組み合わせたGUI画面を生成できる。

EPICS とやり取りできるのはそのようなGUIソフトウェアだけではない。CA プロトコルを扱えるソフトウェアなら、レコードの値にアクセスできる。例えば、EPICSのウェブサイトには MATLABLabVIEWPerlPythonTclActiveX などで CA を扱えるようにする拡張パッケージがある。従って、EPICS で制御されている装置を起動するスクリプトを書くといったことも容易である。

レコード型の例

編集

EPICS のレコードにはいくつかの種類がある。ここでは主なものを挙げる。これら以外にもレコードはあるし、ユーザーが独自のレコード型を生成することもできる。

各レコードには複数のフィールド (field) があり、それぞれ役目を持っている。

AI、AO
アナログ入出力レコード。アナログの値を格納し、何らかの位置、温度、圧力などを表している。デバイスの生のデータとの相互変換がある程度可能(スケーリングやオフセットなど)。
BI、BO
バイナリ入出力レコード。装置のステータスとコマンドを表すのに使われることが多い。
Calc、Calcout
他のレコードにアクセスし、それらの値を使った計算ができるレコード。例えば、電流、入力電圧、出力電圧 などを使って、電動機の効率を百分率で表示するなど。
Stepper Motor
ステッピングモーターの制御用レコード。加速度、速度、位置などで設定できる。

レコード処理

編集

EPICS におけるレコードには scan time が設定される必要があり、さもなくばデフォルトで passive とされる。passive のレコードは(PROCフィールドに書き込みしない限り)処理されない。一般にレコードは定期的に処理されるよう scan time が設定される(例えば0.1秒間隔など)。また、何らかのイベント発生時のみ処理されるようレコードを設定することもできる。

EPICS を利用している主な施設

編集

外部リンク

編集