Skip to main content

CIP Ethernet/IP Communication

warning

CIP Support is preliminary. This documentation is an early DRAFT.

CPUs differ in terms of available "CIP Services" depending on manufacturer and device type. See below.

The following data types are currently supported (numbers only; check bool)

  • CIPTypeBYTE, CIPTypeSINT, CIPTypeUINT, CIPTypeINT, CIPTypeDINT, CIPTypeREAL, CIPTypeLREAL

The CIP Communication establishes a connection to a controller via the Ethernet/IP (CIP) protocol.

Configure the parameters as below.

Upon success the service

  • Shows the device's ...ip address... name in table
  • Shows "Connected" in the green pill in the "State" columne (this pill shows the connection status in general)
  • Starts reading the data tree immediately -- if possible; else: import data definitions

overview.png overview.png

Prerequisites

To establish a CIP Communication the following must be available in the local network

  • Target Device (controller) with Ethernet/IP access via an IP address
    • Enable Ethernet/IP communication on the target PLC (if needed)
    • A running PLC Program on the target device
    • Data defined and at least one symbol set with read and/or write access

Parameters

see General Settings

VariableData TypeDescription
AddressIP addressIP address of target device (may be localhost or 127.0.0.1 if the gateway runs on the same device)
Output valuesread-only
NameString.... Name as returned on successful connection
ConnectedBooleanReflects the state of the connection: TRUE iff the connection is completely established
Connection StatusStringReflects the detailed state of the connection, shown in the pill in solumn "State" ('Disconnecting', 'Connecting', 'Connected', ...)

Supported Data

CIP Communication supports read and write operations. Only numhers (an Booleans?) are supported so far.

Example Settings

Rockwell and Allen-Bradley

Rockwell and Allen-Bradley provide services to "discover" the available data. Hence the available variables can be discovered using the Ethernet/IP protocol. No symbol import needed (see below for Omron)

CIP Omron

CIP Omron

CIP Omron

Omron

warning

Omron CPUs don't work directly, yet

  • The "discover" service is not available, so, "0 Nodes" are reported.
  • A proof-of-concept (PoC) communication is available -- this is pre-alpha, no UI available

CIP Omron

Follow these steps to create a connection to an Omron CPU

Prepare the Omron CPU

  1. Enable Ethernet/IP (CIP) in Omron Sysmac Studio

Omron Sysmac Settings

  1. Define variables and export as CSV from Sysmac Studio: Tools → Export Global Variables → CSV/XML

Omron Sysmac Export

  1. Import CSV via API into app

Omron Import

On an Omron NJ301-1200 CPU

  • No CIP service for full symbol browsing like Rockwell’s Class 0x6B + Service 0x55.
  • Omron’s EtherNet/IP implementation supports:
    • ✔️ Explicit messaging to read/write variables by symbolic name (if marked Network Publish in Sysmac Studio).
    • ✔️ Tag Data Links (implicit I/O) for cyclic data exchange.
    • ✖️ No standard CIP browse for all symbols.
  • The PoC uses an export/import (CSV) to know which variables exist
  • Then, read/write via EtherNet/IP using symbolic names Read("VarName") in GenericCIPMessage

Established Connection with Omron Device NJ301-1200 (logs)

2025/10/02 20:30:40 INFO successfully opened connection controllerIp=192.168.201.227 ConnectionSize=511 OTNetworkConnectionId=1744244545 
2025.10.02 20:30:43 [INFO ] [ReconnectClient.go::connectClient                               81] EncapProtocolVersion: 1
2025.10.02 20:30:43 [INFO ] [ReconnectClient.go::connectClient                               82] SocketAddress: {2 44818 3232287203 0 0}
2025.10.02 20:30:43 [INFO ] [ReconnectClient.go::connectClient                               83] Vendor: 47
2025.10.02 20:30:44 [INFO ] [ReconnectClient.go::connectClient                               84] DeviceType: 12
2025.10.02 20:30:44 [INFO ] [ReconnectClient.go::connectClient                               85] ProductCode: 1644
2025.10.02 20:30:45 [INFO ] [ReconnectClient.go::connectClient                               86] ProductName: NJ301-1200
2025.10.02 20:30:45 [INFO ] [ReconnectClient.go::connectClient                               87] Revision: 1282
2025.10.02 20:30:45 [INFO ] [ReconnectClient.go::connectClient                               88] Status: 309
2025.10.02 20:30:45 [INFO ] [ReconnectClient.go::connectClient                               89] State: 3
2025.10.02 20:30:45 [INFO ] [ReconnectClient.go::connectInBackground                        110] successful reconnect to address: 192.168.201.227
2025.10.02 20:30:45 [INFO ] [ReconnectClient_test.go::func1                                  20] Client connected

Reading values after CSV import (logs) Omron Reading log

Troubleshooting

Known Issues

  • Licensing not checked, yet
  • Non-existing target stays on "Connecting" status, keeps trying with timeout, may lwad to increased network traffic

Implementation Details

warning

to be removed

Can we check for tag discovery service? inform user and/or enable import?

The CIP Communication relies on services defined in the Ethernet/IP protocol

Service ClassHex CodeCommment
CIPService_Read0x4CGenericCIPMessage
CIPService_Write 0x4DGenericCIPMessage
"Discover"0x55, 0x68device-specific service
Read Map0x??→ clarify