OMRON FINS
FINS (Factory Interface Network Service) is the standard communication protocol for Japanese OMRON PLCs. Nearly every OMRON series — CJ / CS / CP / NJ / NX — supports FINS/TCP or FINS/UDP.
These PLCs are commonly found in automotive parts, food and beverage, and pharmaceutical packaging lines.
Registration form entries
| Field | What to enter | Example |
|---|---|---|
| IP address | IP of the PLC | 192.168.0.110 |
| Port | FINS port | 9600 (standard) |
| Network number (network) | FINS network number | 0 (single network) |
| Node number (node) | Node number of the PLC | Usually the last octet of the IP (110) |
| Unit number (unit) | Unit in a multi-CPU setup | 0 |
In CX-Programmer / Sysmac Studio on the PLC, [Built-in Ethernet Settings] → FINS/TCP or FINS/UDP must be enabled.
OMRON commonly uses the last octet of the IP as the node number (e.g. 192.168.0.110 → node 110). However, it can be set to any value under [PLC Settings] → [Built-in Ethernet] in CX-Programmer, so always follow the value shown on the PLC.
PLC address notation for tags
OMRON memory areas and their short notation:
| Notation | Area | Notes |
|---|---|---|
D100 | Data Memory 100 | Most common, 16-bit |
W50 | Work Area 50 | 16-bit |
H10 | Holding Area 10 | 16-bit, retained after power OFF |
A100 | Auxiliary Area | 16-bit |
CIO0 | Core I/O word 0 | 16-bit |
CIO0.5 | Bit 5 of CIO word 0 | 1 bit |
E0_100 | Extended DM bank 0, addr 100 | 16-bit |
Bit / word notation
<area><number>→ 16-bit word (e.g.D100)<area><number>.<bit>→ bit (e.g.CIO0.5)<area><number>:<data-type>→ explicit data type (e.g.D100:DINT)
Data type mapping
| PLC value | Data type | Type modifier | PLC address example |
|---|---|---|---|
| Bit (CIO bit / W bit) | Boolean | (leave empty) | CIO0.5, W50.0 |
| 16-bit integer | Integer | (leave empty) | D100 |
| 16-bit unsigned | Integer | UI | D100 |
| 32-bit integer (D100–D101) | Integer | DW | D100 |
| 32-bit float | Float | REAL | D200 |
| 64-bit float | Double | LREAL | D300 |
| String (BCD/ASCII) | String | STR[N] | D500 |
OMRON stores 32-bit data as a pair of words (e.g. D100 = lower, D101 = upper). When using DINT / REAL, leave enough free words available.
Common problems and fixes
| Symptom / message | Possible cause | Fix |
|---|---|---|
| "Connection refused" | FINS is disabled | Enable FINS/TCP or FINS/UDP in CX-Programmer / Sysmac Studio |
| "Network not found" / "Node not found" | network/node number mismatch | Enter exactly the network/node values from the PLC's [Built-in Ethernet Settings] |
Value is always 0 | Area mismatch (e.g. reading D as W) | Recheck the "FINS memory area codes" in the manual |
| 32-bit float is garbled | Word order difference (LSWORD/MSWORD) | Try REAL (default) in the type modifier; if that fails, use REAL_LSWORD_FIRST |
Frequently used examples
| Tag name | PLC address | Data type | Type modifier |
|---|---|---|---|
| Run flag | CIO0.0 | Boolean | (leave empty) |
| Production counter | D100 | Integer | (leave empty) |
| Pressure (kPa) | D200 | Float | REAL |
| Accumulated time (h) | D102 | Integer | DW |
| Batch ID | D500 | String | STR[10] |
More detailed examples / automated registration
See the FINS examples in Advanced — REST API.