plc子程序和循环指令的举例说明,带你走进plc高级编程
今天有同学问到这样一个问题,如下图中的四个半径数据D0~D3,分别求取4个数值的面积,并对其求和,要求是必须采用循环指令和采用子程序来完成。
问题描述
从外面顺控编程来看,这个问题很简单,D0*D0*3.14=D10,...,D3*D3*3.14=D16,D10+D12+D14+D16=D100,按照顺序编写即可完成最后的计算结果。但是如实数据量较多,比如20个,50个的数据求面积,我们难道要编写梯形图重复50多次,显然不合理,所以这位同学的要求很是很好的,今天我们就来介绍下循环指令和子程序的使用。
循环指令,从FOR指令开始到NEXT(FNC 09)指令之间的程序按指定次数重复运行,重复了指定次数后,执行NEXT指令后的步处理,可以对FOR-NEXT指令进行嵌套编程,最多嵌套5层。
循环指令
子程序,在顺控程序中,对想要共同处理的程序进行调用的指令,可以减少程序的步数,更加有效地设计程序。当指令输入为ON时,执行CALL指令,向标记指针Pn跳转,接着,执行标记Pn处的子程序,执行SERT指令后返回CALL指令的下一步,在主程序的最后用FEND指令编程。
子程序
说明了这两个指令,我们开始分析编写梯形图程序,因为是4个数据,所以循环次数是4,首先是第一次循环计算D0数据的面积,这里因为要求子程序,我们把计算面积的公式作为子程序编程,把D0传送到D20并调用子程序把计算结果传送到D10中,并对面积进行一次加法结果保存到D100中,这时候第一次循环就结束了,开始第二次循环,计算D1的面积同上,这里我们采用变址寄存器V对数据D0V0进行软元件的修改,方便我们循环,这个D0V0是什么意思呢,如果V0的值等于1,则D0V0表示D1,V0=3,D0V0表示D3,在D0软元件的编号上加V0值。每次循环完成,对V进行加1或者加2,这样就可以用D0V0和D10V1表示D0~D3,D10~D16。
分析了以上的情况,我们开始变形梯形图,总共有100步,第1步到第8步是数据的初始化,包括变址寄存器V0、V1和总面积D100的清零操作。FOR K4就是循环4次,每一次循环计算一个数值的面积并累积总面积。CALL P1就是调用计算面积的子程序,面积计算完成返回到循环内,把数据进行浮点转整数的int指令并传送到D10,接着对变址寄存器V0加1,V2加2,以及累积面积D100,这样一次完整的计算循环就完成了,接着进行下一次循环,知道循环4次。P1处到END指令就是计算面积的子程序。
计算梯形图
编写完成我们分别对D0~D3(3、4、5、6)进行赋值验算看程序计算是否正确,计算结果是269,忽略3.14浮点的误差。
以上就是三菱plc采用循环指令和子程序去计算多个面积的举例说明,你理解了吗?欢迎留言讨论!
学PLC编程的第1个关卡:单按钮启停程序
原标题:单按钮启停程序,加深对程序扫描的理解,学习编程的第一个关卡
——技成陈育鑫
今天给大家介绍一些单按钮启停的控制程序(也叫一键启停程序),就是使用一个点动按钮,按一下启动一个灯泡点亮,再按一次,熄灭灯泡,再按一次,点亮再按一次,熄灭... ...
看是很简单的一个程序,仔细想想可能很多人还做不出来,这个题目也是我当年刚毕业时面试的时候,考官出的一个题目。
其实这个程序的写法有很多种,通过分析这些写法,可以加深我们对PLC的工作扫描方式的理解。
PLC的工作过程分为3步:
1、输入检测 ,检测各种按钮开关的状态
2、程序扫描 ,穿透到位扫描一遍程序,执行对应的运算
3、输出刷新 ,把程序的运行结果输出控制对应的负载,比如指示灯
下面我们来看看各种写法吧
写法1
通过一条交替输出指令,可以达到效果,这是最简单的控制方式,不需要分析也能看的懂。
写法2:使用计数器
按下第一次按钮后
第一个扫描周期,x0的上升沿会导通(上升沿只导通1个扫描周期),导通Y0的线圈,注意,这个周期的Y0常开触点并不会闭合,因为程序是从上往下,从左往右循环的,然后继续往下,C0的常开触点不闭合,继续下一行扫描,X0的上升沿会导通C0计数器,记1。
第二个扫描周期,由于上一个周期Y0的线圈导通了,所以Y0的常开触点会导通,这时形成自锁由于上升沿只能导通一个扫描周期,所以这一个周期里面的X0全部都不会导通,计数器保存的数据还是1,下一个周期执行的结果和第二个周期时一样的,这时Y0常亮
按下第二次按钮
第一个扫描周期,第一行,X0继续导通Y0的线圈,Y0继续自锁;第3行,计数器的常开触点依然断开;第4行,X0的上升沿又导通了一次,致使C0计数器有记了一个数,计数为2。最终输出结果Y0还是点亮的。
第二个扫描周期,,第一行程序,由于上个周期C0计数器记了2,使得我们的C0常闭触点断开,Y0的自锁解除,熄灭;第3行,C0的常开触点会闭合,把C0的计数器复位,由于上升沿只能导通一个扫描周期,这个周期里面的X0点全部时断开的,这是,结果是Y0断开,C0计数器复位,程序回复导初始状态。
以下还有好多的写法,同样能够实现这个功能,由于解说太长,我们就在后面再给大家解说
写法3
写法4
写法5
写法6
写法7
写法8
写法9
其实还有好多写法,真正写出来应该有30多种,后面老师会给大家一一介绍,你们想听哪一种写法的也可以后台私信留言喔!
相关问答
西门子PLC单灯循环编程?
比较简单的方法,程序长,抛砖引玉,大家考虑用简单的。图片不好显示全,步骤是这样的。1、按键按下后置位一个标志位。用这个标志位去控制下面的计数器。2、用...
plc执行一次循环的步骤?
PLC循环的步骤包括:1)输入数据采集;2)比较输入数据与参考值;3)根据比较结果确定输出;4)执行输出操作;5)返回到第一步重复执行。PLC循环的步骤包括:1)输...
欧姆龙PLC单次与循环怎么编?
用变频器的多段速功能(变频器基本都有这个功能),设置3个段速,分别为40hz,10hz,50hz,然后用3个plc的输出控制,前面的程序我想说:大家基本都会,那就不讲了用变...
plc编程最后循环到第一步怎么编?
plc编程实现循环有多种方法,可以用到跳转指令,蛮方便的,也可以用调用指令,看个人习惯,跳转和调用指令都可用来做手动自动的转换,不过用它们的话,手动和自动的...
西门子PLC怎么完成循环啊S7-200我是用定时器来完成程序的,我TOF以后程序就完成了,怎么回到开头啊?
循环控制吗,那不是很简单,一般都是顺序控制,只要你在最后步执行完了跳转到需要循环开始点就可以了。如果需要多个这样的循环,另外编程,可以调用子程序方式实...
plc往复循环程序怎么写?
PLC往复循环程序的编写方法如下:PLC往复循环程序可以通过使用计数器和跳转指令来实现。往复循环程序的目的是使PLC在一定条件下反复执行一段程序。为了实现这...
三菱PLC三台电机循环运行程序怎么编?
1、做一个小时的定时。2、编写一个三个循环的步进梯形图。一个状态切换到后一个状态的触发条件用前面的定时进行触发。3、电机故障,肯定有三个故障输入点。...
三菱plc循环计数指令?
三菱PLC循环计数指令是`CNC`指令,用于循环计数器的计数操作。其基本语法如下:```CNTRC,R```其中,`C`表示计数器的编号,`R`表示设定的计数器循环上限...
西门子plc循环指令?
使用这条指令时,当你设定好当前循环计数(INDX)、起始值(INIT)和结束值(FINAL)后,每次I0.1动作,就会执行一次FOR到NEXT之间的循环,循环结束后INDX值就会...使...
三菱PLC怎么实现自动循环?
触发开关的命令先导通M0.0,然后M0.0导通了实现抓东西的步骤。现在实现自动循环的功能,就是在东西退下去后,再次触发M0.0,相当于你手动再按下开关,自然就能再...