EPICS
EPICS Seminar 2009, RRCAT, Indor Masanori Satoh, KEK Linac, Jan. 2009.
Masanori Satoh/ KEK,Jan. 27-30, 2009
for EPICS seminar at RRCAT, Indore
Database Configuration toolsText editor and VDCT
w/ hands-on
(*) Many parts are quoted from Dr. N. Yamamoto’s lecture material.
EPICS
EPICS Seminar 2009, RRCAT, Indor Masanori Satoh, KEK Linac, Jan. 2009.
Management of Database• Database = *.db file (Record instances)• Text file• There are many ways to edit *.db file• Text editor (most simple way): vi, emacs, etc• VDCT: java application w/ GUI(KEKB Linac Control G.)
• Old tools: DCT, GDCT, CAPFAST (KEKB Control G.)
• Automatic *.db file generation is also available if you need. (RDB, etc)
EPICS
EPICS Seminar 2009, RRCAT, Indor Masanori Satoh, KEK Linac, Jan. 2009.
Management of Database(cont’d)
• *.db file:• When an IOC start up, an iocsh read the database file.• dbLoadDatabase => Load *.dbd file• dbLoadRecords => Load *.db file• dbLoadTemplate => Load *.substitutions file
Example: …./iocBoot/iocxxx/st.cmd#!../../bin/linux-x86/example< envPathscd ${TOP}## Register all support componentsdbLoadDatabase "dbd/example.dbd"example_registerRecordDeviceDriver pdbbase## Load record instancesdbLoadTemplate "db/userHost.substitutions"dbLoadRecords "db/dbExample.db","user=myHost"
cd ${TOP}/iocBoot/${IOC}iocInit()
EPICS
EPICS Seminar 2009, RRCAT, Indor Masanori Satoh, KEK Linac, Jan. 2009.
Management of Database(cont’d)
•Example: envPaths file
epicsEnvSet("ARCH","win32-x86")epicsEnvSet("IOC","iocexample")epicsEnvSet("TOP","/home/tp/epics/epicsApp")epicsEnvSet("EPICS_BASE","/home/tp/epics/epicsApp/../base-3.14.10")
EPICS
EPICS Seminar 2009, RRCAT, Indor Masanori Satoh, KEK Linac, Jan. 2009.
Most Simple Record
• record(ai,”myAI:record”){}•Record type : ai (Analogue Input)•Record name: “myAI:record”
•If you do not define the field values, a record will be generated by the default values.
EPICS
EPICS Seminar 2009, RRCAT, Indor Masanori Satoh, KEK Linac, Jan. 2009.
Record Type
•ai/ ao: Analogue input/ output•bi/ bo: Binary input/ oputput•mbbi/ mbbo: Multi-bit binary input/ output•calc/ calcout: calculation•waveform: waveform•fanout: fanout•…•…•…
EPICS
EPICS Seminar 2009, RRCAT, Indor Masanori Satoh, KEK Linac, Jan. 2009.
Simple Record
record(ai, “myAIRecord”){field(DESC, “sample record”) field(SCAN, “1 second”)field(DTYP, “Soft”)field(VAL, “0.1”) field(INP, “myCalcRecod PP MS”)}
•All record types have DESC, SCAN,DTYP, VAL, etc
EPICS
EPICS Seminar 2009, RRCAT, Indor Masanori Satoh, KEK Linac, Jan. 2009.
Simple Record (cont’d)
field(DESC, “sample record”) # Record Descriptionfield(SCAN, “1 second”)
# SCAN: Record Process Timing# Periodic/IO Intr/Event/Soft
field(DTYP, “Soft”) # DTYPE: Device Type
field(VAL, “0.1”)# VAL: Initial Value
field(INP, “myCalcRecod PP MS”)# INP: Data source# depends on DTYP
EPICS
EPICS Seminar 2009, RRCAT, Indor Masanori Satoh, KEK Linac, Jan. 2009.
What’s VDCT :Visual Database Configuration Tool
•It began as a project funded by the Swiss Light Source developed by Cosylab (http://www.cosylab.com).•Recent development has been funded by the APS, Diamond and the SNS. The code development is being done by Cosylab. (open source license)
•Visual Tool for database configuration• Java–based application: It’s executable on many environments. (Linux, Windows, etc )
• Useful tools w/ GUI.•Easy to manage the complex database file.
EPICS
EPICS Seminar 2009, RRCAT, Indor Masanori Satoh, KEK Linac, Jan. 2009.
VDCT GUI Example
EPICS
EPICS Seminar 2009, RRCAT, Indor Masanori Satoh, KEK Linac, Jan. 2009.
CapFast/EPICS
EPICS
EPICS Seminar 2009, RRCAT, Indor Masanori Satoh, KEK Linac, Jan. 2009.
<top>/xxxApp/src files EPICS Application name: myExample dbd/myExample.dbd:
Record/ Device definition by EPICS base Record types, device support options, choice menus, and
other configuration options are defined in Database Definition files (.dbd).
During the IOC boot process, one or more .dbd files are loaded.
EPICS
EPICS Seminar 2009, RRCAT, Indor Masanori Satoh, KEK Linac, Jan. 2009.
xxxApp/xxx/Db/Makefile Database should be described in Makefile
DB += xxx.db After type “make”, xxx.db will be copied to <top>/db.
For many same type of devices, it is convenient for you to use template and substitution files.
Templatefile : yyy.templaterecord(ai,”$(USER):aiExample$(NO)”){… }
Corresponding substitution : yyy.substitutionsfile yyy.template {{USER=“mrk”,NO=“1”}{USER=“mrk”,NO=“2”}}
EPICS
EPICS Seminar 2009, RRCAT, Indor Masanori Satoh, KEK Linac, Jan. 2009.
Template example userHost.substitutions# Example substitutions filefile "db/dbExample1.db" { { user = "masanoriHost" }}file db/dbExample2.db { pattern { user, no, scan } { "masanoriHost", 1, "1 second" } { "masanoriHost", 2, "2 second" } { "masanoriHost", 3, "5 second" }}
dbExample2.dbrecord(calc, "$(user):calcExample$(no)"){ field(DESC, "Counter No. $(no)") field(SCAN,"$(scan)")
field(FLNK, "$(user):aiExample$(no)")….
EPICS
EPICS Seminar 2009, RRCAT, Indor Masanori Satoh, KEK Linac, Jan. 2009.
iocBoot/iocxxx You can use the script “st.cmd” to start iocsh. The commands to load database:
dbLoadRecordsdbLoadTemplete
A vxWorks st.cmd file looks like
< cdCommands
cd appbinld < iocCore
ld < xxxLib
cd startup
dbLoadDatabase(“../../dbd/xxxApp.dbd”)
dbLoadRecords(“../../db/xxx.db”,”user=mrk”)
dbLoadRecords(“../../db/yyy.db”,”user=bob”)
dbLoadRecords(“../../db/zzz.db”,”user=JO”)
dbLoadTemplate(“../../db/templte_file_name”)
iocInit
EPICS
EPICS Seminar 2009, RRCAT, Indor Masanori Satoh, KEK Linac, Jan. 2009.
How to Get VDCT Go “cosylab Visual DCT Web page”
http://www.cosylab.com/solutions/particle_accelerators/VisualDCT/
Then download Latest Version: 2.5.1271 *.zip file VisualDCT.jar, VisualDCT-src-2.5.1271.jar, doc folder,
runScript
java -cp VisualDCT.jar -DEPICS_DB_INCLUDE_PATH=$EPICS_DB_INCLUDE_PATH com.cosylab.vdct.VisualDCT $*
In EPICS training CD, you can find it. /opt/epics/extensions/src/VDCT/2.5.1271
EPICS
EPICS Seminar 2009, RRCAT, Indor Masanori Satoh, KEK Linac, Jan. 2009.
Getting started:*.db file configuration w/ VDCT
•To Start up VDCT• You can use runScript/opt/epics/extensions/src/VDCT/2.5.1271• *.dbd file in xxxApp/dbd directoory
(or use vdct xxxApp/dbd/xxxApp.dbd)
EPICS
EPICS Seminar 2009, RRCAT, Indor Masanori Satoh, KEK Linac, Jan. 2009.
VDCT Command Option
• Options:
• --dbd-file • if this command is followed by the name of a .dbd file, the .dbd file is loaded before database is generated
• --enable-global-macros • enables global macro evaluation
• --disable-global-macros• disable global macro evaluation
• --enable-capfast • enable production of hierarhical names like CapFast
• --disable-capfast• disable production of hierarhical names like CapFast
EPICS
EPICS Seminar 2009, RRCAT, Indor Masanori Satoh, KEK Linac, Jan. 2009.
VDCT Environment Variables
-DVDCT_DIR=<path> VDCT_DIR: Default working directory
-DVDCT_CONFIG_DIR=<path> VDCT_CONFIG_DIR: Default working directory for plugin
-DEPICS_DB_INCLUDE_PATH=<path> EPICS_DB_INCLUDE_PATH: Database directory
e.g.): java -cp VisualDCT.jar com.cosylab.vdct.VisualDCT -DVDCT_CONFIG_DIR=/users/devl/config/vdct test.dbd test.db
EPICS
EPICS Seminar 2009, RRCAT, Indor Masanori Satoh, KEK Linac, Jan. 2009.
Example:Main Window of Visual DCT
EPICS
EPICS Seminar 2009, RRCAT, Indor Masanori Satoh, KEK Linac, Jan. 2009.
Example:Keyboard shortcuts
Zoom In Shift + Right Out Shift + Left Selection Shift + Space
Move Up Ctrl + Up Down Ctrl + Down Left Ctrl + Left Right Ctrl + Right
EPICS
EPICS Seminar 2009, RRCAT, Indor Masanori Satoh, KEK Linac, Jan. 2009.
Example:Record creation
On workspace, click right button Select “new records…”
Or, Double click right button
EPICS
EPICS Seminar 2009, RRCAT, Indor Masanori Satoh, KEK Linac, Jan. 2009.
Example:Record creation (cont’d)
Select the Record type
Define the Record name e.g.) 「 $(user):ai 」 If name already exists it will report it
EPICS
EPICS Seminar 2009, RRCAT, Indor Masanori Satoh, KEK Linac, Jan. 2009.
Example:Select Multiple Records
Way to select multiple records Left button : Select first record Ctrl +Left button : Select Multiple records Drag left button : Select Multiple records
EPICS
EPICS Seminar 2009, RRCAT, Indor Masanori Satoh, KEK Linac, Jan. 2009.
Example:Move Record
Move record Select record Drag left button and move to any location.
EPICS
EPICS Seminar 2009, RRCAT, Indor Masanori Satoh, KEK Linac, Jan. 2009.
Example:Move Multiple Record
Move Multiple Record Select mutiple records Drag left button and move to …
EPICS
EPICS Seminar 2009, RRCAT, Indor Masanori Satoh, KEK Linac, Jan. 2009.
Example: Link (FLNK)
EPICS
EPICS Seminar 2009, RRCAT, Indor Masanori Satoh, KEK Linac, Jan. 2009.
Example: Link (FLNK)
EPICS
EPICS Seminar 2009, RRCAT, Indor Masanori Satoh, KEK Linac, Jan. 2009.
Example: Link (INLINK)
EPICS
EPICS Seminar 2009, RRCAT, Indor Masanori Satoh, KEK Linac, Jan. 2009.
Example: Alarm Level You can define the Field related to alarm
level. HIHI, HIGH, LOW, LOLO, e.g.)
field(HIHI, "8")
field(HIGH, "6")
field(LOW, "4")
field(LOLO, "2")
field(HHSV, "MAJOR")
field(HSV, "MINOR")
field(LSV, "MINOR")
field(LLSV, "MAJOR")
e.g.) http://www.aps.anl.gov/epics/extensions/alh/index.php
EPICS
EPICS Seminar 2009, RRCAT, Indor Masanori Satoh, KEK Linac, Jan. 2009.
Example: Edit the Field Variables Inspector Windows
Show/Edit Record Field Setting Double click Active Double click speed can be adjusted:
”View -> settings... ->Visual” menu
Object combo box Show record name You can change the selected record.
Property table Show/ Edit: Field name and value Select display order
(Group/ ア Alphabetical/DBD definition Order ) Label: ”Value” and ”Name” are reversed!!!
Comment text area Comment for Record
Status bar Simple description for field functionality
EPICS
EPICS Seminar 2009, RRCAT, Indor Masanori Satoh, KEK Linac, Jan. 2009.
EPICS
EPICS Seminar 2009, RRCAT, Indor Masanori Satoh, KEK Linac, Jan. 2009.
EPICS
EPICS Seminar 2009, RRCAT, Indor Masanori Satoh, KEK Linac, Jan. 2009.
Masanori Satoh/ KEK,Jan. 27-30, 2009
for EPICS seminar at RRCAT, Indore
Database Configuration toolsText editor and VDCT:
Hands-on Instructions
EPICS
EPICS Seminar 2009, RRCAT, Indor Masanori Satoh, KEK Linac, Jan. 2009.
Hands-on (0):Preparation for practice
Set environment variable: USER=Pcname export USER
(*) PCname: your own PC name
Build EPICS application: cd mkdir app cd app makeBaseApp.pl –t example myExample makeBaseApp.pl –i –t example myExample
EPICS
EPICS Seminar 2009, RRCAT, Indor Masanori Satoh, KEK Linac, Jan. 2009.
Hands-on (1)
Start VDCT cd /opt/epics/extensions/src/VDCT/2.5.1271 ./runScript Select dbd file xxx/app/dbd/myExample.dbd
Check the basic functionality Create a new Record Make the link
EPICS
EPICS Seminar 2009, RRCAT, Indor Masanori Satoh, KEK Linac, Jan. 2009.
Hands-on (2) Create two ai records and a calc record:
$(user):aitest1, $(user):aitest2, $(user):calctest1 Modify them so that $(user):aitest2 returns the value of
“2x+3x”. (x: value of $(user):aitest1). Save file as xxx/app/myExampleApp/Db/dbExample3.db At the same place (under Db directory), modify the Makefile so
as to add dbExample3.db. Modify the xxx/app/myExampleApp/Db/userHost.substitutions. e.g.) add the lines like
file "db/dbExample3.db"{ { user = “PCname"} (*) Pcname is your own PC
name.}
Type “make” under myExampleApp directory. Check app/db/*.db files (Can you find dbExample3.db?) Example of result:
caput PCname:aitest1 10 caget PCname:aitest2 50
EPICS
EPICS Seminar 2009, RRCAT, Indor Masanori Satoh, KEK Linac, Jan. 2009.
Hands-on (3) Create a record which counts up from 0 to
20, repeatedly, in dbExample3.db. Edit Alarm level
HIHI: 18 HIGH: 15 LOW: 5 LOLO: 2
Check it by “camonitor” command. Hints:
See dbExample1.db file.
EPICS
EPICS Seminar 2009, RRCAT, Indor Masanori Satoh, KEK Linac, Jan. 2009.
Hands-on (4) Try to create a Fibonacci progression
record in dbExample3.db. Fibonacci progression can be expressed
by:F0=0, F1=1, Fn+2=Fn+Fn+1
e.g.) 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, …
Hints: Use calc record, ai record
Top Related