通信配置及示例程序使用
西门子 PLC 使用 TIA Portal 软件与梅卡曼德视觉系统进行 Modbus TCP 通信包含以下流程:
所需软硬件
软件
-
西门子 PLC 编程软件 TIA Portal V15.1。
-
Mech-Vision和Mech-Viz软件版本为 2.0.0 及以上。
-
PLC 例程文件:
-
MM Modbus TCP.scl(用于建立 Modbus TCP 通信);
-
MM Modbus TCP Interface Program.scl(用于实现各种接口指令的功能)。
例程文件位于Mech-Vision和Mech-Viz软件安装路径下
Communication Component/Robot_Interface/Modbus TCP/Siemens TIA Portal
文件夹内。请将该例程文件复制到已安装 TIA Portal 的计算机中。 -
工控机或主机需关闭防火墙软件。 |
配置工控机及启动通信
创建和配置 PLC 工程
创建 PLC 工程
请根据实际需求,单击 保存项目,保存对工程的更改。 |
-
打开 TIA Portal 软件,单击 创建新项目 ,输入项目名称,选择路径,单击 创建 。在弹出新页面后,单击 打开项目视图 。
-
在 项目树 侧边栏,双击 添加新设备 ,进入添加新设备界面。在 控制器 选项处,选择与实体 PLC 一致的模块,单击 确定 。
-
在 项目树 侧边栏,单击 设备组态 ,单击 设备视图 ,双击 PLC_1 处网口标识,在 属性/常规 页面单击 以太网网址 ,设置 IP 地址,子网掩码使用默认值。
导入 Mech-Mind 例程文件
导入和测试 Mech-Mind 例程文件,请使用新建的 PLC 工程;如需添加到已存在的 PLC 工程中,建议先创建新工程,再进行导入和测试,最后复制到已存在的工程中。 |
-
在项目树下,依次双击 PLC_1[CPU 1211C DC/DC/DC] > 外部源文件 ,双击 添加新的外部文件 ,在弹出窗口中,选择
MM Modbus TCP.scl
、MM Modbus TCP Interface Program.scl
文件后,单击 打开 ,将其导入至 PLC 工程。 -
选中新导入的外部源文件(先选中 MM Modbus TCP.scl ,再选中 MM Modbus TCP Interface Program.scl ,否则在日志窗口将会出现报错信息),右键单击,选择 从源生成块 。
-
弹出 块可能会覆盖 窗口,单击 确定 。
-
外部源文件生成的功能函数、数据块如下图所示,其中 ,Camera_User DB 块存放用户数据,MM Modbus TCP Interface DB 块存放通信交互数据,MM Modbus TCP DB 块存放通信配置参数。
-
双击打开 MM Modbus TCP[FC14] 功能块,依次单击 ToCamera 及 FromCamera No.1~6 程序段,确认所有 MB_DATA_PTR 变量的指针数据块编号与 MM Modbus TCP Interface 数据块编号一致,例如图中两处均为 2。
如果两处不一致,且 MM Modbus TCP Interface 数据块编号不易修改,可使用功能块右侧的 任务 选项卡中的查找和替换功能,将 MB_DATA_PTR 变量的指针数据块编号替换为 MM Modbus TCP Interface 数据块的实际编号。
-
若 系统块/程序资源 下没有自动生成 MB_CLIENT 功能块、MB_CLIENT_DB 数据块,则需要根据当前 CPU 设备型号,重新引入 MB_CLIENT 功能块,请参考下一步骤;若已自动生成,请跳过下一步骤。
-
在项目树下,单击 程序块 ,双击打开 Main[OB1] 组织块,选中程序段下梯形图,在右侧指令窗口中,依次选择
,双击 MB_CLIENT 功能块,弹出 调用选项 窗口,确定 。此时, 系统块/程序资源 下自动生成 MB_CLIENT 功能块、MB_CLIENT_DB 数据块,返回已打开的 MM Modbus TCP 功能块,在工具栏中,单击 编译 图标。
当状态栏的 信息/编译 下提示 “MM Modbus TCP 块已成功编译”,即可删除 Main[OB1] 组织块/程序段1 下的 MB_CLIENT 功能块。
-
在项目树下,为方便维护 3D_Camera 相关的函数及数据块,右键单击 程序块 ,单击 新增组 ,命名为 3D_Camera 。
-
将新生成的功能函数、数据块全部选中,移动至 3D_Camera 分组文件夹下。
搭建并下载 PLC 程序
-
在 项目树 侧边栏,双击打开 Main[OB1] 组织块,选中 MM Modbus TCP[FC14] 功能,将其拖拽至程序段 1 下。
-
双击打开 MM ModbusTCP[DB3] 数据块,单击 扩展模式 图标,确认 RemoteAddress/ADDR 十六进制数值依次对应工控机的 IP 地址(192.168.1.20),RemotePort 十进制数值对应端口号 (此处为 2000,需与 Mech-Vision 设定的值一致)。
-
选择
,双击打开 MB_CLIENT_DB[DBB] 数据块,单击 扩展模式 图标,确认 Static/TDIAG_Status/MB_Unit_ID 十六进制数值对应从站设备地址设(此处为 255,需与 Mech-Vision 设定的值一致)。 -
在 项目树 侧边栏,右键单击选中 PLC_1[CPU 1211C DC/DC/DC] ,依次单击
。 -
弹出 扩展下载设备 窗口, PG/PC 接口 选择连接 PLC 的网卡驱动, 接口/子网的连接 选择 插槽“1X1”处的方向 , 选择目标设备 选择 显示所有兼容的设备 ,单击 开始搜索 ,选中搜索结果显示的 CPU 设备,单击 下载 。
-
弹出 下载结果 窗口,下载完成后,单击 完成 。
检查通信是否成功
-
在 项目树 侧边栏,双击数据块 MM Modbus TCP Interface ,单击 全部监视 图标。若连接成功,则 Heartbeat 心跳信号监视值在不断变化。
-
在 Mech-Vision 主窗口中,若连接成功,则在日志窗口的 控制台 标签页下会显示 client connected 。 若无该日志,请检查以下是否正常:
-
硬件网络连接是否正常;
-
Mech-Vision 的接口服务是否开启;
-
PLC 程序是否成功下载到 PLC 硬件。
-
视觉工程测试
本部分介绍如何使用例程功能块触发 Mech-Vision 工程并获取视觉点,以及触发 Mech-Viz 工程并获取规划路径。
准备工作
-
搭建 Mech-Vision 方案。在窗口列表中,右键单击方案名称并勾选 自动加载当前方案,此时方案下的工程也会设置为自动加载,同时工程名称前会出现具体工程编号。
-
搭建 Mech-Viz 工程。在Mech-Viz工程资源面板中,右键单击工程名称,勾选 设为自动加载。
测试所使用的 Mech-Viz 工程中需使用一个步骤名称为 1 的分支步骤,如下图所示。
从 Mech-Vision 获取视觉点
设置参数
-
返回 TIA Portal 软件主窗口,在 项目树/程序块 下,双击 Main[OB1] 打开主程序,将 MM_Start_Vis[FC9] 功能函数拖拽至 主程序/程序段2 下。
-
设置 Mech-Vision 工程编号,即 Mech-Vision 工程列表中工程名称前的数字编号。将 Vision_Proj_Num 的端口值设为 1 ,则运行工程编号为 1 的 Mech-Vision 工程。
-
设置 Mech-Vision 工程返回的位姿数量:将 Req_Pose_Num 的端口值设为 0 ,表示 Mech-Vision 返回全部位姿结果。
-
设置机器人发送的拍照位姿类型。将 Robot_Pose_Type 的端口值设为 0 ,表示工程是 Eye to Hand 模式,不需要发送拍照位姿。
-
在 项目树/程序块 下,单击 Camera_User 数据块,将详细视图下的变量根据名称对应拖拽至 “MM_Start_Vis” 输入侧接口(即左侧)。
-
将 MM_Get_VisData 功能函数拖拽至 主程序/程序段3 下。
-
设置 Mech-Vision 工程编号,即 Mech-Vision 工程列表中工程名称前的数字编号。将 Vision_Proj_Num 的端口值设为 1 ,则获取 Mech-Vision 工程编号为 1 的视觉识别结果。
-
在 项目树/程序块 下,单击 Camera_User 数据块,将详细视图下的变量根据名称对应拖拽至 “MM_Get_VisData” 输入侧接口(即左侧)。
-
在 项目树 侧边栏,右键选中设备 PLC_1,单击 下载到设备/软件(仅更改) 。
-
弹出 下载预览 窗口,单击 装载 ,将最新程序下载到 PLC。
触发 Mech-Vision 工程运行
-
在 Main[OB1] 主程序窗口,单击 启用/禁用监视 图标。
-
右键单击 “MM_Start_Vis” 输入侧的变量 “Camera_User”.Start_Vis,依次选择
,触发 Mech-Vision 工程运行,然后将此变量复位。 -
检查 MM Modbus TCP Interface 数据块中 Status Code 变量的返回值变为 1102,则表示工程启动正常。若返回值为 10XX,请参考 标准接口状态码及错误排查 进行错误排查。
获取 Mech-Vision 计算的位姿结果
-
右键单击 “MM_Get_VisData” 输入侧的变量 “Camera_User”.Get_VisData,依次选择
,获取视觉位置,然后将此变量复位。 -
检查 MM Modbus TCP Interface 数据块中 Status Code 变量的返回值变为 1100,则表示成功获取视觉点。若返回值为 10XX,请参考 标准接口状态码及错误排查 进行错误排查。
Number of Pose Sent 值为1,表示获取到 1 个位姿点。位姿保存在 Target Pose 中。
从 Mech-Viz 获取规划路径
设置参数
-
将 MM_Empty_Target 功能函数拖拽至 主程序/程序段4 下。
-
分别单击数据块 Camera_User 和 MM Modbus TCP Interface ,将详细视图下的变量根据名称对应拖拽至 “MM_Empty_Target” 输入侧接口(即左侧)。
-
分别将 MM_Start_Viz 、 MM_Set_Branch 、 MM_Get_VizData 功能函数分别拖拽至 主程序/程序段5、6、7 下。
-
设置机器人发送的拍照位姿类型。将 Robot_Pose_Type 的端口值设为 0,表示工程是 Eye to Hand 模式,不需要发送拍照位姿。单击数据块 Camera_User ,将详细视图下的变量根据名称对应拖拽至 “MM_Start_Viz” 输入侧接口(即左侧)。
-
设置 Mech-Viz 工程中分支参数。将 Branch_Name、Branch_Exit_Port 的端口值分别设为 1,表示控制 Mech-Viz 工程执行到分支 1 时沿出口 1 继续执行。单击数据块 Camera_User ,将详细视图下的变量根据名称对应拖拽至 “MM_Set_Branch” 输入侧接口(即左侧)。
-
设置要获取的路径上点的位姿类型。将 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 变量,若需设定的值不同,则无法同时生效。 -
在 项目树 侧边栏,右键选中设备 PLC_1,单击 下载到设备/软件(仅更改) 。弹出 下载预览 窗口,将最新程序下载到 PLC。
-
弹出 下载预览 窗口,单击 装载 ,将最新程序下载到 PLC。
触发 Mech-Viz 工程运行
-
在 Main[OB1] 主程序窗口,单击 启用/禁用监视 图标。
-
右键单击 “MM_Empty_Target” 输入侧的变量 “Camera_User”.Start_Empty,依次选择
,清除上一次获取的视觉结果,然后将此变量复位。 -
在 MM Modbus TCP Interface 数据块中,Target Pose,Target Label,Target Tool ID 变量值被清空。
-
右键单击 “MM_Start_Viz” 输入侧的变量 “Camera_User”.Start_Viz,依次选择
,启动 Mech-Viz 工程,然后将此变量复位。 -
检查 MM Modbus TCP Interface 数据块中 Status Code 变量的返回值变为 2103,则表示工程启动正常。若返回值为 20XX,请参考 标准接口状态码及错误排查 进行错误排查。
设置 Mech-Viz 的分支出口
-
右键单击 “MM_Set_Branch” 输入侧的变量 “Camera_User”.Set_Branch,依次选择
,选择 Mech-Viz 分支出口,然后将此变量复位。 -
检查 MM Modbus TCP Interface 数据块中 Status Code 变量的返回值变为 2105,则表示分支设置成功。若返回值为 20XX,请参考 标准接口状态码及错误排查 进行错误排查。
获取 Mech-Viz 规划路径
-
右键单击 “MM_Get_VizData” 输入侧的变量 “Camera_User”.Get_VizData,依次选择
,获取 Mech-Viz 的规划路径,然后将此变量复位。 -
检查 MM Modbus TCP Interface 数据块中 Status Code 变量的返回值变为 2100,则表示获取规划路径成功。若返回值为 20XX,请参考 标准接口状态码及错误排查 进行错误排查。
在上图中,Number of Pose Sent 值为 6,表示获取到 6 组关节角数据,数据保存在 Target Pose 中。Index of Vision Move 值为 3,表示视觉点位(即工程中的视觉移动)在路径中的位置编号为 3。