一段程序中ACCU1取值的问题?

有一段程序如下:

L  #Used_Sequence   
 
T  #Sequence_Dword  

L LB 31             

T LB 12             

L LB 30

T LB 13

L LB 29

T LB 14

L LB 28

T LB 15

说明:应用的PLC为CPU416F-3PN/DP,#used_Sequence、#Sequence_word数据类型均为Dword。

其中,#used_Sequence=B#11时,对程序监控,ACCU1用十进制表示,每一行的ACCU1的值如下:


L  #Used_Sequence   // ACCU1=3
 
T  #Sequence_Dword  // ACCU1=3

L LB 31             // ACCU1=3        

T LB 12             //ACCU1=3      

L LB 30             // ACCU1=0

T LB 13             // ACCU1=0
   
L LB 29             // ACCU1=0

T LB 14             // ACCU1=0

L LB 28             // ACCU1=0

T LB 15             // ACCU1=0

关于这段程序,LB31、LB30、LB29、LB28只在这段程序中才开始有应用,

不明白的是为什么 执行第三行“ L LB31”时ACCU1的值为3,第五行“L LB 30”时ACCU1的值为零。


在程序中,这些L区的数据究竟是怎么应用的?希望大侠解释一下。

最佳答案

查看此程序块上部的声明变量表,在TEMP中的地址栏中查看地址。LD28是#used_Sequence还是#Sequence_word的地址。
临时存放的数据就可以保存在L区中,L变量只在本程序块执行时起作用,块结束后其数据不再保存。

提问者对于答案的评价:
非常感谢你的回答!
打开块的变量声明表后,Temp中Seqence_word的开始地址为28.0.
还有个问题请教一下,就是Temp地址栏中变量的数据都是存到L区的吗?
如果Temp中第一个变量是布尔变量,它的地址是0.0,那么它的数据就是存储到L0.0 ?
Temp中变量对应的地址,就是它们的数据存储在L区中对应的地址?
再次感谢!

最佳答案作者回复:
Temp地址栏中变量的数据都是存到L区的。
你理解是对的。

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc201836.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2017年10月31日
下一篇 2017年10月31日

相关推荐