What is an EPICS database?

EPICS
EPICS データベース
(プロセス・データベース)とは?
Andrew Johnson
APS
2003/P571: What is an EPICS Database?
1
EPICS









目次
レコード
フィールドとフィールドのタイプ
レコード のスキャン
入出力レコードタイプ
ハードウェア サポート
レコードのリンク
レコードと同時に変更する
保護機構
アラーム、デッドバンド、シミュレーション、セキュリティ
2003/P571: What is an EPICS Database?
2
EPICS




データベース = レコード + リンク
レコード= フィールド + プロセス
EPICSに基づく制御システムは一台以上のIOC(Input Output
Controller)を含んでいる。
それぞれのIOCにはそのIOCがなすべきことを指定する一つ以
上のデータベースがロードされている。
データベースは様々なタイプのレコードの集合である。
レコードは以下の特徴をもつオブジェクトである。:





個々のレコード毎の独立な名前A unique name
レコード型(class)毎の振る舞い
制御可能な属性(フィールド)
関連したハードウェア I/O (device support)
他のレコードへのリンク
2003/P571: What is an EPICS Database?
3
EPICS

レコードは活動的である— レコードは仕事をすることができる
:








レコードの活動
他のレコードやハードウェアからデータを取り込む
計算を行う
値が許容された範囲にあるかどうかを確認し、必要ならアラームを発生
する。
他のレコードやハードウェアに値を書き込む
他のレコードをアクティブ(活性)にしたり、不活性にする。
ハードウェアからの信号を待つ(割り込み)
あるレコードが何をするかは、レコードの型とそのレコードの
フィールドの設定に依存する。
レコードが処理”process”されるまではどのような動作も行われ
ない。
2003/P571: What is an EPICS Database?
4
EPICS


レコード属性のデータ保存場所とレコードタイプ情報へのポイ
ンタ型からなるCの構造体
データベース中のレコード定義は次の情報を提供する




レコード名
レコード型
それぞれのフィールドの値
レコード型は次の情報を提供する。



どのようにレコードは実装さ
れているか?
すべてのフィールドの定義
レコードの動作を実装しているコード(RSET)
EPICS アプリケーション毎の要求に応じて新しいデータ型を追
加することができる。
2003/P571: What is an EPICS Database?
5
EPICS
2003/P571: What is an EPICS Database?
レコードのある表現
6
EPICS
レコードのグラフィカルな表現
2003/P571: What is an EPICS Database?
7
EPICS
レコードの別なグラフィカルの表現
アナログ出力レコードの CapFast 上での表現
(小シンボル)
2003/P571: What is an EPICS Database?
8
EPICS
IOCから見たレコード
アナログ出力レコードを定義する.dbファイルの全体
record(ao,"DemandTemp") {
field(DESC,"Temperature")
field(ASG,"")
field(SCAN,"Passive")
field(PINI,"NO")
field(PHAS,"0")
field(EVNT,"0")
field(DTYP,"VMIC 4100")
field(DISV,"1")
field(SDIS,"")
field(DISS,"NO_ALARM")
field(PRIO,"LOW")
field(FLNK,"")
field(OUT,"#C0 S0")
field(OROC,"0.0e+00")
field(DOL,"")
field(OMSL,"supervisory")
field(OIF,"Full")
field(PREC,"1")
field(LINR,"NO CONVERSION")
field(EGUF,"100")
field(EGUL,"0")
field(EGU,"Celcius")
field(DRVH,"100")
field(DRVL,"0")
field(HOPR,"80")
field(LOPR,"10")
field(HIHI,"0.0e+00")
field(LOLO,"0.0e+00")
field(HIGH,"0.0e+00")
field(LOW,"0.0e+00")
field(HHSV,"NO_ALARM")
field(LLSV,"NO_ALARM")
field(HSV,"NO_ALARM")
field(LSV,"NO_ALARM")
field(HYST,"0.0e+00")
field(ADEL,"0.0e+00")
field(MDEL,"0.0e+00")
field(SIOL,"")
field(SIML,"")
field(SIMS,"NO_ALARM")
field(IVOA,"Continue normally")
field(IVOV,"0.0e+00")
}
ここには設定が必要なフィールドだけが示されている。この他に実行
時にだけ使われるフィールドがある。
2003/P571: What is an EPICS Database?
9
EPICS

定義








フィールドの役割
何がレコードのプロセスを開始するか(周期的、外部割り込み、オペレ
ータ操作)
データ入出力の先
生のI/Oデータを制御量に変換する方法
アラームを報告するべき時を指定するリミット
レコードをモニタしているクライアントにたいしていつ値の変更の通知
を送るか。
処理アルゴリズム
その他そのレコードタイプで設定が必要なもの
実行時の値を保持する




入出力値
アラーム状態、重篤度、アックノレッジ
タイムスタンプの処理
その他内部的に利用されるデータ
2003/P571: What is an EPICS Database?
10
EPICS

フィールドの型
フィールドは以下のデータ型をとりうる

整数Integers



浮動小数点



いくつかの文字列から一つを選ぶ
内部的には短整数として保持される
リンク




max length 40 characters or less
メニュー選択


float or double
文字列


char, short or long
signed or unsigned
同じあるいは別のIOC上にある別のレコードへのリンク
ハードウェア・シグナルへのリンク (device support)
値の読み書きのために使われる
その他の内部的データ

外部から直接にはアクセス不能
2003/P571: What is an EPICS Database?
11
EPICS
すべてのレコードに共通のフィールド
設計時フィールド
NAME
DESC
ASG
SCAN
PHAS
PINI
PRIO
SDIS
DISV
DISS
FLNK
28 文字のユニークな名前
28 文字の記述
アクセス セキュリティ グループ
スキャン機能
スキャンの順位(phase)
初期化時のプロセス?
スケジューリング プライオリティ
スキャン禁止値入力リンク
スキャン禁止値
スキャン禁止時の重篤度
フォワード リンク
実行時フィールド
PROC
PACT
STAT
SEVR
TPRO
UDF
TIME
プロセスの強制
プロセス実行中フラグ
アラーム状態
アラーム重篤度
プロセスのトレース
値が未定義状態の時1に設定される。
最後にプロセスされた時間
2003/P571: What is an EPICS Database?
12
EPICS

SCAN フィールドは以下のメニュー選択枝から選ばれる。








周期的エベント — 0.1 seconds .. 10 seconds
I/O 割り込み (もしデバイスがサポートしていれば)
ソフトエベント — EVNT フィールド
受動的(Passive): 既定値
PHASフィールドに数値を指定することで、同一のスキャンのなかでの実行
順序を設定する。


レコードのスキャン
PHAS=0 のレコードが最初に「処理」され、
その後PHAS=1 , PHAS=2 と続く
PINI=YESのレコードはデータベースプロセスの起動時に一度「処理」され
る。
PRIOフィールドにはLow/Medium/Highのプライオリティをソフト・エベ
ントあるいはI/O割り込みで「処理」されるレコードで指定する。
レコードはPROCフィールドに任意の値が書き込まれた時、「処理」される
。
2003/P571: What is an EPICS Database?
13
EPICS
入力レコードのフィールド

ほとんどの入力レコードは次のフィールドをもつ:
INP
入力リンク:どこから値を読み込むか?
DTYP
デバイス・タイプ
RVAL
生の値
VAL
物理量・Engineering value
LOPR
下限値
HOPR
上限値

アナログI/Oレコードは次のフィールドをもつ:
LINR
ユニット変換指定
No conversion, Linear, breakpoint tables…
EGUL
EGUF
EGU
生の値の下限値に対応する物理量
生の値の上限値に対応する物理量
物理量の単位(文字列)
2003/P571: What is an EPICS Database?
14
EPICS




入力レコードの使用例:周期的入力
レコード名“Temperature”のアナログ入力レコード(AI)
値は Xycom XY566 ADC Card 0 Signal 0 から読み込む
0.1 秒毎に新しい値をHWから読み込む。
データは ADC の範囲からto 摂氏 0..120 に変換される。
2003/P571: What is an EPICS Database?
15
EPICS





割り込み入力
レコード名 “VentValve”のバイナリ入力(BI)レコード
データはAllen-Bradley TTL I/O Link 0, Adaptor 0, Card 3, Signal 5
み込む
PLCからの割り込み信号によって値が変わる度に読み込まれる。
0 = “Closed”, 1 = “Open”
から読
バルブが開いている(1)の時レコードのアラーム状態は重警報状態
(Major_Alarm)となる。
2003/P571: What is an EPICS Database?
16
EPICS
出力レコードのフィールド

ほとんどの出力レコードは次のフィールドをもつ:
出力リンク(値の出力先)
デバイスタイプ
物理量・制御量
生な出力値
出力値を持ってくる入力リンク(チャンネル)
出力モード選択
OUT
DTYP
VAL
RVAL
DOL
OMSL

Supervisory, Closed Loop
下限値
上限値
アナログ出力レコードは次のフィールドももつ。:
OROC
出力変化率:
OIF
増減(Incremental)か直接指定(Full)
OVAL
出力値
DRVH
出力上限値
DRVL
出力下限値
IVOA
不正出力時の動作指定
LOPR
HOPR

Continue Normal, Don’t Drive output, set output to IVOV
IVOV
不正出力時のデフォルト値
RBV
読み返し値
2003/P571: What is an EPICS Database?
17
EPICS



受動的出力
“Solenoid”という名前のバイナリ出力レコード(BO)
Xycom XY220 Digital output Card 2 Signal 12を制御
SCAN=Passive:レコードは次の場合に「処理」される




チャンネルアクセスによって.VALフィールドに値が書き込まれる。
別のレコードが .VALフィールドに値を書き込む
別のレコードからフォワードリンクされている。
(入力レコードでは)別のレコードがこのレコードの値を読み込んだと
き
2003/P571: What is an EPICS Database?
18
EPICS
リンク
リンクはフィールドの型一つで、以下のいずれかとなる
 Input link


Output link


データを読み出す
データを書き込む
Forward link

このレコードの処理が終わったときに処理されるレコードを指す
2003/P571: What is an EPICS Database?
19
EPICS

入力、出力リンクに指定できるのは…
定数:
0
3.1415926536
1.6e-19

ハードウェア・リンク


ハードウェアの入出力信号を選択。その形式は、デバイス・サポートに
依存している。
プロセス・バリアブル・リンク

レコードの名前を指定。それは次のいずれかの型のリンクとなる。


データベース・リンク
リンクに指定されたレコードは同じIOC上にある。
チャンネル・アクセス・リンク
リンクに指定されたレコードは別のIOC上にある。
2003/P571: What is an EPICS Database?
20
EPICS
ハードウェア・リンク
VME_IO
#Cn Sn @parm
Card, Signal
INST_IO
CAMAC_IO
@parm
#Bn Cn Nn An Fn @parm
Branch, Crate, Node, Address, Function
AB_IO
or
#Ln An Cn Sn @parm
#Ln Pn Cn Sn Fn @parm
Link, Adaptor, Card, Signal, Flag
GPIB_IO
#Ln An @parm
Link, Address
BITBUS_IO
#Ln Nn Pn Sn @parm
Link, Node, Port, Signal
BBGPIB_IO
#Ln Bn Gn @parm
Link, Bitbus Address, GPIB Address
VXI_IO
or
#Vn Cn Sn @parm
#Vn Sn @parm
Frame, Slot, Signal
2003/P571: What is an EPICS Database?
21
EPICS
データベース・リンク
いかのものを指定できる:

同じIOC上にあるレコードの名前
myDb:myRecord

フィールド名をさらに指定できる
.VAL

プロセス・パッシブ・フラグ
NPP
PP

(default)
(default)
重篤度最大化フラグ
NMS
MS
(default)
たとえば:
M1:current.RBV NPP MS
注:非同期処理デバイス・サポートをもつレコードからのPP指定のGet要求は新
しい値を返さないことに注意。
2003/P571: What is an EPICS Database?
22
EPICS





データベースリンクと同様に指定。
指令された名前のレコードは同じIOCに存在していない
他のIOCとCAプロトコルで通信する。
フィールド名を含んでいてもよい。(.VALが既定値)
PPリンクフラグは無視される。




入力リンクは常にNPP
出力リンクはしゅつりょくさきのフィールドのPP属性に依存
その他のCAと同じ振る舞いである。
MS リンクフラグは入力リンクに適用される。



チャンネル・アクセス・リンク
入力リンクは与えられたNMSやMSのフラグが効果を持つ
出力リンクは常にNMS
追加のフラグ
CA ローカルなリンクであってもCAリンクを使う。
CP 入力リンクでは、Camonitorエベントが発生する毎にこのレコードが処理される
。or input link, process this record on CA monitor event
CPP:
Cpのデータ読み出し:問題の切り分け
2003/P571: What is an EPICS Database?
23
EPICS
CA Links
DB Links
リンク・フラグのまとめ
Input Links
.PP or .NPP
.MS or .NMS
Output Links
.PP or .NPP
.MS or .NMS
Always .NPP
.MS or .NMS
.CA to force.
.CP to process this
record on change.
.CPP only process
if SCAN=Passive
.PP behavior of
destination field.
Always .NMS
.CA to force.
Pages 16 thru 23 of the IOC Application Developer’s Guide cover this topic.
2003/P571: What is an EPICS Database?
24
EPICS
デバイス・サポート

レコードは直接ハードウェアにアクセスするわけではない。

デバイス・サポート層が要求のあった場合に入出力動作を実行
する。

個々のデバイス・サポートは一つのレコード型に対する入出力
を提供する。
DTYP フィールドで使用するデバイス・サポートを指定する。
選択されたデバイス・サポートがリンク(INP or OUT field)に指
定するデバイスのアドレス指定の形式を規定する。



新しいデバイス・サポートの追加はレコードのソフトウェアの
変更を必要としない

デバイス・サポートは他のソフトウェア(ドライバ・サポート
)を呼び出してもよい。
2003/P571: What is an EPICS Database?
25
EPICS






同期I/O 対 非同期 I/O
EPICSの決まりでは、デバイスサポートが遅いデバイスの入出
力要求の完了を待つことを許さない。:スキャンのプロセス全
体を待たせてしまうので。
レジスタ・ベースの VMEカードは通常即座に応答を返す:同
期
同期デバイス・サポート呼び出し元に帰る前にすべての入出力
を完了する。
シリアルやI/Oバス装置はデータを返すまでに長い時間(>10ms)
を必要とする。:非同期
非同期デバイスサポートは呼び出し時にI/Oを開始し、それを
PACTをTrueにしたまま呼び出しもとに帰る。
結果が準備できると(CPU割り込み)デバイス・サポートはレ
コードのprocess関数を呼び出し、「処理」を終了させる。
2003/P571: What is an EPICS Database?
26
EPICS



ソフト・デバイス・サポート
入力および出力レコードはデバイス・サポートを通じてハード
ウェアI/Oを実行するように設計されている。
これらのレコードはソフト・デバイス・サポートを使うことで
、DBあるいはCAリンクを使うことで他のレコードにアクセス
することができる。
二つのタイプのソフト・デバイス・サポートが用意されている
:

Soft Channel


リンクを通じて VAL を読み書きする。データの変換は行わない。
Raw Soft Channel


Inputs
 RVAL をリンクを通じて読み込む。
 RVALをVALに変換(record-type specific)
Outputs
 VAL を RVALに変換 (record-type specific)
 RVAL を出力リンクに書き込み
2003/P571: What is an EPICS Database?
27
EPICS





フォワード・リンク
フォワード・リンクは通常同じIOCのレコードを参照するデー
タベースリンクである。
CAリンクも可能であるが、リンク先のレコードのPROCフィー
ルドをリンク先として指定する必要がある。
フラグはない(PP, NMS etc)
リンク先のレコードは、「処理」実行されるために
SCAN = Passive
を指定されている必要がある。
値は渡さない、単に「処理」を開始するだけである。
2003/P571: What is an EPICS Database?
28
EPICS
2003/P571: What is an EPICS Database?
「処理」の連鎖
29
EPICS
どのレコードは決して処理されないか
2003/P571: What is an EPICS Database?
30
EPICS
どのレコードは2回処理されるか?
2003/P571: What is an EPICS Database?
31
EPICS



すべてのレコードは PACTと名付けらら他boolean 実行時フィ
ールド をもっている (Process Active)
PACT レコードのリンクの無限ループを壊す効果を持つ
レコードの「処理」の開始直後にPACTは”true”に設定される
。



PACT フィールド
そのレコード中のリンクが値の読み書きに使われている間はPACTが
trueに設定される。
PACT はレコードのI/O動作が終了しフォワードリンクの「処理」が終わ
ったらFalseに設定される。
PACTがTrueであるとどのPPリンクもそのレコードの「処理」
を開始することができない。


入力レコードは現在の値を使う
出力レコードは自分自身の値を単に出力する。d
2003/P571: What is an EPICS Database?
32
EPICS
2003/P571: What is an EPICS Database?
何が起きるか?
33
EPICS





レコードを「処理」から守る
条件によっては個々のレコードの「処理」を禁止することがで
きれば便利である。
レコード特有の「処理」ルーチンが呼び出される前に、SDISフ
ィールドに指定された入力リンクから値が読み出され、 DISA
フィールドに収めれらる。
もしDISA=DISVであればレコードは「処理」されない。:レコ
ードのprocess関数は呼び出されない。
「処理」が禁止されたレコードはDISSフィールドに指定された
重篤度状態になる。
「処理」が禁止されたレコードのFLNKフィールドはトリガさ
れない。
2003/P571: What is an EPICS Database?
34
EPICS
レコードの処理時間はどのように割当られ
るか?
いくつのIOCタスクが使われる:
 コールバック(3 priorities) — I/O Interrupt
 scanEvent — Soft Event
 scanPeriod — Periodic



スキャンの周期ごとに異なるタスクが割り当てられる
早いスキャンタスクほど高い実行割当率が実現できる。Faster scan rates
are given a higher task priority (if supported by OS)
Caのタスクは レコード「処理」のタスクよりも低いプライオ
リティをもつ。
2003/P571: What is an EPICS Database?
35
EPICS
ここでは何が悪いか
2003/P571: What is an EPICS Database?
36
EPICS
ロック・セット

一つのレコードが二つのスキャン・タスクから同時に「処理」
されることを防ぐ

ロック・セットは以下の条件で関係付けられる一組のレコード
である。




出力データベース・リンク
フォーワード・リンク
PPあるいはMSフラグをもつ入力リンク
配列
ロック・セットはIOCの起動時に自動的に決定される。
次の条件があればロック・セットを分割することができる。
 リンクがCAリンクである。CAフラグを用いる。
 NPP NMSのデータベースリンク

2003/P571: What is an EPICS Database?
37
EPICS

アラーム
すべてのレコードは次のフィールドをもつ
SEVR
アラームの重篤度
NONE, MINOR, MAJOR, INVALID
STAT
アラーム状態 (原因)
READ, WRITE, UDF, HIGH, LOW, STATE, COS, CALC, DISABLE, etc.




ほとんどの数値的なレコードは VALフィールドの値を HIHI,
HIGH, LOW および LOLO フィールドとVALフィールドの値が確
定した後に比較する。
HYST フィールドでアラームのチャタリングを防止する。
それぞれのアラーム・リミット(HIHI, HIGH, LOW, LOLO)に
たいして独立に重篤度(HHSV, HSV, LSV, LLSV)を指定できる。
離散的(バイナリ)レコードでは、特定の状態になったときあ
るいは、状態の変化時にアラーム状態となることができる。
(COS)
2003/P571: What is an EPICS Database?
38
EPICS
値の変化の通知: モニタ・デッドバンド
CAは数値レコードをモニタしているクライアントに
次の条件が成り立つとき、通知を送る。



VAL が次のフィールドに指定された値以上に変化したとき:
MDEL
Value monitors
ADEL
Archive monitors
アラームの状態が変化したとき
HYST
Alarm hysteresis
アナログ入力レコードでは入力ノイズの影響を軽減するために平滑化の
フィルタを適用することができる(SMOO)。
2003/P571: What is an EPICS Database?
39
EPICS
ブレークポイント・テーブル
35
Attenuation (db)
30
25
20
15
10
5
0
0
500
1000
1500
2000
2500
A/D Units




アナログ入力・出力レコードは非線形変換をRVAL<->VAL変換の際に使う
ことができる。
ブレークポイント・テーブルは与えられたテーブルから値を補間する。
ブレークポイント・テーブルを使うにはLINRフィールドにブレークポイン
ト・テーブルの名前を指定する。
ブレークポイント・テーブルの例 (in your .dbd file)
breaktable(attenuator1_1) {
504,
0
795,
1.25
909,
2.5
1012,
3.75
...
}
2003/P571: What is an EPICS Database?
40
EPICS

入出力レコードはしばしばハードウェア・インタフェースのシ
ミュレーションをサポートしている。
SIML
SIMM
SIOL
SIMS



シミュレーション
Simulation mode link
Simulation mode value
Simulation input link
Simulation alarm severity
レコードはデバイスサポートを使う前に、SIMLリンクから
SIMMの値を読み込む。
もしSIMM=YESであれば, デバイス・サポートは無視される;レ
コードはSIOLリンクを入出力先として使う。
シミュレーション・モード中(SIMM=YES) にはアラームの重篤
度はSIMSフィールドに指定された値に固定される。
2003/P571: What is an EPICS Database?
41
EPICS

ネットワークを用いた制御システムはセキュリティルールを適
用できる機能を持たねばならない。



誰が、何時、どこで、何をできるのか?
EPICSではセキュリティは CAサーバ(通常はIOC)で守られて
いる。
レコードはASGフィールドにしてされたアクセス・セキュリテ
ィ・グループに割り当てられる。


アクセス・セキュリティ
ASGフィールドに指定がなければDEFAULTセキュリティ・グループが
選択される。
それぞれのグループのルールによって、CAクライアントがそ
のグループに所属するレコードの読み・書きの権限を持ってい
るかどうかを



クライアントの IP address、ユーザ
フィールドのアクセス・セキュリティ・レベル
データベースから読み出した値
に基づいて決定する。
2003/P571: What is an EPICS Database?
42
EPICS


アクセス・セキュリティ設定ファイル
セキュリティルールはアクセス・セキュリティ設定ファイルか
らロードされる。
example:
UAG(users) {user1, user2}
HAG(hosts) {host1, host2}
ASG(DEFAULT) {
RULE(1, READ)
RULE(1, WRITE) {
UAG(users)
HAG(hosts)
}
}


もしセキュリティ・設定ファイルがロードされなければセキュ
リティの機能は働かず、すべての要求が処理される。
アクセス・セキュリティ・設定ファイルの詳細についてはIOC
アプリケーション・デベロッパ・ガイドの第五章を参照せよ。
2003/P571: What is an EPICS Database?
43