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 transition2) What is fine?If you want to reach a position accurately, use fine3) 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-readingFigure 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 codeIf 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 doIf 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. 13) 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 well5) Create the tool gripper_dual, assuming that the z direction is 100 and the Z direction of the tool is the tool extension direction6) 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.45mm9) Let's assume that the first position is called Target1, then in the workobject2 coordinate systemTarget1:=Target_center;! First, let the position and posture of Target1 be equal to Target_centerTarget1.trans.x:=radius*cos(60*0);! Recalculate the x of the positionTarget1.trans.y:=radius*sin(60*0);! Recalculate the y of the positionTarget1:=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 followsPROC main()radius:=21.45;count1:=1;WHILEcount1<7 DOrHome;cal;routine1;count1:=count1+1;ENDWHILEENDPROC 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);ENDTESTENDPROCPROC rHome()MoveJpHome,v500,z1,gripper_dualWObj:=wobj0;ENDPROCHoward