Skip to content

A lightweight C# bridge for cyclic variable exchange between Beckhoff TwinCAT (ADS) and ABB RobotStudio Virtual Controllers. Designed for virtual commissioning.

License

Notifications You must be signed in to change notification settings

seehma/RoboCaty

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RoboCaty

RoboCaty is a lightweight utility designed to facilitate cyclic, direct variable exchange between a Beckhoff TwinCAT PLC and an ABB Virtual Robot Controller (RobotStudio) via ADS.

It acts as a bridge during virtual commissioning, allowing for signal synchronization between the PLC and the Robot without the need for complex fieldbus hardware emulation.

RoboCaty Demo

1. Prerequisites & Compatibility

This program was developed specifically for virtual commissioning projects. While it may work with other configurations, it has been tested and verified with the following dependencies:

  • TwinCAT 3: Version 3.1.4024 or 3.1.4026 (recent builds)
  • Framework: .NET 8.0
  • ABB Robotics PC SDK: Version 2025.4
  • ABB RobotStudio: Version 2025.4
  • Controller: Omnicore C90XT virtual controller with RobotWare 7.20.0

2. Configuration (vars.txt)

The variables to be exchanged are defined in a simple text file. By default, the program looks for C:\temp\vars_robot.txt, but this can be changed via arguments.

Syntax

Each line in the file represents one mapping:

[Direction]#[TwinCAT_Path]:[Robot_Signal][Size]

Example: r#MAIN.boStop:diStop[1]

Parameter Definition

Parameter Description
Direction r = Read from TwinCAT ADS $\rightarrow$ Write to Robot Virtual Controller.
w = Read from Robot Virtual Controller $\rightarrow$ Write to TwinCAT ADS.
# Separator.
TwinCAT_Path The full path to the ADS variable (e.g., MAIN.boStop or GVL.bStart).
: Separator.
Robot_Signal The exact name of the I/O signal on the ABB Virtual Controller.
[Size] The size of the signal in bits.
[1] = Boolean (Digital I/O)
[8], [16], [32] = Integer (Group I/O or Analog)

Example Content

See the vars_robot.txt file in the root of this repository for a full template.

r#MAIN.bStartRobot:di_StartSignal[1]
w#MAIN.bRobotActive:do_RobotActive[1]
r#GVL.nSpeedSetpoint:grp_SpeedInput[16]
w#GVL.nCurrentPos:grp_PositionOutput[32]

3. Usage

Run RoboCaty.exe from the command line. You can customize the behavior using the arguments below.

Command Line Arguments

Argument Description Default Value
-help Shows the help output and available commands. N/A
-verbose Enables a live dashboard showing the values of all exchanged variables in the console. false
-netid The AMS NetID of the TwinCAT runtime to connect to. 199.4.42.250.1.1 (UMRT default)
-file File path to the configuration file. C:\temp\vars_robot.txt
-time Cycle time (in milliseconds) for the data exchange loop. 2000

Example Call

RoboCaty.exe -netid 5.12.80.1.1.1 -file "config.txt" -time 100 -verbose

FAQ

Below are some issues encountered during testing, along with possible solutions.

Q: RoboCaty does not appear to connect to the ABB virtual controller. When I press V, I see errors regarding opening handles. A: This can happen if handles are not cleaned up correctly, especially if RoboCaty was closed via the command line window's "X" button. In this case, simply restart the virtual controller on the ABB side. This should free up all handles and allow you to reconnect.

Q: It seems that not all variables are exchanged in the same cycle. A: This is due to the asynchronous nature of RoboCaty. You must account for this behavior in your logic, on both the TwinCAT and the ABB RAPID program sides.

Contributing

If you encounter any issues or want to contribute to this project, feel free to open an Issue or submit a Pull Request on this repository.

About

A lightweight C# bridge for cyclic variable exchange between Beckhoff TwinCAT (ADS) and ABB RobotStudio Virtual Controllers. Designed for virtual commissioning.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages