《使用S7-1200自由口与第三方设备通讯》由会员分享,可在线阅读,更多相关《使用S7-1200自由口与第三方设备通讯(20页珍藏版)》请在金锄头文库上搜索。
1、 如何通过如何通过 S7 1200 与第三方设备实现自由口通信与第三方设备实现自由口通信 How to communication between S7 1200 and third party device by Free port protocol Getting Started Edition 2009 年年 12 月月 www PLC IA DT Service Support Page 2 20 摘摘 要要 本文介绍了通过自由口协议实现 S7 1200 与第三方设备的通信 关键词关键词 自由口协议 S7 1200 PTP Key Words Free port protocol S7
2、 1200 PTP www PLC IA DT Service Support Page 3 20 目目 录录 如何通过S7 1200 与第三方设备实现自由口通信 1 1 控制系统原理 4 2 硬件需求 4 3 软件需求 5 4 组态 5 附录 推荐网址 19 www PLC 西门子 S7 1200 紧凑型 PLC 在当前的市场中有着广泛的应用 由于其性价比高 所以 常被用作小型自动化控制设备的控制器 这也使得它经常与第三方的设备 扫描枪 打印机 等设备进行通讯 因为没有第三方的设备 这里就以超级终端为例介绍自由口通讯 1 控制系统原理 控制系统原理 图 1 控制系统原理 2 硬件需求 硬件需
3、求 S7 1200 PLC 目前有 3 种类型的 CPU 1 S7 1211C CPU 2 S7 1212C CPU 3 S7 1214C CPU 这三种类型的 CPU 都可以连接三个串口通信模版 本例中使用的本例中使用的 PLC 硬件为 硬件为 1 PM1207 电源 6EP1 332 1SH71 2 S7 1214C 6ES7 214 1BE30 0XB0 3 CM1241 RS232 6ES7 241 1AH30 0XB0 IA DT Service Support Page 4 20 www PLC 3 软件需求 软件需求 1 编程软件 Step7 Basic V10 5 6ES7 8
4、22 0AA0 0YA0 4 组态 组态 我们通过下述的实际操作来介绍如何在 Step7 Basic V10 5 中组态 S7 1214C 和超级 终端通信 点击桌面上的 Totally Integrated Automation Portal V10 图标 打开如下图 图 2 新建 S7 1200 项目 首先需要选择 Create new project 选项 然后在 Project name 里输入 PTP 在 Path 修改项目的存储路径为 C 点击 Create 这样就创建了一个文件 PTP IA DT Service Support Page 5 20 www PLC 的新项目 创建
5、后的窗口如下图所示 图 3 新建项目后 点击门户视图左下角的 Project View 切换到项目视图下 如下图 图 4 切换到项目视图 IA DT Service Support Page 6 20 www PLC 打开后 在 Devices 标签下 点击 Add new device 在弹出的菜单中输入设备名 PLC 1 并在设备列表里选择 CPU 的类型 选择后如下图 图 5 PLC 硬件组态 插入 CPU 后 点击 CPU 左边的空槽 在右边的 Catalog 里找到 Communication 下的 RS232 模块 拖拽或双击此模块 这样就把串口模块插入到硬件配置里 接下来就需 要
6、配置此 RS232 模块硬件接口参数 选择 RS232 模块 在其下方会出现该模块的硬件属性 配置窗口 在属性窗口里有两个选项 一个是 general 一个是 RS232 interface 在 General 里包括了此模块的 项目信息 和 订货信息 而在 RS232 interface 里包括 项目信息 端口的配置 发送信息的配置 接收信息的配置 和 硬 件识别号 在这里我们选择 RS232 interface 在 端口 配置的选项里 进行端口的 参数配置 波特率为 9600 校验方式 无 数据位为 8 IA DT Service Support Page 7 20 www PLC 停止位
7、 1 硬件流控制 无 等待时间 1ms 设置参数如下图 图 6 RS232 接口配置 此时确认一下 硬件识别号 为 11 此时 完成了硬件的组态 接下来需要编写串口通讯程序 在这里我们实现两个功能 一 S7 1200 发送数据给超级终端 二 超级终端发送数据给 S7 1200 对于第一个功能 S7 1200 发送数据给超级终端 实际上是 S7 1200 是数据的发送 方 超级终端是数据的接收方 对于 S7 1200 需要编写发送程序 而对于超级终端来 说 只要打开超级终端程序 配置硬件接口参数与前面 S7 1200 的端口参数一只即可 下面的步骤将具体介绍此功能实现的步骤 在 PLC 中编写发
8、送程序 在项目管理视图下双击 Device 下的程序块下的 Main OB1 打开 OB1 在主程序中调用 SEND PTP 功能块如下图所示 注 SEND PTP 在指令库下的扩展指令中通讯指令下 IA DT Service Support Page 8 20 www PLC 图 7 调用发送功能块 要对 SEND PTP 赋值参数 首先需要创建 SEND PTP 的背景数据块和发送缓冲数据 块 双击 Devices PLC 1 Program Block Add new block 在弹出的串口命名 DB Send PTP 选择 DB 块 在 Type 后选择 SEND PTP SFB11
9、3 IA DT Service Support Page 9 20 www PLC 图 8 创建发送功能块的背景数据块 插入背景 DB 后 再插入发送缓冲 DB 块 重复上面的步骤 只是在选择 DB 类型为 Global DB 并去掉 Symbolic access only 选项勾 这样可以对该 DB 块进行直接地 址访问 并取名该 DB 块为 DB SEND BUFF 建好这两个 DB 块后 双击打开 DB SEND BUFF 预先定义好要发送的数据 如下图所示 图 9 在接收缓冲区中接收到的数据 定义完发送缓冲区后 接下来就可以对 SEND PTP 赋值参数 赋值参数后如下图 IA DT
10、 Service Support Page 10 20 www PLC 图 10 发送编程 在上面的编程块里需要注意的是 在指定发送缓冲区时 字符的开始地址是从第二个字 节 而不是零字节开始 即是 P DB2 DBX2 0 Byte10 而不是 P DB2 DBX0 0 Byte10 原因 是由于 S7 1200 对字符串的存放的格式造成的 S7 1200 对字符串的前两个字节的定义第一 字节是最大的字符长度 第二个字节是实际的字符长度 接下来才是存放实际字符 如下 图 图 11 String 存储格式 上面就完成了程序的编写 对项目进行编译 右击 PLC 1 项目在弹出的菜单里选择 Comp
11、lies ALL 选项 这样就对硬件与软件进行编译 如下图 IA DT Service Support Page 11 20 www PLC 图 12 编译项目 编译且没有错误后就可以下载程序到 PLC 中 同样右击 PLC 1 项目 在弹出的菜单选择 Download to Device 用串口交叉线连接 S7 1200 的串口与计算机的串口 打开计算机的超级终端程序 并设置硬件端口参数如下图 IA DT Service Support Page 12 20 www PLC 图 13 超级终端的端口设置 打开 OB1 功能块在线监控程序 在变量监控表里强制 M0 0 为 1 触发数据的发送
12、此 时在超级终端就会接收到发送的数据 如下图 图 14 在超级终端监控发送来的数据 对于第二个功能 超级终端发送数据给 S7 1200 实际上是 S7 1200 是数据的接收 方 超级终端是数据的发送方 对于 S7 1200 需要编写接收程序 而对于超级终端来 说 只要打开超级终端程序 配置硬件接口参数与前面 S7 1200 的端口参数一致 在界 面上输入发送内容即可 下面的步骤将具体介绍此功能实现的步骤 在 PLC 中编写发送程序 在项目管理视图下双击 Device 下的程序块下的 Main OB1 打开 OB1 在主程序中调用 RCV PTP 功能块如下图所示 注 RCV PTP 在 指令
13、库下的扩展指令中通讯指令下 IA DT Service Support Page 13 20 www PLC 图 15 调用发送功能块 要对 RCV PTP 赋值参数 首先需要创建 RCV PTP 的背景数据块和发送缓冲数据块 双击 Devices PLC 1 Program Block Add new block 在弹 出的串口命名 DB RCV PTP 选择 DB 块 在 Type 后选择 RCV PTP SFB114 图 16 创建接收功能块的背景数据块 IA DT Service Support Page 14 20 www PLC 插入背景 DB 后 再插入接收缓冲 DB 块 重复上
14、面的步骤 只是在选择 DB 类型为 G地lobal DB 并去掉 Symbolic access only 选项勾 这样可以对该 DB 块进行直接 址访问 并取名该 DB 块为 DB RCV BUFF 建好这两个 DB 块后 双击打开 DB RCV BUFF 定义接收缓冲区数据的类型 如下图所示 图 17 定义接收缓冲区 参数 赋值参数后如下图 定义完接收缓冲区后 接下来就可以对 RCV PTP 赋值 图 18 接收编程 IA DT Service Support Page 15 20 www PLC 在上面的编程块里需要注意的是 在指定接收缓冲区时 字符的开始地址是从第二个字 节 而不是零字
15、节开始 即是 P DB2 DBX2 0 Byte10 而不是 P DB2 DBX0 0 Byte10 原因 是由于 S7 1200 对字符串的存放的格式造成的 S7 1200 对字符串的前两个字节的定义第一 字节是最大的字符长度 第二个字节是实际的字符长度 接下来才是存放实际字符 如下 图 图 19 String 存储格式 PLC 1 项目在弹出的菜单里选择 上面就完成了程序的编写 对项目进行编译 右击 Complies ALL 选项 这样就对硬件与软件进行编译 如下图 图 20 编译项目 IA DT Service Support Page 16 20 www PLC 编译且没有错误后就可以
16、下载程序到 PLC 中 同样右击 PLC 1 项目 在弹出的菜单选择 Download to Device 用串口交叉线连接 S7 1200 的串口与计算机的串口 打开计算机的超级终端程序 并设置硬件端口参数如下图 图 21 超级终端的端口设置 在桌面上新建文本文件 打开此文本文件在里面输入 gfdcba 如下图 图 22 在文本文件下输入要发送的字符串 打开变量监控表 强制 M0 0 使能接收 然后 在超级终端里 选择菜单 Transfer 下的 Send Text file 在打开的窗口里找到桌面 上的文本文件 IA DT Service Support Page 17 20 www PLC 图 23 通过超级终端发送数据 打开 DB RCV BUFF 数据块 在线查看接收到的数据 如下图 图 23 接收缓冲区中接收到的数据 通过上面的例子实现了简单的应用 在实际的应用过程中 需要按第三方设备的协议进行 编写 S7 1200 的程序 IA DT Service Support Page 18 20 www PLC IA DT Service Support Page 19 20 附