EPICS

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

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

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

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

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

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

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

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

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

## EPICS を利用している主な施設
* アジア
**J-PARC - 高エネルギー加速器研究機構、日本原子力研究開発機構 （日本）
**KEKB - 高エネルギー加速器研究機構 （日本）
**RIビームファクトリー - 理化学研究所　仁科加速器研究センター（日本）
**KSTAR - Korea Superconducting Tokamak Advanced Research （大韓民国）
**BSRF (Beijing Synchrotron Radiation Laboratory) and BEPC II (Beijing Electron Positron Collider II) - 高能物理研究所（中国）
* オーストラリア
**Australian Synchrotron （オーストラリア）
* ヨーロッパ
**ドイツ電子シンクロトロン (DESY) （ドイツ）http://www-kryo.desy.de/main/epics_main.html
**Diamond Light Source - ラザフォード・アップルトン研究所 （イングランド）
**Swiss Light Source - ポールシェラー研究所 （スイス）
**Berlin Electron Synchrotron (BESSY II) （ドイツ）
* 北アメリカ
**Advanced Light Source - ローレンス・バークレー国立研究所 （アメリカ合衆国）
**Advanced Photon Source - アルゴンヌ国立研究所 （アメリカ合衆国）
**Canadian Light Source Synchrotron - サスカチュワン大学 （カナダ）
**フェルミ国立加速器研究所 （アメリカ合衆国）
**LIGO - カリフォルニア工科大学、マサチューセッツ工科大学 （アメリカ合衆国）
**Los Alamos Neutron Science Center (LANSCE) - ロスアラモス国立研究所 （アメリカ合衆国）
**National Superconducting Cyclotron Laboratory - ミシガン州立大学 （アメリカ合衆国）
**National Synchrotron Light Source - ブルックヘブン国立研究所 （アメリカ合衆国）
**Spallation Neutron Source - オークリッジ国立研究所 （アメリカ合衆国）
**Stanford Synchrotron Radiation Laboratory - スタンフォード大学 （アメリカ合衆国）
***Stanford Linear Accelerator (SLAC)
**TJNAF - Thomas Jefferson National Accelerator Facility （アメリカ合衆国）
**TRIUMF - ブリティッシュコロンビア大学 （カナダ）
**W・M・ケック天文台 （アメリカ合衆国）http://www2.keck.hawaii.edu/realpublic/epics/

## 外部リンク
*EPICS website
*Epics-controls 
*EPICS website Canada