k.f, jul.19.1999. k.f, jul.21.1999.
新しい種類の制御通信装置 (Hardware) が追加された場合には、 この Device support の追加が必要になる。 標準で使用可能な EPICS の Device support は限られている (米国製のものが多い)ので、Mailing-list 等で探してみて見つからなかったら、 Device support を追加する必要がある。
ちなみに、Record support については、 制御対象が大規模、または複雑でない場合は、 標準の Record support に追加をしなくても、 制御系を構築することができると思われる。 もちろん、新しい機能を求めたり、効率を考える場合にはこの限りではない。
% 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 % makemake の間に Error Message が出力された場合には、 その Message に従って問題を修正し、make を繰り返す。
make によって、Device support code は Compile されて、 他の IOC の code とともに iocCore という File になり、 $top/bin/pcore750 に置かれる。
% cd $top/exampleApp/DbdbExample1.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 % makemake によって、 Database は展開されて、$top/db に置かれる。
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 を繰り返す。
...