S7-300/S7 400的局部数据寻址

问题:
变量是如何储存在临时局部数据中的?

解答:
L 堆栈永远以地址“0”开始。
在 Ln堆栈中,会为每个数据块保留相同个数的字节,作为存放每个块所拥有的静态或局部数据。
当某个块终止时,那么它的空间随之也被重新释放出来。

指针总是指向当前打开块的第一个字节。

实例:

运行等级 L堆栈中的字节数 指针
调用 OB1 (带有 20n个字节的静态[固定的]数据和局部数据的10个附加字节) 30 0
调用 FC1 (带有 30n个字节的局部数据)

30 个字节 (OB1) + 30 个字节 (FC1)n

6030
调用 FC10 (带有 20n个字节的局部数据)

60 个字节 (OB1 + FC1) +20 个字节 FC10n

8060
调用 FC11 (带有 20n个字节的局部数据)

60 个字节 (OB1 + FC1) +20 个字节 FC11n

8060
调用 FC12 (带有 30n个字节的局部数据)

60 个字节 (OB1 + FC1) +30 个字节 FC12n

9060
调用 FC2 (带有 50n个字节的局部数据)

30 个字节 (OB1) +50 个字节 (FC2)n

8030
调用 FC20 (带有 10n个字节的局部数据)

80 个字节 (OB1 + FC2) +10 个字节 FC20n

9080
调用 FC21 (带有 10n个字节的局部数据)

80 个字节 (OB1 + FC2) +10 个字节 FC21n

9080
调用 FC22 (带有 20n个字节的局部数据)

80 个字节 (OB1 + FC2) +20 个字节 FC22n

10080
调用 FC221 (带有 10 个字节的局部数据)

100 个字节 (OB1 + FC2 + FC22) + 10 个字节 FC221n

11080

CPU 在内部处理时使用 L 堆栈。STLn编辑器本身也使用局部数据中的一些字节,例如,块调用时用于传送参数。
因此,不能改变 L 堆栈中的内容。

注意:

每个程序处理级(运行级)为每个优先级类别提供 256 个字节。

- 对于 S7-300, 固定的
- 对于 S7-400, 通常可在硬件组态中的“CPU 属性”下设置。

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc340887.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年11月5日
下一篇 2021年4月12日

相关推荐

发表回复

登录后才能评论