两个S7-1500 PLC,保证系统不停机,高危行业都在用
如何使用 S7-1500 冗余 PLC 建立TCP 通信S7-1500 Redundant PLC TCP getting started
摘 要 本文介绍了 S7-1500 冗余 PLC S7-1500H 的 TCP 通信的基本组态和编程。关键词 冗余 PLC,S7-1500R/H,1513R,1515R,1517HKey Words Redundant PLC,S7-1500R,1513R,1515R,1517H,TCP
目 录
如何使用 S7-1500 冗余 PLC 建立 TCP 通信 1
1 S7-1500 R/H 冗余系统 4
网络结构 4系统 IP 介绍 4TCP 通讯编程 5
2 S7-1500H 冗余 PLC 程序下载和监控 11
1 S7-1500 R/H 冗余系统
1.1 网络结构
以 CPU1515H 为例网络结构示意如下图所示:
双CPU网络结构
图 2 S7-1500H 网络结构示意图
CPU 1517H 冗余 PLC 有 PROFINET X1 接口和 X2 接口,TCP 通讯可以将设备(例如Standard PLC)通过交换机接入到任何网络接口中。如果接入 X1 接口,需要通过交换机接入到MRP 环网中,但是并不需要支持 H-sync 转发。如果接入 X2 接口,只需要使用交换机将设备
(例如 Standard PLC)接入就可以,不需要组成 MRP 环网,同时交换机也不需要选择支持
MRP 和 H-sync 转发。
1.2 系统 IP 介绍
对于 S7-1500R/H 冗余系统除了各 CPU 的设备 IP 地址之外,S7-1500R/H 冗余系统还可以分配以下系统 IP 地址:
· 两个 CPU 上 PROFINET 接口 X1 的系统 IP 地址(系统 IP 地址 X1)
· 两个 CPU 上 PROFINET 接口 X2 的系统 IP 地址(系统 IP 地址 X2)
通过系统 IP 地址,可与其它设备(如,HMI 设备、CPU、PG/PC)进行通信。这些设备通常通过系统 IP 地址与冗余系统的主 CPU 进行数据通信。这样,可确保在冗余操作中原来的主 CPU
发生故障后,通信伙伴可在 RUN-Solo 系统状态下与新的主 CPU(之前的备用 CPU)进行数据通信。每个系统 IP 地址都有一个虚拟 MAC 地址,用户可在 STEP 7 中启用该系统 IP 地址。
与设备 IP 地址相比,系统 IP 地址的优势:
· 通信伙伴专与主 CPU 进行通信。
· 即使主 CPU 故障,仍可通过系统 IP 地址与 S7-1500R/H 冗余系统进行数据通信。以下介绍 TCP 通讯的连接的建立与编程。
1.3 TCP 通讯编程
本节以 CPU 1517H 和 CPU1512C 为例演示 S7-1500R/H 冗余 PLC 通过系统 IP 进行 TCP
通讯的步骤。
组态步骤如下:
组态网络
10
使用 CPU1512C
来进行 OUC 通讯,使用TRCV_C 和
TSEND 建立连接
组态网络
通过 TRCV_C 组态通讯参数,参数和 S7-1500H 的参数相对应
同时也进行 OUC 编程,编写对应的 TRCV_C 和 TSEND 程序,均为发送和接受 10
个整数。
指令
2 S7-1500H 冗余 PLC 程序下载和监控
将程序编译后下载到 S7-1517H 冗余 CPU 中,可以在网络视图中在线,查看 OUC 的链接的状态。
监控运行
如图可以看到 OUC 连接已经正常,同时检查程序的发送和接收,是可以进行数据通信的。从下图中可以看到 TSEND_C 的 REQ 信号由 DONE 复位,证明发送确实完成,通信正常。
指令示意
可以通过 RH_GetPrimaryID 获得实际为 Primary 的 PLC 的 ID。
下图中可以看到,程序 RH_GetPrimaryID 读取到的参数为 1,含义是当前 PLC_1 为Primary PLC, PLC_2 为 Backup PLC,通讯是正常且可以发送接收数据。
从读取到的参数可以看到当前是 PLC_1 为 Primary PLC,PLC_2 为Backup PLC,通讯是正常且可以发送接收数据。
调用
当 Primary PLC 故障切换到 Backup PLC 时,可以监控到输出已经为 2,即 PLC_2。同时监视网络连接可以看到网络连接正常。
调用
感谢!
你不知道的PLC的“下载并不初始化”功能有多好用
温馨提示:在工厂运行期间修改PLC程序,错误操作或错误评估源程序可能导致严重的财产损失和人身伤害!!! 所以在没有造成损失前,小编建议仔细阅读小师妹和大师兄的精彩问答噢!
小师妹
工程设备正在运转,修改调试PLC程序怕停机,怕丢数据怎么办?
PLC的程序的包括硬件组态和程序块2个部分,如果修改PLC硬件组态,PLC一定会重启,如果修改PLC程序块,可以做到PLC不停机。下载界面会提示操作人员,数据初始化,停机信息的,慎重操作,不要点的太快喽。
至于丢数据,为了可以编辑已经过调试且在系统上正常运行的 PLC 程序,S7-1200,S7-1500 CPU 支持在运行时对FB块或数据块接口进行扩展。无需将 CPU 设置为 STOP 模式,即可下载已修改的块,而不会影响数据块其他的值。这是一种简单的更改程序的方式。这一加载过程不会对所控制的过程造成负面影响。
大师兄
小师妹
PLC的“下载并不初始化”是怎么工作的?
原则上,每个FB块或数据块都默认有一个存储器预留区域,用于后续的接口更改。在初期并未使用该存储器中所预留的区域。如果确定在编译和下载块之后加载接口更改,则需激活存储器预留区域。之后声明的所有变量都将保存到存储器预留区域中。后续的下载不会影响已经加载变量的值。
如果决定稍后在工厂没有运转时修改程序,那么还可以一次性重置一个或多个块的存储器布局。通过该操作,可以将所有变量从预留区域移动到常规区域。预留存储器清除后,可供以后的接口扩展时使用。
大师兄
小师妹
“下载并不初始化”什么情况下有效?
1、取消“优化的块访问”的FB,DB?无效!
2、增加FB,DB接口或者变量?有效!
3、删除已经存在接口或者变量?无效!
4、修改已经存在接口或者变量的数据类型,保持性,HMI/OPC/WEB可访问?无效!
5、修改变量的起始值,接口默认值,注释?修改块属性中的保护?有效,但本身无需用本功能也不会引起初始化。
大师兄
小师妹
如何使用“下载并不初始化”?
如果希望扩展FB块或数据块的接口,请执行以下步骤,然后在不重新初始化的情况下加载块。
大师兄
1、在默认情况下,所有块在非保持性存储器中都预留有一个100个字节的空间,并在需要时,可以调节存储器预留区域的大小或在保持性存储器中定义其它存储器预留区域;
2、激活存储器预留区域;
3、扩展新的接口或变量。
4、编译块,将块下载到 CPU
小师妹
如何回收占用存储区预留区域?
如果决定稍后在工厂尚未运转时修改程序,那么可以一次性重置块的存储器布局。通过此操作,可以将所有变量从预留存储器移动到常规存储区域中。预留存储器清除后,可供以后的接口扩展时使用。重置预留存储器时,在预留存储器中之前设置的所有变量都将在下次加载时重新初始化。
大师兄
相关问答
西门子S7-200编程了个机械手控制程序,组态王做一个组态,可以不买plc.用组态王做仿真吗?
可以的,把PLC里面的所有信号点、包括中间变量、临时变量全部用组态王内部变量表示,然后用C写脚本程序,程序需要和PLC的程序功能一致。然后建画面和绑点,写脚...
用计算机控制的注塑机还用PLC吗?
概念模糊,PLC也是计算机。如果你在台式机或笔记本上使用的组态软件也具有可编程控制功能,就不需要PLC了。概念模糊,PLC也是计算机。如果你在台式机或笔记本上...
组态王需要连接plc需要实物吗?
1:是的,组态王需要连接plc需要实物。组态王是一种用于编程和监控工业自动化设备的软件,而plc(可编程逻辑控制器)是工业自动化的常用控制设备。为了实现与plc...
更换设备上pLC,还需要重新编程吗?
更换设备上pLC,还需要更新编程吗,如果没有添加设备另外的动作或者修改某项工序,只需要把原来plc上的程序上传到电脑上再下载到更换设备新的plc上即可,是不需...
学习西门子PLC编程,触摸屏组态设计,好学吗?
西门子PLC和组态软件的书籍以及网络上的知识比较多,也比较完善,如果你是一个好学的人,那么可以说还是比较好学的!应该说现在学习PLC知识,当对硬件有一些了...西...
学习PLC是不是要先学习C语言?
虽然PLC(可编程控制器)和C语言都与程序控制有关,但是学习C语言并不是PLC基础入门所必需的。PLC是利用LadderLogic(梯形图)语言进行程序设计和控制的,它是...
组态和plc哪个程序更好?
怎么说呢?这两个没有什么可比性,一个是上位机,一个是控制器,如果说稳定性更高的,应该当属plc怎么说呢?这两个没有什么可比性,一个是上位机,一个是控制器,如...
step7组态断线会停止程序吗?
1.不会停止程序。2.因为在程序运行过程中,如果发生了组态断线,程序会根据预设的处理方式进行相应的处理,例如可以选择重新连接组态,或者暂停程序等,但不会...
PLC未来的发展趋势怎么样,会不会被取缔淘汰?
PLC(可编程控制器)作为自动化工业领域中的三大支柱之一,经过近50年的发展其功能越来越强大。在处理速度和程序容量上发展很迅速,其产品换代也很快。根据PLC的...
plc组态怎么设置?
首先,不同的PLC厂家有不同的编程环境,如西门子的step-7,国产PLC南大傲拓科技的NAPro,需要明确你选用哪个产品;其次,需要了解你的被控对象,根据被控对象点...