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案例|如何用PLC控制小车五位自动循环往返运行?
一、任务目标
该任务是定时器指令相关应用案例。西门子S7-1200 PLC定时器种类比较多,在实际的应用中,读者可根据实际的应用场景选择对应的定时器指令。本任务要求读者掌握以下几个内容。
1.定时器指令的分类
2.定时器各管脚的含义
3.定时器配合其他指令的使用方法
二、任务描述
如图所示(2-2-1)用三相异步电机拖动一辆小车在A、B、C、D、E五点之间自动循环往返运行,小车五位行程控制的示意图如图所示。小车初始在A点,按下启动按钮,小车依次前进到B、C、D、E点,并分别停止5S返回到A点停止。
图2-2-1小车延时自动往返示意图
三、相关知识
本案例需要使用的是基本位逻辑和定时器指令。位逻辑指令在其他的章节中已有介绍,此处为读者介绍定时器指令的相关知识。
1、定时器指令
西门子S7-1200PLC有4种常用的定时器:
①TP:脉冲定时器,可生成具有预设宽度时间的脉冲。
②TON:接通延时定时器,输出Q在预设的延时后设置为ON。
③TOF:关断延时定时器,输出Q在预设的言时后重置为OFF。
④TONR:保持型接通延时定时器,输出Q在预设的延时后设置为ON,在使用R输入重置经过的时间之前,会一直累加跨越多个定时时段经过的时间。
2、如图2-2-2所示,在指令窗口中选择“定时器操作中”的TON指令,并将其拖入程序段中(见图2-2-3),这时会跳出一个“调用数据块”窗口,选择自动编号后,会直接生成DB1数据块,也可以选择手动编号,根据用户需要生成DB数据块。
图2-2-2 定时器指令
图2-2-3 TON指令调用数据块
在项目树的“程序块”中可以看到自动生成的IEC_Timer_0_DB[DB1]数据块(见图2-2-4)双击进入,即可读取DB1定时器的各个数据,变量的数据类型为IEC_Timer,见表2-2-5。
图2-2-4 DB1数据块位置
TON指令就是接通延迟定时器,输出Q在预设的延时后设置为ON。TON指令形式如图2-2-6。TON的参数及数据类型见表2-2-7。在2-2-7表中,R参数一般用于TONR等指令。参数IN从0跳为1时将启动定时器TON。
表2-2-5 DB1数据块IEC_Timer_0_DB的内容
图2-2-6 TON指令形式
表2-2-7 TON的参数及数据类型
参数
数据类型
说明
IN
Bool
启用定时器输入
R
Bool
将TONR经过的时间重置为0
PT
Bool
预设的时间值输入
Q
Bool
定时器输出
ET
Time
经过的时间值输出
定时器数据块
DB
指定要使用RT指令复位的定时器
在定时器中PT(预设的时间)和ET(经过的时间)的数据大小以有符号、双精度的32位整数形式表示毫秒时间,见表2-2-8。TIME数据使用T#标识符,以简单时间单元“T#200ms”或者复合时间单元“T#2S_200ms”的形式输入。
表2-2-8 TON的参数及数据类型
数据类型
大小
有效数值范围
TIME
32位存储形式
T#-24d_20h_31m_23s_648ms 到 T#24d_20h_31m_23s_647ms 以 -2,147,483,648 ms 到 +2,147,483,647 ms
TON指令的应用与时序图如图2-2-9和图2-2-10所示。在时序图中PT=5S。
图2-2-9 TON指令的应用
图2-2-10TON指令的时序图
TOF关断延时定时器的指令与TON类似。图2-2-11和图2-2-12为TOF指令的应用和时序图。在时序图中PT=5S。
图2-2-11TOF指令的应用
图2-2-12TOF指令的时序图
TP脉冲定时器指令的应用如图2-2-13,时序图如图2-2-14所示。在时序图中PT=5S。
图2-2-13TP指令的应用
图2-2-14TP指令的时序图
四、任务实施
本任务的实施步骤主要分为PLC接线、IO地址分配以及程序设计思路:
1、PLC接线如图2-2-14
图2-2-14PLC接线图
2、IO地址分配
输入地址
说明
输出地址
说明
I0.0
启动
Q0.0
小车前进
I0.1
A点位置
Q0.1
小车后退
I0.2
B点位置
I0.3
C点位置
I0.4
D点位置
I0.5
E点位置
3、程序设计思路
任务中,小车需要到达5个工位,首先判断小车前进的条件是:按下了启动按钮或者从B、C、D、E点任意一点返回到A点后。
小车停止前进的条件是:小车到达了B、C、D、E点或者触碰到了E点位置。
判断小车后退的条件是:B、C、D、E点位置到达了,然后延时时间到了则小车后退。
4、程序设计
五、经验与总结
1、在这个案例中主要使用的是常开、常闭、线圈、定时器指令。案例中有5个工位,当按下启动按钮后,小车启动。到达B、C、D、E任何一点都需要停止小车前进(使用M0.0标志位断开小车前进),然后再延时,延时时间到达后后退。
2、小车后退到达A点位置后,小车又继续前进。假定前一次到达的位置是B点,则这一次需要到达的是C点位置。到达C点位置就会触碰到B点的限位开关,故使用标志位(M0.1)断开小车在B点前进功能。
(技成培训网原创,作者:郭彪,未经授权不得转载,违者必究)
特别推荐:
① 手机版电工专用计算器,1分钟快速搞定复杂的电工计算
② 13种电气计算EXCEL表格,自动生成!从此计算不求人(超实用)
③ 6款免安装的超实用电气计算软件,值得下载
相关问答
plc怎么让一个程序重复循环?
在PLC中,可以使用循环语句或者定时器来实现程序的重复循环。循环语句可以使用LAD、FBD或者STL等编程语言编写,通过判断循环次数或者循环条件来实现重复执行程...
西门子plc循环指令?
使用这条指令时,当你设定好当前循环计数(INDX)、起始值(INIT)和结束值(FINAL)后,每次I0.1动作,就会执行一次FOR到NEXT之间的循环,循环结束后INDX值就会...使...
plc循环一个程序怎么结束循环?
plc结束循环最简单的办法是编写循环终止程序,编程思路如下:在编好的循环程序后再在别的地方加一条程序,用一个停止位(x1)置位一个位(m0),将这个m0添加到...p...
plc八个灯循环指令有哪些?
移位指令一共有四个循环右移、循环左移、右移、左移循环移位指令(左、右)八个位是循环移动的也就是说循环左移1位就是向左移动1位最高位移到最低位处循环...
plc怎么写循环指令?
在PLC的程序中,循环执行可以通过使用循环指令来实现。PLC的循环指令通常分为两种:定长循环和条件循环。1.定长循环定长循环指令是由一个计数器和一个定值组...
西门子PLC怎么使程序循环?
使用这条指令时,当你设定好当前循环计数(INDX)、起始值(INIT)和结束值(FINAL)后,每次I0.1动作,就会执行一次FOR到NEXT之间的循环,循环结束后INDX值就会...使...
plc系统循环是什么意思?
说的通俗点,PLC系统循环就是从上到下,从左到右循环执行用户程序,每循环一次就是顺便扫描一遍元件的状态。并按程序指令来执行相应的动作,这个周期就是所谓的P...
信捷plc跑马灯循环程序怎么维持?
信捷PLC的跑马灯循环程序可以通过设置计时器来实现。具体步骤如下:1.在程序中定义跑马灯所需的IO口,并初始化。2.创建一个计时器,设置定时时间为跑马...
西门子plcfor…to循环的用法?
您好,西门子PLC的循环用法可以通过使用循环指令来实现。循环指令可以在程序中重复执行一段代码,直到满足某个条件为止。常见的循环指令有以下几种:1.FOR循...
西门子PLC中如何实现自动循环?
在西门子PLC中实现自动循环通常可以使用计时器和定时器来实现。以下是一种常见的方法:1.使用一个计时器(TON)步来设置循环的时间间隔。该计时器的触发可以通...