JHF-Linac での Epics application 開発の Second step

k.f, jul.19.1999. k.f, jul.21.1999.

  1. 新しい Device support code を作成してみる。
  2. Epics Device Record を作成してみる。
  3. Epics Device Support を試験してみる。 (以下では、csh または tcsh の使用を仮定している。他の shell を使用す る場合は適宜 command を置き換えること。 top は 1 で作成した試験用の directory で、username は user 名である。)

    [ Epics Device support を作成し使用する ]

    1-1 で用意した Application 作成用の Directory に Record Reference Manual を参考にしながら、 新しい Device support を作ってみる。

    新しい種類の制御通信装置 (Hardware) が追加された場合には、 この Device support の追加が必要になる。 標準で使用可能な EPICS の Device support は限られている (米国製のものが多い)ので、Mailing-list 等で探してみて見つからなかったら、 Device support を追加する必要がある。

    ちなみに、Record support については、 制御対象が大規模、または複雑でない場合は、 標準の Record support に追加をしなくても、 制御系を構築することができると思われる。 もちろん、新しい機能を求めたり、効率を考える場合にはこの限りではない。

    [ 1. Epics Device support code を作成する ]

    まず、Device support のための source code を作成する。
    % cd $top/exampleApp/src
    

    Device support の例を見ながら source code 、例えば、

    devXxNewDev.c
    
    を作成する。Header file を作成する場合には、 この directory ではなくて、 $top/include に、例えば、
    devXxNewDev.h
    
    を作成する。

    Device support の例は、同じ directory に devXxxSoft.c という例があり、 また、他の Device support の source code が $EPICS/base/src/dev 以下に多数ある。

    さらに、Makefile.Vx に

    LIBOBJS += devXxNewDev.o
    
    を追加し、 exampleInclude.dbd に、例えば
    device(xx,INST_IO,devXxNewDev,"New Device")
    
    を追加する。

    Device support code ができたら、make を行なってみる。

    % cd $top
    % make
    
    make の間に Error Message が出力された場合には、 その Message に従って問題を修正し、make を繰り返す。

    make によって、Device support code は Compile されて、 他の IOC の code とともに iocCore という File になり、 $top/bin/pcore750 に置かれる。

    [ 2. Epics Device Record を作成する ]

    Device support code ができたら、それを試験するための Record を作成する。
    % cd $top/exampleApp/Db
    
    dbExample1.db または dbExample2.template に新しい Record を追加し、 試験用の Database を作成する。

    これらの Database の source file は、 通常の Text editor で編集することもできるが、 例えば、dct2 (dct313) などを使用すると、 多少間違いを減らすことができる場合もある。 dct2 は例えば、

    dct313 $top/dbd/exampleApp.dbd dbExample1.db
    
    として起動し、"Save ... only non-default values" で結果を保存する。

    Database は別の File として作成することもできるが、その場合は、 この directory の Makefile.Host, と あとで出てくる $top/iocBoot/iocexample/st.cmd を追加修正する。 Device support code と database ができたら、IOC に load できるように、 make を行なう。

    % cd $top
    % make
    
    make によって、 Database は展開されて、$top/db に置かれる。

    [ 3. Epics Device Support を試験する ]

    これらの Device support code と Record database を、IOC に load する。 例えば、IOC の shell の prompt に対して (以下の $top は top の指す内容と、$user は user 名と置き換える)

    cd "$top/iocBoot/iocexample"
    < st.cmd
    
    または、
    cd "$top/iocBoot/iocexample"
    < cdCommands
    cd appbin
    ld < iocCore
    ld < seq
    ld < exampleLib
    cd startup
    dbLoadDatabase("../../dbd/exampleApp.dbd")
    dbLoadRecords("../../db/dbExample1.db","user=$user")
    dbLoadRecords("../../db/dbExample2.db")
    iocInit
    seq &snctest
    
    これらの操作の間に Error Message が出力された場合には、 その Message に従って問題を修正し、reboot と load を繰り返す。

    load に成功したら、caget/caput などを使って、Record の試験をしてみる。 思い通りに動作しなければ、問題を修正し、reboot と load を繰り返す。

    ...
    

    [ 参考資料 ]


    <kazuro.furukawa@kek.jp> , Jul.19.1999. - Jul.21.1999.