通信配置及示例程序使用

西门子 PLC 使用 TIA Portal 软件与梅卡曼德软件系统进行 Modbus TCP 通信包含以下流程:

所需软硬件

硬件

  • Siemens SIMATIC S7-1200,CPU 1211C,DC/DC/DC。

  • 220V AC 转 24V DC 电源适配器。

  • Mech-Mind 工控机或主机。

  • 网线。

软件

  • 西门子 PLC 编程软件 TIA Portal V15.1。

  • 梅卡曼德系统软件版本为 1.7.0 及以上。

  • PLC 例程文件:

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

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

    例程文件位于梅卡曼德系统软件安装路径下的 Mech-Center/Robot_Interface/Modbus TCP/Siemens TIA Portal 文件夹下。请将该例程文件复制到已安装 TIA Portal 的计算机中。

注意

工控机或主机需关闭防火墙软件。

配置工控机及启动通信

设置工控机或主机 IPv4 地址

  1. 打开控制面板,单击 查看网络状态和任务

    ../../../../_images/set_ip12.png
  2. 在网络和共享中心窗口中,单击 更改适配器设置

    ../../../../_images/set_ip22.png
  3. 在网络连接窗口中,双击与 PLC 有网络连接的 以太网 适配器,弹出 以太网状态 窗口,单击 属性

    ../../../../_images/set_ip32.png
  4. 以太网属性 窗口的 网络 选项卡下,双击 Internet协议版本4(TCP/IPv4) 项目。

    ../../../../_images/set_ip42.png
  5. Internet协议版本4(TCP/IPv4) 属性 窗口中,按下图所示设置固定 IP 地址、子网掩码和默认网关(需与 PLC 在同一网段)。

    ../../../../_images/set_ip52.png

设置 Mech-Vision 中“机器人与通信配置”

  1. 单击 Mech-Vision 工具栏中 机器人与接口配置

  2. 单击 选择机器人 下拉框,选择 品牌机器人 ,然后单击 选择机器人型号 ,选择具体机器人型号,单击 下一步

  3. 通信方式 下,进行如下操作:

    • “接口类型”选择 标准接口

    • “协议” 选择 Modbus TCP SLAVE

    • 主机(从站)端口号设置为 2000;

    • 字节顺序选择 ABCD;

    • 从站设备地址设为 255;

    • 单击 应用

    ../../../../_images/deployment_settings_15.png
  4. 在 Mech-Vision 主界面,确认工具栏中的接口服务已开启。

    ../../../../_images/deployment_settings_25.png

创建和配置 PLC 工程

创建 PLC 工程

提示

请根据实际需求,单击 保存项目,保存对工程的更改。

  1. 打开 TIA Portal 软件,单击 创建新项目 ,输入项目名称,选择路径,单击 创建 。在弹出新页面后,单击 打开项目视图

    ../../../../_images/create_plc_15.png
  2. 项目树 侧边栏,双击 添加新设备 ,进入添加新设备界面。在 控制器 选项处,选择与实体 PLC 一致的模块,单击 确定

    ../../../../_images/create_plc_25.png
  3. 项目树 侧边栏,单击 设备组态 ,单击 设备视图 ,双击 PLC_1 处网口标识,在 属性/常规 页面单击 以太网网址 ,设置 IP 地址,子网掩码使用默认值。

    ../../../../_images/create_plc_35.png

导入 Mech-Mind 例程文件

注意

导入和测试 Mech-Mind 例程文件,请使用新建的 PLC 工程;如需添加到已存在的 PLC 工程中,建议先创建新工程,再进行导入和测试,最后复制到已存在的工程中。

  1. 在项目树下,依次双击 PLC_1[CPU 1211C DC/DC/DC] ‣ 外部源文件 ,双击 添加新的外部文件 ,在弹出窗口中,选择 MM Modbus TCP.sclMM Modbus TCP Interface Program.scl 文件后,单击 打开 ,将其导入至 PLC 工程。

    ../../../../_images/import_file_15.png
  2. 选中新导入的外部源文件(先选中 MM Modbus TCP.scl ,再选中 MM Modbus TCP Interface Program.scl ,否则在日志窗口将会出现报错信息),右键单击,选择 从源生成块

    ../../../../_images/import_file_25.png
  3. 弹出 块可能会覆盖 窗口,单击 确定

    ../../../../_images/import_file_35.png
  4. 外部源文件生成的功能函数、数据块如下图所示,其中 ,Camera_User DB 块存放用户数据,MM Modbus TCP Interface DB 块存放通信交互数据,MM Modbus TCP DB 块存放通信配置参数。

    ../../../../_images/import_file_44.png
  5. 双击打开 MM Modbus TCP[FC14] 功能块,依次单击 ToCamera 及 FromCamera No.1~6 程序段,确认所有 MB_DATA_PTR 变量的指针数据块编号与 MM Modbus TCP Interface 数据块编号一致,例如图中两处均为 2。

    ../../../../_images/import_file_53.png

    如果两处不一致,且 MM Modbus TCP Interface 数据块编号不易修改,可使用功能块右侧的 任务 选项卡中的查找和替换功能,将 MB_DATA_PTR 变量的指针数据块编号替换为 MM Modbus TCP Interface 数据块的实际编号。

    ../../../../_images/import_file_63.png
  6. 系统块/程序资源 下没有自动生成 MB_CLIENT 功能块、MB_CLIENT_DB 数据块,则需要根据当前 CPU 设备型号,重新引入 MB_CLIENT 功能块,请参考下一步骤;若已自动生成,请跳过下一步骤。

    ../../../../_images/import_file_73.png
  7. 在项目树下,单击 程序块 ,双击打开 Main[OB1] 组织块,选中程序段下梯形图,在右侧指令窗口中,依次选择 通信 ‣ 其他‣ MODBUS TCP ,双击 MB_CLIENT 功能块,弹出 调用选项 窗口,确定

    ../../../../_images/import_file_8.png

    此时, 系统块/程序资源 下自动生成 MB_CLIENT 功能块、MB_CLIENT_DB 数据块,返回已打开的 MM Modbus TCP 功能块,在工具栏中,单击 编译 图标。

    ../../../../_images/import_file_9.png

    当状态栏的 信息/编译 下提示 “MM Modbus TCP 块已成功编译”,即可删除 Main[OB1] 组织块/程序段1 下的 MB_CLIENT 功能块。

    ../../../../_images/import_file_10.png
    ../../../../_images/import_file_111.png
  8. 在项目树下,为方便维护 3D_Camera 相关的函数及数据块,右键单击 程序块 ,单击 新增组 ,命名为 3D_Camera

    ../../../../_images/import_file_121.png
  9. 将新生成的功能函数、数据块全部选中,移动至 3D_Camera 分组文件夹下。

    ../../../../_images/import_file_131.png

搭建并下载 PLC 程序

  1. 项目树 侧边栏,双击打开 Main[OB1] 组织块,选中 MM Modbus TCP[FC14] 功能,将其拖拽至程序段 1 下。

    ../../../../_images/download_configuration_14.png
  2. 双击打开 MM ModbusTCP[DB3] 数据块,单击 扩展模式 图标,确认 RemoteAddress/ADDR 十六进制数值依次对应工控机的 IP 地址(192.168.1.20),RemotePort 十进制数值对应端口号 (此处为 2000,需与 Mech-Vision 设定的值一致)。

    ../../../../_images/download_configuration_23.png
  3. 选择 系统块 ‣ /程序资源 ,双击打开 MB_CLIENT_DB[DBB] 数据块,单击 扩展模式 图标,确认 Static/TDIAG_Status/MB_Unit_ID 十六进制数值对应从站设备地址设(此处为 255,需与 Mech-Vision 设定的值一致)。

    ../../../../_images/download_configuration_33.png
  4. 项目树 侧边栏,右键单击选中 PLC_1[CPU 1211C DC/DC/DC] ,依次单击 下载到设备(L) ‣ 软件(全部下载)

    ../../../../_images/download_configuration_44.png
  5. 弹出 扩展下载设备 窗口, PG/PC 接口 选择连接 PLC 的网卡驱动, 接口/子网的连接 选择 插槽“1X1”处的方向选择目标设备 选择 显示所有兼容的设备 ,单击 开始搜索 ,选中搜索结果显示的 CPU 设备,单击 下载

    ../../../../_images/download_configuration_53.png
  6. 弹出 下载结果 窗口,下载完成后,单击 完成

    ../../../../_images/download_configuration_62.png

检查通信是否成功

  1. 项目树 侧边栏,双击数据块 MM Modbus TCP Interface ,单击 全部监视 图标。若连接成功,则 Heartbeat 心跳信号监视值在不断变化。

    ../../../../_images/establish_communication_15.png
  2. 在 Mech-Vision 主窗口中,若连接成功,则在日志窗口的 Console 标签页下会显示 client connected

    若无该日志,请检查以下是否正常:

    1. 硬件网络连接是否正常;

    2. Mech-Vision 的接口服务是否开启;

    3. PLC 程序是否成功下载到 PLC 硬件。

视觉工程测试

本部分介绍如何使用例程功能块触发 Mech-Vision 工程并获取视觉点,以及触发 Mech-Viz 工程并获取规划路径。

准备工作

  1. 搭建 Mech-Vision 方案,并设置 自动加载当前方案 ,此时方案下的工程也会设置为自动加载,同时工程名称前会出现具体工程编号。

    ../../../../_images/preparation_14.png
  2. 搭建 Mech-Viz 工程,并设置 自动加载 。Mech-Viz 工程的搭建,请参考 Mech-Viz 相关教程

    ../../../../_images/preparation_34.png

    测试所使用的 Mech-Viz 工程中需使用一个步骤名称为 1 的分支步骤,如下图所示。

    ../../../../_images/preparation_45.png

从 Mech-Vision 获取视觉点

设置参数

  1. 返回 TIA Portal 软件主窗口,在 项目树/程序块 下,双击 Main[OB1] 打开主程序,将 MM_Start_Vis[FC9] 功能函数拖拽至 主程序/程序段2 下。

    ../../../../_images/test_vision_19.png
  2. 设置 Mech-Vision 工程编号,即 Mech-Vision 工程列表中工程名称前的数字编号。将 Vision_Proj_Num 的端口值设为 1 ,则运行工程编号为 1 的 Mech-Vision 工程。

  3. 设置 Mech-Vision 工程返回的位姿数量:将 Req_Pose_Num 的端口值设为 0 ,表示 Mech-Vision 返回全部位姿结果。

  4. 设置机器人发送的拍照位姿类型。将 Robot_Pose_Type 的端口值设为 0 ,表示工程是 Eye to Hand 模式,不需要发送拍照位姿。

    ../../../../_images/test_vision_25.png
  5. 项目树/程序块 下,单击 Camera_User 数据块,将详细视图下的变量根据名称对应拖拽至 “MM_Start_Vis” 输入侧接口(即左侧)。

    ../../../../_images/test_vision_35.png
  6. 将 MM_Get_VisData 功能函数拖拽至 主程序/程序段3 下。

    ../../../../_images/test_vision_45.png
  7. 设置 Mech-Vision 工程编号,即 Mech-Vision 工程列表中工程名称前的数字编号。将 Vision_Proj_Num 的端口值设为 1 ,则获取 Mech-Vision 工程编号为 1 的视觉识别结果。

  8. 项目树/程序块 下,单击 Camera_User 数据块,将详细视图下的变量根据名称对应拖拽至 “MM_Get_VisData” 输入侧接口(即左侧)。

    ../../../../_images/test_vision_55.png
  9. 项目树 侧边栏,右键选中设备 PLC_1,单击 下载到设备/软件(仅更改)

    ../../../../_images/test_vision_65.png
  10. 弹出 下载预览 窗口,单击 装载 ,将最新程序下载到 PLC。

    ../../../../_images/test_vision_75.png

触发 Mech-Vision 工程运行

  1. Main[OB1] 主程序窗口,单击 启用/禁用监视 图标。

    ../../../../_images/test_vision_84.png
  2. 右键单击 “MM_Start_Vis” 输入侧的变量 “Camera_User”.Start_Vis,依次选择 修改 ‣ 修改为1 ,触发 Mech-Vision 工程运行,然后将此变量复位。

    ../../../../_images/test_vision_93.png
  3. 检查 MM Modbus TCP Interface 数据块中 Status Code 变量的返回值变为 1102,则表示工程启动正常。若返回值为 10XX,请参考 《Mech-Mind-标准接口错误码及故障排查手册》 进行错误排查。

    ../../../../_images/test_vision_103.png

获取 Mech-Vision 计算的位姿结果

  1. 右键单击 “MM_Get_VisData” 输入侧的变量 “Camera_User”.Get_VisData,依次选择 修改 ‣ 修改为1 ,获取视觉位置,然后将此变量复位。

    ../../../../_images/test_vision_114.png
  2. 检查 MM Modbus TCP Interface 数据块中 Status Code 变量的返回值变为 1100,则表示成功获取视觉点。若返回值为 10XX,请参考 《Mech-Mind-标准接口错误码及故障排查手册》 进行错误排查。

    ../../../../_images/test_vision_123.png

    Number of Pose Sent 值为1,表示获取到 1 个位姿点。位姿保存在 Target Pose 中。

从 Mech-Viz 获取规划路径

设置参数

  1. MM_Empty_Target 功能函数拖拽至 主程序/程序段4 下。

    ../../../../_images/test_viz_115.png
  2. 分别单击数据块 Camera_UserMM Modbus TCP Interface ,将详细视图下的变量根据名称对应拖拽至 “MM_Empty_Target” 输入侧接口(即左侧)。

    ../../../../_images/test_viz_25.png
  3. 分别将 MM_Start_VizMM_Set_BranchMM_Get_VizData 功能函数分别拖拽至 主程序/程序段5、6、7 下。

    ../../../../_images/test_viz_35.png
  4. 设置机器人发送的拍照位姿类型。将 Robot_Pose_Type 的端口值设为 0,表示工程是 Eye to Hand 模式,不需要发送拍照位姿。单击数据块 Camera_User ,将详细视图下的变量根据名称对应拖拽至 “MM_Start_Viz” 输入侧接口(即左侧)。

    ../../../../_images/test_viz_45.png
  5. 设置 Mech-Viz 工程中分支参数。将 Branch_Name、Branch_Exit_Port 的端口值分别设为 1,表示控制 Mech-Viz 工程执行到分支 1 时沿出口 1 继续执行。单击数据块 Camera_User ,将详细视图下的变量根据名称对应拖拽至 “MM_Set_Branch” 输入侧接口(即左侧)。

    ../../../../_images/test_viz_55.png
  6. 设置要获取的路径上点的位姿类型。将 Request_Pose_Type 的端口值设为 1,表示设置 Mech-Viz 返回的是关节角数据。单击数据块 Camera_User,将详细视图下的变量根据名称对应拖拽至 “MM_Get_VizData” 输入侧接口(即左侧)。

    注意

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

    ../../../../_images/test_viz_65.png
  7. 项目树 侧边栏,右键选中设备 PLC_1,单击 下载到设备/软件(仅更改) 。弹出 下载预览 窗口,将最新程序下载到 PLC。

    ../../../../_images/test_viz_75.png
  8. 弹出 下载预览 窗口,单击 装载 ,将最新程序下载到 PLC。

    ../../../../_images/test_viz_85.png

触发 Mech-Viz 工程运行

  1. Main[OB1] 主程序窗口,单击 启用/禁用监视 图标。

    ../../../../_images/test_viz_95.png
  2. 右键单击 “MM_Empty_Target” 输入侧的变量 “Camera_User”.Start_Empty,依次选择 修改 ‣ 修改为1 ,清除上一次获取的视觉结果,然后将此变量复位。

    ../../../../_images/test_viz_104.png
  3. 在 MM Modbus TCP Interface 数据块中,Target Pose,Target Label,Speed Percentage 变量值被清空。

    ../../../../_images/test_viz_116.png
  4. 右键单击 “MM_Start_Viz” 输入侧的变量 “Camera_User”.Start_Viz,依次选择 修改 ‣ 修改为1 ,启动 Mech-Viz 工程,然后将此变量复位。

    ../../../../_images/test_viz_123.png
  5. 检查 MM Modbus TCP Interface 数据块中 Status Code 变量的返回值变为 2103,则表示工程启动正常。若返回值为 20XX,请参考 《Mech-Mind-标准接口错误码及故障排查手册》 进行错误排查。

    ../../../../_images/test_viz_133.png

设置 Mech-Viz 的分支出口

  1. 右键单击 “MM_Set_Branch” 输入侧的变量 “Camera_User”.Set_Branch,依次选择 修改 ‣ 修改为1 ,选择 Mech-Viz 分支出口,然后将此变量复位。

    ../../../../_images/test_viz_143.png
  2. 检查 MM Modbus TCP Interface 数据块中 Status Code 变量的返回值变为 2105,则表示分支设置成功。若返回值为 20XX,请参考 《Mech-Mind-标准接口错误码及故障排查手册》 进行错误排查。

    ../../../../_images/test_viz_152.png

获取 Mech-Viz 规划路径

  1. 右键单击 “MM_Get_VizData” 输入侧的变量 “Camera_User”.Get_VizData,依次选择 修改 ‣ 修改为1 ,获取 Mech-Viz 的规划路径,然后将此变量复位。

    ../../../../_images/test_viz_162.png
  2. 检查 MM Modbus TCP Interface 数据块中 Status Code 变量的返回值变为 2100,则表示获取规划路径成功。若返回值为 20XX,请参考 《Mech-Mind-标准接口错误码及故障排查手册》 进行错误排查。

    ../../../../_images/test_viz_172.png

    在上图中,Number of Pose Sent 值为 6,表示获取到 6 组关节角数据,数据保存在 Target Pose 中。Index of Vision Move 值为 3,表示视觉点位(即工程中的视觉移动)在路径中的位置编号为 3。