Device Comparison by Manufacturer
Device List
Device names summarized for each PLC manufacturer.
Physical addresses
Address notation examples
| Role | Mitsubishi iQ-R | OMRON CJ | KEYENCE KV |
|---|---|---|---|
| Input contacts | X2F (hexadecimal) | 10.15 (word address . bit address) | R1015 (word address + bit address) |
| Output contacts | Y2F (hexadecimal) | 10.15 (shared by inputs and outputs) | R1015 (shared by inputs and outputs) |
| Internal relays | M10 (decimal) | W11.15 | MR1015 (word address + bit address) |
| Link relays | B1F (hexadecimal) | (shared by inputs and outputs) | B1F (hexadecimal) |
| Holding relays | L10 (decimal) | H11.15 | LR1015 (word address + bit address) |
| Data registers | D10 (decimal) | D10 | DM10 (decimal) |
| Link registers | W1F (hexadecimal) | (shared by inputs and outputs) | W1F (hexadecimal) |
| File registers | E0_100 (25 banks) | FM10 (decimal) | |
| Timers | T10 (decimal) | T10 | T10 (decimal) |
| Counters | C10 (decimal) | C10 | C10 (decimal) |
| Index registers | Z0 (decimal) | IR0 | Z0 (decimal) |
Suffixes (KV only)
A suffix can be appended to a device to change how its data type is handled
e.g. DM0.D, DM0.F
| .U | Treated as 16-bit unsigned BIN data (the suffix may be omitted) |
| .S | Treated as 16-bit signed BIN data |
| .D | Treated as 32-bit unsigned BIN data |
| .L | Treated as 32-bit signed BIN data |
| .F | Treated as single-precision floating-point real data |
| .DF | Treated as double-precision floating-point real data |
| .A | Supported by some instructions only; the data type handled depends on the instruction |
Constant notation examples
| Mitsubishi iQ-R | OMRON CJ | KEYENCE KV | |
|---|---|---|---|
| Decimal | K-32768, K32767 | -123, +123 | -123, +123 |
| Unsigned decimal | K0, K65535 | &123 | #123 |
| Hexadecimal | H0, HFFFF | #1F | $1F |
| Real number | 1.23, -1.23, E-1.23+3, E3.21-6 | - | 1.23, -1.23. -1.23E+3, 3.21E-6 |
| String | 'ABC', "ABC" | 'A' (1 byte only) | "ABC" |
| BOOL | FALSE, TRUE | - | 0, 1 |
| Binary | 2#0010 | - | - |
| Octal | 8#337 | - | - |
| Time | T#1s, TIME#50ms | - | - |
IEC 61131-3 compliant
| Use | OMRON NX/NJ | KEYENCE KV-X |
|---|---|---|
| Input | Variables | Variables |
| Output | Variables | Variables |
| Internal relays | BOOL variable | BOOL variable |
| Retained memory | Retained variable | Retained variable |
| Data | Variables such as INT/DINT | Variables such as INT/DINT |
| Index | Array subscript | Array subscript |
| Devices for links | Network-published variable | Network-published variable |
Data type
| OMRON NX/NJ | KEYENCE KV-X | |
|---|---|---|
| BOOL | ○ | ○ |
| BYTE | ○ | - |
| WORD | ○ | - |
| DWORD | ○ | - |
| LWROD | ○ | - |
| SINT | ○ | - |
| INT | ○ | ○ |
| DINT | ○ | ○ |
| LINT | ○ | - |
| USINT | ○ | - |
| UINT | ○ | ○ |
| UDINT | ○ | ○ |
| ULINT | ○ | - |
| REAL | ○ | ○ |
| LREAL | ○ | ○ |
| TIME | ○ | - |
| DATE | ○ | - |
| TIME_OF_DAY | ○ | - |
| DATE_AND_TIME | ○ | - |
| STRING | ○ | ○ |
Constant notation examples
| OMRON NX/NJ | KEYENCE KV-X | |
|---|---|---|
| Decimal | -10, 10, INT#5, INT#10#-5 | |
| Unsigned decimal | UINT#10 | |
| Hexadecimal | 16#FF, WORD#16#00FF | |
| Real number | 1.23, -1.23, REAL#-1.23, REAL#1.23e+3 | |
| String | 'ABC' | |
| BOOL | FALSE, TRUE, 0, 1 | |
| Time | T#1s, TIME#50ms | - |
| Binary | BYTE#2#00110000 | - |
| Octal | BYTE#8#127 | - |
| Date | D#2026-05-29 | - |
| Time of day | TOD#12:10:20.0 | - |
| Date and time | DT#2026-05-29-12:00:00.0 | - |
| Enumerations | _eDAYOFWEEK#_WED | - |
Differences in Variables by Manufacturer
OMRON NX series
Programs are written with variables. In general you do not need to think about physical addresses.
For compatibility, virtual CJ memory can also be allocated
KEYENCE KV-X series
Programs are basically written with variables, but you can also use physical addresses.
Mitsubishi
The approach differs slightly from variables on OMRON NX/NJ and KEYENCE KV-X; Mitsubishi uses a mechanism called labels
You can create labels, but internally they are allocated to physical addresses
This is similar to automatic address allocation on the OMRON CJ series
Differences When Reading Memory from External Devices
With OPC UA and EtherNet/IP you can read and write variables.
To access physical addresses, Mitsubishi uses SLMP or the MC protocol, KEYENCE uses Host Link, and OMRON uses FINS communication.
Variable Summary
| Item | Mitsubishi iQ-R | OMRON NX | KEYENCE KV-X |
|---|---|---|---|
| Variables | ○ | ◎ | ◎ |
| Device addresses | Nearly essential | Not needed | Not needed |
| Reading variables via communication | △ | ◎ | ◎ |
| Underlying philosophy | Device-centric | Variable-centric | Variable-centric |
Related pages
PLC

Special Relay Comparison by Manufacturer
Compares the special relays of major PLC manufacturers such as Mitsubishi, OMRON and KEYENCE.
PLC

Application Instruction Comparison by Manufacturer
Compares the application instructions of major PLC manufacturers such as Mitsubishi, OMRON and KEYENCE.
PLC

System Variable Comparison by Manufacturer
Compares the system variables of OMRON NX and KEYENCE KV-X.
PLC

FUN/FB Comparison by Manufacturer
Compares the functions and function blocks of OMRON NX and KEYENCE KV-X.
PLC

Motion Control Instruction Comparison by Manufacturer
Compares the motion control instructions of OMRON NX and KEYENCE KV-X.
MITSUBISHI

SM / SD List
Special relays (SM) and special registers (SD) for Q series / L series / iQ-R series PLCs
KEYENCE

CR/CM Comparison by Model
CR/CM comparison across KV-X, KV-8000, KV-7000, KV-5000 and KV-3000
KEYENCE

CR/CM Cross-Reference: KV / KV-X
CR/CM and variable name correspondence between the KEYENCE KV-8000 series and the KV-X500/X300 series
OMRON

CJ to NJ Instruction Replacement Guide
A guide to replacing CJ instructions with NJ instructions
PC Tools

KVtoCJ
An application that converts KEYENCE KV series ladder programs into OMRON CJ series ladder programs
PC Tools

CJtoKV
An application that converts OMRON CJ series ladder programs into KEYENCE KV series ladder programs
