How LabVIEW Uses I/O Servers


An I/O server is a Shared Variable Engine (SVE) Plug-in that enables communication with devices and applications that do not use National Instruments proprietary NI Publish-Subscribe Protocol (NI-PSP) utilized by Shared Variables. I/O servers are the bridging elements between shared variables in a LabVIEW VI and data tags in OPC, Modbus, or EPICS. I/O servers plug into the SVE to provide a list of items available for subscription and to provide that data to the SVE. With the LabVIEW Datalogging and Supervisory Control (DSC) Module, you can create in LabVIEW I/O servers to communicate with OPC, Modbus, and EPICS clients. This document will cover these three types of I/O Servers.


OPC Clients

The LabVIEW Datalogging and Supervisory Control (DSC) Module provides OPC Client I/O servers for communicating with any server implementing the OPC Foundation OPC-DA protocol, which is a Microsoft COM-based standard. An OPC Client I/O server lists all OPC servers installed on the computer and makes accessible groups and items on the server. You can create an OPC Client I/O server to access data items on a local or remote OPC server.

Figure 1: LabIVEW and OPC Network with DSC

OPC Client I/O Servers allow for the Shared Variable Engine to bind the OPC tags from an OPC Server to Shared Variables. These bound Shared Variables provide an easy to use way for LabVIEW to read and write data to the OPC Tags. OPC Servers are separate pieces of software outside of LabVIEW, and NI provides the OPC Servers as a separate purchase, for a simultaneous driver usage of a single driver or for unlimited drivers.


Modbus is an application-level messaging protocol that provides master/slave communication between devices connected on different types of buses or networks. You can create a Modbus or Modbus Slave I/O server to read data from or write data to Modbus devices. For example, you can create a Modbus Slave I/O server on a National Instruments Real-Time controller and use this controller as a Modbus slave device. You also can create a Modbus I/O server on a host computer and use this server as a Modbus master device to communicate with a Modbus slave device.

Figure 2: LabVIEW and Modbus Network

The LabVIEW Datalogging Supervisory Control (DSC) Module and the LabVIEW Real-Time Module provide the Modbus I/O Servers that plug into the Shared Variable Engine. The I/O Servers handle the low level protocol needed for establishing connections and transmitting data between a master and slave. The Shared Variable Engine binds the data from the I/O Servers to Shared Variables that LabVIEW can easily read and write to. No additional software purchase is needed to connect LabVIEW to a Modbus device.

EPICS Protocol

The Experimental Physics and Industrial Control System (EPICS) is a set of open-source software tools you can use to develop large, distributed control systems. EPICS also refers to the architecture of such systems, as well as to the collaboration group developing the related tools. Refer to the Argonne National Laboratory web site for more information about EPICS and to download the latest version of EPICS. EPICS systems use the Channel Access (CA) network protocol to pass data between Channel Access clients (CACs) and Channel Access servers (CASs). The CA network protocol is a TCP/IP-based protocol. 

Figure 3: EPICS Channel Access Network

LabVIEW Datalogging and Supervisory Control (DSC) Module and the LabVIEW Real-Time Module act as Channel Access (CA) clients through I/O servers. The EPICS I/O servers are also available for download for free on National Instruments website. Use the EPICS Client I/O servers to monitor and update process variables (PVs) that an input/output controller (IOC) or Channel Access server (CAS) publishes using the CA network protocol. With EPICS Server I/O servers, LabVIEW acts as a server that uses the Channel Access (CA) network protocol. Use EPICS Server I/O servers to publish shared variables by using the CA network protocol. An EPICS Server I/O server is a Channel Access server (CAS). You can create an EPICS Server I/O server to publish local and remote shared variables and CompactRIO I/O variables (IOVs).