I've mentioned it a few times around here, but it implements the server (slave) side of the Modbus protocol so that other masters can connect to Ignition. It supports simultaneous Modbus TCP, Modbus Serial RTU, and Modbus RTU over TCP connections to the configured virtual device. Within the virtual device, multiple units are supported, each with their own data format setttings (word swapping, etc) and configurable ranges of bits and registers to expose. It also supports a configurable number of Modbus "File" registers in each unit (function codes 20 & 21). As a server, the DI and IR memory areas are fully writable.
The driver uses the same general syntax as IA's Modbus driver, with the following enhancements:
- Multiple Consecutive Coils or Discrete Inputs can be treated as an integer by adding
:n
to the bit address, wheren
is the number of bits (up to 63). LSB first only. - Multiple Bits in any 16-bit register may be treated as an integer by adding
.m:n
to the register address, wherem
is the start (low) bit, andn
is the number of bits (up to 15). Cannot span registers. - File aka "Extended" registers use the
XR
prefix and support all of the bit access, conversion, and multiword datatype modifiers available for holding registers (and input registers).
There are two major features not present in this module:
- No mappings. Not supported and not going to be supported.
- No one-based addressing. Zero-based only.
However, in lieu of the above, this driver implements browsing of configured units and the configured address ranges of each units memory areas. Available data type modifiers are displayed in the browse tree under each 16-bit register. Large lists of addresses are broken into groups of 1000 to minimize browse delays. Each displayed base address shows the one-based classic address equivalent as an "AKA" in the description. Here's a tease from my testing server:
Oh, no support for Modbus UDP is planned.