Resolving CJ1M Ethernet Connection Failure in CX-Programmer v8

James Nishida13 min read
CJ/CP SeriesOmronTroubleshooting
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

Problem Overview

When commissioning a CJ-series modular PLC (typically a CJ1M with a CJ1W-ETN21 Ethernet unit, or a CP1L series with -ETN suffix) using CX-Programmer v8.x, technicians frequently encounter a state where:

  • The host PC can ping the PLC IP address successfully (e.g., ping 192.168.250.4 returns replies within 1 ms).
  • CX-Programmer returns "Conexión fallida" (Connection Failed) when invoking Online Node → EtherNet/IP with only the destination IP.
  • The PLC's RD (Receive Data) and SD (Send Data) LEDs blink synchronously at roughly 1 Hz, but the session never completes.
  • The fault repeats whether the PLC is connected directly through a crossover cable or through a switch with straight-through cabling.

These symptoms indicate a FINS routing or project-mapping problem, not a layer-1/link fault. Reachability at the IP layer is intact, but the application-layer handshake (FINS/TCP or EtherNet/IP) never negotiates because CX-Programmer cannot resolve a valid FINS source/destination pair on the host PC.

Affected Hardware, Firmware, and Software

Components verified in the field scenario
Component Typical Identifier Notes
CPU User reference "CJ1M-CPU43-ETN" (decoded as CJ1M-CPU13/23 with CJ1W-ETN21, or CP1L-L4@/CP1L-M40DR-A with -ETN option) CJ1M-CPU43 is not a direct Omron catalog number; verify the faceplate label. The trailing "ETN" is almost always the Ethernet unit, not the CPU.
Ethernet Module CJ1W-ETN21 (10/100 Mbps, FINS/UDP+TCP, EtherNet/IP) Current production unit; ETN11 is legacy 10 Mbps only.
Programming Software CX-Programmer v8.21 (bundled with CX-One 3.x/4.x) "Online Node" is preserved in CX-Programmer v9.x and v10.x. Sysmac Studio does not directly support classic CJ-series.
Host PC Windows 10/11, on-board NIC, static IPv4 192.168.250.2 / 255.255.255.0; gateway blank for layer-2 only.
Cabling CAT-5e straight-through via switch and CAT-5e crossover direct Both tested; identical result rules out cabling.
PC / CX-Programmer 192.168.250.2 Switch / Hub Layer 2 CJ1M + ETN21 192.168.250.4 CAT-5e CAT-5e ping → OK FINS 9600 / CIP 44818 RD / SD blink
If the PC shows a multi-NIC warning (e.g., VPN, Hyper-V virtual switch, VMware adapter all enabled), Windows may pick the wrong source IP for the FINS source port and the session will time out even with a correct destination. Disable virtual adapters temporarily to confirm.

Root Cause Analysis

CX-Programmer's Online Node connect path uses a flat, host-only FINS routing table stored in the Windows registry under:

HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\OMRON\CX-Server\FINS\RoutingTable

If the host routing table lacks the destination IP / FINS node pair, Online Node → EtherNet/IP fails even when L3 connectivity exists. "Online Node" is meant for transient ad-hoc connections where routing has been pre-populated, typically by CX-Integrator or a previous successful CX-Programmer project.

For a stable project-target configuration, CX-Programmer expects the user to declare the network inside the project:

  1. Create (or open) a project whose Device Type matches the CPU faceplate.
  2. Open Change PLC, confirm CPU type, then open Settings → Network.
  3. Select Network Type = Ethernet (not "None" or "Toolbus").
  4. Under Ethernet, open Controller, then enter IP Address = 192.168.250.4.

When the user invokes Online Node → EtherNet/IP directly without a project, CX-Programmer sends a FINS/TCP frame to UDP/TCP port 9600. The PLC's ETN unit sees a FINS node it does not recognize (because the PC's routing table points nowhere) and rejects the session. The RD/SD LEDs blink because ARP/ICMP traffic is fine but every FINS frame increments a FINS node error counter on the unit; the blinking reflects the rejected-but-not-dropped frame stream.

Ping PLC OK? Project Network = Ethernet? IP = PLC address? CX-Integrator routing No → fix L1/L2 No → edit project No → CX-Integrator

Prerequisites

Prerequisite Detail
Hardware inspection Confirm CPU and ETN-unit faceplate labels. Rotary switches on the ETN unit (unit number) and CPU faceplate (FINS node) must be readable.
Power cycle After any rotary-switch change, cycle power so the ETN unit re-reads the unit number.
CX-One install CX-Programmer v8.x or v9.x with CX-Integrator present in the suite.
Static IP on host 192.168.250.2 / 255.255.255.0 / gateway blank for single-subnet work.
Firewall exception Allow CX-Server.exe through Windows Firewall on TCP 9600, UDP 9600, TCP 44818, UDP 2222.
Cabling validated ping 192.168.250.4 must succeed before continuing troubleshooting.
Backup Save the current CX-Programmer project; export the PLC's existing program via memory-card transfer if available.

Step-by-Step Resolution

5.1 Create or repair the project

  1. Launch CX-Programmer.
  2. Select File → New. Name the project (e.g., CJ1M_EthOnline.proj).
  3. From Device Type, select CJ1M (or CP1L/CS1G/CS1H matching the faceplate).
  4. From CPU Type, choose the matching CPU (in the original field report, the model selected after the fact was CPU13).
  5. Click Settings; confirm the Network tab shows Network Type = Ethernet before saving.

5.2 Configure the network type inside the project

The fix that ultimately worked in the field was to declare the network inside the project, not at "Online Node":

  1. Right-click the project icon in the project workspace.
  2. Select Change PLC. This reopens the same wizard used at project creation.
  3. Confirm Device Type = CJ1M.
  4. Confirm CPU Type = the model selected in 5.1 (e.g., CPU13 for CJ1M-CPU13).
  5. Open Settings and select the Network tab.
  6. Change Network Type from its default (often None on a fresh project or Toolbus if migrated) to Ethernet.
  7. Under Ethernet settings, click Controller → set IP Address = 192.168.250.4.
  8. Set Source IP explicitly to the host NIC if the PC has more than one IPv4 active (e.g., 192.168.250.2).
  9. Click Apply, then OK; save the project when prompted.
A common cause of follow-on failures is the project IP field being left blank or pointing to the host NIC by mistake. If you are unsure which IP is the PLC's, run arp -a on the PC and locate the MAC address printed on the ETN-unit faceplate; the matching IPv4 entry is the PLC's IP.

5.3 Verify project side before testing

  1. Switch CX-Programmer to Online mode (toolbar button or Ctrl+W).
  2. Watch the status bar — it should progress from Connecting to Connected to CJ1M CPU13 on Ethernet.
  3. If the dialogue still fails, open PLC → Communications and verify that Network Type: Ethernet (FINS/TCP) is selected (CX-Programmer v9.x and later offer an explicit FINS/TCP option; v8.21 defaults to FINS/UDP).

5.4 Switch back to Online Node if you still need ad-hoc

After the project-driven connection succeeds, CX-Integrator's network browse populates a routing entry, and from this point Online Node → EtherNet/IP also succeeds because the host routing table is now set.

Verification

After applying the project-level network fix, run a sequence of checks:

  1. Click Connect Online. The status bar should show Connecting to CJ1M CPU13 on Ethernet...Connected.
  2. Select PLC → Transfer → To PLC. Browse sections (PC, PLC, Comments, Program) should populate with the destination CPU.
  3. Open PLC Information (Ctrl+Shift+I) and confirm CPU model, CPU unit version, and the ETN-unit's firmware (the firmware character string is shown on the right pane of the CX-Programmer status window).
  4. Switch the PLC to Monitor mode (PLC → Mode → Monitor) and confirm the lower-right pane shows "Monitor Mode".
  5. Toggle a single output on/off from the project and confirm the physical LED on the output module follows.

If the LEDs blink synchronously again, return to Change PLC → Network and re-verify both IP Address (PLC target) and Source IP (host NIC).

Rotary Switch and IP Configuration Reference

Switch / Parameter Position Meaning
Unit Number rotary on ETN unit 0 (default) or 1 FINS unit number used for routing inside the backplane; historically required, de-emphasised on ETN V2 and later.
FINS Node rotary on CPU faceplate e.g., 4 FINS node of the CPU bus. Used by messages between FINS-aware peers.
BootP/RARP toggle (DIP on ETN faceplate) Off for static IP Enable only when a BootP/DHCP service is publishing an IP reservation for the unit's MAC.
Web server enable (PLC Setup) Off (default) Reduces startup multicast traffic and avoids 192.168.250.4:80 appearing in some scanners.
PLC Setup addresses 100–115 in ETN unit Static write IP, subnet mask, default gateway, FINS node, UDP port, FINS/TCP port. Edit via CX-Integrator's Edit PLC Setup.

For ETN21 firmware versions V2.0 and newer, FINS/TCP and UDP/TCP port numbers are configurable; the default is 9600. CIP/TCP listens on 44818 and CIP I/O discovery on 2222.

Network Type Differences in CX-Programmer

Property Online Node → EtherNet/IP Change PLC → Network = Ethernet
Purpose Single PLC, ad-hoc, no project metadata required. Persistent project target — used for download, online edits, monitoring.
FINS routing source Host routing table (registry). Project-level connection settings.
CX-Integrator preset needed? Recommended (to seed routing). No — settings entered inline.
User-visible IP prompt "IP address" input box on the connect dialog. Stored in the project; can be overridden at connect time.
Best used for Service work, swap-in without project file. Permanent commissioning and ladder edits.
Common fault if misconfigured "Connection Failed" with RD/SD blink on ETN unit. Project-mismatch alert if model set wrong.

The user's remedy worked because the project-defined connection path populated the routing table implicitly, so CX-Programmer no longer depended on the empty Online Node entry.

LED Diagnostic Indicators

LED Steady On Blinking Off (link present)
PWR (green) Power OK No power
RUN (green) PLC in RUN/MONITOR Initialising or faulted PLC in PROGRAM or fatal error
COMM (green on ETN unit) Communicating with CPU bus Data in transit No CPU traffic > 2 s
RD (amber/green) Receiving data Receiving packets but unable to reply — typical for routing failures Inactive link
SD (amber/green) Sending data Sending packets but responses lost — typical for FINS node mismatch Inactive link
ERH (red) FINS / EtherNet/IP protocol error or node-number conflict Initialising
ERC (red on CPU) CPU hardware error

If RD and SD blink in tandem at approximately 1 Hz while CX-Programmer is connected but never settle into a steady RD-only pattern, treat the symptom as a routing or FINS node mismatch. Run CX-Integrator → Network → Connect to Network → Ethernet → Resolve Network and confirm the discovered device shows the same IP and firmware version as the physical unit.

Routing Tables, FINS Ports, and CX-Integrator

CX-Integrator is the dedicated tool for FINS routing across multiple subnets. On a single-segment Ethernet network it still matters, because it can:

  1. Discover all FINS nodes reachable via UDP 9600 broadcast.
  2. Edit the host routing table so CX-Programmer and any OPC server can talk FINS reliably.
  3. Bind the destination FINS node (1–254) used by Online Node.

To verify routing after the project fix:

  1. Open CX-Integrator and select Network → Connect; choose Ethernet.
  2. The right pane should list 192.168.250.4 and the corresponding CPU type (CJ1M, CP1L-M, CS1G, etc.) within a few seconds.
  3. Right-click the discovered PLC and select Set as Destination Network; assign a local network number (0–127) and a PLC node matching the CPU faceplate rotary (e.g., 4).
  4. Save the routing table. CX-Integrator writes to HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\OMRON\CX-Server\FINS\RoutingTable.
  5. From this point, Online Node succeeds because the routing entry exists; subsequent CX-Programmer projects can also rely on the same table.

Multinetwork engineering: when the PLC and PC are on different subnets (e.g., PC at 192.168.250.0/24 and PLC behind an Ethernet/IP router at 192.168.251.0/24), CX-Integrator's Routing Table Editor must include the intermediate router as a "gateway" entry. Without this, FINS frames are dropped at the first hop even when ICMP succeeds.

Common Pitfalls and Edge Cases

Symptom Likely Cause Resolution
"Cannot connect" with ETN21 V3+ and CX-Programmer v8.21 FINS/TCP frame-size negotiation mismatch; older CX-Server defaulted to 1004-byte frames, modern ETN allows up to 1998. Upgrade CX-One to v4.6x or newer, which bundles CX-Server v3.x.
Ping works but CX-Programmer fails intermittently Network firewall removes CX-Programmer from whitelist after reboot or Windows update. Disable Windows Firewall temporarily or pre-create a rule for CX-Server.exe.
ETN unit COM LED rotates with no link RJ-45 cable pairs split (PoE or partial swap). Use a known-good CAT-5e and re-terminate, or swap for a store-bought patch cable.
Connection works from Change PLC but fails from Online Node Routing table was overwritten by another tool (FINSGateway, custom OPC client). Re-open CX-Integrator, re-set the destination, or stick with project-based connect.
PLC changes IP after restart DHCP or BootP service present but no reservation. Configure static IP in PLC Setup, disable BootP/RARP DIP on the ETN faceplate.
PLC accepts the first connect then drops TCP keep-alive interval on intermediate router is too short. Direct cable, or configure port-forwarding + keep-alive in router ACL.
Web server on 192.168.250.4 works but CX-Programmer fails Web server uses TCP 80; CX-Programmer needs FINS (9600) and CIP (44818/2222). Open the firewall inbound rules for 9600 UDP/TCP and 44818/2222 TCP.
PC shows "multiple networks" warning because of VM/VPN adapters Windows picks wrong source IP for outgoing TCP. Disable virtual adapters, or set a metric-binding route: route -p add 192.168.250.0 mask 255.255.255.0 192.168.250.2 metric 5.
"Different PLC type" warning even though label matches Project file from an older CX-Programmer version stored an incompatible module set. Open Change PLC and re-select every CPU Bus / Expansion rack configuration manually.
CX-Programmer hangs at 50% "Connecting..." Auto-MDIX disabled on legacy NIC + crossover needed. Force NIC speed/duplex to 100 Mbps / Full Duplex in Device Manager.
For multi-PLC FINS networks where the host acts as both CX-Programmer source and OPC UA gateway, never rely on ad-hoc Online Node. Build a CX-Integrator routing table once, export it to .frt, and re-import it on each engineering workstation.

Safety and Network Hygiene

  • Place CJ1M and ETN21 on a control LAN or VLAN isolated from corporate traffic; many PLCs have no built-in authentication on FINS/UDP 9600 and will respond to anyone on the segment.
  • Disable the ETN21's web server in production unless actively used.
  • Document the static IP, FINS node, and routing table in the project's README.txt; the rotary-switch node is often the only thing rescue crews need during an outage.
  • Verify PLC programs against Omron's documented limits before download; 16K-step variants (CJ1M-CPU13 / CPU23) have I/O table sizes that older project files can exceed.
Always back up the current project via File → Save As before changing Change PLC → Settings; a CPU-type change resets the I/O table and forces re-creation of special I/O units.

Why does ping succeed while CX-Programmer still says "Connection Failed"?

Ping uses ICMP at layer 3. CX-Programmer negotiates FINS/TCP on port 9600 or EtherNet/IP on ports 44818/TCP and 2222/UDP. Ping success only confirms that the NIC, switch, cabling, and the PLC's TCP/IP stack are operational; it does not validate routing tables, firewall ports, or FINS node binding. The session cannot open until the FINS port and node are negotiated correctly.

What is the actual difference between "Online Node" and a project-configured Ethernet connection?

Online Node depends on a host-side FINS routing table that is typically seeded with CX-Integrator. A project-configured connection stores the IP and CPU type inline in the CX-Programmer project and does not require a prior routing-table edit, which is why it often "just works" the first time.

Do I need CX-Integrator installed for a basic Ethernet connection?

No. For a single PLC, the project-based connection under Change PLC → Network = Ethernet is enough. CX-Integrator becomes necessary when you route across subnets, use FINSGateway, share an OPC server, or want robust online browsing and discovery.

How do I check what FINS node the PC thinks the PLC has?

Open CX-Integrator with the Ethernet connection active, select Network → Status. The status pane shows the FINS node, source and destination network numbers, and the TCP/UDP port that successfully negotiated. A blank or "0" destination network number usually indicates a missing routing entry.

Which ports must be allowed in the Windows firewall for CX-Programmer?

Open inbound and outbound rules for UDP 9600 (FINS/UDP), TCP 9600 (FINS/TCP), TCP 44818 (EtherNet/IP messaging), and UDP 2222 (EtherNet/IP I/O discovery). Grant the rule to the executable C:\Program Files (x86)\OMRON\CX-One\CX-Server\CX-Server.exe, or to whatever path CX-One v4.x installed under.

Does the cable have to be crossover for a direct PC-to-PLC connection?

Not on modern equipment. The CJ1W-ETN21 and current PCs both support Auto-MDIX, so a straight-through CAT-5e is sufficient. The legacy CJ1W-ETN11 (10 Mbps) and very old NICs without Auto-MDIX do need a crossover cable. Either topology was tested in the field scenario with identical results, which rules out cabling as the cause.

Back to blog