Application作成; Socket I/O
KEITHLEY 2701を例に; EPICS R3.14.9での作業ログ(R3.14.12以降では不要の部分もあり)
作業ディレクトリ作成
pfrproc2:~ % mkdir /users/obina/epics/app/Keith2701 pfrproc2:~ % cd /users/obina/epics/app/Keith2701
テンプレートとしてiocを使用。
pfrproc2:Keith2701 % makeBaseApp.pl -t ioc keith2701
pfrproc2:Keith2701 % makeBaseApp.pl -i -t ioc keith2701
The following target architectures are available in base:
linux-x86
linux-x86_64
What architecture do you want to use? linux-x86_64
The following applications are available:
keith2701
What application should the IOC(s) boot?
The default uses the IOC's name, even if not listed above.
Application name?
pfrproc2:Keith2701 % vi configure/RELEASE SNCSEQ=$(EPICS_BASE)/../modules/soft/seq/2.0.11 ASYN=$(EPICS_BASE)/../modules/soft/asyn/4-11 STREAM=$(EPICS_BASE)/../modules/soft/stream/2-5
この段階でエラーが出ないかどうか確認
pfrproc2:Keith2701 % make
問題無ければ、いちど全て削除する
pfrproc2:Keith2701 % make distclean
srcディレクトリで作業
pfrproc2:Keith2701 % cd keith2701App/src/
dbdファイル作成(Socket I/Oのみならば、Serial...とvxi11...の2行は不要だが、ついでに書いてしまう)
pfrproc2:src % vi K2701.dbd registrar(drvAsynIPPortRegisterCommands) registrar(drvAsynSerialPortRegisterCommands) registrar(vxi11RegisterCommands)
Makefile編集; 順序に注意。stream.dbdより前にaai,aaoを追加すること。(R3.14.12では不要になる)
pfrproc2:src % vi Makefile keith2701_DBD += base.dbd keith2701_DBD += aaiRecord.dbd keith2701_DBD += aaoRecord.dbd keith2701_DBD += asyn.dbd keith2701_DBD += stream.dbd keith2701_DBD += K2701.dbd keith2701_LIBS += asyn keith2701_LIBS += stream
プロトコルファイル作成
pfrproc2:src % cd ../Db/
pfrproc2:Db % vi K2701.proto
Terminator = CR LF;
#
getIDN {
out "*IDN?"; in "%39c";
}
Dbファイル作成
pfrproc2:Db % vi test.db
record(stringin, "obina:idn")
{
field(DESC, "get IDN")
field(DTYP, "stream")
field(INP, "@K2701.proto getidn PS1")
}
同じディレクトリのMakefileに
DB += test.db
を追加
application top で makeをかける
pfrproc2:Db % cd ../.. pfrproc2:Keith2701 % make
startup script編集
pfrproc2:Keith2701 % cd iocBoot/iockeith2701
pfrproc2:iockeith2701 % vi st.cmd
dbLoadRecords("db/test.db")
epicsEnvSet("STREAM_PROTOCOL_PATH", ".:../../keith2701App/Db")
drvAsynIPPortConfigure ("PS1", "172.28.8.244:1394")
pfrproc2:iockeith2701 % chmod +x st.cmd
pfrproc2:iockeith2701 % ./st.cmd
epics> dbpf obina:idn.PROC 1
DBR_UCHAR: 1 0x1
epics> 2012/05/09 00:58:24.682 PS1 obina:idn: 16 bytes surplus input "0912,A09 /A02 "
2012/05/09 00:58:24.682 PS1 obina:idn: after 40 bytes "... INC.,MODEL 2701,111"
stringinは40文字までだが、Keithleyが返してくる文字列が長いのでエラーが出るが気にしない。
eepics> dbpr obina:idn
ASG: DESC: get IDN DISA: 0 DISP: 0
DISV: 1 NAME: obina:idn SEVR: INVALID STAT: CALC
SVAL: TPRO: 0
VAL: KEITHLEY INSTRUMENTS INC.,MODEL 2701,11
Last modified
13 years ago
Last modified on 06/05/12 22:23:10
Note:
See TracWiki
for help on using the wiki.
