汉语大全>西门子自动化>软冗余系统中如何避免FB101的背景数据块长度错误

软冗余系统中如何避免FB101的背景数据块长度错误

详细内容

经常有客户咨询软冗余的问题,其中有很大一部分问题是冗余链接建立不了,即两个CPU之间不能同步冗余数据。这种情况下,首先就要检查相关功能块的参数设置,其中很容易出现的一个问题就是调用冗余通信块FB101"SWR_ZYK"时生成的背景数据块长度不对。这种问题的隐蔽性很强,一旦出现非常不容易排查。
下面我们就来分析一下出现这种问题的原因,进而避免问题的产生。这里我们以两个S7-400CPU之间建立ISO链接为例进行说明,这种情况下需要用到的功能块如图1所示。



图1
首先我们在OB1中调用功能块FB101,并为其生成背景数据块DB5,这时我们来看看背景数据块DB5的长度。如图2所示,可见实际生成的DB5只有100个字节,正常的DB5长度应该为358个字节,DB5长度错误。



图2
如果这时我们下载程序到CPU中,则CPUSF亮红灯,CPU诊断缓冲区报写区域长度错误,如图3所示。



图3
如果实际中遇到了这种问题,可以先删除已经生成的错误的DB5,然后在程序中加载好FB104"SWR_AG_"后再重新为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拷贝到当前程序中。