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).