麻烦高人指点一下S7 300指令什么意思:尤其是L W[AR1,P#0.0]这类指令什么意思,谢谢各位了 5
OPN#ArbeitsDBA#FreigabeSteuern=DBX135.0A#FreigabeSteuernADBX134.1=#SteuernAktivADBX13...
OPN #ArbeitsDB
A #FreigabeSteuern
= DBX 135.0
A #FreigabeSteuern
A DBX 134.1
= #SteuernAktiv
A DBX134.0
JCN END1
LAR1 P#DBX 0.0
TAR1 #Save_Zeiger
LAR2 P#DBX 128.0
L 16
Sshl:T #Schleifenzaehler
L W [AR1,P#2.0]
SLW 3
L W [AR1,P#0.0]
SLW 13
SRW 13
OW
LAR1
A I [AR1,P#0.0]
= [AR2,P#0.0]
LAR1 #Save_Zeiger
+AR1 P#4.0
TAR1 #Save_Zeiger
+AR2 P#0.1
L #Schleifenzaehler
LOOP Schl
END1: NOP 0
L DBW 128
CAW
T DBW 128
A DBX 138.0
BLD 100
FP DBX 138.1
= DBX 138.0
A DBX 134.0
AN #SteuernAktiv
O DBX 138.0
= DBX 138.2
A DBX 138.2
JCN END2
LAR1 P#DBX 64.0
TAR1 #Save_Zeiger
LAR2 P#DBX 131.0
L 8
Sch2: T #Schleifenzaehler
L W [AR1,P#2.0]
SLW 3
L W [AR1,P#0.0]
SLW 13
SRW 13
OW
LAR1
A Q [AR1,P#0.0]
= [AR2,P#0.0]
LAR1 #Save_Zeiger
+AR1 P#4.0
TAR1 #Save_Zeiger
+AR2 P#0.1
L #Schleifenzaehler
LOOP Sch2
END2: NOP 0 展开
A #FreigabeSteuern
= DBX 135.0
A #FreigabeSteuern
A DBX 134.1
= #SteuernAktiv
A DBX134.0
JCN END1
LAR1 P#DBX 0.0
TAR1 #Save_Zeiger
LAR2 P#DBX 128.0
L 16
Sshl:T #Schleifenzaehler
L W [AR1,P#2.0]
SLW 3
L W [AR1,P#0.0]
SLW 13
SRW 13
OW
LAR1
A I [AR1,P#0.0]
= [AR2,P#0.0]
LAR1 #Save_Zeiger
+AR1 P#4.0
TAR1 #Save_Zeiger
+AR2 P#0.1
L #Schleifenzaehler
LOOP Schl
END1: NOP 0
L DBW 128
CAW
T DBW 128
A DBX 138.0
BLD 100
FP DBX 138.1
= DBX 138.0
A DBX 134.0
AN #SteuernAktiv
O DBX 138.0
= DBX 138.2
A DBX 138.2
JCN END2
LAR1 P#DBX 64.0
TAR1 #Save_Zeiger
LAR2 P#DBX 131.0
L 8
Sch2: T #Schleifenzaehler
L W [AR1,P#2.0]
SLW 3
L W [AR1,P#0.0]
SLW 13
SRW 13
OW
LAR1
A Q [AR1,P#0.0]
= [AR2,P#0.0]
LAR1 #Save_Zeiger
+AR1 P#4.0
TAR1 #Save_Zeiger
+AR2 P#0.1
L #Schleifenzaehler
LOOP Sch2
END2: NOP 0 展开
4个回答
展开全部
上面的程序要想看懂的话必须得了解西门子程序的寻址方法,具体是做什么得结合你的各个变量的具体含义才能知道是什么含义。上面用到了直接寻址和间接寻址的方法。不是一两句能说清楚的。L W[AR1,P#0.0]这个个间接寻址中的交叉寻址,其中W指的是你的字符宽度,W代表的是字,就是这个指针的指向宽度为2个字节,AR1为你事先装载进去的指针指向起始地址,例如
L [MW20]
LAR1
这个就是在位存储区中的第20个字的位置,字符宽度为2两个字节。装载到地址寄存器1中。
L W[AR1,P#0.0]这就是以AR1的地址为起始地址偏移0.0个偏移量。这样就找到了你需要使用的地址了。现在国内的程序员对间接寻址的使用比较少,主要是直接寻址。这样的间接寻址就相当于C语言中的指针~!使用比较灵活,如果使用不当的话就会使PLC死机的状况。但是如果使用的好的话可以简便程序结构,并且便于程序的标准化~!如果还有什么问题可以继续留言~!
L [MW20]
LAR1
这个就是在位存储区中的第20个字的位置,字符宽度为2两个字节。装载到地址寄存器1中。
L W[AR1,P#0.0]这就是以AR1的地址为起始地址偏移0.0个偏移量。这样就找到了你需要使用的地址了。现在国内的程序员对间接寻址的使用比较少,主要是直接寻址。这样的间接寻址就相当于C语言中的指针~!使用比较灵活,如果使用不当的话就会使PLC死机的状况。但是如果使用的好的话可以简便程序结构,并且便于程序的标准化~!如果还有什么问题可以继续留言~!
展开全部
LOOP:
是循环指令,循环次数由计数寄存器CX指定。是否执行循环体的判断指令在循环体之后,所以,至少执行1次循环体,即至少循环1次。执行LOOP指令时,CPU自动将CX的值减1,若CX=0,则结束循环;否则,重复执行循环体。
是循环指令,循环次数由计数寄存器CX指定。是否执行循环体的判断指令在循环体之后,所以,至少执行1次循环体,即至少循环1次。执行LOOP指令时,CPU自动将CX的值减1,若CX=0,则结束循环;否则,重复执行循环体。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
和、
kjij
yjg
yuyuyjugyjyuyguyuyuuyugyubjguubjjgtdrsaea
hgjhjhjhjhjnmhjhjhjgjgj
kjij
yjg
yuyuyjugyjyuyguyuyuuyugyubjguubjjgtdrsaea
hgjhjhjhjhjnmhjhjhjgjgj
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
c
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询