热线上经常有客户咨询软冗余的问题,其中有很大一部分问题是冗余链接建立不了,即两个CPU之间不能同步冗余数据。这种情况下,首先就要检查相关功能块的参数设置,其中很容易出现的一个问题就是调用冗余通信块 FB101“SWR_ZYK” 时生成的背景数据块长度不对。这种问题的隐蔽性很强,一旦出现非常不容易排查。
下面我们就来分析一下出现这种问题的原因,进而避免问题的产生。这里我们以两个S7-400 CPU之间建立ISO 链接为例进行说明,这种情况下需要用到的功能块如图1所示。
图1
首先我们在 OB1 中调用功能块 FB101, 并为其生成背景数据块 DB5,这时我们来看看背景数据块 DB5 的长度。如图2所示,可见实际生成的 DB5 只有 100 个字节,正常的 DB5 长度应该为 358 个字节,DB5长度错误。
图2
如果这时我们下载程序到 CPU 中,则 CPU SF 亮红灯,CPU 诊断缓冲区报写区域长度错误,如图3所示。
图3
如果实际中遇到了这种问题,可以先删除已经生成的错误的 DB5,然后在程序中加载好FB104 “SWR_AG_COM” 后再重新为 FB101 生成一个新的背景数据块 DB5。这时我们再查看 DB5 的块长度为 358 个字节,如图4所示,问题解决。
图4
OK,回过头来分析一下问题的根源。通过上面的解决办法我们不难发现,调用 FB101 并为其生成背景数据块之前必须先加载 FB104 这个功能块到程序中。那么 FB101 与 FB104 之间是什么关系呢?通过查看FB101 的块属性,如图5所示,可以看到在 FB101 中调用了 FB104,所以在调用 FB101 之前需要先将FB104 加载到程序。
图5
类似 FB104 这种在其他块中被间接调用的块非常容易被忽视,所以在实际的应用过程中要特别留意一下。顺便说一下类似 FB104 这种块在程序中的加载方法:
1、可以先在程序中调用一次 FB104,然后再将 FB104 删除。
2、直接从软冗余库中将 FB104 拷贝到当前程序中。
更多关于软冗余的资料可以参考:
《SIMATIC S7-300/S7-400 SIMATIC S7 的软冗余》手册,下载链接:
http://support.automation.siemens.com/CN/view/zh/1137637
下载中心文档:
A0039 软冗余的原理、调试和例程(更新版)
F0462 SIEMENS PLC 系统软件冗余调试的常见问题