首页 > 编程语言 >Mitsubishi 三菱FXPLC学习之子程序调用与循环

Mitsubishi 三菱FXPLC学习之子程序调用与循环

时间:2023-08-07 10:22:24浏览次数:78  
标签:主程序 调用 指令 CALL FXPLC Mitsubishi 子程序 循环

  上次,我们学习了程序流程转移中的条件跳转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指令也必须在主程序区,不能写在副程序区。

关于循环指令的实际应用,这里我也不列举了,因为我累了。但我们知道了它的作用,能看懂程序也就可以了。

那么,这次的学习分享就到这里啦,共勉!

标签:主程序,调用,指令,CALL,FXPLC,Mitsubishi,子程序,循环
From: https://www.cnblogs.com/ybqjymy/p/17610751.html

相关文章

  • Mitsubishi 三菱FXPLC学习之中断服务
    “前面我先是分享了PLC程序流程转移中的条件跳转CJ,然后紧接着进攻了子程序调用CALL和循环FOR,这次,我要向“终极BOSS”中断服务发出挑战了!要学习中断服务,我们就得知道什么是中断。那就让我们看看什么是中断吧!一、中断是什么所谓中断,是指PLC按顺序执行程序扫描的过程中,当有需......
  • Abaqus 中最常用的子程序有哪些 硕迪科技
    在ABAQUS中,用户定义的子程序是一种重要的构件,可以将其插入到Abaqus分析中以增强该软件的功能和灵活性。这些子程序允许用户在分析过程中添加自定义材料模型、边界条件、初始化、加载等特定操作,以便更精准地模拟分析中的现象和现象。ABAQUS支持各种不同类型和用途的子程序,下面列举了......
  • Mitsubishi 三菱FXPLC学习之数据处理指令(下)
    本来打算花一篇文章的篇幅来写数据处理指令的,但写着写着发现,一篇文章根本写不完QAQ。上篇文章结束得有点突兀,那这里也再不啰嗦,我们直奔主题吧。01、字交换指令XCH字交换指令,顾名思义,就是将两个字软元件的数据相互交换。从编程手册的截图可以看到,XCH指令可以用于16位和32位......
  • Mitsubishi 三菱FXPLC学习之通信指令(上)
    通信指令本身不难,难的是对通信的理解。在学习PLC通信指令之前,我曾尝试去看通信相关的课程,然后告诉自己:算了,不必勉强自己,学不会的始终学不会。 数据的传输方式有并行和串行两种,其中并行是指同一时刻可以传输多个bit位的信号,有多少个信号位就需要多少根信号线;而串是指同一......
  • Mitsubishi 三菱FXPLC学习之通信指令(下)
    继上篇文章所分享的RS数据传送指令和CCD校验码指令,这次我们接着分享同样受数据处理模式标志继电器M8161控制的ASCI指令和HEX指令。ASCI指令和HEX指令是一对互逆的指令,基于十六进制字符与ASCII码之间的转换。ASCII码,我在之前的文章就有简单的介绍过,在这里再简单提一下。......
  • Mitsubishi 三菱FXPLC扫描周期讲解
    一、程序显示奇怪现象二、PLC的工作过程内部处理:系统初始化、软元件复位、进行自诊断以及内部工作任务,检查有没有错误以确保系统可靠运行;通信服务:和外部通信联系,比如电脑软件监控更新显示内容,又如PLC和触摸屏通信,触摸屏上一直刷新显示;输入处理:依次读入所有输入状态和数据,并......
  • Mitsubishi 三菱FX3U的232通信板,与PC串口调试助手通信测试
    在某个项目中,需要用到上位机来控制PLC中的气缸,采用的通信方式是无协议通信,硬件使用FX3U的PLC以及一块FX3U-232C-BD扩展板。具体测试如下所示。01使用硬件 如图所示: 02测试软件03具体步骤1、编写PLC控制程序,如图所示:程序解释:D8120是通信格式设置地址,设置成H0C81(二进制......
  • Mitsubishi FX5U与三菱ROBOT CC‐LINK IEF Basic通讯
    步骤一:新建工程登录配置文件(配置文件可以根据机械手型号跟厂家获取,这里以CR-800机器人为例); 步骤二:CC‐LINKIEFBasic设置 步骤三:远程IO刷新设置 链接侧为机器人;CPU侧为FX5UCPU;1.位元件RX:机器人的输出作为PLC的远程输人即PLCM6000-M6063的状态是随着M_out(6......
  • Mitsubishi 手把手教你FX5U与三菱触摸屏以太网连接
    步骤一:新建工程,进入工程的新建向导,选择机种;步骤二:在工程新建向导的“连接机器设置”中“I/F”选择以太网;步骤三:设置“GOTIP地址”与PLC同一网段;步骤四:结束触摸屏设置如下;步骤五:点击连接器设置“CH1:MELSECiQ-F”;步骤六:设置PLC“IP地址”;注意:触摸屏连接的第......
  • Mitsubishi 三菱GX Works2梯形图程序分段显示设置
    一、适用情况用GXWorks2进行梯形图程序编辑时,默认是一整段在一起,程序步数较多时查看起来不是那么方便,本文教大家如何设置可以将程序分段显示。二、启用方法如下第01步,在新建工程时的设置如下图 第02步,编辑的整段示例程序如下第03步,先选择声明编辑第04步,然后双击左母线......