wiki:epics/install/epics_base

EPICS Base install

ディレクトリ構造

今回は、インストール先を /opt/epics 以下とする。

[epics@myvm1 ~]$ su -

[root@myvm1 ~]# cd /opt
[root@myvm1 opt]# mkdir epics
[root@myvm1 opt]# chown epics:epics epics

全体の方針(appとかcssディレクトリは当面必要ない)

/opt
└─ epics
      ├─ R314.12.3
      │    ├─ base           <--- base
      │    ├─ extensions     <--- extensions
      │    ├─ modules        <--- modules
      │    │      ├─ soft
      │    │      │    ├─ asyn
      │    │      │    ├─ seq
      │    │      │    ├─ stream
      │    │      │    └─ ......
      │    │      │
      │    │      └─ instruments
      │    │            ├─ xxx
      │    │            └─ ......
      │    │      
      │    │      
      │    └── etc            <--- 環境設定など
      │
      ├─ app                    <--- 各グループ用の運転用アプリケーション
      │    ├── CO
      │    ├── LLRF
      │    ├── VAC
      │    └── ....
      │
      ├─ css
      │    ├── download
      │    └── linux-x86
      │
      └── arc                    <--- ダウンロードしてきたファイル置き場

ディレクトリを作成し、ダウンロードしたファイルをarcに置いておく.

[epics@myvm1 ~]$ cd /opt/epics/
[epics@myvm1 epics]$ ls
[epics@myvm1 epics]$ mkdir R314.12.3
[epics@myvm1 epics]$ mkdir arc
[epics@myvm1 epics]$ cd arc
[epics@myvm1 arc]$ wget http://www.aps.anl.gov/epics/download/base/baseR3.14.12.3.tar.gz
[epics@myvm1 ~]$ cd /opt/epics/R314.12.3
[epics@myvm1 R314.12.3]$ gzip -dc ../arc/baseR3.14.12.3.tar.gz | tar xvf -
[epics@myvm1 R314.12.3]$ mv base-3.14.12.3 base

環境変数の設定。

[epics@myvm1 base]$ setenv EPICS_HOST_ARCH linux-x86
[epics@myvm1 base]$ setenv LANG C

makeかける(本当はconfigure/以下のディレクトリを参照して、サイト依存の定義ファイルを適宜書き換える必要があるのだが、とりあえずVM上で使う分には全てデフォルトのままでmake一発でも問題ない....だろう)

[epics@myvm1 base]$ pwd
/opt/epics/R314.12.3/base
[epics@myvm1 base]$ setenv LANG C
[epics@myvm1 base]$ make |& tee log_make

エラーが出ずに終了すればOK。足りないライブラリ等があればyumで適宜インストールする。

環境変数については .cshrc に書いておく。pathを通して、caget, camonitor など動くことを確認。

[epics@myvm1 base]$ vi ~/.cshrc

setenv EPICS_HOST_ARCH linux-x86
set path=(/opt/epics/R314.12.3/base/bin/${EPICS_HOST_ARCH} /opt/epics/R314.12.3/extensions/bin/${EPICS_HOST_ARCH} $path)

application 作成して動作確認

homeディレクトリ以下にテスト用のアプリケーション(Soft IOC) を作成して動作テスト。

[epics@myvm1 ~]$ mkdir app
[epics@myvm1 ~]$ cd app/
[epics@myvm1 ~/app]$ mkdir example
[epics@myvm1 ~/app]$ cd example

[epics@myvm1 example]$ makeBaseApp.pl -l     <--- テンプレート一覧表示
Valid application types are:
        support
        ioc
        caServer
        example
        caClient
Valid iocBoot types are:
        ioc
        example

[epics@myvm1 ~/app]$ makeBaseApp.pl -t example example      <---- example テンプレートを使って、exampleという名前のappを作成
[epics@myvm1 ~/app]$ makeBaseApp.pl -i -t example example   <---- iocBootディレクトリ作成
Using target architecture linux-x86 (only one available)
The following applications are available:
    example
What application should the IOC(s) boot?
The default uses the IOC's name, even if not listed above.
Application name?
[epics@myvm1 example]$


[epics@myvm1 example]$ ls
Makefile  configure  exampleApp  iocBoot
[epics@myvm1 example]$ make
.......
[epics@myvm1 example]$ ls
Makefile  bin  configure  db  dbd  exampleApp  include  iocBoot  lib

[epics@myvm1 example]$ cd iocBoot/iocexample/
[epics@myvm1 iocexample]$ chmod +x st.cmd
[epics@myvm1 iocexample]$ ./st.cmd
#!../../bin/linux-x86/example
## You may have to change example to something else
## everywhere it appears in this file
< envPaths
epicsEnvSet("ARCH","linux-x86")
epicsEnvSet("IOC","iocexample")
epicsEnvSet("TOP","/home/epics/app/example")
epicsEnvSet("EPICS_BASE","/opt/epics/R314.12.3/base")
cd /home/epics/app/example
## Register all support components
dbLoadDatabase "dbd/example.dbd"
example_registerRecordDeviceDriver pdbbase
## Load record instances
dbLoadTemplate "db/userHost.substitutions"
dbLoadRecords "db/dbSubExample.db", "user=epicsHost"
## Set this to see messages from mySub
#var mySubDebug 1
## Run this to trace the stages of iocInit
#traceIocInit
cd /home/epics/app/example/iocBoot/iocexample
iocInit
Starting iocInit
############################################################################
## EPICS R3.14.12.3 $Date: Mon 2012-12-17 14:11:47 -0600$
## EPICS Base built May  9 2013
############################################################################
iocRun: All initialization complete
## Start any sequence programs
#seq sncExample, "user=epicsHost"
epics> dbl
epicsHost:ai1
epicsHost:ai2
epicsHost:ai3
epicsHost:aiExample
epicsHost:aiExample1
epicsHost:aiExample2
epicsHost:aiExample3
epicsHost:aSubExample
epicsHost:calc1
epicsHost:calc2
epicsHost:calc3
epicsHost:calcExample
epicsHost:calcExample1
epicsHost:calcExample2
epicsHost:calcExample3
epicsHost:compressExample
epicsHost:subExample
epicsHost:xxxExample
epics>

別の端末を開いて、camonitorで値が取れることを確認。

[epics@myvm1 ~]$ camonitor epicsHost:ai1
epicsHost:ai1                  2013-05-09 15:46:32.849534 0 LOLO MAJOR
epicsHost:ai1                  2013-05-09 15:46:33.850045 1 LOLO MAJOR
epicsHost:ai1                  2013-05-09 15:46:34.850436 2 LOLO MAJOR
epicsHost:ai1                  2013-05-09 15:46:35.850790 3 LOW MINOR
epicsHost:ai1                  2013-05-09 15:46:36.851606 4 LOW MINOR

excasで動作確認

こっちが先か?

[epics@myvm1 ~]$ excas

[epics@myvm1 example]$ camonitor jane
jane                           2013-05-09 15:50:58.817616 0.160158
jane                           2013-05-09 15:50:59.729124 0.0654289
jane                           2013-05-09 15:50:59.824466 0.0727615
jane                           2013-05-09 15:50:59.920104 0.00726627
jane                           2013-05-09 15:51:00.015853 0.0968468
jane                           2013-05-09 15:51:00.111367 0.0201175
jane                           2013-05-09 15:51:00.207458 0.100361
jane                           2013-05-09 15:51:00.303285 0.0551737
Last modified 6 years ago Last modified on 05/10/13 23:57:55