API 说明

安川 工控机主控支持的 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

机械臂后台发送状态

支持

motoman工控机主控定义了一些全局变量,不允许用户使用,占用情况如下(XYZMotionInit.JBI):

B字节型

地址

含义

说明(是否用户可写)

B000

motion通讯标志位

x

B001

status通讯标志位

x

B002

内部使用

x

B003

内部使用

x

B004

内部使用

x

B005~B009

预留,请勿使用

x

I整数型

地址

含义

说明(是否用户可写)

I000

motion通讯端口号

x

I001

status通讯端口号

x

I002

speed_joint

x

I003

speed_cart

x

I004

override pl

x

I005

acc

x

I006

dec

x

I007~I019

预留,请勿使用

x

I020

接收到的cmd

x

I021

下发轨迹的点位数

x

I022

单点运动还是走轨迹

x

I023

运动类型

x

I024

error_code

x

I025~I029

预留,请勿使用

x

P位置型

地址

含义

说明(是否用户可写)

P040

单点运动

x

P041~P049

预留,请勿使用

x

P050~P100

走轨迹

x

S字符串

地址

含义

说明(是否用户可写)

S000

服务器IP地址

x

S001

status的log信息

x

S002

motion的log信息

x

安川 机械臂主控支持的 API

安川机械臂主控定义了一些全局变量(xyz_const.h),请不要在用户的机器人程序中使用以下地址的变量:

  • B用户变量:不要使用 B000~B005

  • S用户变量:不要使用 S000~S002

  • I用户变量:不要使用 I000~I075

  • D用户变量:不要使用 D000~D005

  • R用户变量:不要使用 R000~R030

  • P用户变量:不要使用 P000~P040

用户变量具体占用如下:

B字节型

地址

含义

说明(是否用户可写)

B000

通讯标志位

x

B001

发送命令标志位

x

B002~B005

系统预留,请勿使用

x

S字符串

地址

含义

说明(是否用户可写)

S000

server的ip地址

x

S001

任务代号

S002

工件代号

S003

视觉命令代号

S004

系统预留,请勿使用

x

S005~S009

用户指令(usrCmd)的5个字符串输入

S010

object_name

read only

S011~S015

用户指令(usrCmd)的5个字符串输出

read only

S016

通讯连接状态,调试监视用

read only

S017

内部错误信息,调试监视用

read only

S018~S020

系统预留,请勿使用

x

I整数型

地址

含义

说明(是否用户可写)

I000

通讯端口号

x

I001

指令号

x

I002

设置的token值

I003

视觉服务id

I004

工具id

I005~I010

系统预留,请勿使用

x

I011~I020

用户指令(xyzUsrCmd)的10个int输入

I021

内部变量

x

I022

Max返回的token值

read only

I023

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

read only

I024

运动流程编号

read only

I025

抓取序号

read only

I026~I031

指令“计算抓取目标点位”和“计算物体位姿”的6个int输出值

read only

I032~I041

用户指令(xyzUsrCmd)的10个int输出值

read only

I042~I045

系统预留,请勿使用

x

I046~I075

TrajMove中各轨迹点类型

read only

D双精度型

地址

含义

说明(是否用户可写)

D000

Max返回的错误代码

read only

D001~D005

系统预留,请勿使用

x

R实数型

地址

含义

说明(是否用户可写)

R000~R009

用户指令(xyzUsrCmd)的10个实数输入值

R010~R014

系统预留,请勿使用

x

R015~R024

用户指令(xyzUsrCmd)的10个实数输出值

read only

R025~R030

系统预留,请勿使用

x

P位置型

地址

含义

说明(是否用户可写)

P000~P001

系统预留,请勿使用

x

P002

用户指令(xyzUsrCmd)的1个笛卡尔坐标输入值

P003

用户指令(xyzUsrCmd)的1个关节坐标输入值

P004

grasp_pose/place_pose中的点位

read only

P005

object_pose中的点位

read only

P006

用户指令(xyzUsrCmd)的1个笛卡尔坐标输出值

read only

P007

用户指令(xyzUsrCmd)的1个关节坐标输出值

read only

P008~P010

系统预留,请勿使用

x

P011~P040

轨迹移动中的轨迹点坐标

read only

通讯连接()
CALL JOB:XYZMasterConnect ARGF"192.168.37.101" ARGF11111
输入:
  • server的ip地址

  • server的端口号

心跳信号()
CALL JOB:XYZMasterProcCmd ARGF500
切换任务()
' set task_codename
SET S001 "1.t"
CALL JOB:XYZMasterProcCmd ARGF502

输入:

  • S001:任务代号

输出:

  • D000:error_code

切换工具()
' set tool_id
SET I004 0
CALL JOB:XYZMasterProcCmd ARGF503

输入:

  • I004: 工具 id

输出:

  • D000:error_code

呼叫视觉命令()
' set vs_id
SET I003 0
' set vision_codename
SET S003 "get_z"
CALL JOB:XYZMasterProcCmd ARGF504
CALL JOB:XYZMasterCheckError

输入:

  • I003: 视觉服务 id

  • S003: 视觉命令代号

输出:

  • D000:error_code

请求抓取目标点位()
' set vs_id
SET I003 0
CALL JOB:XYZMasterProcCmd ARGF507
' 判断返回的error_code是否正常
CALL JOB:XYZMasterCheckError

' save returned token
SET LI000 I022

输入:

  • I003: 视觉服务 id

输出:

  • D000:error_code

  • I022: max返回的token值,在执行“获取抓取目标点位”时使用到,随后将 I022 赋给 LI000

获取抓取目标点位()
SET I002 LI000
CALL JOB:XYZMasterProcCmd ARGF508

输入:

  • I002:设置token值,来自于之前“请求抓取目标点位”的token返回值

输出:

  • D000:error_code

  • P004:目标抓取点位姿

  • I023:当前可供抓取的点位数量

  • I024:运动流程编号

  • I025:抓取序号

  • I026~I031:自定义输出,可在Task中自定义含义

请求物体位姿()
' set vs_id
SET I003 0
CALL JOB:XYZMasterProcCmd ARGF509
' 判断返回的error_code是否正常
CALL JOB:XYZMasterCheckError
' save returned token
SET LI000 I022

输入:

  • I003: 视觉服务 id

输出:

  • D000:error_code

  • I022: max返回的token值,在执行“获取物体位姿”时使用到,随后将 I022 赋给 LI000

获取物体位姿()
' set obtained token
SET I002 LI000
CALL JOB:XYZMasterProcCmd ARGF510

输入:

  • I002:设置token值,来自于之前“请求物体位姿”的token返回值

输出:

  • D000:error_code

  • P005:物体的位姿数据

  • I023:当前物体位姿个数

  • S010:物体名称

  • I026~I031:自定义输出,可在Task中自定义含义

重置任务()
CALL JOB:XYZMasterProcCmd ARGF511

输出:

  • D000:error_code

发送机器人当前关节坐标()
CALL JOB:XYZMasterProcCmd ARGF512

输出:

  • D000:error_code

发送机器人当前笛卡尔坐标()
CALL JOB:XYZMasterProcCmd ARGF513

输出:

  • D000:error_code

发送机器人当前扩展轴坐标()
CALL JOB:XYZMasterProcCmd ARGF514

输出:

  • D000:error_code

请求抓放规划()
' set vs_id
SET I003 0
CALL JOB:XYZMasterProcCmd ARGF517

输入:

  • I003: 视觉服务 id

输出:

  • D000:error_code

获取取料入框轨迹()
' set vs_id
SET I003 0
CALL JOB:XYZMasterProcCmd ARGF518

输入:

  • I003: 视觉服务 id

输出:

  • D000:error_code

  • I023:轨迹点数量

  • I024:运动流程编号

  • I025:抓取序号

  • 轨迹点:可以通过调用JOB:XYZMasterExecPickIn、JOB:XYZMasterExecPickOut、JOB:XYZMasterExecTraj完成轨迹执行

获取取料出框轨迹()
' set vs_id
SET I003 0
CALL JOB:XYZMasterProcCmd ARGF519

输入:

  • I003: 视觉服务 id

输出:

  • D000:error_code

  • I023:轨迹点数量

  • I024:运动流程编号

  • I025:抓取序号

  • 轨迹点:可以通过调用JOB:XYZMasterExecPickIn、JOB:XYZMasterExecPickOut、JOB:XYZMasterExecTraj完成轨迹执行

获取放料入框轨迹()
' set vs_id
SET I003 0
CALL JOB:XYZMasterProcCmd ARGF520

输入:

  • I003: 视觉服务 id

输出:

  • D000:error_code

  • I023:轨迹点数量

  • I024:运动流程编号

  • I025:抓取序号

  • 轨迹点:可以通过调用JOB:XYZMasterExecPickIn、JOB:XYZMasterExecPickOut、JOB:XYZMasterExecTraj完成轨迹执行

获取放料出框轨迹()
' set vs_id
SET I003 0
CALL JOB:XYZMasterProcCmd ARGF521

输入:

  • I003: 视觉服务 id

输出:

  • D000:error_code

  • I023:轨迹点数量

  • I024:运动流程编号

  • I025:抓取序号

  • 轨迹点:可以通过调用JOB:XYZMasterExecPickIn、JOB:XYZMasterExecPickOut、JOB:XYZMasterExecTraj完成轨迹执行

料箱重定位()
' set vs_id
SET I003 0
CALL JOB:XYZMasterProcCmd ARGF523

输入:

  • I003: 视觉服务 id

输出:

  • D000:error_code

工件在手上的二次定位()
CALL JOB:XYZMasterProcCmd ARGF524

输出:

  • D000:error_code

  • P004:放置位姿

切换工件()
'   set vs_id
SET I003 0
'   set item_codename
SET S002 "111"
CALL JOB:XYZMasterProcCmd ARGF528

输入:

  • I003: 视觉服务 id

  • S002:工件代号

输出:

  • D000:error_code

计算抓取目标点位()

该指令等价于 “请求抓取目标点位” + “获取抓取目标点位”

' set vs_id
SET I003 0
CALL JOB:XYZMasterProcCmd ARGF529

输入:

  • I003: 视觉服务 id

输出:

  • D000:error_code

  • P004:目标抓取点位姿

  • I023:当前可供抓取的点位数量

  • I024:运动流程编号

  • I025:抓取序号

  • I026~I031:自定义输出,可在Task中自定义含义

计算物体位姿()

该指令等价于 “请求物体位姿” + “获取物体位姿”

' set vs_id
SET I003 0
CALL JOB:XYZMasterProcCmd ARGF530

输入:

  • I003: 视觉服务 id

输出:

  • D000:error_code

  • P005:物体的位姿数据

  • I023:当前物体位姿个数

  • S010:物体名称

  • I026~I031:自定义输出,可在Task中自定义含义

用户指令()

用于基础指令不支持的情况下,配合任务流图完成用户特定功能。

各个参数的含义取决于任务流图中设定的输入输出。

' 设置5个字符串输入
' 设置10个int输入
' 设置10个实数输入
' 设置1个笛卡尔坐标输入
' 设置1个关节坐标输入值
CALL JOB:XYZMasterProcCmd ARGF600

输入:

  • D000:error_code

  • S005~S009:5个字符串输入

  • I011~I020:10个int输入

  • R000~R009:10个实数输入值

  • P002:1个笛卡尔坐标输入值

  • P003:1个关节坐标输入值

输出:

  • D000:error_code

  • S011~S015:5个字符串输出

  • I032~I041:10个int输出值

  • R015~R024:10个实数输出值

  • P006:1个笛卡尔坐标输出值

  • P007:1个关节坐标输出值

XYZMasterExecPickIn.JBI()

可用于执行TrajMove中下发的轨迹点,该程序执行轨迹特点是最后一个点的速度较慢。

具体各轨迹点执行的圆滑、速度等参数可以在程序中修改,详见程序里面的注释。

XYZMasterExecPickOut.JBI()

可用于执行TrajMove中下发的轨迹点,该程序执行轨迹特点是第一个点的速度较慢。

具体各轨迹点执行的圆滑、速度等参数可以在程序中修改,详见程序里面的注释。

XYZMasterExecTraj.JBI()

可用于执行TrajMove中下发的轨迹点,该程序执行轨迹特点全程速度、圆滑都是一样的。

具体各轨迹点执行的圆滑、速度等参数可以在程序中修改,详见程序里面的注释。