找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6521|回复: 0
打印 上一主题 下一主题
收起左侧

【S7-300】局部数据堆栈使用指南【精】

[复制链接]
跳转到指定楼层
楼主
ID:26188 发表于 2015-5-27 23:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式


局部数据堆栈L堆栈保存有:
1、块的本地数据的临时变量
2、组织块的启动信息
3、关于传送参数的信息
4、梯形图程序中逻辑的中间结果
      当对组织块编程时,可以声名临时变量(TEMP)只在块执行期间可用,然后它将被覆盖。在首次访问本地数据堆栈之前,必须对本地数据初始化。除此之外,每个组织块还需要20个字节的本地数据来存储它们的启动信息。
      CPU只能为当前执行的块的临时变量(本地数据)提供有限的存储空间。该存储器区本地数据堆栈的大小取决于CPU。本地数据堆栈被各优先级均分(默认)。也就是说每个优先级都有它自己的本地数据区,从而保证了较高的优先级和它们的OB自身的本地数据有可用的空间。
      下图用一个实例给出了优先级的本地数据分配,其中在L堆栈中,OB1被OB10中断,而后者又被OB81中断。





注意事项:
    1、当使用临时变量时,请牢记它们仅在相关块内有效或仅可作为在该块中调用的其它块的以前本地数据使用。尤其,当在关闭并重新打开块时,不能确保临时变量具有与完成上一次块调用时相同的数值。当调用块时,临时变量被定义为未定值,且当在块中初次使用临时变量时,必须重新初始化。
    2、OB和它相关的块中所有的临时变量(TEMP)都保存在L堆栈中。如果使用了过多的嵌套的层,在执行块时,L堆栈可能会溢出。
    3、如果超出一个L堆栈的允许大小,CPU将切换到STOP模式。
    4、测试程序中的L堆栈(临时变量)。
    5、同步错误OB的本地数据需求也必须加以考虑。

分配本地数据给优先级
    本地数据堆栈中,并不是每个优先级都需要同样大小的存储空间。在STEP 7中,通过分配参数,可以为S7-400 CPU和CPU 318的各个优先级分配不同大小的本地数据区。任何不需要的优先级都可以将其取消。这样S7-400 CPU和CPU 318中其它优先级的存储器区便增大了。在程序执行期间,取消激活的OB将被忽略,以节省循环时间。
    而对于其它的S7-300 CPU,每个优先级被分配了固定大小的本地数据(256个字节),不能对其修改。






分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表