返回首页 hi, 欢迎来到机器人在线 请登录/ 免费注册 扫码关注

【干货】ABB机器人编程技巧12:Fine与z0的区别

时间:2018-09-06 来源:ABB机器人实战技 阅读:146768

1)什么是zonedata?

机器人转弯半径,即机器人在运行两句运动指令时,若设置了转弯半径,机器人会平滑的过渡,转弯半径意义为,机器人进入到设置点半径内的位置,机器人开始过渡


2)什么是fine?

如果要准确到达一个位置,使用fine


3)z0和fine的区别?

轨迹上,z0和fine类似。但fine除了准确到达,还有一个阻止程序预读的功能


 图1   21行使用z0


图2 21行使用fine


机器人运行的时候,示教器有2个图标,一个是左侧的箭头,表示程序已经读取到哪一行,还有一个是机器人图标,表示机器人实际在走哪一行。为了要实现平滑过渡等功能,机器人要预读几行代码。

如果使用了图1的z0,机器人在走第21行,程序已经执行到23行,即机器人还没走到位置已经打开do

如果使用了图2 的fine,机器人在走第21行,程序还在21行,即有了fine,程序指针不会预读,即机器人走完21行后,才会执行打开do。


ABB机器人编程技巧11:


实时机器人技术首席执行官Peter 1)如果有上图所示6个产品位置要吸取,如何最快速的创建点位?(纯示教?Naive,太体力活了。)



2)如下图,我们可以发现1号位置和0号位置姿态一样,1号相对于0号就是一个半径的偏移,2-6号位置相对于0号也都是一个半径的偏移,2-6号姿态均朝向圆心。由于图中为6个,即从2号开始,每个点姿态相对于1号旋转了60°



3)是不是可以只要示教0号点位置,同时已知半径(未知的话,自己量一下),就能自动算出其他6个点位置而不用示教了呢?答案当然是可以的!!!


4)由于涉及到坐标系偏移和旋转,所以要做好Tool和工件坐标系


5)创建工具gripper_dual,假设z方向100,工具的Z方向为工具延伸方向



6)如下图创建坐标系,圆心在中间,0号到1号方向为X,y如图。下图中的工件坐标系Z朝下(满足右手法则)。这样创建主要是为了计算方便。



7)在workwobject2坐标系,gripper_dual工具下,示教中间产品位置Target_center,此时工具的Z必须垂直于产品平面,即工具的Z朝下。(其实只是要用这个点的姿态和z,这个点的xy都是0,因为这个点在workobject2坐标系处于原点,即xy都是0)


8)设置圆心到第一个产品的距离(即半径radius),这里举例21.45mm


9)我们假设第一个位置叫Target1,则在workobject2坐标系下


Target1:=Target_center;!先让Target1位置和姿态都等于Target_center


Target1.trans.x:=radius*cos(60*0);!重新计算位置的x


Target1.trans.y:=radius*sin(60*0);!重新计算位置的y


Target1:=RelTool(Target1,0,0,0Rz:=0*60);!得到计算后的位置x和y后,tcp绕着工具的Z旋转60°。


10)通过上述例子,就得到了Target1位置,注意是在workobject2坐标系下。


11)再配合test等流程,就可以比较简单的完成6个位置的计算和移动,如下


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




【干货】ABB机器人编程技巧1:ABB机器人Pdisp 轨迹偏移使用

【干货】ABB机器人编程技巧2:单工位多次预约程序

【干货】ABB机器人编程技巧3:在robotstudio创建两台机器人的socket连接
【干货】ABB机器人编程技巧4:双工位预约程序
【干货】ABB机器人编程技巧5:与相机通讯的Socket收发数据处理与提取
【干货】ABB机器人编程技巧6:ABB机器人如何创建数组
【干货】ABB机器人编程技巧7:ABB机器人创建自定义数据类型
【干货】ABB机器人编程技巧8:ABB机器人数据存储类型区别
【干货】ABB机器人编程技巧9:创建带参数例行程序
【干货】ABB机器人编程技巧10:ABB机器人创建码垛程序
【干货】ABB机器人编程技巧11:创建有规律的机器人旋转Robtarget


ABB机器人操作技巧 ABB机器人 技术干货

好的文章,需要您的鼓励

24

  • 最新资讯
  • 最新问答
推荐