KUKA机器人相对于四大家族其他机器人来说,使用起来有点不太友好,自带的函数和功能比较少,往往使用起来比较麻烦,但是KUKA机器人也有他的优势,那就是开放,你想怎么搞就怎么搞。
首先我们来看看ABB机器人的Offs函数是怎么样的?
官方手册定义如下:
实际示教器中的编程:
那么KUKA机器人也可以自定义一个Offs功能函数,具体如下:1、新建功能程序,命名为Offs;
2、Offs功能程序;
DEFFCT E6POS Offs(TargetPos:IN,RefPos:IN,nX:IN,nY:IN,nZ:IN)
DECL REAL nX,nY,nZ
DECL E6POS RefPos
DECL E6POS TargetPos
TargetPos=RefPos
TargetPos.X=RefPos.X+nX
TargetPos.Y=RefPos.Y+nY
TargetPos.Z=RefPos.Z+nZ
RETURN(TargetPos) ;必须要有返回值,返回值为TargetPos。
ENDFCT
概念认知:参数传递DEFFCT E6POS Offs(TargetPos:IN,RefPos:IN,nX:IN,nY:IN,nZ:IN)
我们在定义功能时,Offs为功能的名称,括号里面的参数(TargetPos、RefPos、nX、nY、nZ)可以理解为形参,实际使用时需要实参进行代入,当然这些形参必须要在功能内部进行数据类型的声明后才能使用。
在示教器中通过动作指令添加的位置点,数据类型都是E6POS,所以TargetPos为目标点,RefPos为参考点,数据类型均为E6POS。
上面的IN是参数传递的方式,有以下两种:1)可通过两种方法将参数传递给子程序。
- 作为 IN 参数
- 作为 OUT 参数
2)既可将参数传给局部的子程序,也可传给全局子程序。3)作为 IN 参数的参数传递(Call by value):变量值在主程序中保持不变,即变量以主程序原来的值继续工作,子程序只能读取变量值,但不能写入;4)作为 OUT 参数的参数传递(Call by reference):变量值会在主程序中同时更改,即变量应用子程序的值,子程序读取并更改该值,然后返回新的值。3、功能程序的使用:
XP2为目标点,XP1为参考点,nX、nY、nZ为XYZ方向的实际偏移值(实参),P2点在P1点的基础上XYZ偏移距离为100.0、-100.0、50.0。
4、运行结果如下: