解释一下西门子PLC程序

西门子plc 发布于 1年前 分类:S7-300/400

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电工爱好者
    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.0

    LAR1  //装入双字指针(例,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   120