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 | +-----------+------------------------------------------+--------------------+ .. function:: 通讯连接 :noindex: .. code-block:: CALL JOB:XYZMasterConnect ARGF"192.168.37.101" ARGF11111 输入: - server的ip地址 - server的端口号 .. function:: 心跳信号 :noindex: .. code-block:: CALL JOB:XYZMasterProcCmd ARGF500 .. function:: 切换任务 :noindex: .. code-block:: ' set task_codename SET S001 "1.t" CALL JOB:XYZMasterProcCmd ARGF502 输入: - S001:任务代号 输出: - D000:error_code .. function:: 切换工具 :noindex: .. code-block:: ' set tool_id SET I004 0 CALL JOB:XYZMasterProcCmd ARGF503 输入: - I004: 工具 id 输出: - D000:error_code .. function:: 呼叫视觉命令 :noindex: .. code-block:: ' 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 .. function:: 请求抓取目标点位 :noindex: .. code-block:: ' 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 .. function:: 获取抓取目标点位 :noindex: .. code-block:: SET I002 LI000 CALL JOB:XYZMasterProcCmd ARGF508 输入: - I002:设置token值,来自于之前“请求抓取目标点位"的token返回值 输出: - D000:error_code - P004:目标抓取点位姿 - I023:当前可供抓取的点位数量 - I024:运动流程编号 - I025:抓取序号 - I026~I031:自定义输出,可在Task中自定义含义 .. function:: 请求物体位姿 :noindex: .. code-block:: ' 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 .. function:: 获取物体位姿 :noindex: .. code-block:: ' set obtained token SET I002 LI000 CALL JOB:XYZMasterProcCmd ARGF510 输入: - I002:设置token值,来自于之前“请求物体位姿"的token返回值 输出: - D000:error_code - P005:物体的位姿数据 - I023:当前物体位姿个数 - S010:物体名称 - I026~I031:自定义输出,可在Task中自定义含义 .. function:: 重置任务 :noindex: .. code-block:: CALL JOB:XYZMasterProcCmd ARGF511 输出: - D000:error_code .. function:: 发送机器人当前关节坐标 :noindex: .. code-block:: CALL JOB:XYZMasterProcCmd ARGF512 输出: - D000:error_code .. function:: 发送机器人当前笛卡尔坐标 :noindex: .. code-block:: CALL JOB:XYZMasterProcCmd ARGF513 输出: - D000:error_code .. function:: 发送机器人当前扩展轴坐标 :noindex: .. code-block:: CALL JOB:XYZMasterProcCmd ARGF514 输出: - D000:error_code .. function:: 请求抓放规划 :noindex: .. code-block:: ' set vs_id SET I003 0 CALL JOB:XYZMasterProcCmd ARGF517 输入: - I003: 视觉服务 id 输出: - D000:error_code .. function:: 获取取料入框轨迹 :noindex: .. code-block:: ' set vs_id SET I003 0 CALL JOB:XYZMasterProcCmd ARGF518 输入: - I003: 视觉服务 id 输出: - D000:error_code - I023:轨迹点数量 - I024:运动流程编号 - I025:抓取序号 - 轨迹点:可以通过调用JOB:XYZMasterExecPickIn、JOB:XYZMasterExecPickOut、JOB:XYZMasterExecTraj完成轨迹执行 .. function:: 获取取料出框轨迹 :noindex: .. code-block:: ' set vs_id SET I003 0 CALL JOB:XYZMasterProcCmd ARGF519 输入: - I003: 视觉服务 id 输出: - D000:error_code - I023:轨迹点数量 - I024:运动流程编号 - I025:抓取序号 - 轨迹点:可以通过调用JOB:XYZMasterExecPickIn、JOB:XYZMasterExecPickOut、JOB:XYZMasterExecTraj完成轨迹执行 .. function:: 获取放料入框轨迹 :noindex: .. code-block:: ' set vs_id SET I003 0 CALL JOB:XYZMasterProcCmd ARGF520 输入: - I003: 视觉服务 id 输出: - D000:error_code - I023:轨迹点数量 - I024:运动流程编号 - I025:抓取序号 - 轨迹点:可以通过调用JOB:XYZMasterExecPickIn、JOB:XYZMasterExecPickOut、JOB:XYZMasterExecTraj完成轨迹执行 .. function:: 获取放料出框轨迹 :noindex: .. code-block:: ' set vs_id SET I003 0 CALL JOB:XYZMasterProcCmd ARGF521 输入: - I003: 视觉服务 id 输出: - D000:error_code - I023:轨迹点数量 - I024:运动流程编号 - I025:抓取序号 - 轨迹点:可以通过调用JOB:XYZMasterExecPickIn、JOB:XYZMasterExecPickOut、JOB:XYZMasterExecTraj完成轨迹执行 .. function:: 料箱重定位 :noindex: .. code-block:: ' set vs_id SET I003 0 CALL JOB:XYZMasterProcCmd ARGF523 输入: - I003: 视觉服务 id 输出: - D000:error_code .. function:: 工件在手上的二次定位 :noindex: .. code-block:: CALL JOB:XYZMasterProcCmd ARGF524 输出: - D000:error_code - P004:放置位姿 .. function:: 切换工件 :noindex: .. code-block:: ' set vs_id SET I003 0 ' set item_codename SET S002 "111" CALL JOB:XYZMasterProcCmd ARGF528 输入: - I003: 视觉服务 id - S002:工件代号 输出: - D000:error_code .. function:: 计算抓取目标点位 :noindex: 该指令等价于 “请求抓取目标点位” + “获取抓取目标点位” .. code-block:: ' set vs_id SET I003 0 CALL JOB:XYZMasterProcCmd ARGF529 输入: - I003: 视觉服务 id 输出: - D000:error_code - P004:目标抓取点位姿 - I023:当前可供抓取的点位数量 - I024:运动流程编号 - I025:抓取序号 - I026~I031:自定义输出,可在Task中自定义含义 .. function:: 计算物体位姿 :noindex: 该指令等价于 “请求物体位姿” + “获取物体位姿” .. code-block:: ' set vs_id SET I003 0 CALL JOB:XYZMasterProcCmd ARGF530 输入: - I003: 视觉服务 id 输出: - D000:error_code - P005:物体的位姿数据 - I023:当前物体位姿个数 - S010:物体名称 - I026~I031:自定义输出,可在Task中自定义含义 .. function:: 用户指令 :noindex: 用于基础指令不支持的情况下,配合任务流图完成用户特定功能。 各个参数的含义取决于任务流图中设定的输入输出。 .. code-block:: ' 设置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个关节坐标输出值 .. function:: XYZMasterExecPickIn.JBI :noindex: 可用于执行TrajMove中下发的轨迹点,该程序执行轨迹特点是最后一个点的速度较慢。 轨迹中至少需要2个点才会执行,具体各轨迹点执行的圆滑、速度等参数可以在程序中修改,详见程序里面的注释。 .. function:: XYZMasterExecPickOut.JBI :noindex: 可用于执行TrajMove中下发的轨迹点,该程序执行轨迹特点是第一个点的速度较慢。 轨迹中至少需要2个点才会执行,具体各轨迹点执行的圆滑、速度等参数可以在程序中修改,详见程序里面的注释。 .. function:: XYZMasterExecTraj.JBI :noindex: 可用于执行TrajMove中下发的轨迹点,该程序执行轨迹特点全程速度、圆滑都是一样的。 具体各轨迹点执行的圆滑、速度等参数可以在程序中修改,详见程序里面的注释。