回复:200Smart中的置位复位指令很奇怪

已锁定

沙漠舟

西门子1847工业学习平台

  • 帖子

    306
  • 精华

    0
  • 被关注

    28

论坛等级:侠士

注册时间:2004-03-13

普通 普通 如何晋级?

发布于 2021-12-12 14:39:15

23楼

楼上正解,是L区内存分配的问题,不光是200、200SMART,300\400\1200\1500也有同样的问题。

分配的L区是针对所有程序的,如果两个子程序里的局部变量定义为相同的名字或者一个子程序多次调用,在该局部变量定义为IN的时候就会出现以上问题,第二个调用程序里的该局部变量会受到第一个调用程序里的该局部变量结果的影响,这是没有理解L区使用机制。

定义成IN就不对,改成IN_OUT就正常了,这是因为局部变量应该是先赋值再运算,IN_OUT是先OUT再IN的,相当于先赋值再调用去运算,每次调用子程序都是先赋值再去运算,自然就不会受到上一个调用子程序结果的影响了。

如果你定义成IN,那么需要在程序里先写一段赋值程序,然后再去后面的逻辑运算,这样就不会有问题了。一般人是不会这么写的,直接就是IN进来就写逻辑程序了。

1847有一集视频专门讲了这个问题,好好看一下,可以帮助加深理解。

抓住重点:先赋值再运算

人若无名,专心练剑
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200 SMART

共有8944条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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