Device is a driver used for interacting with an external data source (a PLC, sensor, database, etc.) in read and write modes.

Subdevice represents a child element of the device and works with the same communication channel as the parent device. Each subdevice has a specific priority with which it will access the communication channel. Highest priority value means that the subdevice will gain access first. The parent device always has the highest priority.

The concept of a device and subdevice allows for working with Modbus TCP/Modbus RTU interface converter (in bridge mode) if there is more than one node in the RTU network.

The current version of the server includes a set of drivers for:

  • Modbus TCP, Modbus RTU over TCP and Modbus RTU/ASCII (cyclic driver).

  • S7 protocol for Siemens S7-300/S7-400/S7-1200/S7-1500/Sinamics over Ethernet (cyclic driver).

  • Simple Network Management Protocol v1 and v2c (cyclic driver).

  • InfluxDB connector (represents time series fields as OPC UA items, cyclic driver).

  • IEC 60870-5-104 TCP/IP Master (event-oriented driver).

  • OPC UA Client (access to external OPC UA servers).

Cyclic driver perform reading and writing are performed cyclically at certain time intervals. The time interval depends on the update rate of tags associated with the driver and its settings.

As well as executing cyclic polling protocols, all drivers are also ‘block’ polling drivers. The ‘block’ polling is used to achieve maximum data reading performance. For example:

  • The Modbus driver reads data by organizing them into 120-byte blocks, which is much more efficient than reading one register at a time

  • The SNMP driver reads blocks consisting of 25 OIDs, which is much more efficient than reading one OID at a time

The maximum size of the block can be changed in the device settings. By default, maximum allowed values are used.

After generating the blocks, the device groups them by update rate and device-specific characteristics. For example, the Siemens driver polls several addresses with the same update rate of 500 ms, of which two (address A and address C) belong to DB1, and the third (address B) belongs to DB20. With this configuration, the driver will create two blocks:

  • 1st block (addresses A and C with 500ms update rate)

  • 2nd block (address B with 500ms update rate)

In case the tag with address C has an update rate of 100 ms, the driver will create three block groups:

  • 1st block (address A with 500ms update rate)

  • 2nd block (address B with 500ms update rate)

  • 3rd block (address C with 100ms update rate)

All operations on generating blocks and block groups are performed by the driver automatically without any user intervention.

To improve polling performance, several devices can be created to connect to the same data source. In this case, the source is polled asynchronously. This method is only suitable if the target data source is able to handle multiple connections at the same time.

Unlike the cyclic driver, the event-oriented driver does not send periodic requests to the device, but only initiates data transfer; most of the time it listens to the information channel analyzing the received traffic. During the traffic analysis, the driver queues the values for each tag associated with the driver. Note that in the case of event-oriented driver, the tag’s Update Rate determines what frequency the tag value queue will be processed with.

Last updated