EPICS Overview
Marty Kraimer
May 1996
Table of Contents
- EPICS IS NOT THE CONTROL SYSTEM!!!
- EPICS is a collection of software tools and other components
- Application Developers use EPICS to create control system
- Tool Based
- Minimize Custom Coding
- Uniform Operator Interface
- Completely Distributed
- No Single Bottle-Neck
- Scales Nicely
- IOC is autonomous system
- Event Driven
- No Polling
- Quick Response
- High Performance
- Workstation (Sun4)
- >2000 screen updates per second
- Quick Display Call-up (goal of < 2 seconds)
- IOC (68040)
- Process >5000 records per second.
- OPI
- Hardware
- UNIX based Workstation (currently sun4)
- Software
- UNIX Operating System
- X Windows
- Motif Toolkit
- LAN
- Hardware
- Software
- TCP/IP Protocols via sockets
- IOC
- Hardware
- VME bus and crates
- Motorola 68020, 68040, 68060 (Power PC in future)
- Various VME/VXI modules: ADCs, DACs, Binary Input, Binary Output, etc.
- Allen Bradley Scanner (Most Allen Bradley I/O modules)
- GPIB devices
- BitBus devices
- Software (vxWorks)
- Real time kernel
- Extensive "Unix like" libraries
- OPI Tools
- Display Editor/Manager - Graphics tool monitor&control displays
- Database Configuration Tool
- State Sequence Compiler
- Alarm Handler
- Archiver
- BURT - Backup/Restore Tool
- Interfaces to Commercial Products (IDL,Wingz, Mathematica, etc)
- Programs, e.g. automatic beam tuning, can be interfaced via Channel Access
- LAN
- IOC
- Memory Resident Database
- Database Access
- Database Scanners
- Record Support
- Device Support
- Driver Support
- Sequencer (Finite State Machine)
- Custom Code
Network Transparent Access to IOC Databases
- Client/Server Model
- Clients
- UNIX, IOC, VMS, Windows NT (Some)
- Future: ?
- Servers
- A client can communicate with an arbitrary set of servers
- A server accepts connections from an arbitrary set of clients
- Supporting a new OS and/or CPU means porting client (relatively easy)
- Basic Functions
- Search - Locate process variables, Establish connections
- Get - Get value of process variable + extra info (alarm status, etc.)
- Put - Change value of process variable
- Add Event - Add change of state callback (alarm status, value change)
- Memory resident
- Records can be added/deleted only via a database configuration tool
- Some field values, e.g. links, can be modified only via DCT
- Most field values can be changed dynamically
- Multiple record types
- AI - Analog Input
- AO - Analog Output
- CALC - Calculation
. . . (Currently 27 supported record types)
- Each record type has fixed set of fields
- Common to all record types
- NAME - Unique identifier for record
- STAT - Alarm Status
- SEVR - Alarm Severity
. . .
- Record specific
- I/O values
- Links to other records
- High/Low Operating Ranges
- Alarm Limits (HIHI, HIGH, LOW, LOLO)
. . .
- Some combination of the following
- Read Inputs
- Analog Inputs
- Binary Inputs
- Fields from other database records
- Conversion
- None
- Linear
- Break Point Tables
- Write Outputs
- Analog Outputs
- Binary Outputs
- Fields in other database records
- Check for Alarms
- Trigger Monitors (Channel Access callbacks)
- Trigger processing of linked records
- Relatively easy to add new Record types
- Device Support (relatively easy to add new devices) hides hardware details
- Several different ADCs supported. All use same record support module
- Same for Analog Outputs, Binary I/O, Timers, etc.
- Device Drivers for complicated I/O interfaces
- Determines when a record is processed
- Event Scanning - Triggered by sequence program or some other program
- Periodic Scanning - Current rates vary from .1 secs to 10 secs
- I/O Event Scanning - Triggered by external interrupt, i.e. driver interrupt routine
- Passive - Triggered by other records being processed
- Autonomous device to control a subsystem
- OPI, via Channel Access, has easy access for control and monitoring
- Control algorithms can be implemented via scanning and record links
- Sequencer provides a general purpose software tool modeled as a finite state machine
- Other special purpose support can be added to an IOC
- Relatively easy to add new record and device support
- A single 68040 IOC can process >5000 records/sec
- Transparent LAN access from client to multiple servers
- Graphics Editor allows relatively easy creation of monitor&control displays
- Monitor&control displays can handle >2000 screen updates/sec
- Alarm Handler
- Archiver
- Other Applications can communicate via Channel Access