冗余cpu和单cpu之间的以太网通讯组态可以分为如下两种情况:
1. 单cpu采用h类型的cpu的情况,此时直接在网络连接netpro中组态两站之间的冗余连接s7 connection fault-tolerant,并在编程中使用通讯功能块组态即可。(siemens标准解决方案)
2. 单cpu为非h类型的普通400 cpu的情况,此时netpro中只能组态两站之间的普通s7连接,因此在实际通讯过程中具体使用那个连接进行通讯需要用户在程序中编程判断。本文档将基于pcs7系统,演示冗余cpu与普通单cpu之间的以太网通讯的一种解决方案。本方案非siemens发布的标准解决方案,仅供用户参考学习。
基本原理:
在冗余cpu和单cpu之间组态两个s7连接,使用其中的一个连接作为默认连接在两cpu之间进行通讯,并同时相互传送一个心跳信号(定时脉冲信号,可以使用硬件时钟信号,cpu硬件参数中指定)。在cpu程序中编制一个看门狗,使用心跳信号对此看门狗进行时间复位。如果第一个s7连接通讯故障,通过此连接cpu接受不到心跳信号,看门狗时间溢出后则切换通讯连接到备用s7连接上。当默认连接恢复重新接收到心跳信号后,将连接切换回默认连接。
操作步骤:
step1:打开pcs7,插入as站,组态相应硬件和网络连接,网络连接组态如下图pic1所示,心跳信号设置如图pic2所示。
pic1:网络连接组态
pic2:硬件时钟设置
step2:加入cfc,并对上述原理进行实现,cfc实例如下图pic3所示。
pic3:cfc编程实例
图中使用了两个send_r发送功能块和两个 rec_r接受功能块,分别对应两个s7连接。正常情况下仅使用默认s7连接的一对发送接收功能块。一个自制看门狗time_mon(用于监控心跳信号)和多个接受信号选择器sel_r(用于选择有效的接收信号)。
总结:
以上仅仅提供了冗余系统与单系统之间基于以太网通讯的一种解决方案,供大家参考学习。
在使用通讯功能块进行各站之间的通讯时,可以充分利用通讯功能块的err端对通讯连接状态进行监控。但在冗余系统和普通单系统之间的通讯情况下,使用err端会存在一些问题:如果冗余系统侧的某一cpu处于stop状态,在普通单cpu系统端使用此中断的连接接受数据时,err端不会为true。
另外,通讯功能块中的id端可以用于指定此通讯功能块采用哪一个s7连接进行通讯,但需要注意的是:更改id号后,系统要求重新启动(或重新下载背景db块)。因此无法实现cpu运行过程中程序动态的对id的更改来切换通讯连接通路。
本文档基于如下硬件及软件环境进行的实验,仅供参考。
软件
pcs7
v6.1 sp1
step7
v5.3+sp2+hf7
operation system
windowsxp sp2
硬件
414-4h
6es7 414-3xj00-0ab0 v3.1.1
414-3
6es7 414-3xj00-0ab0 v3.1.0
cp443-1
6se6 443-1ex11-0xe0 v2.2