回复:局部变量用于上升沿一例

Automann

  • 帖子

    6168
  • 精华

    138
  • 被关注

    308

论坛等级:至圣

注册时间:2004-12-23

普通 普通 如何晋级?

发布于 2011-06-13 06:45:58

17楼

上升沿、下降沿检测指令的功能需要至少两个扫描循环周期才能完成,即通过比较前后两个扫描周期同一BOOL变量或RLO的状态来判断是否是上升沿、下降沿。
同一级的逻辑块的临时局部数据区是公用的,结束对FB1的调用后,它的临时变量的值可能被FC2的临时变量覆盖掉,网友youhm的测试很说明问题。因此用块的临时变量作上升沿、下降沿检测指令的边沿存储位是极其危险的,稍有不慎,可能会出现灾难性的后果。
边沿存储位的确允许使用L区,但是请注意,块的局部变量区(L区)中有静态变量和临时变量,允许用L区并不说明用临时变量作边沿存储位的合法性。
编程的最高境界是在FB、FC中全部使用局部变量,不使用像M这样的全局变量。这样的块不需作任何修改,就可以移植到其他项目。为此可以使用功能块的静态变量来作上升沿、下降沿检测指令的边沿存储位。这样不会出现使用临时变量带来的问题,也解决了块的可移植性问题。
楼主既然知道“使用这样的程序有很多注意事项的”,“应用不好确实有很多副作用,还有就是应用的场合”,你明明知道这条路上有地雷,还叫人走这条路,并且又不说明怎样才不会踩到地雷,这有点不厚道。我怀疑你自己也不清楚要注意些什么(如果清楚就不会有这篇帖子了),请你当心自己不要踩到地雷了。
追求完美
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54617条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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