您现在的位置是:首页 > 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的低字
BACK:T 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.0(1个字由16位组成)。上面程序中的指令“L L#16”可改为“L P#2.0”,表示地址指针将增加两个字节。如果是对字节进行操作,每次循环地址指针应加8或加P#1.0。如果是对双字进行操作,每次循环地址指针应加32或加P#4.0。
图3-91是用于验证程序的变量表,MD50中是MW60开始的5个字的值的累加和:
图3-91 变量表