如何实现400H与S7-1500 之间的S7通讯

1、400H 与 S7-1500 通讯方案

西门子 400H 高可用性冗余控制器,自推出以来,在市场中得到了广泛的应用。S7-400H可满足对现代自动化系统在可用性、智能化和分散化方面提出的高要求。该系统还提供了采集和准备过程数据所需的所有功能,其中包括对装配和设备进行的开环控制、闭环控制和监视的功能。通讯带有集成 PN 口以及 PROFIBUS DP 接口,灵活应用于多种通讯协议,并且可以通过通讯模块扩展多个接口,可用性高。

S7-1500 是西门子近年推出的新 PLC 产品系列,在各行各业都得到了极为广泛的应用。以CPU1516 为例,控制器本身集成了三个接口,一个带两个物理接口、支持 IRT 的 Profinet接口X1,一个以太网接口 X2,一个 Profibus DP 接口 X3。

如何实现400H与S7-1500 之间的S7通讯


在实际工程项目中,经常会遇到 400H 和 S7-1500 通讯的问题,基于两类控制器所支持的接口而言,有三种可能的通讯方式:Profibus DP、以太网。考虑到 S7-1500 和 400H 集成的DP 接口均只能用作 DP 主站,所以两者之间不能采用 Profibus DP 的主从通讯方式。

本文主要介绍通过以太网以及 PCS7 工业库实现 400H 和 S7-1500 之间的通讯。

要实现 H 系统集成 PN 口与 S7-1500 的通讯,可以采用基于 S7 连接的方式,配合“H_Status”功能块来确定激活哪一个 CPU 的连接完成数据交换。

本文采用的网络结构如下所示:


如何实现400H与S7-1500 之间的S7通讯


400H 与 1500 通讯网络结构图

2、400H 与 S7-1500 通讯组态

2.1 S7-1500 通讯组态

系统采用 TIAPortal V14 Update1 软件,控制器采用 1516-3PN/DP 控制器,组态控制器如下图所示。

如何实现400H与S7-1500 之间的S7通讯


在设备视图中选择相应的 PS 电源: 6ES7 507-0BA00-0AB0 , 1516-3PN/DP CPU : 6ES7516-3AN00-0AB0 ,选择对应用于通讯的网口配置以太网地址(本文配置的地址为192.168.1.16),本文中 1516-3PN/DP 有三个用于以太网通讯的网口,选择和 400H 冗余通讯的网口,本文选择以太网口 2,具体配置如下图。

如何实现400H与S7-1500 之间的S7通讯


注意需要设置 CPU 的连接机制属性:允许来自远程对象的 PUT/GET 访问

如何实现400H与S7-1500 之间的S7通讯


定义用于通讯的数据块,本文定义用于接收的数据块为 DB30,用于发送的数据块为 DB40,数据类型为 int 型,Array[0..15],如下图所示。

如何实现400H与S7-1500 之间的S7通讯


定义用于接收和发送的数据块

如何实现400H与S7-1500 之间的S7通讯


定义用于接收和发送的数据类型

此处需要注意设置 DB 块的属性,取消“优化的块访问”,如下图所示:

如何实现400H与S7-1500 之间的S7通讯


DB 块的属性设置

点击菜单栏中的下载按钮,把程序下载到对应的 CPU 中,如下图所示:

如何实现400H与S7-1500 之间的S7通讯


程序下载

S7-1500 方面的组态完成,接下来是对 400H 方面的组态。

2.2 400H 通讯组态

系统采用 PCS7 V9.0 软件,控制器采用 412-5H 控制器,组态控制器如下图所示,拖入UR2-H机架,选择 CPU412-5H:6ES7412-5HK06-0AB0 并配置以太网地址 192.168.1.133以及192.168.1.144(双击 PN-IO 设置 IP 地址)

如何实现400H与S7-1500 之间的S7通讯


400H 硬件组态

打开 NetPro 网络组态,配置 400H 与 S7-1500 的 S7 连接,具体如下图所示,输入 Local ID以及对应的 S7-1500 控制器的 IP 地址,选择“S7 未指定的连接”

如何实现400H与S7-1500 之间的S7通讯


建立未指定的 S7 连接

在属性中设置 Local ID=1,填写 1516-3PN/DP 设置的以太网 IP 地址,主从 CPU 均需配置“S7 未指定的连接”,本文从 CPU 的 Local ID=2。

如何实现400H与S7-1500 之间的S7通讯


设置连接参数

点击 Address Details,设置连接资源属性,此处 400H CPU 选择 connection resource=10,连接伙伴 connection resource=3,连接伙伴需要设置机架号和槽号,参考 1500 之前的硬件组态,rack=0,slot=1,400H 从 CPU 选择 connection resource=11,400H CPU 的机架号和槽号为默认设置即可。

如何实现400H与S7-1500 之间的S7通讯


设置 TSAP 号

网络组态设置完成之后,对通讯的 DB 块以及 CFC 程序进行编写,本文设置的用于发送的数据块为 DB30,用于接收的数据块为 DB40,对应的数据类型和 1500 保持一致,程序编写调用“H_Status”对 CPU 的状态进行监视,调用 PCS7 V9.0 Industry Lib S7 V90 中用于通讯的S7Get(FB1198),S7Put(FB1199)功能块,具体见下图:

如何实现400H与S7-1500 之间的S7通讯


DB 块的建立

如何实现400H与S7-1500 之间的S7通讯


读写程序的编写

“H_Status”用于读取 CPU 的 master 状态,如图所示“R0_MSTR”为 RACK0 机架的CPU 处于主 CPU 的状态,“R1_MSTR”为 RACK1 机架的 CPU 处于主 CPU 的运行状态,通过切换来调用 S7Put,S7Get 块来进行数据交换;

S7Put 需要设置的管脚为:

START:为 1 时开始执行读写操作;

KOM_ID:对应“S7 未指定连接”的 Local ID;

DBNO_SRC:400 侧用于发送的数据块地址,本文为 DB30;

ADDR_SRC;400 侧用于发送的数据块的起始地址,本文从 0 地址开始;

DBNO_DST:1500 侧用于接收的数据块地址,本文为 DB30;

ADDR_DST;1500 侧用于发送的数据块的起始地址,本文从 0 地址开始;

LENGTH:设置用于通讯的地址区域的长度,本文设置为 4;

S7Get 需要设置的管脚为:

START:为 1 时开始执行读写操作;

KOM_ID:对应“S7 未指定连接”的 Local ID;

DBNO_SRC:400 侧用于发送的数据块地址,本文为 DB40;

ADDR_SRC;400 侧用于发送的数据块的起始地址,本文从 0 地址开始;

DBNO_DST:1500 侧用于接收的数据块地址,本文为 DB40;

ADDR_DST;1500 侧用于发送的数据块的起始地址,本文从 0 地址开始;

LENGTH:设置用于通讯的地址区域的长度,本文设置为 12;

建立完成之后,把硬件组态,网络组态以及程序下载到 400H CPU 中。

3、400H 与 S7-1500 通讯测试

首先查看网络组态中建立的 S7 未指定的连接是否建立,如下图所示,主从 CPU 的连接状态都是 set up 的状态,证明网络已经建立正常。

如何实现400H与S7-1500 之间的S7通讯

400H 主从 CPU 网络连接状态

在线监视程序是否成功读写数据

如何实现400H与S7-1500 之间的S7通讯

RACK0 机架 CPU 读写数据

RACK0 机架 CPU 与 RACK1 机架 CPU 进行主备切换时,通过“H_Status”进行切换,读取数据,如下图所示:

如何实现400H与S7-1500 之间的S7通讯

RACK1 机架 CPU 读写数据

程序数据读取状态,下图所示:

如何实现400H与S7-1500 之间的S7通讯


DB 块数据读写


分享到:


相關文章: