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

S7 300/400循环指令

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

简介如果需要重复执行若干次同样的任务,可以使用循环指令。循环指令 LOOPjump label 用累加器的低字作循环计数器,每次执行 LOOP 指令时累加器低字的值减 1 ,若减 1 后累加器的低字非 0

    如果需要重复执行若干次同样的任务,可以使用循环指令。循环指令LOOP<jump label>用累加器的低字作循环计数器,每次执行LOOP指令时累加器低字的值减1,若减1后累加器的低字非0,将跳转到< jumplabel>指定的标号处,在跳步目标处又恢复线性程序扫描。跳步目标号应是唯一的,跳步只能在同一个逻辑块内进行。

    【例子】在I0.0的上升沿,用循环指令和间接寻址求从MW10开始存放的5个字的累加和,累加的结果用MD20保存。

   A    I    0.0

   FP    M    0.0

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

   L    L#0    //32位整数0装入累加器1

   T    MD    20   //累加和清零

   L    P#10.0

   T    MD    2    //起始地址送地址指针

   L    5    //循环次数装入累加器1的低字

BACK: T    MW    0    //暂存循环计数值

   L    MW [MD 2]    //取数据

   ITD    //转换为双整数

   L    MD  20    //取累加值

   +D    //累加

   T    MD  20    //保存累加值

   L    MD  2    //取地址指针值

   L    L#16

   +D        //地址值增加两个字节,指针指到下一个字

   T    MD  2    //保存地址指针值

   L    MW  0    //循环计数器值装累加器

   LOOP  BACK    //若循环计数器值的内容减1后非0,跳转到标号BACK

m001.   NOP    0

    本例使用存储器间接寻址,地址指针的低3位用来表示字节中的位地址,因此地址指针实际上是以位为单位的整数。每次累加完成后,为了使地址指针指向下一个字,地址指针的值应加161个字由16位组成)。如果是对字节进行操作,每次循环地址指针应加8。如果是对双字进行操作,每次循环地址指针应加32

    上面程序中的指令“L L#16”可改为“L P#2.0”,表示地址指针将增加两个字节。