Workspaces and safespaces definition at runtime

Hello everyone,

I have a doubt regarding the definition of workspaces and safespaces at runtime with mappRobotics.

Specifically, my goal is to configure workspaces and safespaces at runtime based on parameters that define the position and size of objects in space that may be in one location and may have a variable size.
The only way I have identified to configure a workspace or safespace at runtime is to use the WorkCuboid and SafeCuboid functions in a robot program. In doing so, however, the workspaces and safespaces created are automatically removed when the programme is finished.

Is there any way of defining workspaces and safespaces while keeping them always enabled as those defined in the Workspace Configuration and not only during the execution of a particular robot programme? The reason is that I would like to be able to take advantage of the runtime definition of safespaces also for robot jog movements via the MpDelta2Axis fb.

Thank you


If you want to perform the movements (jog) and have a safe (with safety performance PLe //SIL) i think you you go in the directon of safe motion

The safety function SafeRC SLPj ( S afe R obotic C ontrol - S afely L imited P osition of j oint axis) is designed to safely monitor defined areas of the joint axis position.)


The safety function SafeRC SLP ( S afe R obotic C ontrol - S afely L imited P osition) is designed to safely monitor the defined workspaces.

it allow you to use

Safe Cubes and perform manual movements in the mechanics without using a G-CODE program. BUT you will requiere SafeMotion hardware to perform this task

Meanwhile the path of “Cuboid” and “Safe Cuboid” are based on G-CODE program, and therefore you cannot perform a "manual movement.
Workspaces monitoring while executing G-CODE

1 Like

Hello Marcos,

thank you very much for your reply. Your answer is certainly a possible solution to my problem, as well as making perfect sense in the case of dangerous jog movements.

My question comes from the fact that, during not dangerous jog movements using the MpDelta2Axis fb, workspaces and safespaces defined in the configuration are actually taken into account, so I thought there was a way to be able to add or remove workspaces and safespaces without having to rely on a G-Code program, but I haven’t actually found a way to do this without having to use safe motion.


Workspace monitoring is only supported by path-controlled axis groups.
B&R Online Help (

…but if you perform a move interpolated of the group of axis suing a MC_MOVELINEAR // MC_BR_GroupJogVelocity_N

You are in a moving group, and therefore is the same as if you were using a MC_BR_MOVEPROGRAM

The robot can be moved using a number of different commands:)

And for example, you can perform a JOG or a LINEAR MOVE…

But the problem: the worksapces are taken into configuration the ones generated in the files

If you want to change those parameters, you can do it using a function, but the controller needs to be restared. And I think this is not ad dynamic as you want :rofl:

Here it is a shared idea with @javier.novella
1-Generate the worksapces of the whole cell
2-Create a Simulated robot (or the fancy term Digital Twin robot):
3-Create in G Code for the simulated robot with the new monitor workspaces
4-Peform the movement in Real Robot AND Simulated robot in parallel.
5-In case the simulated robot has a collision. Stop the real robot!


To avoid a reboot, you could also change the configuration with MC_BR_ProcessConfig and then use MC_BR_ProcessParam for the axes-group with mcPPM_LOAD_FROM_CONFIG. By doing so, the axes-group is deleted and re-initialized from scratch without a reboot. However, the axes-group must be in state GroupDisabled (which is less restrictive as a reboot).

Following changes for example are possible without reboot:

  • Remove a feature from the axes-group
  • Prepare in advance two workspaces, and exchange one by the other within existing Workspace feature
  • Modify the existing workspace within the Workspace feature, e.g. remove one of ten safe cuboids

Alternatively, to create, delete and modify work- and safe spaces you can also use G-Codes and ST motion commands.

A FB interface for this functionality to is not yet available.


Hi Roland,

thank you for your reply. I don’t understand though you suggest to use the FB MC_BR_ProcessParam to avoid reboot. Do you suggest using the FB MC_BR_ProcessParam to load a configuration of type mcCFG_AXGRP_PATHGEN = 21000 containing the work-safe space configuration previously modified via the FB MC_BR_ProcessConfig? Or something else?


Yes, that is what I am suggesting. It’s not the most convenient approach but in some cases it can be helpful.

Quoting the AShelp (guid 6d64d08c-b493-4c30-b505-3a45e3254178)

Mode mcPPM_LOAD_FROM_CONFIG is used to load the currently stored configuration on the target system to the parameterization of the component. All configurations of the component are reloaded, including referenced objects.

In this case, the component represents the limit for reloading the parameterization from the configuration. Only the affected component is reloaded; referenced components remain unaffected.

Changes that were made in the parameterization during runtime are thereby reversed

Hi roland,

thank you very much! I will try your proposal as soon as possible.