Modbus/TCP

The Modbus/TCP output module turns your system into an Modbus/TCP server (known as a modbus slave) that can be read from a variety of industrial systems and protocol converters, allowing you to feed values from your analytics back into your industrial historian, SCADA system or even inject it into your PLCs.

This is a service module - meaning that rather than writing data to another system, it opens a server to make that data available to systems that might want to read the information.

ParameterDefaultMeaning
port502The port number to host the Modbus/TCP server on.
pointsA list of Modbus points to offer

NOTE: This output module is a proof-of-concept prototype. Currently, it's only capable of offering integer values in output registers and hasn't been set up for digitals or floating-point numbers.

Availability

This module is only available for key-value data. If you wish to write event-based information to a Modbus server, we suggest using the ARDI Trigger module.

Example

[
   {
       "method": "modbustcp",
       "points": {
              "Output Value": {"register": "holding", "address": 0}
       }
   }
]

The above example would make your data available via Modbus/TCP on port 502. The point named Output Value would appear in holding register 0, with a full Modbus address of 40001

Mapping Data

The points option is an array of objects, similar to the one below…

{ "mypoint":  { "register": "holding", "address": 0 } }

Where register defines which Modbus register the mypoint value belongs to, and address is the offset in that register. The above address would end up being 40001, not 00001.

Floating Point Numbers

You can optionally include min and max parameters to scale floating-point numbers.

{ 
    "mypoint":  { 
             "register": "holding",
             "address": 0,
             "min": 0,
             "max": 20
    }
 }

This would take a floating point number between 0 and 20 and convert it to an integer between 0 and 65535.

Discrete Values

When working with ENUM or LOOKUP properties, you can map individual values to different digitals.

The address parameter becomes an array of addresses, and the value parameter specifies which specific value(s) should be attached to each address. The number of values and addresses must match.

For example, if you have an enumeration property that can have a value of 0,1,2 or 3, you can have the following configuration…

{ 
    "mypoint":  { 
             "register": "digital",
             "address": [0,1,2,3],
             "values": [0,1,3,2]
    }
 }

This will set addresses…
00001 to 1 when the value of mypoint is 0
00002 to 1 when the value is 1
00003 to 1 when the value is 3, and
00004 to 1 when the value is 2.

Other Modules

Return to the list of output modules.