通信配置及示例程序使用

西门子 PLC 使用 TIA Portal 软件与 Mech-Mind 系统进行 Modbus TCP 通信包含以下流程:

所需软硬件

硬件

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

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

  • Mech-Mind 工控机或主机。

  • 网线。

软件

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

  • Mech-Center 1.6.1 及以上,Mech-Vision 1.6.0 及以上,Mech-Viz 1.6.0 及以上。

  • PLC 例程文件:

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

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

    例程文件位于 Mech-Center 安装路径下的 XXXX/Mech-Center-xxx/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-Center 配置及启动通信

  1. 运行 Mech-Center,打开 部署设置 窗口。

    ../../../../_images/deployment_settings_15.png
  2. 单击左侧 Mech-Interface ,依次选择 启用 Mech-Interface ‣ 标准接口 ‣ Modbus TCP SLAVE ,从站 IP 设置为 0.0.0.0(即本地计算机的 IPv4 地址),从站端口号设置为 2000,从站设备地址设为 255,字节序选择 ABCD,最后单击 保存

    ../../../../_images/deployment_settings_25.png
  3. 在 Mech-Center 主窗口中,单击 启动接口服务 ,在服务状态栏中会出现 Modbus TCP SLAVE 服务图标。

    ../../../../_images/deployment_settings_34.png

创建和配置 PLC 工程

创建 PLC 工程

提示

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

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

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

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

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

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

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

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

    ../../../../_images/import_file_51.png

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

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

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

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

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

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

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

    ../../../../_images/download_configuration_61.png

检查通信是否成功

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

    ../../../../_images/establish_communication_13.png
  2. 在 Mech-Center 主窗口中,若连接成功,则在界面右侧日志栏显示 client connected

    ../../../../_images/establish_communication_23.png

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

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

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

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

视觉工程测试

本部分介绍如何使用例程功能块实现 Mech-Vision 工程的触发和获取数据,以及 Mech-Viz 工程的触发和获取数据。

准备工作

  1. 搭建 Mech-Vision 工程,并设置自动加载当前工程。Mech-Vision 工程的搭建,请参考 Mech-Vision 相关教程

    ../../../../_images/preparation_13.png
  2. 在 Mech-Center 的部署设置中,选择 Mech-Vision ,单击工程路径同步,对已设置自动加载的 Mech-Vision 工程进行编号,最后单击 保存

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

    ../../../../_images/preparation_33.png

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

    ../../../../_images/preparation_43.png

从 Mech-Vision 获取视觉点

参数设置

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

    ../../../../_images/test_vision_18.png
  2. 设置 Mech-Vision 工程编号,即 Mech-Center 部署设置中 Mech-Vision 工程的 ID。将 Vision_Proj_Num 的端口值设为 1 ,则运行 Mech-Center 部署设置中 ID 为 1 的 Mech-Vision 工程。

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

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

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

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

    ../../../../_images/test_vision_43.png
  7. 设置 Mech-Vision 工程编号,即 Mech-Center 部署设置中 Mech-Vision 工程的 ID。将 Vision_Proj_Num 的端口值设为 1 ,则获取 Mech-Vision 工程 ID 为 1 的视觉识别结果。

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

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

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

    ../../../../_images/test_vision_73.png

触发 Mech-Vision 工程运行

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

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

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

    ../../../../_images/test_vision_101.png

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

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

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

    ../../../../_images/test_vision_122.png

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

从 Mech-Viz 获取规划路径

参数设置

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

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

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

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

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

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

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

    ../../../../_images/test_viz_83.png

触发 Mech-Viz 工程运行

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

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

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

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

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

    ../../../../_images/test_viz_131.png

设置 Mech-Viz 的分支出口

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

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

    ../../../../_images/test_viz_151.png

获取 Mech-Viz 规划路径

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

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

    ../../../../_images/test_viz_171.png

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