Introduction to EPICS


As defined by Argonne National Laboratory, Experimental Physics and Industrial Control System (EPICS) is a set of open source software tools, libraries, and applications developed collaboratively and used worldwide to create distributed soft real-time control systems for scientific instruments such as particle accelerators, telescopes and other large scientific experiments.

Table of Contents

  1. EPICS Background
  2. EPICS Implementation
  3. Using EPICS in LabVIEW
  4. Related Links

EPICS Background

In an effort to help standardize a network communication protocol for large scale scientific experiments, Los Alamos National Laboratory and Argonne National Laboratory collaborated to develop EPICS. Many scientific and industrial organizations worldwide use EPICS and a group of those organizations are charged with maintaining the EPICS standards, documentation and tools. This group of user organizations are also referred to as EPICS.

Large scale scientific applications often require hundreds of devices to communicate over a single network to form large distributed control systems. EPICS provides the standards and tools necessary to make this kind of communication possible. To view more information about EPICS or download the latest documentation and software tools, visit the Argonne National Labs website.

EPICS Implementation

EPICS applications typically produce large amounts of network traffic, thus the standard calls for a high bandwidth network protocol. EPICS utilizes the TCP/IP based Channel Access (CA) Network Protocol. Channel Access protocol is an application layer built on top of TCP/IP that allows many devices to communicate at high speeds on the same network. Channel Access protocol provides the level of speed, bandwidth and reliability necessary for EPICS applications.

EPICS also implements a client/server architecture. Channel Access Servers (CA Servers) can act as real world I/O points through the use of Input/Output Controllers (IOCs). CA Servers publish data to and read data from the network as an EPICS Process Variable (PV). In contrast, Channel Access Clients (CA Clients) monitor the network for updates to process variables. Examples of CA Clients include Human Machine Interfaces (HMI) and data analysis programs such as LabVIEW.

Figure 1: EPICS Network Block Diagram

Figure 1 highlights the standard EPICS network block diagram. The network is open to having a theoretically infinite number of clients and servers, though this is practically limited by network bandwidth and available IP addresses. All connected devices take turns communicating on the network at high speeds using Channel Access protocol.

Using EPICS in LabVIEW

Developers have the power to integrate LabVIEW with EPICS systems through the use of the LabVIEW Shared Variable Engine (SVE) and LabVIEW EPICS I/O Servers.

LabVIEW Shared Variable Engine

The SVE installs with National Instruments software and is supported on both PC and real-time operating systems. The SVE runs on a National Instruments proprietary protocol called NI-Publish Subscribe Protocol (NI-PSP). Using NI-PSP, the Shared Variable Engine runs as a dedicated process and manages all updates to shared variables. Because the SVE is a dedicated process, shared variables remain online and active even when LabVIEW software is not running. For more information on shared variables and NI-PSP see the article Using the LabVIEW Shared Variable.


LabVIEW EPICS I/O Servers act as a plug-in to the Shared Variable Engine and function as the link between shared variables and the EPICS network. Shared variables are bound to an EPICS Process Variable while the I/O server handles updates to PVs. The I/O Server then publishes the PVs to the network using the Channel Access Network Protocol. The EPICS Server and Client I/O Servers are included in the Datalogging and Supervisory Control (DSC) Module and the Real-Time (RT) Module for LabVIEW. The EPICS Client I/O Server is also available for free on the NI website.

Figure 2: Interfacing LabVIEW with EPICS

Figure 2 details the exchange of data between LabVIEW and an EPICS network. The flow of data between components is as follows:

  1. LabVIEW VIs (EPICS Client or EPICS Server) read and write data to network published shared variables
  2. Network published shared variables are bound to EPICS process variables
  3. EPICS Client I/O servers monitor updates to process variables
  4. EPICS Server I/O servers publish process variables to EPICS network using Channel Access protocol

EPICS I/O Servers can also be configured programmatically. For more information on programmatic configuration see the EPICS Client and EPICS Server API examples in the LabVIEW Example Finder.

Related Links

How LabVIEW Uses I/O Servers
Interactively Configuring EPICS I/O Servers