API 说明

fanuc 工控机主控支持的 API

指令号

命令

支持情况

100

获取机械臂程序版本号

支持

101

发送速度数据

支持

102

发送加速度数据

支持

103

发送圆滑过渡参数

支持

104

发送工具坐标系(TCP)参数

支持

105

设置数字量输出

支持

106

SetJointsMovej

支持

107

SetCartMovel

支持

108

SetJoinsMovel

支持

109

SetCartMovej

支持

110

MovejSequence

支持

111

MovelSequence

支持

112

SetJointsMovejDo

不支持

113

SetCartMovelDo

不支持

114

SetJointsMovelDo

不支持

115

SetJointsMovejGroupDo

不支持

116

SetCartMovelGroupDo

不支持

117

SetJointsMovelGroupDo

不支持

118

MovelUntil

支持

119

获取数字量输入状态

支持

120

获取数字量输出状态

支持

121

获取模拟量输入口数值

不支持

122

获取机械臂当前角度

支持

123

获取机械臂当前位姿

支持

200

机械臂后台发送状态

支持

fanuc 机械臂主控支持的 API

XYZ Studio Max 1.5.4 及更新版本,请不要在用户的机器人程序中使用以下地址的寄存器:

  • R寄存器不要使用 R[1~100]

  • PR寄存器不要使用 PR[1~40]

  • SR寄存器不要使用 SR[1~12]

XYZ Studio Max 1.5.4 及更新版本,Fanuc寄存器占用情况具体如下:

R寄存器

寄存器地址

含义

说明(用户是否可写)

R[1~4]

内部占用

x

R[5]

内部通讯标志位

read only

R[6]

内部占用

x

R[7]

心跳周期(单位s),默认会设置为600s,一般情况下不要修改,如需修改请联系支持人员。

R[8~9]

前台 XYZ_EXECTRAJ中占用

x

R[10]

上位机返回的错误代码

read only

R[11]

上位机返回的token值

read only

R[12]

(grasp_pose/object_pose/轨迹等)的点位数量

read only

R[13]

pipeline num

read only

R[14]

register num

read only

R[15~19]

前台 XYZ_EXECTRAJ中占用

x

R[20~49]

轨迹中的way_point_type值

x

R[50~59]

指令XYZ_USR_CMD的10个int输入参数

R[60~69]

指令XYZ_USR_CMD的10个real输入参数

R[70~79]

指令XYZ_USR_CMD的10个int输出值

read only

R[80~89]

指令XYZ_USR_CMD的10个real输出值

read only

R[90~95]

指令XYZ_C_G_POSE和XYZ_C_O_POSE的6个int输出值

read only

R[96]

前台 XYZ_EXECTRAJ中占用

x

R[97~100]

内部预留,请勿使用

x

PR寄存器

寄存器地址

含义

说明(用户是否可写)

PR[1]

内部占用

x

PR[2]

指令XYZ_USR_CMD的关节输出值

read only

PR[3]

指令XYZ_USR_CMD的关节输入参数

PR[4]

用来设定轨迹移动中,笛卡尔坐标点的Config参考值

PR[5]

grasp_pose/object_pose/place_pose等

read only

PR[6]

指令XYZ_USR_CMD的笛卡尔坐标输出值

read only

PR[7]

指令XYZ_USR_CMD的笛卡尔坐标输入参数

PR[8~9]

内部预留,请勿使用

x

PR[10~39]

轨迹点

read only

PR[40]

内部预留,请勿使用

x

SR寄存器

寄存器地址

含义

说明(用户是否可写)

SR[1]

object_name

read only

SR[2~6]

指令XYZ_USR_CMD的5个字符串输入参数

SR[7~11]

指令XYZ_USR_CMD的5个字符串输出值

read only

SR[12]

内部预留,请勿使用

x

以下为XYZ Studio Max 1.5.4 及更新版本的 API

RUN XYZ_BKGD

运行后台程序

后台程序会和工控机进行通信连接和收发数据。连接是否成功的的状态会写到R[5]中,成功会给R[5]赋值为1,失败则R[5]赋值为0。不过R[5]只在运行了XYZ_BAKG以后才是真实值,如果强制终止程序,则R[5]为之前的遗留值。

CALL XYZ_ABT_BKGD

中止后台程序XYZ_BKGD的运行

中止时也会关闭后台套接字和工控机的连接。

CALL XYZ_REG_COM

初始化寄存器注释程序

必须在初始化的时候运行该程序

CALL XYZ_CK_ERR

检查指令执行后收到的Max错误代码,如果有错误则机器人会报错停机

调用发送给Max的指令后,不可以直接使用指令的返回值,必须调用 CALL XYZ_CK_ERR 判断Max是否返回错误。

CALL XYZ_SW_TA(task_codename)

切换任务

参数

task_codename (string) – 任务代号, 如 ‘1.t’

CALL XYZ_SW_TOOL(tool_id)

切换工具

参数

tool_id (INT) – 工具id

CALL XYZ_C_V_CMD(vs_id, vision_codename)

呼叫视觉

参数
  • vs_id – 视觉服务 id

  • vision_codename (string) – 呼叫视觉的指令代号

CALL XYZ_R_G_POSE(vs_id)

请求抓取目标点位

返回的token值存放在R[11]中

参数

vs_id (INT) – 视觉服务id

CALL XYZ_G_G_POSE(token)

获取抓取目标点位

返回的“当前可供抓取的点位数量”存放在R[12]中

返回的运动流程编号(pipeline_num)存放在R[13]中

返回的抓取序号(register_num)存放在R[14]中

返回的6个int值存放在R[90]~R[95]中

返回的抓取位姿存放在PR[5]中

参数

token (INT) – “请求抓取目标点位”中返回的token

CALL XYZ_R_O_POSE(vs_id)

请求物体位姿

返回的token值存放在R[11]中

参数

vs_id (INT) – 视觉服务id

CALL XYZ_G_O_POSE(token)

获取物体位姿

返回的“当前物体位姿个数”存放在R[12]中

返回的“物体名称”放在SR[1]中

返回的6个int值存放在R[90]~R[95]中

返回的物体位姿存放在PR[5]中

参数

token (INT) – “请求物体位姿”中返回的token

CALL XYZ_RESET_TA()

重置任务

CALL XYZ_S_JOINTS(rgx_number)

发送特定关节角,需要注意上位机接收到的J3是J2/J3干涉角,而不是示教器上的J3

参数

rgx_number (INT) – PR寄存器号,请从41及之后开始使用,且该PR寄存器类型需要是关节型

CALL XYZ_S_C_POSE(rgx_number)

发送特定笛卡尔位姿

参数

rgx_number (INT) – PR寄存器号,请从41及之后开始使用,且该PR寄存器类型需要是正交型

CALL XYZ_S_EXT_J(rgx_number)

发送机器扩展轴坐标

参数

rgx_number (INT) – PR寄存器号,请从41及之后开始使用,且该PR寄存器类型需要是关节型且具有扩展轴才可以。后台提取第7~9轴的数据进行发送。

CALL XYZ_R_PICPLA(vs_id)

请求抓放规划

参数

vs_id (INT) – 视觉服务id

CALL XYZ_G_PICIN(vs_id)

获取取料入框轨迹

返回的“轨迹中的点位数量”存放在R[12]中

返回的运动流程编号(pipeline_num)存放在R[13]中

返回的抓取序号(register_num)存放在R[14]中

返回的轨迹点和轨迹点位姿类型分别存放在PR[10~39] 和 R[20~49] 中,PR[10~39]的Config信息来源于PR[4]。

用户可以通过调用 CALL XYZ_EXECTRAJ(2) 来执行这段轨迹。 如果执行轨迹过程中报“位置形态信息不一致”或者“超行程错误”,则需要在合适位置示教PR[4]。

参数

vs_id (INT) – 视觉服务id

CALL XYZ_G_PICOUT(vs_id)

获取取料出框轨迹

返回的“轨迹中的点位数量”存放在R[12]中

返回的运动流程编号(pipeline_num)存放在R[13]中

返回的抓取序号(register_num)存放在R[14]中

返回的轨迹点和轨迹点位姿类型分别存放在PR[10~39] 和 R[20~49] 中,PR[10~39]的Config信息来源于PR[4]。

用户可以通过调用 CALL XYZ_EXECTRAJ(3) 来执行这段轨迹。 如果执行轨迹过程中报“位置形态信息不一致”或者“超行程错误”,则需要在合适位置示教PR[4]。

参数

vs_id (INT) – 视觉服务id

CALL XYZ_G_PLAIN(vs_id)

获取放料入框轨迹

返回的“轨迹中的点位数量”存放在R[12]中

返回的运动流程编号(pipeline_num)存放在R[13]中

返回的抓取序号(register_num)存放在R[14]中

返回的轨迹点和轨迹点位姿类型分别存放在PR[10~39] 和 R[20~49] 中,PR[10~39]的Config信息来源于PR[4]。

用户可以通过调用 CALL XYZ_EXECTRAJ(4) 来执行这段轨迹。 如果执行轨迹过程中报“位置形态信息不一致”或者“超行程错误”,则需要在合适位置示教PR[4]。

参数

vs_id (INT) – 视觉服务id

CALL XYZ_G_PLAOUT(vs_id)

获取放料出框轨迹

返回的“轨迹中的点位数量”存放在R[12]中

返回的运动流程编号(pipeline_num)存放在R[13]中

返回的抓取序号(register_num)存放在R[14]中

返回的轨迹点和轨迹点位姿类型分别存放在PR[10~39] 和 R[20~49] 中,PR[10~39]的Config信息来源于PR[4]。

用户可以通过调用 CALL XYZ_EXECTRAJ(5) 来执行这段轨迹。 如果执行轨迹过程中报“位置形态信息不一致”或者“超行程错误”,则需要在合适位置示教PR[4]。

参数

vs_id (INT) – 视觉服务id

CALL XYZ_U_T_POSE(vs_id)

料箱重定位

参数

vs_id (INT) – 视觉服务id

CALL XYZ_U_OBJ_IH()

工件在手上的二次定位

返回的放置位姿存放在PR[5]中

CALL XYZ_SW_ITEM(vs_id,item_codename)

切换工件

参数
  • vs_id (INT) – 视觉服务id

  • item_codename (string) – 工件代号

CALL XYZ_C_G_POSE(vs_id)

计算抓取目标点位,该指令等价于 CALL XYZ_R_G_POSE + CALL XYZ_G_G_POSE

返回的“当前可供抓取的点位数量”存放在R[12]中

返回的运动流程编号(pipeline_num)存放在R[13]中

返回的抓取序号(register_num)存放在R[14]中

返回的6个int值存放在R[90]~R[95]中

返回的抓取位姿存放在PR[5]中

参数

vs_id (INT) – 视觉服务id

CALL XYZ_C_O_POSE(vs_id)

计算物体位姿,该指令等价于 CALL XYZ_R_O_POSE + CALL XYZ_G_O_POSE

返回的“当前物体位姿个数”存放在R[12]中

返回的“物体名称”放在SR[1]中

返回的6个int值存放在R[90]~R[95]中

返回的物体位姿存放在PR[5]中

参数

vs_id (INT) – 视觉服务id

CALL XYZ_USR_CMD()

用户自定义指令,用于基础指令不支持的情况下,配合任务流图完成用户特定功能。各个参数的含义取决于任务流图中设定的输入输出。

该指令不直接带参数,所有输入输出均直接读写寄存器。

指令输入:

  • 5个字符串输入:SR[2~6],没用到的值请初始化为空或者0

  • 10个int输入:R[50~59],没用到的值请初始化为0。不可以在这些寄存器上输入小数值,如12.1,否则会被解析成0,造成数据混乱!

  • 10个real输入:R[60~69],没用到的值请初始化为0。不可以在这些寄存器上输入整数值,如12, 否则会被解析成0,造成数据混乱!

  • 1个关节输入:PR[3],需要确保PR是关节类型,需要注意上位机接收到的J3是J2/J3干涉角,而不是示教器上的J3

  • 1个笛卡尔输入:PR[7],需要确保PR为正交类型

如果PR[3]不是关节类型或者PR[7]不是正交类型,则运行该指令会报错“参数还没有设定”错误!

指令返回:

  • 5个字符串输出:SR[7~11]

  • 10个int输出:R[70~79]

  • 10个real输出:R[80~89]

  • 1个关节输出:PR[2],需要注意下发给机器人的J3体现在机器人上是J2/J3干涉角

  • 1个笛卡尔输出:PR[6],PR[6]要提前设置好Config值,否则可能报“位置形态信息不一致”或者“超行程错误”

CALL XYZ_EXECTRAJ(traj_flag)

执行轨迹

如果执行轨迹时速度/加速度/圆滑不合适,可以在前台根据需要修改 XYZ_EXECTRAJ 程序。

如果执行的轨迹中有笛卡尔坐标点,则坐标点的Config信息来源于PR[4],需要提前示教好PR[4],否则会报“位置形态信息不一致”或者“超行程错误”

参数

traj_flag – 执行轨迹标志位。若为 2,执行XYZ_G_PICIN轨迹;若为 3,执行XYZ_G_PICOUT轨迹;若为 4,执行XYZ_G_PLAIN轨迹;若为 5,执行XYZ_G_PLAOUT轨迹。

CALL XYZ_S_SR(sreg_id, str_value)

设置SR寄存器的值

这是个功能函数,不涉及和Max的直接通信,可以用到CALL XYZ_USR_CMD()之前设置输入的SR寄存器的值。

由于SR寄存器不能直接在示教器前台程序中直接定义字符串,所以提供这个功能函数方便用户使用。

如 CALL XYZ_S_SR(1, ‘hello’),这会将SR[1]的内容设置为’hello’

参数
  • sreg_id (INT) – SR寄存器号

  • str_value (string) – 字符串值