恭喜,你发布的帖子
发布于 2021-04-14 10:33:06
9楼
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,它又输出了,那么神奇吗?
我不是和你犟,我只是想搞清楚,学会怎么用这个重复调用,多谢你多次回答!
请填写推广理由:
分享
只看
楼主