EthernetIP (Pro)
Connecting Allen-Bradley, Omron, Schneider Electric and other EtherNet/IP compatible PLCs with realvirtual.io for industrial automation and virtual commissioning
EthernetIP interface is only included in realvirtual.io Professional
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:

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:
Network Configuration: Configure the Ethernet module with a static IP address accessible from your Unity application
Tag Creation: Create controller-scoped tags or program-scoped tags that will be accessed from realvirtual.io
Data Types: Use supported data types (REAL, BOOL, INT, SINT, DINT) for optimal compatibility
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:
EtherNet/IP Configuration: Enable EtherNet/IP adapter functionality in the network configuration
Tag Definition: Create global variables with appropriate data types
Network Settings: Configure built-in EtherNet/IP port with static IP addressing
Micro800 Configuration
Micro800 series controllers require simplified configuration:
Ethernet Configuration: Set static IP address in Connected Components Workbench
Path Setting: Leave the Path field empty in realvirtual.io Inspector
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:
Add Signal Component: Add Signal component to child GameObject
Configure Direction: Set to PLCInput or PLCOutput based on data flow direction
Set Data Type: Select appropriate signal type (PLCInputBool, PLCOutputFloat, etc.)
Tag Name: Enter the exact tag name as defined in the PLC program
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:
Export tag list from your programming software (RSLogix, Sysmac Studio, etc.)
Format according to required column structure
Use "Select PLC Signal table" button in the Inspector to browse for the CSV file
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:
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
Add Interface Component: Create empty GameObject and add EthernetIPInterface component
Configure Network Settings: Set IP-Address to your PLC's Ethernet address (e.g.,
192.168.1.42
)Set PLC Parameters: Configure Path (
1,0
for ControlLogix), PLCType (controllogix
), Protocol (ab_eip
)Test Connection: Use "Test Connect" button in the Inspector to validate configuration and verify communication
Import Signals: Use CSV import or manually create Signal child objects
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 numberFor CompactLogix: Typically
1,0
for integrated Ethernet portFor 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
OPC-UA Interface - Alternative industrial communication protocol
S7 TCP Interface - Siemens-specific PLC communication
Interfaces Overview - Comparison of available interface options
Drive Component - Integration with motion control
Sensor Components - Integration with sensor simulation
© 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