指令说明

西门子 PLC 使用 TIA Portal 软件与 Mech-Mind 系统进行 Modbus TCP 通信的指令说明包含以下内容:

前言

Mech-Center 标准接口 Modbus TCP

Mech-Center 支持 Modbus TCP 通讯,作为 slave 从站设备,提供标准接口选项 Modbus TCP SLAVE,与 poll 主站设备进行数据通讯。

在 Mech-Center 软件部署设置内,Modbus TCP SLAVE 标准接口的设置如下图所示。从站 IP 设置为 0.0.0.0(即本地计算机的 IPv4 地址),从站端口号设置为 2000,从站设备地址设为 255,字节序选择 ABCD。

RobotIntegrations\StandardInterface\ModbusSiemensSimaticS7\InterfaceCommands\img/center_settings.png

关于 Mech-Center Modbus TCP 寄存器映射表,可参考 此处

Mech-Mind - Siemens TIA Modbus TCP 接口

接口文件:

  • MM Modbus TCP.scl(用于建立 Modbus TCP 通讯);

  • MM Modbus TCP Interface Program.scl(用于实现各种接口指令的功能)。

힌트

文件存放路径:Mech-Mind 视觉系统的工控机或主机中 Mech-Center 软件安装路径下 XXXX/Mech-Center-xxx/Robot_Interface/Modbus TCP/Siemens TIA Portal ,请将文件拷贝至安装有 TIA Portal 软件的计算机上。

指令说明

启动 Mech-Vision 工程

该指令用于只有 Mech-Vision 工程,没有 Mech-Viz 的场景。使用该指令触发 Mech-Vision 工程运行,执行相机拍照和视觉识别。

RobotIntegrations\StandardInterface\ModbusSiemensSimaticS7\InterfaceCommands\img/start_mech_vision_1.png

参数说明

输入参数:

  • Vision_Proj_Num:Mech-Vision 工程在 Mech-Center 中的注册序号,可以在 Mech-Center 软件 部署设置 ‣ Mech-Vision 处查询和调整,序号范围[1-99];

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

  • Robot_Pose_Type:机器人发送的拍照位姿类型,可设置范围[0-2] (0 表示不需要拍照位姿,比如该工程在 Eye to Hand 模式下拍照位姿类型可为 0;1 表示拍照位姿是关节角形式;2 表示拍照位姿是法兰位姿);

  • Robot_Pose:机器人发送的拍照位姿,数据类型为 Array[0..5] of Real;

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

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

MM Modbus TCP Interface 数据块返回数据:

  • Status Code:若无错误,则返回 1102(触发成功),否则返回对应的错误码。

示例

RobotIntegrations\StandardInterface\ModbusSiemensSimaticS7\InterfaceCommands\img/start_mech_vision_2.png

示例说明

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

获取视觉结果

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

RobotIntegrations\StandardInterface\ModbusSiemensSimaticS7\InterfaceCommands\img/get_mech_vision_data_1.png

参数说明

输入参数:

  • Vision_Proj_Num:Mech-Vision 工程在 Mech-Center 中的注册序号,可以在 Mech-Center 软件 部署设置 ‣ Mech-Vision 处查询和调整,序号范围[1-99];

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

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

MM Modbus TCP Interface 数据块返回数据:

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

  • Status of Pose Sent:1 表示写入的位姿数据为新数据,在 PLC 读取位姿数据之后,请启动一次 《MM_Empty_Target》 功能块,Mech-Center 会将该寄存器置为 0;

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

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

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

示例

RobotIntegrations\StandardInterface\ModbusSiemensSimaticS7\InterfaceCommands\img/get_mech_vision_data_2.png

示例说明

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

切换 Mech-Vision 配方

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

RobotIntegrations\StandardInterface\ModbusSiemensSimaticS7\InterfaceCommands\img/set_formula_1.png

参数说明

输入参数:

  • Vision_Proj_Num:Mech-Vision 工程在 Mech-Center 中的注册序号,可以在 Mech-Center 软件 部署设置 ‣ Mech-Vision 处查询和调整,序号范围[1-99];

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

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

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

MM Modbus TCP Interface 数据块返回数据:

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

示例

RobotIntegrations\StandardInterface\ModbusSiemensSimaticS7\InterfaceCommands\img/set_formula_2.png

示例说明

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

启动 Mech-Viz 工程

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

RobotIntegrations\StandardInterface\ModbusSiemensSimaticS7\InterfaceCommands\img/start_mech_viz_1.png

参数说明

输入参数:

  • Robot_Pose_Type: 机器人位姿类型,可选范围[0-1];

    • 位姿类型设置为 0 时,Mech-Viz 中仿真机器人会从关节角 [0,0,0,0,0,0] 位置开始,运动到第一个移动点;

    • 位姿类型设置为 1 时,Mech-Viz 中仿真机器人会从当前机器人关节角位置开始,运动到第一个移动点;

    • 当场景中存在碰撞模型时,干扰机器人从关节角 [0,0,0,0,0,0] 位置开始运动到第一个移动点时,则位姿类型必须设置为 1。

  • Robot_Pose:机器人的当前关节角数据,数据类型为 Array[0..5] of Real;

  • Start_Viz:触发 Mech-Viz 工程运行,上升沿有效;

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

MM Modbus TCP Interface 数据块返回数据:

  • Status Code:若无错误,则返回 2103(Mech-Viz 启动成功);否则返回对应的错误码。

示例

RobotIntegrations\StandardInterface\ModbusSiemensSimaticS7\InterfaceCommands\img/start_mech_viz_2.png

示例说明

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

停止 Mech-Viz 工程

停止运行 Mech-Viz 工程。如果 Mech-Viz 工程不是死循环,或可以正常停止,则不需要使用该指令。

RobotIntegrations\StandardInterface\ModbusSiemensSimaticS7\InterfaceCommands\img/stop_mech_viz_1.png

参数说明

输入参数:

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

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

MM Modbus TCP Interface 数据块返回数据:

  • Status Code:若无错误,则返回 2104(Mech-Viz 停止成功);否则返回对应的错误码。

示例

RobotIntegrations\StandardInterface\ModbusSiemensSimaticS7\InterfaceCommands\img/stop_mech_viz_2.png

示例说明

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

选择 Mech-Viz 分支

当 Mech-Viz 工程中有分支(按服务消息)模块时,该指令可控制 Mech-Viz 工程中的分支模块走指定的出口。在调用该指令之前,需要先调用 MM_Start_Viz。 Mech-Viz 运行到分支任务时会等待 203 指令发送该分支的分支出口。

RobotIntegrations\StandardInterface\ModbusSiemensSimaticS7\InterfaceCommands\img/set_branch_1.png
RobotIntegrations\StandardInterface\ModbusSiemensSimaticS7\InterfaceCommands\img/set_branch_2.png

参数说明

输入参数:

  • Branch_Name:分支名称,在运行之前需要在 Mech-Viz 工程中将对应的分支名称修改为纯数字格式,参数范围[1-99],且每个分支的名称不能重复;

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

    주의

    出口号为 Mech-Viz 显示的端口号加 1,即端口 0 为 1 号出口。

  • Set_Branch:设置某个消息分支执行某个出口,上升沿有效;

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

MM Modbus TCP Interface 数据块返回数据:

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

示例

RobotIntegrations\StandardInterface\ModbusSiemensSimaticS7\InterfaceCommands\img/set_branch_3.png

示例说明

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

设置移动索引

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

RobotIntegrations\StandardInterface\ModbusSiemensSimaticS7\InterfaceCommands\img/set_index_1.png
RobotIntegrations\StandardInterface\ModbusSiemensSimaticS7\InterfaceCommands\img/set_index_2.png

参数说明

输入参数:

  • Index_Name: 索引类任务名称,该任务名必须是正整数,范围[1-99],同一工程中的任务名称不能重复;

  • Index_Counter: 当前索引值;

    주의

    此处索引值为 Mech-Viz 显示的索引值加 1。

  • Set_Index:设置某索引的序号,上升沿有效;

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

MM Modbus TCP Interface 数据块返回数据:

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

示例

RobotIntegrations\StandardInterface\ModbusSiemensSimaticS7\InterfaceCommands\img/set_index_3.png

示例说明

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

获取规划路径

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

RobotIntegrations\StandardInterface\ModbusSiemensSimaticS7\InterfaceCommands\img/get_mech_viz_date_1.png

参数说明

输入参数:

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

    • 1:Mech-Viz 返回的位姿类型为机器人关节角;

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

    주의

    此处 Request_Pose_Type 和功能函数 MM_Start_Vis、MM_Start_Viz 中 Robot_Pose_Type 对应 MM Modbus TCP Interface 数据块同一 “Pose Type” 变量,若设定值不同,不可以同时生效。

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

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

MM Modbus TCP Interface 数据块返回数据:

  • Status Code:若无错误,则返回 2100(获取成功);否则返回对应的错误码;

  • Status of Pose Sent:1 表示写入的位姿数据为新数据。在 PLC 读取位姿数据之后,请启动一次 MM_Empty_Target 功能块,Mech-Center 将该寄存器置为 0;

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

  • Index of Vision Picking Point:视觉点位(即工程中的视觉移动)在路径中的位置;

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

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

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

示例

RobotIntegrations\StandardInterface\ModbusSiemensSimaticS7\InterfaceCommands\img/get_mech_viz_date_2.png

示例说明

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

获取 DO 信号列表

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

힌트

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

RobotIntegrations\StandardInterface\ModbusSiemensSimaticS7\InterfaceCommands\img/get_do_list_1.png

参数说明

输入参数:

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

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

MM Modbus TCP Interface 数据块返回数据:

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

  • DO_LIST:该指令返回 64 个 DO 端口值。

示例

RobotIntegrations\StandardInterface\ModbusSiemensSimaticS7\InterfaceCommands\img/get_do_list_2.png

示例说明

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

向 Mech-Vision 传入物体尺寸

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

RobotIntegrations\StandardInterface\ModbusSiemensSimaticS7\InterfaceCommands\img/read_object_dimensions_1.png
RobotIntegrations\StandardInterface\ModbusSiemensSimaticS7\InterfaceCommands\img/read_object_dimensions_2.png

参数说明

输入参数:

  • Vision_Proj_Num: Mech-Vision 工程在 Mech-Center 中的注册序号,可以在 Mech-Center 软件 部署设置 ‣ Mech-Vision 处查询和调整,序号范围[1-99];

  • External_Input_Box_Dimension:单位是毫米,比如箱子尺寸,长宽高;

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

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

MM Modbus TCP Interface 数据块返回数据:

  • Status Code:若无错误,则返回 1108(物体尺寸设置成功);否则返回对应的错误码。

示例

RobotIntegrations\StandardInterface\ModbusSiemensSimaticS7\InterfaceCommands\img/read_object_dimensions_3.png

示例说明

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

向 Mech-Viz 传入 TCP 数据

该指令用于动态传入位姿点数据,需要配合 Mech-Viz 中的外部移动任务使用,并且需要在调用 MM_Start_Viz 程序之前调用。

힌트

请参考 XXXX/Mech-Center-xxx/tool/viz_project/outer_move 中的 outer_move.viz 工程,并在运行之前把其中的 outer_move 放到合适的位置。

RobotIntegrations\StandardInterface\ModbusSiemensSimaticS7\InterfaceCommands\img/set_pose_1.png

参数说明

输入参数:

  • External_Input_Pose:机器人的 TCP 数据(单位 mm);

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

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

MM Modbus TCP Interface 数据块返回数据:

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

示例

RobotIntegrations\StandardInterface\ModbusSiemensSimaticS7\InterfaceCommands\img/set_pose_2.png

示例说明

在该示例中,当变量 《Camera_User》.Set_Input_Pose 出现上升沿时,将位姿变量 External_Input_Pose[0-5] 代表的位姿数据发送给 Mech-Viz 的外部移动任务。

获取软件状态

该指令用于获取 Mech-Vision、Mech-Viz、Mech-Center 的软件运行状态(目前该指令只支持检测 Mech-Vision 是否注册就绪)。

RobotIntegrations\StandardInterface\ModbusSiemensSimaticS7\InterfaceCommands\img/get_software_state_1.png

参数说明

输入参数:

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

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

MM Modbus TCP Interface 数据块返回数据:

  • Status Code:系统自检状态。

示例

RobotIntegrations\StandardInterface\ModbusSiemensSimaticS7\InterfaceCommands\img/get_software_state_2.png

示例说明

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

清空目标数据

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

RobotIntegrations\StandardInterface\ModbusSiemensSimaticS7\InterfaceCommands\img/clear_target_data_1.png

参数说明

输入参数:

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

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

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

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

MM Modbus TCP Interface 数据块返回数据:

  • Status Code:若无错误,则返回 3103(成功清空 Modbus TCP 数据);否则返回对应的错误码。

示例

RobotIntegrations\StandardInterface\ModbusSiemensSimaticS7\InterfaceCommands\img/clear_target_data_2.png

示例说明

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