C语言里静态变量是从栈里分配的,当函数执行完后会自动释放。那么STEP7中FB里的静态变量在系统分配的机制是否也是如何?是否在FB执行完之后会自己释放?
STEP7中引用静态变量stat有啥意义?
最佳答案
静态变量是FB专有的,其是与背景块一一对应,可以这么说静态变量就是FB的背景数据块。其作用就是背景数据块的作用,背景块的作用就是,我自己编自己的FB,我在声明表里定义好自己的静态变量,使用很方便不用考虑使用其它全局变量时,要知道哪个是空的,哪个是别人用过的,就是重叠问题。尤其是多人编一个系统时就更有用了,用FC就没有这个优势。每次调用功能块( FB )时,会被分配一个背景数据块。此 FB 的实际参数和静态参数都被存储在该背景数据块中。在 FB 中声明的变量决定背景数据块的结构。背景指定了功能块的调用 。
FB2可以使用FB1背景数据块中的静态变量,但需要满足以下条件:(即使用多重背景时应注意的问题):
1.在管理多重背景的功能块的变量声明表中,为被调用的功能块的每一次调用定义一个静态(STAT)变量,以被调用的功能块的名称(如FB1)作为静态变量的数据类型。
2.应生成需要调用的功能块(如FB1)。
3.在管理多重背景的功能块(如FB2)必须设置为多重背景功能。
4.必须有一个背景数据块(如DB1)分配给管理多重背景的功能 。背景数据块中的数据是自动生成。
5.多重背景只能声明静态变量(声明类型为“STAT”)。
其具体可参考:
1.为什么使用背景数据块,它与全局数据块有什么区别? :
http://www2.ad.siemens.com.cn/Download/Upload/AS/FAQ/15360455.pdf
2.多重背景数据块的使用 :
http://wenku.baidu.com/view/5dd57991daef5ef7ba0d3c2d.html
提问者对于答案的评价:
谢谢
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc249384.html