首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >PLC编程里面的临时变量Temp和静态变量Static!

PLC编程里面的临时变量Temp和静态变量Static!

作者头像
Hello工控
发布2025-12-31 11:46:40
发布2025-12-31 11:46:40
2470
举报
文章被收录于专栏:Hello工控Hello工控

在学习和使用ST语言编写PLC程序,或者西门子的SCL语言开发程序,都会对这几个概念比较陌生!

如果以前只是做梯形图程序,确实也不需要关注这些。但是,我们在熟悉PLC后,ST语言作为必须会的编程语言之一,也越来越多的工程师在实际工作中使用了。

我们这期重点说说静态变量和临时变量之间的区别,和使用范围。

内存分配

首先在介绍这两个变量类型前,我们先了解内存分配。在计算机还是PLC内部所有的变量都有自己的存储空间。不同的变量类型也是在不同的区域。

我们参照计算机里面对于内存的分配如下图所示:

1. 代码区(Code Segment/Text Segment)

可执行文件中的代码段被加载到代码区,这个区域的数据是只读的。

2. 静态数据区(Static Data Segment)

对应可执行文件的.data.bss段。这个区域在程序启动时就被分配好,并一直存在到程序结束。全局变量、静态局部变量、静态全局变量都存放在这里。它们在main函数执行之前就被创建并初始化,在整个程序运行期间始终存在。它们的生命与进程同在。

3. 栈区(Stack Segment)

保存了函数内部的非静态局部变量、函数的参数、返回地址等等。这里的地址是由编译器自动管理的。随着函数调用而分配,随着调用结束而释放。变量与内存的生命周期和函数的作用域是绑定的。

4. 堆区(Heap Segment)

这里的内存由程序代码手动控制。

以上是计算机内部对于内存的分析,PLC虽然不是计算机,但也属于微型控制器,其内存也是必不可少的。只不过相对来说,PLC更加小型和专用。

临时变量和静态变量

关于PLC中的临时变量和静态变量的声明,我们需要了解到PLC的变量作用域,一般来说,声明的变量必须在相对应的作用域:

一般来说,临时变量只在VAR_TEMP,END_VAR之间,例如下图的iTemp变量:

上述iCount作为静态变量,其值会一直保存。而iTemp在每次调用结束后被重置。

而在西门子博途中,静态变量和临时变量的关键字和ST标准里面有些差异:

可以参考1中的内存分配,Temp主要是分在动态内存区域的栈中,用完后即销毁,不会记忆该值。而Static在静态存储区,程序运行后,该区域还会记忆该值。

图片
图片

结论

有效地使用这两种类型变量,可以提高PLC内部运行效率,更大地发挥PLC的性能。虽然,初学时不需要区分那么细致,但是,在后期程序的优化和标准化等,就需要灵活应用这些作用域。

通常推荐优先使用局部临时变量,只在确实需要时才使用 static 变量。不同场合需要按照实际需求选择:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-12-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Hello工控 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 内存分配
  • 1. 代码区(Code Segment/Text Segment)
  • 2. 静态数据区(Static Data Segment)
  • 3. 栈区(Stack Segment)
  • 4. 堆区(Heap Segment)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档