Robot Cell Simulator – Work zones and collisions
« Auto-Docking | Contents | Licenses »
Calculation | Display | Entries without interlock | Collision matrix | Move robots to the zone | Path in interlock colors | Check interlocks | Insert interlocks | Console messages

The work zone of a robot is the space swept by the robot, its tool and its arm along the paths of the selected programs. Areas used by two or more robots are shared areas. The interlocks of the programs (A81–A96 = EIN request, A41–A56 = EIN release, comments Verriegelung n Roboter ...) are compared with the moments when a robot enters a shared area.

Work zones of six robots (transparency 70 %)

Calculation

Check the robots or single programs in the list (the tool on the flange is shown next to each robot) and press Calculate. Parameters:

  • Calculation method:
    • Grid of cubes (axis of the links + radius) – fast: the arm is the axis line of the links widened by the link radius, stored in cubes of the selected grid. Coarse shape, short calculation.
    • Triangles of the 3D models (real shape) – takes longer: in every position of the path the triangles of the 3D models of the robot links, the cable packages and the attached tool are entered in cells of 50 mm. The zone has the real shape of the robot instead of the link radius. The calculation takes considerably longer (minutes for a whole cell) and needs more memory; Grid and Link radius are not used and are disabled. Check interlocks, Insert interlocks and the path in interlock colors use the same method as the last calculation.
  • Calculation time (measured 2026-10-06, 2 robots, 27 programs with called UPs, the 3D model of the tool on one of the robots; laptop Intel Core i7-8750H, 16 GB RAM, Windows 10, DReS 32-bit): grid of cubes 100 mm – about 27 s, triangles of the 3D models – about 220 s, i.e. about 8 times longer (the first version of the triangle method needed about 14 times longer). A whole cell with 6 robots and 112 programs takes about 2.5 min with the grid; with the triangle method count with about 20 min. The progress window shows the estimated time left. The triangle method finds larger shared areas (real shape of the arms and grippers instead of the link radius) – in the measured pair 1.29 m³ instead of 0.56 m³. Use it for single robot pairs where the exact shape matters (close robots, large grippers); the grid is enough for an overview of the cell.
  • Grid – edge of the cubes (100 mm is a good compromise of accuracy and time; grid method only),
  • Link radius – radius around the arm segments (grid method only),
  • Include the tool attached to the flange – the 3D model of the tool is part of the zone,
  • Include subprograms called in the points – UP calls are followed.

The paths come from the motion planner (LIN / CIRC along the path, approximation). A whole robot, a group (all Folgen / all UPs) or single programs can be checked. Unchecking hides a zone at once, checking it again shows it without a new calculation; Calculate always recalculates everything. Clear removes the zones.

The tool in the zone is the real 3D model attached to the flange (with fixtures) – the TCP of the tool data is not used. Robots without an attached tool are listed before the calculation.

Without the Work Zones license the zones of the first 2 checked robots are calculated (a message is shown once). Work Zones

Display

Show only shared areas (yellow / red) hides the green parts (available when Show work zones is on). The transparency slider sets how much of the cell remains visible through the zones (default 70 %). Overlapping zones are drawn with one uniform color.

Only the shared areas: yellow = protected by interlocks, red = entered without interlock

Entries without interlock

The table lists every point where a robot enters a shared area without an interlock request: robot, program / point, the other robot and the volume of the entered part. A double click on a row moves the robot to that point and selects it in the Programs panel – ready for Touch up or for opening in the editor. The point is the place of the first entry: the interlock has to be requested earlier, in the point before the motion into it. The console contains the same list.

Below the table: Program path in interlock colors (see below), Check interlocks... – evaluation of all interlocks on the paths (see Check interlocks) and Insert interlocks... – automatic proposals of stops or interlocks for these entries (see Insert interlocks).

Collision matrix Work Zones

The matrix summarizes all robot pairs: row robot / column robot. A cell shows the interlocks (A81..A96) that the row robot describes in its program comments for the column robot, the volume of the shared area of both robots and the part entered without interlock.

ColorMeaning
redshared area entered without interlock
orangeshared area, interlock described only on one side
greenshared area, protected by interlocks
blueinterlock without shared area in the calculated programs
whiteno shared area

A double click shows the details of a cell. Export... saves the matrix as CSV. The window is not modal – it can stay open while the robots are moved.

Move robots to the position before the zone

Select a cell with entries without interlock and press Move robots to the position before the zone: both robots are moved to the last point before they enter the shared area (first the column robot, then the row robot, which is selected in the Programs panel). The console names the point, e.g. 'R_6560R01_Z' at folge123/P1 - the last point before the area shared with 'R_6550R01_G'. This is the starting point for checking the interlock or correcting the path.

Program path in interlock colors Work Zones

Three paths in interlock colors: yellow – motion in a shared area with an interlock (left robot, Folge12); red – motion in a shared area without interlock (right robot, UP112); gray – motion outside the shared areas (right robot, UP81)

With Program path in interlock colors (group Entries without interlock) the paths drawn with the motion planner (Programs panel, Draw the real path in the Motion tab) are colored by the interlock state of the last work zone calculation instead of the motion type:

  • gray – motion outside the areas shared with other robots,
  • yellow – motion in a shared area with an active interlock for the partner robot,
  • red (wider line) – motion in a shared area without interlock.

The console names the points of the red motions and the partner robots, e.g. Path of 'folge124.src' in interlock colors ... - motions to P3, P4 (partner: R_6620R01_G_G).

The colors use the parameters of the last calculation (method, grid, link radius, tool, subprograms). Visible paths of the current robot are drawn again when the option is switched on or off and after a new calculation; after a change of the program show the path again. Robots that were not in the last calculation keep the colors of the motion types (message in the console).

Check interlocks Work Zones

Work Zones → Check interlocks... compares the interlocks of the programs with the geometry of the last work zone calculation. The red areas show only the motions without any interlock; the check also finds interlocks that are requested too late, released too early, set only by one robot of a pair, written for another partner or held without need. It joins the logic of the programs (as in Archive Diff - interlocks) with the geometry of the cell.

Check interlocks: findings with the point, the partner and a suggestion

How it works

  1. The programs checked in the Work Zones tab are analysed with the parameters of the last calculation (grid, link radius, tool, called UPs, motion planner). The motion of every program is taken from the work zone calculation – the check does not run the motion planner again; only programs changed since the calculation (e.g. by Insert interlocks) are read and planned again. A whole cell with 6 robots and 112 programs is checked in about 20 s (before: about 4 min), a repeated check without changes in about 2 s.
  2. For every point (in the order of execution, with the called UPs) the check knows the robots whose shared area the motion to the point (or the stop in it) touches, and the interlocks active in the motion and after the commands of the point: request A81..A96 = EIN, release A41..A56 = EIN.
  3. An interlock protects the motion only against the partner named in the comment (Verriegelung n Roboter X ein); without a comment it protects against all robots.
  4. The online conditions (FB PSPS with E41..E56) are checked with the rules of RobotLogicCheck for the whole archive; a missing input in a point inside a shared area is an error.

Checks

CheckSeverityMeaningSuggestion
No interlockerrormotion in an area shared with the partner without an interlock request (red area) request in the last exact point before the area, release after it (Insert interlocks)
Requested too lateerrorthe interlock is requested only after the robot has entered the shared area – the first motion into the area is not protectedrequest in the last exact point before the area
Released too earlyerrorthe interlock (A(40+n) = EIN) is released while the robot still moves in the shared arearelease in the first point after the area
Released inside the areawarningthe interlock is released and requested again while the robot stays in the shared area – the partner may enter in betweenkeep the interlock over the whole area
One-sided interlockwarningrobot A protects the area shared with B, but B moves in it without interlock – the PLC can release A while B is insiderequest the interlock also in the programs of B
Other partnerwarningthe comment of the interlock names robot X, but during the interlock the robot meets only robot Ycheck the comment and the wiring of the partner
Online conditionerror / warningan active interlock without its input E41..E56 in FB PSPS of the point – the robot does not stop when the release is lost during the motion (error in a shared area, warning elsewhere)add the input to the FB PSPS condition
Not neededinfowhile the interlock is held the robot never moves in an area shared with the partnerthe interlock may be removed (check with the zone parameters)
Held too longinfothe interlock is held at least 3 points longer than the motion in the shared area – the partner waits longer than necessarylater request (last exact point before the area) / earlier release (first point after it)

Window

Example of an exported HTML report – example cell with 6 robots and 112 programs (open in a new window):

The check uses the geometry of the work zones: a coarse grid or a large link radius gives larger shared areas (more Requested too late, fewer Not needed). Calculate the zones with the tool and the called UPs, and check the findings in the cell before the programs are changed. Nothing is changed in the programs.

Insert interlocks Work Zones

Insert interlocks... below the table Entries without interlock proposes changes in the robot programs for every place where a robot moves in a shared area without interlock. Two modes are available:

ModeInserted into the programUse
Stop before the shared area comment with the partner robot before the last exact point before the area and WARTE BIS AUS in this point the robot stops in a safe position until the programmer inserts the correct interlock – quick protection of an unknown or unfinished program
Request an interlock (VW standard) comments Verriegelung n Roboter ... ein / aus, request A(80+n) = EIN + SPSMAKRO20 = EIN, E(40+n) in the online condition FB PSPS of the motions in the area, release A(40+n) = EIN after the area complete interlock logic for programs written without interlocks (e.g. new paths) – the PLC has to provide the release E(40+n) for the robot pair
Nothing is saved automatically. The changes are inserted into the programs opened in the DReS editor – check them, save the files and calculate the work zones again. Work on a copy of the robot archive while testing. The undo history of the changed programs is cleared (points with complex data).

How the proposals are found

  1. Calculate the work zones (Calculate) – the dialog uses the last calculation, its parameters and the entries without interlock.
  2. For every program with an entry without interlock the motions are planned again with the same motion planner – the main program and the subprograms (UP) called in its points, in the order of execution.
  3. For every motion the dialog knows which shared areas (with which partner robot) the robot touches while moving to the point or standing in it, and whether an interlock for that partner is active (requests A81–A96, releases A41–A56, partners from the comments Verriegelung n Roboter ...).
  4. Consecutive motions in an area shared with one partner form an area run (e.g. folge124/P3 .. folge124/P7). A run with at least one motion without interlock gets a proposal.
  5. The robot must stop before the run: the proposal uses the last exact point (VE = 0) before the run, after the previous area of the same partner. In an approximated point the robot does not stop.
Insert interlocks: mode, comment texts and the proposed changes

The dialog

ColumnContent
Robotrobot with the motion without interlock; the check box selects the proposal
Shared withpartner robot
Area (points)first and last motion of the area run, e.g. folge124/UP112/P3 .. folge124/UP112/P6
Changespoint and inserted commands, e.g. folge124/P2: A83 = EIN, SPSMAKRO20 = EIN; E43 in FB PSPS up to ...
Notewarnings (red rows are not selected): no exact point before the area, interlock already used for the partner, release inside the area, subprogram changed, robot still in the area at the end of the program, all 16 interlocks used

Mode 1: Stop before the shared area

The dialog inserts a comment with the partner robot before the stop point (main fold, like in mode 2) and WARTE BIS AUS in the point after its first FB PSPS line (as the first command if the point has no FB PSPS). The fold of the point stays expanded, so the inserted lines are visible. AUS never becomes true – the robot waits in this point until the programmer replaces the wait by the interlock. When the point already contains WARTE BIS AUS (second partner in the same point) only a further comment line is added before the point.

Before

PTP VB=100% VE=0% ... P2
  FB PSPS = EIN
  A23 = AUS
  WARTE BIS E23
  A23 = EIN
  FB PSPS = M2 & M21 & M30

After

-- Kollision mit Roboter 6620R01 - Verriegelung fehlt --
PTP VB=100% VE=0% ... P2
  FB PSPS = EIN
  WARTE BIS AUS
  A23 = AUS
  WARTE BIS E23
  A23 = EIN
  FB PSPS = M2 & M21 & M30
Before the insertion: program UP112 with five points; the motion P1 → P3 enters the area shared with robot 6560R02 without interlock, the area is left at P5 (point P1 expanded)
After the insertion, mode Stop before the shared area: comment Kollision mit Roboter 6560R02 - Verriegelung fehlt before point P1 and WARTE BIS AUS in P1 (fold expanded) – the robot stops before the area until the interlock is programmed

Mode 2: Request an interlock (VW standard)

The interlock number n (1–16) is the number already used for the partner robot in the comments of the programs; otherwise the lowest number not used by the robot (requests, releases, comments in all Folgen and UPs). The same number is used for all runs of the same robot pair. The dialog inserts:

  1. Comment -- Verriegelung n Roboter X ein -- before the request point (main fold, like in the VW programs).
  2. In the request point (last exact point before the area): A(80+n) = EIN and SPSMAKRO20 = EIN before WARTE BIS E23 (or before the last FB PSPS of the point, otherwise at the end before UP calls). When the point already calls SPSMAKRO20, only the request is added before it.
  3. E(40+n) in the last FB PSPS of the request point (a new line FB PSPS = ... with the active condition is added when the point has no FB PSPS after SPSMAKRO20) and of every point up to the last motion in the area – the last FB PSPS of a point is the online condition of the motion to the next point. Operands are added with AND, an OR condition is put in brackets, an operand already in the condition is not added twice.
  4. Comment -- Verriegelung n zu Roboter X aus -- before the first point after the area and A(40+n) = EIN in this point (after its first FB PSPS) – the area is released for the partner.

Request point (after)

-- Verriegelung 3 Roboter 6620R01 ein --
PTP VB=100% VE=0% ... P2
  FB PSPS = EIN
  A23 = AUS
  A83 = EIN
  SPSMAKRO20 = EIN
  WARTE BIS E23
  A23 = EIN
  FB PSPS = M2 & M21 & M30 & E43

Points in the area and release point (after)

LIN VB=1.5m/s VE=100% ... P3
  FB PSPS = M2 & M21 & M30 & E43
...
-- Verriegelung 3 zu Roboter 6620R01 aus --
PTP VB=100% VE=100% ... P8
  FB PSPS = EIN
  A43 = EIN
  FB PSPS = M2 & M21 & M30
After the insertion, mode Request an interlock (same program as in the „before” picture above): comment and A83 = EIN, SPSMAKRO20 = EIN in P1, E43 added to the FB PSPS of the points in the area, comment Verriegelung 3 zu Roboter 6560R02 aus and A43 = EIN in P5 (release)
The PLC has to answer the new request: release input E(40+n) of the robot when the partner is outside the area. The partner robot needs its own interlock for this robot – it gets its own proposal when it also enters the area without interlock. Check the pairs in the collision matrix after the next calculation.

Insert into the editor

Insert into the editor applies the selected rows:

Then: check the programs, save them (the KRL code of the folds is generated when saving) and press Calculate again – the red areas of the changed motions become yellow.

Notes and limitations

Console messages

The calculation writes its results to the console of the plugin (Message Window). Values in the examples are from a test cell.

Message (example)MeaningWhat to do
Calculation
Work zone 'R1': 13 program(s), 365 point(s), volume about 30.78 m3, interlock requests: A81, A83, A85, A87, path with an interlock requested 42 %, path protected against all robots of the list 0 %Summary of one robot. Volume = volume of the whole work zone of the robot. Interlock requests = interlocks requested in the calculated programs (A81..A96 = EIN). Path with an interlock requested = part of the path (motion samples) on which the robot holds at least one requested interlock. Path protected against all robots of the list = part of the path on which the held interlocks cover every other robot of the Work Zones list; an interlock covers the partner named in its program comment (an interlock without comment covers all robots). A low value is normal: a robot usually holds an interlock only for one partner at a time.Informative. 0 % in the first value with interlock requests listed: the requests are not reached in the calculated programs (e.g. only UPs checked) – check the selection of programs.
Work zone 'R1': interlock partners from the program comments: A81 -> 6520R01 (not in the list), A83 -> 6560R01 ...Partner robot of every interlock read from the comments of the programs (Verriegelung n Roboter ...). not in the list = the partner is not in the Work Zones list (other cell or robot not in the study) – such an interlock protects against none of the calculated robots.Check the comments if a partner is wrong; interlocks without comment protect against all robots.
Work zone 'R1': tool attached to the flange: Gripper (1403 surface point(s) of the 3D model)The 3D model of the attached tool is part of the zone; number of surface points used.–
Work zone 'R1': no tool attached to the flange - the zone contains only the armNo tool is attached to the robot (or its geometry is not loaded yet).Attach the tool (Model Browser > right click > Attach) and calculate again.
Work zone 'R1': tool change in the programs (... 12 point(s)) - 32 % of the path without the toolThe programs put the tool down and take it again (tool change commands of the Auto-Docking tab). The part of the path between them is calculated without the tool.–
Work zone 'R1': geometry of 14 part(s) not loaded after 7.8 sSome 3D parts (tool, or robot in the triangle method) were not loaded in time; they are missing in the zone.Show the parts in the 3D view (zoom to the robot) and calculate again.
Work zone 'R1': 3D model of the robot - 900 part(s), 4 210 surface point(s)Triangle method: number of parts of the robot model (links, cable packages) and of surface points used in every position.–
Work zone 'R1': no triangles of the robot model - the zone is calculated from the axis line of the armTriangle method, but the robot model has no loaded geometry. The zone is calculated like the grid method.Show the robot in the view and calculate again.
Work zone 'R1': flange of the arm model differs from the robot kinematics by 120 mm / chain of the robot model differs from the kinematicsThe 3D model of the robot does not match the kinematics of the archive (other robot type, wrong archive) – the zone may be shifted.Check the archive assigned to the robot.
Work zones calculated in 42.0 s: 6 robot(s), grid 100 mm, link radius 200 mm; shared areas about 0.32 m3 with interlocks (yellow), 0.09 m3 without interlock (red)Summary of the calculation: method and parameters, total volume of the yellow and red areas.–
Shared area 'R1' / 'R2': about 0.56 m3, of which 0.09 m3 reached without interlockVolume used by both robots and the part entered by at least one of them without an interlock for the other. Shown as a warning when the second value is not 0.See Entries without interlock, Check interlocks.
'R1' enters the area shared with 'R2' without interlock at: folge124/UP112/P3 (0.09 m3)Points (program/UP/point) where the robot enters the shared area without interlock, with the volume entered from this point (8 largest).Double click the row in Entries without interlock; insert an interlock (Insert interlocks).
Work zones: 30 program(s) with the motion planner (LIN / CIRC along the path, approximation), 2 program(s) with axis interpolationHow the paths were calculated. Axis interpolation is used when the motion planner cannot start the program (first point not reachable).–
Work zones: calculation canceledCancel was pressed; the zones of the unfinished robot are not kept.Calculate again.
Points and paths
'R1' at folge124/UP112/P3 - enters the area shared with 'R2' without interlockThe robot was moved to the point of the selected entry (double click / Go to the point). In Check interlocks the name of the check is written instead.–
Point P3 of 'R1' cannot be reached - the robot is not movedNo axis solution for the point with the current configuration.Check the point (Status/Turn, base, tool).
Path of 'up112.src' in interlock colors (last work zone calculation): ... motions to P3, P4 (partner: R2)Path drawn in the interlock colors; red motions and the partner robots are listed.–
Estimated motion time of 'up112.src' (motion planner): 15.24 sMotion time of the drawn path (estimate of the planner).–
Check interlocks
Check interlocks: 71 program(s), 2 error(s), 0 warning(s), 12 info (18.7 s)Summary with the time of the check; the next lines give the number of every check (No interlock, Held too long ...).Open the list, filter by robot or check.
R1: points in areas shared with other robots under interlock 94 % (R2 100 %, R3 68 %)Per robot: part of the points whose motion or stop touches an area shared with another robot and is under an interlock against this robot – in total and per partner. Unlike the percentages of the work zone calculation it counts only the places where an interlock is needed.Below 100 %: see the findings No interlock, Requested too late, Released too early for this pair.
Check interlocks: report saved - D:\...\interlock_check.htmlReport written (HTML or CSV).–
Interlock colors: 'R1' was not in the last work zone calculationThe path is drawn in the colors of the motion types: the robot was not checked in the last calculation.Check the robot and calculate the work zones again.
Interlock colors: ...The steps of the program could not be calculated (reason in the message); the path keeps the colors of the motion types.See the reason, e.g. program or configuration of the robot not found.
Insert interlocks: programs not found: folge124.src, ...Programs of the last calculation that are not in the archive any more.Check the robot archive (File > Wizard) and calculate the work zones again.
Insert interlocks: R1 - ...The steps of a program could not be calculated – no proposal for this program.See the reason in the message.
Insert interlocks: up112.src P1: -- Kollision mit Roboter 6560R02 - Verriegelung fehlt --, WARTE BIS AUSMode Stop: comment inserted before the point and WARTE BIS AUS in the point.Program the interlock later and remove the wait.
Insert interlocks: up112.src P1: A83 = EIN, SPSMAKRO20 = EIN, FB PSPS = ... & E43Mode Request: request, macro and online condition inserted in the point (only the lines that were missing).–
Insert interlocks: up112.src P3: FB PSPS = ... & E43Release input added to the online condition of a point in the shared area.–
Insert interlocks: up112.src P5: A43 = EINRelease of the area for the partner inserted in the first point after the area.–
Insert interlocks: up112.src before P1: -- Verriegelung 3 Roboter 6560R02 ein --Comment inserted before the point (main fold).–
! Insert interlocks: up112.src could not be opened in the editorThe program file could not be opened – not changed.Check that the file exists and is not locked.
! Insert interlocks: up112.src is not opened as an editable VKRC program (Folge / UP) - not changedThe file is open as another document type or read only.Close the file and insert again.
! Insert interlocks: point P3 not found in up112.srcThe point of the proposal is not in the program (the program was changed after the calculation).Calculate the work zones again.
Insert interlocks: 2 proposal(s), 2 program(s) changed in the editor - check and save the programs, then calculate the work zones againSummary – nothing is saved to the disk.Check and save the programs, then calculate the work zones again.


« Auto-Docking | Contents | Licenses »