Anda di halaman 1dari 20

Robotics & Industrial Automation

(Conestoga College)

Introduction to Robotics
Working with
ABB IRB 120
Robot

Submitted To: Mr. Jason Wilson Pranav Sharma 7157118


3 July 2015 Nitin Bhardwaj 7145139
Contents
1. Equipment List ............................................................................................................................3

2. Work cell task description............................................................................................................3

3. Program Listing ...........................................................................................................................4

3.1 Session 1………………………………………………………………………………………………………………………………………….5

3.2 Session 2………………………………………………………………………………………………………………………………………….6

3.3 Session 3………………………………………………………………………………………………………………………………………..10

4. Coordinates……………………………………………………………………………………………………………………………………….18

5. Subroutines……………………………………………………………………………………………………………………………………….18

5. Problems……………………………………………………………………………………………………………………………………………19

6. Improvements……………………………………………………………………………………………………………………………………20
1. Equipment List
1.1. ABB 120 robot
1.2. Robot controller
1.3. Pendant(MCP)
1.4. Marker
1.5. Paper
1.6. ABB Robotics RobotStudio 5.61 software

2. Work cell task description


2.1. Session One
Session one involved familiarizing ourselves with the ABB teach pendant, teaching points and
creating a simple program that will write the letter “R” using a marker attached as the end
effector for the ABB robot. RobotStudio 5.61 was used to run the simulation, and create a relation
between the virtual robot and the actual robot controller so that we could exchange data
between each other.

2.2. Session Two


In Session two, we were asked to modify the program in such a way that the operator will be
prompted at the beginning about which letter he wanted to be drawn. Organizing the code for
this session in separate subroutines was mandatory. After completing the relative programming
code, the operator had an option to either select a desired single letter from the word “ROBOT”
using the teach pendant or the letter “w” which would make the robot draw the full word
“ROBOT”.

2.3. Session Three


Based on Session two, Session three included further modifications to the program to get further
information for the operator before the program ran. This time after entering the desired letter
that the operator wanted to be printed, he would be prompted again to enter an a whole number
between 1 to 5 where the number signifies how many times the letter should be printed.
3. Program Listing
3.1. Session One
MODULE MainModule
//Define the positions of the points for letter “R”
CONST robtarget r1:=[[520.58,-144.96,226.97],[0.0110613,-0.157066,0.987502,0.00691692],[-
1,0,-5,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget r2:=[[446.45,-144.48,230.88],[0.0110737,-0.157116,0.987494,0.00686566],[-
1,0,-5,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget r3:=[[446.44,-109.85,231.60],[0.0110462,-0.157108,0.987496,0.0068643],[-
1,0,-5,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget r4:=[[465.83,-95.82,231.28],[0.0110105,-0.156997,0.987513,0.00698871],[-
1,0,-5,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget r5:=[[485.85,-112.17,229.49],[0.0110273,-0.157011,0.987511,0.00697675],[-
1,0,-5,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget r6:=[[485.44,-144.69,230.09],[0.0109989,-0.157032,0.987508,0.00697928],[-
1,0,-5,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget r7:=[[519.14,-99.55,229.51],[0.0110097,-0.156997,0.987513,0.00699804],[-
1,0,-5,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
PROC main()
// Move quickly to the position above point r1 at speed 1000mm/s without cutting any corners, and
vertical distance between the target position and r1 is 20.
MoveJ Offs(r1,0,0,20), v1000, fine, tool0;
// Move linearly to point r1 at speed 1000mm/s without cutting any corners.
MoveL r1, v1000, fine, tool0;
// Move linearly to point r2 at speed 1000mm/s without cutting any corners.
MoveL r2, v1000, fine, tool0;
// Move linearly to point r3 at speed 1000mm/s without cutting any corners.
MoveL r3, v1000, fine, tool0;
// Move circularly from current position to r5 through r4 at speed 1000mm/s.
MoveC r4, r5, v1000, fine, tool0;
// Move linearly to point r6 at speed 1000mm/s without cutting any corners.
MoveL r6, v1000, fine, tool0;
// Move quickly to the position above point r6 at speed 1000mm/s without cutting any corners,
and vertical distance between the target position and r6 is 20.
MoveL Offs(r6,0,0,20), v1000, fine, tool0;
// Move quickly to the position above point r5 at speed 1000mm/s without cutting any corners,
and vertical distance between the target position and r5 is 20.
MoveL Offs(r5,0,0,20), v1000, fine, tool0;
// Move linearly to point r5 at speed 1000mm/s without cutting any corners.
MoveL r5, v1000, fine, tool0;
// Move linearly to point r7 at speed 1000mm/s without cutting any corners.
MoveL r7, v1000, fine, tool0;
// Move quickly to the position above point r7 at speed 1000mm/s without cutting any corners,
and vertical distance between the target position and r7 is 20.
MoveL Offs(r7,0,0,20), v1000, fine, tool0;
ENDPROC
ENDMODULE

3.2. Session Two(Based on the code of Session one)


MODULE MainModule
//Define the positions of the points for letter “R”
CONST robtarget r1:=[[520.58,-144.96,226.97],[0.0110613,-0.157066,0.987502,0.00691692],[-
1,0,-5,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget r2:=[[446.45,-144.48,230.88],[0.0110737,-0.157116,0.987494,0.00686566],[-
1,0,-5,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget r3:=[[446.44,-109.85,231.60],[0.0110462,-0.157108,0.987496,0.0068643],[-
1,0,-5,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget r4:=[[465.83,-95.82,231.28],[0.0110105,-0.156997,0.987513,0.00698871],[-
1,0,-5,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget r5:=[[485.85,-112.17,229.49],[0.0110273,-0.157011,0.987511,0.00697675],[-
1,0,-5,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget r6:=[[485.44,-144.69,230.09],[0.0109989,-0.157032,0.987508,0.00697928],[-
1,0,-5,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget r7:=[[519.14,-99.55,229.51],[0.0110097,-0.156997,0.987513,0.00699804],[-
1,0,-5,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
//Define the positions of the points for letter “O”
CONST robtarget o1:=[[485.07,-64.03,232.41],[0.0112717,-0.156964,0.987516,0.00694745],[-
1,0,-5,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget o2:=[[451.07,-39.03,228.40],[0.0112706,-0.15695,0.987518,0.00695137],[-
1,0,-5,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget o3:=[[486.05,-12.03,224.37],[0.0112138,-0.156962,0.987516,0.00694],[-1,0,-
5,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget o4:=[[527.06,-39.03,224.33],[0.0112107,-0.156917,0.987524,0.00696919],[-
1,0,-5,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
//Define the positions of the points for letter “B”
CONST robtarget b1:=[[520.97,11.97,227.27],[0.0111344,-0.156945,0.98752,0.00697157],[0,0,-
5,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget b2:=[[451.97,10.09,227.24],[0.0111576,-
0.156888,0.987529,0.00697767],[0,0,-5,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget b3:=[[448.96,38.09,227.23],[0.0111791,-0.15688,0.98753,0.00698471],[0,0,-
5,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget b4:=[[466.96,55.09,227.21],[0.011209,-0.156877,0.98753,0.00698245],[0,0,-
5,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget b5:=[[481.96,39.09,226.19],[0.0112154,-
0.156848,0.987534,0.00699422],[0,0,-5,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget b6:=[[483.96,12.09,227.18],[0.0112394,-0.15684,0.987535,0.00698193],[0,0,-
5,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget b7:=[[502.96,53.09,226.16],[0.0112404,-
0.156826,0.987538,0.00698238],[0,0,-5,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget b8:=[[520.95,39.09,225.10],[0.0112175,-
0.156798,0.987542,0.00698011],[0,0,-5,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
//Define the positions of the points for letter “O”
CONST robtarget o5:=[[519.14,-99.55,249.49],[0.0109924,-0.157003,0.987512,0.00700935],[-
1,0,-5,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget o6:=[[519.14,-99.55,249.49],[0.0109924,-0.157003,0.987512,0.00700935],[-
1,0,-5,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget o7:=[[519.14,-99.55,249.49],[0.0109924,-0.157003,0.987512,0.00700935],[-
1,0,-5,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget o8:=[[519.14,-99.55,249.49],[0.0109924,-0.157003,0.987512,0.00700935],[-
1,0,-5,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
//Define the positions of the points for letter “T”
CONST robtarget t1:=[[519.14,-99.55,249.49],[0.0109924,-0.157003,0.987512,0.00700935],[-
1,0,-5,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget t2:=[[519.14,-99.55,249.49],[0.0109924,-0.157003,0.987512,0.00700935],[-
1,0,-5,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget t3:=[[519.14,-99.55,249.49],[0.0109924,-0.157003,0.987512,0.00700935],[-
1,0,-5,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
CONST robtarget t4:=[[519.14,-99.55,249.49],[0.0109924,-0.157003,0.987512,0.00700935],[-
1,0,-5,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
VAR string answer; //define a string variable answer
PROC main()
// Get the letter that the operator entered and store that string into “answer”.
answer := UIAlphaEntry (\Header:= " "
\Message:= "Enter the Letter: "
\Icon:= iconInfo
\InitString:= "signal.log"
\MaxTime:= 60
\BreakFlag:= err_var);
IF answer = "r" THEN // if operator enters “r”, call subroutine LETTER_R
LETTER_R;
ELSEIF answer = "o" THEN // if operator enters “o”, call subroutine LETTER_O
LETTER_O;
ELSEIF answer = "b" THEN // if operator enters “b”, call subroutine LETTER_B
Letter_B;
ELSEIF answer = "t" THEN // if operator enters “t”, call subroutine LETTER_T
Letter_T;
ELSEIF answer = "W" THEN // if operator enters “W”, call subroutine LETTER_R,
LETTER_O, LETTER_B, LETTER_O1, Letter_T
LETTER_R;
LETTER_O;
LETTER_B;
LETTER_O1;
Letter_T;
ELSE //else, teach pendant will show the message “INVALID ENTRY!”
TPWrite "INVALID ENTRY!";
ENDIF
ENDPROC
PROC LETTER_R() //subroutine to draw letter “R”
MoveJ Offs(r1,0,0,20), v1000, fine, tool0;
MoveL r1, v1000, fine, tool0;
MoveL r2, v1000, fine, tool0;
MoveL r3, v1000, fine, tool0;
MoveC r4, r5, v1000, fine, tool0;
MoveL r6, v1000, fine, tool0;
MoveL Offs(r6,0,0,20), v1000, fine, tool0;
MoveL Offs(r5,0,0,20), v1000, fine, tool0;
MoveL r5, v1000, fine, tool0;
MoveL r7, v1000, fine, tool0;
MoveL Offs(r7,0,0,20), v1000, fine, tool0;
ENDPROC
PROC LETTER_O() //subroutine to draw letter “O”
//Move to the position above point o4 at speed 1000mm/s and vertical distance between the target
position and o4 is 10
MoveJ Offs(o4, 0, 0, 10), v1000, fine, tool0;
// Move linearly to point o4 at speed 1000mm/s without cutting any corners.
MoveL o4, v1000, fine, tool0;
// Move circularly from current position to o2 through o1 at speed 1000mm/s.
MoveC o1, o2, v1000, fine, tool0;
// Move circularly from current position to o4 through o3 at speed 1000mm/s.
MoveC o3, o4,v1000, fine, tool0;
//Move to the position above point o4 at speed 1000mm/s and vertical distance between the target
position and o4 is 10
MoveL Offs(o4, 0, 0, 10), v1000,fine, tool0;
ENDPROC
PROC Letter_B() //subroutine to draw letter “B”
//Move to the position above point b1 at speed 1000mm/s and vertical distance between the target
position and b1 is 10
MoveJ Offs(b1,0,0,10), v1000, fine, tool0;
// Move linearly to point b1 at speed 1000mm/s without cutting any corners.
MoveL b1, v1000, fine, tool0;
// Move linearly to point b2 at speed 1000mm/s without cutting any corners.
MoveL b2, v1000, fine, tool0;
// Move linearly to point b3 at speed 1000mm/s without cutting any corners.
MoveL b3, v1000, fine, tool0;
// Move circularly from current position to b5 through b4 at speed 1000mm/s.
MoveC b4, b5, v1000, fine, tool0;
// Move linearly to point b6 at speed 1000mm/s without cutting any corners.
MoveL b6, v1000, fine, tool0;
// Move linearly to point b5 at speed 1000mm/s without cutting any corners.
MoveL b5, v1000, fine, tool0;
// Move circularly from current position to b8 through b7 at speed 1000mm/s.
MoveC b7, b8, v1000, fine, tool0;
// Move linearly to point b1 at speed 1000mm/s without cutting any corners.
MoveL b1, v1000, fine, tool0;
//Move to the position above point b1 at speed 1000mm/s
MoveL Offs(b1, 0, 0, 10), v1000,fine, tool0;
ENDPROC
PROC LETTER_O1() //subroutine to draw the 2nd letter “O”
//Move to the position above point o8 at speed 1000mm/s
MoveJ Offs(o8, 0, 0, 10), v1000, fine, tool0;
// Move linearly to point o8 at speed 1000mm/s without cutting any corners.
MoveL o8, v1000, fine, tool0;
// Move circularly from current position to o6 through o5 at speed 1000mm/s.
MoveC o5, o6, v1000, fine, tool0;
// Move circularly from current position to o8 through o7 at speed 1000mm/s.
MoveC o7, o8,v1000, fine, tool0;
//Move to the position above point o8 at speed 1000mm/s
MoveL Offs(o8, 0, 0, 10), v1000,fine, tool0;
ENDPROC
PROC Letter_T() //subroutine to draw letter “T”
//Move to the position above point t1 at speed 1000mm/s
MoveJ Offs(t1, 0, 0, 10), v1000, fine, tool0;
// Move linearly to point t1 at speed 1000mm/s without cutting any corners.
MoveL t1, v1000, fine, tool0;
// Move linearly to point t2 at speed 1000mm/s without cutting any corners.
MoveL t2, v1000, fine, tool0;
// Move linearly to point t3 at speed 1000mm/s without cutting any corners.
MoveL t3, v1000, fine, tool0;
// Move linearly to point t4 at speed 1000mm/s without cutting any corners.
MoveL t4, v1000, fine, tool0;
//Move to the position above point t4 at speed 1000mm/s
MoveL Offs(t4, 0, 0, 10), v1000, fine, tool0;
ENDPROC
ENDMODULE

3.3. Session Three(Based on the code of Session two)


MODULE MainModule
VAR string answer; //define a string variable answer
VAR dnum numeric; //define a dnum variable numeric
VAR errnum err_var; //define a errnum variable err_var
PROC main()
// Get the letter that the operator entered and store that string into “answer”.
answer := UIAlphaEntry (\Header:= " "
\Message:= "Enter the Letter: "
\Icon:= iconInfo
\InitString:= "signal.log"
\MaxTime:= 60
\BreakFlag:= err_var);
//Get the number of times that operator wants to draw the selected letter
numeric := UIDnumEntry(
\Header:= ""
\Message:= "How many times you want to write this letter?"
\Icon:= iconInfo
\InitValue:= 3 //initiate the value as 3
\MinValue:=1 //min value is 1
\MaxValue:=5 //max value is 5
\AsInteger);
IF answer = "r" THEN // “r” is selected, then draw it certain times depending on numeric
TEST numeric
CASE 1: //numeric = 1
LETTER_R; //call subroutine LETTER_R, draw “R” once
CASE 2: //numeric = 2
LETTER_R; LETTER_R1; // draw “R” twice
CASE 3: //numeric = 3
LETTER_R; LETTER_R1; LETTER_R2; // draw “R” 3 times
CASE 4: //numeric = 4
LETTER_R; LETTER_R1; LETTER_R2; LETTER_R3; // draw “R” 4 times
CASE 5: //numeric = 5, draw “R” 5 times
LETTER_R; LETTER_R1; LETTER_R2; LETTER_R3; LETTER_R4;
ENDTEST
ELSEIF answer = "o" THEN // “o” is selected
TEST numeric // draw “o” certain times depending on numeric
CASE 1: //numeric = 1
LETTER_OPrev; //call subroutine LETTER_ OPrev, draw “O” once
CASE 2: //numeric = 2
LETTER_OPrev; LETTER_O; //draw “O” twice
CASE 3: //numeric = 3
LETTER_OPrev; LETTER_O;LETTER_O2; //draw “O” 3 times
CASE 4: //numeric = 4
LETTER_OPrev; LETTER_O; LETTER_O2; LETTER_O3; //draw “O” 4 times
CASE 5: //numeric = 5,draw “O” 5 times
LETTER_OPrev;LETTER_O;LETTER_O2;LETTER_O3;LETTER_O4;
ENDTEST
ELSEIF answer = "b" THEN // “b” is selected
TEST numeric //draw “b” certain times depending on numeric
CASE 1: //numeric = 1
Letter_B1; //draw “B” 1 time
CASE 2: //numeric = 2
Letter_B1;Letter_B2; //draw “B” 2 times
CASE 3: //numeric = 3
Letter_B1;Letter_B2;Letter_B; //draw “B” 3 times
CASE 4: //numeric = 4
Letter_B1;Letter_B2;Letter_B;Letter_B3; //draw “B” 4 times
CASE 5: //numeric = 5
Letter_B1;Letter_B2;Letter_B;Letter_B3;Letter_B4; //draw “B” 5 times
ENDTEST
ELSEIF answer = "t" THEN // “t” is selected
TEST numeric //draw “t” certain times depending on numeric
CASE 1: //numeric = 1
Letter_T1; //draw “T” 1 time
CASE 2: //numeric = 2
Letter_T1;Letter_T2; //draw “T” 2 times
CASE 3: //numeric = 3
Letter_T1;Letter_T2;Letter_T3; //draw “T”3 times
CASE 4: //numeric = 4
Letter_T1;Letter_T2;Letter_T3;Letter_T4; //draw “T” 4 times
CASE 5: //numeric = 5
Letter_T1;Letter_T2;Letter_T3;Letter_T4;Letter_T; //draw “T” 5 times
ENDTEST
ELSEIF answer = "W" THEN // “W” is selected
TEST numeric
CASE 1: //draw word “ROBOT”
LETTER_R;LETTER_O;LETTER_B;LETTER_O1;Letter_T;
ENDTEST
Else //else, the teach pendant will display the message below:
TPWrite "INVALID ENTRY!";
ENDIF
ENDPROC
PROC LETTER_R() //subroutine to draw letter “R”
MoveJ Offs(r1,0,0,10), v1000, fine, tool0;
MoveL r1, v1000, fine, tool0;
MoveL r2, v1000, fine, tool0;
MoveL r3, v1000, fine, tool0;
MoveC r4, r5, v1000, fine, tool0;
MoveL r6, v1000, fine, tool0;
MoveL Offs(r6,0,0,10), v1000, fine, tool0;
MoveL Offs(r5,0,0,10), v1000, fine, tool0;
MoveL r5, v1000, fine, tool0;
MoveL r7, v1000, fine, tool0;
MoveL Offs(r7,0,0,10), v1000, fine, tool0;
ENDPROC
PROC LETTER_R1() //subroutine to draw letter “R”, use offs() to adjust the position of R
MoveJ Offs(r1,0,30,10), v1000, fine, tool0;
MoveL Offs(r1, 0, 30, 0), v1000, fine, tool0;
MoveL Offs (r2, 0, 30, 0), v1000, fine, tool0;
MoveL offs (r3, 0, 30, 0), v1000, fine, tool0;
MoveC offs (r4, 0,30, 0), Offs( r5, 0, 30, 0), v1000, fine, tool0;
MoveL Offs (r6,0, 30, 0), v1000, fine, tool0;
MoveL Offs(r6,0,30,10), v1000, fine, tool0;
MoveL Offs(r5,0,30,10), v1000, fine, tool0;
MoveL offs (r5,0, 30, 0), v1000, fine, tool0;
MoveL Offs ( r7,0, 30, 0), v1000, fine, tool0;
MoveL Offs(r7,0,30,10), v1000, fine, tool0;
ENDPROC
PROC LETTER_R2() //subroutine to draw letter “R”, use offs() to adjust the position of R
MoveJ Offs(r1,0,60,10), v1000, fine, tool0;
MoveL Offs(r1, 0, 60, 0), v1000, fine, tool0;
MoveL Offs (r2, 0,60, 0), v1000, fine, tool0;
MoveL offs (r3, 0, 60, 0), v1000, fine, tool0;
MoveC offs (r4, 0, 60, 0), Offs( r5, 0, 60, 0), v1000, fine, tool0;
MoveL Offs (r6,0, 60, 0), v1000, fine, tool0;
MoveL Offs(r6,0,60,10), v1000, fine, tool0;
MoveL Offs(r5,0,60,10), v1000, fine, tool0;
MoveL offs (r5,0, 60, 0), v1000, fine, tool0;
MoveL Offs ( r7,0, 60, 0), v1000, fine, tool0;
MoveL Offs(r7,0,60,10), v1000, fine, tool0;
ENDPROC
PROC LETTER_R3() //subroutine to draw letter “R”, use offs() to adjust the position of R
MoveJ Offs(r1,0,90,10), v1000, fine, tool0;
MoveL Offs(r1, 0,90, 0), v1000, fine, tool0;
MoveL Offs (r2, 0, 90, 0), v1000, fine, tool0;
MoveL offs (r3, 0, 90, 0), v1000, fine, tool0;
MoveC offs (r4, 0, 90, 0), Offs( r5, 0,90, 0), v1000, fine, tool0;
MoveL Offs (r6,0, 90, 0), v1000, fine, tool0;
MoveL Offs(r6,0,90,10), v1000, fine, tool0;
MoveL Offs(r5,0,90,10), v1000, fine, tool0;
MoveL offs (r5,0, 90, 0), v1000, fine, tool0;
MoveL Offs ( r7,0, 90, 0), v1000, fine, tool0;
MoveL Offs(r7,0,90,10), v1000, fine, tool0;
ENDPROC
PROC LETTER_R4() //subroutine to draw letter “R”, use offs() to adjust the position of R
MoveJ Offs(r1,0,120,10), v1000, fine, tool0;
MoveL Offs(r1, 0, 120, 0), v1000, fine, tool0;
MoveL Offs (r2, 0, 120, 0), v1000, fine, tool0;
MoveL offs (r3, 0, 120, 0), v1000, fine, tool0;
MoveC offs (r4, 0, 120, 0), Offs( r5, 0, 120, 0), v1000, fine, tool0;
MoveL Offs (r6,0, 120, 0), v1000, fine, tool0;
MoveL Offs(r6,0,120,10), v1000, fine, tool0;
MoveL Offs(r5,0,120,10), v1000, fine, tool0;
MoveL offs (r5,0, 120, 0), v1000, fine, tool0;
MoveL Offs ( r7,0, 120, 0), v1000, fine, tool0;
MoveL Offs(r7,0,120,10), v1000, fine, tool0;
ENDPROC
PROC LETTER_OPrev() //subroutine to draw letter “O”, use offs() to adjust the position of O
MoveJ Offs(o4, 0, -30, 10), v1000, fine, tool0;
MoveL offs (o4,0, -30, 0), v1000, fine, tool0;
MoveC offs (o1,0, -30, 0), offs (o2,0, -30, 0), v1000, fine, tool0;
MoveC offs (o3,0, -30, 0), offs (o4,0, -30, 0),v1000, fine, tool0;
MoveL Offs(o4, 0, -30, 10), v1000,fine, tool0;
ENDPROC
PROC LETTER_O() //subroutine to draw letter “O”
MoveJ Offs(o4, 0, 0, 10), v1000, fine, tool0;
MoveL o4, v1000, fine, tool0;
MoveC o1, o2, v1000, fine, tool0;
MoveC o3, o4,v1000, fine, tool0;
MoveL Offs(o4, 0, 0, 10), v1000,fine, tool0;
ENDPROC
PROC LETTER_O2()//subroutine to draw letter “O”, use offs() to adjust the position of O
MoveJ Offs(o4, 0, 30, 10), v1000, fine, tool0;
MoveL Offs(o4, 0, 30, 0), v1000, fine, tool0;
MoveC Offs(o1, 0, 30, 0), Offs(o2, 0, 30, 0), v1000, fine, tool0;
MoveC Offs(o3, 0, 30, 0), Offs(o4, 0, 30, 0),v1000, fine, tool0;
MoveL Offs(o4, 0, 30, 10), v1000,fine, tool0;
ENDPROC
PROC LETTER_O3()//subroutine to draw letter “O”, use offs() to adjust the position of O
MoveJ Offs(o4, 0, 60, 10), v1000, fine, tool0;
MoveL Offs(o4, 0, 60, 0), v1000, fine, tool0;
MoveC Offs(o1, 0, 60, 0), Offs(o2, 0, 60, 0), v1000, fine, tool0;
MoveC Offs(o3, 0, 60, 0), Offs(o4, 0, 60, 0),v1000, fine, tool0;
MoveL Offs(o4, 0, 60, 10), v1000,fine, tool0;
ENDPROC
PROC LETTER_O4()//subroutine to draw letter “O”, use offs() to adjust the position of O
MoveJ Offs(o4, 0, 90, 10), v1000, fine, tool0;
MoveL Offs(o4, 0, 90, 0), v1000, fine, tool0;
MoveC Offs(o1, 0, 90, 0), Offs(o2, 0,90, 0), v1000, fine, tool0;
MoveC Offs(o3, 0, 90, 0), Offs(o4, 0, 90, 0),v1000, fine, tool0;
MoveL Offs(o4, 0, 90, 10), v1000,fine, tool0;
ENDPROC
PROC Letter_B()//subroutine to draw letter “B”
MoveJ Offs(b1,0,0,10), v1000, fine, tool0;
MoveL b1, v1000, fine, tool0;
MoveL b2, v1000, fine, tool0;
MoveL b3, v1000, fine, tool0;
MoveC b4, b5, v1000, fine, tool0;
MoveL b6, v1000, fine, tool0;
MoveL b5, v1000, fine, tool0;
MoveC b7, b8, v1000, fine, tool0;
MoveL b1, v1000, fine, tool0;
MoveL Offs(b1, 0, 0, 10), v1000,fine, tool0;
ENDPROC
PROC Letter_B1()//subroutine to draw letter “B”, use offs() to adjust the position of B
MoveJ Offs(b1,0,-60,10), v1000, fine, tool0;
MoveL Offs(b1,0,-60,0), v1000, fine, tool0;
MoveL Offs(b2,0,-60,0), v1000, fine, tool0;
MoveL Offs(b3,0,-60,0), v1000, fine, tool0;
MoveC Offs(b4,0,-60,0), Offs(b5,0,-60,0), v1000, fine, tool0;
MoveL Offs(b6,0,-60,0), v1000, fine, tool0;
MoveL Offs(b5,0,-60,0), v1000, fine, tool0;
MoveC Offs(b7,0,-60,0), Offs(b8,0,-60,0), v1000, fine, tool0;
MoveL Offs(b1,0,-60,0), v1000, fine, tool0;
MoveL Offs(b1, 0, -60, 10), v1000,fine, tool0;
ENDPROC
PROC Letter_B2()//subroutine to draw letter “B”, use offs() to adjust the position of B
MoveJ Offs(b1,0,-30,10), v1000, fine, tool0;
MoveL Offs(b1,0,-30,0), v1000, fine, tool0;
MoveL Offs(b2,0,-30,0), v1000, fine, tool0;
MoveL Offs(b3,0,-30,0), v1000, fine, tool0;
MoveC Offs(b4,0,-30,0), Offs(b5,0,-30,0), v1000, fine, tool0;
MoveL Offs(b6,0,-30,0), v1000, fine, tool0;
MoveL Offs(b5,0,-30,0), v1000, fine, tool0;
MoveC Offs(b7,0,-30,0), Offs(b8,0,-30,0), v1000, fine, tool0;
MoveL Offs(b1,0,-30,0), v1000, fine, tool0;
MoveL Offs(b1, 0, -30, 10), v1000,fine, tool0;
ENDPROC
PROC Letter_B3()//subroutine to draw letter “B”, use offs() to adjust the position of B
MoveJ Offs(b1,0,30,10), v1000, fine, tool0;
MoveL Offs(b1,0,30,0), v1000, fine, tool0;
MoveL Offs(b2,0,30,0), v1000, fine, tool0;
MoveL Offs(b3,0,30,0), v1000, fine, tool0;
MoveC Offs(b4,0,30,0), Offs(b5,0,30,0), v1000, fine, tool0;
MoveL Offs(b6,0,30,0), v1000, fine, tool0;
MoveL Offs(b5,0,30,0), v1000, fine, tool0;
MoveC Offs(b7,0,30,0), Offs(b8,0,30,0), v1000, fine, tool0;
MoveL Offs(b1,0,30,0), v1000, fine, tool0;
MoveL Offs(b1, 0,30, 10), v1000,fine, tool0;
ENDPROC
PROC Letter_B4()//subroutine to draw letter “B”, use offs() to adjust the position of B
MoveJ Offs(b1,0,50,10), v1000, fine, tool0;
MoveL Offs(b1,0,50,0), v1000, fine, tool0;
MoveL Offs(b2,0,50,0), v1000, fine, tool0;
MoveL Offs(b3,0,50,0), v1000, fine, tool0;
MoveC Offs(b4,0,50,0), Offs(b5,0,50,0), v1000, fine, tool0;
MoveL Offs(b6,0,50,0), v1000, fine, tool0;
MoveL Offs(b5,0,50,0), v1000, fine, tool0;
MoveC Offs(b7,0,50,0), Offs(b8,0,50,0), v1000, fine, tool0;
MoveL Offs(b1,0,50,0), v1000, fine, tool0;
MoveL Offs(b1, 0, 50, 10), v1000,fine, tool0;
ENDPROC
PROC Letter_T1()//subroutine to draw letter “T”, use offs() to adjust the position of T
MoveJ Offs(t1, 0, -120, 10), v1000, fine, tool0;
MoveL Offs(t1, 0, -120, 0), v1000, fine, tool0;
MoveL Offs(t2, 0, -120, 0), v1000, fine, tool0;
MoveL Offs(t3, 0, -120, 0), v1000, fine, tool0;
MoveL Offs(t4, 0, -120, 0), v1000, fine, tool0;
MoveL Offs(t4, 0, -120, 10), v1000, fine, tool0;
ENDPROC
PROC Letter_T2()//subroutine to draw letter “T”, use offs() to adjust the position of T
MoveJ Offs(t1, 0, -90, 10), v1000, fine, tool0;
MoveL Offs(t1, 0, -90, 0), v1000, fine, tool0;
MoveL Offs(t2, 0, -90, 0), v1000, fine, tool0;
MoveL Offs(t3, 0, -90, 0), v1000, fine, tool0;
MoveL Offs(t4, 0, -90, 0), v1000, fine, tool0;
MoveL Offs(t4, 0, -90, 10), v1000, fine, tool0;
ENDPROC
PROC Letter_T3()//subroutine to draw letter “T”, use offs() to adjust the position of T
MoveJ Offs(t1, 0, -50, 10), v1000, fine, tool0;
MoveL Offs(t1, 0, -50, 0), v1000, fine, tool0;
MoveL Offs(t2, 0, -50, 0), v1000, fine, tool0;
MoveL Offs(t3, 0, -50, 0), v1000, fine, tool0;
MoveL Offs(t4, 0, -50, 0), v1000, fine, tool0;
MoveL Offs(t4, 0, -50, 10), v1000, fine, tool0;
ENDPROC
PROC Letter_T4()//subroutine to draw letter “T”, use offs() to adjust the position of T
MoveJ Offs(t1, 0, -30, 10), v1000, fine, tool0;
MoveL Offs(t1, 0, -30, 0), v1000, fine, tool0;
MoveL Offs(t2, 0, -30, 0), v1000, fine, tool0;
MoveL Offs(t3, 0, -30, 0), v1000, fine, tool0;
MoveL Offs(t4, 0, -30, 0), v1000, fine, tool0;
MoveL Offs(t4, 0, -30, 10), v1000, fine, tool0;
ENDPROC
PROC Letter_T()//subroutine to draw letter “T”
MoveJ Offs(t1, 0, 0, 10), v1000, fine, tool0;
MoveL t1, v1000, fine, tool0;
MoveL t2, v1000, fine, tool0;
MoveL t3, v1000, fine, tool0;
MoveL t4, v1000, fine, tool0;
MoveL Offs(t4, 0, 0, 10), v1000, fine, tool0;
ENDPROC
PROC LETTER_O1()//subroutine to draw the 2nd letter “O”
MoveJ Offs(o8, 0, 0, 10), v1000, fine, tool0;
MoveL o8, v1000, fine, tool0;
MoveC o5, o6, v1000, fine, tool0;
MoveC o7, o8,v1000, fine, tool0;
MoveL Offs(o8, 0, 0, 10), v1000,fine, tool0;
ENDPROC
ENDMODULE

4. Coordinates:

5. Subroutines:
Subroutines with Coordinates Offset
LETTER_R: r1, r2, r3, r4, r5, r6, r7 Z-axis = 10
LETTER_R1: r1, r2, r3, r4, r5, r6, r7 Z-axis = 10, Y-axis = 30
LETTER_R2: r1, r2, r3, r4, r5, r6, r7 Z-axis = 10, Y-axis = 60
LETTER_R3: r1, r2, r3, r4, r5, r6, r7 Z-axis = 10, Y-axis = 90
LETTER_R4: r1, r2, r3, r4, r5, r6, r7 Z-axis = 10, Y-axis = 120
LETTER_OPrev: o1, o2, o3, o4 Z-axis = 10, Y-axis = -30
LETTER_O: o1, o2, o3, o4 Z-axis = 10
LETTER_O2: o1, o2, o3, o4 Z-axis = 10, Y-axis = 30
LETTER_O3: o1, o2, o3, o4 Z-axis = 10, Y-axis = 60
LETTER_O4: o1, o2, o3, o4 Z-axis = 10, Y-axis = 90
LETTER_B: b1, b2, b3, b4, b5, b6, b7, b8 Z-axis = 10
LETTER_B1: b1, b2, b3, b4, b5, b6, b7, b8 Z-axis = 10, Y-axis = -60
LETTER_B2: b1, b2, b3, b4, b5, b6, b7, b8 Z-axis = 10, Y-axis = -30
LETTER_B3: b1, b2, b3, b4, b5, b6, b7, b8 Z-axis = 10, Y-axis = 30
LETTER_B4: b1, b2, b3, b4, b5, b6, b7, b8 Z-axis = 10, Y-axis = 50
LETTER_T1: t1, t2, t3, t4 Z-axis = 10, Y-axis = -120
LETTER_T2: t1, t2, t3, t4 Z-axis = 10, Y-axis = -90
LETTER_T3: t1, t2, t3, t4 Z-axis = 10, Y-axis = -50
LETTER_T4: t1, t2, t3, t4 Z-axis = 10, Y-axis = -30
LETTER_T: t1, t2, t3, t4 Z-axis = 10
LETTER_O1: o5, o6, o7, o8 Z-axis = 10

6. Problems:
Session 1
 We were not able to find the “Dead man Switch”, because of which we get delayed from starting the
lab.
 All the E-stops were pressed by the previous group. Even the one down the robot where all the
machinery is present. Because of that e-switch we again got delayed from starting our lab.
 Both of the above problems were rectified by the help of lab instructor, Mr. Wi lson.
 One major problem was when we need to transfer the code from the PC to the robot. Initially it was
tricky but after couple of times we figured that out easily. Mr. Wilson recorded a video of ours doing
that.

Session 2
 We were supposed to enter the letter and the how many number of times you want to print this
letter. Searching the commands for the same was a bit tricky part because there were various
commands for the same commands mentioned in the user manual of ABB.
 For the last session we needed to write the same letter for some number of times. How to use the
same written code with the same teach points (without teaching the new teach points). We had an
idea of doing offset but we confirmed that with Mr. Wilson and then we did it by using offset i n Y
axis.

Session 3
 We almost completed our last session in our second lab itself. We were planning to do something
more creative in the last session which was not mentioned in the lab manual like writing a letter in
Chinese or in Hindi language. But when we started doing our lab, as usual all the e-stop buttons
were pressed and the moment I released the last e-stop robot gets down and touched the surface of
the table. Mr. Wilson helped us getting it up in normal position.
 We were not able to figure what was wrong with the robot was at that moment but Mr. Wilson
came and played with the robot for a little bit and started working ( NOT PERFECTLY).
 Then we restarted the robot and it started showing the error “Robot is in Singularity State”. Which
our instructor Mr. Wilson explained that it’s because of the robot doesn’t know where to go. This
happens because if something happens with the robot’s memory. Again Mr. Wilson helped us to
overcome this.
7. But something was wrong with the robot’s axis. +Y and –Y axis was not behaving as they were
supposed to. Because of that we were only able to complete our last session. If this wouldn’t
happened we could have done something new.

6. Improvements
 The manual could have been more object-oriented and informatory.
 Whoever works on the robot should properly shut it down and bring it to the home position so
that it would be easier for the following group to start- up.
 We could have completed all of the session earlier than we did (2 days), if we could have done
some research prior to the lab sessions.
 There should be proper highlighted guidelines for the restricted areas of the lab so that students
wouldn’t reach places they are not supposed to as the lab group ahead of ours did. They pressed
the e-stop on the main controller which gave us a huge mess to deal with at the start of the lab
every time.

Anda mungkin juga menyukai