1)什么是zonedata?
机器人转弯半径,即机器人当运行两个运动命令时,如果设置了转弯半径,机器人会有一个平滑的过渡,转弯半径意味着,机器人输入设定点半径内的位置,机器人开始转变
2)什么是罚款?
如果要准确到达某个位置,请使用fine。
3)3)z0和fine有什么区别?
在轨迹上,z0和fine差不多。但除了准确到达,fine还有防止程序提前读取的功能。
图1中的第21行使用z0。
图2:第21行使用了fine。
机器人运行时,示教器有两个图标,一个是左边的箭头,表示程序读到了哪一行,另一个是机器人图标,指示机器人你实际上在哪一行。为了实现诸如平滑过渡的功能,机器人提前读几行代码。
如果使用图1的z0,机器人在第21行,程序已经执行到第23行,也就是说,机器人我还没到位置,就开了do。
如果使用图2的fine,机器人第21行,程序还在第21行,也就是用fine,程序指针不会被预读,也就是说,机器人在完成21行之前,不会打开Do。
横丝机器人编程技巧11:
实时机器人Peter 1,技术CEO)如果有六个产品位置需要被吸收如上图所示,如何最快地创建位置?(纯教学?幼稚,太手动了。)
2)如下图所示,我们可以发现1号位置与0号位置相同,1号位置是距离0号位置的半径偏移,2-6号位置也是距离0号位置的半径偏移,2-6号位置都是朝向圆心。由于图中有六个,即从2号开始,每个点的姿态相对于1号旋转60度。
3)是否只要教了0点的位置,半径已知(如果未知,自己测)就可以不用教自动算出其他六个点的位置?答案当然是肯定的!!!
4)因为涉及到坐标系偏差和旋转,所以要准备好刀具和工件坐标系。
5)创建一个刀具gripper_dual,假设Z方向为100,刀具的Z方向为刀具延伸方向。
6)如下图创建一个坐标系,圆心在中间,从0到1的方向是如图所示的X和Y。下图工件坐标系Z向下(满足右手定则)。这个创作主要是为了计算方便。
7)在工件2坐标系中和夹爪_双重刀具下,示教中间产品位置Target_center。此时,刀具的z必须垂直于产品平面,即刀具的z朝下。(其实只要用这个点的姿态和z,这个点的xy为0,因为这个点在workobject2坐标系中是在原点,也就是xy为0。)
8)设置圆心到第一个产品的距离(即半径),例如21.45 mm。
9)我们假设第一个位置叫做Target1,它在workobject2坐标系中。
Target 1:= Target _ center;!先让Target1的位置和姿态等于Target_center。
target 1 . trans . x:= radius * cos(60 * 0);!重新计算位置的x
target 1 . trans . y:= radius * sin(60 * 0);!重新计算位置的y轴
Target1:=RelTool(Target1,0,0,0 rz:= 0 * 60);!获得计算的位置x和y后,tcp围绕工具的z旋转60°。
10)通过上面的例子,获得了目标1的位置,注意它在工件2坐标系中。
11)在测试过程中,可以相对简单地完成六个位置的计算和移动,如下所示
PROC main()
半径:= 21.45;
count 1:= 1;
WHILEcount17 DO
rHome
cal
路线1;
count 1:= count 1+1;
结束时间
结束过程
过程例程1()
MoveJoffs(Target_temp,0,0,-30),v500,z1,gripper _ dualWObj:= work object _ 2;
MoveLTarget_temp,v500,z1,gripper _ dualWObj:= work object _ 2;
等待时间1;
MoveLoffs(Target_temp,0,0,-30),v500,z1,gripper _ dualWObj:= work object _ 2;
结束过程
过程校准()
目标_温度:=目标_中心;
测试计数1
案例1:
target _ temp . trans . x:= radius * cos(60 *(count 1-1));
target _ temp . trans . y:= radius * sin(60 *(count 1-1));
Target _ temp:= rel tool(Target _ temp,0,0,0 rz:=(count 1-1)* 60);
案例二:
target _ temp . trans . x:= radius * cos(60 *(count 1-1));
target _ temp . trans . y:= radius * sin(60 *(count 1-1));
Target _ temp:= rel tool(Target _ temp,0,0,0 rz:= 60);
案例三:
target _ temp . trans . x:= radius * cos(60 *(count 1-1));
target _ temp . trans . y:= radius * sin(60 *(count 1-1));
Target _ temp:= rel tool(Target _ temp,0,0,0 rz:= 120);
案例4:
target _ temp . trans . x:= radius * cos(60 *(count 1-1));
target _ temp . trans . y:= radius * sin(60 *(count 1-1));
Target _ temp:= rel tool(Target _ temp,0,0,0 rz:= 180);
案例5:
target _ temp . trans . x:= radius * cos(60 *(count 1-1));
target _ temp . trans . y:= radius * sin(60 *(count 1-1));
Target _ temp:= rel tool(Target _ temp,0,0,0 rz:=-120);
案例6:
target _ temp . trans . x:= radius * cos(60 *(count 1-1));
target _ temp . trans . y:= radius * sin(60 *(count 1-1));
Target _ temp:= rel tool(Target _ temp,0,0,0 rz:=-60);
结束测试
结束过程
过程主页()
MoveJpHome,v500,z1,gripper _ dualWObj:= wobj 0;
ENDPROCHoward
【干货】ABB机器人编程技巧1: abb机器人Pdisp轨迹偏移使用
【干货】ABB机器人编程技巧2:单站多预约程序
【干货】ABB机器人编程技巧3:在robotstudio中创建两个。机器人套接字连接基于
【干货】ABB机器人编程技巧4:双站预订程序
【干货】ABB机器人编程技巧五:处理提取与摄像头Socket通信的数据。
【干货】ABB机器人编程技巧6: abb机器人如何创建数组
【干货】ABB机器人编程技巧7: abb机器人创建自定义数据类型
【干货】ABB机器人编程技巧8: abb机器人数据存储类型差异
【干货】ABB机器人编程技巧9:创建带参数的例程
【干货】ABB机器人编程技巧10: abb机器人建立码垛程序
【干货】ABB机器人编程技巧11:创建常规的机器人旋转机器人目标