回复:子程序同时被多个调用无法正常运行

已锁定

芳季

西门子1847工业学习平台

  • 帖子

    15784
  • 精华

    102
  • 被关注

    985

论坛等级:至圣

注册时间:2007-08-03

钻石 钻石 如何晋级?

发布于 2021-10-23 19:14:53

2楼

LD10可以这么用。这就叫做先赋值了。但是LD6就不可以这么用了。它没有先赋值。你能理解其中的区别吗?LD6就要用in/out。BT不执行是没有值给到LD6的。LD6会有别的子程序使用,值会被改变的。这个LD6极大机会就是那个LD6。

不信你可以试试。在主程序里调用两个子程序。一个子程序向LD56mov进去一个12345。另一个子程序把LD56的值mov出来到MD0。你看看会怎样?两个子程序什么参数都不带。

你的程序中P触点没有接通LD6自然没有写进去有用的值。后面的比较触点不接通,线圈就会off。这个off是必然的。而前面的LD6是不确定的。两个情况都是触点不通,但是一个是确定的,一个是不确定的 。

你把ld6改成in/out,把边缘指令用触点逻辑写。

LD     I0.0

LPS

AN     M0.0

=      M0.1

LPP

=      M0.0

上面的m0.1就是I0.0的上升缘。(下降缘自己想)你把M0.0也做成IN/out就可以了。

评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200 SMART

共有9380条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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