MultiMove Application Manual
MultiMove Application Manual
MultiMove
Trace back information:
Workspace R17-1 version a7
Checked in 2017-03-22
Skribenta version 5.1.011
Application manual
MultiMove
RobotWare 6.05
Table of contents
Overview of this manual ................................................................................................................... 7
Product documentation, IRC5 .......................................................................................................... 9
Safety ................................................................................................................................................ 11
1 Introduction 13
1.1 About MultiMove ............................................................................................... 13
1.2 Terminology ..................................................................................................... 14
1.3 Example applications ......................................................................................... 15
1.3.1 About the example applications ................................................................. 15
1.3.2 Example "UnsyncArc" .............................................................................. 16
1.3.3 Example "SyncArc" ................................................................................. 17
2 Installation 19
2.1 Hardware installation ......................................................................................... 19
2.1.1 About the hardware installation .................................................................. 19
2.1.2 Connections on the control module ............................................................ 20
2.1.3 Connections on the drive module ............................................................... 25
2.2 Software installation .......................................................................................... 27
2.2.1 Software installation ................................................................................ 27
3 Configuration 29
3.1 Configuration overview ....................................................................................... 29
3.2 System parameters ........................................................................................... 30
3.2.1 Controller topic ...................................................................................... 30
3.2.2 Motion topic ........................................................................................... 32
3.2.3 I/O topic ................................................................................................ 34
3.3 Configuration examples ...................................................................................... 35
3.3.1 Configuration example for "UnsyncArc" ....................................................... 35
3.3.2 Configuration example for "SyncArc" .......................................................... 37
3.3.3 I/O configuration example ......................................................................... 39
4 Calibration 41
4.1 Calibration overview .......................................................................................... 41
4.2 Relative calibration ............................................................................................ 42
4.3 Calibration chains ............................................................................................. 44
4.4 Examples of coordinate systems .......................................................................... 45
4.4.1 Example "UnsyncArc" .............................................................................. 45
4.4.2 Example "SyncArc" ................................................................................. 46
6 Programming 55
6.1 RAPID components ........................................................................................... 55
6.2 Tasks and programming techniques ..................................................................... 58
6.3 Coordinated work objects ................................................................................... 59
6.4 Independent movements .................................................................................... 60
6.4.1 About independent movements ................................................................. 60
6.4.2 Example "UnsyncArc" with independent movements ..................................... 61
Index 101
Usage
This manual can be used either as a brief description to find out if MultiMove is
the right choice for solving a problem, or as a description of how to use it. This
manual provides information about system parameters and RAPID components
related to MultiMove, and many examples of how to use them. The details regarding
syntax for RAPID components, and similar, are not described here, but can be
found in the respective reference manual.
Prerequisites
The reader should...
• be familiar with industrial robots and their terminology.
• be familiar with the RAPID programming language.
• be familiar with system parameters and how to configure them.
• be familiar with the option Multitasking (see Application manual - Engineering
tools).
References
Reference Document ID
Technical reference manual - RAPID overview 3HAC050947-001
Technical reference manual - RAPID Instructions, Functions and 3HAC050917-001
Data types
Technical reference manual - RAPID kernel 3HAC050946-001
Operating manual - IRC5 with FlexPendant 3HAC050941-001
Operating manual - RobotStudio 3HAC032104-001
Product manual - IRC5 3HAC021313-001
Technical reference manual - System parameters 3HAC17076-1
Application manual - Engineering tools 3HAC020434-001
Application manual - Motion functions and events 3HAC18152-1
Application manual - Arc and Arc Sensor 3HAC050988-001
Application manual - Spot options 3HAC050979-001
Revisions
Revision Description
- Released with RobotWare 6.0.
A Released with RobotWare 6.01.
• Added information about the Ethernet switch, see Ethernet connections
on page 21.
B Released with RobotWare 6.02.
Section Create a MultiMove system on page 27 updated to use Installation
Manager.
C Released with RobotWare 6.04.
• Minor corrections.
D Released with RobotWare 6.05.
• Minor corrections.
Product manuals
Manipulators, controllers, DressPack/SpotPack, and most other hardware is
delivered with a Product manual that generally contains:
• Safety information.
• Installation and commissioning (descriptions of mechanical installation or
electrical connections).
• Maintenance (descriptions of all required preventive maintenance procedures
including intervals and expected life time of parts).
• Repair (descriptions of all recommended repair procedures including spare
parts).
• Calibration.
• Decommissioning.
• Reference information (safety standards, unit conversions, screw joints, lists
of tools).
• Spare parts list with exploded views (or references to separate spare parts
lists).
• Circuit diagrams (or references to circuit diagrams).
Application manuals
Specific applications (for example software or hardware options) are described in
Application manuals. An application manual can describe one or several
applications.
An application manual generally contains information about:
• The purpose of the application (what it does and when it is useful).
• What is included (for example cables, I/O boards, RAPID instructions, system
parameters, DVD with PC software).
• How to install included or required hardware.
• How to use the application.
• Examples of how to use the application.
Operating manuals
The operating manuals describe hands-on handling of the products. The manuals
are aimed at those having first-hand operational contact with the product, that is
production cell operators, programmers, and trouble shooters.
The group of manuals includes (among others):
• Operating manual - Emergency safety information
• Operating manual - General safety information
• Operating manual - Getting started, IRC5 and RobotStudio
• Operating manual - IRC5 Integrator's guide
• Operating manual - IRC5 with FlexPendant
• Operating manual - RobotStudio
• Operating manual - Trouble shooting IRC5
Safety
Safety of personnel
A robot is heavy and extremely powerful regardless of its speed. A pause or long
stop in movement can be followed by a fast hazardous movement. Even if a pattern
of movement is predicted, a change in operation can be triggered by an external
signal resulting in an unexpected movement.
Therefore, it is important that all safety regulations are followed when entering
safeguarded space.
Safety regulations
Before beginning work with the robot, make sure you are familiar with the safety
regulations described in the manual Operating manual - General safety information.
1 Introduction
1.1 About MultiMove
Purpose
The purpose of MultiMove is to let one controller handle several robots. This does
not only save on hardware costs, it also allows advanced coordination between
different robots and other mechanical units.
Here are some examples of applications:
• Several robots can work on the same moving work object.
• One robot can move a work object while other robots work on it.
• Several robots can cooperate to lift heavy objects.
Included functionality
MultiMove allows up to 6 tasks to be motion tasks (task that has move instructions).
Since no more than 4 drive modules can be used, a controller can handle up to 4
robots. However, additional axes can be handled by separate tasks up to a total
of 6 motion tasks.
Both MultiMove options allow you to implement:
• Independent movements (see Independent movements on page 60)
• Semi coordinated movements (see Semi coordinated movements on page 63)
In addition to what is mentioned above, the option MultiMove Coordinated allows
you to implement:
• Coordinated synchronized movements (see Coordinated synchronized
movements on page 71)
Included options
If you have MultiMove, you automatically have access to some options that are
necessary in order to use MultiMove.
MultiMove always includes the option:
• Multitasking
In addition to what is mentioned above, MultiMove Coordinated includes the option:
• Multiple Axis Positioner
Basic approach
This is the general approach for setting up a MultiMove system.
1 Install hardware and software (see Installation on page 19).
2 Configure system parameters (see Configuration on page 29).
3 Calibrate coordinate systems (see Calibration on page 41).
4 Write RAPID program for each task (see Programming on page 55).
1.2 Terminology
Term list
Term Explanation
Coordination A robot that is coordinated to a work object will follow the
movements of that work object.
Synchronization Movements that are simultaneous. Synchronization refers
to a similarity in time, not in room coordinates.
Positioner A mechanical unit without TCP, which can only handle joint
movements. A positioner is a mechanical unit, with one or
several axes, that holds and moves a work object.
Robot A mechanical unit with TCP, which can be programmed in
Cartesian coordinates (x, y and z).
Task program The same as a program. It is just a way of specifying that it
is a program for one specific task.
Illustration
xx0300000590
Illustration
xx0300000594
2 Installation
2.1 Hardware installation
Overview
A controller that handles several robots needs extra drive modules (one drive
module per robot). Up to four drive modules can be used, including the one
assembled with the control module.
xx0400001042
One Ethernet cable and one safety signal cable for each additional drive module
must be connected to the control module. A MultiMove control module is equipped
with an extra Ethernet switch to communicate with the additional drive modules.
This manual only describes what is specific for a MultiMove installation. For more
information about installation and commissioning of the controller, see Product
manual - IRC5.
DSQC1000
A B C D
xx1400000408
DSQC 639
xx0600002780
Ethernet connections
Connect the Ethernet cables according to the following figure:
Note
It is important that the right drive module is connected to the right Ethernet
connection. If the order of the Ethernet connections do not match the selections
made in Installation Manager (see Create a MultiMove system on page 27), the
robot configuration will not correlate to the correct robot.
DSQC1000
E 5
D 4
C 3
B 2
A 1
xx1400000409
Note
The Ethernet switch is mandatory for MultiMove, also when running MultiMove
with only one axis computer in the system. For example, when running MultiMove
on one robot together with a positioner or additional axes.
DSQC 639
xx0400001141
xx0400001295
X7 Connector for safety signal cable to drive module #1(already connected at deliv-
ery)
Remove the jumper connector and replace it with the safety signal cable.
B
xx0600002787
A Ethernet connection
B Contactor interface board
Connect the Ethernet cable to the Ethernet connection marked Computer module
link. Connect the safety signal cable according to Safety signal connection on
page 26.
A43
K41.X1
X1
xx0600002786
xx1500000865
CAUTION
3 Configuration
3.1 Configuration overview
Task
These parameters belong to the type Task in the topic Controller:
Parameter Description
Task The name of the task.
Note that the name of the task must be unique. This means that it cannot
have the same name as the mechanical unit, and no variable in the
RAPID program can have the same name.
Type Controls the start/stop and system restart behavior:
• NORMAL - The task program is manually started and stopped
(e.g. from the FlexPendant). The task stops at emergency stop.
• STATIC - At a restart the task program continues from where it
was. The task program cannot be stopped from the FlexPendant
or by emergency stop.
• SEMISTATIC - The task program starts from the beginning at re-
start. The task program cannot be stopped from the FlexPendant
or by emergency stop.
A task that controls a mechanical unit must be of the type NORMAL.
MotionTask Indicates whether the task program can control a mechanical unit with
RAPID move instructions.
Use Mechanical Defines which mechanical unit group is used for the task.
Unit Group Use Mechanical Unit Group refers to the parameter Name for the type
Mechanical Unit Group.
A motion task (MotionTask set to Yes) controls the mechanical units in
the mechanical unit group. A non-motion task (MotionTask set to No)
will still be able to read values (e.g. the TCP position) for the active
mechanical units in the mechanical unit group.
Note that Use Mechanical Unit Group must be defined for all tasks, even
if the task does not control any mechanical unit.
Parameter Description
Mech Unit 3 Specifies the third mechanical unit without TCP, if there are more than two,
in the mechanical unit group.
Mech Unit 3 refers to the parameter Name for the type Mechanical Unit
in the topic Motion.
Mech Unit 4 Specifies the forth mechanical unit without TCP, if there are more than
three, in the mechanical unit group.
Mech Unit 4 refers to the parameter Name for the type Mechanical Unit in
the topic Motion.
Mech Unit 5 Specifies the fifth mechanical unit without TCP, if there are more than four,
in the mechanical unit group.
Mech Unit 5 refers to the parameter Name for the type Mechanical Unit in
the topic Motion.
Mech Unit 6 Specifies the sixth mechanical unit without TCP, if there are more than
five, in the mechanical unit group.
Mech Unit 6 refers to the parameter Name for the type Mechanical Unit in
the topic Motion.
Use Motion Defines which motion planner is used for calculating the movements of
Planner this mechanical unit group.
Use Motion Planner refers to the parameter Name for the type Motion
Planner in the topic Motion.
Mechanical Unit
No parameters of type Mechanical Unit can be edited for a robot. They can only
be edited for additional axes.
These parameters belong to the type Mechanical Unit in the topic Motion:
Parameter Description
Name The name of the mechanical unit.
Allow move of user frame Indicates if the mechanical unit should be allowed to move user
frames.
Activate at Start Up Indicates if the mechanical unit should be active when the con-
troller starts up.
In a single robot system, the robot is always active. In a Mul-
tiMove system, any mechanical unit (including robots) can be
inactive at start up and be activated later.
Deactivation Forbidden Indicates if it should be possible to deactivate the mechanical
unit.
In a single robot system it is not possible to deactivate a robot.
In a MultiMove system, one robot can be deactivated while an-
other is still active.
Motion Planner
A motion planner calculates the movements of a mechanical unit group. When
several tasks are in synchronized movement mode they use the same motion
planner (the first of the involved motion planners), see pictures in the following
examples.
At installation a Motion Planner is set up for each robot. The Motion Planner is
configured to optimize the motion for that specific robot. Do not change connection
between robot and Motion Planner.
These parameters belong to the type Motion Planner in the topic Motion:
Parameter Description
Name The name of the motion planner.
Parameter Description
Speed Control Warning In synchronized movement mode, the speed of one robot can
be slower than the programmed speed. This is because another
robot might limit the speed (e.g. if the other robot has a longer
path). If Speed Control Warning is set to Yes, a warning will be
given when the robot moves slower than the programmed speed,
in relation to the work object.
Speed Control Warning is only used to supervise TCP speed,
i.e. the speed of an additional axis is not supervised.
Speed Control Percent If Speed Control Warning is set to Yes, a warning will be issued
when the actual speed is slower than this percentage of the
programmed speed.
System Input
These parameters belong to the type System Input in the topic I/O.
Parameter Description
Argument 2 Specifies which task this system input should affect.
If the parameter Action is set to Interrupt or Load and Start, then Argument
2 must specify a task. All other values for Action results in a system input
that is valid for all tasks, and Argument 2 is not required.
Argument 2 refers to the parameter Task for the type Task.
System Output
These parameters belong to the type System Output in the topic I/O.
Parameter Description
Argument Specifies which mechanical unit the system output refers to.
If the parameter Status is set to TCP Speed, TCP Speed Reference or
Mechanical Unit Active, then Argument must specify a mechanical unit.
For all other values for Status the system output does not refer to a single
robot, and Argument is not required.
Argument refers to the parameter Name for the type Mechanical Unit in
the topic Motion.
Task
Motion Planner
Illustration
en0400000773
Task
Motion Planner
Mechanical Unit
Illustration
en0400000774
System Input
System Output
4 Calibration
4.1 Calibration overview
en0400000790
Action Info/illustration
7 The calibration can be performed with
between 3 and 10 points. Select how
many you want to use in Number of
Points.
To get adequate accuracy, at least 5
points is recommended.
en0400000791
8 Select Point 1.
9 Jog the robot you want to calibrate
and the reference robot so that both
TCPs are in the same point.
xx0400000785
Example
You have four robots, where robot 1 holds a work piece that robots 2, 3 and 4 work
on.
xx0400000901
Illustration
xx0300000591
Coordinate systems
Item Description
A Robot 1
B Robot 2
1 World coordinate system
2 Base coordinate system for robot 1
3 Base coordinate system for robot 2
4 User coordinate system for both robots
5 Object coordinate system for robot 1
6 Object coordinate system for robot 2
Illustration
xx0300000595
Coordinate systems
Item Description
A Robot 1
B Robot 2
1 World coordinate system
2 Base coordinate system for robot 1
3 Base coordinate system for robot 2
4 Base coordinate system for positioner
5 User coordinate system for both robots
6 Object coordinate system for both robots
Symbol descriptions
On the right side of the status bar, at the top of the FlexPendant, there are symbols
for the mechanical units in the system.
Symbol Description
A robot that is not the selected mechanical unit, or coordinated with the se-
lected mechanical unit. Jogging will not move this robot.
xx0400001165
A robot that is the selected mechanical unit, or coordinated with the selected
mechanical unit. Jogging will move this robot (together with any other coordin-
ated mechanical units).
xx0400001166
xx0400001167
xx0400001168
An additional axis that is not active. Either the mechanical unit is deactivated,
or the task inactive.
xx0400001170
Example
en0400001158
• additional axis 1 is selected mechanical unit and robot 3 and 4 are coordinated
with additional axis 1. Any jogging at this point will move these three
mechanical units.
• additional axis 2 is deactivated, or its task inactive.
Select task
When opening the Program Editor for a system with more than one task, a list of
all the tasks will be displayed. By tapping the task you want, the program code for
that task is displayed.
For a system with only one task, this list is never shown. The program code is
shown directly.
en0400000796
en0400000789
Background
The default behavior is that the programs of all NORMAL tasks are started
simultaneously when pressing the START button. However, not all NORMAL task
programs need to run at the same time. It is possible to select which of the NORMAL
task programs will start when pressing the START button.
If All Tasks is selected in the Task Panel Settings, the programs of all STATIC
and SEMISTATIC tasks with TrustLevel set to NoSafety can be selected to be
started with the START button, forward stepped with the FWD button, backward
stepped with the BWD button, and stopped with the STOP button.
If Task Panel Settings is set to Only Normal tasks, all STATIC and SEMISTATIC
tasks are greyed out and cannot be selected in the task panel, Quickset menu (see
Operating manual - IRC5 with FlexPendant, section Quickset menu). All STATIC
and SEMISTATIC tasks will be started if the start button is pressed.
If Task Panel Settings is set to All tasks, STATIC and SEMISTATIC tasks with
TrustLevelNoSafety can be selected in the task panel. All selected STATIC and
SEMISTATIC tasks can be stopped, stepped, and started. .
A STATIC or SEMISTATIC task, not selected in the task panel, can still be executing.
This is not possible for a NORMAL task.
Run Mode is always continuous for STATIC and SEMISTATIC tasks. The Run Mode
setting in the Quickset menu is only applicable for NORMAL tasks (see Operating
manual - IRC5 with FlexPendant, section Quickset menu).
This will only work in manual mode, no STATIC or SEMISTATIC task can be started,
stepped, or stopped in auto mode.
Selecting tasks
Use this procedure to select which of the tasks are to be started with the START
button.
Action
1 Set the controller to manual mode.
2 On the FlexPendant, tap the QuickSet button and then the tasks panel button to show
all tasks.
If Task Panel Settings is set to Only Normal tasks, all STATIC and SEMISTATIC tasks
are greyed out and cannot be selected.
If Task Panel Settings is set to All tasks, STATIC and SEMISTATIC tasks with Trust-
LevelNoSafety can be selected, while STATIC and SEMISTATIC tasks with TrustLevel
set to other values are grayed out and cannot be selected.
3 Select the check boxes for the tasks whose program should be started by the START
button.
Note
Note that changing the value of the system parameter Reset will affect all the
debug resettings (for example speed override and simulated I/O). For more
information, see Technical reference manual - System parameters, section Auto
Condition Reset.
6 Programming
6.1 RAPID components
Data types
This is a brief description of each data type in MultiMove. For more information,
see the respective data type in Technical reference manual - RAPID Instructions,
Functions and Data types.
Data type Description
syncident A variable of the data type syncident is used to identify which
WaitSyncTask, SyncMoveOn or SyncMoveOff instructions, in the differ-
ent task programs, should be synchronized with each other.
The name of the syncident variable must be the same in all task pro-
grams.
Declare syncident variables globally in each task. Do not reuse a
syncident variable (each WaitSyncTask, SyncMoveOn and
SyncMoveOff in a task program should have a unique syncident).
tasks A persistent variable of the data type tasks contains names of the tasks
that will be synchronized with WaitSyncTask or SyncMoveOn.
The tasks variable must be declared as system global (persistent)
variable, with the same name and the same content in all task programs.
identno A numeric value or a variable of type identno is used in the argument
ID of any move instructions executed between the SyncMoveOn and
SyncMoveOff instructions.
System data
System data is predefined, internal data of the robot. A system data can be read,
but not changed, from a RAPID program. For more information, see Technical
reference manual - RAPID Instructions, Functions and Data types.
System data Description
ROB_ID Reference to the robot (if any) controlled by the task.
If used from a task that does not control a robot, an error will occur. Al-
ways use TaskRunRob() to check this before using ROB_ID.
Instructions
This is a brief description of each instruction in MultiMove. For more information,
see the respective instruction in Technical reference manual - RAPID Instructions,
Functions and Data types.
Instruction Description
WaitSyncTask WaitSyncTask is used to synchronize several task programs at a special
point in the program.
A WaitSyncTask instruction will wait for the other task programs. When
all task programs have reached the WaitSyncTask instruction, they
will continue their execution.
Instruction Description
SyncMoveOn SyncMoveOn is used to start synchronized movement mode.
A SyncMoveOn instruction will wait for the other task programs. When
all task programs have reached the SyncMoveOn, they will continue
their execution in synchronized movement mode. The move instructions
in the different task programs are executed simultaneously, until the
instruction SyncMoveOff is executed.
A stop point must be programmed before the SyncMoveOn instruction.
SyncMoveOff SyncMoveOff is used to end synchronized movement mode.
A SyncMoveOff instruction will wait for the other task programs. When
all task programs have reached the SyncMoveOff, they will continue
their execution in unsynchronized mode.
A stop point must be programmed before the SyncMoveOff instruction.
SyncMoveUndo SyncMoveUndo is used to turn off synchronized movements, even if not
all the other task programs execute the SyncMoveUndo instruction.
SyncMoveUndo is intended for UNDO handlers. When the program
pointer is moved from the procedure, SyncMoveUndo is used to turn off
the synchronization.
MoveExtJ MoveExtJ (Move External Joints) moves one or several mechanical
units without TCP.
MoveExtJ is used to move additional axes, in a task without any robot.
Functions
This is a brief description of each function in MultiMove. For more information, see
the respective function in Technical reference manual - RAPID Instructions,
Functions and Data types.
Function Description
IsSyncMoveOn IsSyncMoveOn is used to tell if the mechanical unit group is in synchron-
ized movement mode.
A task that does not control any mechanical unit can find out if the
mechanical units defined in the parameter Use Mechanical Unit Group
are in synchronized movement mode.
RobName RobName is used to get the name of the robot controlled by the task. It
returns the mechanical unit name as a string. If called from a task that
does not control a robot, an empty string is returned.
Synchronizing argument
This is a brief description of the arguments used by move instructions to facilitate
the synchronization between tasks. For more information, see any move instruction
in Technical reference manual - RAPID Instructions, Functions and Data types.
Argument Description
ID All move instructions executed between the SyncMoveOn and SyncMoveOff
instructions must have the argument ID specified. The ID argument must
be the same for all the move instructions (in each task program) that should
execute simultaneously.
The ID argument can be a numeric value or a syncident variable.
The purpose of ID is to support the operator by making it easier to see which
move instructions that are synchronized with each other. Make sure an ID
value is not used for more than one move instruction, between the same
SyncMoveOn and SyncMoveOff instructions. It is also helpful for the oper-
ator if the ID values are ascending for consecutive move instructions (e.g.
10, 20, 30, ...).
Move instructions that are not between the SyncMoveOn and SyncMoveOff
instructions must not have the argument ID.
Different tasks
Each task program can handle the movements for one robot and up to 6 additional
axes. Several tasks can be used, each containing a program quite similar to the
program of the main task in a single robot application. For more information about
the tasks, see the section about Multitasking in Application manual - Controller
software IRC5.
robhold
robhold defines if the work object is held by the robot in this task.
robhold is normally set to FALSE. The task of the robot that holds the work object
(where robhold would be set to TRUE) does not have to declare it unless a
stationary tool is used.
ufprog
If the work object is stationary, ufprog is set to TRUE.
If the work object can be moved by any mechanical unit, ufprog is set to FALSE.
ufmec
ufmec is set to the name of the mechanical unit that moves the work object.
If ufprog is set to TRUE, ufmec can be left as an empty string (no mechanical unit
can move the work object).
Example 1
This is an example of a work object that can be moved by a mechanical unit with
the name STN_1:
PERS wobjdata wobj_stn1 := [FALSE, FALSE, "STN_1",
[[0,0,0],[1,0,0,0]], [[0,0,250],[1,0,0,0]]];
Example 2
Robot ROB_1 is welding a part that is hold by robot ROB_2. The workobject is moved
by robot ROB_2.
When declaring the work object in ROB_1, the robhold argument must be set to
FALSE, since robhold TRUE is only used for stationary tools. For ROB_2, any work
object can be active since it is only the joint angles of ROB_2 that coordinates the
work object for ROB_1.
PERS wobjdata wobj_rob1 := [FALSE, FALSE, "ROB_2",
[[0,0,0],[1,0,0,0]], [[0,0,250],[1,0,0,0]]];
Program description
In this example, one robot welds a circle on one object while the other robot welds
a square on another object.
Note
To make the example simple and general, ordinary move instructions (e.g. MoveL)
are used instead of weld instructions (e.g. ArcL). For more information about
arc welding, see Application manual - Arc and Arc Sensor.
Illustration
xx0300000603
A Robot 1
B Robot 2
PROC main()
...
IndependentMove;
...
ENDPROC
PROC IndependentMove()
MoveL p11, v500, fine, tool1\WObj:=wobj1;
MoveC p12, p13, v500, z10, tool1\WObj:=wobj1;
MoveC p14, p11, v500, fine, tool1\WObj:=wobj1;
ENDPROC
ENDMODULE
PROC main()
...
IndependentMove;
...
ENDPROC
PROC IndependentMove()
MoveL p21, v500, fine, tool2\WObj:=wobj2;
MoveL p22, v500, z10, tool2\WObj:=wobj2;
MoveL p23, v500, z10, tool2\WObj:=wobj2;
MoveL p24, v500, z10, tool2\WObj:=wobj2;
MoveL p21, v500, fine, tool2\WObj:=wobj2;
ENDPROC
ENDMODULE
Implementation
Semi coordinated movements require some synchronization between the task
programs (e.g. a WaitSyncTask instruction). The positioner must know when the
work object can be moved, and the robots must know when they can work on the
work object. However, it is not required that every move instruction is synchronized.
Advantages
The advantage is that each robot can work independently with the work object. If
the different robots perform very different assignments, this may save cycle time
compared to letting all the robot movements be synchronized.
Program description
In this example, we want to accomplish the welding of a small square and a long
line on one side of the object. On another side of the object we want to make a
square and a circle.
The positioner will first position the work object with the first side up, while the
robots wait. Robot 1 will then weld a line at the same time as robot 2 welds a square.
When the robots are done with the first welding operations, they wait while the
positioner turns the work object so the second side is upwards. Robot 1 will then
weld a circle at the same time as robot 2 welds a square.
WARNING
If the movement of the work object and the robot is not separated with
WaitSyncTask and stop points the following can occur:
• the mechanical units controlled by the different tasks can collide
• the robot is stepping backwards in the wrong direction
• the movement or restart instruction can be blocked.
Note
To make the example simple and general, ordinary move instructions (e.g. MoveL)
are used instead of weld instructions (e.g. ArcL). For more information about
arc welding, see Application manual - Arc and Arc Sensor.
Illustration
xx0300000596
A Robot 1
B Robot 2
PROC main()
...
SemiSyncMove;
...
ENDPROC
PROC SemiSyncMove()
! Wait for the positioner
WaitSyncTask sync1, all_tasks;
MoveL p11, v1000, fine, tool1 \WObj:=wobj_stn1;
MoveL p12, v300, fine, tool1 \WObj:=wobj_stn1;
! Move away from the object
MoveL p13, v1000, fine, tool1;
! Sync to let positioner move
WaitSyncTask sync2, all_tasks;
! Wait for the positioner
WaitSyncTask sync3, all_tasks;
MoveL p14, v1000, fine, tool1 \WObj:=wobj_stn1;
MoveC p15, p16, v300, z10, tool1 \WObj:=wobj_stn1;
MoveC p17, p14, v300, fine, tool1 \WObj:=wobj_stn1;
WaitSyncTask sync4, all_tasks;
MoveL p13, v1000, fine, tool1;
ENDPROC
ENDMODULE
PROC main()
...
SemiSyncMove;
...
ENDPROC
PROC SemiSyncMove()
! Wait for the positioner
PROC main()
...
SemiSyncMove;
...
ENDPROC
PROC SemiSyncMove()
! Move to the wanted frame position. A movement of the
! positioner is always required before the first semi-
! coordinated movement.
MoveExtJ angle_0, vrot50, fine;
! Sync to let the robots move
WaitSyncTask sync1, all_tasks;
! Wait for the robots
WaitSyncTask sync2, all_tasks;
MoveExtJ angle_neg90, vrot50, fine;
WaitSyncTask sync3, all_tasks;
Activate task
The unit that controls the frame should be activated in the task selection panel on
the FlexPendant (see Selecting tasks on page 53).
PROC main()
...
WaitSyncTask sync0, task_list;
Continues on next page
Application manual - MultiMove 69
3HAC050961-001 Revision: D
© Copyright 2004-2017 ABB. All rights reserved.
6 Programming
6.5.3 Considerations and limitations when using semi coordinated movements
Continued
PROC main()
...
MoveL p_fine, v1000, fine, tcp2;
WaitSyncTask sync0, task_list;
!Wait until the movement in T_ROB1 task is finished
WaitSyncTask sync1, task_list;
SyncMoveOn sync2, task_list;
MoveL p2_100 \ID:=10, v100, fine, tcp2;
SyncMoveOff sync3;
!The path has been removed at SyncMoveOff
!Perform a movement to wanted position for the object to
!make the position available for other tasks
MoveL p2_100, v100, fine, tcp2;
WaitSyncTask sync3, task_list;
WaitSyncTask sync4, task_list;
MoveL p2_110, v100, z10, tcp2;
...
ENDPROC
When switching between semicoordinated to synchronized movement, a
WaitSyncTask is needed (when using identity sync1).
When switching between synchronized to semicoordinated movement, the task
that move the work object (rob2_obj) needs to move to the desired position. After
that a WaitSyncTask is needed (identity sync3) before the semicoordinated
movement can be performed.
Implementation
The synchronized movement mode is started by executing a SyncMoveOn
instruction in each task program. The synchronized movement mode is ended by
executing a SyncMoveOff instruction in each task program. The number of
executed move instruction between SyncMoveOn and SyncMoveOff has to be the
same for all task programs.
Advantages
Coordinated synchronized movements usually save cycle time since the robots
do not have to wait while the work object is being moved. It also allows robots to
cooperate in ways that would otherwise be difficult or impossible to achieve.
Limitations
Coordinated synchronized movements can only be used if you have the RobotWare
option MultiMove Coordinated.
Program description
In this example, we want both robots to weld all the way around the object.
The robot TCPs are programmed to make circular paths relative to the work object.
However, since the work object is rotating, the robots will almost stand still while
the work object is turning.
Note
To make the example simple and general, ordinary move instructions (e.g. MoveL)
are used instead of weld instructions (e.g. ArcL). For more information about
arc welding, see Application manual - Arc and Arc Sensor.
Illustration
xx0300000597
A Robot 1
B Robot 2
PROC main()
...
SyncMove;
...
ENDPROC
PROC SyncMove()
MoveJ p100, v1000, z50, tool1;
WaitSyncTask sync1, all_tasks;
MoveL p101, v500, fine, tool1 \WObj:=wobj_stn1;
SyncMoveOn sync2, all_tasks;
MoveL p102\ID:=10, v300, z10, tool1 \WObj:=wobj_stn1;
MoveC p103, p104\ID:=20, v300, z10, tool1 \WObj:=wobj_stn1;
MoveL p105\ID:=30, v300, z10, tool1 \WObj:=wobj_stn1;
MoveC p106, p101\ID:=40, v300, fine, tool1 \WObj:=wobj_stn1;
SyncMoveOff sync3;
MoveL p199, v1000, fine, tool1;
UNDO
SyncMoveUndo;
ENDPROC
ENDMODULE
PROC main()
...
SyncMove;
...
ENDPROC
PROC SyncMove()
MoveJ p200, v1000, z50, tool2;
WaitSyncTask sync1, all_tasks;
MoveL p201, v500, fine, tool2 \WObj:=wobj_stn1;
SyncMoveOn sync2, all_tasks;
MoveL p202\ID:=10, v300, z10, tool2 \WObj:=wobj_stn1;
PROC main()
...
SyncMove;
...
ENDPROC
PROC SyncMove()
MoveExtJ angle_neg20, vrot50, fine;
WaitSyncTask sync1, all_tasks;
! Wait for the robots
SyncMoveOn sync2, all_tasks;
MoveExtJ angle_20\ID:=10, vrot100, z10;
MoveExtJ angle_160\ID:=20, vrot100, z10;
MoveExtJ angle_200\ID:=30, vrot100, z10;
MoveExtJ angle_340\ID:=40, vrot100, fine;
SyncMoveOff sync3;
UNDO
SyncMoveUndo;
ENDPROC
ENDMODULE
Synchronization point
When one task program reaches a synchronization point, it will wait until all task
programs have reached the same synchronization point.
Synchronization points are:
• all WaitSyncTask instructions
• all SyncMoveOn instructions
• all SyncMoveOff instructions
• all move instructions between SyncMoveOn and SyncMoveOff
When one task program reaches a WaitSyncTask, SyncMoveOn or SyncMoveOff
instruction, it will wait until all task programs have reached the instruction with the
same syncident variable.
All move instructions between SyncMoveOn and SyncMoveOff must use the
argument ID. When a task program reaches such a move instruction, it will wait
until all task programs have reached the move instruction with the ID argument
set to the same value.
Example
In this example both task programs execute two move instructions, but one of the
tasks executes other instructions and functions.
Robot 2 will wait and not move to p21 until robot 1 starts to move towards p11.
Since SyncMoveOff is a synchronization point, both tasks will wait for di1 to
become 1 before executing SyncMoveOff.
Robot speeds
When the movements of several robots are synchronized, all robots adjust their
speed to finish their movements simultaneously. This means that the robot
movement that takes the longest time will determine the speed of the other robots.
xx0400000907
CirPoint
T1
CirPoint
T2
T3
xx1400001119
Example
In this example, there are three tasks. Task2 and Task3 are in synchronized
movement mode, while Task1 works independently. In this situation, the user taps
Move PP to Main for Task1.
The program pointers for Task2 and Task3 will be lost.
xx0500001444
Example
xx0400000717
If p12 would be in the beginning of its circular path (closer to p11 than p13) and
p22 would be in the end of its circular path (closer to p23 than p21) then the tool
orientation could become wrong. If p12 and p22 are in the same relative position
on the path (percentage of the path length) the tool orientation will remain correct.
Tip
By modifying the position for both robots circle point at the same time, you make
sure the tool orientation stays correct. This means that, in the example, you
should step through the program and then modify p12 and p22 at the same time.
Collision Detection
If collision is detected for one robot, all robots are stopped. Even if the robots are
run individually, all robots behave as if it had collided.
One reason for this behavior is that when a collision is detected, there is a big risk
that it was two robots that collided. Another reason is that if one robot stops and
another continues, this might cause another collision.
World Zones
A world zone declared in one task program is only valid for the mechanical units
that belong to that task. For a world zone to affect all mechanical units, it must be
declared in all task programs.
Changing a PERS
A globally declared PERS will keep its value even if a new declaration of the same
PERS is loaded. The value of the PERS that was first loaded will be preserved as
long as there is any reference to that PERS.
If you want to replace all the task programs with new programs where the values
of the PERS is different, remove all task programs first and then load all the new
task programs. That way the old value of the PERS will be lost when all declarations
of it are removed.
Changing the value of a PERS from the Data Variable view on the FlexPendant and
saving the program, will update the PERS in a correct way.
Use SyncMoveUndo
Always use an UNDO handler with a SyncMoveUndo instruction in any procedure
that has synchronized movements (i.e. that has a SyncMoveOn instruction).
After a SyncMoveOn instruction, the movements in the task program are
synchronized with movements in other task programs. If the program pointer is
then manually moved before the SyncMoveOff instruction is executed, the
error handler code can handle errors that occur both in synchronized movements
mode and unsynchronized mode.
StorePath and RestoPath require the option Path Recovery. For more information
about StorePath and RestoPath, see Application manual - Controller software
IRC5.
PROC main()
...
SyncMoveOn, sync1, motion_tasks;
my_proc_on;
MoveL p101\ID:=10, v100, z10, gun1 \WObj:=wobj_handlerob;
MoveL p102\ID:=20, v100, fine, gun1 \WObj:=wobj_handlerob;
my_proc_off;
SyncMoveOff sync2;
...
ERROR
IF ERRNO = ERR_PATH_STOP THEN
my_proc_on;
StartMoveRetry;
ENDIF
ENDPROC
TRAP iprocfail
my_proc_off;
ProcerrRecovery \SyncLastMoveInst;
RETURN;
ENDTRAP
PROC my_proc_on()
SetDO do_myproc, 1;
CONNECT proc_sup_int WITH iprocfail;
ISignalDI di_proc_sup, 1, proc_sup_int;
ENDPROC
PROC my_proc_off()
SetDO do_myproc, 0;
IDelete proc_sup_int;
ENDPROC
ERROR
IF ERRNO = ERR_PATH_STOP THEN
StartMoveRetry;
ENDIF
ENDPROC
Note
Note that the T_STN1 task program must have the instructions StorePath and
RestoPath, even if there is no code between these instructions. No task program
continues to execute its error handler until all task programs execute the
StorePath instruction.
Overview
It is possible to disconnect a drive module and continue working, for example:
• if a drive module is required elsewhere due to failure or similar.
• for tuning purposes during commissioning, for instance programming one
robot at a time while the others are temporarily shut down.
Make sure the application allows work to continue without this drive module, by
using the procedure Continue with the Drive Module Disconnect function on
page 95.
But if one of the following conditions are fulfilled then Continue with alternative
configuration on page 96.
• The first alternative fails.
• The limit switches are used on the robot.
• The drive module needs to be moved (e.g. for repair or installation in another
cell).
Tip
Action Info/illustration
4 Remove the connector from X22 in the
drive module. When the connector is
removed the following message appears
on the Flex Pendant: Event Message
50320, Drive Module Disconnected.
xx0500001599
Note
Depending on the type of failure, this method may not always succeed. For
example if there is an error in the axis computer. In that case, continue with the
alternative configuration.
Action Info/illustration
5 Switch on the power to the controller.
6 Select a new robot system that is configured without the
disconnected mechanical unit.
Note that the configuration has to be in accordance with
the connections in step 3.
xx0500001599
Action Info/illustration
4 Remove the safety signal connection of drive module 1 See Ethernet connections on
from X7 on the panel board in the control module. Move page 21.
the safety signal connection of drive module 2 from X8
to X7. Then push the jumper connector in the X8 connect-
or.
5 Switch on the power to the controller.
6 Select a new robot system that is configured without
robot 1.
Note that the configuration has to be in accordance with
the connections in step 3. I.e. the remaining robot will
be referred to as robot 1.
Tip
The same actions can be taken if the axis computer fails, or other failure that
cannot be helped with Drive Module Disconnect.
Index J
jogging, 48, 52
A M
Activate at Start Up, 32, 37 Mechanical Unit, 32, 37
Allow Drive Module Disconnect, 32 Mechanical Unit Group, 30, 35, 37
Allow move of user frame, 32, 37 mechanical unit menu, 52
Argument, 34, 39 modify position, 80
Argument 2, 34, 39 Motion, 32
asynchronously raised errors, 89 Motion Planner, 32, 35, 37
Auto mode, 54 MotionTask, 30, 35, 37
motion tasks, 13
B Motion topic, 32
base coordinate system, 45–46
MoveExtJ, 56
C move instructions, 78
calibration, 41 Move PP To Main, 51
circular movements, 82
Collision Detection, 83
N
NORMAL, 30
configuration, 29
controller, 19 O
Controller, 30 object coordinate system, 45–46
Controller topic, 30 options, 7, 13
control module, 20
coordinated, 52 P
coordinated synchronized movements, 71 PERS, 84
coordinated work object, 59 positioner, 14
coordinate systems, 41, 45 ProcerrRecovery, 89, 91
coordination, 14 Production window, 51
corner zones, 75 program example, 61, 64, 72
create MultiMove system, 27 programming, 55
D R
data types, 55 RAPID, 55
deactivate tasks, 53 RAPID example, 61, 64, 72
Deactivation Forbidden, 32, 37 relative calibration, 42
drive module, 25 Relative n points, 42
Drive Module Disconnect, 95 RestoPath, 89, 93
drive modules, 19 robot, 14
Drive Module User Data, 32 robot speed, 79
dummy instructions, 78
S
E safety, 11
ERR_PATH_STOP, 89 Safety signal connections, 23, 26
error recovery, 87 select tasks, 53
Ethernet connections, 21 semi coordinated movements, 63
example applications, 15 SEMISTATIC, 30
speed, 79
F Speed Control Percent, 33, 37
failure in the hardware, 95 Speed Control Warning, 33, 35, 37
FlexPendant, 47 STATIC, 30
functions, 56 status bar, 48
stop points, 75
H StorePath, 89, 93
hardware, 19
SyncArc, 17, 37, 46, 64, 72
hardware failure, 95
synchronization, 14, 63, 77
I synchronizing argument, 57
I/O, 34 syncident, 55, 84
I/O topic, 34 SyncMoveOff, 56, 71
ID, 57 SyncMoveOn, 56, 71
identno, 55 SyncMoveUndo, 56, 84
independent movements, 60 System Input, 34, 39
installation, 19 System Output, 34, 39
instructions, 55 system parameters, 30
IsSyncMoveOn, 56
T
Task, 30, 35, 37
3HAC050961-001, Rev D, en
ABB AB, Robotics
Robotics and Motion
S-721 68 VÄSTERÅS, Sweden
Telephone +46 (0) 21 344 400
ABB Inc.
Robotics and Motion
1250 Brown Road
Auburn Hills, MI 48326
USA
Telephone: +1 248 391 9000
www.abb.com/robotics