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 | 获取机械臂当前位姿 | 支持 | +--------+-------------------------+----------+ | 124 | 调用子程序 | 不支持 | +--------+-------------------------+----------+ | 200 | 机械臂后台发送状态 | 支持 | +--------+-------------------------+----------+ 三菱: 机械臂主控支持的 API +++++++++++++++++++++++++++++++++++ 三菱机械臂使用了一些全局变量,不允许用户占用,占用情况如下: +-----------------------------------------------------------+ | **指令的输入参数** | +------------+-------------------------------+--------------+ | 地址 | 含义 | 是否用户可写 | +------------+-------------------------------+--------------+ | C_100(1~5) | 用户指令(xyzUsrCmd)的输入参数 | √ | | | | | +------------+ C_100(1~5):5个string | | | M_103(10) | | | | | M_103(10):10个int | | +------------+ | | | M_104(10) | M_104(10):10个float | | +------------+ | | | P_01 | P_01:1个cart_pose | | +------------+ | | | J_01 | J_01:1个joints | | +------------+-------------------------------+--------------+ +-----------------------------------------------------------------------------------------------------+ | **指令的返回值** | +---------------------+----------------------------------------------------------------+--------------+ | 地址 | 含义 | 用户是否可写 | +---------------------+----------------------------------------------------------------+--------------+ | M_00# | max返回的token值 | x | +---------------------+----------------------------------------------------------------+--------------+ | M_01# | pose_num | x | +---------------------+----------------------------------------------------------------+--------------+ | M_02# | pipeline_num | x | +---------------------+----------------------------------------------------------------+--------------+ | M_03# | register_num | x | +---------------------+----------------------------------------------------------------+--------------+ | M_04# | 系统预留 | x | +---------------------+----------------------------------------------------------------+--------------+ | M_05# | 轨迹中的点的数量 | x | +---------------------+----------------------------------------------------------------+--------------+ | M_05# ~ M_11# | calculate_grasp_pose/calculate_object_pose中返回的用户自定义值 | x | +---------------------+----------------------------------------------------------------+--------------+ | C_00$ | object_name | x | +---------------------+----------------------------------------------------------------+--------------+ | P_00 | grasp_pose/object_pose | x | +---------------------+----------------------------------------------------------------+--------------+ | P_100(10)~P_102(10) | 轨迹中的点位和类型 | x | +---------------------+ | | | J_100(10)~J_102(10) | | | +---------------------+ | | | M_100(10)~M_102(10) | | | +---------------------+----------------------------------------------------------------+--------------+ | C_100(6~10) | 用户指令(xyzUsrCmd)的返回参数 | x | | | | | +---------------------+ C_100(6~10):5个string | | | M_105(10) | | | | | M_105(10):10个int | | +---------------------+ | | | M_106(10) | M_106(10):10个float | | +---------------------+ | | | P_02 | P_02:1个cart_pose | | +---------------------+ | | | J_02 | J_02:一个joints | | +---------------------+----------------------------------------------------------------+--------------+ 以下API函数存放在 ``XYZUTILS.prg`` 。 返回值的V表示void,即无返回值。 .. function:: Function V xyzConnect(CIP$, MPort) :noindex: 连接到服务器 :param CIP$: 服务器IP地址 :type CIP$: 字符串 :param MPort: 服务器端口号 :type MPort: M :return: Void .. function:: Function M! xyzHeartBeat() :noindex: ping上位机用 :return: err_code :rtype: M! .. function:: Function M! xyzSwitchTask(CTaskCodeName$) :noindex: 切换任务 :param CTaskCodeName$: 任务代号 :type CTaskCodeName$: 字符串 :return: err_code :rtype: M! .. function:: Function M! xyzSwitchTool(MToolID$) :noindex: 切换工具 :param MToolID$: 工具id :type MToolID$: M :return: err_code :rtype: M! .. function:: Function M! xyzCallVisionCmd(MVsID, CVisionCodeName$) :noindex: 呼叫视觉命令 :param MVsID$: 视觉服务id :type MVsID$: M :param CVisionCodeName$: 视觉命令代号 :type CVisionCodeName$: 字符串 :return: err_code :rtype: M! .. function:: Function M! xyzReqGraspPose(MVsID) :noindex: 请求抓取目标点位 返回的token值保存在M_00# :param MVsID$: 视觉服务id :type MVsID$: M :return: err_code :rtype: M! .. function:: Function M! xyzGetGraspPose(MToken) :noindex: 获取抓取目标点位 返回的grasp_pose存放在P_00, grasp_pose_num存放在M_01#, pipeline_num存放在M_02#, register_num存放在M_03#, 6个自定义输出存放在M_06#~M_11# :param MToken$: xyzReqGraspPose返回的token值 :type MToken$: M :return: err_code :rtype: M! .. function:: Function M! xyzReqObjPose(MVsID) :noindex: 请求物体位姿 返回的token值存在M_00# :param MVsID$: 视觉服务id :type MVsID$: M :return: err_code :rtype: M! .. function:: Function M! xyzGetObjPose(MToken) :noindex: 获取物体位姿 返回的object_pose存放在P_00, object_pose_num存放在M_01#, object_name存放在C_00$, 6个自定义输出存放在M_06#~M_11# :param MToken$: xyzReqObjPose返回的token值 :type MToken$: M :return: err_code :rtype: M! .. function:: Function M! xyzResetTask() :noindex: 重置任务,下位机在初始化时需要调用该指令 :return: err_code :rtype: M! .. function:: Function M! xyzSendCurrentJoints() :noindex: 发送机器人当前角度 :return: err_code :rtype: M! .. function:: Function M! xyzSendCurrentCartPose() :noindex: 发送机器人当前Cartesian坐标 :return: err_code :rtype: M! .. function:: Function M! xyzSendCurrentExtJoints() :noindex: 发送机器人当前扩展轴位置 :return: err_code :rtype: M! .. function:: Function M! xyzReqPickPlace(MVsID) :noindex: 请求抓放规划 :param MVsID$: 视觉服务id :type MVsID$: M :return: err_code :rtype: M! .. function:: Function M! xyzGetPickIn(MVsID) :noindex: 获取取料入框轨迹 轨迹执行可以参考后面的轨迹执行函数 :param MVsID$: 视觉服务id :type MVsID$: M :return: err_code :rtype: M! .. function:: Function M! xyzGetPickOut(MVsID) :noindex: 获取取料出框轨迹 轨迹执行可以参考后面的轨迹执行函数 :param MVsID$: 视觉服务id :type MVsID$: M :return: err_code :rtype: M! .. function:: Function M! xyzGetPlaceIn(MVsID) :noindex: 获取放料入框轨迹 轨迹执行可以参考后面的轨迹执行函数 :param MVsID$: 视觉服务id :type MVsID$: M :return: err_code :rtype: M! .. function:: Function M! xyzGetPlaceOut(MVsID) :noindex: 获取放料出框轨迹 轨迹执行可以参考后面的轨迹执行函数 :param MVsID$: 视觉服务id :type MVsID$: M :return: err_code :rtype: M! .. function:: Function M! xyzUpdateTotePose(MVsID) :noindex: 料箱重定位 :param MVsID$: 视觉服务id :type MVsID$: M :return: err_code :rtype: M! .. function:: Function M! xyzUpdateObjPoseInHand() :noindex: 工件在手上的二次定位 返回的放置位姿存放在P_00 :return: err_code :rtype: M! .. function:: Function M! xyzSwitchItem(MVsID, CItemCodeName$) :noindex: 切换工件 :param MVsID$: 视觉服务id :type MVsID$: M :param CItemCodeName$: 工件代号 :type CItemCodeName$: 字符串 :return: err_code :rtype: M! .. function:: Function M! xyzCalculateGraspPose(MVsID) :noindex: 计算抓取目标点位 等价于执行:xyzReqGraspPose + xyzGetGraspPose 返回的grasp_pose存放在P_00, grasp_pose_num存放在M_01#, pipeline_num存放在M_02#, register_num存放在M_03#, 6个自定义输出存放在M_06#~M_11# :param MVsID$: 视觉服务id :type MVsID$: M :return: err_code :rtype: M! .. function:: Function M! xyzCalculateObjectPose(MVsID) :noindex: 计算物体位姿 等价于执行:xyzReqGraspPose + xyzGetGraspPose 返回的object_pose存放在P_00, object_pose_num存放在M_01#, object_name存放在C_00$, 6个自定义输出存放在M_06#~M_11# :param MVsID$: 视觉服务id :type MVsID$: M :return: err_code :rtype: M! .. function:: Function M! xyzUsrCmd() :noindex: 用户指令 用于基础指令不支持的情况下,配合任务流图完成用户特定功能。 各个参数的含义取决于任务流图中设定的输入输出。 输入参数: 5个字符串:C_100(1~5) 10个int类型:M_103(10) 10个float类型:M_104(10) 1个cart_pose: P_01 1个joints:J_01 输出参数: 5个字符串:C_100(6~10) 10个int类型:M_105(10) 10个float类型:M_106(10) 1个cart_pose: P_02 1个joints:J_02 :return: err_code :rtype: M! **其他功能API** .. function:: Function V xyzInitParams() :noindex: 初始化参数,用在程序开头 :return: Void .. function:: Function V xyzExecTraj(MCntValue) :noindex: 执行轨迹,不特殊处理第一个点和最后一个点 :param MCntValue$: 执行轨迹时,最大圆滑半径, 单位mm :type MCntValue$: M .. function:: Function V xyzExecPickInTraj(MCntValue) :noindex: 执行轨迹,最后一个点会降速 :param MCntValue$: 执行轨迹时,最大圆滑半径, 单位mm :type MCntValue$: M .. function:: Function V xyzExecPickOutTraj(MCntValue) :noindex: 执行轨迹,第一个点会降速 :param MCntValue$: 执行轨迹时,最大圆滑半径, 单位mm :type MCntValue$: M