在回答你的问题之前,有必要对变量声明表有一个基本了解。在STEP7中有两种用来定义符号地址的表格形式:符号表(共享符号)和变量声明表(局域符号),其本质都是为了建立绝对地址与符号地址之间的内在联系,但表格针对的对象不同。共享符号是整个程序所使用的共同符号(用于全局符号定义的表为符号表);而局域符号是某一特定逻辑快(OB、FB、FC等)所使用的临时性标记,只能在特定的逻辑块中进行临时性定义。用于临时性的、局域符号定义的表被称为变量声明表,又称局部变量声明表。

局部变量声明表分为参数(输入参数IN、输出参数OUT、输入/输出参数IN_OUT)和局部变量。局部变量又包括静态变量(STAT)和临时变量(TEMP)两种。参数可在调用块(逻辑块,块中的形参)和被调用块(功能FB有自己自动生成的背景数据块DI,而功能FC只能使用共享数据块,提供调用块的形参的实际参数值,与调用块形式参数一一对应,数据类型必需一致)。静态变量和临时变量是仅供逻辑块本身使用数据,不能用作不同程序块之间的数据接口。

通过以上分析,我们知道所谓局部变量(包括静态变量和暂态变量)都是指对特定的逻辑块而言的,局部变量只是在它所在的块中有效,离开具体的逻辑块谈上述变量是没有意义的,你不能在其他块中调用利用变量(包括静态变量和暂态变量),这是与共享符号不一致的,共享符号可以被任意块调用。在每个逻辑块的前上面部分就是变量声明表的区域,在变量声明表中,用户声明本块中专用的变量,即局部变量包括块的形参和参数的系统属性。你可以在不同的块中使用相同的局部变量符号不会产生冲突。

静态变量(STAT)在PLC运行期间始终被存储。S7 将静态变量定义在背景数据块(针对FB而言,FC和OB无静态变量),当被调用块运行时,能读出或修改静态变量;被调用块结束后,静态变量保留在数据块中;

临时变量(TEMP)是一种在块执行时,用来暂时存储数据的变量,这些数据存储在CPU工作存储区的局部数据堆栈(L堆栈)中。临时变量可以在组织快OB、功能FC和功能块FB中使用,当块执行时它们被用来临时存储数据,一旦块执行介绍,堆栈重新分配,临时变量中的数据将丢失。

在程序块中,如果在块的变量声明表中有局部变量符号,编程是STEP7软化自动在局部变量名前加一个“#”号,如果要访问与局部变量重名的全局变量(在符号表中定义),则全局变量必须使用双引号(如“Symbol”)

回答者:  Bob Wu - 中级工程师  第10级

回答者:

Shanxi-Ji

-

初级工程师&nbsp&nbsp第9级

2011-03-27 10:43:26

以下网友赞了您的问题:

庐州阿亮

填写您的评论...

提问者对于答案的评价:

描述得非常清晰,很有条理,非常感谢!

暂无评论

fb静态区域_fb块中静态变量相关推荐

  1. 博图db块变量导出_如何查看西门子博图软件DB数据块中的变量地址

    西门子博图软件在DB数据块的属性中默认数据块为"优化访问的数据块",数据块中可以看到变量名称符号,而看不到分配在块中的固定地址,如下图所示: 如何查看西门子博图软件DB数据块中的变 ...

  2. TIA PORTAL 西门子博途中怎样设置DB块中的变量数据为保持型或不保持?

    TIA PORTAL 西门子博途中怎样设置DB块中的变量数据为保持型或不保持? 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到网站. 自己用软件测试了以下 ...

  3. fb静态区域_fb 静态数据

    在STAT中定义静态变量,并在INITIAL  VALUE中设定初始值,静态变量的初始值会自动存如对应的背景数据块中 回答者: 天晴09 - 初级工程师&nbsp&nbsp第9级 20 ...

  4. java中静态是什么,java中静态和非静态有什么区别

    首先我们先来说说jvm内存模型: jvm内存分为:方法区.堆.栈和程序计数器. 下面我们来简单的说说方法区.栈和堆: 方法区:是各个线程共享的区域,存放类信息/常量/静态变量: 栈:其实每个线程都会分 ...

  5. oc 协议 回调 静态成员_ios – 在一个块中,__block变量和静态变量之间的实际区别是什么?...

    出于本答案的目的,假设两个示例都包含在 – (void)useGadgetsOnWidgets {-}中. 假设ARC,您的应用程序是单线程的,并且代码是不可重入的(即useGadgetsOnWidg ...

  6. php if 定义变量,无法在PHP中的if块中设置变量的值

    有人可以解释为什么在调用标题($ URL)时,此代码中的$ URL变量始终设置为"Location:unknown.php"?如果我在第一行注释掉声明/初始化代码工作,但我得到一个 ...

  7. 同一个always块中,变量多次赋值问题

    同一个always中,对同一个变量多次赋值时,那么会执行最后一次赋值操作,例如(以下使用Vivado实测): 其中,key按下为低电平,led输出低电平可点亮小灯 情况1: 如果不按下按键key,那么 ...

  8. fb静态区域_FC 与 FB 与 OB 的区别,时间标记冲突与一致性检查 有详细的步骤...

    关键字1 组织块的程序是由用户自己编写. 关键字2 时间标记冲突与一致性检查 有详细的步骤. 关键字3 FC 与 FB 与 OB 的区别? (一)功能 功能块 区别 ? FB 和FC均为 用户编写的程 ...

  9. Java(静态)变量和(静态)代码块的执行顺序

    为什么80%的码农都做不了架构师?>>>    本文讨论Java中(静态)变量.(静态)代码块的执行顺序 首先创建3个类: //1.Foo类,用于打印变量 public class ...

最新文章

  1. has invalid type class 'numpy.ndarray', must be a string or Tensor
  2. postgresql 数据库远程访问
  3. BZOJ.5068.友好的生物(思路)
  4. 一篇文章读懂麦当劳发行MacCoin是什么
  5. js取对象属性需注意
  6. 《挖掘管理价值:企业软件项目管理实战》一2.4 软件设计过程
  7. java 本年第一天_JAVA获取本周 本月 本年 第一天和最后一天
  8. HDU 5515 Game of Flying Circus 二分
  9. C#GDI绘制自定义字体
  10. JRuby 1.6.5发布 Ruby语言的Java实现
  11. 如何修改hosts文件?几种修改hosts文件的方法
  12. linux vi中删除命令,linux vi删除命令的使用
  13. 雷云驱动2从云服务器,雷蛇云驱动 2 for mac(Mac雷蛇鼠标驱动设置工具)V1.88 官方版...
  14. 服务器UDIMM、LRDIMM、RDIMM三种内存的区别
  15. 使用Universal Image Loader- Image can't be decoded
  16. matlab鼠标定位图像中像素点的坐标
  17. 萝卜书摘显示服务器正在维护,萝卜书摘
  18. 微博实时话题和搜索微博实时抓取
  19. 一位北大博士的自白:假如大学可以重来,我一定这样上!
  20. BugkuCTF 游戏过关

热门文章

  1. c语言scanf s用法,C语言scanf与scanf_s
  2. 电视直销价格功能虚假宣传成风 国产手机透支健康
  3. Mybatis中Example的用法
  4. pytorch rnn文本生成 生成小说 AI写小说1
  5. 蚂蚁森林收集能量之AutoJs实现(精度优化版)
  6. 程序员也可以浪漫----倾情奉献一份你值得拥有的浪漫网站源码(情人节快来了~)...
  7. linux删除任务进程命令bkill,​linux 进程和计划任务管理
  8. 一些好用的css和js
  9. 打造教育培训的“师育学大”——线上教育网站建设这件事
  10. 凡科网JS逆向后跳出的滑块验证(base64图片解码之后的破解滑块验证)