课程中心
HOME
课程中心
正文内容
plc编程循环指令 plc子程序和循环指令的举例说明,带你走进plc高级编程
发布时间 : 2024-10-06
作者 : 小编
访问数量 : 23
扫码分享至微信

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 CPU自检阶段

CPU自检阶段包括CPU自诊断测试和复位监视定时器。

在自诊断测试阶段,CPU检测PLC各模块的状态,若出现异常立即进行诊断和处理,同时给出故障信号,点亮CPU面板上的LED指示灯。当出现致命错误时,CPU被强制为STOP方式,停止执行程序。CPU的自诊断测试将有助于及时发现或提前预报系统的故障,提高系统的可靠性。

监视定时器又称看门狗定时器WDT,它是CPU内部的一个硬件时钟,是为了监视PLC的每次扫描时间而设置的。CPU运行前设定好规定的扫描时间,每个扫描周期都要监视扫描时间是否超过规定值。这样可以避免由于PLC在执行程序的过程中进入死循环,或者由于PLC执行非预定的程序造成系统故障,从而导致系统瘫痪。如果程序运行正常,则在每次扫描周期的内部处理阶段对WDT进行复位(清零)。如果程序运行失常进入死循环,则WDT得不到按时清零而触发超时溢出,CPU将给出报警信号或停止工作。采用WDT技术也是提高系统可靠性的一个有效措施。

2 通信处理阶段

在通信处理阶段,CPU检查有无通信任务,如果有则调用相应进程,完成与其他设备(例如,带微处理器的智能模块、远程I/O接口、编程器、HMI装置等)的通信处理,并对通信数据做相应处理。

3 读取输入

在读取输入阶段,PLC扫描所有输入端子,并将各输入端的通/断状态存入相对应的输入映像寄存器中,刷新输入映像寄存器的值。此后,输入映像寄存器与外界隔离,无论外设输入情况如何变化,输入映像寄存器的内容也不会改变。输入端状态的变化只能在下一个循环扫描周期的读取输入阶段才被拾取。这样可以保证在一个循环扫描周期内使用相同的输入信号状态。因此,要注意输入信号的宽度要大于一个扫描周期,否则很可能造成信号的丢失。

4 执行程序阶段

可编程控制器的用户程序由若干条指令组成,指令在存储器中按顺序排列。当PLC处于运行模式执行程序时,CPU对用户程序按顺序进行扫描。如果程序用梯形图表示,则按先上后下、从左至右的顺序逐条执行程序指令。每扫描到一条指令,所需要的输入信号的状态均从输入映像寄存器中读取,而不是直接使用现场输入端子的通/断状态。在执行用户程序过程中,根据指令做相应的运算或处理,每一次运算的结果不是直接送到输出端子立即驱动外部负载,而是将结果先写入输出映像寄存器中。输出映像寄存器中的值可以被后面的读指令所使用。

5 刷新输出阶段

执行完用户程序后,进入刷新输出阶段。可编程控制器将输出映像寄存器中的通/断状态送到输出锁存器中,通过输出端子驱动用户输出设备或负载,实现控制功能。输出锁存器的值一直保持到下次刷新输出。

在刷新输出阶段结束后,CPU进入下一个循环扫描周期。

相关问答

西门子plc循环指令?

使用这条指令时,当你设定好当前循环计数(INDX)、起始值(INIT)和结束值(FINAL)后,每次I0.1动作,就会执行一次FOR到NEXT之间的循环,循环结束后INDX值就会...使...

plc循环右移指令例子?

关于这个问题,假设PLC中DW0的初始值为0x12345678,执行循环右移指令后结果为0x91234567。循环右移指令的语法为:RORDn,#n其中,Dn表示要进行操作的数据...

西门子plc循环指令使用方法?

西门子PLC循环指令用于实现循环执行指定的程序段。其使用方法是首先设定循环的次数或条件,然后在循环内部编写需要执行的指令或程序段。可以根据循环的次数或...

三菱PLC循环指令实例?

你在前面把D0Z0限制了,MOV个值进去就可以了例如LDX0MOVK0Z0FORK2LDM8000INCZ0NEXT你在前面把D0Z0限制了,MOV个值进去就可以了例如L...

plc系统循环是什么意思?

说的通俗点,PLC系统循环就是从上到下,从左到右循环执行用户程序,每循环一次就是顺便扫描一遍元件的状态。并按程序指令来执行相应的动作,这个周期就是所谓的P...

PLC里面的FOR循环?

循环指令共有两条:循环区起点指令FOR,编号为FNC08,占3个程序步;循环结束指令NEXT,编号为FNC09,占用1个程序步,无操作数。在程序运行时,位于FOR~NEXT间的...循...

plc循环左移指令如何定时?

在PLC(可编程逻辑控制器)中,可以使用循环左移指令(RL)来实现数据的循环左移操作。但是,要实现定时循环左移,需要结合其他编程元素,例如定时器。以下是...在...

西门子g程软件中循环指令是什?

西门子GOTOS指令为程序从头循环指令等同于FANUC的M99.但是你写在程序里她不会报错也不会执行。应为802、808、828中有个程序分歧控制位DB3200.DBX16.0调试时候...

plc编程循环问题怎么整?

在PLC编程中,处理循环问题需要注意以下几点:确定循环条件:使用比较指令或逻辑指令对循环条件进行判断,根据判断结果决定是否继续循环。比如,可以使用比较指...

plc顺序控制指令?

西门子PLC顺序控制指令即西门子S7-200系列PLC控制指令,主要分为定义顺序段、段开始、段结束、段转移四个板块,详细简介如下:1、定义顺序段即定义一个顺序控...

 夏血  深夜食堂第二季 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2024  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部