指令说明

本文介绍西门子 S7 系列 PLC 通过 TIA Portal 软件与梅卡曼德系统软件进行 Siemens PLC Snap 7 通信的指令。

指令说明

启动 Mech-Vision 工程

该指令用于只用到 Mech-Vision 工程,而无需用到 Mech-Viz 工程的场景。使用该指令可以启动 Mech-Vision 工程,执行相机拍照和视觉处理。

../../../../_images/start_mech_vision_15.png

参数说明

输入参数:

  • Vision_Proj_Num:Mech-Vision 工程编号,可在 Mech-Vision 工程列表窗口中查看,工程名称前的数字表示工程编号;

  • Req_Pose_Num: 希望 Mech-Vision 输出的视觉结果数量,可设置范围[1-20],0 表示获取所有结果;

  • Robot_Pose_Type:机器人位姿类型,指定真实机器人的位姿将以何种形式传 Mech-Vision,其取值范围为 0~3;

  • Robot_Pose:机器人位姿,其值取决于 Robot_Pose_Type 参数值,数据类型为二维数组 Array[0..1, 0..5] of Real,其中 Array[0] 为机器人当前关节角,Array[1] 为机器人当前法兰位姿;

    下表为 Robot_Pose_Type 与 Robot_Pose 参数取值的关系及说明。

    Robot_Pose_Type 参数值

    Robot_Pose 参数值

    说明

    适用场景

    0

    0, 0, 0, 0, 0, 0

    无需向 Mech-Vision 传入机器人位姿

    工程为 Eye To Hand 模式。若 Mech-Vision 工程中使用“路径规划”步骤,则路径规划的起始点为路径规划工具中设置的 Home 点。

    1

    机器人当前关节角+当前法兰位姿

    需要将机器人的关节角和法兰位姿传入 Mech-Vision

    工程为 Eye In Hand 模式,除桁架机器人外的大多数机器人适用该设定。

    2

    机器人的当前法兰位姿

    需要将机器人的当前法兰位姿传入 Mech-Vision

    工程为 Eye In Hand 模式,机器人无关节角数据,仅有法兰位姿数据(如桁架机器人)。

    3

    机器人路径规划起始点的关节角

    需要将机器人路径规划起始点的关节角传入 Mech-Vision

    工程为 Eye To Hand 模式,并且 Mech-Vision 工程中存在“路径规划”步骤,且需要从机器人端设置“路径规划”步骤的起始点。

  • Start_Vision:触发 Mech-Vision 工程的运行,上升沿有效;

  • Set_Edge:保存 触发动作 上一扫描周期的状态。

Mech-Mind Interface 数据块返回数据:

  • Status code:若无错误,则返回 1102 触发成功 状态码,否则返回对应的错误码。

示例

../../../../_images/start_mech_vision_25.png

示例说明

在该示例中,当变量 “Camera_User”.Start_Vis 出现上升沿时,会触发 Mech-Vision 工程 1 的运行,并希望 Mech-Vision 工程 1 返回视觉结果,同时 PLC 将启动 Mech-Vision 工程时的 JPS 数据发送给 Mech-Center 。

获取视觉目标点

该指令用于只用到 Mech-Vision 工程,无需用到 Mech-Viz 工程的场景。该指令用于启动 Mech-Vision 工程之后,获取视觉识别结果。

../../../../_images/get_mech_vision_data_15.png

参数说明

输入参数:

  • Vision_Proj_Num:Mech-Vision 工程编号,可在 Mech-Vision 工程列表窗口中查看,工程名称前的数字表示工程编号;

  • Get_VisData:获取 Mech-Vision 工程的视觉识别结果,上升沿有效;

  • Set_Edge:保存 触发动作 上一扫描周期的状态。

Mech-Mind Interface 数据块返回数据:

  • Status code:若无错误,则返回 1100 成功获取视觉点 状态码;否则返回对应的错误码;

  • Status of Pose Sent:1 表示写入的位姿数据为新数据。 PLC 读取位姿数据之后请将此寄存器复位;

  • Number of Pose Sent:视觉返回的识别结果个数。范围[1-20];

  • Target Pose:Mech-Vision 返回的机器人位置数据,类型为 TCP;

  • Target Label:标签是 Mech-Vision 识别的该物体标签信息。返回标签值为整数。

示例

../../../../_images/get_mech_vision_data_25.png

示例说明

在该示例中,当变量 “Camera_User”.Get_VisData 出现上升沿时,用于获取 Mech-Vision 工程 1 的视觉结果。

切换 Mech-Vision 配方

Mech-Vision 软件的配方功能,用于不同工件识别时,修改 Mech-Vision 工程各步骤的参数,包括图像匹配模板、ROI、置信阈值等。该指令需要在 MM_Start_Vis 程序之前使用。

../../../../_images/set_formula_15.png

参数说明

输入参数:

  • Vision_Proj_Num:Mech-Vision 工程编号,可在 Mech-Vision 工程列表窗口中查看,工程名称前的数字表示工程编号;

  • Vision_Recipe_Num:Mech-Vision 工程中配方的编号。编号范围[1-99];

  • Switch_Recipe:切换 Mech-Vision 工程的配方,上升沿有效;

  • Set_Edge:保存 触发动作 上一扫描周期的状态。

Mech-Mind Interface 数据块返回数据:

  • Status code:若无错误,则返回 1107 配方切换成功 ;否则返回对应的错误码。

示例

../../../../_images/set_formula_25.png

示例说明

在该示例中,当变量 “Camera_User”.Switch_Recipe 出现上升沿时,会将 Mech-Vision 工程 1 的配方切换成配方 2 。

获取 Mech-Vision “路径规划”步骤的结果

在调用 MM_Start_Vis 之后,使用该指令获取 Mech-Vision 中“路径规划”步骤输出的免碰撞抓取路径。

在使用该指令时,Mech-Vision “输出”步骤的 端口类型 参数需要设置为“预定义(机器人路径)”。

提示

在调用该指令前,请务必将 MM_Start_Vis 的 Req_Pose_Num 设置为 0,以减少调用该指令的次数。若 MM_Start_Vis 的 Req_Pose_Num 设置为 1,则每次调用该指令只会返回一个路径点,只有多次调用该指令才能接收全部路径点。

../../../../_images/get_planned_visdate_16.png

参数说明

输入参数:

  • Vision_Proj_Num:Mech-Vision 工程编号,可在 Mech-Vision 工程列表窗口中查看,工程名称前的数字表示工程编号;

  • Request_Pose_Type: 该参数用于指定“路径规划”步骤返回的路径点类型;

    • 1:路径点将以机器人关节角(JPs)的形式返回。

    • 2:路径点将以机器人工具位姿(TCP)的形式返回。

    注意

    此处 Request_Pose_Type 和功能函数 MM_Start_Vis、MM_Start_Viz 中 Robot_Pose_Type 对应 Mech-Mind Interface 数据块同一 “Pose Type” 变量,若需设定的值不同,则无法同时生效。

  • Get_VisData:获取 Mech-Vision “路径规划”步骤的结果,上升沿有效;

  • Set_Edge:保存触发动作上一扫描周期的状态。

Mech-Mind Interface 数据块返回数据:

  • Status code:若指令执行正常,则返回 1103 状态码;否则返回对应的错误码;

  • Status of Pose Sent:1 表示写入的位姿数据为新数据;PLC 读取位姿数据之后请将此寄存器复位;

  • Number of Pose Sent:Mech-Vision 规划路径上路径点的个数,范围[1-20];

  • Index of Vision Move:视觉移动路径点在路径中的位置;

  • Target Pose:数据格式为关节角或者 XYZ 欧拉角,取决于输入参数 Request_Pose_Type;

  • Target Label:Mech-Vision 识别的该物体标签信息,返回的标签值为整数;

  • Speed Percentage:路径规划工具中该移动步骤设置的非零速度参数。

示例

../../../../_images/get_planned_visdate_26.png

示例说明

在该示例中,当变量 “Camera_User”.Get_VisData 出现上升沿时,用于接收 Mech-Vision 工程 1 返回的机器人移动路径,移动路径点数据类型为 JPs 类型。

获取 Mech-Vision 用户自定义数据

该指令用于只用到 Mech-Vision 工程,无需用到 Mech-Viz 工程的场景。该指令用于启动 Mech-Vision 工程之后,获取用户自定义视觉识别结果。

../../../../_images/get_custom_visdate_1.png

参数说明

输入参数:

  • Vision_Proj_Num:Mech-Vision 工程编号,可在 Mech-Vision 工程列表窗口中查看,工程名称前的数字表示工程编号;

  • Get_VisData:获取 Mech-Vision 工程的视觉识别结果,上升沿有效;

  • Set_Edge:保存触发动作上一扫描周期的状态。

Mech-Mind Interface 数据块返回数据:

  • Status code:若无错误,则返回“1100 成功获取视觉点状态码”;否则返回对应的错误码;

  • Status of Pose Sent:1 表示写入的位姿数据为新数据,PLC 读取位姿数据之后请将此寄存器复位;

  • Number of Pose Sent:视觉返回的识别结果个数,范围[1-20];

  • Target Pose:Mech-Vision 返回的机器人位姿数据,类型为 TCP;

  • Target Label:Mech-Vision 识别的该物体标签信息,返回的标签值为整数;

  • Custom Data Output:自定义输出数据,Mech-Vision 工程的输出步骤,除了poses 和 labels 之外其他端口的输出数据。

示例

../../../../_images/get_custom_visdate_2.png

示例说明

在该示例中,当变量 “Camera_User”.Get_VisData 出现上升沿时,用于获取 Mech-Vision 工程 1 的用户自定义视觉结果。

启动 Mech-Viz 工程

该指令用于既用到 Mech-Vision 工程又用到 Mech-Viz 工程的场景,用于启动 Mech-Viz 工程,调用相应的 Mech-Vision 工程,并规划抓取路径。

../../../../_images/start_mech_viz_15.png

参数说明

输入参数:

  • Robot_Pose_Type: 机器人位姿类型,指定真实机器人的位姿将以何种形式传 Mech-Viz,其取值范围为 0~2;

  • Robot_Pose:机器人位姿,其值取决于 Robot_Pose_Type 参数值,数据类型为二维数组 Array[0..1, 0..5] of Real,其中 Array[0] 为机器人当前关节角,Array[1] 为机器人当前法兰位姿;

    下表为 Robot_Pose_Type 与 Robot_Pose 参数取值的关系及说明。

    Robot_Pose_Type 参数值

    Robot_Pose 参数值

    说明

    适用场景

    0

    0, 0, 0, 0, 0, 0

    无需向 Mech-Viz 传入机器人位姿,Mech-Viz 中仿真机器人将从初始位姿 JPs = [0, 0, 0, 0, 0, 0] 开始移动到第一个路径点。

    工程为 Eye To Hand 模式。不推荐使用该设定。

    1

    机器人当前关节角+当前法兰位姿

    需要将机器人的当前关节角和法兰位姿传入 Mech-Viz,Mech-Viz 中仿真机器人将从传入的关节角开始移动到第一个路径点。

    工程为 Eye In Hand 模式时,推荐使用该设定。

    2

    机器人端自定义的关节角

    需要将机器人的一个示教点(非当前关节角)传入 Mech-Viz,用于在机器人处于拍照区域外时,提前触发 Mech-Viz 工程规划下一轮路径(如下图),Mech-Viz 中仿真机器人将从传入的示教点开始运动到第一个路径点。

    工程为 Eye To Hand 模式时,推荐使用该设定。

    Eye To Hand 模式下应将 Robot_Pose_Type 设为 2 的原因:

    Eye To Hand 模式下,相机可在机器人回到拍照及抓取区域之前拍照,用于提前规划下一轮抓取路径,从而缩短节拍。

    若此时将 Robot_Pose_Type 设为 1,即将机器人当前位姿发送给 Mech-Viz 仿真机器人,可能导致仿真机器人与真实机器人轨迹不一致,发生未预知的碰撞,造成危险。

    即仿真机器人将直接从当前位姿移动至 Mech-Viz 中第一个移动步骤中设置的位姿,而真实机器人可能在移动至其他位姿后才移动至上述位姿。

    所以应将 Robot_Pose_Type 参数设为 2。

    ../../../../_images/robot_example11.png
  • Start_Viz:触发 Mech-Viz 工程的运行,上升沿有效;

  • Set_Edge:保存 触发动作 上一扫描周期的状态。

Mech-Mind Interface 数据块返回数据:

  • Status code:若无错误,则返回 2103 viz 启动成功;否则返回对应的错误码。

示例

../../../../_images/start_mech_viz_25.png

示例说明

在该示例中,当变量 “Camera_User”.Start_Viz 出现上升沿时,触发 Mech-Viz 工程运行,并将当前机器人的 JPS 发送给 Mech-Center 。

停止 Mech-Viz 工程

停止运行 Mech-Viz 工程。

../../../../_images/stop_mech_viz_15.png

参数说明

输入参数:

  • Stop_Viz:停止 Mech-Viz 工程的运行,上升沿有效;

  • Set_Edge:保存 触发动作 上一扫描周期的状态。

Mech-Mind Interface 数据块返回数据:

  • Status code:若无错误,则返回 2104 viz 停止成功 ;否则返回对应的错误码。

示例

../../../../_images/stop_mech_viz_25.png

示例说明

在该示例中,当变量 “Camera_User”.Stop_Viz 出现上升沿时,停止运行 Mech-Viz 工程。

选择 Mech-Viz 分支

当 Mech-Viz 工程中有“消息分支”步骤时,该指令可控制 Mech-Viz 工程中的“消息分支”步骤走指定的出口。在调用该指令之前,需要先调用 MM_Start_Viz 。 Mech-Viz 运行到“消息分支”步骤时会等待 203 指令发送该分支的分支出口。

../../../../_images/set_branch_15.png
../../../../_images/set_branch_25.png

参数说明

输入参数:

  • Branch_Name:“消息分支”步骤编号,该参数为正整数,即 消息分支 的步骤编号。

  • Branch_Exit_Port:给定“消息分支”步骤的出口号,Mech-Viz 程序将沿该出口继续执行,参数范围[1-99] 。

  • Set_Branch:设置某分支的某分支出口;

  • Set_Edge:保存 触发动作 上一扫描周期的状态。

Mech-Mind Interface 数据块返回数据:

  • Status code:若无错误,则返回 2105 分支设置成功 ;否则返回对应的错误码。

示例

../../../../_images/set_branch_35.png

示例说明

在该示例中,当变量 “Camera_User”.Set_Branch 出现上升沿时,会指定 Mech-Viz 工程执行到“消息分支”步骤名称为 1 的步骤时,走第 1 出口。

设置移动索引

索引类的移动步骤,比如按序列移动、按阵列移动、自定义垛型、预设垛型等,可调用该指令设置索引类移动步骤属性中的索引序号。在调用该指令之前,需要先执行 MM_Start_Viz 。

../../../../_images/set_index_15.png
../../../../_images/set_index_25.png

参数说明

输入参数:

  • Index_Name: 移动索引步骤编号,该参数为正整数。

  • Index_Counte:

    下次执行此步骤时应设置的索引值。

    发送该指令时,Mech-Viz 中的当前索引值将变为该参数值减 1。

    当 Mech-Viz 项目运行到该指令指定的步骤时,Mech-Viz 中的当前索引值将增加 1,成为该参数的值。

  • Set_Index:触发信号,用于设置索引。

  • Set_Edge:保存 触发动作 上一扫描周期的状态。

Mech-Mind Interface 数据块返回数据:

  • Status code:若无错误,则返回 2106 索引设置成功 ;否则返回对应的错误码。

示例

../../../../_images/set_index_35.png

示例说明

在该示例中,当变量 “Camera_User”.Set_Index 出现上升沿时,设置 Mech-Viz 工程中的步骤名称 “5” 的当前索引值为 “3” 。

获取规划路径

用于获取 Mech-Viz 工程规划的抓取路径。

../../../../_images/get_mech_viz_date_15.png

参数说明

输入参数:

  • Request_Pose_Type: 要获取的路径上点的位姿类型;

    • Mech-Viz 返回的位姿类型为机器人 JPS ;

    • Mech-Viz 返回的位姿类型为机器人TCP。

  • Get_VizData:获取 Mech-Viz 工程规划的抓取路径,上升沿有效;

  • Set_Edge:保存 触发动作 上一扫描周期的状态。

Mech-Mind Interface 数据块返回数据:

  • Status code:若无错误,则返回 2100 获取成功 状态码;否则返回对应的错误码;

  • Status of Pose Sent:1 表示写入的位姿数据为新数据。 PLC 读取位姿数据之后请将此寄存器复位;

  • Number of Pose Sent:Mech-Viz 规划路径上目标点的个数。范围[1-20];

  • Index of Vision Move:视觉点位(即工程中的 visual move-视觉移动)在路径中的位置;

  • Target Pose:数据格式 JPS 或者 XYZ 欧拉角,取决于 205 发送指令中设置的位姿类型;

  • Target Label:Mech-Vision 识别的该物体标签信息。返回标签值为整数;

  • Speed Percentage:Mech-Viz 中该移动步骤设置的非零速度参数。

示例

../../../../_images/get_mech_viz_date_25.png

示例说明

在该示例中,当变量 “Camera_User”.Get_VizData 出现上升沿时,用于接收 Mech-Viz 返回的机器人移动路径,移动点数据类型为 TCP。

获取 DO 信号列表

当需要使用 Mech-Viz 中的吸盘分区/多抓功能时,可通过该指令来获取规划的分区 DO 信号列表。调用该指令之前需要先运行 MM_Get_VizData 。

提示

请参考 XXXX/Mech-Center-xxx/tool/viz_project 中的 Mech-Viz 模板工程使用,并在运行之前在工程中设置对应的吸盘配置文件。

../../../../_images/get_do_list_15.png

参数说明

输入参数:

  • Get_DoList:获取 Mech-Viz 工程规划的分区 DO 信号列表,上升沿有效;

  • Set_Edge:保存 触发动作 上一扫描周期的状态。

Mech-Mind Interface 数据块返回数据:

  • Status code:若无错误,则返回 2102 获取 DO 列表正常 ;否则返回对应的错误码。

  • DO :该指令返回 64 个 DO 端口值,其中有效 DO 值为[0-999],-1 为无效的占位值。

示例

../../../../_images/get_do_list_25.png

示例说明

在该示例中,当变量 “Camera_User”.Get_DoList 出现上升沿时,会将 Mech-Viz 计算得到的 DO 列表保存到 DO 数组内。

向 Mech-Vision 传入物体尺寸

向 Mech-Vision 工程中动态传入物体尺寸。需要在执行 MM_Start_Vis 之前调用。

../../../../_images/read_object_dimensions_16.png
../../../../_images/read_object_dimensions_25.png

参数说明

输入参数:

  • Vision_Proj_Num:Mech-Vision 工程编号,可在 Mech-Vision 工程列表窗口中查看,工程名称前的数字表示工程编号;

  • External_Input_Box_Dimension:比如箱子尺寸为长宽高,单位为毫米,数据类型为 Array[0..2] of Real ;

  • Set_Box_Dimension:动态传入 Mech-Vision 工程中的物体尺寸,上升沿有效;

  • Set_Edge:保存 触发动作 上一扫描周期的状态。

Mech-Mind Interface 数据块返回数据:

  • Status code:若无错误,则返回 1108 箱子尺寸设置成功 ;否则返回对应的错误码。

示例

../../../../_images/read_object_dimensions_35.png

示例说明

在该示例中,当变量 “Camera_User”.Set_Box_Dimension 出现上升沿时,将设置 Mech-Vision 工程中读取物体尺寸步骤中的的物体尺寸为 External_Input_Box_Dimension 变量值。

向 Mech-Viz 传入 TCP

动态传入位姿点数据。配合 Mech-Viz 中的外部移动步骤使用。

提示

该功能需要配合 XXXX/Mech-Center-xxx/tool/viz_project/outer_move 中的工程使用,并在运行之前把其中的 outer_move 放到合适的位置,并且该指令需要在调用 MM_Start_Viz 程序之前调用。

../../../../_images/set_pose_15.png

参数说明

输入参数:

  • External_Input_Pose:位姿变量,保存需要发送给 Mech-Viz 的 TCP 数据,数据类型为 Array[0..5] of Real ;

  • Set_Input_Pose:动态传入位姿数据,上升沿有效;

  • Set_Edge:保存 触发动作 上一扫描周期的状态。

Mech-Mind Interface 数据块返回数据:

  • Status code:若无错误,则返回 2107 外部传入位姿设置成功 ;否则返回对应的错误码。

示例

../../../../_images/set_pose_25.png

示例说明

在该示例中,当变量 “Camera_User”.Set_Input_Pose 出现上升沿时,将位姿变量 External_Input_Pose 代表的位姿数据发送给 Mech-Viz 的外部移动步骤。

获取软件状态

用于获取 Mech-Vision、Mech-Viz、Mech-Center 的软件运行状态(目前该指令仅支持检测 Mech-Vision 软件是否可以开始运行工程)。

../../../../_images/get_software_state_15.png

参数说明

输入参数:

  • Get_Status:检测 Mech-Vision 是否注册就绪,上升沿有效;

  • Set_Edge:保存 触发动作 上一扫描周期的状态。

Mech-Mind Interface 数据块返回数据:

  • Status code:系统自检状态。

示例

../../../../_images/get_software_state_25.png

示例说明

在该示例中,当变量 “Camera_User”.Get_Status 出现上升沿时,将检查系统状态的状态码,并保存到变量 Status code 中。

清空目标数据

用于清空已经获取的 Target Pose、Target Label、Speed Percentage 变量的数据。

../../../../_images/clear_target_data_13.png

参数说明

输入参数:

  • Start_Empty:触发清空已经获取的 Target Pose、Target Label、Speed Percentage 的数据,置位有效;

  • Target_Pose:已获取的目标位姿数据;

  • Target_Label:已获取的目标标签;

  • Speed_Percentage:已获取的非零速度参数;

示例

../../../../_images/clear_target_data_23.png

示例说明

在该示例中,当变量 “Camera_User”.Start_Empty 置位时,将清空已经获取的 Target Pose、Target Label、Speed Percentage 变量的数据。