25
実用EPICS入門 1 実用EPICS入門1 技術部専門研修 飛山真理 飛山真理 帯名崇

飛山真理 帯名崇 - KEKahfb1.kek.jp/epics/slides/EPICS-2007-1.pdfBM_DCCT:HOFF EPICSシステムを立ち上げてみよう • 配布た布したCD‐ROMでScientific Linux 4をboot

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 飛山真理 帯名崇 - KEKahfb1.kek.jp/epics/slides/EPICS-2007-1.pdfBM_DCCT:HOFF EPICSシステムを立ち上げてみよう • 配布た布したCD‐ROMでScientific Linux 4をboot

実用EPICS入門 1実用EPICS入門‐1技術部専門研修技術部専門研修

飛山真理飛山真理

帯名崇

Page 2: 飛山真理 帯名崇 - KEKahfb1.kek.jp/epics/slides/EPICS-2007-1.pdfBM_DCCT:HOFF EPICSシステムを立ち上げてみよう • 配布た布したCD‐ROMでScientific Linux 4をboot

EPICSとはEPICSとは

i l h i d d i l l• Experimental Physics and Industrial Control System

• EPICS is a set of Open Source software tools, libraries and applications developed pp pcollaboratively and used worldwide to create distributed soft real‐time control systems for yscientific instruments such as a particle accelerators, telescopes and other largeaccelerators, telescopes and other large scientific experiments.

Page 3: 飛山真理 帯名崇 - KEKahfb1.kek.jp/epics/slides/EPICS-2007-1.pdfBM_DCCT:HOFF EPICSシステムを立ち上げてみよう • 配布た布したCD‐ROMでScientific Linux 4をboot

KEK(加速器)ではKEK(加速器)では

部• KEKB(とLinacの一部)• PF‐ARPF AR

• PFリング

• J‐PARCで使われています。で使われています。

Page 4: 飛山真理 帯名崇 - KEKahfb1.kek.jp/epics/slides/EPICS-2007-1.pdfBM_DCCT:HOFF EPICSシステムを立ち上げてみよう • 配布た布したCD‐ROMでScientific Linux 4をboot

本コースの目標本コースの目標

何 た 機 があ た• 何かEPICSでコントロールしたい機器があった

とき、何を準備すればコントロールできるようき、何を準備すれ ン きるようになるかが分かる

自分で全部準備出来るようになるという意味では– 自分で全部準備出来るようになるという意味ではありません(そこまで行けばスゴイですけど)

ントロ ルの専門家とちゃんと会話が成立する– コントロールの専門家とちゃんと会話が成立する、自分のやりたいことを説明できるようになる、というレベルまで行けば合格ですうレベルまで行けば合格です

Page 5: 飛山真理 帯名崇 - KEKahfb1.kek.jp/epics/slides/EPICS-2007-1.pdfBM_DCCT:HOFF EPICSシステムを立ち上げてみよう • 配布た布したCD‐ROMでScientific Linux 4をboot

本コースの概要本コースの概要

• EPICSシステムの(表面的な)仕組みを理解する• EPICSシステムの(表面的な)仕組みを理解する– データベース、チャンネルアクセス、デバイスサポート、シーケンサな

どの言葉、実際の動作

EPICSのデ タベ スを自分で作れるように• EPICSのデータベースを自分で作れるように– Linux Soft IOC上のデータベースを作り、アクセスする– データのアーカイブ– EDM等で表示する

• 面倒なことはシーケンサに– EPICSシーケンサを作り、動作させるEPICSシ ケンサを作り、動作させる

• デバイスサポートを作ってみる– GP‐IB、Ethernet機器を制御するには

VME機器– VME機器

• 美しい表示– SAD、Python、Delphiでの表示

Page 6: 飛山真理 帯名崇 - KEKahfb1.kek.jp/epics/slides/EPICS-2007-1.pdfBM_DCCT:HOFF EPICSシステムを立ち上げてみよう • 配布た布したCD‐ROMでScientific Linux 4をboot

EPICSで制御している機器の例1EPICSで制御している機器の例1

なが る を• GP‐IBでつながっているDMM(KEKBのDCCTを読むDMM))

Page 7: 飛山真理 帯名崇 - KEKahfb1.kek.jp/epics/slides/EPICS-2007-1.pdfBM_DCCT:HOFF EPICSシステムを立ち上げてみよう • 配布た布したCD‐ROMでScientific Linux 4をboot

VME subrack

VME CPU Ethernet

(EPICS IOC)

GP‐IB interfaceGP‐IB

DMM

Cannel AccessHP34401A

アナログ電圧アナログ電圧

DCCT controller

Page 8: 飛山真理 帯名崇 - KEKahfb1.kek.jp/epics/slides/EPICS-2007-1.pdfBM_DCCT:HOFF EPICSシステムを立ち上げてみよう • 配布た布したCD‐ROMでScientific Linux 4をboot

DMM(HP34401A)ではDMM(HP34401A)では

グ電 を常 デジタ ズ• アナログ電圧入力を常にデジタイズ

• GP‐IBから読み出しコマンドが来たら、その値GP IBから読み出しコマンドが来たら、その値をGP‐IBを通して出力

READ? lf コマンドに対して 例えば– READ?<cr><lf>コマンドに対して、例えば1.02<cr><lf>という値を返す

Page 9: 飛山真理 帯名崇 - KEKahfb1.kek.jp/epics/slides/EPICS-2007-1.pdfBM_DCCT:HOFF EPICSシステムを立ち上げてみよう • 配布た布したCD‐ROMでScientific Linux 4をboot

VME CPUの上ではVME CPUの上では

が動 る• VxWorksの上でEPICSシステムが動いている

– HP34401A(GP‐IB)用device support( )用 pp

– device supportに対応する(ハードウエアに直接関係する)EPICSデータベース係する)EPICSデ タベ ス

• BMHDCCT:READという名前のaiレコード

その他の(ハ ドウエアに直接は関係しな– その他の(ハードウエアに直接は関係しない)EPICSデータベース

シ ケンサ– EPICSシーケンサ

Page 10: 飛山真理 帯名崇 - KEKahfb1.kek.jp/epics/slides/EPICS-2007-1.pdfBM_DCCT:HOFF EPICSシステムを立ち上げてみよう • 配布た布したCD‐ROMでScientific Linux 4をboot

ネットワーク上の他のデバイスからネットワーク上の他のデバイスから

l を通して デ タベ• EPICS cannel accessを通してEPICSデータベースの値を読む、書く– 他のEPICS IOC– チャンネルアーカイバに記録する

– 表示ソフトウエア(MEDM、Python、SADなどなど)

• EPICSデータベースにアクセスするのに必要なEPICSデ タベ スにアクセスするのに必要なのは、(基本的に)データベースの名前と種類だけだけ– どこにあるかは気にする必要はない

Page 11: 飛山真理 帯名崇 - KEKahfb1.kek.jp/epics/slides/EPICS-2007-1.pdfBM_DCCT:HOFF EPICSシステムを立ち上げてみよう • 配布た布したCD‐ROMでScientific Linux 4をboot

EPICS概念 13階層構成• 3階層構成

オペレータインターフェースOPI

オペレータX端末

チャンネルアクセス(CA)プロトコルによるネットワーク透過な通信

入出力コントローラIOCVME, PC等 IOC

機器によって様々な方式で接続

,

GPIBバス, CAMAC, アナログI/O

制御対象 加速器ハードウェア制御対象(電源、測定器等)

Page 12: 飛山真理 帯名崇 - KEKahfb1.kek.jp/epics/slides/EPICS-2007-1.pdfBM_DCCT:HOFF EPICSシステムを立ち上げてみよう • 配布た布したCD‐ROMでScientific Linux 4をboot

EPICS概念 2分散制御• 分散制御

OPI OPI OPI OPIOPI: オペレータインターフェース

Ethernet

CA CA

CA

IOCIOC IOC IOC IOC: 入出力コントローラ(Input/Output Controller)

電源 インターロック系測定器

チ ンネルアクセス(CA)プロト ルによる通信

各種ハードウェア

チャンネルアクセス(CA)プロトコルによる通信

ネットワーク透過:機器制御のための変数名(Process Variable)のみ知っていれば、ネットワーク上のどのIOCに存在するかは意識しなくて良い。

人間が制御するのみではなく、IOC間の通信もCAプロトコルによる通信

Page 13: 飛山真理 帯名崇 - KEKahfb1.kek.jp/epics/slides/EPICS-2007-1.pdfBM_DCCT:HOFF EPICSシステムを立ち上げてみよう • 配布た布したCD‐ROMでScientific Linux 4をboot

userの担当?部分userの担当?部分

デバ ポ を作る• HP34401A用のGP‐IBデバイスサポートを作る

– GP‐IB自体を使う仕組みは(コントロール専門家に自体を使う仕組みは( ン ル専門家よって)用意されている

• EPICSデータベースを作る• EPICSデ タベ スを作る

– ハードウエアに直接関係する部分、その他の部分(中間部分 最終部)分(中間部分、最終部)

• EPICS IOCにロードする

• (必要なら)表示、操作部を作る

Page 14: 飛山真理 帯名崇 - KEKahfb1.kek.jp/epics/slides/EPICS-2007-1.pdfBM_DCCT:HOFF EPICSシステムを立ち上げてみよう • 配布た布したCD‐ROMでScientific Linux 4をboot

中身は中身は

デバ ポ 抜粋• HP34401A GP‐IBデバイスサポート(抜粋)#define DSET_AI devAiHP34401AGpib#include <aiRecord.h>gDset DSET_AI = {6, {report, init_dev_sup, devGpibLib_initAi, NULL,

devGpibLib readAi, NULL, (DRVSUPFUN)&devSupParms,p _ , , ( ) p ,(DRVSUPFUN)devGpibLib_aiGpibWork,

(DRVSUPFUN)devGpibLib_aiGpibSrq}};/* CMMAND 2 read data *// CMMAND 2 read_data /{&DSET_AI, GPIBREAD, IB_Q_LOW, "READ?¥r¥n", "%lf¥r¥n", 0, 511,

NULL, 0, 0, NULL NULL 1 }L, NULL, -1 },

Page 15: 飛山真理 帯名崇 - KEKahfb1.kek.jp/epics/slides/EPICS-2007-1.pdfBM_DCCT:HOFF EPICSシステムを立ち上げてみよう • 配布た布したCD‐ROMでScientific Linux 4をboot

• EPICSデータベース(テキストファイル)record(ai,"BMHDCCT:READ") {

field(DESC,"analog input record")field(SCAN,"1 second")field(DTYP,"HP34401A")field(FLNK,"BM_DCCT:ch1.VAL")field(INP,"#L0 A8 @2")field(PREC,"5")}

Page 16: 飛山真理 帯名崇 - KEKahfb1.kek.jp/epics/slides/EPICS-2007-1.pdfBM_DCCT:HOFF EPICSシステムを立ち上げてみよう • 配布た布したCD‐ROMでScientific Linux 4をboot

• IOCスタートアップスクリプト(KEKB用)d "/ /t bi / i 68k/f db kA / /O f 64“cd "/users/tobiyama/epics_68k/feedbackApp/src/O.frc64“ld < iocCoreld < seqld < feedbackLibcd "/users/tobiyama/epics 68k/"cd /users/tobiyama/epics_68k/dbLoadDatabase("dbd/feedbackApp.dbd")cd "/users/tobiyama/epics_ppc/"dbLoadRecords("fbppcApp/Db/BM_DCCT2.db","user=tobiyama")dbLoadRecords("fbppcApp/Db/BMH_DCCT.db","user=tobiyama")dbLoadRecords("fbppcApp/Db/BML_DCCT.db","user=tobiyama“)nigpib_num_links = 1ht2992_num_cards = 0iocInit

&DCCTSTH6 20000seq &DCCTSTH6,20000seq &DCCTSTL6,20000dbpf "BMHDCCT:conf_set", "1"dbpf "BMLDCCT:conf_set", "1"dbpf "BMHDCCT:conf set2" "1"dbpf BMHDCCT:conf_set2 ,  1dbpf "BMLDCCT:conf_set2", "1"dbpf "BMHDCCT:conf_set3", "1"dbpf "BMLDCCT:conf_set3", "1“# output iocBootLog FilekekBootLogprintTime(60)

Page 17: 飛山真理 帯名崇 - KEKahfb1.kek.jp/epics/slides/EPICS-2007-1.pdfBM_DCCT:HOFF EPICSシステムを立ち上げてみよう • 配布た布したCD‐ROMでScientific Linux 4をboot

BMHDCCT:READというデータベースHP34401Aというdevice supportを通してDMMの値を1秒ごとに取得

FLINKでつながって、INPUTがBMHDCCT:READのEPICSレコード

データが更新されるたびに値を自動更新EPICSCannel Access

camonitorしているクライアント

Cannel Access

データが更新される(MDELフィールドで決まる閾値以上)と読みに行く

cagetするクライアント

cagetされた時点のデータを読む

Page 18: 飛山真理 帯名崇 - KEKahfb1.kek.jp/epics/slides/EPICS-2007-1.pdfBM_DCCT:HOFF EPICSシステムを立ち上げてみよう • 配布た布したCD‐ROMでScientific Linux 4をboot

実際使うレコードは実際使うレコードは

BMHDCCT f tBMHDCCT READ BMHDCCT:conf_setBMHDCCT:READ

BM_DCCT:ch1 BM_DCCT:CH1TRIG

EPICS シーケンサ

BM_DCCT:HZEROBM_DCCT:HR1OFFBM_DCCT:HR2OFF

BMHDCCT:CURRENTBMHDCCT:LIFE

色々なクライアントが値を見に来る

BM_DCCT:HR3OFFBM_DCCT:HR4OFFBM_DCCT:HR5OFFBM DCCT HOFF

BMHDCCT:RATE

BM_DCCT:HOFF

Page 19: 飛山真理 帯名崇 - KEKahfb1.kek.jp/epics/slides/EPICS-2007-1.pdfBM_DCCT:HOFF EPICSシステムを立ち上げてみよう • 配布た布したCD‐ROMでScientific Linux 4をboot

EPICSシステムを立ち上げてみようEPICSシステムを立ち上げてみよう

布 た を する• 配布したCD‐ROMでScientific Linux 4をboot upする

– usb bootが可能なら、usb‐memoryベースにすることで、もうち と操作性が快適 なるかもうちょっと操作性が快適になるかも

• sluserでログインします

• Linux操作をしてみましょう

– ターミナルを開く、閉じるタ ナ を開 、閉• ファイル操作(一覧、検索、rename、コピー、削除)

• ディレクトリの移動

– editorを開く、編集、保存(emacs操作)

Page 20: 飛山真理 帯名崇 - KEKahfb1.kek.jp/epics/slides/EPICS-2007-1.pdfBM_DCCT:HOFF EPICSシステムを立ち上げてみよう • 配布た布したCD‐ROMでScientific Linux 4をboot

EPICS関係ディレクトリを作るEPICS関係ディレクトリを作る

kd• mkdir epicsApp

• cd epicsApp

• makeBaseApp pl –t example trainmakeBaseApp.pl  t example train

• lsで見ると

Makefile configure trainApp

があるはずです。

• makeBaseApp.pl –i –t example train

Using target architecture linux x86 (only one available)Using target architecture linux‐x86 (only one available)

The following applications are available

train

What application should the IOC(s) boot?

The default uses the IOC’s name, even if not listed above.

Application name?  train

Page 21: 飛山真理 帯名崇 - KEKahfb1.kek.jp/epics/slides/EPICS-2007-1.pdfBM_DCCT:HOFF EPICSシステムを立ち上げてみよう • 配布た布したCD‐ROMでScientific Linux 4をboot

• lsでみると

Makefile configure trainApp iocBoot

が出来ているはずですが出来ているはずです。

• make

• cd iocboot/ioctrain

• chmod +x st cmd• chmod +x st.cmd

Page 22: 飛山真理 帯名崇 - KEKahfb1.kek.jp/epics/slides/EPICS-2007-1.pdfBM_DCCT:HOFF EPICSシステムを立ち上げてみよう • 配布た布したCD‐ROMでScientific Linux 4をboot

EPICS IOC shellを立ち上げるEPICS IOC shellを立ち上げる

タ• ターミナルから、epicsApp/iocBoot/ioctrainへ行く

• ./st.cmd

止めるときは l• 止めるときは、ctrl‐c

Page 23: 飛山真理 帯名崇 - KEKahfb1.kek.jp/epics/slides/EPICS-2007-1.pdfBM_DCCT:HOFF EPICSシステムを立ち上げてみよう • 配布た布したCD‐ROMでScientific Linux 4をboot

今日作ったデータをUSBメモリーに保存しましょうを 差 ます• usbメモリーをPCに差し込みます

• gnome menuの‐>Save Local Data<‐を実行gnome menuの >Save Local Data< を実行

• 次回立ち上げるとき、USBメモリーを差し込んだ状態でb しだ状態でbootし、

• boot:linux myconfig=scany g

とすると、ローカルに保存したファイルを復旧してくれる(これを設定しなくても USBメモリしてくれる(これを設定しなくても、USBメモリーがあればdefaultでscanしてくれる模様)

Page 24: 飛山真理 帯名崇 - KEKahfb1.kek.jp/epics/slides/EPICS-2007-1.pdfBM_DCCT:HOFF EPICSシステムを立ち上げてみよう • 配布た布したCD‐ROMでScientific Linux 4をboot

ICEをwindows managerにしている場合は

• terminalでsudo /usr/bin/save‐localdata/ / /

としますとします。

Page 25: 飛山真理 帯名崇 - KEKahfb1.kek.jp/epics/slides/EPICS-2007-1.pdfBM_DCCT:HOFF EPICSシステムを立ち上げてみよう • 配布た布したCD‐ROMでScientific Linux 4をboot

次回は次回は

実際 デ タベ を作• 実際にepicsソフトデータベースを作ってみて、操作してみる

– データベースの種類

データベース間の通信– データベース間の通信

• スライドのバックナンバーは

http://ahfb1.kek.jp/inside/epics

にあります。にあります。