EPICS Database II Ned D Arnold APS 1999Ph
EPICS Database II Ned D. Arnold APS 1999/Ph 514: EPICS Database II 1
The Record Reference Manual u u EPICS Database Concepts (good review) Fields common to all records (covered earlier) Fields common to many records (covered earlier) Record Types – provides a description of the record processing routines for each record type. 1999/Ph 514: EPICS Database II 2
Input Records u Analog in u u Multiple bit, sixteen states, assign input value for each state, assign strings to each state, assign alarm level to each state, simulation mode Multi-bit binary in Direct u u Single bit, two states, assign strings to each state, alarm on either state or change of state, simulation mode Multi-bit binary in u u Read analog value, convert to engineering units, four alarm levels, simulation mode Binary in u u EPICS Read an unsigned short and map each bit to a field (16 BI records in one) String in u 40 character (max) ascii string, simulation mode 1999/Ph 514: EPICS Database II 3
Input Records (cont. . ) u Long in u u Long integer, four alarm levels, simulation mode Pulse counter u u EPICS Written to support a Mizar 8310 timing module Waveform u Configurable data type and array length (16, 000 bytes max for CA) 1999/Ph 514: EPICS Database II 4
Algorithms/Control Records u Calc u u 12 input links, user specified “calc expression” (algebraic, trig, relational, Boolean, Logical, “? ”), four alarm levels Examples: u u (A-B)*C ((A<<2)&B)|C (A+B)<(C+D)? E: F+L+10 Calcout u u u EPICS Same as CALC with a conditional output link, separate output CALC expression, output delay, and output event Options : "Every Time”, "On Change", "When Zero", "When Non-zero", "Transition To Zero", "Transition To Non-zero" PID u Proportional/Integral/Derivative Control 1999/Ph 514: EPICS Database II 5
Algorithms/Control Records (cont. . ) u Select u u u 12 input links, user provided subroutine, four alarm levels Fanout u u Input link can be scalar or array Algorithms include N to 1 compression (highest, lowest, or average), circular buffer of scalar input Subroutine u u 12 input links, four select options (specified, highest, lowest, median), four alarm levels Compress u u EPICS Forward links to six other records Dfanout u Writes a single source of data to eight output links 1999/Ph 514: EPICS Database II 6
Algorithms/Control Records (cont. . ) u Sequence u u Posts a “soft” event which may trigger other records to process, simulation mode Scan u u Ten “Input link to Output link” pairs with a specified delay between link execution. Subsets of the ten pairs can be executed by specifying a mask or a specific link pair (Select options include ALL, SPECIFIED, MASK). Event u u EPICS Four “positioners”, fifteen “detectors”. A scan steps through values of the positioners and records the detector values at each point. All arrays are accumulated within the record and posted when the scan is complete Sub. Array u Extracts a sub-array from a waveform 1999/Ph 514: EPICS Database II 7
Output Records u Analog out u u Single bit, two states, assign strings to each state, alarm on either state or change of state, closed_loop mode, momentary ‘HIGH’, INVALID alarm action, simulation mode Multi-bit binary out u u Write analog value, convert from engineering units, four alarm levels, closed_loop mode, drive limits, output rate-of-change limit, INVALID alarm action, simulation mode Binary out u u EPICS Multiple bit, sixteen states, assign output value for each state, assign strings to each state, assign alarm level to each state, closed_loop mode, INVALID alarm action simulation mode Multi-bit binary out direct u 16 settable bit fields that get written as a short integer to the hardware, closed_loop mode, INVALID alarm action simulation mode 1999/Ph 514: EPICS Database II 8
Output Records (cont. . ) u Stepper motor u u Written to support a Mizar 8310 timing module Long out u u Written to support a Mizar 8310 timing module Pulse Train u u Position control, retry, speed, ramps, etc Pulse delay u u EPICS Write long integer value, four alarm levels, closed_loop mode, INVALID alarm action, simulation mode String out u Write a character string (40 max), closed_loop mode, INVALID alarm action, simulation mode 1999/Ph 514: EPICS Database II 9
Examples of Custom Records u RF Amplitude Measurements u u Four voltage inputs, numerous calibration constants, X-Y-I outputs, waveforms for each input Multi-Channel Analyzer record u u Sample time, measurement in watts and db, waveform acquired through sweeping sample time Beam Position Monitor record u u EPICS Controls and acquires data from a multichannel analyzer (MCA). Currently, there are 3 supported multichannel analyzers. Many others that are site-specific 1999/Ph 514: EPICS Database II 10
Which record is right for … u “operator entered” soft parameters u u u AO has DRVH, DRVL, OROC, closed loop MBBO provides enumerated options which can be converted to constants (DTYP = Raw Soft Channel) Multiple output actions u u EPICS Sequence record can have a different data source for each output link vs. the dfanout record which fanouts a single source to multiple links Different output actions based on an operator selection u u CALCOUT records that conditionally process sequence records MBBO (Soft Raw Channel) forward linked to a single sequence record in “masked” mode. Mask is provided in MBBO for each state. 1999/Ph 514: EPICS Database II 11
Defining the Database u How does an IOC know what record types and device support options are available ? u u EPICS Record types, device support options, enumerated menus, and other configuration options are defined in “database definition files” (. dbd) During the IOC booting process, one or more. dbd files are loaded. dbd files are created on the workstation to include the desired information for that IOC. How does an IOC know about record instances (the user’s database) ? u u u Record instances are describe in “database files” (. db) During the IOC booting process, one or more. db files are loaded. db files are created on the workstation to include the desired information for that IOC. 1999/Ph 514: EPICS Database II 12
Database File Formats u EPICS A typical database definition file (. dbd) menu(menu. Priority) { choice(menu. Priority. LOW, "LOW") choice(menu. Priority. MEDIUM, "MEDIUM") choice(menu. Priority. HIGH, "HIGH") } menu(menu. Scan) { choice(menu. Scan. Passive, "Passive") choice(menu. Scan. Event, "Event") choice(menu. Scan. I_O_Intr, "I/O Intr") choice(menu. Scan 10_second, "10 second") choice(menu. Scan 5_second, "5 second") choice(menu. Scan 2_second, "2 second") choice(menu. Scan 1_second, "1 second") choice(menu. Scan_5_second, ". 5 second") choice(menu. Scan_2_second, ". 2 second") choice(menu. Scan_1_second, ". 1 second") } device(ai, CONSTANT, dev. Ai. Soft. Raw, "Raw Soft Channel") device(ai, BITBUS_IO, dev. Ai. IObug, "Bitbus Device") device(ao, CONSTANT, dev. Ao. Soft. Raw, "Raw Soft Channel") device(ao, VME_IO, dev. Ao. At 5 Vxi, "VXI-AT 5 -AO") device(bi, VME_IO, dev. Bi. Avme 9440, "AVME 9440 I") device(bi, AB_IO, dev. Bi. Ab, "AB-Binary Input") driver(drv. Vxi) driver(drv. Mxi) driver(drv. Gpib) driver(drv. Bit. Bus) 1999/Ph 514: EPICS Database II recordtype(ai) { field(NAME, DBF_STRING) { prompt("Record Name") special(SPC_NOMOD) size(29) } field(DESC, DBF_STRING) { prompt("Descriptor") promptgroup(GUI_COMMON) size(29) } field(ASG, DBF_STRING) { prompt("Access Security Group") promptgroup(GUI_COMMON) special(SPC_AS) size(29) } field(SCAN, DBF_MENU) { prompt("Scan Mechanism") promptgroup(GUI_SCAN) special(SPC_SCAN) menu(menu. Scan) interest(1) } … recordtype(ao) { … recordtype(bi) { … recordtype(bo) { … recordtype(calc) {. . . 13
Database File Formats u EPICS A typical database file (. db) record(bo, "$(user): gun. On. C") { field(DESC, "Controls e-gun") field(DTYP, "Soft Channel") field(ZNAM, "Beam Off") field(ONAM, "Beam On") } record(ao, "$(user): cathode. Current. C") { field(DESC, "set cathode current") field(DTYP, "Raw Soft Channel") field(SCAN, "1 second") field(OROC, ". 5") field(PREC, "2") field(EGU, "Amps") field(DRVH, "20") field(DRVL, "0") field(HOPR, "20") field(LOPR, "0") } 1999/Ph 514: EPICS Database II record(calc, "$(user): ramp. M") { field(CALC, "A>6. 27? 0: A+. 1") field(SCAN, "1 second") field(INPA, "$(user): ramp. M. VAL NPP NMS") } record(calc, "$(user): cathode. Temp. M") { field(DESC, "Measured Temp") field(SCAN, "1 second") field(CALC, "C+(A*7)+(SIN(B)*3. 5)") field(INPA, "$(user): cathode. Current. C. OVAL NPP NMS") field(INPB, "$(user): ramp. M. VAL NPP NMS") field(INPC, "70") field(EGU, "deg. F") field(PREC, "1") field(HOPR, "200") field(LOPR, "") field(HIHI, "180") field(LOLO, "130") field(HIGH, "160") field(LOW, "140") field(HHSV, "MAJOR") field(HSV, "MINOR") field(LLSV, "MAJOR") field(LSV, "MINOR") } 14
Loading Database Files into the IOC u EPICS Part of a typical startup script (st. cmd) db. Load. Database(". . /dbd/linac. App. dbd") db. Load. Records(". . /db/xx. Linac. Sim. db", "user=studnt 1") ioc. Init u u u /* starts ioc software */ One or more database definition files (. dbd) must be loaded first. Any record type specified in the database files must have been defined in the definition file Macros (variables) within the database files (e. g. $(user) ) can be specified at boot time. This allows the same database to be loaded with different names or channel assignments. 1999/Ph 514: EPICS Database II 15
Creating Database Files u Since the database file is a simple ascii file, it can be generated by numerous applications … as long as the syntax is correct. u u Text editor Script Relational Database Tool EPICS-aware Database Configuration Tools u u u EPICS CAPFAST (a schematic entry application) GDCT JDCT An EPICS-aware tool will read the. dbd file (library provided) and provide menu selections of enumerated fields. It may also detect database errors prior to the boot process A graphical tool is helpful to document and support complex databases 1999/Ph 514: EPICS Database II 16
Steps to Creating and Loading a New Database File u u Create the database file in an appropriate Db directory Edit the Makefile. Host so this. db file is managed properly gnumake Edit the IOC’s startup script (st. cmd) to load the new database u u EPICS db. Load. Records(______) Reboot the IOC 1999/Ph 514: EPICS Database II 17
JDCT u u u EPICS Start jdct (usually in a Db directory) Open one or more. dbd files (usually in the directory ‘. . /dbd’) to define available record types, menus, available device options, etc) Create, copy, edit record instances Save the. db file ‘gnumake’ to install the. db into another directory u You must modify the Makefile. Host each time you add a new database file 1999/Ph 514: EPICS Database II 18
Database Examples EPICS Calculating “Rate-of-Change” of an Input A/D Card AI Record Ion Gauge CALC Record. NPP . INP . VAL . SCAN = Passive . PP . INPA. VAL. INPB. SCAN = 1 second. CALC = A-B INPA fetches data that is 1 second old because it does not request processing of the AI record. INPB fetches current data because it requests the AI record to process. The subtraction of these two values reflects the ‘rate of change’ (difference/sec) of the pressure reading. * The direction of the arrows indicates where a link points to, not necessarily the direction of the data flow. 1999/Ph 514: EPICS Database II 19
Database Examples EPICS Slow Periodic Scan with Fast Change Response FANOUT Record. SCAN = 5 second. LNK 1. LNK 2 AI Record. SCAN = Passive. INP A/D D/A Card AO Record. SCAN = Passive. FLNK. DISV = 1. OUT. SDIS AI Record BI Record. VAL . SCAN = Passive. INP . ZNAM = Normal. ONAM = Inhibit Programmable Power Supply AO Record. SCAN = Passive. FLNK. DISV = 1. OUT. SDIS AI records get processed every 5 seconds AND when the associated AO record is changed. This provides immediate response to a change even though the desired scan rate is very slow. Changes to the power supply settings are inhibited by the BI record, which could represent a Local/Remote switch. 1999/Ph 514: EPICS Database II 20
Database Examples EPICS Simulation Mode AI Record. INP. SIML AO Record A/D D/A Card Programmable Power Supply . VAL. SIML . OUT . VAL (Simulation Mode Switch) When in simulation mode, the AO record does not call device support and the AI record fetches its input from the AO record. 1999/Ph 514: EPICS Database II 21
Database Examples EPICS Maximize Severity BI Record. INP Input Card Interlock Chassis . VAL . ZSV = MAJOR. OSV = NO_ALRM Chassis On = 1 BI Record Temp Trip = 1 . SDIS Flow Trip = 1 . MS . INP. DISV = 2. ZSV = NO_ALARM. OSV = MAJOR BI Record. SDIS . MS . INP. DISV = 2. ZSV = NO_ALARM. OSV = MAJOR If chassis is powered off, Temp Trip and Flow Trip indicate Normal. Force these PVs into an alarm state by specifying. SDIS with. MS (maximize severity) to the Chassis On record. Set. DISV (disable value) to 2 so processing will never be disabled. 1999/Ph 514: EPICS Database II 22
Database Examples EPICS Different Actions Based on Operator Selection record(mbbo, "$(user): PS: Control") { field(DTYP, "Raw Soft Channel") field(FLNK, "$(user): PS: Control. SQ. VAL PP NMS") field(ZRVL, ” 0 x 3") field(ONVL, ” 0 x 5") field(TWVL, "0 xc") field(ZRST, "Off") field(ONST, "On)") field(TWST, "Set @ Default") } record(seq, "$(user): PS: Control. SQ") { field(SELM, "Mask") field(SELL, "$(user): PS: Control. RVAL NPP NMS") field(DLY 1, "0") field(DOL 1, "0") field(LNK 1, "$(user): PS: set. Current. VAL PP NMS") field(DLY 2, "2") field(DOL 2, "0") field(LNK 2, "$(user): PS: pwr. Control. VAL PP NMS") field(DLY 3, "0") field(DOL 3, "1") field(LNK 3, "$(user): PS: pwr. Control. VAL PP NMS") field(DLY 4, "1") field(DOL 4, "3. 75") field(LNK 4, "$(user): PS: set. Current. VAL PP NMS) } Different links in the sequence record are executed for each selection of the mbbo. This allows much functionality to be specified in only two records. 1999/Ph 514: EPICS Database II 23
Database Examples EPICS Automatic Shutdown on Logout Invisible widget on medm display that monitors BI record SUB Record*. MLIS BI Record . INPA . VAL SEQ Record. SDIS. DISV = 1 if (inpa. mlis == NULL) sub. val = 0; else sub. val = 1; . LNK 1. LNK 2. LNK 3. LNK 4 If no monitor exists on the BI record (i. e. the operator has logged out), . MLIS will be NULL. The subroutine record. VAL field will become 0, which will cause the sequence record to process. * A subroutine record is required because the. MLIS field is defined as a NO_ACCESS field (for links). 1999/Ph 514: EPICS Database II 24
Database Examples EPICS Quick Prototyping with Standard Records Left BPM Button Right BPM Button Top BPM Button Bottom BPM Button AI Record. INP . VAL CALC Record. INPA. INPB X position . INPA. INPB. INPC. INPD Intensity AI Record. INP . VAL CALC Record . INPA Y position . INPB Custom Record Definition Left BPM Button . INPL Right BPM Button . INPR Top BPM Button . INPT Bottom BPM Button . INPB 1999/Ph 514: EPICS Database II . XPOS BPM Record . YPOS - Average inputs - Input history - Standard deviation. . INT. VAL 25
- Slides: 25