有一段程序如下:
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