Industrial Robot Programming: ABB IRB 1200

4772 words (19 pages) Essay in Computer Science

23/09/19 Computer Science Reference this

Disclaimer: This work has been submitted by a student. This is not an example of the work produced by our Essay Writing Service. You can view samples of our professional work here.

Any opinions, findings, conclusions or recommendations expressed in this material are those of the authors and do not necessarily reflect the views of UK Essays.



The ABB IRB 1200 is an example of a 6 Degree of Freedom industrial manipulator or industrial robot. Industrial robots are robots used in manufacturing [1]. They are programmable, automated and able to perform the multi-axis motion. They are used to carry out manufacturing processes like welding, assembly, pick and place, packaging, labelling and palletizing [1]. They are especially beneficial for tasks that involve the movement of heavy materials or materials in locations that are not easily accessible. They also can be used to move products that pose a hazard to humans and to move objects or products at a fast rate.  Industries such as Automotive, Manufacturing, Packaging, Food, Textiles, Wood and Building have found that the use of industrial robots has been very valuable as it is able to increase efficiency, productivity, and profits.

Get Help With Your Essay

If you need assistance with writing your essay, our professional essay writing service is here to help!

Find out more

This project involves the use of RobotStudio software to program the IRB 1200 industrial robot to use a pen mounted to its tool flanged to write and draw out shapes. Three shapes are to be drawn on the first piece of paper. The second sheet of paper requires that the letters making up the word “SALFORD” be traced. Personal names are to be written on the third sheet of paper. The programming language called RAPID is used to program the robot.

The aim of this project is to acquire the knowledge and skills needed to operate and program an ABB robot.








Figure 1  ABB IRB 1200 Robot

The ABB IRB 1200 has 6 axes. As shown in Figure 1 above, Axis 1 is found at position A, Axis 2 at position B, Axis 3 at position C, Axis 4 at position D, Axis 5 at position E and Axis 6, which controls the motion of the End Effector, is found at position F. The reach of the robot 0.9m and the handling capacity of the robot is 5kg.

 In jogging the robot to get to a point, motion can be carried out in an individual-axis mode, linear mode where multiple Axis move to give a straight line or diagonal motion or reorient mode such that the robot moves relative to the robot’s tool object.






Motion Types

  • Move J : This instruction is referred to as motion by joint movement [3] and is used to move the robot’s Tool Centre Point(TCP) to a position or location but does  not require the robot to move along a linear path. The robot can take any path as long as it gets to the programmer’s specified point. This move instruction is vital for starting its motion process as it really does not matter how the robot gets to its start point. The disadvantage of this move type is that the robot is not intelligent enough to recognise obstacles along the path its chooses to take and as such, can collide with objects or even people when getting to its start point.
  • Move L: This move type is most commonly used when designing the path of operation of the robot. With a move L instruction, the robot’s TCP moves in a straight line from one point to the next specified point. This move instruction can only be used when the robot is carrying out its main task.
  • Move C: The Move C instruction is used to move the robot’s TCP along circular point. This instruction is very vital when the operation to be carried out by the robot involves it to take a curved path. While other move instructions take one position argument, the Move C instruction takes two position arguments. For a semi-circular path, the first position argument is the centre of the semi-circle while the second position argument is the end point of the semi-circle. To program a complete (360 degree) circular path, two Move C instructions are needed, with each position argument taking a quarter point radius of the circle.

The major difference between all the move instructions is that Move J moves in a non-linear path, Move L moves in a linear path and Move C moves in a circular path. With regards to when they are used, Move J is used as the first move instruction when starting the program, Move L and Move C are used when the robot is carrying out its main task.

Coordinate systems

They are used to define the position of the robot at any point in time during its main-task-handling. The robot is able to establish a flawless coordinate system by assigning a reference point called Origin which can either be Base, Work Object or Tool.

     The Base Coordinate system:


Figure 2    Base Coordinate System [2]

The origin point is located at the base of the robot. It is used mostly when manually jogging the robot. It is the default coordinate system adopted by the robot manufacturers as it’s the simplest and easiest. The base coordinate uses up-down joystick handling as its X axis, left-right joystick handling as its Y axis and twist joystick handling as its z axis [2].

     The Tool Coordinate System

Figure 3   Tool Coordinate System [2]

In the tool coordinate system, the origin is defined at the centre point of the tool. Every robot has a predefined Tool Centre Point which is located at the wrist of the robot. The wrist of the robot is the part of the robot that the tool attaches to. Once we attach a tool to the robot, we need to define a new Tool Centre Point (TCP).  This is important because when we plan a path or location for the robot, it is the TCP the robot moves to the location. If the TCP is still set to default mode when using the Tool coordinate system, it would be the wrist of the robot getting to the programmed points and not the tool. In setting the TCP, we need knowledge of the position of the tip of the pen relative to the wrist of the robot, the centre of gravity of the tool and its mass. The tool coordinate system can be used when we do not want to change the orientation of the tool when the robot is in motion.

     Work Object Coordinate System

Figure 4  Work Object Coordinate System [2]

This coordinate system sets the origin to be in relation to the workobject. A robot can be programmed to work with multiple work object coordinate systems as done in this project. The coordinate is specified by the user. The user jogs the robot to set three points that defines the position of the workpiece, two X-axis points and one Y-axis point. The advantage of using the work object coordinate system is that modification of the program can be easily done if the work object is moved. It’s unnecessary to program all the target locations again if the work object is moved. Instead, we specify the new position of the work object relative to its former position. For this project, three work objects were established: WobjPaper1 which defines the Shape-Based work piece; wobjsal which defines the work object for the Salford work piece; and wobj1 which defines the work object for the Name workpiece


It is used when the robot is programmed to move to a point, but the robot doesn’t need to reach that exact position. Zone data is a variable that is used to describe how close the robot should be to a programmed position before moving towards the next position. Most industrial operations require the robot gets to the exact position programmed and hence, the use of “fine” zone data. The values of zonedata in RAPID ranges from z5 to above z200. This means that the robot can move to the next position when its 5mm to above 200mm away from its programmed point. It is also possible to create a user-specified zonedata.  

Programming in RAPID

An example of a RAPID code is shown below:

MoveL * v100,fine,toolPen\WObj:=wobjPaper1;

      Move L is the move instruction that tells the robot to move linearly to a point.

      * Is the X,Y,Z coordinates the robot programmed to move to. The value of coordinates are based on the workobject indicated. It is to be noted that at any location the robot is, if a move instruction is added, the coordinate at that point is what is recorded in * but can be modified if it was the wrong coordinate.

      Fine refers to the Zonedata of that instruction. Fine means the robot should get to that exact position. 

      V100 is the velocity or speed the robot is to move with. It is also a variable and it is set by the user. The values from the menu list in the flex pendant ranges from v5m/s to above v1000m/s. The default speed is v1000m/s but for this project, it was required to be 100m/s.

      toolPen is the Tool Object specified by the user. It stores the details of the TCP. For this project, a pen as the tool object, hence, the variable name, toolPen.

      WObj:=wobjPaper1specifies the workobect  being used. For this project, three workobjects were created for the three different robot tasks. 

Rapid Programming Code

MODULE MainModule

 VAR num Choice:=0;

 VAR num ShapeChoice1:=0;

 VAR num numshapes:=0;

 VAR num numname:=0;

 VAR num numsalford:=0;

 VAR num numcircle:=0;

 VAR num numsquare:=0;

 VAR num numsemicircle:=0;

 TASK PERS wobjdata wobjsal:=[FALSE,TRUE,””,[[658.061,-89.0533,103.035],[0.000000227,-0.000001718,0.000000304,1]],[[0,0,0],[1,0,0,0]]];

 PROC main()

  TPReadFK Choice, “what would you like to draw?”, “Shapes”, “Salford”, “Name”, stEmpty, stEmpty;

  TEST Choice

  CASE 3:


   TPWrite “Number of Name = “\Num:=numname;

  CASE 1:


   TPWrite “Number of Shapes=”\Num:=numshapes;

  CASE 2:


   TPWrite “Number of Salford = “\Num:=numsalford;




  MoveJ [[-38.98,75.41,10],[0.461988,-0.553926,0.506544,0.472383],[0,0,-1,1],[9E9,9E9,9E9,9E9,9E9,9E9]],v100,fine,toolPen\WObj:=wobjPaper1;

  MoveL [[-118.76,140.31,5],[0.461988,-0.553926,0.506544,0.472383],[0,0,-1,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v100,fine,toolPen\WObj:=wobjPaper1;

  MoveL [[-118.76,178.9,5],[0.461988,-0.553926,0.506544,0.472383],[0,0,-1,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v100,fine,toolPen\WObj:=wobjPaper1;

  MoveL [[-158.31,178.9,5],[0.461988,-0.553926,0.506544,0.472383],[0,0,-1,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v100,fine,toolPen\WObj:=wobjPaper1;

  MoveC [[-177.46,159.54,5],[0.461987,-0.553926,0.506545,0.472383],[0,0,-1,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],[[-158.14,140.33,5],[0.461987,-0.553927,0.506544,0.472382],[0,0,-1,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v100,z10,toolPen\WObj:=wobjPaper1;

  MoveL [[-118.74,140.27,5],[0.461988,-0.553926,0.506544,0.472383],[0,0,-1,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v100,fine,toolPen\WObj:=wobjPaper1;

  MoveL [[-118.74,140.27,10],[0.461989,-0.553926,0.506544,0.472383],[0,0,-1,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v100,fine,toolPen\WObj:=wobjPaper1;

  WaitTime 2;



  MoveJ [[-216.35,119.6,10],[0.461988,-0.553927,0.506545,0.472382],[0,0,-1,1],[9E9,9E9,9E9,9E9,9E9,9E9]],v100,fine,toolPen\WObj:=wobjPaper1;

  MoveL [[-221.73,134.23,5],[0.461988,-0.553925,0.506543,0.472385],[0,0,-1,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v100,fine,toolPen\WObj:=wobjPaper1;

  MoveC [[-268.14,120.15,5],[0.461989,-0.553925,0.506543,0.472385],[0,0,-1,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],[[-254.38,73.55,5],[0.461989,-0.553924,0.506543,0.472386],[0,0,-1,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v100,fine,toolPen\WObj:=wobjPaper1;

  MoveC [[-208.18,87.18,5],[0.461989,-0.553924,0.506543,0.472386],[0,0,-1,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],[[-221.24,133.64,5],[0.461989,-0.553924,0.506543,0.472386],[0,0,-1,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v100,fine,toolPen\WObj:=wobjPaper1;

  MoveL [[-221.24,133.64,5],[0.461989,-0.553924,0.506543,0.472386],[0,0,-1,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v100,fine,toolPen\WObj:=wobjPaper1;

  WaitTime 2;



  MoveJ [[72.29,52.72,-87.43],[0.0584463,0.728212,0.089383,-0.67698],[-1,-1,0,1],[9E9,9E9,9E9,9E9,9E9,9E9]],v150,fine,toolPen\WObj:=wobjsal;

  MoveL [[72.29,52.72,-98],[0.0584463,0.728212,0.0893836,-0.67698],[-1,-1,0,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v100,fine,toolPen\WObj:=wobjsal;

  MoveC [[53.01,32.79,-98],[0.0584464,0.728212,0.0893836,-0.67698],[-1,-1,0,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],[[71.77,14.11,-98],[0.0584464,0.728212,0.0893836,-0.67698],[-1,-1,0,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v100,z10,toolPen\WObj:=wobjsal;

  MoveL [[112.38,53.17,-98],[0.0584463,0.728212,0.0893835,-0.67698],[-1,-1,-1,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v100,fine,toolPen\WObj:=wobjsal;

  MoveC [[131.29,34.26,-98],[0.0584461,0.728212,0.0893836,-0.67698],[-1,-1,-1,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],[[113.27,14.16,-98],[0.0584461,0.728212,0.0893836,-0.67698],[-1,-1,-1,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v100,z10,toolPen\WObj:=wobjsal;

  MoveL [[130.72,59.96,-98],[0.0584461,0.728212,0.0893833,-0.67698],[-1,-1,-1,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v100,fine,toolPen\WObj:=wobjsal;

  MoveL [[54.64,78.04,-98],[0.0584462,0.728212,0.0893837,-0.67698],[-1,-1,0,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v100,fine,toolPen\WObj:=wobjsal;

  MoveL [[131.16,98.1,-98],[0.0584461,0.728213,0.0893835,-0.676979],[-1,-1,-1,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v100,fine,toolPen\WObj:=wobjsal;

  MoveL [[131.16,98.1,-98],[0.0584461,0.728213,0.0893835,-0.676979],[-1,-1,-1,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v100,fine,toolPen\WObj:=wobjsal;

  MoveL [[101.35,66.94,-98],[0.0584461,0.728213,0.0893835,-0.676979],[-1,-1,0,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v100,fine,toolPen\WObj:=wobjsal;

  MoveL [[101.35,90.08,-98],[0.0584461,0.728213,0.0893836,-0.676979],[-1,-1,0,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v100,fine,toolPen\WObj:=wobjsal;

  MoveL [[52.61,103.35,-98],[0.0584461,0.728212,0.0893839,-0.67698],[-1,-1,0,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v100,fine,toolPen\WObj:=wobjsal;

  MoveL [[131.66,104.27,-98],[0.058446,0.728212,0.0893838,-0.67698],[-1,-1,-1,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v100,fine,toolPen\WObj:=wobjsal;

  MoveL [[130.91,133.45,-98],[0.0584461,0.728213,0.0893837,-0.676979],[-1,-1,0,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v100,fine,toolPen\WObj:=wobjsal;

  MoveL [[130.44,139.4,-98],[0.058446,0.728213,0.0893837,-0.676979],[-1,-1,0,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v100,fine,toolPen\WObj:=wobjsal;

  MoveL [[52.25,138.54,-98],[0.0584461,0.728213,0.0893838,-0.676979],[-1,-1,0,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v100,fine,toolPen\WObj:=wobjsal;

  MoveL [[52.25,167.39,-98],[0.058446,0.728212,0.0893839,-0.67698],[-1,-1,0,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v100,fine,toolPen\WObj:=wobjsal;

  MoveL [[52.25,138.68,-98],[0.058446,0.728212,0.0893839,-0.676979],[-1,-1,0,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v100,fine,toolPen\WObj:=wobjsal;

  MoveL [[91.85,138.68,-98],[0.0584461,0.728212,0.089384,-0.67698],[-1,-1,0,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v100,fine,toolPen\WObj:=wobjsal;

  MoveL [[91.85,163,-98],[0.0584461,0.728212,0.089384,-0.67698],[-1,-1,0,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v100,fine,toolPen\WObj:=wobjsal;

  MoveL [[66.59,173.57,-98],[0.058446,0.728211,0.0893844,-0.676981],[-1,-1,0,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v100,fine,toolPen\WObj:=wobjsal;

  MoveC [[51.36,187.04,-98],[0.0584459,0.728211,0.0893846,-0.676981],[-1,-1,0,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],[[65.24,202.49,-98],[0.058446,0.728211,0.0893843,-0.676981],[-1,-1,0,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v100,z10,toolPen\WObj:=wobjsal;

  MoveL [[115.5,203.29,-98],[0.0584461,0.728211,0.0893842,-0.676981],[-1,-1,0,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v100,fine,toolPen\WObj:=wobjsal;

  MoveC [[130.07,188.89,-98],[0.0584459,0.728211,0.0893844,-0.676981],[-1,-1,0,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],[[115.58,174.4,-98],[0.058446,0.728211,0.0893843,-0.676981],[-1,-1,0,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v100,z10,toolPen\WObj:=wobjsal;

  MoveL [[67.18,173.92,-98],[0.0584461,0.728211,0.0893842,-0.676981],[-1,-1,0,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v100,fine,toolPen\WObj:=wobjsal;

  MoveL [[128.53,209.22,-98],[0.0584461,0.728211,0.0893842,-0.676981],[-1,-1,0,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v100,fine,toolPen\WObj:=wobjsal;

  MoveL [[50.91,208.56,-98],[0.0584461,0.728211,0.0893842,-0.676981],[-1,-1,0,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v100,fine,toolPen\WObj:=wobjsal;

  MoveC [[70.92,237.48,-98],[0.0584462,0.728212,0.089384,-0.67698],[-1,-1,0,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],[[90.03,208.97,-98],[0.0584464,0.728212,0.0893839,-0.67698],[-1,-1,0,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v100,z10,toolPen\WObj:=wobjsal;

  MoveL [[89.93,217.82,-98],[0.0584465,0.728212,0.0893839,-0.67698],[-1,-1,0,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v100,fine,toolPen\WObj:=wobjsal;

  MoveL [[129.33,238,-98],[0.0584466,0.728212,0.0893838,-0.67698],[-1,-1,0,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v100,fine,toolPen\WObj:=wobjsal;

  MoveL [[128.22,244.2,-98],[0.0584465,0.728212,0.0893839,-0.67698],[-1,-1,0,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v100,fine,toolPen\WObj:=wobjsal;

  MoveL [[50.81,243.58,-98],[0.0584466,0.728212,0.0893837,-0.67698],[-1,-1,0,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v100,fine,toolPen\WObj:=wobjsal;

  MoveC [[90.41,282.45,-98],[0.0584468,0.728212,0.0893837,-0.67698],[-1,-1,0,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],[[128.69,244.34,-98],[0.0584471,0.728212,0.0893835,-0.67698],[-1,-1,0,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v100,z10,toolPen\WObj:=wobjsal;

  Incr numsalford;



  MoveJ [[-38.98,74.99,10],[0.461988,-0.553927,0.506544,0.472383],[0,0,-1,1],[9E9,9E9,9E9,9E9,9E9,9E9]],v100,z50,toolPen\WObj:=wobjPaper1;

  MoveL [[-38.98,75.41,5],[0.461988,-0.553926,0.506544,0.472383],[0,0,-1,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v100,fine,toolPen\WObj:=wobjPaper1;

  MoveL [[-39.89,134.19,5],[0.461988,-0.553926,0.506545,0.472383],[0,0,-1,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v100,fine,toolPen\WObj:=wobjPaper1;

  MoveL [[-93.65,134.55,5],[0.461986,-0.553928,0.506545,0.472382],[0,0,-1,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v100,fine,toolPen\WObj:=wobjPaper1;

  MoveL [[-93.42,75.72,5],[0.461986,-0.553928,0.506545,0.472382],[0,0,-1,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v100,fine,toolPen\WObj:=wobjPaper1;

  MoveL [[-38.98,75.41,5],[0.461988,-0.553926,0.506544,0.472383],[0,0,-1,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v100,fine,toolPen\WObj:=wobjPaper1;

  MoveL [[-38.98,75.41,10],[0.461988,-0.553926,0.506544,0.472383],[0,0,-1,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v100,fine,toolPen\WObj:=wobjPaper1;

  WaitTime 2;



  MoveJ [[0,0,0],[0.062002,0.748686,0.075926,-0.655637],[0,0,-1,1],[9E9,9E9,9E9,9E9,9E9,9E9]], v150, z20, toolPen\WObj:=wobj1;

  MoveL [[90,40,2],[0.062002,0.748686,0.075926,-0.655637],[0,0,-1,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]], v150, z20, toolPen\WObj:=wobj1;

  MoveC [[83,26,2],[0.062002,0.748686,0.075926,-0.655637],[0,0,-1,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]], [[85,8,2],[0.062002,0.748686,0.075926,-0.655637],[0,0,-1,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]], v150, z10, toolPen\WObj:=wobj1;

  MoveL [[136,42,2],[0.062002,0.748686,0.075926,-0.655637],[0,-1,-1,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]], v150, z20, toolPen\WObj:=wobj1;

  MoveC [[145,25,2],[0.062002,0.748686,0.075926,-0.655637],[0,-1,-1,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]], [[144,1,2],[0.062002,0.748686,0.075926,-0.655637],[0,-1,-1,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]], v150, z10, toolPen\WObj:=wobj1;

  MoveL [[145,49,2],[0.062002,0.748686,0.075926,-0.655637],[0,0,0,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]], v150, z20, toolPen\WObj:=wobj1;

  MoveL [[83,76,2],[0.062002,0.748686,0.075926,-0.655637],[0,0,0,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]], v150, z20, toolPen\WObj:=wobj1;

  MoveL [[145,101,2],[0.062002,0.748686,0.075926,-0.655637],[0,0,0,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]], v150, z20, toolPen\WObj:=wobj1;

  MoveL [[118,91,2],[0.062002,0.748686,0.075926,-0.655637],[0,0,0,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]], v150, z20, toolPen\WObj:=wobj1;

  MoveL [[118,58,2],[0.062002,0.748686,0.075926,-0.655637],[0,0,0,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]], v150, z20, toolPen\WObj:=wobj1;

  MoveL [[83,109,2],[0.062002,0.748686,0.075926,-0.655637],[0,0,0,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]], v150, z20, toolPen\WObj:=wobj1;

  MoveL [[118,127,2],[0.062002,0.748686,0.075926,-0.655637],[0,0,0,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]], v150, z20, toolPen\WObj:=wobj1;

  MoveL [[83,144,2],[0.062002,0.748686,0.075926,-0.655637],[0,0,0,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]], v150, z20, toolPen\WObj:=wobj1;

  MoveL [[118,127,2],[0.062002,0.748686,0.075926,-0.655637],[0,0,0,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]], v150, z20, toolPen\WObj:=wobj1;

  MoveL [[145,127,2],[0.062002,0.748686,0.075926,-0.655637],[-1,-1,-1,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]], v150, z20, toolPen\WObj:=wobj1;

  MoveL [[96,160,2],[0.062002,0.748686,0.075926,-0.655637],[-1,-1,-1,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]], v150, z20, toolPen\WObj:=wobj1;

  MoveC [[83,180,2],[0.062002,0.748686,0.075926,-0.655637],[-1,-1,-1,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]], [[100,207,2],[0.062002,0.748686,0.075926,-0.655637],[-1,-1,-1,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]], v150, z10, toolPen\WObj:=wobj1;

  MoveL [[135,207,2],[0.062002,0.748686,0.075926,-0.655637],[-1,-1,-1,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]], v150, z20, toolPen\WObj:=wobj1;

  MoveC [[145,180,2],[0.062002,0.748686,0.075926,-0.655637],[-1,-1,-1,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]], [[135,160,2],[0.062002,0.748686,0.075926,-0.655637],[-1,-1,-1,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]], v150, z10, toolPen\WObj:=wobj1;

  MoveL [[96,160,2],[0.062002,0.748686,0.075926,-0.655637],[-1,-1,-1,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]],v150,z20,toolPen\WObj:=wobj1;

  Incr numname;



  TPReadFK ShapeChoice1, “What shape would you draw”, “Circle”, “Square”, “Semi.Circle”, stEmpty, stEmpty;

  Incr numshapes;

  TEST ShapeChoice1

  CASE 1:


   Incr numcircle;

   TPWrite “Number of Cicles = “\Num:=numcircle;

  CASE 2:


   Incr numsquare;

   TPWrite “Number of Squares = “\Num:=numsquare;

  CASE 3:


   Incr numsemicircle;

   TPWrite “Number of SemiCircle = “\Num:=numsemicircle;




  Code Analysis

In the construction of this code, seven routines were created. They are: Main, Salford, Sayo, Circle, Square, Semi.Circle and Shapes routine. Also, variables with type integer, termed “num” in Rapid, such as numcircle, numsquare, numsemicircle, numshapes, numname and numsalford were declared. These variables served as counters.  Numcircle, numsquare, numsemicircle are the variable names given to the number of circles, squares and semicircles drawn by the robot, respectively. Numshapes is the total number of shapes (circle, square and semi-circle) drawn. Numsaford and Numname are the variable names given for the number of Salford and name’s written, respectively.

Find out how can help you!

Our academic experts are ready and waiting to assist with any writing project you may have. From simple essay plans, through to full dissertations, you can guarantee we have a service perfectly matched to your needs.

View our services

In the Main routine, a function called TPReadFK, Teach Pendant Read Function Key, was used to establish a user interface. In the use of this function, text is written on function keys [3]. Once any of those keys are depressed, the text written on the depressed keys are carried out. The argument for TPReadFK function consists of the text to be shown to the user, which is, “what would you like to draw?” and the list of operations, labelled, “stEmpty”, was replaced by “Shapes”, “Salford” and “Name”. The TEST function was then used to execute the instructions of any of the operations selected by the user. The TEST function is used because it can execute different instructions depending on a value or expression. Either the routine SAYO, SHAPES or SALFORD1 could be executed based on the value of “Choice”, which holds values 1,2 and 3 for SHAPES, SALFORD1 and SAYO respectively. TPWrite, Teach Pendant Write, is a function used to write on the Teach Pendant and it was used after the Routine call on each CASE to display the value of numname, numshapes and numsalford. It tells the user how many times the Name, Shape and Salford routines have been executed.

The SHAPE routine was programmed similar to the Main routine. A TPreadFK instruction was used to setup the user interface by using the variable name “ShapeChoice” to store user input to the question “What Shape would you draw”. The conditions established were routines, Circle, Square and Semi.Circle. TPWrite instruction is added to display the number of circles, squares and semi circles drawn. The instruction “INCR” is added to perform an increment of the values of numcircle, numsquare and numsemicircle for every time either of the routine Circle, Square or Semicircle is carried out, respectively.  INCR instruction is also added to the shapes routine to increment the value of numshapes.. 

The programming instruction for drawing the circle is written out in the CIRCLE Routine. A Move J instruction is used to move the joint axis of the robot to a position above the start point of the circle. Move L moves the robot to the start point. Since a single Move C instruction draws a SemiCircle, two of it is needed to draw out a full Circle, hence the double Move C instruction

In the SQUARE Routine, the instruction for a Square-Shaped drawing is codded. Move J moves the Robot to a point above the start point while the Move L that comes after moves the Robot to start point. Since a Square is made up of straight lines joined together, only Move L instructions were needed to program the robot path.

In the Semi-Circle Routine, Move J was used to get the Robot above the start point and Move L to the start point.  Move L instruction were used to program the straight-line paths and a Move C was used to achieve the Semi-Circular shape.

All Routines in the SHAPE Routine were programmed with the Pen Work Tool and WobjPaper1, Work Object. A delay of 2 Seconds is inserted in order to give the robot a rest before executing the next shape. Also, Since the workpieces needed exact-location motion, a Fine Zonedata was used. A velocity of 100m/s was used to ensure the work objects remained in good order as the robot executes its task because a fast movement of the robot can tear or damage the paper work object.

In executing the SALFORD Routine, Move J was used to get the robot above the start point by joint movement. A combination of Move L and Move C instructions were used to achieve the word “SALFORD”. Move C to draw Circular letters and Move L for Straight-Line letters.  The Work Object Coordinate system was used called “wobjsal”. A fine Zonedata was used to achieve exact-position motion and the Tool, toolPen, was used. The velocity of 100 m/s was maintained. The Incremental variable “numsalford” was added at the end of the program to achieve an incrementation only after the program has executed.

In the SAYO Routine, the letters forming the name, SAYO, was programmed.  The coordinates for the name was gotten from the Paint Desktop Application.  A move J was used to move the robot to a point above the start point. Move L and Move C instructions were used to achieve Linear and Circular letters, respectively. Since an exact-location motion was not required, a zonedata of 20mm was used. The work object defined was wobj1 and an increased velocity of 150m/s was used. The incremental variable, “numname” was added to the end of the program for incrementation to be done only after the program has been executed.


The Programming Environment, RobotStudio, is a excellent tool to aid understanding of the programming and operation of an ABB Robot. 

Cite This Work

To export a reference to this article please select a referencing style below:

Reference Copied to Clipboard.
Reference Copied to Clipboard.
Reference Copied to Clipboard.
Reference Copied to Clipboard.
Reference Copied to Clipboard.
Reference Copied to Clipboard.
Reference Copied to Clipboard.

Related Services

View all

DMCA / Removal Request

If you are the original writer of this essay and no longer wish to have the essay published on the UK Essays website then please:

Related Lectures

Study for free with our range of university lectures!