|Developer(s)||Free software community|
|Initial release||January 19, 1994|
|Stable release||3.14.11 / August 28, 2009|
|License||EPICS Open License|
The Experimental Physics and Industrial Control System (EPICS) is a software environment used to develop and implement distributed control systems to operate devices such as particle accelerators, telescopes and other large experiments. EPICS also provides SCADA capabilities. The tool is designed to help develop systems which often feature large numbers of networked computers providing control and feedback.
EPICS uses client/server and publish/subscribe techniques to communicate between the various computers. One set of computers (the servers or input/output controllers), collect experiment and control data in real-time using the measurement instruments attached to it. This information is given to another set of computers (the clients) using the Channel Access (CA) network protocol. CA is a high bandwidth networking protocol, which is well suited to soft real-time applications such as scientific experiments.
Look and feel
EPICS interfaces to the real world with IOCs (Input Output Controllers) . These are either stock-standard PCs, VME, or MicroTCA standard embedded system processors that manage a variety of "plug and play" modules (GPIB, RS-232, IP Carrier etc.) which interface to control system instruments (oscilloscopes, network analyzers) and devices (motors, thermocouples, switches, etc.). Some instruments also can come with EPICS already embedded within them, like certain Oscilloscopes . The IOC holds and runs a database of 'records' which represent either devices or aspects of the devices to be controlled. IOC software used for hard-real-time normally use RTEMS or VxWorks, though work has been ongoing in porting to other systems. Soft real-time IOC software sometimes runs on Linux or Microsoft Windows based machines.
Other computers on the network can interact with the IOC via the concept of channels. For example, take a particle accelerator with shutters between sectors. There would typically be several channels corresponding to a shutter: an output channel to activate shutter motion; an input channel to see the status of the shutter (e.g. shut, open, moving, etc.); and, probably some additional analog input channels representing temperatures and pressures on each side of the shutter. Channel names are typically in the form EQUIPMENT:SIGNALNAME (e.g. ACCELERATOR_RING:TEMP_PROBE_4, although they can be much less verbose to save time).
Most operations are driven directly from a standalone GUI package such as EDM (extensible display manager) or MEDM (Motif/EDM). These allow creation of GUI screens with dials, gauges, text boxes, simple animations, etc. Newer control systems and GUI interfaces such as CSS/BOY are being investigated.
However it is not just GUI software which can interact with EPICS: any software which can speak the CA protocol can get and put values of records. For example on the EPICS website there are several extension packages which allow CA support in things like MATLAB, LabVIEW, Perl, Python, Tcl, ActiveX, etc. Hence it is easy to do things like make scripts which can activate EPICS controlled equipment.
There are different types of records available in EPICS. Here are some common types. Note that in addition to the other records not mentioned here, it is possible to create your own record type to interact with a device.
Each record has various fields in it, which are used for various tasks. AI and AO Analog Input and Output records can obviously store an analog value, and are typically used for things like set-points, temperatures, pressure, flow rates, etc. A limited amount of conversion to and from raw device data is available natively in the record (typically scaling and offsetting, but not advanced conversion like two's complement or logarithmic). BI and BO Binary Input and Output records are generally used for commands and statuses to and from equipment. Calc and Calcout These two records can access other records and perform a calculation based on their values. (E.g. calculate the efficiency of a motor by a function of the current and voltage input and output, and converting to a percentage for the operator to read). Stepper Motor Control of a stepper motor. Allows settings of things like accelerations and velocities, as well as position.
Records in EPICS must have a designated scan time, otherwise they are automatically set as passive. A passive record will never process (unless its PROC field is written to). Mostly records are set to process on a periodic scan (such every 0.1 second).
Alternately records may be set to process only on events.
Facilities using EPICS
A partial list of facilities using EPICS:
- Berliner Elektronenspeicherring-Gesellschaft für Synchrotronstrahlung (BESSY II) - Helmholtz-Zentrum Berlin (Germany)
- Deutsches Elektronen Synchrotron (DESY) (Germany)
- Diamond Light Source - Rutherford Appleton Laboratory (England)
- International Thermonuclear Experimental Reactor (ITER) (France)
- Laboratori Nazionali di Legnaro (Italy) 
- S-DALINAC - Technische Universität Darmstadt (Germany)
- Swiss Light Source - Paul Scherrer Institut (Switzerland)
- GSI/FAIR (Germany)
- IFMIF - International Fusion Materials Irradiation Facility (Japan, European Union, United States, and Russia)
- North America
- Advanced Light Source - Lawrence Berkeley National Laboratory (United States)
- Advanced Photon Source - Argonne National Laboratory (United States)
- Apache Point Observatory (United States)
- Canadian Light Source - Saskatoon, Saskatchewan (Canada)
- Canadian Neutron Beam Centre - Chalk River Laboratories (Canada)
- FNAL - Fermi National Accelerator Laboratory (United States)
- Gemini Observatory (United States)
- W. M. Keck Observatory (United States) 
- Laser Interferometer Gravitational-Wave Observatory (LIGO) (United States)
- Los Alamos Neutron Science Center - Los Alamos National Laboratory (United States)
- National Spherical Torus Experiment - Princeton Plasma Physics Laboratory (United States)
- National Spherical Torus Experiment Upgrade - Princeton Plasma Physics Laboratory (United States)
- National Superconducting Cyclotron Laboratory - Michigan State University (United States)
- National Synchrotron Light Source - Brookhaven National Laboratory (United States)
- Spallation Neutron Source - Oak Ridge National Laboratory (United States)
- Stanford Synchrotron Radiation Laboratory - Stanford University (United States)
- Linac Coherent Light Source - SLAC National Accelerator Laboratory (United States)
- TJNAF - Thomas Jefferson National Accelerator Facility (United States)
- TRIUMF - Located on the campus of the University of British Columbia (Canada)
- South America
- General sites
- Asian users
- European users
- North American users
- Apache Point Observatory
- Gemini Observatory
- KECK Observatory
- Canadian Light Source (CLS)
- Jefferson Lab
- KECK Observatory
- Lawrence Berkeley National Laboratory
- Los Alamos Neutron Science Center (LANSCE)
- The National Superconducting Cyclotron Lab (NSCL)
- Spallation Neutron Source (SNS)
- Stanford Linear Accelerator (SLAC)
- Applications/Embedded EPICS