跳到主要内容

15.4.18 高级指令

15.4.18.1 RelTool

说明: 在当前指令指定的工具坐标系下对空间位置进行平移或者旋转。
与 Offs 主要区别:Offs 是相对于工件坐标系偏移,RelTool 是相对于工具坐标系偏移。

定义:

RelTool(Point,XOffset,YOffset,ZOffset,Rx,Ry,Rz[,Tool,Wobj]);
  • Point:数据类型:robtarget,待偏移的位置点,或者说偏移指令的初始点。

  • XOffset:数据类型:double,沿工具坐标系 x 方向上的偏移量。

  • YOffset:数据类型:double,沿工具坐标系 y 方向上的偏移量。

  • ZOffset:数据类型:double,沿工具坐标系 z 方向上的偏移量。

  • Rx:数据类型:double,绕工具坐标系 x 轴的转动角度。

  • Ry:数据类型:double,绕工具坐标系 y 轴的转动角度。

  • Rz:数据类型:double,绕工具坐标系 z 轴的转动角度。

  • Tool:数据类型:tool工具,包含描述 Point 点位的工具坐标系信息。

  • Wobj:数据类型:wobj工件,包含描述 Point 点位的工件坐标系信息。

  • 返回值,数据类型:robtarget,返回偏移后的新位姿。

示例:

例 1

p2=RelTool(p1,100,0,30,20,0,0);

由于未指定工具工件,默认使用 tool0, wobj0 作为工具工件,将 p1 点沿工具坐标系的 x 方向偏移 100mm,y 方向偏移 0mm,z 方向偏移 30mm,绕 x 轴旋转 20 度后,将新的目标点位置赋给p2点。

例 2

p2=(RelTool(p1,100,0,30,20,0,0), tool5,wobj6);

将 p1 点沿 tool5 工具坐标系的 x 方向偏移 100mm,y 方向偏移 0mm,z 方向偏移 30mm,绕 x 轴旋转 20 度后,将新的目标点位置赋给 p2 点。

例 3

MoveL(RelTool(p1,100,0,30,20,0,0),v4000, fine, tool2,wobj4);

RelTool 和 Move 指令配合使用,未指定特定的工具工件坐标系,将使用运动指令的 tool 和 wobj, 将 p1 点沿 tool2 工具坐标系的 x 方向偏移 100mm,y 方向偏移 0mm,z 方向偏移 30mm,绕 x 轴旋转 20 度。

  • 该指令的可选参数 Tool 和 Wobj 暂时不支持辅助编程。

  • xMateCR 系列的 5 轴机型,由于一个姿态自由度的缺失,在使用 RelTool 命令时会有较多点位不可达情况,需要结合可达姿态特点确定偏移(如在法兰平行基座的情况下点位的平移通常都可达)。

15.4.18.2 Offs

说明: 位置偏移函数,用于把某个点在当前指令中指定的工件坐标系下偏移一段距离并返回新点的位置值。平移偏移量由 x、y、z 三个量来表示,姿态旋转偏移量由 Rx、Ry、Rz 表示。

定义:

Offs(Point,XOffset,YOffset,ZOffset[,Rx,Ry,Rz])
  • Point:数据类型:robtarget,待偏移的位置点,或者说偏移指令的初始点。

  • XOffset:数据类型:double,沿工件坐标系 x 方向上的偏移量。

  • YOffset:数据类型:double,沿工件坐标系 y 方向上的偏移量。

  • ZOffset:数据类型:double,沿工件坐标系 z 方向上的偏移量。

  • Rx:数据类型:double,绕工件坐标系 x 轴的转动角度。

  • Ry:数据类型:double,绕工件坐标系 y 轴的转动角度。

  • Rz:数据类型:double,绕工件坐标系 z 轴的转动角度

  • 返回值,数据类型:robtarget,偏移后的新位姿。

示例:

p11=Offs(p10,100,200,300);

将 p10 点沿工件坐标系的 x 方向偏移 100mm,y 方向偏移 200mm,z 方向偏移 300mm,并将新的目标点位置赋给 p11 点。

  • 该指令暂时不支持辅助编程。

15.4.18.3 ConfL

说明: 该指令开启后进行两个方面的检查:
1. 笛卡尔路径实际到达的轴角度(即 cf1~7)是否与目标点示教的相差过大,如果相差过大,日志会显示对应的提示,用户可考虑是否按照这样的运动方式到达目标点。
2. 笛卡尔路径实际到达的轴关节配置(即 cfx 值)是否与目标点示教的一致,如果不一致会报错并停止运动;

示例:

例1
ConfL(on);;
MoveL(p1,v1000….);
//如果 P1 示教位置的 J6 角度为 -5°,则 MoveL 指令运行后 J6 角度可能为 355°(两者呈现 +-360° 的差距,即对应的是同一个位置),此时会日志提示“回转角实际到达点与设定点差别过大“,但不停止运动;
…
ConfL(off);
MoveL(p1,v1000….);
//关闭笛卡尔路径的 conf 检查,机器人能够运动到 p1 点,但不针对点位实际运动到达与点位示教时的 confdata 的 cf1~7 值和 cfx 值进行检查。
  • ConfL 指令对应 MoveL、MoveC 等笛卡尔运动指令,不对 MoveJ、MoveAbsj 指令产生影响,也不会对“点位运动至“的 conf 设定产生影响

  • 在执行直线、圆弧等笛卡尔运动指令的情况下,机器人在选取离开始点的姿势最接近姿势的同时向目标点方向移动。此时,目标点的角度将被自动选定,所以在目标点位置的机器人实际回转角度,在某些情况下会与所示教的位置的角度不同。该指令开启后,对这种情况会进行提示。

15.4.18.4 ConfJ

说明: 笛卡尔坐标对应一组 conf 参数(cf1~7, cfx),用户手动更改或写入的笛卡尔坐标点对应的 conf 数据可能是错误的,导致控制器无法解析出目标点的路径,但是存在部分场景,用户只关心机器人 TCP 点的位置而不关心姿态,此时可以使用 ConfJOff 解除点位求解的 conf 限制,让控制器尝试计算出离路径起点最(较)近的逆解(可能算不出来,导致运动指令失败)。可以阅读 confdata 的介绍,了解更多 conf 相关的知识。

示例:

例1
p1.trans.x=….;
MoveJ(p1,v1000….);
//只修改了坐标,未修改 confdata 参数,该指令很可能导致执行失败。
…
ConfJ(Off);
MoveJ(p1,v1000….);
//关闭 conf 检查,机器人能够运动到 p1 点,但是轴的姿态不确定。
  • ConfJ 指令对应 MoveJ 指令,不对其他运动指令产生影响,也不会对“点位运动至“的 conf 设定产生影响。

15.4.18.5 Conf

说明: ConfL 和 ConfJ 的统一开启、关闭指令,具体效果为:
Conf on 等效:ConfL on 和 ConfJ on
Conf off 等效:ConfJ off 和 ConfJ off

示例:

例1
Conf(on);
MoveL(p0,v1000…);
MoveJ(p1,v1000….);
//等效为下面的指令:
ConfL(on);
ConfJ(on);
MoveL(p0,v1000…);
MoveJ(p1,v1000….);

15.4.18.6 VelSet

说明: 当机器人搬运易碎物品时,可使用 VelSet 指令调节最大运动速度以达到更加平顺的运动效果。机器人在实际运动路径下,每个关节的最大速度能力往往并非恒定值,而是会随着负载状态、本体姿态等因素始终处于变化中,VelSet 指令是对特定任务路径下的最大速度能力曲线进行的缩放,缩放后的最大速度能力曲线同样也是一条变化的曲线。

定义:

VelSet(gain);
  • gain:数据类型:int,按照百分比来指定最大速度能力的大小,取值范围 1%~100%,其中 100% 对应最大加速度,超过限制范围机器人会报错。

示例:

例1
VelSet(50);
将最大速度能力设置为机器人默认最大速度的一半。
  • VelSet 指令只影响所在的 RL 工程的运动指令,对非工程的 JOG 功能、运动至功能、快速移动功能等均不生效。

  • VelSet 功能会打断转弯区,请勿在需要转弯区的运动指令之间插入 VelSet 指令。

  • VelSet 指令和程序运行速率调整滑块的功能区别:程序运行速率调整滑块修改的是用户期望速度,如 V4000 的运动指令,在 50% 的滑块控制下,实际相当于 V2000 的用户期望速度,但假如此时机器人处于极限工况,此运动指令能够达到的实际最大速度只有 V1000,那么不管速度滑块处于 50% 还是 100% 的时候,机器人实际的运动速度是不会改变的,因为不论是 V2000 还是 V4000,都超过了 V1000,所以在这个区间范围内改变期望速度,对实际执行速度不会造成影响;相反,VelSet50 并不改变用户期望速度,而是在运动规划的过程中,将该运动指令能达到的实际最大速度缩小了 50%,同样以此运动指令为例,实际机器人的运动速度将会缩小一半,从原本的 V1000 变为 V500。这两个功能的区别需要用户在使用的过程中能够加以区分。

  • 发生以下操作时,速度自动恢复为默认大小(100%):

    • RL 程序被手动重置时(PPtoMain)

    • 加载新的RL程序时

15.4.18.7 AccSet

说明: 当机器人搬运易碎物品时,可使用 AccSet 指令调节加速度以达到更加平顺的运动效果。

定义:

AccSet(acc,ramp);
  • Acc:数据类型:int,按照系统预设值的百分比大小指定加速度的大小,取值范围 30%~100%,其中 100% 对应最大加加速度,超过限制范围机器人会报错。

  • Ramp:数据类型:int,按照系统预设值的百分比大小指定加加速度(Jerk),取值范围 30%~100%,其中 100% 对应最大加加速度,超过限制范围机器人会报错。

示例:

AccSet (50,50);
加速度、加加速度设置为默认的一半。
  • 发生以下操作时,加速度自动回复为默认大小(100%): RL程序被手动重置时(PPtoMain);加载新的RL程序时

15.4.18.8 MotionSup

说明: 用于打开、关闭碰撞检测功能。

定义:

MotionSup(type[, level,event]);
  • Type:数据类型:关键字,On 打开,Off 关闭

  • Level:数据类型:int,MotionSup On 的额外参数,修改碰撞检测灵敏度百分比,范围:[1,200]

  • Event:数据类型:string,MotionSup On 的额外参数,设置碰撞后的行为

  • "softstop" 柔顺停止

示例:

例1

MotionSup(On);
//...其他指令
MotionSup(Off);

开启碰撞检测后执行其他指令,执行完成后使用 MotionSup Off 关闭碰撞检测

例2

MotionSup(On,200,“softstop”);

开启碰撞检测,设置检测灵敏度百分比为 200%,并设置检测到碰撞后触发的行为为柔顺停止。

15.4.18.9 MotionSupPlus

说明: MotionSupPlus(MotionSupervisionPlus)运动监控用于在 RL 程序中随时调整机器人各关节碰撞检测灵敏度参数。

定义:

MotionSupPlus(x1, x2, x3, x4, x5, x6, x7);
  • x1`至`x7,分别表示关节 1 到关节 7 碰撞检测灵敏度,单位 %。

示例:

MotionSupPlus(5,20,7,20,6,20,5);
// 表示 7 个关节灵敏度分别为 5,20,7,20,6,20,5。
  • 当用于六轴机器人,也需要设置 7 个参数,其中前 6 个参数起作用,对应 1~6 关节;

  • 该指令支持协作机器人和六轴工业机器人,不支持三、四轴工业机器人。

15.4.18.10 MotionSupJointTrq

说明: MotionSupJointTrq(MotionSupervisionJointTorque)运动监控用于在 RL 程序中随时调整机器人各关节传动力限制参数。

定义:

MotionSupJointTrq(x1,x2,x3,x4,x5,x6,x7);
  • x1`至`x7:分别表示关节 1 到关节 7 传动力矩限制参数,单位 Nm。

示例:

MotionSupJointTrq(100,91,59,14,14,14,5);
// 表示 7 个关节传动力矩限制参数分别为 100Nm, 91Nm, 59Nm, 14Nm, 14Nm, 14Nm, 5Nm。

当用于六轴机器人,也需要设置 7 个参数,其中前 6 个参数起作用,对应 1~6 关节; 该指令支持协作机器人和六轴工业机器人,不支持三、四轴工业机器人。

15.4.18.11 BreakLookAhead

说明: 该指令通知控制系统取消前瞻,强制取消上一条运动指令和下一条运动指令之间的转弯区。机器人 TCP 将运行至上一条运动指令的目标点后,再向下一个点位运动动,不衔接转弯区。程序指针也将等待TCP运行至上一条运动指令的目标点后,再继续往下前瞻扫描。

定义:

指令无参数和返回值。

示例:

MoveL(P1,v1000,z50,tool0);
BreakLookAhead
MoveL(P2,v1000,z50,tool0);
MoveL(P3,v1000,z50,tool0);

1)点位 P1 的转弯区设置为 z50,由于 BreakLookAhead 指令存在,此处前瞻将取消,转弯区也将取消,机器人 TCP 会精确运动至 P1 点,再向 P2 运动。而 P2 和 P3 之间没有 BreakLookAhead 指令,因此在 P2 点会前瞻并且保留 z50 转弯区向 P3 运动。
2)BreakLookAhead 指令与 wait0 指令效果完全相同。

15.4.18.12 GetRobotMaxLoad

说明: 获取当前型号机器人的最大负载值。

定义:

Ret=GetRobotMaxLoad();
  • Ret:返回值,数据类型:int,最大负载

示例:

intmaxload=GetRobotMaxLoad();
print(maxload);
// 以 xMate7 为例,返回值为 7。

15.4.18.13 GetRobotState

说明: 获取控制系统当前的运行状态。用 4 个字节的 bit 信息来表示控制系统的状态,包括故障、紧急停止、安全门、操作模式、伺服模式、运动状态等信息。具体如下表

定义:

Ret=GetRobotState();
  • Ret:返回值,数据类型:byte 数组,用四个byte类型来表示机器人状态。

示例:

bytest[4]=GetRobotState();
print(st);
// 返回 {0,5,0,0},查表可知当前状态为:无故障,电机已上电,自动模式,机器人运动状态,伺服处于位置模式。
序号 状态位 含义

1

Byte[1].bit[1]

1:控制系统未授权

2

Byte[1].bit[2]

1:控制系统可恢复故障

3

Byte[1].bit[3]

1:控制系统致命错误

4

Byte[1].bit[4]

1:伺服系统故障

5

Byte[1].bit[5]

1:伺服系统致命故障

6

Byte[1].bit[6]

1:紧急停止

7

Byte[1].bit[7]

1:安全门停止

8

Byte[1].bit[8]

保留

9

Byte[2].bit[1]

上电状态,0:电机未上电;1:电机已上电

10

Byte[2].bit[2]

机器人运动状态,0:空闲;1:运动中

11

Byte[2].bit[3]

操作模式,0:手动模式;1:自动模式

12

Byte[2].bit[4]

伺服模式,0:位置模式;1:力矩模式

13

Byte[2].bit[5]

保留

14

Byte[2].bit[6]

保留

15

Byte[2].bit[7]

保留

16

Byte[2].bit[8]

保留

17

Byte[3]

保留

18

Byte[4]

保留

15.4.18.14 AutoIgnoreZone

说明: 用于指定是否允许控制系统自动忽略转弯区。

定义:

AutoIgnoreZone(true/false);
  • true:允许控制系统自动忽略转弯区(这也是控制系统地默认状态);

  • false:不允许控制系统自动忽略转弯区;

15.4.18.14

如上图所示:机器人运行两条 MoveL 指令,中间含有 z50 的转弯区。机器人在运动的过程中,为了运动的柔顺性和安全性,需要从当前位置,向前前瞻一段距离。例如,机器人运动到 P0 点时,前瞻到了 P1 点。在此过程中,控制系统会对 p0 到 p1 点间的信息进行预处理。
机器人向前运动的过程中,前瞻终点也在不断向前移动,在某一时刻,前瞻终点 p1 和转弯区起点 p2 重合。此时,如果控制系统已经收到了第二条运动指令,便可正常生成转弯区,控制机器人沿着预定的轨迹运动;如果控制系统未能收到第二条运动指令,则无法生成转弯区,此时控制系统会依据 AutoIgnoreZone 指令状态对转弯区进行处理。具体处理逻辑如下:
AutoIgnoreZonetrue:控制系统不会等待第二条运动指令,而是将转弯区取消,直接向着 P3 点运动。 AutoIgnoreZonefalse:控制系统会等待第二条运动指令,在此过程中,机器人会降低运动速度,直至生成转弯区轨迹。若机器人运动到 p2 点时,仍未收到第二条运动指令,则机器人会停止运动,并通过 HMI 报错。
机器人未能及时收到第二条运动指令,往往在于两条运动指令间加入了过多的非运动指令,例如:

15.4.18.14 2

两条运动指令间加入了非常多的打印指令,控制系统处理完第一条运动指令后,经过很长时间才能收到第二条运动指令。

示例:

例1

AutoIgnoreZone(true);
MoveL(p3,v1000,z50,tool0);
MoveL(p4,v1000,fine,tool0);
// 允许控制系统自动忽略转弯区

例2

AutoIgnoreZone(false);
MoveL(p3,v1000,z50,tool0);
MoveL(p4,v1000,fine,tool0);
// 不允许控制系统自动忽略转弯区

15.4.18.15 MotionWaitAtFinePoint true/false

说明: 机器人静止状态时,点击启动,控制系统会依据前瞻参数,前瞻一段距离后再启动机器人。该指令用于设定,当前瞻遇到 fine 点时,机器人是否立即启动运动。
Fine 点:指的是没有衔接转弯区的目标点,即转弯区参数写作 fine 的目标点。

定义:

MotionWaitAtFinePoint(true/false);
  • MotionWaitAtFinePointtrue:控制系统严格按照前瞻参数,控制机器人的启动,当前瞻距离达到前瞻参数设定值或前瞻完所有运动指令时,机器人才启动运动。此状态下,控制系统能够保证设定的前瞻距离长度。

  • MotionWaitAtFinePoint false:控制系统不严格遵守前瞻参数,当前瞻遇到 fine 点时,机器人立即启动运动。此状态下,遇到非常复杂的程序逻辑,机器人依然能够顺利启动,但是无法保证前瞻距离的长度。

  • 控制系统默认状态:MotionWaitAtFinePoint false

示例:

例1

MotionWaitAtFinePoint(true);
MoveL(p1,v1000,fine,tool0);
MoveL(p2,v1000,fine,tool0);
MoveL(p13v1000,fine,tool0);
MoveL(p1,41000,fine,tool0);
MoveL(p1,51000,fine,tool0);
// 控制系统前瞻到p1点时,不会立即启动机器人,而是检查当前前瞻距离是否达到了前瞻参数设定长度,从而决定是否启动机器人。

例2

MotionWaitAtFinePoint(false);
MoveL(p1,v1000,fine,tool0);
MoveL(p2,v1000,fine,tool0);
MoveL(p3,v1000,fine,tool0);
MoveL(p4,v1000,fine,tool0);
MoveL(p5,v1000,fine,tool0);
// 控制系统前瞻到 p1 点时,不会检查当前前瞻距离是否达到了前瞻参数设定长度,而是立即启动机器人。

15.4.18.16 IgnoreOverride

说明: 焊接、涂胶等对沿路径的运动速度有严格要求的场景,希望工艺段的运动速度不受全局速率影响。可以通过该指令,暂时屏蔽速率滑块对运动指令的影响,使指定某段运动指令、轨迹不受全局速率影响。
该指令支持在自动模式和手动模式下使用。手动模式下,运动速度受 v250 限制,速度超过 v250,按照 v250 执行。自动模式下则按期望速度运动。

定义:

IgnoreOverride(On/Off);
  • IgnoreOverride On 表示其后运动指令不受速率滑块影响;

  • IgnoreOverride Off 效果与其相反。

示例:

例1

MoveJ(p1,v1000…. );//受滑块速率影响
IgnoreOverride(On);
MoveJ(p2,v1000….);//不受滑块速率影响
MoveJ(p3,v1000….);//不受滑块速率影响
IgnoreOverride(Off);
MoveJ(p4,v1000….);//受滑块速率影响

例2(手动模式)

IgnoreOverride(On);
MoveJ(p2,v1000….);//不受滑块速率影响,速度按v250执行
MoveJ(p3,v100….);//不受滑块速率影响,速度按v100执行
IgnoreOverride(Off);

例3(自动模式)

IgnoreOverride(On);
MoveJ(p2,v1000….);//不受滑块速率影响,速度按v1000执行
MoveJ(p3,v100….);//不受滑块速率影响,速度按v100执行
IgnoreOverride(Off);
  • 受影响的运动指令:MoveAbsJ、MoveJ、MoveL、MoveC、MoveCF、MoveT、SearchL、SearchC、TrigL、TrigC、TrigJ。

  • 该指令未立即执行指令,不打断转弯区。

  • 只能在运动任务中使用且不能在 Inzone 中使用,否则报错。

15.4.18.17 SingAreaLockAxis4

说明: 该指令表示采用锁定 4 轴的方式,规避机器人手腕奇异点

定义:

SingAreaLockAxis4(on/off);
  • On:表示开启锁定 4 轴规避腕部奇异功能。需要注意的是只有当机器人已经 4 轴处于 0 度或者 ±180 度时才能开启该功能。通常 SingAreaLockAxis4 on 前一句运动指令的目标点位,需要保证 4 轴处于上述点位,或者机器人四轴已经处于上述角度才能保证程序正常运行,否则将会引发报错提示。

  • Off:表示关闭该功能。

  • SingAreaLockAxis4 on 和 SingAreaLockAxis4 off 之间的笛卡尔运动指令,其姿态将采用特殊的插补方式,不会改变 4 轴的运动角度。任何试图改变 4 轴角度的运动指令都会引起报错。同时该指令被设计为阻塞指令,会打断 SingAreaLockAxis4 前后运动指令间的转弯区。

  • 目前版本适用机型为:工业标准六轴系列 (XB, NB 型号)和协作xMateCR(5 轴机型除外),xMateSR 系列。

  • 开启全 DH 补偿后,不支持该指令。

示例:

MoveAbsJ(p1,v1000,z50,tool0);
SingAreaLockAxis4(on);
MoveL(p2,v1000,z50,tool0);
MoveL(p3,v1000,z50,tool0);
SingAreaLockAxis4(off);
MoveL(p5,v1000,z50,tool0);

点位 p1 需要保证 4 轴角度为 0 度或者 ±180 度,运行到 SingAreaLockAxis4 on 锁定四轴进行腕奇异规避功能开启,MoveL p2,MoveL p3 姿态将进行特殊的插补,保持 4 轴角度不变。
SingAreaLockAxis4 off 关闭该功能。

15.4.18.18 SpeedRefresh

说明: 用于覆盖当前运动程序任务中的速度值。

定义:

SpeedRefresh(override);
  • override:数据类型:int,取值范围:[1%,100%],速度覆盖值超过限值范围机器人会报错。

示例:

SpeedRefresh(70);
// 将当前的速度覆盖值设置为70%
  • 执行 pptomain、pptofunc、to 光标、重新加载工程、进入或退出 demo 时,通过 SpeedRefresh 指令设置的速度值会被清除,并恢复为示教器界面上设定的程序运行速度。

  • 优先级说明:如果通过 SpeedRefresh 设置了速度值,则以该指令设置的速度为准;如果在 SpeedRefresh 指令执行后,手动调整了机器人运行速度(例如拖动示教器上的速度滑条),则之后将以手动调整的速度为准。

  • SpeedRefres 指令在转弯区生效。

  • SpeedRefresh 指令可以设置超过手动模式下的程序速度上限、自动模式下的初始程序速度上限速度值,请谨慎使用。(在自动模式下运行RL程序时,如果点击暂停并切换到手动模式,再点击“运行”按钮继续执行,此时程序运行速度将取“手动模式下的程序速度上限“和”SpeedRefresh 设置的速度值“两者中的较小值)

  • 通过 SpeedRefresh 设置的速度覆盖值不会立即完成,下达命令与物理机械臂产生速度影响之间会存在一定时间滞后。

15.4.18.19 CSpeedOverride

说明: 用户读取当前速度覆盖值。

定义:

Ret=CSpeedOverride();
  • Ret:数据类型:int,取值范围 1~100% 速度覆盖值

示例:

int override=CSpeedOverride();
print(override);
// 若当前速度覆盖值为 70%,则返回 70。

15.4.18.20 SingAreaJointWay

说明: 该指令表示采用关节空间轨迹插补的方式,规避笛卡尔指令中的奇异点。
SingAreaJointWay on 和SingAreaJointWay off 之间的笛卡尔运动指令,控制系统会自动检测其上是否有奇异点。该轨迹如果不包含奇异点,将按照普通轨迹的方式进行运动,如果包含奇异点,将按照该模式特有的模式进行运动。具体如下所示:
15.4.18.20
如上图所示,对于含有奇异点的笛卡尔轨迹 P0P1,控制系统检测到奇异点 Psingular 后,围绕奇异点 Psingular,在原轨迹上加入 Pcut1 和 Pcut2 两点,将原轨迹划分为 P0Pcut1, Pcut1Pcut2, Pcut2P1 三部分,其中 P0Pcut1 和 Pcut2P1, 依然为原笛卡尔轨迹,Pcut1Pcut2 采用关节空间轨迹(MoveAbsJ)代替原轨迹部分,从而能够通过奇异点。三段轨迹间采用转弯区平滑过渡,该转弯区的转弯半径可以进行设置,即为指令中的 zone 参数。
机器人在奇异点附近的运动,关节角度通常运动幅度很大,所以使用该指令时,需要确认机器人的运动轨迹是否符合要求。

  • 目前版本适用机型为:工业标准六轴系列(XB,NB型号)。

定义:

SingAreaJointWay(on/off,zone);
  • on/off`:分别代表关节插补奇异功能的开启和关闭。

  • Zone:表示切割后 P0Pcut1, Pcut1Pcut2, Pcut2P1 三段轨迹间的转弯区半径,如上图,参考转弯区定义。

示例:

MoveAbsJ(p1,v1000,z50,tool0);
SingAreaJointWay(on,50);
MoveL(p2,v1000,z50,tool0);
MoveL(p3,v1000,z50,tool0);
SingAreaJointWay(off);
MoveL(p5,v1000,z50,tool0);

上述指令中 SingAreaJointWay on,50 开启奇异规避,并指定奇异规避内部转弯区半径为 50mm,SingAreaJointWay off 关闭奇异规避,两者之间的运动指令将采用关节插补奇异规避的方式进行运动。

15.4.18.21 SingAreaWrist

说明: 该指令表示采用牺牲姿态的方式,规避笛卡尔指令中的奇异点。
SingAreaWrist on 和 SingAreaWrist off 之间的笛卡尔运动指令,都使用牺牲姿态的方式来运动。在这种情况下,机器人工具遵循正确的,精准的轨迹运动,但是机器人腕关节形态将被改变。未通过奇异点时,亦将出现上述情况。
机器人使用牺牲姿态的方式来运动,机器人腕关节姿态可能运动幅度很大,所以使用该指令时,需要确认机器人的运动轨迹是否符合要求。

  • 目前版本适用机型包括工业标准六轴系列(XB,NB型号)和协作 xMateCR,xMateSR 系列。

定义:

SingAreaWrist(on/off, limit);
  • on/off:分别代表牺牲姿态规避奇异点功能开启和关闭。

  • Limit:表示设置的允许最大的可牺牲姿态的值, 单位角度。

示例:

MoveAbsJ(p1,v1000,z50,tool0);
SingAreawrist(on,30);
MoveL(p2,v1000,z50,tool0);
MoveL(p3,v1000,z50,tool0);
SingAreaWristoff;
MoveL(p4,v1000,z50,tool0);

上述指令中 SingAreaWrist on,30 开启奇异规避,并指定奇异规避最大可牺牲姿态为 30 度,SingAreaWrist off 关闭奇异规避,两者之间的运动指令将采用奇异规避的方式进行运动。需注意, p1 与 p2, p2 与 p3 之间的转弯区可正常生成, p3 和 p4 之间的转弯区不可生成。

  • 只可以对直线运动使用,不可对弧线运动使用。

  • 使用牺牲姿态奇异规避功能,示教点在奇异点范围内时,示教点将被变更。运动时的手腕姿态与示教的可能有所不同,不仅通过奇异点的示教点,而且以后的示教点的姿态也可能被改变。

  • 单步运动时和连续运动时的奇异点附近姿态的运动可能不同。

15.4.18.22 SetRobotJointsMaxAcc

说明: 用于动态修改机器人轴的最大加速度值,当需要机器人放大轴的最大加速度值,提升节拍,增加机器人运行速度时,可使用该指令对每个轴设置最大加速度。指令的效果与通过 HMI 设置运动参数下的“最大轴加速度”是一致的,该指令可以针对特定的运动指令设置该效果。

定义:

SetRobotJointsMaxAcc(jointval1, jointval2, jointval3, jointval4, jointval5, jointval6, jointval7);
  • jointval1~7:数据类型:double/int,对应轴的最大加速度值,单位(°/s^2);

示例:

SetRobotJointsMaxAcc(80000.0,70000.0,70000.0,150000.0,150000.0,20000.0,20000.0);
  • 当两段轨迹存在转弯区时,转弯区按照最大轴加速度小的约束生成;

15.4.18.23 SetRobotJointsMaxJerk

说明: 用于动态修改机器人轴的最大加加速度值,当需要机器人放大轴的最大加加速度值,提升节拍,增加机器人运行速度时,可使用该指令对每个轴设置最大加加速度。指令的效果与通过 HMI 设置运动参数下的“最大轴加加速度”是一致的,该指令可以针对特定的运动指令设置该效果。

定义:

SetRobotJointsMaxJerk(jointval1, jointval2, jointval3, jointval4, jointval5, jointval6, jointval7);
  • jointval1~7:数据类型:double/int,对应轴的最大加加速度值,单位(°/s^3);

示例:

SetRobotJointsMaxJerk(30000.0,27000.0,27000.0,50000.0,40000.0,60000.0,60000.0);
  • 当两段估计存在转弯区时,转弯区按照最大轴加速度小的约束生成;

15.4.18.24 SetTransmissionOverloadParams

说明: 用于动态修改机器人的传动过载系数,当需要机器人适当放大轴的传动过载系数,提升节拍,增加机器人运行速度时,可使用该指令对每个轴设置传动过载系数。指令的效果与通过 HMI 设置本体参数下的过载系数中的“传动过载系数”是一致的,但可以针对特定的运动指令设置该效果。

定义:

SetTransmissionOverloadParams (jointval1, jointval2, jointval3, jointval4, jointval5, jointval6,jointval7);
  • jointval1~7:数据类型:double/int,对应轴的传动过载系数。

示例:

SetTransmissionOverloadParams(0.95,0.95,0.95,0.95,1.5,0.95,1.0);
  • 当两段轨迹存在转弯区时,转弯区按照传动过载系数小的约束生成;

15.4.18.25 ResetTransmissionOverloadParams

说明: 用于恢复机器人的传动过载系数为原来的值,配合 SetTransmissionOverloadParams 指令使用;生效后该指令的效果被清除;

定义:

ReSetTransmissionOverloadParams();
  • 无参数。

示例:

ReSetTransmissionOverloadParams();

15.4.18.26 SetAccRampTime

说明: 用于设置加速度上升时间,机器人加速度从最小值增加到最大值所消耗的时间。数值越小,机器人加速越快;数值越大,机器人加速越平缓。

定义:

SetAccRampTime (ramptime);
  • ramptime:数据类型:double/int,加速度上升时间值,范围为[0.02,0.5],单位 s;

示例:

SetAccRampTime(0.15);

15.4.18.27 ResetAccRampTime

说明: 用于恢复默认的加速度上升时间,配合 SetAccRampTime 指令使用;

定义:

ResetAccRampTime();
  • 无参数。

示例:

ResetAccRampTime();

15.4.18.28 SetVarValue

说明: 实现在转弯区进行变量赋值,并且前瞻时不触发赋值操作。

定义:

SetVarValue(var1,var2);
  • 将数据源 var2 赋值给被赋值变量 var1。

  • var1:可选数据类型:byte、int、double、bool、未绑定功能码的可写寄存器变量。

  • var2:可选数据类型:byte、int、double、bool、IO 变量、寄存器变量、函数返回值、表达式。

示例:

15.4.18.28

//机器人当前位于p0位置
MoveL(p1);
SetVarValue(var1,var2); //在转弯区起点将变量 var2 赋值给变量 var1
MoveL(p2);

赋值过程中会发生隐式转换,如:
inta=1;
doubleb=20.22;
SetVarValue(a,b);
执行赋值操作后,变量 a 的值为 20。

15.4.18.29 SetStopAccRampTime

说明: 用于设置到位停止阶段加速度上升时间,即针对无转弯区目标点,机器人停止阶段的加速度从最小值增加到 0 的时间。数值越小,机器人停止越快;数值越大,机器人停止越平缓。若加速度上升时间大于到位停止阶段加速度上升时间,按照较大的加速度上升时间停止。

定义:

SetStopAccRampTime(ramptime);
  • ramptime:数据类型:double/int,到位停止阶段加速度上升时间值,范围为[0.01,1],单位 s;

示例:

SetAccRampTime(0.15);

15.4.18.30 ResetStopAccRampTime

说明: 用于恢复默认的到位停止阶段加速度上升时间,配合 SetStopAccRampTime 指令使用;

定义:

ResetStopAccRampTime();
  • 无参数;

示例:

ResetStopAccRampTime();

15.4.18.31 PathRecStart

说明: 开始记录机器人的路径。是一个停前瞻指令。
执行 PathRecStart 开启路径记录后,支持记录的运动类型有 MoveL、MoveJ、MoveAbsJ、MoveC、TrigL、TrigC、TrigJ。路径记录时 MoveC、TrigC 指令执行时不能被中断打断,否则将无法记录目标点。MoveC、TrigC 指令被中断打断时将报错停止。

定义:

PathRecStart();

示例:

MoveL(p1,v1000,z50,tool0,wobj0);
PathRecStart();
MoveL(p2,v1000,z50,tool0,wobj0);
// 前瞻到 PathRecStart,停止前瞻,待 PathRecStart 前的运动结束后再执行 PathRecStart,在此指令之后的运动指令将被记录。

15.4.18.32 PathRecStop

说明: 停止记录机器人的路径,并将记录的路径信息清空。是一个停前瞻指令。

定义:

PathRecStop();

示例:

MoveL(p1,v1000,z50,tool0,wobj0);
PathRecStop();
MoveL(p2,v1000,z50,tool0,wobj0);
// 前瞻到 PathRecStop,停止前瞻,待 PathRecStop 前的运动结束后再执行 PathRecStop,在此指令之后将不会再记录路径并且记录的路径将被清空。

15.4.18.33 PathRecBwd

说明: 使机器人沿所记录的路径后退。是一个停前瞻的运动指令,PathRecBwd的运动不会被记录。
如果运动指令之间有打断前瞻的指令,则执行记录的路径时,打断前瞻指令前的轨迹的转弯区会被设置为 z0。
执行 PathRecStart 开启路径记录后,触发中断,中断中 PathRecBwd 指令必须在其他运动指令之前,否则将报错停止。
PathRecBwd 无法被中断,当执行 PathRecBwd 时触发中断将报错停止。

定义:

PathRecBwd();

示例:

MoveAbsJ(j1,v1000,z50,tool_weld);
PathRecStart();
MoveL(p1,v1000,z50,tool0,wobj0);
MoveAbsJ(j2,v1000,z50,tool_weld);
PathRecBwd();
MoveL(p2,v1000,z50,tool0,wobj0);
// PathRecStart 之后记录了两条运动指令。当执行到 PathRecBwd 时,机器人将进行轨迹回退,从 j2->p1->PathRecBwd 执行时机器人的位置(j1)

15.4.18.34 PathRecFwd

说明: 使机器人后退至执行 PathRecBwd 处。停前瞻的运动指令,PathRecFwd 的运动不会被记录。
如果运动指令之间有打断前瞻的指令,则执行记录的路径时,打断前瞻指令前的轨迹的转弯区会被设置为 z0。
执行 PathRecStart 开启路径记录后,触发中断,中断中 PathRecFwd 后不可以有运动指令,否则将报错停止。
PathRecFwd 无法被中断,当执行 PathRecFwd 时触发中断将报错停止。

定义:

PathRecFwd();

示例:

MoveAbsJ(j1,v1000,z50,tool_weld);
PathRecStart();
MoveL(p1,v1000,z50,tool0,wobj0);
MoveAbsJ(j2,v1000,z50,tool_weld);
PathRecBwd();
PathRecFwd();
// 执行到 PathRecBwd 时,机器人进行路径回退【j2->p1->PathRecBwd 执行时机器人的位置(j1)】,此时机器人在 j1 的位置,当执行 PathRecFwd,机器人将从 j1->p1->j2 回到 j2 位置。

15.4.18.35 GetRecStartStatus

说明: 获取记录路径是否开启。返回值是 bool 类型

定义:

GetRecStartStatus();

示例:

boolb1=GetRecStartStatus();
// 获取是否开启路径记录。返回 true 表示开启,false 则表示未开启。

15.4.18.36 SetMaxMotionJerk

说明: 设置机器人底层 otgcjerk 的数值,默认值为 300,可以通过增大此值以实现快速启停的效果,pptomain 后恢复默认值;

定义:

SetMaxMotionJerk(Num);
  • Num:数据类型 int/double 大于 100。

示例:

SetMaxMotionJerk(10000);

15.4.18.37 VibSuppression

说明: 设置振动抑制功能开关的指令。Pptomain 时,振动抑制功能恢复 HMI 界面设置的状态(见9.8 章中动力学设置模块的振动抑制功能)。

定义:

VibSuppression(Type);
  • Type:数据类型:关键字,on 打开,off 关闭。

示例:

VibSuppression(on);
MoveAbsJ(p1,v500,fine,tool1);
MoveAbsJ(p2,v500,fine,tool1);
MoveAbsJ(p3,v500,fine,tool1);
VibSuppression(off);
MoveAbsJ(p4,v500,fine,tool1);

执行到 VibSuppression(on) 指令时,控制器开启振动抑制功能。后续 p1~p3 点的运动收到振动抑制功能的影响,启停时机器人的振动得到抑制,机器人的轨迹精度得到提高。执行到 VibSuppression(off) 指令时,控制器关闭振动抑制功能。