戳上方蓝字 "技成电工课堂” 关注我们哦!

上次,我们学习了程序流程转移中的条件跳转CJ,这次,我们接着向子程序调用CALL和FOR循环发起进攻吧!

显然,子程序调用CALL和FOR循环和条件跳转CJ一样,都是PLC程序中用于流程转移的,所以,上次所学的程序区、主程序结束指令FEND等知识点可不要丢哟~在这里我也不再赘述了,这是为了给读者们省时间,可不是我想偷懒。那么,我们开始这次的学习吧!

一、子程序调用(CALL、SRET)

所谓子程序,顾名思义,它是程序的孩子,啊呸,它是区别于主程序而存在的独立程序段,只能呆在副程序区的可怜瓜娃子。就像我之前说的,你妈妈叫你打酱油,有苹果就顺便买几个,这里的打酱油是主程序,买苹果是子程序。酱油是必须要打的,但苹果买不买取决于你CALL不CALL,如果你想把买苹果的钱拿去买辣条,此时买苹果这个子程序就不会被驱动(CALL),不过,你妈妈会不会赏你一个鞋饼就另说了。

调用子程序和条件跳转一样,都是PLC的瞬移特异功能,但CJ主要是在主程序区蹦跶,怎么跳转,都逃不过主程序区这五指山,但调用子程序就不一样了,它一跳就直接跳到副程序区去了,就跟孙猴子的筋斗云似的。

那么,这个筋斗云怎么用呢?我们接着往下看。

1、子程序调用指令CALL、SRET

要想在PLC梯形图中跳出主程序这个牢笼,召唤子程序,就必须要用到子程序调用指令CALL,而且还要捎带上CALL的媳妇SRET。

和CJ不一样的是,子程序调用指令CALL必须要和子程序返回指令SRET成对使用。但又和CJ指令一样,CALL的适用软元件也是分支指针P0~P127,且P63不能用于CALL。

所以,在编程时要注意分支指针P的使用,同一标号的P不能同时被CJ指令和CALL指令共用,例如CALL P5中的P5就不能用于CJ P5。

从编程手册中可以看到,CALL指令仅用于16位,且具有连续执行型和脉冲执行型两种。连续执行型和脉冲执行型的区别于CJ差不多,在此不再赘述。SRET指令和FEND指令一样无驱动条件,仅用于子程序的返回。在子程序中,执行到子程序返回指令SRET时,立即返回到主程序调用指令的下一行继续往下执行。如上图所示,当驱动条件X0接通(X0=ON),执行CALL P5,程序跳转到副程序区中子程序的入口地址P5处往下执行,执行到SRET指令时,立即返回到主程序区CALL P5的下一行继续往下执行。所以,我们在使用CALL指令时,千万不要忘了它的媳妇SRET指令哦,所谓“宁拆十座庙 ,不毁一桩婚”,可不要做了那棒打鸳鸯的坏人。

2、子程序嵌套

子程序嵌套,是指子程序中再应用子程序调用指令去调用其他子程序,所谓“三十六计计中计”,一环扣一环,一套嵌一套。当然,这个再次调用的过程类同于主程序调用子程序的过程。如上图所示就是2层嵌套的程序流程图,当驱动条件X0接通,调用子程序1,在执行子程序1的过程中,驱动条件X1接通,调用子程序2,执行完子程序2后,返回到子程序1中调用指令CALL P6的下一行继续执行完子程序1,直到执行到子程序1的返回指令后返回到主程序中调用指令CALL P5的下一行继续往下执行。这就好比你打酱油,途中去买苹果,买苹果的途中看到辣条忍不住,然后跑去买辣条,卖完辣条再去买苹果,最后才去买酱油,最后回家。这里打酱油是主程序,买苹果是子程序1,买辣条是子程序2。在三菱PLC2N中,调用子程序的嵌套层数,对主程序而言最多有5层,显然,对子程序而言就要少一层,就是4层。如上图的子程序嵌套流程图,子程序2中还可以有3,3中有4,4中有5,5中就不能有6了。3、子程序的软元件使用按理来说,主程序和子程序的软元件是通用的,也就是说,三菱PLC2N中的软元件,可以用于主程序,也可用于子程序,但有一个比较特殊,那就是定时器。所有定时器均可用于主程序,但子程序要用定时器的话,就没这么简单了,它只能是T192~T199、T246~T249这10个。另外,在子程序调用过程中被驱动的软元件,其状态在子程序调用结束后,会保持在最后一次调用时候的状态不变。哪怕这些软元件的驱动条件在子程序调用结束后发生了改变,软元件的状态也不会发生改变。4、子程序应用什么时候才会用到子程序呢?显然,子程序是区别于主程序的独立程序段,这里的独立,其实就很明显的突出的子程序的作用,那就是把功能模块化,不同的子程序互相独立,各自有着不同的功能,为主程序提供不同的服务。所以,当系统规模很大、控制要求复杂时,可以把程序分为一块一块的子程序,使程序简化;另外,当某个功能需要多次执行时,也可以编成子程序,需要时直接调用,清晰方便,是主程序简单化。子程序调用的实际应用,在这里我就不举例了,因为这和主程序区别也不大,只不过是功能模块化而言。打败了子程序调用后,我们乘胜追击,继续进攻PLC的FOR循环吧!

二、循环

PLC的循环也是程序流程转移的一种,对应的指令为FOR、NEXT。和子程序调用指令一样,循环指令FOR和NEXT也是成对出现的,但不同的是,FOR指令和NEXT指令都没有驱动条件。在子程序调用指令CALL、SRET中,CALL指令是需要驱动条件的,条件跳转指令CJ 也需驱动条件。从编程手册中,我们可以看到,FOR指令仅用于16位,且只有连续执行型。这是显然的,因为它没有驱动条件,哪来的脉冲执行型?

所谓FOR循环,指的是重复,在程序中,PLC扫描到FOR-NEXT指令时,对FOR-NEXT指令之间的程序重复执行n次。

如下图所示,程序扫描到FOR K5时,在FOR K5与NEXT指令之间的程序2重复执行5次,然后再退出循环继续往下执行。

虽然FOR指令的适用软元件有很多,但最常用的是常数K,也就是用常数K指定程序重复执行的次数。循环指令的应用相对简单,但有几点还是需要我们注意的。1、循环嵌套从上文中我们知道了子程序可以嵌套,同样的,循环指令也可以嵌套,而且最多也是5层。如下图所示为5层循环嵌套,如下图所示。如上图所示,若这5层循环中,每层循环的次数均为10,显然,所有循环全部执行完时,第五层循环被执行了100000次,第4层执行了10000次,依次类推,第1层被执行了10次。这就跟剥洋葱似的,“一层一层剥开我的心~”咳咳,抱歉,一不小心就唱起来了,回归正题。所以,我们在应用循环嵌套时,一定要注意所嵌循环的次数,因为循环次数过多会造成程序运算时间过长,使PLC的响应变慢,甚至超时。另外,循环是可以并立嵌套的,如下图所示。此时两个并立的循环为一层,也就是说,下图为2层的循环嵌套。2、循环指令使用循环指令使用在使用时要注意以下几点:(1)循环指令FOR必须要和NEXT指令成对使用,缺一不可,同生共死;(2)FOR指令和NEXT指令的顺序不能颠倒;(3)FOR指令和NEXT指令必须同时存在同一程序区,FOR指令在主程序区,对应NEXT指令也必须在主程序区,不能写在副程序区。关于循环指令的实际应用,这里我也不列举了,因为我累了。但我们知道了它的作用,能看懂程序也就可以了。那么,这次的学习分享就到这里啦,共勉!注:本文章内容都是基于三菱FX PLC所写选自《三菱FX系列PLC功能指令详解》第二章第9、11课时

(技成培训原创,作者:杨思慧,未经授权不得转载,违者必究!)


如何学习三菱FX PLC条件转移??

杨老师文章更新啦!三菱FX PLC学习之寻址方式

三菱FX PLC学习之功能指令格式解读

我的三菱FX PLC入门之自动小车控制程序

三菱FX PLC入门之定时器和计数器

三菱FX PLC入门之常用基本编程环节

你的分享、点赞、在看我都喜欢

for循环10000次花多长时间_我的三菱FX PLC学习之子程序调用与循环相关推荐

  1. for循环10000次花多长时间_java循环经典案例学会它入行java

    循环结构 循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循环将 ...

  2. python基础语法花多长时间_怎么自学python,大概要多久?

    2020年最后一天,还有一个多小时就是2021年了,先祝愿大家2021年都能够健康平安发大财! 自学Python的方法因人而异,而大概需要多久就更是各说各话了,但是自学Python的路径都是一致的:先 ...

  3. 成为一个程序员要花多长时间

    理解专业程序员 成为一个程序员要花多长时间  http://book.csdn.net/ 2007-3-27 10:18:00 图书导读 当前章节:成为一个程序员要花多长时间 · 目录 · 前言 · ...

  4. SDN精华问答 | 为什么SDN要花这么长时间才被采用?

    SDN火热了好一阵子,无论运营商.政府企业.投资机构,一段时间,不知道SDN.不能甩几个SDN相关的名词术语,似乎都落后于时代了.今天,就来看看关于SDN的精华问答吧. 1 Q:SDN将会提供端到端的 ...

  5. PPT难做?花太长时间?收藏这4个网站,省时省力效率提升不止一倍

    很多人在进入职场后,通常第一个要做的是制作一份简洁有逻辑的PPT.所以如果在职场办公过程中不会使用PPT软件真的太吃亏了.很多人都常说PPT难做,花了很长时间.其实,是因为你不知道可以高效做到,只需收 ...

  6. 转本计算机要花多长时间学,江苏专转本成功经验,从江苏城市职业学院到南京工程学院...

    原标题:江苏专转本成功经验,从江苏城市职业学院到南京工程学院 学校:江苏城市职业学院 专业:会计 各位学弟学妹大家好: 我是17年转本考上南京工程学院的学长,今天我给大家分享一下我的专转本考试的心得体 ...

  7. python精通多长时间_学Python需要多久能学会?精通Python需要多长时间?

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 严格意思上的说,Python其实是一个脚本语言,编程语言多种多样,但是却有开源和闭源之分,Python就是一种开放核心源代码编程语言,其开发代码的效率非常 ...

  8. 米家扫地机器人充满电需要多长时间_米家扫地机器人充满电后能工作多久?

    硬件及结构相关1.Q:米家扫地机器人的激光对小孩或宠物有伤害吗?A:米家扫地机器人通过了IEC 60825-1:2014激光安全等级Class 1的认证,不会对儿童或者宠物带来伤害请放心使用.2 硬件 ...

  9. 云联惠身份认证需要多长时间_欧盟REACH认证需要多长时间【周期、费用、有效期】...

    一.欧盟reach认证 REACH是欧盟关于化学品注册,评估,授权和限制的法规,它于2007年6月1日生效,并用一个系统取代了许多欧洲指令和法规. 二.申请REACH认证需要多长时间 一般情况下,申请 ...

最新文章

  1. 定义派生类拷贝构造函数
  2. AttachThreadInput
  3. SQL Server 2005数据库日志文件损坏的情况下如何恢复数据库
  4. B1277 [HNOI2002]Tinux系统 树形dp
  5. Android:CheckBox控件
  6. c语言连接mysql(入门)_MySQL入门之C语言操作MySQL
  7. 在mybatis用mysql的代码块_mybatis plus与mysql分库组件mycat的结合
  8. c语言实验学生版最新版答案,C语言实验新-学生版
  9. Java 创建xml文件和操作xml数据
  10. 计算2+22+222
  11. Java入门基础知识
  12. 类抽屉问题的C++解决
  13. Keil5 平台 S3C2440裸机程序开发环境配置
  14. 维美儿 名画背后的故事 《戴珍珠耳环的少女》
  15. godot mysql_go godotenv配置环境变量
  16. 利用留数定理计算傅立叶变换积分
  17. 山东计算机专业民办大学排名,2020年山东最好的民办大学排名
  18. python 因子分析 权重计算方法_因子得分如何计算_spss如何计算因子得分
  19. python 发送get 请求
  20. 墨子号量子计算机原型时间,科学网—“墨子号”量子卫星实现安全时间传递

热门文章

  1. subquery unnesting、Subquery unnesting and View Merge
  2. redis 同步化操作
  3. ajax传递参数给springmvc
  4. Python基础06-Python异常处理
  5. [二叉树建树] 后序遍历与中序遍历建立二叉树
  6. 表格隔行变色_CSS实现鼠标悬停高亮
  7. Fedroa 15 默认开启是 命令行模式 即 runlevel5
  8. SOCKET编程中,select()函数的作用
  9. [请教]关于超大数据量网站的数据搜索和分页的实现方法
  10. react 父子组件传值