关于子程序存储空间问题

分享到:
229
下一篇 >

菜鸟:

s7 200子程序,用的局部存储空间L在调用结束后就释放了!既然释放了,也就意味着别的子程序同样可以使用这部分存储空间。问题一:释放后,其存储地址存放的数据,仍旧是释放前的数据还是随机数据?问题二:既然已经释放了

那么比如说子程序1中用了一个L0.0,那么调用结束之后L0.0释放,那么当再次调用子程序1的时候,L0.0对应的逻辑地址和上一次调用的时候是同一个位置吗?

既然调用结束后就释放了,为什么可以用子程序做自锁呢?而且当调用同一个子程序多次时可能会出现逻辑混乱呢?求解各位

大虾:

没有释放的说法,我觉得。使用完了之后,值还是刚才使用之后的值不会有任何东西白白的去把他改成0。

同级子程序使用的是相同的位置。(知道什么是同级吗?)你说子程序可以做自锁,是因为你只用了一个子程序用了一次这个L,所以可以独占这个L。所以多次调用就错了。

菜鸟:

所谓同级应该和嵌套相反,芳季大侠的意思如果一个子程序只调用一次,那么下次再次调用的话,局部变量的逻辑地址不会变对吧?那么如果还有其他子程序在同一个周期被调用呢?请你细细讲讲啊!

大虾:

同级子程序使用的是相同的位置。(知道什么是同级吗?)你说子程序可以做自锁,是因为你只用了一个子程序用了一次这个L,所以可以独占这个L。所以多次调用就错了。另外我讲的释放,就是指调用结束后,L变量不在保存调用时的值。

斑竹:

一台车有几个人开的话,那么车上的后视镜,座椅,方向盘高度都被每个人调整过。轮到你自己用的时候又要自己调整一次。你接手的时候肯定**着上手司机调整的状态。

这个L也一样。

并不一定是一个周期之内多个使用过,就算偶尔有其他用过的话,也是**的。

车是一个人用的话,什么状态都是自己调整的。所以自己不用每次上车都要调一下。

大虾:

200子程序可以嵌套7级,在加上一个中断子程序,每个都有64字节的L区。

可以这么看,子程序加主程序和中断子程序,有(7+1+1)*64字节的L区空间,每**的程序,使用自己那**的L区空间

非常形象!正如你说的一样,同**的子程序所使用的L区是独立的,或者说是固定的。所以同**后调用的子程序总是*后修改L区的,那么等到下一个周期再次顺序调用子程序的时候,*先调用的同**子程序将获取上个周期*后修改L区的保留下来的值!

斑竹:

可以这么看,子程序加主程序和中断子程序,有(7+1+1)*64字节的L区空间,每**的程序,使用自己那**的L区空间每**有独立的L区。讲的非常好!


你可能感兴趣: 工控菜鸟园 自动化系统 SIMATIC S7-200
无觅相关文章插件,快速提升流量