EthernetIP (Pro)

Connecting Allen-Bradley, Omron, Schneider Electric and other EtherNet/IP compatible PLCs with realvirtual.io for industrial automation and virtual commissioning

Overview

The EtherNet/IP interface enables direct communication between realvirtual.io and industrial controllers using the Common Industrial Protocol (CIP) over standard Ethernet networks. EtherNet/IP (Industrial Protocol) is one of the leading industrial communication protocols in North America and is widely adopted across manufacturing, process control, and hybrid automation systems.

This interface provides seamless integration with major PLC manufacturers including Allen-Bradley (Rockwell Automation), Omron, and Schneider Electric controllers, enabling true virtual commissioning workflows where your Unity simulation communicates directly with real industrial hardware.

Key Features:

  • Direct tag-based communication with Allen-Bradley ControlLogix, CompactLogix, and MicroLogix systems

  • Support for Omron NJ/NX series and Schneider Electric Modicon controllers

  • Real-time bidirectional data exchange with sub-100ms cycle times

  • Bulk signal import from CSV files exported from programming software

  • Built-in connection diagnostics and error handling

  • Thread-safe communication architecture for production environments

Properties

The EtherNet/IP interface requires configuration of network settings and communication parameters through the Unity Inspector:

EthernetIP Interface Inspector showing all configuration properties and buttons
EthernetIP Interface component in Unity Inspector with all configuration properties

IP-Address (string) The IP address or hostname of the target PLC or EtherNet/IP gateway device. Include optional port number using colon notation (e.g., 192.168.1.100:44819). Standard EtherNet/IP uses port 44818, but some configurations may require different ports. Must be accessible from the Unity application's network segment.

Path (string) CIP routing path specifying the physical location of the target controller within the chassis or backplane. For Allen-Bradley ControlLogix/CompactLogix systems, typical values are 1,0 (backplane position 1, slot 0) or 1,2 (backplane position 1, slot 2). For Logix systems communicating through DH+ bridges, this path defines the routing through multiple network segments. Leave empty for Micro800 series controllers which do not require routing paths.

PLCType (enum) Controller family selection that optimizes communication protocol behavior for specific PLC architectures. Available options include:

  • controllogix: Allen-Bradley ControlLogix and CompactLogix systems (recommended for most Rockwell applications)

  • micro800: Allen-Bradley Micro800 series controllers

  • slc500: Allen-Bradley SLC 500 family PLCs

  • plc5: Legacy Allen-Bradley PLC-5 systems

  • omron-njnx: Omron NJ and NX series controllers

Protocol (enum) Communication protocol selection determining the network-level protocol used for data exchange:

  • ab_eip: Allen-Bradley EtherNet/IP protocol (recommended for Rockwell and compatible systems)

  • modbus-tcp: Modbus TCP protocol for broader industrial device compatibility

Debug Mode (boolean) Enables additional logging of communication operations to the Unity Console. When enabled, outputs signal initialization status, connection errors, and signal operation details. Useful for troubleshooting connection issues and verifying signal setup. Disable in production environments to reduce console log volume.

Timeout (integer) Communication timeout value in milliseconds for individual tag operations. Higher values provide more tolerance for network latency and PLC response delays but reduce overall system responsiveness. Typical range: 1000-10000ms depending on network conditions and controller performance.

PLCSignalTable (string) File path to CSV-format signal definition table for bulk signal import. Use the "Select PLC Signal table" button in the Inspector to browse for CSV files exported from programming software like RSLogix 5000/Studio 5000. After selecting a file, click "Import PLC signal table" to automatically create Signal GameObjects. File must follow specific column format: Symbol, Direction (INPUT/OUTPUT), Type, Comment.

UpdateCycle (read-only) Current communication cycle counter that increments with each successful read/write operation cycle. Provides real-time indication of communication activity and connection health. Value resets to 0 when the interface reconnects or is restarted.

Thread Status (read-only) Displays the current status of the communication thread that handles PLC data exchange. Shows whether the background thread is running, stopped, or experiencing errors. This status indicates the health of the parallel communication system that ensures non-blocking Unity performance.

Test Connect (button) Tests the current configuration by attempting to connect to the specified PLC. Displays connection results in Unity Console.

Select PLC Signal table (button) Opens file browser to select CSV file containing signal definitions for bulk import.

Import PLC signal table (button) Processes the selected CSV file and creates Signal child GameObjects automatically.

PLC Configuration

Allen-Bradley ControlLogix/CompactLogix Setup

For Allen-Bradley controllers, ensure the following configuration in RSLogix 5000/Studio 5000:

  1. Network Configuration: Configure the Ethernet module with a static IP address accessible from your Unity application

  2. Tag Creation: Create controller-scoped tags or program-scoped tags that will be accessed from realvirtual.io

  3. Data Types: Use supported data types (REAL, BOOL, INT, SINT, DINT) for optimal compatibility

  4. Security: Ensure the controller's security settings allow external read/write access

Example Tag Naming Conventions:

  • Controller tags: ConveyorSpeed, SystemEnabled, ProductCount

  • Program tags: Program:MainSequence.StepNumber, Program:Safety.EmergencyStop

  • Array elements: ProductData[0], AxisPosition[3]

Omron NJ/NX Series Setup

For Omron controllers using Sysmac Studio:

  1. EtherNet/IP Configuration: Enable EtherNet/IP adapter functionality in the network configuration

  2. Tag Definition: Create global variables with appropriate data types

  3. Network Settings: Configure built-in EtherNet/IP port with static IP addressing

Micro800 Configuration

Micro800 series controllers require simplified configuration:

  1. Ethernet Configuration: Set static IP address in Connected Components Workbench

  2. Path Setting: Leave the Path field empty in realvirtual.io Inspector

  3. Tag Access: Use simple tag names without program qualifiers

Signal Configuration

Manual Signal Setup

Create Signal child objects under the EtherNet/IP interface GameObject to define individual tags:

  1. Add Signal Component: Add Signal component to child GameObject

  2. Configure Direction: Set to PLCInput or PLCOutput based on data flow direction

  3. Set Data Type: Select appropriate signal type (PLCInputBool, PLCOutputFloat, etc.)

  4. Tag Name: Enter the exact tag name as defined in the PLC program

  5. Signal Type: Specify the PLC data type (REAL, BOOL, INT, SINT, DINT)

CSV Signal Import

For bulk signal configuration, create a CSV file with the following format:

CSV File Format:

Symbol,Direction,Type,Comment
ConveyorSpeed,INPUT,REAL,Main conveyor belt speed in m/min
SystemStart,OUTPUT,BOOL,System start command from operator
ProductCount,INPUT,DINT,Total products processed today
EmergencyStop,INPUT,BOOL,Safety system emergency stop status

CSV Import Process:

  1. Export tag list from your programming software (RSLogix, Sysmac Studio, etc.)

  2. Format according to required column structure

  3. Use "Select PLC Signal table" button in the Inspector to browse for the CSV file

  4. Click "Import PLC signal table" to automatically create Signal GameObjects (existing signals with matching names are preserved)

CSV Requirements:

  • No header row in the CSV file

  • Column order: Symbol, Direction (INPUT/OUTPUT), Type, Comment

  • Type must exactly match supported data types: REAL, BOOL, INT, SINT, DINT

  • Symbol must match exact tag names in PLC program including case sensitivity

Data Types

The EtherNet/IP interface supports the following data type mappings between PLC tags and realvirtual.io signals:

PLC Data Type
realvirtual Signal Type
Description
Value Range

REAL

PLCInputFloat / PLCOutputFloat

32-bit IEEE floating point

±3.4 × 10^38

BOOL

PLCInputBool / PLCOutputBool

Single bit boolean

true/false

INT

PLCInputInt / PLCOutputInt

16-bit signed integer

-32,768 to 32,767

SINT

PLCInputInt / PLCOutputInt

8-bit signed integer

-128 to 127

DINT

PLCInputInt / PLCOutputInt

32-bit signed integer

-2,147,483,648 to 2,147,483,647

Important Notes:

  • Boolean outputs use SINT data type in the PLC due to protocol limitations

  • Array elements are accessed using index notation: TagName[0], TagName[15]

  • String data types are not currently supported in this interface version

Usage Examples

Basic Setup Workflow

  1. Add Interface Component: Create empty GameObject and add EthernetIPInterface component

  2. Configure Network Settings: Set IP-Address to your PLC's Ethernet address (e.g., 192.168.1.42)

  3. Set PLC Parameters: Configure Path (1,0 for ControlLogix), PLCType (controllogix), Protocol (ab_eip)

  4. Test Connection: Use "Test Connect" button in the Inspector to validate configuration and verify communication

  5. Import Signals: Use CSV import or manually create Signal child objects

  6. Runtime Operation: Interface automatically handles read/write cycles when scene starts

Advanced Tag Naming

Program-Scoped Tags (Allen-Bradley):

Program:MainSequence.ConveyorRunning
Program:Safety.EmergencyStop
Program:Recipe.MixingTime

Array Access:

ProductionData[0]    // First element
AxisPosition[2]      // Third axis position
RecipeValues[10]     // Eleventh recipe parameter

Troubleshooting

Connection Issues

Cannot Connect to PLC:

  • Verify IP address is correct and PLC is powered on

  • Check network connectivity using ping command

  • Ensure Windows Firewall allows EtherNet/IP communication (port 44818)

  • Verify PLC Ethernet module configuration and IP settings

Connection Timeouts:

  • Increase Timeout value in interface properties (try 5000-10000ms)

  • Check network latency and bandwidth availability

  • Verify PLC is not overloaded with other communication tasks

Path Configuration Errors:

  • For ControlLogix: Use format 1,0 where 1 is backplane, 0 is slot number

  • For CompactLogix: Typically 1,0 for integrated Ethernet port

  • For Micro800: Leave Path field empty

  • Check physical slot configuration matches software settings

Communication Issues

Tags Not Reading/Writing:

  • Verify exact tag name spelling and case sensitivity

  • Ensure tag exists in PLC program and is properly scoped

  • Check data type compatibility between PLC tag and realvirtual signal

  • Use Debug Mode to view detailed communication logs

Slow Communication:

  • Reduce number of signals or group related signals

  • Optimize PLC scan time and communication settings

  • Check network bandwidth and switch configuration

  • Consider increasing communication cycle time for large tag sets

Intermittent Connection Loss:

  • Check network cable connections and switch settings

  • Verify PLC Ethernet module is properly seated

  • Monitor network traffic for congestion or errors

  • Implement connection retry logic in critical applications

PLC-Specific Issues

Allen-Bradley Controllers:

  • Verify controller security settings allow external connections

  • Check that EtherNet/IP services are enabled in controller properties

  • Ensure sufficient controller memory for tag operations

  • Validate Ethernet module firmware compatibility

Omron Controllers:

  • Confirm EtherNet/IP adapter is properly configured

  • Verify global variable accessibility settings

  • Check CPU unit Ethernet port configuration

Debug Mode Output: When enabled, Debug Mode provides the following information in Unity Console:

  • Signal initialization status with data types and connection results

  • Connection error messages with detailed exception information

  • PLC connection success confirmations with controller type and IP address

See Also


© 2024 realvirtual GmbH https://realvirtual.io - All rights reserved. No part of this publication may be reproduced, distributed, or transmitted in any form or by any means, including printing, saving, photocopying, recording, or other electronic or mechanical methods, without the prior written permission of the publisher.

Last updated