EPICS Modules

The epics-modules GitHub organization is a community-maintained collection of support modules for EPICS (Experimental Physics and Industrial Control System). These modules extend EPICS with device drivers, record types, communication protocols, and utilities used at research facilities worldwide.

Many of these modules originated as part of synApps, a collection of EPICS software developed primarily by the BCDA group at Argonne National Laboratory.


Modules

Communication & Driver Support

Module Description
asyn Driver and device support for asynchronous communication (serial, TCP/IP, GPIB, and more)
modbus Communication with PLCs via Modbus protocol over TCP, serial RTU, and serial ASCII
stream StreamDevice protocol-based communication (archived – see StreamDevice)
ether_ip EtherNet/IP support for Allen Bradley PLCs
mqtt MQTT protocol support based on asyn and Paho
twincat-ads Communication with Beckhoff TwinCAT controllers over ADS protocol
opcua OPC UA device support

Motor & Motion Control

Module Description
motor Motor record and driver support for motion controllers
tpmac Support for Delta Tau Turbo PMAC2 motor controllers
ecmc EtherCAT motion controller and generic I/O controller support
urRobot Support for Universal Robots e-series robot arms
SyringePump Syringe pump control

Data Acquisition & Analysis

Module Description
mca Multi-channel analyzer (MCA) and multi-channel scaler (MCS) support
dxp Support for XIA digital x-ray spectroscopy electronics
dxpSITORO Driver for XIA SITORO-based FalconX spectrometers
Dante Support for Dante digital pulse processors
ketek Driver for KETEK silicon drift diode systems with DPP3
xspress3 areaDetector driver for Xspress3 electronics
sscan Scanning support (step scans, fly scans)
scaler Scaler record support

Measurement & I/O Hardware

Module Description
measComp Support for Measurement Computing USB and Ethernet I/O modules
LabJack Support for LabJack I/O modules
quadEM Support for quad electrometers and picoammeters
ip330 Support for Acromag IP330 16-bit ADC Industry Pack modules
ip230A Support for Acromag IP230A 8-channel 16-bit DAC Industry Pack modules
dac128V Support for Systran DAC-128V 8-channel 12-bit DAC Industry Pack modules
ipUnidig Support for Industry Pack digital I/O modules
Yokogawa_DAS Driver support for Yokogawa GM10 and MW100 data acquisition systems
microEpsilon Device support for Micro-Epsilon displacement measurement digitizers
ThorLabsDFM Driver for ThorLabs deformable mirrors

Database & Record Support

Module Description
calc Calculation records (transform, sCalcout, aCalcout, and more)
busy Busy record for ca_put_callback completion signaling
std Standard records and databases (EPID, timer, shutter, etc.)
ip Industry Pack and serial/GPIB device databases
delaygen Delay generator support
love Love controller support
optics Optics devices (monochromators, tables, slits, filters, etc.)
symb Global symbol device support

IOC Infrastructure

Module Description
autosave Automatic save and restore of PV values across IOC reboots
iocStats IOC status and resource monitoring
alive IOC heartbeat and status reporting
caPutLog Channel Access put logging (also supports PVA puts)
caputRecorder Record and replay sequences of CA puts
sequencer EPICS State Notation Language (SNL) sequencer
pcas Portable Channel Access server library

Scripting & Automation

Module Description
lua Lua scripting for IOC shells, records, and device support
pyDevSup EPICS device support in Python

VME, CAMAC & Bus Support

Module Description
vme VME bus support
ipac IPAC carrier and communication module drivers
camac CAMAC crate controller and module support
devlib2 Helper library for memory-mapped bus access
SIS3153 Driver for SIS3150/SIS3153 USB-to-VME interface cards
vac Vacuum controller support

FPGA & Digital I/O

Module Description
softGlue FPGA-based configurable digital logic
softGlueZynq softGlue for Zynq-based platforms
mrfioc2 Driver for Micro Research Finland event timing system devices

Transient Recorders

Module Description
gtr Generic transient recorder support
TRCore General transient recorder framework
TRGeneralStandards Transient recorder driver for General Standards 16AI64SSA/C
TRSIS Transient recorder driver for SIS 3302
transRecorder Top-level directory for transient recorder software

Testing & Utilities

Module Description
gtest Google Test / Google Mock framework with EPICS integration
MCoreUtils Real-time utilities for EPICS IOCs on multi-core Linux

Templates & Examples

Module Description
xxx synApps example/template IOC application
ioczed Template IOC for microzed/picozed platforms

Getting Started

Most modules follow a standard build process:

  1. Clone the module repository:

    git clone https://github.com/epics-modules/<module>.git
    
  2. Edit configure/RELEASE to set paths to EPICS base and any dependencies.

  3. Build:

    make
    

For a complete synApps distribution that builds many of these modules together, see the assemble_synApps script.

Contributing

Contributions are welcome. To contribute to a module:

  1. Open an issue on the module’s GitHub repository to discuss the change.
  2. Fork the repository and make your changes on a branch.
  3. Submit a pull request.

For questions and discussion, see the EPICS Tech-Talk mailing list and the EPICS community.