S7300临时变量和静态变量的差别

  S7300临时变量和静态变量的差别

  TEMP (临时变量):临时保管在局部数据客栈中的变量。统一级POU的临时变量应用局部数据客栈中的统一块物理存储区,相似于公用的通知布告栏,谁都可以往下面贴通知布告,后贴的通知布告将本来的通知布告掩饰掉落。每次调用POU以后,不再保管它的临时变量的值。每次调用FC和FB时,起首应初始化它的临时变量(写入数值),然后再应用它,简称为先赋值后应用。

  STAT(静态变量):保管在配景数据块中,配景数据块相当于每次调用功用块时对应的被控对象的公众数据仓库。功用块履行完后,配景数据块中的数据不会损掉,以供下次履行功用块时应用。

  所以在功用块履行完后需求保管的变量应应用静态变量。

  静态变量:FB配景数据块独有的变量类型。

  1、有相对地址。

  2、有保管功用。

  算作为配景数据块调用后,它有自己的相对地址.用法可以等价于M.DB。它仅仅作为FB的一种方法参数类型.分歧于INT.OUT.IN_OUT的是当FB被调用是它不能作为参数停止输入输入.

  而分歧于TEMP的是:TEMP是局部变量,它只在本块,本扫描周期内保持数据,没有记忆功用,而STAT有记忆功用.假设没有依次去赋值,它的数据将不时保管.

  其余留心一点:假设采取了多重配景数据块STAT一致于TEMP

  在回答你的后果之前,有需要对变量声明表有一个基本了解。在STEP7中有两种用来定义符号地址的表格方法:符号表(共享符号)和变量声明表(局域符号),其实质都是为了建立相对地址与符号地址之间的内涵联系,但表格针对的对象分歧。共享符号是全部依次所应用的合营符号(用于全局符号定义的表为符号表);而局域符号是某一特定逻辑快(OB、FB、FC等)所应用的临时性标记,只能在特定的逻辑块中停止临时性定义。用于临时性的、局域符号定义的表被称为变量声明表,又称局部变量声明表。

  局部变量声明表分为参数(输入参数IN、输入参数OUT、输入/输入参数IN_OUT)和局部变量。局部变量又包罗静态变量(STAT)和临时变量(TEMP)两种。参数可在调用块(逻辑块,块中的形参)和被调用块(功用FB有自己主动生成的配景数据块DI,而功用FC只能应用共享数据块,供给调用块的形参的实践参数值,与调用块方法参数一一对应,数据类型必须不合)。静态变量和临时变量是仅供逻辑块自身应用数据,不能用作分歧依次块之间的数据接口。

  经过以上剖析,我们知道所谓局部变量(包罗静态变量和暂态变量)都是指对特定的逻辑块而言的,局部变量只是在它地点的块中有效,离开具体的逻辑块谈上述变量是没成心义的,你不能在其他块中调用应用变量(包罗静态变量和暂态变量),这是与共享符号不不合的,共享符号可以被任意块调用。在每个逻辑块的前下面局部就是变量声明表的区域,在变量声明表中,用户声明本块中公用的变量,即局部变量包罗块的形参和参数的系统属性。你可以在分歧的块中应用相反的局部变量符号不会发生抵触。