Last modified: Thu Oct 30 18:29:13 PDT 2014
EPICS Version 4

This is the homepage of EPICS Version 4, a software toolkit for writing the control system and online scientific services of large experimental facilities.

EPICS Version 4 immensely improves the richness and speed of the data interaction between the client and control side of EPICS control systems. Programmers now have facilities to intelligently expose the controls system Process Variables of interest in the ways users want to see them. Clients can easily find out, while they are running, which are the pertinent IOC data relevant for their particular applications. Data processing services can be trivially set up to pre-process data between the DAQ and clients. Version 4 also easily integrates EPICS with the other data systems that can be expected in scientific enterprises, such as mathematical modelling systems, data archiving systems, logging systems, and cabling and instrument calibration data in enterprise databases.

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 a particle accelerators, telescopes and other large scientific experiments.

What's new in EPICS V4.3

V4.3 greatly simplifies the relationship of the classic EPICS version 3 and version 4. Now, EPICS version 3 base is simply that component of version 4 that implements the IOC, together with its control database and communications over channel access. The support for high performance data services has also been greatly simplified - there is no longer a need to run any form of IOC nor SoftIOC - just tell a pvServer what PVs it should respond to, and go.

For more of the features of EPICS V4, see Features and Use Cases.

EPICS Version 4 Components in a Nutshell

EPICS Version 4 is composed of four primary modules: EPICS Base, pvData, pvAccess and pvaSrv. EPICS Base (V3.14) provides the IOC (Input/Output Controller), which is a network node that controls and/or monitors a collection of devices. An IOC contains a memory resident real time database. The real time database has a set of "smart" records, which are interconnected in a Data Flow pattern. The records may contain "device support" code, to interface the processing model to physical devices through device drivers. pvAccess is a communications protocol for connecting clients to servers. One such server may be an IOC, though simpler servers are also supported, such as for Remote Procedure Calls (how cloud and Service Oriented Architecture is implemented in EPICS). The module which intermediates pvAccess to the record processing on an IOC is pvaSrv. pvData is the application level data interface of EPICS V4. pvData objects are transported by pvAccess to an IOC, or to other pvAccess servers.

Version 4 / Base 3.14 Interoperation

EPICS Base 3.14 includes a communications protocol named "Channel Access". Version 4 adds a new protocol called "pvAccess". Interoperability between the two protocols, their APIs, and record processing, is provided in Version 4.3, in 2 ways:

  • The pvAccess client system includes Channel Access as a protocol "provider". The other protocol provider is pvAccess. That way, a single client library and API gives communications on both protocols
  • A new IOC module, pvaSrv, interfaces pvAccess protocol wire I/O, to an IOC's regular CA and database processing.
Interoperation of classic EPICS and V4 endpoints, is provided by the pvaSrv IOC module, and that pvAccess clients can optionally communicate using Channel Access.
EPICS V3/V4 interoperation diagram

See the talks pvaSrv - the IOC Side Bridge from pvAccess to an IOC (PDF), Ralph Lange, and V3/V4 Interoperability (PPT), Marty Kraimer.


Very preliminary performance graphs for pvAccess floating point acquisitions are given below, together with comparable Channel Access acquisition. The setup is C++ clients and servers, of the Beta 1.0.1 release (as on the downloads page), 2 MacBook Pros (~2GHz Intel Core Duo-s, 4GB memory) with a 1 GBit Ethernet point-to-point connection. The acquisition is a GET operation, on a double array value (DBR_DOUBLE and pvAccess equivalent), varying in both cases the value array size. Note that in addition to raw network encoding and deserializing performance, in a real world implementation pvAccess could achieve much higher apparent performance since it additionally has the capability to transfer only actually changed structure field values.

pvAccess and Channel Access comparative performance (Number of channel value get operations per second), where only one channel's value is got in each get operation, as a function of array size of the channel. The graph shows that roughly speaking, pvAccess does better than Channel Access with increasing channel value array size.
EPICS V4 pvAccess performance diagram
pvAccess and Channel Access comparative performance (Number of channel value get operations per second), where 1000 channels values' are got in each get operation, as a function of array size of the channel. The graph shows that roughly speaking, Channel Access does better than pvAccess with small messages, whereas pvAccess does better than CA for large array sizes.
EPICS V3/V4 interoperation diagram

Present Deployments

EPICS V4 is also being used now developing beamline image data acquisition and storage, using the facilities of pvData for structured data. Contact Dave Hickin at DIAMOND. It will shortly also be deployed at PSI for back end SQL database access.

Extensions, Tools, and Associated Activities

A number of software projects are associated with EPICS V4. Some of the above are in scope of the EPICS Version 4 working group specifically, and others not. Those in scope are being managed as part of the deliverables of the group, though they are not considered normative, and should not be considered all at the same level of release as the normative specifications (Beta at the time of writing).

PVManager is a client side utility library, that helps to manage complex objects' retrieval and scanning. It allows client programs of EPICS V4 or EPICS V3, to decouple the rate of events on the network from the rate of refresh needed by the user interface itself. It provides a clean, simple, well designed high level programming interface for the problem of multi-threaded GUI acquisition and screen update of many EPICS record data, for instance, a table of Beam Position Monitor (BPM) data of many BPMs.
Literature: User guide. Reference documentation (javadoc).See also literature below
Status: 1.0 released on 22 Sept 2011. Production/Stable. Bundled in CSS Core as of 3.0.0 (31 May 2011). Used in some CSS applications and BOY Widgets (Waterfall, PVTable by Property, PVManager probe, ...).
Contact: Ralph Lange (HZB), Gabriele Carcassi (BNL).
Channel- Finder
ChannelFinder is a toolkit for building directory services suitable for EPICS channel metadata.
Literature: Home page of Web Service component, includes Design and service data update API descriptions. Client side java API.
Status: Usable beta
Contact: Gabriele Carcassi (BNL), Ralph Lange (HZB), Kunal Shroff (BNL)
python interfaces
Python wrappers for pvData, pvAccess and pvService are being worked on.
Status: Early beta
Contact: Guobao Shen (BNL)

Greg White, SLAC/PSI greg at, for EPICS V4 Working Group