解释一下西门子PLC程序
k001: L MD 20
SLD 4
LAR1
L DBW [AR1,P#14.0]
L 60
*D
L DBW [AR1,P#200.0]
+D
T MD 120
对STL不太熟悉,想请大家给解释一下这段程序,特别是 L DBW [AR1,P#200.0] 给重点说明一下好,谢谢!
1个回复
-
plc电工爱好者
需先弄清存储器间接寻址中的双字指针,也就是:
其0-2bit,指定bit位,3-18bit指定byte字节。其第31bit固定为0。
AR:
0000 0000 0000 0BBB BBBB BBBB BBBB BXXX
这样规定,就意味着AR的取值只能是:0.0 ——65535.7
例如:当AR=D4(hex)=0000 0000 0000 0000 0000 0000 1101 0100(b),实际上就是等于26.4。
而在区域间寄存器间接寻址中,由于要寻址的区域也要在AR中指定,显然这时的AR中内容肯定于寄存器区域内间接寻址时,对AR内容的要求,或者说规定不同。
AR:
1000 0YYY 0000 0BBB BBBB BBBB BBBB BXXX
比较一下两种格式的不同,我们发现,这里的第31bit被固定为1,同时,第24、25、26位有了可以取值的范围。聪明的你,肯定可以联想到,这是用于指定存储区域的。对,bit24-26的取值确定了要寻址的区域,它的取值是这样定义的:
区域标识符
26、25、24位
P(外部输入输出)
000
I(输入映像区)
001
Q(输出映像区)
010
M(位存储区)
011
DB(数据块)
100
DI(背景数据块)
101
L(暂存数据区,也叫局域数据)
111
例:
k001: L MD 20//例如MD 20=00000001(十六进制)
SLD 4//把MD20内容左移4位,空出的位添0,这样形成了双字指针,即其0-2bit,指定bit位,3-18bit指定byte字节。例,移位后MD20=00000010(十六进制),其0-2bit,指定bit位,3-18bit指定byte字节,即为10.0LAR1 //装入双字指针(例,10.0)
L DBW [AR1,P#14.0]//10.0+14.0=24.0,取DBW24内容
L 60
*D //DBW24内容*60
L DBW [AR1,P#200.0]//将DBW24内容*60的结果+DBW210(10.0+200.0=210.0)的内容送人MD 120中。
+D
T MD 1201年前 我来评论