回复:一段stl程序请教一下

emil128

  • 帖子

    271
  • 精华

    10
  • 被关注

    21

论坛等级:侠圣

注册时间:2011-05-16

普通 普通 如何晋级?

发布于 2014-05-28 10:56:19

8楼

展开查看
以下是引用老学童在2014-05-27 17:01:49的发言 >7楼:假如功能执行时,被某个优先级较高的中断打断,如果没有这些装载指令,系统不会在L堆栈中留出相应的存储区,那么,这些临时区的数据会丢失,用了这些装载指令,就相当于在这些临时区定义了临时变量,发生中断时系统会自动划出存储区保护这些临时区。
原先看楼主给的程序,感觉那3个LB没什么用,觉得挺疑惑的。
看了老学童大侠的解释我还是很疑惑。

我同意实际使用临时变量就相当于在声明区定义临时变量,效果是一样的。
但是每个优先级都有自己的本地堆栈区,高优先级的中断只会使用自己的本地堆栈区而不会使用到被中断的优先级的本地堆栈区,所以不需要靠这样来保护低优先级的临时变量,或者说是多余的,系统本身设计已经保护了。

我想如果要保护这些临时变量,那么应该是针对可能会覆盖到它们的情况,比如下级调用。
从楼主的程序使用AR2的偏移量来看,说明这段程序是可以用于多重背景调用的FB的程序。那么只有当该FB在调用其他FC或FB时,系统要为下级调用划分临时变量时,才需要考虑用这种办法来保护临时变量。
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54791条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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