局域数据堆栈

局域数据区的数据都是用局域数据堆栈来存储的吗?另外书中说局域数据堆栈可以存储块的局域数据区的临时变量,组织块的启动信息,块传递参数的信息,和梯形图的中间结果。比如FB,这个块传递参数的信息是in、out、in-out吗?求大神指教,刚接触,不大懂,多谢!!

最佳答案

请看《SIMATIC 用STEP 7 V5.5 编程手册》---第27.2.3.3章节,局部数据堆栈中。
https://support.industry.siemens.com/cs/document/45531107
L 堆栈保存有:
块的本地数据的临时变量
组织块的启动信息
关于传送参数的信息
梯形图程序中逻辑的中间结果
当对组织块编程时,可以声名临时变量(TEMP)只在块执行期间可用,然后它将被覆盖。在首次访问本地数据堆栈之前,必须对本地数据初始化。除此之外,每个组织块还需要 20 个字节的本地数据来存储它们的启动信息。
CPU 只能为当前执行的块的临时变量(本地数据)提供有限的存储空间。该存储器区本地数据堆栈的大小取决于 CPU。 本地数据堆栈被各优先级均分(默认)。也就是关每个优先级都有它自己的本地数据区,从而保证了较高的优先级和它们的 OB 自身的本地数据有可用的空间。
当使用临时变量时,请记住,它们仅在相关块内有效,或者仅作为前一次的本地数据提供(标对在本块中被调用的其它块)。尤其要注意的是,如果您关闭后重新打开块,不能保证临时变量的数值与前一次块调用完成时的数值相同。根据定义,调用块时临时变量是不确定的,在块中首次使用时必须重新初始化。
OB 和它相关的块中所有的临时变量(TEMP)都保存在 L 堆栈中。 如果使用了过多的嵌套的层,在执行块时, L 堆栈可能会溢出。
如果超出一个 L 堆栈的允许大小, CPU 将切换到 STOP 模式。
测试程序中的 L 堆栈(临时变量)。
同步错误 OB 的本地数据需求也必须加以考虑

提问者对于答案的评价:
棒,多谢。感谢每一个帮我解答问题的人,谢谢!!

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年10月30日 下午11:02
下一篇 2020年10月30日 下午11:02

相关推荐