MitsubishiMcpX interface for high-performance communication with Mitsubishi PLCs using MC Protocol. More...
Public Member Functions | |
| async void | ImportDevices () |
Public Member Functions inherited from realvirtual.FastInterfaceBase | |
| override void | OpenInterface () |
| Opens the interface and starts communication thread. | |
| override void | CloseInterface () |
| Closes the interface and stops communication thread. | |
| virtual void | PreFixedUpdate () |
| Processes PLC outputs before FixedUpdate - applies data FROM PLC TO Unity objects IMPLEMENTS IPreFixedUpdate::PreFixedUpdate. | |
| virtual void | PostFixedUpdate () |
| Processes PLC inputs after FixedUpdate - reads data FROM Unity objects TO send to PLC IMPLEMENTS IPostFixedUpdate::PostFixedUpdate. | |
| void | SetManualPhysicsMode (bool enabled) |
| Enables or disables manual physics control mode. | |
| void | StepPhysics (float timestep=0f) |
| Steps physics simulation forward by a specified time duration. | |
| override void | PostAllScenesLoaded () |
| Override PostAllScenesLoaded to prevent base class from opening interface too early. | |
| void | OnInterfaceEnable () |
| Called by realvirtualController after all scenes are loaded to enable the interface. | |
Public Member Functions inherited from realvirtual.InterfaceBaseClass | |
| void | UpdateInterfaceSignals (ref int inputs, ref int outputs) |
| Creates a new List of InterfaceSignals based on the Components under this Interface GameObject. | |
| Signal | CreateSignalObject (string name, SIGNALTYPE type, SIGNALDIRECTION direction) |
| Create a signal object as sub gameobject. | |
| Signal | AddSignal (InterfaceSignal interfacesignal) |
| void | RemoveSignal (InterfaceSignal interfacesignal) |
| virtual GameObject | GetSignal (string name) |
| Gets a signal with a name. | |
| void | SetAllSignalStatus (bool connected) |
| void | DestroyAllSignals () |
| void | DeleteSignals () |
Public Member Functions inherited from realvirtual.realvirtualBehavior | |
| virtual void | OnOwnershipChanged (bool isOwner) |
| Called when network ownership changes. | |
| void | SetNetworkOwner (bool isOwner) |
| Sets IsNetworkOwner and triggers OnOwnershipChanged callback. | |
| void | PreStartSim () |
| Is called by the realvirtualController before the component is started. | |
| void | StartSim () |
| Is called by the realvirtualController to start or stop the component. | |
| void | StopSim () |
| Vector3 | DirectionToVector (DIRECTION direction) |
| Transfers the direction enumeration to a vector. | |
| DIRECTION | VectorToDirection (bool torotatoin, Vector3 vector) |
| Transfers a vector to the direction enumeration. | |
| float | GetLocalScale (Transform thetransform, DIRECTION direction) |
| List< BehaviorInterfaceConnection > | UpdateConnectionInfo () |
| List< Signal > | GetConnectedSignals () |
| void | SetVisibility (bool visibility) |
| Sets the visibility of this object including all subobjects. | |
| List< BehaviorInterfaceConnection > | GetConnections () |
| List< Signal > | GetSignals () |
| GameObject | GetChildByName (string name) |
| Gets a child by name. | |
| List< GameObject > | GetChildsByName (string name) |
| Gets all child by name. | |
| GameObject | GetChildByNameAlsoHidden (string name) |
| List< GameObject > | GetAllMeshesWithGroup (string group) |
| List< GameObject > | GetAllWithGroup (string group) |
| List< GameObject > | GetAllWithGroups (List< string > groups) |
| List< GameObject > | GetAllMeshesWithGroups (List< string > groups) |
| List< string > | GetMyGroups () |
| List< GameObject > | GetMeshesWithSameGroups () |
| List< GameObject > | GetAllWithSameGroups () |
| MeshRenderer | GetMeshRenderer () |
| Gets the mesh renderers in the childrens. | |
| void | SetCollider (bool enabled, bool includeTriggers=true) |
| sets the collider in all child objects | |
| void | ErrorMessage (string message) |
| Displays an error message. | |
| void | ChangeConnectionMode (bool isconnected) |
| void | Log (string message) |
| Logs a message. | |
| void | Log (string message, object obj) |
| Logs a message with a relation to an object. | |
| void | Warning (string message, object obj) |
| Logs a warning with a relation to an object. | |
| void | Error (string message, object obj) |
| Logs an error with a relation to an object. | |
| void | Error (string message) |
| Logs an error. | |
| GameObject | DebugPosition (string debugname, Vector3 position, Quaternion quaternation, float scale) |
| Displays a gizmo for debugging positions. | |
| void | SetFreezePosition (bool enabled) |
| Freezes all child components to the current poosition. | |
| void | SetRbConstraints (RigidbodyConstraints constraints) |
| virtual void | AwakeAlsoDeactivated () |
Public Attributes | |
| string | IPAddress |
| PLC IP address. | |
| int | Port |
| MC Protocol port. | |
| int | ConnectionTimeout |
| Connection timeout in milliseconds. | |
| bool | OptimizeBatchReads |
| Enable batch optimization. | |
| int | MaxGapSize |
| Maximum address gap in batch. | |
| int | MinBatchSize |
| Minimum batch size. | |
| int | MaxBatchSizeBits |
| Max batch for bits. | |
| int | MaxBatchSizeWords |
| Max batch for words. | |
| string | GXWorks3CsvFile |
| GX Works3 CSV file path. | |
| bool | UseStandardGXFormat |
| Standard GX format. | |
| bool | CreateDeviceHierarchy |
| Create hierarchy. | |
| bool | ImportComments |
| Import comments. | |
| int | MaxImportDevices |
| Max import limit. | |
| bool | ValidateDeviceAddresses |
| Validate addresses. | |
| bool | ImportPhysicalInputs |
| Import X devices. | |
| bool | ImportPhysicalOutputs |
| Import Y devices. | |
| bool | ImportInternalRelays |
| Import M devices. | |
| bool | ImportDataRegisters |
| Import D devices. | |
| bool | ImportTimers |
| Import T devices. | |
| bool | ImportCounters |
| Import C devices. | |
| bool | ImportStateRelays |
| Import S devices. | |
| bool | ImportSpecialDevices |
| Import SM/SD devices. | |
Public Attributes inherited from realvirtual.FastInterfaceBase | |
| string | State |
| Current connection status with visual indicator. | |
| InterfaceState | state |
| Internal connection state enum. | |
| new string | ErrorMessage |
| Last error message if connection failed. | |
| int | ReconnectAttemptCount |
| Number of reconnection attempts made. | |
| bool | IsReconnecting |
| Whether interface is currently attempting to reconnect. | |
| int | InputSignals |
| Total number of input signals found. | |
| int | OutputSignals |
| Total number of output signals found. | |
| int | CommCycleMs |
| Actual communication cycle time in milliseconds. | |
| int | CycleCount |
| Total number of communication cycles completed. | |
| int | UpdateCycleMs |
| Communication thread update interval in milliseconds. | |
| bool | OnlyTransmitChangedInputs |
| Only send input signals that have changed since last transmission (performance optimization) | |
| bool | AutoReconnect |
| Automatically attempt to reconnect on connection loss. | |
| float | ReconnectIntervalSeconds |
| Time to wait between reconnection attempts. | |
| int | MaxReconnectAttempts |
| Maximum reconnection attempts (-1 = unlimited) | |
| bool | DebugMode |
Public Attributes inherited from realvirtual.InterfaceBaseClass | |
| bool | IsConnected |
| List< InterfaceSignal > | InterfaceSignals |
| Hashtable | SignalNamesOutputs |
| Hashtable | SignalNamesInputs |
Public Attributes inherited from realvirtual.realvirtualBehavior | |
| string | Name |
| The name of the component if it should be different from the GameObject name. | |
| ActiveOnly | Active |
| GameObject | FromTemplate |
| realvirtualController | realvirtualController |
| bool | HideNonG44Components |
| bool | SceneIsAdditive |
| bool | ForceStop |
| bool | IsNetworkOwner |
| True when this component owns its simulation (local authority). Set to false by MultiplayerWEB on remote clients. | |
Protected Member Functions | |
| new void | Awake () |
| override void | CopyPropertiesToThreadSafe () |
| Copies MonoBehaviour properties to thread-safe variables before background thread starts. | |
| override void | PrepareForBackgroundThread () |
| Prepares Unity GameObject data before background thread starts. | |
| override async Task | EstablishConnection (CancellationToken cancellationToken) |
| Establishes connection to Mitsubishi PLC. | |
| override async Task | CommunicationLoop (CancellationToken cancellationToken) |
| Main communication loop for cyclic data exchange. | |
| override void | CloseConnection () |
| Closes connection to PLC. | |
Protected Member Functions inherited from realvirtual.FastInterfaceBase | |
| virtual void | OnCommunicationError (Exception exception) |
| Handles communication errors and manages reconnection logic. | |
| virtual void | OnCommunicationStarted () |
| Called when communication thread starts successfully. | |
| virtual void | OnCommunicationStopped () |
| Called when communication thread stops. | |
| void | Start () |
| Unity Start - block base class behavior. | |
| new void | OnEnable () |
| Unity OnEnable - opens interface when component is enabled. | |
| new void | OnDisable () |
| virtual void | OnApplicationPause (bool pauseStatus) |
| Handles application pause events. | |
| void | FixedUpdate () |
| Unity FixedUpdate for main thread operations (signal sync moved to PrePost FixedUpdate) | |
| Dictionary< string, object > | GetInputsForPLC () |
| Gets all input signal values to send to PLC from background threads. | |
| Dictionary< string, object > | GetChangedInputsForPLC () |
| Gets only changed input signal values to send to PLC from background threads. | |
| void | ResetInputChangeDetection () |
| Resets change detection forcing all inputs to be considered changed on next call. | |
| void | SetOutputsFromPLC (Dictionary< string, object > outputs) |
| Sets output signal values from PLC data in background threads. | |
| void | SetOutputFromPLC (string signalName, object value) |
| Sets single output signal value from PLC data in background threads. | |
| void | RebuildCachedSignalArrays () |
| Rebuilds the cached signal arrays used by SyncOutputsToUnity/SyncInputsFromUnity. | |
| Dictionary< string, object > | ReadInputsThreadSafe () |
| [DEPRECATED] Use GetInputsForPLC() instead for clearer data flow direction | |
| Dictionary< string, object > | ReadChangedInputsThreadSafe () |
| [DEPRECATED] Use GetChangedInputsForPLC() instead for clearer data flow direction | |
| void | WriteOutputsThreadSafe (Dictionary< string, object > outputs) |
| [DEPRECATED] Use SetOutputsFromPLC() instead for clearer data flow direction | |
| void | WriteOutputThreadSafe (string signalName, object value) |
| [DEPRECATED] Use SetOutputFromPLC() instead for clearer data flow direction | |
| virtual void | CleanupAfterBackgroundThread () |
| Called on main thread after background thread stops to clean up Unity-specific resources Override this to clean up cached data, reset Unity components, or perform other main-thread cleanup. | |
| virtual void | UpdateSignalCounts () |
| Updates input and output signal counts. | |
Protected Member Functions inherited from realvirtual.InterfaceBaseClass | |
| void | OnConnected () |
| void | OnDisconnected () |
| void | OnEnable () |
| void | OnDisable () |
Protected Member Functions inherited from realvirtual.realvirtualBehavior | |
| bool | hidename () |
| bool | hideactiveonly () |
| virtual void | OnStopSim () |
| virtual void | OnPreStartSim () |
| virtual void | OnStartSim () |
| MU | GetTopOfMu (GameObject obj) |
| Gets the top of an MU component (the first MU script going up in the hierarchy) | |
| void | InitGame4Automation () |
| Initialiates the components and gets the reference to the realvirtualController in the scene. | |
| virtual void | AfterAwake () |
| void | Awake () |
Additional Inherited Members | |
Public Types inherited from realvirtual.realvirtualBehavior | |
| enum | ActiveOnly { Always , Connected , Disconnected , Never , DontChange } |
Static Public Member Functions inherited from realvirtual.FastInterfaceBase | |
| static bool | IsManualPhysicsMode () |
| Gets whether manual physics mode is currently enabled globally. | |
Static Public Member Functions inherited from realvirtual.realvirtualBehavior | |
| static bool | DirectionIsLinear (DIRECTION direction) |
| Gets back if the direction is linear or a rotation. | |
Protected Attributes inherited from realvirtual.FastInterfaceBase | |
| string | threadSafeErrorMessage |
| int | privateCycleCount |
| int | privateCommCycleMs |
| bool | threadSafeDebugMode |
| int | threadSafeUpdateCycleMs |
Properties inherited from realvirtual.FastInterfaceBase | |
| new bool | IsConnected [get] |
| override bool | ShowIsConnectedField [get] |
| Used by [ShowIf] to hide IsConnected field for FastInterface classes - always returns false. | |
| bool | IsInterfaceReady [get] |
| Returns true if the interface has been initialized via OnInterfaceEnable. | |
Properties inherited from realvirtual.InterfaceBaseClass | |
| virtual string | InterfaceDisplayName [get] |
| Display name for interface in UI lists (removes "Interface" suffix by default, can be overridden for custom names) | |
| virtual bool | ShowIsConnectedField [get] |
Properties inherited from realvirtual.IOnInterfaceEnable | |
Detailed Description
MitsubishiMcpX interface for high-performance communication with Mitsubishi PLCs using MC Protocol.
Provides real-time bidirectional data exchange between Unity simulations and Mitsubishi Q, L, R, iQ-R, and iQ-F series PLCs. Utilizes the MC Protocol (MELSEC Communication Protocol) with 3E/4E frame formats for robust industrial communication. Features intelligent batch read optimization that automatically groups signals into efficient read operations, reducing network traffic and improving throughput by up to 30x compared to individual signal reads.
Key Features:
- Automatic address range optimization for minimal PLC communication operations
- Support for all major Mitsubishi device types (X, Y, M, D, T, C, S, SM, SD, W, R)
- GX Works3 CSV import for device comment integration
- Thread-safe background communication with FastInterface architecture
- Automatic reconnection and error recovery
- Batch read/write operations up to 960 bits or 120 words
Common Applications:
- Virtual commissioning with Mitsubishi PLCs
- Digital twin creation for Mitsubishi-controlled systems
- PLC logic testing without physical hardware
- Industry 4.0 integration with existing Mitsubishi infrastructure
Integration Points:
- Works with GX Works3 device comment exports for signal documentation
- Compatible with realvirtual signal system for seamless simulation
- Supports both Editor mode and Play mode signal import
For detailed documentation see: https://doc.realvirtual.io/components-and-scripts/interfaces/mitsubishi-mcpx
Member Function Documentation
◆ CloseConnection()
|
protectedvirtual |
Closes connection to PLC.
Reimplemented from realvirtual.FastInterfaceBase.
◆ CommunicationLoop()
|
protectedvirtual |
Main communication loop for cyclic data exchange.
Reimplemented from realvirtual.FastInterfaceBase.
◆ CopyPropertiesToThreadSafe()
|
protectedvirtual |
Copies MonoBehaviour properties to thread-safe variables before background thread starts.
Reimplemented from realvirtual.FastInterfaceBase.
◆ EstablishConnection()
|
protectedvirtual |
Establishes connection to Mitsubishi PLC.
Reimplemented from realvirtual.FastInterfaceBase.
◆ PrepareForBackgroundThread()
|
protectedvirtual |
Prepares Unity GameObject data before background thread starts.
Reimplemented from realvirtual.FastInterfaceBase.
Member Data Documentation
◆ ConnectionTimeout
| int realvirtual.MitsubishiMcpXInterface.ConnectionTimeout |
Connection timeout in milliseconds.
◆ CreateDeviceHierarchy
| bool realvirtual.MitsubishiMcpXInterface.CreateDeviceHierarchy |
Create hierarchy.
◆ GXWorks3CsvFile
| string realvirtual.MitsubishiMcpXInterface.GXWorks3CsvFile |
GX Works3 CSV file path.
◆ ImportComments
| bool realvirtual.MitsubishiMcpXInterface.ImportComments |
Import comments.
◆ ImportCounters
| bool realvirtual.MitsubishiMcpXInterface.ImportCounters |
Import C devices.
◆ ImportDataRegisters
| bool realvirtual.MitsubishiMcpXInterface.ImportDataRegisters |
Import D devices.
◆ ImportInternalRelays
| bool realvirtual.MitsubishiMcpXInterface.ImportInternalRelays |
Import M devices.
◆ ImportPhysicalInputs
| bool realvirtual.MitsubishiMcpXInterface.ImportPhysicalInputs |
Import X devices.
◆ ImportPhysicalOutputs
| bool realvirtual.MitsubishiMcpXInterface.ImportPhysicalOutputs |
Import Y devices.
◆ ImportSpecialDevices
| bool realvirtual.MitsubishiMcpXInterface.ImportSpecialDevices |
Import SM/SD devices.
◆ ImportStateRelays
| bool realvirtual.MitsubishiMcpXInterface.ImportStateRelays |
Import S devices.
◆ ImportTimers
| bool realvirtual.MitsubishiMcpXInterface.ImportTimers |
Import T devices.
◆ IPAddress
| string realvirtual.MitsubishiMcpXInterface.IPAddress |
PLC IP address.
◆ MaxBatchSizeBits
| int realvirtual.MitsubishiMcpXInterface.MaxBatchSizeBits |
Max batch for bits.
◆ MaxBatchSizeWords
| int realvirtual.MitsubishiMcpXInterface.MaxBatchSizeWords |
Max batch for words.
◆ MaxGapSize
| int realvirtual.MitsubishiMcpXInterface.MaxGapSize |
Maximum address gap in batch.
◆ MaxImportDevices
| int realvirtual.MitsubishiMcpXInterface.MaxImportDevices |
Max import limit.
◆ MinBatchSize
| int realvirtual.MitsubishiMcpXInterface.MinBatchSize |
Minimum batch size.
◆ OptimizeBatchReads
| bool realvirtual.MitsubishiMcpXInterface.OptimizeBatchReads |
Enable batch optimization.
◆ Port
| int realvirtual.MitsubishiMcpXInterface.Port |
MC Protocol port.
◆ UseStandardGXFormat
| bool realvirtual.MitsubishiMcpXInterface.UseStandardGXFormat |
Standard GX format.
◆ ValidateDeviceAddresses
| bool realvirtual.MitsubishiMcpXInterface.ValidateDeviceAddresses |
Validate addresses.
Public Member Functions inherited from