198366809 发表于 2021-2-14 23:36:06

三菱plc编程,FOR循环指令详解

当一个或者多个指令(程序)重复多次(次数可知)时,可使用FOR指令。FOR为有限次循环指令。程序的执行过程主要分为3个步骤,输入检测、程序扫描、输出刷新。这是plc一个工作周期的工作顺序,在扫描的时候某些程序段需要执行多遍,这个时候我们可以使用FOR指令。让程序中的某一段反复执行多遍,然后再往下扫描。那么,在哪些地方用到它呢。下面我们来看2个应用案例。
https://p3-tt.byteimg.com/origin/pgc-image/d44a6ed8d3a64b84a3518dcca2040882?from=pc

程序的0到9步,触发X0的上升沿信号,把M0导通,Z0、D10全部清空;第9到23步,是一段循环指令,FOR K10表示这段程序循环10遍。第一遍,由于变址寄存器Z0里面的数字为0,D0Z0这个地址变为D0(具体参考变址寄存器的用法),ADD D10 D0Z0 D10,这条指令把D10加D0的数据放到D10里面了,由于在程序上面用了D10,所以一开始D10保存的数据为0,经过加法指令,D10里面保存数据就是D0,然后通过INC Z0加一指令,让Z0自加1,等于1.然后进入循环第二遍.第二遍,Z0里面的数据为1,D0Z0这个地址变为D1,ADD D10 D0Z0 D10这条指令把D10(经过第一遍扫描,D10里面保存了D0)加D1的数据放到D10里面了,那么 D10里面的数据变为D0+D1,然后通过INC Z0加一指令,让Z0自加1,等于2.然后进入循环第三遍。… …第10遍,Z0里面的数据为9,D0Z0这个地址变为D9,ADD D10 D0Z0 D10这条指令把D10(经过第9遍扫描,D10里面保存了D0+D1+… +D8)加D9的数据放到D10里面了,那么 D10里面的数据变为D0到D9里面全部数据的总和,然后通过INC Z0加一指令,然后退出循环,进入下一步。M8000常通触点段开M0,当进入PLC下一个工作周期时,由于循环指令里面的程序都是由M0常开触点触发的,这是就不会再触发了,也就是,经过一个PLC的工作周期,就把D0到D9里面的数据加起来,放到了D10里面了。当然,我们也可以写程序来做一些其他的计算。下面我们来看下另外一个应用案例:有54个X点,对应启动54个Y点,需要保持自锁,当按下按钮M0时所有输出停止。面对这样一个要求,在没有学习循环指令之前,你可能会一段一段的写,需要写54段程序,今天,我们来尝试下用FOR指令来写,如下图:
https://p3-tt.byteimg.com/origin/pgc-image/1bf5d87b27fb4d8e843d44c6e1546eb7?from=pc

每次进行扫描都会先把Z0清0,然后进入循环(54次),第一遍Z0=0,这时X000Z0的地址是X000,Y000Z0的地址是Y000,X000触发Y000线圈并形成自锁,通过INC指令Z0自加1;第二遍,Z0等于1,这时X000Z0的地址是X001,Y000Z0的地址是Y001,X001触发Y001线圈并形成自锁,通过INC指令Z0自加1;… …这样的话,就把本来很冗长的一大段简化成了一小段,节省程序步数的同时减少了编程的时间。关于FOR指令,除了以上两种,大家平时还有什么用法?

漂动的风筝 发表于 2021-2-15 01:49:01

看完楼主的帖子,我的心情竟是久久不能平息,受教了

zzl 发表于 2021-2-15 03:10:25

感谢分享,佩服佩服!

奋斗 发表于 2025-11-12 10:57:35

同款经历!我当初也这么过来的😂

一夜千机 发表于 2025-11-12 11:10:07

这波反向操作,我属实没想到!

快乐万岁 发表于 2025-11-12 12:56:07

原来还有这种操作,长见识了!

不忘初_nnoqi 发表于 2025-11-12 13:19:31

画面感太强了,仿佛身临其境!

迭戈、 发表于 2025-11-12 13:34:35

评论区人才辈出,笑到停不下来😂

ss110 发表于 2025-11-12 14:54:00

理性围观,感觉大家说的都有道理~

wx_rM6mmK3M 发表于 2025-11-12 16:25:40

救命!这回复笑到我捶桌,必须置顶~
页: [1] 2 3
查看完整版本: 三菱plc编程,FOR循环指令详解