EPICS Database Operations

Ned Arnold
May 1996

Table of Contents


Definitions

DATABASE

RECORD

RECORD TYPE

SCANNED (PROCESSED)


Basic Concepts


IOC Internals


Database Record Types by Category

INPUTS ALGORITHMS OUTPUTS
Analog Input Calculation Analog Output
Binary Input PID Binary Output
Muli-bit Binary Input Signal Select Multi-bit Binary Output
Digitized Analog Input Data Compression Stepper Motor
State Subroutine Timing Signal
String Input Fanout Permissive
Long Input Histogram String Output
Pulse Counter Long Output
Pulse Train
Pulse Delay


Analog Input Record

struct aiRecord  {
/* start of record common fields*/ char name[28]; /* Record Name */ char desc[28]; /* Descriptor */ unsigned short scan; /* Scan Mechanism */ unsigned short pini; /* Process at iocInit */ short phas; /* Scan Phase */ short evnt; /* Event Number */ struct link sdis; /* Scanning Disable */ unsigned short dtyp; /* Device Type */ short disv; /* Disable Value */ short disa; /* Disable */ unsigned char disp; /* Disable putField */ unsigned char proc; /* Force Processing */ FAST_LOCK mlok; /* Monitor fastlock */ LIST mlis; /* Monitor List */ unsigned short stat; /* Alarm Status */ unsigned short sevr; /* Alarm Severity */ unsigned short nsta; /* New Alarm Status */ unsigned short nsev; /* New Alarm Severity */ char p001[4]; /* Created Pad */ TS_STAMP time; /* Time */ short lset; /* Lock Set */ unsigned char lcnt; /* Lock Count */ unsigned char pact; /* Record active */ caddr_t spvt; /* Scan Private */ caddr_t rset; /* Address of RSET */ struct dset *dset; /* DSET address */ caddr_t dpvt; /* Device Private */ unsigned char tpro; /* Trace Processing */ unsigned char udf; /* Undefined */ unsigned short prio; /* Scheduling Priority */ struct link flnk; /* Forward Process Link */ /* start of ai specific fields */ double val; /* Current EGU Value */ struct link inp; /* Input Specification */ short prec; /* Display Precision */ unsigned short linr; /* Linearization */ float eguf; /* Engineer Units Full */ float egul; /* Engineer Units Low */ char egu[16]; /* Engineering Units */ float hopr; /* High Operating Range */ float lopr; /* Low Operating Range */ float aoff; /* Adjustment Offset */ float aslo; /* Adjustment Slope */ float smoo; /* Smoothing */ float hihi; /* Hihi Alarm Limit */ float lolo; /* Lolo Alarm Limit */ float high; /* High Alarm Limit */ float low; /* Low Alarm Limit */ unsigned short hhsv; /* Hihi Severity */ unsigned short llsv; /* Lolo Severity */ unsigned short hsv; /* High Severity */ unsigned short lsv; /* Low Severity */ double hyst; /* Alarm Deadband */ double adel; /* Archive Deadband */ double mdel; /* Monitor Deadband */ double lalm; /* Last Value Alarmed */ double alst; /* Last Value Archived */ double mlst; /* Last Val Monitored */ double eslo; /* Rawto EGU Slope */ long roff; /* Raw Offset */ caddr_t pbrk; /* Ptrto brkTable */ short init; /* Initialized? */ short lbrk; /* LastBreak Point */ long rval; /* Current Raw Value */ long oraw; /* Previous Raw Value */ };

Record Scanning

SCANNING MECHANISMS :

SCAN DISABLE


Links

Records can be 'LINKED' together to create more complex functions or algorithms.

Links between records may represent ...

Examples of fields in a record where links may be used:


Calculating "Rate of Change" of an Input


Slow Periodic Scan with Fast Change Response


Continuous Calculation with Operator Inhibit


Simulation Mode


Maximize Severity


Password Protection


Automatic Shutdown


Programmable Attenuator


Quick Prototyping with "Standard EPICS"