• +86-13164100322
  • Room 40, 1st floor, Building T4, Rongke Tianyu, east of Guanshan Avenue and south of Linghualu, East Lake New Technology Development Zone, Wuhan City
News

ABB Robot Programming Skills 12: The difference between Fine and z0

Publish Time: 2024-09-09
1) What is zonedata?

The turning radius of the robot, that is, when the robot runs two motion instructions, if the turning radius is set, the robot will transition smoothly. The turning radius means that the robot enters the position within the radius of the set point and the robot starts to transition

2) What is fine?

If you want to reach a position accurately, use fine

3) The difference between z0 and fine?

In terms of trajectory, z0 and fine are similar. But in addition to accurate arrival, fine also has a function to prevent program pre-reading


Figure 1 21 lines use z0


Figure 2 21 lines use fine

When the robot is running, the teach pendant has two icons, one is the arrow on the left, indicating which line the program has read, and the other is the robot icon, indicating which line the robot is actually walking. In order to achieve functions such as smooth transition, the robot needs to pre-read several lines of code

If z0 in Figure 1 is used, the robot is walking on line 21, and the program has been executed to line 23, that is, the robot has not reached the position but has opened do

If fine in Figure 2 is used, the robot is walking on line 21, and the program is still on line 21, that is, with fine, the program pointer will not read in advance, that is, the robot will not open do until it has walked 21 lines.

ABB Robot Programming Skills 11:

Peter, CEO of Real-time Robotics Technology 1) If there are 6 product positions to be absorbed as shown in the above figure, how to create points as quickly as possible? (Pure teaching? Naive, too much physical work.)


2) As shown in the figure below, we can see that the posture of position 1 is the same as that of position 0. Position 1 is a radius offset relative to position 0, and positions 2-6 are also a radius offset relative to position 0. The postures of positions 2-6 are all facing the center of the circle. Since there are 6 points in the figure, starting from No. 2, each point posture is rotated 60° relative to No. 1


3) Is it possible to teach the position of point No. 0 and know the radius (if unknown, measure it yourself), and then automatically calculate the positions of the other 6 points without teaching? The answer is of course yes! ! !

4) Since it involves coordinate system offset and rotation, the Tool and workpiece coordinate systems must be done well

5) Create the tool gripper_dual, assuming that the z direction is 100 and the Z direction of the tool is the tool extension direction


6) Create a coordinate system as shown below, with the center of the circle in the middle, and the direction from No. 0 to No. 1 is X, and y is as shown. The workpiece coordinate system Z in the figure below is facing down (satisfying the right-hand rule). This creation is mainly for the convenience of calculation.


7) In the workwobject2 coordinate system, under the gripper_dual tool, teach the intermediate product position Target_center. At this time, the Z of the tool must be perpendicular to the product plane, that is, the Z of the tool is facing down. (In fact, we only need to use the posture and z of this point. The x and y of this point are both 0, because this point is at the origin in the workobject2 coordinate system, that is, x and y are both 0)

8) Set the distance from the center of the circle to the first product (that is, the radius radius), here we take 21.45mm

9) Let's assume that the first position is called Target1, then in the workobject2 coordinate system

Target1:=Target_center;! First, let the position and posture of Target1 be equal to Target_center

Target1.trans.x:=radius*cos(60*0);! Recalculate the x of the position

Target1.trans.y:=radius*sin(60*0);! Recalculate the y of the position

Target1:=RelTool(Target1,0,0,0Rz:=0*60);! After obtaining the calculated positions x and y, tcp rotates 60° around the Z of the tool.

10) Through the above example, the position of Target1 is obtained. Note that it is in the workobject2 coordinate system.

11) Combined with the test process, the calculation and movement of the six positions can be completed relatively simply, as follows

PROC main()

radius:=21.45;

count1:=1;

WHILEcount1<7 DO

rHome;

cal;

routine1;

count1:=count1+1;

ENDWHILE

ENDPROC 

PROC routine1()

MoveJoffs(Target_temp,0,0,-30),v500,z1,gripper_dualWObj:=Workobject_2;

MoveLTarget_temp,v500,z1,gripper_dualWObj:=Workobject_2;

WaitTime 1;

MoveLoffs(Target_temp,0,0,-30),v500,z1,gripper_dualWObj:=Workobject_2;

ENDPROC

 PROC cal()

Target_temp:=Target_center;

TEST count1

 CASE 1:

Target_temp.trans.x:=radius*cos(60*(count1-1));

Target_temp.trans.y:=radius*sin(60*(count1-1));

Target_temp:=RelTool(Target_temp,0,0,0Rz:=(count1-1)*60);

CASE 2:

Target_temp.trans.x:=radius*cos(60*(count1-1));

Target_temp.trans.y:=radius*sin(60*(count1-1));

Target_temp:=RelTool(Target_temp,0,0,0Rz:=60);

 CASE 3:

Target_temp.trans.x:=radius*cos(60*(count1-1));

Target_temp.trans.y:=radius*sin(60*(count1-1));

Target_temp:=RelTool(Target_temp,0,0,0Rz:=120);

CASE 4:

Target_temp.trans.x:=radius*cos(60*(count1-1));

Target_temp.trans.y:=radius*sin(60*(count1-1));

Target_temp:=RelTool(Target_temp,0,0,0Rz:=180);

CASE 5:

Target_temp.trans.x:=radius*cos(60*(count1-1));

Target_temp.trans.y:=radius*sin(60*(count1-1));

Target_temp:=RelTool(Target_temp,0,0,0Rz:=-120);

CASE 6:

Target_temp.trans.x:=radius*cos(60*(count1-1));

Target_temp.trans.y:=radius*sin(60*(count1-1));

Target_temp:=RelTool(Target_temp,0,0,0Rz:=-60);

ENDTEST

ENDPROC

PROC rHome()

MoveJpHome,v500,z1,gripper_dualWObj:=wobj0;

ENDPROCHoward

×

Contact Us

captcha