3HAC16587-en
3HAC16587-en
Application manual
Conveyor tracking
Trace back information:
Workspace R13-2 version a2
Checked in 2013-09-30
Skribenta version 4.0.378
Application manual
Conveyor tracking
RobotWare 5.60
Table of contents
Overview of this manual ................................................................................................................... 7
Product documentation, IRC5 .......................................................................................................... 9
Safety ................................................................................................................................................ 11
2 Installation 25
2.1 Hardware connections ....................................................................................... 25
2.2 Installing the encoder for conveyor tracking ........................................................... 26
2.3 Encoder location ............................................................................................... 28
2.4 Connecting the encoder to the encoder interface .................................................... 29
2.5 Synchronization switch ....................................................................................... 32
4 Programming 47
4.1 Programming conveyor tracking .......................................................................... 47
4.2 Working with the object queue ............................................................................. 48
4.3 Activating the conveyor ...................................................................................... 49
4.4 Defining a conveyor coordinated work object ......................................................... 50
4.5 Waiting for a work object .................................................................................... 51
4.6 Programming the conveyor coordinated motion ...................................................... 52
4.7 Dropping a work object ...................................................................................... 53
4.8 Entering and exiting conveyor tracking motion in corner zones .................................. 54
4.9 Information on FlexPendant ................................................................................ 55
4.10 Programming considerations ............................................................................... 56
4.11 Finepoint programming ...................................................................................... 57
4.12 Operating modes .............................................................................................. 58
5 System parameters 59
5.1 Introduction ...................................................................................................... 59
5.2 Topic I/O .......................................................................................................... 60
5.3 Topic Process .................................................................................................. 61
5.4 Topic Motion .................................................................................................... 64
6 RAPID reference 67
6.1 Instructions ...................................................................................................... 67
6.1.1 WaitWObj - Wait for work object on conveyor ............................................... 67
6.1.2 DropWObj - Drop work object on conveyor ................................................... 70
3HAC16587-1 Revision: L 5
© Copyright 2004-2013 ABB. All rights reserved.
Table of contents
9 Accelerating conveyors 87
9.1 Introduction to accelerating conveyors .................................................................. 87
9.2 System parameters ........................................................................................... 88
9.3 Predicting speed changes ................................................................................... 90
9.4 UseAccProfile - Use acceleration profile ............................................................... 91
10 Indexing conveyors 95
10.1 Description of indexing conveyor options .............................................................. 95
10.2 Tracking indexing conveyors ............................................................................... 96
10.2.1 Setting up tracking for an indexing conveyor ............................................... 96
10.2.2 System parameters ................................................................................. 97
10.2.3 RAPID instructions .................................................................................. 98
10.2.4 RecordProfile ......................................................................................... 99
10.2.5 WaitAndRecProf ..................................................................................... 100
10.2.6 StoreProfile ............................................................................................ 101
10.2.7 LoadProfile ............................................................................................ 102
10.2.8 ActivateProfile ........................................................................................ 103
10.2.9 DeactProfile ........................................................................................... 104
10.2.10 CnvGenInstr ........................................................................................... 105
10.3 Indexing conveyor with servo control (Indexing Conveyor Control) ............................. 108
10.3.1 Introduction to indexing conveyors with servo control .................................... 108
10.3.2 Setting up a servo controlled indexing conveyor ........................................... 111
10.3.3 System parameters and configuration files ................................................... 112
10.3.4 Testing the indexing conveyor setup ........................................................... 117
10.3.5 Calibrating the base frame ....................................................................... 118
10.3.6 indcnvdata ............................................................................................. 119
10.3.7 IndCnvInit .............................................................................................. 120
10.3.8 IndCnvEnable and IndCnvDisable .............................................................. 121
10.3.9 IndCnvReset .......................................................................................... 122
10.3.10 IndCnvAddObject .................................................................................... 123
10.3.11 RAPID programming example ................................................................... 124
10.3.12 Minimizing trigger time ............................................................................. 127
Index 143
6 3HAC16587-1 Revision: L
© Copyright 2004-2013 ABB. All rights reserved.
Overview of this manual
Usages
The manual describes how the options are installed, programmed, and operated.
References
The manual contains references to the following information products:
References Document ID
Product manual - IRC5 3HAC021313-001
IRC5 of design M2004
Product manual - IRC5 3HAC047136-001
IRC5 of design 14
Product Manual - IRC5P 3HNA008861-001
Operating manual - IRC5 with FlexPendant 3HAC16590-1
Operator's Manual - IRC5P 3HNA008861-001
Operating manual - RobotStudio 3HAC032104-001
Technical reference manual - System parameters 3HAC17076-1
Technical reference manual - RAPID Instructions, Functions and 3HAC16581-1
Data types
Technical reference manual - RAPID overview 3HAC16580-1
Application manual - Additional axes and stand alone controller 3HAC021395-001
Application manual - Engineering tools 3HAC020434-001
Application manual - MultiMove 3HAC021272-001
Application manual - DeviceNet 3HAC047125-001
Revisions
The following revisions of this manual have been released.
Revision Description
- Released with RobotWare 5.04.
... ...
G Released with RobotWare 5.13.
The option Indexing Conveyor Control was added.
The manual was restructured.
References to IRC5P added.
Continued
Revision Description
H Released with RobotWare 5.14.
The following updates and additions were made:
• Added new system parameter, Conveyor Tool Change Mode, see Topic
Motion on page 64.
• Advanced queue tracking is available with Indexing Conveyor Control.
• Added schematic overview, see Indexing conveyor with servo control
(Indexing Conveyor Control) on page 108.
• Limitations updated, see Indexing conveyor with servo control (Indexing
Conveyor Control) on page 108.
• Minor corrections, see System parameters and configuration files on
page 112.
J Released with RobotWare 5.15.
The following updates and additions were made:
• The descriptions for the system parameters in the type Unit Type are
updated.
• Added new system parameter, Max accel for conveyor tracking, see
Type Robot on page 64.
K Released with RobotWare 5.15.01.
Minor corrections.
L Released with RobotWare 5.60.
• Added more information for IRB 360 variants with different payloads,
see:
• - Stop ramp, Start ramp, and syncfilter ratio, see Type Conveyor
systems on page 61.
- Corvec correction level, see Type Robot on page 64.
- Accelerating conveyors, System parameters on page 88.
- Indexing conveyor with servo control, see System parameters
and configuration files on page 112, and indcnvdata on page 119.
• Corrected information about TCP measurement method for circular
conveyor tracking, see TCP measurement method on page 83.
Note
8 3HAC16587-1 Revision: L
© Copyright 2004-2013 ABB. All rights reserved.
Product documentation, IRC5
Product manuals
Manipulators, controllers, DressPack/SpotPack, and most other hardware will be
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.
Continued
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 - Introduction to RAPID
• Operating manual - IRC5 with FlexPendant
• Operating manual - RobotStudio
• Operating manual - Trouble shooting IRC5, for the controller and manipulator.
10 3HAC16587-1 Revision: L
© Copyright 2004-2013 ABB. All rights reserved.
Safety
Safety
Safety of personnel
When working inside the robot controller it is necessary to be aware of
voltage-related risks.
A danger of high voltage is associated with the following parts:
• Units inside the controller, for example I/O units, can be supplied with power
from an external source.
• The mains supply/mains switch.
• The power unit.
• The power supply unit for the computer system (230 VAC).
• The rectifier unit (400-480 VAC and 700 VDC). Capacitors!
• The drive unit (700 VDC).
• The service outlets (115/230 VAC).
• The power supply unit for tools, or special power supply units for the
machining process.
• The external voltage connected to the controller remains live even when the
robot is disconnected from the mains.
• Additional connections.
Therefore, it is important that all safety regulations are followed when doing
mechanical and electrical installation work.
Safety regulations
Before beginning mechanical and/or electrical installations, ensure you are familiar
with the safety regulations described in Product manual - IRC5.
3HAC16587-1 Revision: L 11
© Copyright 2004-2013 ABB. All rights reserved.
This page is intentionally left blank
1 Introduction to conveyor tracking
1.1 Physical components
A B
C
D
IRB
E
xx1200001074
A Synchronization switch
B Conveyor
C Encoder, 24 V
D Encoder interface, DSQC 377B
E IRC5 controller
IRB Robot
The encoder and synchronization switch are connected to the encoder interface,
DSQC 377B.
One encoder can be connected to several encoder interfaces. If more than one
robot should track the conveyor, then each robot controller must have an encoder
interface.
B D
C
IRB
E
xx1200001075
Continued
A Infeeder
B Sensor
C Motor unit
D Indexed conveyor
E IRC5 controller
IRB IRB robot
14 3HAC16587-1 Revision: L
© Copyright 2004-2013 ABB. All rights reserved.
1 Introduction to conveyor tracking
1.2 Features
1.2 Features
Accuracy
In automatic mode, at 150 mm/s constant conveyor speed, the tool center point
(TCP) of the robot will stay within +/- 2 mm of the path as seen with no conveyor
motion. This is valid as long as the robot is within its dynamic limits with the added
conveyor motion. This figure depends on the calibration of the robot and conveyor
and is applicable for linear conveyor tracking only.
Object queue
For the option Conveyor Tracking, the encoder interface will maintain a queue of
up to 254 objects that have passed the synchronization switch. For the option
Indexing Conveyor Control, the queue can contain up to 100 objects.
Start window
A program can choose to wait for an object that is within a window past the normal
starting point, or wait for an object to pass a specific distance, or immediately take
the first object in the object tracking queue. Objects that go beyond the start window
are automatically skipped.
Maximum distance
A maximum tracking distance can be specified to stop the robot from tracking
outside of the working or safety area.
Multiple conveyors
Up to six conveyors are supported with the option Conveyor Tracking. Each encoder
must be connected to an encoder interface.
Continued
Up to two indexed conveyors can be used with the option Indexing Conveyor
Control.
Coordinated finepoint
A finepoint can be programmed while moving relative to the conveyor. This conveyor
coordinated finepoint will ensure that the robot stops moving relative to the conveyor
and will follow the conveyor while the RAPID program continues execution. The
robot will hold the position within +/- 0.7 mm depending on calibration of the robot
and conveyor.
16 3HAC16587-1 Revision: L
© Copyright 2004-2013 ABB. All rights reserved.
1 Introduction to conveyor tracking
1.3 Limitations
1.3 Limitations
Additional axes
For the option Conveyor Tracking, each conveyor is considered an additional axis.
Thus the system limitation of 6 active additional axes must be reduced by the
number of active and installed conveyors.
The first installed conveyor will use measurement node 6 and the second conveyor
will use measurement node 5. These measurement nodes are not available for
additional axes and no resolvers should be connected to these nodes on any
additional axes measurement boards.
For the option Indexing Conveyor Control, each conveyor is considered as two
additional axes.
Continued
18 3HAC16587-1 Revision: L
© Copyright 2004-2013 ABB. All rights reserved.
1 Introduction to conveyor tracking
1.4 Principles of conveyor tracking
Description
In conveyor tracking, the robot Tool Center Point (TCP) will automatically follow a
work object that is defined on the moving conveyor. While tracking the conveyor
the IRC5 will maintain the programmed TCP speed relative to the work object even
if the conveyor runs at different speeds.
The options Conveyor Tracking and Indexing Conveyor Control are built on the
coordinated work object, as with coordinated motion with additional axes. See
Application manual - Additional axes and stand alone controller.
Continued
A B
z y
7 6 5 4 3 2 1 x
C D E
F G
xx1200001076
A Synchronization switch
B Work object user frame
C Minimum distance (minimum distance)
Continued
Objects Description
1 This object is connected as indicated by the coordinate frame attached to the
position of the object on the conveyor.
2 Object 2 is outside the start window and is no longer tracked. This object will
be skipped and cannot be connected by a WaitWObj instruction. It is skipped
because the conveyor speed is such that coordination with the object could
not be completed before the object moves outside the maximum distance or
work area of the robot.
3 and 4 These objects are within the start window and are tracked. If object 1 is and 4
dropped via a DropWObj instruction then object 3 is the next object to be con-
nected when a WaitWObj instruction is issued. Because objects 3 and 4 were
in the start window, the WaitWObj instruction will not wait but return immediately
with object 3.
5 and 6 These objects lie within the queue tracking distance and are tracked. If objects
and 6, 3, and 4 were not present, then a WaitWObj instruction would stop pro-
gram execution until object 5 entered the start window.
7 This object has not yet passed the synchronization switch and has not yet been
registered.
Continued
Coordinate systems
D
z y
A B C
z y z y x
x x
E F
G H
0.0 m
z y
J x z
K x
y
xx1200001077
A Synchronization switch
B Base frame for conveyor
C User frame
D Object frame
E Minimum distance
F Start window width
G Queue tracking distance
H Maximum distance
J World frame
K Base frame for robot
The preceding figure shows the principle coordinate frames used in conveyor
tracking. See the following table.
Coordinate system Relative to
Base frame of robot World frame
World frame N.a.
Base frame of conveyor World frame
User frame, coordinated to conveyor World frame via base frame of conveyor
Object frame (not shown) User frame
Continued
for the conveyor coordinated work object coincides with the base frame of the
conveyor. As the conveyor moves, then the user frame in the conveyor coordinated
work object moves along the x-axis of the conveyor base frame.
See Operating manual - IRC5 with FlexPendant, and Technical reference
manual - RAPID overview.
3HAC16587-1 Revision: L 23
© Copyright 2004-2013 ABB. All rights reserved.
This page is intentionally left blank
2 Installation
2.1 Hardware connections
2 Installation
2.1 Hardware connections
Related information
If the conveyor is used with IRC5P (for paint applications), see Product
Manual - IRC5P.
3HAC16587-1 Revision: L 25
© Copyright 2004-2013 ABB. All rights reserved.
2 Installation
2.2 Installing the encoder for conveyor tracking
DSQC 377B
Power supply 24 VDC, typically 50 mA, maximum 200 mA
Operating temperature +5°C - +60°C
Encoder frequency 0 - 20 kHz
Encoder input current 6.8 mA at 24 VDC i
Digital input current 6.8 mA at 24 VDC i
i 18 VDC < ‘1’ < 35 VDC
-35 VDC< ‘0’ < 2 VDC
Minimum speed The lower limit on the number of counts per second before the en-
coder signals zero speed is 40 counts per second. If the speed of
the conveyor is lower, zero speed will be indicated.
At 10,000 counts per meter, the minimum conveyor speed is 4 mm/s.
Continued
Maximum speed The upper limit on the number of counts per second before the en-
coder can no longer keep track of the counts along the conveyor is
20,000 counts per second.
At 10,000 counts per meter, the maximum conveyor speed is 2,000
mm/s.
3HAC16587-1 Revision: L 27
© Copyright 2004-2013 ABB. All rights reserved.
2 Installation
2.3 Encoder location
Description
The encoder is normally installed on the conveyor drive unit. The encoder can be
connected to an output shaft on the drive unit, directly or via a gear belt
arrangement.
Prerequisites
If the encoder is connected directly to a drive unit shaft, a flexible coupling must
be used to prevent applying mechanical forces to the encoder rotor. Do not use a
coupling using a plastic or rubber hose. If the drive unit includes a clutch
arrangement, the encoder must be connected on the conveyor side of the clutch.
If the conveyor drive unit is located a long distance away from the robot then the
conveyor itself can be a source of inaccuracy as the conveyor will stretch or flex
over the distance from the drive unit to the robot cell. In such a case it may be
better to mount the encoder closer to the robot cell with a different coupling
arrangement.
28 3HAC16587-1 Revision: L
© Copyright 2004-2013 ABB. All rights reserved.
2 Installation
2.4 Connecting the encoder to the encoder interface
Encoder connections
One encoder can be connected to one or more encoder interfaces. The encoder
interfaces can be connected to the same robot controller as in the case for two
conveyors, or to different robot controllers, for example when two different robots
follow the same conveyor.
Continued
5 D
G
6 D
7
8
9 D DI1
10
11
12 D
H
13 D
14
15
16 D DI2
0V 24VDC
C
X20 1
2
3
4
5 D
B
G
6 D
7
8
9 D DI1
10
11
12 D
H
13 D
14
15
24VDC
B (90°)
A (0°)
16 D DI2
0V
+24 VDC
0 Volt F
xx1200001078
A Robot 1
B Robot 2
Continued
C Encoder interface or queue tracking unit DSQC 354, DSQC 377, DSQC 377A,
(with galvanic insulation) DSQC 377B.
The units support only PNP and 'push-
pull' (E2) encoders.
D Opto
E Encoder
F External power Do not connect internal supply if extern-
al is used.
G Encoder 1
H Encoder 2 Used for backup encoder only.
DI1 Digital input 1
DI2 Digital input 2 Used for backup encoder only.
If digital input is used as common sync switch, use the same connection method
as for encoder.
24 V initiators with PNP or push-pull outputs can be used.
3HAC16587-1 Revision: L 31
© Copyright 2004-2013 ABB. All rights reserved.
2 Installation
2.5 Synchronization switch
Description
The synchronization switch indicates that there are objects on the conveyor. Select
a switch that provides a reliable and repeatable signal for objects on the conveyor
regardless of conveyor speed.
Recommendations
If the conveyor can run backwards, then the switch should be constructed not to
give a signal if an object runs backwards past the switch. If the synchronization
switch can give multiple signals when an object passes it, then the parameter
SyncSeparation can be set to so that only one signal is accepted as an object
before a given distance is covered on the conveyor. See Defining conveyor start
window and sync separation on page 38.
32 3HAC16587-1 Revision: L
© Copyright 2004-2013 ABB. All rights reserved.
3 Configuration and calibration
3.1 About configuration and calibration
Introduction
This section describes how to configure and calibrate the conveyor and encoder
(if used) with respect to the robot and the robot world frame.
The encoder descriptions in this chapter are only valid for the option Conveyor
Tracking. Other descriptions apply also to the option Indexing Conveyor Control.
If the conveyor is used with IRC5P (painting), see Operator's Manual - IRC5P.
3HAC16587-1 Revision: L 33
© Copyright 2004-2013 ABB. All rights reserved.
3 Configuration and calibration
3.2 Calibrating CountsPerMeter and QueueTrckDist
Description
If the exact gear ratio between the encoder and the conveyor is unknown (typically
the case) then the system parameter CountsPerMeter must be calibrated using
either a tape-measure or the robot TCP as a measuring device.
If the robot TCP is used as the measuring device then an accurately defined tool
must be used. The encoder interface will keep track of all objects that have passed
the synchronization switch but have not yet passed the 0.0 m point. It is not possible
to connect to these objects. First configure the encoder interface for 10,000
CountsPerMeter (default) and the system parameter QueueTrckDist of 0.0 m.
Calculating CountsPerMeter
Move an object past the sync switch and stop the conveyor. Read the conveyor
position from the Jogging window, position_1. Move the conveyor at least 1
meter and read position_2. The accuracy will be best if this distance is large as
possible within the work space. Use a tape-measure (or differences in robot tool
position) to find the exact distance between position_1 and position_2. This
is called measured_meters.
Use this formula to calculate CountsPerMeter:
34 3HAC16587-1 Revision: L
© Copyright 2004-2013 ABB. All rights reserved.
3 Configuration and calibration
3.3 Calibrating the conveyor base frame
Prerequisites
Before calibrating the base frame of the conveyor the values for the CountsPerMeter
and QueueTrkDist must be correct. See Calibrating CountsPerMeter and
QueueTrckDist on page 34.
The conveyor base frame calibration method will use the measurement of 4
positions of the same object on the conveyor to determine the conveyor base frame
(B), as shown in the following figure.
B
A Z
Y
QueueTrkDist X
p_1 p_2 p_3
0.0 m C
A Synchronization switch
B Base frame
C Conveyor distance
Note
Once an object is on the conveyor and beyond the 0.0 m point, it is possible to
use the base frame calibration method to define the conveyor position and
orientation in the work space.
Continued
Field Description
Unit The name of the mechanical unit for which the definition of base
frame has be done.
List contents Description
Method Displays the selected calibration method.
Mean error The accuracy of the robot positioning against the reference point.
Max error The maximum error for one positioning.
Cartesian X The x coordinate for the base frame.
Cartesian Y The y coordinate for the base frame.
Cartesian Z The z coordinate for the base frame.
Quaternion 1-4 Orientation components for the base frame.
Continued
3HAC16587-1 Revision: L 37
© Copyright 2004-2013 ABB. All rights reserved.
3 Configuration and calibration
3.4 Defining conveyor start window and sync separation
Start window
The start window is the length along the conveyor in which objects are tracked
and are ready for connection. When a WaitWObj instruction is issued the system
will connect to the first object inside the start window or wait otherwise.
If an object goes beyond the start window then it is no longer tracked and it is not
available for connection. Such objects are automatically skipped. The purpose of
the start window is to provide a buffer of objects for speed variations of the
conveyor. If an object is connected within the start window then it should be certain
that the motion coordinated to the object can be completed before the working
area limit or maximum distance is reached.
Sync separation
The parameter Sync Separation is used to filter out unwanted sync signals from a
synchronization switch. This parameter establishes a minimum distance that the
conveyor must move after one sync signal before a new sync signal is accepted
as a valid object.
38 3HAC16587-1 Revision: L
© Copyright 2004-2013 ABB. All rights reserved.
3 Configuration and calibration
3.5 Defining the conveyor maximum and minimum distances
3HAC16587-1 Revision: L 39
© Copyright 2004-2013 ABB. All rights reserved.
3 Configuration and calibration
3.6 Defining the robot adjustment speed
40 3HAC16587-1 Revision: L
© Copyright 2004-2013 ABB. All rights reserved.
3 Configuration and calibration
3.7 Additional adjustments
Description
There are more parameters that can be adjusted in the motion system.
3HAC16587-1 Revision: L 41
© Copyright 2004-2013 ABB. All rights reserved.
3 Configuration and calibration
3.8 Configuring a track motion to follow a conveyor
YA
A XA
YB
XIRB
B XB YIRB
-|+ IRB
xx1200001099
A Conveyor
The arrow shows the direction of movement for the conveyor
B Track motion
The -|+ shows the direction of movement for the track
Conveyor quaternion 1, 0, 0, 0
Robot base quaternion 0.7071, 0, 0, 0.7071
Track base quaternion 1, 0, 0, 0
Continued
3HAC16587-1 Revision: L 43
© Copyright 2004-2013 ABB. All rights reserved.
3 Configuration and calibration
3.9 Installing conveyor tracking software
44 3HAC16587-1 Revision: L
© Copyright 2004-2013 ABB. All rights reserved.
3 Configuration and calibration
3.10 Installing additional conveyors for conveyor tracking
Additional conveyors
The option Conveyor Tracking installs one conveyor in the IRC5 configuration (that
is, in the system parameters). If additional conveyors should be tracked with the
same IRC5 controller then the parameters for the additional conveyor(s) must be
loaded manually.
The second conveyor I/O configuration for the second DSQC 377B will use address
11 by default. The third conveyor board will use address 12, etc. Up to 6 conveyors
can be installed on one controller.
For Indexing Conveyor Control, see Installing the additional axis for servo control
on page 111.
3HAC16587-1 Revision: L 45
© Copyright 2004-2013 ABB. All rights reserved.
This page is intentionally left blank
4 Programming
4.1 Programming conveyor tracking
4 Programming
4.1 Programming conveyor tracking
Prerequisites
To create a program that uses conveyor tracking and a conveyor coordinated work
object, a work object must be present in the start window. An object must be moved
into the start window. If there are several objects already on the conveyor, then it
can be necessary to first clear the object queue and then move the conveyor.
Related information
If the conveyor is used with IRC5P (painting), see Operator's Manual - IRC5P.
3HAC16587-1 Revision: L 47
© Copyright 2004-2013 ABB. All rights reserved.
4 Programming
4.2 Working with the object queue
48 3HAC16587-1 Revision: L
© Copyright 2004-2013 ABB. All rights reserved.
4 Programming
4.3 Activating the conveyor
Activation
As an additional axis and mechanical unit the conveyor must be activated before
it can be used for work object coordination. The usual ActUnit instruction is used
to activate the conveyor and DeactUnit can be used to deactivate the conveyor.
By default, the conveyor is installed non-active on start. The conveyor can be
configured to always be active at start. See Type Mechanical Unit on page 64.
3HAC16587-1 Revision: L 49
© Copyright 2004-2013 ABB. All rights reserved.
4 Programming
4.4 Defining a conveyor coordinated work object
50 3HAC16587-1 Revision: L
© Copyright 2004-2013 ABB. All rights reserved.
4 Programming
4.5 Waiting for a work object
3HAC16587-1 Revision: L 51
© Copyright 2004-2013 ABB. All rights reserved.
4 Programming
4.6 Programming the conveyor coordinated motion
Example
The following program shows an example for a conveyor tracking program.
ConfL\Off;
MoveJ p0, vmax, fine, tool1;
ActUnit CNV1;
WaitWObj wobjcnv1;
MoveL p10, v1000, z1, tool1\Wobj:=wobjcnv1;
MoveL p20, v1000, z1, tool1\Wobj:=wobjcnv1;
MoveL p30, v500, z20, tool1\Wobj:=wobjcnv1;
MoveL p40, v500, fine, tool1;
DropWObj wobjcnv1;
MoveL p0, v500, fine;
DeactUnit CNV1;
52 3HAC16587-1 Revision: L
© Copyright 2004-2013 ABB. All rights reserved.
4 Programming
4.7 Dropping a work object
Introduction
A connected work object can be dropped once conveyor coordinated motion has
ended. Make sure that the robot motion is no longer using the conveyor positions
when the work object is dropped. If motion still requires the positions then a stop
will occur when the object is dropped.
It is not necessary to be connected in order to execute a DropWObj instruction.
No error will be returned if there was no connected object.
Finepoints
Conveyor coordinated motion does not end in a finepoint. As long as the work
object is coordinated to the conveyor, the robot motion will be coupled to the
conveyor even in a finepoint. A fixed-frame or non-conveyor work object must be
used in a motion instruction before dropping the conveyor work object.
Corner zones
Take care when ending coordination in a corner zone and executing the DropWObj
instruction as the work object will be dropped before the robot has left the corner
zone and the motion still requires the conveyor coordinated work object.
3HAC16587-1 Revision: L 53
© Copyright 2004-2013 ABB. All rights reserved.
4 Programming
4.8 Entering and exiting conveyor tracking motion in corner zones
Example
MoveL p10, v1000, fine, tool1;
WaitWObj wobjcnv1
! enter coordination in zone
MoveL p20, v1000, z50, tool1;
MoveL p30, v500, z1, tool1\Wobj:=wobjcnv1;
MoveL p40, v500, z1, tool1\Wobj:=wobjcnv1;
MoveL p50, v500, z20, tool1\Wobj:=wobjcnv1;
MoveL p60, v1000, z50, tool1;
! exit coordination in zone
MoveL p70, v500, fine, tool1;
DropWObj wobjcnv1;
MoveL p10, v500, fine, tool1;
The move instruction ending coordination must be a fixed work object, for example
ufprog is TRUE.
Take care when exiting coordination in a corner zone and executing a DropWObj
instruction.
The following example shows an incorrect method for ending coordination in corner
zones:
...
MoveL p50, v500, z20, tool1\Wobj:=wobjcnv1;
MoveL p60, v1000, z50, tool1;
! exit coordination in zone
DropWObj wobjcnv1;
This will cause an error, because the work object is dropped while robot is still in
corner zone.
54 3HAC16587-1 Revision: L
© Copyright 2004-2013 ABB. All rights reserved.
4 Programming
4.9 Information on FlexPendant
3HAC16587-1 Revision: L 55
© Copyright 2004-2013 ABB. All rights reserved.
4 Programming
4.10 Programming considerations
Performance limits
Conveyor tracking will be lost if joint speed limits are reached, particularly in
singularities. Ensure that the path during tracking does not exceed the acceleration,
speed, and motion capabilities of the robot.
Motion commands
Only linear and circular motion instructions are allowed for conveyor tracking, that
is MoveL and MoveC.
Do not start tracking with a MoveC instruction as the resulting circle diameter will
depend on the conveyor position. Always start tracking with a MoveL.
Finepoints
Finepoints are allowed during conveyor tracking. The robot will hold the TCP still
relative to the conveyor and RAPID execution will continue, see Finepoint
programming on page 57.
ConfL
The RAPID instruction ConfL\Off must be executed before coordination with the
conveyor. The purpose is to avoid configuration errors that would otherwise occur
as the robot changes configuration during conveyor tracking.
56 3HAC16587-1 Revision: L
© Copyright 2004-2013 ABB. All rights reserved.
4 Programming
4.11 Finepoint programming
In the above example the SetDO will be executed after the robot arrives at p2. The
robot will then track the conveyor for 0.1 seconds while the WaitTime instruction
is executed. It will then move to p3 and on to p4 via a corner zone before ending
coordination with a fixed work object (wobj0 in this case).
For coordinated movements the \Inpos event will not occur for instructions Break
and WaitTime. Instead, use the data type stoppointdata.
3HAC16587-1 Revision: L 57
© Copyright 2004-2013 ABB. All rights reserved.
4 Programming
4.12 Operating modes
58 3HAC16587-1 Revision: L
© Copyright 2004-2013 ABB. All rights reserved.
5 System parameters
5.1 Introduction
5 System parameters
5.1 Introduction
3HAC16587-1 Revision: L 59
© Copyright 2004-2013 ABB. All rights reserved.
5 System parameters
5.2 Topic I/O
Parameter Description
CountsPerMeter Gives the number of quadrature pulses per meter of motion of the con-
veyor. Should be in the range of 5000-10000 for linear conveyors.
SyncSeparation Sync signal separation (meters), this distance defines the minimum dis-
tance that the conveyor must move after a sync signal before a new sync
signal is accepted as a valid object.
QueueTrckDist The queue tracking distance defines the placement of the 0.0 meter point
relative to the synchronization switch on the conveyor. All objects in this
distance are tracked. The position returned for the object will be negative,
relative to the 0.0 m point.
All objects in this distance are tracked, but connection is not allowed
until an object has passed 0.0 meters.
StartWinWidth This distance defines the start window. The start window defines the
area that if a program starts using an object within the window, then all
program coordination can end before the maximum distance or work
area is reached. All objects within this window are tracked and are eligible
for use in a coordinated work object. A WaitWObj instruction will connect
to the first object in the window.
IIRFFP Specifies the location of the real part of the poles in the left-half plane
(in Hz). This is the break frequency for the speed filters in the encoder
interface and regulates how hard the speed is filtered in the encoder in-
terface. For stop and go conveyors this parameter should be set between
10 and 15 Hz to have a good accuracy during stop and start.
60 3HAC16587-1 Revision: L
© Copyright 2004-2013 ABB. All rights reserved.
5 System parameters
5.3 Topic Process
Parameter Description
Adjustment The speed (in mm/s) at which the robot should catch up to the conveyor.
speed It must be higher than the conveyor speed or the robot may never catch
up to the conveyor.The adjustment speed must not be higher than 130%
of conveyor speed to reduce perturbations on robot speed.
minimum dis- The minimum distance (in millimeters) that a connected object can have
tance before being automatically dropped. If an object is dropped during co-
ordinated motion, then the motion is stopped and an error is produced.
maximum dis- The maximum distance (in millimeters) that a connected object can have
tance before being automatically dropped. If an object is dropped during co-
ordinated motion, then the motion is stopped and an error is generated.
Stop ramp The number of samples used to ramp down the correction when tracking
is stopped.
The default value of this parameter is 5, and this is a suitable setting for
an IRB 360 with payload in the range 0-1 kg. For an IRB 360 with payload
1-8 kg, the value of this parameter should be increased to avoid vibrations
and overload of the mechanical structure. A value of at least 10 should
be chosen for a robot with 8 kg payload.
When tracking with a track axis this parameter should be increased to
30.
For a robot switching between conveyors increasing the stop ramp will
increase the distance needed to reach accurate tracking on next convey-
or. For example, for an IRB 360 10 steps of 12 ms at 5 m/s this means
0.6 meters.
Start ramp The number of samples used to ramp up the correction when tracking
is started.
The default value of this parameter is 5, and this is a suitable setting for
an IRB 360 with payload in the range 0-1 kg. For an IRB 360 with payload
1-8 kg, this parameter should be increased to avoid vibrations and
overload of the mechanical structure. A value of at least 10 should be
chosen for a robot with 8 kg payload.
When tracking with a high speed conveyor this parameter can be in-
creased.
During the ramping the accuracy of tracking is not reached so be careful
when increasing this parameter. For an IRB 360 the best choice is to use
the default value (5) if the load is not higher than 1 kg.
When switching between 2 conveyors with short distance between pick
and place the use of time interpolation is the optimal solution. For ex-
ample, put the robot in a wait position just above the pick conveyor with
a very short distance to pick position. In this case a low speed or time
interpolation should also be used.
Continued
Parameter Description
Adjustment accel The maximum acceleration (in mm/s2) at which robot should catch up
to the conveyor. By default no limitation.
For big robots and heavy load or limited robot acceleration (like use of
AccSet or PathAccLim) it can be necessary to set Adjustment accel
according to the robot performances.
With robot on track or trolley tracking with the track the performance of
the track is automatically used. This parameter must be adjusted when
the robot cannot continue its path but remains tracking the same position
on the conveyor.
For big robots like IRB 6600 Adjustment accel should be set around 1000
if conveyor speed is higher than 150 mm/s.
Speed filter The number of samples used for average filter of conveyor speed. Max-
length imum value is 50. Default value 1, which equals no filter. Should be used
only in case of high level of noise on conveyor speed and speed reduction
on robot due to this noise.
Acc dependent Specifies the acceleration dependent filter. Default value is 1 m/s 2 . To
filter value get good accuracy during acceleration this value should be set
equal to the maximum acceleration of the conveyor. A low value means
harder filtering. If there is a problem with noise this parameter should
be reduced. If an IRB 360 is used for fast picking this parameter should
be set to 0, this will turn off the filtering to improve the response times.
syncfilter ratio Defines how fast the robot should adjust the speed to the conveyor
speed. Default value is 0.8. For IRB 360 this can be reduced to 0.5 to
improve the accuracy in fast pick and place applications with low payload
(0-1 kg). A too low value might result in jerky movements.
Parameter Description
Eio unit name Name of the I/O unit.
Connected signal Name of the digital input signal for connection.
Position signal Name of the analog input signal for conveyor position.
Velocity signal Name of the analog input signal for conveyor speed.
Null_speed sig- Name of the digital input signal indicating zero speed on the conveyor.
nal
Data ready signal Name of the digital input signal indicating a poll of the encoder interface.
WaitWObj signal Name of the digital output signal to indicate that a connection is desired
to an object in the queue.
DropWObj signal Name of the digital output signal to drop a connected object on the en-
coder interface.
ObjLost signal Name of the digital input signal to indicate that an object has gone past
the start window without being connected.
Supervise Boolean to remove supervision of maximum and minimum distance.
max_dist Off
Rem1PObj signal Name of digital output signal to drop first pending object in encoder in-
terface queue.
Continued
Parameter Description
RemAllPObj sig Name of digital output signal to drop all pending objects in encoder in-
terface queue.
3HAC16587-1 Revision: L 63
© Copyright 2004-2013 ABB. All rights reserved.
5 System parameters
5.4 Topic Motion
Parameter Description
Name The name of the unit, usually CNV1, CNV2 etc.
This name is used in the Jogging window and from the program, for
example when a unit should be activated.
Activate at Star- Defines if the conveyor should be activated automatically at start.
tup
Deactivation For- Defines if the conveyor is allowed to be deactivated.
bidden
Parameter Description
Path Resolution The parameter corresponds in some sense to the distance between two
points in the path. Increasing path resolution means increasing the dis-
tance, which leads to a decrease in the resolution of the path.
Process Update Determines how often the process path information is calculated.
Time
Use spline para- Defines how long the robot waits when starting from a finepoint, that is
meters how many positions will be calculated in advance by the motion planner.
Default value is motion_planner_1 for the first robot.
Using 3steps mp1 will give a shorter time when starting from finepoint
but with the risk that sometimes the robot will stop with warning 50024
(Corner zone executed as finepoint) on first move. mp1 stands for mo-
tion planner 1, that is, robot 1.
Type Robot
The instance is named ROB_1, ROB_2 etc. See Additional adjustments on page 41,
and Configuring a track motion to follow a conveyor on page 42.
Parameter Description
Use kinematic for If Yes, the position adjustment is made on six axes and as accurately
corvec as possible both in position and orientation. This is the default option
for many robot types and should be used in most cases. This has no
effect on coordinated track.
Use Six Axes If Yes, the position adjustment is made on six axes, and the orientation
Corvec of the tool is exact. This has no effect on coordinated track. This option
is only possible on six axis robots including IRB 460 and IRB 660 (where
axes 4 and 5 are locked).
Using this parameter takes slightly less CPU time than Use kinematic
for corvec does. If Use kinematic for corvec is used then this parameter
has no effect.
Continued
Parameter Description
Corvec correc- Defines how often corrections of robot positions are done. Default is 1.
tion level Increasing the value gives corrections more often. Should be set to 2 or
3 to get good accuracy during acceleration.
For IRB 360 with high payloads (6-8 kg), and for big robots like IRB 6600,
it should be set to 1. Increasing it for big robots can lead to jerky move-
ments.
Allow outside If Yes, the robot is allowed to start the tracking of an object that has not
reach prefetch yet entered the work area of the robot. This means that the robot will
start moving against an object even if it at that time is not reachable for
the robot. If the object is reachable by the time the robot reaches its final
destination the robot will continue the tracking operation. If the object
cannot be reached by that time the robot will stop at the work area limit.
Track Conveyor If Yes, then the robot will track the conveyor without using the track axis
With Robot even if robot is coordinated with the track. Default value is No.
Max accel for This parameter should only be used when conveyor speed is higher than
conveyor track- 600 mm/s, when the robot has to pick a part on the conveyor, and when
ing increase of max_external_pos_adjustment and Stop_ramp is not an op-
tion.
Defines the max acceleration allowed for the robot during conveyor
tracking. The aim of this parameter is to reduce adjustment in servo task
as big adjustment values can cause speed supervision errors or
max_external pos adjustment error (50163). The drawback of too low
acceleration is an increase of cycle time.
Default value is 1 (limit not used), max value is 40 (m/s 2 ).
Max External Pos Defines the maximum position adjustment allowed in the servo task. Can
Adjustment be increased for big robots with heavy load and high conveyor speed if
error 50163 occurs. First verify that Adjustment speed and Adjustment
accel are correctly defined (see Type Conveyor systems on page 61).
Default value 0.2, maximum 0.8, minimum 0.1. Defined in meters. If in-
creased, Start ramp and Stop ramp should also be increased to 20 or 30
(see Type Conveyor systems on page 61).
Conveyor Tool Defines the tool change mode during conveyor tracking when changing
Change Mode the tool in zone with same conveyor.
Type Single
The instance is named CNV1. See Calibrating the conveyor base frame on page 35.
Parameter Description
Base frame x Defines the x, y, and z-direction of the base frame position in Base frame
Base frame y y relation to the world frame (in meters).
Base frame z
Base frame q1-q4 Defines the quaternions of the base frame orientation in relation to the
world frame. That is, the orientation of the conveyor base coordinate
system.
Continued
Type Transmission
The instance is named CNV1.
Parameter Description
Rotating Move Defines if the conveyor is rotating (Yes) or linear (No).
66 3HAC16587-1 Revision: L
© Copyright 2004-2013 ABB. All rights reserved.
6 RAPID reference
6.1.1 WaitWObj - Wait for work object on conveyor
6 RAPID reference
6.1 Instructions
Description
WaitWObj (Wait Work Object) connects to a work object in the start window on
the conveyor mechanical unit.
Example
WaitWObj wobj_on_cnv1;
The program connects to the first object in the object queue that is within the start
window on the conveyor. If there is no object in the start window then execution
stops and waits for an object.
Arguments
WaitWObj WObj [\RelDist][\MaxTime][\TimeFlag]
WObj
Work Object
Data type: wobjdata
The moving work object (coordinate system) to which the robot position in the
instruction is related. The mechanical unit conveyor is to be specified by the ufmec
in the work object.
[\RelDist]
Relative Distance
Data type: num
Waits for an object to enter the start window and go beyond the distance specified
by the argument. If the work object is already connected, then execution stops
until the object passes the distance. If the object has already gone past the relative
distance then execution continues.
[\MaxTime]
Maximum Time
Data type: num
The maximum period of waiting time permitted, expressed in seconds. If this time
runs out before the sensor connection or relative distance is reached, the error
handler will be called, if there is one, with the error code ERR_WAIT_MAXTIME. If
there is no error handler, the execution will be stopped.
[\TimeFlag]
Timeout Flag
Data type: bool
Continued
The output parameter that contains the value TRUE if the maximum permitted
waiting time runs out before the sensor connection or relative distance is reached.
If this parameter is included in the instruction, it is not considered to be an error if
the maximum time runs out. This argument is ignored if the MaxTime argument is
not included in the instruction.
Program execution
If there is no object in the start window then program execution stops. If an object
is present, then the work object is connected to the conveyor and execution
continues.
If a second WaitWObj instruction is issued while connected then an error is returned
unless the \RelDistoptional argument is used.
More examples
Example 1
WaitWObj wobj_on_cnv1\RelDist:=500.0;
If not connected, then wait for the object to enter the start window and then wait
for the object to pass the 500 mm point on the conveyor. If already connected to
the object, then wait for the object to pass 500 mm.
Example 2
WaitWObj wobj_on_cnv1\RelDist:=0.0;
If not connected, then wait for an object in the start window. If already connected,
then continue execution as the object has already gone past 0.0 mm.
Example 3
WaitWObj wobj_on_cnv1;
WaitWObj wobj_on_cnv1\RelDist:=0.0;
The first WaitWObj connects to the object in the start window. The second
WaitWObj will return immediately if the object is still connected, but will wait for
the next object if the previous object had moved past the maximum distance or
was dropped.
Example 4
WaitWObj wobj_on_cnv1\RelDist:=500.0\MaxTime:=0.1\Timeflag:=flag1;
The WaitWobj will return immediately if the object has passed 500 mm but
otherwise will wait 0.1 seconds for an object. If no object passes 500 mm during
this 0.1 seconds the instruction will return with flag1=TRUE.
Limitations
50 ms is required to connect to the first object in the start window. Once connected,
a second WaitWObj instruction with \RelDist optional argument will take only
normal RAPID instruction execution time.
Error handling
If following errors occur during execution of the WaitWobj instruction, the system
variable ERRNO will be set. These errors can then be handled in the error handler.
Continued
Syntax
WaitWObj
[ WObj ':=']< persistent (PERS) of wobjdata> ';'
[ '\' RelDist ':=' < expression (IN) of num > ]
[ '\' MaxTime ':=' <expression (IN) of num>]
[ '\' TimeFlag ':=' <variable (VAR) of bool>] ';'
Related information
3HAC16587-1 Revision: L 69
© Copyright 2004-2013 ABB. All rights reserved.
6 RAPID reference
6.1.2 DropWObj - Drop work object on conveyor
Description
DropWObj (Drop Work Object) is used to disconnect from the current object and
the program is ready for the next.
Example
MoveL *, v1000, z10, tool, \WObj:=wobj_on_cnv1;
MoveL *, v1000, fine, tool, \WObj:=wobj0;
DropWObj wobj_on_cnv1;
MoveL *, v1000, z10, tool, \WObj:=wobj0;
Arguments
DropWObj WObj
WObj
Work Object
Data type: wobjdata
The moving work object (coordinate system) to which the robot position in the
instruction is related. The mechanical unit conveyor is to be specified by the ufmec
in the work object.
Program execution
Dropping the work object means that the encoder interface not longer tracks the
object. The object is removed from the object queue and cannot be recovered.
Limitations
If the instruction is issued while the robot is actively using the conveyor coordinated
work object then the motion stops.
The instruction can be issued only after a fixed work object has been used in the
preceding motion instructions with either a fine point or several (>1) corner zones.
Syntax
DropWObj
[ WObj ':='] < persistent (PERS) of wobjdata> ';'
Related information
70 3HAC16587-1 Revision: L
© Copyright 2004-2013 ABB. All rights reserved.
7 Advanced queue tracking
7.1 Introduction to advanced queue tracking
Introduction
The encoder interface supports queue tracking mode, that is, the job queue is
external to the encoder interface, which means it can be handled by the main
computer or RAPID code. If the queue tracking is disabled, then the queue is
handled in the unit (old 354 mode).
Installation
The conveyor option automatically installs one conveyor in the IRC5 system
parameters. Queue tracking is disabled by default in the conveyor I/O configuration,
as the signal c1PosInJob is set to 0 (zero). To enable queue tracking, set
c1PosInJob to 1.
System parameters
The following signals are used for advanced queue tracking and must be defined
in the system parameters, topic I/O, type Signal.
I/O signal Description
c1ObjectsInQ Group input showing the number of objects in the object queue. These
objects have passed the synchronization switch but have not gone out-
side the start window.
c1Rem1PObj Remove first pending object from the object queue. Setting this signal
will cause the first pending object to be dropped from the object queue.
Pending objects are objects that are in the queue but are not connected
to a work object.
c1RemAllPObj Remove all pending objects. Setting this signal will cause the encoder
interface to empty all objects from the object queue. If an object is con-
nected, then it is not removed.
c1DropWObj Setting this signal will cause the encoder interface to drop the tracked
object and disconnect that object. The object is removed from the queue.
This should not be set from RAPID, use the DropWobj instruction instead.
c1NewObjStrobe DI new position from the encoder node to enter the job queue.
c1CntFromEnc1 GI counter value from encoder to main controller - low word.
c1CntFromEnc2 GI counter value from encoder to main controller - high word.
c1CntToEncStr DO strobe for a 32-bit position to the encoder node from the job queue.
c1CntToEnc1 GO counter value from main controller to encoder - low word.
c1CntToEnc2 GO counter value from main controller to encoder - high word.
c1ScaleEncPuls DI scaled-down encoder pulses.
c1ForceJob DO run this job even if the checkpoint should fail.
c1PosInJobQ DO send the position to MC to be stored in the job queue. (0 = Queue-
tracking disabled. Same mode as DSQC 354)
c1PassedStWin DI notifies the main computer that an object has passed out of the start
window (object lost). If the main process is waiting in a WaitWObj instruc-
tion, the program pointer will be moved to the nearest error handler, so
appropriate action can be taken, for example pop the job queue.
Continued
72 3HAC16587-1 Revision: L
© Copyright 2004-2013 ABB. All rights reserved.
7 Advanced queue tracking
7.2 Working with the object queue
Signal values
The option Conveyor Tracking provides several I/O signals that allow a user or
RAPID program to monitor and control the object queue. The table in System
parameters on page 71, shows the I/O signals that impact the object queue. The
counter values have to do with the queue tracking function. Positions detected on
the encoder node are sent to the main computer to be stored in the job queue
handled by the robot controller. Values are returned to the encoder when object
is ready to be tracked.
TRAP TrackNewObj
! To track new obj: Write a new reference to output group
SetGO c1CntToEnc1, ObjectPosition1;
SetGO c1CntToEnc2, ObjectPosition2;
WaitTime 0.05;
! Validate the new reference
PulseDO c1CountToEncStr;
RETURN;
ENDTRAP
Checkpoint function
Checkpoint switch
Check Point Distance is used when running queue tracking. In addition to the
normal sync switch you have a checkpoint switch just before the start window.
This switch will check if the object is within the limits set by the checkpoint window
width. If not, the object will be discarded from the object queue, unless the signal
c1ForceJob is active.
Continued
Checkpoint parameters
Parameter Description
Check Point Dis- Distance to checkpoint from 0.0
tance
Check Point Win- Tolerance window for the checkpoint
dow Width
Note
Check Point Distance and Check Point Window Width must be set to zero when
not used, or else this functionality can unintentionally drop objects from the
queue.
Continued
Simulation mode
The simulated encoder starts when the simulation signal is set. The simulation
encoder counts is set to the real encoder counts when the simulation signal is set.
If the simulation signal is reset the encoder value returns to real encoder position.
The simulation speed is defined with the parameter SimulationVel in the type Signal,
in the topic I/O.
3HAC16587-1 Revision: L 75
© Copyright 2004-2013 ABB. All rights reserved.
This page is intentionally left blank
8 Circular conveyor tracking
8.1 Introduction to circular conveyor tracking
Introduction
Circular conveyors can be tracked with the option Conveyor Tracking. The principle
for configuring circular conveyor tracking is to define values in radians instead of
meters. Then configure as described in Installation on page 25, and Configuration
and calibration on page 33.
This chapter will where there are differences in the configuration compared to
linear conveyors.
Example
The figure below shows an example of circular conveyor tracking with example
units and distances.
Direction of
rotation
2.44 rad
Radius = 6 m
minimum distance
Y
Sync switch
X
maximum distance
QueueTrkDist
0.0 rad
StartWinWidth
XIRB
YIRB
IRB
xx1200001101
Continued
78 3HAC16587-1 Revision: L
© Copyright 2004-2013 ABB. All rights reserved.
8 Circular conveyor tracking
8.2 Encoder type selection and location
Prerequisites
The goal in selecting an encoder for circular conveyor tracking is to have 0.1 mm
to 0.2 mm resolution per count at the maximum radius of conveyor tracking.
Example
In the Example on page 77, following at a 6 meter radius in order to have 0.15 mm
per count, we must have 40,000 counts per radian at the center of the table. The
counts are quadrature encoded (four counts per pulse), thus the encoder must
give 10,000 pulses per radian of circular conveyor movement. For a full revolution
there are 2p radians per revolution, giving a requirement for 10000 × 2p = 62831.85
pulses per revolution of the circular conveyor.
Note
The maximum value for CountsPerMeter in the encoder software is 50000. This
should be considered when selecting gearing and encoder.
3HAC16587-1 Revision: L 79
© Copyright 2004-2013 ABB. All rights reserved.
8 Circular conveyor tracking
8.3 Installation and configuration
Software installation
The encoder interface and conveyor tracking software are connected and installed
in the same way as for linear conveyors.
Defining CountsPerMeter
The value of the parameter CountsPerMeter should be known from the selection
of the encoder and the gear ratio between the circular conveyor and the encoder
shaft. If the value is not known, then it is possible to measure the value following
the same steps as outlined for a linear conveyor with extra equipment for measuring
the change in angle of the conveyor between position_1, and position_2. See
Calibrating CountsPerMeter and QueueTrckDist on page 34.
80 3HAC16587-1 Revision: L
© Copyright 2004-2013 ABB. All rights reserved.
8 Circular conveyor tracking
8.4 Calibrating the conveyor base frame
Calibration options
The accuracy of the circular conveyor tracking depends on the accuracy in
specifying the conveyor base frame. There are two methods to calibrate the base
frame for a circular conveyor:
1 Enter the orientation and position of the base frame based on drawings of
the robot installation and simple TCP measurements.
2 Use the robot TCP as a measuring tool and measure several points along
the conveyor with some trigonometric calculations to calculate the conveyor
base frame position and quaternion.
We recommend using the second method, with TCP as measuring tool. See TCP
measurement method on page 83.
3HAC16587-1 Revision: L 81
© Copyright 2004-2013 ABB. All rights reserved.
8 Circular conveyor tracking
8.5 Manually calibrating the conveyor base frame
Orientation
The definition of the quaternion for conveyor orientation will also define the location
of the 0.0 radian point on the circular conveyor. The direction of the x-axis will
define the 0.0 radian point while the direction of the z-axis will define the direction
of positive rotation using the right-hand-rule.
The graphic below shows two installations, one with clockwise rotation and the
other with counterclockwise rotation and the corresponding quaternions. In cases
where the 0.0 rad point is not an even multiple of 90° from the world frame,
calculation of the conveyor orientation quaternion must be done using manual
calculations of the quaternion. The TCP can be used to help make measurements,
see TCP measurement method on page 83.
QueueTrkDist
Direction of
rotation Direction of
rotation
Y Y
XIRB XIRB
XIRB XIRB
IRB IRB
xx1200001102
82 3HAC16587-1 Revision: L
© Copyright 2004-2013 ABB. All rights reserved.
8 Circular conveyor tracking
8.6 TCP measurement method
Recommendation
This section describes how to use TCP measurements and RAPID programs to
calculate the conveyor base frame position and quaternion for a circular conveyor.
This method uses three measured points on the circular conveyor to calculate the
center of rotation. The three points should be spaced as far apart as possible
around the periphery.
Continued
Defining the base frame orientation and start window start calibration
The base frame quaternion defines where the 0.0 rad point is for the robot motion.
The following figure shows an example of the angles that are used when defining
the base frame orientation for the circular conveyor.
Baseθ
p_centre, X, Y Pθ
S
TPθ
p_0, X_0, Y_0
Qθ
0.0 rad
XIRB
YIRB
IRB
xx1200001103
R Direction of rotation
S Synchronization switch
Qθ Queue tracking distance angle
TPθ Angle shown on FlexPendant
Pθ Angle calculated from p_0 position
Baseθ Base frame angle to be converted to a quaternion
Continued
5 Using wobjcnv1, move the robot TCP to the desired zero position on the
work object and record this point, p_0. Write down the X_0, Y_0, and Z_0
coordinates of the point p_0 as shown on the FlexPendant (wobjcnv1 must
be selected as work object).
6 Write down the angle shown in the Jogging window for the CNV1 conveyor.
This is angle TPµ , see example measurement points in Defining the base
frame orientation and start window start calibration on page 84.
7 Calculate P µ from the X_0 and Y_0 coordinates of p_0 and the atan function.
X_0 and Y_0 should both be positive when using the atan function. Check
the value, it may be necessary to add 90 degrees:
j Y0 j
Pµ = atan ( )
j X0 j
8 Calculate the value of Base.
Baseµ = Pµ − TPµ
9 Calculate the quaternion for the base frame taking into account the direction
of rotation:
Counter clockwise rotation:
q1 = cos(Base µ /2)
q2 = 0.0
q3 = 0.0
q4 = sin(Base µ /2)
Clockwise rotation:
q1 = 0.0
q2 = cos(Base µ /2)
q3 = –sin(Base µ /2)
q4 = 0.0
10 Enter the value for z (in meters) from p_0, and the values for the quaternions,
q1, q2, q3, and q4, into the base frame for the conveyor, see Topic Motion
on page 64.
3HAC16587-1 Revision: L 85
© Copyright 2004-2013 ABB. All rights reserved.
8 Circular conveyor tracking
8.7 Additional motion settings
Note
86 3HAC16587-1 Revision: L
© Copyright 2004-2013 ABB. All rights reserved.
9 Accelerating conveyors
9.1 Introduction to accelerating conveyors
9 Accelerating conveyors
9.1 Introduction to accelerating conveyors
Description
This section describes how to optimize the tracking performance of accelerating
and decelerating conveyors for the option Conveyor Tracking. This might be needed
for example if good accuracy is needed during start and stop of the conveyor. To
get good accuracy during tracking of accelerating conveyors it is important that
all system parameters in the system are defined correctly. This chapter describes
the parameters that are important for accelerating and decelerating conveyors.
See System parameters on page 88.
To further improve the accuracy it is possible to predict the speed change of the
conveyor. This is done using a special RAPID function together with an I/O signal
that is set just before the acceleration starts. See Predicting speed changes on
page 90.
For indexing conveyors, see Indexing conveyors on page 95.
Prerequisites
The conveyor and encoder must be set up and calibrated correctly, see
Configuration and calibration on page 33.
3HAC16587-1 Revision: L 87
© Copyright 2004-2013 ABB. All rights reserved.
9 Accelerating conveyors
9.2 System parameters
Speed filters
There are two filter parameters that need to be changed. For both the filters there
is a trade off between noise reduction and accuracy during acceleration. To get
good accuracy during acceleration the filter values should be set according to the
recommendations below. If there is too much noise in the system this might lead
to disturbances in the robot movement and then the filter parameters should be
decreased until this disturbances disappear.
This parameter belongs to the type Fieldbus Command in the topic I/O. The
parameter should be changed for all units.
Parameter Description
IIRFFP Specifies the location of the real part of the poles in the left-half plane
(in Hz). This is the break frequency for the speed filters in the encoder
interface and regulates how hard the speed is filtered. For accelerating
conveyors this parameter should be defined to 10-15 Hz to have good
accuracy during start and stop.
This parameter belongs to the type Conveyor Systems in the topic Process.
Parameter Description
Acc dependent Specifies the setting of the acceleration dependent filter. Default value
filter value is 1 m/s2. To get good accuracy during acceleration set it equal
to the maximum acceleration of the conveyor. A low value gives harder
filtering. If there is a problem with noise the value should be kept low.
If IRB 360 is used for fast picking with low payload, this parameter should
be set to 0. This will turn off the filtering to improve the response times.
Continued
Encoder pollrate
The pollrate of the encoder unit defines how often the position and speed of the
conveyor should be read, also known as cyclicity. A lower value (time) will make
enable the robot to follow a speed change of the conveyor more accurately.
However, a reduction of the pollrate will increase the load in the robot controller
and on the DeviceNet bus. How much the pollrate can be reduced depends on the
load of the system, for example number of robots, load in the I/O system, etc.
To change the pollrate, three system parameters must be changed.
This parameter belongs to the type Unit Type in the topic I/O. The instance is named
d377A.
Parameter Description
Connection 1 In- Defines the pollrate of the card. Default is 20 ms. The minimum value is
terval 4 ms. A low value will give faster response on a conveyor speed change
but also increase CPU load. We do not recommend a value lower than
10 ms.
If more than one conveyor boards are used there is a risk that reducing
pollrate value will create too high load on the DeviceNet bus. Therefore
the default value is recommended.
This parameter belongs to the type Fieldbus Command in the topic I/O. This
parameter should be changed for all units.
Parameter Description
IIRFPeriod Defines the period of the speed filter on the encoder unit, must be the
same as Connection 1 Interval for d377A.
This parameter belongs to the type CAN Interface in the topic Process. The instance
is named CAN1.
Parameter Description
Pos Update Time Defines how often the system reads the speed and position from the I/O
system. For best performance it should be the same as Connection 1
Interval. It can be higher to reduce the system load.
3HAC16587-1 Revision: L 89
© Copyright 2004-2013 ABB. All rights reserved.
9 Accelerating conveyors
9.3 Predicting speed changes
Introduction
It is possible to predict the speed change of a conveyor and use this prediction to
improve the accuracy during tracking of an accelerating conveyor. The prediction
is based on constant acceleration.
The prediction is setup from the RAPID instruction UseAccProfile and activated
from an I/O signal. It is possible to have two independent profiles defined at the
same time connected to two separate I/O signals. One could be used for starting
and one for stopping the conveyor.
To access this RAPID instruction load the module Indexing_cnv.sys from the
conveyor tracking option directory, that is, \ROBOTWARE_5.XX_XXXX\options\cnv\
The system parameters that affect the accuracy during acceleration are described
in System parameters on page 88.
90 3HAC16587-1 Revision: L
© Copyright 2004-2013 ABB. All rights reserved.
9 Accelerating conveyors
9.4 UseAccProfile - Use acceleration profile
Description
UseAccProfile is used to predict conveyor movement with constant acceleration
or deceleration.
The profile uses either the acceleration for the conveyor or the time that it takes
for the conveyor to accelerate or decelerate. If two profiles are defined, they should
use an acceleration value instead of a time value.
The prediction of the conveyor acceleration is started by setting the I/O signal
configured in Sensor start signal or Sensor stop signal. For best result this signal
must be set at least 150 ms before the conveyor is starting to accelerate or
decelerate.
The settings for the acceleration can be changed during program execution.
Example
VAR intnum intno1;
VAR triggdata trigg1;
...
CONNECT intno1 With Acc_Dec;
TriggInt trigg1, 0.5\Time, intno1;
Resetset sensor_start_signal_DO;
UseACCProfile CNV1, 0.4, 0, 1\acc, \stop_sig;
SetDO STARTSTOP_CNV, 1;
TriggL p0, v20, trigg1, z10, tool1\Wobj:=wobjconv;
MoveJ p_start, v1000, fine, tool1;
In this example the start and stop of the conveyor is controlled by the I/O signal
STARTSTOP_CNV. The deceleration profile is setup with a trigger_time of 0.4
s, end velocity of 0 m/s and the deceleration is 0.2 m/s 2 . This means that the
conveyor will decelerate from the current speed down to zero speed with a
deceleration of 0.2 m/s 2 and that the sensor stop signal is going to be set 0.4 s
before the conveyor is starting to decelerate.
The stop is triggered from a TriggL instruction.
As seen in the trap routine the sensor_start_signal is set 0.35 s before the stop
order to the conveyor. However in the setup of the profile it is said that this signal
is coming 0.4 s before the stop. In this case it might be that there is a delay in the
Continued
V1
V2
T1 T2
xx1200001104
In the preceding figure, the profile from the example is shown. V1 is the speed
before the deceleration and can in this case be for example 0.2 m/s. V2 is the speed
after deceleration, in this case it is 0 m/s. T1 represents the time between the Trigg
is coming and the conveyor is starting to decelerate, in this example 0.4 s. T2 is
the length, in time, of the deceleration.
Arguments
UseAccProfile MechUnit, Trigger_time, V_end, Acc_time[\acc | time],
[\start_sig | stop_sig];
MechUnit
Mechanical Unit
Data type: mechunit
The moving mechanical unit object (coordinate system) to which the robot position
in the instruction is related.
Trigger_time
Data type: num
The time between the start_sensor_signal is set and the time when the conveyor
is starting to accelerate or decelerate. The time can be as big as possible but should
not be smaller then 0.15 s. The value is given in seconds. In case of to small
Trigger_time the profile might not be used.
V_end
Data type: num
Velocity to be reached at the end of acceleration or deceleration. In case of a stop
this should be 0 m/s. The value is given in m/s.
Acc_time
Data type: num
Time from the start of the acceleration until the conveyor reaches the final speed
(V_end). If [\acc] is set then this value is considered to be an acceleration value
in m/s 2 describing the acceleration of the conveyor.
[\acc | time]
Data type: switch
Set to acc to use acceleration.
Continued
[\start_sig | stop_sig]
Data type: switch
Set to start_sig to use the signal configured as Sensor start signal to trigger
the profile. Set to stop_sig to use the signal configured as Sensor stop signal to
trigger the profile.
Program execution
To get the best possible accuracy during acceleration or deceleration it is important
that the Trigger_time is the same as the time between setting the Sensor start
signal and the time when the conveyor starts to accelerate or decelerate. The
bigger the difference is between these two times the poorer accuracy will be
achieved.
If two profiles are configured in the system at the same time it is very important
that the \acc option is used. This is to secure a good behavior when for example
there is a mix between a start and a stop profile. This could happen when the
conveyor for example is stopping and a start order is given so that the stop ramp
never is finished.
Limitations
Before UseAccProfile is executed, the Sensor start signal and Sensor stop signal
must be reset.
3HAC16587-1 Revision: L 93
© Copyright 2004-2013 ABB. All rights reserved.
This page is intentionally left blank
10 Indexing conveyors
10.1 Description of indexing conveyor options
10 Indexing conveyors
10.1 Description of indexing conveyor options
Indexing conveyors
There are two ways to track indexing conveyors. If the conveyor is not controlled
by IRC5 then recorded profiles must be used, see Tracking indexing conveyors
on page 96. If the conveyor is controlled by IRC5 the option Internal Conveyor
Control should be used to get the best possible accuracy. See Indexing conveyor
with servo control (Indexing Conveyor Control) on page 108.
An indexing conveyor advances in steps instead of running continuously. One step
is one index, and one or several indexes creates the work object. The conveyor
belt can have pockets or magazines for the products, which makes them perfectly
aligned for picking.
3HAC16587-1 Revision: L 95
© Copyright 2004-2013 ABB. All rights reserved.
10 Indexing conveyors
10.2.1 Setting up tracking for an indexing conveyor
Introduction
This section describes how to track an indexing conveyor using the option Conveyor
Tracking. As the conveyor is not controlled by IRC5, is not possible to know exactly
how the conveyor speed is changing. Instead, this method uses predicted speed
changes. The repeatability is very important for the accuracy. Therefore, this method
cannot be used if the conveyor movements are not repeatable. Then the option
Indexing Conveyor Control with the conveyor controlled by the robot controller
should be used.
To get good accuracy for indexing conveyors it must be possible to predict how
the speed of the conveyor is changing. The prediction is based on a recorded
profile of the conveyor during acceleration.
A new I/O signal must be defined and connected. RAPID instructions are used to
handle prediction of conveyor position during speed changes.
96 3HAC16587-1 Revision: L
© Copyright 2004-2013 ABB. All rights reserved.
10 Indexing conveyors
10.2.2 System parameters
Topic I/O
This parameter belongs to the type Fieldbus Command in the topic I/O.
Parameter Description
IIRFFP Specifies the location of the real part of the poles in the left-half plane
(in Hz). This is the break frequency for the speed filters in the encoder
interface and regulates how hard the speed is filtered in the encoder in-
terface. For indexing conveyors this parameter should be set between
10 and 15 Hz to have a good accuracy during stop and start.
Topic Process
This parameter belongs to the type Conveyor systems in the topic Process.
Parameter Description
Sensor_start_sig- Name of the digital input signal to synchronize recorded profile and new
nal index movement. The signal must be set before start of conveyor
movement. For example when a cam to move the conveyor the sensor
can be placed to be triggered 100 ms before conveyor moves.
3HAC16587-1 Revision: L 97
© Copyright 2004-2013 ABB. All rights reserved.
10 Indexing conveyors
10.2.3 RAPID instructions
Introduction
There are two ways to use the indexing conveyor tracking functionality from RAPID.
One is to use the instruction CnvGenInstr, the other to use the predefined RAPID
functions located in the RAPID module named Indexing_cnv.sys. The RAPID
instructions in Indexing_cnv.sys encapsulates the functionality in CnvGenInstr
to make it easier to use. To access these RAPID instructions, load the module
Indexing_cnv.sys from the conveyor tracking option directory, that is,
\ROBOTWARE_5.XX_XXXX\options\cnv\
98 3HAC16587-1 Revision: L
© Copyright 2004-2013 ABB. All rights reserved.
10 Indexing conveyors
10.2.4 RecordProfile
10.2.4 RecordProfile
Description
RecordProfile resets all profile data and records a new profile of the conveyor
movement as soon as the sensor_start_signal is set.
To be able to make a recording it is important that a connection to a work object
is made before the recording is started. This means that a WaitWobj instruction
has to be executed before the recording starts.
Example
ActUnit CNV1;
WaitWobj wobj_on_cnv1;
RecordProfile CNV1, 1, "index_profile";
WaitTime 0.2;
PulseDO \HIGH sensor_start_signal_DO;
SetDO STARTSTOP_CNV 1;
Arguments
RecordProfile MechUnit, Record_duration, Profile_type
MechUnit
Data type: mechunit
The moving mechanical unit object (coordinate system) to which the robot position
in the instruction is related.
Record_duration
Duration of speed
Data type: num
Specifies the duration of record in seconds. Must be between 0.1 and
pos_update_time * 300.
Profile_type
Type of profile
Data type: string
Value Description
index_profile Recording is started by sensor_start_signal.
start_stop_profile A start and stop movement can be recorded. sensor_start_signal is used
to record start movement and sensor_stop_signal is used to record
stop_movement.
stop_start_profile Same as for start_and_stop_profile but the sensor_stop_signal is
used first.
stop_move_pro- The recording is started with sensor_stop_signal.
file
3HAC16587-1 Revision: L 99
© Copyright 2004-2013 ABB. All rights reserved.
10 Indexing conveyors
10.2.5 WaitAndRecProf
10.2.5 WaitAndRecProf
Description
WaitAndRecProf resets all profile data and records a new profile of the conveyor
movement as soon as the sensor_start_signal is set.
This instruction does the same as the instruction RecordProfile but it also
handles the connection to a work object on the conveyor. This instruction is
intended for use in PickMaster where the instruction WaitWobj is not available.
Example
WaitAndRecProf CNV1, 1, "index_profile";
A profile of the conveyor is recorded as soon as the sensor_start_signal is set.
Program execution
Use this procedure to execute the instruction WaitAndRecProf.
Arguments
WaitAndRecProf MechUnit, Record_duration, Profile_type
MechUnit
Data type: mechunit
The moving mechanical unit object (coordinate system) to which the robot position
in the instruction is related.
Record_duration
Duration of speed
Data type: num
Specifies the duration of record in seconds. Must be between 0.1 and
pos_update_time * 300.
Profile_type
Type of profile
Data type: string
Value Description
index_profile Recording is started by sensor_start_signal.
start_stop_profile A start and stop movement can be recorded. sensor_start_signal is used
to record start movement and sensor_stop_signal is used to record
stop_movement.
stop_start_profile Same as for start_and_stop_profile but the sensor_stop_signal is
used first.
stop_move_pro- The recording is started with sensor_stop_signal.
file
10.2.6 StoreProfile
Description
StoreProfile activates and saves a recorded profile in a file.
Example
ActUnit CNV1;
WaitWobj wobj_on_cnv1;
RecordProfile CNV1, 1, "index_profile";
WaitTime 0.2;
PulseDO \HIGH sensor_start_signal_DO;
SetDO STARTSTOP_CNV 1;
WaitTime 2;
SetDO STARTSTOP_CNV 0;
StoreProfile CNV1, 0, "Profile.log";
A profile of the conveyor movement is recorded as soon as the sensor_start_signal
is set and is stored in file profile.log.
Arguments
StoreProfile MechUnit, Delay, Filename
MechUnit
Data type: mechunit
The moving mechanical unit object (coordinate system) to which the robot position
in the instruction is related.
Delay
Data type: num
The delay in seconds can be used to shift the record in time. It must be between
0.01 and 0.1. If the value is 0 (zero) no delay is added. The delay is not saved in
the profile, it is only used for the activation. If the delay should be used together
with a saved profile the delay has to be specified again in the instruction
LoadProfile.
Filename
Data type: string
Name of the file where the profile is stored.
10.2.7 LoadProfile
Description
LoadProfile loads a recorded profile from a file.
Example
LoadProfile CNV1, 0, "profile.log";
WaitTime 0.2;
PulseDO \HIGH sensor_start_signal_DO;
SetDO STARTSTOP_CNV 1;
!
! Work against the conveyor
!
SetDO STARTSTOP_CNV 0;
A saved profile of the conveyor movement is loaded and used for prediction of
conveyor movement as soon as sensor_start_signal is set. Error warning
SYS_ERR_MOC_CNV_REC_FILE_UNKNOWN if the file is not found.
Arguments
LoadProfile MechUnit, Delay, Filename
MechUnit
Data type: mechunit
The moving mechanical unit object (coordinate system) to which the robot position
in the instruction is related.
Delay
Data type: num
The delay in seconds can be used to shift the record in time. It must be between
0.01 and 0.1. If the value is 0 (zero) no delay is added. The delay is not saved in
the profile, it is only used for the activation. If the delay should be used together
with a saved profile the delay has to be specified again in the instruction
LoadProfile.
Filename
Data type: string
Name of the file where the profile is stored.
10.2.8 ActivateProfile
Description
ActivateProfile activates a profile that was just recorded to use it without
having to save it before.
If the system is restarted, all unsaved records are lost. Therefore, use LoadProfile
after restarts.
Do not use ActivateProfile after LoadProfile.
Example
ActivateProfile CNV1, 0;
WaitTime 0.2;
PulseDO \HIGH sensor_start_signal_DO;
SetDO STARTSTOP_CNV 1;
!
! Work against the conveyor
!
SetDO STARTSTOP_CNV 0;
A profile of the conveyor is activated and used for prediction of conveyor movement
as soon as the sensor_start_signal is set. Error warning
SYS_ERR_MOC_CNV_REC_NOT_READY if record not finished.
Arguments
ActivateProfile MechUnit, Delay
MechUnit
Data type: mechunit
The moving mechanical unit object (coordinate system) to which the robot position
in the instruction is related.
Delay
Data type: num
The delay in seconds can be used to shift the record in time. It must be between
0.01 and 0.1. If the value is 0 (zero) no delay is added.
10.2.9 DeactProfile
Description
DeactProfile deactivates a profile.
Example
DeactProfile CNV1;
A profile of the conveyor movement is deactivated and no longer used for prediction
of conveyor movement.
Arguments
DeactProfile MechUnit
MechUnit
Data type: mechunit
The moving mechanical unit object (coordinate system) to which the robot position
in the instruction is related.
10.2.10 CnvGenInstr
Description
CnvGenInstr sends a command to the conveyor process attached to the conveyor
mechanical unit.
Example
CnvGenIstr CNV1, CNV_ACTIV_REC, mycnvdata;
The controller will activate the record.
Arguments
CnvGenInstr MechUnit, cnvcmd, Data
MechUnit
Data type: mechunit
The moving mechanical unit object (coordinate system) to which the robot position
in the instruction is related.
cnvcmd
Command
Data type: num
List of possible commands:
• CNV_START_REC
• CNV_STOP_REC
• CNV_ACTIV_REC
• CNV_USE_FREC
• CNV_RESET_ALPROF
• CNV_DEACT_PROF
• CNV_STORE_PROF
Data
Data
Data type: cnvgendata
This structure is used to send num or string as parameters for different commands.
Program execution
All commands must be sent at least 0.2 seconds before start of conveyor movement.
More examples
Example1
VAR cnvgendata mycnvdata:=[0,0,0,0,"",""];
CnvGenInstr CNV2,CNV_START_REC,mycnvdata;
mycnvdata.value1:=1;
In this example, data.value1 specifies the duration of recording in seconds. This
value must be between 0.1 and pos_update_time * 300.
Continued
Example 2
CnvGenInstr CNV2,CNV_STOP_REC,mycnvdata;
This example can be used if CNV_START_REC has been sent with duration 0.
Example 3
CnvGenInstr CNV2,CNV_ACTIV_REC,mycnvdata;
mycnvdata.value1:=0;
In this example, data.value1 specifies a delay added to record in seconds. This
value must be between 0.01 and 0.1 seconds.
If value1=0 default value: then signal delay is used. Ready for use of profile on
next index movement. Error warning SYS_ERR_MOC_CNV_REC_NOT_READY if record
not finished.
Example 4
CnvGenInstr CNV2,CNV_USE_FREC,mycnvdata;
mycnvdata.string1:="myprofile": string1 must contain the name of the file where
to read the recorded profile.
The file must have been created by the command CNV_STORE_PROF. Ready for
use of profile on next index movement.
Error warning SYS_ERR_MOC_CNV_REC_FILE_UNKNOWN if record file not found.
Example 5
CnvGenInstr CNV2,CNV_RESET_ALPROF,mycnvdata;
Reset all profile data, ready for a new START_REC.
Example 6
CnvGenInstr CNV2,CNV_DEACT_PROF,mycnvdata;
Stop using profile.
Example 7
CnvGenInstr CNV2,CNV_STORE_PROF,mycnvdata;
mycnvdata.string1:="myprofile";string1 must contain the name of the file to store
the profile.
Limitations
As access to files can take a lot of time it is recommended not to use
CNV_USE_FREC and CNV_STORE_PROF while robot is moving.
Repeatability error between record and real cycles must be less than 120 ms. A
delay between sensor_start_signal and conveyor movement must not vary more
than 120 ms.
Error handling
No error handling for this instruction. In case of emergency stop of robot or conveyor
the command CNV_DEACT_PROF should be used before restarting the robot.
Syntax
CnvGenInstr
[ MechUnit ':=']< var of mechanical unit > ';'
[ Command ':=']< expression (IN) of num> ';'
Continued
Continued
Schematic overview
xx1000001425
Terminology
In context of controlling and moving the conveyor this is referred to as M7 in this
document.
In context of tracking the conveyor, it is referred to as CNV1. Hence, the conveyor
will be configured as two different mechanical units, M7 and CNV1.
Indexing mode is when the system listens (or waits) for a signal from the sensor
that a product is available.
In indexing mode it is not possible to jog or use Move instructions. To disable
indexing mode, execute IndCnvReset or move the program pointer to the routine
Main (PP to Main).
Continued
Limitations
When using the option Indexing Conveyor Control, up to two indexing conveyors
and two conventional (non-indexing) conveyors with encoder boards can be used
per controller. Up to two IRB 360 robots can be configured in a MultiMove system.
To be able to have two robots working on the same indexing conveyor, the options
Advanced Quetracking or PickMaster 3 must be used.
Topic I/O
Type Unit
Verify that the I/O unit Qtrack1 is defined as Virtual in the type Unit.
Parameter Value
Connected To Bus Virtual1
Type Signal
In the type Signal, configure a digital input signal for the photo eye which will trigger
an indexing movement of the conveyor.
Parameter Value
Name DI_Eye
Type of Signal Digital Input
Topic Controller
When running a MultiMove system and the indexing conveyor is running in a
separate motion task, the following must be added.
Type Tasks
In the type Task.
Parameter Value
Use Mechanical Unit Group M7
Continued
Note
Topic Process
Type Conveyor systems
In the type Conveyor systems, verify that the following parameters are set.
Parameter Value
Syncfilter Ratio 0.0001
Acc Dependent Filter Value 0
Continued
Topic Motion
Type Arm
In the type Arm, enable Independent Joint and add joint limits.
Parameter Value
Independent Joint On
Independent Upper Joint Bound 2E+07
Independent Lower Joint Bound -2E+07
Parameter Value
Mechanics FREE_ROT
Indexing move Yes
Time before indexing move 0.3
Pocket size 0.05
xx1200001105
A Pocket size
Continued
Type Transmission
The transmission must be represented by two integer parameters, Transmission
Gear High and Transmission Gear Low. This is needed to avoid loosing accuracy
after a very big number of indexing movements. These parameters are computed
in a way that makes it possible for the controller to move the indexing conveyor
exactly one pocket instead of for example 50 mm which could be the measured
pocket size.
A B
C
E
D
xx1200001106
A Pockets
B Motor
C Gearbox
D Gear wheel teeth
E Belt teeth
See the following example for the calculation of the parameters Transmission Gear
High, Transmission Gear Low, and Transmission Gear Ratio. With this setup, the
parameter Rotating Move must be set.
Calculation example:
D = Number of gear wheel teeth
A = Number of pockets
Transmission Gear Low = D * A = 20 * 36 = 720
G = Gear box ratio
E = Number of belt teeth
Transmission Gear High = G * E * 360 = 10 * 108 * 360 = 388800
Transmission Gear Ratio = Transmission Gear High / Transmission Gear Low =
388800 / 720 = 540 / 1 = 540
In this example we use the gear box ratio 10, this means 10 motor revolutions
correspond to one gear wheel revolution. The Transmission Gear High /
Transmission Gear Low ratio can be given as 388800 / 720 but 540 / 1 is easier to
comprehend.
Parameter Value
Rotating move YES
Continued
Parameter Value
Transmission Gear Ratio 540 (from example)
Transmission Gear High 540 (from example)
Transmission Gear Low 1 (from example)
Testing
Create a RAPID program using the code from the example below. Speed and
acceleration are given in mm/s respectively mm/s 2 . To avoid vibrations and overload
of the mechanical structure, the values for acceleration and deceleration should
not be set higher than the robot capacity at the given payload.
In this example an indexing movement will be performed each time the digital input
signal DI_Eye is triggered.
RAPID example
MODULE MainModule
VAR indcnvdata indcnvdata1:=[0,0,0,0,0,0,0];
PROC main()
indcnvdata1.speed := 2000;
indcnvdata1.acceleration := 25000;
indcnvdata1.productsperpick := 6;
indcnvdata1.productsperindex := 1;
ActUnit M7;
IndCnvInit M7, DI_Eye, indcnvdata1;
IndCnvEnable M7;
WHILE TRUE DO
WaitTime 1;
ENDWHILE
ENDPROC
ENDMODULE
10.3.6 indcnvdata
Description
The data type indcnvdata contains information about the indexing movement
and the number of pockets that the work object holds.
Example
VAR indcnvdata indcnvdata1:=[0,0,0,0,0,0,0];
indcnvdata1.speed:= 2000;
indcnvdata1.acceleration := 25000;
indcnvdata1.productsperpick := 6;
indcnvdata1.productsperindex := 1;
indcnvdata1.accuracytuning := 0;
Components
speed
Conveyor speed in mm/s. Normally this parameter is set to a high value to create
a motion profile that is triangular.
acceleration
Conveyor acceleration in mm/s 2 . This value cannot be higher than what is
configured in Acceleration Data, see Type Acceleration Data on page 116.
To avoid vibrations and overload of the mechanical structure, the values for
acceleration and deceleration should not be set higher than the robot capacity at
the given payload.
productsperpick
The number of pockets that offsets each work object. If there is one product in
each pocket this parameter defines how many products the robot will pick in each
robot cycle.
productsperindex
Use this parameter to set how many products that should enter each pocket before
executing an indexing movement.
accuracytuning
This parameter can be used to tune the synchronization between robot and indexing
conveyor and requires a high speed camera. The tuning value is default 0 and can
be adjusted +-10ms.
10.3.7 IndCnvInit
Description
IndCnvInit used to set up the indexing conveyor functionality.
Example
IndCnvInit M7, DI_Eye, indcnvdata1;
Arguments
IndCnvInit MechUnit, Signal, indcnvdata1;
MechUnit
Mechanical Unit
Data type: mechunit
The name of the mechanical unit.
Signal
Signal
Data type: signaldi
The name of the digital input signal that triggers the indexing movement.
indcnvdata
Data type: indcnvdata
IndCnvData speed, acceleration, productsperpick, productsperindex, accuracytuning
Error handling
The following recoverable errors are generated and can be handled in an error
handler. The system variable ERRNO will be set to:
Description
IndCnvEnable is used to set the system in indexing mode. An indexing movement
will be executed when the signal is triggered (indexing mode).
IndCnvDisable is used to stop listening to the digital input signal. No indexing
movement will be performed even if the signal is triggered.
Note
It is not possible to jog or run Move instructions on the indexing conveyor until
a IndCnvReset instruction has been executed.
Example
IndCnvEnable M7;
IndCnvDisable M7;
Arguments
IndCnvEnable MechUnit;
IndCnvDisable MechUnit;
MechUnit
Mechanical Unit
Data type: mechunit
The name of the mechanical unit.
Error handling
The following recoverable errors are generated and can be handled in an error
handler. The system variable ERRNO will be set to:
10.3.9 IndCnvReset
Description
IndCnvReset ends indexing mode and sets the system to normal mode which
makes it possible to jog and run Move instructions.
Example
IndCnvReset M7;
Arguments
IndCnvReset MechUnit;
MechUnit
Mechanical Unit
Data type: mechunit
The name of the mechanical unit.
10.3.10 IndCnvAddObject
Description
To manually add an object to the object queue, the RAPID instruction
IndCnvAddObject can be executed.
Example
IndCnvAddObject M7;
Arguments
IndCnvAddObject MechUnit;
MechUnit
Mechanical Unit
Data type: mechunit
The name of the mechanical unit.
Description
In this example an IRB 360 is picking a batch of products from an indexing conveyor
(CNV1) and placing the products on the outfeed conveyor (CNV2). The outfeed
conveyor is not controlled by IRC5.
Example code
MODULE MainModule
TASK PERS wobjdata wobj1:= [FALSE,FALSE,"CNV1",[[0,0,0],
[1,0,0,0]],[[0,0,0],[1,0,0,0]]];
TASK PERS wobjdata wobj2:= [FALSE,FALSE,"CNV2",[[0,0,0],
[1,0,0,0]],[[0,0,0],[1,0,0,0]]];
CONST robtarget WaitPos:= [[-129.82,1.57,-
924.52],[0,0.999848,-0.0174063,0],
[0,0,0,0],[0,9E+09,9E+09,9E+09,0,0]];
CONST robtarget Cnv1_Above:= [[24.81,40.73,34.42],
[0.000115829,-0.753048,0.657965,-0.000112099],
[0,1,0,0],[171.015,9E+09,9E +09,9E+09,277.57,400]];
CONST robtarget Cnv1_Below:= [[24.81,40.73,-9.77],
[0.000115827,-0.75306,0.657952,-0.000112101],
[0,1,0,0],[171.015,9E+09,9E +09,9E+09,277.57,400]];
CONST robtarget Cnv2_Above:= [[-23.46,-1.68,201.85],
[1.72038E-05,0.997874,0.0651587,-0.000988565],
[0,0,0,0],[158.015,9E+09,9E +09,9E+09,277.57,0]];
CONST robtarget Cnv2_Below:= [[-23.46,-1.68,55.28],
[1.72335E-05,0.997876,0.0651288,-0.000988564],
[0,0,0,0],[158.015,9E+09,9E +09,9E+09,277.57,0]];
PERS tooldata Tool_2:=[TRUE,[[0,0,56.5],[1,0,0,0]],
[2,[0,0,26],[1,0,0,0],0,0,0.0016]];
VAR triggdata EaciPick;
VAR triggdata EaciPlace;
VAR speeddata speed_eaci;
VAR indcnvdata indcnvdata1:=[0,0,0,0,0,0,0];
VAR num prod_cnt;
CONST stoppointdata
stoppoint_eaci:=[3,FALSE,[0,0,0,0],0,0.035,"",0,0];
PROC main()
indcnvdata1.speed := 2000;
indcnvdata1.acceleration := 25000;
indcnvdata1.productsperpick := 6;
indcnvdata1.productsperindex := 1;
prod_cnt := 0;
speed_eaci.v_tcp:= 5000;
speed_eaci.v_ori:= 10000;
Continued
ActUnit CNV2;
WHILE TRUE DO
! CNV1 Pick
WaitWObj wobj1\RelDist:=300;
MoveL Cnv1_Above, speed_eaci, z20, Tool_2\WObj:=wobj1;
TriggL Cnv1_Below, speed_eaci, EaciPick,
z1\Inpos:=stoppoint_eaci, Tool_2\WObj:=wobj1;
MoveL Cnv1_Above, speed_eaci, z20, Tool_2\WObj:=wobj1;
IF prod_cnt >= 1 THEN
DropWObj wobj2;
ENDIF
! CNV2 Place
WaitWObj wobj2\RelDist:=50;
MoveL Cnv2_Above, speed_eaci, z20, Tool_2\WObj:=wobj2;
prod_cnt := prod_cnt + 1;
TPErase;
TPWrite " Number of products: "\Num:=prod_cnt;
DropWObj wobj1;
ENDWHILE
Continued
Trigger time
If the parameter Time before indexing move is set too short, the error 50423 IndCnv
Time before indexing move too low can occur.
To minimize the time between the trigger from the photo eye and start of the
conveyor movement, follow the description below:
1 Set Time before indexing move to a high value, for example 0.4 s.
2 If trigger time is critical there is a chance to reduce the time by changing the
parameters as suggested in Possible solutions on page 127.
3 Run the full application with the robot coordinated to CNV1 and with full robot
payload.
4 Run the service routine IndCnvOptimalTimeBefore to get a proposed
optimal time before.
5 Update Time before indexing move to match the value proposed by the
service routine.
There is a risk that the value suggested by the service routine
IndCnvOptimalTimeBefore is too small so some extra 10 ms margin might be
needed.
Possible solutions
Change the following parameters in the type Motion Planner.
Parameter Value
Dynamic Resolution 0.3333
Path Resolution 0.3333
Queue Time 0.032256
Group Queue Time 0.016128
Possible limitations
If the error 50082 Deceleration limit occurs, return to the original setting of Queue
Time (which is 0.064512), in the type Motion Planner (topic Motion).
If the error 50226 Motor reference error occurs, return to the original setting of
Group Queue Time (which is 0.032256), in the type Motion Planner (topic Motion).
Note
Examples of use
Here are some examples of applications where conveyor tracking is combined
with MultiMove:
• Several robots can work on the same object moving on a conveyor.
• Several robots can cooperate to pick objects on a conveyor.
Additional information
If the option Indexing Conveyor Control is used for a conveyor in a MultiMove
system, then some additional parameters must be defined. See System parameters
and configuration files on page 112. See also Indexing conveyor with servo control
(Indexing Conveyor Control) on page 108.
Application manual - MultiMove
UnsyncCnv
In the example UnsyncCnv, two robots work independently on one work piece for
each robot. They do not cooperate in any way and do not have to wait for each
other. There is one conveyor mechanical unit for each robot. Two encoder interfaces
can be connected to the same encoder.
Continued
SyncCnv
In the example SyncCnv, two robots arc weld on the same work piece. The work
object is moved by a conveyor. One conveyor mechanical unit is used in a separate
motion planner.
Configuration
Task
Motion Planner
Name
motion_planner_1
motion_planner_2
Mechanical Unit
Continued
Illustration
xx1200001109
Configuration
Task
Motion Planner
Name
motion_planner_1
motion_planner_2
motion_planner_3
Mechanical Unit
Continued
Illustration
Calibration overview
For unsynchronized movements each conveyor must be calibrated with its motion
group robot (after the base calibration of the robot):
• Cnv1 with Robot_1
• Cnv2 with Robot_2
For synchronized movements Cnv3 is calibrated with one robot only: Robot_1.
Introduction to 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
tasks, see Multitasking in Application manual - Engineering tools.
PROC main()
...
IndependentMove;
...
ENDPROC
PROC IndependentMove()
MoveL p11, v500, fine, tool1\WObj:=wobj1;
WaitWObj wobjcnv1\RelDist:=10;
MoveC p12, p13, v500, z10, tool1\WObj:=wobjcnv1;
MoveC p14, p11, v500, fine, tool1\WObj:=wobj1;
ENDPROC
ENDMODULE
PROC main()
...
IndependentMove;
...
ENDPROC
PROC IndependentMove()
MoveL p21, v500, fine, tool2\WObj:=wobj2;
WaitWObj wobjcnv2\RelDist:=10;
MoveL p22, v500, z10, tool2\WObj:=wobjcnv2;
MoveL p23, v500, z10, tool2\WObj:=wobjcnv2;
Continued
PROC main()
...
SyncMove;
...
ENDPROC
PROC SyncMove()
MoveJ p100, v1000, z50, tool1;
WaitSyncTask sync1, all_tasks;
MoveL p101, v500, fine, tool1\WObj:=wobj1;
SyncMoveOn sync2, all_tasks;
MoveL p102\ID:=10, v300, fine, tool1\WObj:=wobjcnv3;
MoveC p103, p104\ID:=20, v300, z10, tool1\WObj:=wobjcnv3;
MoveL p105\ID:=30, v300, z10, tool1\WObj:=wobjcnv3;
MoveC p106, p101\ID:=40, v300, fine, tool1\WObj:=wobj1;
SyncMoveOff sync3;
MoveL p199, v1000, fine, tool1;
UNDO
SyncMoveUndo;
ENDPROC
ENDMODULE
Continued
PROC main()
...
SyncMove;
...
ENDPROC
PROC SyncMove()
MoveJ p200, v1000, z50, tool2;
WaitSyncTask sync1, all_tasks;
MoveL p201, v500, fine, tool2 \WObj:=wobj2;
SyncMoveOn sync2, all_tasks;
MoveL p202\ID:=10, v300, fine, tool2\WObj:=wobjcnv3;
MoveC p203, p204\ID:=20, v300, z10, tool2\WObj:=wobjcnv3;
MoveL p205\ID:=30, v300, z10, tool2\WObj:=wobjcnv3;
MoveC p206, p201\ID:=40, v300, fine, tool2\WObj:=wobj2;
SyncMoveOff sync3;
MoveL p299, v1000, fine, tool2;
UNDO
SyncMoveUndo;
ENDPROC
ENDMODULE
PROC SyncMove()
MoveExtJ angle_neg20, vrot50, fine;
WaitSyncTask sync1, all_tasks;
! Wait for the robots
WaitWObj wobjcnv3;
Continued
WaitWObj wobjcnv3\RelDist:=100;
MoveExtJ angle_160\ID:=20, vrot100, z10;
MoveExtJ angle_200\ID:=30, rot100, z10;
MoveExtJ angle_340\ID:=40, rot100, fine;
SyncMoveOff sync3;
DropWobj wobjcnv3;
UNDO
SyncMoveUndo;
ENDPROC
ENDMODULE
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.
Introduction
For a combination of synchronized and un-synchronized mode is needed with a
single conveyor there must be two mechanical units for un-synchronized mode.
For example CNV1 and CNV2 can be connected to the same encoder. CNV3 can
be configured using the same I/O signals as CNV1 in the topic Process. Replace
default C3xx signals name with C1xx (that is, position_signal c3position becomes
position_signal c1position).
Configuration
The configuration file Proc.cfg will look like this:
Conveyor
-name "CNV1" -sensor_type "CAN" -use_sensor "CAN1"\
-adjustment_speed 250 -min_dist -600 -max_dist 20000\
-correction_vector_ramp_length 10
#
-name "CNV2" -sensor_type "CAN" -use_sensor "CAN2"\
-adjustment_speed 250 -min_dist -600 -max_dist 20000\
-correction_vector_ramp_length 10
#
-name "CNV3" -sensor_type "CAN" -use_sensor "CAN3"\
-adjustment_speed 250 -min_dist -600 -max_dist 20000\
-correction_vector_ramp_length 10
#
L
A limitations
accelerating conveyors, 87 Indexing Conveyor Control, 110
ActivateProfile, 103 LoadProfile, 102
activating conveyor, 49
additional axes, 17 M
additional conveyors, 45 M7
indexing conveyor, 109
B motor, 25
base frame calibration, 35 MultiMove, 129
independent, 129
C syncronized, 129
circular conveyor tracking, 77
CNV1 O
indexing conveyor, 109 object queue, 73
CnvGenInstr, 105
conveyor base frame, 35 P
coordinate systems, 22 paint applications, 25
CountsPerMeter, 34 principles of conveyor tracking, 19
counts per meter, 34
Q
D queue tracking, 71
DeactProfile, 104 queue tracking distance, 34
distance QueueTrckDist, 34
maximum, 39
minimum, 39 R
DropWObj, 70 RecordProfile, 99
DSQC 377B, 25 robot adjustment speed, 40
E S
encoder safety, 11
prerequisites, 28 speed
selecting type, 26 robot, 40
start window, 38
F StoreProfile, 101
frames, 22 synchronization switch, 32
Sync Separation, 38
I
IndCnvAddObject, 123 T
indcnvdata, 119 track motion, 17, 42
IndCnvDisable, 121
IndCnvEnable, 121 U
IndCnvInit, 120 UseAccProfile, 91
IndCnvReset, 122
Indexing Conveyor Control W
description, 108 WaitAndRecProf, 100
WaitWObj, 67
ABB AB
Discrete Automation and Motion
3HAC16587-1, Rev L, en
Robotics
S-721 68 VÄSTERÅS, Sweden
Telephone +46 (0) 21 344 400
www.abb.com/robotics