Ethernet/IP
Last updated
Last updated
The plugin is designed to read data from configured tags within Rockwell Automation PLCs that support the CIP protocol over Ethernet/IP, such as ControlLogix, CompactLogix, and Micro820. It uses the driver—a native Go implementation modeled after pylogix—to establish and maintain communication with the controller.Add commentMore actions
Currently, the plugin behaves similarly to the s7comm
plugin: you must explicitly configure the tag names and data types you want to read. Automatic browsing or discovery of tags is not yet implemented. As such, you should already know the tag names and structures from the PLC program (e.g., via Studio 5000 or Connected Components Workbench).
Support is limited to modern controllers that use CIP over Ethernet/IP. Legacy PLCs such as PLC-5, SLC-500, or MicroLogix models using PCCC are not supported.
In future versions, support for browsing and listing available tags directly from the controller may be added to improve usability and reduce manual configuration.
Datatypes
The plugin is being tested with multiple datatypes, therefore the following datatypes are verified for compatibility:
Boolean
Byte
Int8
Int16
Int32
Int64
UInt16
UInt32
UInt64
Float32
Float64
String
Array of Byte
Array of Int8
Array of Int16
Array of Int32
Array of Int64
Array of Uint16
Array of Uint32
Array of Uint64
Array of Float32
Array of Float64
Array of String
Metadata outputs
The plugin provides metadata for each message, that can be used to create a topic for the output, as shown in the example above. The metadata can also be used to create a unique identifier for each message, which is useful for deduplication.
eip_tag_name
The Name of the Tag that sent the message. If an alias was specified it will replace the original naming of the tag.
eip_tag_path
A dot-separated path to the tag, which is usually used for TagSets and Tags.
eip_tag_type
The data type of the node optimized for benthos, which can be either a number, string or bool.
Configuration Options
The following options can be specified in the benthos.yaml
configuration file:
Endpoint
You can specify the endpoint in the configuration file. Node endpoints are automatically discovered and selected based on the authentication method.
Attributes
You can specify the Attributes in the configuration file:
Key: path
Description: The path
always consists of this pattern: "Class-Instance-Attribute". Path to the specific attribute you want to read. Attributes are usually used for some device specific information, therefore you have to check your device's manual to check whether a specific attribute exists.
Example: 1-1-1
Key: type
Description: The type
specifies the attributes type, which has to be set correctly otherwise you will receive an error. You can also get this from your device's manual.
Example: int16
Key: alias
Description: The alias
is an option to store your data into a specific name, so you can later easilier access this attribute.
Example: testAlias
Tags
You can specify the Tags in the configuration file:
Key: name
Description: The name
is basically the name of the tag you want to read data from. This is specified in your device's software and you have to know the name of that.
Example: testInt16
Key: type
Description: The type
specifies the tags type, which has to be set correctly otherwise you will receive an error. You can also get this from your device's software.
Example: int16
Key: alias
Description: The alias
is an option to store your data into a specific name, so you can later easilier access this tags data.
Example: testAlias
Key: length
(only if you read from a type
e.g. arrayofint16
)
Description: The length
is an option to set the length of the data you want to read. This is only needed when reading arrays. Otherwise you will receive an error here.
Example: 3
Important: The functionality of reading tag-sets in specific is not yet implemented and will need further investigation.
List all tags (not yet implemented)
This is not yet implemented and currently not set to a specific timeline.
MultiRead (not yet implemented)
This is not yet implemented and currently not set to a specific timeline, but will improve reading time out of your plc if it supports this service.