我们先回顾一下运动指令语句:
第1个问题:
(1)为什么两条MoveL指令语句,使用相同的速度数据,走同样距离的轨迹,所花的时间却不相同呢?
在以上指令语句中决定了机器人运动速度的是“v1000”,它是机器人控制系统预定义的一个速度数据(speeddata)。speeddata数据类型,含有4个组件成分,它们分别是:
1)v_tcp(工具中心点的运动速率,单位为mm/s);
2)v_ori(工具姿态变化的速度,单位为°/s);
3)v_leax(线性运动外轴的速度mm/s);
4)v_reax(旋转运动外轴的速度,单位为°/s);
当机器人从当前位置运动到运动指令目标点位置的时候,可能同时包含TCP位置的变化、工具姿态的变化、线性外轴位置的变化、旋转外轴角度的变化中的一种或多种,当涉及多种变化时,哪一种变化所需的时间***长,它就决定了执行运动指令语句***终所需花费的时间。
“v1000”是一个speeddata型数据,它规定了4个速度,那“v1000”中的“1000”指的是哪一个速度呢?其它三个速度又是多少呢?
“1000”指的是v_tcp,ABB机器人控制系统中预定义的speeddata数据都是以“v+v_tcp组件的值"来命名的。ABB机器人控制系统的预定义数据可以在程序数据页面进行查看,将数据查看范围改为【仅限内置数据】,然后选择需要查看的数据类型即可查看到内置数据的值。
第2个问题:
(2)为什么在MoveL指令语句之的setdo指令在手动单步调试运行时能够在准确的时机输出DO信号,而在自动模式运行时却不能在准确的时机执行呢?
ABB工业机器人的初学者基本上都碰到过这个问题,它是由于在在I/O指令之前的一条运动指令语句中没有使用区域数据(zonedata)fine,导致I/O指令被提前预读所导致的。
zonedata数据类型适用于规定TCP在朝下条运动指令目标点移动前应当如何逼近当前一条运动指令的目标点。在有的品牌的工业机器人控制系统中,它被称作逼近等级数据。zonedata数据由7个组件组成,它们分别是:
1)finep 是否是停止点,该组件是一个bool型数据,值仅能为:True或者false。当值为True时,表示运动指令语句的目标点为停止点,此时TCP会***逼近运动指令的目标点位,同时还能阻止随后的指令语句被预读。该组件值为fales时,则需根据后续6个组件的值来确定TCP对于运动指令目标点的逼近程度。
2)pzone_tcp TCP区域的半径,单位为mm,该组件值决定了机器人运动轨迹圆