TwinCAT ADS interface for communication with Beckhoff automation systems using the ADS (Automation Device Specification) protocol. More...

Public Types | |
enum | updatemode { Cyclic , OnChange , CyclicSumCommand } |
![]() | |
enum | ActiveOnly { Always , Connected , Disconnected , Never , DontChange } |
Public Member Functions | |
override void | OpenInterface () |
Opens a connection to TwinCAT ADS Client and initializes the stream readers and Router and ADS Notifications. | |
override void | CloseInterface () |
Closes the connection to TwinCAT ADS Client. | |
void | ImportSignals (bool simstart) |
Imports all signal objects under the interface gameobject. | |
![]() | |
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 () |
void | PostAllScenesLoaded () |
![]() | |
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) |
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 warinng 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 | NetId |
The TwinCAT NetID of the PLC to communicate with. | |
int | Port |
The TwinCAT Port of the PLC to communicate with. | |
updatemode | UpdateMode |
int | PLCOutputsMinUpdateCycleMs |
Specifies if the event should be fired cyclically or only if the variable has changed. | |
int | PLCOutputsMaxUpdateDelay |
The ADS server checks whether the variable has changed after this time interval. Unit is in ms. | |
int | MaxNumberADSSubCommands |
bool | ReadAllOutputsOnStart |
bool | WriteAllInputsOnStart |
bool | DebugMode |
string | ConnectionStatus |
The connection Status to the PLC - Connected if everything is ok (ReadOnly) | |
string | RouterStatus |
The Status to the Router -. | |
string | PLCStatus |
int | NumberInputs |
The number of Inputs in the interface (ReadOnly) | |
int | NumberOutputs |
The number of Outputs in the interface (ReadOnly) | |
int | StreamLength |
The number of Outputs in the interface (ReadOnly) | |
List< string > | RegExImportSignals |
List< string > | RegExSkipSignals |
Regex to limit the imported signals to certain symbols. If nothing is in this list every symbol is imported. | |
List< string > | RegExSymbolIsPLCInput |
Regex to limit the imported signals to certain symbols. All Signals which are matchting these Regexs are not imported;. | |
bool | CreateSubFolders |
Regex to define which variables are PLCInputs. For some variables like globals which are not linked directly to an input or output it can not be detected automatically. | |
bool | ReadSignalValuesOnImport |
Create Subfolders for the Symbols with "." separating the name. | |
![]() | |
int | MinUpdateCycle |
int | CommCycleMeasures |
int | CommCycleNr |
int | CommTimeMs |
int | CommTimeMin |
float | CommTimeMed |
int | CommTimeMax |
int | CommCycleMeasureNum |
int | UpdateCycleMs |
string | ThreadStatus |
int | MinUpdateCycle2 |
int | CommCycleNr2 |
int | CommTimeMs2 |
int | CommTimeMin2 |
float | CommTimeMed2 |
int | CommTimeMax2 |
int | CommCycleMeasureNum2 |
int | UpdateCycleMs2 |
string | ThreadStatus2 |
bool | NoThreading |
bool | TwoThreads |
![]() | |
bool | IsConnected |
List< InterfaceSignal > | InterfaceSignals |
Hashtable | SignalNamesOutputs |
Hashtable | SignalNamesInputs |
![]() | |
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 |
Protected Member Functions | |
override void | CommunicationThreadUpdate () |
![]() | |
virtual void | CommunicationThreadClose () |
virtual void | SecondCommunicationThreadUpdate () |
virtual void | SecondCommunicationThreadClose () |
![]() | |
void | OnConnected () |
void | OnDisconnected () |
void | OnEnable () |
void | OnDisable () |
![]() | |
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 | |
![]() | |
static bool | DirectionIsLinear (DIRECTION direction) |
Gets back if the direction is linear or a rotation. | |
Detailed Description
TwinCAT ADS interface for communication with Beckhoff automation systems using the ADS (Automation Device Specification) protocol.
Connects to TwinCAT 2/3 runtime systems including real Beckhoff PLCs (CX, C6, EL series) and TwinCAT soft PLCs on Windows. Supports cyclic and on-change data exchange modes with automatic variable synchronization and sum command optimization. Ideal for virtual commissioning with TwinCAT XAE (Engineering) and testing automation logic before deployment. Configure the AMS NetID and port to match your TwinCAT system configuration (typically port 851 for PLC runtime 1).
Member Function Documentation
◆ CloseInterface()
|
virtual |
Closes the connection to TwinCAT ADS Client.
Reimplemented from realvirtual.InterfaceThreadedBaseClass.
◆ CommunicationThreadUpdate()
|
protectedvirtual |
Block Read
Reimplemented from realvirtual.InterfaceThreadedBaseClass.
◆ ImportSignals()
void realvirtual.TwinCatAdsInterface.ImportSignals | ( | bool | simstart | ) |
Imports all signal objects under the interface gameobject.
Create Signals Object if not existing
◆ OpenInterface()
|
virtual |
Opens a connection to TwinCAT ADS Client and initializes the stream readers and Router and ADS Notifications.
Creates a new List of InterfaceSignals based on the Components under this Interface GameObject
Starts Multithreading
Reimplemented from realvirtual.InterfaceThreadedBaseClass.
Member Data Documentation
◆ ConnectionStatus
string realvirtual.TwinCatAdsInterface.ConnectionStatus |
The connection Status to the PLC - Connected if everything is ok (ReadOnly)
◆ CreateSubFolders
bool realvirtual.TwinCatAdsInterface.CreateSubFolders |
Regex to define which variables are PLCInputs. For some variables like globals which are not linked directly to an input or output it can not be detected automatically.
◆ NetId
string realvirtual.TwinCatAdsInterface.NetId |
The TwinCAT NetID of the PLC to communicate with.
◆ NumberInputs
int realvirtual.TwinCatAdsInterface.NumberInputs |
The number of Inputs in the interface (ReadOnly)
◆ NumberOutputs
int realvirtual.TwinCatAdsInterface.NumberOutputs |
The number of Outputs in the interface (ReadOnly)
◆ PLCOutputsMaxUpdateDelay
int realvirtual.TwinCatAdsInterface.PLCOutputsMaxUpdateDelay |
The ADS server checks whether the variable has changed after this time interval. Unit is in ms.
◆ PLCOutputsMinUpdateCycleMs
int realvirtual.TwinCatAdsInterface.PLCOutputsMinUpdateCycleMs |
Specifies if the event should be fired cyclically or only if the variable has changed.
◆ Port
int realvirtual.TwinCatAdsInterface.Port |
The TwinCAT Port of the PLC to communicate with.
◆ ReadSignalValuesOnImport
bool realvirtual.TwinCatAdsInterface.ReadSignalValuesOnImport |
Create Subfolders for the Symbols with "." separating the name.
◆ RegExSkipSignals
List<string> realvirtual.TwinCatAdsInterface.RegExSkipSignals |
Regex to limit the imported signals to certain symbols. If nothing is in this list every symbol is imported.
◆ RegExSymbolIsPLCInput
List<string> realvirtual.TwinCatAdsInterface.RegExSymbolIsPLCInput |
Regex to limit the imported signals to certain symbols. All Signals which are matchting these Regexs are not imported;.
◆ RouterStatus
string realvirtual.TwinCatAdsInterface.RouterStatus |
The Status to the Router -.
◆ StreamLength
int realvirtual.TwinCatAdsInterface.StreamLength |
The number of Outputs in the interface (ReadOnly)