局部数据堆栈

2021-07-23 浏览次数:129
局部数据堆栈

功能

创建组织块时可以声明临时变量 (TEMP),这些临时变量仅在块执行时可用,块执行完毕后将被覆盖。 每个组织块还需要 20 个字节的本地数据用作启动信息。

CPU 只为当前正在执行的块的本地数据临时变量提供有限的存储器空间。 此局部存储器又称为本地数据堆栈或 L 堆栈,其大小取决于具体的 CPU。 默认情况下,本地数据堆栈等量分配给各个**等级。 这意味着每个**等级在本地数据堆栈中拥有各自的区域。 这可确保高**级及其 OB 总是拥有自己的本地数据空间。

在**次访问本地数据堆栈之前,必须本地数据进行初始化。

本地数据堆栈存储以下数据:

块本地数据的临时变量

组织块的启动信息

有关参数传送的信息

梯形图程序中逻辑运算的中间结果

下图显示了本地数据到**等级的分配:


在此本地数据堆栈中,OB 1 首先被 OB 20 中断,而 OB 20 又被 OB 81 中断。



小心

OB 及相关块的所有临时变量 (TEMP) 都存储在本地数据堆栈中。 如果在执行块时使用大量嵌套层,则本地数据堆栈可能会溢出。

如果**过程序的允许本地数据堆栈大小,则 S7-CPU 切换到 STOP 操作模式。

可通过“显示程序信息”(Show program information)功能来了解所需本地数据的概要情况。

请勿忘记同步错误 OB 的本地数据要求。



将本地数据分配给**等级

对于 S7-300: 每个**等级和每个块的本地数据较大数量受到 S7-300 的限制(请参见 CPU 的技术数据)。

对于 S7-400: 本地数据的总体较大数量受到限制(请参见 CPU 的技术数据)。 可以在 CPU 参数分配的框架内将可用的本地数据自由分发到各个**等级。 过程中的本地数据不得**出较大数量。


shtxjd.cn.b2b168.com/m/
top