chenxiaohui033
请教一个问题,做个子程序,多次调用,但是不是同时调用,想使用临时变量,想知道临时变量的生命周期,也就是说,临时变量的值什么时候改变,是扫描过后就改变还是要到子程序的EN 为0 时才改变数值。
非常想知道,在线等。
[明月夜]
子程序有个参数区,参数区中的临时变量跟高级语言一样,是在“栈”中分配的,一进入子程序时分配,
子程序结束时“栈”释放,监时变量消失。 会计算机高级语言的人对“栈”的概念就清楚了
PLC中程序的执行和计算机不大一样,PLC 中程序的执行是按扫描周期一遍一遍的刷新,遇到了子程序并不会在一个扫描周期执行完,有些子程序可能需要好几个扫描周期才能执行完毕。而计算机里是顺序执行,遇到子程序要到执行完才执行下边的。
我的意思是,临时变量是要等子程序执行完成才释放还是,在一次扫描周期对它扫过后就释放。
这里如果EN 不为0,并且子程序在一个扫描周期无法执行完,那么在本次扫描周期结束后,它会释放这些临时变量吗,还是非要等到EN为0时才能释放?
九灭重生
一个周期一释放,如果不释放程序就乱了。
数风流人物还看今朝
楼主原话:遇到了子程序并不会在一个扫描周期执行完
----------------------------------------------------------------------------------------
PLC主程序调用子程序的执行,也是一个扫描周期要执行完, 第二次扫描再第二次调用吧。