PROGRAMUL DE STUDIU ………………….. FORMA DE ÎNVĂȚĂMÂNT : Învățământ cu frecvență 2 LUCRARE DE DISERTAȚIE CONDUCĂTOR ȘTIINȚIFIC Dr. Ing…. [617815]
UNIVERSITATEA DIN ORADEA
FACULTATEA DE INGINERIE MANAGERIALĂ ȘI
TEHNOLOGICĂ
DOMENIUL AMS
PROGRAMUL DE STUDIU …………………..
FORMA DE ÎNVĂȚĂMÂNT : Învățământ cu frecvență
2
LUCRARE DE
DISERTAȚIE
CONDUCĂTOR ȘTIINȚIFIC
Dr. Ing. Moldovan Ovidiu
ABSOLVENT: [anonimizat]
2018
3
4
Contents
INTRODUCTION ………………………….. ………………………….. ………………………….. ……….. 5
1. MECHATRONICS AND ROB OTICS ………………………….. ………………………….. … 7
1.1. ROBOT AND ITS COMPON ENTS ………………………….. ………………………….. …… 7
1.2. RAPID PROGRAMMING LA NGUAGE ………………………….. ………………………. 13
2. SETUP ………………………….. ………………………….. ………………………….. ……………….. 16
2.1. THE ROBOT ………………………….. ………………………….. ………………………….. ……… 16
3. ROBOT PROGRAMMING ………………………….. ………………………….. …………….. 28
3.1. OLP PATH -PROGRAM TES T ………………………….. ………………………….. ……….. 28
3.2. ASSEMBLY PROCESS ………………………….. ………………………….. …………………… 34
3.3. PROGRAMMING ………………………….. ………………………….. ………………………….. . 37
4. CONCLUSIO N ………………………….. ………………………….. ………………………….. ……. 47
BIBLIOGRAPHY ………………………….. ………………………….. ………………………….. ………. 48
5
Introduction
My thesis with the title Industrial robot programming in an automated cell , is
a brief introduction to programming an industrial robot with a gripper tool.
Starting with the first connections through analyzing the production process and
simu lation, this project gives a small insight of industrial production.
In today’s mass industries , robots take an important role together with the
PLC. The role of these machines are to get a qualit y assurance with optimized
production efficiency. Other adv antages of high uptime, and limited human access
to hazardous work environments. It also has flaws such as job losses, increased
investment costs and macro effects.
I had the luck to see a factory being built. In the meanwhile we have built a
small piece of it, a powertrain to assemble the suspension of a car.
In this project I show you how did I proceed beginning with studying the
simulation in Robcad, and the given documentations, to start the production of the
parts. I present to you the robot, its co mponents, and the prog ramming language
along with the automated cell, a nd the geo -pallet used to manipulate the parts.
It might seem simple, but it took a lot of patience, man -work hours, and
studying along the road. A robot programmers job is more complex then I first
thought. Moving the robot with the Teach Pendant is the easiest thing, it only
needs practice. Working on this project I acquired some beginner skills thanks to
a competent team.
6
7
1. Mechatronics and Robotics
1.1. Robot and its components
The industrial robot consists of the following components:
• Manipulator
• Robot controller
• Teach pendant
• Connecting cables
• Software
• Options, accessories
8
Figure 1-1Example of an industr ial robot
The components of an industrial robot shown on Figure 1 -1:
1. Manipulator
2. Connecting cables
3. Robot controller
4. Teach pendant
Robot control basics
Mechatronics is a rung on the ladder of evolution in modern engineering
systems design. Developing microcomputer, embedded computer s and associated
information technology has led to the development of mechatronics in the last
twenty years. Definition of mechatronics has evolved from the original definition
9
given by YASAKAWA Electric Company, involving intimate and organic
electronics integration in mechanical systems, the definition given by Shetty and
Kolk (1997) as a methodology for optimal design of electromechanical products.
This abundance of attempts to define mechatronics show that this field is still
young and growing. For many practicing engineers mechatronic concepts were
not anything new, because they usually solve many of the practical applications
involving organic integration of electronic, electrical and mechanical, information
technology and automatic control theory. Bot h industrial robots and robots used
for other purposes have defining characteristics of mechatronic systems. Analysis,
modeling, design and implementation of robots are the same as those used for
mechatronic systems in general. Designing a robot is much mo re than a
combination of electronic modules, computer and mechanical concepts, what
differs from the classical design is the characteristic method of optimizing
mechatronic design technical solutions in various fields. Designing a robot
requires a mature u nderstanding of each of the areas involved.
10
Figure 1-2 Mechatronics -Robotics
Mechatronic concept requires also designing simultaneously mechanical
actuators and controls. If using classical concepts means designing mechanical
drive system of a car and afterwards the control system, the concept of designing
both the mechanical and mechatronic drive and control at the same time, at each
stage of design, achieves a real integration of those systems. To achiev e
mechatronic design concepts needs the ability to make models that are
independent of the field in which they are used, able to support simulations of
mechanical processes and electronic equipment simultaneously.
Designing robots in mechatronics design principle is done in four phases:
1. requirements analysis – assessment of tasks and environmental conditi ons;
2. generating concepts – finding technical solutions required by the tasks;
3. evaluating potential solutions – analysis and testing of developed technical
solutions required to work in all conditions;
11
4. detailed design.
Concepts used in the design are:
1. hierarchical structure;
2. diversity of approaches;
3. analysis by analogy.
Important features are flexibility and robustness robots. Flexibility can be
conceived as the possibility of adapting to a variety of tasks (applications) and
robustness can be conceived as the possibility of adapting to a variety of operating
conditions (or environmental conditions). Satisfying the aspirations of flexibility
and robustness is achieved by integrating the structure of a robot control system
properly.
Robot control methods
Robot control methods can be classified according to several criteri a, in various
works being specified a few classifications. In the present study were considered
important criteria shown in the diagram in Figure 1 .3.
12
Figure 1-3 Robot control methods
13
1.2. RAPID programming language
Basic RAPID programming instructions
The program consists of a few instructions which describe the work of the
robot. Thus, there are specific instructions for the various commands, such as one
to move the robot, one to set an output, etc.
The ins tructions generally have several associated arguments which define what is
to take place in a specific instruction. For example, the instruction for resetting an
output contains an argument which defines which output is to be reset; for
example, Reset do5 . These arguments can be specified in one of the following
ways:
• as a numeric value, for example 5 or 4.6
• as a reference to data, for example reg1
• as an expression, for example 5+ reg1*2
• as a function call, for example Abs( reg1)
• as a string value, for example " Producing part A "
Routines
There are three types of routines – procedures, functions and trap routines.
• A procedure is used as a subprogram.
• A function returns a value of a specific type and is used as an argument of
an instruction.
• Trap routines provide a means of responding to interrupts. A trap routine
can be associated with a specific interrupt; for example, when an input is
set, it is automatically executed if that particular interrupt occurs.
Data
14
Information can also be stored in data, for e xample tool data (which contains
all information on a tool, such as its TCP and weight) and numerical data (which
can be used, for example, to count the number of parts to be processed). Data is
grouped into different data types which describe different ty pes of information,
such as tools, positions and loads. As this data can be created and assigned
arbitrary names, there is no limit (except that imposed by memory) on the number
of data. These data can exist either globally in the program or locally within a
routine.
There are three kinds of data – constants, variables and persistents.
• A constant represents a static value and can only be assigned a new value
manually.
• A variable can also be assigned a new value during program execution.
• A persistent can be described as a “persistent” variable. When a program
is saved the initialization value reflects the current value of the persistent.
Other features
Other features in the language are:
• Routine parameters
• Arithmetic and logical expressions
• Automatic error ha ndling
• Modular programs
• Multitasking
The language is not case sensitive, for example upper -case and lower -case letters
are considered the same.
15
16
2. Setup
2.1. The Robot
The robot in my project is an ABB IRB4600 (Figure ) and the tool carried by
is a gripper (Figure ) with two pneumatic clamp for three deferent parts (bearing,
drive flange, circlip) .
Nr. Picture TCP coordinates
1
TCP Name t_gr030r_11_1
X -312.979
Y -0.261
Z 162
Q1 1
Q2 0
Q3 0
Q4 0.00E+00
2
TCP Name t_gr030r_11_2
X -413.661
Y 0.322
Z 83.002
Q1 1
Q2 0
Q3 0
Q4 0.00E+00
17
3
TCP Name t_gr030r_11_3
X 222.223
Y 0.434
Z 276.949
Q1 1
Q2 0
Q3 0
Q4 0.00E+00
Table 1 Gripper TCP coordinates
Figure 2-1 ABB IRB 4600
My work on this project started w ith configuring the Festo valve modules
for the gripper. According to the hardware/software design I have allocated an IP
address for the valves using BOOT -DHCP -Server program (Figure 2 -2).
18
Figure 2-2 BOOT -DHCP
Figure 2-3 Gripper Setup
After configuring the valves it can be connected to the robot, where the IP address
has to be configured as well in ABB Robot Studio (Figure 2 -3).
19
The next step is to assign inputs and outputs to operate the pneumat ic valves
(Figure 2 -4). We can also assign the outputs to four configurable physical keys
on the TP (Figure2 -5).
Figure 2-4 Gripper I/O
Figure 2-5 Physical key configuration on TP
20
After the configurations, I have uploaded the OLP path -programs which in theory
and hopefully should be work as plug -and-play. But in reality it is barely possible
due to manufacturing, and mechanic assembly. From the OLP (Off Line
Programing) department we get a so called Robot Passport in excel format, an
actual program in .mod extension, and a video captured from the Robcad
simulation.
The robot passport containing the detail of the robot and the project , such as the
zone and station where it is installed, the bill of materials specifying the robots
tool, which is a gripper in our case, and the preinstalled hardware/software
ordered, which is the Safe Move 2 software and a hard stop on the first axis. The
passport also has the main joint positions (Figure 2 -6) as jHome, jService etc.
Figure 2-6 Robot Joint Positions
We can start with setting up these positions using the built in routine
standards used by the client and installed by an ABB employee. Setting up these
positions in the routines is very important, because these routines has a predefined
21
I/O signals with th e PLC, so the PLC can check if the robot is in any of these
positions.
Next I have inserted the TCP`s of the tools (Table 1) and the work objects
coordinates (Figure 2 -7).
Figure 2-7 Work Objects
Nominal
Robtarget Name X Y Z
calibration 377.529 189.949 425.802
check_presence_lh_bearing 160.943 519.734 529.993
check_presence_lh_ring 183.412 519.982 578.183
check_presence_rh_bearing 157.324 518.033 528.677
check_presence_rh_ring 183.412 519.982 578.183
drop_calibrator 680.295 379.555 493.304
drop_lh_bearing 37.315 189.881 419.805
drop_lh_hub 37.254 190.418 422.885
drop_lh_ring 37.311 189.877 430.8
drop_rh_bearing 377.523 189.945 419.802
drop_rh_hub 378.078 191.469 422.887
drop_rh_ring 377.543 189.961 430.8
pick_calibrator 680.295 379.555 493.304
pick_lh_bearing 124.938 474.957 241.299
pick_lh_hub 124.857 124.724 267.485
pick_lh_ring 566.369 866.768 -46.999
pick_rh_bearing 465.225 474.756 241.301
pick_rh_hub 465.391 124.666 267.384
pick_rh_ring 566.369 866.768 -46.999
Table 2 Robtargets
The passport also has a list of the most important robtarget positions (Table 2).
The TCP, work objet, positions can be set -up from the TP and also by ABB Robot
Studio, but for the Safety settings we can only use the ABB Robot Studio. The
22
passport has a detailed description and specification to set -up the ABB Safe Move
2. Starting with the Safe Tool Zone (Figure 2 -8,2-9,2-10).
Figure 2-8 Safe Tool/Arm Zone
Figure 2-9 Safe Tool Zone in ABB Robot Studio
23
In our example the tool zones consist of two capsules and a sphere, while the arm
zone is only made of two capsules. After any modification in the SafeMove we
must restart the controll er for the settings to take effect .
Figure 2-10 Safe Arm Zone in ABB Robot Studio
24
Figure 2-11 Safe Zone Area
When the tool and arm capsules are set up, we can continue with setting up the
safe zones areas. This safe zone area i s made of 11 points (Table 3), and two more
positions, which are the top and the bottom (Top:2100, Bottom -100 in mm).
X Y
P1 -235.00 -950.00
P2 1575.00 -1000.00
P3 2220.00 -230.00
P4 2220.00 140.00
P5 1800.00 500.00
P6 1580.00 1050.00
P7 -5.00 1050.00
P8 -230.00 830.00
P9 -230.00 600.00
P10 -870.00 200.00
P11 -870.00 -470.00
Table 3 Safe zone area points
25
Figure 2-12 Safe Zone on TP
These safe zones can`t be set up on the TP but can be visualized any time, and we
can check the violations if there are any.
Figure 2-13 Safe Zone in Robot Studio
26
Figure 2-14 SafeMove Visualiz er
Later, when the safety is set up with the PLC, and before it has been validated by
the safety user, we must make a path -program with points outside of the safety
area, to check if it works properly.
Figure 2-15 Safe Zone Area Check
27
This was only the firs t step, setting up the gripper, TCP`s, work objects and
SafeMove. Now we can start to play the OLP path -program (Figure 2 -16), check
the positions and analyze the job, which will be discussed in the next chapters.
Figure 2-16 Example of OLP path -program
28
3. Robot programming
3.1. OLP path -program test
The OLP path -program should run ev en for the first time, without collisions,
and relatively as it was in the simulations. Just to be cautious, we should run it in
slow speed, even thou in manual mode the top speed is 250m/s. In our case the
OLP program was a disaster. It was nothing like i n the simulation. But first let’s
take a look of the program.
The program was created in a third -party software, generated according to the
simulation in theory including the signals for the gripper and PLC. The program
starts with the command MODULE and ends with ENDMODUL.
MODULE MOV_TF028_OP030R
!# eM -Workplace to ABB S4 Rapid download
!# ––––––––––––-
!# CREATED : 07/02/2018 14:44.37
!#by f44535a
!# PROJECT : K:/JLR_Simulation/project/
!# CELL : tf028_op030r.ce
!# ROBOT : tf028_st030r_r01 The first part is the Module
command and the name of the
module.
The rest is description.
The following are the data declarations, Robtargets, Jointtargets, Tooldata and
Work objects (Table 4) .
• robtarget (robot target) is used to define t he position of the robot and
additional axes. Position data is used to define the position in the move
instructions to which the robot and additional axes are to move. As the robot
is able to achieve the same position in several different ways, the axis
configuration is also specified. This defines the axis values, if these are in any
way ambiguous, for example:
o if the robot is in a forward or backward position,
29
o if axis 4 points downwards or upwards,
o if axis 6 has a negative or positive revolution.
• jointtarget is used to define the position that the robot and the external axes
will move to with the instruction MoveAbsJ . jointtarget defines each
individual axis position, for both the robot and the external axes.
• tooldata is used to describe the chara cteristics of a tool, for example, a
welding gun or a gripper. These characteristics are position and orientation of
the tool center point (TCP) and the physical characteristics of the tool load. If
the tool is fixed in space (a stationary tool), the tool data firstly defines
position and orientation of this very tool in space, TCP. Then it describes the
load of the gripper moved by the robot. Tool data affects robot movements in
the following ways:
o The tool center point (TCP) refers to a point that will s atisfy the
specified path and velocity performance. If the tool is reoriented or
if coordinated external axes are used, only this point will follow
the desired path at the programmed velocity.
o If a stationary tool is used, the programmed speed and path wil l
relate to the work object held by the robot.
o Programmed positions refer to the position of the current TCP and
the orientation in relation to the tool coordinate system. This
means that if, for example, a tool is replaced because it is
damaged, the old p rogram can still be used if the tool coordinate
system is redefined. Tool data is also used when jogging the robot
to:
▪ Define the TCP which is not moving when the tool is
reoriented.
30
▪ Define the tool coordinate system in order to facilitate
moving in or ro tating in the tool coordinate directions.
• wobjdata is used to describe the work object that the robot welds, processes,
moves within, etc. If work objects are defined in a positioning instruction, the
position will be based on the coordinates of the work object. The advantages of
this are as follows:
o If position data is entered manually, such as in off -line
programming, the values can often be taken from a drawing.
o Programs can be reused quickly following changes in the robot
installation. If, for example, the fixture is moved, only the user
coordinate system has to be redefined.
o Variations in how the work object is attached can be compensated
for. For this, however, some sort of sensor will be required to
position the work object.
If a stationary tool or coordinated external axes are used, the work object must be
defined, since the path and velocity would then be related to the work object
instead
of the TCP. Work object data can also be used for jogging:
o The robot can be jogged in the directions of the wo rk object.
o The current position displayed is based on the coordinate system of
the work object.
31
!# ––––––––
!# –– Robtarget
!# ––––––––
CONST robtarget calibration:=[[ -377.5,189.9,425.8 ],
[0,-0.589, -0.807 ,0],[-1,0,0,0],[9e+09,9e+09,9e+09,9e+09,9e+09,9e+09]];
CONST robtarget check_presence_lh_ ring:=[[ -183.4,519.9,578.1 ],[0.012 ,-0.966,0.253,0.024 ],[-
1,0,2,0],[9e+09,9e+09,9e+09,9e+09,9e+09,9e+09]];
.
.
.
CONST robtarget ch eck_presence_rh_ring:=[[ -183.4,51 9.9,578.1],[0.012, -0.96682,0.253893,0.024 ],[-
1,0,2,0],[9e+09,9e+09,9e+09,9e+09,9e+09,9e+09]];
!# ––––––––
!# –– Jointtarget
!# ––––––––
PERS jointtarget jhome:=[[5, -35,40, -5,25,20],[9e+09,9e+09,9e+09,9e+09,9e+09,9e+09]];
.
.
.
PERS jointtarget jservice:=[[70, -55,60,90,85,5],[9e+09,9e+09,9e+09,9e+09,9e+09,9e+09]];
!# ––––––––
!# –– Tooldata
!# ––––––––
PERS tooldata t_gr030r_11_1:=[ TRUE ,[[-312.9, -0.261,1],[1,0,0,0]],[0.001,[0,0,0.001],[1,0,0,0],0,0,0]];
.
.
.
PERS tooldata t_gr030r_11_2:=[ TRUE ,[[-413.61,0.3 2,83],[1,0,0,0]],[0.001,[0,0,0.001],[1,0,0,0],0,0,0]];
!# ––––––––
!# –– Wobjdata
!# ––––––––
PERS wobjdata w_fx030r_01:=[ FALSE ,TRUE ,"",[[0,0,0],[1,0,0,0]], [[1465.05, -879.9,437.4 ],[1,0,0,0]]];
PERS wobjdata w_fx030r_02:=[ FALSE ,TRUE ,"",[[0,0,0],[1,0,0,0]] ,[[1465.2,499.6 ,437.412],[1,0,0,0]]];
Table 4 Robtarget, Jointtarget, Tooldata, Wobjdata
After the data declarations, starts the path program, which begins with the PROC
and ends with ENDPROC command.
32
PROC TF028_OP030R()
MOV_p028030r_a_calibration;
MOV_p028030r_b_pick_rh_bearing;
MOV_p028030r_c_pick_lh_bearing;
MOV_p028030r_d_pick_lh_hub;
MOV_p028030r_e_pick_rh_hub;
MOV_p028030r_f_pick_rh_ring;
MOV_p028030r_g_pick_lh_ring;
MOV_p028030r_h_pounce_to_home;
MOV_p028030r_i_service;
ENDPROC
The first procedu re is reference to the path -programs. Within a module you can
call a program by writing the name of the specific procedure.
Figure 3-1 Procedures
33
Figure 3-2 OLP move procedure
For this robot, the OLP program was useless. The coordinates was either out of
reach, or completely away from the target. The signals were nonstandard, and
nonfunctional. So as a robot programmer, my job was to make it work, which wil l
be discussed in another chapter.
34
3.2. Assembly Process
We could not use the OLP provided programs, so we had to do it ourselves.
But first we had to study the cell we were working on, and the process, to get an
idea how it should work. Working together with the PLC programmers, studying
the documentations provided by the design engin eers, and the video given by the
simulation engineers. Let’s start with the main parts of the automated robotic
cell. On Figure 3 -3 you can see the concept of the cell.
Figure 3-3 Overview of station 30R 4
5
6
7
1
2
3
35
Components shown on Figure 2 -1:
1. Robot Controller
2. First position, Electric Press (Tox 1)
3. Palette entrance
4. Second position, Electric Press (Tox 2)
5. ABB robot
6. Palette with parts
7. Rotary table
Figure 3-4 Rear Palette Concept
The palette is loaded with knuckles, drive flanges and bearings by the operator as
shown on Figure 2 -2 then the dirtshield is added and fixed.
The assembly process consists of two phases. The first press position and the
second press position. Before entering the automated cell, the pallets RFID is read
by the RFID reader which is connected to the PLC. When the pallet entered the
cell, the robot starts and the Tox unit engages. When the pallet aligned into work Drive Flan ges
Knuckles
Bearings
36
position the robot and the press takes the Home position. Then the robot loads the
LH wheel bearing from the pallet and places on the knuckles, then moves to the
RH bearing on the pa llet. The Tox electric press moves to LH work position and
presses the bearing into the knuckles. In the meanwhile the robot loads the RH
bearing and moves to a clear position. The Tox starts pressing and the robot
moves to the rotary table to obtain the c irclip. The robot loads the circlip to the
LH part, the Tox presses it in the knuckles, and its repeated on the RH side too.
Now the robot goes to its Home position to get clear of the pallet, and the pallet
moves toward the second work position.
In the se cond work position the robot start with loading the LH Hub from the
pallet to the knuckles. The Tox electric press goes into LH work position and
presses the hub. While the Tow works, the robot loads the RH hub on the RH
side. Then the Tox goes to the position and presses the RH hub into the knuckles.
Now the process is done (see Figure 2 -3 ), and the pallet moves to the next
station.
37
Figure 3-5 Parts after assembly
3.3. Programming
After underst anding the process, and getting an idea of the flow of actions the
next step is getting to know the clients RAPID programming standards. On Figure
3-6 is shown the structure of the system. The standard has four built in modules:
JLR_DSM ( JLR_DcpSocketMessa ging), JLR_RMD ( JLR_RandMData ),
JLR_SFE ( JLR_StandardFrontEnd ), T_ROB1. The end -users, integrators, robot
programmers are only allowed to make modifications in T_ROB1 in which all the
path-programs are written. On Figure 3 -7 is shown the structure of the T _ROB1
module.
38
Figure 3-6 JLR standard
Figure 3-7 T_ROB1
39
In JLR_MAIN is the main program, as its title suggests. When switching to auto
mode, in production this program communicates with the PLC to select the
requested sub -programs.
MODULE JLR_MAIN
!
! MODULE = JLR_MAIN (JLR IRC5 RobotWare 6 Projects only)
!
! **************************************** ! ****************************************
! ******************************** CHANGE HISTORY LOG
*******************************
! **************************************** ! ****************************************
! * Version * Description *************************************************** Who *
! * ********* * *************************************************************** *** *
! * 161201.01 * Initial Release for JLR IRC5 EtherNetIP RobotWare 6 * ABB *
!*********************************************************************** *************
PERS dnum ABB_MAIN:=161201.01;
PROC main()
!===== < STARTING FROM MAIN > =====
! LOCATION: Nitra
! PROJECT: TF028
! ROBOT SN: 4600 -105830
! STATION: OP030R
! LINE BUILDER: Comau
!============ ======================
initApplication;
UserInit;
initHome;
!
!
WHILE DOutput(doMainTaskOK)=1 DO
Ini_Ext;
cycleStart;
!
WHILE di016_ProgStrobe=0 DO
TPWrite " Program Number Valid " ;
Set do011_ProgNumReq;
ENDWHILE
TPErase;
WHILE nProgNum=0 DO
TPWrite " Waiting for program number from PLC " ;
Set do011_ProgNumReq;
ENDWHILE
TPErase;
WHILE (nProgNum=0) OR (nProgNum>101) DO
TPWrite " Program Number Valid " ;
ENDWHILE
TPErase;
!
Reset do011_ProgNumReq;
40
TEST nProgNum
CASE 1:
! Program 1 = all program for station 30
P01;
CASE 2:
! Program 2 = Pick LH Bearing
P02;
CASE 100:
! Program 100 : Tool Changer Service Program
!P100;
CASE 101:
! Program 101 : Tool 1 Service Program
P101;
CASE 119:
! Program 119 : Cyclic Brake Check
P119;
DEFAULT :
dcpFaultSFE 1;
ExitCycle;
ENDTEST
!
cycleEnd;
ENDWHILE
ENDPROC
ENDMODULE
At the beginning there are three program -calls:
initApplication;
UserInit;
initHome;
With initApplication, the system updates its folders. It’s a built -in routine. With
UserInit, the end -user/programmer can set user defined signals to be initialized,
such as the gripper outputs. The initHome routine checks if the robot is in its
Home position, and if not, it moves it automatically.
The Init_Ext (Figure ) routine resets all communication signals with the PLC to
their initial value, such as AreaRequest, ToolRequest etc.
41
Figure 3-8 Init_Ext builtin routine
In the cyclestart routine the r obot waits for the PLC for a valid program number,
and the execution can start. As we can see there is two production move programs
P01 and P02 which is stored in PATH_PROGRAMS.mod file.
The P01 program:
PROC P01()
!====== <Program Production> ======
! LOCATION: Nitra
! PROJECT: TF028
! ROBOT SN: 4600 -105830
! STATION: OP030R
! LINE BUILDER: Comau
!======================================= – descriptions
– the AreaInReq 1 is waiting
for the PLC signal to move
toward the Pounce position
– P01_to_Pounce is a call for
a path -program
42
! Request to go in to Area 1 but do not wait
AreaInReq 1, "Area in 1 = Station ?????" \NoWait;
! Move to pounce position
!––––––––
P01_to_Pounce;
!––––––––
! Initialization gripper
GripperInit;
! Check request for Area 1
AreaInReq 1, "Area in 1 = Station 030Pick_DropLH_Bearing" \RetToHome;
!
! Check return to home flag
IF NOT bRetToHome THEN
! Start of robot sequence
!–––– ––––
CycleTime 1 \ClockStart;
!––––––––
P01_a_Pick_LH_Bearing;
!––––––––
CycleTime 1 \ClockStop;
TimeLog 1, "Pick LH Bearing" ;
!––––––––
! End of job
JobDone 1;
!––––––––
! End of robor sequence
AreaOutRel 1;
!––––––––
! Check request for Area 2
AreaInReq 2, "Area in 2" ;
!––––––––
CycleTime 2 \ClockStart;
!––––––––
P01_b_Pick_RH_Bearing;
!––––––––
CycleTime 2 \ClockStop;
TimeLog 2, "Pick RH Bearing" ;
!––––––––
! End of job
JobDone 2;
!––––––––
! End of robor sequence
AreaOutRel 2;
!––––––––
! Check request for Area 3
AreaInReq 3, "Area in 3 = Station 030Pick_ring" ;
!––––––––
!––––––––
CycleTime 3 \ClockStart;
!–––––––– – bRetToHome is a bool variable to check if the
robot have moved its position
– CycleTime command is a call for a built -in
routine to measure the cycletime
– P01_a_Pick_LH_Bearing is the first process
– TimeLog is a routine made by me that record
the cycletime to a file
– when the robot finishes the program it sends a
signal to the PLC (JobDone1,AreaOutRel1),
that the program ended and its cleared out of
the area
– this process repeats for all 6 programs
43
P01_c_pick_LH_RH_ring;
!––––––––
CycleTime 3 \ClockStop;
TimeLog 3, "Pick LH Ring" ;
!––––––––
! End of job
JobDone 3;
!––––––––
! End of robor sequence
AreaOutRel 3;
!––––––––
! Check request for Area 4
AreaInReq 4, "Area in 4 = Station 030RHPlaceRing" ;
!–––- –––––
!––––––––
CycleTime 4 \ClockStart;
!––––––––
P01_d_LH_ring_place;
!––––––––
CycleTime 4 \ClockStop;
TimeLog 4, "Place LH Ring" ;
!––––– –––
! End of job
JobDone 4;
!––––––––
! End of robor sequence
AreaOutRel 4;
!––––––––
! Reset job done 3
SetDO do043_JobDone3,0;
!––––––––
! Check request for Area 3
AreaInReq 3, "Area in 3 = Station 030LPickRing" ;
!––––––––
!––––––––
CycleTime 5 \ClockStart;
!––––––––
P01_c_pick_LH_RH_ring;
!––––––––
CycleTime 5 \ClockStop;
TimeLog 5, "Pick RH Ring" ;
!––––––––
! End of job
JobDone 3;
!––––––––
! End of robor sequence
AreaOutRel 3;
!––––––––
! Check request for Area 6
AreaInReq 6, "Area in 6 = Station 030LHPlaceRing" ;
44
!––––––––
!––––––––
CycleTime 6 \ClockStart;
!––––––––
P01_f_RH_ring_place;
!––––––––
CycleTime 6 \ClockStop;
TimeLog 6, "Place RH Ring" ;
!––––––––
! End of job
JobDone 6;
!––––––––
! End of robor sequ ence
AreaOutRel 6;
!––––––––
!––––––––
! Set / check for end of cycle from PLC
initRS;
!––––––––
! Gripper initialization
GripperInit;
!––––––––
! Goto home position
HomePos;
!––––––––
! Check for user reset
UserReset;
ELSE
! Go to home position
P01_to_Home;
! Check home and release all collision areas
initHome;
ENDIF
RETURN ;
ENDPROC
An example of a path -program:
PROC P01_d_LH_ring_place()
!=======================================
! PROG_INFO: Place RH ring.
! TOOL: Gripper3
! STATION: 030 – When all the programs are finished, the robot
check for the end of cycl e, initiates the gripper,
and goes to the Home position
45
! AREA: TF028
! LAST CHANGE:
!=======================================
MoveAbsJ P01_Pounce04, v1000, fine, t_gr030r_11_3 \WObj :=w_fx030r_01;
!––––––-
chk_first_ring ;
!–––––––
MoveAbsJ P01_Pounce04, v1000, fine, t_gr030r_11_3 \WObj:=w_fx030r_01;
!–––––––
GripperRest Grip2;
!––––––-
MoveJ p560, vmax, z200, t_gr030r_11_3 \WObj:=w_fx030r_01;
MoveJ p570, vmax, z0, t_gr030r_11_3 \WObj:=w_fx030r_01;
MoveJ p990, v2500, z0, t_gr030r_11_3 \WObj:=w_fx030r_01;
MoveL drop_rh_ring, v100, fine, \Inpos:=inpos50, t_gr030r_11_3 \WObj:=w_fx030r_01;
!––––––-
WaitTime 0.5;
GripperRest Grip3;
!––––––-
MoveL p570, v4000, z1, t_gr030r_11_3 \WObj:=w_fx030r_01;
!––––––-
ToolReq 4 , "Tool request 4" ;
!––––––-
MoveJ p560, vmax, z100, t_gr030r_11_3 \WObj:=w_fx030r_01;
MoveJ p1210, vmax, z100, t_gr030r_11_3 \WObj:=w_fx030r_01;
MoveAbsJ P01_Pounce03, vmax, fine, t_gr030r_11_3 \WObj:=w_fx0 30r_01;
!
RETURN ;
ENDPROC
This procedure places the circlip in press position. Every path -program must start
with the robots last position, to avoid uncontrolled moves, in this example it’s the
P01_Pounce04 jointtarget. The next command is a call for another path -program
() which takes the circlip to a sensor to check if it’s in the right orientation.
The GripperRest Grip2 commands the gripper to take the rest position. Then it
moves toward the place position. After placing the circlip under the press it waits
for the ToolReq 4 signal from the PLC, which activates if the circlip is p roperly
placed.
46
Figure 3-9 Sub-program
47
4. Conclusion
This project was my first job as a robot programmer. It started in February
2018, and it’s still under construction, and debugging. Doing the robot
programming would be a much shorter job, but we must have done it along
building the rest of the cell, and p rogramming the PLC.
At this moment the powertrain line doesn’t work yet properly, with
interruptions we can build 10 -24 pieces a day . This station 30, which is subject to
my project is working in automatic mode, but still has some issues (mechanical
ones).
A robot programmer is a very nice profession, which needs skills in different
domains. It’s a grateful job, because at the end of the day your reward is to see it
working in a high speed.
48
Bibliography
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: PROGRAMUL DE STUDIU ………………….. FORMA DE ÎNVĂȚĂMÂNT : Învățământ cu frecvență 2 LUCRARE DE DISERTAȚIE CONDUCĂTOR ȘTIINȚIFIC Dr. Ing…. [617815] (ID: 617815)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
