刚刚开设这个专栏,之后会不断的写一些自己在自动化领域从业10多年里的一些经验和典型程序。个人能力一般不是什么大牛,主要是做过的项目涉及的领域比较多,各种技术、设备、程序等也算接触的不少,谨以发表一些自己的看法,有贻笑大方之处,请多包涵。
几天刚刚开通,准备不足,先写一个小程序留个脚印吧,之后会不断的写一下比较感兴趣的程序及技术,或者有一定代表性实用性的程序,希望对一些初入行业的朋友们有所帮助,对一些从业者们有所借鉴吧。
下边这是一段简单的带输入参数的库卡机器人子程序,在机器人程序中走到一个空间位置后调用该程序,用以实现以该点为几个角的长方形运动。
其中的参数dx,dy,是长方形的边长,可以根据运行到起始点时的基座标系及dx,dy的正负判断长方形的具体位置及大小。
程序中系统参数$POS_ACT是读取当前机器人在笛卡尔坐标系下的空间位置,也就是三维坐标,得到的值是包含xyzabc的空间位置,我们把该当前位置分别赋值给pos_weld1,pos_weld2,pos_weld3三个位置变量,在通过计算分别加上dx,dy,改变三个点在基座标系里的位置,使这三个点和原来的初始点pos_act就构成了一个长方形,进而通过最后的lin直线运动到三个点就完成了一个长方形运动,当然最后可以再走一个点回到初始位置形成一个闭环的长方形。
DEF abc(dx:in,dy:in )
real dx,dy
frame pos_weld1,pos_weld2,pos_weld3
$acc.cp=1.0
$vel.cp=0.3
$apo.cptp=100
$apo.cvel=100
$apo.cdis=1
;$base=base_data[1]
pos_weld1=$pos_act
pos_weld2=$pos_act
pos_weld3=$pos_act
pos_weld1.x=pos_weld1.x+dx
pos_weld1.y=pos_weld1.y
pos_weld2.x=pos_weld2.x+dx
pos_weld2.y=pos_weld2.y+dy
pos_weld3.x=pos_weld3.x
pos_weld3.y=pos_weld3.y+dy
lin pos_weld1 c_dis
lin pos_weld2 c_dis
lin pos_weld3 c_dis
END
程序中用到了一些系统变量,我们在程序里直接赋值了,
$acc.cp,$vel.cp是设定直线运动的加速度、速度的值。
$apo参数是用于设定点运动的逼近特性的,最后的直线运动,采用的是lin c_dis,说明逼近是采用了$apo.cdis=1这个距目标点1mm进行逼近运动。
该矩形运动原理就是通过当前位置的坐标值计算出新的点的坐标值,按照设定的目标点依次运动就可以实现想要的运动形式。
给程序可以应用到激光切割,机器人涂胶、打磨等多个领域。当然具体的运动不会是就这样简单的一个正方形,可以基于实际产品随便编辑运动的轨迹。
程序中还可以加入一些逻辑判断,实现控制轨迹的方向变化,重复运行的功能。