Skip to content

EtherNet/IP

EtherNet/IP (Ethernet Industrial Protocol) is an industrial communication protocol based on CIP (Common Industrial Protocol). It is managed by ODVA (Open DeviceNet Vendors Association). It runs over TCP/IP and UDP, using port 44818 by default.

inSCADA supports the EtherNet/IP protocol in Client role only.

inSCADA’s EtherNet/IP implementation uses tag-based addressing (CIP implicit messaging). This addressing method is supported on the following control platforms:

PlatformSupportDescription
ControlLogix (Allen-Bradley)Logix 5000+ series — full support
CompactLogix (Allen-Bradley)Logix 5000+ series — full support
SoftLogix (Rockwell)PC-based Logix runtime environment
MicroLogix (Allen-Bradley)Data file-based addressing — not supported
SLC 500 (Allen-Bradley)Data file-based addressing — not supported
PLC-5 (Allen-Bradley)Data file-based addressing — not supported

On Logix platforms, data is accessed by tag (label) names. Instead of register addresses, the tag name defined in the program is used directly:

Motor_1_Speed → Simple tag (REAL)
Tank.Level → UDT (User Defined Type) member
Station[3].Temp → Array element
Program:MainProgram.Counter → Program scope tag

This approach:

  • Is human-readable — the tag name describes what the data is
  • Maps directly to the PLC program
  • Eliminates the need for register address calculations
Connection (IP, port, timeout)
└── Device (Slot number)
└── Frame (Data Block — Grouping)
└── Variable (Tag name)
ParameterExampleDescription
ProtocolEthernetIpProtocol selection
IP Address192.168.1.1PLC IP address
Port44818EtherNet/IP port (default: 44818)
Timeout5000 msRequest timeout duration
Retries3Number of failed request retries
ParameterExampleDescription
Slot0PLC backplane slot number
Scan Time1000 msScan period
Scan TypePERIODICPERIODIC or FIXED_DELAY

In EtherNet/IP, a Frame is used only to group variables. There are no protocol-specific additional parameters.

ParameterExampleDescription
NameMotor_1_SpeedTag name in the PLC (full path)
TypeREALCIP data type
Bit Parent Type(optional)Parent data type for bit access

The variable name must be exactly the same as the tag name in the PLC program. inSCADA uses this name to send a CIP Read/Write Tag Service request.

Data TypeCIP SizeDescription
BIT1 bitSingle bit (requires Bit Parent Type)
BOOL1 bitBoolean value
SINT8 bitSigned 8-bit integer (-128 ~ 127)
INT16 bitSigned 16-bit integer (-32768 ~ 32767)
DINT32 bitSigned 32-bit integer
LINT64 bitSigned 64-bit integer
REAL32 bit32-bit floating point (IEEE 754)
BITS32 bitBit array (as 32-bit word)
STRUCTVariableStructured data type (UDT)

The BIT type is used to access a single bit. In this case, the Bit Parent Type must be selected to specify which data type the bit is read from:

Bit Parent TypeDescription
SINTRead bit from 8-bit integer
BITSRead bit from 32-bit word
Tag NameTypeDescription
Motor_SpeedREALSimple controller tag
Tank.LevelREALUDT (structured type) member
Sensors[0]DINTFirst element of array
Sensors[5]DINT6th element of array
Station[2].TemperatureREALArray + structured type
Program:MainProgram.LocalTagINTProgram scope tag
Motor_RunBOOLBoolean tag
StatusBitsBITS32-bit status word

inSCADA reads EtherNet/IP tags in bulk for performance. Multiple tags are read with a single CIP request:

  • Normal tags: 20 tags/request
  • String tags: 5 tags/request (larger payload)
  • Bit tags: 20 tags/request (read via parent type)

This behavior is automatic — no user configuration is required.

No special configuration is required on the PLC side for communication with inSCADA. The following points should be checked:

  • Ensure tags are defined as Controller Scope (global) — for Program scope tags, use the Program:ProgramName.TagName format
  • Verify that the PLC’s Remote Access settings are enabled
  • Ensure port 44818 is open in the firewall