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
© Copyright 2024 ExpyDoc