FINS Overview
TheFINS route enables communication with Omron PLCs (CJ, CS, CP, and NJ/NX series) using the FINS (Factory Interface Network Service) protocol. It supports both TCP and UDP transport, multiple memory areas, and bit-level access.
Basic Syntax
Connection Configuration
FINS_CONFIG Parameters
Target Omron device IP address.
FINS protocol port. Default: 9600.
Protocol type:
TCP or UDP. Default: TCP.Local node address (0-255). Default: 0.
Remote node address - target PLC (0-255). Default: 0.
Connection timeout in seconds. Default: 2.
Number of retries for FINS communication. Default: 5.
Polling interval in milliseconds. Default: 200.
Connection Examples
- TCP Connection
- UDP Connection
Standard TCP connection (recommended):
TCP transport for FINS is currently in development. Use UDP for production deployments.
Memory Areas
Omron PLCs organize data in different memory areas:| Memory Type | Code | Description | Access |
|---|---|---|---|
CIO | 0 | Core I/O and work area | Read/Write |
WR | 1 | Work area | Read/Write |
HR | 2 | Holding area (retentive) | Read/Write |
AR | 3 | Auxiliary area | Read-only |
DM | 4 | Data Memory | Read/Write |
CNT | 5 | Counter values | Read/Write |
TIM | 6 | Timer values | Read/Write |
EM | 7 | Extended Memory | Read/Write |
DM (Data Memory) is the most commonly used area for user data. CIO is typically used for I/O and internal relays.
Data Types
| Data Type | Description | Size |
|---|---|---|
BOOL | Boolean (single bit) | 1 bit |
BYTE | Unsigned 8-bit | 8 bits |
SINT | Signed 8-bit integer | 8 bits |
USINT | Unsigned 8-bit integer | 8 bits |
INT | Signed 16-bit integer | 16 bits |
UINT / WORD | Unsigned 16-bit integer | 16 bits |
DINT | Signed 32-bit integer | 32 bits |
UDINT / DWORD | Unsigned 32-bit integer | 32 bits |
LINT | Signed 64-bit integer | 64 bits |
ULINT / LWORD | Unsigned 64-bit integer | 64 bits |
REAL / FLOAT | 32-bit floating point | 32 bits |
LREAL / DOUBLE | 64-bit floating point | 64 bits |
CHAR | Single character | 8 bits |
WCHAR | Wide character | 16 bits |
TIME | Time duration | 32 bits |
DATE | Date value | 16 bits |
TOD | Time of day | 32 bits |
ASCII | ASCII string | 8 bits |
STRING | String value (configurable STRING_SIZE) | Variable |
TAG Configuration
Complete TAG Example
TAG Parameters
Address Configuration
Address Configuration
Word address in PLC memory (e.g., 100, 200, 500).
Bit address for bit-specific data types (0-15). Used for BOOL values within a word.
Memory area:
CIO, WR, HR, AR, DM, CNT, TIM, EM. Default: DM.FINS data type: BOOL, BYTE, INT, UINT, DINT, UDINT, LINT, ULINT, REAL, LREAL, ASCII, STRING.
Size of string for STRING types. Default: 256.
Value Transformation
Value Transformation
Filtering
Filtering
Publishing
Publishing
Topic where PLC values are published. Subscribe here to receive sensor data.
Topic to send write commands. Publish a value here to write it to the PLC.
Output format:
VALUE_ONLY or JSON. Default: VALUE_ONLY.Engineering unit for documentation.
Human-readable description.
Write Configuration
Write Configuration
Allow writing to this address. Default: false.
Addressing Examples
Word Addressing
Access data at word level:Bit Addressing
Access individual bits within a word:32-bit Values
32-bit values span two consecutive words:REAL and DINT types use two consecutive words (e.g., DM200 and DM201).
Event-Based Operations
For on-demand FINS operations (not polling), use the EVENT syntax. Publish a message to SOURCE_TOPIC to trigger the operation; the route executes it and publishes the result to DESTINATION_TOPIC.Supported Operations
| Operation | Description | Query Parameters |
|---|---|---|
READ | Read from a memory area on demand | memory_type, address, data_type, count |
WRITE | Write a value to a memory area | memory_type, address, data_type, value |
Query Parameters
| Parameter | Description | Example |
|---|---|---|
operation | Operation type: READ or WRITE | READ |
memory_type | Memory area: DM, CIO, WR, HR, AR, TIM, CNT, EM | DM |
address | Word address in the memory area | 100, 200 |
data_type | FINS data type | REAL, INT, UINT, DINT, BOOL |
count | Number of consecutive values to read (READ only) | 10 |
value | Value to write (WRITE only) | 25.5, 100, true |
Read Example
Read a REAL value from DM area on demand:Write Example
Write a REAL value to DM area on demand:Complete Examples
- Basic Data Memory Reading
- I/O and Work Areas
- Bit-Level Access
- Timers and Counters
- Bidirectional Control
- Holding Area
- Combined (Cyclic + On-Demand)
Read values from DM area:
Memory Area Details
CIO - Core I/O
CIO - Core I/O
- Used for I/O mapping and internal relays
- Words 0-99: Typically input/output modules
- Words 100-999: Work bits and internal relays
- Addresses are PLC model dependent
DM - Data Memory
DM - Data Memory
- Main user data storage
- Typically DM0-DM32767
- Best for process data, setpoints, configuration
- Retentive (battery-backed)
HR - Holding Area
HR - Holding Area
- Always retentive data
- Survives power cycles
- Use for counters, totals, settings
- Typically HR0-HR511
WR - Work Area
WR - Work Area
- General purpose work bits
- Non-retentive (cleared on power cycle)
- Fast access for temporary data
TIM/CNT - Timers and Counters
TIM/CNT - Timers and Counters
- TIM: Timer present values
- CNT: Counter present values
- Values are 16-bit unsigned
- Timer values often in 0.1s units
Troubleshooting
Connection Failed
Connection Failed
- Verify IP address is correct
- Check firewall allows port 9600
- Ensure PLC Ethernet module is configured
- Try both TCP and UDP protocols
- Verify node addresses match PLC configuration
Node Address Errors
Node Address Errors
- LOCAL_NODE should be unique on the network
- REMOTE_NODE is the target PLC’s node number
- Check PLC’s FINS settings for correct node configuration
- For direct connections, try 0 for both nodes
Memory Address Errors
Memory Address Errors
- Verify address is within valid range for memory type
- Check MEMORY_TYPE matches where data is stored
- For 32-bit types, ensure two consecutive words are available
- BIT_ADDRESS must be 0-15
Timeout Errors
Timeout Errors
- Increase TIMEOUT value
- Check network connectivity
- Verify PLC is in RUN mode
- Reduce POLLING rate if reading many tags
- Try TCP instead of UDP
Write Operations Fail
Write Operations Fail
- Ensure WRITABLE is “true”
- Verify memory area is writable (not AR)
- Check PLC is not in monitor mode
- Verify value is within data type range
Next Steps
Modbus TCP
Universal industrial protocol support.
Industrial Overview
Common patterns for all industrial routes.

