网站首页 > 文章精选 正文
关注“PLC发烧友”,一起涨知识~
私信回复:64 ,领64本西门子电子书!
使用FOR和NEXT指令可在重复执行分配计数的循环中执行程序段,每条FOR指令需要一条NEXT指令,将FOR-NEXT循环置于最大嵌套深度为8层的FOR-NEXT循环内。
FOR指令标记循环的开始,NEXT指令为循环体的结束指令。
一、FOR-NEXT指令说明
(1)FOR指令管脚说明
INIT、FINAL分别定义起始值和结束值。
使能输入EN有效,循环体开始执行,执行到NEXT指令时返回,每执行一次循环体,当前值计数器INDX增1,达到终止值FINAL时,循环结束。
使能输入无效时,循环体程序不执行。每次使能输入有效,指令自动将各参数复位。
注意:使用 FOR 和 NEXT 指令可在重复执行分配计数的循环中执行程序段。每条 FOR 指令需要一条 NEXT 指令。
二、FOR-NEXT 简单循环编程案例(字节)
编程要求:通过FOR-NEXT循环指令把1 -100数字依次放入VB100-VB199地址里。
(1)建立指针地址:VD10是指指针,就相当于手指指向一样,&VB100是指针指向的起始地址或首地址,相当于你手指指向的第一个地址。
(2)启用FOR循环,EN端使能端不需要一直接通,只需要使用沿脉冲(上升沿)触发,INDX存放于循环次数使用字数据类型表示,INIT表示起始循环次数,FINAL表示结束循环次数。
(3)写入指针与指针偏移,当执行一次循环VB1000值加一,把VB1000写入至VB100,当循环一次指针偏移一个字节。
(4)循环结束完成
(5)演示效果
从VB100开始的100字节分别为VB100-VB199写入1-100数字。
三、FOR-NEXT 简单循环编程案例(字)
编程要求:通过FOR-NEXT循环指令把1 -100数字依次放入VW100-VW298地址里。
(1)建立指针地址:VD10是指指针,就相当于手指指向一样,&VB100是指针指向的起始地址或首地址,相当于你手指指向的第一个地址。
(2)启用FOR循环,EN端使能端不需要一直接通,只需要使用沿脉冲(上升沿)触发,INDX存放于循环次数使用字数据类型表示,INIT表示起始循环次数,FINAL表示结束循环次数。
(3)写入指针与指针偏移,把VW0当前循环次数存放到指针指向的VW100地址里,在通过加法指令把VW100+2=VW102,这里为什么要加2呢?是因为既然是循环字,字由两个字节组成,所以加2是为了依次排序下去。
(4)循环结束完成
(5)效果演示
从VW100开始的100字分别为VW100-VW298写入1-100数字。
四、FOR-NEXT 简单循环编程案例(双字)
编程要求:通过FOR-NEXT循环指令把1 -100数字依次放入VD100-VD496地址里。
(1)建立指针地址:VD10是指指针,就相当于手指指向一样,&VB100是指针指向的起始地址或首地址,相当于你手指指向的第一个地址。
(2)启用FOR循环,EN端使能端不需要一直接通,只需要使用沿脉冲(上升沿)触发,INDX存放于循环次数使用字数据类型表示,INIT表示起始循环次数,FINAL表示结束循环次数。
(3)写入指针与指针偏移,写入指针与指针偏移,当执行一次循环VD1000值加一,把VD1000写入至VD100,当循环一次指针偏移一个双字。
(4)循环结束完成
(5)演示效果
从VD100开始的100双字分别为VD100-VD496写入1-100数字。
五、问答专区
(1)从以上图中可以看出字节/字/双字都可以达到1到100数值,但VW0值都是101这是为何呢?
答:设定循环次数是100次,但FOR循环指令需要再进行循环一次进行对比,直到循环次数大于100设定值,才能停止,停止将不再执行FOR循环到NEXT这段程序。
(2)为什么传送字的时候不需要转换,而传送字节、双字的时候需要转换呢?
答:FOR循环指令只能支持字的数据类型,所以不需要转换直接使用,而字节/双字才需要转换。
(3)FOR-NEXT指令的循环次数如何计算?
答:FOR-NEXT工作过程:启用FOR-NEXT指令,首先将 INIT( 初始值) 复制到 INDX(当前循环次数);每执行一次,INDX (当前循环次数) 加1;如 果 INDX 大于 FINAL (终止循环次数),终止循环。
比如:INIT=1 FINAL=10,则循环体被执行10次,然后退出循环, 退出循环后INDX=11
INIT=0,FINAL=10, 则循环体被执行11次,然后退出循环,退出循环后INDX=11
(4)FOR-NEXT指令执行时,主程序是否执行,对扫描周期的影响?
答:程序自上而下循环扫描,当FOR-NEXT指令启用后,则循环体被循环执行,直至循环次数到达,循环结束,程序继续向下执行。即在一个扫描周期内执行循环完毕后才会向下执行,循环次数越多,会导致扫描周期时间延长越多。如果循环次数过多或者出现死循环,会导致扫描周期时间超过看门狗时间,报出看门狗超时的致命错误,CPU停机并且SF/DIAG灯红灯常亮。
(5)如何在FOR-NEXT执行循环过程中,退出循环?
答:您可以在FOR/NEXT 指令处于循环过程中时,在循环体中修改FINAL (终止循环次数)数值。
来源:技成培训网,作者:技成-徐陈爽,未经授权不得转载!
私信回复:64 ,领64本西门子电子书!
- 上一篇: Linux内核中的原子指令
- 下一篇: 计算机微处理器介绍
猜你喜欢
- 2025-01-21 单片机的由来及基础原理
- 2025-01-21 改变世界的马斯克
- 2025-01-21 CPU架构与指令集
- 2025-01-21 一文搞懂啥是CPU、MPU、MCU、SoC!
- 2025-01-21 头条新手写什么最简单?微头条不会写,用AI辅助写作,分分钟搞定
- 2025-01-21 「西门子指令」INC_B、INC_W、INC_DW指令应用详解
- 2025-01-21 15年大牛用140多个实战案例深入讲解Java微服务架构文档
- 2025-01-21 并发原理—CPU原子性指令(一)
- 2025-01-21 快速掌握S7-1200PLC与HD20变频器模拟量控制
- 2025-01-21 计算机组成原理复习要点(复习必过)
- 05-15C语言创建链表
- 05-15看一遍就理解,图解单链表反转
- 05-15C++:挑战鹅厂面试题(一)--反转链表
- 05-15数据结构:单链表算法题,常见技巧套路心得分享
- 05-15那些经典算法:跳表
- 05-15数据结构错题收录(十八)
- 05-15数据结构与算法——带你走进循环链表的相关操作
- 05-15二叉树展开为链表-迭代法
- 最近发表
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 计算机网络的拓扑结构是指() (45)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)
- mysql数据库面试题 (57)