Motion Programming For Comau
Motion Programming For Comau
C4G
MOTION PROGRAMMING System Software Rel. 3.3x
Robot movements in programming mode, motion control, optional features (palletizing functionality, synchronous motion, cooperative motion, sensor tracking, conveyor tracking, weaving, path governor, smartmove4, kinematic compensation, collision detection), moving through singularities, positioners and portals, TO_SET program.
CR00757603_en-00/1109
The information contained in this manual is the property of COMAU S.p.A. Reproduction of text and illustrations is not permitted without prior written approval by COMAU S.p.A. COMAU S.p.A. reserves the right to alter product specifications at any time without notice or obligation.
Summary
SUMMARY
PREFACE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .IX
Symbols used in the manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .IX Reference documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X Modification History . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .XI
1.
2.
3.
4.
lb-rc-c4e-motionTOC.fm
Summary
Reference frames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1 System reference frames. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 Manual motion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3 Manual motion in WRIST_JNT mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4 Manual motion of a single arm system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4 Manual motion of auxiliary axes, slides and rotating columns . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4 Manual motion with Controller multi-arm configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.5 Motion instruction in programming status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.5
5.
II
Summary
JNT_COARSE and JNT_FINE Termination. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.24 NOSETTLE Termination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.24 Trajectory Recovery. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.24 Recovery Strategy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.24 Pending Motion Status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.25 Recovery Range. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.25 Execution Environment. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.25 Process Resume . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.26 Automatic Process Resume. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.28 Continuous Motion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.29 Trajectory Shape During Continuous Motion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.30 Continuous Motion Modes (FLY) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.30 FLY_NORM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.30 FLY_CART (Controller Aided Resolved Trajectory) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.31 Dynamic Machine Stress Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.31 Constant Speed Maintenance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.32 Control of Trajectory During FLY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.32 Debug of Fly Motions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.34 Variables used with FLY Motion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.36 Remote Tool System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.36 Integrated Movement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.37 Integrated Axis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.38 Jogging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.39 Reference Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.39 Restrictions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.40
6.
7.
8.
lb-rc-c4e-motionTOC.fm
III
Summary
Configuration on several arms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.3 Sensor interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.3 Integrated Sensors ( MCP-ST board (Seam Track)) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.4 External sensors. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.4 Sensor reference system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.5 Sensor integral with the tool (TOOL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.5 Sensor integral with the user reference system (USER) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.6 Sensor integral with the world reference system (WORLD). . . . . . . . . . . . . . . . . . . . . . . . . . 8.7 Sensor integral with the weaving reference system (WEAVE). . . . . . . . . . . . . . . . . . . . . . . . 8.7 Type of information acquired by the sensor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.7 Correction actuation criteria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.8 Relative and absolute deviations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.8 Actuation of deviation in time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.9 Overall deviations control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.12 Sensor tracking enable mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.12 Sensor malfunctioning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.14 Robot stop in the case of sensor malfunctioning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.14 Redefinition of overall deviations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.14 Accumulative overall deviations management. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.16 Interrupted sensor tracking session . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.16 Suspended sensor tracking session. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.17 Resetting in spread condition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.17 Limitations in parameter changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.18 Programming example. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.19
9.
lb-rc-c4e-motionTOC.fm
IV
Summary
Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.1 Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.2 Conveyor configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.2 Motion programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.2
Summary
Inverse conversion of SMART NH4 (non-spherical wrist) model . . . . . . . . . . . . . . . . . . . . . 14.6 Approximation in the orientation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14.6 Move to a taught POSITION. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14.6 Fly between MOVE LINEAR/CIRCULAR and MOVE JOINT . . . . . . . . . . . . . . . . . . . . . . 14.7 Axis 5 singularity. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14.7 Cartesian position out of range. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14.9 TCP in the back of the robot. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14.10 TCP behind axis 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14.12 WCP close to axis 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14.13 Inverse conversion of SMART NH, NS and NM (spherical wrist models only) . . . . . . . . . 14.15 Axis 5 singularity. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14.15 TCP close to axis 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14.16 Programming rules for non-spherical wrist robots (SMART NH4) . . . . . . . . . . . . . . . . . . . . . 14.17 How to stay away from a singularity zone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14.18 Changing the orientation of the points along the path . . . . . . . . . . . . . . . . . . . . . . . . . . 14.18 Properly designing the work-cell layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14.20 Modifying tool inserting a small angle between robot flange and tool flange . . . . . . . . . 14.23 Using WRIST_JNT modality to go through singularities . . . . . . . . . . . . . . . . . . . . . . . . . . 14.25 Conclusions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14.27 Appendix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14.28 Exact working range for SMART NH4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14.28
lb-rc-c4e-motionTOC.fm
VI
Summary
VII
Summary
VIII
Preface
PREFACE
Symbols used in the manual Reference documents Modification History.
This symbol indicates operating procedures, technical information and precautions that if ignored and/or are not performed correctly could cause damage to the equipment.
This symbol indicates operating procedures, technical information and precautions that it are important to highlight.
HS-0-0-0-mot_01.fm
00/1109
IX
Preface
Reference documents
This document refers to the C4G Control Unit. The complete set of manuals for the C4G consists of: Comau C4G Control Unit Technical Specifications Transport and installation Guide to integration, safeties, I/O and communications C4G Control Unit Use.
These manuals are to be integrated with the following documents: Comau Robot Technical Specifications Transport and installation Maintenance PDL2 Programming Language Manual VP2 - Visual PDL2 Motion programming According to the required type of application. ISaGRAF Workbench
Programming
HS-0-0-0-mot_01.fm
00/1109
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.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. System Software version 3.3x par. 5.13 Palletizing functionality (optional feature) on page 5-40 has been added.
HS-0-0-0-mot_01.fm
00/1109
XI
Preface
HS-0-0-0-mot_01.fm
XII
00/1109
1.
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 included in the spare parts list. 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.
The installation shall be made by qualified installation Personnel and should conform to all national and local codes.
ge-0-0-0_01.FM
07/1007
1-1
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 Authorised Personnel Authorised personnel defines the group of persons who have been trained and assigned to carry out the activities listed in the Applicability section. Assigned Personnel The persons assigned to direct or supervise the activities of the workers referred to in the paragraph above. Installation and Putting into Service The installation is intended as the mechanical, electrical and software integration of the Robot and Control System in any environment that requires controlled movement of robot axes, in compliance with the safety requirements of the country where the system is installed. 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. Auto / Remote Automatic Mode Operating mode in which the robot autonomously executes the programmed cycle at the work speed, with the operators outside the protected area, with the safety barriers closed and the safety circuit activated, with local (located outside the protected area) or remote start/stop. Maintenance and Repairs Maintenance and repairs are activities that involve periodical checking and / or replacement (mechanical, electrical, software) of Robot and Control System parts or components, and trouble shooting, that terminates when the Robot and Control System has been reset to its original project functional condition.
ge-0-0-0_01.FM
1-2
07/1007
General Safety Precautions Putting Out of Service and Dismantling Putting out of service defines the activities involved in the mechanical and electrical removal of the Robot and Control System from a production unit or from an environment in which it was under study. Dismantling consists of the demolition and dismantling of the components that make up the Robot and Control System. 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
1.2.4
Operating Modes
Installation and Putting into Service Putting into service is only possible when the Robot and Control System has been correctly and completely installed. The system installation and putting into service is exclusively the task of the authorised personnel. The system installation and putting into service is only permitted inside a protected area of an adequate size to house the robot and the fixtures it is outfitted with, without passing beyond the safety barriers. It is also necessary to check that under normal robot movement conditions there is no collision with parts inside the protected area (structural columns, power supply lines, etc.) or with the barriers. If necessary, limit the robot working areas with mechanical hard stop (see optional assemblies). Any fixed robot control protections are to be located outside the protected area and in a point where there is a full view of the robot movements. The robot installation area is to be as free as possible from materials that could impede or limit visibility. During installation the robot and the Control Unit are to be handled as described in the product Technical Documentation; if lifting is necessary, check that the eyebolts are fixed securely and use only adequate slings and equipment. Secure the robot to the support, with all the bolts and pins foreseen, tightened to the torque indicated in the product Technical Documentation. If present, remove the fastening brackets from the axes and check that the fixing of the robot fixture is secured correctly. Check that the robot guards are correctly secured and that there are no moving or loose parts. Check that the Control Unit components are intact. If applicable, connect the robot pneumatic system to the air distribution line paying attention to set the system to the specified pressure value: a wrong setting of the pressure system influences correct robot movement. Install filters on the pneumatic system to collect any condensation. Install the Control Unit outside the protected area: the Control Unit is not to be used to form part of the fencing. Check that the voltage value of the mains is consistent with that indicated on the plate of the Control Unit. Before electrically connecting the Control Unit, check that the circuit breaker on the mains is locked in open position. Connection between the Control Unit and the three-phase supply mains at the works, is to be with a four-pole (3 phases + earth) armoured cable dimensioned appropriately for the power installed on the Control Unit. See the product Technical Documentation. The power supply cable is to enter the Control Unit through the specific fairlead and be properly clamped. Connect the earth conductor (PE) then connect the power conductors to the main switch.
ge-0-0-0_01.FM
1-4
07/1007
General Safety Precautions 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 circuit the contacts must be included of the control unit emergency stop buttons, which are on X30. The push buttons are not interlocked in the emergency stop circuit 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 controlled stop time is consistent with the type of Robot connected 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
General Safety Precautions Programming Mode The robot is only to be programmed by the authorised personnel. Before starting to program, the operator must check the Robot 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 robots range of action and test the cycle at slow speed.
ge-0-0-0_01.FM
1-6
07/1007
General Safety Precautions Auto / Remote Automatic Mode The activation of the automatic operation (AUTO and REMOTE states) is only to be executed with the Robot and Control System integrated inside an area with safety barriers properly interlocked, as specified by Safety Standards currently in force in the Country where the installation takes place. Before starting the automatic mode the operator is to check the Robot and Control System and the protected area to make sure there are no potentially hazardous irregular conditions. The operator can only activate automatic operation after having checked: that the Robot and Control System is not in maintenance or being repaired; the safety barriers are correctly positioned; that there is nobody inside the protected area; that the Control Unit doors are closed and locked; that the safety devices (emergency stop, safety barrier devices) are functioning; Special attention is to be paid when selecting the automatic-remote mode, where the line PLC can perform automatic operations to switch on motors and start the program.
Robot axes release In the absence of motive power, the robot axes movement is possible by means of optional release devices and suitable lifting devices. Such devices only enable the brake deactivation of each axis. In this case, all the system safety devices (including the emergency stop and the enable button) are cut out; also the robot axes can move upwards or downwards because of the force generated by the balancing system, or the force of gravity.
Before using the manual release devices, it is strongly recommended to sling the robot, or hook to an overhead travelling crane. Stop distances (threshold values) As for the stop distance threshold values for each robot type, please turn to the COMAU Robotics & Service Dept. Example: Considering the robot in automatic mode, in conditions of maximum extension, maximum load and maximum speed, when the stop pushbutton is pressed (red mushroom head pushbutton on WiTP) an NJ 370-2.7 Robot will stop completely in approx. 85 of motion, equivalent to approx. 3000 mm displacement measured on the TCP flange. Under these conditions indicated, the stoppage time of the NJ 370-2.7 Robot is 1.5 seconds. Considering the robot in programming mode (T1), when the stop pushbutton is pressed (red mushroom head pushbutton on WiTP) an NJ 370-2.7 Robot will stop completely in approx. 0.5 seconds.
Maintenance and Repairs When assembled in COMAU Robotics & Service, the robot is supplied with lubricant that does not contain substances harmful to health, however, in some cases, repeated and prolonged exposure to the product could cause skin irritation, or if swallowed, indisposition. First Aid. Contact with the eyes or the skin: wash the contaminated zones with abundant water; if the irritation persists, consult a doctor.
ge-0-0-0_01.FM
07/1007
1-7
General Safety Precautions If swallowed, do not provoke vomiting or take anything by mouth, see a doctor as soon as possible. Maintenance, trouble-shooting and repairs are only to be carried out by authorised personnel. When carrying out maintenance and repairs, the specific warning sign is to be placed on the control panel of the Control Unit, stating that maintenance is in progress and it is only to be removed after the operation has been completely finished - even if it should be temporarily suspended. Maintenance operations and replacement of components or the Control Unit are to be carried out with the main switch in open position and locked with a padlock. Even if the Control Unit is not powered (main switch open), there may be interconnected voltages coming from connections to peripheral units or external power sources (e.g. 24 Vdc inputs/outputs). Cut out external sources when operating on parts of the system that are involved. Removal of panels, protection shields, grids, etc. is only allowed with the main switch open and padlocked. Faulty components are to be replaced with others having the same code, or equivalent components defined by COMAU Robotics & Service.
After replacement of the ESK module, check on the new module that the setting of the stop time on selector switches SW1 and SW2 is consistent with the type of Robot connected to the Control Unit. Trouble-shooting and maintenance activities are to be executed, when possible, outside the protected area. Trouble-shooting executed on the control is to be carried out, when possible without power supply. Should it be necessary, during trouble-shooting, to intervene with the Control Unit powered, all the precautions specified by Safety Standards are to be observed when operating with hazardous voltages present. Trouble-shooting on the robot is to be carried out with the power supply cut out (Drive off). At the end of the maintenance and trouble-shooting operations, all deactivated safety devices are to be reset (panels, protection shields, interlocks, etc.). Maintenance, repairs and trouble-shooting operations are to be concluded checking the correct operation of the Robot and Control System and all the safety devices, executed from outside the protected area. When loading the software (for example after replacing electronic boards) the original software handed over by COMAU Robotics & Service is to be used. Scrupulously follow the system software loading procedure described in the specific product Technical Documentation; after loading always run a test cycle to make sure, remaining outside the protected area Disassembly of robot components (motors, balancing cylinders, etc.) may cause uncontrolled movements of the axes in any direction: before starting a disassembly procedure, consult the warning plates applied to the robot and the Technical Documentation supplied. It is strictly forbidden to remove the protective covering of the robot springs.
ge-0-0-0_01.FM
1-8
07/1007
General Safety Precautions Putting Out of Service and Dismantling Putting out of service and dismantling the Robot and Control System is only to be carried out by Authorised Personnel. Bring the robot to transport position and fit the axis clamping brackets (where applicable) consulting the plate applied on the robot and the robot Technical Documentation. Before stating to put out of service, the mains voltage to the Control Unit must be cut out (switch off the circuit breaker on the mains distribution line and lock it in open position). After using the specific instrument to check there is no voltage on the terminals, disconnect the power supply cable from the circuit breaker on the distribution line, first disconnecting the power conductors, then the earth. Disconnect the power supply cable from the Control Unit and remove it. First disconnect the connection cables between the robot and the Control Unit, then the earth cable. If present, disconnect the robot pneumatic system from the air distribution line. Check that the robot is properly balanced and if necessary sling it correctly, then remove the robot securing bolts from the support. Remove the robot and the Control Unit from the work area, applying the rules indicated in the products Technical Documentation; if lifting is necessary, check the correct fastening of the eye-bolts and use appropriate slings and equipment only. Before starting dismantling operations (disassembly, demolition and disposal) of the Robot and Control System components, contact COMAU Robotics & Service, or one of its branches, who will indicate, according to the type of robot and Control Unit, the operating methods in accordance with safety principles and safeguarding the environment. The waste disposal operations are to be carried out complying with the legislation of the country where the Robot and Control System is installed.
ge-0-0-0_01.FM
07/1007
1-9
ge-0-0-0_01.FM
1-10
07/1007
2.
2.1 Foreword
This chapter describes the following: System operating modes System states Stand-by function
programming (T1),
Local automatic mode (AUTO) is used to execute production programs; as they contain instructions for the robot movement, to be able to start it is necessary to press
HS-0-C4E-USO_32.fm
00/0708
2-1
System operating modes and states the START key on the Teach Pendant. The status selector switch must be set on AUTO. Active TOOL, BASE and FRAME cannot be changed when working in AUTO. The Automatic remote mode (REMOTE) is the same as Automatic local mode (AUTO), but the commands (for example the start) are sent from a remote device (for example a PLC). The state selector switch must be set to the REMOTE position. Active TOOL, BASE and FRAME cannot be changed when working in REMOTE. The Programming mode (T1) is used to create and verify programs The robot moves, for safety reasons, are run at a lower speed than in automatic mode (maximum robot speed allowed in programming is 250 mm/s on the flange centre). In Auto T mode (T2 - optional feature) the system runs as in Programming mode (T1), except that the program testing can be executed at working speed. If, in T2, the jog keys are used, the system will automatically reduce the speed to less than 250 mm/s. Note When the status selector switch is set to T2, the system generates a latched alarm that prevents the entry to the actual T2 status, even if allowing to switch the drives on. No movements are allowed (nor the manual one) until the latched alarm is not acknowledged. To enable this optional mode, the user has then to confirm the message. The latched alarm described above is automatically reset if the selector switch is moved to another state, but it resumes as soon as there is a return to T2. T2 status is only enabled when the user confirms the latched alarm. At this point the user is free to run motion programs keeping either the START key or the enabling device pressed. The speed can be increased at will up to 100%, hence bringing the robot to its maximum speed (the same speed that can be reached in automatic mode). When the status selector switch is set on position T1 (or T2 - optional service), the programs can be developed using editor environment and the spots can be taken from the Teach Pendant moving the robot manually with the motion keys; the programs can be set up using the debug tools of the system. In programming mode, the execution of a move instruction requires that the operator presses the START key and the enable device on the Teach Pendant. When the status selector switch has been set 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. 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
2-2
00/0708
System operating modes and states Active TOOL, BASE and FRAME cannot be changed when working in AUTO. if the state selector switch is in REMOTE position, DRIVEs ON and OFF are remote controlled. A detailed description follows of all the possible system states.
Transition from one state of the system to another is also influenced by the enable device on the Teach Pendant. The Control Unit may be in one of these conditions: HOLD status: the robot is gradually decelerated until the stopping point is reached; movement is suspended and also the execution of the movement program (holdable). When there are all the necessary conditions to exit from the HOLD status, the system returns to the previous state (programming or automatic), but to continue to execute the movement program it is necessary to press START. AUTO status: this is usually used to execute production programs that control the robot movements (status selector switch positioned on AUTO or REMOTE or T2). Active TOOL, BASE and FRAME cannot be changed when working in AUTO or REMOTE. PROGR status: the robot can be moved manually using the jog keys or executing program instructions (from editor environment or by EXECUTE). In the latter case, in order that the movement be executed, the START key and the enabling button have to be kept pressed. A special sub-status is AUTO-T status (optional) that, besides having all the characteristics of the PROGR status, allows the program to be run at working speed. This is an OPTIONAL status.
If the controlled stop function class 1 (EN 60204-1) is active, the power cut-out (opening of the power contactor) may take place with a delay that ranges from a minimum of 1 second to a maximum of 2 seconds. With the status selector switch positioned on T1 or T2, the power cut-out is immediate (EN 60204-1, class 0 stop). ALARM status: this status is entered when there is a system alarm. According to how serious the error is, the system takes different actions, such as suspending the program execution, deactivation of the drives, etc. A situation may occur where the alarm cannot be reset, therefore the drives cannot be switched on.
The current system status is displayed on the first status line of the Teach Pendant (or in the Terminal window of tool WINC4G on PC). The figure shows a simplified diagram of the actions that determine the system change-over from one state to another.
HS-0-C4E-USO_32.fm
00/0708
2-3
Fig. 2.1
1. 2. 3. 4.
Status selector switch on T1 + HOLD released HOLD or DRIVES OFF or selector switch change HOLD or DRIVES OFF or selector switch change Status selector switch on AUTO or REMOTE or T2 + HOLD released Note: To perform transient 4 also the enabling device key has to be pressed
2.3.1
HOLD status
The safety rules to be complied to when operating with the Control Unit have been studied so that the system enters the HOLD status every time a change is made in the operating mode, passing for instance from LOCAL to PROGR mode. To exit from the HOLD status to enable a certain operating mode, there must be all the required safety conditions. A typical example is when the operator brings the status selector switch to PROGR to work near the robot, holding the Teach Pendant to carry out learning operations for the points. In PROGR or AUTO-T, exiting from HOLD can be obtained by pressing START, this is controlled by the system and therefore is active when an instruction or a movement program is executed. When the START key is released again the system returns to HOLD status. When entering the HOLD status, the corresponding HOLD key on the Teach Pendant is considered as pressed. Further pressure on the key causes the system to exit from HOLD status. If the HOLD status has been caused by pressing the DRIVE OFF key on the Teach Pendant (either Enabling Device released or R5 softkey pressed meaning DRIVE OFF), the DRIVE OFF and HOLD keys must be pressed again to exit from HOLD status, and then re-power the drives (either intermediate pressure of the Enabling Device or press R5 softkey meaning DRIVE ON).
2.3.2
AUTO status
To have the system in AUTO status, the status selector switch on the Robot Control Cabinet must be set on AUTO or REMOTE. Active TOOL, BASE and FRAME cannot be
HS-0-C4E-USO_32.fm
2-4
00/0708
System operating modes and states changed when working in AUTO or REMOTE. 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
2.3.3
PROGR status
PROGR status is active when: the status selector switch is set to T1.
In this state the robot can be moved manually, using the jog keys on the Teach Pendant. It is also possible to run programs from IDE environment (see IDE Page in Use of C4G Control Unit manual) to check that they are correct and if necessary make changes. Movements are at slow speed.
2.3.4
In this status the movements can be run, at full speed, from the Teach Pendant, requiring that the START key, together with the enabling device, is kept pressed by the operator to execute the move. The system passes from AUTO_T status to HOLD status when: the Enabling Device is released by the operator. This also causes the stop of the move, that can be resumed by pressing the Enabling Device again. The second line of the status window will ask for this pushbutton to be pressed. the status selector switch is changed to any other position the HOLD key is pressed, or the START key is released.
2.3.5
ALARM status
The system enters ALARM status when an alarm is generated. An error message is displayed on the second status line of the system screen and the associated LED, next to the ALARM key on the Teach Pendant, lights up. There are different conditions that can generate an alarm and the action to be taken to exit from ALARM status and bring the system back to the previous state vary according to how serious the error is.
HS-0-C4E-USO_32.fm
00/0708
2-5
HS-0-C4E-USO_32.fm
2-6
00/0708
3.
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: movement after shut-down and leaves it to the operator to check that the physical position of the robot corresponds to the new value. CALIBRATION POSITION: a pre-set position that has been checked using specific equipment (dial gauges, supports, calibration fixtures). The calibration position is a reference position in the robot working space that serves to initialise the value of each axis. CALIBRATION CONSTANTS: the calibration constant is the difference between the datum read by the transducer and the nominal position of the robot axis that the transducer should assume in that particular position of the robot axis. In fact, since the positioning of the transducer as to the robot joint is casual, (because it depends on how the transducer has been mounted), it is necessary to correct the
HS-0-C4E-USO_35.fm
00/0609
3-1
Turn-Set and Calibration - basic concepts 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 on the Teach Pendant, SETUP Page, Calib. subpage. CALIBRATION ASCII FILE: the calibration file UD:\SYS\<$SYS_ID>_CAL<num_arm>.PDL (where $SYS_ID indicates the system identification, for example 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: the memory used to save the characteristic information of the robot associated to the Control Unit, the calibration constants and the length of the levers. It is the partition, on the SMP+ board, for the motion process.
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 is displayed.
According to whether the turn-set is executed with the robot in system calibration position or in user calibration position, we shall have: Turn-set on system calibration position Turn-set on user calibration position Turn-set for robot axes with multi-turn stroke
3.3.1
3.3.2
HS-0-C4E-USO_35.fm
3-2
00/0609
Turn-Set and Calibration - basic concepts For further information see User calibration ($CAL_USER).
3.3.3
Fig. 3.1
In the condition indicated above, when moving the axis to align the notches, a positioning error message is shown on the terminal.
Fig. 3.2
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 2. Make the complete axis calibration (see the Chapter - Turn-set and Calibration Operating Procedures)
HS-0-C4E-USO_35.fm
00/0609
3-3
Fig. 3.3
3.4 Calibration
The purpose of the calibration procedure is to establish the position of a robot axis referring it to an ideal robot. This makes it possible to initialise the values of the robot axes and to make the position variables used in the robot programs universal. During the calibration procedure, when the desired axis is in the calibration position, two values are stored: the deviation, inside a transducer turn, between the value of the actual position and that of the axis nominal position, the number of transducer turns.
The notches on the individual axes make it possible to execute future turn-set operations on a robot that has already been installed. Remember that executing the calibration operation (on the Teach Pendant, SETUP Page, Calib subpage, Calib (CAC) command) having simply positioned the robot axes on the locating notches, without using the suitable equipment, is an operation that does not guarantee the necessary robot positioning precision. The recovery of the calibration (executed by COMAU), if necessary, is to be executed when first putting the robot into operation. Subsequently, the calibration does not need to be executed again, unless there is a mechanical failure that involves the replacement of a component of the kinematic chain, or in the case of impacts that damage the robot structure. The basic concepts are described below for: System calibration User calibration
3.4.1
System calibration
To initialise the robot axis values in the system calibration position (calibration
HS-0-C4E-USO_35.fm
3-4
00/0609
Turn-Set and Calibration - basic concepts position predefined by COMAU Robotics - $CAL_SYS). To determine the correct calibration position, special equipment has to be used (dial gauges, supports, etc.) to determine with the necessary precision the position of each individual axis.
3.4.2
User calibration
User calibration defines a new calibration position that is different to that of the system. This type of calibration (commonly called out-of-range calibration) can be used when the system position is difficult to reach once the robot is inserted in the final application, and therefore it becomes necessary to define a different calibration position, called user calibration position ($CAL_USER). It is the responsibility of the user to provide the appropriate instruments and to check the correct positioning of the robot in any user re-calibrations, especially regarding the arrangement of the locating notches.
HS-0-C4E-USO_35.fm
00/0609
3-5
Fig. 3.4
1. 2.
Saving the calibration constants 3. 4. 5. 6. NVRAM UD:\SYS in file.C4G UD:\SYS in the calibration file ($BOARD_DATA[1].SYS_ID_CAL.PDL) Hard copy
HS-0-C4E-USO_35.fm
3-6
00/0609
4.
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.
A detailed description follows about : Reference frames System reference frames Manual motion Manual motion in WRIST_JNT mode Manual motion of a single arm system Manual motion of auxiliary axes, slides and rotating columns Manual motion with Controller multi-arm configuration Motion instruction in programming status
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). Remember that, changing $TOOL or $BASE or $UFRAME, the same position (POS) corresponds to a different actual position of the robot!
Fig. 4.1
1. 2. 3. 4. 5. 6.
Flange frame Tool frame Recorded position User frame Base frame World frame
Lets 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
Robot motion in Programming mode located, the $TOOL movement indicates the pen and the $UFRAME movement indicates the position of the table.
The speed of the manual motion can be selected with the +% and -% keys that act on a percentage value shown on the Teach Pendant status bar. This percentage value is called general override and does not only act on the manual movement speed, but on all types of movements, both in programming and in automatic mode. The TCP movement speed, during manual movements, is always lower than the safety speed of 250 mm/s also in joints mode. In the Cartesian modes (Tool, Uframe, Base) the maximum speed that can be reached is limited by the system variable $JOG_SPD_OVR that usually has values equal to 50% (i.e. half the safety speed). This value can be changed to adapt the standard manual movement speed to the individual programming requirements.
HS-0-C4E-USO_33.fm
00/0607
4-3
Before moving in Cartesian mode (Tool, Uframe, Base) the correct definition should be checked of the reference systems, especially the declaration of the tool frame through the $TOOL variable. A wrong description of the tool causes errors in learning the points and does not keep the TCP position unchanged during orientation movements. A good method to check the correctness of $TOOL is to check that the TCP remains fixed while changing the orientation of the tool. The procedure for arm manual movement of a robotic cell varies slightly according to the cell controller configuration. The following paragraphs describe the main details for each typical situation.
4-4
00/0607
Robot motion in Programming mode An example of an integrated auxiliary axes group is a roto-translating column or a gantry. Jogging an auxiliary axis is usually only possible in joint mode (JOINT) using the corresponding AUX A/AUX B + e - keys. The manual movement of an auxiliary axis is usually only possible in joint mode (JOINT) using the corresponding AUX A/AUX B + e - keys. To associate the auxiliary axes to AUX A and AUX B keys, it is needed to open the Motion Page - subpage COOP - section AUX Jog, on the Teach Pendant. For further information, 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
Robot motion in Programming mode 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).
linear movement of pre-defined arm on a point of Cartesian co-ordinates x=100, y=200 and z=300 and the frame of the tool with the same orientation as the user frame joints type movement of the predefined arm on a point of Cartesian co-ordinates x=0, y=0 and z=0 and axis z of the tool frame facing the opposite direction to the z of the user reference joints type movement of the first six axes of the default arm on the zero positions movement of axis 6 only of the default arm on the position of 90 degrees
HS-0-C4E-USO_33.fm
4-6
00/0607
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 linear movement of arm 1 that takes the TCP to a certain Cartesian position in relation to the user frame joints movement of arm 2 that brings the TCP to a certain Cartesian position in relation to the user frame 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 movement of second arm that moves only axis 1 to the position of 90 degrees in negative direction movement of pre-defined arm that joins the starting point to POS (100,100,0,0,0,0,) with a circumference that passes through POS (0,200,0,0,0,0,)
Before executing a movement it is best to check the correct definition of the reference systems, especially the declarations of the tool frame and the user reference ($TOOL, $BASE and $UFRAME). These declarations can only be ignored in the case of joint movements on joint points, for example MOVE JOINT TO $CAL_SYS now MOVE TO {0,90,-100,20,20,200}, or MOVE TO JOINTPOS. In all other cases the consequences could be dangerous with risks for the personnel and for the equipment. In particular if the description of the tool is not correct (wrong $TOOL) the TCP will not reach the required point, nor will it execute a correct linear or circular path. Regarding the description of the user frame ($UFRAME) it is important to check that, at the moment the movement is executed, this is identical to that which was active when the point was stored. Otherwise the positioning will be different to that stored. However, the same paths can be executed again with different $UFRAME values, since this performance is necessary for some applications that require a specific shifting of the whole program inside the work space (palletizing applications). It is also necessary to always check the correct definition of the load used, regarding the weight, centre of gravity and inertia. This data can be automatically calculated by the Controller, given a Tool (also a Tool plus a part), applying the Payload identification (optional function) included in the TO_SET application (that can be activated from the TP4i/WiTP Teach Pendant, Setup page, ToolFrame sub-page). The verification checks that the recorded load data corresponds with the $TOOL_MASS, $TOOL_CNTR and tool $TOOL_INERTIA[1..6] variables currently in use.
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; Palletizing functionality (optional feature).
Current chapter contains many references to predefined variables and instructions of PDL2 language. For further information, refer to PDL2 Programming Language Manual.
00/1109
5-1
Motion Control Representation chapter of PDL2 Programming Language manual for further information.
5.2.1
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.
Fig. 5.1
1. 2. 3. 4. 5. 6.
Flange frame Tool frame Recorded position User frame Base frame 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
pr-0-0-gpr_04.fm
5-2
00/1109
Motion Control transformation describes the pen, and the $UFRAME transformation defines the position of the table with respect to the room. These system frames will simplify some operations. For example: if the robot were picked up and placed at the opposite side of the table, it would be enough to redefine $BASE and restart writing without modifying any point; if the pen were replaced with a bigger one, it would be enough to redefine $TOOL and restart writing without modifying any point; if the table were moved inside the room, it would be enough to redefine $UFRAME.
Note that in some applications $BASE and $UFRAME can be left equal to zero: this means that the world frame and the workpiece frame are located at the base of the robot and all taught POSITIONs are referred to the base of the robot. On the contrary, the $TOOL transformation must always be correctly defined to achieve the desired path of the TCP (Tool Center Point) along the trajectory.
5.2.2
5.2.3
pr-0-0-gpr_04.fm
00/1109
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.
5.2.3.1
c.
d.
e.
f.
pr-0-0-gpr_04.fm
5-4
00/1109
Motion Control
Fig. 5.2
- Zero position
Fig. 5.3
- Known position
5.2.3.2
pr-0-0-gpr_04.fm
00/1109
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.
5.2.3.2.1
FIRST METHOD
Calculate three rotations that will align the flange z axis with the tool z axis. The rotations, which correspond to Euler angles, are designated (e1) rotation around z, (e2) rotation around y, and (e3) rotation around the new z. Note that: it is not possible to rotate axis x; rotation around y must be between 0 and 180 degrees; rotation around z must be between -180 and 180 degrees.
Assign the rotation values to $TOOL using the PDL2 assignment statement: $TOOL := POS (x, y, z, e1, e2, e3, ) Some example calculations follow. In the following diagrams, u indicates the tool z axis. 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)
pr-0-0-gpr_04.fm
5-6
00/1109
Motion Control
b.
c.
The tool z axis (u) now coincides with the flange z axis. The rotation angles (e1, e2, e3) are (90, 90,180).
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/1109
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).
5.2.3.2.2
SECOND METHOD
Use the three rotation controls on the teach pendant to move: the Tool z axis parallel and in accordance with the base z axis; the axis which is to become Tool axis x parallel and in accordance with the base x axis of the user frame.
After these two moves, the final Tool axis y is consequently parallel with the base y axis. The angle parameters alpha, beta, epsilon can be read on the Teach Pendant Motion Page - Basic subpage - ARM_POS section (System Command: DAP). Tool parameters will be given by: rotation 1 = 180 degrees - epsilon (-360 degrees); rotation 2 = beta; rotation 3 = 180 degrees - alfa (-360 degrees). (It is needed to add (-360 degrees) if the value of rotation exceeds 180 degrees).
The angle values to be assigned are obtained by rounding off those calculated (typically rounding off is to 0, 90, or 180 degrees). The TCP is calculated at the tool closing point. Any safety flange logically belongs to the tool and therefore increases the z offset.
5.2.3.3
5-8
00/1109
Motion Control
BEGIN $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(corner, x, xy) END setframe
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.
5.3.1
Joint Interpolation
During joint interpolation ($MOVE_TYPE := JOINT or MOVE JOINT TO), the joint angles of the arm are linearly interpolated from their initial to final values. All axes start moving at the same time and reach their destination at the same time. The path followed by the tool centre point (TCP) is not predictable, although it is repeatable. Joint interpolated movements between two positions are always possible.
5.3.2
Linear Interpolation
During linear interpolation ($MOVE_TYPE := LINEAR or MOVE LINEAR TO), the TCP moves in a straight line from the initial position to the final position. The orientation of the tool also changes from the initial position to the final position according to the mode defined by the $ORNT_TYPE variable. This specific program variable can have the values of the following predefined constants: RS_WORLD, RS_TRAJ, EUL_WORLD, WRIST_JNT. For further information refer to the par. 5.3.4 Orientation Evolution during Linear or Circular movements a pag. 5-10 section.
5.3.3
Circular Interpolation
During circular interpolation ($MOVE_TYPE := CIRCULAR or MOVE CIRCULAR TO), the TCP follows a circular arc from the initial position to the destination. An additional
pr-0-0-gpr_04.fm
00/1109
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.
5.3.4
5.3.5
5-10
00/1109
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.
5.3.6
pr-0-0-gpr_04.fm
00/1109
5-11
Motion Control
5.4.1
On Trajectory Function
This function, which is always enabled, is used to verify, at any time, whether the robot is on the trajectory programmed of the PDL2 program that is running. $CRNT_DATA[arm].OT_POS indicates the robots position along the programmed trajectory. The $CRNT_DDTP[arm].OT_JNT variable includes information concerning any auxiliary axes that may be present. $CRNT_DATA[arm].OT_COARSE is TRUE when the robot is on the programmed trajectory and FALSE if that is not the case. For safety reasons, the deviation between the current position of the robot and the $CRNT_DATA[arm].OT_POS position is calculated by taking into account the threshold in millimeters in relation to the flange ($ARM_DATA[arm].OT_TOL_DIST) and the threshold in degrees in relation to the orientation of the flange ($ARM_DATA[arm].OT_TOL_ORNT). In case of a very long tool (for instance, 1 meter in the tools Z direction) and if the robot has stopped in correspondence with $CRNT_DATA[arm].OT_POS, only a slight rotation of the tool is necessary in order to provoke a significant flange movement, so that the $CRNT_DATA[arm].OT_COARSE variable is set to FALSE. In case of rotating auxiliary axes, threshold $ARM_DATA[arm].OT_TOL is used. In case of traversing auxiliary axes, threshold $ARM_DATA[arm].OT_TOL_ORNT is used. If the arm includes integrated auxiliary axes, in case of jog movements in joint mode, all the axes that have been enabled, including the auxiliary axes, contribute to the modification of the Cartesian position and result in the arm moving away from the trajectory ($CRNT_DATA[arm].OT_COARSE = FALSE). In case of jog movements in Cartesian mode (Base, Tool, etc.) the movement of the auxiliary axis is compensated by the robots axes in order to maintain the Cartesian point; however, as the entire configuration of the arm axes is modified, the arm also moves away from the trajectory in this case ($CRNT_DATA[arm].OT_COARSE = FALSE), extending the concept of position on the trajectory to the extended position. If the arm includes auxiliary axes that are not integrated, in case of jog movements in joint mode, the axis does not modify the Cartesian position, but the overall configuration of the arm is modified and the arm moves away from the trajectory ($CRNT_DATA[arm].OT_COARSE = FALSE). In case of jog movements in Cartesian mode, the auxiliary axis cannot be moved and the arm behaves in the same way as the 6 axes robot. It is always possible to return to the trajectory ($CRNT_DATA[arm].OT_COARSE = TRUE) by executing a movement on the $CRNT_DATA[arm].OT_JNT variables (or $CRNT_DATA[arm].OT_POS variables, for robots with no auxiliary axes). Example: MOVE TO $CRNT_DATA[arm].OT_JNT oR
pr-0-0-gpr_04.fm
5-12
00/1109
Motion Control
MOVE TO $CRNT_DATA[arm].OT_POS WITH $TOOL=$CRNT_DATA[arm].OT_TOOL, WITH $UFRAME = $CRNT_DATA[arm].OT_UFRAME ENDMOVE The presence of a Remote Tool does not affect functionality. When the program is deactivated, the $CRNT_DATA[arm].OT_COARSE variable is reset. See following Tab. 5.1 - On Pos and On Trajectory table. This function is not available on the following machine types: robots with active kinematic compensation (file .ROB in RD), robots with conveyor tracking, enabled cooperative movement. When the CNTRL C key is pressed, to interrupt the execution of a NON movement instruction of a program 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 instruction that 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 the user in charge of operating and controlling 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.
5.4.2
This information is primarily used to communicate to external devices, such as a line PLC, that the robot is in the aforesaid positions. To make the On Pos function operational, each time the control unit is restarted, the application program must run the following sequence of operations in the order set out below: Initialize the predefined fields with the OP_ prefix, in the $ON_POS_TBL table. Run the built-in procedure ON_JNT_SET or ON_POS_SET to define which port and which bit are to be assigned upon reaching the main positions. Execute ON_POS(ON) to enable the function, which will remain enabled until the subsequent ON_POS(OFF) is executed on the same item of the $ON_POS_TBL or at the subsequent system restart.
For further details related to the $ON_POS_TBL and $OP_xxx system variables, the ON_JNT_SET, ON_POS_SET and ON_POS built-in routines, the CONDITION events, please refer to the PDL2 Programming Language Manual. This service is disabled in the case of: robot with active kinematic offset (file .ROB) in
pr-0-0-gpr_04.fm
00/1109
5-13
5.4.2.1
Let us suppose we wish to perform an arm movement, in jog mode, exceeding the predefined threshold:
Initial condition Movement of robot axis in joint mode Movement of integrated auxiliary axis in joint mode Movement of non-integrated auxiliary axis in joint mode Movement in Cartesian mode with reference to X, Y, Z and/or E1, E2, E3 Movement in Cartesian mode of integrated auxiliary axis Deactivation of movement program
FALSE
FALSE
TRUE
FALSE
FALSE
FALSE
FALSE
FALSE
TRUE
FALSE
TRUE
TRUE
In the C4G system, not only speed can be controlled by the user, but also acceleration
pr-0-0-gpr_04.fm
5-14
00/1109
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.
5.5.1
Speed Overrides
Speed override values govern (or override) the basic speed values (see description par. 5.5.2 Cartesian Speed Control a pag. 5-16 section). The speed overrides (percentage speed values) that apply to all motions are as follows: $GEN_OVR allows the operator to change simultaneously the acceleration, speed and deceleration values of Motion programs. Since this influences the acceleration, speed and deceleration values in a coordinated manner, the trajectories are usually maintained (unless there are servo tracking errors) when this variable is changed. $GEN_OVR is an INTEGER type variable It is common to the whole system and can be changed from the Teach Pendant. The PDL2 programs can read it only. $ARM_OVR permits acceleration, speed, and deceleration of a specific arm to be modified from within a program. Since it affects acceleration, speed, and deceleration in a coordinated way, trajectory shapes are generally maintained when this control is modified (except for differences in servo following errors at different values of override). $ARM_OVR is an INTEGER field of the system-wide array of structures, $ARM_DATA[ ]. There is one $ARM_DATA structure per arm, and the ARM_OVR field has a default value of 100%. Note that if constant speed during transitions between continuous motions is more important than constant trajectory, then $ARM_SPD_OVR or $PROG_SPD_OVR should be used (acceleration and deceleration will be left at current values as these speed overrides are reduced). See section par. 5.10.1 Trajectory Shape During Continuous Motion a pag. 5-30 in current chapter. $ARM_SPD_OVR permits the speed of a specific arm to be modified by a program. Acceleration and deceleration are not affected. This implies that the shape of continuous motion trajectories may change as this control is changed. See section par. 5.10.1 Trajectory Shape During Continuous Motion a pag. 5-30 in current chapter. $ARM_SPD_OVR is an INTEGER field of the system-wide array of structures, $ARM_DATA[]. There is one $ARM_DATA structure per arm, and the ARM_SPD_OVR field has a default value of 100%. $PROG_SPD_OVR permits speed of all motions issued from a specific program to be modified by the program. Acceleration and deceleration are not affected. This implies that the shape of continuous motion trajectories may change as this control is changed. It is a program-specific variable with a default value of 100%. The total speed override for any motion for a specific arm is determined as follows: total speed override[arm] = $GEN_OVR * $ARM_DATA[arm].ARM_OVR * $ARM_DATA[arm].ARM_SPD_OVR * $PROG_SPD_OVR
pr-0-0-gpr_04.fm
00/1109
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.
5.5.2
The actual speed of motion of a specific arm is determined by computing the maximum of the motion times for each possible rotation at $ROT_SPD_LIM and the TCP translation time at $LIN_SPD_LIM. For example, using RS_WORLD orientation control, three evaluations are performed: the time for the approach vector to go from its initial orientation to final orientation at $ROT_SPD_LIM; the time for the spin about the approach vector to go from its initial orientation to its final orientation; the time for the TCP to translate from its initial location to its final location at $LIN_SPD_LIM.
The component of motion that takes the longest to get from its initial to final location will move at the programmed speed limit, reduced by the total override. All of the other components will move at lower than programmed limits, so that all components start and stop at the same time. If one of the rotations requires the most time, $ROT_SPD_LIM is used. If the translation requires the most time, $LIN_SPD_LIM is used. The component moving at the programmed speed limit is called the maximum stressed component, and it moves at the speed of maximum stress or SMS. Using this terminology, the Cartesian speed of a specific arm is determined as follows: cartesian speed[arm] = SMS[arm] * total speed override[arm] where SMS[arm] is $ARM_DATA[arm].ROT_SPD_LIM if rotation takes the longest, or $ARM_DATA[arm].LIN_SPD_LIM if translation takes the longest. (See previous
pr-0-0-gpr_04.fm
5-16
00/1109
Motion Control par. 5.5.1 Speed Overrides a pag. 5-15 for a definition of total speed override).
5.5.2.1
pr-0-0-gpr_04.fm
00/1109
5-17
Motion Control 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 provided a functionality which, in special conditions, allows run-time modifying the speed override (see the following section Run-Time modifying the Linear Speed Override)
5.5.2.2
Such conditions BOTH have to be satisfied, otherwise no run-time modifications are allowed. Therefore, it is not possible to apply such a functionality to Arms which CANNOT move with a cartesian motion. The predefined variable (available since system software version 3.1) which allows to run-time modify the speed override, is $LIN_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 speed equals to the $LIN_SPD. The maximum value to set $LIN_SPD_RT_OVR to, is
pr-0-0-gpr_04.fm
5-18
00/1109
Motion Control related to $LIN_SPD value, and is calculated as follows: MAX = ($LIN_SPD_LIM / $LIN_SPD) * 100 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. - Synchronous Motion (optional feature) in current Manual.
5.5.3
5.5.4
pr-0-0-gpr_04.fm
00/1109
5-19
Motion Control
Fig. 5.4
1. 2.
speed 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/1109
Motion Control $JERK[3] is reserved for future use; $JERK[4] determines percentage of deceleration time in constant jerk (T3 + T4).
For example, if $JERK[1] is set to 40, then 20% of the time specified in $MTR_ACC_TIME will be T1, 60% in constant acceleration, and 20% will be T2. $JERK[] is read-only from a PDL2 program.
5.6.1
Acceleration/Deceleration Overrides
As with speed, acceleration and deceleration also have overrides. As already explained in par. 5.5.1 Speed Overrides a pag. 5-15, $GEN_OVR and $ARM_OVR not only affect speed, but also acceleration and deceleration. In addition, arm specific and program specific variables exist to further override acceleration and deceleration. Such variables are arm or program specific: $PROG_ACC_OVR permits acceleration of all motions issued from a specific program to be modified by the program. It is a program specific INTEGER with a default value of 100%; $PROG_DEC_OVR permits deceleration of all motions issued from a specific program to be modified by the program. It is a program specific INTEGER with a default value of 100%; $ARM_ACC_OVR permits acceleration of a specific arm to be modified by a program. It is an INTEGER field of the array, $ARM_DATA, with one field for each arm. The default value is 100%; $ARM_DEC_OVR permits deceleration of a specific arm to be modified by a program. It is an INTEGER field of the array, $ARM_DATA, with one field for each arm. The default value is 100%.
The equations for total override for acceleration and deceleration are: total acceleration override[arm] = $GEN_OVR*$ARM_DATA[arm].ARM_OVR*$ARM_DATA[arm].ARM_ACC_OVR* $PROG_ACC_OVR total deceleration override[arm] = $GEN_OVR*$ARM_DATA[arm].ARM_OVR*$ARM_DATA[arm].ARM_DEC_OVR* $PROG_DEC_OVR $PROG_ACC_OVR and $PROG_DEC_OVR are program specific INTEGER values with default values of 100%. $ARM_ACC_OVR and $ARM_DEC_OVR are INTEGER fields with one field per arm in multi-arm systems. Changes in these four overrides take effect only on succeeding motions, not during any current motion. However, as with speed, changes in $GEN_OVR and $ARM_OVR take affect in the current motion. When HOLD, CANCEL, LOCK, or DEACTIVATE are used, maximum deceleration is used regardless of the above override settings. In addition, a predefined variable, $HLD_DEC_PER, can be used to increase the deceleration rate beyond normal maximum settings. At high speed, normal maximum deceleration for some arms may require several hundred millimeters to stop. The range of $HLD_DEC_PER is from 100 to 400 percent, permitting the normal maximum to be multiplied by a factor up to 4. $HLD_DEC_PER is a read-only INTEGER array field of the system-wide array of structures, $ARM_DATA[]. Thus, there is one element per axis
pr-0-0-gpr_04.fm
00/1109
5-21
5.6.2
Joint Interpolation
After the governing joint is picked (based on speed), the speed of each of the remaining joints is scaled by the ratio of original time for the joint to the time of motion of the governing joint. Each joint must accelerate to its scaled speed, not to its requested speed. The acceleration time for each joint is evaluated to determine which joint will govern acceleration. (This is not necessarily the same as the joint governing speed). This time is a combination of $MTR_ACC_TIME[axis] and $JNT_OVR[axis]. A similar combination, using $MTR_DEC_TIME and $JNT_OVR is used to find the governing joint for deceleration. After the limiting joints for acceleration and deceleration are determined (not necessarily the same joint), all joints are scaled to accelerate and decelerate in the same amount of time. The previously described acceleration and deceleration overrides are also applied to each joint.
5.6.3
Cartesian Interpolation
The same type of analysis done for joint acceleration and deceleration is done for Cartesian acceleration and deceleration, except that instead of joints being compared, translation and rotation are compared. The acceleration and deceleration in the Cartesian motion (either linear or circular), with any orientation evolution modality, is controlled by means of the following predefined variables: $LIN_ACC_LIM specifies the maximum acceleration for linear translation. There is a variable for each axis of each arm, whose values depend on the robot model and cannot be modified by the User. $ROT_ACC_LIM specifies the maximum acceleration for rotation. There is a variable for each axis of each arm, whose values depend on the robot model and cannot be modified by the User. $LIN_DEC_LIM specifies the maximum deceleration for linear translation. There is a variable for each axis of each arm, whose values depend on the robot model and cannot be modified by the User. $ROT_DEC_LIM specifies the maximum deceleration for rotation. There is a variable for each axis of each arm, whose values depend on the robot model and cannot be modified by the User.
The predefined variables $LIN_ACC_LIM, $ROT_ACC_LIM, $LIN_DEC_LIM, and $ROT_DEC_LIM are used to compute the component that takes the longest time. These variables are REAL fields of the system-wide array, $ARM_DATA[ ], with one field per arm. The user is allowed to modify them by system level commands only. The other components are scaled so that both rotations and translations use the same time to accelerate and the same time to decelerate. The overrides are also applied.
pr-0-0-gpr_04.fm
5-22
00/1109
Motion Control
5.6.4
Manual Motions
When programmed or immediate motions are issued in PROGR state, the described above acceleration and deceleration overrides are used. However, when jog motions are issued from the teach pendant, maximum deceleration is used to stop the arms. An additional override, $MAN_SCALE, is used during manual motions to limit the maximum speed to safe values. This manual override also affects acceleration and deceleration to maintain trajectory shape for all motions issued in PROG state, except for jog motions. For jog motions, $MAN_SCALE only affects speed. $MAN_SCALE is set by the Builder and cannot be changed by the Customer.
5.7.1
The predefined variables $TOL_COARSE and $TOL_FINE indicate the tolerance values. The default values for $TOL_COARSE and $TOL_FINE are arm dependent. The predefined variable $TOL_ABT (anti-rebound time) indicates the time during which the arm is to be within the specified tolerance before the motion is declared completed/finished. It has a range of 0 to 2000 milliseconds and a default value of 0 milliseconds. A value of 0 means the motion is terminated as soon as the arm is within the specified tolerance. The predefined variable $TOL_TOUT (time out) determines the length of time the system will continue checking to see if the arm is within the specified tolerance. It has a range of 0 to 20000 milliseconds and a default value depending on the kind of robot. The value is rounded up to the nearest interpolator frequency ($IPERIOD) tick, so a value less than this frequency is interpolated as one tick. If the arm does not come within the specified tolerance within the specified timeout, an error with hold severity is issued.
pr-0-0-gpr_04.fm
00/1109
5-23
Motion Control
5.7.2
5.7.3
NOSETTLE Termination
The NOSETTLE value indicates that the motion is to be declared terminated as soon as the deceleration profile has been completed. There is no settling time for the arm to position itself precisely within a specified tolerance. No controls are executed; NOSETTLE is the default setting.
5.8.1
Recovery Strategy
Two forms of recovery are defined, short range and long range. Short range recovery means recovery from a position that is very close to the original trajectory, as defined by a predefined variable array of joint tolerances, $TOL_JNT[]. The short range reset takes place by means of a move in joints interpolation that is entirely transparent to the user. That is, when START button is pressed to resume a motion, a short range recovery motion will be inserted immediately before the original motion is resumed. In many cases, this reset move is not even perceived by the operator. If the distance between the current position and the nominal position is major to a certain limit (short range) the resumption of motion takes place according to the modes defined by the predefined variable $RCVR_TYPE value set. The possible values of this predefined variable are shown in the following table:
pr-0-0-gpr_04.fm
5-24
00/1109
Motion Control
0 1 2 3 4 5
Bring the arm to the interrupted trajectory position, by the joint interpolation. Bring the arm to the movement start position that was interrupted by the joint interpolation. Bring the arm to the interrupted movement destination position using the joint interpolation. Do not reset, generate an error message. If the interrupted movement was Cartesian, restore the interrupted trajectory by a straight-line movement. Otherwise use joint interpolation . 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 . 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 Wherever it is possible to interrupt a program motion executed in Automatic mode, for example setting it in HOLD state, then switch to Programming mode and jog the robot, then go back to an Automatic mode. When START button is pressed, short or long range recovery is determined and such a specified recovery strategy is performed. When the system is in Programming state and a motion is interrupted by the DRIVE OFF, recovery will be based upon conditions that exist when the drives are turned back again and either START or BACK button is pressed. The recovery type will be determined by whether or not there is a pending motion and from where the motion was issued. The exact recovery type is determined as follows.
5.8.1.1
5.8.1.2
Recovery Range
In Programming mode the same strategy is used as for the Automatic status. If the distance between the stop position and the nominal position is limited, a joints interpolation move is used to bring the arm to the point where the motion was interrupted (short range); otherwise the $RCVR_TYPE variable is used (long range recovery) to execute the recovery move.
5.8.1.3
Execution Environment
When executing from within the edit environment, messages about the recovery are displayed for the user. After bringing the arm to the position where the motion was interrupted, press the START key, then press it a second time to continue the motion along the original path. If the motion command was issued from within an execution environment which is NOT a modification environment, then no messages are displayed and no user interaction is required to perform the recovery. If the user jogs the robot immediately after the interruption, then recovery will not be
pr-0-0-gpr_04.fm
00/1109
5-25
Motion Control performed. If the controller is switched into Automatic state during the interruption, then all of the recovery rules are followed.
Fig. 5.5
Simplest situation. 1. 2. 3. 4. 5. 6. 7. Programmed Fly position, between two movements First movement - fly termination Second movement - fly beginning Second movement - fly termination Stop position Motion direction First movement fly beginning
pr-0-0-gpr_04.fm
5-26
00/1109
Motion Control
Fig. 5.6
$RCVR_DIST programmed value is greater than the maximum recoverable one 1. 2. Maximum recoverable distance Stop position
Fig. 5.7
If a fly movement is interrupted, it is possible to go back twice 1. 2. Stop position Maximum recoverable distance
Fig. 5.8
The return movement is interrupted if a position is encountered 1. 2. Maximum recoverable distance (because there is a non fly position) Stop position
pr-0-0-gpr_04.fm
00/1109
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).
Fig. 5.9
1. 2. 3. 4. 5.
Stop position of the return movement First value of $RCVR_DIST=20 mm Return movement interruption: $RCVR_DIST is read again $RCVR_DIST=30 mm after the modification Stop position
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).
5.9.1
pr-0-0-gpr_04.fm
5-28
00/1109
Motion Control
1. 2. 3. 4. 5. 6. 7.
motion direction trajectory calculated return movement $RCVR_DIST decelerate distance motion stop command 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.
1. 2. pr-0-0-gpr_04.fm
00/1109
5-29
Motion Control
5.10.1
5.10.2
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 (the only one associated to FLY_NORM), can be used to reduce the time in fly and to bring the trajectory closer to the intermediate taught position. FLY_NORM is the default value. Fly will begin at the start of normal deceleration for the motion plus a time equal to 100% minus the percentage specified in $FLY_PER. 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.
pr-0-0-gpr_04.fm
5-30
00/1109
Motion Control This type of continuous motion control generally causes the least stress on the arm and part or tool during direction changes. Therefore, FLY_NORM is the default value for $FLY_TYPE. If the angle between motion segments is very acute, then lower stress can be achieved by using FLY_CART. (par. 5.10.2.2 FLY_CART (Controller Aided Resolved Trajectory) a pag. 5-31).
5.10.2.2
5.10.2.2.1
pr-0-0-gpr_04.fm
00/1109
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.
5.10.2.2.2
5.10.2.2.3
5-32
00/1109
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/1109
5-33
Motion Control
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.
5.10.2.2.4
5-34
00/1109
Motion Control
4 5
9 e 10
11
12
13
pr-0-0-gpr_04.fm
00/1109
5-35
Motion Control
16
5.10.2.2.5
pr-0-0-gpr_04.fm
5-36
00/1109
Motion Control
1. 2. 3. 4. 5.
Flange Frame User Frame TCP Frame Fixed Tool Base Frame
In cartesian movement ($BASE, $TOOL, $UFRAME), WITH ENABLED REMOTE TOOL, while programming robot movement it is necessary to consider the remote tool virtual motion, INSTEAD OF the actual robot motion. Example: WITH ENABLED REMOTE TOOL, to be able to execute a Z+ motion in $BASE Frame of reference (which means Z upward motion), robot must move along Z downward, because, in such a way, it is a virtual upward movement of the remote tool (which is actually fixed!): this means Z+ in $BASE as requested by the user.
pr-0-0-gpr_04.fm
00/1109
5-37
Motion Control
Slide Base Reference Robot Base User Reference World Reference Side View Top View Column rotation Rotating Column Column Base Reference Robot Base User Reference World reference Rotating Column Column rotation Slide
5.12.1
Integrated Axis
A robot can be mounted on an auxiliary axis in order to extend the work envelope. The axis may be a slide (translating axis) or a Rotating Column. In such a situation, it is possible to integrate the auxiliary axis in the movement of the robot. This means that the cartesian position of the robot is calculated taking into account the position of the auxiliary axis and therefore in relation to a reference integral
pr-0-0-gpr_04.fm
5-38
00/1109
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
Jogging
Moving the slide/integrated column manually (jog), the robot acts differently according to the handing mode set: in joints mode, pressing the key corresponding to the slide/column, the robot axes do not move; only the auxiliary axis moves. On the other hand, in Cartesian mode of manual motion (BASE, TOOL, UFRAME) key 7 moves the slide/column, keeping the TCP stationary, wherever the robot axes compensate the movement of the auxiliary axis.
5.12.1.2
Reference Systems
With the slide/integrated column, the base reference of the system of axes (defined using the $BASE variable) is located at the base of the slide/column. The other reference systems remain unchanged as described in Frames of Reference section and shown in following Fig. 5.14 - Base Reference System integrated axes.
1. 2. 3. 4.
Rotating Arm Radius (R) Right-hand rotation of the Column Column Height (H) Left-hand rotation of the Column
pr-0-0-gpr_04.fm
00/1109
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).
If one or more of the listed above conditions are not satisfied, an error occurs. The following topics are now described: Enabling Disabling Example of a Palletizing Program.
pr-0-0-gpr_04.fm
5-40
00/1109
Motion Control
5.13.1
Enabling
a. Move the robot (the functionality must be disabled) to the required position to enable it, issue the enabling command in one of the following ways: from within a PDL2 Program - call ARM_PALLETIZING (ON, <arm_num>) built-in routine to activate the functionality for Arm arm_num
b.
For further information, please refer to PDL2 Programming Language manual BUILT-IN Routines List chapter.
from Teach Pendant - select the required Arm, move the focus to the Palletizer Status in the Motion Page - Status subpage (see Fig. 5.15 - yellow highlighted field), so that Enable (F1) softkey is displayed in the Bottom Menu (see Fig. 5.15 - red highlighted key). Press the key.
c.
Verify that in the sixth field of the TP status bar, Pallet is now specified (see Fig. 5.16 - purple highlighted field).
NOTES Since the activation moment, it will NOT be possible to jog the robot axes which are bind to keep the second Euler angle geometry to 180 (which means to have the flange position parallel to the floor), and axis 4. In the trajectory generation, the system will automatically take care of computing optimized trajectory for palletizing operations. It is possible to use the robot as a Palletizer, both in programming mode and in automatic cycle.
5.13.2
Disabling
To disable the Palletizing Functionality and recover the usual robot functioning again, it
pr-0-0-gpr_04.fm
00/1109
5-41
Motion Control is needed to issue the disabling command in one of the following ways: from within a PDL2 Program - call ARM_PALLETIZING (OFF, <arm_num>) built-in routine to deactivate the functionality for Arm arm_num
For further information, please refer to PDL2 Programming Language manual BUILT-IN Routines List chapter.
from Teach Pendant - move the focus to the Palletizer Status in the Motion Page - Status subpage (see Fig. 5.16 - yellow highlighted field), so that Disable (F2) softkey is displayed in the Bottom Menu (see Fig. 5.16 - red highlighted key). Press the key.
5.13.3
pr-0-0-gpr_04.fm
5-42
00/1109
6.
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
MASTER Arm - it is always the arm that executes the MOVE; SERVER Arm - it is always the arm that executes the SYNCMOVE.
00/0607
6-1
Synchronous Motion (optional feature) In the following synchronised MOVE: MOVE ARM[1] LINEAR TO PNT0001P SYNCMOVE ARM[2] JOINT TO PNT001J the MASTER Arm is ARM[1] and the SERVER Arm is ARM[2]; whereas in the next synchronised MOVE : MOVE ARM[2] LINEAR TO PNT0001J SYNCMOVE ARM[1] JOINT TO PNT001P the MASTER Arm is ARM[2] and the SERVER Arm is ARM[1]. All this does not depend on the declared (or implied) Arm, PROG_ARM, at the head of the program. The system variable $SYNC_ARM specifies the default synchronized arm for the SYNCMOVE clause, similar to $PROG_ARM that defines the default arm for the MOVE statement. This variable is specific for the program and initialized by the user. For example, in writing MOVE TO p1, since the arm has not been specified, the value of $PROG_ARM is assumed. Similarly, in writing SYNCMOVE TO p2, since the arm for the SYNCMOVE has not been specified, the value of $SYNC_ARM is assumed. An example follows of a program that controls two Arms that move in synchronised mode: PROGRAM example BEGIN -- the main arm is arm 1, the synchronised arm -- is arm 2 MOVE ARM[1] TO p1 SYNCMOVE ARM[2] TO p2 MOVE TO p1 SYNCMOVE ARM[2] to p2 -- $PROG_ARM moves on p1 MOVE ARM[1] TO p1 SYNCMOVE TO p2 -- ERROR: $SYNC_ARM is not initialised $SYNC_ARM := 2 -- $SYNC_ARM is initialised MOVE ARM[1] TO p1 SYNCMOVE TO p2 -- $SYNC_ARM (arm 2) moves on p2 MOVE TO p1 SYNCMOVE TO p2 -- $PROG_ARM and $SYNC_ARMEND are used, example The ADVANCE clause is applied to the entire MOVE... SYNCMOVE. To perform a fly it is necessary to specify the FLY clause on the main move and insert ADVANCE before SYNCMOVE: MOVEFLY TO p1 ADVANCE, SYNCMOVEFLY ARM[2] TO p2, ENDMOVE If an ADVANCE is inserted after p2, the translator sees a warning message and automatically corrects instruction.
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 mode 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.
00/0607
6-3
For further information, please refer to Use of C4G Controller Unit manual, IDE Page section.
6-4
00/0607
Synchronous Motion (optional feature) while executing a SYNCMOVE. It is very important to exactely understand on which Arm such a functionality is currently active. To do that, operate as follows: Lets have the following PDL2 statement MOVE ARM[i] TO P1 SYNCMOVE ARM[j] TO P2 we have three possibilities: a. b. c. a. b. BOTH the Arms ARENT a Robot ONE Arm ONLY IS a Robot BOTH the Arms ARE Robots. no Run-time modifications are allowed for linear speed the Run-Time modification of the linear speed is allowed on the Robot only (using the $LIN_SPD_RT_OVR predefined variable which is associated to such an Arm) the Run-time modification is allowed on the Arm which is executing a cartesian motion. Anyway it is always needed to use the $LIN_SPD_RT_OVR predefined variable which is associated to the Arm on which the Run-time modification functionality is active.
c.
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: $CRNT_DATA[num_arm].C_ALONG_1D[50] it is automatically set by the system software, for the Arm on which the Run-time modification functionality is active. If such a bit is set to TRUE, it means that the associated Arm acts as master, as regards the Run-time speed modification during the SYNCMOVE execution, while the other Arm follows the modifications. In such a way, the motion synchronization is always satisfied.
pr-0-0-gpr_07.fm
00/0607
6-5
pr-0-0-gpr_07.fm
6-6
00/0607
7.
The cooperative motion feature simplifies the programming of applications where a workcell is composed of a robot and one or more positioners (i.e. a rotating table). When cooperative motion is enabled, the robot position is defined with respect to the positioner so that Cartesian trajectory can be executed at constant speed while moving the workpiece. This is mainly useful in welding complex shapes or large workpieces. A general rule can be followed in the case of cooperative motion: the $UFRAME transformation defines the position of the workpiece with respect to the flange frame of the active positioner and not with respect to the world frame. This is shown in (Fig. 7.1 - System frames with auxiliary axes cooperative motion and Fig. 7.2 - User frame with auxiliary axes cooperative motion). This is because the user frame is not fixed but is linked with the positioner. Cooperation can be enabled between a robot and its auxiliary axes or between two different arms. This chapter describes the following subjects : Cooperative Motion with Auxiliary Axes Cooperative Arms Jogging
pr-0-0-gpr_08.fm
00/1109
7-1
Fig. 7.1
1. 2. 3.
Fig. 7.2
1. 2. 3.
To enable and disable cooperative motion, the following built-in procedure is available: AUX_COOPAUX_COOP(flag, joint_aus <<, arm>>) The data type for the flag is boolean. It can be set to ON or OFF for switching the auxiliary cooperative motion on or off. Aux_joint field is the number of the last axis composing a positioner. The arm field is the arm on which the auxiliary cooperative motion should be executed, if not explicitly defined, $PROG_ARM is used. For example, in a system with a 5-axes robot, a first 2-axes positioner (axis 6, 7) and a second 1-axis positioner (axes 8) the syntax could be the following: AUX_COOP(ON, 7) --AUX_COOP(ON, 8) ---AUX_COOP(OFF) -enables the cooperative motion with the first positioner disables the previous cooperative motion end enables the cooperative motion with the second positioner disables the cooperative motion
pr-0-0-gpr_08.fm
7-2
00/1109
Fig. 7.3
1. 2.
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/1109
7-3
Cooperative Motion (optional feature) 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 either the RUN key or the Execute (F1) command - Service Page (Exec softkey) on the Teach Pendant.
pr-0-0-gpr_08.fm
7-4
00/1109
8.
The "Sensor Tracking" environment allows real-time correction of the Cartesian trajectory based on indications coming from various sensors. The main characteristics are: possibility to interface with a wide range of sensors (integrated in C4G, analog I/Os, serial ports); projection of corrections in all the main reference systems (tool, user, world, weaving); translation corrections and geometry variations; relative and absolute corrections; control possibilities with and without programmed move; sensors dedicated to each arm in multi-arm applications; possibility to configure the robot dynamic response; compliance to safety restrictions; complete compatibility with other C4G services.
Detailed information follows regarding these subjects: Principle of operation Configuration on several arms Sensor interface Sensor reference system Type of information acquired by the sensor Correction actuation criteria Sensor tracking enable mode Sensor malfunctioning Accumulative overall deviations management Programming example
00/1109
8-1
Sensor Tracking (optional) 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 : POSITION BEGIN $SPD_OPT:=LIN_SPD--To check the linear speed $LIN_SPD:=0.1 --Linear speed in m/s MOVE JOINT TO p1 MOVEFLY LINEAR TO p2 ADVANCE MOVE LINEAR TO p3 MOVE JOINT TO p4 END sensor If the sensor is enabled along the Cartesian path from p1 to p3, the effect could be as shown in Fig. 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.
Fig. 8.1
1. 2. 3. 4.
pr-0-0-gpr_10.fm
8-2
00/1109
pr-0-0-gpr_10.fm
00/1109
8-3
8.3.1
8.3.2
External sensors
External sensors are those which communicate with the C4G through signals on the analog or digital I/O ports and serial ports. Examples of this type of sensors are: Simple limit switches or binary proximity sensors that give a single digital datum (they change the signal when the distance measured exceeds a certain threshold); Capacitive or inductive proximity sensors that communicate by an analog input or by coded information on several digital inputs; Sensors connected to the control system by a communication line managed by a PDL2 program. The two-three dimension cameras may belong to this category since they usually have a dedicated controller, that makes the necessary calculations to interpret the image, and a communication line to receive the commands and transmit the information.
These types of sensors have the characteristic that the reading of the information is performed by a PDL2 program (usually NOHOLD), created specifically for the sensor. The program will read the analog or digital I/O channels accordingly and will manage the
pr-0-0-gpr_10.fm
8-4
00/1109
Sensor Tracking (optional) 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 : SENSOR_SET_DATA ( err_track <, arm> ) The err_track parameter is the vector of the corrections required, the first three elements correspond to the translations in X, Y and Z directions, whereas the others are the rotations around the same axes. The unused err_track components have to be initialised in any case to value zero. With the optional "arm" parameter corrections can be sent to an arm that is not the default one. The Built-In SENSOR_GET_DATA, described in the previous paragraph can also be used with this type of sensors. In this case the sens_read variable will contain the same data as sent with SENSOR_SET_DATA.
8.4.1
The $SENSOR_TYPE values reserved for this reference are: 1 for MCP-ST, 5 and 9 for external sensors (Tab. 8.3 - Correction_Speed = Factor*Reference_Speed). In these tracking modes (TOOL reference) the reference system that describes the TCP position ($TOOL variable) can be distinguished from the reference in which the sensor makes the measurements. To do this there is the $SFRAME system variable. This is a conversion of co-ordinates referred to the TCP reference system, since it follows $TOOL in the kinematic chain (see Fig. 8.2 - Tool frame conversion).
pr-0-0-gpr_10.fm
00/1109
8-5
Fig. 8.2
1. 2. 3. 4. 5.
8.4.2
This mode does not have significance with the MCP-ST sensor, therefore $SENSOR_TYPE can enable this mode only for external sensors with codes 6 and 10 (see Tab. 8.3 - Correction_Speed = Factor*Reference_Speed). Also in this case it may be necessary to assign a specific reference system to the sensor, calculated according to the USER system. This can be obtained with the same $SFRAME variable that, in these modes, represents a conversion in relation to the USER reference (it follows $UFRAME in the kinematic chain, see Fig. 8.3 - User frame conversion).
Fig. 8.3
1.
World frame
pr-0-0-gpr_10.fm
8-6
00/1109
Sensor Tracking (optional) $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.
8.4.3
8.4.4
If it is wished to exclude the effect of this conversion, it is sufficient to set the $SENSOR_CNVRSN components to value 1 (default value). $SENSOR_CNVRSN can also disable the application of one or more components of the correction: this is obtained by setting the corresponding element of the vector to zero ($SENSOR_CNVRSN[n]:=0).
pr-0-0-gpr_10.fm
00/1109
8-7
8.6.1
Fig. 8.4
- Absolute deviations
1. 2. 3. 4. 5. 6. 7.
Programmed trajectory Trajectory controlled by sensor Correction required = +3 mm Required = +1 mm Required = -2 mm Final deviation = 0 mm Required = 0 mm
pr-0-0-gpr_10.fm
8-8
00/1109
Fig. 8.5
- Relative deviation
1. 2. 3. 4. 5. 6. 7.
Programmed trajectory Trajectory controlled by sensor Correction required = +3 mm Required = +1 mm Required = -2 mm Final deviation = 0 mm 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).
8.6.2
pr-0-0-gpr_10.fm
00/1109
8-9
Sensor Tracking (optional) 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.
Fig. 8.6
1. 2.
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/1109
Sensor Tracking (optional) correction (0%) and immediate assimilation of the correction (100%). If $SPD_OPT is set for one of the rotation control modes (SPD_ROT, SPD_SPN, SPD_AZI, SPD_ELV, SPD_ROLL, SPD_FIRST, SPD_SECOND, SPD_THIRD) the reference speed for the first three components of $SENSOR_GAIN is one fourth of the maximum linear speed for that arm ($LIN_SPD_LIM/4). The last three elements of $SENSOR_GAIN serve to control the speed of rotation around the X, Y and Z axes. If it is $SPD_OPT=SPD_LIN, the reference speed is a quarter of the maximum rotational speed ($ROT_SPD_LIM/4) thus the value of 50% corresponds to a speed equal to $ROT_SPD_LIM/4 whereas the values 0% and 10% represent the extreme cases of no correction (0%) and immediate assimilation of the geometry variation (100%). If $SPD_OPT is set to one of the rotation control modes (SPD_ROT, SPD_SPN, etc.) the reference speed for this component is $ROT_SPD. Tab. 8.3 - Correction_Speed = Factor*Reference_Speed contains the multiplication factors that, applied to the reference speed, make it possible to obtain the actual programmed speed. These values are given as an explanation only, since in practice, the value of $SENSOR_GAIN will be determined by experimentation .
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/1109
8-11
Fig. 8.7
- Effects of $SENSOR_GAIN
1. 2. 3. 4.
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.
8.6.3
8-12
00/1109
Sensor Tracking (optional) linked to the holding or the resetting of the overall deviations (see par. 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: a. robot enslaving to a sensor without a programmed move can only be enabled by a HOLDABLE program with the Control Unit in AUTO; 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; 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; the enslaving terminates when the program that started it is deactivated.
b.
c.
d.
These services have been obtained by introducing a special type of Built-In that can only be executed by HOLDABLE. programs. The syntax is: SENSOR_TRKSENSOR_TRK ( boolean <, arm> ) The execution of the SENSOR_TRK(TRUE) instruction selects a certain option so that, enabling the sensor tracking with the $SENSOR_ENBL variable, the arm is in an extended mode that permits enslaving even without a programmed move. The optional arm parameter can enable the service on an arm that is not the default one. There are the following limitations (they refer to the Built-In executed always on the same arm): a. the actual enabling of the enslaving without a programmed move is subordinated to the value of $SENSOR_ENBL (however, it is not necessary to re-run SENSOR_TRK(TRUE) after bringing $SENSOR_ENBL to FALSE and then to TRUE); since the SENSOR_TRK can only be run within HOLDABLE programs, it cannot be run neither using the Execute (F1) command - Service Page (Exec softkey) on the TP, nor by the SYS_CALL of the EXECUTE command;
b.
pr-0-0-gpr_10.fm
00/1109
8-13
Sensor Tracking (optional) c. the service disabling through SENSOR_TRK(FALSE) can be executed only from the same program that enabled it; SENSOR_TRK cannot be executed if it is already enabled by a second HOLDABLE program that is active at the same time; the SENSOR_TRK mode is automatically disabled when the program that enabled it is deactivated.
d.
e.
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).
8.8.1
8.8.2
pr-0-0-gpr_10.fm
8-14
00/1109
Fig. 8.8
- Effect of $RCVR_TYPE = 7
1. 2. 3. 4. 5.
Programmed trajectory Trajectory controlled by sensor Trajectory after a sensor failure Optimal trajectory 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.
Fig. 8.9
- Effect of $RCVR_TYPE = 8
1. 2. 3. 4.
Programmed trajectory Trajectory controlled by sensor Recovery trajectory HOLD caused by an error message
pr-0-0-gpr_10.fm
00/1109
8-15
8.9.1
1. 2. 3. 4. 5.
Programmed trajectory Trajectory controlled by sensor Starting point Arrival point 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/1109
Sensor Tracking (optional) this option makes it possible to leave the robot enslaved to the sensor, without a programmed move and during the interruption. Looking again at the example in the case of SENSOR_TRK(TRUE), a behaviour that is just the same as in Fig. 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).
8.9.2
1. 2. 3.
8.9.3
pr-0-0-gpr_10.fm
00/1109
8-17
1. 2. 3.
8.9.4
8-18
00/1109
Sensor Tracking (optional) 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).
pr-0-0-gpr_10.fm
00/1109
8-19
$SENSOR_TYPE := 5 --External sensor in relative mode and TOOL reference $SENSOR_CNVRSN[2] := 0.2 --Example of Y conversion factor $SENSOR_CNVRSN[3] := 0.2 -- Example of Z conversion factor $SENSOR_GAIN[2] := 60 -- Example of Y gain $SENSOR_GAIN[3]:= 80 -- Example of Z gain $SENSOR_TIME := 500 -- Deviation distribution in time $SENSOR_OFST_LIM[1] := 50 --Translation maximum limit -- Program in movement MOVE JOINT TO p1 -- Sensor tracking session $TIMER[1] := 0 ENABLE CONDITION[1] $SENSOR_ENBL := TRUE MOVEFLY LINEAR TO p2 ADVANCE MOVE LINEAR TO p3 $SENSOR_ENBL := FALSE DISABLE CONDITION[1] MOVE JOINT TO p4 END sensor
pr-0-0-gpr_10.fm
8-20
00/1109
9.
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 :
pr-0-0-gpr_11.fm
Configuration Working Principle Process Monitoring Tracking Window Motion Statements Teaching Positions Tracking Interruption Limitations during Conveyor Tracking
00/0608
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/0608
Conveyor Tracking (optional feature) 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].
pr-0-0-gpr_11.fm
00/0608
9-3
Fig. 9.1
1. 2. 3. 4. 5. 6.
Tracking Window User Frame Conveyor Base Frame Slide Frame World Frame Sensor
Fig. 9.2
1. 2. 3. 4. 5. 6.
User Frame Conveyor Base Frame User Frame Slide Frame Sensor User Frame
pr-0-0-gpr_11.fm
9-4
00/0608
Conveyor Tracking (optional feature) In case of rail tracking, the shift value $CRNT_DATA[n].CONV_SHIFT[conv_idx] is added to the motion of the robot rail and the result is that the world frame of reference is moved according to the conveyor movements.
CONV_OFF: tracking is disabled CONV_1ON: tracking is enabled on the first conveyor CONV_2ON: tracking is enabled on the second conveyor CONV_1READ: read-only mode is enabled for the first conveyor CONV_2READ: read-only mode is enabled for the second conveyor
00/0608
9-5
Conveyor Tracking (optional feature) CONV_1ON_2READ: tracking is enabled on the first conveyor and read-only mode is enabled for the second conveyor CONV_1READ_2ON: tracking is enabled on the second conveyor and read-only mode is enabled for the first conveyor
Conveyor tracking mode causes that all subsequent POSITIONs are moving positions, stuck to the truck. C4G Controller automatically compensates for the instantaneous position referred to fixed positions. In the above indicated read-only mode, all the monitored variables are updated according to current values of truck position and speed, while the robot is enslaved to the tracking. The first move statement will not start until the destination is inside the tracking window. Once the robot reaches the first moving position, it will keep on tracking also if it is not executing a move. Tracking will finish on the first move statement in which $ARM_DATA[n].CONV_TYPE=CONV_OFF (that is a move to a fixed position). Parts on moving conveyor are detected by a digital sensor. When the part has triggered the sensor, the value of $ARM_DATA[n].CONV_ZERO[conv_idx] variable must be set to 0. This operation must be done inside the PDL2 program or by mean of an application package. Here is a program example to pick pieces from a conveyor and place them to a table: PROGRAM conv BEGIN CONDITION[1]: -- for example, the sensor is connected to $DIN[[1] WHEN $DIN[1] DO $CONV_ZERO[1] := 0.0 ENDCONDITION CYCLE ENABLE CONDITION[1] WAIT FOR $DIN[1] -- wait for a workpiece $CONV_TYPE := CONV_1ON -- enable tracking MOVE LINEAR NEAR P1 BY 100 -- move to the track MOVE LINEAR TO P1 -- ove to the workpiece CLOSE HAND -- pick MOVE AWAY 100 $CONV_TYPE := CONV_OFF -- disable tracking MOVE LINEAR NEAR P2 BY 100 -- move to a table MOVE LINEAR TO P2 OPEN HAND -- place MOVE AWAY 100 END conv
9-6
00/0608
Conveyor Tracking (optional feature) $ARM_DATA[n].CONV_ZERO[conv_idx] has been set. Otherwise the user has to measure the distance between the workpiece and the sensor and then assign the zero position by the CONV_SET_OFST built-in. The built-in has the following parameters: (dist, conv_num ,<arm>) where dist is the distance(in case of circular tracking it is calculated along the circumference), conv_num is the conveyor number and the third optional parameter indicates the arm number. In Programming state and conveyor tracking enabled, every time a move starts the position transducer is read and the cartesian positions are updated.
pr-0-0-gpr_11.fm
00/0608
9-7
9-8
00/0608
Conveyor Tracking (optional feature) 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).
Fig. 9.3
1. Bending-press
2. Sheet
3. Robot
9.9.1
Configuration parameters
For a good Conveyor tracking, it is needed to configure the geometrical values of the puch/forming-die couple which is mounted on the bending-press, producing the fold. The needed geometrical parameters of the bending-press and the sheet, are shown in the following Fig. 9.4.
Fig. 9.4
1. Bending-press kinfe
2. Folded sheet
4. Folded forming-die
The needed parameters to properly configure the tracking, are as follows: $CONV_TBL[i].CT_SHEET_DEPTH = S $CONV_TBL[i].CT_CAVE_ANGLE = alfa $CONV_TBL[i].CT_CAVE_WIDTH = V Sheet depth in mm Forming-die cave angle in rad Forming-die cave width in mm
pr-0-0-gpr_11.fm
00/0608
9-9
pr-0-0-gpr_11.fm
9-10
00/0608
10.
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 following software OPTIONS are NECESSARY: Cooperative Motion, for the cooperation of the first robot with the positioner-auxiliary axis (see Cap.7. - Cooperative Motion (optional feature)). Conveyor Tracking Motion, for the positioner tracking by the second robot (See Cap.9. - Conveyor Tracking (optional feature)). Synchronised Arm Motion, to synchronise the motions of the 2 robots (See Cap.6. - Synchronous Motion (optional feature)). 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
AUX_COOP(ON,) and $ARM_DATA[n].CONV_TYPE := CONV_iON are executed, the 2 robots can move separately from the positioner; their POSITIONS will be defined in the user reference (coinciding with the boundary reference if the user reference is not declared). Once the services are activated, the robots will track any positioner movement, and each will still be able to be moved independently; their POSITIONS will be defined in relation to the positioner reference (defined by $AUX_BASE for the first robot and by $CONV_BASE for the second). To be consistent, both $AUX_BASE and $CONV_BASE have their origin in the rotation center of the axis, therefore CT_RADIUS value is ignored. For movement in automatic mode, the user who has to move both the robots in cooperative mode on the positioner can create a single program in which the 2 robots use the synchronised motion: the first on XTNDPOS type points (that include the positioner motion), the second on POSITION type points.
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.
10.4.1
Conveyor configuration
PROGRAM ctlib NOHOLD BEGIN --- Configure axis 9 (for the first arm) as loop conveyor of the second arm -$CONV_TBL[1].CT_JNT_MASK := 0x100 $CONV_TBL[1].CT_SCC := 1 $CONV_TBL[1].CT_TX_RATE := $ARM_DATA[1].TX_RATE[9] $ARM_DATA[2].CONV_SPD_LIM[1] := 2 $ARM_DATA[2].CONV_ACC_LIM[1] := 2 $ARM_DATA[2].CONV_CNFG[1] := 4 $ARM_DATA[2].CONV_TYPE := CONV_OFF END ctlib
10.4.2
Motion programming
PROGRAM ict_step3 EZ VAR pnt0008p, pnt0009p, pnt0010p : POSITION pnt0003x, pnt0006x, pnt0007x, pnt0008x : XTNDPOS FOR ARM[1] pnt0001x, x1, x2, x3 : XTNDPOS FOR ARM[1] pnt0001p, pnt0004p, pnt0005p, pnt0007p : POSITION
hs-0-0-mot_07.fm
10-2
00/0607
BEGIN -- Definition of the TOOL, BASE, USER FRAME of the 2 NS robots $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, '') -- Cooperative Base $ARM_DATA[1].AUX_BASE[3] := pnt0001p : POS(0, 0, 0, 0, 180, 180, '') -- Conveyor Base $ARM_DATA[2].CONV_BASE[1] := pnt0004p : POS(0, 0, 0, 0, 180, -60, '') -- Reset cooperative motion AUX_COOP(OFF, 9, 1) -- Set window conveyor $ARM_DATA[2].CONV_WIN[1] := -200 $ARM_DATA[2].CONV_WIN[2] := 200 -- Reset conveyor motion $ARM_DATA[2].CONV_TYPE := CONV_OFF MOVE ARM[2] LINEAR RELATIVE VEC(0, 0, 1) IN BASE -- Lifted approach Move MOVE ARM[1] TO pnt0001x MOVE ARM[2] TO pnt0005p -- Enable cooperative motion AUX_COOP(ON, 9, 1) MOVE ARM[1] LINEAR RELATIVE VEC(0, 0, 1) IN UFRAME -- Enable conveyor $ARM_DATA[2].CONV_TYPE := CONV_1ON MOVE ARM[2] LINEAR RELATIVE VEC(0, 0, 1) IN BASE -- Set auxiliary axis values 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 -- Cooperative Motion activation AUX_COOP(ON, 9, 1) -- Conveyor Tracking activation $ARM_DATA[2].CONV_TYPE := CONV_1ON -- Conveyor coupling move MOVE ARM[2] LINEAR RELATIVE VEC(0, 0, 1) IN BASE -- Motion controlled by positioner only, the 2 robots follow DELAY 1000 MOVE ARM[1] LINEAR TO x1 DELAY 1000 MOVE ARM[1] LINEAR TO x2 DELAY 1000 MOVE ARM[1] LINEAR TO x3 DELAY 1000 -- Synchronised and cooperative motion of MOVE ARM[1] LINEAR TO pnt0003x SYNCMOVE MOVE ARM[1] LINEAR TO pnt0006x SYNCMOVE MOVE ARM[1] LINEAR TO pnt0007x SYNCMOVE MOVE ARM[1] LINEAR TO pnt0008x SYNCMOVE the 2 robots on positioner in motion ARM[2] LINEAR TO pnt0007p ARM[2] LINEAR TO pnt0008p ARM[2] LINEAR TO pnt0009p ARM[2] LINEAR TO pnt0010p
-- End of cooperative motion and conveyor tracking AUX_COOP(OFF, 9, 1) $ARM_DATA[2].CONV_TYPE := CONV_OFF -- Conveyor release move MOVE ARM[2] LINEAR RELATIVE VEC(0, 0, 1) IN BASE -- 2 robots move separately to idle position MOVE ARM[1] TO pnt0001x MOVE ARM[2] TO pnt0005p END ict_step3
hs-0-0-mot_07.fm
10-4
00/0607
11.
Weaving is an oscillating motion superimposed on a Cartesian trajectory. It is useful for arc-welding applications and some gluing and sealing applications. Weaving is a method used to distribute material in gaps with large cross sections relative to the material bead. Weaving can be superimposed on any Cartesian motion (either linear or circular) or multiple motions connected in fly. The shape of the weaving pattern is defined by a set of parameters (parametric weaving). Two modes of weaving are available, cartesian weaving and joint weaving. The subjects described in this chapter are the following : Weaving Mode Weaving Activation Weaving Parameters Stopping Motions with Weaving Programming Weaving Weaving without Arm motion
00/0607
11-1
Motion with Weaving (optional feature) 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).
11-2
00/0607
$WEAVE_TBL[n].WV_TRV_SPD_PHASE[m]; (con 1<=m<=4) 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)
11.3.1
Wave Shape
The basic weave pattern is a trapezoidal pattern. The units of measurement of some fields of $WEAVE_TBL are dependent upon the type of weaving selected. If cartesian weaving is being used, $WV_LEFT_AMP and $WV_RIGHT_AMP are expressed in millimeters; in the case of joint weaving these parameters are expressed in degrees or millimeters depending on if the selected axis is rotational (degrees) or translational (mm). $WV_TRV_SPD is expressed in meters/second when using cartesian weaving, in radians/sec for a rotational axis with joint weaving, and in meters/sec for a translational axis with joint weaving. If WEAVE_MODALITY=0,the wave is described by the transverse speed, the amplitude, the dwell times, and the speed along the trajectory. The frequency of the pattern is fixed by the first 3 of these parameters. The motion speed along the trajectory ($LIN_SPD) does not affect frequency, but rather how much the pattern is stretched. Fig. 11.1 - Weave Parameters - A shows the basic shape and defines the various dwell times. Also shows how the speed and slope are calculated. If WEAVE_MODALITY=1, the wavelength (and therefore the frequency) are maintained as the speed varies; the overrides do not influence the wave form. If WEAVE_MODALITY=2, the wave form is generated with 4 different transverse speeds. The profiles are asymmetric.
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. b. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Direction of weaving Time ts[1] Left dwell time ts[2] Central dwell time ts[3] Right dwell time ts[4] Final dwell time Left amplitude Right amplitude
Meaning of the terms ts[n] (ramp up or down times), according to the weaving modality: Modality 0 - ts times are all equal and are generated to reach a transverse speed $weave_tbl[n].wv_trv_spd; Modality 1 - the ts times are all equal and are generated to create the weaving period according to the programmed wave length; Modality 2 - The ts[n] times are generated to reach the respective transverse speeds $weave_tbl[n].wv_trv_spd_phase[n].
pr-0-0-gpr_09.fm
11-4
00/0607
1. 2. 3. 4. 5. 6.
Weaving direction Path Transverse speed Torch speed = Linear speed Torch speed = Resulting speed 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.
1. 2. 3. 4. 5.
Saw tooth, not chamfered Saw tooth, chamfered Trapezoidal (left and right dwell) Chamfering variation during motion, with central dwell time Different left and right amplitudes.
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.
11.3.2
Weave Plane
Weave plane only applies to cartesian weaving and is established as explained below. At the beginning of the first move with weaving, the approach vector of the tool and the tangent to the move trajectory establish a plane, called the torch plane. A plane called the zero plane is defined perpendicular to the torch plane and contains the trajectory. (If the motion is a straight line, then the tangent to the trajectory is the straight line. If the motion is a circle, then the tangent to the trajectory is the tangent to the circle at its start point). An error will be generated (37111 tool collinear with weave trajectory) if the torch approach vector is in the same direction as the intended trajectory. The weave plane is established by rotating from the zero plane about the trajectory tangent by the rotation angle specified in $WEAVE_TBL[n].WV_PLANE. A positive angle is in the direction established using the left-hand-rule with respect to the trajectory direction. Fig. 11.4 - Weave Plan shows such a procedure.
pr-0-0-gpr_09.fm
11-6
00/0607
1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Torch plane Path Weaving plane angle Approach vector (along Z Tool) Weaving plane Zero plane Weaving plane angle Zero plane Weaving plane 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
1. 2.
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.
1. 2. 3. 4. 5.
Initial weaving direction Start point Final weaving direction Final point Centre of circumference
11.3.3
Weave Amplification
Weave amplification permits weaving to be performed on V-grooves or flat butt welds
pr-0-0-gpr_09.fm
11-8
00/0607
Motion with Weaving (optional feature) 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. 2. 3. 4.
pr-0-0-gpr_09.fm
00/0607
11-9
1. 2. 3. 4. 5.
Welded part First move in fly Second move in fly Welding Fly move node
pr-0-0-gpr_09.fm
11-10
00/0607
1. 2. 3. 4. 5. 6.
System in Hold state Stop point Original path Emergency stop or Power failure Path reset Original path
pr-0-0-gpr_09.fm
00/0607
11-11
Limiti [ 0, 10 ] [ 0, 2 ] [ 0, 10000 ] [ 0, 10 ]
$WEAVE_TBL[idx].WV_PLANE $WEAVE_TBL[idx].WV_AMP_PER $WEAVE_TBL[idx].WV_RIGHT_AMP $WEAVE_TBL[idx].WV_LEFT_AMP $WEAVE_TBL[idx].WV_CNTR_DWL (*) $WEAVE_TBL[idx].WV_RIGHT_DWL (*) $WEAVE_TBL[idx].WV_LEFT_DWL (*) $WEAVE_TBL[n].WV_END_DWL $WEAVE_TBL[idx].WV_SMOOTH $WEAVE_TBL[n]WV_TRV_SPD $WEAVE_TBL[n]WV_TRV_SPD_PHASE $WEAVE_TBL[n]WV_SPD_PROFILE $NUM_WEAVES
[-180, +180] deg [ 0, 1000 ] % [0, 20] mm o deg [0, 20] mm o deg [0, 10000] mm o ms [0, 10000] mm o ms [0, 10000] mm o ms [0, 10000] mm o ms
NO YES NO NO NO NO NO NO NO NO NO NO NO
[ 0, 16 ]
10
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
Motion with Weaving (optional feature) 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 $CRNT_DATA[2].WEAVE_NUM_NOMOT 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.
11.6.4
pr-0-0-gpr_09.fm
00/0607
11-13
Motion with Weaving (optional feature) c. speeds definition $SPD_OPT := SPD_LIN $LIN_SPD := 0.050000001 d. Arm motion, to go to the position where Arm 2 is supposed to weld MOVE LINEAR TO p1 e. weave on p1 position, for the required time (3 s). $CRNT_DATA[2].WEAVE_NUM_NOMOT := 1 DELAY 3000 $CRNT_DATA[2].WEAVE_NUM_NOMOT := 0 The statement $CRNT_DATA[2].WEAVE_NUM_NOMOT := 0 disables weaving after 3 seconds, in order to allow the Arm to continue its working motions.
pr-0-0-gpr_09.fm
11-14
00/0607
12.
This function has to be used when MAXIMUM ACCURACY is the priority. If instead the priority is to obtain robot MAXIMUM SPEED, it is necessary to use the SMARTMOVE4 (optional)
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. Important note: greater path accuracy is obtained accepting lower performance regarding speed, since the enabling of the Path Governor increases the cycle time, if $PGOV_MAX_SPD_REDUCTION is not zero. Therefore, according to the application to be executed, the user will have to find the compromise between reduction in Cartesian speed and increase in cycle time. Enable Path Governor Disable Path Governor
Having enabled the Path Governor, the user has to set the following predefined variables :
hs-0-0-mot_05.fm
$LIN_SPD - maximum speed value to execute the path 3 predefined variables that indicate the precision:
00/0607
12-1
Path Governor (optional) $PGOV_ACCURACY - maximum Cartesian error (in mm) allowed during the execution of the required Cartesian path (with a tolerance of approx. 0.5mm) $PGOV_ORNT_PER - indicates the geometry error percentage to be taken into consideration in the execution of the path. This value can be first set at 0%, then later, if the geometry error is still high, it can be increased $PGOV_MAX_SPD_REDUCTION - the accepted Cartesian speed reduction percentage to obtain the required path precision (limits: 0..95).
These predefined variables can be set once for all at the beginning of the motion program, or also from outside, or they can have different values for each Cartesian MOVE. The $PGOV_MAX_SPD_REDUCTION predefined variable is the variable that can have enormous influence on whether or not the required precision is obtained. In fact, setting a zero valve will not give any improvement in the path execution in relation to the same move with the Path Governor disabled. Furthermore, if the allowed speed reduction is not found adequate for the precision required in $PGOV_ACCURACY, a Cartesian speed value will be seen that is referred to a value equal to:
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)
13.
SMARTMOVE4 (OPTIONAL)
In order to retrieve Comau Options Codes, please refer to C4G Control Unit Technical Specifications Manual, chapter Software Options.
This function has to be used when robot MINIMUM CYCLE TIME is the priority. If instead the priority is to obtain robot MAXIMUM ACCURACY, it is necessary to use the Path Governor (optional) 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 reduce such tolerances, because they are directly related 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)
hs-0-0-mot_06.fm
13-2
00/0607
14.
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 Possible values: 1 or 2. INTEGER is the $FLOW_TBL index .
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. 2. y x
Delivery flow Conversion factor Voltage (V) to be delivered by the dispensing machine (written in the analog port passed to FLOW_MOD_ON) 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.
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:
It refers to System Software 1.0 and following versions. The following topics are fully described: Glossary Offset algorithm with Dynamic Model Kinematic offset algorithm (optional feature) Moving through axis 5 singularities Robots without compensation (effect of the inverse kinematics) Programming rules for non-spherical wrist robots (SMART NH4) Appendix (working range pictures for SMART NH4 models)
The list of error messages is reported and the meaning is explained. Some notes are also given about mapping between C4G error messages and RRS (Robot Realistic Simulation) ones that are sent by Robcad while simulating a program. This is useful because RRS specification doesn't include messages enough to describe all the situations.
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 isnt 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
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.
15.5.1
pr-0-0-gpr_05.fm
00/0607
15-3
Presuppositions for SMART Robot programming 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.
1.
Side view
2. Front view
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 to WRIST_JNT too.
pr-0-0-gpr_05.fm
15-4
00/0607
1.
The curved lines are the flange trajectories, while the TCP moves along the right path 2. 3. Exact singularity position Behaviour of the WRIST_JOINT modality.
Getting closer to the singularity, speed is maintained high while orientation slightly changes
15.5.2
The first three ones are for Cartesian movements, with reference to tool frame, user frame and world frame; the last one allows moving each single robot joint. These modalities are usually the best from the application point of view but they do not allow robot to move in a Cartesian way when axis 5 is inside the singularity zone. To achieve this task it is necessary to enable the WRIST_JNT modalities for jogging. The WRIST_JNT evolution can be set for Cartesian manual, from the Motion page, Basic sub-page, COORD field of the Teach Pendant. On the TP4i/WiTP status bar the following words will be seen: Wr-Base, Wr-Tool, Wr-Ufrm, Joint. WRIST_JNT modalities allow TCP to move along a straight line without moving wrist axes, by pressing the first three jog buttons: +1X/-1X, +2Y/-2Y, +3Z/-3Z. On the other hand, pressing jog buttons +4/-4, +5/-5, or +6/-6, it is possible to move a single wrist axis while maintaining TCP steady. These modalities are useful to go through the singularity because they allow the robot to be jogged in a Cartesian way also if axis 5 is exactly at 0 degrees.
pr-0-0-gpr_05.fm
00/0607
15-5
15.6.1
15.6.1.1
15.6.1.2
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
15.6.1.3
15.6.1.4
Axis 5 singularity
Due to the hollow wrist the singularity zone for SMART NH4(L) robot is wider than the position at 0 degrees of axis 5. The conversion can give back a solution only if axis 5 is out of range 6 around zero value and multiple of 180. If, during the conversion, axis 5 enters this zone an error message is issued. Due to the approximation in orientation, the error message can come out also on a POSITION that had been taught with axis 5 slightly out of 6 threshold . Since the approximation is usually less than 0,8, a safe range is 7. [ -6; +6 ] [ -174; -186 ] [ +174; +186 ] [ -7; +7 ] [ -173; -187 ] [ +173; +187 ]
Forbidden ranges
Safe ranges
pr-0-0-gpr_05.fm
00/0607
15-7
1.
Actions REC JOINTPOS inside the singularity zone REC POSITION/XTNDPOS inside the singularity zone MOVE JOINT through singularity zone MOVE LINEAR/CIRCULAR through singularity zone with the standard evolution modality (RS_WORLD) MOVE LINEAR/CIRCULAR through singularity zone with the WRIST_JNT evolution modality
Allowed X
Forbidden
X X X
It is NOT possible to record a Cartesian position (POSITION or XTNDPOS). It is possible to move in a Cartesian way only with the WRIST_JNT evolution (see par. 15.5 Moving through axis 5 singularities a pag. 15-3). In the standard modality (RS_WORLD) MOVE LINEAR/CIRCULAR is not allowed. It is possible to jog the robot in a Cartesian way only if the WRIST_JNT modalities are enabled (WR-BASE, WR-UFRM, WR-TOO, see par. 15.5.2 Jogging through wrist singularities a pag. 15-5). It is not allowed to jog inside the singularity zone with the standard jog modalities (BASE, UFRAME, TOOL).
JOG JOINT inside the singularity zone JOG BASE, UFRM, TOOL inside the singularity zone JOG WR-BASE, WR-UFRM, WR-TOOL inside the singularity zone
X X
MOVE JOINT TO JOINTPOS inside the singularity zone MOVE LINEAR TO JOINTPOS inside the singularity zone MOVE JOINT TO POSITION/XTNDPOS inside the singularity zone MOVE LINEAR TO POSITION/XTNDPOS inside the singularity zone
X X X X If the destination point is inside the singularity zone it is not possible to move there both with the standard evolution and with WRIST_JNT.
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 position is singular".
15.6.1.5
These areas can be reached in a joint way; the limitations only refer to Cartesian movements
Actions REC JOINTPOS inside the forbidden zone REC POSITION/XTNDPOS inside the forbidden zone MOVE JOINT through the forbidden zone MOVE LINEAR/CIRCULAR through the forbidden zone
Allowed X
Forbidden
X X X X X X
It is NOT possible to record a Cartesian position (POSITION or XTNDPOS). It is allowed to move through this zone with every type of movement. It is sufficient that the destination point is out of the forbidden zone.
JOG JNT inside the forbidden zone JOG BAS, USR, TOL inside the forbidden zone JOG BWR, UWR, TWR inside the forbidden zone
pr-0-0-gpr_05.fm
00/0607
15-9
Actions MOVE JOINT TO JOINTPOS inside the forbidden zone MOVE LINEAR TO JOINTPOS inside the forbidden zone MOVE JOINT TO POSITION/XTNDPOS inside the forbidden zone MOVE LINEAR TO POSITION/XTNDPOS inside the forbidden zone
Allowed X X
Forbidden
Notes
X X
If the destination point is inside the forbidden zone, it is possible to reach it only if it is a JOINTPOS.
Error messages 36994 (0x9082) "Pos out of range" before starting the move. 62477 (0xf40d) "Cartesian position out of range" while moving into the forbidden zone. 40012 (0x9c4c) "Pos out of range" while teaching/modifying a point. RCS MODULE - Status returned: -52 "Cartesian position is out of work range".
15.6.1.6
The same situation can also happen with remote tool ($TOOL_RMT:=TRUE or nodal
pr-0-0-gpr_05.fm
15-10
00/0607
1.
Actions REC JOINTPOS inside the forbidden zone REC POSITION/XTNDPOS inside the forbidden zone MOVE JOINT through forbidden zone MOVE LINEAR/CIRCULAR through forbidden zone with the standard evolution modality (RS_WORLD) MOVE LINEAR/CIRCULAR through forbidden zone with the WRIST_JNT evolution modality
Allowed X
Forbidden
X X X
It is NOT possible to record a Cartesian position (POSITION or XTNDPOS). It is possible to move in a Cartesian way only with the WRIST_JNT evolution (see par. 15.5 Moving through axis 5 singularities a pag. 15-3). In the standard modality (RS_WORLD) MOVE LINEAR/CIRCULAR is not allowed. It is possible to jog the robot in a Cartesian way only if the WRIST_JNT modalities are enabled (BWR, UWR, TWR, see par. 15.5.2 Jogging through wrist singularities a pag. 15-5). It is not allowed to jog inside the forbidden zone with the standard jog modalities (BAS, USR, TOL).
JOG JNT inside the forbidden zone JOG BAS, USR, TOL inside the forbidden zone JOG BWR, UWR, TWR inside the forbidden zone
X X
pr-0-0-gpr_05.fm
00/0607
15-11
Actions MOVE JOINT TO JOINTPOS inside the forbidden zone MOVE LINEAR TO JOINTPOS inside the forbidden zone MOVE JOINT TO POSITION/XTNDPOS inside the forbidden zone MOVE LINEAR TO POSITION/XTNDPOS inside the forbidden zone
Allowed X X
Forbidden
Notes
X X
If the destination point is inside the forbidden zone, it is possible to reach it only if it is a JOINTPOS.
Error messages 36995 (0x9083) "Axis 1 at undefined position" before starting the move. 62478 (0xf40e) "Axis 1 at undefined position" while moving into the forbidden zone. 40013 (0x9c4d) "Axis 1 at undefined position" while teaching/modifying a point. RCS MODULE - Status returned: -52 "Cartesian position is out of work range".
15.6.1.7
pr-0-0-gpr_05.fm
15-12
00/0607
Actions REC JOINTPOS inside the forbidden zone REC POSITION/XTNDPOS inside the forbidden zone MOVE JOINT through forbidden zone MOVE LINEAR/CIRCULAR through forbidden zone with the standard evolution modality (RS_WORLD) MOVE LINEAR/CIRCULAR through forbidden zone with the WRIST_JNT evolution modality
Allowed X
Forbidden
X X X
It is NOT possible to record a Cartesian position (POSITION or XTNDPOS). It is possible to move in a Cartesian way only with the WRIST_JNT evolution (see par. 15.5 Moving through axis 5 singularities a pag. 15-3). In the standard modality (RS_WORLD) MOVE LINEAR/CIRCULAR is not allowed. It is possible to jog the robot in a Cartesian way only if the WRIST_JNT modalities are enabled (BWR, UWR, TWR, see par. 15.5.2 Jogging through wrist singularities a pag. 15-5). It is not allowed to jog inside the forbidden zone with the standard jog modalities (BAS, USR, TOL).
JOG JNT inside the forbidden zone JOG BAS, USR, TOL inside the forbidden zone JOG BWR, UWR, TWR inside the forbidden zone
X X
MOVE JOINT TO JOINTPOS inside the forbidden zone MOVE LINEAR TO JOINTPOS inside the forbidden zone MOVE JOINT TO POSITION/XTNDPOS inside the forbidden zone MOVE LINEAR TO POSITION/XTNDPOS inside the forbidden zone
X X X X If the destination point is inside the forbidden zone, it is possible to reach it only if it is a JOINTPOS
Error messages 36994 (0x9082) "Pos out of range" before starting the move. 62477 (0xf40d) "Cartesian position out of range" while moving into the forbidden zone. 40012 (0x9c4c) "Pos out of range" while teaching/modifying a point. RCS MODULE - Status returned: -52 "Cartesian position is out of work range".
15.6.1.8
pr-0-0-gpr_05.fm
00/0607
15-13
Actions REC JOINTPOS inside the forbidden zone REC POSITION/XTNDPOS inside the forbidden zone
Allowed X
Forbidden
pr-0-0-gpr_05.fm
15-14
00/0607
Actions MOVE JOINT through forbidden zone MOVE LINEAR/CIRCULAR through forbidden zone with the standard evolution modality (RS_WORLD) MOVE LINEAR/CIRCULAR through forbidden zone with the WRIST_JNT evolution modality JOG JOINT inside the forbidden zone JOG WR-BASE, WR-UFRM, WR-TOOL inside the forbidden zone JOG BWR, UWR, TWR inside the forbidden zone MOVE JOINT TO JOINTPOS inside the forbidden zone MOVE LINEAR TO JOINTPOS inside the forbidden zone MOVE JOINT TO POSITION/XTNDPOS inside the forbidden zone MOVE LINEAR TO POSITION/XTNDPOS inside the forbidden zone
Allowed X
Forbidden
Notes
Error messages 36995 (0x9083) "Axis 1 at undefined position" before starting the move. 62478 (0xf40e) "Axis 1 at undefined position" while moving into the forbidden zone. 40013 (0x9c4d) "Axis 1 at undefined position" while teaching/modifying a point. RCS MODULE - Status returned: -52 "Cartesian position is out of work range".
15.6.2
15.6.2.1
Axis 5 singularity
There is not a forbidden zone when axis 5 is close to zero degrees but it is anyway advisable not to move through the singularity because close to this zone axes 4 and 6 are required to accelerate and move very fast. The speed of the TCP is reduced while moving in a Cartesian way close to this zone.
pr-0-0-gpr_05.fm
00/0607
15-15
Presuppositions for SMART Robot programming 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.
15.6.2.2
Actions REC JOINTPOS inside the forbidden zone REC POSITION/XTNDPOS inside the forbidden zone JOG JOINT inside the forbidden zone JOG BASE, UFRAME, TOOL inside the forbidden zone JOG WR-BASE, WR-UFRAME, WR-TOOL inside the forbidden zone
Allowed X X X X
Forbidden
Notes
It is possible to jog the robot in both the Cartesian modalities: standard and WRIST_JNT. Nevertheless there could be big acceleration of the axis 1 when changing direction with the TCP very close to the axis 1 prolongation.
pr-0-0-gpr_05.fm
15-16
00/0607
Actions MOVE JOINT through forbidden zone MOVE LINEAR/CIRCULAR through forbidden zone with the standard evolution modality (RS_WORLD) MOVE LINEAR/CIRCULAR through forbidden zone with the WRIST_JNT evolution modality MOVE JOINT TO JOINTPOS inside the forbidden zone MOVE LINEAR TO JOINTPOS inside the forbidden zone MOVE JOINT TO POSITION/XTNDPOS inside the forbidden zone MOVE LINEAR TO POSITION/XTNDPOS inside the forbidden zone
Allowed X
Forbidden
Notes
X X X X X X
Executing Cartesian movements (MOVE LINEAR/CIRCULAR) is allowed but it is not advisable. This is true mainly with moves in fly (MOVEFLY LINEAR TO ... ADVANCE) and big changes of the move direction. In these cases the axis 1 could be asked to move with very high accelerations. There are no problems to cross this zone in the joint modality (MOVE JOINT or jog JNT).
This table is only valid for SMART NH3 robot shelf models!
The prohibited zone for SMART NH1-NH2-NH3 robots that are not shelf, is very limited. When the WCP is exactly under axis 1, one of the three following error messages is displayed : 36995 (0x9083) "Axis 1 at undefined position" before starting the move. 62478 (0xf40e) "Axis 1 at undefined position" while moving into the forbidden zone. 40013 (0x9c4d) "Axis 1 at undefined position" while teaching/modifying a point. RCS MODULE - Status returned: -52 "Cartesian position is out of work range".
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 distances to include pre-twisted cables and hoses through the wrist. Following this concept, such a robot model is completely without any external cable on the forearm, avoiding the unknown behavior of the cables with conventional robots while moving close to the wrist singularity. The disadvantage is that SMART 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.
15.7.1
The same methods are useful to solve problems with points which are very close to the working area borders.
15.7.1.1
1.
pr-0-0-gpr_05.fm
15-18
00/0607
Presuppositions for SMART Robot programming In these cases it is always possible to modify the points (typically POSITIONS) only adding a small rotation around the approach direction. With the real robot this can be done by jogging in the TOL modality (jogging with reference to the tool frame) and pressing jog button +6/-6 (rotation around Z axis that is typically the approach vector); if the position comes from a CAD system or it is directly written in the program, just modify the third Eulerian angle e3 (POS(x, y, z, e1, e2, e3, )). On the real robot, a small rotation of 5 up to 10 allows the wrist to go away from the singularity zone. The rotation takes more effect if the tool approach vector is not parallel to axis 6 of the robot. If they are parallel, something can still be done, provided that the TCP is not aligned along axis 6. The following 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
Fig. 15.7 - GOOD situation (approach vector parallel to axis 6, but not aligned)
1.
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.
15.7.1.2
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 arent 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
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
15.7.2
pr-0-0-gpr_05.fm
00/0607
15-25
Presuppositions for SMART Robot programming pag. 15-7) but any trajectory can cross it. If the program is correctly designed, axis 5 is asked to move from a negative to a positive value (or vice-versa) while the wrist offset is always maintained on the same side. As already explained, the orientation is slightly changed during the movement. This is automatically done by the system without any need of modifying points.
1.
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
1.
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
15.8.1 Exact working range for SMART NH4
pr-0-0-gpr_05.fm
15-28
00/0607
16.
16.1 Introduction
The Collision Detection algorithm (optional feature) allows the system to stop the robot arm motion, as soon as any noise force on joints takes effect. Such a capability can be enabled and disabled by the user, 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! Current chapter supplies information about the following topics: Basic concepts Activation/deactivation of Collision Detection function Collision Detection functionality Collision Detection sensitivity type Reliability of Collision Detection functionality Notes about the collision detection use procedure Sample Programs.
etc. When a collision condition is detected (error message 62513SAX: collision detected), the system may enter into a particular phase during which the robot gets compliant and the emergency braking takes place Compliance The axes compliance has been used in order to be able to absorb part of the collision
pr-0-0-gpr_06.fm
00/1109
16-1
Collision Detection (optional feature) 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. Severity of collision error As from version 2.20 the severity of the collision error can be changed by bringing it from 10 (that causes a DRIVE OFF) to 8 (that generates a HOLD). To do this, set the new predefined variable $COLL_EFFECT ($ARM_DATA field ) to the value: 0 to generate, in the case of collision, a DRIVE OFF; 1 to set the machine in HOLD state. 2 to generate the system event 197 that indicates "collision detected"
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 the current motion, that would continue towards the obstruction, and programming the new trajectory. In the par. 16.7.5 Managing "collision detected" event on page 16-27, there is an example program. If it is wished, in the case of a severity 8 alarm, to activate the compliance mode, it is better to increase the SoftServo after collision ($TUNE[25]) timeout bringing it from 600 (default) to 1000 or 1200. This way of managing the Collision Detection is useful for "Pallet Search" applications in the robot operating area: the arm moves along a Cartesian direction and when it meets the pallet it stops, remaining fed, instead of generating an error and passing in DRIVE OFF.
pr-0-0-gpr_06.fm
16-2
00/1109
NOTE THAT: if the used System Software version is less than 2.02, when the Collision Detection functionality is enabled, any occurring 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[num_arm].COLL_ENBL := TRUE For versions after 2.02 the Collision Detection, once enabled, remains active 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: BIT_SET($ARM_DATA[num_arm].A_ALONG_1D[12], 11). Such a flag can be disabled by means of the following statement: BIT_CLEAR($ARM_DATA[num_arm].A_ALONG_1D[12], 11). To avoid that this bit is unintentionally saved in .C4G and enables the compliance service linked to the Collision Detection unexpectedly after a restart, the bit itself will be automatically reset by the system during the start-up.
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
00/1109
16-3
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_arm].COLL_ENBL := TRUE $COLL_TYPE:= COLL_MEDIUM 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_arm].COLL_ENBL := TRUE $COLL_TYPE := COLL_LOW MOVE TO PNT0001J MOVE TO PNT0002J WITH $COLL_TYPE := COLL_HIGH 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. When the Collision Detection functionality is enbled in PROGR state (jog, ProgramEdit, etc.), the COLL_MANUAL correponding thresholds (which means $ARM_SENSITIVITY [COLL_MANUAL,nax] and $COLL_SOFT_PER [COLL_MANUAL,nax] ) are used, regardless the current value of $COLL_TYPE. For system software versions less than 2.02, the user is responsible of enabling the Collision Detection functionality again, by means of the following statement $CRNT_DATA[num_arm].COLL_ENBL := TRUE, as previously decribed.
16.4.2
pr-0-0-gpr_06.fm
16-4
00/1109
Collision Detection (optional feature) ARM_COLL_THRS(Arm, Coll_type, Time, Margin) Arm is the arm where the acquisition is to be made. Coll_type is the type of sensitivity for acquisition: the built-in will go directly to load the $ARM_SENSITIVITY variables for the specified Coll_type. To obtain the optimising of the sensitivity thresholds, the types of collision increase from 6 to 14, with the introduction of the types from COLL_USER3 to COLL_USER10. Time is the time, in seconds, that the acquisition lasts, and it has to correspond to at least the time of the path for which the thresholds are to be valid (a work cycle or a single motion). It may be from 1 to 300 seconds.
Since System Software version 2.42 and subsequent, values 1 and 0 of the Time parameter, take a new meaning: 1 - indicates to start the data acquisition in order to calculate the sensitivity thresholds 0 - indicates to stop the data acquisition and to assign the sensitivity 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 62520 - 02 SA DETERMINATION OF THE COLLISION CONCLUDED THRESHOLD 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) should allow the acquisition phase to be overcome .
pr-0-0-gpr_06.fm
00/1109
16-5
16.4.3
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 the Collision Detection function, the user is to check that 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
pr-0-0-gpr_06.fm
16-6
00/1109
Collision Detection (optional feature) It is the operators 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 defined for the Controller. The Collision Detection functionality operates using the currents calculated in advance by the dynamic model and the actual currents of each axis motor during the movement. Such a functionality warns the user that a collision occurred. The Collision Detection functionality works using the currents which are calculated in advance by the dynamic model and the currents actually used in each motor (axes) movements. The functionality warns the user about the occurring collision on one or more axes, if the difference between the two above mentionned currents is significantly big. VERY IMPORTANT! Remeber that the Collision Detection functionality has been designed to limit any damage to the robot and therefore to its equipment, in case of collision. So, since it is a functionality that immediately acts to limit the collision effect, it is expectable it also limits damages to the equipment of the cell where the robot works in. But it is important to understand that the Collision Detection functionality has not been designed to protect the operator in case of bad/wrong use of the robot. When a collision error occurs, the robot is immediately put in DRIVE OFF state and the following error message is issued: 62513 10 SAX COLLISION 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 Control Unit , chapter USE OF TEACH PENDANT).
16.6.2
a.1 It is necessary to have the final work program. a.2 To identify the thresholds for that work cycle Because of the sensitivity of the algorithm, there is a difference between identifying the COLD ROBOT thresholds (robot stationary, has been in DRIVE OFF for hours, if possible overnight) and WARMED ROBOT (a robot is considered WARMED after it has performed at least 15-20 work cycles). To be certain that false collisions will not occur, the thresholds are to be identified with the machine COLD. 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 these aspects and advise the user how to also make the function very sensitive.
pr-0-0-gpr_06.fm
00/1109
16-7
Collision Detection (optional feature) If greater sensitivity is desired with WARMED ROBOT, 2 sets of thresholds have to be identified: one for COLD ROBOT and one for WARMED ROBOT. It will be the task of the user to provide a non-holdable PDL2 program that, at the same time as the work cycle, manages the graduation of the thresholds from COLD 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.7.4 Updating of thresholds in cold robot/warmed robot mode on page 16-15. Note that the thresholds definition does NOT take place inside this program, but in the work program !
b.
Splitting-up the program The user program is to be splitted-up in some parts, in order to make it more efficient end effective. For example: A: Via point movements B: short positioning movements C: technological movements (pick, drop, welding, etc.) The user has to specify, for each type of movement, the right threshold which is due both to the robot position and its payload. When the program movements have been logically splitted-up, based upon the different movement types, go to the following step. Activating the functionality In order to activate the functionality, it is enough to insert the following statement at the program beginning: $CRNT_DATA[num_arm].COLL_ENABLE:=TRUE To deactivate it: $CRNT_DATA[numero_arm].COLL_ENABLE:=FALSE 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:).
c.
d.
Definition of Nodal/ModalSensitivity The system is provided with some predefined thresholds, for a general payload, like the robot payload: COLL_LOW COLL_MEDIUM COLL_HIGH While in programming state, the system automatically uses a 4th threshold: COLL_MANUAL Two more thresholds exists which can be configured by the user: COLL_USER1 COLL_USER2 ... COLL_USER10
pr-0-0-gpr_06.fm
16-8
00/1109
The sensitivity type can be defined in the program by means of two different strategies: modal definition ... $COLL_TYPE := COLL_xxxx MOVE ... ... this means that the chosen sensitivity threshold (COLL_xxxx) will be used nodal definition for all MOVE statements MOVE ... WITH $COLL_TYPE:= COLL_xxxx (A)(see step b.) ... MOVE ... WITH $COLL_TYPE:= COLL_yyyy (B)(see step 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). What does the sensitivity percentage threshold mean? For each axis, there is a maximum value of its deliverable current; for example, if IMAX=60 A, saying that the axis sensitivity is 90%,it means: (100% - 90%) * 60 A g. = 6 A
f.
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
pr-0-0-gpr_06.fm
00/1109
16-9
Collision Detection (optional feature) 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.) Movement at maximum speed Short movement (few centimeters) --> (B) type movement (see step b.) Movement at reduced speed For (A) type movements, it is recommended to start with a COLL_MEDIUM threshold \ for (B) type movements, start with COLL_HIGH Execute some motion cycles with Cold robot at 100% (max speed of program execution). If no false collisions occur, the chosen threshold is the right one. Otherwise, if some false collisions occur, set the threshold to COLL_LOW (for (A) type movements) or COLL_MEDIUM (for (B) type movements). If some false collisions still occur, initialize COLL_USER1 threshold to COLL_LOW values: $ARM_SENSITIVITY[COLL_USER1,ax:= $ARM_SENSITIVITY[COLL_LOW,ax] Decrease by 3% the value for each axis on which the false collision occured ($ARM_SENSITIVITY[COLL_USER1,ax]) and try again until no false collisions are detected. In the thresholds definition, it is recommended to try to keep uniformity in the values of the main axes 1-2-3 and the wrist axes 4-5-6 The thresholds resulting from the described above tests, are to be used for any movement which is similar to the analyzed one. As an alternative the ARM_COLL_THRS(Arm, Coll_type, Time, Margin) built-in can be used to identify the collision thresholds runtime. 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. 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, axis] 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.
i.
pr-0-0-gpr_06.fm
16-10
00/1109
Collision Detection (optional feature) 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 COLL_USER1..COLL_USER10: set to 1 for all axes, which means not compliant (to be configured by the user)
The compliance is to be chosen on the basis of the requirements; for example: if he would like to avoid very strong collisions, where the robot runs into big and rigid bodies, a high axes compliance would help to absorbe the impact, preserving mechanical parts if the robot operates in restricted areas, close to delicate equipments, a high compliance index could take damage because the robot, upon a collision, could run into such an equipment. So, in this situation it would be better to have a medium axes compliance. In the case of Spot Welding, if the user would like to prevent the tips from being stuck, a medium compliance for main axes and a higher compliance for wirst axes would be reasonable.
Since 2.02 software version, the soft servo modality is not automatically 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 be compliant and, with a wrong payload, the TCP could significantly move in an unpredictable way, because the balancing torque due to gravity is wrong. The user must INTENTIONALLY enable the compliant modality; he will be able to take real advantage from it, only if the payload has been carefully identified, in each step of his program.
pr-0-0-gpr_06.fm
00/1109
16-11
16.7.1
PROGRAM collision VAR pnt0001j, pnt0002j, pnt0003j, pnt0004j : JOINTPOS FOR ARM[1] BEGIN CONDITION[1] : WHEN AT START DO $COLL_TYPE := COLL_HIGH $CRNT_DATA[1].COLL_ENBL := TRUE ENDCONDITION CONDITION[2] : WHEN AT END DO $CRNT_DATA[1].COLL_ENBL := FALSE ENDCONDITION
MOVE TO $CAL_SYS CYCLE MOVE TO pnt0001j MOVE TO pnt0002j -- activating the collision detection functionality when needed only MOVE LINEAR TO pnt0003j WITH CONDITION[1], CONDITION[2] MOVE TO pnt0004j END collision
pr-0-0-gpr_06.fm
16-12
00/1109
16.7.2
PROGRAM collision2 VAR pnt0001j, pnt0002j, pnt0003j, pnt0004j : JOINTPOS FOR ARM[1] BEGIN CONDITION[1] NODISABLE : WHEN EVENT 99 DO -- enabling collision detection upon drive on (useful until 2.01 sw version) $CRNT_DATA[1].COLL_ENBL := TRUE ENDCONDITION
ENABLE CONDITION[1] MOVE TO $CAL_SYS -- activating collision detection in modal mode, low sensitivity $COLL_TYPE := COLL_LOW $CRNT_DATA[1].COLL_ENBL := TRUE CYCLE MOVE TO pnt0001j MOVE TO pnt0002j -- increasing the sensitivity for the movement to be monitored MOVE LINEAR TO pnt0003j WITH $COLL_TYPE = COLL_HIGH MOVE TO pnt0004j END collision2
pr-0-0-gpr_06.fm
00/1109
16-13
16.7.3
--- Recalculates the collision sensitivity thresholds every delta_t minutes --and at each GEN_OVR variation. -PROGRAM thresholds NOHOLD VAR dummy : BOOLEAN coll : INTEGER delta_t : INTEGER ROUTINE ru_thrs BEGIN -- Calculates the collision thresholds for ARM 1, 'coll' sensitivity type and -- acquires data for 120 seconds. ARM_COLL_THRS(1, coll, 120) END ru_thrs BEGIN -- Variable to keep the program active dummy := FALSE -- Type of sensitivity for which the thresholds recalculation is asked coll := COLL_USER3 --- Defines a delta time to recalculate the thresholds -delta_t := 60000 * 10 -- each 10 mins CONDITION[1] NODISABLE : --- Recalculates the thresholds if GEN_OVR changes -WHEN EVENT 85 DO $TIMER[1] := 0 ru_thrs ENDCONDITION CONDITION[2]: --- Recalculates the thresholds at the timeout. -WHEN $TIMER[1] > delta_t DO $TIMER[1] := 0 ENABLE CONDITION[2] ru_thrs ENDCONDITION ENABLE CONDITION[1] ENABLE CONDITION[2] -- Calculates the start thresholds ru_thrs -- Keeps the program active WAIT FOR dummy END thresholds
pr-0-0-gpr_06.fm
16-14
00/1109
16.7.4
PROGRAM collision NOHOLD, STACK = 2048 CONST ks_sw_rel = '02.08b ' -- Version Index CONST ks_sw_date = '03.06.06' -- date of the last modification CONST ki_idx_num_collision = 100 -- allowed collision number CONST ks_monitor_file_name = 'TD:\\monitor_coll.txt' CONST ks_old_monitor_file_name = 'TD:\\Old_monitor_coll.txt' CONST ki_num_arm = 1 -- arm number VAR -- SAVED GLOBAL VARS vb_start, vb_save, vb_comm, vb_time_out, vb_rob_move : BOOLEAN vb_system_percent, vb_rid, vb_clear_all : BOOLEAN vi_data_fine, vi_vt_a, vi_vt_b : INTEGER wb_det_coll : ARRAY[ki_idx_num_collision] OF BOOLEAN wb_det_coll_cold : ARRAY[ki_idx_num_collision] OF BOOLEAN vi_per_min : INTEGER -- EXPORTED FROM collision wi_coll_cold : ARRAY[ki_idx_num_collision, 6] OF INTEGER collision wi_coll_hot : ARRAY[ki_idx_num_collision, 6] OF INTEGER collision
-- NO SAVED GLOBAL VARS vb_coll_cold, vb_standby, vb_ti_out : BOOLEAN NOSAVE vi_numcicli, vi_coll_idx, vi_ciclo, vi_tempocicloinsec : INTEGER NOSAVE ws_commento : ARRAY[10] OF STRING[100] NOSAVE wi_prev_coll : ARRAY[6] OF INTEGER NOSAVE CONST ki_max_cicli = 50 -- number of cycles before deleting the monitor file ki_tempo_attesa = 1800 -- robot waiting time before starting with a new cycle (in -- milliseconds, set to 30 minutes ki_tempo_time_out = 5000 -- not moving robot time (in ms, set to 5 min) ki_tempo_attiva_coll_cold = 300000 -- collision swap time warm to cold -- (in ms, set to 5 min) -- if TRUE, the computed thresholds are reduced by the system software kb_riduzione_sw = FALSE -- DICHIARAZIONE DI INPUT ki_sdout_drive_on = 9 -- motors on ki_sdout_sel_manu = 112 -- manual selector ki_sdout_move_esec = 99 -- motion in progress ki_sdout_standby = 97 -- robot in standby ki_sdout_allarme_collision = 137 -- collision alarm ki_sdout_collision_detected = 138 -- occurred collision ki_no_move = 3 -- value specifying not moving robot
pr-0-0-gpr_06.fm
00/1109
16-15
2 -3 -4 -= 17
Not moving robot Condition declaration Moving robot Condition declaration Robot in standby state Condition declaration -- Active Program Condition declaration
-- Timer declaration ki_timer_tempo_ciclo = 1 -- Cycle time calculation timer ki_timer_time_out = 2 -- Time-out calculation timer ki_coll_detect = 5 ki_coll_actual = 6 ki_coll_basse = 7 ki_coll_dflt = 10 --$coll_type Calculated Collision --$coll_type Warm Collision --$coll_type Cold Collision --$coll_type default Collision
-- Exported routines ROUTINE ru_collision_start(ai_coll: INTEGER) EXPORTED FROM collision ROUTINE ru_collision_end EXPORTED FROM collision ROUTINE ru_ver EXPORTED FROM collision --Internal routines --ROUTINE ru_collision_low -- EXPORTED FROM collision --ROUTINE ru_check_var -- EXPORTED FROM collision --ROUTINE ru_check_coll -- EXPORTED FROM collision --ROUTINE ru_monitor_collision -- EXPORTED FROM collision --ROUTINE ru_rid_asse(num_asse, perc_rid : INTEGER) -- EXPORTED FROM collision --ROUTINE ru_agg_coll_cold -- EXPORTED FROM collision --ROUTINE ru_swap_collision -- EXPORTED FROM collision --ROUTINE ru_clear_coll -- EXPORTED FROM collision --ROUTINE ru_leggi -- EXPORTED FROM collision --- ru_ver -ROUTINE ru_ver BEGIN WIN_SET_CRSR(5, 3, 'CRT:'); WIN_SET_CRSR(5, 1, 'TP:') WIN_CLEAR(WIN_CLR_ALL, 'CRT:'); WIN_CLEAR(WIN_CLR_ALL, 'TP:') WRITE LUN_CRT ('Program CALCOLO COLLISION C4G version: ', ks_sw_rel, NL) WRITE LUN_TP ('Prog. CALC. COLLISION C4G vers.: ', ks_sw_rel, NL) WIN_SET_CRSR(6, 3, 'CRT:'); WIN_SET_CRSR(6, 1, 'TP:') WRITE LUN_CRT ('Last modif. date: ', ks_sw_date) WRITE LUN_TP ('Last modif. date: ', ks_sw_date) END ru_ver --- ru_clear_coll -ROUTINE ru_clear_coll VAR vi_for_3 : INTEGER BEGIN IF vb_clear_all = TRUE THEN FOR vi_for_3 := 1 TO ki_idx_num_collision DO wb_det_coll_cold[vi_for_3] := FALSE ENDFOR SYS_CALL('MS', 'UD:\\COLLISION', 'Y') vi_vt_b := 0
pr-0-0-gpr_06.fm
16-16
00/1109
ENDIF vb_clear_all := FALSE END ru_clear_coll --- ru_check_coll -ROUTINE ru_check_coll VAR li_i : INTEGER BEGIN IF (vb_coll_cold = TRUE) AND (wb_det_coll_cold[vi_coll_idx] = FALSE) THEN IF wb_det_coll[vi_coll_idx] = FALSE THEN ws_commento[1] := 'COLD COLLISION NOT CALCULATED' ELSE wb_det_coll_cold[vi_coll_idx] := TRUE FOR li_i := 1 TO 6 DO IF $ARM_SENSITIVITY[ki_coll_detect, li_i] < 1 THEN wb_det_coll_cold[vi_coll_idx] := FALSE ws_commento[9] := 'COLD COLLISION OUT OF RANGE' ELSE IF $ARM_SENSITIVITY[ki_coll_detect, li_i] > 30 THEN wi_coll_cold[vi_coll_idx, li_i] := ROUND($ARM_SENSITIVITY[ki_coll_detect, li_i] - 20) ELSE wi_coll_cold[vi_coll_idx, li_i] := ROUND($ARM_SENSITIVITY[ki_coll_detect, li_i]) ENDIF wi_coll_hot[vi_coll_idx, li_i] := wi_coll_cold[vi_coll_idx, li_i] wb_det_coll[vi_coll_idx] := FALSE ENDIF ENDFOR ENDIF ELSE IF wb_det_coll[vi_coll_idx] THEN FOR li_i := 1 TO 6 DO IF $ARM_SENSITIVITY[ki_coll_detect, li_i] < 1 THEN wb_det_coll[vi_coll_idx] := FALSE ws_commento[9] := 'COLLISION OUT OF RANGE' ELSE IF $ARM_SENSITIVITY[ki_coll_detect, li_i] > wi_coll_hot[vi_coll_idx, li_i] + 3 THEN wi_coll_hot[vi_coll_idx, li_i] += 2 ELSE IF $ARM_SENSITIVITY[ki_coll_detect, li_i] < wi_coll_hot[vi_coll_idx, li_i] THEN wi_coll_hot[vi_coll_idx, li_i] := ROUND($ARM_SENSITIVITY[ki_coll_detect, li_i]) ENDIF ENDIF IF wi_coll_hot[vi_coll_idx, li_i] > 30 THEN wi_coll_hot[vi_coll_idx, li_i] -= wi_coll_hot[vi_coll_idx, li_i] * vi_vt_a DIV 100 ENDIF ENDIF ENDFOR ENDIF ENDIF
pr-0-0-gpr_06.fm
00/1109
16-17
END ru_check_coll --- ru_check_var -ROUTINE ru_check_var VAR li_for_1, li_for_2, li_i : INTEGER BEGIN vb_start := FALSE vb_rid := FALSE IF NOT FL_STATE('uD:collision.var') THEN vi_ciclo := 0 vi_numcicli := ki_max_cicli + 1 vb_clear_all := TRUE ENDIF IF VAR_UNINIT(vi_per_min) THEN vi_per_min := 10 --reducing the computed value ENDIF IF VAR_UNINIT(vb_save) THEN vb_save := TRUE ENDIF FOR li_for_1 := 1 TO ki_idx_num_collision DO FOR li_for_2 := 1 TO 6 DO IF VAR_UNINIT(wi_coll_cold[li_for_1, li_for_2]) OR vb_clear_all THEN wi_coll_cold[li_for_1, li_for_2] := 10 ENDIF IF VAR_UNINIT(wi_coll_hot[li_for_1, li_for_2]) OR vb_clear_all THEN wi_coll_hot[li_for_1, li_for_2] := 10 ENDIF IF VAR_UNINIT(wi_prev_coll[li_for_2]) THEN wi_prev_coll[li_for_2] := 10 ENDIF ENDFOR IF VAR_UNINIT(wb_det_coll[li_for_1]) THEN wb_det_coll[li_for_1] := FALSE ENDIF IF VAR_UNINIT(vi_data_fine) THEN vi_data_fine := CLOCK ENDIF IF VAR_UNINIT(wb_det_coll_cold[li_for_1]) THEN wb_det_coll_cold[li_for_1] := FALSE ENDIF ENDFOR IF VAR_UNINIT(vb_clear_all) THEN vb_clear_all := TRUE ENDIF FOR li_i := 1 TO 10 DO ws_commento[li_i] := '0' ENDFOR vi_vt_a := 0 vb_system_percent := kb_riduzione_sw ARM_COLL_THRS(ki_num_arm, ki_coll_detect, 0, vb_system_percent) -- Robot Controller waiting
pr-0-0-gpr_06.fm
16-18
00/1109
IF CLOCK > vi_data_fine + ki_tempo_attesa THEN WRITE LUN_TP ('ROBOT IN STANDBY COLLISION COLD ACTIVATED', NL) WRITE LUN_CRT ('ROBOT IN STANDBY COLLISION COLD ACTIVATED', NL) vb_standby := TRUE ELSE vb_standby := FALSE ENDIF vb_ti_out := FALSE $TIMER[ki_timer_time_out] := 0 vb_coll_cold := FALSE -- Robot Alarm Condition CONDITION[ki_cond_ch_abilita] : WHEN DEACTIVATE DO vb_start := FALSE vb_save := TRUE ENDCONDITION ENABLE CONDITION[ki_cond_ch_abilita] -- Routine to calculate again all the collisions ru_clear_coll END ru_check_var
--- ru_monitor_collision -ROUTINE ru_monitor_collision VAR li_i, li_lun : INTEGER BEGIN -- Collision monitoring file creation IF FL_STATE(ks_monitor_file_name) THEN OPEN FILE li_lun (ks_monitor_file_name, 'wa') ELSE OPEN FILE li_lun (ks_monitor_file_name, 'wa') WRITE li_lun (NL, NL) WRITE li_lun (' Cycle time monitoring Program is ', NL) WRITE li_lun (' Collision sensitivity ', NL) WRITE li_lun (' created on ,', DATE, ' , VERS. 2-8 , SEVEL', NL) WRITE li_lun (NL, NL) ENDIF WRITE li_lun (NL, NL) WRITE li_lun ('COLL_USER', vi_coll_idx, NL) FOR li_i := 1 TO 10 DO IF ws_commento[li_i] = '0' THEN ELSE WRITE li_lun (ws_commento[li_i], NL) ENDIF ENDFOR WRITE li_lun ('Collision enabled: ', $CRNT_DATA[ki_num_arm].COLL_ENBL, $COLL_TYPE, NL) FOR li_i := 1 TO 6 DO WRITE li_lun ($ARM_DATA[ki_num_arm].ARM_SENSITIVITY[$COLL_TYPE, li_i])
pr-0-0-gpr_06.fm
00/1109
16-19
ENDFOR WRITE li_lun (NL, 'STBY :', vi_vt_a > 0, ' ') WRITE li_lun ('UTILIZZO RID_ASSE: ', vb_rid, NL) IF wb_det_coll[vi_coll_idx] THEN WRITE li_lun ('Monitor on :', DATE, NL) WRITE li_lun ('Cycle n=', vi_ciclo, NL) WRITE li_lun ('Measured cycle time: ', vi_tempocicloinsec, 'sec.', NL) WRITE li_lun (NL) FOR li_i := 1 TO 6 DO WRITE li_lun ('COLL_DETECT ax ', li_i, ' = ', $ARM_SENSITIVITY[ki_coll_detect, li_i], NL) ENDFOR WRITE li_lun (NL) WRITE li_lun ('Collisions reduction: ', vi_per_min, '% TYPE: ', $COLL_TYPE, NL) FOR li_i := 1 TO 6 DO WRITE li_lun ('COLL_ACTUAL ax ', li_i, ' = ', $ARM_SENSITIVITY[$COLL_TYPE, li_i], NL) ENDFOR WRITE li_lun (NL) ELSE IF vb_coll_cold = TRUE THEN WRITE li_lun ('Monitor on :', DATE, NL) WRITE li_lun ('Cycle n=', vi_ciclo, NL) WRITE li_lun ('Measured cycle time: ', vi_tempocicloinsec, 'sec.', NL) WRITE li_lun (NL) FOR li_i := 1 TO 6 DO WRITE li_lun ('coll_fredde ax', li_i, ' = ', wi_coll_cold[vi_coll_idx, li_i], NL) ENDFOR WRITE li_lun (NL) ENDIF ENDIF IF wb_det_coll[vi_coll_idx] = FALSE THEN FOR li_i := 1 TO 6 DO WRITE li_lun (wi_prev_coll[li_i]) ENDFOR WRITE li_lun (NL) WRITE li_lun ('COLLISION ', 'COLL_USER', vi_coll_idx, ' NOT CALCULATED') WRITE li_lun (NL) ENDIF CLOSE FILE li_lun END ru_monitor_collision --- ru_rid_asse -ROUTINE ru_rid_asse(num_asse, perc_rid : INTEGER) BEGIN vb_rid := TRUE IF $CRNT_DATA[ki_num_arm].COLL_ENBL = TRUE THEN IF ($COLL_TYPE = 6) OR ($COLL_TYPE = ki_coll_dflt) THEN IF $ARM_SENSITIVITY[$COLL_TYPE, num_asse] > 20 THEN $ARM_SENSITIVITY[$COLL_TYPE, num_asse] := $ARM_SENSITIVITY[$COLL_TYPE, num_asse] - ROUND($ARM_SENSITIVITY[$COLL_TYPE, num_asse] * perc_rid DIV 100) ENDIF
pr-0-0-gpr_06.fm
16-20
00/1109
ENDIF ENDIF END ru_rid_asse --- ru_agg_coll_cold -ROUTINE ru_agg_coll_cold VAR li_i : INTEGER BEGIN IF wb_det_coll[vi_coll_idx] = TRUE THEN FOR li_i := 1 TO 6 DO IF $ARM_SENSITIVITY[ki_coll_detect, li_i] < wi_coll_cold[vi_coll_idx, li_i] THEN wi_coll_cold[vi_coll_idx, li_i] := ROUND($ARM_SENSITIVITY[ki_coll_detect, li_i]) ws_commento[6] := 'Updated cold collisions' ENDIF IF $ARM_SENSITIVITY[ki_coll_detect, li_i] > wi_coll_cold[vi_coll_idx, li_i] + 16 THEN wi_coll_cold[vi_coll_idx, li_i] += 2 ws_commento[6] := 'Updated cold collisions' ENDIF ENDFOR ENDIF END ru_agg_coll_cold --- ru_swap_collision -ROUTINE ru_swap_collision VAR li_ib : INTEGER li_rid : INTEGER BEGIN IF wb_det_coll_cold[vi_coll_idx] = FALSE THEN RETURN ENDIF IF (vb_ti_out = TRUE) OR $SDOUT[ki_sdout_allarme_collision] THEN FOR li_ib := 1 TO 6 DO li_rid := wi_coll_cold[vi_coll_idx, li_ib] * 20 DIV 100 wi_prev_coll[li_ib] := $ARM_SENSITIVITY[ki_coll_basse, li_ib] $ARM_SENSITIVITY[ki_coll_basse, li_ib] := ROUND(wi_coll_cold[vi_coll_idx, li_ib] - li_rid) wi_coll_hot[vi_coll_idx, li_ib] := wi_coll_cold[vi_coll_idx, li_ib] ENDFOR $COLL_TYPE := ki_coll_basse vb_coll_cold := TRUE ws_commento[7] := ' Collisions swapped to cold' ENDIF vb_ti_out := FALSE END ru_swap_collision
--
pr-0-0-gpr_06.fm
00/1109
16-21
--- ru_leggi -ROUTINE ru_leggi VAR tipocoll : INTEGER BEGIN WRITE LUN_TP (NL, 'Collision enabled: ', $CRNT_DATA[ki_num_arm].COLL_ENBL, NL) WRITE LUN_TP ('UTILIZZO RID_ASSE: ', vb_rid, NL) tipocoll := $COLL_TYPE WRITE LUN_TP ('Collision type: ', tipocoll, vi_coll_idx, NL) WRITE LUN_TP ('Threshold axis 1: ', $ARM_DATA[ki_num_arm].ARM_SENSITIVITY[tipocoll, WRITE LUN_TP ('Threshold axis 2: ', $ARM_DATA[ki_num_arm].ARM_SENSITIVITY[tipocoll, WRITE LUN_TP ('Threshold axis 3: ', $ARM_DATA[ki_num_arm].ARM_SENSITIVITY[tipocoll, WRITE LUN_TP ('Threshold axis 4: ', $ARM_DATA[ki_num_arm].ARM_SENSITIVITY[tipocoll, WRITE LUN_TP ('Threshold axis 5: ', $ARM_DATA[ki_num_arm].ARM_SENSITIVITY[tipocoll, WRITE LUN_TP ('Threshold axis 6: ', $ARM_DATA[ki_num_arm].ARM_SENSITIVITY[tipocoll, END ru_leggi --- ru_collision_low -ROUTINE ru_collision_low BEGIN -- Collision always active, for safety $COLL_TYPE := ki_coll_dflt $ARM_SENSITIVITY[ki_coll_dflt, 1] := 40 $ARM_SENSITIVITY[ki_coll_dflt, 2] := 30 $ARM_SENSITIVITY[ki_coll_dflt, 3] := 30 $ARM_SENSITIVITY[ki_coll_dflt, 4] := 30 $ARM_SENSITIVITY[ki_coll_dflt, 5] := 30 $ARM_SENSITIVITY[ki_coll_dflt, 6] := 25 $CRNT_DATA[ki_num_arm].COLL_ENBL := TRUE END ru_collision_low
1], NL) 2], NL) 3], NL) 4], NL) 5], NL) 6], NL)
--- ru_collision_start: start function ---ROUTINE ru_collision_start(ai_coll, ai_tempo : INTEGER) ROUTINE ru_collision_start(ai_coll : INTEGER) VAR li_rid, li_i : INTEGER BEGIN
pr-0-0-gpr_06.fm
16-22
00/1109
vi_coll_idx := ai_coll ru_check_var IF PROG_STATE('collision') > 0 THEN SYS_CALL('pd', 'collision') ENDIF IF $SDOUT[ki_sdout_sel_manu] = OFF THEN SYS_CALL('pa', 'collision') ENDIF IF ($GEN_OVR = 100) AND (vb_standby = FALSE) AND (wb_det_coll[vi_coll_idx] = TRUE) AND (wb_det_coll_cold[vi_coll_idx] = TRUE) AND ($SDOUT[ki_sdout_sel_manu] = OFF) THEN -- Warm collision enabled on COLL_ACTUAL and new collisions calculated ws_commento[2] := 'ROBOT COLLISION HOT ACTIVATED' FOR li_i := 1 TO 6 DO li_rid := wi_coll_hot[vi_coll_idx, li_i] * vi_per_min DIV 100 $ARM_SENSITIVITY[ki_coll_actual, li_i] := ROUND(wi_coll_hot[vi_coll_idx, li_i] - li_rid) ENDFOR $COLL_TYPE := ki_coll_actual ARM_COLL_THRS(ki_num_arm, ki_coll_detect, 1, vb_system_percent) $CRNT_DATA[ki_num_arm].COLL_ENBL := TRUE vb_coll_cold := FALSE wb_det_coll[vi_coll_idx] := TRUE ELSE -- Cold collision activated if an error occurred in the previous cycle, and -- warm collision calculated ws_commento[3] := 'GEN_OVR < 100 or TIME_OUT ROBOT COLLISION COLD ACTIVATED' IF wb_det_coll_cold[vi_coll_idx] = TRUE THEN FOR li_i := 1 TO 6 DO li_rid := wi_coll_cold[vi_coll_idx, li_i] * 20 DIV 100 $ARM_SENSITIVITY[ki_coll_basse, li_i] := ROUND(wi_coll_cold[vi_coll_idx, li_i] - li_rid) ENDFOR $COLL_TYPE := ki_coll_basse $CRNT_DATA[ki_num_arm].COLL_ENBL := TRUE ELSE ru_collision_low ws_commento[5] := 'Teaching COLL_COLD, low collisions activated' ENDIF IF ($GEN_OVR = 100) AND ($SDOUT[ki_sdout_sel_manu] = OFF) THEN ws_commento[4] := 'Collision autoteach ' ARM_COLL_THRS(ki_num_arm, ki_coll_detect, 1, vb_system_percent) wb_det_coll[vi_coll_idx] := TRUE ELSE wb_det_coll[vi_coll_idx] := FALSE ENDIF vb_coll_cold := TRUE ENDIF vb_start := TRUE $TIMER[ki_timer_tempo_ciclo] := 0 END ru_collision_start --- ru_collision_end: end function
pr-0-0-gpr_06.fm
00/1109
16-23
-ROUTINE ru_collision_end BEGIN IF VAR_UNINIT(vi_coll_idx) THEN RETURN ENDIF vi_tempocicloinsec := $TIMER[ki_timer_tempo_ciclo] DIV 1000 ARM_COLL_THRS(ki_num_arm, ki_coll_detect, 0, vb_system_percent) IF vb_start = FALSE THEN RETURN ENDIF vb_start := FALSE IF VAR_UNINIT(vi_numcicli) THEN vi_numcicli := 0 ENDIF IF VAR_UNINIT(vi_ciclo) THEN vi_ciclo := 0 ENDIF IF VAR_UNINIT(vi_vt_b) THEN vi_vt_b := 1 ENDIF IF wb_det_coll[vi_coll_idx] THEN WHILE PROG_STATE('collision') > 0 DO DELAY 50 ENDWHILE vi_vt_b += 1 ENDIF vi_ciclo += 1 vi_numcicli += 1 IF vi_numcicli > ki_max_cicli THEN IF FL_STATE(ks_monitor_file_name) THEN SYS_CALL('fd', ks_old_monitor_file_name) SYS_CALL('fr', ks_monitor_file_name, ks_old_monitor_file_name) ENDIF DELAY 300 vi_numcicli := 0 ENDIF -- Recording last cycle timer vi_data_fine := CLOCK -- Checking collision calculation ru_check_coll -- Updating cold collisions if lower values
pr-0-0-gpr_06.fm
16-24
00/1109
ru_agg_coll_cold -- Recording calculated collisions values in the monitor ru_monitor_collision ru_collision_low END ru_collision_end --- MAIN -BEGIN vb_comm := FALSE vb_start := FALSE -- Robot Alarm condition CONDITION[ki_cond_check_allarm] : WHEN $SDOUT[ki_sdout_drive_on]- OR ($TIMER[ki_timer_time_out] > ki_tempo_attiva_coll_cold) DO wb_det_coll[vi_coll_idx] := FALSE ru_swap_collision WHEN vb_start = FALSE DO ENDCONDITION -- Not moving robot condition CONDITION[ki_cond_time_out] : WHEN $CRNT_DATA[ki_num_arm].MOVE_STATE <= ki_no_move DO $TIMER[ki_timer_time_out] := 0 vb_ti_out := TRUE ENABLE CONDITION[ki_cond_rob_move] WHEN vb_start = FALSE DO ENDCONDITION -- Moving robot condition CONDITION[ki_cond_rob_move] : WHEN $CRNT_DATA[ki_num_arm].MOVE_STATE > ki_no_move DO vb_ti_out := FALSE ENABLE CONDITION[ki_cond_time_out] WHEN $TIMER[ki_timer_time_out] > ki_tempo_time_out DO vi_vt_a := 15 WHEN vb_start = FALSE DO ENDCONDITION -- Robot in Standby state Condition declaration CONDITION[ki_cond_rob_stop] : WHEN $SDOUT[ki_sdout_move_esec]- AND ($SDOUT[ki_sdout_standby] = OFF) OR $SDOUT[ki_sdout_standby]+ AND $SDOUT[ki_sdout_move_esec] OR ($TIMER[ki_timer_time_out] > ki_tempo_attiva_coll_cold) AND (vb_ti_out = TRUE) DO wb_det_coll[vi_coll_idx] := FALSE WHEN $GEN_OVR < 100 DO vb_comm := TRUE wb_det_coll[vi_coll_idx] := FALSE WHEN vb_start = FALSE DO ENDCONDITION WAIT FOR vb_start
pr-0-0-gpr_06.fm
00/1109
16-25
ENABLE CONDITION[ki_cond_check_allarm] ENABLE CONDITION[ki_cond_time_out] ENABLE CONDITION[ki_cond_rob_stop] WAIT FOR vb_start = OFF IF vb_comm THEN ws_commento[8] := 'ROBOT IN TIME_OUT, detection failed ' ENDIF IF $GEN_OVR < 100 THEN ws_commento[8] := '$GEN_OVR < 100, detection failed ' ENDIF IF vb_save OR (vi_vt_b > 100) THEN SYS_CALL('MS', 'UD:\\COLLISION', 'Y') vb_save := FALSE vi_vt_b := 0 ENDIF DELAY 300 END collision
pr-0-0-gpr_06.fm
16-26
00/1109
16.7.5
PROGRAM colltouch VAR pnt0006p, pnt0007p, pnt0008p: POSITION pnt0001p, pnt0002p, pnt0003p, pnt0004p, pnt0005p: POSITION BEGIN CONDITION[1]: WHEN EVENT 94 DO UNLOCK -- reset for RESUME -- next restart . . . ENDCONDITION CONDITION[2]NODISABLE: WHEN EVENT 197 DO LOCK -- locks the machine CANCEL CURRENT -- cancels the current motion . . . ENDCONDITION . . . ENABLE CONDITION[1] ENABLE CONDITION[2] $COLL_TYPE:=COLL_USER1 $COLL_EFFECT:=2 $CRNT_DATA[1].COLL_ENBL:=TRUE CYCLE MOVE TO ... . . . END colltouch
pr-0-0-gpr_06.fm
00/1109
16-27
pr-0-0-gpr_06.fm
16-28
00/1109
17.
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 dimensions always has to be defined.
The positioners are divided into families, and a paragraph is dedicated to each of them. The procedures and conventions contained in the following paragraphs are very important to ensure the consistency of the installation and above all the correct functioning of the system when, for example, the cooperative motion is used, i.e. the enslavement of a robot in the position of the part to be processed mounted on the positioner. It is the responsibility of the positioner designer to check and guarantee that the unit operates in conformity with the relevant standards. In particular it must be verified that in the following situations: normal use (Automatic/Programming), emergency stop, safety braking, Hold, Drive off, impact on any mechanical pads the unit behaves in a manner that complies with current safety standards.
hs-0-0-mot_04.fm
00/0708
17-1
17.2 Summary
The following subjects: USE of the TP4i Teach Pendant (use of the external axes configuration software) and USE of the TO_SET program (calculation of positioner base position), are dealt with respectively: in the Use of the C4G Control Unit Manual, in the paragraph Setup Page, and in this manual, Cap. TO_SET Program - tool handling The positioners described herein are grouped as follows: Positioners with 1 rotating axis type MP, PTDO, PTDV, TR3000/6000 PTORB - Positioner with 2 perpendicular axes Positioners with 2 non perpendicular axes, type PTORB-alfa Integrated robot positioning axes
The following indications are contained for each of the above topics: definition mode of base and flange reference systems, how to execute the calibration and characteristic parameters for the positioner kinematic description.
Axis rotation directions Convention for the mechanical positioning of points P1, P2 and P3
17.3.1
17-2
00/0708
Use of Positioners managed by C4G 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.
17.3.2
1. 2.
axis 1 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] MAXIMUM PROGRAMMING SPEED It is very important that the calculation is made with extreme accuracy, so as to meet the requirements of current safety standards. If parts are machined that have very different dimensions, the worst case is to be used for the calculation (part maximum overall dimensions). The override value is inserted with the configuration tool.
17.5 Positioners with 1 rotating axis type MP, PTDO, PTDV, TR3000/6000
17.5.1 Definition of the reference system
The reference system for the lathe positioner flange (bearing plate) is defined according to the following conventions (see Fig. 17.2): the flange reference system origin (Oflange) lays on the surface of the flange coinciding with the positioner axis rotation centre; the Zflange axis is to be perpendicular to the flange surface with outward direction.
hs-0-0-mot_04.fm
17-4
00/0708
Note the convention that concerns points P1, P2, P3 described in the Cap. TO_SET Program - tool handling 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.
17.5.3
Kinematic description
To configure these positioners, see the USE of C4G Control 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. 2.
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 column integrated axis; in this case the integrated axis will be axis 7, whereas the lathe will become axis 8
OPTION Axis length [mm] Type of axis Axis offset [mm] Programmed speed override
AXIS 7 7 7 7
VALUE / ROTATING / X
17.6.1
17.6.1.1
hs-0-0-mot_04.fm
17-6
00/0708
Use of Positioners managed by C4G 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 Xbase 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.
Both of these conditions are important: an approximation in relation to one of these will jeopardise the machine precision during cooperative motion (the robot does not hold the position on the part). Also the convention should be borne in mind that concerns points P1, P2, P3 described in the Cap. TO_SET Program - tool handling to calculate $BASE (or $AUX_BASE) of the positioners (see Fig. 17.4).
1. 2.
axis 1 axis 2
hs-0-0-mot_04.fm
00/0708
17-7
17.6.1.3
Kinematic description
To configure these positioners, see the USE of C4G Control 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. 2. 3.
$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 be equal to the radius of the bearing plate. This is to always consider the worst case of part maximum overall dimensions or of the mechanical structure of the positioner in motion. Next, the configuration software, on the 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
OPTION Axis length [mm] Axis type Axis offset [mm] Program speed override
AXIS 7 7 7 7
VALUE L1 ROTATING / X1
OPTION Axis length [mm] Axis type Axis offset [mm] Program speed override
AXIS 8 8 8 8
VALUE / ROTATING L2 X2
17.6.2
17.6.2.1
The positioner flange reference system is defined according to the following conventions (see Fig. 17.6): the origin of the flange reference system (Oflange) lays on the surface of the flange to coincide with the centre of rotation of the positioner second axis; the Zflange axis is perpendicular to the flange surface with outward direction.
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
Use of Positioners managed by C4G The second axis is to calibrate with all the flange reference axes parallel to the corresponding base reference; in particular Yflange is to be parallel to Ybase and have the same direction.
Both of these conditions are important: an approximation in relation to one of these will jeopardise the machine precision during cooperative motion (the robot does not hold the position on the part.). Also the convention is to be borne in mind that concerns points P1, P2, P3 described in Cap. TO_SET Program - tool handling to calculate the $BASE (or $AUX_BASE) of the positioners (see Fig. 17.6).
1. 2.
axis 1 axis 2
Xb, Yb, Zb, Ob= Xbase, Ybase, Zbase, Obase Xf, Yf, Zf, Of = Xflange, Yflange, Zflange, Oflange
17.6.2.2
Kinematic description
To configure these positioners, see the USE of C4G Control 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
Use of Positioners managed by C4G 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. 2. 3.
$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. OPTION Axis length [mm] Axis type Axis offset [mm] Program speed override
hs-0-0-mot_04.fm
AXIS 7 7 7 7
VALUE L1 ROTATING / X1
00/0708
17-11
OPTION Axis length [mm] Axis type Axis offset [mm] Program speed override
AXIS 8 8 8 8
The positioner flange reference system is defined according to the following conventions (see ): The origin of the flange reference system (Oflange) lays on the flange surface coinciding with the centre of rotation of the positioner second axis; the Zflange axis is perpendicular to the flange surface with outward direction.
hs-0-0-mot_04.fm
17-12
00/0708
1. 2.
axis 1 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.
Both of these conditions are important: an approximation in relation to one of these will jeopardise the machine precision during cooperative motion (the robot does not hold the position on the part). Also the convention is to be borne in mind that concerns points P1, P2, P3 described in the Cap. TO_SET Program - tool handling to calculate the $BASE (or $AUX_BASE) of the positioners (see Fig. 17.8).
17.7.3
Kinematic description
To configure these positioners, see the USE of C4G Control Unit Manual, Setup Page, paragraph AUX_AXES.
hs-0-0-mot_04.fm
00/0708
17-13
Use of Positioners managed by C4G 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 be equal to the radius of the bearing plate r2m; in the same way for r1 a minimum value is to be used equal to r1m to take into consideration the mechanical structure of axis 7. This is to always consider the worst case of part maximum overall dimensions or of the mechanical structure of the positioner in motion.. Next, the configuration software, on the 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
OPTION Axis length [mm] Axis type Axis offset [mm] Program speed override
AXIS 7 7 7 7
VALUE L1 ROTATING * X1
Note that the absolute value of the alpha angle is to be inserted even if the measurement unit of the axis offset is in millimetres.
OPTION Axis length [mm] Axis type Axis offset [mm] Program speed override
AXIS 8 8 8 8
VALUE L3 ROTATING L2 X2
17.8.1
Integrated slide
Regarding the configuration of a robot resting on a linear slide handled by an auxiliary axis. By integrated motion it is intended that the calculation of the TCP position takes into account the position of the slide (only X axis). In other words, the slide is integrated in the direct kinematics of the system of axes. This has two practical effects: The Cartesian positions (POSITION) are defined in the cell space regardless of the linear slide axis position and therefore moving only the slide will change the Cartesian position; Manually moving the slide (jog) in a Cartesian reference (for example jog BASE), the TCP position remains unchanged due to the displacement of the robot axes that offset the displacement.
hs-0-0-mot_04.fm
00/0708
17-15
On the Teach Pendant the linear axis can be moved in Cartesian mode, using the 7+ and 7- keys and it is not possible to enable or disable the slide integration in real time (a Controller restart is needed).
17.8.1.1
The Z axis reference of the $BASE variable to the slide is not managed and therefore this remains linked to the position of the robot base. On the slide there is the mounting flange of the robot base that can only be positioned standing with the base always perpendicular to the slide motion axis. Vice-versa 4 robot base orientation positions are allowed (at 90 intervals ) in relation to the slide base (see Fig. 17.12).
1. 2.
Xbs, Ybs, Zbs = Xbase_slide, Ybase_slide, Zbase_slide Xbr, Ybr, Zbr = Xbase_robot, Ybase_robot, Zbase_robot
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
Use of Positioners managed by C4G 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 - tool handling.
17.8.1.3
Kinematic description
To configure these positioners, see the USE of C4G Control 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. OPTION Axis length [mm] Axis type Axis offset [mm] Program speed override AXIS 7 7 7 7 VALUE L TRANSLATING / X
Fig. 17.11 - Parameters for the kinematic description of the integrated slide
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:
hs-0-0-mot_04.fm
180 rotation ==> Xrobot_base in opposite direction to Xslide_base; 0 rotation ==> Xrobot_base in the direction of Xslide_base;
00/0708
17-17
Use of Positioners managed by C4G 270 rotation ==> Xrobot_base in opposite direction to Yslide_base ; 90 rotation ==> Xrobot_base in the direction of Yslide_base;
17.8.2
On the Teach Pendant the rotating axis can be moved in Cartesian mode, using the 7+ and 7- keys and it is not possible to enable or disenable the column integration in real time.
17.8.2.1
hs-0-0-mot_04.fm
17-18
00/0708
Use of Positioners managed by C4G 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 (see Fig. 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. 2. 3.
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 - tool handling.
17.8.2.3
Kinematic description
The parameters needed for the column correct kinematic description are indicated in Fig. 17.14. It is also necessary to calculate the rotation speed to be attributed to the column being programmed, so that the maximum tangential speed does not exceed the value of 250 mm/s (see standard in force). Therefore, first of all radius r has to be measured with maximum robot extension, complete with tool mounted on the flange, as indicated in Fig. 17.14. Next, the configuration software, on the TP4i/WiTP Teach Pendant, calculates the manual mode speed value.
hs-0-0-mot_04.fm
00/0708
17-19
Fig. 17.14 - Parameters for the kinematic description of the integrated column - 1
1.
R = column radius H = column height Xb, Yb, Zb = Xbase, Ybase, Zbase The axis is right-hand: if it is not, change the sign of the transmission ratio.
A table follows, summarising the useful mechanical data, taking into account that it is mandatory that the integrated column is handled with auxiliary axis 7. OPTION (7) Axis length [mm] (13) Axis type (15) Axis offset [mm] (18) Program speed override AXIS 7 7 7 7 VALUE R ROTATING H X
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 ; 270rotation - Xrobot_base in opposite direction to Ycolumn_base ; 90rotation - Xrobot_base in the direction of Ycolumn_base ;
hs-0-0-mot_04.fm
17-20
00/0708
Fig. 17.15 - Parameters for the kinematic description of the integrated column - 2
17.8.3
From the Teach Pendant, the linear axes can be moved in cartesian mode, using AUX A - AUX B keys (by selecting the desired axes two-by-two). It is also allowed to move the portal by means of the JPAD keys, where each couple of keys allows to move one of the portal axes. For further information related 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
17.8.3.1
hs-0-0-mot_04.fm
00/0708
17-21
Use of Positioners managed by C4G 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.
17.8.3.3
Kinematic description
The parameters needed for the 3 linear axes Portal kinematic description are indicated in Fig. 17.7. Then, the configuration software available on the Teach Pendant calculates the manual mode speed value.
hs-0-0-mot_04.fm
17-22
00/0708
To configure the 3 linear axes Portal, 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 Portal is number 7 and the next ones are in sequence. OPTION Axis length [mm] Axis type [Tras/Rot] Axis offset [mm] Axis type [Coord] Axis length [mm] Axis type [Tras/Rot] Axis type [Coord] Axis length [mm] Axis type [Tras/Rot] Axis type [Coord] AXIS 7 7 7 7 8 8 8 9 9 9 VALUE L1 TRANSLATING H [X,Y,Z] L2 TRANSLATING [X,Y,Z] L3 TRANSLATING [X,Y,Z]
Fig. 17.17 - Parameters for the kinematic description of the 3 linear axes Portal
Besides the geometrical data indicated above, for the complete kinematic description of
hs-0-0-mot_04.fm
00/0708
17-23
Use of Positioners managed by C4G the 3 linear axes Portal, also the assembly angle of the robot base on the portal flange is to be defined.
17.8.4
From the Teach Pendant, the linear axes can be moved in cartesian mode, using AUX A - AUX B keys (by selecting the desired axes two-by-two). For further information related 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
17.8.4.1
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 two Portal axes (please note that the first one must be axis 7 and the next one is in sequence).
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.
17.8.4.3
Kinematic description
To configure the 2 linear axes Portal, please also refer to the 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. OPTION Axis length [mm] Axis type [Tras/Rot] Axis offset [mm] Axis type [Coord] Axis length [mm] Axis type [Tras/Rot] Axis type [Coord] AXIS 7 7 7 7 8 8 8 VALUE L1 TRANSLATING H [X,Y,Z] L2 TRANSLATING [X,Y,Z]
hs-0-0-mot_04.fm
00/0708
17-25
Fig. 17.19 - Parameters for the kinematic description of the 2 linear axes Portal
Besides the geometrical data indicated above, for the complete kinematic description of the 2 linear axes Portal, also the assembly angle of the robot base on the Portal flange is to be defined.
17.8.5
From the Teach Pendant, the rotational axis and the translational one of the rail, can be moved in cartesian mode, using AUX A - AUX B keys. For further information related 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
17.8.5.1
17-26
00/0708
Use of Positioners managed by C4G 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.
17.8.5.3
Kinematic description
The parameters needed for the Integrated trans-rotational Column complete kinematic description are indicated in Fig. 17.21. It is also necessary to calculate the rotational speed to be set for the Column while in PROGR mode, so that the maximum tangential speed does not exceed the value of 250 mm/s (see standard in force). Therefore, first of all radius r has to be measured with maximum robot extension, equipped with the tool mounted on the flange, as indicated in Fig. 17.21. Then, the configuration software available on the Teach Pendant calculates the manual mode speed value.
hs-0-0-mot_04.fm
00/0708
17-27
To configure 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). OPTION Axis length [mm] Axis type [Tras/Rot] Axis offset [mm] Axis length [mm] Axis type [Tras/Rot] Axis offset [mm] AXIS 7 7 7 8 8 8 VALUE L TRANSLATING H1 R ROTATIONAL H2
Fig. 17.21 - Parameters for the kinematic description of the Integrated Trans-rotational Column
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 ; 270rotation - Xrobot_base in opposite direction to Ycolumn_base ; 90rotation - Xrobot_base in the direction of Ycolumn_base .
hs-0-0-mot_04.fm
17-28
00/0708
18.
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.
As from version 2.20 of the System Software, the TO_SET program can only be executed on the TP4i/WiTP teach pendant . Therefore all the descriptions that follow in this chapter refer to the TP4i/WiTP teach pendant only. 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
00/1109
18-1
18.2 Activation
TO_SET is supplied on CD in00/1109 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 from version 2.20 of the System Software TO_SET is always present on the 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
18.2.1
HS-0-C4E-USO_44.fm
18-2
00/1109
b.
c.
d.
18.2.2
HS-0-C4E-USO_44.fm
00/1109
18-3
TO_SET Program - tool handling follow the procedure described below: a. b. select the directory containing the TO_SET files from the WinC4G terminal, send the FilerUtilityInstall TO_INST.COD command
The screen page contains the following information: TO_SET 3.02x: Ov:100: Ar: 1: Ty: Tol: TOOL UFRAME POSITIONER CONVEYOR Exit TO_SET program name + version number the value of $GEN_OVR the number of the selected ARM type of selected movement (F1): TOOL automatic calculation (F2): UFRAME automatic calculation (F3): Base automatic calculation for POSITIONERS (F4): CONVEYOR installation and configuration (F6): end of TO_SET program
Using the function keys F1..F6 one of the items displayed can be selected
After exiting from the tool it is asked if the tool is to be deleted from UD.
The following detailed description illustrates the available procedures, specifically: TOOL automatic calculation REMOTE TOOL Automatic Calculation UFRAME automatic calculation
HS-0-C4E-USO_44.fm
18-4
00/1109
TO_SET Program - tool handling REMOTE UFRAME automatic calculation Payload identification (optional function) BASE automatic calculation for POSITIONERS (optional) CONVEYOR TRACKING installation and configuration (optional service)
18.4.1
18.4.1.1
Tools needed
Calibrated tool
This is a calibrated tool with known X, Y, Z measurements that will be mounted on the robot flange for the acquisition of the reference position. As an alternative an identified point on the work tool can be used, for which the distance from the robot flange centre must be known and precise. Taking as an example a Smart NH3, the calibrated tool may be : measurement: 117 [mm] In this case the calibrated tool is to be mounted on the robot flange in X_tool direction and the values to be declared are : X=150, Y=0, Z=-8.
HS-0-C4E-USO_44.fm
00/1109
18-5
TO_SET Program - tool handling For any further information regarding the calibrated tool, see the Robot Technical Specifications Manual.
18.4.1.2
18.4.2
General characteristics
The TOOL MASTER can be mounted in Z_tool or in X_tool. Position B is made possible by a threaded precision hole on the robot flange. In this way it is possible to have the measuring tool mounted on the flange and at the same time the tool master screwed on the flange in X_tool direction. Possibility to calculate the tool with the robot on the FLOOR, on the WALL or hanging from the CEILING , taking care to position the cube (or any other point taken as reference) on the FLOOR ( if the robot is on the floor), on the WALL (if the robot is on the wall), on the CEILING (if the robot is suspended from the ceiling). All the robot positions on the reference, whether with tool master or with measuring tool, are not rigid: the operator can position the TCP on the reference as desired, according to requirements. Possibility to calculate the tool relocation as to the robot flange centre (X, Y, Z Tool) with three reset Euler angles (orientation nil). Possibility to calculate (besides X, Y, Z Tool) also the rotations around X_tool and Y_tool (<A>: Euler 1 and <E>: Euler 2) so as to fix the new Z_tool on the tool, in the required direction and sense (see also Tool orientation calculation). Possibility to calculate (besides X, Y, Z, A, E Tool) also the rotation around the new Z_tool (<R>: Euler 3), so as to fix for a certain "tool plane" the direction and sense of the X_tool and Y_Tool , rotating around the new Z_tool (see also Tool orientation calculation).
Detailed descriptions are given below, dealing with the following subjects: Tool orientation calculation How to identify the "dummy reference system"
18.4.2.1
18-6
00/1109
TO_SET Program - tool handling 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.2.2
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
00/1109
18-7
Accepted commands: <F1>: executes LOCAL TOOL ; a second screen page is accessed (Fig. 18.5 - Screen page 1.1) that asks the user to insert the number of the tool to be measured or checked executes REMOTE TOOL(see. par REMOTE TOOL Automatic Calculation) returns to main menu (see Fig. 18.2 - Screen page 0.0)
<F2>: <F6>:
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 available 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
00/1109
Accepted commands: <F1>: executes Tool calculation with standard method- Complete procedure; access given to screen page 1.4 (in Fig. 18.8 - Screen page 1.4) executes Tool verification with standard method - Partial procedure; access given to screen page 1.6 (in Fig. 18.10 - Screen page 1.6) executes Tool Calculation with "4 points method" - Complete procedure; access given to screen page 1.17 (in Fig. 18.21 - Screen page 1.17) activates the Payload identification (optional function) returns to main menu (see Fig. 18.2 - Screen page 0.0)
<F2>:
<F3>:
<F4>: <F6>:
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
00/1109
18-9
<F1>:
tool verification; there are two possibilities: when the standard method is used access is given to partial procedure screen page 1.6 (in Fig. 18.10 - Screen page 1.6), when the 4-points method is used , access is given to screen page 1.17 (in Fig. 18.21 - Screen page 1.17) executes a new calculation then returns to screen page 1.2 (in Fig. 18.6 - Screen page 1.2) passes to the execution of Payload identification (optional function) returns to main menu (see Fig. 18.2 - Screen page 0.0) 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)
18.4.4
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
00/1109
TO_SET Program - tool handling and allows modification, if necessary. Accepted commands: <F1>: <F2>: <F6>: continues the procedure (see Fig. 18.9 - Screen page 1.5) changes tool master values (see Fig. 18.17 - Screen page 1.13) 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: <F1>: <F6>: to be pressed when the robot is on the point; continues procedure (Fig. 18.10 - Screen page 1.6) returns to main menu (Fig. 18.2 - Screen page 0.0)
18.4.5
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
00/1109
18-11
Asks to bring the TCP of 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: <F1>: <F6>: to be pressed when the robot is on the point; continues procedure (Fig. 18.11 - Screen page 1.7) returns to main menu (Fig. 18.2 - Screen page 0.0)
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
00/1109
continues the procedure (Fig. 18.12 - Screen page 1.8) saves calculated values (Fig. 18.16 - Screen page 1.12 or remains Fig. 18.11 - Screen page 1.7) repeats procedure: (returns to Fig. 18.10 - Screen page 1.6) returns to main menu (Fig. 18.2 - Screen page 0.0).
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 frame ($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 in Fig. 18.13 - Screen page 1.9). Accepted commands: <F1>: <F2>: <F3>: <F4>: <F6>: to be pressed when orientation has been completed; continues procedure (Fig. 18.13 - Screen page 1.9) directs the Z_TOOL in relation to +X_BASE or -X_BASE directs the Z_TOOL in relation to +Y_BASE or -Y_BASE directs the Z_TOOL in relation to +Z_BASE or -Z_BASE returns to main menu (Fig. 18.2 - Screen page 0.0).
HS-0-C4E-USO_44.fm
00/1109
18-13
Displays the $TOOL calculated values (XYZ relocations and AER orientations). Accepted commands: <F1>: <F2>: <F3>: <F6>: continues the procedure (Fig. 18.14 - Screen page 1.10) saves calculated values (Fig. 18.16 - Screen page 1.12 or remains in Fig. 18.13 - Screen page 1.9) repeats the procedure; (returns to Fig. 18.12 - Screen page 1.8) returns to main menu (Fig. 18.2 - Screen page 0.0).
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: <F1>: <F2>: to be pressed when orientation has been completed; continues procedure (Fig. 18.13 - Screen page 1.9) directs the X_TOOL in relation to +X_BASE
HS-0-C4E-USO_44.fm
18-14
00/1109
directs the X_TOOL in relation to -X_BASE directs the X_TOOL in relation to +Y_BASE directs the X_TOOL in relation to -Y_BASE returns to main menu (Fig. 18.2 - Screen page 0.0).
Displays the $TOOL calculated values (XYZ relocations and AER orientations). Accepted commands:
returns to Fig. 18.6 - Screen page 1.2 saves calculated values (Fig. 18.16 - Screen page 1.12 or remains in Fig. 18.15 - Screen page 1.11) repeats the procedure (returns to Fig. 18.14 - Screen page 1.10) returns to main menu (Fig. 18.2 - Screen page 0.0).
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
00/1109
18-15
TO_SET Program - tool handling Fig. 18.17 - Screen page 1.13 displays the TOOL MASTER values (XYZ relocations) and allows their modification.
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: <F1>: <F6>: returns to Fig. 18.6 - Screen page 1.2 returns to main menu (Fig. 18.2 - Screen page 0.0) SAVE
The screen page in Fig. 18.19 - Screen page 1.15 displays whether the procedure for the calculated values has been omitted.
HS-0-C4E-USO_44.fm
18-16
00/1109
Accepted commands: <F1>: <F6>: repeats Save returns to main menu (Fig. 18.2 - Screen page 0.0)
18.4.6
1. 2. 3. 4.
HS-0-C4E-USO_44.fm
00/1109
18-17
TO_SET Program - tool handling b. c. Acquire point 1 Bring the TCP back to the reference point with a sufficiently different orientation as to the previous point Acquire point 2 Execute steps c. and d. again to acquire point 3 If the TCP measurement is possible, the user is given an evaluation of the acquisition procedure accuracy (and not the tool measurement precision) with the possibility to accept the measurement supplied and continue with the orientation calculation (step j.) or to continue with the acquisition of points with the possibility to move the robot in Tool mode (step g.) Bring the TCP back to the reference point with a sufficiently different orientation as to the previous points Acquire new point (max. 8 points ) Execute step f. again 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.
d. e. f.
g.
h. i. j.
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
00/1109
TO_SET Program - tool handling F1 of the Teach Pendant . It is possible to interrupt the tool calculation at any time and to return to the main menu by pressing key F6. For the acquisition of the next points the screen page is the same as the previous one. As soon as a first tool measurement is ready, a screen page is shown to inform the user that as from this moment it is possible to move in TOOL reference. Continuing, the following situations may take place: If the calculation algorithm returns an imprecise tool measurement the following screen page is shown (Fig. 18.22 - Screen page 1.19a):
Accepted commands: <F1>: <F2>: 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 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
00/1109
18-19
TO_SET Program - tool handling 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>: <F2>: repeats the calculation (see Fig. 18.21 - Screen page 1.17) returns to main menu (Fig. 18.2 - Screen page 0.0)
18.4.6.1
HS-0-C4E-USO_44.fm
18-20
00/1109
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: <F1>: <F2>: <F6>: If the move is reached and the position is OK, press F1 If it is wished to force termination of the Move (either because the TCP has already been reached or because it is considered better to position the reference on the TCP with movements in Jog), press F2 returns to main menu (Fig. 18.2 - Screen page 0.0)
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.
18.4.7
Press key F4 from the screen page in Fig. 18.6 - Screen page 1.2, to access this procedure.
HS-0-C4E-USO_44.fm
00/1109
18-21
TO_SET Program - tool handling 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 the values for the payload. The omission or a big error in the payload declaration could create potentially hazardous situations for the users and for the fixtures This paragraph supplies information regarding Basic concepts regarding Payload identification Procedure for Payload identification Software to validate the payload.
18.4.7.1
Basic concepts
As the correct declaration of the tool dimensions (variable $TOOL) is necessary to obtain the required precision in execution of movements in the Cartesian environment, in the same way it is equally necessary to correctly define the payload parameters that will have influence on the robot movements in terms of performance optimisation and safeguarding the components. The determination of the payload characteristics takes place using the specific procedure. During the Payload Identification procedure also the outfitting weight (e.g.: cable) is identified. 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 where possible, or in any case ensure that their presence 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
00/1109
TO_SET Program - tool handling 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 identification 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 dimensions caused by the presence of any fixtures installed in the robot operating area, allows the complete execution of the programs available for the Payload identification supplied by Comau Robotics & Final Assembly. If there is not sufficient space, it is advised to run this procedure 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 procedure, the user can change the Payload identification 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 compliance with the fundamental requirements needed for the modification of the Payload identification programs (see par. 18.4.7.2.1 Requirements to modify Payload identification programs a pag. 18-23).
The entire Payload Identification procedure is performed with the DYNAMIC MODEL DEACTIVATED automatically by the system.
This paragraph contains the following information: Requirements to modify Payload identification programs Activation and execution of the Payload identification procedure
18.4.7.2.1
The user can intervene, reducing the movement frequency of the individual axes, move axis 1 as desired and move axes 2 and 3 as necessary, but ALWAYS ensuring that axis 3 is horizontal to the floor. Since any modifications made to movement programs could reduce the precision of the Identification procedure results, upon request Comau Robotica can supply an off-line
HS-0-C4E-USO_44.fm
00/1109
18-23
TO_SET Program - tool handling instrument to validate the results. See par. 18.4.7.3 Software to validate the payload a pag. 18-33.
18.4.7.2.2
Press key F4 from the screen page in Fig. 18.6 - Screen page 1.2, to access this procedure.
A reminder of the steps needed to reach screen page in Fig. 18.6 - Screen page 1.2 is given here. If these steps have already been executed, go straight to step f. a. b. Select Setup Page on the Teach Pendant, ToolFrame subpage. The following screen page is displayed:
HS-0-C4E-USO_44.fm
18-24
00/1109
insert the number of the required tool (from 1 to 18) and press ENTER e. this screen page is shown:
select PAYLOAD IDENTIFICATION (F4) f. the status selector switch must be on T1 (if necessary, reposition)
g. h.
keep the Enable device pressed on the Teach Pendant press the START key to bring the robot to calibration position
HS-0-C4E-USO_44.fm
00/1109
18-25
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. this screen page is shown:
j.
HS-0-C4E-USO_44.fm
18-26
00/1109
Run the verification program. If it has terminated correctly, choose TEST FINISHED (F1). If the robot is NH4 series, a second test is suggested and therefore this point is executed again. Otherwise pass directly to point l. If the verification program has not terminated correctly, choose POSITION MODIFY (F2). 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
00/1109
18-27
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 step k.2 l. this screen page is shown:
HS-0-C4E-USO_44.fm
18-28
00/1109
TO_SET Program - tool handling before starting to execute real Payload identification programs, it is advised to warm up the robot, making movements that involve the wrist and axis 3. If it is decided not to run an automatic warm-up, select NO (F2) and go to step m.; if it is decided to run the automatic warm-up, select YES (F1)
set the required speed set the status selector switch to AUTO switch on the drives pressing DRIVE ON and press the START key
l.4
HS-0-C4E-USO_44.fm
00/1109
18-29
l.5 m.
n.
HS-0-C4E-USO_44.fm
18-30
00/1109
o. p.
check that the status selector switch is set to AUTO 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
r.
HS-0-C4E-USO_44.fm
00/1109
18-31
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 switch off the drives, pressing DRIVE OFF
t.
u. v.
check that the status selector switch is set to AUTO switch on the drives pressing DRIVE ON and press START
HS-0-C4E-USO_44.fm
18-32
00/1109
TO_SET Program - tool handling w. the execution of the second movement program starts (at normal speed). Wait for the completion
x.
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).
18.4.7.3
HS-0-C4E-USO_44.fm
00/1109
18-33
18.5.1
18.5.1.1
Tools needed
Tool with known dimensions mounted on Robot Flange
A reference tool must be mounted on the flange that has known dimensions declared in the $TOOL system variable. The coordinates will be indicated as X_rif, Y_rif and Z_rif. It is advised to use the TOOL MASTER or CALIBRATED TOOL that was used for the Tool automatic calculation (see paragraph TOOL automatic calculation). As an alternative an identified tip on the work tool can be used that has a distance from the robot flange centre that is known and precise.
18.5.2
General characteristics
In the case of the TOOL_RMT command (pressing key F2) the procedure is the same as the Tool calculation (F1). Whereas for the tool the reference is the robot BASE , for the remote tool it is necessary to define the X, Y and Z references of the tool fixed on the robot flange, indicated as Xrif, Yrif and Zrif. At the end of the procedure, before returning to the main menu(Fig. 18.2 - Screen page 0.0), the user is asked whether the remote tool is to be kept enabled (Fig. 18.26 - Screen page 2.1)
If F1 is pressed, the Remote Tool remains enabled, if F2 is pressed the start situation
HS-0-C4E-USO_44.fm
18-34
00/1109
18.6.1
Tools needed
The following topics are described: Tool with known dimensions mounted on Robot Flange 3 Reference Points (ORIGIN, Xpos and XYpos)
18.6.1.1
18.6.1.2
The direction and sense of the Z-frame are always considered outgoing upwards as to the XY-frame plane. The $UFRAME is always calculated in relation to the robot environment that coincides with the origin of the robot base when $BASE=0
18.6.2
General characteristics
None of the robot positions on the 3 reference points are rigid: the operator can position the TCP on the references as preferred, according to requirements. At the end it is possible to save the Frame calculation in the TU_FRAME table (Al
HS-0-C4E-USO_44.fm
00/1109
18-35
TO_SET Program - tool handling termine possibile salvare il calcolo del frame nella tabella TU_FRAME (see Fig. 18.33).
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: <F1>: <F2>: <F6>: continues procedure (Fig. 18.29 - Screen page 3.2) changes the $TOOL values (Fig. 18.34 - Screen page 3.7) returns to main menu (Fig. 18.2 - Screen page 0.0)
HS-0-C4E-USO_44.fm
18-36
00/1109
Asks to take the tool TCP on the ORIGIN point. The robot may be in any position: the operator can position the TCP on the ORIGIN point as preferred, according to requirements. Accepted commands: <F1>: <F6>: to be pressed when the robot is on point; continues procedure (Fig. 18.30 - Screen page 3.3) returns to main menu (Fig. 18.2 - Screen page 0.0)
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: <F1>: <F6>: to be pressed when the robot is on point; continues procedure (Fig. 18.31 - Screen page 3.4) returns to main menu (Fig. 18.2 - Screen page 0.0)
HS-0-C4E-USO_44.fm
00/1109
18-37
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: <F1>: <F6>: to be pressed when the robot is on point; continues procedure (Fig. 18.32 - Screen 3.5 o Fig. 18.36 - Screen page 3.9) returns to main menu (Fig. 18.2 - Screen page 0.0)
The program displays the $UFRAME calculated values (XYZ relocations and AER orientations). At this time it is possible to move in Uframe mode (selected by Motion Page, COORD menu - see C4G Controller Unit Use) 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
00/1109
returns to screen page in Fig. 18.28 - Screen page 3.1 saves calculated values (Fig. 18.33 - Screen page 3.6 or Fig. 18.36 - Screen page 3.9) returns to main menu (Fig. 18.2 - Screen page 0.0)
The program displays the $UFRAME calculated values (XYZ relocations and AER orientations). The program allows to save the calculated values in the TU_FRAME table. TU_FRAME is available in the System Software CD, in the Configuration Tools directory.
Accepted commands: <esc>: to omit the SAVE request. In this case the screen page will be 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
00/1109
18-39
TO_SET Program - tool handling Accepted commands: <esc>: to omit the insertion of each separate value
Displayed if the SAVE procedure for the calculated values has been omitted . Accepted commands: <F1>: <F6>: returns to screen page in Fig. 18.36 - Screen page 3.9 returns to main menu (Fig. 18.2 - Screen page 0.0)
Displayed if it is not possible to execute the $UFRAME calculation. Check: robot calibration; the $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-40
00/1109
<F1>: <F6>:
returns to screen page in Fig. 18.28 - Screen page 3.1 returns to main menu (Fig. 18.2 - Screen page 0.0)
18.7.1
Tools needed
The following topics are described: Tool with known dimensions mounted on the Robot Flange 3 reference points (ORIGIN, Xpos and XYpos)
18.7.1.1
18.7.1.2
The direction and sense of the Z-frame are always considered outgoing upwards as to the XY-frame plane. $UFRAME is always calculated in relation to the robot environment that coincides with the origin of the robot base when $BASE=0.
HS-0-C4E-USO_44.fm
00/1109
18-41
18.7.2
General characteristics
None of the robot positions on the 3 reference points are rigid: the operator can position the TCP on the references as preferred, according to requirements. If EZ is present, the calculation of the frame can be saved in a table and the values assigned to the $UFRAME through the instruction A_FRAME(x), (where x=1-18).
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: <F1>: <F2>: <F6>: continues procedure (Fig. 18.38 - Screen page 4.2) changes the $TOOL values (Fig. 18.43 - Screen page 4.7) returns to main menu (Fig. 18.2 - Screen page 0.0)
HS-0-C4E-USO_44.fm
18-42
00/1109
Asks to take the tool TCP on the ORIGIN point. The robot may be in any position: the operator can position the TCP on the ORIGIN point as preferred, according to requirements. Accepted commands: <F1>: <F6>: to be pressed when the robot is on point; continues procedure (Fig. 18.39 - Screen page 4.3) returns to main menu (Fig. 18.2 - Screen page 0.0)
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: <F1>: <F6>: to be pressed when the robot is on point; continues procedure (Fig. 18.40 - Screen page 4.4) returns to main menu (Fig. 18.2 - Screen page 0.0)
HS-0-C4E-USO_44.fm
00/1109
18-43
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: <F1>: <F6>: to be pressed when the robot is on point; continues procedure (Fig. 18.41 - Screen page 4.5 o Fig. 18.45 - Screen page 4.9) returns to main menu (Fig. 18.2 - Screen page 0.0)
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: <F1>: <F2>: returns to screen page in Fig. 18.37 - Screen page 4.1 saves calculated values (Fig. 18.42 - Screen page 4.6 or screen page Fig. 18.46 - Screen page 4.10)
HS-0-C4E-USO_44.fm
18-44
00/1109
<F6>:
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 Configuration Tools directory.
Accepted commands: <esc>: to omit the SAVE request. In this case the screen page will be 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: <esc>: to omit the insertion of each separate value
HS-0-C4E-USO_44.fm
00/1109
18-45
Displayed if the SAVE procedure for the calculated values has been omitted . Accepted commands:
<F1>: <F6>:
returns to screen page in Fig. 18.41 - Screen page 4.5 returns to main menu (Fig. 18.2 - Screen page 0.0)
Displayed if it is not possible to execute the $UFRAME calculation. Check: robot calculation; the $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: <F1>: <F6>: returns to screen page in Fig. 18.37 - Screen page 4.1 returns to main menu (Fig. 18.2 - Screen page 0.0)
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
00/1109
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).
18.8.1
Tools required
A detailed description is given for the following topics: Tool of known dimensions mounted on the robot flange 3 reference points (P1, P2, P3)
18.8.1.1
18.8.1.2
HS-0-C4E-USO_44.fm
00/1109
18-47
TO_SET Program - tool handling These may be threaded holes, to fasten the 150 mm. calibrated tool or references stamped on the positioner.
18.8.2
General characteristics
The robot positions on the 3 points are not rigid: the operator can position the TCP on the references at will, according to requirements. The calculated values will be saved in UD:\SYS\ in the .C4G system file and thus can be recovered using Config. (F1) command, Load the configuration file (CLA), SETUP Page on the Teach Pendant. The positioner can be seen by the system either as an auxiliary axis or as ARM (in the case of double arm). In the first case the axis to which the positioner is associated must be defined. The calculated values will be automatically assigned to the following system variables: For an auxiliary axis: $ARM_DATA[n arm].AUX_BASE[n positioner] For arm: $ARM_DATA[n arm].BASE
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: <F1>: <F2>: <F6>: procedure cont. (Fig. 18.48 - Screen page 5.2) to change the values of $TOOL (Fig. 18.57 - Screen page 5.11) returns to main menu (Fig. 18.2 - Screen page 0.0)
HS-0-C4E-USO_44.fm
18-48
00/1109
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: <F1>: <F2>: <F6>: procedure cont. (Fig. 18.49 - Screen page 5.3) to change the values of the reference calibrated tool (Fig. 18.57 - Screen page 5.11) returns to main menu (Fig. 18.2 - Screen page 0.0)
To select the type of positioner for the BASE calculation. AUX: positioner seen as auxiliary axis; ARM: positioner seen as ARM. Accepted commands: <F1>: <F2>: <F6>: type of ARM; cont. (Fig. 18.50 - Screen page 5.4) type of auxiliary axis; cont. (Fig. 18.51 - Screen page 5.5) returns to main menu (Fig. 18.2 - Screen page 0.0)
HS-0-C4E-USO_44.fm
00/1109
18-49
To insert the positioner ARM number (1-4). If the ARM number entered is not acknowledged by the system, the screen page of Fig. 18.59 - Screen page 5.13; is displayed; if it is acknowledged, the screen page of Fig. 18.52 - Screen page 5.6 is displayed. Accepted commands: <esc>: omits the insertion (returns to the screen page of Fig. 18.49 - Screen page 5.3)
To insert the positioner number (1-4). If the positioner number entered is not acknowledged by the system, the screen page of Fig. 18.60 - Screen page 5.14; is displayed; if it is acknowledged, the screen page of Fig. 18.52 - Screen page 5.6 is displayed. The [n arm] (to which the selected positioner is associated) assumed by 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
00/1109
<esc>:
omits the insertion (returns to the screen page of Fig. 18.49 - Screen page 5.3)
Asks to bring the tool TCP on point P1. The robot can assume any position: the operator can position the TCP on point P1 as desired, according to the requirements. Accepted commands:
<F1>: <F6>:
to press when the robot is on the point; cont. (Fig. 18.53 - Screen page 5.7) returns to main menu (Fig. 18.2 - Screen page 0.0)
Asks to bring the tool TCP on point P2. The robot can assume any position: the operator can position the TCP on point P2 as desired, according to the requirements. Accepted commands:
HS-0-C4E-USO_44.fm
00/1109
18-51
<F1>: <F6>:
to press when the robot is on the point; cont. (Fig. 18.54 - Screen page 5.8) returns to main menu (Fig. 18.2 - Screen page 0.0)
Asks to bring the tool TCP on point P3. The robot can assume any position: the operator can position the TCP on point P3 as desired, according to the requirements. Accepted commands: <F1>: <F6>: 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) 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
00/1109
TO_SET Program - tool handling the robot calibration; the $TOOL values (they are to refer to the tool mounted on the flange); if there are several positioners, check that the number of the positioner is that actually used for the calculation (Fig. 18.50 - Screen page 5.4 or Fig. 18.52 - Screen page 5.6). the 3 reference points (check that the sequence required by TO_SET has been respected).
Accepted commands: <F1>: <F2>: returns to screen page in Fig. 18.47 - Screen page 5.1 saves calculated values. Note: to perform the SAVE it is necessary to be in PROG + DRIVES OFF; procedure cont.(Fig. 18.56 - Screen page 5.10 or Fig. 18.62 - Screen page 5.16) returns to main menu (Fig. 18.2 - Screen page 0.0)
<F6>:
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: <F1>: <F6>: returns to screen page in Fig. 18.47 - Screen page 5.1 returns to main menu (Fig. 18.2 - Screen page 0.0)
HS-0-C4E-USO_44.fm
00/1109
18-53
Displays the $TOOL values currently declared and permits their modification. Accepted commands: <esc>: permits the omission of each separate value insertion
Displays the values of the reference calibrated tool (XYZ relocations) and permits their modification. Accepted commands: <esc>: permits the omission of each separate value insertion
HS-0-C4E-USO_44.fm
18-54
00/1109
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: <F1>: <F6>: returns to screen page in Fig. 18.49 - Screen page 5.3 returns to main menu (Fig. 18.2 - Screen page 0.0)
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: <F1>: <F6>: returns to screen page in Fig. 18.49 - Screen page 5.3 returns to main menu (Fig. 18.2 - Screen page 0.0)
HS-0-C4E-USO_44.fm
00/1109
18-55
Displayed if it is not possible to perform the $BASE calculation. Check: the robot calibration; the $TOOL values (they are to refer to the tool mounted on the flange); the declared values of the reference calibrated tool; the 3 reference points (check that the sequence required by TO_SET has been respected).
Accepted commands: <F1>: <F6>: returns to screen page in Fig. 18.47 - Screen page 5.1 returns to main menu (Fig. 18.2 - Screen page 0.0)
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 Config. (F1), Save the configuration file, SETUP Page. Accepted commands: <F1>: <F6>: returns to screen page in Fig. 18.55 - Screen page 5.9 returns to main menu (Fig. 18.2 - Screen page 0.0)
HS-0-C4E-USO_44.fm
18-56
00/1109
18.9.1
Tools required
Detailed indications are given regarding the following: Tool of known dimensions mounted on the robot flange 3 Reference points (P1, P2, P3)
18.9.1.1
18.9.1.2
HS-0-C4E-USO_44.fm
00/1109
18-57
Accepted commands: <F1>: to define the conveyor characteristics . If conveyors 1 and 2 are already enabled, it returns an error message (it has to be disabled before) otherwise the screen page in Fig. 18.64 - Screen page 6.1 is displayed to define the tracking windows (area where the robot is enabled to track the part). It is also used to define the conveyor speed and maximum acceleration. Displays the screen page in Fig. 18.93 - Screen page 7.1 to disable a conveyor previously installed Displays the screen page in Fig. 18.107 - Screen page 8.1 returns to the TO_SET main menu (Fig. 18.2 - Screen page 0.0)
<F2>:
<F3>: <F6>:
to define the number of the conveyor to be installed (1 or 2). If the number entered is that of a conveyor already installed an error message is returned (it has to be disabled before); otherwise it continues with the next screen page.
HS-0-C4E-USO_44.fm
18-58
00/1109
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
It is necessary to indicate to which DSA the conveyor encoder/resolver has been connected.
HS-0-C4E-USO_44.fm
00/1109
18-59
TO_SET Program - tool handling 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
to be selected for linear conveyor. Continues with screen page of Fig. 18.69 - Screen page 6.5.1 to be selected for circular conveyor. Continues with screen page of Fig. 18.80 - Screen page 6.5.2 to be selected for slide conveyor. Continues with screen page of Fig. 18.91 - Screen page 6.5.3 returns to the screen page of Fig. 18.63 - Screen page 6.0
HS-0-C4E-USO_44.fm
18-60
00/1109
To calculate the reference system (frame) of the conveyor. <F1>: to obtain the automatic calculation using the robot as the measuring tool. Continues with the next screen page for manual entry of the conveyor reference system values. Continues with screen page of Fig. 18.77 - Screen page 6.5.1.7 returns to the screen page of Fig. 18.68 - Screen page 6.5
<F2>: <F6>:
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>: <F6>: press when the TCP is in the required position. returns to the screen page of Fig. 18.70 - Screen page 6.5.1.1
HS-0-C4E-USO_44.fm
00/1109
18-61
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. <F1>: <F6>: press when the TCP is in the required position. Continues with the next screen page returns to the screen page of Fig. 18.70 - Screen page 6.5.1.1
The user has to bring the robot TCP on a point of the X-Y plane; usually this plane coincides with the trolley plane. <F1>: <F6>: press when the TCP is in the required position. Continues with the next screen page returns to the screen page of Fig. 18.70 - Screen page 6.5.1.1
HS-0-C4E-USO_44.fm
18-62
00/1109
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
00/1109
18-63
<F1>: <F6>:
saves and executes a C4G restart returns to the screen page of Fig. 18.70 - Screen page 6.5.1.1
To enter the X, Y, Z, A, E, R values of the conveyor reference system manually (without automatic calculation).
HS-0-C4E-USO_44.fm
18-64
00/1109
TO_SET Program - tool handling Displays the calculated value and asks for confirmation.
<F1>: <F6>:
saves the data entered so far, and executes a C4G restart 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
00/1109
18-65
TO_SET Program - tool handling To calculate the reference system (frame) of the conveyor. <F1>: <F2>: <F6>: 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 for manual entry of the conveyor reference system values. Continues with screen page of Fig. 18.88 - Screen page 6.5.2.7 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>: <F6>: press when the TCP is in the required position. Continues with the next screen page 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. <F1>: press when the TCP is in the required position. Continues with the next screen page
HS-0-C4E-USO_44.fm
18-66
00/1109
<F6>:
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. <F1>: <F6>: press when the TCP is in the required position. Continues with the next screen page returns to the screen page of Fig. 18.81 - Screen page 6.5.2.1
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
00/1109
18-67
<F1>: <F6>:
saves and executes a C4G restart returns to the screen page of Fig. 18.81 - Screen page 6.5.2.1
18-68
00/1109
<F1>: <F6>:
saves the data entered so far, and executes a C4G restart returns to the screen page of Fig. 18.81 - Screen page 6.5.2.1
HS-0-C4E-USO_44.fm
00/1109
18-69
TO_SET Program - tool handling To insert the value of the conveyor transmission ratio [mm/motor rev].
Indicates that the conveyor advance direction is the X+ direction. Continues with the next screen page Indicates that the conveyor advance direction is the X- direction. Continues with the next screen page returns to the screen page of Fig. 18.68 - Screen page 6.5
To define the number of the conveyor to be configured (1 or 2). If the number entered is that of a conveyor that is not installed an error message is returned (it has to be installed first); otherwise it continues with the next screen page
HS-0-C4E-USO_44.fm
18-70
00/1109
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>: <F2>: <F6>: automatic procedure: the robot TCP is brought on the limits of the area to be defined (Fig. 18.96 - Screen page 7.3.1) manual procedure: the Cartesian positions that define the area limits are entered manually (Fig. 18.101 - Screen page 7.3.6) returns to the screen page of Fig. 18.63 - Screen page 6.0
HS-0-C4E-USO_44.fm
00/1109
18-71
To define the left-hand limit of the conveyor tracking area <F1>: <F6>: press when the TCP is in the required position. Continues with the next screen pageG returns to the screen page of Fig. 18.95 - Screen page 7.3
To define the right-hand limit of the conveyor tracking area. <F1>: <F6>: press when the TCP is in the required position. Continues with the next screen pageG returns to the screen page of Fig. 18.95 - Screen page 7.3
HS-0-C4E-USO_44.fm
18-72
00/1109
<F1>: <F6>:
saves the acquired data and returns to the screen page of Fig. 18.64 - Screen page 6.1 returns to the screen page of Fig. 18.95 - Screen page 7.3
HS-0-C4E-USO_44.fm
00/1109
18-73
To define the left-hand limit of the conveyor tracking area. In this case the value has to be entered manually (usually it is the value along X axis of the conveyor reference frame, i.e. along the advance direction).
To define the right-hand limit of the conveyor tracking area. In this case the value has to be entered manually (usually it is the value along X axis of the conveyor reference frame, i.e. along the advance direction).
HS-0-C4E-USO_44.fm
18-74
00/1109
TO_SET Program - tool handling Displays the values and asks for confirmation.
HS-0-C4E-USO_44.fm
00/1109
18-75
<F1>: <F6>:
saves the acquired data and returns to the screen page of Fig. 18.64 - Screen page 6.1 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 of Fig. 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>: <F6>:
disables the conveyor indicated and executes a save and a C4G restart returns to the screen page of Fig. 18.63 - Screen page 6.0
HS-0-C4E-USO_44.fm
18-76
00/1109
<F1>: <F6>:
disables the conveyor indicated and returns to the screen page of Fig. 18.63 - Screen page 6.0 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
00/1109
18-77
HS-0-C4E-USO_44.fm
18-78
00/1109
COMAU Robotics services Repair: repairs.robotics@comau.com Training: training.robotics@comau.com Spare parts: spares.robotics@comau.com Technical service: service.robotics@comau.com