新浪博客

TIA里面Statia和Temp的区别

2018-08-07 21:47阅读:
TIA里面Statia(静态局部数据)和Temp(临时局部数据)的区别
1,TEMP (临时变量):只能在当前块使用,不能保存数据只能起中间过渡作用,如做数据运算程序时,使用临时变量来暂存一些运算结果,DB数据块数据是全局变量,带掉电保存功能。注意临时变量不能在上升下降沿使用。TEMP是临时的,在这一周期执行完后就清零了,做数据保存和脉冲什么的都不要用临时变量。临时变量有个好处就是不占数据空间。
临时变量Temp,在函数内部使用,不提供外部的接口。我们常常把temp变量用于数据转换的中间值,或者用于循环变量,比如用于For 或者While循环。由于Temp是局部变量,它的值是随机,使用必须初始化,对其赋值 TEMP (临时变量):暂时保存在局部数据堆栈中的变量。
同一级POU的临时变量使用局部数据堆栈中的同一块物理存储区,类似于公用的布告栏,谁都可以往上面贴布告,后贴的布告将原来的布告覆盖掉。
每次调用POU之后,不再保存它的临时变量的值。每次调用FC和FB时,首先应初始化它的临时变量(写入数值),然后再使用它,简称为先赋值后使用。
是一种在块执行时,用来暂时存储
数据的变量,这些数据存储在CPU工作存储区的局部数据堆栈(L堆栈)中。临时变量可以在组织快OB、功能FC和功能块FB中使用,当块执行时它们被用来临时存储数据,一旦块执行介绍,堆栈重新分配,临时变量中的数据将丢失。


2Statia(静态变量):保存在背景数据块中,背景数据块相当于每次调用功能块时对应的被控对象的私人数据仓库。
在PLC运行期间始终被存储。300将静态变量定义在背景数据块(针对FB而言,FC和OB无静态变量),当被调用块运行时,能读出或修改静态变量;被调用块结束后,静态变量保留在数据块中;
功能块执行完后,背景数据块中的数据不会丢失,以供下次执行功能块时使用。
因此,在功能块执行完后需要保存的变量应使用静态变量。


以下是实例,下图使用了一个Temp (Motor88)作为变量来控制起保停,结果可以看出Motor88输出线圈在无导通的情况下,分支常开触点依然出现导通状态,无法复位。解决方法:将Motor88从Temp中移动到Static中,可以看到下图问题已解决。
TIA里面Statia和Temp的区别
将Motor88从Temp中移动到Static中,可以看到下图问题已解决
TIA里面Statia和Temp的区别

我的更多文章

下载客户端阅读体验更佳

APP专享