愚钝的问个问题啊,S7-300的PLC中FC块中如果用给DB0.DBD0赋一个值,等FC结束后DB0.DBD0值是否会保存

就是DB0.DBD0原来有值,然后我调用FC,又往DB0.DBD0中赋值了,数据会不会因为我这次赋值而改变?所说的不带背景数据块数据不能保存是怎么回事?求解答谢谢

1、首先,DB0为系统保留,因此您不可能有修改DB0的可能性。
2、如果您是讲的DB0以外的DB块,那么对于FC来说,DBx.DBD0就是全局数据,数据一定会因为您的赋值而发生改变。
3、之所以不带北京数据块数据不能保存是指:在没有使用全局数据的情况下,FC的内部变量使用系统的临时区,临时区是作为PLC的公用区域,并不是某个FC独占的,因此,数据存在被其他FC,FB,SFB,SFC更改的可能性。追问

能不能给我举个例子在FC中会丢失的内部变量,建立FB的时候是自己需要建立个背景数据块啊还是系统自己就生成了呢?

追答

例如: 在Fc1中,变量定义为Int类型,变量名为AAA,输入变量,定义另外一个变量,BBB,为内部变量 在Fc1中程序写为:
L #AAA
T #BBB

在OB1中,调用Fc1,同时调用系统功能SFC时,那么当调用Fc1时,系统为BBB开辟临时空间L0,此时L0的值就是BBB的值,Fc1调用完毕,返回Ob1,接着调用系统功能SFC,SFC也有内部变量需要开辟临时空间,那么,系统从L0开始,此时,L0的数据将不再是BBB了,也就是被改变了。所以Fc中使用变量遵循先赋值,后使用的原则。

对于Fb来说,仅西门子的PLC需要为其分配背景数据块,其他厂牌均由系统分配,不是由用户分配,从某种意义上来说,西门子并非完全遵守IEC61131-3规范。

温馨提示:答案为网友推荐,仅供参考
相似回答