您的位置 首页 php

S7-1200梯形图没有FOR循环指令如何实现循环呢?

熟悉1200系列PLC的朋友一定发现了,1200梯形图中没有开发FOR循环指令, 如果碰到要循环执行多次的程序该如何实现呢?

首先我们要搞清楚循环执行的概念,任何品牌 PLC 执行方式都是循环扫描,也就是说所有程序默认都是在不停的循环扫描,那是不是意味着我们不需要任何操作就可以循环执行呢?其实这种理解是错误的,PLC每个周期刷新一次结果,在一个周期里默认只能扫描一次,而我们所说的循环执行是需要一个周期内循环扫描多次,这样必须通过程序处理才能实现,在200smart中通过FOR循环指令很轻松就能实现这个功能,但是1200没有开发 FOR 循环,那该怎样实现呢?

CPU 的扫描方式可以看出,正常从第一行程序扫描到最后一行程序结束为一个周期,也就是说中间扫多少程序,扫多少遍都是这一个周期内,只是扫描周期长短不同而已,如果能在三秒结束之前通过逻辑程序修改扫描顺序,让CPU反复扫描某一段程序,那样就实现了循环。

哪条指令能改变原本的扫描顺序呢? JMP 和LABEL指令,能根据条件跳转的指定标签处进行扫描。如下图所示:当跳转条件成立时,程序扫描到15段时,会跳转到C1标签处重新扫描,递增指令会不断的循环计数。

但是这样会有个问题,CPU扫描周期一旦超过设定值就会报警,超过两倍(通常300ms)则会导致CPU停止,这样跳转条件成立很快CPU就停止了,我们再增加条件使跳转指定次数后不再执行跳转,这样就还可以避免CPU停止。如下图所示:

这样每个周期会扫描10次,第10次扫描后循环次数等于10,条件不满足则不执行跳转,继续往下扫描。

这样又有一个问题出现了,下一周期还是会扫描C1处的递增指令,只是不会再跳转循环扫描,即下一个周期只会扫描一次,要每个周期都扫描10次,只需要清零循环次数就可以了,所以如下图:

这样效果是不是和 FOR循环 很相似呢? 可以自己动手测试一下,编程应当思路灵活,换一种思路也许就能找到解决问题的办法。

文章来源:智云一二三科技

文章标题:S7-1200梯形图没有FOR循环指令如何实现循环呢?

文章地址:https://www.zhihuclub.com/152813.shtml

关于作者: 智云科技

热门文章

网站地图