The DASTEC Corporation MODBUS/TCP Ethernet Communication Interface API
allows the user to implement bi-directional communications to exchange
data between applications running on a PC-based or embedded system with
other peer devices supporting the MODBUS/TCP Ethernet protocol. The peer
devices can be Modicon devices, other host computers or even other system
applications using the API.
The MODBUS/TCP Ethernet Communication Interface API enables a system to
acts as a client to other Modbus peers, initiating read and write operations
on behalf of the system applications. The API also allows the system to
emulate a Modicon PLC to respond to read and write requests and thus acts as
a "virtual PLC" to other MODBUS/TCP peers. The API is available for various
combinations of operating systems and hardware platforms and can be used with
C/C++ or Visual Basic.
The API consists of two component functionalities, client side and server
side. The client side functionality is implemented with a single API library.
Server side functionality is implemented with a library/executable pair. Together
these components manage all aspects of the protocol and data exchange including
responding to peers with proper acknowledgements, error/success codes and
protocol data byte ordering. The system application need only to deal with the
data values exchanged in native byte order. The user can employ either the
API's client, server or both functionalities with minimal code implementation.
The MODBUS/TCP Ethernet Communication Interface API supports the following
MODBUS/TCP protocol function codes:
1 - Read Coil Status
2 - Read Input Status
3 - Read Holding Registers
4 - Read Input Registers
5 - Force Single Coil
6 - Preset Single Register
7 - Read Exception Status
15 - Force Multiple Coils
16 - Preset Multiple Registers
Client API Functionality
To exchange data with MODBUS/TCP peers, a system application can
initiate read and/or write operation(s) to peers by simply calling
the client's library functions. The functions include the ability to create
handle(s) for the peer device(s) and then using those handle(s) to call
the client's library read and write functions. Operation results are returned
directly to the calling application, as is data in the case of read operations.
Client API Supports:
Defining of multiple device(s) representing MODBUS/TCP peers.
Functions to read data from and write data to defined device(s).
Coil and Discrete Input data can be read as packed bits or as bytes.
Coil data can be written as packed bits or as bytes.
Holding and Input Register data can be read as 16-bit, 32-bit or as ASCII values.
Holding Register data can be written as 16-bit, 32-bit or as ASCII values.
Multiple user applications can use the client API simultaneously.
Server API Functionality
Using the server executable program provided as part of the API, a system
can appear as a MODBUS/TCP device (Modicon PLC) on the network. By managing
all MODBUS/TCP communication operations, the server executable receives and
responds to both read and write requests from peer devices. Data written by
peers is stored into separate databases maintained by the server executable
for each Modbus data type (Coil, Discrete Input, Input Register, Holding
Register and Exception Status). The data received is stored in the byte order
appropriate for the system's processor. The data for read requests received
from peers is retrieved and returned from these databases as well.
No user programming is required for the system to act in this server mode.
Peers can read and write to the system as if it were a Modicon PLC with no
user application programs running. Applications have access to the server's
databases indirectly through specific API library functions calls or directly via
shared memory access. In this way, the user applications obtain data written
from peers and can update the system's "virtual PLC's" data registers, coils,
etc. so that peers can retrieve it.
Server API Supports:
Modbus Data Types: Coil, Discrete Input, Input Register, Holding
Register and Exception Status. A separate database is maintained for each data type.