多重背景数据块的问题

我们每调用一次功能块FB就必须新建一个背景数据块DB与之配对,如果我们只是调用1次2次还好说,如果调用次数非常多,那我们就必须建立非常多的背景数据块与之进行配对,这样一来整个程序就会显得非常凌乱,而且哪个DB块和哪个FB块进行配对也是看不出来的。西门子为了解决这个问题,在Step 7中提供了多重背景的功能,使用多重背景数据块可以有效地减少数据块的数量,其编程思路是创建一个比FB1级别更高的功能块,如FB10,对于FB1的每一次调用,都将数据存储在FB10的背景数据块中。这样就不需要为FB1分配任何背景数据块。

问题1、多次调用FB1需要建立很多与之配对的背景数据块,那为什么不能将所有数据都放在一个背景数据块里呢?当然除非数据量大于32K
问题2、每次调用FB1就将它的数据存储在FB10的背景数据块里,为什么FB10只需一个背景数据块就可以存储这么多数据,而不是像FB1那样需要很多数据块?
问题3、将每次调用FB1的数据存储在FB10的一个背景数据块里,这样不是更乱吗,更找不到那个数据对应的是那个功能了?
问题4、这么多数据都放在FB10的一个背景数据块,不会冲突吗?

最佳答案

你首先要明白西门子的设计思想,你所疑惑的这些东西西门子肯定都有考虑的!
    首先要理解FB,是带有独立储存空间的功能函数,注意是独立空间,因此不论是单独背景数据块还是多重背景数据块,都必须保持储存空间唯一性。
    因此,每一个FB对应一个独立的DB块,既符合常规思路,也容易理解,而且在一些简单的应用也比较方便。但是在一些复杂应用场合,需要大量调用DB块,容易造成空间浪费,因此多重背景数据块很好解决此问题。
    不管是FB1、FB2、还是FB3,只需要在FB10建立FB1、FB2、FB3类型参数变量,然后在FB10里直接调用对应FB,并连接对应的参数变量,然后编译保存。此时,若FB10连接DB10则系统自动在DB10建立FB1、FB2、FB3的背景数据块。此种模式下,FB1、FB2、FB3可以认为是FB10建立变量的一种数据类型,DB10里自动建立的变量,自动添加前缀,地址自动续接,因此可以建立更多背景数据,切不会冲突!

提问者对于答案的评价:
谢谢了,很清晰了

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc168912.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2017年6月11日 下午3:21
下一篇 2017年6月11日 下午3:21

相关推荐