ABB Project

25
Robotics & Industrial Automation (Conestoga College) Introduction to Robotics Working with ABB IRB 120 Robot

Transcript of ABB Project

Page 1: ABB Project

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

Page 2: ABB Project

Contents1. Equipment List.....................................................................................................................................2

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

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 List1.1. ABB 120 robot

1.2. Robot controller

1.3. Pendant(MCP)

1.4. Marker

1.5. Paper

Page 3: ABB Project

1.6. ABB Robotics RobotStudio 5.61 software

2. Work cell task description2.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 TwoIn 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 ThreeBased 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]];

Page 4: ABB Project

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;

Page 5: ABB Project

// 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]];

Page 6: ABB Project

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:= " "

Page 7: ABB Project

\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;

Page 8: ABB Project

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

Page 9: ABB Project

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

Page 10: ABB Project

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

Page 11: ABB Project

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”

Page 12: ABB Project

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;

Page 13: ABB Project

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

Page 14: ABB Project

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;

Page 15: ABB Project

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;

Page 16: ABB Project

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;

Page 17: ABB Project

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

Page 18: ABB Project

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

Page 19: ABB Project

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. Wilson.

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 in 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.

Page 20: ABB Project

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.