Skip to content

EtherNet/IP

The EtherNet/IP PLC component is a Common Industrial Protocol (CIP) tag client for Allen-Bradley (Rockwell) programmable logic controllers (PLCs). It connects to one PLC and polls the PLC tags you list in its point map. It publishes each one as a Profinity tag. It supports ControlLogix, CompactLogix, Micro800, PLC-5, and SLC controllers.

flowchart LR
    PLC["Allen-Bradley PLC"]
    subgraph Profinity
        Component["EtherNet/IP PLC"] --> Tags
    end
    PLC --> Component
The EtherNet/IP PLC component in Profinity polls the PLC tags in its point map from one PLC and publishes each as a Profinity tag

Licence required

The EtherNet/IP plugin requires the Industrial Protocols licensed component group, and Install an industrial protocol plugin explains how to obtain, install, and licence it.

Add an EtherNet/IP PLC to your Profile from the Industrial Protocols group in the component catalogue, as described in How to add a component to your profile. Add one component for each PLC you want to read. You can change the settings in the Communications settings section later from the component's Change Settings menu action.

You list each PLC tag by name in the point map. The component does not browse the PLC's CIP objects to discover tags for you. On a ControlLogix, CompactLogix or Micro800 controller, Browse reads the PLC's tag symbol list instead.

Quick start

You need the Industrial Protocols licensed component group, as described in Install an industrial protocol plugin, and network access to the PLC.

  1. Select ADD COMPONENT, then select EtherNet/IP PLC in the Industrial Protocols group.
  2. Set Gateway to the IP address of the PLC, or of the gateway module that the PLC sits behind. The default is 127.0.0.1.
  3. Check that PLC kind matches your controller, and keep CIP path at 1,0 for a CPU in slot 0 of the same chassis.
  4. Select ADD COMPONENT at the bottom of the dialog, or SAVE when you change an existing component.
  5. In the Point map, add a row with a Name and a PLC tag, and set its Data type to match the PLC tag. The default is Dword.
  6. If Auto connect is off, which is its default, switch the component on with the Connect / Disconnect menu action.
  7. On the component dashboard, check that STATUS shows Connected and CONNECTED is true, and that the tags under Points show values rather than bad quality.

Communications settings

Setting Type Default Description
Name Text EtherNet/IP PLC The name of the component. Must be unique within the profile.
Gateway Text 127.0.0.1 The IP address of the PLC, or of the gateway module that the PLC sits behind. Required.
CIP path Text 1,0 The route to the PLC's central processing unit (CPU), as comma-separated values.
PLC kind Choice ControlLogix The family of PLC: ControlLogix, CompactLogix, Micro800, PLC-5 or SLC.
Poll interval (ms) Time 1000 How often the point map is read, in milliseconds. Between 50 and 600000.
Request timeout (ms) Time 1000 How long Profinity waits for the PLC to answer a request, in milliseconds. Between 50 and 60000.
Reconnect delay (ms) Time 2000 How long Profinity waits between connection attempts, in milliseconds. Between 0 and 600000.
Auto connect On or off Off Connects to the PLC automatically when the profile is loaded. Off by default, as described in Connections and reconnecting.

Profinity sends the CIP path to the PLC as you enter it:

  • The default 1,0 is the backplane (1) and slot 0. For a CPU in slot 2 of the same chassis, enter 1,2.
  • Leave it empty to send no path.
  • For a CPU reached through a bridge module, enter the route as pairs of port and address, one pair for each hop.
  • For a PLC-5 or SLC controller, Profinity sends the CIP path on every read when it is not blank, including the default 1,0.
  • Micro800 controllers ignore this setting while Browse reads the PLC's tag symbol list.

With Auto connect on, profinity keeps trying to connect when the PLC is down at start and after a connection is lost, as described in Connections and reconnecting. With Auto connect off, it connects only after you switch the component on.

Point map

The point map lists the PLC tags to read. Each row becomes one tag.

Folders and Browse are described in Industrial protocol components. On a ControlLogix, CompactLogix or Micro800 controller, select SAVE in the component settings, then wait until the PLC is connected before Browse lists its tags. A PLC-5 or SLC has no symbol list, so type the file address, for example N7:0.

Column Description
Name The name of the tag under the component's Points tags. It must be unique in its folder. The same name can be used in another folder.
PLC tag The tag name in the PLC. For ControlLogix, CompactLogix and Micro800 this is the Logix tag name. For PLC-5 and SLC it is the file and element, for example N7:0.
Data type How the value is read: Boolean, Word, SignedWord, Dword (the default), SignedDword or Real.
Writable Allows Profinity to write the PLC tag from the Profinity tag. Off by default.
Unit An optional unit label for the tag.

The data types map to the element size in the PLC, and to the type of the Profinity tag.

Data type Size Profinity tag
Boolean 1 byte Boolean
Word / SignedWord 2 bytes (unsigned / signed) Integer
Dword / SignedDword 4 bytes (unsigned / signed) Integer
Real 4 bytes (floating point) Number

Choose a data type that matches the PLC tag's type, otherwise the value is misread. Each row reads one element of the size given for its data type.

Writing to a PLC

A write can change the controlled process, so turn Writable on only for tags that must be set from Profinity.

Example

This example is for illustration. It reads a motor speed and a run status from a ControlLogix PLC with its CPU in slot 0 of the same chassis. Add it under components: in the profile.yaml file of the profile.

- component:
    type: EtherNetIpPlc
    id: EtherNetIpPlc1
    name: Line 1 PLC
    tagTreeParentPath: /
    gateway: PLC_IP_ADDRESS
    cipPath: "1,0"
    plcKind: ControlLogix
    pollIntervalMilliseconds: 1000
    requestTimeoutMilliseconds: 1000
    reconnectDelayMilliseconds: 2000
    autoConnect: true
    points:
    - name: MotorSpeed
      tagName: Motor_Speed
      dataType: Real
      writable: false
      unit: rpm
    - name: MotorRunning
      tagName: Motor_Run
      dataType: Boolean
      writable: false

Replace PLC_IP_ADDRESS with the IP address of your PLC. Each value is a setting from the Communications settings or a column from the Point map. The tagName value is the PLC tag column. Profinity fills in a missing or duplicate id, and a missing tagTreeParentPath (set to /), when it loads the profile, so you can leave them out. type names the component kind, so keep it as shown.

Dashboard

The component dashboard shows the connection STATUS and whether the PLC is CONNECTED. It also shows the number of values read (RECEIVED) and values written (SENT). Use the Connect / Disconnect menu action to start or stop polling manually. Viewing the dashboard requires the Security administration permission, described under Roles and permissions.

Polled values behave like any other tag, so they can be shown on a dashboard, logged, watched by a rule, or read by a script.

If a point shows bad quality

If a point cannot be read, its tag is marked as bad quality. Check the usual causes in this table before reading the Log for the reason.

What you see Cause What to do
The point is marked as bad quality. The PLC tag name does not exist in the PLC. Enter the tag name as it appears in the PLC.
The point is marked as bad quality. The Data type does not match the PLC tag's type. Choose the data type that matches the PLC tag's type.
The point is marked as bad quality. The CIP path does not lead to the CPU. Enter the route to the CPU, as described under the settings table.
The point is marked as bad quality. The PLC kind does not match the controller. Select the family of the controller.

Refer to Connections and reconnecting for how the Log records failed reads and recovery.