在回答你的问题之前,有必要对变量声明表有一个基本了解。在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. iOS架构-制作属于自己的cocoapods以及podspec文件讲解(20)
  2. jvm配置参数,查看大对象直接分配到老年代
  3. LeetCode 552. 学生出勤记录 II(动态规划)
  4. access 动态 top 条件_2020年10月抖音直播营销报告_行业动态
  5. laydate日期插件使用
  6. layer——极简的jquery弹出层插件
  7. json的的解析方法
  8. pmp 第4章 错题整理(不定时更新)
  9. php 发送网易企业邮箱
  10. 【K70例程】003读取LM75A温度传感器(I2C)
  11. linux 使用shell/python编写钉钉自动监控报警脚本
  12. 挂一张表,省的再瞎眼
  13. 各个浏览器对应的驱动文件 driver
  14. 根据六边形边长求六边形面积
  15. chromel浏览器老是提示adobe flash player已过期
  16. 罗克韦尔自动化启用位于硅谷的新建电动汽车创新中心
  17. linux分区表mbr改gtp,免重装系统 手把手教你MBR转GPT分区表
  18. ZOJ3587 Marlon's String KMP技巧处理
  19. 精通移动App测试实战:技术、工具和案例
  20. 手机便签内容如何保存到电脑

热门文章

  1. 当顶尖网络安全公司卡巴斯基卷入政治旋涡
  2. matlab求因子载荷矩阵,因子分析中因子旋转用matlab怎么实现?
  3. ROC与AUC,DET与EER,minDCF,Identification Accuracy
  4. C#学生管理系统——班级列表(查询功能)
  5. 郑州大学python程序设计试题及答案_C 语言程序设计(2016 年秋季学期课程)
  6. Modify Android dalvik vm heapsize
  7. 课程设计————学生信息管理系统(包含历代思路和代码)
  8. 大厂之路一由浅入深、并行基础、源码分析一 “J.U.C”之collections框架:ConcurrentHashMap扩容迁移等方法的源码分析
  9. 《鬼武者3》全BOSS攻略方法
  10. 利用堆实现堆排序优先队列