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
pingthe PLC IP address successfully (e.g.,ping 192.168.250.4returns 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
| 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. |
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:
- Create (or open) a project whose
Device Typematches the CPU faceplate. - Open
Change PLC, confirm CPU type, then openSettings → Network. - Select Network Type = Ethernet (not "None" or "Toolbus").
- 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.
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
- Launch CX-Programmer.
- Select
File → New. Name the project (e.g.,CJ1M_EthOnline.proj). - From
Device Type, select CJ1M (or CP1L/CS1G/CS1H matching the faceplate). - From
CPU Type, choose the matching CPU (in the original field report, the model selected after the fact was CPU13). - Click
Settings; confirm theNetworktab 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":
- Right-click the project icon in the project workspace.
- Select
Change PLC. This reopens the same wizard used at project creation. - Confirm
Device Type= CJ1M. - Confirm
CPU Type= the model selected in 5.1 (e.g., CPU13 for CJ1M-CPU13). - Open
Settingsand select theNetworktab. - Change
Network Typefrom its default (often None on a fresh project or Toolbus if migrated) to Ethernet. - Under Ethernet settings, click
Controller→ setIP Address= 192.168.250.4. - Set
Source IPexplicitly to the host NIC if the PC has more than one IPv4 active (e.g.,192.168.250.2). - Click
Apply, thenOK; save the project when prompted.
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
- Switch CX-Programmer to
Onlinemode (toolbar button orCtrl+W). - Watch the status bar — it should progress from Connecting to Connected to CJ1M CPU13 on Ethernet.
- If the dialogue still fails, open
PLC → Communicationsand verify thatNetwork 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:
- Click
Connect Online. The status bar should show Connecting to CJ1M CPU13 on Ethernet... → Connected. - Select
PLC → Transfer → To PLC. Browse sections (PC, PLC, Comments, Program) should populate with the destination CPU. - 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). - Switch the PLC to
Monitormode (PLC → Mode → Monitor) and confirm the lower-right pane shows "Monitor Mode". - 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:
- Discover all FINS nodes reachable via UDP 9600 broadcast.
- Edit the host routing table so CX-Programmer and any OPC server can talk FINS reliably.
- Bind the destination FINS node (1–254) used by
Online Node.
To verify routing after the project fix:
- Open CX-Integrator and select
Network → Connect; chooseEthernet. - The right pane should list
192.168.250.4and the corresponding CPU type (CJ1M, CP1L-M, CS1G, etc.) within a few seconds. - 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). - Save the routing table. CX-Integrator writes to
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\OMRON\CX-Server\FINS\RoutingTable. - From this point,
Online Nodesucceeds 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. |
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.
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.