再论L区的变量留值问题

已锁定

yanxiao

版主

  • 帖子

    12143
  • 精华

    46
  • 被关注

    183

论坛等级:至圣

注册时间:2003-06-06

钻石 钻石 如何晋级?

再论L区的变量留值问题

3353

33

2012-08-30 16:15:03

本论坛中曾有不少贴子是讨论L区变量在两次调用间的值相互影响的问题,也就是前一次调用写入的值,会留给后续调用的子程序。

在子程序被调用时,一般是这样描述:系统为被调用的子程序分配一块64字节的存贮区,作为局部变量区,即L区。

我一直认为,这种分配是“静态”的,原因之一,“静态”分配执行效率高,符合实时控制要求;之二,安全可靠,不会出现象PC机编程动态内存分配时的“内存泄漏”现象。

正因为这种静态分配的特性,我认为所有L区的值也是“静态”保持,在没有“显式”写入新值前,其原值是不会起变化的。

我写了一个验证程序,有兴趣的可以下载下去看看。

1、在首次扫描时,主程序、以及各级深度的子程序(共8级)填上特定的数据;
2、在后续的扫描中,各级子程序将L区内的值,COPY到V区中,供上位机(Microwin)来读取/验证。
3、没有中断以及中断内的一级子程序。其实道理相同的。

不过要声明的是:这是验方,你所用的CPU是否符合这个特性,是要实验的。没有官方的保证。


点击此处查看附件
再论L区的变量留值问题 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200

共有33257条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。