UR机器人编程实践

UR机器人编程技巧:

 

1、程序开始时总是会莫名到某个位置然后再执行程序,这是因为在机械手会自动移位到

程序中出现的第一个位置,估计是把出现的这个位置做为原点处理了。这与我们的要求

不合。所以,只要把出现的第一个位置变为相对位置或者可变位置,机械手启动时就不会

再处理。

 

2、我们取到的位置信息是机座位置信息,那么我们使用的时候也应该是机座位置,而不

是视角位置,否则会出现我们需要的位置与实际位置不符合

 

3、机械臂的安全角度较大,在轴与轴距离较小时,即使手动能安全操作,自动运行时也

会出现失速现象,需要给机械臂较大的安全角度

 

4、机器人只做动作,不做判断,这样可以简化编程难度

 

5、通过线程的方式可以在运行中把托盘计数器清零,为了避免无限循环错误,需要在前

面加等待机制。

 

6、get_actual_tcp_pose()取得当前TCP位置

 

7、get_actual_join_pose()取得当前机座位置的弧度值,这个值不能直接看到,但是可以换算

弧度与角度换算比例:1弧度=180/π 度 1度=π/180 弧度 或者 1弧度=57.2956度 1度=0.0174533弧度

 

8、pose_add(,) 将pose1与pose2的位置值相加

9、pose_trans(,)移动到某位置(绝对位置)--谨慎使用

 

10、p[x,y,z,rx,ry,rz]机械手位置的完整表达,相当于数组,可以单独用p[n]来

表达位置中的某个参数。

例如:var_pose_now=get_actual_tcp_pose()

此时:x=var_pose_now[0]

此时:y=var_pose_now[1]

此时:z=var_pose_now[2]

此时:rx=var_pose_now[3]

此时:ry=var_pose_now[4]

此时:rz=var_pose_now[5]

位置也可以用如下方式来表达:

p[var_pose_now[0],var_pose_now[1],var_pose_now[2],var_pose_now[3],var_pose_now[4],var_pose_now[5]]

 

如果需要在现在位置的基础上向上移动0.2,那么只需要用pose_add(,)函数来实现就好

例如:var_pose_up=pose_add(var_pose_now,p<0,0,0.2,0,0,0>)

当然也可以直接赋值,不用函数:var_pose_up_1= z + 0.2 var_pose_up=p[x,y,var_pose_up_1,rx,ry,rz]

 

如果需要移动到某个位置,有特殊需要,比如往上移动到0.3,其余x,y位置都不变,那么直接赋值就好

例如:var_pose_up=p[var_pose_now[0],var_pose_now[1],0.3,var_pose_now[3],var_pose_now[4],var_pose_now[5]]

或者:var_pose_up=p[x,y,0.3,rx,ry,rz]

 

 

 

UR机器人SL15213/SL15214编程要求:

 

1、开机之后原点状态(把原点复位程序放到Before Start 区域)

2、在送完产品后如果PLC有停止信号,回原点停止

3、转换A/B区在送完产品后再进行,转换时先回原点,再转换到另一区,CNT清零

4、取料过程中如果需要再取则跳到取料部再取

5、如果取料过程中需要转换到另一区,则回原点,再转换,在步中完成

6、每一个需要给PLC信号的地方用模拟脉冲的方式发信号

7、机种选择、A/B区选择PLC必须给固定ON/OFF信号,其他信号为瞬时

8、更换托盘后计数必须清零,PLC给UR信号清零,否则会有撞机危险

9、光栅停止与紧急停止需分开,光栅遮断暂停程序,如有更换托盘

则计数器清零,紧急停止断开立即停止机器人

10、UR机器人输出没有脉冲信号,所以需要自己在等待一段时间后关闭信号

11、因公司使用的是NPN类型的器件,而UR机器人为PNP型,所以采用继电器中转,

中间有时间延迟必须考虑到程序内

12、考虑到机械手的特殊性,不以位置为原点信号,而以到某位置输出为原点信号

13、UR与PLC信号交接通过继电器方式,为了保证可靠性需要通过交互的方式

PLC>信号>UR>反馈>PLC>反馈>UR

 

你可能感兴趣的:(编程技巧,UR,机器人)