ip

Table of contents

Overview

The ip module provides EPICS support for message-based instruments that communicate via serial (RS-232), GPIB, or socket (TCP/IP, UDP) interfaces. It is part of the synApps collection of EPICS modules maintained by BCDA at Argonne National Laboratory.

The module supports a wide range of devices including temperature controllers, vacuum gauge controllers, power supplies, digital multimeters, lock-in amplifiers, piezo controllers, encoders, syringe pumps, and other laboratory instruments. See the Supported Devices page for the full list.

The name “ip” is a legacy from the use of Industry Pack cards in a VME environment to provide serial or GPIB communication channels.

Device support styles

Devices in this module use one of two approaches:

  • Compiled device support – Custom C source code or SNL (State Notation Language) programs that implement the device communication protocol directly using asyn interfaces.

  • StreamDevice protocols – Protocol files (.proto) used with StreamDevice to define command formatting and reply parsing in a configuration file rather than compiled code.

Additionally, the deviceCmdReply database provides a way to communicate with serial/GPIB/socket devices at run time without writing any device support code.

Dependencies

  • asyn – Serial, IP, and GPIB communication
  • seq – State Notation Language runtime (for SNL-based device support)
  • ipac – Industry Pack carrier support (for vxWorks with IP serial/GPIB modules)

Building

The ip module provides cfg-based dependency declarations. IOC applications that list IP in their configure/RELEASE can use the IP_IOC_DBDS and IP_IOC_LIBS variables instead of hardcoding DBD and library names:

# IOC application Makefile
$(PROD_NAME)_DBD  += $(IP_IOC_DBDS)
$(PROD_NAME)_LIBS += $(IP_IOC_LIBS)

On non-vxWorks targets this expands to ipSupport.dbd and ip. On vxWorks it also includes ipVXSupport.dbd for additional GPIB device support.

If your build does not use cfg-based dependencies, include the DBD files and library explicitly:

$(PROD_NAME)_DBD  += ipSupport.dbd
$(PROD_NAME)_LIBS += ip

StreamDevice databases

Databases that use StreamDevice protocols require that the .proto file be accessible to the IOC at runtime. Set the STREAM_PROTOCOL_PATH environment variable to include the directory containing the protocol files (typically $(IP)/db).