Disable Tasks in WebApp

Hello everyone,

For our IRC5 controllers, we used to create custom interfaces using C# and the PC SDK. We have some functions that require moving one robot at a time, for example, sending a specific robot to its reference point.

To achieve this in IRC5, we would disable the specific tasks. Here is a simplified snippet of our approach:

this.GestorRotinasRob4 = new GestorRotinas(this.Controller, this.TaskRobo4, this);
this.GestorRotinasRob5 = new GestorRotinas(this.Controller, this.TaskRobo5, this);

and

private void mnuReferenciarR4_Click(object sender, EventArgs e)
{ this.GestorRotinasRob4.ExecutarRotina("ReferenciarRobo"); }

and

this.GestorRotinasRob4.MoverPPRotina("ProgAqueceMotores", "AquecimentoMotores", null);
this.GestorRotinasRob5.MoverPPRotina("ProgAqueceMotores", "AquecimentoMotores", null);
this.Controller.Rapid.Start();

However, we are now working with OmniCore and I’ve noticed that I can’t seem to disable a task, even when requesting mastership.

My questions are:

  1. Is it still possible to disable a specific task via code in OmniCore, or was this functionality removed/changed in RobotWare 7?

  2. If it is still possible, what is the correct way to achieve this?

  3. If it is no longer possible, what is the recommended workaround to run a routine for just one robot in a MultiMove system?

Thanks in advance for any guidance!

I think from the AppStudio, this scenario can be achieved by using the Robot Web Services (RWS) API to activate or deactivate individual RAPID tasks.

In a MultiMove system, starting RAPID execution will normally start all enabled tasks, which is the default controller behavior.

To execute a procedure on only one robot, you can implement the following logic in your AppStudio project:

  1. Check and save the current activation states of the RAPID tasks.
  2. Temporarily deactivate the other tasks.
  3. Execute the required procedure on the target robot using API.RAPID.startExecution().
  4. Restore the original task activation states afterward.

Please note that API.RAPID.startExecution() does not automatically deactivate other tasks, so this logic needs to be handled separately in the AppStudio application.