西门子S7-300/400PLC的寻址方式

    西门子S7-300/400的直接寻址方法与S7-200相同。间接寻址方式有“存储器间接寻址”与“寄存器间接寻址”两种。由于S7-300/400具有专用的指针寄存器AR1、AR2,因此,间接寻址建立“地址指针”的方法与指令的表示方法、寻址的范围均与S7-200 PLC有较大的区别,其使用更方便,寻址的范围也更大。

    1.存储器间接寻址

    S7-300/400的存储器间接寻址方式与S7-200 PLC相比,在实际使用中具有两方面明显的区别:

    ①在S7-300/400中,间接寻址不需要建立指针的过程,可以直接在寻址对象的前面加“【]”标记,表示该寻址对象为间接寻址。

    ②间接寻址可以用于二进制位地址。

    【例1】通过局部变量LD10,将输入I22.2读入,与IO.O进行“与”运算,结果输出到QO.1的程序如下:

    LP#22.2    //二进制位数据22.2读入累加器;

    TLD10    //二进制位数据22.2传送到局部变量LD1O中:

    AI[LDIO]    //读入由LDIO确定的输入点;

    AIO.O    //与IO.O进行“与”运算;

    =QO,l    //结果输出到QO.1

    以上指令等效于指令:

    AI22.2

    AIO.O

    =QO.1

    2.寄存器间接寻址

    S7-300/400的寄存器间接寻址是一种利用指针寄存器进行偏移的间接寻址方式,格式为[AR1,m]或[AR2,m],间接寻址所指定的存储器地址为指针寄存器AR1或AR2的内容与m之和。

    指针寄存器AR1或AR2为双字长寄存器,可以同时存储地址、字节、位等信息,因此,寻址不仅可以在存储器自身的区域内进行(如内部标志M之间、输入I之间等),而且可以在不同的区域内进行(如由内部标志M到输入I等)。

    寄存器各位所代表的含义如下:

地址位(bit31):“0”指针寄存器不含地址符,地址符bit24~bit26应为0:

“1”指针寄存器含地址符,地址符由bit24~bit26指定。

地址符(bit24~bit26):地址位(bit31)为“1”时用于指定存储器地址,地址的编码如下:

000:地址P:

001:地址I;

010:地址Q;

011:地址M;

100:地址DBX;

101:地址DIX;

111:地址L。

    字节编号(bit18~bit3):指定存储器的字节地址,范围为0~65535。

    位编号(bit2~bit0):指定存储器的位地址,范围为0~7。

    指针寄存器可以不含地址符,此时,指针寄存器只需要写入二进制的字节与位数据,地址由逻辑运算指令指定。

    【例2】通过指针寄存器偏移二进制位22.2后,将I32.3读入,与IO.O进行“与”运算,结果输出到QO.1的程序如下:

    LP#22.2    ∥二进制位数据22.2读入累加器1:

    LARI    //累加器l的内容读入指针寄存器ARl:

    AI[ARl,P#10.1]    //将二进制位数据10.1与指针寄存器ARI内容相加,进行间接寻址:

    AIO.O    //与IO.O进行“与”运算:

      QO.1    //结果输出到QO.1;

    以上指令等效于指令:

    AI32.3

    AIO.O

    =QO.1

    在使用二进制位数据时应注意,开关量输入/输出的单位为字节,因此,进行指针寄存器偏移时应利用8进制数进行计算。

    【例3】通过指针寄存器偏移二进制位数据10.5后,将I21.4读入,与IO.O进行“与”运算,结果输出到QO.1的程序如下:

    LP#10.5    ,/将二进制位数据10.5读入累加器1:

    LARI    //将累加器l的内容写入指针寄存器ARl;

    AI[ARI, P#10.7]    //将二进制位数据10.7与指针寄存器ARI内容相加,进行间接寻址;

    AIO.O    ∥与IO.O进行“与”运算;

    =QO.I    //结果输出到QO.1:

    以上指令等效于指令:

    AI21.4

    AIO.O

    =QO.l

    指针寄存器可以含地址符,此时,指针寄存器需要同时写入地址、二进制的字节与位数据,逻辑运算指令不再需要指定地址。

    【例4]将M6.0作为地址指针,将输入IW10的内容写入到MW56中的程序如下:

    L  P#M6.0    //将地址数据M6.0读入累加器l;    ’

    L  AR1    ∥将累加器l的内容写入指针寄存器ARI;

    L  IWIO    //将IWIO的内容读入累加器1:

    T  W[ARI,P#50.0】    /将累加器l的内容写入到MW56(目标地址利用间接寻址方式)

    由于本例属于存储器区域内部寻址,且指针寄存器已经包含了地址M,逻辑运算指令不再需要指定地址。以上指令等效于指令:

  LIW10

  TMW56,    西门子S7-300/400的直接寻址方法与S7-200相同。间接寻址方式有“存储器间接寻址”与“寄存器间接寻址”两种。由于S7-300/400具有专用的指针寄存器AR1、AR2,因此,间接寻址建立“地址指针”的方法与指令的表示方法、寻址的范围均与S7-200 PLC有较大的区别,其使用更方便,寻址的范围也更大。

    1.存储器间接寻址

    S7-300/400的存储器间接寻址方式与S7-200 PLC相比,在实际使用中具有两方面明显的区别:

    ①在S7-300/400中,间接寻址不需要建立指针的过程,可以直接在寻址对象的前面加“【]”标记,表示该寻址对象为间接寻址。

    ②间接寻址可以用于二进制位地址。

    【例1】通过局部变量LD10,将输入I22.2读入,与IO.O进行“与”运算,结果输出到QO.1的程序如下:

    LP#22.2    //二进制位数据22.2读入累加器;

    TLD10    //二进制位数据22.2传送到局部变量LD1O中:

    AI[LDIO]    //读入由LDIO确定的输入点;

    AIO.O    //与IO.O进行“与”运算;

    =QO,l    //结果输出到QO.1

    以上指令等效于指令:

    AI22.2

    AIO.O

    =QO.1

    2.寄存器间接寻址

    S7-300/400的寄存器间接寻址是一种利用指针寄存器进行偏移的间接寻址方式,格式为[AR1,m]或[AR2,m],间接寻址所指定的存储器地址为指针寄存器AR1或AR2的内容与m之和。

    指针寄存器AR1或AR2为双字长寄存器,可以同时存储地址、字节、位等信息,因此,寻址不仅可以在存储器自身的区域内进行(如内部标志M之间、输入I之间等),而且可以在不同的区域内进行(如由内部标志M到输入I等)。

    寄存器各位所代表的含义如下:

地址位(bit31):“0”指针寄存器不含地址符,地址符bit24~bit26应为0:

“1”指针寄存器含地址符,地址符由bit24~bit26指定。

地址符(bit24~bit26):地址位(bit31)为“1”时用于指定存储器地址,地址的编码如下:

000:地址P:

001:地址I;

010:地址Q;

011:地址M;

100:地址DBX;

101:地址DIX;

111:地址L。

    字节编号(bit18~bit3):指定存储器的字节地址,范围为0~65535。

    位编号(bit2~bit0):指定存储器的位地址,范围为0~7。

    指针寄存器可以不含地址符,此时,指针寄存器只需要写入二进制的字节与位数据,地址由逻辑运算指令指定。

    【例2】通过指针寄存器偏移二进制位22.2后,将I32.3读入,与IO.O进行“与”运算,结果输出到QO.1的程序如下:

    LP#22.2    ∥二进制位数据22.2读入累加器1:

    LARI    //累加器l的内容读入指针寄存器ARl:

    AI[ARl,P#10.1]    //将二进制位数据10.1与指针寄存器ARI内容相加,进行间接寻址:

    AIO.O    //与IO.O进行“与”运算:

      QO.1    //结果输出到QO.1;

    以上指令等效于指令:

    AI32.3

    AIO.O

    =QO.1

    在使用二进制位数据时应注意,开关量输入/输出的单位为字节,因此,进行指针寄存器偏移时应利用8进制数进行计算。

    【例3】通过指针寄存器偏移二进制位数据10.5后,将I21.4读入,与IO.O进行“与”运算,结果输出到QO.1的程序如下:

    LP#10.5    ,/将二进制位数据10.5读入累加器1:

    LARI    //将累加器l的内容写入指针寄存器ARl;

    AI[ARI, P#10.7]    //将二进制位数据10.7与指针寄存器ARI内容相加,进行间接寻址;

    AIO.O    ∥与IO.O进行“与”运算;

    =QO.I    //结果输出到QO.1:

    以上指令等效于指令:

    AI21.4

    AIO.O

    =QO.l

    指针寄存器可以含地址符,此时,指针寄存器需要同时写入地址、二进制的字节与位数据,逻辑运算指令不再需要指定地址。

    【例4]将M6.0作为地址指针,将输入IW10的内容写入到MW56中的程序如下:

    L  P#M6.0    //将地址数据M6.0读入累加器l;    ’

    L  AR1    ∥将累加器l的内容写入指针寄存器ARI;

    L  IWIO    //将IWIO的内容读入累加器1:

    T  W[ARI,P#50.0】    /将累加器l的内容写入到MW56(目标地址利用间接寻址方式)

    由于本例属于存储器区域内部寻址,且指针寄存器已经包含了地址M,逻辑运算指令不再需要指定地址。以上指令等效于指令:

  LIW10

  TMW56

西门子S7-300/400PLC的寻址方式

相关文章:

你感兴趣的文章:

标签云: