c4g Motion Programming
c4g Motion Programming
c4g Motion Programming
C4G SW Manuals
Comau Robotics
Instruction Handbook
C4G
MOTION PROGRAMMING
System Software Rel. 3.2x
Robot movements in programming mode, motion cont rol, optional features (synchronous
motion, coop erative motion, sensor tracking, conveyor tracking, weaving, path g overnor,
smartmove4, kinematic compensation, collision detection), moving through singularities,
posi tion ers and port als, TO_SET program.
CR00757558_en-00/0 708
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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .IX
Symbols used in the manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .IX
Reference documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X
Modification History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .XI
lb-rc-c4e-motionTOC.fm
I
Summary
lb-rc-c4e-motionTOC.fm
II
Summary
lb-rc-c4e-motionTOC.fm
III
Summary
9. CONVEYOR TRACKING
(OPTIONAL FEATURE) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9.1
Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.2
Working Principle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.3
Process Monitoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.5
Tracking Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.5
Motion Statements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.5
Teaching Positions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.6
Tracking Interruption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.7
Limitations during Conveyor Tracking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.7
Use of the Roto-translating Conveyor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.8
Configuration parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.9
lb-rc-c4e-motionTOC.fm
IV
Summary
Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.1
Example. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.2
Conveyor configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.2
Motion programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.2
lb-rc-c4e-motionTOC.fm
V
Summary
lb-rc-c4e-motionTOC.fm
VI
Summary
lb-rc-c4e-motionTOC.fm
VII
Summary
Activation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18.2
From TP4i/WiTP Teach Pendant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18.2
From WinC4G on Personal Computer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18.3
First screen page of TO_SET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18.4
TOOL automatic calculation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18.5
Tools needed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18.5
Calibrated tool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18.5
Reference point (or master cube) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18.6
General characteristics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18.6
Tool orientation calculation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18.6
How to identify the "dummy reference system" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18.7
Procedure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18.7
Tool calculation with standard method- Complete procedure . . . . . . . . . . . . . . . . . . . . . . 18.10
Tool verification with standard method - Partial procedure . . . . . . . . . . . . . . . . . . . . . . . . 18.11
Tool Calculation with "4 points method" - Complete procedure . . . . . . . . . . . . . . . . . . . 18.17
Local Tool verification with "4 points method" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18.20
Payload identification (optional function) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18.21
Basic concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18.22
Procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18.23
Requirements to modify Payload identification programs . . . . . . . . . . . . . . . . . . . . . 18.23
Activation and execution of the Payload identification procedure . . . . . . . . . . . . . . . 18.24
Software to validate the payload . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18.33
REMOTE TOOL Automatic Calculation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18.34
Tools needed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18.34
Tool with known dimensions mounted on Robot Flange . . . . . . . . . . . . . . . . . . . . . . . . 18.34
General characteristics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18.34
UFRAME automatic calculation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18.35
Tools needed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18.35
Tool with known dimensions mounted on Robot Flange . . . . . . . . . . . . . . . . . . . . . . . . 18.35
3 Reference Points (ORIGIN, Xpos and XYpos) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18.35
General characteristics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18.35
Procedure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18.36
REMOTE UFRAME automatic calculation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18.41
Tools needed . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18.41
Tool with known dimensions mounted on the Robot Flange . . . . . . . . . . . . . . . . . . . . . 18.41
3 reference points (ORIGIN, Xpos and XYpos). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18.41
General characteristics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18.42
Procedure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18.42
BASE automatic calculation for POSITIONERS (optional) . . . . . . . . . . . . . . . . . . . . . . . . . . 18.47
Tools required . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18.47
Tool of known dimensions mounted on the robot flange . . . . . . . . . . . . . . . . . . . . . . . . 18.47
3 reference points (P1, P2, P3) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18.47
General characteristics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18.48
CONVEYOR TRACKING installation and configuration (optional service) . . . . . . . . . . . . . . 18.57
Tools required . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18.57
Tool of known dimensions mounted on the robot flange . . . . . . . . . . . . . . . . . . . . . . . . 18.57
3 Reference points (P1, P2, P3) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18.57
lb-rc-c4e-motionTOC.fm
VIII
Preface
PREFACE
HS-0-0-0-mot_01.fm
00/0000 IX
Preface
Reference documents
This document refers to the C4G Control Unit .
The complete set of manuals for the C4G consists of:
HS-0-0-0-mot_01.fm
X 00/0000
Preface
Modification History
– System Software version 3.01 - the description of how to Use of the
Roto-translating Conveyor has been added
– System Software version 3.1x - the following paragraphs have been added:
• Weaving without Arm motion,
• Manual motion of auxiliary axes, slides and rotating columns,
• Run-Time modifying the Linear Speed Override for Single Arms Systems,
• Run-time modifying the Linear Speed Override for multiarm Systems.
– System Software version 3.12 - the following paragraph has been added:CollMngr
Program to activate/deactivate the sensitivity thresholds calculation.
– System Software version 3.2x -
• in par. 17.8 Integrated robot positioning axes on page 17-15, the following
sections have been added:
• par. 17.8.3 Three linear axes portal on page 17-21,
• par. 17.8.4 Two linear axes Portal on page 17-24,
• par. 17.8.5 Integrated trans-rotational Column on page 17-26.
• several modifications in par. 5.5.2.1 Cartesian Speed Control Options on
page 5-17.
HS-0-0-0-mot_01.fm
00/0000 XI
Preface
HS-0-0-0-mot_01.fm
XII 00/0000
1. GENERAL SAFETY
PRECAUTIONS
1.1 Responsibilities
– The system integrator is responsible for ensuring that the Robot and Control
System are installed and handled in accordance with the Safety Standards in force
in the country where the installation takes place. The application and use of the
protection and safety devices necessary, the issuing of declarations of conformity
and any CE markings of the system are the responsibility of the Integrator.
– COMAU Robotics & Service shall in no way be held liable for any accidents caused
by incorrect or improper use of the Robot and Control System, by tampering with
circuits, components or software, or the use of spare parts that are not originals or
that have not been defined as equivalent by COMAU Robotics & Service
– The application of these Safety Precautions is the responsibility of the
persons assigned to direct / supervise the activities indicated in the Applicability
section,They are to make sure that the Authorised Personnel is aware of and
scrupulously follow the precautions contained in this document as well as the
Safety Standards in addition to the Safety Standards in force in the country in which
it is installed.
– The non-observance of the Safety Standards could cause injuries to the operators
and damage the Robot and Control System.
ge-0-0-0_01.FM
07/1007 1-1
1.2.1 Purpose
These safety precautions are aimed to define the behaviour and rules to be observed
when performing the activities listed in the Applicability section.
1.2.2 Definitions
Robot and Control System
The Robot and Control System consists of all the functions that cover: Control Unit,
robot, hand held programming unit and any options.
Protected Area
The protected area is the zone confined by the safety barriers and to be used for the
installation and operation of the robot
Au th or is ed Per so nn el
Authorised personnel defines the group of persons who have been trained and assigned
to carry out the activities listed in the Applicability section.
As si gn ed Per so nn el
The persons assigned to direct or supervise the activities of the workers referred to in
the paragraph above.
Programming Mode
Operating mode under the control of the operator, that excludes automatic operation
and allows the following activities: manual handling of robot axes and programming of
work cycles at low speed, programmed cycle testing at low speed and, when allowed,
at the working speed.
ge-0-0-0_01.FM
1-2 07/1007
Integrator
The integrator is the professional expert responsible for the installation and putting into
service of the Robot and Control System.
Incorrect Use
Incorrect use is when the system is used in a manner other than that specified in the
Technical Documentation.
Range of Action
The robot range of action is the enveloping volume of the area occupied by the robot
and its fixtures during movement in space.
1.2.3 Applicability
These Specifications are to be applied when executing the following activities:
– Installation and Putting into Service;
– Programming Mode;
– Auto / Remote Automatic Mode;
– Robot axes release;
– Stop distances (threshold values)
– Maintenance and Repairs;
– Putting Out of Service and Dismantling
ge-0-0-0_01.FM
07/1007 1-3
ge-0-0-0_01.FM
1-4 07/1007
– Connect the power supply cable, first connecting the earth conductor to the circuit
breaker on the mains line, after checking with a tester that the circuit breaker
terminals are not powered. Connect the cable armouring to the earth.
– Connect the signals and power cables between the Control Unit and the robot.
– Connect the robot to earth or to the Control Unit or to a nearby earth socket.
– Check that the Control Unit door (or doors) is/are locked with the key.
– A wrong connection of the connectors could cause permanent damage to the
Control Unit components.
– The C4G Control Unit manages internally the main safety interlocks (gates,
enabling pushbuttons, etc.). Connect the C4G 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
(emrgency stop, gates safey devices etc) i.e. the realisation of correct and safe
circuits, is the responsibility of the Robot and Control System integrator.
In the cell/line emergency stop cir cuit the contacts mu st be included of the contro l
unit emergency stop buttons, which are on X30. The push buttons are not
interlocked in the emergency stop cir cuit of the Control Unit .
– The safety of the system cannot be guaranteed if these interlocks are wrongly
executed, incomplete or missing.
– The safety circuit executes a controlled stop (IEC 60204-1 , class 1 stop) for the
safety inputs Auto Stop/ General Stop and Emergency Stop. The controlled stop is
only active in Automatic states; in Programming the power is cut out (power
contactors open) immediately. The procedure for the selection of the controlled
stop time (that can be set on ESK board) is contained in the Installation manual .
– When preparing protection barriers, especially light barriers and access doors,
bear in mind that the robot stop times and distances are according to the stop
category (0 or 1) and the weight of the robot..
Check that the control led stop time is consis tent with the type of Robot con nected
to the Control Unit. The stop time is selected using selector switches SW1 and
SW2 on the ESK board.
– Check that the environment and working conditions are within the range specified
in the specific product Technical Documentation.
– The calibration operations are to be carried out with great care, as indicated in the
Technical Documentation of the specific product, and are to be concluded
checking the correct position of the machine.
– To load or update the system software (for example after replacing boards), use
only the original software handed over by COMAU Robotics & Service.
Scrupulously follow the system software uploading procedure described in the
Technical Documentation supplied with the specific product. After uploading,
always make some tests moving the robot at slow speed and remaining outside the
protected area.
– Check that the barriers of the protected area are correctly positioned.
ge-0-0-0_01.FM
07/1007 1-5
Programming Mode
– The robot is only to be programmed by the authorised personnel.
– Before starting to program, the operator must check theRobot and Control System
to make sure that there are no potentially hazardous irregular conditions, and that
there is nobody inside the protected area.
– When possible the programming should be controlled from outside the protected
area.
– Before operating inside the Protected Area, the operator must make sure from
outside that all the necessary protections and safety devices are present and in
working order, and especially that the hand-held programming unit functions
correctly (slow speed, emergency stop, enabling device, etc.).
– During the programming session, only the operator with the hand-held terminal is
allowed inside the Protected Area.
– If the presence of a second operator in the working area is necessary when
checking the program, this person must have an enabling device interlocked with
the safety devices.
– Activation of the motors (Drive On) is always to be controlled from a position
outside the range of the robot, after checking that there is nobody in the area
involved. The Drive On operation is concluded when the relevant machine status
indication is shown.
– When programming, the operator is to keep at a distance from the robot to be able
to avoid any irregular machine movements, and in any case in a position to avoid
the risk of being trapped between the robot and structural parts (columns, barriers,
etc.), or between movable parts of the actual robot.
– When programming, the operator is to avoid remaining in a position where parts of
the robot, pulled by gravity, could execute downward movements, or move
upwards or sideways (when installed on a sloped plane).
– Testing a programmed cycle at working speed with the operator inside the
protected area, in some situations where a close visual check is necessary, is only
to be carried out after a complete test cycle at slow speed has been executed. The
test is to be controlled from a safe distance.
– Special attention is to be paid when programming using the hand-held terminal: in
this situation, although all the hardware and software safety devices are active, the
robot movement depends on the operator.
– During the first running of a new program, the robot may move along a path that is
not the one expected.
– The modification of program steps (such as moving by a step from one point to
another of the flow, wrong recording of a step, modification of the robot position out
of the path that links two steps of the program), could give rise to movements not
envisaged by the operator when testing the program.
– In both cases operate cautiously, always remaining out of the robot’s range of
action and test the cycle at slow speed.
ge-0-0-0_01.FM
1-6 07/1007
ge-0-0-0_01.FM
07/1007 1-7
Af ter rep lac emen t of th e ESK mo du le, ch eck on th e new mo du le th at th e sett in g
of the stop ti me on selector switc hes SW1 and SW2 is cons istent wit h the type of
Robot connected to the Control Unit.
ge-0-0-0_01.FM
1-8 07/1007
ge-0-0-0_01.FM
07/1007 1-9
ge-0-0-0_01.FM
1-10 07/1007
ge-0-0-0_01.FM
07/1007 1-11
2.1 Foreword
This chapter describes the following:
– System operating modes
– System states
– Stand-by function
– programming (T1),
AUTO mode is used to execute production programs; as they contain instructions for the
robot movement, to be able to start it is necessary to press the START key on the Teach
HS-0-C4E-USO_32.fm
2-1 01/0208
Note
When the status selector s witch is set to T2, the system generates a latched alarm
that prevents the entry to th e actual T2 status, even if allowing to swit ch the driv es
on. No movements are allowed (nor th e manual one) until the latched alarm is not
acknowledged.
To enable this o ption al mode, the user has then to confi rm the message.
The latched alarm described above is automatically reset if the selector swit ch is
moved to anot her state, but it resumes as soon as th ere is a return to T2.
T2 status is only enabled when the user con firms the latched alarm.
At t hi s po in t the user i s fr ee to run mo ti on p ro gr ams k eepi ng ei th er th e START key
or t he enabling device pr essed. The speed can be increased at will up t o 100%,
hence bringing the robot to its maximum speed (the same speed that can be
reached in automatic mod e).
When the status selector switch is set to T1 or T2 (optional feature), programs can be
developed using editor environment and positions can be learnt by the Teach Pendant,
jogging the robot by means of the motion keyst; 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 on T1, or T2 or AUTO, 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 mode.
Before any operation can be executed that requires movement, the drives must be
powered:
– if the state selector switch is in either T1 or T2 (optional) 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 AUTO position, press the R5 softkey (Teach
Pendant right menu - it means DRIVE ON when in AUTO state), to power ON the
drives; to switch them OFF and activate brakes on all axes controlled by the
Control Unit, press the R5 softkey again (Teach Pendant right menu - now it means
DRIVE OFF).
HS-0-C4E-USO_32.fm
01/0208 2-2
Active TOOL, BASE and FRAME, cannot be changed when working in AUTO
mode.
– 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.
HS-0-C4E-USO_32.fm
2-3 01/0208
HS-0-C4E-USO_32.fm
01/0208 2-4
In AUTO status, to start programs ready for execution, press the START key on the
Teach Pendant or activate the START input from remote device.
Conditions that change the system status from AUTO to HOLD are:
– status selector switch changed to another position;
– DRIVE OFF or HOLD pressed ;
– system alarm.
To return to AUTO, bring the selector switch back to the required position, and press
again the previous buttons (DRIVE OFF and/or HOLD). To continue the movement
program execution, press START after making sure that the drives are powered (DRIVE
HS-0-C4E-USO_32.fm
2-5 01/0208
The safety precautions are to be scrup ulous ly observed regarding thi s operating
condition of the Controller.
HS-0-C4E-USO_32.fm
01/0208 2-6
HS-0-C4E-USO_32.fm
2-7 01/0208
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:
– Terminology used
– 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 SAX: mo vement after shu t-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
HS-0-C4E-USO_35.fm
01/0906 3-1
actual position of the transducer according to the nominal position required by the
robot axis.
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 through the CAV (Configure, Arm, View_cal) instruction.
– CALIBRATION ASCII FILE: the calibration file
UD:\SYS\<$SYS_ID>_CAL<num_arm>.PDL (where $SYS_ID indicates the
system identification, for example NH4_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 - MCP: 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. If the SMP+, NVRAM-MCP board is installed, it is the partition, on the actual
board, for the motion process (Motion Control Process); if the MCP board is
installed, it refers to the MCP board memory.
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 SAX - 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 i s d is pl ayed .
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
HS-0-C4E-USO_35.fm
3-2 01/0906
In the condition indicated above, when moving the axis to align the notches, a
positioning error message is shown on the terminal.
If the conditions described above 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
HS-0-C4E-USO_35.fm
01/0906 3-3
2. Make the complete axis calibration (see the Chapter - Turn-set and Calibration -
Operating Procedures)
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.
Subsequently, the calibration does not n eed to b e executed again, unless there is
a mechanical failure that involves the replacement of a component of the
kinematic chain, or in t he case of imp acts that damage the robot s truct ure.
HS-0-C4E-USO_35.fm
3-4 01/0906
HS-0-C4E-USO_35.fm
01/0906 3-5
1. TURN-SET command
2. CALIBRATION command
Saving the calibration constants
3. NVRAM MCP
4. UD:\SYS in file.C4G
5. UD:\SYSin ASCII calibration file ($SYS_ID_CAL.PDL)
6. Hard copy
HS-0-C4E-USO_35.fm
3-6 01/0906
4. ROBOT MOTION IN
PROGRAMMING MODE
4.1 Introduction
In this chapter, reference will be made to the TP4i/WiTP 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 Use of
the TP4i/WiTP Teach Pendant, in the Use of C4G Control Unit manual.
HS-0-C4E-USO_33.fm
00/0607 4-1
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).
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
HS-0-C4E-USO_33.fm
4-2 00/0607
located, the $TOOL movement indicates the pen and the $UFRAME movement
indicates the position of the table.
HS-0-C4E-USO_33.fm
00/0607 4-3
Before moving in Cartesian mode (Tool, Uframe, Base) the correct definition
shoul d be checked of the reference systems, especially the declaration o f the tool
frame throug h the $TOOL variable. A wrong descrip tion of the tool causes errors
in learning the points and does not keep the TCP position unchanged during
orientation movements. A go od met ho d to ch eck th e co rr ect nes s of $TOOL is to
check that the TCP remains fix ed while changing th e 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.
HS-0-C4E-USO_33.fm
4-4 00/0607
For furth er inform ation, please see C4G Control Unit Use - chp. Motion Page - par.
COOP (optional), AUX JOG section).
If the Teach Pendant is the wireless version (WiTP), the AUX hardkey is also available.
For further information, please see C4G Control Unit Use - chp. Use of the Teach
Pendant- par. WiTP).
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.
HS-0-C4E-USO_33.fm
00/0607 4-5
simple moves can be made with the immediate execution of an instruction. To do this,
the system has to be in programming state with the EXECUTE command called (from
Service page of the Teach Pendant) that allows the immediate execution of an
instruction.
In its most simple form, the instruction consists of the key words MOVE TO followed by
the destination position. The most useful move instruction in the first stages of use is:
MOVE TO $CAL_SYS
This produces a movement of each axis to its calibration position. In its more complete
form the arm to be moved, the type of path and the destination can be selected.
The arm is assigned by the key word ARM (num_arm) that is placed immediately after
the word MOVE. The definition can be omitted if the system has only one arm (for
example an NH4 robot (6 axes) is one arm only) or if the default arm predefined by the
system is to be moved.
The type of path may be joints, linear or circular and is described by the predefined
constants JOINT, LINEAR and CIRCULAR respectively (see the Cap. Motion Control
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
Cap. Motion Control 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 ).
HS-0-C4E-USO_33.fm
4-6 00/0607
MOVE LINEAR TO {45} linear movement that brings the arm to a position
that differs from the initial position for axis 1 only,
that is brought to 45 degrees. During the linear
movement of the TCP all the axes of the arm can
move
MOVE ARM[1] LINEAR TO POS(100,100,100,0,0,0,’’) linear movement of arm 1 that takes the TCP to a
certain Cartesian position in relation to the user
frame
MOVE ARM[2] JOINT TO POS(0,0,0,0,180,0,’’) joints movement of arm 2 that brings the TCP to a
certain Cartesian position in relation to the user
frame
MOVE ARM[1] LINEAR TO {0,0,0, , ,} linear movement that brings the first arm to a
Cartesian position where the first three axes have
no value, whereas the wrist axes return to the initial
position. During the TCP linear movement all the
axes of the arm can move
MOVE ARM[2] JOINT TO {-90} movement of second arm that moves only axis 1 to
the position of 90 degrees in negative direction
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,’’)
HS-0-C4E-USO_33.fm
00/0607 4-7
HS-0-C4E-USO_33.fm
4-8 00/0607
Motion Control
5. MOTION CONTROL
5.1 Overview
This chapter contains the description of the C4G Robot Control Unit motion
environment, with the exception of manual handling (Teach Pendant jog keys) which is
described in the Cap. Robot motion in Programming mode, and for the optionals that are
dealt with further on in other chapters of this manual.
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
– 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.
pr-0-0-gpr_04.fm
00/0607 5-1
Motion Control
information.
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.
1. Flange frame
2. Tool frame
3. Recorded position
4. User frame
5. Base frame
6. Boundary frame
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
pr-0-0-gpr_04.fm
5-2 00/0607
Motion Control
pr-0-0-gpr_04.fm
00/0607 5-3
Motion Control
defines this transformation. The position of flange frame of reference is fixed for each
model of robot and is documented in the hardware manual for the specific robot. It is the
operators responsibility to define $TOOL for the specific tooling to be mounted on the
flange.
Two sets of tool parameters define the $TOOL transformation:
– Three tool dimensions define the location component of $TOOL. These values,
measured in millimeters, represent the tool center point (TCP) offset with respect
to the flange center;
– Three tool rotations define the orientation component of $TOOL. These values,
measured in degrees, represent three rotation angles called Euler angles.
a. Begin with no tools on the robot. Assign zero values to all six tool parameters of
$TOOL.
$TOOL : = POS ( 0, 0, 0, 0, 0, 0, ‘ ‘ )
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 as shown in Fig. 5.2 - Zero position).
c. Move the robot to a known position, for example, the zero position (Fig. 5.2 - Zero
position shows the zero position for SMART robots. Fig. 5.3 - Known position
shows a known position (calibration position) for SMART robots).
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.
$TOOL : = POS ( x
, y, z, e1, e2, e3, ‘ ‘ )
pr-0-0-gpr_04.fm
5-4 00/0607
Motion Control
pr-0-0-gpr_04.fm
00/0607 5-5
Motion Control
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.
pr-0-0-gpr_04.fm
5-6 00/0607
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).
pr-0-0-gpr_04.fm
00/0607 5-7
Motion Control
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 clos ing poi nt. Any safety flange logically belon gs
to the too l and therefore incr eases the z offset.
pr-0-0-gpr_04.fm
5-8 00/0607
Motion Control
BEGI N
$UFRAME : = POS( 0, 0, 0, 0, 0, 0, " )
$TOOL : = . . . - - correctly defined
- - Jog the TCP upon three point on the workpiece and teach the
POSITIONs
- - corner, x and xy pressing the MOD key on the TP.
- - Then execute the following statement.
$UFRAME : = POS_FRAME( cor ner , x, xy)
END set f r ame
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 .
pr-0-0-gpr_04.fm
00/0607 5-9
Motion Control
position, called the VIA position, must be specified to define the arc. Only the location
component of the VIA position is used; its orientation does not affect the motion.
As for linear interpolation, the $ORNT_TYPE predefined variable indicates the type of
evolution of attitude must be performed.
pr-0-0-gpr_04.fm
5-10 00/0607
Motion Control
– E indicates that the WCP is in the zone lying behind the extension of the second
axis;
– W indicates that the value of the fifth axis is negative.
– A indicates that the TCP (Tool Center Point) is in the zone lying behind the
extension of the second axis;
– B indicates that the TCP (Tool Center Point) is in the zone lying behind the plane
defined by the first and the second axes.
The only exception to this is when passing over a singularity point, in which the W flag
is reversed by the system software.
It is, however, possible to execute the movement even if the flags do not correspond:
set the $CNFG_CARE predefined variable to FALSE to make the flag of the final point
match that of the starting point.
This setting is mainly used when mixing movements that use JOINTPOS type variables
and POSITION type variables with values that have been set directly from the 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 to set the $CNFG_CARE variable to FALSE.
pr-0-0-gpr_04.fm
00/0607 5-11
Motion Control
pr-0-0-gpr_04.fm
5-12 00/0607
Motion Control
When the CNTRL C key is pr essed, to interrup t the execution of a NON movement
instr uctio n o f a pr ogram open in the EZ or PROGRAM EDIT or MEMORY DEBUG
or IDE environment, the $CRNT_DATA[arm].OT_COARSE flag will still be set to
TRUE even if the ins truct ion th at was interrupted is between two FLY movements.
If the user then moves the cursor onto a specific instruction from which he wishes
to continue to run the program, skipping some programmed movements, this
could also damage the robot and/or the start of the work cycle (executed in
Remote or Local mode). Responsibility for any damage resulting from such
actions lies with th e user in charge of operating and control ling the cell.
For further details related to the $OT_xxx system variables and the ON_TRAJ_SET
built-in routine, please refer to the PDL2 Programming Language Manual.
pr-0-0-gpr_04.fm
00/0607 5-13
Motion Control
pr-0-0-gpr_04.fm
5-14 00/0607
Motion Control
and deceleration. Independent basic control values and overrides exist for acceleration,
speed, and deceleration. The basic and override values for acceleration and
deceleration are discussed in par. 5.6 Acceleration and Deceleration a pag. 5-20 in the
current chapter.
pr-0-0-gpr_04.fm
00/0607 5-15
Motion Control
$GEN_OVR and $ARM_OVR take effect during motions. That is, if either variable is
changed while a motion is in progress, the current motion will speed up or slow down
accordingly. However, a change in $PROG_SPD_OVR or $ARM_SPD_OVR will not
take effect until the next move statement within the program for which it is defined.
Also, please refer to par. 5.10.1 Trajectory Shape During Continuous Motion a pag. 5-30
section in current chapter, for a discussion of some more effects of such variables.
$ARM_SPD_OVR, $ARM_OVR, and other variables described in this chapter are fields
of the predefined system-wide array of structures, $ARM_DATA. The details of this
structure and how to reference fields within the structure are fully documented in the
chapter referring to the predefined variables of the PDL2 Programming Language
Manual .
pr-0-0-gpr_04.fm
5-16 00/0607
Motion Control
par. 5.5.1 Speed Overrides a pag. 5-15 for a definition of “total speed override”).
pr-0-0-gpr_04.fm
00/0607 5-17
Motion Control
$ROT_SPD. If the joint is linear the speed should be specified by the predefined
variable $LIN_SPD. If more than one auxiliary axis is present only one can move
at a constant speed and any other auxiliary axis will move at a reduced speed in
order to start and end the move at the same time.
If fly moves are executed when $SPD_OPT is set to SPD_AUXn then the auxiliary
axis will always run at a constant speed regardless of the value of $FLY_TYPE. If
$SPD_OPT is assigned a value of SPD_AUXn where n is an invalid auxiliary axis
then an error will be reported.
– SPD_AUX2 has the same effect as SPD_AUX1 except that the second auxiliary
axis is maintained at a constant speed.
– SPD_AUX3 moves the third auxiliary axis at a constant speed while all other
components of the move will run at a reduced speed so that the movement begins
and ends at the same time. All other effects of this option are the same as
SPD_AUX1.
– SPD_SM4C - the cartesian movement is performed using the Cartesian
SmartMove4 (optional feature).
For further information, see Cap.13. - SMARTMOVE4 (optional).
In this case, the acceleration, speed and deceleration values aare automatically
calculated and it is impossible to set neither a translational ($LIN_SPD) nor a
rotational ($ROT_SPD) speed as maximum value.
In order to use such an option, it is needed to purchase the software option
SmartMove4.
If the value of $SPD_OPT is not meaningful for the current trajectory type, the default
SPD_CONST 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 affect at the beginning
of the next move. Changes do not affect the current motion of an arm.
Since system software version 3.1, it is provid ed a funct ionality wh ich, in special
conditions, allows run-time modifying the speed override (see the following
section Run-Time modif ying t he Linear Speed Override)
$LI N_SPD_RT_OVR
It is referred to $LIN_SPD predefined variable related to the motion, and indicates, as a
percentage, the new TCP speed to be used since the current motion.
The default value is 100: this means that the movement is performed at a maximum
pr-0-0-gpr_04.fm
5-18 00/0607
Motion Control
speed equals to the $LIN_SPD. The maximum value to set $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
Cap.6. - Synchrono us Motion (optional feature) in cur rent Manual.
j oi nt speed[ axi s] =
$MTR_SPD_LI M[ axi s] * gear r at i o[ axi s] * $J NT_OVR[ axi s] *
t ot al speed over r i de[ ar m]
where “gear ratio” indicates the transmission ratio.
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.
pr-0-0-gpr_04.fm
00/0607 5-19
Motion Control
1. speed
2. acceleration
Currently, C4G 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;
– $MTR_DEC_TIME determines the total deceleration time in milliseconds.
These variables are INTEGER array fields of $ARM_DATA, one element for each axis
for each arm. For a joint interpolated motion, the time for the joint that takes the longest
to accelerate/decelerate to its final speed is picked for the time to use for all joints to
accelerate/decelerate. This maintains coordinated acceleration and deceleration.
For Cartesian motions, $LIN_ACC_LIM and $LIN_DEC_LIM are used in a similar way,
to establish the total time for acceleration/deceleration. However the units for these
variables are meters per second per second.
The percentage of acceleration time and deceleration time used in the constant jerk
phases is determined by the predefined $ARM_DATA INTEGER array field, $JERK[],
as follows:
– $JERK[1] defines the percentage of the acceleration time in the constant jerk
phase (T1 + T2);
– $JERK[2] is reserved for future use;
pr-0-0-gpr_04.fm
5-20 00/0607
Motion Control
pr-0-0-gpr_04.fm
00/0607 5-21
Motion Control
pr-0-0-gpr_04.fm
5-22 00/0607
Motion Control
pr-0-0-gpr_04.fm
00/0607 5-23
Motion Control
pr-0-0-gpr_04.fm
5-24 00/0607
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
pr-0-0-gpr_04.fm
00/0607 5-25
Motion Control
performed. If the controller is switched into Automatic state during the interruption, then
all of the recovery rules are followed.
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
pr-0-0-gpr_04.fm
5-26 00/0607
Motion Control
pr-0-0-gpr_04.fm
00/0607 5-27
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.
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.9 - Example in case of $RCVR_DIST modification).
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).
pr-0-0-gpr_04.fm
5-28 00/0607
Motion Control
1. motion direction
2. trajectory
3. calculated return movement
4. $RCVR_DIST
5. decelerate distance
6. motion stop command
7. actual motion stop position
See Fig. 5.10 - Example of continuous motion in case of linear movement. If another
motion follows the MOVEFLY, the arm will not stop at the first destination.
pr-0-0-gpr_04.fm
00/0607 5-29
Motion Control
5.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, 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. 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
pr-0-0-gpr_04.fm
5-30 00/0607
Motion Control
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. (par. 5.10.2.2 FLY_CART (Controller Aided Resolved
Trajectory) a pag. 5-31).
pr-0-0-gpr_04.fm
00/0607 5-31
Motion Control
A similar control is placed on the generation of circular trajectories. The velocity of
circular motions will be reduced to keep the stress of the arm within the limits specified
by $STRESS_PER. This reduction of motion velocity is more likely to occur with circular
motions having a small radius. (Note that this reduction is for the entire circle, not just
the fly trajectory between the circle and the next motion).
Keep the following points in mind when determining a value for $STRESS_PER.
– The larger the value of $STRESS_PER, the larger the probability that the speed
will remain constant. Also, larger values of $STRESS_PER will bring the trajectory
nearer the taught intermediate position. In reality however, an increase in
$STRESS_PER can place greater demands on the controller, causing the quality
of the trajectory to be reduced.
– When $STRESS_PER is set to 100%, the planned trajectories become very sharp
since they pass through the programmed point without a reduction in speed. This
can cause very high stress on the robot, the part, and the tooling in some cases.
– Lower values of $STRESS_PER can be used to reduce the stress caused by large
wrist orientation changes. However, this “smoother” trajectory will pass farther from
the taught intermediate position.
pr-0-0-gpr_04.fm
5-32 00/0607
Motion Control
controllata impostando:
When the fly motion type is set to FLY_CART, the trajectory can be controlled by setting:
– $FLY_DIST specifies a distance (in millimiters, default 5 mm) between the the
taught intermediate position and some point on the trajectory. The exact meaning
of the distance is determined by
– $FLY_TRAJ which can be set to
• FLY_AUTO it is the control which picks the closest trajectory to the
intermediate position that achieves the programmed speed without exceeding
the $STRESS_PER value.
Achieving and maintaining programmed speed has higher priority than
nearness to the intermediate position.
• 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.
pr-0-0-gpr_04.fm
00/0607 5-33
Motion Control
Fi g. 5.12 - FL Y Mo vem en ts
The above picture (Fig. 5.12 - FLY Movements) shows an example of the use of these
system settings. With $FLY_DIST set equal to 20 mm, the following results 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
ar m_num = 1
cond_num = 1
ROUTI NE print_debug
BEGI N
WRI TE ( $CRNT_ DATA[ arm_num] . FLY_DBUG, NL)
END print_debug
BEGI N
$CRNT_ DATA[ arm_num] . FLY_ DBUG : = 0
CONDI TI ON[ cond_num ] NODI SABLE :
WHEN AT END DO
pr-0-0-gpr_04.fm
5-34 00/0607
Motion Control
pr i nt _debug
ENDCONDI TI ON
- - initialisation
ENABLE CONDI TI ON[ cond_num ]
- - move statements
END mov_cart
pr-0-0-gpr_04.fm
00/0607 5-35
Motion Control
pr-0-0-gpr_04.fm
5-36 00/0607
Motion Control
1. Flange Frame
2. User Frame
3. TCP Frame
4. Fixed Tool
5. Base Frame
pr-0-0-gpr_04.fm
00/0607 5-37
Motion Control
pr-0-0-gpr_04.fm
5-38 00/0607
Motion Control
with the floor of the cell (WORLD reference), rather than with the base of the robot.
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.
For the configuration parameters, see the Cap. Use of Positioners managed by
C4G.
5.12.1.1 J ogg in g
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.
pr-0-0-gpr_04.fm
00/0607 5-39
Motion Control
5.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
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).
pr-0-0-gpr_04.fm
5-40 00/0607
Motion Control
pr-0-0-gpr_04.fm
00/0607 5-41
Motion Control
pr-0-0-gpr_04.fm
5-42 00/0607
6. SYNCHRONOUS MOTION
(OPTIONAL FEATURE)
In order to retrieve Comau Options Codes, please refer to C4G Control Unit
Technical Specifications Manual, chapter Software Options.
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
– Motion limitation of the two Arms
– Jogging Synchronized Arms
– Teaching and Modifying Positions (REC/MOD) with Synchronized Arms
– Loss of Synchronization
– Run-time modifying the Linear Speed Override
pr-0-0-gpr_07.fm
00/0607 6-1
the MASTER Arm is ARM[1] and the SERVER Arm is ARM[2]; whereas in the next
synchronised MOVE :
PROGRAM example
BEGI N
- - t he mai n ar m i s ar m 1, t he synchr oni sed ar m
- - i s ar m 2
MOVE ARM[ 1] TO p1 SYNCMOVE ARM[ 2] TO p2
MOVE TO p1 SYNCMOVE ARM[ 2] t o p2
- - $PROG_ ARM moves on p1
MOVE ARM[ 1] TO p1 SYNCMOVE TO p2
- - ERROR: $SYNC_ARM i s not i ni t i al i sed
$SYNC_ARM : = 2 - - $SYNC_ARM i s i ni t i al i sed
MOVE ARM[ 1] TO p1 SYNCMOVE TO p2
- - $SYNC_ ARM ( ar m 2) moves on p2
MOVE TO p1 SYNCMOVE TO p2
- - $PROG_ ARM and $SYNC_ARMEND ar e used, exampl e
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.
pr-0-0-gpr_07.fm
6-2 00/0607
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 mod e with
$SPD_OPT:=SPD_LIN and with
$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.
pr-0-0-gpr_07.fm
00/0607 6-3
For further information, please refer to Use of C4G Contro ller Unit manual, IDE Page
section.
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]).
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
pr-0-0-gpr_07.fm
6-4 00/0607
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:
pr-0-0-gpr_07.fm
00/0607 6-5
pr-0-0-gpr_07.fm
6-6 00/0607
7. COOPERATIVE MOTION
(OPTIONAL FEATURE)
In order to retrieve Comau Options Codes, please refer to C4G Control Unit
Technical Specifications Manual, chapter Software Options.
pr-0-0-gpr_08.fm
00/0607 7-1
1. User Frame
2. Positioner Flange frame
3. Positioner Base Frame
To enable and disable cooperative motion, the following built-in procedure is available:
pr-0-0-gpr_08.fm
7-2 00/0607
1. Working Arm
2. Positioner Arm
7.3 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.
pr-0-0-gpr_08.fm
00/0607 7-3
The cooperation during jog must be enabled with the ARM_COOP (for cooperative
arms) and AUX_COOP (for auxiliary axes cooperation) built-in procedures. These can
be executed inside the program by means of the key or through the Execute command
on the Service page (Execute softkey) of the TP4i/WiTP Teach Pendant.
pr-0-0-gpr_08.fm
7-4 00/0607
In order to retrieve Comau Options Codes, please refer to C4G Control Unit
Technical Specifications Manual, chapter Software Options.
pr-0-0-gpr_10.fm
00/0607 8-1
position.
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 : POSI TI ON
BEGI N
$SPD_OPT: =LI N_ SPD- - To check t he l i near speed
$LI N_SPD: =0. 1 - - Li near s peed i n m/ s
MOVE J OI NT TO p1
MOVEFLY LI NEAR TO p2 ADVANCE
MOVE LI NEAR TO p3
MOVE J OI NT 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. 8.1 - Programmed trajectory and sensors control 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
pr-0-0-gpr_10.fm
8-2 00/0607
pr-0-0-gpr_10.fm
00/0607 8-3
pr-0-0-gpr_10.fm
8-4 00/0607
communication on serial port; It will then appropriately process the information and send
the corrections to the C4G movement environment that will apply them to the trajectory
in progress.
The $SENSOR_TYPE values reserved for this type of sensor are included between 5
and 12 (see Tab. 8.3 - Correction_Speed = Factor*Reference_Speed). To send the
correction request to the movement environment the following Built-In has been
introduced :
pr-0-0-gpr_10.fm
00/0607 8-5
1. Flange
2. Tool
3. Sensor
4. Sensor frame
5. TCP frame
1. World frame
pr-0-0-gpr_10.fm
8-6 00/0607
$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.
pr-0-0-gpr_10.fm
00/0607 8-7
1. Programmed trajectory
2. Trajectory controlled by sensor
3. Correction required = +3 mm
4. Required = +1 mm
5. Required = -2 mm
6. Final deviation = 0 mm
7. Required = 0 mm
pr-0-0-gpr_10.fm
8-8 00/0607
1. Programmed trajectory
2. Trajectory controlled by sensor
3. Correction required = +3 mm
4. Required = +1 mm
5. Required = -2 mm
6. Final deviation = 0 mm
7. Required = 0 mm
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 example, the
MCP-ST board functions in relative mode. 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. 8.3 - Correction_Speed = Factor*Reference_Speed).
– 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. 8.4 - Absolute
deviations);
– 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. 8.5
- Relative deviation).
pr-0-0-gpr_10.fm
00/0607 8-9
– define a time period (TIME PERIOD) during which the entire deviation will be
assimilated.
The first criterion guarantees the execution of the correction in the least time possible
and is useful in all cases where the time that lapses between two sensor readings is very
short (high frequency) or is not known.
However, in some applications this method determines a correction in "spurts" since ,
for small deviations the corrections are applied with a fast, brief movement of the robot.
In these cases the second criterion is more effective because it makes it possible to
distribute the entire deviation over a pre-set time.
To choose between these two modes the $SENSOR_TIME variable is used. If
$SENSOR_TIME is zero, the speed criterion is used. A value that is not zero selects the
second mode and indicates the time (in milliseconds) during which the correction is to
be applied.
For external sensors the new data will be read by the sensor only after this time has
expired, starting from the last corrections. Fig. 8.6 - Effects of $SENSOR_TIME (with
relative corrections) illustrates the effect of the two different criteria.
1. Programmed trajectory
2. Trajectory controlled by sensor
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
pr-0-0-gpr_10.fm
8-10 00/0607
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. 8.7 - Effects of $SENSOR_GAIN). To avoid all types of limitation the
corresponding $SENSOR_GAIN value can be set at 100%.
pr-0-0-gpr_10.fm
00/0607 8-11
1. Programmed trajectory
2. Trajectory controlled by sensor
3. Maximum speed
4. Time increase
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; the MCP-ST board is included in this category of sensors.
pr-0-0-gpr_10.fm
8-12 00/0607
linked to the holding or the resetting of the overall deviations (seepar. 8.9 Accumulative
overall deviations management a pag. 8-16”).
The standard enable mode of sensor tracking permits the application of corrections read
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.
C4G 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 C4G 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 using the EXECUTE command from the system menu, nor by the
SYS_CALL of the EXECUTE command;
pr-0-0-gpr_10.fm
00/0607 8-13
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. 8.9 Accumulative overall deviations
management a pag. 8-16).
pr-0-0-gpr_10.fm
8-14 00/0607
1. Programmed trajectory
2. Trajectory controlled by sensor
3. Trajectory after a sensor failure
4. Optimal trajectory
5. HOLD caused by an error message
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 C4G 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. 8.9 - Effect of $RCVR_TYPE = 8 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.
1. Programmed trajectory
2. Trajectory controlled by sensor
3. Recovery trajectory
4. HOLD caused by an error message
pr-0-0-gpr_10.fm
00/0607 8-15
1. Programmed trajectory
2. Trajectory controlled by sensor
3. Starting point
4. Arrival point
5. New nominal trajectory
If tracking is enabled with the SENSOR_TRK(TRUE) option, the action changes since
pr-0-0-gpr_10.fm
8-16 00/0607
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 inFig. 8.1 - Programmed
trajectory and sensors control can be noted notwithstanding that the fly and 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).
1. Programmed trajectory
2. Trajectory controlled by sensor
3. Suspended sensor tracking
pr-0-0-gpr_10.fm
00/0607 8-17
1. Programmed trajectory
2. Trajectory controlled by sensor
3. OFFSET RESET without interrupt
pr-0-0-gpr_10.fm
8-18 00/0607
tracking session (see par. 8.9.1 Interrupted sensor tracking session a pag. 8-16).
On the other hand, the change of reference systems in relative modes does not
create any problems.
– It is not permitted to change from relative modes to absolute or vice-versa, without
interrupting the Sensor Tracking session. In the same way, it is not possible, in
absolute modes, to change the type of reference system in which the tracking is
required, without interrupting the enslaving (see par. 8.9.1 Interrupted sensor
tracking session a pag. 8-16).
PROGRAM sensor
VAR
p1, p2, p3, p4: POSI TI ON
cor r _y, cor r _z: REAL
cor r , of st : ARRAY[ 6] OF REAL
ROUTI NE send_cor r
BEGI N
get _ c or r ( c or r _ y, c or r _ z )
cor r [ 2] : =cor r _y; cor r [ 3] : =cor r _z
SENSOR_ SET_DATA( cor r )
SENSOR_ GET_OFST( of st )
WRI TE ( ‘ X: ‘ , of s t [ 1] , ‘ Y; ‘ , of s t [ 2] , ‘ Z: ‘ , of s t [ 3] , NL)
$TI MER[ 1] : = 0
ENABLE CONDI TTRUE[ 1]
END send_ cor r
BEGI N
CONDI TI ON[ 1] :
WHEN $TI MER[ 1] > 500 DO
send_cor r - - Cor r ect i ons sent ever y 500 ms
ENDCONDI TI ON
cor r [ 1] : =0; cor r [ 2] : =0; cor r [ 3] : = 0
cor r [ 4] : =0; cor r [ 5] : =0; cor r [ 6] : = 0
pr-0-0-gpr_10.fm
00/0607 8-19
- - Pr ogr am i n movement
MOVE J OI NT TO p1
$SENSOR_ENBL : = FALSE
DI SABLE CONDI TI ON[ 1]
MOVE J OI NT TO p4
END sensor
pr-0-0-gpr_10.fm
8-20 00/0607
9. CONVEYOR TRACKING
(OPTIONAL FEATURE)
In order to retrieve Comau Options Codes, please refer to C4G Control Unit
Technical Specifications Manual, chapter Software Options.
Conveyor Tracking feature allows the user to write simple programs for reaching
positions defined on a moving conveyor-truck: the C4G Controller automatically
compensates the istantaneous position of the conveyor. In order to compute the
instantaneous position of a truck, the conveyor motor has to be equipped with a position
transducer connected to the servo board (MCP) of C4G Controller Unit. Up to two linear
conveyors can be handled and only linear/circular moves can be executed when
tracking is active.
Two kinds of tracking are available:
– Cartesian Tracking Cartesian tracking. In the case of cartesian tracking the robot
is bolted to the floor 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 held 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.
– Rail Tracking Rail tracking. The rail tracking can be obtained when the robot is
mounted on a rail. In this case the rail is used to track and therefore the conveyor
must be of the linear type and the rail must be parallel to this. The rail motion will
be the sum of two components: a tracking component and the programmed motion
component.
By this, the rail tracking increases the workspace of the robot and allows to work
on very large parts controlling the tool speed and orientation.
This chapter describes the following subjects :
– Configuration
– Working Principle
– Process Monitoring
– Tracking Window
– Motion Statements
– Teaching Positions
– Tracking Interruption
– Limitations during Conveyor Tracking
pr-0-0-gpr_11.fm
00/0607 9-1
9.1 Configuration
System variables to configure the conveyor are field of two types of data structures:
those relative to the arm are field of $ARM_DATA structure; those related to the
conveyor-belt are field of two tables $CONV_TBL, one for each possible conveyor.
These variables are generally initialized by a setup program provided together with the
system.
To configure the hardware link of the conveyor to C4G Controller the following variables
are available:
$CONV_TBL[n].CT_JNT_MASK is a bit mask specifying the physical axis where the
resolver is connected; $CONV_TBL[n].CT_SCC indicates the servo board number
owing the physical axis.
The $ARM_DATA[n].CONV_CNFG[conv_idx] is a bit mask that specifies the type of
tracking according to the following convention:
– The first bit specifies Cartesian tracking (bit set to FALSE) or rail tracking (bit set to
TRUE).
– In the case of rail tracking, the second bit defines the direction of travel of the
conveyor. The bit must be set to FALSE if the positive direction of the rail of the
robot coincides with the direction of travel of the conveyor.
– In the case of Cartesian tracking, the third bit defines whether the conveyor is of
the traversing type (bit set to FALSE) or rotating type (bit set to TRUE).
– the fifth bit indicates the use of the rototranslating Conveyor (Robot enslaving to a
bending-press).
If the bit mask is read as numeric value, the $ARM_DATA[n].CONV_CONFG[conv_idx]
variable may have the following values:
0: linear Cartesian tracking;
4: circular Cartesian tracking;
1: rail tracking with the positive direction of the robot rail in the positive direction of
the conveyor;
3: rail tracking with the positive direction of the robot rail in the negative direction of
the conveyor.
16: rototranslating Cartesian tracking (
The $CONV_TBL[n].CT_TX_RATE system variable indicates the transmission ratio of
the position transducer used to measure the position of the truck: in the case of linear
Cartesian, roto-translating or rail type tracking, its unit of measurement is [mm/motor
turns] while in the case of a rotating conveyor its unit of measurement is [motor
turns/table turns].
The position of the conveyor with respect to the robot world frame is described by means
of $ARM_DATA[n].CONV_BASE[conv_idx] variable. It must be measured when the
conveyor-truck is at the zero position (see later) or in a known position. The position of
the origin of the reference and the direction of the axes must be selected according to
certain criteria that are slightly different in the case of linear, circular or rototranslating
tracking. In case of rototranslating Conveyor, see par. 9.9 Use of the Roto-translating
Conveyor a pag. 9-8.
pr-0-0-gpr_11.fm
9-2 00/0607
In the case of linear conveyors, the X axis of the basic reference must be aligned with
the direction of travel 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 the case of circular conveyors, the X axis must be tangential to the indexing table; the
Y axis must be in a radial direction in relation to the table and oriented towards the
center of rotation; the position of the Z axis depends on the first two axes according to
the right-hand rule and faces up if the indexing table turns in an anticlockwise direction
and down otherwise. In the circular case, the origin of the reference system must be at
a known distance from the center of rotation and not coincide precisely with this; this
distance represents the radius of the table and must be assigned to the
$CONV_TBL[i].CT_RADIUS variable (in case of rototranslating Conveyor, see par. 9.9
Use of the Roto-translating Conveyor a pag. 9-8). The circumference passing through
the origin of the basic reference of the table plays an important role in managing
rotations in that all distances and speeds are measured in relation to this basic
circumference.
Two variables are available to configure the limits for the speed and
acceleration/deceleration of the robot during the starting and ending phases of the
tracking:
– $ARM_DATA[n].CONV_SPD_LIM[conv_idx]
– $ARM_DATA[n].CONV_ACC_LIM[conv_idx].
Every interpolation tick, the truck frame of reference is updated shifting it along X+ by
the shift value expressed in mm by $CRNT_DATA[n].CT_SHIFT.
This distance is expressed in millimeters in case of linear tracking and in degrees in case
of circular tracking. When tracking is on, the user frame ($UFRAME) is defined relative
to the truck frame of reference so that all the POSITIONs are referred to the moving
workpiece (see Fig. 9.1 - Reference Frames for linear Cartesian tracking on rail and
Fig. 9.2 - Reference Frames for circular tracking).
pr-0-0-gpr_11.fm
00/0607 9-3
1. Tracking Window
2. User Frame
3. Conveyor Base Frame
4. Slide Frame
5. World Frame
6. Sensor
1. User Frame
2. Conveyor Base Frame
3. User Frame
4. Slide Frame
5. Sensor
6. User Frame
pr-0-0-gpr_11.fm
9-4 00/0607
pr-0-0-gpr_11.fm
00/0607 9-5
PROGRAM conv
BEGI N
CONDI TI ON[ 1] :
- - for example, the sensor is connected to $DI N[ [ 1]
WHEN $DI N[ 1] DO
$CONV_ ZERO[ 1] : = 0. 0
ENDCONDI TI ON
CYCLE
ENABLE CONDI TI ON[ 1]
WAI T FOR $DI N[ 1] - - wait for a workpiece
$CONV_TYPE : = CONV_1ON - - enable tracking
MOVE LI NEAR NEAR P1 BY 100 - - move to the track
MOVE LI NEAR TO P1 - - ove to the workpiece
CLOSE HAND - - pick
MOVE AWAY 100
$CONV_TYPE : = CONV_OFF - - disable tracking
MOVE LI NEAR NEAR P2 BY 100 - - move to a table
MOVE LI NEAR TO P2
OPEN HAND - - place
MOVE AWAY 100
END conv
pr-0-0-gpr_11.fm
9-6 00/0607
pr-0-0-gpr_11.fm
00/0607 9-7
pr-0-0-gpr_11.fm
9-8 00/0607
The value of $CONV_TBL[i].CT_RADIUS is the robot distance from the fold (in mm);
such a value must be calculated referred to the robot position at the beginning of the
fold, from the sheet point of contact (see Fold beginning position).
pr-0-0-gpr_11.fm
00/0607 9-9
pr-0-0-gpr_11.fm
9-10 00/0607
10.1 Introduction
The service of the Integrated Conveyor Tracking (ICT) is necessary to enable 2 robots
to work simultaneously in cooperation on the same positioner.
10.2 Characteristics
Cooperation is possible between an arm and a positioner (cooperative motion with
auxiliary axes) or between 2 arms (cooperative arms). As already stated, the Integrated
Conveyor Tracking enables 2 robots to both cooperate with the same positioner, even
if in actual fact, only the first arm 'cooperates', while the second arm tracks the target
position of the positioner, as if this were a loop conveyor.
To extend the concept of cooperation with the Integrated Conveyor Tracking
performance, it is necessary to use a standard type C4G Controller coupled with a
Power type C4G: this configuration is necessary to have a single motion planner and the
control of up to 20 axes (2 DSA, multi-machine configuration).
The positioner is to be outfitted as an auxiliary axis of the arm it is to cooperate with, the
second arm can follow the auxiliary axis of the first arm as if this were a loop conveyor
controlled by the C4G (instead of by an external sensor as in the case of the classic
Conveyor Tracking).
It will be possible to define a maximum of two conveyor axes in the same cell.
10.3 Programming
For the programming, the user will have to apply simultaneously all the configuration and
activation rules used for the cooperative motion with the auxiliary axes and for the
circular axis conveyor tracking.
In manual mode, until the activations
hs-0-0-mot_07.fm
00/0607 10-1
10.4 Example
A cell consisting of 2 robots (for example, 2 NS robots) and a PTDV positioner, for a total
of 15 axes configured as follows: on arm 1 the first NS and the PTDV, on arm 2 the
second NS.
PROGRAM ct l i b NOHOLD
BEGI N
--
- - Conf i gur e axi s 9 ( f or t he f i r st ar m) as l oop conveyor of t he second ar m
--
$CONV_TBL[ 1] . CT_J NT_MASK : = 0x100
$CONV_TBL[ 1] . CT_SCC : = 1
$CONV_TBL[ 1] . CT_TX_RATE : = $ARM_ DATA[ 1] . TX_ RATE[ 9]
PROGRAM i ct _s t ep3 EZ
VAR pnt 0008p, pnt 0009p, pnt 0010p : POSI TI ON
pnt 0003x, pnt 0006x, pnt 0007x, pnt 0008x : XTNDPOS FOR ARM[ 1]
pnt 0001x, x1, x2, x3 : XTNDPOS FOR ARM[ 1]
pnt 0001p, pnt 0004p, pnt 0005p, pnt 0007p : POSI TI ON
hs-0-0-mot_07.fm
10-2 00/0607
BEGI N
- - Def i ni t i on of t he TOOL, BASE, USER FRAME of t he 2 NS r obot s
$ARM_ DATA[ 1] . TOOL : =
POS( 250. 381, 1. 8329999, 174. 686, - 0. 032000002, 110. 556, 179. 60001, ' ' )
$ARM_ DATA[ 2] . TOOL : =
POS( 250. 381, 1. 8329999, 174. 686, - 0. 032000002, 110. 556, 179. 60001, ' ' )
$ARM_DATA[ 1] . BASE : = POS( 0, 0, 0, 0, 0, 0, ' ' )
$ARM_DATA[ 2] . BASE : = POS( 0, 0, 0, 0, 0, 0, ' ' )
$ARM_ DATA[ 1] . UFRAME : = POS( 0, 0, 0, 0, 0, 0, ' ' )
$ARM_ DATA[ 2] . UFRAME : = POS( 0, 0, 0, 0, 0, 0, ' ' )
- - Cooper at i ve Base
$ARM_ DATA[ 1] . AUX_BASE[ 3] : = pnt 0001p : POS( 0, 0, 0, 0, 180, 180, ' ' )
- - Conveyor Base
$ARM_ DATA[ 2] . CONV_ BASE[ 1] : = pnt 0004p : POS( 0, 0, 0, 0, 180, - 60, ' ' )
- - Reset cooper at i ve mot i on
AUX_COOP( OFF, 9, 1)
- - Set wi ndow conveyor
$ARM_ DATA[ 2] . CONV_ WI N[ 1] : = - 200
$ARM_ DATA[ 2] . CONV_ WI N[ 2] : = 200
- - Enabl e conveyor
$ARM_ DATA[ 2] . CONV_TYPE : = CONV_1ON
MOVE ARM[ 2] LI NEAR RELATI VE VEC( 0, 0, 1) I N BASE
- - Set auxi l i ar y axi s val ues
x1. POS : = ARM_ POS( 1)
x1. AUX[ 1] : = 0
x1. AUX[ 2] : = 0
x1. AUX[ 3] : = 25
x2. POS : = ARM_ POS( 1)
x2. AUX[ 3] : = 0
x2. AUX[ 1] : = 0
x2. AUX[ 2] : = 0
x3. POS : = ARM_ POS( 1)
x3. AUX[ 1] : = 0
x3. AUX[ 2] : = 0
x3. AUX[ 3] : = - 10
hs-0-0-mot_07.fm
00/0607 10-3
CYCLE
- - Cooper at i ve Mot i on act i vat i on
AUX_COOP( ON, 9, 1)
- - Conveyor Tr acki ng act i vat i on
$ARM_DATA[ 2] . CONV_TYPE : = CONV_1ON
- - Conveyor coupl i ng move
MOVE ARM[ 2] LI NEAR RELATI VE VEC( 0, 0, 1) I N BASE
- - Mot i on cont r ol l ed by posi t i oner onl y, t he 2 r obot s f ol l ow
DELAY 1000
MOVE ARM[ 1] LI NEAR TO x1
DELAY 1000
MOVE ARM[ 1] LI NEAR TO x2
DELAY 1000
MOVE ARM[ 1] LI NEAR TO x3
DELAY 1000
- - Synchr oni sed and cooperat i ve mot i on of t he 2 r obot s on posi t i oner i n mot i on
MOVE ARM[ 1] LI NEAR TO pnt 0003x SYNCMOVE ARM[ 2] LI NEAR TO pnt 0007p
MOVE ARM[ 1] LI NEAR TO pnt 0006x SYNCMOVE ARM[ 2] LI NEAR TO pnt 0008p
MOVE ARM[ 1] LI NEAR TO pnt 0007x SYNCMOVE ARM[ 2] LI NEAR TO pnt 0009p
MOVE ARM[ 1] LI NEAR TO pnt 0008x SYNCMOVE ARM[ 2] LI NEAR TO pnt 0010p
hs-0-0-mot_07.fm
10-4 00/0607
In order to retrieve Comau Options Codes, please refer to C4G Control Unit
Technical Specifications Manual, chapter Software Options.
pr-0-0-gpr_09.fm
00/0607 11-1
parameters in $WEAVE_TBL[$WEAVE_NUM].
It is possible to continue weaving during a series of fly motions or along a path motion.
However, weaving will only occur during the Cartesian motions or Cartesian path
segments. If a series of fly motions or a path includes a joint interpolated motion,
weaving will stop during the joint motion and then start again with the next Cartesian
motion or path segment.
The first move with weaving is the movement after a weaving stop. A weaving stop can
occur if the user disables it expressly, or if the move is a joint move. or if two moves with
weaving are not linked with a continuous motion (fly). This principle is applied not only
to singular motions, but also in case of path segments (PATH).
pr-0-0-gpr_09.fm
11-2 00/0607
– a REAL field defines the weave plane and weave direction (see explanation
below):
$WEAVE_TBL[n].WV_PLANE (from -180 to +180 degrees);
– an INTEGER field defines the weave amplification factor (%):
$WEAVE_TBL[n].WV_AMP_PER (from 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
Parametric weaving is defined by three indications:
– Wave Shape
– Weave Plane (angle of weaving plane)
– Weave Amplification (used to vary the weaving amplitude)
pr-0-0-gpr_09.fm
00/0607 11-3
Note that the following formula is used for transverse speed calculation
Left amplitude
Transverse speed = ----------------------------
ts
a. Direction of weaving
b. Time
1. ts[1]
2. Left dwell time
3. ts[2]
4. Central dwell time
5. ts[3]
6. Right dwell time
7. ts[4]
8. Final dwell time
9. Left amplitude
10. Right amplitude
Meaning of the terms ts[n] (ramp up or down times), according to the weaving
modality:
– Mod ali ty 0 - ts ti mes are all equ al and are gen erat ed to reac h a t ran sv ers e
speed $weave_tbl[n ].wv_trv_spd;
– Mod ali ty 1 - the ts ti mes ar e all equal an d are gener ated to c reat e the weav in g
period according to the programmed wave length;
– Mod ali ty 2 - The ts[ n] ti mes are gener ated to reac h t he resp ect iv e tr ans ver se
speeds $weave_tbl[n ].wv_trv_spd_phase[n].
pr-0-0-gpr_09.fm
11-4 00/0607
1. Weaving direction
2. Path
3. Transverse speed
4. Torch speed = Linear speed
5. Torch speed = Resulting speed
6. Linear speed
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 move 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 - Weave waves shows the
different shapes that can be achieved using the $WEAVE_TBL settings.
The weave wave frequency, according to the modality used, is calculated in one of these
ways:
– modality 0
pr-0-0-gpr_09.fm
00/0607 11-5
– modality 2
where:
dwell sum = left dwell + right dwell + 2 * center dwell (ms)
The maximum frequency is dependent on the mechanical design of the arm, but the
weave shape will match the theoretical up to about 5 Hz (cartesian weaving) or 8 Hz
(joint weaving) on arms intended for arc welding.
pr-0-0-gpr_09.fm
11-6 00/0607
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, the
direction of weaving on the second trajectory is recalculated maintaining the angle of
inclination 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 control will refer to this angle only for the
first movement with weaving.
The trajectory weaving linked 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. (par. 5.10.2.2
FLY_CART (Controller Aided Resolved Trajectory) a pag. 5-31) section for futher
details.
pr-0-0-gpr_09.fm
00/0607 11-7
Fi g. 11.5 - Weav in g w it h f ly
1. Start point
2. Weaving plane angle= 0°
For a circular motion, the weave plane is continuously evaluated relative to the path, so
that the weave direction is always perpendicular to the path. If the weave plane is not
parallel to the plane of the circle, the weave plane will be on the frustum of a cone as
shown in Fig. 11.6 - Circular Weaving.
pr-0-0-gpr_09.fm
11-8 00/0607
where the gap between parts varies from beginning to end because of imperfect
alignment.
The weave amplification factor in $WEAVE_TBL[n].WV_AMP_PER is used to grow or
shrink the weave amplitude linearly along the motion. The start of the move is
considered 100%. The value from $WEAVE_TBL determines the percentage at the end
of the move.
If a series of moves is issued in fly or a path is executed, the amplitude corresponding
to 100% is determined at the first move with weaving . Then at the beginning of every
succeeding move, the percentage starts the same as the end of the previous move, and
$WEAVE_TBL[n].WV_AMP_PER is read to determine the percentage at the end of the
move. Thus, a series of moves can be used to weld a long groove or seam without
stopping, and the amplification will change continuously from the start of the first move
to the end of the last move. (Note that the $WEAVE_TBL[n].WV_AMP_PER variable is
read each move, but the definition of 100% is only determined at the first move with
weaving).
Fig. 11.7 - Weave amp illustrates the weave amplification feature.
1. Final amplitude
2. Final point
3. Start point
4. Initial amplitude
pr-0-0-gpr_09.fm
00/0607 11-9
1. Welded part
2. First move in fly
3. Second move in fly
4. Welding
5. Fly move node
pr-0-0-gpr_09.fm
11-10 00/0607
pr-0-0-gpr_09.fm
00/0607 11-11
11.6.1 Mode
The weaving without Arm motion mode is activated by means of
$CRNT_DATA[num_arm].WEAVE_TYPE_NOMOT predefined variable which has got
the same functionalities as described in par. 11.1 Weaving Mode a pag. 11-1: the only
pr-0-0-gpr_09.fm
11-12 00/0607
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 weave
table; it is anyway needed to use the predefined variable
which specifies that the weaving functionality will be performed without Arm motion.
The weave tables are exactely 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 I parametri
utilizzati appartengono allo stesso insieme introdotto nel par. 11.3 Weaving Parameters
a pag. 11-2.
Anyway, there are some features which make a no-sense for this functionality: e.g.
mode 1 cannot be selected which involves a wave shape related to the wavelength,
because the Arm does not move.
pr-0-0-gpr_09.fm
00/0607 11-13
c. speeds definition
$SPD_OPT : = SPD_LI N
$LI N_SPD : = 0. 050000001
MOVE LI NEAR TO p1
pr-0-0-gpr_09.fm
11-14 00/0607
In order to retrieve Comau Options Codes, please refer to C4G Control Unit
Technical Specifications Manual, chapter Software Options.
This fun ction has to b e used when MAXIMUM ACCURACY is the pri ority .
If instead the prio rity i s to o btain rob ot MAXIMUM SPEED, it is n ecessary to use
the SMARTMOVE4 (opti onal)
12.1 Introduction
The Path Governor is a software option to obtain very accurate Cartesian, circular
and/or linear moves, reducing the path error.
It can be applied to any type of machine since it is based on the ACTUAL behaviour of
the robot. It can be executed for all the MOVE instructions, or if preferred only for some
of them.
The Path Governor is enabled ONLY in Local Automatic status (status selector
switch on AUTO).
Having enabled the Path Governor, the user has to set the following predefined
variables :
– $LIN_SPD - maximum speed value to execute the path
– 3 predefined variables that indicate the precision :
hs-0-0-mot_05.fm
00/0607 12-1
and, as a consequence, the error in the path could be greater than that required.
It is to be noted that, with the Path Governor enabled, the target speed profile will not be
trapezoidal, except in cases of saturation, but will have a speed trend that very similar
to the example shown in Fig. 12.1, where the result obtained during a Cartesian MOVE
is compared with the Path Governor Enabled and Disabled.
hs-0-0-mot_05.fm
12-2 00/0607
As can be seen in Fig. 12.1, with the Path Governor, the maximum speed value set is
not necessarily reached, but there is a speed modulation during the motion according to
the Cartesian error that is taking place.
hs-0-0-mot_05.fm
00/0607 12-3
hs-0-0-mot_05.fm
12-4 00/0607
SMARTMOVE4 (optional)
In order to retrieve Comau Options Codes, please refer to C4G Control Unit
Technical Specifications Manual, chapter Software Options.
This fun ction has to be us ed when robo t MINIMUM CYCLE TIME is the pri ority .
If instead the prio rity i s to o btain rob ot MAXIMUM ACCURACY, it is n ecessary to
use the Path Governor (opti onal)
– Description
– Jerk Limitation
– Cartesian Motions
13.1 Description
It is an algorithm that can be enabled as a software option to optimise the execution
time of joint AND/OR CARTESIAN motionS . When SmartMove4 functionality is
active, all joint motions are automatically executed using such an algorithm. As far as
executing Cartesian motions, please refer to par. 13.3 Cartesian Motions a pag. 13-2.
By means of the robot dynamic model on all 6 axes, through which the inertia, frictions,
centrifugal and coriolis torques can be determined according to the robot posture and
the load conveyed, the robot motion is planned in the joints space fully exploiting the
torque and speed characteristics made available by the actuators that handle the joints,
so as to have at least one axis with maximum torque.
To optimise the results of the algorithm and avoid excessive torque requirements on
axes in motion, it is fundamental to declare the load data correctly, possibly using the
Payload identification (optional function) procedure.
The tolerance between the current predicted by the dynamic model and the actual
current of each individual axis can be configured through the system variables
$ARM_DATA[num_arm].SM4_SAT_SCALE[num_axis].
It is recommended to r educe such tol erances, because they are directly r elated to
the stress passed by the reducers.
Fig. 13.1 shows a comparison between two speed profiles, without and with the
SmartMove4 algorithm.
hs-0-0-mot_06.fm
00/0607 13-1
SMARTMOVE4 (optional)
Spd - Speed
Tr - Time reduction
$SPD_OPT := SPD_SM4C
SmartMove4 algorithm will automatically calculate the maximum TCP acceleration and
speed values, depending on the specified payload, on the operating zone and on the
axes configuration.
hs-0-0-mot_06.fm
13-2 00/0607
This service, used in applications such as Cosmetic Sealing and Glueing, modulates
the flow of the material to be delivered during the part machining, according to the speed
of the TCP (Tool Center Point).
The delivery device, according to the voltage set, delivers a certain material .
The material dispensing machine defines the maximum voltage value it can handle.
The voltage to be delivered is passed from the C4G each time by a predefined $WORD
variable. Maximum value allowed is 65535.
If, for example, the maximum voltage value that can be delivered is 10 Volt and the
$WORD is set at 65535 (maximum $WORD value), this means that the machine will
apply the maximum voltage (10 Volt ) for the material delivery.
Certain parameters have to be set to define the modulation functioning.
These parameters are kept in the predefined variable $FLOW_TBL (2 elements array);
the values are set by the motion parameters, with the following fields:
– $FW_ARM (integer): arm to which this algorithm is applied.
– $FW_AXIS (integer): axis to which this algorithm is applied ; only to be specified
when $FW_VAR is set at 2.
– $FW_CNVRSN (real): conversion factor to be applied to calculate the flow to be
delivered.
– This conversion value can be modified during the algorithm operation.
– $FW_VAR (integer): INTEGER. Type of variable to be operated on. If set at 1 the
flow modulation algorithm is applied to $ARM_VEL /cosmetic sealing); if set at 2
the flow modulation algorithm is applied to $RAD_VEL (glueing).
– $FW_SPD_LIM (2 real array ): indicates the minimum and maximum speed limits
over which the flow modulation algorithm will apply the nearest limit.
– $FW_FLOW_LIM (2 integer array ): indicates the minimum and maximum flow
limits over which the modulation algorithm will apply the nearest limit .
– $FW_ENBL (boolean): algorithm state indicator - enabled or disabled.
– $FW_START (boolean): indicates the time interval (in milliseconds) between the
speed sample acquisition (immediately following the call to FLOW_MOD_ON) and
the data writing on the analog port indicated in the call to FLOW_MOD_ON.
The formula that determines the conversion factor calculation is based on the maximum
speed that is intended to be used for the robot and the maximum applicable voltage in
bits. These values are defined during the initial configuration when setting the
$FLOW_TBL fields.
pr-0-0-gpr_12.fm
00/0607 14-1
Example:
The voltage value is read by the machine that delivers the material on an integer port,
usually a $WORD, defined during the algorithm enabling; to enable the algorithm, the
FLOW_MOD_ON built-in routine is used , with the call:
FLOW_MOD_ON (<analog_port>, <flow_table_index>)
where:
– <port> is to be INTEGER type. For example: $WORD.
– <flow_table_index> where the type of INTEGER is the $FLOW_TBL index .
Possible values: 1 or 2.
Obviously there is also a built-in routine for disabling, its call is:
– FLOW_MOD_OFF (<flow_table_index>)
– <flow_table_index> INTEGER. The $FLOW_TBL index. Possible values: 1 or 2.
The program that calls the FLOW_MOD_ON on a certain index must be the same as
that which calls FLOW_MOD_OFF on that index.
When the program is deactivated the table is automatically released (implicit
FLOW_MOD_OFF ).
pr-0-0-gpr_12.fm
14-2 00/0607
1. Delivery flow
2. Conversion factor
y Voltage (V) to be delivered by the dispensing machine (written in the analog port passed to
FLOW_MOD_ON)
x TCP speed ($ARM_VEL or $RAD_VEL)
pr-0-0-gpr_12.fm
00/0607 14-3
pr-0-0-gpr_12.fm
14-4 00/0607
15.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. 15.1 - Involved Robot models:
pr-0-0-gpr_05.fm
00/0607 15-1
15.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 EZ environment. It can
be local or remote. For SMART NH4(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 NH4 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 C4G 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.
pr-0-0-gpr_05.fm
15-2 00/0607
In order to retrieve Comau Options Codes, please refer to C4G Control Unit
Technical Specifications Manual, chapter Software Options.
This algorithm improves the precision of the robot positioning in the work area.
The software offsets the kinematic errors, caused by the imprecision of the robot lever
lengths or the incorrect coupling of the axes (axis orthogonality ), and deflection error
caused by the weight of the mechanical parts.
To make it operational, it is necessary to identify the actual kinematic model of each
individual robot so as to obtain a machine offset file.
pr-0-0-gpr_05.fm
00/0607 15-3
Anthropomorphic robots, like the ones in Tab. 15.1 - Involved Robot models, have three
singularities. The most evident one happens when axis 5 is at zero degrees. When this
occurs, axis 4 is aligned with axis 6. This produces different behaviors depending on the
shape of the wrist. Further information are described in the following par. 15.6.1.4 Axis
5 singularity a pag. 15-7 for non-spherical wrist robots and par. 15.6.2.1 Axis 5
singularity a pag. 15-15 for spherical wrist robots.
Nevertheless there is a general feature available with Comau C4G 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. 15.7 Programming rules for non-spherical
wrist robots (SMART NH4) a pag. 15-17).
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 toWRIST_JNT too.
pr-0-0-gpr_05.fm
15-4 00/0607
pr-0-0-gpr_05.fm
00/0607 15-5
pr-0-0-gpr_05.fm
15-6 00/0607
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 ]
pr-0-0-gpr_05.fm
00/0607 15-7
pr-0-0-gpr_05.fm
15-8 00/0607
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 pos ition is si ngular" .
These areas can be reached in a join t way; the li mitation s only refer to Cartesian
movements
pr-0-0-gpr_05.fm
00/0607 15-9
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 r eturned: -52 "Cartesian pos ition is ou t of work
range" .
The same situation can also happen with remote too l ($TOOL_RMT:=TRUE or nodal
pr-0-0-gpr_05.fm
15-10 00/0607
pr-0-0-gpr_05.fm
00/0607 15-11
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 r eturned: -52 "Cartesian pos ition is ou t of work
range" .
pr-0-0-gpr_05.fm
15-12 00/0607
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 r eturned: -52 "Cartesian pos itio n is o ut of work
range" .
pr-0-0-gpr_05.fm
00/0607 15-13
pr-0-0-gpr_05.fm
15-14 00/0607
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 r eturned: -52 "Cartesian pos itio n is o ut of work
range" .
pr-0-0-gpr_05.fm
00/0607 15-15
The WRIST_JNT modality (see par. 15.5 Moving through axis 5 singularities a
pag. 15-3) is a good method to move through the singularity zone when the
accelerations are too high or when the behavior of the robot is not proper for the specific
application.
pr-0-0-gpr_05.fm
15-16 00/0607
This table is only valid for SMART NH3 robot shelf mod els!
The prohib ited zone fo r SMART NH1-NH2-NH3 robot s th at are not shelf, is very
limited. When the WCP is exactly under axis 1, one of the three following error
messages is displ ayed :
pr-0-0-gpr_05.fm
00/0607 15-17
SMART NH4 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 dist ances to includ e pre-twist ed cables and hoses throu gh the
wrist. Following this concept, such a robot model is completely without any
external cable on the forearm, avoidin g the unknown b ehavior of the cables with
conventional robots while moving close to the wrist singularity.
The disadvantage is that SMART NH4 robot has a larger singularity zone around axis 5
with respect to spherical wrist robots (see par. 15.6.1.4 Axis 5 singularity a pag. 15-7).
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 C4G Robot Controller.
pr-0-0-gpr_05.fm
15-18 00/0607
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 appr oach vector is not p arallel to axis 6
of the rob ot. If they are parallel, something can stil l be done, provid ed that the TCP
is not alig ned along axis 6.
The following picture shows three different cases with a spot welding gun.
Fig. 15.5 - BEST situation (90° between axis 6 and gun approach
vector)
pr-0-0-gpr_05.fm
00/0607 15-19
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.
pr-0-0-gpr_05.fm
15-20 00/0607
– 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).
pr-0-0-gpr_05.fm
00/0607 15-21
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 NH4 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
pr-0-0-gpr_05.fm
15-22 00/0607
paths.
15.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 NH4 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.
pr-0-0-gpr_05.fm
00/0607 15-23
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. 15.7.1.1 Changing the orientation of the points along the path a pag. 15-18).
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.
pr-0-0-gpr_05.fm
15-24 00/0607
pr-0-0-gpr_05.fm
00/0607 15-25
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 560 mm long and exactly aligned with axis
6. Many vertical trajectories have been executed around the calibration position of the
SMART NH4 model, properly programming the points and moving in WRIST_JNT
evolution method through the singularity zone.
As clearly shown, the angle is more than 2 degrees inside a small circle with a diameter
of about 90 mm. Out of a zone of about 290 mm it is possible to cross the singularity
zone without any error.
pr-0-0-gpr_05.fm
15-26 00/0607
15.7.3 Conclusions
Many methods and hints have been given to increase the capabilities of SMART NH4
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.
pr-0-0-gpr_05.fm
00/0607 15-27
15.8 Appendix
pr-0-0-gpr_05.fm
15-28 00/0607
In order to retrieve Comau Options Codes, please refer to C4G Control Unit
Technical Specifications Manual, chapter Software Options.
16.1 Introduction
The Collision Detection algorithm 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, by means of a predefined
variable, using either a Program statement or a system Command
The Collision Detection functionality has NOT been designed in order to protect
the personnel, but to limit any damage to the robot mechanical parts and
therefore to its equipments!
pr-0-0-gpr_06.fm
00/0108 16-1
Compliance
The axes compliance has been used in order to be able to absorb part of the collision
energy (or part of the over-traction in case of stuck tips) and to minimize any possible
damage, this compliance can be activated by the user. Carefully assess its use in the
application.
The robot DOES NOT STOP, but continues the programmed motion: it is the
responsibility of the user to appropriately deal with the event that has occurred,
cancelling th e current motion, that would continue toward the obstruction, and
progr amming the new trajectory. In the par. 16.8.5 Managing "c ollisi on detected"
event on page 16-28, there is an example program.
BIT_SET($ARM_DATA[num_arm].A_ALONG_1D[12], 10)
The bit modification is allowed both at run-time and by means of the configuration file,
and it is possible to save it into the configuration file .C4G.
pr-0-0-gpr_06.fm
16-2 00/0108
NOTE THAT:
if the used System Software version is less than 2.02, when the Collision
Detection f uncti onality i s enabled, any occ urri ng DRV OFF automatically disables
it (error message 62514 SA: collision detection disabled upon DRV OFF). To
enable it again, it is necessary to do it intentionally, executing the following
statement again:
$CRNT_DATA[n um_arm ].COLL_ENBL := TRUE
For version s after 2.02 the Collis ion Detection, once enabled, remains activ e until
the user disables it.
Compliance
After a collision alarm, the robot stop may be made compliant. The compliance
occurence after collision is statedby setting to 1 bit number 11 of
$ARM_DATA[num_arm].A_ALONG_1D[12] predefined variable, and it is up to the user
to enable it by inserting in his program the following statement:
16.4.1 $COLL_TYPE
In order to define the Collision Detection sensitivity type, it is available $COLL_TYPE
predefined variable. The allowed values for such a predefined variable are as follows:
– COLL_LOW
– COLL_MEDIUM
– COLL_HIGH
– COLL_MANUAL
initialized by COMAU, and
– COLL_USER1
– COLL_USER2
– ...
pr-0-0-gpr_06.fm
00/0108 16-3
– ...
– COLL_USER10
that can be handled by the user to customise COMAU data.
During a Program execution, while some particular arm movements are performed, it is
possible that an occurring collision should be detected using more or less sensitivity.
The collision sensitivity can be modified both for a MOVE sequence and for just one
MOVE statement.
Modal assignment (for the whole MOVE sequence):
$CRNT_ DATA[ num_ar m] . COLL _ENBL : = TRUE
$COLL_ TYPE: = COLL_MEDI UM
MOVE TO PNT0001J
MOVE TO PNT0002J
In the shown above example, the collision sensitivity takes effect for both the MOVE
statements.
Nodal assignment (for just one MOVE statement):
$CRNT_ DATA[ num_ar m] . COLL _ENBL : = TRUE
$COLL_ TYPE : = COLL_ LOW
MOVE TO PNT0001J
MOVE TO PNT0002J WI TH $COLL_ TYPE : = COLL_ HI GH
In the shown above example, the first MOVE statement is executed using a LOW
collision sensitivity, while the second one is performed using a HIGH collision sensitivity.
A set of values corresponds to each value of $COLL_TYPE for the axes sensitivity,
$ARM_SENSITIVITY and a set of values (if any) for the compliance of
$COLL_SOFT_PER (just in the case in which the compliance modality after collision
has been enabled). Basic values (HIGH, MEDIUM, LOW, MANUAL) are set by COMAU.
COLL_USER1 and COLL_USER2 values can be used under the care and the
responsibility of the user.
pr-0-0-gpr_06.fm
16-4 00/0108
Since System Software version 2.42 and su bsequent, values 1 and 0 of the Time
parameter, take a new meaning:
– 1 - ind ic ates to st art th e data ac qu is it io n i n or der to cal cu lat e the s ens it iv it y
thresholds
– 0 - in di cat es to st op th e dat a acq ui si ti on and to ass ig n th e sen si ti vi ty
thresholds.
Example of usage:
ARM_COLL_THRS( 1, COLL_ USER7, 1)
MOVE . . .
....
MOVE . . .
ARM_COLL_THRS( 1, COLL_ USER7, 0) §§
– Margin is a flag (TRUE/FALSE) that defines whether the thresholds are to be
calculated with a margin of variability (TRUE, default value) or exactly on the
assigned path (FALSE).
The value of the variability margin is contained in the predefined variable
$A_ALONG_2D[10,ax] that will be initialised, in the configuration file, with the value
{7,7,6,6,6,0,0,0,0} which means 7% of the drive full scale on the first 3 axes, and
6% on the wrist axes (value determined experimentally). The privileged user can
change this margin.
For example,
ARM_COLL_ THRS( 1, COLL_USER2, 60, FALSE)
Acquires the data starting from the instant the built-in is executed and for the next 60
seconds: the end being indicated with the message
loads the values obtained, with no variability margin, in the predefined variables
$ARM_SENSITIVITY[COLL_USER2, ax].
The built-in can be used in a PDL2 program, linked to opportune CONDITIONS, to
adjust the sensitivity thresholds should the movement execution conditions change.
It is to be noted that the recalculation requires the same time as for the
acquisition, before the new thresholds can be actuated. During this time, the
active thresholds (i.e. the current ones) could cause false collisions or poor
sensitivity.
Opportune measures, such as to use the standard safety thresholds during the
transition stage (from the start of the built-in execution to the receiving of the
message) shou ld allow the acquisit ion phase to be overcome .
pr-0-0-gpr_06.fm
00/0108 16-5
16.5 Reliability
In order to make the Collision Detection algorithm to operate in a safe and reliable way,
it is ABSOLUTELY REQUIRED that the user properly identifies the payload.
The Collision Detection performance strictly depends on a proper declaration of the
currently used payload: if the estimated payload is wrong, the Collision Detection could
be misevaluated (i.e. false collision during a Program execution); furthermore, while in
the compliance phase, with consequent deceleration and stop, the robot arm could have
unpredictable behaviours due to either an underestimated or an overestimated payload.
For these reasons, before activating th e Collis ion Detection func tion, the user is
to check t hat the load used has been defined precisely.
16.6.1 Introduction
The following remarks are provided to help the user in setting up the Collision Detection
functionality.
The essential condition for the Collision Detection functionality to work properly is that
the dynamic model of the currents does exist for the related arm/robot. Only if the robot
is provided with such a dynamic model, it is possible to activate the functionality (if the
optional feature is present/purchased).
The dynamic model is able to calculate in advance the currents that will be used to move
the robot in a specific motion, using robot position, payload and inertia data. Today all
robots (except auxiliary axes) are provided with dynamic model.
In order to obtain the best performances from the dynamic model, it is NECESSARY to
have properly configured the following payload variables:
– $TOOL_MASS
– $TOOL_CNTR
– $TOOL_INERTIA
It is the operator’s care either to insert the nominal data or to use (if present/purchased)
the Payload Identification Program (optional feature), to modify the above listed values
while the application program is running, so the current payload values are always
pr-0-0-gpr_06.fm
16-6 00/0108
VERY IMPORTANT! Remeber that t he Collisi on Detection funct ionality has been
designed to lim it any damage to the robo t and therefore to its equipm ent, in case
of collision. So, since it is a functionality that immediately acts to limit the
colli sion effect, it is expectable it also lim its 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.
When a collision error occurs, the robot is immediately put in DRIVE OFF state and the
following error message is issued:
62513 – 10 SAX COLLI SI ON DETECTED
in order to reset the alarm state, the alarms latch command is to be used:
– ULLA command, or
– Alarm Page, Latched sub-page, Ack softkey, in case of use of TP4i/WiTP Teach
Pendant (for further information see Use of C4G Contro l Unit , chapter USE OF
TP4 TEACH PENDANT,l).
Now, let’s go through Collision Detection variables setting. It is strongly recommended
to follow all the listed below steps:
Identifying the thresholds with the robot COLD limits, to a certain extent, the
sensitivity of the algorithm. The rules for use that are given below can help
understand th ese aspects and advise the user how to also m ake the funct ion very
sensitive.
pr-0-0-gpr_06.fm
00/0108 16-7
to WARMED and from WARMED to COLD, based on events (for example machine
stop for maintenance or a halt in the working activities and a restart) and the
associated timers.
The user can develop the program using the example in the par. 16.8.4 Updating
of thresholds in cold robot/warmed robot mode on page 16-16.
Note that the thresholds defini tion d oes NOT take place inside this p rogr am, but
in the work program !
To deactivate it:
As far as using the DRIVE OFF command with system software varsions less than
2.02, please read the described above note (see NOTE THAT:).
The sensitivity type can be defined in the program by means of two different
strategies:
• modal definition
...
$COLL_ TYPE : = COLL_ xxxx
pr-0-0-gpr_06.fm
16-8 00/0108
MOVE . . .
...
this means that the chosen sensitivity threshold (COLL_xxxx) will be used
• nodal definition for all MOVE statements
MOVE . . . WI TH $COLL_ TYPE: = COLL_ xxxx ( A) ( see st ep b. )
...
MOVE . . . WI TH $COLL_ TYPE: = COLL_ yyyy ( B) ( see st ep b. )
this means that the chosen sensitivity threshold, (COLL_xxxx), will be used
for (A) type MOVEs; the other one, (COLL_yyyy), will be used for (B) type
MOVEs instead.
e. False collisions
If the user has chosen the thresholds (COLL_LOW, COLL_MEDIUM,
COLL_HIGH, COLL_MANUAL, COLL_USER) without analyzing the type of
collision he would like to prevent, and some wrong thresholds have been set for the
movements included in the program, some False Collisions will occur; this means
, during the robot motion, the system will detect a collision which never happened.
The reason is that a threshold too sensitive for the movement has been used (for
example: too high sensitivity in a movement with high accelerations/decelerations).
( 100% - 90%) * 60 A = 6 A
g. Use strategy
First of all the user must understand what he really does need:
– REQUIREMENT No.1 : immediate use of the Collision Detection
functionality
The modal strategy is the one that allows the user to activate the Collision
Detection functionality and to set, for example, just one threshold for all
motion types (i.e. the user tries using COLL_MEDIUM, then, if any false
collisions occured, switching to COLL_LOW). Obviously, the disadvantage of
such a strategy is that the Collision Detection sensitivity has not been tuned
by the user to have high performances. The advantage is that setting the
sensitivity is very fast.
Once the user program has run with Cold Robot (which means not working
for hours), if no false collisions are detected, the chosen threshold is good to
assure the Collision Detection activation without any false collisions.
Otherwise, it is needed to use a COLL_USERx threshold: they have the same
starting values as COLL_LOW, reduced by 3% for each axis.
– REQUIREMENT No. 2: customized use
The nodal strategy has been designed for advanced users who need to reach
a high level protection against collisions, stuck tips, pick/drop movements,
etc.
In such a situation, the user, after having logically grouped the program
movements, as suggested in step b., has to perform some more tests in order
to identify, for each movement, which is the threshold that guarantees the
highest level of protection.
Here follows some operating rules for any single motion.
• Consider a single movement and identify its motion type:
• Movement with high accelerations/decelerations (many centimeters) -->
(A) type movement (see step b.)
pr-0-0-gpr_06.fm
00/0108 16-9
h. Programming tips
If the user would like to operate with the Nodal strategy, in order to obtain the
maximum results from the Collision Detection functionality, it is needed to follow
the listed below suggestions:
– avoid technological positions (i.e. Spot Welding positions) by means of an (A)
type movent, which means with big accelerations/decelerations. Insert a
small ‘approach’ movement.
– deactivate the Collision Detection functionality during the technological
operation (i.e. closing the gun). This is to avoid that umpredictable
movements of the equipments could generate torques on robot axes that
could be seen as a collision.
i. Compliance thresholds
If the soft servo modality is activated after a collision, it allows the user to define if,
upon a collision, the robot axes should operate with compliance to absorbe the
impact energy.
The following variable is provided:
$ARM_DATA[ 1] . COLL_ SOFT_ PER[ COLL_ xxxx, axi s]
where:
– 0 means the axis is rigid
– 100 means that in case of collision, before the robot goes to DRIVE OFF (in
about 600 ms), the axis will be very compliant. This means that the posture of
the robot adapts to the impact/traction force of the blow and that therefore the
robot could also move quite a lot from the position where the collision took
place.
– As far as predefined values (COLL_LOW, COLL_MEDIUM, COLL_HIGH,
COLL_MANUAL, COLL_USER) the compliance thresholds are as follows:
• COLL_LOW: 1 for all axes, which means not compliant
• COLL_MEDIUM: 50% for all axes, which means medium compliance
• COLL_HIG: 50% for main axes, 90% for wrist axes
• COLL_MANUAL: similar to COLL_HIGH
pr-0-0-gpr_06.fm
16-10 00/0108
Since 2.02 softw are versio n, the soft servo m odality is not automatic ally enabled
by the system, upon a collision.
The reason is that if the payload identification is strongly wrong (i.e. the user
declares 100 kg of payload instead of the actual 10 kg!), when a Collision
Detection Alarm occurs, during the hundredths of ms of stop time the robot axes
would b e compliant and, with a wrong payload, the TCP could signi ficantly mo ve
in an unpredict able way, because the balancing t orque due to gravity is wron g.
The user must INTENTIONALLY enable the compliant modality ; he wil l be able to
take real advantage from it, only if the payload has been carefully identified, in
each step of his program.
16.7.1 CollisionStart
This function allows to activate the sensitivity thresholds calculation. It is to be called
before the motion statements.
Syntax:
pr-0-0-gpr_06.fm
00/0108 16-11
where “collision1” is a paramter of CollData Data Type. The IMPORT statement of such
a Data Type is automatically inserted in IDE environment, as soon as the programmer
inserts the Collision Start function in the program.
It is up to the programmer to declare “collision1” variable and to initialize its subfields
related to the Arm and to the threshold index to be used for the calculation.
The CollData Data Type, inported from CollMngr program, is as follows:
16.7.2 CollisionEnd
This function allows to end the sensitivity thresholds calculation.
Please note that, every time the “ CollisionStart - CollisionEnd” bolck is called, a
“ CollMngr.txt” file is created (or updated) which keeps track of any operation
executed by the sensitivity thresholds calculation algorithm.
There is an index to prevent creating more than 96 of such files: if one more is
created, it causes to generate a backup file.
b. be sure the System is provided with a software version in which “CollisionStart” and
“CollisionEnd” functions are available in IDE environment;
c. in IDE environment (on the Teach Pendant), open the user program in which
inserting the two functions to activate/deactivate the thresholds calculation;
BEGI N
col l i s i on1. f i _ i dx : = 2
col l i s i on1. f i _ ar m : = 1
pr-0-0-gpr_06.fm
16-12 00/0108
PROGRAM col l i si on
VAR pnt 0001j , pnt 0002j , pnt 0003j , pnt 0004j : J OI NTPOS FOR ARM[ 1]
BEGI N
CONDI TI ON[ 1] :
WHEN AT START DO
$COLL_TYPE : = COLL_HI GH
$CRNT_ DATA[ 1] . COLL_ENBL : = TRUE
ENDCONDI TI ON
CONDI TI ON[ 2] :
WHEN AT END DO
$CRNT_DATA[ 1] . COLL_ENBL : = FALSE
ENDCONDI TI ON
- - act i vat i ng t he col l i si on det ect i on f unct i onal i t y when needed onl y
pr-0-0-gpr_06.fm
00/0108 16-13
$COLL_TYPE : = COLL_LOW
$CRNT_ DATA[ 1] . COLL_ENBL : = TRUE
CYCLE
MOVE TO pnt 0001j
MOVE TO pnt 0002j
pr-0-0-gpr_06.fm
16-14 00/0108
--
- - Recal cul at es t he col l i si on sensi t i vi t y thr eshol ds ever y del t a_t mi nut es
- - and at each GEN_OVR var i at i on.
--
PROGRAM t hr eshol ds NOHOLD
VAR dummy : BOOLEAN
col l : I NTEGER
del t a_t : I NTEGER
ROUTI NE r u_t hr s
BEGI N
- - Cal c ul at es t he c ol l i s i on t hr es hol ds f or ARM 1, ' c ol l ' s ens i t i vi t y t ype and
- - acqui r es dat a f or 120 seconds.
ARM_COLL_ THRS( 1, col l , 120)
END r u_t hr s
BEGI N
- - Var i abl e t o keep t he pr ogr am act i ve
dummy : = FALSE
- - Type of sensi t i vi t y f or whi ch t he t hr eshol ds recal cul at i on i s asked
col l : = COLL_ USER3
--
- - Def i nes a del t a t i me t o r ecal cul at e t he t hr eshol ds
--
del t a_t : = 60000 * 10 - - each 10 mi ns
CONDI TI ON[ 2] :
--
- - Recal cul at es t he t hr eshol ds at t he t i meout .
--
WHEN $TI MER[ 1] > del t a_t DO
$TI MER[ 1] : = 0
ENABLE CONDI TI ON[ 2]
ru_thrs
ENDCONDI TI ON
pr-0-0-gpr_06.fm
00/0108 16-15
pr-0-0-gpr_06.fm
16-16 00/0108
- - Ti mer decl ar at i on
ki _t i mer _t empo_ci cl o = 1 - - Cycl e t i me cal cul at i on t i mer
ki _t i mer _t i me_out = 2 - - Ti me- out cal cul at i on t i mer
ROUTI NE r u_ver
BEGI N
WI N_SET_CRSR( 5, 3, ' CRT: ' ) ; WI N_SET_CRSR( 5, 1, ' TP: ' )
WI N_CLEAR( WI N_ CLR_ALL, ' CRT: ' ) ; WI N_ CLEAR( WI N_CLR_ALL, ' TP: ' )
WRI TE LUN_CRT ( ' Pr ogr am CALCOLO COLLI SI ON C4G ver si on: ' , ks_ sw_r el , NL)
WRI TE LUN_TP ( ' Pr og. CALC. COLLI SI ON C4G ver s. : ' , ks_s w_r el , NL)
WI N_SET_CRSR( 6, 3, ' CRT: ' ) ; WI N_SET_CRSR( 6, 1, ' TP: ' )
WRI TE LUN_CRT ( ' Last modi f . dat e: ' , ks_s w_dat e)
WRI TE LUN_TP ( ' Last modi f . dat e: ' , ks_sw_dat e)
END r u_ver
--
- - r u_ cl ear _ col l
--
ROUTI NE r u_cl ear _col l
VAR vi _f or _3 : I NTEGER
BEGI N
I F vb_cl ear _al l = TRUE THEN
FOR vi _f or _3 : = 1 TO ki _i dx_num_col l i si on DO
wb_det _col l _col d[ vi _f or _3] : = FALSE
ENDFOR
SYS_CALL( ' MS' , ' UD: \ \ COLLI SI ON' , ' Y' )
vi _vt _b : = 0
pr-0-0-gpr_06.fm
00/0108 16-17
ENDI F
vb_cl ear _al l : = FALSE
END r u_cl ear _col l
--
- - r u_check_col l
--
ROUTI NE r u_check_ col l
VAR l i _i : I NTEGER
BEGI N
I F ( vb_col l _col d = TRUE) AND ( wb_det _col l _col d[ vi _col l _i dx] = FALSE) THEN
I F wb_det _col l [ vi _col l _i dx] = FALSE THEN
ws_comment o[ 1] : = ' COLD COLLI SI ON NOT CALCULATED'
ELSE
wb_det _col l _col d[ vi _col l _i dx] : = TRUE
FOR l i _i : = 1 TO 6 DO
I F $ARM_SENSI TI VI TY[ ki _col l _det ect , l i _i ] < 1 THEN
wb_det _col l _col d[ vi _col l _i dx] : = FALSE
ws_comment o[ 9] : = ' COLD COLLI SI ON OUT OF RANGE'
ELSE
I F $ARM_SENSI TI VI TY[ ki _col l _det ect , l i _i ] > 30 THEN
wi _ col l _ col d[ vi _ col l _ i dx, l i _ i ] : =
ROUND( $ARM_SENSI TI VI TY[ ki _col l _det ect , l i _i ] - 20)
ELSE
wi _ col l _ col d[ vi _ col l _ i dx, l i _ i ] : =
ROUND( $ARM_SENSI TI VI TY[ ki _col l _det ect , l i _i ] )
ENDI F
wi _ col l _ hot [ vi _ col l _ i dx, l i _ i ] : = wi _ col l _ col d[ vi _ col l _ i dx, l i _ i ]
wb_det _col l [ vi _col l _i dx] : = FALSE
ENDI F
ENDFOR
ENDI F
ELSE
I F wb_det _col l [ vi _col l _i dx] THEN
FOR l i _i : = 1 TO 6 DO
I F $ARM_SENSI TI VI TY[ ki _col l _det ect , l i _i ] < 1 THEN
wb_det _col l [ vi _col l _i dx] : = FALSE
ws_comment o[ 9] : = ' COLLI SI ON OUT OF RANGE'
ELSE
I F $ARM_ SENSI TI VI TY[ ki _ c ol l _ det ec t , l i _ i ] > wi _ c ol l _ hot [ vi _ c ol l _ i dx,
l i _i ] + 3 THEN
wi _ col l _ hot [ vi _ col l _ i dx, l i _ i ] += 2
ELSE
I F $ARM_ SENSI TI VI TY[ ki _ c ol l _ det ec t , l i _ i ] < wi _ c ol l _ hot [ vi _ col l _ i dx,
l i _ i ] THEN
wi _ col l _ hot [ vi _ col l _ i dx, l i _ i ] : =
ROUND( $ARM_SENSI TI VI TY[ ki _col l _det ect , l i _i ] )
ENDI F
ENDI F
I F wi _ c ol l _ hot [ vi _ c ol l _ i dx, l i _ i ] > 30 THEN
wi _ col l _ hot [ vi _ col l _ i dx, l i _ i ] - = wi _ col l _ hot [ vi _ col l _ i dx, l i _ i ] *
vi _vt _a DI V 100
ENDI F
ENDI F
ENDFOR
ENDI F
ENDI F
pr-0-0-gpr_06.fm
16-18 00/0108
--
- - r u_check_var
--
ROUTI NE r u_c heck_ var
VAR l i _ f or _ 1, l i _ f or _ 2, l i _ i : I NTEGER
BEGI N
vb_st ar t : = FALSE
vb_r i d : = FALSE
I F NOT FL_STATE( ' uD: col l i si on. var ' ) THEN
vi _ ci cl o : = 0
vi _numci cl i : = ki _max_ci cl i + 1
vb_cl ear _al l : = TRUE
ENDI F
I F VAR_UNI NI T( vi _per _mi n) THEN
vi _per _mi n : = 10 - - r educi ng t he comput ed val ue
ENDI F
I F VAR_ UNI NI T( vb_ save) THEN
vb_ save : = TRUE
ENDI F
FOR l i _f or _1 : = 1 TO ki _i dx_num_col l i si on DO
FOR l i _ f or _2 : = 1 TO 6 DO
I F VAR_UNI NI T( wi _col l _col d[ l i _f or _1, l i _f or _2] ) OR vb_cl ear _al l THEN
wi _ col l _ col d[ l i _ f or _ 1, l i _ f or _ 2] : = 10
ENDI F
I F VAR_UNI NI T( wi _col l _hot [ l i _f or _1, l i _f or _2] ) OR vb_cl ear _al l THEN
wi _ col l _ hot [ l i _ f or _ 1, l i _ f or _ 2] : = 10
ENDI F
I F VAR_UNI NI T( wi _pr ev_col l [ l i _f or _2] ) THEN
wi _ pr ev_ c ol l [ l i _ f or _ 2] : = 10
ENDI F
ENDFOR
I F VAR_UNI NI T( wb_det _col l [ l i _f or _1] ) THEN
wb_det _col l [ l i _f or _1] : = FALSE
ENDI F
I F VAR_UNI NI T( vi _dat a_f i ne) THEN
vi _dat a_f i ne : = CLOCK
ENDI F
I F VAR_UNI NI T( wb_det _col l _col d[ l i _f or _1] ) THEN
wb_det _col l _col d[ l i _f or _1] : = FALSE
ENDI F
ENDFOR
I F VAR_UNI NI T( vb_cl ear _al l ) THEN
vb_cl ear _al l : = TRUE
ENDI F
FOR l i _ i : = 1 TO 10 DO
ws_comment o[ l i _i ] : = ' 0'
ENDFOR
vi _vt _a : = 0
pr-0-0-gpr_06.fm
00/0108 16-19
--
- - r u_ moni t or _ c ol l i s i on
--
ROUTI NE r u_moni t or _col l i si on
VAR l i _ i , l i _ l un : I NTEGER
BEGI N
- - Col l i s i on moni t or i ng f i l e cr eat i on
I F FL_STATE( ks_ moni t or _f i l e_name) THEN
OPEN FI LE l i _l un ( ks_moni t or _f i l e_name, ' wa' )
ELSE
OPEN FI LE l i _l un ( ks_moni t or _f i l e_name, ' wa' )
WRI TE l i _l un ( NL, NL)
WRI TE l i _l un ( ' Cycl e t i me moni t or i ng Pr ogr am i s ' , NL)
WRI TE l i _ l un ( ' Col l i s i on s ens i t i vi t y ' , NL)
WRI TE l i _l un ( ' cr eat ed on , ' , DATE, ' , VERS. 2- 8 , SEVEL' , NL)
WRI TE l i _l un ( NL, NL)
ENDI F
WRI TE l i _l un ( NL, NL)
WRI TE l i _l un ( ' COLL_USER' , vi _col l _i dx, NL)
FOR l i _i : = 1 TO 10 DO
I F ws_comment o[ l i _i ] = ' 0' THEN
ELSE
WRI TE l i _l un ( ws_comment o[ l i _i ] , NL)
ENDI F
ENDFOR
WRI TE l i _l un ( ' Col l i si on enabl ed: ' , $CRNT_DATA[ ki _num_ar m] . COLL_ENBL,
$COLL_ TYPE, NL)
FOR l i _i : = 1 TO 6 DO
WRI TE l i _l un ( $ARM_DATA[ ki _num_ar m] . ARM_SENSI TI VI TY[ $COLL_TYPE, l i _i ] )
pr-0-0-gpr_06.fm
16-20 00/0108
ENDFOR
WRI TE l i _ l un ( NL, ' STBY : ' , vi _ vt _ a > 0, ' ')
WRI TE l i _l un ( ' UTI LI ZZO RI D_ASSE: ' , vb_r i d, NL)
I F wb_det _col l [ vi _col l _i dx] THEN
WRI TE l i _l un ( ' Moni t or on : ' , DATE, NL)
WRI TE l i _l un ( ' Cycl e n=' , vi _ci cl o, NL)
WRI TE l i _l un ( ' Measur ed cycl e t i me: ' , vi _t empoci cl oi nsec, ' sec. ' , NL)
WRI TE l i _l un ( NL)
FOR l i _ i : = 1 TO 6 DO
WRI TE l i _l un ( ' COLL_DETECT ax ' , l i _i , ' = ' ,
$ARM_SENSI TI VI TY[ ki _col l _det ect, l i _i ] , NL)
ENDFOR
WRI TE l i _l un ( NL)
WRI TE l i _ l un ( ' Col l i s i ons r e duct i on: ' , vi _ per _ mi n, ' % TYPE: ' ,
$COLL_ TYPE, NL)
FOR l i _ i : = 1 TO 6 DO
WRI TE l i _l un ( ' COLL_ACTUAL ax ' , l i _i , ' = ' , $ARM_SENSI TI VI TY[ $COLL_TYPE,
l i _ i ] , NL)
ENDFOR
WRI TE l i _l un ( NL)
ELSE
I F vb_col l _col d = TRUE THEN
WRI TE l i _l un ( ' Moni t or on : ' , DATE, NL)
WRI TE l i _l un ( ' Cycl e n=' , vi _ci cl o, NL)
WRI TE l i _l un ( ' Measur ed cycl e t i me: ' , vi _t empoci cl oi nsec, ' sec. ' , NL)
WRI TE l i _l un ( NL)
FOR l i _i : = 1 TO 6 DO
WRI TE l i _ l un ( ' col l _ f r edde ax' , l i _ i , ' = ' , wi _ col l _ col d[ v i _ col l _ i dx,
l i _ i ] , NL)
ENDFOR
WRI TE l i _l un ( NL)
ENDI F
ENDI F
I F wb_det _col l [ vi _col l _i dx] = FALSE THEN
FOR l i _ i : = 1 TO 6 DO
WRI TE l i _ l un ( wi _ pr ev_ col l [ l i _ i ] )
ENDFOR
WRI TE l i _l un ( NL)
WRI TE l i _l un ( ' COLLI SI ON ' , ' COLL_USER' , vi _col l _i dx, ' NOT CALCULATED' )
WRI TE l i _l un ( NL)
ENDI F
CLOSE FI LE l i _l un
END r u_moni t or _col l i si on
--
- - r u_ r i d_ as se
--
ROUTI NE r u_r i d_asse( num_asse, per c_r i d : I NTEGER)
BEGI N
vb_ r i d : = TRUE
I F $CRNT_ DATA[ ki _ num_ ar m] . COLL_ENBL = TRUE THEN
I F ( $COLL_ TYPE = 6) OR ( $COLL_ TYPE = ki _c ol l _df l t ) THEN
I F $ARM_SENSI TI VI TY[ $COLL_ TYPE, num_ass e] > 20 THEN
$ARM_SENSI TI VI TY[ $COLL_ TYPE, num_ asse] : = $ARM_SENSI TI VI TY[ $COLL_ TYPE,
num_ass e] - ROUND( $ARM_ SENSI TI VI TY[ $COLL_ TYPE, num_ass e] * per c_ r i d DI V 100)
ENDI F
pr-0-0-gpr_06.fm
00/0108 16-21
ENDI F
ENDI F
END r u_r i d_asse
--
- - r u_ agg_ c ol l _ c ol d
--
ROUTI NE r u_agg_col l _col d
VAR l i _i : I NTEGER
BEGI N
I F wb_det _col l [ vi _col l _i dx] = TRUE THEN
FOR l i _i : = 1 TO 6 DO
I F $ARM_ SENSI TI VI TY[ ki _ col l _ det ec t , l i _ i ] < wi _ col l _ col d[ vi _ col l _ i dx, l i _ i ]
THEN
wi _col l _col d[ vi _col l _i dx, l i _i ] : = ROUND( $ARM_SENSI TI VI TY[ ki _col l _det ect,
li_i])
ws_comment o[ 6] : = ' Updat ed col d col l i si ons'
ENDI F
I F $ARM_ SENSI TI VI TY[ ki _ col l _ det ec t , l i _ i ] > wi _ col l _ col d[ vi _ col l _ i dx, l i _ i ]
+ 16 THEN
wi _ col l _ col d[ vi _ col l _ i dx, l i _ i ] += 2
ws_ comment o[ 6] : = ' Updat ed col d col l i si ons'
ENDI F
ENDFOR
ENDI F
END r u_agg_col l _col d
--
- - r u_ s wap_ c ol l i s i on
--
ROUTI NE ru_swap_col l i si on
VAR l i _i b : I NTEGER
l i _ r i d : I NTEGER
BEGI N
I F wb_det _col l _col d[ vi _col l _i dx] = FALSE THEN
RETURN
ENDI F
I F ( vb_t i _out = TRUE) OR $SDOUT[ ki _sdout _al l ar me_col l i si on] THEN
FOR l i _i b : = 1 TO 6 DO
l i _ r i d : = wi _ col l _ col d[ vi _ col l _ i dx, l i _ i b] * 20 DI V 100
wi _pr ev_col l [ l i _i b] : = $ARM_SENSI TI VI TY[ ki _col l _basse, l i _i b]
$ARM_SENSI TI VI TY[ ki _col l _basse, l i _i b] : = ROUND( wi _col l _col d[ vi _col l _i dx,
l i _ i b] - l i _ r i d)
wi _ col l _ hot [ vi _ col l _ i dx, l i _ i b] : = wi _ col l _ col d[ vi _ col l _ i dx, l i _ i b]
ENDFOR
$COLL_TYPE : = ki _col l _basse
vb_col l _col d : = TRUE
ws_ comment o[ 7] : = ' Col l i si ons swapped t o col d'
ENDI F
vb_t i _out : = FALSE
END r u_swap_col l i si on
--
pr-0-0-gpr_06.fm
16-22 00/0108
--
- - r u_ l eggi
--
ROUTI NE r u_l eggi
VAR t i pocol l : I NTEGER
BEGI N
WRI TE LUN_TP ( NL, ' Col l i si on enabl ed: ' , $CRNT_DATA[ ki _ num_ ar m] . COLL_ ENBL, NL)
WRI TE LUN_TP ( ' UTI LI ZZO RI D_ASSE: ' , vb_r i d, NL)
t i pocol l : = $COLL_TYPE
--
- - r u_ col l i si on_ l ow
--
ROUTI NE r u_col l i si on_l ow
BEGI N
- - Col l i s i on al ways ac t i ve, f or s af et y
$COLL_TYPE : = ki _col l _df l t
$ARM_SENSI TI VI TY[ ki _col l _df l t , 1] : = 40
$ARM_SENSI TI VI TY[ ki _col l _df l t , 2] : = 30
$ARM_SENSI TI VI TY[ ki _col l _df l t , 3] : = 30
$ARM_SENSI TI VI TY[ ki _col l _df l t , 4] : = 30
$ARM_SENSI TI VI TY[ ki _col l _df l t , 5] : = 30
$ARM_SENSI TI VI TY[ ki _col l _df l t , 6] : = 25
$CRNT_DATA[ ki _ num_ar m] . COLL_ENBL : = TRUE
END r u_col l i si on_l ow
--
- - r u_ col l i s i on_ st ar t : s t ar t f unct i on
--
pr-0-0-gpr_06.fm
00/0108 16-23
vi _ col l _ i dx : = ai _ col l
r u_check_var
I F PROG_STATE( ' col l i si on' ) > 0 THEN
SYS_ CALL( ' pd' , ' c ol l i s i on' )
ENDI F
I F $SDOUT[ ki _ sdout _ sel _manu] = OFF THEN
SYS_ CALL( ' pa' , ' c ol l i s i on' )
ENDI F
I F ( $GEN_OVR = 100) AND ( vb_ st andby = FALSE) AND ( wb_det _ col l [ vi _c ol l _i dx] =
TRUE) AND ( wb_det _col l _ col d[ vi _ col l _i dx] = TRUE) AND ( $SDOUT[ ki _ sdout _sel _ manu] =
OFF) THEN
- - War m col l i si on enabl ed on COLL_ACTUAL and new col l i si ons cal cul at ed
ws_comment o[ 2] : = ' ROBOT COLLI SI ON HOT ACTI VATED'
FOR l i _i : = 1 TO 6 DO
l i _ r i d : = wi _ col l _ hot [ vi _ col l _ i dx, l i _ i ] * vi _ per _ mi n DI V 100
$ARM_SENSI TI VI TY[ ki _col l _actual , l i _i ] : = ROUND( wi _col l _hot [ vi _col l _i dx,
l i _ i ] - l i _r i d)
ENDFOR
$COLL_TYPE : = ki _col l _act ual
ARM_COLL_THRS( ki _num_ar m, ki _col l _det ect , 1, vb_s yst em_per cent )
$CRNT_ DATA[ ki _num_ar m] . COLL_ENBL : = TRUE
vb_col l _col d : = FALSE
wb_det _col l [ vi _col l _i dx] : = TRUE
ELSE
- - Col d col l i si on acti vat ed i f an er r or occur r ed i n t he pr evi ous cycl e, and
- - war m col l i s i on c al c ul at ed
ws_comment o[ 3] : = ' GEN_OVR < 100 or TI ME_ OUT ROBOT COLL I SI ON COLD ACTI VATED'
I F wb_det _col l _col d[ vi _col l _i dx] = TRUE THEN
FOR l i _i : = 1 TO 6 DO
l i _ r i d : = wi _ col l _ col d[ vi _ col l _ i dx, l i _ i ] * 20 DI V 100
$ARM_SENSI TI VI TY[ ki _col l _basse, l i _i ] : = ROUND( wi _col l _col d[ vi _col l _i dx,
l i _ i ] - l i _r i d)
ENDFOR
pr-0-0-gpr_06.fm
16-24 00/0108
--
vb_st ar t : = FALSE
vi _ci cl o += 1
vi _numci cl i += 1
- - Chec ki ng c ol l i s i on c al c ul at i on
r u_check_col l
pr-0-0-gpr_06.fm
00/0108 16-25
r u_agg_col l _col d
- - Recor di ng cal cul at ed col l i si ons val ues i n t he moni t or
r u_ moni t or _ col l i s i on
r u_ col l i s i on_ l ow
END r u_col l i si on_end
--
- - MAI N
--
BEGI N
vb_comm : = FALSE
vb_st art : = FALSE
- - Robot Al ar m condi t i on
CONDI TI ON[ ki _cond_check_al l ar m] :
WHEN $SDOUT[ ki _ sdout _dr i ve_on] - OR ( $TI MER[ ki _ t i mer _t i me_out ] >
ki _t empo_at t i va_col l _col d) DO
wb_det _col l [ vi _col l _i dx] : = FALSE
ru_swap_col l i si on
WHEN vb_ st ar t = FALSE DO
ENDCONDI TI ON
- - Not movi ng r obot condi t i on
CONDI TI ON[ ki _cond_t i me_out ] :
WHEN $CRNT_ DATA[ ki _num_ar m] . MOVE_STATE <= ki _no_ move DO
$TI MER[ ki _t i mer _t i me_out ] : = 0
vb_t i _out : = TRUE
ENABLE CONDI TI ON[ ki _ cond_r ob_move]
WHEN vb_ st ar t = FALSE DO
ENDCONDI TI ON
- - Movi ng robot condi t i on
CONDI TI ON[ ki _ cond_r ob_ move] :
WHEN $CRNT_ DATA[ ki _num_ar m] . MOVE_STATE > ki _ no_ move DO
vb_t i _out : = FALSE
ENABLE CONDI TI ON[ ki _ cond_t i me_out ]
WHEN $TI MER[ ki _ t i mer _t i me_out ] > ki _t empo_ t i me_out DO
vi _vt _a : = 15
WHEN vb_ st ar t = FALSE DO
ENDCONDI TI ON
- - Robot i n St andby st at e Condi t i on decl ar at i on
CONDI TI ON[ ki _cond_r ob_s t op] :
WHEN $SDOUT[ ki _ sdout _move_es ec] - AND ( $SDOUT[ ki _sdout _st andby] = OFF) OR
$SDOUT[ ki _ sdout _st andby] + AND $SDOUT[ ki _sdout _ move_es ec] OR
( $TI MER[ ki _t i mer_ t i me_out ] > ki _t empo_at t i va_col l _col d) AND ( vb_t i _out = TRUE) DO
wb_det _col l [ vi _col l _i dx] : = FALSE
WHEN $GEN_OVR < 100 DO
vb_ comm : = TRUE
wb_det _col l [ vi _col l _i dx] : = FALSE
WHEN vb_ st ar t = FALSE DO
ENDCONDI TI ON
pr-0-0-gpr_06.fm
16-26 00/0108
pr-0-0-gpr_06.fm
00/0108 16-27
CONDI TI ON[ 1] :
WHEN EVENT 94 DO
UNLOCK - - r eset f or
RESUME - - next r est ar t
.
.
.
ENDCONDI TI ON
$COLL_TYPE: =COLL_USER1
$COLL_EFFECT: =2
$CRNT_ DATA[ 1] . COLL_ENBL: =TRUE
CYCLE
MOVE TO . . .
.
.
.
pr-0-0-gpr_06.fm
16-28 00/0108
pr-0-0-gpr_06.fm
00/0108 16-29
pr-0-0-gpr_06.fm
16-30 00/0108
17.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
Controller 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
dimensio ns 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 responsibil ity of th e position er 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:
– no rm al u se (A ut om ati c/Pr og ram mi ng ),
– emer gen cy st op ,
– saf ety br aki ng ,
– Hol d,
– Dri ve o ff ,
– im pac t o n an y m ech ani cal pad s
the unit behaves in a manner that compl ies with cur rent safety standards.
hs-0-0-mot_04.fm
00/0708 17-1
17.2 Summary
For special conventions and specifications of each positioner, see the relevant
paragraph for that particular model or family.
The directio ns of the positi oner axis rotations canno t be chosen at will: th ey 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
hs-0-0-mot_04.fm
17-2 00/0708
in Fig. 17.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.
1. axis 1
2. axis 2
Xb, Yb, Zb, Ob= Xbase, Ybase, Zbase, Obase
Xf, Yf , Zf, Of = Xflange, Yflange, Zflange, Oflange
hs-0-0-mot_04.fm
00/0708 17-3
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]
hs-0-0-mot_04.fm
17-4 00/0708
1 axis 1
Xf , Yf = Xflange, Yflange
Note the convention that concerns points P1, P2, P3 described in the Cap. TO_SET
Program 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).
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
TP4i/WiTP Teach Pendant
17.5.2 Calibration
The lathe positioner does not require special rules for the calibration position.
To confi gure these posi tioners, see the USE of C4G Contro l Unit Manual, Setup
Page, paragraph AUX_AXES.
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. 17.3.
hs-0-0-mot_04.fm
00/0708 17-5
1. Part to be machined
2. Lathe bearing plate
Next, the configuration software, on the TP4i/WiTP 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
colum n integrated axis; in thi s case the integrated axis will b e axis 7, whereas the
lathe will become axis 8
hs-0-0-mot_04.fm
17-6 00/0708
– the origin of the positioner base reference system (Obase) lays on the bearing
surface (typically the floor);
– the Zbase axis is perpendicular to the bearing surface and in upward direction;
– the X base axis lays on the bearing surface with direction parallel to the positioner
first rotation axis;
– the Ybase axis is therefore on the resting surface perpendicular to the positioner first
rotation axis.
The positioner flange reference system is defined according to these conventions (see
Fig. 17.4):
– the origin of the flange reference system (Oflange) lays on the flange surface that
coincides with the centre of rotation of the positioner second axis;
– the Zflange axis is perpendicular to the flange surface with outward direction.
17.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.
Also the convention should be borne in mind that concerns points P1, P2, P3 described
in the Cap. TO_SET Program to calculate $BASE (or $AUX_BASE) of the positioners
(see Fig. 17.4).
1. axis 1
2. axis 2
Xf , Yf = Xflange , Yflange
Xb, Yb = Xbase, Ybase
hs-0-0-mot_04.fm
00/0708 17-7
To confi gure these posi tioners, see the USE of C4G Contr ol Unit Manual, Setup
Page, paragraph AUX_AXES.
The parameters required for the correct kinematic description of the positioner (length
of axes) are indicated in Fig. 17.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. 17.5.
1. axis 1
2. axis 2
3. part to be machined
$AX_LEN[ax_logic1] = L1
$AX_OFST[ax_logic2] = L2
For example, for 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 b e equal to the radius of the bearing plate. This is to always consi der
the worst case of part maximum overall dimensions or of the mechanical
structure of the positioner in motion.
Next, the configuration software, on the TP4i/WiTP 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.
hs-0-0-mot_04.fm
17-8 00/0708
17.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;
hs-0-0-mot_04.fm
00/0708 17-9
– 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.
Also the convention is to be borne in mind that concerns points P1, P2, P3 described in
Cap. TO_SET Program to calculate the $BASE (or $AUX_BASE) of the positioners (see
Fig. 17.6).
1. axis 1
2. axis 2
Xb, Yb, Zb, Ob= Xbase, Ybase, Zbase, Obase
Xf , Yf , Zf , Of = Xflange, Yflange, Zflange, Oflange
To confi gure these posi tioners, see the USE of C4G Contro l Unit Manual, Setup
Page, paragraph AUX_AXES.
The parameters required for the correct kinematic description of the positioner (length
of axes) are indicated in Fig. 17.7. They show a generic positioner with the dimensions
that distinguish it and the PDL2 variables that contain the parameters. As can be seen,
hs-0-0-mot_04.fm
17-10 00/0708
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. 17.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. 17.7.
1. axis 1
2. axis 2
3. part to be machined
$AX_LEN[ax_logic1] = L1
$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; 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 TP4i/WiTP 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.
hs-0-0-mot_04.fm
00/0708 17-11
hs-0-0-mot_04.fm
17-12 00/0708
1. axis 1
2. axis 2
Xb, Yb, Zb, Ob= Xbase, Ybase, Zbase, Obase
Xf , Yf, Zf , Of = Xflange, Yflange, Zflange, Oflange
17.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.
Also the convention is to be borne in mind that concerns points P1, P2, P3 described in
the Cap. TO_SET Program to calculate the $BASE (or $AUX_BASE) of the positioners
(see Fig. 17.8).
To confi gure these posi tioners, see the USE of C4G Contro l Unit Manual, Setup
Page, paragraph AUX_AXES.
hs-0-0-mot_04.fm
00/0708 17-13
The parameters required for the correct kinematic description of the positioner (length
of axes and angles) are shown in the Fig. 17.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
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. 17.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 b e equal to th e radius of th e 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 structur e of the positioner in
motion..
Next, the configuration software, on the TP4i/WiTP 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.
hs-0-0-mot_04.fm
17-14 00/0708
Note that the absolute value of the alpha angle is to be inserted even if the
measurement unit of the axis offs et is in millimetres.
hs-0-0-mot_04.fm
00/0708 17-15
On the Teach Pendant the li near axis can be moved i n 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).
17.8.1.2 Calibration
The slide calibration position is fixed close to the negative limit of the stroke and marked
with a zero notch.
hs-0-0-mot_04.fm
17-16 00/0708
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
Cap. TO_SET Program.
To confi gure these posi tioners, see the USE of C4G Contro l Unit Manual, Setup
Page, paragraph AUX_AXES.
The parameters needed for the correct kinematic description of the integrated slide are
indicated in Fig. 17.11.
Next, the configuration software, on the TP4i/WiTP 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.
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;
hs-0-0-mot_04.fm
00/0708 17-17
On the Teach Pendant the rotating axis can be moved in Cartesian mode, using
the 7+ and 7- keys and it is not possib le to enable or disenable the column
integration in real time.
hs-0-0-mot_04.fm
17-18 00/0708
– the Ybase axis consequently results with the direction indicated in Fig. 17.13.
On the cantilever (lever) there is the mounting flange of the robot base that can be
arranged in two positions only: either hanging on the lever (seeFig. 17.13) or resting on
the lever (robot standing). Therefore the robot base has to be always perpendicular to
the column rotating axis.
Vice-versa 4 robot base orientation positions are allowed (at 90° intervals) in relation to
the column base, and also the positive rotation direction can be selected at will.
1. column rotation
2. column base reference
3. robot base
Xb, Yb, Zb = Xbase, Ybase, Zbase
17.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
Cap. TO_SET Program.
hs-0-0-mot_04.fm
00/0708 17-19
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. 17.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
integrated slide, to have compatibility); in particular the convention is as follows
(see Fig. 17.15):
• 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 ;
hs-0-0-mot_04.fm
17-20 00/0708
From the Teach Pendant, the linear axes can be moved in cartesian mode, using
AUX A - AUX B k eys (by sel ect in g t he d esi red axes tw o-b y-t wo ).
It is also allowed to move the portal by means of the JPAD keys, where each
coupl e of keys allows to move one of the port al axes.
For furt her infor mation related to A UX A - AUX B and JPAD keys, please refer to
Use of the C4G Control Unit manual - par. 6.2.1.2 Black Keys - Chap. 6 Use of the
Teach Pendant
hs-0-0-mot_04.fm
00/0708 17-21
– Zbase axis is perpendicular to the bearing surface, exiting from it and oriented
according to the Z axis positive stroke;
– Xbase lays on the bearing surface and is oriented according to the X axis positive
stroke;
– Ybase consequently results.
The mounting flange of the robot base is on the portal.
It is possible to configure the mounting angle of the robot base.
It is also possible to configure the axis type (X, Y e Z) for each one of the three portal
axes (please note that the first one must be axis 7 and the next axes are in sequence).
17.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.
hs-0-0-mot_04.fm
17-22 00/0708
To confi gure the 3 linear axes Portal, please also refer to th e Use of the C4G Control
Unit manual, par. AUX_AXES .
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.
Besides the geometrical data indicated above, for the complete kinematic description of
hs-0-0-mot_04.fm
00/0708 17-23
the 3 linear axes Portal, also the assembly angle of the robot base on the portal flange
is to be defined.
From the Teach Pendant, the linear axes can be moved in c artesian mode, using
AUX A - AUX B k eys (by sel ect in g t he d esi red axes tw o-b y-t wo ).
For furt her info rmation r elated to AUX A - AUX B and JPAD keys, please refer to
Use of the C4G Control Unit manual - par. 6.2.1.2 Black Keys - Chap. 6 Use of the
Teach Pendant
hs-0-0-mot_04.fm
17-24 00/0708
17.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 confi gure the 2 linear axes Portal, please also refer to th e Use of the C4G Control
Unit manual, par. AUX_AXES .
The parameters needed for the 2 linear axes Portal kinematic description are indicated
in Fig. 17.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.
hs-0-0-mot_04.fm
00/0708 17-25
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.
From the Teach Pendant, the rotation al axis and the transl ational one of the rail,
can be moved in cartesian mode, using AUX A - AUX B keys.
For furt her info rmation r elated to AUX A - AUX B and JPAD keys, please refer to
Use of the C4G Control Unit manual - par. 6.2.1.2 Black Keys - Chap. 6 Use of the
Teach Pendant
hs-0-0-mot_04.fm
17-26 00/0708
– Xbase lays on the bearing surface and is oriented according to the rail axis positive
stroke;
– Ybase consequently results, having the direction shown in Fig. 17.20.
On the cantilever (lever) there is the mounting flange of the robot base that can be
arranged in two positions only: either hanging on the lever (see Fig. 17.20) or bearing
on the lever (robot standing). Therefore the robot base has to be always perpendicular
to the column rotating axis.
Vice-versa 4 robot base orientation positions are allowed (at 90° intervals) in relation to
the column base. Furthermore, it is also allowed to select the mounting angle of the
column base on the rail flange ( angle shown in Fig. 17.21), as well as the offset
between the rail flange and the column base (H1 in Fig. 17.21).
17.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.
hs-0-0-mot_04.fm
00/0708 17-27
To config ure the Trans-rotational Column, please also refer to the Use of the C4G
Control Unit manual, par. AUX_AXES .
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 .
hs-0-0-mot_04.fm
17-28 00/0708
TO_SET Program
18.1 Introduction
TO_SET is an environment to calculate the positioner $TOOL, $UFRAME, $AUX_BASE
values and to configure the Conveyor, in a guided and automatic manner. It is also used
to activate and execute the Payload identification (optional function) procedure.
The most important characteristics are the following:
– It is completely organised in menus, and guides the operator to perform the
required steps, it displays error messages or simple "warnings"
– All the messages are in 6 languages (English, Italian, French, German, Spanish,
Portuguese): when called up, TO_SET assumes the language that is currently set
in the C4G Control Unit.
– It uses only the Teach Pendant with dedicated screen.
– It occupies approx. 180 Kbytes in UD: and 200 Kbytes in Execution memory
This chapter contains detailed information on the following subjects:
– TO_SET Activation
– First screen page of TO_SET
– TOOL automatic calculation
– REMOTE TOOL Automatic Calculation
– UFRAME automatic calculation
– REMOTE UFRAME automatic calculation
– Payload identification (optional function)
– BASE automatic calculation for POSITIONERS (optional)
– CONVEYOR TRACKING installation and configuration (optional service)
HS-0-C4E-USO_44.fm
01/1107 18-1
TO_SET Program
18.2 Activation
TO_SET is supplied on CD in01/1107 the system configuration TOOL directory and
requires these files:
– TO_INST.COD (for the TO_SET installation)
– TO_SET.ZIP (contains all the files needed by TO_SET)
As fr om ver si on 2.20 of th e Sys tem Sof tw are TO_SET is alw ays pr esen t on th e
Control Unit.
To use it, just select the SETUP Page on the TP4i/WiTP teach pendant (see USE of
C4G Control Unit manual, Chap. USE OF THE TEACH PENDANT ) and choose
ToolFrame environment (see Fig. 18.1 - Access to the TO_SET program).
If it should be necessary to reinstall TO_SET, there are two ways it can be done:
– From TP4i/WiTP Teach Pendant
– From WinC4G on Personal Computer
HS-0-C4E-USO_44.fm
18-2 01/1107
TO_SET Program
HS-0-C4E-USO_44.fm
01/1107 18-3
TO_SET Program
HS-0-C4E-USO_44.fm
18-4 01/1107
TO_SET Program
HS-0-C4E-USO_44.fm
01/1107 18-5
TO_SET Program
For any further information regarding the calibrated tool, see the Robot Technical
Specifications Manual.
HS-0-C4E-USO_44.fm
18-6 01/1107
TO_SET Program
to the "reference point" with TOOL MASTER (Complete procedure ) and will be
assumed by the new TCP every time the robot is brought to the "reference point" with
"TOOL TO BE MEASURED" to calculate the orientation.
18.4.3 Procedure
To access the procedure, press key F1 in Fig. 18.2 - Screen page 0.0.
If the TOOL command is sent (pressing key F1) a second screen is shown that asks
the user to select either local tool or remote tool :
HS-0-C4E-USO_44.fm
01/1107 18-7
TO_SET Program
Accepted commands:
At this point the table that contains all the tools that already exist is scanned to check
which of these conditions applies:
– The tool number entered corresponds to an empty position in the table, therefore
the tool calculation proceeds with one of the two methods (Fig. 18.6 - Screen page
1.2)
– The tool entered already exists in the table , therefore the measurement and the
method previously used for the calculation are displayed (Fig. 18.7 - Screen page
1.3).
As can be seen, in the same file there may be tools calculated with the standard method
(without acquired positions) and tools calculated with the new procedure that also
associates the acquired positions to the tool measurement , it will therefore be the task
of the user to ascertain that the file tt_tool1.var in UD: is the correct one, containing the
HS-0-C4E-USO_44.fm
18-8 01/1107
TO_SET Program
tool to be checked.
Accepted commands:
If the Tool already exists in the table, Fig. 18.7 - Screen page 1.3 is shown.
Accepted commands:
HS-0-C4E-USO_44.fm
01/1107 18-9
TO_SET Program
The following description gives details of each possible procedure for the Local Tool :
– Tool calculation with standard method- Complete procedure
– Tool Calculation with "4 points method" - Complete procedure
– Tool verification with standard method - Partial procedure
– Payload identification (optional function)
– If it is the very fi rs t tim e that an au to mat ic cal cu lat io n of the too l is execu ted ;
– If t he r efer enc e po in t o r t he ro bo t h as b een m ov ed;
– If t he ro bo t h as b een r ecal ib rat ed.
The complete procedure can be used to store in UD: the scan result position and the
declared tool master values in TO_SET.VAR .
This procedure only has to be executed once. All the subsequent calculations of a tool
mounted on the robot flange will only require the Partial procedure (F2 from screen
page 1.2 of Fig. 18.6 - Screen page 1.2).
Calls the attention of the operator to the Tool Master measurements. It displays them
HS-0-C4E-USO_44.fm
18-10 01/1107
TO_SET Program
<F1>: continues the procedure (see Fig. 18.9 - Screen page 1.5)
<F2>: changes tool master values (see Fig. 18.17 - Screen page 1.13)
<F6>: returns to main menu (see Fig. 18.2 - Screen page 0.0)
Asks to take the TCP in the Tool Master on the reference, with the relevant
measurements correctly defined (Fig. 18.8 - Screen page 1.4).The robot may be in any
position: the operator can position the TCP on the reference as preferred, according to
requirements.
At this moment it is advisable to move in TOOL of axes 4, 5, 6 to check the dimensions
of the tool master and the robot calibration.
Accepted commands:
With the partial procedure the measurements of the tool mounted on the robot flange
can be calculated . It is only possible to calculate the relocations (X,Y,Z); or continue in
the calculation of the rotations (<A>: Euler 1; <E>: Euler 2) and lastly it is possible to
calculate the rotation around the new Z- tool (<R>: Euler 3).
HS-0-C4E-USO_44.fm
01/1107 18-11
TO_SET Program
Asks to bring the TCP to the tool to be measured on the reference point.
The robot may be in any position: the operator can position the TCP on the reference
as preferred, according to requirements.
Accepted commands:
Displays the $TOOL calculated values (XYZ relocations and AER orientations).
It is then possible to move axes 4,5,6 in TOOL to check that the new TCP does not
move on the reference (movements of approx. 3 millimetres are accepted).
If this is not so, check:
– robot calibration;
– tool master dimensions declared in the Complete procedure ;
– position of the reference point (not changed as to the Complete procedure ). After
checking, repeat the procedure (Complete or Partial).
Accepted commands:
HS-0-C4E-USO_44.fm
18-12 01/1107
TO_SET Program
The operator has to position the Z_TOOL (positive sense ) of the tool parallel to a drive
shaft of the robot BASE . To choose the required direction just press one of the function
keys (F2..F4) and then F1 to accept the measurement.
If the tool axes are parallel to the flange reference set of three ($TOOL(0)), it is best to
bring the robot to calibration position; the advantage of this operation is that it brings all
three tool axes parallel to those of the BASE with no further movements of the robot.
To complete the orientation calculation the operator only has to use the appropriate
function keys to select to which BASE drive shafts the Z_TOOL and then the X_TOOL
are parallel.
Check that the new orientation is that actually wished for, and if necessary repeat the
procedure ( <F3> from screen page 1.9 inFig. 18.13 - Screen page 1.9).
Accepted commands:
HS-0-C4E-USO_44.fm
01/1107 18-13
TO_SET Program
Displays the $TOOL calculated values (XYZ relocations and AER orientations).
Accepted commands:
The operator has to direct the X_TOOL (positive sense) of the tool parallel to one of the
drive shafts of the robot BASE (the axis selected in the previous step is no longer
available). To choose the desired direction just press one of the function keys (F2..F5)
and then F1.
Check that the new orientation is that actually required, and if necessary repeat the
procedure ( <F3> from screen page 1.11 in Fig. 18.15 - Screen page 1.11).
Accepted commands:
HS-0-C4E-USO_44.fm
18-14 01/1107
TO_SET Program
Displays the $TOOL calculated values (XYZ relocations and AER orientations).
Accepted commands:
After every Save operation, if there are already Euler angles in the table, the following
screen page is displayed:
This displays the $TOOL calculated values (XYZ relocations and AER orientations) and
warns that there are already Euler angles in the table . It is asked if they are to be kept
(F1) or to be overwritten with the new values (F2). This makes it possible to keep the
Euler angles if it is only required to recalculate the tool relocations.
HS-0-C4E-USO_44.fm
01/1107 18-15
TO_SET Program
Fig. 18.17 - Screen page 1.13 displays the TOOL MASTER values (XYZ relocations)
and allows their modification.
Accepted commands:
The screen page in Fig. 18.18 - Screen page 1.14 displays whether a Partial procedure
has been requested without ever having executed a Complete procedure. This means
that the master reference position is missing (check TO_SET.VAR).
If the answer is OK, the system returns to the screen page shown in Fig. 18.9 - Screen
page 1.5.
Accepted commands:
The screen page in Fig. 18.19 - Screen page 1.15 displays whether the SAVE
procedure for the calculated values has been omitted.
HS-0-C4E-USO_44.fm
18-16 01/1107
TO_SET Program
Accepted commands:
1. acquisition point 3
2. acquisition point 2
3. acquisition point 1
4. reference
HS-0-C4E-USO_44.fm
01/1107 18-17
TO_SET Program
b. Acquire point 1
c. Bring the TCP back to the reference point with a sufficiently different orientation
as to the previous point
d. Acquire point 2
g. Bring the TCP back to the reference point with a sufficiently different orientation
as to the previous points
j. End of points acquisition : it is possible to continue with the orientation calculation,
repeat the calculation of X, Y and Z, return to main menu.
As from the acquisition of point 3, the tool calculation algorithm is sent, since if the
acquired points are independently linear, the three X, Y and Z coordinates are obtained
in output that permit the definition of the TCP.
As mentioned in the procedure description, together with the TCP measurement , the
user is given an evaluation of the acquisition procedure accuracy (this assesses the
standard deviation, acquired points dispersion index). The two evaluation classes may
be : imprecise measure and good measure. If the measurement is imprecise it is
necessary to continue with the acquisition of a new point, whereas the procedure is
considered completed when the measurement is good. If the acquisition of the eighth
point is reached without obtaining a good measurement of the tool, the procedure has
to be repeated from the start.
Continuing with the description of the user interface, once the tool calculation
environment is entered with the 4 points method, the following screen page is displayed:
The user moves the TCP on the reference and confirms the acquisition by pressing key
HS-0-C4E-USO_44.fm
18-18 01/1107
TO_SET Program
Accepted commands:
<F1>: continues to acquire a new point (Fig. 18.21 - Screen page 1.17)
accepts the calculated tool and continues according to the mode
described in Fig. 18.11 - Screen page 1.7 (the calculation
<F2>:
procedure for the Euler angles remains unchanged ), bearing in
mind that the calculated tool is not precise!
– If the calculation algorithm returns a tool good measurement the following screen
page is shown (Fig. 18.23 - Screen page 1.19b):
HS-0-C4E-USO_44.fm
01/1107 18-19
TO_SET Program
If F1 is pressed , the calculated TCP coordinates are displayed and from this point
onwards the user proceeds according to the modes described in Fig. 18.11
- Screen page 1.7.
– If the user has acquired 8 points and the algorithm has not been able to calculate
the tool, even with an imprecise measurement, this means that the acquired
points are imprecise or are dependently linear (see Fig. 18.24 - Screen page
1.19c).
The more diversified the orientation of the acquired points, the better the results!
Accepted commands:
<F1>: repeats the calculation (see Fig. 18.21 - Screen page 1.17)
<F2>: returns to main menu (Fig. 18.2 - Screen page 0.0)
HS-0-C4E-USO_44.fm
18-20 01/1107
TO_SET Program
When the START key is pressed (with control in Drive On) the reference moves toward
the first stored position associated to that tool; the Start can be released at any time to
manually adjust the reference approach to the TCP to be measured in Jog , and to
resume the movement toward the position by pressing the Start key again.
Accepted commands:
Be sure that the movement is executed at the speed indicated on the Teach
Pendant!
After the Move has terminated (either naturally or forced by the user) pass to the next
acquisition following the same procedure as described for the first point. If instead it is
chosen to return to the first menu , press F6.
Once the algorithm is able to calculate a tool, a screen page is displayed informing the
user that as from that moment it is possible to move in TOOL reference.
In order to retrieve Comau Options Codes, please refer to C4G Control Unit
Technical Specifications Manual, chapter Software Options.
Press key F4 from th e screen page in Fig. 18.6 - Screen page 1.2, to access this
procedure.
HS-0-C4E-USO_44.fm
01/1107 18-21
TO_SET Program
The new generation robots (N families) are fitted with a complete dynamic model on
all six axes.
Because of the model's sensitivity to the declared payload parameters, it is necessary
that the user checks in every situation the correct definition of the payload used.
An imprecision in the declaration of the payload characteristics has a negative influence
on the robot performance.
Warning: for safety reasons it is very important that the machine is not used
before having defined th e values for the payload.
The omission or a big error in the payload declaration could create potentially
hazardous si tuations fo r the users and for the fixtures
During the Payload Identification procedure also the outfi tting weight (e.g.:
cable) is identif ied.
If it is wished to execute the procedure with outfittings present (for example
cables) that exert significant traction (for example on the wrist structure), it is
advised to remove them wh ere possible, or in any case ensure that their pr esence
does not influence the results of the procedure.
For the identification, Comau does not ask for movements WITHOUT load, but
only WITH load.
The Payload identification procedure, running the execution from two separate
movement programs that involve the wrist axis, and, in part, axis 3 of the robot,
recalculates the values of the following system variables :
– $TOOL_MASS ( in kg)
– $TOOL_CENTER (x, y and z)
– $TOOL_INERTIA[1..6] (it is only necessary to supply items from I1 to I6, in
kg/sq.m, since the Inertia matrix is symmetrical). The useful reference system to
define the Inertia matrix is that of the tool ($TOOL_CENTER), with origin in COG
(Centre Of Gravity).
HS-0-C4E-USO_44.fm
18-22 01/1107
TO_SET Program
Once this has been determined, the parameters will be immediately active and
automatically stored in the specific table created by TO_SET (TT_TOOL1.var), to be
called up when executing the movement cycles, each time the same payload is used.
It may be that individually the values produced by the Payload identific ation
procedure have a certain tolerance in relation to the actual values. In any case,
the way the dynamic model is designed, the consistency of these values is
important.
18.4.7.2 Procedure
The movement programs for the Payload identification are supplied by Comau
Robotics & Final Assembly in PDL2 language and differ according to the robot model,
on the basis of the robot kinematic features. Their use is strongly recommended , unless
there are physical impediments in the robot working area.
Before installation , check that the overall dimension s caused by the presence of
any fixtures installed in the robot operating area, allows the complete execution
of the progr ams available for the Payload identifi cation suppl ied by Comau
Robotics & Final Assembly.
If there is not suf ficient s pace, it is advis ed to run t his pr ocedure BEFORE the final
positioning of the robot in the cell or line; if, in spite of the limited space, it is
decided to run the procedur e, the user can change the Payload identifi cation
programs, reducing the axis strokes and/or changing the position of some of
them (for example axis 1 and 2): in any case, the variations are to be made in
compl iance with the fund amental requirements needed for the modific ation of the
Payload identification programs (see par. 18.4.7.2.1 Requir ements to mo dify
Payload identifi cation progr ams a pag. 18-23).
HS-0-C4E-USO_44.fm
01/1107 18-23
TO_SET Program
instrument to validate the results. See par. 18.4.7.3 Software to validate the payload a
pag. 18-33.
Press key F4 from th e screen page in Fig. 18.6 - Screen page 1.2, to access this
procedure.
A reminder of the steps needed to reach screen page inFig. 18.6 - Screen page 1.2 is
given here. If these steps have already been executed, go straight to stepf.
a. Enter the Filer Utility Install command, specifying TO_INST. The system will install
and activate the TO_SET program.
HS-0-C4E-USO_44.fm
18-24 01/1107
TO_SET Program
insert the number of the required tool (from 1 to 18) and press ENTER
HS-0-C4E-USO_44.fm
01/1107 18-25
TO_SET Program
The procedure incl udes movements t hat invo lve axes 3, 4, 5 and 6.
i. if the calibration position has been reached, choose MOVE EXECUTED (F1) to go
directly to step j.
If it is not possible to reach the calibration position, the start position has to be
changed: choose CHANGE START POS (F2). The following screen page is
displayed:
i.1 Use the jog keys to bring the robot in the new start position (remember to
ALWAYS keep axis 3 parallel to the base!). Choose MOVE EXECUTED (F1): if
the system does not accept the new start position, repeat this step. When the Move
is finally executed correctly, continue with the next step.
HS-0-C4E-USO_44.fm
18-26 01/1107
TO_SET Program
k. if the choice is POSITION MODIFY (F2), to change the start point or reduce the
stroke of one or more axes, the following screen page is displayed:
k.1 to change the start position select CHANGE INITIAL POS (F1); in this case
execute the same operations as indicated in step i.1.
If instead it is wished to reduce the stroke of one or more axes, select REDUCING
MOVEMENTS (F2).
The system displays the axes involved and the corresponding selection keys:
HS-0-C4E-USO_44.fm
01/1107 18-27
TO_SET Program
k.2 Choose the axis for the stroke reduction, or select CONTINUE (F5) to return to
step j., without making any further modifications
k.3 Each time that key F1 or F2 is pressed (for positive and negative direction
respectively), the stroke of the selected axis will be reduced by a pre-defined
quantity
If the initial values are to be resumed, choose RESET INITIAL VALUES (F3).
When finished, choose CONTINUE (F5) to return to stepk.2
HS-0-C4E-USO_44.fm
18-28 01/1107
TO_SET Program
l.3 switch on the drives pressing DRIVE ON and press the START key
HS-0-C4E-USO_44.fm
01/1107 18-29
TO_SET Program
HS-0-C4E-USO_44.fm
18-30 01/1107
TO_SET Program
p. switch on the drives pressing DRIVE ON and press the START key
While running, the cycle number of the current program is displayed, on the
number of total cycles to be run.
q. the execution of the first movement program starts (slow). Wait for it to finish
HS-0-C4E-USO_44.fm
01/1107 18-31
TO_SET Program
s. if the overall dimensions, the payload and the tool structure allow the execution of
the second program at normal speed, select YES (F1), otherwise select NO (F2).
If NO (F2) is chosen, the second Identification program will be run at a slower
speed
HS-0-C4E-USO_44.fm
18-32 01/1107
TO_SET Program
w. the execution of the second movement program starts (at normal speed). Wait for
the completion
The system processes the data collected during the execution of the two
movement programs. When the processing has been completed, a screen page is
shown containing the calculated values (weight, centre of weight and inertia).
Choose SAVE (F1) to save them in TT_TOOL.VAR and in the tables of the DATA
environment
This terminates the procedure and the initial choice screen page returns (Fig. 18.4
- Screen page 1.0).
To exit choose RETURN TO MENU (F6).
HS-0-C4E-USO_44.fm
01/1107 18-33
TO_SET Program
If F1 is pressed, the Remote Tool remains enabled, if F2 is pressed the start situation
is resumed.
HS-0-C4E-USO_44.fm
18-34 01/1107
TO_SET Program
HS-0-C4E-USO_44.fm
01/1107 18-35
TO_SET Program
18.6.3 Procedure
If the UFRAME command is entered (pressing key F1) access is obtained to a second
screen page (Fig. 18.27 - Screen page 3.0) that asks the user to select local frame or
remote frame:
Another screen page is then shown (Fig. 18.28 - Screen page 3.1):
This screen page (Fig. 18.28 - Screen page 3.1) calls the attention of the operator to the
values of the $TOOL variable currently declared. The values are to refer to the tool
mounted on the flange and that will be used for the FRAME calculation. The values are
displayed and they can be modified if necessary.
Accepted commands:
HS-0-C4E-USO_44.fm
18-36 01/1107
TO_SET Program
Asks to take the tool TCP on the Xpos point . The robot may be in any position: the
operator can position the TCP on the Xpos point as preferred, according to
requirements.
Accepted commands:
HS-0-C4E-USO_44.fm
01/1107 18-37
TO_SET Program
Asks to take the tool TCP on the Xypos point . The robot may be in any position: the
operator can position the TCP on the Xpos point as preferred, according to
requirements.
Accepted commands:
Displays the $UFRAME calculated values (XYZ relocations and AER orientations). At
this time it is possible to move in USR mode (selected by key [TYP] of TP) to check
that the new origin is that desired. If it is not so, check:
– Robot calibration;
– $TOOL values (referred to the tool mounted on the flange);
– the 3 reference points (check that the sequence required by TO_SET has been
followed)
Accepted commands:
HS-0-C4E-USO_44.fm
18-38 01/1107
TO_SET Program
Displays the $UFRAME calculated values (XYZ relocations and AER orientations).
To save the calculated values in the TU_FRAME table.
Accepted commands:
to omit the SAVE request. In this case the screen page will be
<esc>:
displayed in (Fig. 18.35 - Screen page 3.8)
Displays the $TOOL values currently declared (XYZ relocations and AER orientations)
and allows their modification.
HS-0-C4E-USO_44.fm
01/1107 18-39
TO_SET Program
Accepted commands:
Displayed if the SAVE procedure for the calculated values has been omitted .
Accepted commands:
HS-0-C4E-USO_44.fm
18-40 01/1107
TO_SET Program
HS-0-C4E-USO_44.fm
01/1107 18-41
TO_SET Program
18.7.3 Procedure
Fig. 18.37 - Screen page 4.1
Calls the attention of the operator to the values of the $TOOL variable currently
declared. The values are to refer to the tool mounted on the flange and that will be used
for the FRAME calculation. The values are displayed and they can be modified if
necessary.
Accepted commands:
HS-0-C4E-USO_44.fm
18-42 01/1107
TO_SET Program
Asks to take the tool TCP on the Xpos point. The robot may be in any position: the
operator can position the TCP on the Xpos point as preferred, according to
requirements.
Accepted commands:
HS-0-C4E-USO_44.fm
01/1107 18-43
TO_SET Program
Asks to take the tool TCP on the Xypos point . The robot may be in any position: the
operator can position the TCP on the XYpos point as preferred, according to
requirements.
Accepted commands:
Displays the $UFRAME calculated values (XYZ relocations and AER orientations). At
this time it is possible to move in USR mode (selected by key [TYP] of TP) to check
that the new origin is that desired. If it is not so, check:
– robot calibration;
– $TOOL values (referred to the tool mounted on the flange);
– the 3 reference points (check that the sequence required by TO_SET )
Accepted commands:
HS-0-C4E-USO_44.fm
18-44 01/1107
TO_SET Program
Displays the $UFRAME calculated values (XYZ relocations and AER orientations).
To save the calculated values in the TU_FRAME table.
TU_FRAME is contained in the system software CD, in the Configur ation Tools
directory.
Accepted commands:
to omit the SAVE request. In this case the screen page will be
<esc>:
displayed in Fig. 18.44 - Screen page 4.8
Displays the $TOOL values currently declared (XYZ relocations and AER orientations)
and allows the modification.
Accepted commands:
HS-0-C4E-USO_44.fm
01/1107 18-45
TO_SET Program
Displayed if the SAVE procedure for the calculated values has been omitted .
Accepted commands:
Before returning to the main menu (Fig. 18.2 - Screen page 0.0) it is asked if the remote
tool is to be kept enabled (Fig. 18.46 - Screen page 4.10).
HS-0-C4E-USO_44.fm
18-46 01/1107
TO_SET Program
Press F1 to maintain enabled the remote tool; press F2 to restore the start situation (the
tool is the one shown in Fig. 18.37 - Screen page 4.1).
HS-0-C4E-USO_44.fm
01/1107 18-47
TO_SET Program
These may be threaded holes, to fasten the 150 mm. calibrated tool or references
stamped on the positioner.
Calls the attention of the operator to the values of the currently declared $TOOL
variable.
The values are to refer to the tool mounted on the flange and will be used for the
calculation of $BASE or $AUX_BASE. When these values are displayed, they can be
modified if necessary.
Accepted commands:
HS-0-C4E-USO_44.fm
18-48 01/1107
TO_SET Program
Calls the attention of the operator to the values of the calibrated tool used as reference
on points P1, P2, P3. The values are displayed and can be modified if necessary.
Accepted commands:
HS-0-C4E-USO_44.fm
01/1107 18-49
TO_SET Program
<esc>: omits the insertion (returns to the screen page ofFig. 18.49 - Screen
page 5.3)
The [n° arm] (to which the selected positi oner is associated) assumed b y TO_SET
is that displayed on the TP in the field [Ar:] at the moment when the positioner
number is inserted
Accepted commands:
HS-0-C4E-USO_44.fm
18-50 01/1107
TO_SET Program
<esc>: omits the insertion (returns to the screen page ofFig. 18.49 - Screen
page 5.3)
<F1>: to press when the robot is on the point; cont. (Fig. 18.53 - Screen page
5.7)
<F6>: returns to main menu (Fig. 18.2 - Screen page 0.0)
HS-0-C4E-USO_44.fm
01/1107 18-51
TO_SET Program
<F1>: to press when the robot is on the point; cont. (Fig. 18.54 - Screen page
5.8)
<F6>: returns to main menu (Fig. 18.2 - Screen page 0.0)
<F1>: to press when the robot is on the point; cont.(Fig. 18.55 - Screen page 5.9
or Fig. 18.61 - Screen page 5.15)
<F6>: returns to main menu (Fig. 18.2 - Screen page 0.0)
Displays the calculated $BASE or $AUX_BASE values (XYZ relocations and AER
orientations).
At this moment the positioner axes can be moved in JOINT selecting the ARM number
(if the positioner is an ARM), to check that the cooperating move between robot and
positioner is correct.
If it is not, check the following:
HS-0-C4E-USO_44.fm
18-52 01/1107
TO_SET Program
Displayed if the SAVE request has been performed. The calculated values assigned to
the opportune system variables have been successfully saved in the .C4G system file.
Accepted commands:
HS-0-C4E-USO_44.fm
01/1107 18-53
TO_SET Program
Displays the $TOOL values currently declared and permits their modification.
Accepted commands:
Displays the values of the reference calibrated tool (XYZ relocations) and permits their
modification.
Accepted commands:
HS-0-C4E-USO_44.fm
18-54 01/1107
TO_SET Program
Displayed if an ARM type positioner has been entered that is not acknowledged by the
system (see Fig. 18.50 - Screen page 5.4).
Accepted commands:
Displayed if an AUX type positioner has been entered that is not acknowledged by the
system (see Fig. 18.52 - Screen page 5.6).
Accepted commands:
HS-0-C4E-USO_44.fm
01/1107 18-55
TO_SET Program
Displayed when a SAVE (from Fig. 18.55 - Screen page 5.9) has been requested but
the C4G is not in PROG + DRIVES OFF. This condition is necessary since the SAVE
operation requires the system command ConfigureSave.
Accepted commands:
HS-0-C4E-USO_44.fm
18-56 01/1107
TO_SET Program
HS-0-C4E-USO_44.fm
01/1107 18-57
TO_SET Program
Accepted commands:
HS-0-C4E-USO_44.fm
18-58 01/1107
TO_SET Program
If the C4G is configured as multiarm, the arm to be associated to the conveyor has to be
defined.
Continues with the next screen page.
If there is only one arm, the screen page is not displayed
HS-0-C4E-USO_44.fm
01/1107 18-59
TO_SET Program
The physical channel where the position transducer is connected has to be indicated.
In practice it is the physical axis. Example: for a robot with 6 axes, the first physical axis
available is 7.
Continues with the next screen page
<F1>: to be selected for linear conveyor. Continues with screen page of
Fig. 18.69 - Screen page 6.5.1
<F2>: to be selected for circular conveyor.
Continues with screen page of Fig. 18.80 - Screen page 6.5.2
<F3>: to be selected for slide conveyor.
Continues with screen page of Fig. 18.91 - Screen page 6.5.3
<F6>: returns to the screen page of Fig. 18.63 - Screen page 6.0
HS-0-C4E-USO_44.fm
18-60 01/1107
TO_SET Program
The user has to bring the robot TCP about the first reference point, usually this point is
the position of the sensor that detects the passage of the trolley and is at the beginning
of the conveyor stroke.
HS-0-C4E-USO_44.fm
01/1107 18-61
TO_SET Program
L'utente deve portare il TCP del robot a circa metà corsa della direzione positiva del
conveyor, normalmente questa posizione si trova lungo la direzione di avanzamento del
conveyor.
The user has to bring the robot TCP on a point of the X-Y plane; usually this plane
coincides with the trolley plane.
HS-0-C4E-USO_44.fm
18-62 01/1107
TO_SET Program
To insert the distance between the origin of the conveyor reference system previously
calculated (or inserted) and the position of the sensor. Usually this distance is zero,
because the origin coincides with the sensor position. (See reference system calculation
method, Fig. 18.71 - Screen page 6.5.1.2 - Fig. 18.72 - Screen page 6.5.1.3 - Fig. 18.73
- Screen page 6.5.1.4).
Continues with the next screen page
If NO (F2), returns to the screen page in Fig. 18.70 - Screen page 6.5.1.1.
If YES (F1), passes to the next screen page
HS-0-C4E-USO_44.fm
01/1107 18-63
TO_SET Program
HS-0-C4E-USO_44.fm
18-64 01/1107
TO_SET Program
<F1>: saves the data entered so far, and executes a C4G restart
<F6>: returns to the screen page of Fig. 18.70 - Screen page 6.5.1.1
To insert the value of the conveyor transmission ratio [motor rev./conveyor revolutions].
HS-0-C4E-USO_44.fm
01/1107 18-65
TO_SET Program
<F1>: to obtain the automatic calculation using the robot as the measuring tool.
Continues with screen page of Fig. 18.82 - Screen page 6.5.2.2
<F2>: for manual entry of the conveyor reference system values.
Continues with screen page of Fig. 18.88 - Screen page 6.5.2.7
<F6>: returns to the screen page of Fig. 18.68 - Screen page 6.5
The user has to bring the robot TCP about the first reference point, usually this point is
the position of the sensor that detects the passage of the trolley and is at the beginning
of the conveyor stroke.
<F1>: press when the TCP is in the required position. Continues with the next
screen page
<F6>: returns to the screen page of Fig. 18.81 - Screen page 6.5.2.1
The user has to bring the robot TCP about midway along the stroke in the positive
direction of the conveyor, usually this position is along the conveyor advance direction.
HS-0-C4E-USO_44.fm
18-66 01/1107
TO_SET Program
<F6>: returns to the screen page of Fig. 18.81 - Screen page 6.5.2.1
The user is to bring the robot TCP on a point of the X-Y plane at approximately the
conveyor end of travel; usually this plane coincides with the trolley plane.
To insert the distance between the origin of the conveyor reference system previously
calculated (or inserted) and the position of the sensor.
Usually this distance is zero, because the origin coincides with the sensor position. (See
reference system calculation method Fig. 18.82 - Screen page 6.5.2.2 - Fig. 18.83
- Screen page 6.5.2.3 - Fig. 18.84 - Screen page 6.5.2.4).
HS-0-C4E-USO_44.fm
01/1107 18-67
TO_SET Program
HS-0-C4E-USO_44.fm
18-68 01/1107
TO_SET Program
automatic calculation).
<F1>: saves the data entered so far, and executes a C4G restart
<F6>: returns to the screen page of Fig. 18.81 - Screen page 6.5.2.1
HS-0-C4E-USO_44.fm
01/1107 18-69
TO_SET Program
HS-0-C4E-USO_44.fm
18-70 01/1107
TO_SET Program
If the C4G is configured as multiarm, the arm to be associated to the conveyor has to be
defined.
If there is only one arm, the screen page is not displayed
To define the tracking windows, i.e. the area where the robot is enabled to track the part.
<F1>: automatic procedure: the robot TCP is brought on the limits of the
area to be defined (Fig. 18.96 - Screen page 7.3.1)
<F2>: manual procedure: the Cartesian positions that define the area
limits are entered manually (Fig. 18.101 - Screen page 7.3.6)
<F6>: returns to the screen page of Fig. 18.63 - Screen page 6.0
HS-0-C4E-USO_44.fm
01/1107 18-71
TO_SET Program
HS-0-C4E-USO_44.fm
18-72 01/1107
TO_SET Program
<F1>: saves the acquired data and returns to the screen page ofFig. 18.64
- Screen page 6.1
<F6>: returns to the screen page of Fig. 18.95 - Screen page 7.3
HS-0-C4E-USO_44.fm
01/1107 18-73
TO_SET Program
HS-0-C4E-USO_44.fm
18-74 01/1107
TO_SET Program
HS-0-C4E-USO_44.fm
01/1107 18-75
TO_SET Program
<F1>: saves the acquired data and returns to the screen page ofFig. 18.64
- Screen page 6.1
<F6>: returns to the screen page of Fig. 18.95 - Screen page 7.3
If there are two conveyors enabled (1 and 2), screen page n. 8.1 will be displayed
followed by screen page n. 8.2 with the indication of the conveyor number entered to be
disabled.
If only one conveyor is enabled (1 or 2), the screen page ofFig. 18.108 - Screen page
8.2, will be displayed, indicating the number of the conveyor that can be disabled.
If there is no conveyor enabled, the screen page of Fig. 18.110 - Screen page 8.4 will
be displayed.
<F1>: disables the conveyor indicated and executes a save and a C4G
restart
<F6>: returns to the screen page of Fig. 18.63 - Screen page 6.0
HS-0-C4E-USO_44.fm
18-76 01/1107
TO_SET Program
<F1>: disables the conveyor indicated and returns to the screen page of
Fig. 18.63 - Screen page 6.0
<F6>: returns to the screen page of Fig. 18.63 - Screen page 6.0
Press a key to return to the screen page of Fig. 18.63 - Screen page 6.0
HS-0-C4E-USO_44.fm
01/1107 18-77
TO_SET Program
HS-0-C4E-USO_44.fm
18-78 01/1107