通信配置及示例程序使用

西门子 S7 系列 PLC 通过 TIA Portal 软件与梅卡曼德系统软件进行 Siemens PLC Snap 7 通信包含以下流程:

所需软硬件

硬件

  • 支持西门子以下 S7 系列 PLC:

    • S7-300:集成 PN 网口或 CP343-1

    • S7-400:集成 PN 网口或 CP443-1

    • S7-1200:无

    • S7-1500:无

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

  • Mech-Mind 视觉系统工控机或主机

  • 网线

软件

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

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

  • Siemens Tia Portal 软件与梅卡曼德系统软件进行 Siemens PLC Snap 7 通信的接口文件:

    • MM Interface.db(用于实现数据通信);

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

    提示

    文件存放路径位于 Mech-Mind 工控机或主机中梅卡曼德系统软件安装路径下 Mech-Center/Robot_Interface/Siemens Snap7/TIA Portal ,请将文件复制至安装有博图软件的电脑上。

创建和配置 PLC 工程

创建 PLC 工程

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

    ../../../../_images/build_plc_14.png
  2. 项目树 一栏,双击 添加新设备 ,进入添加新设备界面,在控制器选项处选择与实物 PLC 一致的模块,设备名称默认即可,然后单击 确定 按钮。

    ../../../../_images/build_plc_24.png
  3. 在设备组态页面,单击 设备视图 ,然后双击 PLC_1 处的网口标识,在 属性/常规 页面单击 以太网网址 ,设置 IP 地址为 192.168.1.22 ,子网掩码默认即可(需与视觉工控机在同一网段)。

    ../../../../_images/build_plc_34.png
  4. 选中项目树中 PLC_1 设备,右键选择 属性 ,在弹出窗口中依次进入 常规 ‣ 防护与安全 界面,在 访问级别 一栏中勾选 完全访问权限(无任何保护) 。然后在 连接机制 界面中勾选 允许来自远程的 GET/PUT 通信访问 ,单击 确定 按钮,保存工程项目。

    ../../../../_images/build_plc_44.png
    ../../../../_images/build_plc_52.png

导入 S7 通信接口文件

  1. 在项目树下单击 外部源文件 ,然后双击 添加新的外部文件 ,在弹出的窗口中选中 MM Interface.dbMM Interface Program.scl 文件,然后单击 打开 按钮导入至新建工程。

    ../../../../_images/import_s7_files_1.png
  2. 选中新导入的外部源文件(先选中 MM Interface.db ,再选中 MM Interface Program.scl ),单击右键,选择 从源生成块 ,在弹出的窗口中单击 确定 按钮(此操作会覆盖工程下同名功能函数、数据块,并自动选择未占用的号码作为编号)。

    ../../../../_images/import_s7_files_2.png
    ../../../../_images/import_s7_files_2_1.png

    提示

    如未按照上文中选中文件的顺序进行操作,将会在日志窗口出现报错信息。

  3. 外部源文件生成的功能函数、数据块如下所示,其中 Mech-Mind Interface DB 块编号需与 Mech-Vision “机器人与通信配置”中的 DB 块编号一致。其中, Camera_User DB 块用于存放用户数据。

    ../../../../_images/import_s7_files_3.png
  4. 在工程中,为方便维护 Mech-Mind 函数及数据块,可右键单击 程序块 ,选择 新增组 ,将其命名为 “Mech-Mind” 。并将新生成的功能函数、数据块全部选中,移动至该分组文件夹下。

    ../../../../_images/import_s7_files_4.png
    ../../../../_images/import_s7_files_5.png

下载 S7 通信接口文件

  1. 单击 保存项目 ,然后在项目树一栏,右键选中新建工程 PLC_1 ,依次选择 下载到设备 ‣ 硬件和软件(仅更改) ,弹出下载界面。

    ../../../../_images/download_s7_files_1.png
  2. 在弹出的下载界面中,PG/PC接口选择 连接PLC的网卡驱动 ,接口/子网的连接选择 插槽1 X1处的方向 ,选择目标设备选择 显示所有兼容的设备 ,然后单击 开始搜索 ,选中扫描到的 CPU 设备,单击 下载 ,下载完成后单击 完成

    ../../../../_images/download_s7_files_2.png

配置工控机及启动通信

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

  1. 令工控机 IP 地址和 PLC 的 IP 位于同一网段,如 192.168.1.10 ,打开工控机 cmd 命令提示符(可通过搜索 cmd 进入),输入 ping xxx.xxx.xxx.xxx (PLC的 IP 地址),测试工控机与 PLC 的连接是否正常。

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

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

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

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

    • “协议” 选择 Siemens PLC Client

    • PLC IP 地址为 192.168.1.22(即前面设定的 PLC IP 地址);

    • 插槽编号为 1 ,DB 块编号为 2 (即 PLC 工程中 “Mech-Mind Interface” 的编号),最后单击 应用

    ../../../../_images/center_settings_22.png

检查通信是否成功

  1. 在 Mech-Vision 主界面,确认工具栏中的接口服务已开启。若连接成功,则 Mech-Vision 日志窗口的 Console 标签页下会显示 Connect to PLC server successfully ;若失败,则检查配置,并检查物理连接是否有故障。

    ../../../../_images/center_settings_32.png
  2. 返回 TIA Portal 软件主界面,选中 PLC_1 设备,单击 转至在线 按钮。

    ../../../../_images/center_settings_4.png
  3. PCL_1 ‣ 程序块 目录下,双击数据块 Mech-Mind Interface ,然后单击 全部监视 icon_2 。若连接成功,可以看到 Heartbeat 心跳信号监视值在不断改变。

    ../../../../_images/center_settings_5.png

视觉工程测试

本节主要介绍如何使用 Siemens PLC Client 接口程序实现触发 Mech-Vision 工程并获取视觉点,以及触发 Mech-Viz 工程并获取规划路径。 Siemens PLC Snap 7 通信变量的具体功能和介绍,可参考 《标准接口开发者手册》5.4 DB块指令说明

准备工作

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

    ../../../../_images/prepared_1.png
  2. 搭建 Mech-Viz 工程,并勾选 设为自动加载

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

    ../../../../_images/prepared_4.png

从 Mech-Vision 获取视觉点

设置参数

  1. 在 TIA Portal 软件主窗口 项目树 ‣ 程序块 目录下,双击组织块 Main(OB1) 打开主程序,将 MM_Start_Vis 功能函数拖拽至主程序的程序段 1 下。

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

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

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

    ../../../../_images/get_visual_point_from_vision_4.png
  5. 在项目树下,单击数据块 Camera_User ,将详细视图下的变量根据名称拖拽至 MM_Start_Vis 对应的输入侧接口处。

    ../../../../_images/get_visual_point_from_vision_5.png
  6. MM_Get_VisData 功能函数拖拽至主程序/程序段 2 下。

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

    ../../../../_images/get_visual_point_from_vision_8.png
  8. 在项目树下,单击数据块 Camera_User ,将详细视图下的变量根据名称拖拽至 MM_Get_VisData 对应的输入侧接口处。

    ../../../../_images/get_visual_point_from_vision_9.png
  9. 在项目树下,右键单击选中 PLC_1 ,然后依次选择 下载到设备 ‣ 软件(仅更改) ,在弹出的下载界面中单击 装载 ,将最新程序下载到 PLC 。

    ../../../../_images/get_visual_point_from_vision_10.png
    ../../../../_images/get_visual_point_from_vision_11.png

触发 Mech-Vision 工程运行

  1. 在 Main(OB1) 主程序窗口,单击 启用/禁用监视 icon_2 以启用监视功能。

    ../../../../_images/get_visual_point_from_vision_12.png
  2. 右键单击 MM_Start_Vis 输入侧变量 “Camera_User”.Start_Vis ,将其修改为 1 ,触发 Mech-Vision 工程运行,然后将此变量复位。此时 Mech-Mind Interface 数据块 StatusCode 变量的返回值变为 1102 ,则表示工程启动正常。若返回值为 10XX ,请参考 《Mech-Mind-标准接口错误码及故障排查手册》 ,进行错误排查。

    ../../../../_images/get_visual_point_from_vision_13.png
    ../../../../_images/get_visual_point_from_vision_14.png

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

右键单击 MM_Get_VisData 输入侧变量 “Camera_User”.Get_VisData ,将其修改为 1 ,获取视觉目标点,然后将此变量复位。此时 Mech-Mind Interface 数据块 StatusCode 变量的返回值变为 1100 ,则表示工程正常启动。若返回值为 10XX ,请参考 《Mech-Mind-标准接口错误码及故障排查手册》 ,进行错误排查。

../../../../_images/get_visual_point_from_vision_15.png

Mech-Mind Interface 数据块返回数据如下,Number of Pose Sent 值为 1 ,表示获取到 1 个位姿。位姿保存在 TargetPose 中。

../../../../_images/get_visual_point_from_vision_16.png

Mech-Vision 自动控制逻辑例程

Mech-Vision 自动控制逻辑例程如下:

../../../../_images/get_visual_point_from_vision_17.png
../../../../_images/get_visual_point_from_vision_18.png

从 Mech-Viz 获取规划路径

设置参数

  1. MM_Empty_ Target 功能函数拖拽至主程序的程序段 3 下。

    ../../../../_images/get_planning_path_from_viz_1.png
  2. 分别单击数据块 Camera_UserMech-Mind Interface ,将详细视图下的变量根据名称对应拖拽至 MM_Empty_ Target 对应的输入侧接口处。

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

    ../../../../_images/get_planning_path_from_viz_4.png
    ../../../../_images/get_planning_path_from_viz_5.png
    ../../../../_images/get_planning_path_from_viz_6.png
  4. 设置机器人发送的拍照位姿类型。在本章节例子中,将 Robot_Pose_Type 的端口值设为 0 ,表示不需要拍照位姿,比如 Eye to Hand 方式。然后单击数据块 Camera_User ,将详细视图下的变量根据名称拖拽至 MM_Start_Viz 对应的输入侧接口处。

    ../../../../_images/get_planning_path_from_viz_7.png
    ../../../../_images/get_planning_path_from_viz_8.png
  5. 设置 Mech-Viz 工程中分支参数。在本章节例子中,将 Branch_NameBranch_Exit_Port 的端口值分别设为 1 ,表示控制 Mech-Viz 工程执行到分支 1 时沿出口 1 继续执行。然后单击数据块 Camera_User ,将详细视图下的变量根据名称拖拽至 MM_Set_Branch 对应的输入侧接口处。

    ../../../../_images/get_planning_path_from_viz_9.png
    ../../../../_images/get_planning_path_from_viz_10.png
  6. 设置要获取的路径上点的位姿类型。在本章节例子中,将 Request_Pose_Type 的端口值设为 1 ,表示设置 Mech-Viz 返回的是 JPS 数据。然后单击数据块 Camera_User ,将详细视图下的变量根据名称拖拽至 MM_Get_VizData 对应的输入侧接口处。

    ../../../../_images/get_planning_path_from_viz_11.png
    ../../../../_images/get_planning_path_from_viz_12.png

    注意

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

  7. 在项目树下,右键单击选中 PLC_1 ,然后依次选择 下载到设备 ‣ 软件(仅更改) ,在弹出的下载界面中单击 装载 ,将最新程序下载到 PLC 。

    ../../../../_images/get_planning_path_from_viz_13.png
    ../../../../_images/get_planning_path_from_viz_14.png

触发 Mech-Viz 工程运行

  1. 在 Main(OB1) 主程序窗口,单击 启用/禁用监视 icon_2

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

    ../../../../_images/get_planning_path_from_viz_16.png

    此时 Mech-Mind Interface 数据块 Target Pose 的变量值被清空。

    ../../../../_images/get_planning_path_from_viz_17.png
  3. 右键单击 MM_Start_Viz 的输入侧变量 Camera_User.Start_Viz ,将其修改为 1 ,启动 Mech-Viz 工程,然后将此变量复位。此时 StatusCode 变量的返回值变为 2103 ,表示工程正常启动。若返回值为 20XX ,请参考 《Mech-Mind-标准接口错误码及故障排查手册》 ,进行错误排查。

    ../../../../_images/get_planning_path_from_viz_18.png
    ../../../../_images/get_planning_path_from_viz_19.png

设置 Mech-Viz 的分支出口

右键单击 MM_Set_Branch 的输入侧变量 Camera_User.Set_Branch ,将其修改为 1 ,选择 Mech-Viz “消息分支”出口,然后将此变量复位。此时 StatusCode 变量的返回值变为 2105 ,表示分支设置成功。若返回值为 20XX ,请参考 《Mech-Mind-标准接口错误码及故障排查手册》 ,进行错误排查。

../../../../_images/get_planning_path_from_viz_20.png
../../../../_images/get_planning_path_from_viz_21.png

获取 Mech-Viz 规划路径

右键单击 MM_Get_VizData 的输入侧变量 Camera_User.Get_VizData ,将其修改为 1 ,获取 Mech-Viz 的规划路径,然后将此变量复位。此时 StatusCode 变量的返回值变为 2100 ,则表示分支设置成功。若返回值为 20XX ,请参考 《Mech-Mind-标准接口错误码及故障排查手册》 ,进行错误排查。

../../../../_images/get_planning_path_from_viz_22.png

Mech-Mind Interface 数据块返回数据如下, Number of Pose Sent 值为 6 ,表示获取到 6 组 JPS 数据,数据保存在 TargetPose 中。 Index of Vision Move 为 3 ,表示视觉点(即工程中的 visual move-视觉移动 步骤)在路径中的位姿编号为 3 。

../../../../_images/get_planning_path_from_viz_23.png

Mech-Viz 自动控制逻辑例程

Mech-Viz 自动控制逻辑例程如下:

../../../../_images/get_planning_path_from_viz_24.png
../../../../_images/get_planning_path_from_viz_25.png
../../../../_images/get_planning_path_from_viz_26.png