Linking Omron NJ/NX with Allen-Bradley via EtherNet/IP

James Nishida17 min read
EtherNet/IPOmronTechnical Reference
Licensed PE Working through this on a live machine? A Maine-licensed engineer can take it from here — included with IMD hardware, by the hour for everything else. Book an engineer

Overview

Inter-vendor PLC communication between Omron and Allen-Bradley (Rockwell Automation) platforms requires deliberate protocol selection because each vendor defines its own application-layer semantics on top of TCP/IP and CIP. Omron controllers expose the FINS (Factory Interface Network Service) protocol over Ethernet and serial, while Allen-Bradley controllers expose EtherNet/IP, the CIP-based encapsulation of the Common Industrial Protocol defined by ODVA. Because FINS and CIP are not interoperable at the application layer, an Omron FINS packet received by a ControlLogix chassis is silently discarded by the CIP stack even though the TCP three-way handshake succeeds. Three production-proven integration patterns resolve this problem: EtherNet/IP explicit messaging between NJ/NX and CompactLogix/ControlLogix controllers, a dual-scanner DeviceNet bridge using an AB scanner in slave mode, and protocol-translating gateways that map DF1, Host Link, and Modbus/TCP into a uniform register space. This reference documents each path with controller compatibility tables, CIP service code mappings, MSG ladder examples, and a fault-clearing matrix drawn from field deployment notes.

Protocol Stack Comparison: FINS, CSP, and EtherNet/IP

Ethernet TCP/IP provides only a transport for opaque byte streams. The application-layer protocol determines whether two controllers can exchange meaningful data. Omron controllers default to FINS over TCP port 9600, while Allen-Bradley controllers default to EtherNet/IP over UDP port 2222 (I/O) and TCP port 44818 (explicit messaging). CIP originates from ControlNet and DeviceNet specifications; the EtherNet/IP adaptation encapsulates CIP messages inside TCP/UDP envelopes using the ENIP encapsulation header.

Attribute Omron FINS Rockwell CSP (legacy) EtherNet/IP (CIP)
Transport TCP 9600 / UDP 9600 TCP 2222 (legacy) TCP 44818 / UDP 2222
Application layer FINS command/response Client/Server Protocol CIP objects, services, paths
Default addressing Node + unit + memory area PLC-2/PLC-5 file/element Class/Instance/Attribute
Inter-vendor compatible No No Yes (multi-vendor standard)
Studio/Tool Sysmac Studio / CX-One RSLogix 500 Studio 5000 / Sysmac Studio

CSP has been superseded by EtherNet/IP on all current ControlLogix and CompactLogix firmware; however, legacy PLC-5 and SLC 5/05 controllers still expose CSP, and bridging from CSP to EtherNet/IP is supported through ControlLogix backplane routing. Omron NJ/NX-series controllers running Sysmac Studio version 1.20 or later expose an EtherNet/IP scanner and adapter interface directly, allowing CIP explicit messages to be initiated from structured-text (ST) CIP message instructions or from the controller's built-in CIP routing table.

Never assume TCP connectivity implies application-layer interoperability. A successful ping or socket open between an NJ501 and a 1756-L82E does not guarantee that a tag read will succeed; CIP encapsulation and service codes must match on both ends.

Controller Compatibility Matrix

Omron Controller Firmware (Sysmac Studio) EtherNet/IP Scanner EtherNet/IP Adapter Recommended AB Peer
NJ101-90[]0 1.10 or later Yes (16 nodes max) Yes CompactLogix 5380 5069-L3[]
NJ301-11[]0 1.10 or later Yes (32 nodes max) Yes CompactLogix 5380 5069-L3[]
NJ501-1[]00 1.11 or later Yes (64 nodes max) Yes ControlLogix 5580 1756-L8[]E
NJ501-4[]00 1.14 or later Yes (252 nodes max) Yes ControlLogix 5580 1756-L8[]E
NX102-1[]00 1.23 or later Yes (16 nodes max) Yes CompactLogix 5380 5069-L3[]
NX502-1[]00 1.40 or later Yes (64 nodes max) Yes CompactLogix 5380 5069-L3[]
NX701-1[]00 1.10 or later Yes (252 nodes max) Yes ControlLogix 5580 1756-L8[]E
CP1H / CP1L CX-One only No (Option board) No Use DF1 serial bridge
CS1 / CJ2 CX-One CS1W-EIP21 module Yes (module-based) Use CS1W-EIP21 + MSG

The NJ/NX family implements CIP through the integrated EtherNet/IP port labelled PORT1 (built-in switch) or PORT2 (separate IP, used for CIP routing). Sysmac Studio version 1.40 added CIP Security compatibility, but for inter-vendor messaging with Studio 5000 v33 or later, the standard ENIP encapsulation (no TLS) is the supported baseline.

Method 1 — EtherNet/IP Explicit Messaging Between NJ/NX and ControlLogix

EtherNet/IP explicit messaging uses CIP request/response service codes to read or write tag data on a remote controller. The originator (originator endpoint, OE) opens a TCP connection to port 44818 on the target (target endpoint, TE), sends an ENIP encapsulation header followed by a CIP request, and waits for a CIP response. Studio 5000 implements this through the MSG instruction with message type CIP Generic or, preferably, the typed variants CIP Data Table Read and CIP Data Table Write. Sysmac Studio implements the equivalent through the CIP_UCMM (unconnected) and CIPConnection (connected) function blocks.

CIP Service Codes Used in Cross-Vendor Messaging

Service Code (hex) Name Direction Payload
0x0E Get_Attribute_Single OE -> TE Reads one CIP attribute
0x10 Set_Attribute_Single OE -> TE Writes one CIP attribute
0x4C Read_Tag (CIP Data Table Read) OE -> TE Reads tag(s) by name
0x4D Write_Tag (CIP Data Table Write) OE -> TE Writes tag(s) by name
0x52 Read_Tag_Service (alt.) OE -> TE AB extension, multi-tag

The Omron implementation supports service codes 0x4C and 0x4D from firmware 1.11 onward, but tag names must match exactly including case (CIP treats tag names as case-insensitive strings, but RSLogix-classic exports may preserve case). Studio 5000 v28 added symbolic CIP addressing, allowing the originator to specify the remote tag by name without pre-declaring a route. Prior to v28, the Connection Path string in the MSG instruction had to use the form 1, 0, 192.168.1.50, 1, 1 where the leading 1 selects the backplane port, 0 is the backplane slot of the 1756-EN4TR module, the IP address is the target module, 1 is the CIP port (backplane), and the final 1 is the controller slot. With symbolic addressing the path simplifies to CompactLogix_Tag because Studio 5000 auto-resolves the route from the controller's I/O and routing configuration.

Sysmac Studio Side: CIP Message in Structured Text

The CIP message instruction on NJ/NX is invoked from a POU using the CIPUCMMRead or CIPUCMMWrite function blocks, or directly via the _EIP_ service instructions available in firmware 1.20 and later. The variables that must be populated before each call are:

  • SrcVariable — pointer to a tag of any CIP-supported type (BOOL, SINT, INT, DINT, LINT, REAL, LREAL, STRING, or array thereof)
  • DstVariable — destination tag on the remote controller
  • ConnectionPath — STRING variable holding the CIP path, e.g. '192.168.1.50\1\1\0'
  • ServiceCode — 16#4C for read, 16#4D for write
  • RequestDataSize — number of bytes to transfer
  • Timeout — DINT in milliseconds, typically 5000

A working ST snippet that reads a DINT named RecipeNumber from a ControlLogix 1756-L82E at IP 192.168.1.50 follows.

VAR
    EIP_Read : CIPUCMMRead;
    Path    : STRING[260] := '192.168.1.50\1\1\0';
    LocalBuf : DINT;
    Done    : BOOL;
    Busy    : BOOL;
    Error   : BOOL;
    ErrID   : DINT;
END_VAR

EIP_Read(
    Execute := NOT Done,
    ConnectionPath := Path,
    SrcVariable := 0,                  (* unused on read *)
    DstVariable := LocalBuf,
    ServiceCode := 16#4C,
    RequestDataSize := 4,
    Timeout := T#5s,
    Done => Done,
    Busy => Busy,
    Error => Error,
    ErrorID => ErrID
);
IF Error THEN
    (* escalate via alarm block *)
END_IF;

Studio 5000 Side: MSG Instruction Ladder

On the Allen-Bradley side the symmetric instruction reads or writes a tag on the remote NJ/NX. Because NJ/NX exposes user-defined tags as CIP assembly instances, the Connection Path must include the IP address of the NJ/NX EtherNet/IP port and the CIP port 1 for the built-in ENIP interface. The path is 192.168.1.20, 1, 1.

(* Ladder rung, MSG instruction *)
MSG(  
    MessageType  := CIP Data Table Read,
    TagName      := AB_FromOmron,         (* destination tag *)
    NumElements  := 1,                    (* one DINT *)
    SrcTag       := NJ_RecipeNumber,      (* remote tag, must be DINT *)
    ConnectionPath := '192.168.1.20, 1, 1',
    Timeout      := 5000,                 (* ms *)
    CacheConnections := FALSE
);

When configured with CacheConnections := TRUE, Studio 5000 establishes a CIP Class-3 connected message; the connection stays open until the timeout expires, and only one TCP connection per pair of OE/TE is consumed. Set this to FALSE for unconnected messaging (UCMM) when the NJ/NX firmware is older than 1.20 or when the connection count must be minimized. The Omron-supplied sample library illustrates the explicit-message variants and is available at Omron NJ/NX EIP to Allen-Bradley CompactLogix Sample Code. The library contains two projects: one for the Sysmac Studio side showing CIPUCMMRead/Write function blocks, and one for Studio 5000 v32 showing MSG instructions targeting Omron tag names directly.

Tag Name and Atomic Type Mapping

Omron Data Type Bytes CIP Atomic Type Allen-Bradley Direct Equivalent
BOOL 1 BOOL (0x00C1) BOOL
SINT 1 SINT (0x00C2) SINT
INT 2 INT (0x00C3) INT
DINT 4 DINT (0x00C4) DINT
LINT 8 LINT (0x00C5) LINT
REAL 4 REAL (0x00CA) REAL
LREAL 8 LREAL (0x00CB) REAL (32-bit, truncates)
STRING[16] 18 SHORT_STRING (0x00DA) STRING (length-prefixed)
ARRAY[0..9] OF DINT 40 DINT array DINT[10]

LREAL is the only mismatched type: NJ/NX treats REAL as 32-bit IEEE 754 and LREAL as 64-bit, while Studio 5000 LREAL is also 64-bit but CIP packaging may pad to 8 bytes. For high-resolution analog values above the LREAL limit, prefer writing two DINTs and reassembling on the AB side, or move to an EtherNet/IP I/O assembly connection instead of explicit messaging.

Method 2 — DeviceNet Bridge Using Dual Scanners in Slave Mode

For plants that already operate a DeviceNet backbone, a bridge architecture avoids any CIP routing through the backplane. Install two DeviceNet scanners on the same trunk: a 1756-DNB or 1769-SDN for the AB side and a CS1W-DRM21 or CJ1W-DRM21 for the Omron side. Configure the AB scanner in slave mode so it appears as a 1024-bit I/O slave to the Omron scanner. The Omron scanner reads its own remote I/O and exchanges a polled I/O block of up to 128 words with the AB scanner, which then exposes that block to the ControlLogix backplane as a regular 1756-DNB rack image.

Bridge Element Omron Side Allen-Bradley Side
Scanner module CS1W-DRM21 / CJ1W-DRM21 1756-DNB / 1769-SDN
Master/Slave mode Master only Master + Slave (node 00 default)
Exchange block Up to 128 words (256 bytes) per scan Exposed as 1756-DNB Input/Output words
Baud rate 125 / 250 / 500 kbps 125 / 250 / 500 kbps
Trunk distance 500 m @ 125 kbps 500 m @ 125 kbps
MAC ID allocation Slave MAC IDs 1-63 for AB scanner Slave MAC ID 00 reserved

The dual-scanner architecture is favored in brown-field upgrades because it survives any mix of legacy PLCs: an SLC 5/04 in the same rack as the ControlLogix can pull data from the same 1756-DNB without any cross-vendor CIP messaging. The cost is additional trunk length and a second scanner node per chassis, and the 128-word ceiling per poll cycle is hard-limited by the CS1W-DRM21 buffer size. Latency on a 500 kbps trunk with two scanners and three drops is approximately 12-18 ms per scan, which is acceptable for supervisory interlocking but too slow for high-speed motion hand-off.

Method 3 — Serial Protocol Mapping (DF1, Host Link, Modbus RTU)

For small data volumes and existing RS-232/RS-485 infrastructure, point-to-point serial remains the lowest-cost path. The Omron CP1H and CJ2 serial port can be configured to speak Host Link (default), Modbus RTU slave, or raw ASCII. The Allen-Bradley MicroLogix 1400 serial port can be configured to speak DF1 full-duplex, Modbus RTU master, or ASCII. Cross-wiring a Host Link link between two Host Link peers fails because both sides speak the same role and neither initiates; one side must be reconfigured as a Modbus RTU master/slave pair.

Path Omron Role AB Role Cabling
Host Link <-> DF1 Host Link slave (default) DF1 master Not directly compatible; requires gateway
Modbus RTU master/slave CP1W-CIF11 in Modbus RTU slave MicroLogix 1400 Modbus RTU master (MSG) RS-485 2-wire, 9600-115200 bps
Modbus RTU bidirectional CP1W-CIF11 master MicroLogix 1400 slave RS-485 2-wire
DF1 point-to-point Not supported natively DF1 master + slave Not applicable to Omron

The MicroLogix 1400 supports Modbus RTU master via the MSG instruction with message type Modbus Master. The instruction frame includes a Modbus function code (0x03 for holding-register read, 0x06 for single-register write, 0x10 for multi-write) and the address of the slave. Omron's Modbus address space starts at 0x0000 for CIO, 0x1000 for DM, 0x3000 for HR, and 0x6000 for WR; the CP1W-CIF11 must be configured with Serial Gateway Mode = Modbus RTU Slave and the CIO/DM/HR/WR bases set to match the master. Polling rates of 50 ms are typical for 16-word reads at 19200 bps, well below the 128-word ceiling of the DeviceNet bridge.

Method 4 — Modbus/TCP Gateway Translation

A protocol-translating gateway (such as ProSoft, HMS Anybus, or Red Lion CR3000) presents an EtherNet/IP scanner interface to the ControlLogix side and a Modbus/TCP server interface to the Omron side. The gateway itself consumes the application-layer translation, so the ControlLogix sees standard CIP tags and the NJ/NX sees standard Modbus registers. This approach is the cleanest when the data volume exceeds 256 words or when CIP Security on the Omron side blocks explicit messaging from non-Rockwell originators.

Gateway EtherNet/IP Scanner Capacity Modbus/TCP Server Capacity CIP Security Pass-Through
ProSoft PLX32-EIP-MBTCP Up to 16 connections Up to 32 server connections No (transparent)
HMS Anybus X-Gateway Up to 8 connections Up to 16 server connections Yes (TLS 1.2 tunnel)
Red Lion CR3000 Up to 32 connections Up to 64 server connections Yes with firmware 4.30

The gateway adds 5-15 ms of latency per transaction and a single point of failure for both legs of the conversation. Plan a hot-standby gateway or a direct CIP fallback for safety-related interlocks that the gateway cannot serve.

Configuration Walkthrough: NJ501 to CompactLogix 5380 via EtherNet/IP

Prerequisites

  • Sysmac Studio 1.40 or later (NJ501 firmware 1.18 baseline)
  • Studio 5000 v33 or later (CompactLogix 5380 firmware 30.011 or later)
  • Ethernet switch supporting IGMP snooping if multicasts will be used for I/O assemblies
  • Static IP addresses on a private subnet (192.168.1.0/24 typical)

Step-by-Step on Sysmac Studio

  1. Open the NJ501 project and navigate to Configurations and Setup -> EtherNet/IP Port Settings. Verify IP Address, Subnet Mask, and that TCP/IP Keep Alive is enabled (default 30 s).
  2. Under EtherNet/IP Connections, add a new Tag Set named ToCompactLogix containing all DINT and REAL tags to be exposed. Configure the connection as Output from the NJ501 perspective.
  3. Add the CompactLogix 5380 as a target device with IP address 192.168.1.50. Set the Requested Packet Interval (RPI) to 50 ms (10 ms minimum, 100 ms typical).
  4. Bind the Tag Set ToCompactLogix to the connection. Sysmac Studio will auto-generate the CIP assembly instance numbers (typically instance 101 for output, 102 for input).
  5. Insert the CIPUCMMRead function block into a POU as shown in the snippet above. Set the path string to '192.168.1.50\1\1\0' and the service code to 16#4C for reads.

Step-by-Step on Studio 5000

  1. Open the 5069-L306 project and add an Ethernet device to the I/O tree under the embedded Ethernet port. Use the EDS for the NJ501 (downloadable from the ODVA site if the EDS is missing from Studio 5000 v33).
  2. Configure the connection RPI to match the NJ501 setting (50 ms). Select Point-to-Point for unicast or Multicast if multiple AB controllers must consume the same data.
  3. Create MSG instructions for any explicit reads/writes that cannot be routed through the I/O assembly (rare for periodic data, common for recipe management and diagnostics).
  4. In the MSG instruction properties, set Communication Path to 192.168.1.20, 1, 1 where 192.168.1.20 is the NJ501 PORT1 IP and the trailing 1, 1 selects CIP port 1, slot 1.

Verification

  • Force a tag on the NJ501 (e.g., HMI_LinkOK := TRUE) and observe the corresponding tag on the CompactLogix update within one RPI (50 ms).
  • On the NJ501, navigate to Troubleshooting -> EtherNet/IP Connection Status and confirm the connection state shows Connected, not Timeout or Duplicate Node.
  • On the CompactLogix, open Module Properties -> Connection and verify the Status field reads Running with zero Sequence Count Errors after 1000 scans.
  • Use Wireshark with a CIP dissector (port 44818) to capture one CIP round-trip and confirm the response service code echoes 0x4C with General Status = 0x00.

Diagnostic Tags and Fault Codes

CIP General Status (hex) Meaning Typical Cause in Cross-Vendor Setup
0x00 Success No fault
0x01 Resource not available AB MSG connection cache full
0x02 Invalid data destination Remote tag does not exist or wrong atomic type
0x04 Path segment error Connection Path malformed; check backplane slot
0x05 Path destination unknown Target IP unreachable or wrong CIP port
0x06 Partial transfer Request data size larger than remote tag
0x08 Service not supported Service code 0x4C/0x4D disabled in target firmware
0x0F Privilege violation CPU in Run/Remote Run, but MSG execution disabled
0x1F Vendor-specific error Omron error code in ErrorID; consult NJ manual

The Omron ErrorID output on CIPUCMMRead/Write is a DINT whose low word encodes a transport-level result and whose high word encodes the CIP general status. Decode with the formula CIP_Status := SHR(ErrorID, 16) AND 16#00FF in ladder or ST on either side.

Troubleshooting Matrix

Symptom Likely Cause Resolution
MSG instruction shows ERR = 16#0204 Connection Path slot does not match target Verify target slot via RSLinx EDS browse
NJ501 CIPUCMMRead ErrorID = 16#0400xxxx with CIP Status 0x05 Wrong CIP port in ConnectionPath Replace trailing '\0' with '\1' for backplane slot 1
CompactLogix sees 1756-EN4TR but cannot open MSG Bridge mode disabled or route not added Add route in Studio 5000 Logix Designer
I/O assembly runs, but MSG to symbolic tag fails Studio 5000 older than v28 Upgrade Logix Designer to v33 minimum
Periodic data updates, but string tags are truncated STRING length mismatch Match the trailing 2-byte length word exactly between controllers
DeviceNet scanner goes to Bus-Off after AB scanner restart MAC ID conflict Change AB scanner node away from 00 if used elsewhere
Modbus RTU polls succeed for 5 minutes, then 0x06 exception Slave buffer overflow on Omron CIF unit Reduce poll rate to 200 ms minimum
Wireshark shows only TCP SYN, no ENIP Firewall blocking 44818 Open TCP 44818 and UDP 2222 on managed switch ACLs

Performance and Throughput Expectations

EtherNet/IP explicit messaging with a cached Class-3 connection on a 100 Mbit/s switch typically completes one DINT read in 3-6 ms. A 10-DINT block read finishes in 8-12 ms. Connected I/O assemblies at a 50 ms RPI deliver deterministic 50 ms update latency with sub-millisecond jitter, while unconnected UCMM messages are jitter-sensitive and may vary from 4 ms to 30 ms under load. The DeviceNet bridge at 500 kbps delivers 128 words every 12-18 ms per scanner pair. Modbus RTU at 19200 bps yields 16 words every 50 ms. Plan cycle-time budgets accordingly: use I/O assemblies for interlocking, MSG for recipe and diagnostics, and Modbus RTU only for non-time-critical supervisory data.

Selection Guidance

Choose EtherNet/IP explicit messaging when both controllers are NJ/NX and CompactLogix/ControlLogix and the data set is under 200 words. Choose the DeviceNet dual-scanner bridge when the backbone already exists and additional CIP routing would be too costly or when legacy PLC-5/SLC 5/04 controllers must share the same data. Choose the Modbus/TCP gateway when CIP Security requirements on the Omron side block direct explicit messaging or when the data must fan out to more than two controllers. Avoid serial protocols for new installations; reserve them for brown-field retrofits where the existing cable plant and panel space are fixed.

Does Omron NJ/NX natively speak EtherNet/IP or only FINS?

NJ and NX controllers with Sysmac Studio firmware 1.10 or later expose both FINS (default on TCP 9600) and EtherNet/IP (TCP 44818 / UDP 2222) on the same physical port. FINS remains enabled for legacy CX-One traffic, but EtherNet/IP is enabled by default in newer projects and is the recommended application-layer protocol for cross-vendor integration.

Can a ControlLogix read an Omron tag by name without symbolic addressing?

Yes, but only with Studio 5000 Logix Designer v28 or later. In older versions you must specify the CIP path as IP, 1, 1 and use the CIP Read/Write Tag service code with the remote tag's instance number rather than its symbolic name. Upgrade Studio 5000 to v33 or later to enable symbolic tag routing to Omron NJ/NX controllers.

What is the maximum data block size for a single CIP explicit message?

The CIP specification allows up to 65535 bytes per explicit request, but practical limits on Studio 5000 MSG are 3984 bytes for a DINT array and 1980 bytes for a STRING array. Omron NJ501 imposes a per-message cap of 4000 bytes (1000 DINTs) on CIPUCMMRead/Write. For larger transfers, split into multiple MSG instructions and use a handshake tag to sequence the blocks.

Why does the connection path 192.168.1.50\1\1\0 work from Sysmac Studio but 192.168.1.50, 1, 1, 0 fails?

Sysmac Studio accepts both backslash and comma delimiters, but the trailing segment matters. 0 selects the controller in slot 0 of the CompactLogix chassis, which is the valid 1756-L8[]E slot. If your controller is in slot 1, change the final segment to 1. Using the wrong slot produces CIP general status 0x05 (Path Destination Unknown).

Is a CIP Security configuration required between NJ/NX and CompactLogix?

Not for plain explicit messaging. CIP Security (TLS 1.2 on port 2221) is required only when one or both controllers are configured with CIP Security mode enabled in their security policy. If either side has CIP Security turned on, both must be configured with matching certificates and the symmetric port 2221 must be reachable. Disable CIP Security on both sides during commissioning to rule it out, then re-enable after the unsecured link is verified.

Back to blog