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

S7 300/400存储器间接寻址

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

简介在存储器间接寻址指令中,给出了一个作地址指针的存储器,该存储器的内容是操作数所在存储单元的地址,地址指针用于指向某个地址。间接寻址的优点是可以在程序处理期间,通过

    在存储器间接寻址指令中,给出了一个作地址指针的存储器,该存储器的内容是操作数所在存储单元的地址,地址指针用于指向某个地址。间接寻址的优点是可以在程序处理期间,通过改变指针的值动态地修改指令中的地址。存储器间接寻址可用于循环程序。

    地址指针可以是字或双字,定时器(T)、计数器(C)、数据块(DB)、功能块(FB)和功能(FC)的编号范围小于65535,使用字指针就够了。

    下面是定时器的存储器间接寻址的例子,用16位的MW10作地址指针。例程中MW10的值为3T[ MW10]相当于T3。在PLCSIM中监控T3,令I0.21状态,可以看到T3的当前值的变化。

   L    3

   T    MW    10

   A    1    0.2

   L    S5T#5S

   SD    T[MW 10]

    其他地址则要使用双字指针,如果要用双字格式的指针访问一个字、字节或双字存储器,必须保证指针的位编号为0,例如P#Q20.0。双字指针的格式如图3-51所示,位02为被寻址地址中位的编号(07),位318为被寻址的字节的编号(0~65535)。只有双字MDLDDBDDID能作地址指针。下面是存储器间接寻址的例子:

   L    P#4.0

   T    DBD    10

   L    QB[DBD 10]    //QB4装入累加器1,地址在双字DBD10

   L    P#4.3

   T    LD    4

   A    M[LD 4]    //对存储器位M4.3作”与”运算,地址在LD4

   P#4.0的值为2#0000 0000 0000 0000 0000 0000 0010 0000

   P#4.3的值为2#0000 0000 0000 0000 0000 0000 0010 0011

    【例3-5】某表格存放在MW10开始的50个字中,表格的偏移量(表格中字的序号)在MD4中。第1个字MW10的序号为0,第2个字MW12的序号为1……在I0.0的上升沿,用间接寻址将表格中相对于偏移量的字的数值传送到MW110中去。

    下面是满足要求的语句表程序,LD0是存储器间接寻址的地址指针,它的值实际上是以位为单位的整数。相邻的两个字相差16位,因此偏移量乘以16,加上表格的起始地址,得到要读取的字的地址。本例程在随书光盘的项目“第3章例程”的FC 1中。

   A    I    0.0

   FP    M    0.0

   JNB    m001    //不是I0.0的上升沿则跳转

   L    MD    4

   L    L#16

   *D    //偏移量乘以16或乘以P#2.0

   L    P#10.0

   +D    //加上表格的起始地址,得到数据的地址

   T    LD    0    //数据的地址送地址指针

   L    MW [LD 0]    //表格中的数据送累加器1

   T    MW    110   //保存数据

m001    NOP   0