如何通过 Modbus 协议实现 S7-1200 与 S7-200 通讯 How to communication between S7-1200 and S7-200 with Modbus protocol Getting Started Edition (2010 年 1 月 )
摘要本文介绍了通过 Modbus 协议实现 S7-1200 与 S7-200 的通信 关键词 Modbus 协议,S7-1200,S7-200 Key Words Modbus protocol,s7-1200,s7-200 IA&DT Service & Support Page 2-28
目录如何通过 Modbus 协议实现 S7-1200 与 S7-200 通讯...1 1. 控制系统原理...4 2. 硬件需求...4 3. 软件需求...5 4. 组态...5 4.1 S7-1200 作 Modbus 主站,S7-200 作 Modbus 从站...5 4.2 S7-200 作 Modbus 主站,S7-1200 作 Modbus 从站... 16 附录 - 推荐网址... 26 IA&DT Service & Support Page 3-28
西门子 S7-1200 紧凑型 PLC 在当前的市场中有着广泛的应用, 由于其性价比高, 所以常被用作小型自动化控制设备的控制器, 这也使得它经常与 Modbus 仪表 ( 扫描枪 打印机等设备进行通讯 因为没有第三方 Modbus 仪表, 这里就以 S7-200 作为第三方的仪表为例介绍 Modbus 通讯 1. 控制系统原理 图 1: 通讯系统原理 2. 硬件需求 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 RS485 ( 6ES7 241-1CH30-0XB0 ) IA&DT Service & Support Page 4-28
4)CPU224XP (6ES7 214-2AD23-0XB0) 3. 软件需求 4. 组态 1) 编程软件 Step7 Basic V10.5 ( 6ES7 822-0AA0-0YA0) 2) 编程软件 STEP 7 MicroWIN; Modbus 库软件选项包 我们通过下述的实际操作来介绍如何在 Step7 Basic V10.5 中组态 S7-1214C 和 S7-200 的 Modbus 通信 4.1 S7-1200 作 Modbus 主站,S7-200 作 Modbus 从站 S7-1200 作为 Modbus 主站的配置步骤如下 : 点击桌面上的 Totally Integrated Automation Portal V10 图标, 打开如下图 : 图 2: 新建 S7-1200 项目 首先需要选择 Create new project 选项, 然后在 Project name: 里输入 Modbus_Master; 在 Path: 修改项目的存储路径为 C:\ ; 点击 Create, 这样就 IA&DT Service & Support Page 5-28
创建了一个文件 Modbus 的新项目 创建后的窗口如下图所示 : 图 3: 新建项目后 点击门户视图左下角的 Project View 切换到项目视图下, 如下图 : 图 4: 切换到项目视图 IA&DT Service & Support Page 6-28
打开后, 在 Devices 标签下, 点击 Add new device, 在弹出的菜单中输入设备名 PLC_1 并在设备列表里选择 CPU 的类型 选择后如下图 : 图 5: PLC 硬件组态插入 CPU 后, 点击 CPU 左边的空槽, 在右边的 Catalog 里找到 Communication 下的 RS485 模块, 拖拽或双击此模块, 这样就把串口模块插入到硬件配置里, 接下来就需要配置此 RS485 模块硬件接口参数, 选择 RS485 模块, 在其下方会出现该模块的硬件属性配置窗口, 在属性窗口里有下面五个选项, general ; Port Configuration ; Transmit message Configuration ; Receive Message Configuration ; IO Address/HW identify 在 General 里包括了此模块的 项目信息 ; 而在 Port Configuration 里可以对端口的进行参数配置, 波特率为 :9600 ; 校验方式 : 无 ; 数据位为 :8 ; 停止位 : 1; 硬件流控制 : 无 ; IA&DT Service & Support Page 7-28
设置参数如下图 : 等待时间 : 1ms 图 6: RS485 端口配置 在 Transmit message Configuration 和 Receive Message Configuration 里保持默 认设置, 在 IO Address/HW identify 里确认一下 硬件识别号 为 11 此时, 完成了硬件的组态, 接下来需要编写 Modbus 通讯程序 在 PLC 中编写发送程序 在项目管理视图下双击 Device Program block Add new block 在弹出的窗口中选择 Organizations Block(OB), 然后在其右边的窗 口里选择 Startup, 去除 Symbolic Access Only 的选项勾 如下图所示 : 图 7: 添加启动 OB 块 IA&DT Service & Support Page 8-28
点击 OK 后会打开此 OB 块, 然后在启动 OB 块里用 MB_COMM_LOAD( 注 : MB_COMM_LOAD 和 MB_MASTER 功能块是在 Project Library 下的 Library 选项卡 里, 如下图所示 :) 调用后如下图所示 : 图 8: Library 图 9: 调用 MB_COMM_LOAD 块 IA&DT Service & Support Page 9-28
图 : 在调用 MB_COMM_LOAD 功能块时, 都会自动弹出创建相应背景数据块的界面, 如下 图 10: 创建背景数据块 按上面的步骤在 OB1 中插入 MB_MASTER 功能块如下图 : 图 11: 调用 MB_MASTER 块 IA&DT Service & Support Page 10-28
在插入功能块的过程, 相应的生成 MB_COMM_LOAD_DB 和 MB_MASTER_DB, 两个背景数据块 然后再创建一个发送或接收的数据缓冲区, 点击 PLC_1 项目下的 Program Block 下的 Add new block, 在弹出的窗口中选择 DB 类型为 Global DB, 并去掉 Symbolic access only 选项勾 ( 这样可以对该 DB 块进行直接地址访问 ), 并取名该 DB 块为 MB_COMM_DB 建好这个 DB 块后, 双击打开 MB_COMM_DB 预先定义数据区的大小, 如下图所示 : 图 12: 数据区的定义完成数据区的定义后, 接下来就可以对 MB_COMM_LOAD 功能块和 MB_Master 功能块进行参数赋值, 赋值的参数见图 9 和图 11 在上面的编程块里需要注意的是, 在 MB_MASTER 功能块中的参数 MB_ADDR 参数是从站的 Modbus 的站地址 这里要读取的从站的站地址为 2; 关于 MODE DATA_ADDR DATA_LEN 可在下表中查看, DATA_PTR 存放发送或接收到的数据 IA&DT Service & Support Page 11-28
表 1:MB_MASTER Modbus 功能表 IA&DT Service & Support Page 12-28
上面就完成了程序的编写, 对项目进行编译 ; 右击 PLC_1 项目在弹出的菜单里选择 Complies ALL 选项, 这样就对硬件与软件进行编译, 如下图 : 图 13: 编译项目 编译且没有错误后就可以下载程序到 PLC 中, 同样右击 PLC_1 项目, 在弹出的菜单选择 Download to Device S7-200 作为 Modbus 从站的配置步骤如下 : 点击桌面上的 V4.0 STEP 7 MicroWIN SP6 图标 ( 因为 STEP 7 MicroWIN 安装时并没有安装 Modbus 的库程序, 所以 Modbus 的库程序是需要单独安装的, 安装后才可以在库程序中调用 Modbus 的通讯功能块, 关于库程序可以咨询西门子热线或访问西门子的官方网站 ), 打开后并编写 Modbus 从站程序如下图 : IA&DT Service & Support Page 13-28
图 14:S7-200 Modbus 从站编程 在上面调用的是端口 0 的程序, 所以在连接通讯线时, 需要连接到端口 0 上, 编译并下载项 目到 S7-200 的 PLC 中 下载后运行 PLC 用 DP 电缆连接 S7-1200 与 S7-200 在线监控 S7-200 中的程序, 并监控变量表, 修改 VB1000 到 VB1011 的值为 1 到 12 (VB1000 到 VB1011 对应的 Modbus 的地址为 40001-40006) 监控到的值如下图所示 : IA&DT Service & Support Page 14-28
图 15:S7-200 监控变量值 在线监控 S7-1200 变量表如下图 : 图 16:S7-1200 监控变量值 IA&DT Service & Support Page 15-28
4.2 S7-200 作 Modbus 主站,S7-1200 作 Modbus 从站 S7-1200 作为 Modbus 从站的配置步骤如下 : 点击桌面上的 Totally Integrated Automation Portal V10 图标, 打开如下图 : 图 17:S7-1200 监控变量值首先需要选择 Create new project 选项, 然后在 Project name: 里输入 Modbus_Slave 在 Path: 修改项目的存储路径为 C:\Backup file ; 点击 Create, 这样就创建了一个文件 Modbus_Slave 的新项目 创建后的窗口如下图所示 : IA&DT Service & Support Page 16-28
图 18: 新建项目后 点击门户视图左下角的 Project View 切换到项目视图下, 如下图 : 图 19: 切换到项目视图 IA&DT Service & Support Page 17-28
打开后, 在 Devices 标签下, 点击 Add new device, 在弹出的菜单中输入设备名 PLC_1 并在设备列表里选择 CPU 的类型 选择后如下图 : 图 20: PLC 硬件组态插入 CPU 后, 点击 CPU 左边的空槽, 在右边的 Catalog 里找到 Communication 下的 RS485 模块, 拖拽或双击此模块, 这样就把串口模块插入到硬件配置里, 接下来就需要配置此 RS485 模块硬件接口参数, 选择 RS485 模块, 在其下方会出现该模块的硬件属性配置窗口, 在属性窗口里有下面五个选项, general ; Port Configuration ; Transmit message Configuration ; Receive Message Configuration ; IO Address/HW identify 在 General 里包括了此模块的 项目信息 ; 而在 Port Configuration 里可以对端口的进行参数配置, 波特率为 :9600 ; 校验方式 : 无 ; 数据位为 :8 ; 停止位 : 1; IA&DT Service & Support Page 18-28
设置参数如下图 : 硬件流控制 : 无 ; 等待时间 : 1ms 图 21: RS485 端口配置 在 Transmit message Configuration 和 Receive Message Configuration 里保持默 认设置, 在 IO Address/HW identify 里确认一下 硬件识别号 为 11 此时, 完成了硬件的组态, 接下来需要编写 Modbus 通讯程序 在 PLC 中编写发送程序 在项目管理视图下双击 Device Program block Add new block 在弹出的窗口中选择 Organizations Block(OB), 然后在其右边的窗 口里选择 Startup, 去除 Symbolic Access Only 的选项勾 如下图所示 : IA&DT Service & Support Page 19-28
图 22: 添加启动 OB 块点击 OK 后会打开此 OB 块, 然后在启动 OB 块里用 MB_COMM_LOAD( 注 : MB_COMM_LOAD 和 MB_Slave 功能块是在 Project Library 下的 Library 选项卡里, 如下图所示 :) 调用后如下图所示 : 图 23: Library 图 24: 调用 MB_COMM_LOAD 块 IA&DT Service & Support Page 20-28
图 : 在调用 MB_COMM_LOAD 功能块时, 都会自动弹出创建相应背景数据块的界面, 如下 图 25: 创建背景数据块 按上面的步骤在 OB1 中插入 MB_Slave 功能块如下图 : 图 26: 调用 MB_Slave 块 IA&DT Service & Support Page 21-28
在插入功能块的过程, 相应的生成 MB_COMM_LOAD_DB 和 MB_Slave_DB, 两个背景数据块 然后再创建一个发送或接收的数据缓冲区, 点击 PLC_1 项目下的 Program Block 下的 Add new block, 在弹出的窗口中选择 DB 类型为 Global DB, 并去掉 Symbolic access only 选项勾 ( 这样可以对该 DB 块进行直接地址访问 ), 并取名该 DB 块为 MB_COMM_DB 建好这个 DB 块后, 双击打开 MB_COMM_DB 预先定义数据区的大小, 如下图所示 : 图 27: 数据区的定义完成数据区的定义后, 接下来就可以对 MB_COMM_LOAD 功能块和 MB_SLAVE 功能块进行参数赋值, 赋值的参数见图 24 和图 26 在上面的编程块里需要注意的是, 在 MB_SLAVE 功能块中的参数 MB_ADDR 参数是此从站的 Modbus 站地址 这里定义为此从站的站地址为 2;MB_HOLD_REG 是指向 Modbus 保持寄存器 DB 的指针 保持寄存器 DB 必须为典型的全局 DB MB_SLAVE 所提供给主站的功能见下表 : IA&DT Service & Support Page 22-28
表 3:MB_SLAVE Modbus 功能表 A 表 4:MB_SLAVE Modbus 功能表 B 上面就完成了程序的编写, 对项目进行编译 ; 右击 PLC_1 项目在弹出的菜单里选择 Complies ALL 选项, 这样就对硬件与软件进行编译, 如下图 : 图 28: 编译项目 IA&DT Service & Support Page 23-28
编译且没有错误后就可以下载程序到 PLC 中, 同样右击 PLC_1 项目, 在弹出的菜单选择 Download to Device S7-200 作为 Modbus 主站的配置步骤如下 : 点击桌面上的 V4.0 STEP 7 MicroWIN SP6 图标 ( 因为 STEP 7 MicroWIN 安装时并没有安装 Modbus 的库程序, 所以 Modbus 的库程序是需要单独安装的, 安装后才可以在库程序中调用 Modbus 的通讯功能块, 关于库程序可以咨询西门子热线或访问西门子的官方网站 ), 打开后并编写 Modbus 主站程序如下图 : 图 29:S7-200 Modbus 主站编程 IA&DT Service & Support Page 24-28
在上面调用的是端口 0 的程序, 所以在连接通讯线时, 需要连接到端口 0 上, 编译并下载项 目到 S7-200 的 PLC 中 下载后运行 PLC 用 DP 电缆连接 S7-1200 与 S7-200 在线监控 S7-1200 中的程序, 并监控变量表, 修改 DB3.DBB0 到 DB3.DBB20 的值为 1 到 21(DB3.DBB0 到 DB3.DBB19 对应的 Modbus 的地址为 40001-40010) 监控到的值如 下图所示 : 图 30:S7-1200 监控变量值 在线监控 S7-200 变量表如下图 : IA&DT Service & Support Page 25-28
图 31:S7-1200 监控变量值 从上面的变量监控表里可以看到 VB420 中没有数据, 因为在主站的 S7-200 里的程序里只读 取 10 个变量 ( 即 40001-40010) 对应着的 VB400-VB419, 所以 VB420 的数据没有接收 如果您对该文档有任何建议, 请将您的宝贵建议提交至下载中心留言板 该文档文当编号 :A0413 IA&DT Service & Support Page 26-28
附录 - 推荐网址 自动化系统西门子 ( 中国 ) 有限公司工业自动化与驱动技术集团客户服务与支持中心网站首页 :www.4008104288.com.cn 自动化系统下载中心 : http://www.ad.siemens.com.cn/download/doclist.aspx?typeid=0&catfirst=1 自动化系统全球技术资源 : http://support.automation.siemens.com/cn/view/zh/10805045/130000 找答案 自动化系统版区 : http://www.ad.siemens.com.cn/service/answer/category.asp?cid=1027 驱动技术西门子 ( 中国 ) 有限公司工业自动化与驱动技术集团客户服务与支持中心网站首页 :www.4008104288.com.cn 驱动技术下载中心 : http://www.ad.siemens.com.cn/download/doclist.aspx?typeid=0&catfirst=85 驱动技术全球技术资源 : http://support.automation.siemens.com/cn/view/zh/10803928/130000 找答案 驱动技术版区 : http://www.ad.siemens.com.cn/service/answer/category.asp?cid=1038 IA&DT Service & Support Page 27-28
注意事项 应用示例与所示电路 设备及任何可能结果没有必然联系, 并不完全相关 应用示例不表示客户的具体解决方案 它们仅对典型应用提供支持 用户负责确保所述产品的正确使用 这些应用示例不能免除用户在确保安全 专业使用 安装 操作和维护设备方面的责任 当使用这些应用示例时, 应意识到西门子不对在所述责任条款范围之外的任何损坏 / 索赔承担责任 我们保留随时修改这些应用示例的权利, 恕不另行通知 如果这些应用示例与其它西门子出版物 ( 例如, 目录 ) 给出的建议不同, 则以其它文档的内容为准 声明 我们已核对过本手册的内容与所描述的硬件和软件相符 由于差错难以完全避免, 我们不能保证完全一致 我们会经常对手册中的数据进行检查, 并在后续的版本中进行必要的更正 欢迎您提出宝贵意见 版权 西门子 ( 中国 ) 有限公司 2001-2008 版权保留 复制 传播或者使用该文件或文件内容必须经过权利人书面明确同意 侵权者将承担权利人的全部损失 权利人保留一切权利, 包括复制 发行, 以及改编 汇编的权利 西门子 ( 中国 ) 有限公司 IA&DT Service & Support Page 28-28