回复:针对反复调用的子程序,那些命令不能用

yanxiao

版主

  • 帖子

    12204
  • 精华

    47
  • 被关注

    189

论坛等级:至圣

注册时间:2003-06-06

钻石 钻石 如何晋级?

发布于 2012-04-16 13:51:33

33楼

quote:以下是引用芳季在2012-04-13 12:36:51的发言:
楼上,你看我2楼的简短的程序。你说Q0.0要不要在每个扫描开始进行清零?
清不清零都不影响运行结果。因为在运行过程中已经给了个唯一的值,尽管被双线圈多次赋值。但是每一次都有唯一的值。这就叫先赋值再使用。
又看下面的程序。
LD I0.0
A Q0.0 // O Q0.0 ?
AN I0.1
= Q0.0
这是一个简单的按钮自锁程序。
我们观察Q0.0的执行顺序。
扫描一开始就先出现“A Q0.0”。这就是使用了他的常开触点。接下来扫描= Q0.0指令这个时候才给Q0.0赋上一个值。在此显然就违反了先赋值再使用。如果把Q换成L,将从此得不到正确的值。

机械地执行“变量先赋值再使用”,也是害死很多人。
一段程序,是整个程序的一部分,全局变量的使用范围跨整个程序,甚至也受上位机的影响,赋值的机会是非常多的,并不一定在可见范围内显式赋值。比如我们经常用到断电保持,对于被保持的变量,此次上电,里面存的是个什么值,一般是很难确定的,只知道是上次断电前留下来的。
一个变量的值,还和程序运行的前世今生有关。就象上面这段程序,程序执行前,Q0.0是多少?无需确定。这段程序的结果,I0.0和I0.1未置1(闭合)时,不改变Q0.0的状态,原来该是多少还是多少。
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200

共有33277条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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