回复:子程序相互干扰的问题

芳季

西门子1847工业学习平台

  • 帖子

    15503
  • 精华

    101
  • 被关注

    960

论坛等级:至圣

注册时间:2007-08-03

钻石 钻石 如何晋级?

发布于 2012-10-18 12:22:22

2楼

因为你以为set指令不执行的时候线圈会off。然而。set指令不执行的时候是保持线圈原有的状态。
那原有的是什么状态呢?
你设定成了out参数。也就是说进入子程序的时候不对他进行初始化,也就是说仍然保持原值。
那原有的是什么状态呢?
这个值就是L本身的值。这个值是谁给的呢?可以追索到上次调用子程序的是谁。
是子程序自己。(连自己做过的事情都忘记了吗?不会忘的,真的不会忘的。)是 “1”。所以出现了你看见的1。
仔细斟酌上面的过程。你会发现当set指令rst指令在不执行的时候对象的值是不确定的。所以两个指令不可以在多次调用的子程序上用。除非设定成in/out。但是通常这样做都失去set指令的作用。倒不如用out指令代替set和rst。

精华帖版主置评:这其实是个很隐蔽的错误。A侠显然很清楚SET指令的行为。芳侠把问题出在“OUT”类型输出上给点了出来。

评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200

共有33257条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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