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) – 字符串值