C5G Plus - Motion Programming
C5G Plus - Motion Programming
Control Unit
MOTION PROGRAMMING
C5GPlus - R1C
Rel. 4.20.xxx
CR00758157_en-07/2021.03
Instruction Handbook
The information contained in this manual is the property of COMAU S.p.A.
Reproduction of text and illustrations is not permitted without prior written approval by COMAU S.p.A.
COMAU S.p.A. reserves the right to alter product specifications at any time without notice or obligation.
SUMMARY
SUMMARY
PREFACE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12
Symbols used in the manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Reference documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Modification History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1
Comau Robotics Product Instruction
SUMMARY
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Reference frames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
System reference frames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Manual motion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Manual motion in WRIST_JNT mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Manual motion of a single arm system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Manual motion of auxiliary axes, slides and rotating columns . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Manual motion with Controller multi-arm configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Motion instruction in programming status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
2
Comau Robotics Product Instruction
SUMMARY
3
Comau Robotics Product Instruction
SUMMARY
4
Comau Robotics Product Instruction
SUMMARY
5
Comau Robotics Product Instruction
SUMMARY
6
Comau Robotics Product Instruction
SUMMARY
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
Glossary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
Offset algorithm with Dynamic Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
Kinematic offset algorithm (optional feature) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
Moving through axis 5 singularities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
Using WRIST_JNT modality to go through singularities . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
Using WRIST_JNT modality to go through singularities. . . . . . . . . . . . . . . . . . . . . . . . . . .209
Wrist Singularity Management (optional feature) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .210
Manual motion (jog keys) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
Robots without compensation (effect of the inverse kinematics) . . . . . . . . . . . . . . . . . . . . . . . 211
Inverse conversion of SMART NJ4 (non-spherical wrist) model . . . . . . . . . . . . . . . . . . . . . 211
Approximation in the orientation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .211
Move to a taught POSITION. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .212
Fly between MOVE LINEAR/CIRCULAR and MOVE JOINT . . . . . . . . . . . . . . . . . . . . . . .212
Axis 5 singularity. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .212
Cartesian position out of range. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .214
TCP in the back of the robot. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .214
TCP behind axis 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .216
WCP close to axis 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .217
Inverse conversion of SMART NJ models (spherical wrist only) . . . . . . . . . . . . . . . . . . . . . 218
Axis 5 singularity. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .218
Programming rules for non-spherical wrist robots (SMART NJ4) . . . . . . . . . . . . . . . . . . . . . . 218
How to stay away from a singularity zone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
Changing the orientation of the points along the path . . . . . . . . . . . . . . . . . . . . . . . . . . . .219
Properly designing the work-cell layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .220
Modifying tool inserting a small angle between robot flange and tool flange . . . . . . . . . . .222
Conclusions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
7
Comau Robotics Product Instruction
SUMMARY
8
Comau Robotics Product Instruction
SUMMARY
9
Comau Robotics Product Instruction
SUMMARY
10
Comau Robotics Product Instruction
SUMMARY
11
Comau Robotics Product Instruction
PREFACE
PREFACE
– Symbols used in the manual
– Reference documents
– Modification History.
This symbol indicates operating procedures, technical information and precautions that
if ignored and/or are not performed correctly could cause injuries.
This symbol indicates operating procedures, technical information and precautions that
if ignored and/or are not performed correctly could cause damage to the equipment.
This symbol indicates operating procedures, technical information and precautions that
it are important to highlight.
12
Comau Robotics Product Instruction
PREFACE
Reference documents
This document refers to the C5GPlus Control Unit.
The complete set of manuals for the C5GPlus consists of:
13
Comau Robotics Product Instruction
PREFACE
Modification History
– In 01/2018.10 manual version, a new Chap.20. - Palletizing functionality (optional
feature) on page 282 has been created.
Such a topic was part of Chap.5. - Motion Control on page 43 and Chap.6. - Motion
control without eMotion on page 99 in the previous versions of the manual.
– In 02/2019.01 manual version, the following changings have been made:
• modified information related to Chap.17. - Interference Regions (optional
feature) on page 266, to align the chapter descriptions to the corresponding
software.
– In 03/2019.05 manual version, the following changings have been made:
• added description of the TIME and DISTANCE BEFORE HALFFLY new
motion conditions (par. 5.10.2.4.2 Events related to FLY movements with
trajectory control (constant speed or specified FLY_DIST) on page 85)
• added description for the REPLAY (execution of a saved trajectory)
functionality and the corresponding Moni of REPLAY type files handling
• created the new Chap.22. - Manual Guidance (optional feature) on page 288
• created the new Chap.23. - Path Learning on page 317.
– In 04/2019.07 manual version, Chap.14. - Presuppositions for SMART Robot
programming on page 205 has been updated to adjust the descriptions to match
the new kinematics conversion strategy.
– In 05/2019.10 manual version, par. 5.6 Acceleration and Deceleration on page 64
has been updated to provide details about $EMT_STRESS predefined variable.
– In 06/2020.09 manual version, the following changings have been made:
• Chap.7. - Synchronous Motion (optional feature) on page 139 - modified
• Chap.17. - Interference Regions (optional feature) on page 266 - modified
about Cartesian Hybrid Regions
– In 07/2021.03 manual version, the following changings have been made:
• added description about the optional Lookahead functionality. More in detail,
the following sections have been created and/or modified:
• Lookahead functionality (optional feature),
• Available FLY types
• Joint FLY
• Cartesian FLY
• Available FLY types summary table
• Using $FLY_TYPE and $FLY_PER for the Joint FLY,
• Geometry and Speed Profile in the Cartesian FLY: FLY_NORM vs
FLY_MULTI,
• Using $DFT_ADVANCE and $ADVANCE.
• Chap.24. - IMPR - Application for Continuous Processes optimization
(optional feature) on page 323.
• updated the software license agreement information, to the 2021 version.
14
Comau Robotics Product Instruction
15
Comau Robotics Product Instruction
This chapter deals with general specifications that apply to the whole Robot System.
Considering its importance, this chapter is referred to unconditionally in every instruction
handbook of the system.
16
Comau Robotics Product Instruction
17
Comau Robotics Product Instruction
– Connect the Robot to the ground through the Control Unit or specific terminals,
according to the prearrangements present on Robot and/or Control Unit.
– Where provided, check that the Control Unit door/s is/are closed with the
appropriate key.
– A wrong connection of the connectors may cause permanent damage to the
Control Unit components.
– The Control Unit manages internally the main safety interlocks (gates, enabling
push-buttons, etc.). Connect the Control Unit safety interlocks to the line safety
circuits, taking care to connect them as required by the Safety Standards. The
safety of the interlock signals coming from the transfer line (emergency stop, safety
fences etc.), i.e. the making of correct and safe circuits, is the responsibility of the
Robot and Control System integrator.
In the cell/line emergency stop circuit it is necessary to include the contacts of the
emergency stop push-buttons of the Control Unit available on the appropriate connector
(for details, refer to the electrical circuit diagrams and the specific Instruction Handbooks
according to the Unit Control model). The push-buttons are not interlocked inside the
emergency stop circuit of the Control Unit.
Setting the emergency stop in category 0 can result in mechanical damages to the tools
and loss of load if they are not properly designed.
– When preparing protection barriers (when required), especially for light curtains
and access doors, take into consideration the Robot stopping times and distances
according to the stop category (according to IEC 60204-1) and the weight of the
Robot.
The stop circuit timer is normally set to 1.5 seconds. This parameter can be changed if
heavy-duty implements (e.g. rotary tables, positioners, etc.) are matched with the Robot.
The stop circuit timer can be modified by changing its setting within the control logic of
the Control Unit safety aspects. For further details, refer to the paragraph “Safety stop
circuit timer” in the Control Unit Instruction Handbooks.
– Check that the environmental and operating conditions do not exceed the limits
specified in the specific Instruction Handbooks.
– The calibration operations must be carried out with utmost attention, as indicated
in the Instruction Handbooks of the specific product, and must be concluded by
checking the correct position of the machine.
– To load or update the system software (for example after boards replacing), use
only the original software handed over by COMAU. Scrupulously follow the system
software loading procedure described in the Instruction Handbooks supplied with
18
Comau Robotics Product Instruction
the specific product. After loading, always make some Robot motion tests at low
speed remaining outside the Robot action radius.
– Check that the barriers of the Protected Zone (when present) are correctly
positioned.
19
Comau Robotics Product Instruction
The integrator is responsible for the correct integration of the collaborative Robot in the
complete cell/machine.
Before using manual brake releasing devices, it is recommended to sling the Robot, or
hook it to an overhead traveling crane.
– The brake releasing operation can generate crash risks caused by:
20
Comau Robotics Product Instruction
Where required, the replaced safety components must be configured with the same
parameters as those removed.
21
Comau Robotics Product Instruction
– If necessary, during troubleshooting, intervene with the Control Unit powered; all
the precautions specified by Safety Standards must be observed when operating
in presence of dangerous voltages.
– At the end of the maintenance and troubleshooting operations, all the deactivated
safety devices must be reset (panels, protection shields, interlocks, etc.).
– The maintenance, repair and troubleshooting intervention must be completed by
verifying the correct operation of the Robotic system (Robot and Control Unit) and
all safety devices performed outside the Protected Zone / Collaborative Zone.
– During the software loading phases (for example after replacement of electronic
boards) use only the original software handed over by COMAU. Scrupulously
follow the system software loading procedure described in the specific Instruction
Handbooks; after loading, always run a test cycle, remaining outside the Protected
Zone.
– The disassembly of Robot components (e.g. motors, balancing cylinders, etc.) may
cause uncontrolled movements of the axes in different directions: before starting a
disassembly procedure, refer to the warning plates affixed on the Robot and to the
supplied Instruction Handbooks.
– On Robots equipped with balancing springs, it is forbidden to remove the protection
cover of the springs.
– Where fitted, always restore the protective casing if previously installed.
22
Comau Robotics Product Instruction
– Remove the Robot and the Control Unit from the workspace, taking all the
requirements indicated in the products Instruction Handbooks; if lifting is
necessary, check the eyebolts proper fixing and use only suitable slings and
equipment.
The disposal operations must be carried out in compliance with the legislation in force
in the country where the Robotic system is installed; dispose of the batteries, oils and
other chemical liquids in an environmentally correct way and in accordance with the
regulations in force transferring them to specific waste collection centres.
– Consign the Robot and the Control Unit to a centre responsible for the dismantling
and disposal.
23
Comau Robotics Product Instruction
1.6 Responsibilities
The integrator is responsible for the correct integration of the robotic system or its parts
in accordance with the applicable legislation.
Comau is not responsible for any improper use of the robotic system or its parts.
24
Comau Robotics Product Instruction
2.1 Foreword
This chapter describes the following:
– System operating modes
– System states
– Stand-by function
25
Comau Robotics Product Instruction
When the status selector switch is set on position T1, the programs can be developed
using editor environment and the spots can be taken from the Teach Pendant moving
the robot manually with the motion keys; the programs can be set up using the debug
tools of the system. In programming mode, the execution of a move instruction requires
that the operator presses the START key and the enable device on the Teach Pendant.
When the status selector switch has been set to T1, the system is under the control of
the operator. When the selector is set on REMOTE, the system is under remote control
(for example from PLC).
Active TOOL, BASE and FRAME cannot be changed when working in REMOTE.
Before any operation can be executed that requires movement, the drives must be
powered:
– if the state selector switch is in T1 position, press in the intermediate position the
Teach Pendant Enabling Device, to power ON the drives; tho switch them OFF and
activate brakes on all axes controlled by the Control Unit, just release the Teach
Pendant Enabling Device,
– if the state selector switch is in LOCAL position, touch R5 key (Teach Pendant right
menu - it means DRIVE ON when in LOCAL state), to power ON the drives; to
switch them OFF and activate brakes on all axes controlled by the Control Unit,
touch R5 key again (Teach Pendant right menu - now it means DRIVE OFF).
Active TOOL, BASE and FRAME cannot be changed when working in AUTO.
– if the state selector switch is in REMOTE position, DRIVEs ON and OFF are
remote controlled.
A detailed description follows of all the possible system states.
26
Comau Robotics Product Instruction
If the controlled stop function class 1 (EN 60204-1) is active, the power cut-out (opening
of the power contactor) may take place with a delay that ranges from a minimum of 1
second to a maximum of 2 seconds.
With the status selector switch positioned on T1, the power cut-out is immediate (EN
60204-1, class 0 stop).
– ALARM status: this status is entered when there is a system alarm. According to
how serious the error is, the system takes different actions, such as suspending the
program execution, deactivation of the drives, etc. A situation may occur where the
alarm cannot be reset, therefore the drives cannot be switched on.
The current system status is displayed on the first status line of the Teach Pendant (or
in the Terminal window of tool WinCRC on PC).
The figure shows a simplified diagram of the actions that determine the system
change-over from one state to another.
27
Comau Robotics Product Instruction
executed. When the START key is released again the system returns to HOLD status.
When entering the HOLD status, the corresponding HOLD key on the Teach Pendant
is considered as pressed. Further pressure on the key causes the system to exit from
HOLD status.
If the HOLD status has been caused by pressing the DRIVE OFF key on the Teach
Pendant (either Enabling Device released or R5 softkey pressed meaning DRIVE OFF),
the DRIVE OFF and HOLD keys must be pressed again to exit from HOLD status, and
then re-power the drives (either intermediate pressure of the Enabling Device or press
R5 softkey meaning DRIVE ON).
28
Comau Robotics Product Instruction
The Stand-by function is automatically deactivated at the first request to start movement
again (START, RESUME) from the system.
The system Stand-by status is displayed in the status bar of the Teach Pendant. To
display the state of a single arm, read this status on the Status sub-page, the Motion
Page on the Teach Pendant.
29
Comau Robotics Product Instruction
30
Comau Robotics Product Instruction
3.1 Foreword
The purpose of this chapter is to describe the basic concepts and the terminology for the
management of robot axes position information. The description of the operating
procedures is contained in the chapter TURN-SET AND CALIBRATION
- OPERATING PROCEDURES, that specifically regards the robot used.
This chapter contains the basic information on the following topics:
– used Terminology
– Turn-set
– Calibration
3.2 Terminology
– TRANSDUCER: There are two types of position transducers: encoder and
resolver.
– NUMBER OF TRANSDUCER TURNS: during the robot axis movement, the
transducer may make several turns; the number of turns is initialised through the
calibration or the turn-set.
– AXIS VALUE: the value of an axis contains all the information needed to determine
the exact position of an axis in space;
– VALUE RECONSTRUCTION: when the Control Unit is powered on, the system
software, among the various initialisations, reconstructs the value of the robot
axes.
The system software checks this value; in fact, it checks that the difference
between the reconstructed position and the position before shut-down is below a
certain threshold. If the threshold is exceeded, the Control Unit displays the error
59411 - 08 Ax <num_ax> Arm <num_arm> movement after shut-down and
leaves it to the operator to check that the physical position of the robot corresponds
to the new value.
– CALIBRATION POSITION: a pre-set position that has been checked using
specific equipment (dial gauges, supports, calibration fixtures). The calibration
position is a reference position in the robot working space that serves to initialise
the value of each axis.
– CALIBRATION CONSTANTS: the calibration constant is the difference between
the datum read by the transducer and the nominal position of the robot axis that
the transducer should assume in that particular position of the robot axis. In fact,
since the positioning of the transducer as to the robot joint is casual, (because it
depends on how the transducer has been mounted), it is necessary to correct the
actual position of the transducer according to the nominal position required by the
robot axis.
31
Comau Robotics Product Instruction
The calibration constant is defined inside a transducer turn and is stored in variable
$CAL_DATA. It is represented in motor turns and is a value between -0.5
(excluded) and +0.5 (included). The calibration constant described in variable
$CAL_DATA can be read on the Teach Pendant, Setup page, Calib subpage.
– CALIBRATION ASCII FILE: the calibration file
UD:\SYS\<$SYS_ID>_CAL<num_arm>.PDL (where $SYS_ID indicates the
system identification, for example NJ4_001) is an ASCII file with syntax of a PDL2
file, where the calibration constants ($CAL_DATA[n]) and other typical data of the
robot are stored.
– NVRAM: the memory used to save the characteristic information of the robot
associated to the Control Unit, the calibration constants and the length of the
levers. It is on the CPU board of the Controller.
3.3 Turn-set
The purpose of the turn-set is to update the number of transducer turns only,
should it occur that the when switched on again, the Control Unit has lost this
value.
The operation consists in bringing the axis involved to the calibration position, using the
locating notches, and giving the required command. No special equipment is needed,
because the only value initialised is the number of turns of the transducer.
The turn-set operation is required when
– there has been axis movement with the control off (for example when the error
59411 - 08 Ax <num_ax> Arm <num_arm> movement after shut-down) is
displayed.
– events take place that cause the loss of the number of turns only, and therefore do
not require the execution of the calibration procedure. On the Teach Pendant
status window or on the PV video the text Ar:TURN is displayed.
According to whether the turn-set is executed with the robot in system calibration
position or in user calibration position, we shall have:
– Turn-set on system calibration position
– Turn-set on user calibration position
– Turn-set for robot axes with multi-turn stroke
32
Comau Robotics Product Instruction
In the above indicated condition, when moving the axis to align the notches, a
positioning error message is shown on the terminal.
5409 - 02 Ax <num_asse> Arm <num_arm> joint position not sufficient
accurate
If the above described conditions occur, do not send the TURN SET command (the axis
would be calibrated in a wrong position), but restore the correct position by performing
one of these procedures:
1. Turn the axis and make attempts to find the axis turn position where the original
calibration was executed. Align the notches and run the TURN SET command.
When the correct position has been resumed, the message Command
Completed will appear on the Terminal
otherwise, as an alternative
2. Make the complete axis calibration (see Chapter Turn-set and Calibration -
Operating Procedures in the Maintenance manual of the corresponding robot)
33
Comau Robotics Product Instruction
3.4 Calibration
The purpose of the calibration procedure is to establish the position of a robot axis
referring it to an ideal robot. This makes it possible to initialise the values of the robot
axes and to make the position variables used in the robot programs universal.
During the calibration procedure, when the desired axis is in the calibration position, two
values are stored:
– the deviation, inside a transducer turn, between the value of the actual position and
that of the axis nominal position,
– the number of transducer turns.
The notches on the individual axes make it possible to execute future turn-set operations
on a robot that has already been installed.
Remember that executing the calibration operation (on the Teach Pendant, Setup page,
Calib subpage, Calib command) just having positioned the robot axes on the locating
notches, without using the suitable equipment, is an operation that does not guarantee
the necessary robot positioning precision.
Subsequently, the calibration does not need to be executed again, unless there is
a mechanical failure that involves the replacement of a component of the
kinematic chain, or in the case of impacts that damage the robot structure.
To determine the correct calibration position, special equipment has to be used (dial
gauges, supports, etc.) to determine with the necessary precision the position of each
individual axis.
34
Comau Robotics Product Instruction
It is the responsibility of the user to provide the appropriate instruments and to check the
correct positioning of the robot in any user re-calibrations, especially regarding the
arrangement of the locating notches.
35
Comau Robotics Product Instruction
4.1 Introduction
In this chapter, reference will be made to the Teach Pendant as the device to control the
robot motion in programming status (status selector switch in position T1).
For any further information and/or explanations, see the relevant chapter TP5 Teach
Pendant, in the C5GPlus Control Unit Use manual.
36
Comau Robotics Product Instruction
the description of the main co-ordinate conversions. Before starting to explain these
conversions, it is necessary to define some reference frames.
The $TOOL variable describes the position of the TCP frame in relation to the flange;
the $BASE variable describes the position of the base frame in relation to the world
frame; finally, the $UFRAME variable describes the position of the workpiece in relation
to the world frame.
The POS conversion indicates the recorded point P where the TCP will position when
executing the program. It must be remembered that all the POSITIONS recorded are
defined in relation to the user reference frame (defined by $UFRAME, with certain
$BASE and $TOOL values).
Remember that, changing $TOOL or $BASE or $UFRAME, the same position (POS)
corresponds to a different actual position of the robot!
1. Flange frame
2. Tool frame
3. Recorded position
4. User frame
5. Base frame
6. World frame
Let’s now imagine a pen fitted on the flange of the robot that has to write the word
COMAU on the table. The $BASE conversion defines the point where the robot base is
37
Comau Robotics Product Instruction
located, the $TOOL movement indicates the pen and the $UFRAME movement
indicates the position of the table.
38
Comau Robotics Product Instruction
Before moving in Cartesian mode (Tool, Uframe, Base) the correct definition should be
checked of the reference systems, especially the declaration of the tool frame through
the $TOOL variable. A wrong description of the tool causes errors in learning the points
and does not keep the TCP position unchanged during orientation movements. A good
method to check the correctness of $TOOL is to check that the TCP remains fixed while
changing the orientation of the tool.
The procedure for arm manual movement of a robotic cell varies slightly according to
the cell controller configuration. The following paragraphs describe the main details for
each typical situation.
39
Comau Robotics Product Instruction
positioners. Another example of auxiliary axis is the motor driven spot welding gun.
An example of an integrated auxiliary axes group is a roto-translating column or a
gantry.
Jogging an auxiliary axis is usually only possible in joint mode (JOINT) using the
corresponding key associated to the axis.
However, if the auxiliary axis moves a slide, a column or a built-in gripper, it can be
moved also in Cartesian modes (BASE, TOOL and UFRAME) using the same keys as
for JOINT mode.
Jogging in cartesian mode, allows to move the integrated axis without moving the TCP
(thus, the robot joints can move and follow the auxiliary axis/axes motion, in order not to
move the TCP from its initial position).
Note that when teaching positions for auxiliary axes, it is recommended to use
XTNDPOS.
40
Comau Robotics Product Instruction
The type of path may be joints, linear or circular and is described by the predefined
constants JOINT, LINEAR and CIRCULAR respectively (see the Chap.6. - Motion
control without eMotion on page 99 for further details). If the type of trajectory is not
indicated, the value defined in the $MOVE_TYPE system variable is valid, that is usually
set at JOINT by the system.
The destination points are typically learnt inside a program, but they can also be
assigned directly in the instruction line of EXECUTE. Two ways to assign the destination
point that are most useful for installation and maintenance are given below. A Cartesian
point can be assigned by the built-in POS that allows, as parameters, the three
co-ordinates x, y and z where the TCP is to be taken, three angles for tool orientation
and a configuration string. All the positions of this type are called POSITION and are
always referred to the reference systems; the configuration string can usually be left
empty. The following is a valid position that defines a point at 100 mm from the user
reference in direction z: POS (0,0,100,0,0,0,’’). For further information see the Chap.6.
- Motion control without eMotion on page 99 and the PDL2 Programming Language
manual. A destination point can also define the position to be reached by each arm axis
(including auxiliary axes). To do so, write the values separated by a comma (in the
correct order) and enclose the complete declaration in a brace. A missing value leaves
the position of the corresponding axis unchanged. The following is a joint type position,
that requires axis 1 to move 10 degrees from the zero position, leaves axis 2 stationary,
takes axis 3 to -30 degrees and leaves the wrist unchanged: {10, ,-30}.
Some examples follow for valid movement instructions (for further information see the
PDL2 Programming Language Manual).
41
Comau Robotics Product Instruction
MOVE CIRCULAR TO POS(100,100,0,0,0,0,’’) VIA movement of pre-defined arm that joins the starting
POS(0,200,0,0,0,0,’’) point to POS (100,100,0,0,0,0,’’) with a circumference
that passes through POS (0,200,0,0,0,0,’’)
42
Comau Robotics Product Instruction
MOTION CONTROL
5. MOTION CONTROL
43
Comau Robotics Product Instruction
MOTION CONTROL
World Frame The factory plant frame of reference with respect to which all
machines are positioned
Base Frame The frame located on the robot base
User Frame The frame located on the workpiece
Flange Frame The frame located on the robot flange
TCP Frame The frame located on the tool top
The $TOOL variable describes the position of the TCP frame with respect to the flange
frame; the $BASE coordinate transformation describes the position of the base frame
with respect to the world frame; the $UFRAME transformation describes the position of
the workpiece with respect to the world. The POS transformation represents the taught
point P that will be reached by the TCP during the execution of the program. Note that
all the taught POSITIONs are defined with respect to the user frame of reference
(defined by $UFRAME).
To better understand, suppose that the corner of the room is the world frame, and a
robot is located beside a table as shown in the following picture Fig. 5.1 - System
Frames of Reference and Coordinates Transformation on page 45.
44
Comau Robotics Product Instruction
MOTION CONTROL
Suppose further that the robot has a pen mounted on the flange and it has to write
COMAU on the table. $BASE defines where the robot is located, the $TOOL
transformation describes the pen, and the $UFRAME transformation defines the
position of the table with respect to the room.
These system frames will simplify some operations. For example:
– if the robot were picked up and placed at the opposite side of the table, it would be
enough to redefine $BASE and restart writing without modifying any point;
– if the pen were replaced with a bigger one, it would be enough to redefine $TOOL
and restart writing without modifying any point;
– if the table were moved inside the room, it would be enough to redefine $UFRAME.
Note that in some applications $BASE and $UFRAME can be left equal to zero: this
means that the world frame and the workpiece frame are located at the base of the robot
and all taught POSITIONs are referred to the base of the robot. On the contrary, the
$TOOL transformation must always be correctly defined to achieve the desired path of
the TCP (Tool Center Point) along the trajectory.
45
Comau Robotics Product Instruction
MOTION CONTROL
please refer to par. 12.5 BASE automatic calculation for positioners on page 618 in
C5GPlus Control Unit Use manual for detailed information.
WARNING
It is very important to specify the payload related to the tool mounted onto the flange, in
order to allow the eMotion algorithm to properly work.
The predefined variables which define the tool payload are as follows:
– $TOOL_MASS
– $TOOL_CNTR
– $TOOL_INERTIA
and must be properly configured.
For any information about them, refer to Predefined Variables List chapter in PDL2
Programming Language manual.
a. Begin with no tools on the robot. Assign zero values to all six tool parameters of
$TOOL.
46
Comau Robotics Product Instruction
MOTION CONTROL
b. Identify x, y, and z axes directions of the tool. (Note: For SMART robot, base axes
are parallel to tool axes when the robot is pointing upward and small axes are at
mid-travel).
c. Move the robot to a known position, e.g. the calibration position (Fig. 5.2 shows the
calibration position for SMART robots). Note that for some robot models, the
calibration position could be different than the shown one.
d. Check the direction of the three tool axes by jogging the robot using the TOOL jog
coordinate type.
e. Mount the tool and measure the tool centre offsets (positive or negative) with
respect to the flange centre along all three axes. Measurements should be in
millimetres.
47
Comau Robotics Product Instruction
MOTION CONTROL
Example A
Tool z axis (u) coincides with axis z of the flange.
In this case no rotation assignment is required:
(e1, e2, e3) = (0, 0, 0)
Example B
Tool z axis (u) coincides with axis y of the flange.
48
Comau Robotics Product Instruction
MOTION CONTROL
Example C
Tool z axis (u) is at 90 degrees with respect to the flange z
axis in the direction -y.
Rotation angles are (-90, 90, 180).
Example D
Tool z axis (u) is at 90 degrees with respect to the flange z
axis in the direction x.
Rotation angles are (0,90,180).
Example E
Tool z axis (u) is at 90 degrees with respect to the flange
z axis in the direction -x.
Rotation angles are (180, 90, 180).
The TCP is calculated at the tool closing point. Any safety flange logically belongs to the
tool and therefore increases the z offset.
49
Comau Robotics Product Instruction
MOTION CONTROL
PROGRAM setframe
VAR corner, x, xy : POSITION
BEGIN
$UFRAME := POS(0,0,0,0,0,0,’’)
$TOOL := ... -- properly defined
-- Jog the TCP onto 3 points on the workpiece and teach
-- corner POSITION, x and xy POSITIONs pressing the MOD key
-- on the TP.
-- Then execute the following statement.
$UFRAME := POS_FRAME(corner, x, xy)
END setframe
As an alternative, a tool is available on the Teach Pendant, Setup page, Motion - Frames
environment, allowing the UFRAME guided calculation; please refer to par. 12.4
UFRAME automatic calculation on page 609 in C5GPlus Control Unit Use manual for
detailed information.
50
Comau Robotics Product Instruction
MOTION CONTROL
5.3 Trajectory
It represents an Arm motion from an initial position to a final position.
The motion trajectory between two taught positions is generated by interpolating various
sets of variables from their initial values at the start position to their final values at the
destination position. The predefined variable $MOVE_TYPE indicates the type of
interpolation to be used. It is a program-specific variable (one for each active program).
The predefined constants JOINT, LINEAR, or CIRCULAR can be assigned to
$MOVE_TYPE. The trajectory can be also expressed in the move statements by
assigning the reserved words JOINT, LINEAR or CIRCULAR to the MOVE statement.
The trajectories can be classified as follows:
– joint trajectory: JOINT
– linear trajectory: LINEAR
– circular trajectory: CIRCULAR.
The following topics about the Trajectory are described in the next sections:
– Joint Interpolation
– Cartesian Interpolation
– REPLAY (execution of a saved trajectory).
51
Comau Robotics Product Instruction
MOTION CONTROL
WRIST_JNT.
For further information refer to par. 5.3.2.3 Orientation Evolution on page 52.
52
Comau Robotics Product Instruction
MOTION CONTROL
– E flag (next figure) indicates that the WCP (Wrist Center Point) is currently in the
area behind the plane including the 2nd link (i.e. generally including axes 2 and 3);
– W flag (see next figure) indicates that the value of axis 5 is negative.
53
Comau Robotics Product Instruction
MOTION CONTROL
The only exception is when passing through a singularity point, in which the W flag is
reversed by the system software.
It is, however, allowed to move even if the flags do not match: set $CNFG_CARE
predefined variable to FALSE so that the flag of the final point is assumed to be the one
of the starting point.
This setting is mainly used when mixing movements that use JOINTPOS type variables
and POSITION type variables whose values have been directly set from PDL2 program
and not taught using the REC key on the Teach Pendant.
If the starting point is a JOINTPOS, the value of the configuration string is unknown and
it is therefore useful setting $CNFG_CARE variable to FALSE.
54
Comau Robotics Product Instruction
MOTION CONTROL
turn flag in P1 configuration string and therefore, in order to avoid an error in MOVE
LINEAR from P0 to P1 with a new $UFRAME, $TURN_CARE must be set to FALSE.
A joint trajectory (JOINT) or a Cartesian movement with WRIST_JNT evolution,
performed on points declared as POSITIONs, sets a path that follows the joints
evolution, without taking into consideration the shortest or longest route. To follow the
shortest route (<180 degrees), set $JNT_MTURN variable to FALSE.
Note that $JNT_MTURN variable is ineffective in joint movements on points declared as
JOINTPOS.
Refer to PDL2 Programming Language manual - par. 4.1.3.9 MOVE FROM for any
further details.
55
Comau Robotics Product Instruction
MOTION CONTROL
– (1) approach phase to the replay start position (MOVE FROM start_pos), using
a Joint movement
– (2) REPLAY phase i.e. execution of the previously registered and saved trajectory
(MOVE FROM start_pos REPLAY ‘moni_replay.log’).
The current value of $RPL_SPD_OVR predefined variable is used in the second
phase, allowing to modify the replay speed override. Any runtime changings to
$RPL_SPD_OVR predefined variable, during replay movements, has no effects.
Both in phase 1 (approach to the start position) and in phase to (trajectory replay) the
other motion override parameters are used too and they can be modified at runtime,
during motion.
If in the moni replay file the start and end velocities are not zero in the recorded
trajectory, the velocity profile will be modified at the registration beginning and end, so
that a clean start and end of the motion is guaranteed.
Any recorded movements passing close to singularities or showing anomalies, could
generate some "Move Replay not obtainable" errors or, if the anomalies are within
tolerances allowing them to be executed, can be replayed until the end but without any
guarantees of good quality for the movement.
It is the user’s care to evaluate the quality of the recorded movement and to execute a
new registration of the wished trajectory, in case the manufacturing requirements are
not satisfied.
56
Comau Robotics Product Instruction
MOTION CONTROL
All information included in the moni file header can be read from within a program using
RPL_GET_DATA and RPL_GET_POS built-ins (refer to PDL2 Programming
Language manual - chap. Built-in routines list for further details).
During the registration, the robot cartesian position, together with the attitude flags, and
any Inputs whose registration has been required, are acquired.
To perform a moni replay registration the following tools can be used:
– Path Learning (par. 23. Path Learning on page 317)
– Routines of the MoniReplay_lib (par. 23.2 PDL2 routines to handle MONI
REPLAY type files on page 318).
At a moni replay registration beginning on a real robot, the registration is paused until
the system is put to DRIVE-ON and the velocity is not zero, or one of the registered
inputs does not change status.
During the registration
– if the velocity is zero, the cartesian positions would be registered anyway, in order
to guarantee the pause times duration
– if the system switches to DRIVE-OFF the registration is interrupted
– if BASE, TOOL and UFRAME references are modified, the registration is
interrupted and invalidated.
57
Comau Robotics Product Instruction
MOTION CONTROL
58
Comau Robotics Product Instruction
MOTION CONTROL
MOVE TO $CRNT_DATA[arm].OT_JNT
or
MOVE TO $CRNT_DATA[arm].OT_POS
WITH $TOOL=$CRNT_DATA[arm].OT_TOOL,
WITH $UFRAME = $CRNT_DATA[arm].OT_UFRAME
ENDMOVE
The presence of a Remote Tool does not affect functionality. When the program is
deactivated, the $CRNT_DATA[arm].OT_COARSE variable is reset. See following
Tab. 5.1 - On Pos and On Trajectory on page 60.
This function is not available on the following machine types: robots with active
kinematic compensation (file .ROB in RD), robots with conveyor tracking, enabled
cooperative movement.
For further details related to the $OT_xxx system variables and the ON_TRAJ_SET
built-in routine, please refer to PDL2 Programming Language Manual.
59
Comau Robotics Product Instruction
MOTION CONTROL
This service is disabled in the case of: robot with active kinematic offset (file .ROB) in
UD, robot with cooperative or conveyor tracking enabled.
60
Comau Robotics Product Instruction
MOTION CONTROL
61
Comau Robotics Product Instruction
MOTION CONTROL
This implies that the shape of continuous motion trajectories may change as this
control is changed.
It is a program-specific variable with a default value of 100.
The total speed override for any motion for a specific arm is determined as follows:
62
Comau Robotics Product Instruction
MOTION CONTROL
63
Comau Robotics Product Instruction
MOTION CONTROL
For a joint interpolated motion, the time related to the joint that takes the longest to
accelerate/decelerate to its final speed is picked up to be used for all joints in order to
coordinate acceleration/deceleration values.
The maximum values of acceleration and deceleration for each movement are
calculated in order to take the maximum advantage of at least the maximum torque of
one joint. The jerk phases are determined to obtain the motion best quality.
If possibly the robot shows some vibrations, the user could set the $EMT_STRESS
predefined variable to a value less than the default (100). This would allow decreasing
the dynamic stress to which the robot is subject during motion, with a resulting reduction
of its performance in terms of cycle time, much more obvious when such a value is
farther than the default one. For further details refer to PDL2 Programming Language
manual, par. $EMT_STRESS: eMotion stress.
64
Comau Robotics Product Instruction
MOTION CONTROL
Quick STOP
The code option is CR17926224.
Upon pressing the Emergency Stop Button, this option causes the deceleration time to
be reduced with respect to the standard deceleration time, with a greater stress for
mechanical components.
This functionality is currently available for R1C Control Units ONLY, and for RACER and
REBEL robot models.
For further details about the robot models, please refer to the corresponding Technical
Specifications manual.
During the standard usage, the acceleration default setting is chosen as the best value
in order to optimize performances and vibrations during the positioning phase.
In case of high accelerations are required to reduce the cycle time, the acceleration
value can be increased by means of $EMT_INCR predefined variable.
If an acceleration value greater than the default is used, the robot could be affected by
vibrations, current saturations (or overload alarms) and overheating during contiuous
working.
Basically, trajectories are always kept (except in case of servo following errors) when
$EMT_INCR value is modified.
$EMT_INCR predefined variable is of INTEGER type, is a field of $ARM_DATA (default
value = 1) and has a range of 1.. 5.
65
Comau Robotics Product Instruction
MOTION CONTROL
Such values can be used to set the eMotion trajectory control algorithm to operate until
the 120% and have the following meaning:
– 1 - 100%
– 2 - 105%
– 3 - 110%
– 4 - 115%
– 5 - 120%
They can be also modified by means of the TP5 Teach Pendant user interface, from
within the Setup page, accessing to Motion - eMtInc environment and acting on the
displayed gauge (as shown in the following figures).
After selecting the wished value, touch Apply key to make the modification operational.
Touch OK key to exit from the environment.
The use of values greater than 1 for $EMT_INCR is just suggested for strictly necessary
situations.
66
Comau Robotics Product Instruction
MOTION CONTROL
67
Comau Robotics Product Instruction
MOTION CONTROL
lower tolerances than those used for smaller tools; in this case make reference to the
Cartesian frame thresholds (Fine, Coarse)
68
Comau Robotics Product Instruction
MOTION CONTROL
0 Bring the arm to the interrupted trajectory position, by the joint interpolation.
1 Bring the arm to the movement start position that was interrupted by the joint interpolation.
2 Bring the arm to the interrupted movement destination position using the joint interpolation.
3 Do not reset, generate an error message.
4 If the interrupted movement was Cartesian, restore the interrupted trajectory by a straight-line
movement. Otherwise use joint interpolation .
5 If the interrupted movement was Cartesian, bring the arm back to the start position of the interrupted
movement by a straight-line interpolation. Otherwise use joint interpolation .
6 If the interrupted movement was Cartesian, bring the arm to the interrupted movement destination
position by a straight-line interpolation. Otherwise use joint interpolation .
7-8 reserved
69
Comau Robotics Product Instruction
MOTION CONTROL
70
Comau Robotics Product Instruction
MOTION CONTROL
Simplest situation.
1. Programmed Fly position, between two movements 2. First movement - fly termination
3. Second movement - fly beginning 4. Second movement - fly termination
5. Stop position 6. Motion direction
7. First movement – fly beginning
71
Comau Robotics Product Instruction
MOTION CONTROL
Note that the return movement is possible during linear or circular type movements only.
The system reads the value of the distance to be recovered after each stop. Therefore,
if $RCVR_DIST is adjusted during the return movement, the value will only become
effective after the next stop.
72
Comau Robotics Product Instruction
MOTION CONTROL
If the return movement is interrupted, the $RCVR_DIST value is read again but the
distance to be recovered is always calculated starting from the point of the original
interruption (Fig. 5.8 - Example in case of $RCVR_DIST modification on page 73).
Any actual movement CONDITIONs are re-enabled at the next restart after the return
movement. However, if these have not been stated by means of the clause NODISABLE
they can only be released once.
If WHEN RESUME is enabled for an actual movement, this will be signalled at the end
of the return movement immediately before restarting the interrupted trajectory.
As for normal trajectory restore movements, automatic LOCK can be effected by means of
the variable $CRNT_DATA[num_arm].RCVR_LOCK. If the variable value is set to TRUE,
the system is automatically set to the LOCK state upon completion of the return movement.
There are four system events, one per arm, that signal entrance into the automatic LOCK
state (see “WHEN EVENT 130...133” in PDL2 Programming Language Manual). In
order to restart the movement a RESUME instruction must be effected by means of a
program PDL2 or the EXECUTE command on the Service page of the Teach Pendant
(in PROGR status).
73
Comau Robotics Product Instruction
MOTION CONTROL
CAUTION
$TOOL predefined variable cannot be modified during cartesian fly movement (neither
liner nor circular).
If this happens, the following error would occur:
37130 "$TOOL changed during fly"
74
Comau Robotics Product Instruction
MOTION CONTROL
Furthermore, in order to enable the execution of some FLY types, the Lookahead
functionality (optional feature) is available which allows to increase the Lookahead level,
acting on the following predefined variables:
– $ADVANCE
– $DFT_ADVANCE.
A detailed description of such an option is provided below for the following topics:
– Lookahead functionality (optional feature)
– Available FLY types
– Joint FLY
– Cartesian FLY
– Using $DFT_ADVANCE and $ADVANCE.
This optional functionality, which can be purchased for eMotion only, starting from
4.20.xxx system software version, in the presence of the ADVANCE clause, allows the
Interpreter to take into consideration the subsequent fly motion statements, up to 7, in
order to improve the system performances.
Improving the system performances means:
– reducing the cycle time, in case of FLY between Joint trajectories, thanks to a
motion geometry consisting of more marked connections and reduction of the
space covered by the robot
– optimizing the speed profiles, in case of FLY between Cartesian trajectories,
without modifying the connections geometry, helping to keep constant speeds (if
the available motors torque limits allow it), sometimes at the expence of the cycle
time. This kind of improvement is suitable for processes requiring to keep a
75
Comau Robotics Product Instruction
MOTION CONTROL
For any further information, refer to the PDL2 programming language manual:
– par. 4.1 Motion instructions interpretation and execution,
– par. 4.2.4.1 ADVANCE Clause,
– par. 4.2.6.2 Timing and Synchronization considerations.
Starting from 4.20.xxx system software version, two predefined variables are available
to activate the Lookahead option (if purchased), which affect the Interpreter operation.
– $ADVANCE
– $DFT_ADVANCE,
to be suitably setup, in order to specify how many subsequent FLY motion statements
the Interpreter must take into account, as described in par. 5.10.2.5 Using
$DFT_ADVANCE and $ADVANCE on page 87.
The following table, referred to the Lookahead option, shows the available FLY types
depending on the set lookahead level ($ADVANCE value).
– $ADVANCE = 1 enables the execution of FLY_NORM only, both Joint and
Cartesian
– $ADVANCE = 2 enables the execution of FLY_NORM, both Joint and Cartesian,
and also of Joint FLY_PLUS.
76
Comau Robotics Product Instruction
MOTION CONTROL
– $ADVANCE values between 3 and 6 are not recommended since they give the
same capabilities of $ADVANCE = 2, without adding any improvements;
furthermore, increasing the gap between the motion cursor and the execution
cursor, they make the synchronism between motion and non motion statements
more difficult (for any further details refer to par. 5.10.2.5 Using $DFT_ADVANCE
and $ADVANCE on page 87)
– $ADVANCE = 7 enables the execution of FLY_NORM, both Joint and Cartesian,
Joint FLY_PLUS, and also FLY_MULTI, both Joint and Cartesian.
The Cartesian FLY_PLUS does not exist and the corresponding not allowed
MOVE_TYPE and FLY_TYPE combination, generates a MOVEFLY_NOT_AVAILABLE
error.
In some software versions also the Cartesian FLY_MULTI could generate the
MOVEFLY_NOT_AVAILABLE error. Call Comau for any version upgrading or enabling.
In order to further configurate the Joint FLY, $FLY_PER predefined variable can be
used.
Detailed descriptions follow in the dedicated sections: par. 5.10.2.3 Joint FLY on
page 77 and par. 5.10.2.4 Cartesian FLY on page 81.
77
Comau Robotics Product Instruction
MOTION CONTROL
Starting from 4.20.xxx system software version, an option is available which allows the
Interpreter capability of “looking ahead” to be improved: it can be configured, as wished
by the user, from the subsequent motion statement until the “n” subsequent ones, where
“n” is the value the $ADVANCE predefined variable is set to.
Such an OPTIONAL capability is referred to as Lookahead functionality and is
described in par. 5.10.2.1 Lookahead functionality (optional feature) on page 75.
78
Comau Robotics Product Instruction
MOTION CONTROL
The $FLY_TYPE predefined variable specifies the wished connection type, in Joint FLY.
The available values are:
– FLY_NORM
– FLY_PLUS - available with Lookahead option only, starting from 4.20.xxx system
software version
– FLY_MULTI- available with Lookahead option only, starting from 4.20.xxx system
software version.
In the above cases, the connection shape is also affected by the value of $FLY_PER
predefined variable.
$FLY_PER specifies which is the overlap percentage to be used for the fly movements.
FLY_NORM
When $FLY_TYPE is set to FLY_NORM, the MOVEFLY statement causes the
deceleration of the current movement to overlap on the acceleration of the subsequent
one.
$FLY_PER predefined variable (the only variable affecting FLY_NORM type) can be
used to reduce the fly time, moving the trajectory closer to the taught intermediate
position.
In such a case, the fly starts as soon as the deceleration begins, plus a time of 100%
minus the percentage specified by $FLY_PER.
For example, if $FLY_PER is 100, the fly segment starts at the beginning of the current
movement deceleration. If $FLY_PER is 75, the fly segment only starts as soon as the
25% of the deceleration has been performed (the remaining 75% is joined to the
subsequent movement).
Basically, the motion velocity during fly is not constant.
FLY_NORM is the default value for $FLY_TYPE.
FLY_PLUS
This value of $FLY_TYPE, since 4.20.xxx system software version, is only available
with Lookahead option, for any situations with $ADVANCE >= 2.
79
Comau Robotics Product Instruction
MOTION CONTROL
It provides higher performances than FLY_NORM value, since it allows the Interpolator
to execute in advance the calculations for more than one motion statements, so being
able to plan a more evident joint connection.
FLY_MULTI
This value of $FLY_TYPE, since 4.20.xxx system software version, is only available
with Lookahead option, for any situations with $ADVANCE = 7.
It allows modifying the end point of each individual motion statement belonging to the fly
chain, according to the subsequent points taken into consideration by the Interpreter
through the Lookahead option.
This fly type allows “stretching” the trajectory in the intermediate points of the fly, as
shown in the example in the figure above.
80
Comau Robotics Product Instruction
MOTION CONTROL
The value of $FLY_PER predefined value represents the variance percentage from the
end point of each individual motion statement belonging to the fly chain.
The maximum variance is calculated taking into account all the fly chain looked-ahead
points. $FLY_PER acts point by point in independent way, with the following meanings
(the listed colours refer to the figure below):
– 0 (magenta) - keeps the original point
– 100 (yellow) - indicates the maximum allowed distancing from the original point
– values between 1 and 99 (blue) - allows modifying the distancing between the
original and the maximum distancing of the chain points, taken once each.
81
Comau Robotics Product Instruction
MOTION CONTROL
Starting from 4.20.xxx system software version, an option is available which allows the
Interpreter capability of “looking ahead” to be improved: it can be configured, as wished
by the user, from the subsequent motion statement until the “n” subsequent ones, where
“n” is the value the $ADVANCE predefined variable is set to.
Such an OPTIONAL capability is referred to as Lookahead functionality and is
described in par. 5.10.2.1 Lookahead functionality (optional feature) on page 75.
The FLY_MULTI value of $FLY_TYPE is only available with the Lookahead functionality
(optional feature).
The connection between two cartesian movements is made by dealing with two issues:
– creating a geometric connection
– defining a speed profile allowing to pass from a movement and the subsequent one
without stopping the robot, i.e. without reaching a null velocity.
The two Cartesian FLY available with eMotion, deal with the geometric connection
creation by using the same philosophy and then give rise to congruent trajectories from
the cartesian point of view.
$FLY_DIST
This predefined variable allows specifying the distance (mm) between the taught
intermediate position and a position on the bisector of the angle included between the
two trajectories ($FLY_DIST is represented by d in Fig. 5.10).
If $FLY_DIST > 0, the robot exactly moves to the distance selected by B position, at the
expence of keeping the setup speed (distance has priority over speed).
If $FLY_DIST value is too high with respect to the trajectory, the fly connection is
executed at the maximum allowed distance.
If $FLY_DIST = -1, the FLY connection is executed at the maximum allowed distance.
The maximum allowed distance is restricted by the length of the two motion segments
to be connected, but also by some features of the used velocity profile.
Therefore the maximum allowed distance for FLY_NORM and FLY_MULTI (with
Lookahead option only) types, could be different.
82
Comau Robotics Product Instruction
MOTION CONTROL
The congruence of the Cartesian trajectories is not guaranteed anyway and must be
checked, since it is sometimes constrained and limited in different ways by the used
velocity profile.
The table of par. 5.10.2.4.3 Setting the Cartesian FLY predefined variables on page 86
summarizes what described above.
NOTE
If the setup velocities are too high compared with the robot movement, the system
automatically calculates the maximum allowed one for the connection segment and the
best position to start the speed variation. Please refer to par. 5.10.2.4.2 Events related
to FLY movements with trajectory control (constant speed or specified FLY_DIST) on
page 85 for further details.
$FLY_TYPE
This predefined variable can assume the following values:
– FLY_NORM - first of all the single MOVE speed profiles are planned as
point-to-point movements and then the speed profile of the connection is
calculated creating a gradual transition between the maximum speeds of the two
movements.
– FLY_MULTI (only available with active Lookahead option) - it is useful in case of
programs with defined speed.
Thanks to the Lookahead of the subsequent movements, it is able to
• calculate the connection geometry in advance and not constrained by the
point-to-point MOVE speed profile
• evaluate the maximum allowed speed at the end of each segment
• plan the individual segments speed profiles (MOVE –FLY –MOVE – FLY -
etc) in sequence and in order to optimize keeping a constant speed.
$LIN_SPD
In case of $SPD_EMT:=SPD_LIN, this predefined variable represents the speed (m/s)
83
Comau Robotics Product Instruction
MOTION CONTROL
$SPD_EMT
This predefined variable can assume the following values: SPD_EMAX and SPD_LIN.
The table of par. 5.10.2.4.3 Setting the Cartesian FLY predefined variables on page 86
summarizes what described above.
NOTE
If the setup velocities are too high compared with the robot movement, the system
automatically calculates the maximum allowed one for the connection segment and the
best position to start the speed variation. Please refer to par. 5.10.2.4.2 Events related
to FLY movements with trajectory control (constant speed or specified FLY_DIST) on
page 85 for further details.
In the following figures, just in the case of Lookahead option, FLY_NORM and
FLY_MULTI are compared in the same program, in order to point out differences.
The program executes some MOVE statements at a controlled speed of 0.4 m/sec.
In the above diagram, the speed profile of the MOVE statements executed
point-to-point, is displayed in yellow. Note that some of them, too short, don’t have
space enough to reach the speed set by the user.
The speed profile of the MOVE statements executed in FLY NORM, is displayed in blue.
Note that the resulting speed profile is the union of the maximum speeds of the individual
motion segments, with unavoidable speed wholes in correspondence with the MOVE
statements whose maximum speed does not reach the one set by the user.
In the following diagram, the speed profile of the same MOVE statements executed in
FLY_MULTI, is displayed in purple. Such a fly type is able to successfully keep a
84
Comau Robotics Product Instruction
MOTION CONTROL
constant speed.
The speed wholes, during movements at constant process speed, are not always
caused by too short movements in the FLY sequence.
Sometimes they are caused by reached mechanical limits, motor torque limits, joints
maximum speed limits, strokend or kinematic singularity proximity In such a situations,
it is suggested to modify the program, choosing adifferent position for the work part to
be manipulated by the robot in an easier way.
5.10.2.4.2 Events related to FLY movements with trajectory control (constant speed
or specified FLY_DIST)
In trajectory control FLY, for eMotion control systems, the exact moments in which AT
START and AT END conditions trigger are not depending on the fly segment length.
Moreover, they are different from one MOVE to another, in a non-predictable way (see
next figure, on the left).
On the other side, for joints movements FLY, the moments in which the two described
above conditions trigger are not different for eMotion control, compared to the standard
control. They still are strictly connected to the beginning and end of the FLY segment
(see previous figure, on the right).
85
Comau Robotics Product Instruction
MOTION CONTROL
A condition is available allowing to exactly select any points of the fly segment. The user
can specify any percentage integer value between 0% and 100%:
WHEN PERCENT int_expr AFTER STARTFLY
where, for example (see next figure)
int_expr = 1 --> FLY segment beginning
int_expr = 100 --> FLY segment end.
or
int_expr = 50 --> halfway of the FLY segment
As already stated, in trajectory control FLY, for eMotion control systems, upon a speed
change between the two MOVE statements, the speed variation takes place at the
beginning of the connecting segment between the two movements, thus NOT at the
point corresponding to AT START event, but at the one corresponding to
PERCENT 1 AFTER STARTFLY
event.
Two more conditions are available allowing to select a FLY position measured in relation
to the closest point to the programmed one. The identified point is not related to the
target position, but rather to the actual one.
Such conditions are:
– WHEN TIME vi_time BEFORE HALFFLY
allows generating an event at the specified vi_time time before reaching the closest
point to the programmed one belonging to the FLY segment.
– WHEN DISTANCE vi_dist BEFORE HALFFLY
allows generating an event at the specified vi_dist distance before reaching the
closest point to the programmed one belonging to the FLY segment.
Speed $FLY_DIST
Constraints $SPD_EMT $LIN_SPD
option (MOVEFLY only)
Maximum None -1 --
SPD_EMAX
speed Distance >0 (mm) --
Constant Constant speed only (*) -1 linear speed
SPD_LIN
speed Distance and then constant speed (**) >0 (mm) (m/s)
86
Comau Robotics Product Instruction
MOTION CONTROL
$DFT_ADVANCE is defined at system level and indicates the total amount of fly motion
statements that will be taken into account by the Interpreter. The allowed values are:
– 1 - default value
– 2
– 7
$ADVANCE is defined at program level. At the program start, it is initialized to
$DFT_ADVANCE current value but it could even be modified during the program
execution.
The following situations may occur:
– $ADVANCE = 1
– $ADVANCE = 2
– $ADVANCE = 7.
87
Comau Robotics Product Instruction
MOTION CONTROL
$ADVANCE = 1
The only available FLY_TYPE with such a setting, is FLY_NORM. The Interpreter
behaviour is the standard one: the presence of the ADVANCE clause, causes the
Interpreter to look ahead 1 MOVE statement.
In IDE Page, the user is allowed to view the situation (figure above) by means of the
EXECUTION CURSOR which points to the last MOVE statement taken into account by
the Interpreter.
The following MOVEs are then contained in the Interpolator execution memory,
depending on the situations:
– 1 MOVE (i.e. the current MOVE only; no ADVANCE clause, so no FLY)
– 2 MOVE (FLY)
– 3 MOVE (FLY during the connection segment).
Furthermore, View motions of program command (figure above), available in the IDE
Page, allows the user to view full information about all the motion instructions taken into
consideration by the Interpreter for the FLY.
88
Comau Robotics Product Instruction
MOTION CONTROL
$ADVANCE = 2
The available FLY_TYPEs with such a setting, are FLY_NORM and FLY_PLUS (Joint
FLY only).
The presence of the ADVANCE clause, causes the Interpreter to look ahead 2 MOVE
statements.
CAUTION
The NON motion statements are executed in advance, compared to the situation of
$ADVANCE = 1.
It is then strongly recommended to carefully handle the synchronization situations
between motion and non-motion instructions.
In IDE Page, the user is allowed to view the situation (figure above) by means of the
EXECUTION CURSOR which points to the last MOVE statement taken into account by
the Interpreter.
The following MOVEs are then contained in the Interpolator execution memory,
depending on the situations:
– 1 MOVE (i.e. the current MOVE only; no ADVANCE clause, so no FLY)
– 3 MOVE (FLY)
– 4 MOVE (FLY during the connection segment).
Furthermore, as already described for $ADVANCE = 1, View motions of program
command (figure above) allows the user to view full information about all the motion
instructions taken into consideration by the Interpreter for the FLY.
89
Comau Robotics Product Instruction
MOTION CONTROL
$ADVANCE = 7
All the FLY TYPEs are available with this setting: FLY_NORM, FLY_PLUS (Joint FLY
only) and FLY_MULTI.
The presence of the ADVANCE clause, causes the Interpreter to look ahead 7 MOVE
statements.
CAUTION
The NON motion statements are executed in advance, compared to the situation of
$ADVANCE = 1.
It is then strongly recommended to carefully handle the synchronization situations
between motion and non-motion instructions.
In IDE Page, the user is allowed to view the situation (figure above) by means of the
EXECUTION CURSOR which points to the last MOVE statement taken into account by
the Interpreter.
The following MOVEs are then contained in the Interpolator execution memory,
depending on the situations:
– 1 MOVE (i.e. the current MOVE only; no ADVANCE clause, so no FLY)
– 8 MOVE (FLY)
– 9 MOVE (FLY during the connection segment).
Furthermore, as already described for $ADVANCE = 1 and $ADVANCE = 2, View
motions of program command (figure above) allows the user to view full information
about all the motion instructions taken into consideration by the Interpreter for the FLY.
90
Comau Robotics Product Instruction
MOTION CONTROL
For any further detailed information, refer to par.4.1 Motion instructions interpretation
and execution and par 4.2.6.2 Timing and Synchronization considerations, in PDL2
Programming Language manual.
As far as the multiarm systems, it could be needed to increase the value of $NUM_MB
predefined variable which represents the maximum amount of motion instructions taken
into account at the same time.
Such an increase, if too high, could affect the system capability of completely executing
the power failure recovery procedure; it is then suggested to increase it just to be able
to properly execute the program, without any exaggeration.
Example
PROGRAM p_Jstar PROG_ARM = 1
VAR
vp_cal_user, p11 : POSITION
vj_cal_user : JOINTPOS
vr_scale : REAL
ray : REAL
ray2 : REAL
si_i : INTEGER
p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p12 : POSITION
BEGIN
-- adjustment to more robots
$UFRAME := POS(0)
$UFRAME.X := $ARM_DATA[$PROG_ARM].AX_LEN[3] * 1.25
$UFRAME.Z := $ARM_DATA[$PROG_ARM].AX_LEN[1] + $ARM_DATA[$PROG_ARM].AX_LEN[2] /
($ARM_DATA[$PROG_ARM].AX_LEN[2] / 3)
$UFRAME.R := $ARM_DATA[1].CAL_USER[1] * -1
$TOOL := POS(0, 0, 200, 0, 0, 0)
$BASE := POS(0)
ray := 200
ray2 := ray / 4
vj_cal_user := $ARM_DATA[1].CAL_USER
vj_cal_user[5] := 90
JNTP_TO_POS(vj_cal_user, vp_cal_user)
91
Comau Robotics Product Instruction
MOTION CONTROL
CONDITION[1] :
WHEN AT END DO
HOLD
ENDCONDITION
CONDITION[5] :
WHEN AT END DO
ru_print(5)
ENDCONDITION
CONDITION[12] :
WHEN AT END DO
ru_print(12)
ENDCONDITION
$FLY_DIST := -1
$TIMER[1] := 0
MOVE JOINT TO vp_cal_user -- cal_user is the start position
FOR si_i := 1 TO 100 DO
MOVEFLY JOINT TO p1 ADVANCE WITH CONDITION[1]
WRITE LUN_CRT ('Print after MOVEFLY TO P1 ', $TIMER[1], NL)
MOVEFLY JOINT TO p2 ADVANCE
MOVEFLY JOINT TO p3 ADVANCE
MOVEFLY JOINT TO p4 ADVANCE
MOVEFLY JOINT TO p5 ADVANCE WITH CONDITION[5]
WRITE LUN_CRT ('Print after MOVEFLY TO P5 ', $TIMER[1], NL)
MOVEFLY JOINT TO p6 ADVANCE
MOVEFLY JOINT TO p7 ADVANCE
MOVEFLY JOINT TO p8 ADVANCE
MOVEFLY JOINT TO p9 ADVANCE
MOVEFLY JOINT TO p10 ADVANCE
MOVEFLY JOINT TO p11 ADVANCE
MOVEFLY JOINT TO p12 ADVANCE WITH CONDITION[12]
WRITE LUN_CRT ('Print after MOVEFLY TO P12 ', $TIMER[1], NL)
ENDFOR
MOVE JOINT TO p1
MOVE JOINT TO vp_cal_user
IF $CYCLE = 5 THEN
DEACTIVATE
ENDIF
END p_Jstar
92
Comau Robotics Product Instruction
MOTION CONTROL
Note that:
– the execution cursor is 7 motion statements ahead (or $ADVANCE current value)
compared to the motion cursor (the WRITE statement is not part of the 7
statements ahead, because the total amount of statements specified by
$ADVANCE only includes motion statements)
– all the non-motion statements included between the motion cursor and the
execution cursor, have already been executed (the WRITE statement in line 86 too,
even if the motion statement in line 85 has not been processed yet)
– all the motion statements included between the two cursors, are loaded into
memory and displayed in the page by means of IDE -> Details -> View motions
of program command (figure above, on the right)
– routine ru_print(5), inserted in CONDITION[5], is executed when Motion Event AT
END triggers for MOVEFLY TO P5 statement; TIMER[1] value is displayed in order
to point out the time difference between the two yellow highlighted lines
– the HOLD statement too, inserted in CONDITION[1], is executed when Motion
Event AT END triggers for MOVEFLY TO P1; if it had been inserted between the
lines, like the WRITE statement, it would have been processed before, not
synchronized with the execution of the previous movement, but rather at the
Interpreter execution cursor passage.
93
Comau Robotics Product Instruction
MOTION CONTROL
1 - Flange Frame 2 - User Frame 3 - TCP Frame 4 - Fixed Tool 5 - Base Frame 6 - World Frame
94
Comau Robotics Product Instruction
MOTION CONTROL
95
Comau Robotics Product Instruction
MOTION CONTROL
Practically speaking, it will be possible to move the TCP along a linear or circular path
while the slide/column is moving or to move the slide/column keeping the TCP still in
relation to the floor: in both cases, the robot axes will offset the movement of the auxiliary
axis.
The system sees the set of axes of the two mechanisms as a single manipulator. All the
types available, i.e. JOINTPOS, POSITION, XTNDPOS, can be used to assign the
destination positions of the movements. In the case of XTNDPOS, it is also possible to
specify the cartesian position of the TCP as well as the position of the auxiliary axis at
the same time.
5.12.1.1 Jogging
Moving the slide/integrated column manually (jog), the robot acts differently according
to the handing mode set: in joints mode, pressing the key corresponding to the
slide/column, the robot axes do not move; only the auxiliary axis moves. On the other
hand, in Cartesian mode of manual motion (BASE, TOOL, UFRAME) key 7 moves the
slide/column, keeping the TCP stationary, wherever the robot axes compensate the
movement of the auxiliary axis.
5.12.1.3 Restrictions
Integrated movement of the slide/column and robot is possible in the following
conditions:
96
Comau Robotics Product Instruction
MOTION CONTROL
– there are no limitations as regards the robot model; however this can be positioned
in relation to the flange of the slide/column in only eight positions, i.e.: the
Zbase_robot axis always parallel to Zbase_slide/column (in both directions) and the
Xbase_robot axis aligned with the Xbase_slide/column or Ybase_slide/column (four possible
directions);
– the axis corresponding to the slide/column must be the first available auxiliary axis;
– it is possible to integrate a single slide or column for each robot;
– it is not possible to enable or disable integration of the slide/column in real time (the
controller must be restarted).
97
Comau Robotics Product Instruction
MOTION CONTROL
98
Comau Robotics Product Instruction
6.1 Overview
This chapter contains the description of the C5GPlus Control Unit motion environment,
WITHOUT eMotion Trajectory Control.
Neither the manual motion (Teach Pendant jog keys) which is described in Chap.4. -
Robot motion in Programming mode on page 36, nor the options that are dealt with
further on in other chapters of this manual, are included in the current chapter.
Information is supplied about the following topics:
– Frames of Reference and coordinates transformation
– Trajectory and Trajectory Recovery
– Position Checking
– Speed Control
– Acceleration and Deceleration
– Motion termination (positioning accuracy)
– Process Resume
– Continuous Motion
– Remote Tool System;
– Integrated Movement.
Current chapter contains many references to predefined variables and instructions of
PDL2 language. For further information, refer to PDL2 Programming Language
Manual.
99
Comau Robotics Product Instruction
World Frame The factory plant frame of reference with respect to which all
machines are positioned
Base Frame The frame located on the robot base
User Frame The frame located on the workpiece
Flange Frame The frame located on the robot flange
TCP Frame The frame located on the tool top
The $TOOL variable describes the position of the TCP frame with respect to the flange
frame; the $BASE coordinate transformation describes the position of the base frame
with respect to the world frame; the $UFRAME transformation describes the position of
the workpiece with respect to the world. The POS transformation represents the taught
point P that will be reached by the TCP during the execution of the program. Note that
all the taught POSITIONs are defined with respect to the user frame of reference
(defined by $UFRAME).
To better understand, suppose that the corner of the room is the world frame, and a
robot is located beside a table as shown in the following picture Fig. 6.1 - System
Frames of Reference and Coordinates Transformation on page 100.
Suppose further that the robot has a pen mounted on the flange and it has to write
COMAU on the table. $BASE defines where the robot is located, the $TOOL
transformation describes the pen, and the $UFRAME transformation defines the
position of the table with respect to the room.
These system frames will simplify some operations. For example:
100
Comau Robotics Product Instruction
– if the robot were picked up and placed at the opposite side of the table, it would be
enough to redefine $BASE and restart writing without modifying any point;
– if the pen were replaced with a bigger one, it would be enough to redefine $TOOL
and restart writing without modifying any point;
– if the table were moved inside the room, it would be enough to redefine $UFRAME.
Note that in some applications $BASE and $UFRAME can be left equal to zero: this
means that the world frame and the workpiece frame are located at the base of the robot
and all taught POSITIONs are referred to the base of the robot. On the contrary, the
$TOOL transformation must always be correctly defined to achieve the desired path of
the TCP (Tool Center Point) along the trajectory.
101
Comau Robotics Product Instruction
a. Begin with no tools on the robot. Assign zero values to all six tool parameters of
$TOOL.
b. Identify x, y, and z axes directions of the tool. (Note: For SMART robot, base axes
are parallel to tool axes when the robot is pointing upward and small axes are at
mid-travel).
c. Move the robot to a known position, e.g. the calibration position (Fig. 6.2 shows the
calibration position for SMART robots). Note that for some robot models, the
calibration position could be different than the shown one.
d. Check the direction of the three tool axes by jogging the robot using the TOOL jog
coordinate type.
e. Mount the tool and measure the tool centre offsets (positive or negative) with
respect to the flange centre along all three axes. Measurements should be in
millimetres.
102
Comau Robotics Product Instruction
offset values have been assigned. Depending on the application, the rotation values can
be omitted. In this case, tool orientation will be along an axis parallel to the flange axis
that starts at the TCP. The rotation values are positive for counterclockwise rotation with
the rotation axis pointed toward the observer. These values can be calculated using one
of the two methods described below.
Example A
Tool z axis (u) coincides with axis z of the flange.
In this case no rotation assignment is required:
(e1, e2, e3) = (0, 0, 0)
Example B
Tool z axis (u) coincides with axis y of the flange.
103
Comau Robotics Product Instruction
Example C
Tool z axis (u) is at 90 degrees with respect to the flange z
axis in the direction -y.
Rotation angles are (-90, 90, 180).
Example D
Tool z axis (u) is at 90 degrees with respect to the flange z
axis in the direction x.
Rotation angles are (0,90,180).
Example E
Tool z axis (u) is at 90 degrees with respect to the flange
z axis in the direction -x.
Rotation angles are (180, 90, 180).
104
Comau Robotics Product Instruction
The TCP is calculated at the tool closing point. Any safety flange logically belongs to the
tool and therefore increases the z offset.
PROGRAM setframe
VAR corner, x, xy : POSITION
BEGIN
$UFRAME := POS(0,0,0,0,0,0,’’)
$TOOL := ... -- properly defined
-- Jog the TCP onto 3 points on the workpiece and teach
-- corner POSITION, x and xy POSITIONs pressing the MOD key
-- on the TP.
-- Then execute the following statement.
$UFRAME := POS_FRAME(corner, x, xy)
END setframe
As an alternative, a tool is available on the Teach Pendant, Setup page, Motion - Frames
environment, allowing the UFRAME guided calculation; please refer to par. 12.4
UFRAME automatic calculation on page 609 in C5GPlus Control Unit Use manual for
detailed information.
105
Comau Robotics Product Instruction
6.3 Trajectory
It represents an Arm motion from an initial position to a final position.
The motion trajectory between two taught positions is generated by interpolating various
sets of variables from their initial values at the start position to their final values at the
destination position. The predefined variable $MOVE_TYPE indicates the type of
interpolation to be used. It is a program-specific variable (one for each active program).
The predefined constants JOINT, LINEAR, or CIRCULAR can be assigned to
$MOVE_TYPE. The trajectory can be also expressed in the move statements by
assigning the reserved words JOINT, LINEAR or CIRCULAR to the MOVE statement.
The trajectories can be classified as follows:
– joint trajectory: JOINT
– linear trajectory: LINEAR
– circular trajectory: CIRCULAR.
106
Comau Robotics Product Instruction
107
Comau Robotics Product Instruction
– S flag (see next figure) indicates that the WCP (Wrist Center Point) is currently in
the area behind the plane passing through axis 1 and parallel to axis 2. The behind
area is the opposite space to the one including axis 2;
– E flag (next figure) indicates that the WCP (Wrist Center Point) is currently in the
area behind the plane including the 2nd link (i.e. generally including axes 2 and 3);
– W flag (see next figure) indicates that the value of axis 5 is negative.
108
Comau Robotics Product Instruction
The only exception is when passing through a singularity point, in which the W flag is
reversed by the system software.
It is, however, allowed to move even if the flags do not match: set $CNFG_CARE
predefined variable to FALSE so that the flag of the final point is assumed to be the one
of the starting point.
This setting is mainly used when mixing movements that use JOINTPOS type variables
and POSITION type variables whose values have been directly set from PDL2 program
and not taught using the REC key on the Teach Pendant.
If the starting point is a JOINTPOS, the value of the configuration string is unknown and
it is therefore useful setting $CNFG_CARE variable to FALSE.
109
Comau Robotics Product Instruction
turn flag in P1 configuration string and therefore, in order to avoid an error in MOVE
LINEAR from P0 to P1 with a new $UFRAME, $TURN_CARE must be set to FALSE.
A joint trajectory (JOINT) or a Cartesian movement with WRIST_JNT evolution,
performed on points declared as POSITIONs, sets a path that follows the joints
evolution, without taking into consideration the shortest or longest route. To follow the
shortest route (<180 degrees), set $JNT_MTURN variable to FALSE.
Note that $JNT_MTURN variable is ineffective in joint movements on points declared as
JOINTPOS.
110
Comau Robotics Product Instruction
the axes that have been enabled, including the auxiliary axes, contribute to the
modification of the Cartesian position and result in the arm moving away from the
trajectory ($CRNT_DATA[arm].OT_COARSE = FALSE). In case of jog movements in
Cartesian mode (Base, Tool, etc.) the movement of the auxiliary axis is compensated
by the robot’s axes in order to maintain the Cartesian point; however, as the entire
configuration of the arm axes is modified, the arm also moves away from the trajectory
in this case ($CRNT_DATA[arm].OT_COARSE = FALSE), extending the concept of
position on the trajectory to the extended position.
If the arm includes auxiliary axes that are not integrated, in case of jog movements in
joint mode, the axis does not modify the Cartesian position, but the overall configuration
of the arm is modified and the arm moves away from the trajectory
($CRNT_DATA[arm].OT_COARSE = FALSE). In case of jog movements in Cartesian
mode, the auxiliary axis cannot be moved and the arm behaves in the same way as the
6 axes robot.
Anyway, it is always possible to return to the trajectory
($CRNT_DATA[arm].OT_COARSE = TRUE) by executing a movement on the
$CRNT_DATA[arm].OT_JNT variables (or $CRNT_DATA[arm].OT_POS variables, for
robots with no auxiliary axes).
Example:
MOVE TO $CRNT_DATA[arm].OT_JNT
or
MOVE TO $CRNT_DATA[arm].OT_POS
WITH $TOOL=$CRNT_DATA[arm].OT_TOOL,
WITH $UFRAME = $CRNT_DATA[arm].OT_UFRAME
ENDMOVE
The presence of a Remote Tool does not affect functionality. When the program is
deactivated, the $CRNT_DATA[arm].OT_COARSE variable is reset. See following
Tab. 6.1 - On Pos and On Trajectory on page 112.
This function is not available on the following machine types: robots with active
kinematic compensation (file .ROB in RD), robots with conveyor tracking, enabled
cooperative movement.
For further details related to the $OT_xxx system variables and the ON_TRAJ_SET
built-in routine, please refer to PDL2 Programming Language Manual.
111
Comau Robotics Product Instruction
– in the $OP_JNT field if the auxiliary axes, or some of these (see predefined
variable $ON_POS_TBL[index].OP_JNT_MASK), must also be controlled;
– in the $OP_POS field if only the Cartesian position is involved.
This information is primarily used to communicate to external devices, such as a line
PLC, that the robot is in the aforesaid positions.
To make the On Pos function operational, each time the Control Unit is restarted, the
application program must run the following sequence of operations in the order set out
below:
– Initialize the predefined fields with the OP_ prefix, in the $ON_POS_TBL table.Run
the built-in procedure ON_JNT_SET or ON_POS_SET to define which port and
which bit are to be assigned upon reaching the main positions.
– Execute ON_POS(ON) to enable the function, which will remain enabled until the
subsequent ON_POS(OFF) is executed on the same item of the $ON_POS_TBL
or at the subsequent system restart.
For further details related to the $ON_POS_TBL and $OP_xxx system variables, the
ON_JNT_SET, ON_POS_SET and ON_POS built-in routines, the CONDITION events,
please refer to PDL2 Programming Language Manual.
This service is disabled in the case of: robot with active kinematic offset (file .ROB) in
UD, robot with cooperative or conveyor tracking enabled.
112
Comau Robotics Product Instruction
113
Comau Robotics Product Instruction
114
Comau Robotics Product Instruction
– the time for the spin about the approach vector to go from its initial orientation to its
final orientation;
– the time for the TCP to translate from its initial location to its final location at
$LIN_SPD_LIM.
The motion component that takes the longest to get from its initial to final location will
move at the programmed speed limit, reduced by the total override. All of the other
components will move at lower than programmed limits, so that all components start and
stop at the same time.
If one of the rotations requires the most time, $ROT_SPD_LIM is used. If the translation
requires the most time, $LIN_SPD_LIM is used. The component moving at the
programmed speed limit is called the “maximum stressed” component, and it moves at
the “speed of maximum stress” or SMS.
Using this terminology, the Cartesian speed of a specific arm is determined as follows:
115
Comau Robotics Product Instruction
If $SPD_OPT value is not meaningful for the current trajectory type, the default
SPD_CONST value is assumed. For example, specifying $SPD_OPT=SPD_SECOND has
no meaning if $ORNT_TYPE=RS_WORLD, so SPD_CONST would be used.
Changes to $SPD_OPT, $LIN_SPD, and $ROT_SPD only take effect at the beginning
of the next movement. Changes do not affect the arm current motion.
116
Comau Robotics Product Instruction
$LIN_SPD_RT_OVR
It is referred to $LIN_SPD predefined variable set to the motion, and indicates, as a
percentage, the new speed to be used since the current motion.
The default value is 100: this means that the movement is performed at a maximum
speed, i.e. the $LIN_SPD. The maximum value $LIN_SPD_RT_OVR to, is related to
$LIN_SPD value, and is calculated as follows:
which means that it allows to reach the cartesian speed limit for the robot.
The required modification is active since the current motion, and it is applied so as not
to cause sudden changing motion, even when the Run-Time Speed Override variations
are considerably high.
For run-time linear speed variations during synchronized motions, please see Chap.7. -
Synchronous Motion (optional feature) on page 139 in current manual.
joint speed[axis] =
$MTR_SPD_LIM[axis] * gear ratio[axis] * $JNT_OVR[axis] *
total speed override[arm]
where “gear ratio” indicates the transmission ratio.
117
Comau Robotics Product Instruction
The joint that takes the longest to get from its initial to final position will move at the
above computed speed. All of the other joints will move at lower speeds, so that all joints
start and stop at the same time.
1. speed
2. acceleration
Currently, C5GPlus forces the acceleration profile to be symmetric and the deceleration
profile to be symmetric.
This means that the constant jerk phases during acceleration (T1 and T2) are the same
length and the constant jerk phases during deceleration (T3 and T4) are the same
length.
For joint interpolated motions, the total time of acceleration and deceleration is
established by two predefined variables:
– $MTR_ACC_TIME determines the total acceleration time in milliseconds;
118
Comau Robotics Product Instruction
119
Comau Robotics Product Instruction
$PROG_DEC_OVR
$PROG_ACC_OVR and $PROG_DEC_OVR are program specific INTEGER values
with default values of 100. $ARM_ACC_OVR and $ARM_DEC_OVR are INTEGER
fields with one field per arm in multi-arm systems.
Changes in these four overrides take effect only on succeeding motions, not during any
current motion.
However, as with speed, changes in $GEN_OVR and $ARM_OVR take affect in the
current motion.
When HOLD, CANCEL, LOCK, or DEACTIVATE are used, maximum deceleration is
used regardless of the above override settings.
In addition, a predefined variable, $HLD_DEC_PER, can be used to increase the
deceleration rate beyond normal maximum settings. At high speed, normal maximum
deceleration for some arms may require several hundred millimeters to stop. The range
of $HLD_DEC_PER is from 100 to 400, permitting the normal maximum to be multiplied
by a factor up to 4. $HLD_DEC_PER is a read-only INTEGER array field of the
system-wide array of structures, $ARM_DATA[]. Thus, there is one element per axis for
each arm.
Quick E-STOP
The code option is CR17926224.
Upon pressing the Emergency Stop Button, this option causes the deceleration time to
be reduced with respect to the standard deceleration time, with a greater stress for
mechanical components.
120
Comau Robotics Product Instruction
121
Comau Robotics Product Instruction
122
Comau Robotics Product Instruction
opening the gates: in this case braking will take place with stop on the trajectory. The
robot can be stopped by pressing the safety mushroom-head button. In this case braking
will take place with stop on the trajectory, but with no in-threshold check.
0 Bring the arm to the interrupted trajectory position, by the joint interpolation.
1 Bring the arm to the movement start position that was interrupted by the joint interpolation.
2 Bring the arm to the interrupted movement destination position using the joint interpolation.
3 Do not reset, generate an error message.
4 If the interrupted movement was Cartesian, restore the interrupted trajectory by a straight-line
movement. Otherwise use joint interpolation .
5 If the interrupted movement was Cartesian, bring the arm back to the start position of the interrupted
movement by a straight-line interpolation. Otherwise use joint interpolation .
6 If the interrupted movement was Cartesian, bring the arm to the interrupted movement destination
position by a straight-line interpolation. Otherwise use joint interpolation .
7-8 reserved
123
Comau Robotics Product Instruction
distance between the stop position and the nominal position is limited, a joints
interpolation move is used to bring the arm to the point where the motion was interrupted
(short range); otherwise the $RCVR_TYPE variable is used (long range recovery) to
execute the recovery move.
124
Comau Robotics Product Instruction
Simplest situation.
1. Programmed Fly position, between two movements 2. First movement - fly termination
3. Second movement - fly beginning 4. Second movement - fly termination
5. Stop position 6. Motion direction
7. First movement – fly beginning
125
Comau Robotics Product Instruction
Note that the return movement is possible during linear or circular type movements only.
The system reads the value of the distance to be recovered after each stop. Therefore,
if $RCVR_DIST is adjusted during the return movement, the value will only become
effective after the next stop.
If the return movement is interrupted, the $RCVR_DIST value is read again but the
distance to be recovered is always calculated starting from the point of the original
interruption (Fig. 6.8 - Example in case of $RCVR_DIST modification on page 126).
Any actual movement CONDITIONs are re-enabled at the next restart after the return
movement. However, if these have not been stated by means of the clause NODISABLE
they can only be released once.
If WHEN RESUME is enabled for an actual movement, this will be signalled at the end
of the return movement immediately before restarting the interrupted trajectory.
As for normal trajectory restore movements, automatic LOCK can be effected by means of
the variable $CRNT_DATA[num_arm].RCVR_LOCK. If the variable value is set to TRUE,
the system is automatically set to the LOCK state upon completion of the return movement.
There are four system events, one per arm, that signal entrance into the automatic LOCK
126
Comau Robotics Product Instruction
1. Motion start towards c 2. Motion end towards b Segment 1-2 : FLY connection segment
127
Comau Robotics Product Instruction
CAUTION
$TOOL predefined variable cannot be modified during cartesian fly movement (neither
liner nor circular).
If this happens, the following error would occur:
37130 "$TOOL changed during fly"
6.10.2.1 FLY_NORM
With $FLY_TYPE set to FLY_NORM, MOVEFLY causes the deceleration of the issued
motion to be overlapped with the acceleration of the next motion.
The predefined variable, $FLY_PER (the only one associated to FLY_NORM), can be
used to reduce the time in fly and to bring the trajectory closer to the intermediate taught
position. FLY_NORM is the default value.
Fly will begin at the start of normal deceleration for the motion plus a time equal to 100%
minus the percentage specified in $FLY_PER.
128
Comau Robotics Product Instruction
For example, if the value of $FLY_PER is 100, the fly begins at the start of deceleration
of the fly motion. If $FLY_PER is 75, then fly will begin after 25% of the deceleration is
finished (75% will be combined with the next motion).
The motion speed during fly is normally not constant. If two straight line segments are
joined by fly and are collinear then the TCP will move at constant speed through the
intermediate taught position as if there were one long segment. However, as the angle
between the two segments increases, the TCP will slow down near the intermediate
position, then speed up again as it moves into the next segment. The most extreme
example of course would be when the angle is 180 degrees (the TCP reverses
direction). In this case, the TCP will stop completely, but not at the intermediate taught
position.
This type of continuous motion control generally causes the least stress on the arm and
part or tool during direction changes. Therefore, FLY_NORM is the default value for
$FLY_TYPE. If the angle between motion segments is very acute, then lower stress can
be achieved by using FLY_CART (see below).
129
Comau Robotics Product Instruction
therefore the trajectory will be nearer to the intermediate position taken in relation to
FLY_NORM. If the angle is sharper, the trajectory will be farther from the intermediate
point than with FLY_NORM, but lower stress will occur than with FLY_NORM.
See Fig. 6.10 for a graphical display of such situations.
130
Comau Robotics Product Instruction
• FLY_TOL guarantees the TCP to pass a distance less than $FLY_DIST from
the intermediate point of the trajectories.
If the generated trajectory falls within the distance $FLY_DIST, then the
trajectory will remain unchanged. However, if the trajectory is outside this
limit, then that distance limit will be respected and the speed will be reduced
to maintain the limits specified by $STRESS_PER and $FLY_DIST.
• FLY_PASS attempts to move the TCP at the exact distance from the medium
point.
If the planned distance, specified by $FLY_DIST, is too long with respect to
the length of the trajectories, then the fly trajectory is calculated to cross at the
maximum distance possible. If the distance specified is less than that which
would be produced by FLY_AUTO, the speed will be reduced to respect the
limit set by $STRESS_PER (the distance specified will still be maintained
exactly).
• FLY_FROM forces the fly motion to begin at the distance specified by
$FLY_DIST from the taught intermediate position.
Note that the dynamics of the machine could make it impossible for the programmed
distance to be maintained. This becomes more likely as the value of $STRESS_PER is
decreased.
The above picture (Fig. 6.11 - FLY Movements on page 131) shows an example of the
use of these system settings. With $FLY_DIST set equal to 20 mm, the following results
131
Comau Robotics Product Instruction
will be seen.
When the value of $FLY_TRAJ is set to:
– FLY_TOL, then the distance A will be less than or equal to 20 mm;
– FLY_PASS, then the distance A will be 20 mm;
– FLY_FROM, then the distance B will be 20 mm.
PROGRAM mov_cart
CONST
arm_num = 1
cond_num = 1
ROUTINE print_debug
BEGIN
WRITE ($CRNT_DATA[arm_num].FLY_DBUG, NL)
END print_debug
BEGIN
$CRNT_DATA[arm_num].FLY_DBUG := 0
CONDITION[cond_num] NODISABLE :
WHEN AT END DO
print_debug
ENDCONDITION
-- initialization
ENABLE CONDITION[cond_num]
-- move statements
END mov_cart
Code Description
0 Optimal situation indicating that the speed is maintained constant and the trajectory, planned with
$FLY_DIST, is guaranteed.
1 The fly lasts for less than 40ms. It is impossible to activate the constant speed algorithm. This code is
informational only; speed is maintained constant.
2 The angle between the trajectories is too small (less than 5 degrees) so it is impossible to activate the
constant speed algorithm.
3 Acceleration reduction due to an extreme orientation evolution. This is caused by the evolution of the
tool orientation during fly. In this situation, the fly is smoothed and the speed is maintained constant.
132
Comau Robotics Product Instruction
Code Description
4 Replanning due to weaving causes a distance to be set, which is greater than the user programmed
one ($FLY_DIST). The speed is maintained constant.
5 Speed for passing the planned distance is reduced. In order to respect the restriction of the passage
($FLY_DIST) and the restriction on the stress ($STRESS_PER), speed is automatically reduced
during fly. By default, $FLY_DIST is set to 5 and $FLY_TRAJ is set to FLY_TOL. To overcome this
speed reduction, increased the tolerance on the planned trajectory (i.e. increase $FLY_DIST) or
increase $STRESS_PER.
6 Speed reduction on a circular motion due to extreme stress. This code means that the limitation on
the maximum stress ($STRESS_PER) is imposing a speed reduction on the whole circular trajectory.
This can be overcome by increasing the radius of the circle, increasing the value of $STRESS_PER,
or reducing programmed speed.
7 Speed reduction due to an extreme orientation evolution. The orientation evolution required during fly
imposes speeds that are greater than the maximum allowed and the speed is reduced during
trajectory. To overcome, spread the orientation variation on the previous and next motion or increase
$STRESS_PER.
8 It is impossible to respect the passage at the planned distance and the resulting distance is in effect
reduced. This occurs only when $FLY_TRAJ is set to FLY_PASS or FLY_FROM. The passage was
programmed by the user to pass through a point that is too far away. It is possible to obtain some
advantages by decreasing the speed or by increasing the $STRESS_PER value.
9 e 10 Current motion is too short to keep constant speed during fly. The planned speed is reached during
the movement. To change such a condition, increase (if possible) the distance between the planned
points and increase $STRESS_PER.
11 Motion too short to reach the planned speed because the acceleration phase cannot be terminated. If
possible, increase the distance between the two planned points. In some cases, it could be useful to
increase $STRESS_PER.
12 Extreme stress for a short motion. The resulting motion is too short for the execution of the fly that
guarantees the limitations on the maximum stress. The resulting stresses are greater than the
planned ones and the speed could change during fly. To change this condition, increase (if possible)
the distance between the planned points and increase $STRESS_PER.
13 Extreme stresses on the orientation evolution due to a short motion. The resulting motion is too short
for executing a fly that guarantees the limitations on the maximum stress in the orientation evolution.
The resulting stresses are greater than the planned ones and the speed could change during fly.
14 e 15 Impossibility of fly re-planning due to lack of time. The movement does not last long enough to allow
the completion of the preliminary counts. The resulting stresses are greater than the planned ones
and the speed could change during fly. If possible, increase the distance between the two planned
points. In some cases, it could be useful to increase $STRESS_PER.
16 Impossibility of fly re-planning with extreme stresses on the orientation evolution. The resulting
stresses are greater than the planned ones and the speed could change during fly. If possible,
increase the distance between the planned points and reduce the planned speed ($LIN_SPD). In
some cases, it could be useful to increase $STRESS_PER.
133
Comau Robotics Product Instruction
134
Comau Robotics Product Instruction
1 - Flange Frame 2 - User Frame 3 - TCP Frame 4 - Fixed Tool 5 - Base Frame 6 - World Frame
135
Comau Robotics Product Instruction
136
Comau Robotics Product Instruction
while the slide/column is moving or to move the slide/column keeping the TCP still in
relation to the floor: in both cases, the robot axes will offset the movement of the auxiliary
axis.
The system sees the set of axes of the two mechanisms as a single manipulator. All the
types available, i.e. JOINTPOS, POSITION, XTNDPOS, can be used to assign the
destination positions of the movements. In the case of XTNDPOS, it is also possible to
specify the cartesian position of the TCP as well as the position of the auxiliary axis at
the same time.
6.12.1.1 Jogging
Moving the slide/integrated column manually (jog), the robot acts differently according
to the handing mode set: in joints mode, pressing the key corresponding to the
slide/column, the robot axes do not move; only the auxiliary axis moves. On the other
hand, in Cartesian mode of manual motion (BASE, TOOL, UFRAME) key 7 moves the
slide/column, keeping the TCP stationary, wherever the robot axes compensate the
movement of the auxiliary axis.
6.12.1.3 Restrictions
Integrated movement of the slide/column and robot is possible in the following
conditions:
– there are no limitations as regards the robot model; however this can be positioned
in relation to the flange of the slide/column in only eight positions, i.e.: the
Zbase_robot axis always parallel to Zbase_slide/column (in both directions) and the
137
Comau Robotics Product Instruction
138
Comau Robotics Product Instruction
Synchronized Arms
The option code is CR17926204.
This chapter describes the Synchronous Motion optional i.e., the synchronous motion
between a robot and other axes.
In particular, the following subjects are dealt with:
– Synchronization with Auxiliary Axes
– Synchronized Arms.
139
Comau Robotics Product Instruction
140
Comau Robotics Product Instruction
the MASTER Arm is ARM[1] and the SERVER Arm is ARM[2]; whereas in the next
synchronised MOVE :
All this, does not depend on the declared (or implied) Arm, PROG_ARM, at the head
of the program.
The system variable $SYNC_ARM specifies the default synchronized arm for the
SYNCMOVE clause, similar to $PROG_ARM that defines the default arm for the MOVE
statement. This variable is specific for the program and initialized by the user. For
example, in writing MOVE TO p1, since the arm has not been specified, the value of
141
Comau Robotics Product Instruction
$PROG_ARM is assumed. Similarly, in writing SYNCMOVE TO p2, since the arm for
the SYNCMOVE has not been specified, the value of $SYNC_ARM is assumed.
An example follows of a program that controls two Arms that move in synchronised
mode:
PROGRAM example
VAR P1, P2 : POSITION
BEGIN
-- the main arm is arm 1, the synchronised arm
-- is arm 2
MOVE ARM[1] TO p1 SYNCMOVE ARM[2] TO p2
MOVE TO p1 SYNCMOVE ARM[2] to p2
-- $PROG_ARM moves on p1
MOVE ARM[1] TO p1 SYNCMOVE TO p2
-- ERROR: $SYNC_ARM is not initialised
$SYNC_ARM := 2 -- $SYNC_ARM is initialised
MOVE ARM[1] TO p1 SYNCMOVE TO p2
-- $SYNC_ARM (arm 2) moves on p2
MOVE TO p1 SYNCMOVE TO p2
-- $PROG_ARM and $SYNC_ARMEND are used, example
The ADVANCE clause is applied to the entire MOVE... SYNCMOVE. To perform a fly it
is necessary to specify the FLY clause on the main move and insert ADVANCE before
SYNCMOVE:
MOVEFLY TO p1 ADVANCE,
SYNCMOVEFLY ARM[2] TO p2,
ENDMOVE
If an ADVANCE is inserted after p2, the translator sees a warning message and
automatically corrects instruction.
It will be the task of the user to specify a speed option that is compatible with the
combined motion, since for both Arms all the limitations are valid that are present on the
individual robot: for example a short translation of the MASTER Arm, with
$SPD_OPT:=SPD_LIN, combined with a wide variation of the SERVER Arm orientation,
imposes an over-speed on the SERVER Arm that cannot be controlled with the override
values only.
It can be seen that in the programming of a multi-arm system with two robots that both
move in Cartesian mode with
$SPD_OPT:=SPD_LIN and with
142
Comau Robotics Product Instruction
$LIN_SPD equal,
but on paths of different lengths, only the MASTER Arm will observe the speed
restriction, whereas the SERVER Arm will move faster if it has to cover a longer path,
more slowly if the path is shorter.
For further information, please refer to C5GPlus Control Unit Use manual, IDE Page
chapter.
143
Comau Robotics Product Instruction
synchronization is lost. To maintain the synchronization, he must lock both the arms,
with the statement:
LOCK ARM[1]
LOCK ARM[2]
After having locked both arms at the same time, even if arm 1 is resumed with the
RESUME ARM[1] statement, the synchronized motion does not restart. Only if the other
arm is also resumed, the synchronized move restarts on both the arms (RESUME
ARM[2]).
A functionality exists which allows, under some special conditions, to run-time modify
the Linear Speed Override. For further information see also par. 6.5.2.2 Run-Time
modifying the Linear Speed Override on page 117.
In single Arm systems, there is only one predefined variable to be used to Run-time
modifying the linear speed: $LIN_SPD_RT_OVR.
Viceversa, in multi-arm systems, there is a $LIN_SPD_RT_OVR for each Arm; in order
to Run-Time modify the linear speed, it is needed to identify which one is to be used
while executing a SYNCMOVE.
It is very important to exactely understand on which Arm such a functionality is currently
active. To do that, operate as follows:
Let’s have the following PDL2 statement
In order to understand if the Run-time modification of the linear speed does apply, and
which is the involved Arm, just check the second bit of the following field:
144
Comau Robotics Product Instruction
$CRNT_DATA[num_arm].C_ALONG_1D[50]
it is automatically set by the system software, for the Arm on which the Run-time
modification functionality is active. If such a bit is set to TRUE, it means that the
associated Arm acts as master, as regards the Run-time speed modification during the
SYNCMOVE execution, while the other Arm follows the modifications. In such a way,
the motion synchronization is always satisfied.
145
Comau Robotics Product Instruction
Cooperative Motion
The option code is CR17926200.
146
Comau Robotics Product Instruction
147
Comau Robotics Product Instruction
148
Comau Robotics Product Instruction
Fig. 8.3 - System frames with cooperative Arms on page 148 shows the different
reference frames for the two arms definition. The positioner (arm 2) moves its TCP
(defined by $ARM_DATA[2].TOOL) referred to its user frame
($ARM_DATA[2].UFRAME), while the working arm TCP ($ARM_DATA[1].TOOL)
moves referred to a reference frame used by the positioner TCP (by means of
$ARM_DATA[1].UFRAME).
flag is a boolean parameter which can be set to either ON or OFF, respectively to enable
or disable the multi-cooperative motion;
aux_joint is the number of the auxiliary axis. It can be omitted if flag is set to OFF; on the
contrary, when flag is ON, aux_joint is needed;
positioner_arm, if present, specifies the number of the positioner arm. If not present,
$SYNC_ARM is assumed;
working_arm, if present, represents the number of the working arm. If not specified,
$PROG_ARM is used.
For further information, please refer to PDL2 Programming Language manual,
chap.BUILT-IN Routines List.
1. Working Arm
2. Positioner Arm
149
Comau Robotics Product Instruction
Essential requirement for using multi-cooperation, is the proper positioning, inside the
cell, of all the involved objects, which means to properly assign both $BASE and
$AUX_BASE (see Fig. 8.4).
This optional functionality needs the following software option: Cooperative Motion - see
Chap. Appendix - Software Options on page 665 in C5GPlus Control Unit Use manual.
8.4 Jogging
Cooperative motion provides easy programming for while jogging the positioner arm, the
working one follows the positioner in order to keep constant the torch position (location
and orientation) with respect to the workpiece. This feature simplifies the programming
of complex trajectories, saving time and reducing the number of points that must be
taught.
The cooperation during jog must be enabled with the ARM_COOP (for cooperative
arms), AUX_COOP (for auxiliary axes cooperation) and ARM_COOP (for
multi-cooperation) built-in procedures. They can be executed by a program, or by the
Teach Pendant in IDE Page, command Program - Immediate execution or in Service
Page, command System - Execute.
150
Comau Robotics Product Instruction
151
Comau Robotics Product Instruction
The vector is composed of 6 components; the first three are the deviations in X, Y and
Z directions and the other three the rotations around the same axes. To better
understand the effect of sensor tracking, let us consider an application where there is a
programmed trajectory and a sensor that can bring the TCP on an optimised trajectory
that is different to that programmed. Let us suppose that the program consists of a joints
move on a start position, followed by two linear moves linked in fly and a final joints move
to reach a position out of range.
The program could be the following:
PROGRAM sensor
VAR
p1, p2, p3, p4 : POSITION
BEGIN
$SPD_OPT:=SPD_LIN--To check the linear speed
$LIN_SPD:=0.1 --Linear speed in m/s
MOVE JOINT TO p1
MOVEFLY LINEAR TO p2 ADVANCE
MOVE LINEAR TO p3
MOVE JOINT TO p4
END sensor
If the sensor is enabled along the Cartesian path from p1 to p3, the effect could be as
shown in Fig. 9.1 - Programmed trajectory and sensors control on page 152 where the
dashed line is the programmed trajectory and the continuous line is the trajectory
actually travelled by the TCP under the control of the sensor; the arrow between the two
trajectories is the deviations vector. It can be seen in the example that the tracking
terminates when the nominal position reaches point p3; on this point, the Control Unit
re-acquires the actual position and resets the deviations accumulated along the path,
then the next joints move will terminate exactly on the programmed point p4 as required.
The following paragraphs illustrate all the characteristics of the sensor tracking
environment with explanations on how to use the system and Built-In variables to
program applications that use sensors.
1. Starting point
2. Arrival point
3. Programmed trajectory
4. Trajectory controlled by sensor
152
Comau Robotics Product Instruction
153
Comau Robotics Product Instruction
154
Comau Robotics Product Instruction
err_track parameter is the required corrections array, whose the first three elements
correspond to translations in X, Y and Z directions, whereas the others are rotations
around such axes.
Unused err_track components should anyway be initialized to zero.
arm_num optional parameter allows sending corrections to a different arm than the
default one. Note that SENSOR_GET_DATA Built-In routine, described in the previous
section, can also be used with this sensors type. In this case, sens_read parameter will
contain the same data as sent by means of SENSOR_SET_DATA.
1 - Flange 2 - Tool
3 - Sensor 4 - Sensor frame
5 - TCP frame
155
Comau Robotics Product Instruction
1. World frame
$SFRAME also serves to select the centre of rotation for the tool geometry corrections.
If $SFRAME is not zero, the centre of rotation is defined by the $SFRAME itself,
whereas if all the components are null, the centre of rotation coincides with the TCP.
156
Comau Robotics Product Instruction
but depends on the direction of the weaving. The corrections calculated have to be
projected, not in the torch reference system (TOOL) but with regard to the weaving
(WEAVE).
The $SENSOR_TYPE values for this type of reference are 2 for seam-tracking (not
available in 1.0 sw version), 8 and 12 for external sensors (see Tab. 9.3
- Correction_Speed = Factor*Reference_Speed on page 160).
157
Comau Robotics Product Instruction
made with reference to the current robot position, i.e. without taking into consideration
the error already accumulated during previous sensor readings (Fig. 9.5 - Relative
deviation on page 158).
For integrated sensors the choice between the two modes (absolute or relative)
depends on the type of sensor, and it is managed by system software. For external
sensors there is a possibility to choose by means of the $SENSOR_TYPE system
variable: the values from 5 to 9 enable the relative mode functioning, whereas from 9 to
12 enable absolute mode (Tab. 9.3 - Correction_Speed = Factor*Reference_Speed on
page 160).
– in most industrial applications the sensors measure the RELATIVE deviations
since they are able to determine the optimal trajectory position in relation to their
own position. Also in the case of force sensors the most frequent use is to consider
the data measured in relative mode. This means that until the sensor output differs
from zero the trajectory is continually modified adding new deviations to the old
ones, whereas when the output is null, the accumulated corrections are kept and
the robot trajectory remains parallel to the nominal one (Fig. 9.4 - Absolute
deviations on page 158);
158
Comau Robotics Product Instruction
– the correction in ABSOLUTE mode is useful to obtain a yielding effect on the TCP
by means of force sensors. In practice a deviation is applied to the robot trajectory
that is proportional to the force sensor output. This causes the entire robot to
behave like a spring in all directions since as the measured force intensity
increases, the robot deviation from the programmed trajectory increases, when
there is no stress the robot returns to follow the programmed path (Fig. 9.5
- Relative deviation on page 158).
159
Comau Robotics Product Instruction
In both the correction distribution modes, the speed can be assigned through the
$SENSOR_GAIN system variable. It is a vector with 6 INTEGER elements that have a
percentage significance (variability from 0 to 100 with default 50). It allows the program
to ratio the correction speed with the programmed movement execution speed.
The first three elements regard the translations in the X, Y and Z directions and in the
case of $SPD_OPT=SPD_LIN, they represent a measurement of the angle between
the programmed trajectory and that which results from the correction. The value 50%
corresponds to the slope of 45 degrees (correction speed equal to the advance speed,
$LIN_SPD), whereas the values 0% and 100% represent the extreme cases of no
correction (0%) and immediate assimilation of the correction (100%).
If $SPD_OPT is set for one of the rotation control modes (SPD_ROT, SPD_SPN,
SPD_AZI, SPD_ELV, SPD_ROLL, SPD_FIRST, SPD_SECOND, SPD_THIRD) the
reference speed for the first three components of $SENSOR_GAIN is one fourth of the
maximum linear speed for that arm ($LIN_SPD_LIM/4).
The last three elements of $SENSOR_GAIN serve to control the speed of rotation
around the X, Y and Z axes. If it is $SPD_OPT=SPD_LIN, the reference speed is a
quarter of the maximum rotational speed ($ROT_SPD_LIM/4) thus the value of 50%
corresponds to a speed equal to $ROT_SPD_LIM/4 whereas the values 0% and 10%
represent the extreme cases of no correction (0%) and immediate assimilation of the
geometry variation (100%). If $SPD_OPT is set to one of the rotation control modes
(SPD_ROT, SPD_SPN, etc.) the reference speed for this component is $ROT_SPD.
Tab. 9.3 - Correction_Speed = Factor*Reference_Speed on page 160 contains the
multiplication factors that, applied to the reference speed, make it possible to obtain the
actual programmed speed. These values are given as an explanation only, since in
practice, the value of $SENSOR_GAIN will be determined by experimentation .
$SENSOR_GAIN[ i ] Factor
0 0.0
10 0.11
20 0.25
30 0.43
40 0.67
50 1.0
60 1.5
70 2.3
80 4.0
90 9.0
100 infinite
The $SENSOR_GAIN variable is also taken into consideration when the criterion for the
distribution of the deviations is time ($SENSOR_TIME is not zero). In this case the
$SENSOR_GAIN components will be used to define the maximum correction speed
(Fig. 9.7 - Effects of $SENSOR_GAIN on page 161). To avoid all types of limitation the
corresponding $SENSOR_GAIN value can be set at 100%.
160
Comau Robotics Product Instruction
The use of this variable will depend on the measuring accuracy of the sensor used, and
the frequency with which these measures are supplied. If the sensor gives a precise
indication of the deviation that is to be assimilated (in millimetres) but with a low
frequency, the value of $SENSOR_GAIN is directly linked to the correction speed. If
instead the sensor is able to give only a generic indication on the direction in which the
correction is required, the $SENSOR_GAIN variable can be used as a gain, i.e. as a
parameter to be set-up on the basis of the fluctuations that are observed during the
application.
161
Comau Robotics Product Instruction
by the sensor only during the execution of a programmed move and therefore the sensor
is ignored when the robot is stationary (even if in DRIVES ON). This is the mode most
frequently used in practical applications.
However, there are certain applications where it is necessary that the robot position is
enslaved to the sensor even without a programmed move.
– a typical example is when the robot has to be latched to a moving object, or it
interacts with the workpiece without movement of any controlled axes, but closing
grippers or moving additional axes;
– there are also sensors that can move the robot autonomously without the need of
a programmed move.
C5GPlus is preset for this type of application, offering the possibility to enable the arm
in a certain state in which it is completely enslaved to the sensor although still having
the possibility to resume the programmed move at any time.
When introducing this service complete consistency of behaviour has been maintained
with that already possible in C5GPlus in compliance with safety requirements. In
particular the following points are highlighted:
b. the start of the enslaving always depends on the pressing of the START key, until
that moment the user is certain that the machine cannot move;
c. movement under the control of the sensor can be stopped by pressing the HOLD
key and can only start again when the START key is pressed;
b. since the SENSOR_TRK can only be run within HOLDABLE programs, it cannot
be run neither using Execute command of Service Page - System on the TP, nor
by SYS_CALL of EXECUTE command;
162
Comau Robotics Product Instruction
e. the SENSOR_TRK mode is automatically disabled when the program that enabled
it is deactivated.
The enabling and disabling of the tracking in this mode has certain effects on the holding
or resetting of overall deviations (see par. 9.9 Accumulative overall deviations
management on page 165).
163
Comau Robotics Product Instruction
Not only the translation deviations (first three components) are redefined, but also those
of geometry variations, therefore, if it is wished to resume the move with the same
geometry as when the stoppage took place, this must not be changed during the jog
session.
The $RCVR_TYPE=8 mode is useful in such cases and permits the move to be
resumed returning exactly on the programmed trajectory resetting the deviations
accumulated by the sensor; in this mode the C5GPlus plans a trajectory that recovers
the current position to correspond to the programmed trajectory and resume the
interrupted move.
After recovery, the deviations will be reset. Fig. 9.9 - Effect of $RCVR_TYPE = 8 on
page 164 shows how this mode functions.
The functioning of $RCVR modes from 0 6 are not submitted to variations in the case of
enabled sensor tracking. Therefore modes 0 and 4 bring the TCP exactly on the
interrupted position keeping the deviations accumulated up to that moment, whereas
modes 1, 2, 5 and 6 bring the robot on the programmed initial and final positions,
resetting the deviations.
164
Comau Robotics Product Instruction
If tracking is enabled with the SENSOR_TRK(TRUE) option, the action changes since
this option makes it possible to leave the robot enslaved to the sensor, without a
programmed move and during the interruption. Looking again at the example in the case
of SENSOR_TRK(TRUE), a behaviour that is just the same as in Fig. 9.1 - Programmed
trajectory and sensors control on page 152 can be noted notwithstanding that the fly and
165
Comau Robotics Product Instruction
the ADVANCE have been removed; in other words, no interruption takes place on p2.
The resetting will take place the moment the enslaving condition is interrupted with the
SENSOR_TRK(FALSE) or $SENSOR_ENBL:=FALSE instruction.
This indicates that the Built-In SENSOR_TRK(TRUE) can be used to avoid the resetting
of deviations on points where the robot stops (where there is no fly).
166
Comau Robotics Product Instruction
$SENSOR_TYPE SIGNIFICANCE
0 Sensor suspended
1 Seam-tracking sensor in TOOL reference (NOT AVAILABLE in
1.0 sw version)
2 Seam-tracking sensor in WEAVING reference (NOT AVAILABLE
in 1.0 sw version)
5 External sensor in TOOL reference, relative mode
6 External sensor in UFRAME reference,relative mode
7 External sensor in WORLD reference, relative mode
8 External sensor in WEACING reference, relative mode
9 External sensor in TOOL reference, absolute mode
10 External sensor in UFRAME reference, absolute mode
11 External sensor in WORLD reference, absolute mode
12 External sensor in WEAVING reference, absolute mode
13-14 Reserved
15 Reserved for the management of a certain type of laser camera
16-30 Reserved
167
Comau Robotics Product Instruction
PROGRAM sensor
VAR
p1, p2, p3, p4:POSITION
corr_y, corr_z:REAL
corr, ofst:ARRAY[6] OF REAL
ROUTINE get_corr(corr_y,corr_z:REAL)
BEGIN
-- routine body
END get_corr
ROUTINE send_corr
BEGIN
get_corr(corr_y, corr_z)
corr[2]:=corr_y; corr[3]:=corr_z
SENSOR_SET_DATA(corr)
SENSOR_GET_OFST(ofst)
WRITE (‘X:‘, ofst[1], ‘ Y; ‘, ofst[2], ‘ Z: ‘, ofst[3], NL)
$TIMER[1] := 0
ENABLE CONDITION[1]
END send_corr
BEGIN
CONDITION[1] :
WHEN $TIMER[1] > 500 DO
send_corr --Corrections sent every 500 ms
ENDCONDITION
168
Comau Robotics Product Instruction
-- Program in movement
MOVE JOINT TO p1
$SENSOR_ENBL := FALSE
DISABLE CONDITION[1]
MOVE JOINT TO p4
END sensor
169
Comau Robotics Product Instruction
Conveyor Tracking
The option code is CR17926206.
The Conveyor Tracking environment allows the user to write simple programs for
reaching positions defined on a moving conveyor: the C5GPlus Controller automatically
compensates the istantaneous position of the conveyor.
In order to compute the instantaneous position of a conveyor, its motor has to be
equipped with a position transducer connected to C5GPlus Controller Unit.
Up to four conveyors can be handled. When the tracking is enabled, only cartesian
movements can be executed.
The following tracking is available:
– Cartesian Tracking - in this case the of cartesian tracking the robot is fixed and
the conveyor tracking is done using a dynamic conveyor frame (truck frame) that
will be shifted according to the position of the truck. In this way, it is possible to track
trucks mounted on traversing or rotating conveyors involving, in the first case linear
Cartesian tracking and, in the second, circular Cartesian tracking. They are no
restrictions regarding the placement and orientation of the conveyor. Since the
robot is fixed and the workpiece moves, the workspace is reduced (the robot can
work on the part for a very short time) so that the cartesian tracking is
recommended for pick and place applications.
This chapter describes the following subjects :
– Configuration
– Working Principle
– Process Monitoring
– Tracking Window
– Motion Statements
– Teaching Positions
– Tracking Interruption
– Limitations during Conveyor Tracking
– Use of the Roto-translating Conveyor
10.1 Configuration
Use IO_CNFG program (C5GPlus Control Unit Use manual - par. 11.1.2.1.5 System
on page 518), to configure conveyor tracking and define any associated kit to the
conveyor itself.
Then, enter the Conveyor subpage within Setup page on the Teach Pendant, to set the
basic parameters (par. 5.17.2.5 Conveyor on page 255) in C5GPlus Control Unit Use
170
Comau Robotics Product Instruction
manual).
System variables to configure the conveyor tracking are fields of $TRK_TBL data
structure which is an array of basic structures to handle the tracking functionalities.
To configure the hardware link of the conveyor to C5GPlus Controller, the following
variables are available:
– $TRK_TBL[nTbl].TT_APPL_ID identifies the being configured application type
(conveyor = 2):
$TRK_TBL[nTbl].TT_APPL_ID := 2
– $TRK_TBL[nTbl].TT_PORT_TYPE[1] identifies the input port type which has been
connected to the position transducer (it is a FMI port, identified by number 27):
$TRK_TBL[nTbl].TT_PORT_TYPE[1] := 27
– $TRK_TBL[nTbl].TT_PORT_IDX[1] identifies the configured port index, for reading
the position transducer. In case of predefined kit, such an index is automatically
assigned by the system. In case of user kit, the user should specify an already
mapped FMI index.
– In the case in which the position transducer is an encoder, the transducer sin/cos
pulse number must be specified by means of the following statement:
$TRK_TBL[nTbl].TT_I_PRMS[1] := 0 -- if resolver
$TRK_TBL[nTbl].TT_I_PRMS[1] := 1024 -- if encoder
– As far as the transmission rate, the following statement must be used:
$TRK_TBL[nTbl].TT_R_PRMS[1] := <tx_rate_value>
its unit of measure is [mm/motor turns] for cartesian linear tracking, cartesian
rototranslating tracking, whereas it is [motor turns/table turns] for rotating
conveyors.
– The being configured conveyor type must be specified by means of the following
statement:
$TRK_TBL[nTbl].TT_I_PRMS[2] := <conv_cnfg_value>
where <conv_cnfg_value> can be as follows:
• 0: linear cartesian tracking;
• 1: circular cartesian tracking;
• 3: rototranslating cartesian tracking (Robot Control on a bending-press).
– In case of either circular or rotranslating conveyor, the conveyor radius is also to
be specified, which can be run-time modified, by means of the following statement:
$TRK_TBL[nTbl].TT_R_PRMS[2] := <conveyor_radius>
– More than one Arm can be configured on the same Control Unit and not
necessarily they all neither are intended to track a conveyor nor it is right to use
them for tracking; a bit mask must then be configured indicating to the C5GPlus
which are the enabled Arms for tracking, by means of the following statement:
$TRK_TBL[nTbl].TT_ARM_MASK := <arm_mask>
Only the Arms which are included in the bit mask, will be enabled for tracking; an
error message will occur for the other ones, if and when there is an attempt to
activate the conveyor.
– For a good robot conveyor tracking, the reference frame must be defined on the
conveyor base:
$TRK_TBL[nTbl].TT_FRAMES[1] := <base1>
$TRK_TBL[nTbl].TT_FRAMES[2] := <base2>
$TRK_TBL[nTbl].TT_FRAMES[3] := <base3>
There are 3 reference values for the conveyor, with the following use:
171
Comau Robotics Product Instruction
1. <base1> is used for all the different conveyor types except the rototranslating
one for which such a reference frame is only used during the press linear
tracking;
2. <base2> is used to upwards track the press during the press-bending
movement;
3. <base3> is used to downwards track the press during the press-bending
movement.
To discriminate between the three <baseX>, in case of rototranslating conveyor, it
is needed to set the following run-time modifiable variable, before activating
tracking:
$TRK_TBL[nTbl].TT_I_PRMS[3] := <modality>
Where the allowed values for such a variable are as follows:
• 0: press linear tracking;
• 1: rototranslation upwards tracking;
• 2: rototranslation downwards tracking.
It must be measured when the truck is either in the zero position (see later) or in a
known position. Some criteria must be complied in choosing the reference origin
position and the axes direction, which are slightly different for either linear, circular
or rototranslating tracking. See also par. 10.9 Use of the Roto-translating Conveyor
on page 179.
In case of linear conveyors, the base reference X axis must be aligned to the
positive direction of the conveyor; the X-Y plane must coincide with the plane of the
truck and the origin must be positioned at the point in which a sensor detects
passing of the truck.
In case of circular conveyors, the X axis must be tangential to the rotating table; the
Y axis must be in radial direction in relation to the table and oriented towards the
center of rotation; the position of the Z axis comes from the first two axes according
to the right-hand rule and faces up if the rotating table turns anticlockwise and
down otherwise. In circular case, the reference system origin must be at a known
distance from the center of rotation and does not precisely coincide with this; this
distance represents the table radius and must be assigned to
$TRK_TBL[nTbl].TT_R_PRMS[2]
(in case of rototranslating Conveyor, see par. 10.9 Use of the Roto-translating
Conveyor on page 179). The circumference passing through the table base
reference origin plays an important role in managing rotations: all distances and
speeds are measured in relation to this base circumference.
– The maximum allowed value for robot acceleration and speed can be configured
during the tracking phases, by means of the following statements:
$TRK_TBL[nTbl].TT_R_PRMS[3] := <speed_limit>
$TRK_TBL[nTbl].TT_R_PRMS[4] := <acceleration_limit>
– Furthermore, two tracking windows can be defined by means of the following
statements:
$TRK_TBL[nTbl].TT_R_PRMS[5] := <first_value>
$TRK_TBL[nTbl].TT_R_PRMS[6] := <second_value>
Where first_value indicates the conveyor quote from which the robot must start
tracking, whereas second_value indicates the quote beyond which no tracking can
be performed by the robot.
– A virtual encoder can be configured, i.e. to activate the conveyor on an input port
by setting the following variable:
172
Comau Robotics Product Instruction
$TRK_TBL[nTbl].TT_R_PRMS[17] := <conversion_factor>
Such a variable, if not zero, activates tracking by means of an input port, even
without any hardware conveyor and represents the conversion factor from the input
port unit of measure and the conveyor unit of measure (without taking the
tx_rate_value into account, which should anyway be indicated).
At every interpolator tick, the system calculates the truck current position and updates
173
Comau Robotics Product Instruction
$CRNT_DATA[arm_num].CONV_SHIFT[nTbl]
Such a distance is in millimeters. When tracking is active, the User frame (indicated by
$UFRAME) is referred to the truck frame, so that all the POSITIONs are referred to the
moving workpiece (see Fig. 10.1 - Reference Frames for circular tracking on page 173).
Note that the Control Unit considers the slide speed to be null if its motion is reversed.
174
Comau Robotics Product Instruction
$TRK_TBL[nTbl].TT_R_PRMS[5].
If the robot attempts to move when the truck is already out of the window
($CRNT_DATA[n].CONV_SHIFT[nTbl] > $TRK_TBL[nTbl].TT_R_PRMS[6]), an error is
issued by the Control Unit. The tracking window is usually defined during the
configuration phase, moving the robot to the two limits.
PROGRAM conv
BEGIN
CONDITION[1]:
WHEN $DIN[1] DO
ru_conv_condition(1)
175
Comau Robotics Product Instruction
ENDCONDITION
CYCLE
ENABLE CONDITION[1]
WAIT FOR $DIN[1] -- wait for the workpiece
CONV_TRACK(CONV_ON, 1) -- enable tracking
MOVEFLY LINEAR NEAR P1 BY 100 ADVANCE -- move towards
-- the truck
MOVE LINEAR TO P1 -- move to the workpiece
CLOSE HAND 1 -- pick up the workpiece
MOVE AWAY 100
CONV_TRACK(CONV_OFF, 1) -- disable tracking
MOVEFLY LINEAR NEAR P2 BY 100 ADVANCE -- move on the table
MOVE LINEAR TO P2
OPEN HAND 1 -- release workpiece
MOVE AWAY 100
END conv
176
Comau Robotics Product Instruction
– as joint type movements are not allowed, the recovery trajectories must also be of
the Cartesian type. Therefore, the values of the $RCVR_TYPE variable may be 3,
4, 5 , 6 only;
– no active motions can be present, when CONV_TRACK built-in routine is called to
activate or deactivate tracking;
– it is not possible to check tolerances on the stopping points during tracking as the
movement of the carrier involves continuous movement of the axes of the robot
also during stoppages. Therefore the only permissible value of the $TERM_TYPE
system variable is NOSETTLE;
– the values of $BASE and $TOOL variables cannot be modified immediately before
the carrier release movement. $UFRAME can however be modified as required;
– a linear trajectory on the fixed positions, i.e. with $CONV_TYPE := CONV_OFF
must be carried out after any error that causes release of robot trajectory;
– it is not possible to restart tracking after a power failure without first of all bringing
the robot to a fixed position (i.e. executing CONV_TRACK built-in with CONV_OFF
command).
– it is recommended not to use the CONV_TRACK built-in as the first statement in a
HOLDABLE program.
177
Comau Robotics Product Instruction
178
Comau Robotics Product Instruction
179
Comau Robotics Product Instruction
180
Comau Robotics Product Instruction
181
Comau Robotics Product Instruction
Weaving Motion
The option code is CR17926207.
182
Comau Robotics Product Instruction
183
Comau Robotics Product Instruction
184
Comau Robotics Product Instruction
185
Comau Robotics Product Instruction
distance (in mm) in the center along the path, instead, in case of
$WEAVE_MODALITY = 1, 4, 6, 8. Limits: 0 to 10.000;
• $WEAVE_TBL[n].WV_RIGHT_DWL defines the right dwell time (in ms) in
case of $WEAVE_MODALITY = 0, 3, 5, 7; it defines the covered distance (in
mm) on the right along the path, instead, in case of $WEAVE_MODALITY =
1, 4, 6, 8. Limits: 0 to 10.000;
• $WEAVE_TBL[n].WV_END_DWL defines the dwell time (in ms) at the end of
the movement in case of $WEAVE_MODALITY = 2; it does not take any
effect in the other cases. Limits: 0 to 10.000;
– a BOOLEAN field controls the corners smoothness of the wave form (see later
description); it is not applicable in case of circular wave form:
• $WEAVE_TBL[n].WV_SMOOTH ;
– a REAL field controls the transverse speed:
• $WEAVE_TBL[n].WV_TRV_SPD (recommended 0.035 m/sec);
– four REAL fields for the 4 transverse speeds that are used in modality 2:
• $WEAVE_TBL[n].WV_TRV_SPD_PHASE[m]; (con 1<=m<=4)
– a REAL field defines the angle between the weave plane and the weave direction
(see later description):
• $WEAVE_TBL[n].WV_PLANE (-180 to +180 degrees);
– an INTEGER field for the weaving plane evolution modality:
• $WEAVE_TBL[n].WV_PLANE_MODALITY defines the modality in which the
weaving plane is calculated. If this variable is set to 0 (default), the weaving
plane is kept constant compared to the sequence of the fly connected
trajectories. If this variable is set to 1, the weaving plane is calculated on the
trajectory and it is integral with the tool and perpendicular to it;
– a REAL field for the weaving direction:
• $WEAVE_TBL[n].WV_DIRECTION_ANGLE defines the allowed angle (-180
to +180 degrees) for the weaving direction in case of either Weaving without
Arm motion or weaving plane integral with the tool. The default direction
(angle 0) corresponds to the TOOL X direction;
– an INTEGER field defines the weave amplification factor (%):
• $WEAVE_TBL[n].WV_AMP_PER (0% to 1000%);
– a BOOLEAN field indicates that the acceleration and deceleration characteristics
are used
• $WEAVE_TBL[n].WV_SPD_PROFILE; using this function the transverse
speeds are reached with a ramp, so as to remain within the
acceleration/deceleration limits of the axis involved in the weaving, for joints
weave; or within Cartesian acceleration/deceleration limits for Cartesian
weave. Furthermore, a test is made on the maximum speed that can be
reached.
Index n varies from 1 to 10 and the user can change a range of the 10
elements of the table at any time
– an INTEGER field indicates the 'weaving dwell' modality
• if $WEAVE_TBL[n].WV_DWL_MODALITY = 0 (default), the 'weaving dwell'
just stops the wave form generation and not the robot trajectory;
• if $WEAVE_TBL[n].WV_DWL_MODALITY = 1, the 'weaving dwell' also stops
the robot trajectory. Such a modality is applicable to the Transversal Speed
Weaving case (in which the dwell is expressed in ms).
Parametric weaving is defined by three indications:
186
Comau Robotics Product Instruction
– Wave Shape
– Weave Plane (angle of weaving plane)
– Weave Amplification (used to vary the weaving amplitude)
Note that the following formula is used for transverse speed calculation
Left amplitude
Transverse speed = ----------------------------
ts
187
Comau Robotics Product Instruction
Meaning of the ts[n] terms (ramp up or down times), depending on the weaving modality:
– Modality 0, 3, 5, 7 - ts times are all equal and are generated to reach a
transverse speed $weave_tbl[n].wv_trv_spd;
– Modality 1, 4, 6, 8 - the ts times are all equal and are generated to create the
weaving period according to the programmed wave length;
– Modality 2 - The ts[n] times are generated to reach the respective transverse
speeds $weave_tbl[n].wv_trv_spd_phase[n].
The amplitude, dwell, smoothness, and speed fields will take affect immediately after the
change (even during a weave motion). The direction and amplification factor will take
affect only on the first motion with weaving.
When the left and right dwells are set to 0, a triangular or sawtooth wave shape results.
The sharp peaks of the sawtooth shape can be rounded to produce a sinusoid-like
shape by setting the smoothing field to TRUE. Fig. 11.3 shows the different shapes that
can be achieved using the $WEAVE_TBL settings.
1 - Not smoothed sawtooth, 2 - Smoothed sawtooth 3 - Trapezoidal (left and right dwell)
4 - Chamfering variation during motion, with central dwell time 5 - Different left and right amplitudes
6 - Circular
188
Comau Robotics Product Instruction
The weave wave frequency is calculated in one of the shown below ways, according to
the used modality:
– modality 0, 5, 7
– modality 2
where:
dwell sum = left dwell + right dwell + 2 * center dwell (ms)
The maximum frequency depends on the mechanical design of the arm, but the weave
form will match the theoretical trajectory up to about 5 Hz (cartesian weaving) or 8 Hz
189
Comau Robotics Product Instruction
The weave parameters - B (see Fig. 11.2) are valid for any wave form.
The frequency, in case of circular wave form, modality 3, described by the transverse
speed, is:
190
Comau Robotics Product Instruction
1 - Torch plane 2 - Path 3 - Weaving plane angle 4 - Approach vector (along Z Tool)
5 - Weaving plane 6 - Zero plane 7 - Weaving plane angle 8 - Zero plane
9 - Weaving plane 10- Approach vector (along Z Tool)
Weaving can be executed between two trajectories connected in fly; in this case, by
default, the weaving direction on the second trajectory is recalculated maintaining the
inclination angle in relation to the plane of the two trajectories. Weaving will change from
one direction to another without interruption. This capability promotes very simple
programming of complex paths. The angle must be assigned only at the start of the first
movement with weaving and the control will automatically calculate the direction of
subsequent movements, Note that, on the second trajectory, the angle between the
plane of the torch and the direction of weaving will no longer be equal to the angle
indicated in $WEAVE_TBL[n].WV_PLANE; the Controller will refer to this angle only for
the first motion with weaving.
The trajectory weaving connected in fly can be improved in some cases by using the
FLY_CART mode. The weaving direction continuously evolves during fly, without being
interrupted when passing from one motion segment to another (see par. 6.10.2.2
FLY_CART (Controller Aided Resolved Trajectory) on page 129 for further details).
For a circular motion, the weave plane is continuously evaluated along the path, so that
the weave direction is always perpendicular to it. If the weave plane is not parallel to the
191
Comau Robotics Product Instruction
plane of the circle, the weave plane will be on the frustum of a cone as shown in Fig. 11.9
- Circular Weaving on page 192.
If, instead, the need is to keep the weaving plane constant in respect to the torch
orientation, i.e. keeping constant the angle between the torch plane and the weaving
direction in the connected in fly trajectories, variable
$WEAVE_TBL[n].WV_PLANE_MODALITY must be set to 2; in this case too weaving
will pass from one direction to the other one without interruption.
The need of weaving along a circular helicoid trajectory could arise in specific
applications, in which the weaving plane is integral with the torch instead of the
trajectory, as in the above described standard case. In this case, the value of
$WEAVE_TBL[n].WV_PLANE_MODALITY variable must be set to 1 instead of
0 (default).
In this case, the weaving direction is, by default, the one corresponding to the torch Y
direction. If weaving in a different direction is needed, the use of
$WEAVE_TBL[n].WV_DIRECTION_ANGLE variable is suggested, which represents a
rotation angle around the Z vector of the torch itself.
192
Comau Robotics Product Instruction
weaving).
Fig. 11.10 shows the weave amplification feature.
193
Comau Robotics Product Instruction
194
Comau Robotics Product Instruction
195
Comau Robotics Product Instruction
196
Comau Robotics Product Instruction
11.6.1 Mode
The weaving without Arm motion mode is activated by means of
$CRNT_DATA[arm_num].WEAVE_TYPE_NOMOT predefined variable which has got
the same functionalities as described in par. 11.1 Weaving Mode on page 183: the only
difference is that such a mode is performed without a motion embedded to the weaving.
11.6.2 Activation
For this functionality too, the activation is performed by means of defining the being
executed weaving table; it is anyway needed to use the predefined variable
$CRNT_DATA[2].WEAVE_NUM_NOMOT
which specifies that the weaving functionality will be performed without Arm motion.
The weave tables are exactly the same as for the weaving with Arm motion. In such a
way, if in a PDL2 program the user needs to perform both weaving with and without Arm
motion, the same information can be used.
11.6.3 Parameters
The used parameters belong to the same group described in the previous par. 11.3
Weaving Parameters on page 185.
Anyway, there are some features which make a no-sense for this functionality: e.g.
mode 1 cannot be selected which involves a wave form related to the wave length,
because the Arm does not move.
The weaving direction is, by default, the torch X direction corresponding one. If weaving
in a different direction is needed, variable $WEAVE_TBL[n].WV_DIRECTION_ANGLE
can be used representing a rotation angle of the torch around the Z vector.
$WEAVE_TBL[1].WV_LEFT_AMP := 5
$WEAVE_TBL[1].WV_RIGHT_AMP := 5
197
Comau Robotics Product Instruction
$WEAVE_TBL[1].WV_LEFT_DWL := 0
$WEAVE_TBL[1].WV_CNTR_DWL := 0
$WEAVE_TBL[1].WV_RIGHT_DWL := 0
$WEAVE_TBL[1].WV_SMOOTH := TRUE
$WEAVE_TBL[1].WV_TRV_SPD := 0.035
$WEAVE_TBL[1].WV_PLANE := 0
$WEAVE_TBL[1].WV_AMP_PER := 100
$CRNT_DATA[2].WEAVE_NUM_NOMOT := 0
$CRNT_DATA[2].WEAVE_MODALITY_NOMOT := 0
$CRNT_DATA[2].WEAVE_TYPE_NOMOT := 0
c. speeds definition
$SPD_OPT := SPD_LIN
$LIN_SPD := 0.050000001
MOVE LINEAR TO p1
$CRNT_DATA[2].WEAVE_NUM_NOMOT := 1
DELAY 3000
$CRNT_DATA[2].WEAVE_NUM_NOMOT := 0
WARNING - in case of HOLD state, weaving is stopped and deactivated: enable the
functionality again to move weaving again.
198
Comau Robotics Product Instruction
WARNING - There could be a conflict with the previous versions: if the following
statements have been written
– $WEAVE_NUM := 1
– MOVE TO p1 -- it is the default Arm, so weaving is activated
– $WEAVE_NUM := 2
– MOVE ARM[2] TO p2 -- in current version, ARM 2 does not weave because
-- $WEAVE_NUM is set for the $PROG_ARM i.e. ARM 1.
199
Comau Robotics Product Instruction
12.1 Description
Joint Soft Servo is a software option used in some applications when it is required that
the robot is compliant to movements produced by external forces. For example, when a
workpiece is hooked from a press, the detachment is facilitated by the pushing of a roll;
the robot must follow the movement without opposition.
When Joint Soft Servo is enabled, the robot should be steady. The Joint Soft Servo
modality is automatically disabled by a DRIVE OFF.
The degree of compliance of each axis must be defined when such a modality is
enabled.
To enable/disable the Joint Soft Servo modality, use ARM_SOFT built-in routine,
provided by PDL2 programming language.
200
Comau Robotics Product Instruction
201
Comau Robotics Product Instruction
202
Comau Robotics Product Instruction
Example
In case in which using the robot speed ($ARM_VEL) as input ($FW_VAR = 1) is wished,
proceed in the following way:
b. $FW_FLOW_LIM[2] := 65535 -- output port maximum value (16 bit in the example)
203
Comau Robotics Product Instruction
– The program calling FLOW_MOD_ON with a certain index, must be the same
which calls FLOW_MOD_OFF with such an index.
– When the program is deactivated, the algorithm too is deactivated and the table is
automatically released (implicit FLOW_MOD_OFF).
NOTE
For detailed information about FLOW_MOD_ON and FLOW_MOD_OFF built-in
routines and their usage, refer to PDL2 Programming Language manual - chap.
BUILT-IN ROUTINES LIST.
204
Comau Robotics Product Instruction
14.1 Introduction
Current chapter summarizes further information related to the use of COMAU robots.
They are classified as being with spherical wrist or with non-spherical wrist.
COMAU robots which are involved in current chapter are shown in the following
Tab. 14.1 - Involved Robot models on page 205:
205
Comau Robotics Product Instruction
14.2 Glossary
TCP - Tool Center Point. It is the point at the end of the tool and it is geometrically
described by the $TOOL system variable or by the Tool tables in DATA environment. It
can be local or remote. For SMART NJ4(L) robot the TCP position, with reference to the
robot axes, causes some limitations to the robot working area.
WCP - Wrist Center Point. For spherical wrist robots, WCP is the intersection point
between joint 5 and joint 6; for SMART NJ4 robots (non-spherical wrist) there isn’t a true
WCP: such a word means the intersection point between joint 4 and joint 5.
1. Wrist offset
RRS - Robot Realistic Simulation. It is a protocol that defines some rules to implement
a software sequence that allows a robotics CAD simulator (i.e. Robcad) to move the
robot using the same algorithms than the original Controllers. Such a software sequence
is called RCS module. It is provided by Comau and integrated into the simulators.
Nominal position - This term refers to machines with the Kinematics compensation
algorithm. The nominal position is the destination where the robot must move its TCP.
It usually comes from a CAD simulation where the model of the robot is theoretical,
without mechanical strains due to payload, calibration errors, etc.
Internal representation of the robot position - This term refers to machines with the
Kinematics compensation algorithm. The internal representation of the robot position is
the one coming out from the encoders/resolvers. It is also the position where the robot
is really moved to compensate the differences between the real machine and the
theoretical robot model.
Cartesian position or POSITION - It is a variable that describes the target position for
a MOVE statement by referring to a Cartesian frame of reference. In C5GPlus each
POSITION has three components for the location (X, Y, Z), three angles for the
orientation and a configuration string.
Joint position or JOINTPOS - It is a variable that describes the target position for a
MOVE statement by reporting the value of each robot axis.
206
Comau Robotics Product Instruction
207
Comau Robotics Product Instruction
behaviors depending on the shape of the wrist. Further information are described in the
following par. 14.6.1.4 Axis 5 singularity on page 212 for non-spherical wrist robots and
par. 14.6.2.1 Axis 5 singularity on page 218 for spherical wrist robots.
Nevertheless there is a general feature available with Comau C5GPlus Robot Controller
that allows the robot to achieve high performances while moving through axis 5
singularity (wrist singularity).
It is possible to enable this type of evolution by setting the $ORNT_TYPE system
variable to the WRIST_JNT value ($ORNT_TYPE:=WRIST_JNT). It is advisable to
enable this modality only with moves that have to go through the singularity because
the default evolution modality, RS_WORLD, generally achieves the best behavior from
the application point of view. The RS_WORLD modality allows either maintaining
constant orientation, if necessary, or changing it by keeping the tool on a plane.
Nevertheless the RS_WORLD evolution doesn't allow the robot always to move through
the singularity zone. In this cases the WRIST_JNT modality performs the best behavior.
The effect is that the speed is maintained at a high value while the orientation of the tool
slightly looses the plane.
The evolution can also be very big if the starting and ending point are very far from the
singularity zone. This can happen because the WRIST_JNT evolution implements an
algorithm that maintains the TCP exactly on the Cartesian path while the wrist axes are
moved from the initial to the final position in joint evolution.
The effect of WRIST_JNT modality is generally good from the application point of view.
In some particular cases it would be necessary to follow additional programming rules
explained later in this document (see par. 14.7 Programming rules for non-spherical
wrist robots (SMART NJ4) on page 218).
The only limitation referring to the WRIST_JNT is that it is not allowed to continuously
move (MOVEFLY TO ...) between two movements with different evolution type. So if a
move has the standard RS_WORLD evolution and the next is WRIST_JNT, either the
fly must be removed or the evolution type of the first one must be set to WRIST_JNT too.
208
Comau Robotics Product Instruction
The following picture shows an example of the maximum angular error that is applied
to the orientation while entering different circular zones around the singularity point.
These data has been computed with a tool exactly aligned with axis 6. Many vertical
trajectories have been executed around the calibration position of the SMART NJ4
model, properly programming the points and moving in WRIST_JNT evolution method
through the singularity zone.
209
Comau Robotics Product Instruction
210
Comau Robotics Product Instruction
The WRIST_JNT evolution can be set for Cartesian manual motion, from the Motion
Page, Basic sub-page, COORD field of the Teach Pendant. On theTeach Pendant
status bar the following words will be seen: Wr-Base, Wr-Tool, Wr-Ufrm, Joint.
WRIST_JNT modalities allow TCP to move along a straight line without moving wrist
axes, by pressing the first three jog buttons: +1X/-1X, +2Y/-2Y, +3Z/-3Z. On the other
hand, pressing jog buttons +4/-4, +5/-5, or +6/-6, it is possible to move a single wrist axis
while maintaining TCP steady. These modalities are useful to go through the singularity
because they allow the robot to be jogged in a Cartesian way also if axis 5 is exactly at
0 degrees.
211
Comau Robotics Product Instruction
1a - 1b: difference between the two flange positions, due to the orientation approximation
2a - 2b: orientation approximation
[ -6; +6 ]
Forbidden ranges [ -174; -186 ]
[ +174; +186 ]
[ -7; +7 ]
Safe ranges [ -173; -187 ]
[ +173; +187 ]
212
Comau Robotics Product Instruction
Error messages
– 36996 (0x9084) "Wrist axis at undefined position" before starting the move.
– 62479 (0xf40f) "Wrist axis at undefined position" while moving into the forbidden
zone.
– 40014 (0x9c4e) "Wrist axis at undefined position" while teaching/modifying a point.
– RCS MODULE - Status returned: -59 "The specified position is singular".
213
Comau Robotics Product Instruction
These areas can be reached in a joint way; the limitations only refer to Cartesian
movements
Error messages
– 36994 (0x9082) "Pos out of range" before starting the move.
– 62477 (0xf40d) "Cartesian position out of range" while moving into the forbidden
zone.
– 40012 (0x9c4c) "Pos out of range" while teaching/modifying a point.
– RCS MODULE - Status returned: -52 "Cartesian position is out of work
range".
214
Comau Robotics Product Instruction
user. They depend on the position of the TCP with respect to the robot axes. For this
reason they are related to the current dimension of the tool (both remote and local).
There is a forbidden zone when the TCP tries to go in the back of the robot with respect
to axis 1. The width of this area is approximately 150 mm on both sides.
Approaching this area the approximation on the orientation increases up to some
degrees.
215
Comau Robotics Product Instruction
Error messages
– 36995 (0x9083) "Axis 1 at undefined position" before starting the move.
– 62478 (0xf40e) "Axis 1 at undefined position" while moving into the forbidden zone.
– 40013 (0x9c4d) "Axis 1 at undefined position" while teaching/modifying a point.
– RCS MODULE - Status returned: -52 "Cartesian position is out of work
range".
1. TCP inside the forbidden zone 2. remote TCP inside the forbidden zone
216
Comau Robotics Product Instruction
Error messages
– 36994 (0x9082) "Pos out of range" before starting the move.
– 62477 (0xf40d) "Cartesian position out of range" while moving into the forbidden
zone.
– 40012 (0x9c4c) "Pos out of range" while teaching/modifying a point.
– RCS MODULE - Status returned: -52 "Cartesian position is out of work
range".
Error messages
– 36995 (0x9083) "Axis 1 at undefined position" before starting the move.
– 62478 (0xf40e) "Axis 1 at undefined position" while moving into the forbidden zone.
– 40013 (0x9c4d) "Axis 1 at undefined position" while teaching/modifying a point.
– RCS MODULE - Status returned: -52 "Cartesian position out of work range".
217
Comau Robotics Product Instruction
SMART NJ4 robot has been designed for integration of cabling and ease of off-line
programming. For this reason it has a fixed wrist configuration to give the needed space
and distances to include pre-twisted cables and hoses through the wrist. Following this
concept, such a robot model is completely without any external cable on the forearm,
avoiding the unknown behavior of the cables with conventional robots while moving
close to the wrist singularity.
The disadvantage is that SMART NJ4 robot has a larger singularity zone around axis 5
with respect to spherical wrist robots (see par. 14.6.1.4 Axis 5 singularity on page 212).
The following programming rules explain how it is possible to perform application
processes staying away from the singularity zone or moving through it with the
WRIST_JNT feature of the C5GPlus Robot Controller.
218
Comau Robotics Product Instruction
page 207 it is possible to go through this zone also following a Cartesian path, but in
most cases it is possible to stay away from the singularity. There are three methods to
achieve this task:
– Changing the orientation of the points along the path;
– Properly designing the work-cell layout;
– Modifying tool inserting a small angle between robot flange and tool flange.
The same methods are useful to solve problems with points which are very close to the
working area borders.
In these cases it is always possible to modify the points (typically POSITIONS) only
adding a small rotation around the approach direction. With the real robot this can be
done by jogging in the TOL modality (jogging with reference to the tool frame) and
pressing jog button +6/-6 (rotation around Z axis that is typically the approach vector); if
the position comes from a CAD system or it is directly written in the program, just modify
the third Eulerian angle e3 (POS(x, y, z, e1, e2, e3, ’’)). On the real robot, a small
rotation of 5° up to 10° allows the wrist to go away from the singularity zone.
The rotation takes more effect if the tool approach vector is not parallel to axis 6 of the
robot. If they are parallel, something can still be done, provided that the TCP is not
aligned along axis 6.
The following pictures show three different cases with a spot welding gun.
219
Comau Robotics Product Instruction
Note that rotating around the approach vector is not the only way to stay away from the
singularity zone. Any rotation works and never changes the TCP position in x, y, z.
When the application does not strictly force the orientation of the tool, a small change
could considerably improve the wrist position and the robot performances.
220
Comau Robotics Product Instruction
– the pallet is placed at the same level of the robot calibration position;
– the pallet is placed exactly in front of the robot.
To eliminate any singularity problems, the programmer has to remove al least one of the
listed above conditions. For example, putting the pallet in a lower position or mounting
the robot in a higher place the robot will be able to reach all the positions on the rack
without any problems (see next picture).
221
Comau Robotics Product Instruction
Similarly it is possible to solve any singularity problem by laterally moving the rack. In
this case it is not necessary to change the height.
In any case the best solution can be found by means of an off-line simulation. In this way
it is possible to calculate the minimum displacement of the rack, either sideways, or up,
or down .
It is important to remember that SMART NJ4 models gives big advantages during
simulation because there aren’t any external cable on the forearm. This allows solving
any reachability problem during the work-cell design phase. At this time it will be
possible to choose the best location for the elements, the best gripper shape and robot
paths.
14.7.1.3 Modifying tool inserting a small angle between robot flange and tool
flange
The gripper design is very important to improve the robot capabilities. This is true for all
the robot models. In addition to this, for SMART NJ4 robots the gripper shape can solve
any problem with singularity.
A small angle between the robot flange and the gripper is recommended in order to
considerably improve the reachability of singular positions.
222
Comau Robotics Product Instruction
As shown in the above pictures, such a solution allows the robot to follow a linear
trajectory exactly in front of it from up to down. It also allows to reach all the available
working area always maintaining the frontal position and the same orientation.
The same applies to spot-welding guns. If the work-cell layout is already defined, a small
angle can considerably improve the behavior of the robot. This method can also solve
the worst situations where the approach vector of the gun is exactly aligned with axis 6
(see par. 14.7.1.1 Changing the orientation of the points along the path on page 219).
Of course, the use of an off-line simulation simplifies the chose of the angle and allows
an optimization of all the details of the application.
223
Comau Robotics Product Instruction
224
Comau Robotics Product Instruction
14.7.2 Conclusions
Many methods and hints have been given to increase the capabilities of SMART NJ4
robots inside the singularity zone. It has been demonstrated that in the most cases it is
possible to stay out of this zone, getting the best performances from the robot anyway.
When it is absolutely necessary to go through the singularity, WRIST_JNT modality
allows the robot to move at a very high speed with an angular error that can be accepted
in the most processes. In any case the simulation tools can be effectively used to obtain
the best results from the system.
225
Comau Robotics Product Instruction
Collision Detection
The option code is CR17926201.
15.1 Introduction
The Collision Detection algorithm (optional feature) allows the system to stop the robot
arm motion, as soon as any noise force on joints takes effect.
Such a capability can be enabled and disabled by the user, either from a Program
statement or a system Command
VERY IMPORTANT! Remeber that the Collision Detection functionality has been
designed to limit any damages to the robot mechanics and therefore to its equipment, in
case of collision. So, since it is a functionality that immediately acts to limit the collision
effect, it is expectable it also limits damages to the equipment of the cell where the robot
works in. But it is important to understand that the Collision Detection functionality has
not been designed to protect the operator in case of bad/wrong use of the robot.
226
Comau Robotics Product Instruction
So far, all Comau robots are provided with dynamic model; auxiliary axes are not.
Any auxiliary axes affecting the arm movement (e.g. a rail) could worsen the collision
functionality performance, up to cause false collisions to be detected.
For such a reason, the user should check that the current payload has properly been
identified, before activating the Collision Detection functionality.
It is then NEEDED that the payload is properly identified by means of its own variables:
– $TOOL_MASS
– $TOOL_CNTR
– $TOOL_INERTIA.
It is up to the user to
– insert the nominal data or use the inserire i dati nominali oppure utilizzare il
Automatic Payload identification (optional feature) program,
– update the payload values, when using applications in which the payload changes
during the working cycle (e.g. Pick & Place).
227
Comau Robotics Product Instruction
(e.g. robot collision with the surrounding environment, wire stuck in a welding
operation, etc),
– SEARCH - special mode to manage specific object search and pick applications,
in order to handle light collisions whose occurrence is expected a priori (not
accidental collisions).
For any further operational information and details, refer to par. 15.4 Collision Detection
working modes on page 232.
15.2.5 CD_SET
Built-in routine which allows to enable, disable, change modality, set the sensibility of
the Collision Detection functionality.
It affects the functionality performance both in COLLISION mode and in SEARCH mode.
For any further information, refer to PDL2 Language manual, chap.Built-in Routines
List, par.CD_SET Built-in Procedure.
15.2.6 $COLL_ENBL
When this predefined variable is TRUE, the Collision Detection functionality is enabled,
with immediate effect on any movements. It is a field of $CRNT_DATA.
By default, it is NOT reset (i.e. put to FALSE) at the DRIVE OFF; the algorithm remains
enabled until the user does not disable it intentionally, putting $COLL_ENBL flag to
FALSE.
Disabling at the DRIVE OFF can also be set to be automatic, by means of
$A_ALONG_1D[12] predefined variable.
Such a variable value is meaningful both in COLLISION mode and in SEARCH mode.
228
Comau Robotics Product Instruction
15.2.7 $A_ALONG_1D[12]
By default, the Collision Detection functionality is NOT reset at the DRIVE OFF, it
remains enabled until the user does not disable it intentionally. Anyway the user can
ask for it to be automatically disabled at DRIVE OFF, by setting to 1 the bit 10 of such a
system variable, using BIT_SET built-in routine:
BIT_SET($ARM_DATA[num_arm].A_ALONG_1D[12], 10)
15.2.8 $COLL_EFFECT
It indicates the detected collision effect on the arm status. Refer to par. 15.4.1.2 Severity
of the collision error on page 232 for further details.
Such a variable value is meaningful in COLLISION mode only.
15.2.9 $A_AREAL_1D[57]
The meaning of this variable value is described in par. 15.4.2 SEARCH mode on
page 233
$ARM_DATA[num_arm].A_AREAL_1D[57]:= vr_timeout
229
Comau Robotics Product Instruction
NOTE THAT
once enabled, the general issue is that the Collision Detection functionality remains
enabled until
– the user disables it intentionally (Disabling)
– the system is restarted
– the motors are put to DRIVE OFF (just in case of bit 10 set to 1 in
$A_ALONG_1D[12]).
– Enabling
– Disabling.
15.3.1 Enabling
Use one of the following ways to enable the Collision Detection functionality:
– set $COLL_ENBL predefined variable to TRUE
$CRNT_DATA[arm_num].COLL_ENBL := TRUE -- enable functionality
– use CD_SET built-in routine with whichever parameter (except COLL_DSBL)
CD_SET(COLL_HIGH, <$ARM>)
CD_SET(COLL_MEDIUM, <$ARM>)
CD_SET(COLL_LOW, <$ARM>)
CD_SET(COLL_SEARCH, <$ARM>).
– enable it using Motion Page - Status - Collision Detection (optional feature) (as
highlighted in the figure below).
CAUTION
Remember that, at STARTUP time, the algorithm is NOT automatically enabled.
15.3.2 Disabling
The Collision Detection functionality can be disabled in one of the following ways:
– put $COLL_ENBL predefined variable to FALSE
230
Comau Robotics Product Instruction
As already stated, by default the Collision Detection functionality is NOT reset by the
system at each DRIVE OFF; it remains enabled instead until the user does not disable
it intentionally, by setting such a flag to FALSE, unless bit 10 of $A_ALONG_1D[12] is
used.
231
Comau Robotics Product Instruction
In the last case above, the robot DOES NOT STOP, it continues the programmed
movement: it is the care of the user to properly handle the triggered event, by deleting
the current motion which otherwise would continue moving towards the obstacle, and
programming the new trajectory.
A sample program is provided in par. 15.6.2 Managing the ‘detected collision’ event on
page 237.
232
Comau Robotics Product Instruction
The SEARCH mode is dedicated to object search and pick specific applications; for
such a reason, it must be used with very well defined robot motion features which avoid
false collisions arise and are compatible with the occurrence of an expected collision
and its management, preventing any damages to the gripper or the work-piece.
It is then suggested to use the SEARCH mode with not more than 15% speed and
acceleration/deceleration overrides ($ARM_SPD_OVR, $ARM_ACC_OVR and
$ARM_DEC_OVR). Note that the values may change depending on the machine model.
233
Comau Robotics Product Instruction
The robot stop must then be explicitly handled by the user in a dedicated CONDITON
which monitors it.
Example:
CONDITION[2]NODISABLE:
WHEN EVENT 197 DO
LOCK -- locks the robot
CANCEL CURRENT -- cancels the current movement
...
...
...
ENDCONDITION
234
Comau Robotics Product Instruction
False collision
This is a collision detected by the Collision Detection functionality, but actually never
happened. The cause could be choosing a too high sensitivity for the associated
movement (e.g. a movement with high acceleration/deceleration.
This could happen if the sensitivity (COLL_LOW, COLL_MEDIUM, COLL_HIGH) has
been chosen without a proper analisys of the collision type to be protected from and then
it turns out to be too high for some specific movements in the program.
Note that increasing the sensitivity is directly proportional to the probability of false
collisions detection.
The user must know very well his/her own needs for the Collision Detection usage.
If it is an immediate and simple usage, the suggested strategy is to enable the
functionality and then to use, for example, one threshold only for any movement types
(e.g. trying with COLL_MEDIUM, then setting to COLL_LOW if any false collisions
occur).
The lack of such a strategy is that the chosen sensitivity is not fine tuned to have high
performancies. The merit, instead, is the fast setting.
235
Comau Robotics Product Instruction
PROGRAM collision
VAR pnt0001j, pnt0002j, pnt0003j, pnt0004j : JOINTPOS FOR ARM[1]
ROUTINE set_coll_dsbl
BEGIN
CD_SET (COLL_DSBL)
END set_coll_dsbl
ROUTINE set_coll_high
BEGIN
CD_SET (COLL_HIGH)
END set_coll_high
BEGIN
CONDITION[1] :
WHEN AT START DO -- set high sensitivity at motion start
set_coll_high
ENDCONDITION
CONDITION[2] :
WHEN AT END DO -- disable the Collision functionality at motion end
set_coll_dsbl
ENDCONDITION
CD_SET (COLL_DSBL)
MOVE TO $CAL_SYS
...
CYCLE
CD_SET (COLL_LOW)
MOVE TO pnt0001j
MOVE TO pnt0002j
236
Comau Robotics Product Instruction
PROGRAM colltouch
VAR pnt0006p: POSITION
BEGIN
CONDITION[1] NODISABLE:
WHEN EVENT 94 DO -- U4 key pressed event
UNLOCK -- unlock the machine
RESUME -- for next restart
...
ENDCONDITION
CONDITION[2] NODISABLE:
WHEN EVENT 197 DO -- upon detected collision event
LOCK -- lock the machine
CANCEL CURRENT -- cancel the current movement
...
ENDCONDITION
...
ENABLE CONDITION[1]
ENABLE CONDITION[2]
$COLL_EFFECT:=2
CD_SET (COLL_LOW)
CYCLE
MOVE TO pnt0006p
...
END colltouch
237
Comau Robotics Product Instruction
ROUTINE manage_collision
BEGIN
LOCK -- lock the machine
CANCEL CURRENT -- cancel current movement
CD_SET (COLL_MEDIUM) -- resume is performed at press end, after the waiting time
UNLOCK
RESUME
END manage_collision
ROUTINE set_coll_search
BEGIN
CD_SET (COLL_SEARCH) -- activate SEARCH mode
END set_coll_search
BEGIN
CONDITION[1]:
WHEN EVENT 197 DO -- detected collision event 197
manage_collision
ENDCONDITION
CONDITION[2] :
WHEN AT START DO -- activate SEARCH mode at MOVE start
set_coll_search
ENDCONDITION
CD_SET (COLL_LOW)
move to $cal_sys
...
CYCLE
MOVE TO jnt0001J -- approach movements
MOVE TO jnt0002J
...
MOVE LINEAR TO pick_jpos, -- object search movement
WITH CONDITION [1],
WITH CONDITION [2],
WITH $ARM_SPD_OVR = 15,
WITH $ARM_ACC_OVR = 15,
WITH $ARM_DEC_OVR = 15,
ENDMOVE
... -- handling workpiece pick
ToolFrame (4, 1) -- new tool, including the workpiece data
238
Comau Robotics Product Instruction
16.1 Introduction
This chapter is addressed to the installers and maintenance engineers of the automated
cell, to supply them with the use procedures and the information needed for the Control
Unit software configuration so to obtain the correct management of the positioner
equipped with robot external axes.
In particular the need is underlined to carry out the positioner configuration customising
when this is not a standard product.
In any case, even with a standard positioner, the radius of the part overall dimensions
always has to be defined.
The positioners are divided into families, and a paragraph is dedicated to each of them.
The procedures and conventions contained in the following paragraphs are very
important to ensure the consistency of the installation and above all the correct
functioning of the system when, for example, the cooperative motion is used, i.e. the
enslavement of a robot in the position of the part to be processed mounted on the
positioner.
It is the responsibility of the positioner designer to check and guarantee that the unit
operates in conformity with the relevant standards. In particular it must be verified that
in the following situations:
– normal use (Automatic/Programming),
– emergency stop,
– safety braking,
– Hold,
– Drive off,
– impact on any mechanical pads
the unit behaves in a manner that complies with current safety standards.
16.2 Summary
239
Comau Robotics Product Instruction
For special conventions and specifications of each positioner, see the relevant
paragraph for that particular model or family.
The directions of the positioner axis rotations cannot be chosen at will: they have to
strictly follow the convention in which the axes have a positive anticlockwise direction (in
relation to the rotation axis).
In other words they have to follow the right-hand rule referring to the direction indicated
in Fig. 16.1 in correspondence to the axes: pointing the thumb of the right hand in the
direction of the dashed line arrow (that represents each axis), the fingers are to close in
the positive direction of the rotating axis. For this description, the orbital positioner has
been chosen because it is particularly representative.
240
Comau Robotics Product Instruction
Positioners BASE automatic calculation on page 582 to calculate the base of the
positioners ($BASE if the positioner is an independent arm or $AUX_BASE if it is a
group of auxiliary axes) are to be mechanically positioned according to the following
convention (see Fig. 16.1):
– P1 and P3 are to be chosen along the Yflange axis, with positive direction from P1
to P3 (P1 in the negative part of Yflange and P3 in the positive part);
– The origin of the flange reference Oflange is to coincide with the mean point of
segment P1-P3;
– P2 is to be chosen so that the segment between Oflange and P2 is perpendicular to
P1-P3.
1 - axis 1 2 - axis 2
241
Comau Robotics Product Instruction
where:
250 = maximum speed allowed as per standard [mm/s]
955 = numeric conversion factor
Rt = motor transmission ratio [Mt/axt]
Vm = motor maximum speed [Rpm]
r = part overall dimension radius [mm]
Note the convention that concerns points P1, P2, P3 described in the Chap. TOOL,
UFRAME and Positioners BASE automatic calculation on page 582 for the $BASE (or
$AUX_BASE) calculation of the positioners.
Note also how the axis has an anticlockwise direction of rotation to comply with the
right-hand rule convention (see Axis rotation directions).
242
Comau Robotics Product Instruction
If, operating with the Teach Pendant, the controlled axis moves in the opposite direction
to this rule, the transmission ratio sign must be changed using the Teach Pendant
16.5.2 Calibration
The lathe positioner does not require special rules for the calibration position.
To configure such positioners, see C5GPlus Control Unit Use Manual, Setup page,
par. 5.17.2.15 Posit on page 278.
For these types of positioners no value has to be inserted regarding the length of the
axes.
On the other hand, when programming, it is necessary to calculate the speed to be
attributed to the positioner axis, according to the dimension of the part that is mounted
on the bearing plate, so that the maximum tangential speed does not exceed 250 mm/s
(see standards in force). Therefore it is necessary first of all to measure the maximum
radius r of the part to be machined, as indicated in Fig. 16.3.
Next, the configuration software, on the Teach Pendant, calculates the manual mode
speed value.
A table summarising the mechanical data to be entered is shown below, assuming that
the positioner is axis 7.
For very long lathes, it is possible to mount the robot on an SCP slide or CRP column
integrated axis; in this case the integrated axis will be axis 7, whereas the lathe will
become axis 8
243
Comau Robotics Product Instruction
16.6.1.2 Calibration
The calibration conventions are the following:
– the first axis is to calibrate so that the Zflange axis is aligned to Zbase.
– the second axis is to calibrate with all the flange reference axes parallel to the
corresponding axes of the base reference; in particular Yflange is to be parallel to
Ybase and have the same direction.
Both of these conditions are important: an approximation in relation to one of these will
jeopardise the machine precision during cooperative motion (the robot does not hold
the position on the part).
244
Comau Robotics Product Instruction
Also the convention should be borne in mind that concerns points P1, P2, P3 described
in the Chap. TOOL, UFRAME and Positioners BASE automatic calculation on page 582
to calculate $BASE (or $AUX_BASE) of the positioners (see Fig. 16.4).
To configure such positioners, see C5GPlus Control Unit Use Manual, Setup page,
par. 5.17.2.15 Posit on page 278.
The parameters required for the correct kinematic description of the positioner (length
of axes) are indicated in Fig. 16.5. This shows a generic positioner indicating the
dimensions that distinguish it and the PDL2 variables that contain the parameters. Note
that the model requires that axes 1 and 2 intersect (there must be no offset).
It is also necessary to calculate the speed to be attributed to the two positioner axes
being programmed, according to the dimension of the part that is mounted on the
bearing plate, so that the maximum tangential speed does not exceed the set value of
250 mm/s. Therefore it is necessary to first measure the maximum radii r1 and r2 of the
part to be machined, as indicated in Fig. 16.5.
245
Comau Robotics Product Instruction
For example, for a positioner formed by auxiliary axes 7 and 8: ax_logic1 = 7 e ax_logic2 = 8
If the part has overall dimensions that are less than the diameter of the bearing plate, r2
is to be equal to the radius of the bearing plate. This is to always consider the worst case
of part maximum overall dimensions or of the mechanical structure of the positioner in
motion.
Next, the configuration software, on the Teach Pendant, calculates the manual mode
speed value.
Two tables follow, summarising the useful mechanical data, assuming that the
positioner is handled with auxiliary axes 7 and 8 respectively.
246
Comau Robotics Product Instruction
16.6.2.1.1 Calibration
The conventions for the calibration are as follows:
– The first axis is to be calibrated so that the Zflange axis is aligned to Zbase;
– The second axis is to calibrate with all the flange reference axes parallel to the
corresponding base reference; in particular Yflange is to be parallel to Ybase and
have the same direction.
Both of these conditions are important: an approximation in relation to one of these will
jeopardise the machine precision during cooperative motion (the robot does not hold the
position on the part.).
Also the convention is to be borne in mind that concerns points P1, P2, P3 described in
Chap. TOOL, UFRAME and Positioners BASE automatic calculation on page 582 to
247
Comau Robotics Product Instruction
calculate the $BASE (or $AUX_BASE) of the positioners (see Fig. 16.6).
1 - axis 1 2 - axis 2 Xb, Yb, Zb, Ob= Xbase, Ybase, Zbase, Obase
Xf, Yf, Zf, Of = Xflange, Yflange, Zflange, Oflange
To configure such positioners, see C5GPlus Control Unit Use Manual, Setup page,
par. 5.17.2.15 Posit on page 278.
The parameters required for the correct kinematic description of the positioner (length
of axes) are indicated in Fig. 16.7. They show a generic positioner with the dimensions
that distinguish it and the PDL2 variables that contain the parameters. As can be seen,
a length of the arm that carries axis 2 is not available, but only the two heights; this is
possible because the positioner base reference system is centred on rotation axis 2 (see
Fig. 16.7). ). Note also that the value for L2 is to be negative to indicate that the flange
(axis 2) is lowered in relation to axis 1.
It is also necessary to calculate the speed to be attributed to the two positioner axes
being programmed, according to the size of the part mounted on the bearing plate, so
that the maximum tangential speed does not exceed the set speed of 250 mm/s. To this
purpose it is necessary first of all to measure the maximum r1 and r2 radii of the part to
be machined, as indicated in Fig. 16.7.
248
Comau Robotics Product Instruction
For example, for a positioner formed by auxiliary axes 7 and 8: ax_logic1 = 7 e ax_logic2 = 8
If the part has overall dimensions that are less than the diameter of the bearing plate, r2
is to be equal to the radius of the bearing plate; in the same way for r1 a minimum value
is to be used equal to r1m to take into consideration the mechanical structure of axis 7.
This is to always consider the worst case of part maximum overall dimensions or of the
mechanical structure of the positioner in motion
Next, the configuration software, on the Teach Pendant, calculates the manual mode
speed value.
Two tables follow that summarise the useful mechanical data, assuming that the
positioner is handled with auxiliary axes 7 and 8 respectively.
249
Comau Robotics Product Instruction
It is possible to manage a positioner with 2 degrees of freedom of "L" type with a variable
length of the second axis (L2 in the schemes of documentation) manually changeable,
by setting the dedicated variable
$CNRT_DATA[arm_num].VAR_OFST[n_ax]
at the beginning of the motion program.
This setting does not need a re-configuration of the positioner or a saving and reboot.
250
Comau Robotics Product Instruction
1 - axis 1 2 - axis 2
Xb, Yb, Zb, Ob= Xbase, Ybase, Zbase, Obase Xf, Yf, Zf, Of = Xflange, Yflange, Zflange, Oflange
16.7.2 Calibration
The conventions for the calibration are as follows:
– the first axis is to be calibrated so that the Zflange axis is parallel to Zbase;
– the second axis is to calibrate with all the flange reference axes parallel to the
corresponding ones of the base reference; in particular Yflange is to be parallel to
Ybase and have the same direction.
Both of these conditions are important: an approximation in relation to one of these will
jeopardise the machine precision during cooperative motion (the robot does not hold the
position on the part).
Also the convention is to be borne in mind that concerns points P1, P2, P3 described in
the Chap. TOOL, UFRAME and Positioners BASE automatic calculation on page 582 to
calculate the $BASE (or $AUX_BASE) of the positioners (see Fig. 16.8).
To configure such positioners, see C5GPlus Control Unit Use Manual, Setup page,
par. 5.17.2.15 Posit on page 278.
The parameters required for the correct kinematic description of the positioner (length
of axes and angles) are shown in the Fig. 16.9. It illustrates a generic positioner
indicating the dimensions that distinguish it and the PDL2 variables that contain the
parameters.
It is also necessary to calculate the speed to be attributed to the two positioner axes
251
Comau Robotics Product Instruction
being programmed, according to the dimension of the part that is mounted on the
bearing plate, so that the maximum tangential speed does not exceed 250 mm/s.
Therefore it is necessary first of all to measure the maximum radii r1 and r2 of the part
to be machined, as indicated in the following Fig. 16.9.
1 - part to be machined
$AX_LEN[ax_logic1] = L1 $AX_LEN[ax_logic2] = L3
$AX_OFST[ax_logic1] = alpha, with alpha that is not 90° $AX_OFST[ax_logic2] = L2
For example, for a positioner formed by auxiliary axes 7 and 8: ax_logic1 = 7 e ax_logic2 = 8
If the part has overall dimensions that are less than the diameter of the bearing plate, r2
is to be equal to the radius of the bearing plate r2m; in the same way for r1 a minimum
value is to be used equal to r1m to take into consideration the mechanical structure of
axis 7. This is to always consider the worst case of part maximum overall dimensions or
of the mechanical structure of the positioner in motion..
Next, the configuration software, on the Teach Pendant, calculates the manual mode
speed value.
Two tables follow, summarising the useful mechanical data, assuming that the
positioner is handled with auxiliary axes 7 and 8 respectively.
Note that the absolute value of the alpha angle is to be inserted even if the measurement
unit of the axis offset is in millimetres.
252
Comau Robotics Product Instruction
On the Teach Pendant the linear axis can be moved in Cartesian mode, using the 7+
and 7- keys and it is not possible to enable or disable the slide integration in real time (a
Controller restart is needed).
253
Comau Robotics Product Instruction
standing with the base always perpendicular to the slide motion axis.
Vice-versa 4 robot base orientation positions are allowed (at 90° intervals ) in relation
to the slide base (see Fig. 16.12).
16.8.1.2 Calibration
The slide calibration position is fixed close to the negative limit of the stroke and marked
with a zero notch.
Since this is an integrated axis it is not treated as a positioner for the part to be machined
and therefore it is not necessary to pick up points P1, P2 and P3 described in the
Chap. TOOL, UFRAME and Positioners BASE automatic calculation on page 582.
To configure such positioners, see C5GPlus Control Unit Use Manual, Setup page,
par. 5.17.2.17 Rail on page 282.
The parameters needed for the correct kinematic description of the integrated slide are
indicated in Fig. 16.11.
Next, the configuration software, on the Teach Pendant, calculates the manual mode
speed value.
A table follows summarising the useful mechanical data, bearing in mind that it is
mandatory that the integrated slide is handled with auxiliary axis 7.
254
Comau Robotics Product Instruction
Besides the L and H geometrical data indicated above, for the complete kinematic
description of the integrated slide also the assembly angle is to be defined:
– 180° rotation ==> Xrobot_base in opposite direction to Xslide_base;
– 0° rotation ==> Xrobot_base in the direction of Xslide_base;
– 270° rotation ==> Xrobot_base in opposite direction to Yslide_base ;
– 90° rotation ==> Xrobot_base in the direction of Yslide_base;
255
Comau Robotics Product Instruction
On the Teach Pendant the rotating axis can be moved in Cartesian mode, using the 7+
and 7- keys and it is not possible to enable or disable the column integration in real time.
1 - column rotation 2 - column base reference 3 - robot base Xb, Yb, Zb = Xbase, Ybase, Zbase
256
Comau Robotics Product Instruction
16.8.2.2 Calibration
The column calibration position is determined half way along the useful stroke and
marked by a zero notch. As this is an integrated axis it is not treated as a positioner of
the part to be machined and therefore it is not necessary to find points P1, P2 and P3
described in the Chap. TOOL, UFRAME and Positioners BASE automatic calculation on
page 582.
1 - column right-hand rotation R = column radius H = column height Xb, Yb, Zb = Xbase, Ybase, Zbase
The axis is right-hand: if it is not, change the sign of the transmission ratio.
A table follows, summarising the useful mechanical data, taking into account that it is
mandatory that the integrated column is handled with auxiliary axis 7.
Besides the R and H geometrical data indicated above, for the complete kinematic
description of the integrated column, the following Boolean data also has to be defined :
– an UpDown bit that indicates whether the robot is placed facing upward (TRUE) or
if it is overturned (FALSE) (as in Fig. 16.14);
– two Boolean values that indicate how the robot base is oriented in relation to the
column base (this convention has been kept identical to that required for the
257
Comau Robotics Product Instruction
Usually, on the Teach Pendant, the auxiliary axes cannot be jogged in cartesian mode
(TOOL, BASE, UFRAME): in case of integrated portals it is allowed to joint move the
linear axes when jog is set to cartesian, using the keys corresponding to the axes,
obtaining the effect of moving the joint keeping still the robot TCP position.
Furthermore, to help in programming, the JPAD keys have been re-configured in order
to move each of the portal individual axis.
For further information related to auxiliary axes and JPAD, refer to C5GPlus Control Unit
Use manual - par. 5.3.1.2 Black keys on page 59 - Chap. TP5 Teach Pendant on
page 52.
258
Comau Robotics Product Instruction
16.8.3.2 Calibration
The calibration position of the Portal, is usually defined close to the negative stroke of
each auxiliary axis, marked with a zero notch.
259
Comau Robotics Product Instruction
To configure the 3 linear axes portal, refer to C5GPlus Control Unit Use manual, Setup
page, par. 5.17.2.14 Portal on page 277.
A table follows, summarising the useful mechanical data, taking into account that it is
mandatory that the first axis of the Portal is number 7 and the next ones are in
sequence.
Fig. 16.17- Parameters for the kinematic description of the 3 linear axes
Portal
Besides the geometrical data indicated above, for the complete kinematic description of
the 3 linear axes Portal, also the assembly angle of the robot base on the portal flange
is to be defined.
260
Comau Robotics Product Instruction
Usually, on the Teach Pendant, the auxiliary axes cannot be jogged in cartesian mode
(TOOL, BASE, UFRAME): in case of integrated portals it is allowed to joint move the
linear axes when jog is set to cartesian, using the keys corresponding to the axes,
obtaining the effect of moving the joint keeping still the robot TCP position.
Furthermore, to help in programming, the JPAD keys have been re-configured in order
to move each of the portal individual axis.
For further information related to auxiliary axes and JPAD, refer to C5GPlus Control Unit
Use manual - par. 5.3.1.2 Black keys on page 59 - Chap. TP5 Teach Pendant on
page 52.
261
Comau Robotics Product Instruction
16.8.4.2 Calibration
The calibration position of the Portal, is usually defined close to the negative stroke of
each auxiliary axis, marked with a zero notch.
To configure the 2 linear axes portal, refer to C5GPlus Control Unit Use manual, Setup
page, par. 5.17.2.14 Portal on page 277.
The parameters needed for the 2 linear axes Portal kinematic description are indicated
in Fig. 16.19.
Then, the configuration software available on the Teach Pendant calculates the manual
mode speed value.
A table follows, summarising the useful mechanical data, taking into account that it is
mandatory that the first axis of the Portal is number 7 and the next one is in sequence.
262
Comau Robotics Product Instruction
Fig. 16.19- Parameters for the kinematic description of the 2 linear axes
Portal
Besides the geometrical data indicated above, for the complete kinematic description of
the 2 linear axes Portal, also the assembly angle of the robot base on the Portal flange
is to be defined.
Usually, on the Teach Pendant, the auxiliary axes cannot be moved in jog when in
cartesian mode (TOOL, BASE, UFRAME): in case of trans-rotational column it is
allowed to joint move the linear axes when jog is set to cartesian, using the keys
corresponding to the axis, obtaining the effect of moving the joint keeping still the robot
TCP position.
Furthermore, to help programming, the JPAD keys have been re-configured in order to
move each of the portal individual axis.
For further information related to auxiliary axes keys and JPAD, refer to C5GPlus
Control Unit Use manual - par. 5.3.1.2 Black keys on page 59 - Chap. TP5 Teach
Pendant on page 52.
263
Comau Robotics Product Instruction
16.8.5.2 Calibration
The Column calibration position is defined at mid-stroke, marked with a zero notch; the
Rail calibration position is usually defined close to the negative stroke of the auxiliary
axis, marked with its zero notch.
264
Comau Robotics Product Instruction
250 mm/s (see standard in force). Therefore, first of all radius r has to be measured with
maximum robot extension, equipped with the tool mounted on the flange, as indicated
in Fig. 16.21.
Then, the configuration software available on the Teach Pendant calculates the manual
mode speed value.
A table follows, summarising the useful mechanical data, taking into account that it is
mandatory that the first axis of the Integrated trans-rotational Column is number 7 and
it is the linear axis of the Rail (the translating axis).
Besides the geometrical data indicated above (H2 to describe the Column height and R
to describe its Radius), for the complete kinematic description of theTrans-rotational
Column, also the following parameters have to be defined:
– an UpDown bit that indicates whether the robot is placed facing upward (TRUE) or
if it is overturned (FALSE);
– a Robot Mounting Angle value that indicates how the Robot base is oriented in
relation to the Column base; in particular the convention is as follows:
• 180° rotation - Xrobot_base in opposite direction to Xcolumn_base ;
• 0° rotation - Xrobot_base in the direction of Xcolumn_base ;
• 270°rotation - Xrobot_base in opposite direction to Ycolumn_base ;
• 90°rotation - Xrobot_base in the direction of Ycolumn_base .
265
Comau Robotics Product Instruction
Interference Regions
The option code is CR17926216.
To use Cartesian Hybrid Regions, the following option is required:
Advanced Interference Regions
The option code is CR17926218.
17.1 Introduction
Interference Regions are interference/interchange volumes shared between Robot and
Robot, and between Robot and structures.
Their handling allows to interact among machines, optimizing the use of the cell inside
space, in order to guarantee the collision prevention, upon defining the geometry of the
Robot working zone inside volumes.
In the Interference Regions handling system, a library has been created of basic
geometrical shapes allowing to support most functional cases, to control both cartesian
and joint working areas.
Both for cartesian and joint case, it is allowed to define 16 geometrical regions to be
used both to monitor and block the Robot to enter them.
– Regions types
– Regions Shape and definition
– IR_LIB library to support Interference Regions creation
– Examples.
266
Comau Robotics Product Instruction
Region is memory resident, active and doesn’t depend on the being executed program.
On the contrary, the non Permanent Region depends on the program in which it has
been defined and it is automatically deactivated as soon as such a program is
deactivated.
This kind of modality and functionality is useful whenever it is needed to define some
Regions which the Robot should either NEVER enter (Forbidden) or NEVER EXIT from
(Allowed), and also should NEVER work in close proximity of its boundaries, at
maximum speed. The Robot, in fact, slows down its motion proportionally to the distance
from the specified region surface.
Such a logical port is associated to the region by means of the IR_SET built-in routine
(see chap.BUILT-IN Routines List - PDL2 Programming Language manual, for a
detailed description).
267
Comau Robotics Product Instruction
Such a logical port is associated to the Region by means of IR_SET built-in routine
(detailed description in chap.BUILT-IN Routines List - PDL2 Programming Language
Manual).
The Joint Monitored Regions functioning principle is the electronic cams one, where it
is allowed to define some stroke intervals for an axis, upon which a logical port is set to
ON/OFF values.
For example, it is possible to define a Joint Monitored Region to monitor axes 1, 4 and
6 so that, as soon as the monitored joints values are inside the defined intervals, the
system sets to ON/OFF values a previously defined by the User logical port.
Note that, as already stated, the following option is required for using the Cartesian
Hybrid regions:
Advanced Interference Regions
code CR17926218.
The Cartesian Hybrid Regions are regions that change their behaviour depending on an
input signal (IR_CONSENT).
The two allowed behaviours are similar the “Monitored Region” one if IR_CONSENT =
TRUE or to the "Forbidden Region" one if IR_CONSENT = FALSE.
CAUTION - please note that Hybrid Monitored Regions and Hybrid Forbidden Regions
are SIMILAR to Monitored Regions and Forbidden Regions, respectively, but they are
NOT THE SAME. So, it is strongly recommended to carefully read the corresponding
descriptions.
– Status IR_CONSENT = TRUE, the region is Hybrid Monitored and the Robot is
allowed to enter it; the actual position is specified by means of two output signals:
• TCP inside the hybrid region
• IR_PRESENCE = TRUE
• IR_RESERVATION = TRUE
• TCP close to the hybrid region (inside the warning region)
• IR_PRESENCE = FALSE
• IR_RESERVATION = TRUE
• TCP far from the hybrid region (outside the warning region)
• IR_PRESENCE = FALSE
• IR_RESERVATION = FALSE
– Status IR_CONSENT = FALSE, the region is Hybrid Forbidden, the Robot access
is denied, no system errors occur. Moreover, the actual position is specified by
means of two output signals:
• TCP inside the hybrid region - impossible, the attempting to enter Robot is
decelerated and stopped onto the region boundary. It is then put to LOCKed
state
• TCP close to the hybrid region (inside the warning region)
• IR_PRESENCE = FALSE
• IR_RESERVATION = TRUE
268
Comau Robotics Product Instruction
The speed is modified depending on the distance from the hybrid region
boundary.
• TCP far from the hybrid region (outside the warning region)
• IR_PRESENCE = FALSE
• IR_RESERVATION = FALSE
– Transition of IR_CONSENT from FALSE to TRUE - If any pending motion exists
in LOCK state (automatically set by the system in case of Robot close to a Hybrid
Forbidden Region), an UNLOCK command is executed on the Robot arm which
will then automatically resume its program execution.
– Transition of IR_CONSENT from TRUE to FALSE - If the robot TCP was inside
the hybrid region just a moment before (i.e. when IR_CONSENT = TRUE the robot
was allowed to enter), an error occurs and the robot is immediately stopped. On
the contrary, the region is simply switched from Hybrid Monitored Region to Hybrid
Forbidden Region.
Presence, Reservation and Consent logical ports are associated to the region by means
of the IR_SET built-in routine (see chap.BUILT-IN Routines List - PDL2 Programming
Language manual, for a detailed description).
Example
IR_SET(IR_RESERVATION,$FMO[1],1,1,ON)
IR_SET(IR_PRESENCE,$FMO[1],2,1,OFF)
IR_SET(IR_CONSENT,$FMI[1],1,1,ON)
269
Comau Robotics Product Instruction
17.3.1.1 Sphere
By means of teaching point P1 (center of the sphere), the frame is defined (no matter
the orientation) to correspond to the center of the sphere. The radius is assigned by the
User at the end of the guided procedure or by means of a PDL2 program. In such a way
the frame corresponding to P1 and the geometric value sphere radius are stored.
R - radius
17.3.1.2 Cylinder
By means of sequentially teaching points P1 and P2, the frame and the cylinder height
are defined. The radius is assigned by the User at the end of the guided teaching
procedure.
In details:
– P1 defines the frame origin.
– P2 defines cylinder height and orientation.
H - height R - radius
17.3.1.3 Box
By means of sequentially teaching P1, P2, P3 points, frame and two dimensions (width
and depth), are defined, whereas by means of teaching P4 point height is defined. In
270
Comau Robotics Product Instruction
such a way, the calculated frame (by means of POS_FRAME(P1, P2, P3)) and the three
geometric values, width (P2-P1), depth (P3-P1) and height (P4-P1), are stored.
In details:
– P1 defines the frame origin.
– P2 defines width axis.
– P3 defines base plane and depth.
– P4 defines height.
17.3.1.4 Plane
By means of sequentially teaching P1, P2, P3 points, the frame is defined. In such a way
the calculated frame (by means of POS_FRAME(P1, P2, P3)) is stored. The defined
Region is shown in Fig. 17.4.
271
Comau Robotics Product Instruction
– Specify the center of the allowed stroke, and the stroke tolerance within
which the axis must move.
The axes are positionned in the allowed stroke center. The tolerance is specified
by means of the User Interface.
– Specify the allowed stroke ends.
The axes are first positioned in the lowest end and then in the highest end of the
allowed strokes.
Such Regions position and dimension definition is auto-taught. As an alternative, it is
also possible to create PDL2 programs calling suitable routines and built-in routines. For
further details see par. 17.4 IR_LIB library to support Interference Regions creation on
page 272.
272
Comau Robotics Product Instruction
IMPORT ‘IR_DEF’
If the defined Region is related to the currently active UFRAME, if such UFRAME
changes, the Region moves as a consequence.
IMPORT ‘IR_DEF’
17.4.3 Example 1
An example follows to define a cylindrical cartesian region from within a program:
273
Comau Robotics Product Instruction
17.4.4 Example 2
In the following example a PDL2 program section is shown which creates a Joint
Monitored Region for axis 6 only.
...............
...............
The above listed code inform the System that Interference Region number 4 is active as
a Joint Monitored Region and axis 6 is monitored in range [-60, 60]. This means that as
soon as axis 6 enters the declared range, bit 3 of $FMO[1] is immediately set to ON, as
declared by IR_SET($FMO[1],3,4, ON) built-in routine.
274
Comau Robotics Product Instruction
17.5 Examples
– Sample program for Cartesian Interference Regions
– Sample program for a Joint Interference Region.
275
Comau Robotics Product Instruction
BEGIN
ToolFrame(3, 0) -- tool 3, frame 0
END ir_cart
276
Comau Robotics Product Instruction
BEGIN
--
-- Defining Joint Interference Region number 2
--
IR_SET($FMO[1], 1, 2, IR_PRESENCE) -- Associating bit 1 of $FMO[1] to region 2
-- which then becomes a monitored region
-- Defining axis 3 (arm 1) limitations
aj_neg_joint[3] := -75
ai_arm := 1
ai_mask := 0b00000100 -- axis 3 binary mask
IR_CreateJoint(aj_neg_joint,aj_pos_joint,ai_arm,ai_mask,2)
CYCLE
MOVE TO pnt0001J
MOVEFLY TO pnt0002J ADVANCE
MOVEFLY JOINT TO jnt0018J ADVANCE
MOVE LINEAR TO jnt0019J
MOVE LINEAR TO jnt0020J
MOVEFLY JOINT TO jnt0021J ADVANCE
MOVE LINEAR TO jnt0022J
MOVE LINEAR TO jnt0023J
END ir_jnt
277
Comau Robotics Product Instruction
Axes Pursuit
The option code is CR17926217.
18.1 Introduction
The Axes pursuit functionality makes it possible moving, both in Automatic and
Programming mode, one or more axes belonging to one Arm (called the MASTER)
allowing one or more axes of a different Arm (called the SLAVE) to pursue the MASTER
Arm axes.
– Axes Pursuit
– Error handling when Axes Pursuit functionality is active
– Configuring the software option.
278
Comau Robotics Product Instruction
As soon as the functionality is activated, the MASTER Arm axis pursuit made by the
SLAVE Arm axis, starts from the current position of the SLAVE Arm axis. So, the relative
delta between pursuer/pursued axis remains unchanged, but it can change if the
functionality is disabled and the two axes move independently.
At the powerup of a System including the Axes Pursuit option, the functionality
default is DISABLED.
The Administrator profileis required to set to TRUE the $AX_PURSUIT_ENBL
predefined variable, to enable it.
The System which is configured to have Axes Pursuit option, handles a special clalss of
errors related to such a functionality.
First of all, if the option is activated, the system does not allow moving the SLAVE Arm
independently from the MASTER Arm.
This imply that, if $AX_PURSUIT_ENBL is set to TRUE, and an attempt to manual or by
a user program move the robot SLAVE Arm is performed, the system will return the error
message:
"Movement not allowed whith axes pursuit option activated".
During the option configuration, the system checks the correctness of the inserted data,
also according to its pre-existing configuration.
If, for example, a not expected value is set for the MASTER Arm axis in
$AX_PURSUIT_LINKED variable (e.g. a not existing MASTER axis), this situation
would cause the system to issue an error message at the startup:
"The axis of MASTER Arm does not exist".
In the case in which, at the system startup, a wrong configuration error is issued for the
Axes Pursuit option, the functionality is automatically disabled and it will not be possible
to use it until the system is properly configured.
279
Comau Robotics Product Instruction
Example:
$AX_PURSUIT_ARM_MASTER := 1 -- indicates the MASTER Arm is
-- Arm 1
$AX_PURSUIT_ENBL := TRUE
$AX_PURSUIT_ARM_MASTER := 1
$ARM_DATA[2].AX_PURSUIT_LINKED[1] := 7
$ARM_DATA[2].AX_PURSUIT_LINKED[2] := 8
280
Comau Robotics Product Instruction
A software option exists which allows to always have lower precision in small orientation
variations around X and Y axes.
Using such an option, the precision is 0.2 degrees, instead of 0.02 degrees, default
value.
Such a functionality is useful when creating POSITION type points is required, e.g. by
means of the ‘:’ operator.
It is exactly like using bit 23 of $CNTRL_INIT predefined variable. For further
information, please refer to PDL2 Programming Language manual - chap. Predefined
Variables List.
281
Comau Robotics Product Instruction
Palletizing Motion
The option code is CR17926214.
20.1 Enabling
a. Move the robot (the functionality must be disabled) to the required position to
enable it,
282
Comau Robotics Product Instruction
– from Teach Pendant - select the required Arm and move focus to the
Palletizer Status (see Fig. 20.1 - yellow highlighted field), so that Enable key
is displayed. Touch it to enable the functionality (see Fig. 20.1 - red
highlighted key).
Upon the functionality enabling, ‘Pallet’ string is displayed in the status bar (see Fig. 20.2
- purple highlighted field).
NOTES
– Since the activation moment, it will NOT be possible to jog the robot axes which
are bind to keep the second Euler angle geometry to 180° (which means to have
the flange position parallel to the floor), and axis 4.
– In the trajectory generation, the system will automatically take care of computing
optimized trajectory for palletizing operations.
– It is allowed to use the robot as a Palletizer, both in programming mode and in
automatic cycle.
20.2 Disabling
To disable the Palletizing Functionality and recover the usual robot functioning again, it
is needed to issue the disabling command in one of the following ways:
– from within a PDL2 Program - call ARM_PALLETIZING (OFF, <arm_num>)
built-in routine to deactivate the functionality for Arm “arm_num”
283
Comau Robotics Product Instruction
– from Teach Pendant - move focus to the Palletizer Status (see Fig. 20.2 - yellow
highlighted field), so that Disable key is displayed. Touch it to disable the
functionality (see Fig. 20.2 - red highlighted key).
BEGIN
$JNT_MTURN := FALSE
ARM_PALLETIZING(ON,1)
MOVE JOINT NEAR pnt0002P BY 300
MOVEFLY LINEAR TO pnt0002P ADVANCE
MOVEFLY LINEAR NEAR pnt0003P BY 20 ADVANCE
MOVE LINEAR TO pnt0003P
MOVEFLY LINEAR AWAY 400 ADVANCE
MOVEFLY JOINT TO pnt0004P ADVANCE
MOVEFLY LINEAR TO pnt0005P ADVANCE
MOVEFLY LINEAR NEAR pnt0006P BY 300 ADVANCE
MOVEFLY LINEAR TO pnt0006P ADVANCE
MOVEFLY LINEAR NEAR pnt0007P BY 20 ADVANCE
MOVE LINEAR TO pnt0007P
MOVEFLY LINEAR AWAY 1000
ARM_PALLETIZING(OFF,1)
END test_arm_palletizing
284
Comau Robotics Product Instruction
21.1 Introduction
This system improves the robot positioning accuracy inside the work area.
This software option compensate the following errors:
– kinematic errors caused by the inaccuracy of the robot levers lengths,
– errors caused by the improper axes coupling (axes orthogonality),
– flexure errors due to the mechanical parts wheight.
and, from 2.31.014 version on, as a different choice for a better robot identification, the
file name can also be as follows:
Each robot is provided with its specific file which cannot be used by any other robots.
A maximum of 4 arms for each system is allowed, and each one could be provided with
a file identifying its own kinematic model.
All .rob files are saved on the Control Unit, in UD:\SYS folder.
In order to check whether the kinematic compensation is active, either open the
Motion-Status page on the Teach Pendant, or view the joint/cartesian positions and
check the presence of an explanatory character, related to the compensation on such a
position, with the following meaning:
– r : indicates that either a movement is in progress or the compensation has not
been executed on the current position so the displayed position is real
(compensated);
– n : indicates that the compensation has been executed on the current position, so
the displayed position is the nominal one (i.e. IDEAL);
– d : indicates that the compensation algorithm is currently disabled.
285
Comau Robotics Product Instruction
The kinematic compensation acts while the program is running, on the motion
statements final position.
This means that for each NOMINAL position (i.e. IDEAL positions - typically generated
by CAD systems) the compensation algorithm is applied which in turn generates a
corresponding position called COMPENSATED (i.e. REAL), where the robot is moved
to, in order to improve the positioning accuracy on the nominal point.
It is recommended to increase the points density, for a better trajectory accuracy.
The compensation software only works when the robot is out from singularity areas
(where the user is not allowed to move the robot to the required position). Anyway,
during the positions teaching phase, the programmer should be able move close to the
singularity position in order to find a nearby position which can be compensated. To do
so, the following command is available
which disables the compensation algorithm for 60 seconds. In such lapse of time the
user can reach the target and teach a new position.
The displayed joint and cartesian position values, are NOMINAL (IDEAL) values with
steady robot only (controlled on the final position). What is displayed while the robot is
moving, is referred to the kinematic compensation world.
The returned value from ARM_POS and ARM_JNTP PDL2 built-ins, represents the
robot NOMINAL position with steady robot only (controlled on the final position).
The returned value from HDIN_READ and HDIN_SET PDL2 built-ins, represents the
robot NOMINAL position.
The user can calculate the compensation effects by using POS_IDL_COMP and
POS_COMP_IDL system built-ins. Refer to PDL2 Programming Language manual for
further details. Note that such built-ins don’t act in close way (they don’t return exactly
the original position if applied in cascade).
For a proper robot programming, with active compensation, keep the $CNFG_CARE
system variable value to TRUE.
The variables taught by means of the Teach Pendant are NOMINAL type: anyway note
that such operation is not recommended, because the algorithm gives the highest
performance with offline defined positions.
Thus, any procedures which include teaching positions requires the following
precautions:
– it is recommended to use the TOOL MASTER procedure, and avoid the 4 points
procedure;
– when calculating the positioners Base, even if the Absolute Accuracy functionality
should never be disabled, it is suggested to do it before teaching such positions,
by means of the following instructions:
BIT_CLEAR($CRNT_DATA[narm].C_ALONG_1D[28],1)
BIT_SET($CRNT_DATA[narm].C_ALONG_1D[28],2).
At the end of the Base calculation procedure, enable the functionality again either
by means of the following instructions
BIT_CLEAR($CRNT_DATA[narm].C_ALONG_1D[28],2)
BIT_SET($CRNT_DATA[narm].C_ALONG_1D[28],1)
286
Comau Robotics Product Instruction
Furthermore note that, in JOG environment, if for example X+ key is kept pressed along
1 m, whenever jogging is stopped, not only the X component variation but also small
variations of the other cartesian coordinates are displayed.
In case of robot with kinematic compensation, the OnPosition (ON POS) functionality is
disabled.
When either replacing a motor or axes calibration are needed, the functionality
performance will NOT turn out to be worse if the procedure is properly executed by using
the dedicated tools.
The performance is worse, instead, in case of replacing an element of the structure such
as gearbox or link.
287
Comau Robotics Product Instruction
Manual Guidance
The option code is CR17926213.
– Introduction
– Manual Guidance device (MG)
– Procedures
– Use of the Manual Guidance system
– Dedicated PDL2 routines
– Errors.
288
Comau Robotics Product Instruction
22.1 Introduction
The Manual Guidance is a functionality allowing the user to execute a manual intuitive
movement of the robot. This means that the robot FOLLOWS the movement manually
transmitted by the operator, via the Manual Guidance device (MG).
Such a functionality has been conceived to meet the need of manually moving the robot
even without any in-depth technical knowledge about cartesian reference systems,
coordinates transformations, robot geometry, etc.
It is based on C5GPlus Control Unit, RoboSAFE type.
The functionality does not depend on the used robot type; the only difference is as
follows:
– if the robot is COLLABORATIVE, MG is allowed to work both in PROGR (the
Enabling Device button acts as DRIVE-ON / DRIVE-OFF command) and AUTO
states (in AUTO-LOCAL state the system must already be in DRIVE-ON; in
AUTO-REMOTE state the DRIVE-ON signal coming from remote must be active)
– if the robot is NOT COLLABORATIVE, MG is only allowed to work in PROGR state.
The corresponding software option is required to be enabled to use the Manual
Guidance, functionality.
289
Comau Robotics Product Instruction
A - handles
B - buttons
Even if the operator is allowed to use just one hand to manually move the robot, it is
strongly recommended to hold the handles (A) with both hands, in order to obtain a
proper behaviour of the MG device.
Buttons are described in the following par. 22.2.1 Buttons on page 291.
It is recommended to remove the MG device after its usage (figure below, on the left).
The block containing the sensor (figure below, on the right) is NOT removed in any case
together with the MG device.
290
Comau Robotics Product Instruction
22.2.1 Buttons
1. Enabling Device
2. Emergency stop
3. User Buttons.
291
Comau Robotics Product Instruction
292
Comau Robotics Product Instruction
Select the chosen action and the press mode for each button, then touch OK key to
confirm (figure above, on the left).
When all the settings are done, touch Save key to make them permanent (figure above,
on the right).
293
Comau Robotics Product Instruction
22.2.1.3.1 no action
Choosing this item means that when the associated button is pressed in the specified
way (press or long press), no actions are performed.
22.2.1.3.2 custom
The custom action can be executed by long pressing one of the User Buttons (the
associated one) and the Enabling Device, in order to guarantee that operator’s hands
are both occupied on the robot wrist.
At each long press of the user button (together with the Enabling Device press), the
system executes the PDL2 statements inserted in the ru_customUserButtons routine
of MG_CustomUserButtons.cod program.
Such a program is available in the following Control Unit folder
UD:\SYS\UTIL
The routine can be associated to the button long press only, with Hold-to-Run modality.
The button must be kept pressed during the whole routine execution; if it is released
before the execution completion, an error message occurs.
If the Enabling Device button is released during the routine execution, an error message
occurs as well.
Please note that the user routine execution starts one second after the button press.
Choosing this item means that when the associated button is pressed in the specified
way (press or long press), the system starts learning the path which can be later used
in a PDL2 program, automatically saved into a MONI file of REPLAY type.
Such a file can be specified in a MOVE instruction with REPLAY clause.
Example:
MOVE FROM start_pos REPLAY 'rec_file.log'
-- The robot moves from the current position towards start_pos,
-- then it performs the movements previously saved in file
-- rec_file.log
When the same button is pressed again, the system stops learning the path.
This action also stops if it is automatically interrupted in case of either “Maximum length
reached” for the moni file or DRIVE-OFF occurred.
An interrupted recording action is definitively finished and cannot be continued.
Refer to Chap.23. - Path Learning on page 317 for further details about such a
functionality configuration.
294
Comau Robotics Product Instruction
22.2.1.3.4 translation/rotation
Choosing this item means that each time the associated button is pressed in the
specified way (press or long press), translation/rotation movements are enabled.
The circular sequence is
– translation,
– rotation,
– both.
The higher the sensitivity, the more the robot becomes compliant.
295
Comau Robotics Product Instruction
22.3 Procedures
22.3.1 Introduction
– Fieldbus devices configuration procedure
– Force/Torque sensor setup procedure
– Force/Torque sensor compensation procedure
– Compensation status check procedure
– Force/Torque sensor and corresponding NetBox installation procedure.
b. In the Bus Coupler page, touch the Fieldbus key, which allows to select the
module to be inserted
296
Comau Robotics Product Instruction
e. Touch the Options menu and choose Force Control item to configure the
selected Fieldbus module
f. The word YES, displayed in Config column (figure below) at the end of the
operation, states that the module has been properly configured.
297
Comau Robotics Product Instruction
g. Step back to IO_CNFG main page (using Back key) and save the new
configuration, by touching the Save key
CAUTION
A Service type user profile is required to access this procedure.
If the current user profile is not Service, the system displays an informational message
and the Force/Torque sensor data are read-only.
298
Comau Robotics Product Instruction
a. Choose the Sensor - open the sensors list by touching the Sensor field, select the
wished sensor and touch OK key to confirm
b. Set the Sensor frame – specify the position (PDL2 variable of POSITION type)
from robot flange center to sensor center
CAUTION! Be sure that the payload has been properly identified, before using the MG
device, in order to avoid any collisions and resulting damages to the robot, its
equipments, and to the operators.
299
Comau Robotics Product Instruction
b. Follow the wizard hints while executing the procedure. If a new starting position is
needed, issue the Teach command to teach it. Touch Next key to continue
300
Comau Robotics Product Instruction
e.1 If problems arise with the axes ranges, close IDE (figure below)
301
Comau Robotics Product Instruction
g. The program returns to the compensation procedure main page. Touch Next key
to continue
302
Comau Robotics Product Instruction
j. When finished, the program displays the computed data. It is suggested to visually
check the Mass value
303
Comau Robotics Product Instruction
n. Close the page (figure above). The new Compensation has been recorded.
304
Comau Robotics Product Instruction
c. The displayed page shows some “leds” related to the following information:
– system status and DRIVE-ON/DRIVE-OFF
– Force and Torque components status for the selected compensation
d. Switch the modal selector to AUTO-LOCAL and put the motors to DRIVE-ON. The
corresponding “leds” must become green, as highlighted in the figure below
305
Comau Robotics Product Instruction
e. Check that all the Force and Torque components “leds” are green. If even only one
“led” is red, execute the Force/Torque sensor compensation procedure and check
the “leds” status again, until all of them are green.
a. connect a PC on Ethernet, to the NetBox (the IP address set by Comau for the in
use NetBox is 192.168.1.1)
b. insert the NetBox IP address in the user’s favourite browser address bar. It is then
allowed to modify the following settings:
– Comunications -> IP Address Mode -> insert STATIC IP
– Comunications -> IP Address Mode -> enable “Ethernet/IP Protocol”
– Apply
– Settings -> low pass fIlter ->152Hz
– Apply
Refer to the official documentation of the device supplier, for any detailed information.
306
Comau Robotics Product Instruction
CAUTION! Be sure that the payload has been properly identified, before using the MG
device, in order to avoid any collisions and resulting damages to the robot, its
equipments, and to the operators.
After all settings and configurations described in the previous chapters have been
executed, proceed as follows by means of the Service Page - Force Control
environment on the Teach Pendant, to be able to use the Manual Guidance system.
b. Insert the Reference frame - specify the position (PDL2 variable of POSITION
type) from the robot flange center to the MG handles center, i.e. to the dwell in
which torques are applied during the manual guidance movements
307
Comau Robotics Product Instruction
c. Select the Contact material – touch the related field to open the table including the
available materials and select the wished one (the default choice is Manual
Guidance)
d. Select the wished Compensation - touch the related field to open the
compensations table; if the wished one is not in the table, create a new one
executing the Force/Torque sensor compensation procedure
e. Choose the wished Sensitivity - touch the field related to the individual Force or
Torque component (figure below, on the left), to open the corresponding
Sensitivity page (figure below, on the right)
308
Comau Robotics Product Instruction
– Apply to all - apply the choice (either disable or sensitivity level) to all the
Force and Torque components
f. Keep pressed the Enabling Device button, complying the rules described in
par. 22.2.1.1 Enabling Device on page 291 and start manually moving the robot.
g. The Data key allows displaying the current data, in different formats, while using
the Manual Guidance system:
– Data
– Dashboard
– Chart
Data
Displays the page in which the described above values can be selected (figure
above)
Dashboard
Displays graphical analog gauges for real-time reading the sensor data (Force and
Torque components values)
309
Comau Robotics Product Instruction
Chart
Provides the graphic representation (diagrams) of the sensor data (Force and
Torque components values), on the time basis
As soon as Trace moni.log checkbox is selected, the system opens the MONI
page (as shown in the above figure on the right).
The user is allowed to modify the following data only:
– Sampling
– Length (sec).
Refer to par. 5.18.2.7 Moni on page 332 for any further operational information.
310
Comau Robotics Product Instruction
STATUS DESCRIPTION
The system is waiting for the “ForceControl_FT_sensor” Fieldbus device
Waiting for FT sensor connected
connection
Waiting for FT sensor
ForceControl_FT_sensor needs compensation
compensation
Waiting for load FT sensor
A Force/Torque sensor compensation is in the activation phase
compensation
Waiting for DRIVE-ON and The system is waiting for the robot motors are in ON state and the
selection of contact material contact material is selected
The system is waiting for the enabling device buttons to be pressed, to
Monitoring State
execute the Manual Guidance functionality
Running State The Manual Guidance functionality is running
The static compensation (with NOT moving robot) of the Force/Torque
FT sensor static compensation
sensor, is in progress
The robot has reached a position which is useful to acquire the needed
FT sensor static compensation
data for the Force/Torque sensor static compensation calculation (with
pos. reached
NOT moving robot)
Waiting for FT sensor The needed data for the Force/Torque sensor compensation calculation
compensation computing done have been acquired; the computation is in progress.
311
Comau Robotics Product Instruction
312
Comau Robotics Product Instruction
0 = DISABLED COMPONENT
– ai_n_arm – (INTEGER) (OPTIONAL) ARM number for which selecting the reference
frame (only one value is allowed)
Routine FC_SetComplianceLevel (ai_fx, ai_fy, ai_fz, ai_tx, ai_ty,
Declaration
ai_tz: INTEGER; ai_n_arm:INTEGER()) EXPORTED FROM FC_lib GLOBAL
313
Comau Robotics Product Instruction
22.6 Errors
Code 46523-10
Message [FOCO]: Fieldbus device ForceControl_FT_sensor not found
Cause No Fieldbus devices called ForceControl_FT_sensor found
Execute the Fieldbus devices configuration procedure to configure the ForceControl_FT_sensor
Remedy
Fieldbus device
Code 46524-10
Message [FOCO]: Fieldbus device ForceControl_FT_sensor not enabled
Cause The fb_enabled field of the ForceControl_FT_sensor Fieldbus device is set to OFF
Use the Fieldbus devices configuration tools to set the fb_enabled field of the
Remedy
ForceControl_FT_sensor to ON.
Code 46525-10
Message [FOCO]: Fieldbus device ForceControl_FT_sensor not connected
Cause The ForceControl_FT_sensor Fieldbus device is not connected to the system
Check the electrical connections and the software configuration of the ForceControl_FT_sensor
Remedy
Fieldbus device
Code 46526-10
Message [FOCO]: Payload not declared
Cause Attempt to use the Manual Guidance functionality without any robot payload identification
Remedy Set the proper payload
Code 46527-10
Message [FOCO]: sensor threshold reached
Cause The sensor threshold has been reached during the movement in ManualGuidance
Remedy Stop applying any forces or torques to the sensor and resume after few seconds
Code 46529-10
Message [FOCO]: F/T sensor compensation required (0x<Mask>)
The Force/Torque limit (declared as a function of the sensor frame), set by the system, has been
Cause exceeded. The <Mask> value provides information about which Force/Torque component
exceeded the limit set by the system
Remedy Stop applying any forces or torques to the sensor and resume after few seconds
Code 46530-10
Message [FOCO]: force/torque in sensor frame exceeded (0x<Mask>)
The Force/Torque limit (declared as a function of the sensor frame), set by the system, has been
Cause exceeded. The <Mask> value provides information about which Force/Torque component
exceeded the limit set by the system
Remedy Stop applying any forces or torques to the sensor and resume after few seconds
314
Comau Robotics Product Instruction
Code 46531-10
Message [FOCO]:velocity limit exceeded (0x<Mask>)
The velocity limit set by the system has been exceeded. The <Mask> value provides information
Cause
about in which direction the velocity limit set by the system has been exceeded.
Remedy Stop applying any forces or torques to the sensor and resume after few seconds
Code 46533-10
Message [FOCO]: wrong FSM state
Cause The Manual Guidance functional algorythm is in an unknown state
Contact COMAU ([email protected]) possibly specifying which operations caused the
Remedy
error
Code 46535-10
Message [FOCO]: SAFE not in Normal mode
Cause The SAFE system is not in Normal modality
Remedy Switch the SAFE system to Normal modality
Code 46536-10
Message [FOCO]: Timeout F/T sensor compensation computation
Cause The Force/Torque sensor compensation procedure cannot reach any results
Repeat the Force/Torque sensor compensation procedure modifying the robot movements, if
Remedy
possible
Code 46537-10
Message [FOCO]: $TRK_TBL not configured yet. Activation not allowed
Cause The Force/Torque sensor compensation procedure has not been executed yet
Remedy Execute the Force/Torque sensor setup procedure
Code 46538-10
Message [FOCO]: Compensation not selected
Cause Attempt to use the Manual Guidance functionality without any compensation has been selected
Remedy Select a compensation
Code 46539-10
Message [FOCO]: Contact material not selected
Cause Attempt to use the Manual Guidance functionality without any contact material has been selected
Remedy Select a contact materia (par. 22.4.1 MG System Use procedure on page 307, step c.)
Code 46540-10
Message [FOCO]: Gains file not found
Cause The file including the contact materials list has not been found
Remedy Contact COMAU ([email protected])
315
Comau Robotics Product Instruction
Code 46541-10
Message [FOCO]: Arm number out of range
Cause The use of the Manual Guidance functionality is only allowed for Arm 1
Remedy Use the Manual Guidance functionality with Arm 1 only
Code 46542-10
Message [FOCO]: Sensitivity out of range
Attempt to use a not allowed sensitivity level. The allowed values are:
6 = LOW SENSITIVITY
5 = MEDIUM SENSITIVITY
Cause
4 = HIGH SENSITIVITY
0 = DISABLED COMPONENT
Remedy Use the allowed sensitivity level
Code 46543-10
Message [FOCO]: Second Euler angle must be between 0 and +180 degrees
Cause Attempt to assign a not allowed value to the second Euler angle
Remedy Use a value between 0 and +180 degrees
Code 46544-10
Message [FOCO]: First and third Euler angle must be between -180 and +180 degrees
Cause Attempt to assign a not allowed value to the first and third Euler angle
Remedy Use a value between 0 and +180 degrees
316
Comau Robotics Product Instruction
PATH LEARNING
23.1 Description
Path Learning is a functionality allowing to record a trajectory while the robot is
executing it. It is saved into a binary moni file of replay type, and can be later executed
again using a
Note that such I/O ports must have already been mapped.
After the mrri_moni_replay_cnfg_io routine execution, a cold restart of the Control Unit
is required (Restart Cold command) to make the settings operational.
Refer to par. 5.3.3 REPLAY (execution of a saved trajectory) on page 55 for further
details about MOVE REPLAY instruction.
317
Comau Robotics Product Instruction
PATH LEARNING
Note that, in the following descriptional tables, all parameters included between ‘<’ and
‘>’ (e.g. <ai_param1>) are optional.
318
Comau Robotics Product Instruction
PATH LEARNING
– 0 - no errors detected
– -10 - attempt to stop a trajectory registration, which was never started
Returned value – -11 - error while copying the moni replay file from the creatin folder to the folder in
which it is to be saved
– -12 - error during the .PDL and .COD files creation
ROUTINE mrri_stop_moni_replay(ab_create_pdl : BOOLEAN()) : INTEGER
Declaration
EXPORTED FROM MoniReplay_lib GLOBAL
PROGRAM stop_moni
...
BEGIN
...
mrri_start_moni_replay -- start acquiring the trajectory that is
saved
Example
-- in a moni replay
...
mrri_stop_moni_replay -- stop acquiring the trajectory for the
current
-- moni replay
END stop_moni
319
Comau Robotics Product Instruction
PATH LEARNING
PROGRAM moni_init
...
BEGIN
...
mrri_moni_replay_init('UD:\\usr\\PathLearning\\Moni\\',
'test_pl')
...
END moni_init
-- The program saves moni replay and PDL2 files if any (.pdl e .cod)
using
-- it, in UD:\\usr\\PathLearning\\Moni\\ folder.
Example -- If the folder does not exist, it is automatically created. The
files are
-- saved with the following extensions:
-- test_pl.log
-- test_pl.pdl
-- test_pl.cod.
-- For further acquisitions, a suffix is added to the filename,
composed
-- by an undescore character and an incremental number (maximum is
1000)
-- (e.g. “_1”, “_2”, etc.). Once the limit is reached, the filename
starts
-- from the original again.
320
Comau Robotics Product Instruction
PATH LEARNING
23.3 Example
PROGRAM test_pl_monireply
VAR vp_ini_test_pl_monireply : POSITION NOSAVE
VAR vp_fin_test_pl_monireply : POSITION NOSAVE
VAR vp_base_test_pl_monireply : POSITION NOSAVE
VAR vp_tool_test_pl_monireply : POSITION NOSAVE
321
Comau Robotics Product Instruction
PATH LEARNING
322
Comau Robotics Product Instruction
24.1 Introduction
Executing a trajectory related to a continuous process with controlled speed, could
tansmit extreme stress to the performing manipulator. In such situations, it is suitable to
improve the robot dynamic behaviour preserving the user trajectory.
An application has been implemented to perform the described above task. It is supplied
as a Roboshop© software optional feature.
Such an app is called Roboshop Continuous Process Improver, abbreviated to
IMPR, and:
– Roboshop© needs a dedicated software licence, to use it
– it is suitable for machining applications (e.g. milling) with a duration of not more
than 5 minutes,
– a cartesian type moni.log trajectory file is needed in input, obtained by executing
a PDL2 program on a real or simulated controller
– it is suitable for serial productions (i.e. without any differences between a working
part and another)
– no synchronizations with external devices are supported, to date
– a PDL2 program is provided as output, using the MOVE REPLAY statement and
the corresponding moni.log file (refer to par. 5.3.3 REPLAY (execution of a saved
trajectory) on page 55)
323
Comau Robotics Product Instruction
24.2 Installing
Roboshop© software and the MATLAB Runtime library are required to install the IMPR
application on a PC.
Proceed as described below:
a. after Roboshop© has been installed, run the executable file supplied by Comau
(RoboshopImpr_v2.12.exe) to generate a Roboshop© version including IMPR.
c. Specify the wished installation folder, click Next and then Install keys to start the
true installation phase.
324
Comau Robotics Product Instruction
f. The full installation could take several minutes. At the end the IMPR environment
is available in Roboshop©.
325
Comau Robotics Product Instruction
g. At the Roboshop© with IMPR first execution, the application needs a dedicated
licence key, to be required to COMAU by clicking Request License
h. When the licence key is supplied, copy it to the corresponding area (highlighted in
red in the figure below) and click Register key
i. At the and, a message is displayed stating that the registration is completed. IMPR
optimizer is ready to be used.
326
Comau Robotics Product Instruction
24.3 Operations
– Creating the moni.log input file
– Using IMPR optimizer.
imprStartMoni
Name imprStartMoni
imprStopMoni
Name imprStopMoni
Parameters none
Such routines identify, including it, the process phase to be optimized, as shown in the
following example.
Example
PROGRAM TEST
...
ROUTINE imprStartMoni(moni_name : STRING; ai_moni_type, ai_arm :
INTEGER()) EXPORTED FROM StartStopMoni
ROUTINE imprStopMoni EXPORTED FROM StartStopMoni
327
Comau Robotics Product Instruction
...
BEGIN
...
MOVE JOINT TO pnt0001P
imprStartMoni('prog_02') -- Process start
MOVEFLY LINEAR TO pnt0002P ADVANCE
MOVEFLY LINEAR TO pnt0003P ADVANCE
...
MOVE LINEAR TO pnt1234P
imprStopMoni -- Process end
...
END TEST
328
Comau Robotics Product Instruction
When the wished moni.log file has been chosen, click Open key (figure above)
• Speed [m/s] - wished execution speed
• values for some more else parameters, if any. Refer to par. 24.4.1.1 Basic
menu on page 332 for further information.
d. After the wished values have been inserted, click the Run key (previous figure) to
start the optimization of the input path.
329
Comau Robotics Product Instruction
e. At the optimization operation end, which could take until some minutes, depending
on the path complexity, the following Standard diagrams are displayed:
• Trajectory - obtained trajectory
• Override - needed speed override for the optimization
• Velocity - scalar velocity of the operational peak
• Velocity details - chromatic details of the scalar velocity evolution.
Note that if also the Advanced users menu parameters are used, five more
diagrams are provided. Refer to par. 24.4.2.2 Advanced users diagrams on
page 337 for a detailed description.
CAUTION - If either the input moni.log file and the selected parameters for the
optimization are such that the generated output moni file cannot be loaded into the
Control Unit due to its dimensions, or in case of exagerated complexity of the path, the
procedure is interrupted and the following error occurs:
Output file too big .
In this case, the user should operate to acquire a smaller input moni.log file, by further
partitioning the original program.
If the optimization results don’t meet the expectations, act on the Basic menu (or
on the Advanced users menu, if used) parameters and then go back to step d.
Note that the Basic menu Reset key resets the optimizer parameters to the default
values.
The user is allowed to save the optimizations history and compare different parameters
combinations, by specifying a value greater than 1 for the History Depth parameter of
the Basic menu. Refer to par. 24.5 Comparing velocities on page 340 for further details.
f. If, on the contrary, the optimization results are satisfactory, continue with
generating the PDL2 program and the corresponding optimized path, by clicking
the Export PDL key (as shown in the figure below on the left)
g. Specify the destination folder and filename and then click Save key (previous figure
on the right).
The following files are created in the selected folder:
– a file including the optimized trajectory data (<filename>.log)
330
Comau Robotics Product Instruction
– a PDL2 program model (<filename>.pdl) able to execute it; it will have a format like
the one in the following exeample:
Refer to the PDL2 Programming Language manual, chap.Built-in routines list, for
any further information about the RPL_GET_POS built-in routine.
331
Comau Robotics Product Instruction
24.4.1 Menu
– Basic menu
– Advanced users menu.
332
Comau Robotics Product Instruction
333
Comau Robotics Product Instruction
24.4.2 Diagrams
At the end of the optimization process, the results are displayed in graphic form.
Such diagrams are grouped in:
– 4 basic diagrams
– 2 diagrams reserved to auxiliary axes, if any
– 5 advanced diagrams.
They are useful to understand the control effects on the robot motion planning.
On the 2D diagrams, select a portion to zoom-in such an area. Furthermore, act back or
forth on the mouse wheel for zooming in and out effects.
Some combinations with the CTRL key are also available with the numeric keypad
(numpad), in order to achieve the following actions:
– CTRL + zoom-in
– CTRL - zoom-out
– CTRL 0 to go back to the original viewing.
Zoom-in and zoom-out operations are available for 3D diagrams too, as well as tilting
the diagram in order to view it from various positions. Act back or forth on the mouse
wheel for zooming effects. The view variation is achieved by keeping the right key
pressed while moving the mouse.
The diagrams provided by the optimizator are od the folowing types:
– Standard diagrams
– Advanced users diagrams.
24.4.2.1.1 Trajectory
This diagram shows the robot reconstructed reference trajectory.
334
Comau Robotics Product Instruction
24.4.2.1.2 Override
This diagram shows the velocity reduction values in terms of Override, as a function of
the path.
24.4.2.1.3 Velocity
This diagram shows the velocity evolution as a function of the time.
335
Comau Robotics Product Instruction
336
Comau Robotics Product Instruction
24.4.2.2.1 Positions
It represents the 3D position of the points chosen by IMPR to create the optimized
trajectory, starting from the original one.
337
Comau Robotics Product Instruction
24.4.2.2.4 Quaternion
It is the representation, in quaternions, of the orientation variation.
338
Comau Robotics Product Instruction
<input_moni_name>_imprLogPar__<yyyy-mm-dd>.txt
including the list of the used values, as well as the optimization operation date and time.
339
Comau Robotics Product Instruction
Comparing Velocity:
340
Comau Robotics Product Instruction
DEFINITIONS
c. Licensee - shall mean the part (natural person) who buys the license of the
Software;
d. Licensor - shall mean Comau S.p.A., an Italian company with office in Grugliasco
(TO), Via Rivalta 30.
1. GENERAL PROVISIONS
1.1 This Agreement provides for use of the license making reference to the Software
entitled <Comau Software> and is made between Licensor and Licensee.
1.2 The subject Software includes the Software itself and the related documentation.
By using and installing the above Software, the Licensee accepts to be subject to
the provisions in the present Agreement.
1.3 The subject Software is protected in accordance with International Law Provisions
and Treaties in the field of Copyright, and in addition in accordance with other Laws
and Treaties in the field of Intellectual Property. Failing to comply with said
provisions shall result in the infringer being sued in accordance with the Law.
1.4 License for use of the above Software is hereby granted without any time limit.
2. USER LICENSE
2.1 Licensor grants the Licensee, intended as a natural person, a personal license to
run and use copies of the <Comau Software> in order to develop, to test and to
service/maintain the software used on the industrial automation applications
supplied by Comau.
341
Comau Robotics Product Instruction
2.2 The Licensee must comply with the instructions recited in this Agreement and keep
copy of the same, which copy must be available for inspection by Licensor.
2.3 In case of third-party software (including Open Source Software) and third-party
data integrated into the Software, the provision and use of such third-party software
shall be governed primarily by the licensing terms and terms of use of such
third-party.
342
Comau Robotics Product Instruction
5. DISCLAIMER OF WARRANTY
5.1 This Software is provided "AS IS" without warranty of any kind, either expressed or
implied. Neither Licensor nor its suppliers warrant that the software or any use of
the software or equipment will be uninterrupted or error-free. In no event shall the
author, copyright holder or any other party who may redistribute the Software be
liable to the Licensee for damages. This includes any general, special, incidental
or consequential damages arising out of the use or inability to use the Software
(including, but not limited to, loss of data, data being rendered inaccurate, loss of
business profits, loss of business information, business interruptions, loss
sustained by you or third parties, or a failure of the Software to operate with any
other software) even if the author, copyright holder or other party has been advised
of the possibility of such damages.
6. LIMITATION OF LIABILITY
6.1 In no event Licensor aggregate liability to Licensee or any third party for any losses
or damages that arise out of the performance or breach of this Agreement, whether
in contract, tort, or other form of action, shall exceed the total fees paid to Licensor
under this Agreement. In no event shall Licensor be liable for any direct or indirect
damages, including, but not limited to, lost profits, loss of goodwill, data loss,
business disruption, or computer failure. Licensee acknowledges that the license
fees reflect the allocation of risk set forth in this Agreement and that Licensor would
not enter into this Agreement on the terms hereof without these limitations on its
liability.
7. TERMINATION
7.1 Licensor has the right to terminate this Agreement and Licensee's right to use this
Software upon any material breach by Licensee. If either party breaches a
provision of this Agreement, the other party may give written notice of default. If the
343
Comau Robotics Product Instruction
breaching party fails to cure the breach within sixty (60) days, this Agreement may
be terminated immediately by the other party. In the event that Licensee breaches
any of the licensing or confidentiality provisions of this Agreement, this Agreement
shall terminate immediately upon written notice by Licensor. Failure to pay any or
all fees due hereunder shall constitute a material breach of this Agreement.
7.2 Upon any termination of this Agreement, all licenses granted hereunder shall
cease, and Licensee shall make no further use of the Software and shall either
return to Licensor or destroy originals and all copies of the Software and supporting
materials. No refunds or credits will be due Licensee.
7.3 The Agreement immediately terminates if Licensee breaches the prevision of
sections n. 3.
8. MODIFICATION
8.1 This Agreement may be modified only in writing signed by both parties. Terms and
conditions on any Licensee purchase order or other ordering document shall not
be deemed to modify this Agreement, and are hereby replaced and superseded by
the terms and conditions of this Agreement. Additional purchases of Software
licenses by Licensee without execution of another agreement will be governed by
the terms of this Agreement unless the parties otherwise agree in writing. The
failure by either party to insist upon strict enforcement of any terms and conditions
of this Agreement shall not be construed as a waiver of the right to assert or rely
upon any such terms on any future occasion.
8.2 This Agreement or other legally binding document(s) referred to the Software,
constitute the entire agreement between the parties with respect to the subject
matter hereof and supersedes any prior or contemporaneous representations,
promises, warranties, or understandings between the Parties. This Agreement
shall be considered accepted and shall become effective by the Licensee's use of
the Software.
10. COMUNICATION
10.1 All notices required hereunder shall be in writing and sent by certified mail,
express mail, or via electronic means agreed-upon by the parties, such as
facsimile, to the registered addresses of the parties.
344
Original instructions
Made in Comau