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中下发的轨迹点,该程序执行轨迹特点全程速度、圆滑都是一样的。
具体各轨迹点执行的圆滑、速度等参数可以在程序中修改,详见程序里面的注释。