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>) 将pose1与pose2的位置值相加
9、pose_trans(<pose from>,<pose to>)移动到某位置(绝对位置)--谨慎使用
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(<pose1>,<pose2>)函数来实现就好
例如: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