​什么是静态变量?它与临时变量有什么区别?

什么是静态变量?它与临时变量有什么区别?

前几天有网友询问关于问静态变量的问题,考虑到该问题的普遍性,今天这篇文章我们就来介绍下什么是静态变量?什么是临时变量?二者之间有什么区别?

我最早接触“静态变量”的概念是在计算机C语言的编程中,清楚的记得它需要用"static"关键字来声明。静态变量(Static Variable)其实也是一种变量(Variable),因此在介绍静态变量(Static Variable)之前,我们先来介绍下在计算机和PLC的编程中“变量(Variable)”的概念。

所谓“变量”,是在程序的运行过程中,其值可以根据某些条件而发生变化的量。与“变量”相对的是“常量(Constant)”,顾名思义,常量的值在整个程序的运行中保持不变。

变量的名字称为“变量名”,变量名通常是一个助记符,用来表示一个物理地址。在这个地址上存放着变量的值。

变量有两个特性:作用域和生命周期。

变量的作用域是指变量的作用范围,也就是在哪些范围内该变量是有效的。根据作用域的不同,变量可以分为全局变量(Global Variable)和局部变量(Local Variable)。

全局变量在整个程序范围内都有效。

在C语言中,全局变量是在函数外部声明的变量。比如下面C语言代码中的“a”和“x”都是全局变量:

注:由于C语言从上而下执行,全局变量x并不能在函数func1中访问。

在西门子S7系列PLC的编程中,那些存放在公共存储区的变量都属于全局变量。公共存储区包括输入缓存区(I)、输出缓存区(Q)、位存储区(M)、全局数据块(Global DB)、定时器(T)、计数器(C)等等。比如,位存储区的M0.0,你可以在主程序(OB)或子程序(FB、FC)中访问它,它是全局的。

局部变量(Local Variable)是只能在某个子程序(FB或FC)中访问的变量。也就是说,局部变量是私有的,子程序(FB或FC)只能访问其自身内部定义的变量,而不能访问其它子程序内部定义的变量。

从生命周期来看,全局变量的生命周期是整个程序的运行周期。也就是说,只要PLC还运行用户程序,全局变量就一直有效。

而局部变量的生命周期则取决于其存放的位置。

对于S7系列PLC而言,局部变量有两个存放的位置:临时变量存储区(堆栈)和背景数据块(Instance DB)。

临时变量存储区(堆栈),也称为局部变量存储区(Local Memory),用来存放FB或FC在运行过程中的临时变量。

在S7系列PLC中,FB、FC或者OB都被称为“程序组织单元(POU,program organizational unit)”。PLC为每个POU分配一定数量的临时变量存储区,在S7-300/400 PLC中,这个区域的大小为256字节;在S7-200 Smart PLC中,这个区域的大小为64字节。

临时变量存储区中的变量称为“临时变量”,它们只在当前POU运行时有效。当POU运行结束后,该变量将被释放(无法保存)。

注:当POU由于中断而被挂起时,其临时变量会被保存,以便下次中断现场恢复后继续执行。

如果想保存程序运行的中间值怎么办呢?答案是使用静态变量(Static Variable)。

在博途(TIA Portal)环境或Step7开发环境中,功能块(FB)接口有“Static(STAT)”一项。所有在“STAT”栏内定义的变量都将会被存放到背景数据块中。在FB运行结束后,“STAT”中定义的变量不会被释放。这种变量称为“静态变量”。如下图中的变量“STAT_test1”和“STAT_test2”:

注:FB中的IN、OUT参数也会保存到背景数据块中。背景数据块中的数据只能被拥有它的功能块(FB)访问。

说到这里,你应该明白了吧?静态变量从作用域上分属于局部变量;从生命周期上来看,它与用户程序的生命周期相同。临时变量也属于局部变量,不过其生命周期短,仅在POU运行的过程中有效。

好了,关于静态变量和临时变量就先介绍到这里

结束!!!

相关推荐

​国内第一超跑俱乐部SCC为何这么火?

​国内第一超跑俱乐部SCC为何这么火?

132

国内第一超跑俱乐部SCC为何这么火? 国内第一超跑俱乐部SCC为何这么火? SCC超跑俱乐部 SCC超跑俱乐部是目前中国影响力最大的超跑俱乐部,创始人为张宽,李甫,实际上是14个人共创...

​微信更新 五大功能你Get到几个?

​微信更新 五大功能你Get到几个?

94

微信更新 五大功能你Get到几个? 近日,稳坐社交软件头把交椅的微信做出了更新,推出了诸多改进的微信6.5.6版本。新版本增加了五项功能。不光有这两天大家热议的“三天朋友圈”选...

​乙肝药恩替卡韦价差18倍,药物大降价已开始!

​乙肝药恩替卡韦价差18倍,药物大降价已开始!

147

乙肝药恩替卡韦价差18倍,药物大降价已开始! “4+7”药品集中采购实施以来,试点城市不少药品中标价格断崖式下跌,其中,正大天晴的恩替卡韦分散片价格为17.36元(0.5mg*28片),平...

​永安溪漂流:感受刺激与宛如仙境的奇妙之旅!

​永安溪漂流:感受刺激与宛如仙境的奇妙之旅!

54

永安溪漂流:感受刺激与宛如仙境的奇妙之旅! 永安溪,听起来就像是一个仙境的名字。没错,这里是真的有点仙。不仅有被喻为“幽谷溪流”的清澈见底的溪水,还有让你感受到似水...

​RTX2060与GTX1060同台竞技,甜品级谁更香?

​RTX2060与GTX1060同台竞技,甜品级谁更香?

136

RTX2060与GTX1060同台竞技,甜品级谁更香? 刚进入2019年,英伟达公司就搞出大事情,那就是在CES 2019国际消费电子产品展上正式推出万众期待的RTX 2060显卡。不仅如此,各显卡厂商铺货速...

​超级长寿动物:裸鼹鼠

​超级长寿动物:裸鼹鼠

102

超级长寿动物:裸鼹鼠 哈喽大家好,今天说永生动物系列:裸鼹鼠。为什么说它呢,两点原因:1.裸鼹鼠有超强的抗癌能力,整个鼠生不用担心得癌症 2.裸鼹鼠是啮齿类动物,啮齿类动...

​山东省泰安市市情

109

山东省泰安市市情 泰安(鲁J) 泰安市,山东省辖地级市,位于山东省中部,北依省会济南,南临济宁,东连临沂,西濒黄河,总面积7762平方千米 。北距省会济南市66.8千米。截至202...

​卧底归来第2集剧情

​卧底归来第2集剧情

76

卧底归来第2集剧情 卧底归来第2集剧情,打草惊蛇计划开展。方庆隆接到电话,电话中的人和房庆隆谈到金飞和莫钦。而金飞和莫钦将策划一场更大的阴谋,不过金飞被抓。而金飞有...

​中国著名四大名山

​中国著名四大名山

113

中国著名四大名山 中国著名的四大名山是五台山、峨眉山、普陀山和九华山。这四座山脉以佛教和道教为背景,供奉文殊菩萨、观音菩萨、普贤菩萨和地藏菩萨。这些山脉以其丰富的宗...

​(实用帖) 如何区分手工毛边纸与机制毛边纸?

​(实用帖) 如何区分手工毛边纸与机制毛边纸?

163

(实用帖) 如何区分手工毛边纸与机制毛边纸? 毛边纸的由来: 毛边纸,古代汉族劳动人民用竹纤维制成的淡黄纸。明末江西出产竹纸,纸质细腻,薄而松软,呈淡黄色,没有抗水性...