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

S7-300/400的循环指令概述及实例

来源:艾特贸易2017-09-19

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

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

    【实例】  用循环指令和间接寻址求从MW60开始存放的5个字的累加和。累加的结果用MD50保存,用临时局部变量LD24作地址指针,LW32作循环次数计数器。

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

   1    MD    50   //将保存累加和的双字清零

   L    P#60.0

   T    LD    24   //起始地址送地址指针

   L    5    //将循环次数(需要累加的字的个数)装入累加器1的低字

   BACKT    LW    32   //暂存循环计数值

   L    MW[LD  24]    //取数据,第一次循环取的是MW60

   ITD    //转换为双整数

   L    MD    50   //取累加和

   +D    //累加

   T    MD    50   //保存累加和

   L    LD    24   //取地址指针值

   L    L#16

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

   T    LD    24   //保存地址指针值

   L    LW    32   //循环计数器值装入累加器

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

   NOP    0

    每次累加完成后,为了使地址指针指向下一个字,地址指针的值应加16或加P#2.01个字由16位组成)。上面程序中的指令“L L#16”可改为“L P#2.0”,表示地址指针将增加两个字节。如果是对字节进行操作,每次循环地址指针应加8或加P#1.0。如果是对双字进行操作,每次循环地址指针应加32或加P#4.0

    3-91是用于验证程序的变量表,MD50中是MW60开始的5个字的值的累加和:

变量表

    3-91    变量表