回复:200smart子程序重复调用,出现相互干扰的问题。

已锁定

深渊行者

  • 帖子

    170
  • 精华

    0
  • 被关注

    7

论坛等级:侠士

注册时间:2015-01-02

黄金 黄金 如何晋级?

发布于 2021-04-14 10:33:06

9楼

展开查看
以下是引用yanxiao在2021-04-14 09:22:19的发言 >7楼

L区称为局部变量、临时变量,是因其作用范围仅限本子程序而言。

当一你上子程序进入时,系统分配一块L区供其使用,此时,该L区为这个子程序专用,不会受到其它程序“干扰”,甚至可能随时插入运行的中断程序、上位机通讯等,均干扰不到 正在使用中的L区。

但是,随着子程序运行的结束,其所使用的L区也随之被系统回收,不再与该子程序存在一毛钱的关系。


其它的子程序,或者相同的子程序两次调用,系统会重新分配一块L区供使用。分配得到的L区,可能是上次使用过的,也可能是全新的,这个PLC不予承诺,所以,你不能自行假设一定是新的,或者一定是刚使用过的。(你对PLC有深入研究的除外。)


所以,你说两次调用之间,L区存在干扰,应是未按照规则使用L区造成。

看了不少资料,也确实如你所说,

但是自己做了个试验,又感觉难以理解。


如图子程序,是一个起保停。

-----------------------------------------------------------------------------------------------------------

然后主程序两次调用这个子程序,

调用输出不同的Q点


--------------------------------------------------------------------------------------------------------

然后网络1的启动为1,及时第二个子程序启动不为1,两个网络的都有输出


这也入你所说。

---------------------------------------------------------------------------------------------------------

但是问题来了

因为网络1,输出L0.2,一直保持,所以它影响到网络2,使网络2有输出。


但是我把网络2的停止为1,神奇的是是是是是是是.............................它尽然能停止网络2的输出,而且是单独停止网络2;而且我把网络2停止为0,网络2又输出了。



这是多么难以理解,网络1一直导通,它不会一直影响L0.2吗?网络2不是一直会受L0.2影响吗?

你如果说每次刷新分配的L区不一定相同,但是我把网络2停止为0,它又输出了,那么神奇吗?


我不是和你犟,我只是想搞清楚,学会怎么用这个重复调用,多谢你多次回答!


评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200 SMART

共有9142条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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