您现在的位置是:首页 > PLC技术 > PLC技术

S7-300/400 PLC指令系统的寻址方式

来源:艾特贸易2017-06-04

简介指令由操作码和操作数组成,操作码表明要进行什么操作,操作数用于给出操作涉及的数据。在 S7 系列中,可以直接给出运算涉及的数据,也可以间接给出运算涉及的数据;所谓寻址方

    指令由操作码和操作数组成,操作码表明要进行什么操作,操作数用于给出操作涉及的数据。在S7系列中,可以直接给出运算涉及的数据,也可以间接给出运算涉及的数据;所谓寻址方式,就是指令中给出操作数的方式。在S7系列PLC中有3种寻址方式:立即寻址、直接寻址和间接寻址。    1.立即寻址    立即寻址是在指令中直接给出操作数的寻址方式。前面介绍的所有类型的数据均可以在指令中直接给出,只是需要注意给出的数据要与相应的存储区类型一致。    【例4-4    L 2#0001 1001 1000   0001   //将二进制数0001 1001 1000   0001装入累加器1    2.直接寻址    直接寻址是一种直接给出数据的存储地址或者要操作的数据存储区的寻址方式。如I0.2MB8等就属于直接寻址,它们直接给出数据的存储区,I0.2表示输入映像存储区的第0个字节的第3位,MB8表示位存储区的第9个字节。直接寻址可用于所有的编程元件(I0MSMVLAC等)。    【例4-5    I0.3    //对输入位I0.3进行或逻辑运算    RQ5.0    //将输出位Q5.0置“0    =M1.1    //使M1.1的内容等于RLO的内容    LC4    //C4中的计数值装入累加器1    TMW5    //将累加器1中的内容传送给MW5    3.间接寻址    间接寻址是在指令中不直接给出数据存储位置的一种寻址方式。与直接寻址相对应,间接寻址就是用其他的方式间接地指示出操作数的存储位置。根据用来指示操作数存储位置的物理对象不同,间接寻址又分为两种,即存储器间接寻址和寄存器间接寻址。    (1)存储器间接寻址    S7-300/400PLC的存储器间接寻址就是在指令中用存储器来表示操作数的存储位置,即存储器作为地址指针。可以用作地址指针的存储器有TCDBM等。为了与直接寻址相区分,存储器间接寻址需要给用作地址指针的存储器加上[]    对于地址范围小于65535的存储区来说,地址指针可以是字类型,因为16b(位)字类型的指针已经能够完全表示出这些地址;而对于地址范围大于65535的存储区来说,地址指针必须是32b(位)双字类型的。    根据以卜的叙述,地址指针可以指向不同类型的存储区,并且一个存储区内又有很多的字节和位,为了准确地指向操作数,地址指针必须反映出这些信息。    字类型指针的格式如图4-1所示。字类型的指针共16b(位),其中低3位(即02位)表示存储区中的位,315位表示存储区的字节。
存储器间接寻址的字类型指针格式
    4-1    存储器间接寻址的字类型指针格式    【例4-6】通过局部变量LD10将输入整数+8读入,然后与I0.1进行“与”运算,将结果输出到Q0.2中。    L +8    //将整数8装入累加器1    T LD10  //将整数8传送到局部变量LD10    A I[LD10] //读入由LD10确定的输入点    A I0.1 //I0.1进行“与”运算    =Q0.2    //将结果输出到Q0.2    (2)寄存器间接寻址    寄存器间接寻址:通过地址寄存器和偏移地址共同得出操作数的存储地址。在S7-300 PLC中有AR1AR2两个地址寄存器,在指令中书写时,地址寄存器和偏移地址必须都写在[]内,格式为[AR1m][AR2m],所指向的存储器的地址为地址寄存器AR1AR2的内容与m之和。    寄存器间接寻址方式中的地址指针为双字类型,具体格式如图4-2所示。
寄存器间接寻址的指针格式
    4-2    寄存器间接寻址的指针格式    其中:     02为被寻址字节的位编号,范围为07     318为被寻址字节的字节编号,寻址范围为065535     242526为区域标志,通过这3位数据的组合表示不同的数据区。     31用于确定是区域内寻址还是区域间寻址:位31=0为区域内寄存器间接寻址。     31=1为区域间寄存器间接寻址。    【例4-7】通过地址寄存器偏移二进制位数据I0.8后,将I31.9读入,与I0.1进行“与”运算,结果输出到Q0.2。程序如下:    L    P#I0.8    //将二进制位数据10.8读入累加器    LAR1    //将累加器的内容写入地址寄存器AR1    A I [AR1P#21.1]    //将二进制位数据21.1与地址寄存器AR1内容相加,进行间接寻址    A I0.1 //I0.1进行“与”运算    = Q0.2    //将结果输出到Q0.2    以上指令等效于指令:    A    I31.9    A    I(    =Q0.2