Appearance
Adding Omron PLCs (FINS)
Last updated
The Omron FINS driver speaks FINS over TCP or UDP on port 9600 with a built-in implementation (no extra library). It reads and writes 16-bit words, single bits, and 32- and 64-bit integers and floats spread over consecutive words.
One-time PLC setup
- In CX-Programmer (CJ/CS/CP) or Sysmac Studio (NJ/NX), open the Ethernet unit or built-in port settings.
- Note the PLC's FINS node number (often the last octet of its IP address). For FINS/TCP, make sure FINS/TCP is enabled on port 9600. For FINS/UDP, set the IP address conversion to automatic (dynamic) so the PLC answers to whichever address asked.
- On NJ/NX controllers, FINS gives access to CIO/DM memory only if variables are mapped to those areas (AT specification). Otherwise use OPC-UA on the NX/NJ.
Connection fields
| Field | Value |
|---|---|
| IP Address | PLC or Ethernet unit. |
| Port | 9600. |
| Transport | Under Driver Settings: TCP (default) or UDP. Older CP1 and CJ1 units, and many existing FINS networks, only offer UDP. |
| PLC node number, Appliance node number, Unit address | Under Driver Settings. Defaults 1, 10 and 0. On UDP, set PLC node number to the PLC's FINS node if it isn't 1, and give the appliance a node number nothing else on the FINS network uses. On TCP the PLC assigns both numbers in the FINS/TCP handshake and the driver uses those; the appliance number is only a request. |
| Word order | Under Driver Settings. How 32- and 64-bit values sit in their words. Default CDAB (low word first), which is how Omron stores DINT and REAL. |
Connect opens TCP (10-second timeout) and performs the FINS/TCP handshake, or for UDP sends a Controller Data Read and waits up to 5 seconds for the answer. The CPU model it reports (e.g. CJ2M-CPU31) appears in the device info. A read that times out or loses the connection marks the device Disconnected, and it is reconnected with backoff (see Polling & Reconnect); a request the PLC refuses with an error code only makes that tag Bad.
Address syntax
| Example | Meaning | Type |
|---|---|---|
D100 or DM100 | DM word 100, unsigned | int (0–65535) |
D100:INT | DM word 100, signed | int (−32768–32767) |
D100:DINT, D100:UDINT | D100–D101 as a signed / unsigned 32-bit integer | int |
D100:REAL | D100–D101 as a 32-bit float | float |
D100:LREAL | D100–D103 as a 64-bit float | float |
D100.5 | bit 5 of D100 | bool |
CIO0 or IO0 | CIO channel 0 | int |
CIO0.3 | CIO 0.03 | bool |
W10 | Work word W10 | int |
H0 | Holding word H0 | int |
A0 | Auxiliary word A0 | int |
T0 | Timer 0 present value | int |
C0 | Counter 0 present value | int |
E0 | Extended memory bank 0, word 0 | int |
The type suffix (:INT, :UINT, :DINT, :UDINT, :REAL, :LREAL) works on every area. Without one a word reads as unsigned 16-bit (:UINT).
Browse Tags lists nine example addresses (D0, D1, D10, D100, W0, H0, T0, C0, CIO0) or your driverConfig.tags list. Add real addresses with Add Tag.
Writes
Word addresses write a 16-bit value (a negative number is written as its 16-bit two's complement); typed addresses write all their words in one request, and a value outside the type's range is refused. Bit addresses (D100.5) read the word, change the bit and write it back. The PLC must be in a mode that allows memory writes (Monitor or Program).
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
| Error at connect; log Bad FINS handshake response or handshake refused | Not a FINS/TCP port, FINS/TCP disabled, or the requested appliance node number is in use. | Enable FINS/TCP on 9600, or change Appliance node number. |
| UDP: Error at connect, log no FINS/UDP answer | Wrong IP or port, a firewall, or the PLC answers a fixed address instead of the sender (static IP conversion). | Set the PLC's FINS/UDP address conversion to automatic, or use TCP. |
| Log FINS error code: 0x… | The PLC rejected the request (address out of range, area not supported by the model, wrong node). | Check the address against the PLC's memory map, and PLC node number on UDP. |
| 32-bit values look scrambled | Word order differs. | Try Word order ABCD. |