三菱FX系列PLC条件跳转和子程序指令的应用*
2012-07-31赫焕丽熊安胜
赫焕丽,熊安胜
(咸宁职业技术学院,湖北 咸宁 437100)
三菱FX系列PLC功能指令-条件跳转指令用来选择执行指定的程序段,跳过暂时不需要执行的程序段.在程序编制中,经常也会遇到一些逻辑功能相同的程序段需要反复被运行,为了简化程序结构,可以编写成子程序,然后在主程序中根据需要反复调用.现就在实际中关于条件跳转指令和子程序指令的应用和注意事项,总结如下.
1 跳转指令CJ
跳转指令可用来选择执行指定的程序段,跳过暂时不需要执行的程序段.条件跳转指令CJ的助记符、操作数等指令属性如表1所示.
表1
如图1所示,当X0接通时,则由“CJP0”指令跳到标号为P0的指令处开始执行,跳过了程序的一部分,减少了扫描周期.如果X0断开,跳转不会执行,则程序按原顺序执行.
图1 跳转指令的使用
图2 程序跳转指令
如图2所示,X0是手动/自动运行的选择开关.X1、X2分别是电机M1和M2在手动操作方式下的启动按钮(点动控制),X3是自动运行方式下两电机的启动按钮.Y1、Y2分别是控制电机M1启动和M2启动的输出信号.
当X0常开触点接通时,执行“CJP0”指令,跳到标号为P0处执行手动操作程序.此时分别按下X1和X2,可点动M1和M2进行机床调整;而当X0常闭触点接通时,不执行“CJP0”指令,顺序执行自动运行程序.此时按下启动按钮X3电机M1先启动,5s后电机M2自行启动运行,按下停止按钮可同时停止两台机床.然后执行“CJP1”指令,跳过自动程序直接转到标号P1处结束.X0的常开/常闭触点起联锁作用,使手动操作和自动运行两个程序只能选择其中之一.
2 子程序指令
子程序调用指令CALL、返回指令SRET的助记符、操作数等指令属性如表2所示.
表2
如图3所示.当X0常开触点接通时,执行“CALL P1”,即程序转到标号P1处,执行子程序.当执行到子程序的最后一句“SRET”时,程序返回到主程序,从步序号4开始继续往下执行.当X0常开触点断开时,标号为P1的子程序不能被调用执行.
图3 子程序指令使用说明
图4 两种工作方式电动机控制程序
某电机要求有连续运行和手动调整两种工作方式,用子程序设计的梯形图控制程序如图4所示.当工作方式开关X0的常开触点接通时,运行标号为P2的子程序,此时为手动调整状态;当X0常开触点断开时,运行标号为P1的子程序,此时电机为连续运行状态.
在图2和图4中,由于手动程序和自动程序不能同时执行,所以程序中的线圈Y0不能视为双线圈.
3 数组运算的梯形图程序
3.1 控制要求
某车间要对生产流水线进行过程控制.动态采集20个现场数据(16位),存放在D0~D19中.每隔半小时找出其中的最大值,将其与标准值(放入D30中)进行比较,如果大于标准值点亮红灯(Y0);每隔1小时计算他们的平均值,并与标准平均值(放入D40中)进行比较,若大于标准平均值红灯(Y1)闪烁报警.
3.2 确定输入、输出并分配I/O地址
本控制在这里编程时不涉及到20个现场数据的动态采集过程.假定这20个数据已经采集到位,只对其比较、计算控制进行编程.
选择X0作为控制装置的启停开关作为输入信号,两个红灯地址分别为Y0和Y1作为输出信号.
3.3 设计PLC控制程序
根据控制要求,编制出PLC的梯形图程序如图5所示.程序中,当通过开关输入使X0=1后,C0、C1同时对M8014(1min时钟脉冲)计数.C0每计满半小时,执行一次子程序P0,即比较20个现场数据的大小.C1每计满1小时执行一次子程序P1,即计算20个数据的平均值.在子程序P0中,先将20个数据中的第一个数送到D20中,赋变址寄存器Z的初值为1.再用循环指令将剩下的19个数据(因此循环次数应等于19)逐一与D20进行比较,若有比D20数据大的,就直接送往D20覆盖原数据,然后地址变量Z加1.等全部比较完毕,20个数据中的最大值就一定存放在D20中.再用触点比较指令将最大值(存放在D20中)与标准值(存放在D30中)对比,若大于标准值就把Y0接通.在子程序P1中,先将D23、D22清0,地址变量Z也清0,再用循环指令对20个数据逐一相加,并将所求之和存放到 D23(高16位)、D22(低16位)中,因此循环次数为20.接下来用32位操作的除法指令将所求的总和除以数据的个数20,得到平均值放到D24中.最后用触点比较指令与标准平均值(存放在D40)对照,若大于标准平均值就使Y1闪烁报警.
图5 数组运算的梯形图程序
4 使用条件跳转和子程序指令应注意的问题
4.1 使用条件跳转指令应注意的几个问题:
(1)条件跳转指令CJ(P)的操作数为指针标号P0~P127,P用于分支和跳转程序.
(2)标号P放置在左母线的左边,在一个程序中一个标号只能出现一次,若出现两次或两次以上,程序报错.
(3)若跳转条件满足,则执行跳转指令,程序跳到以标号P为入口的程序段中执行,否则不执行跳转指令,按顺序执行下一条指令.
(4)P63是END所在的步序,在程序中不需要设置P63.指针标号允许用变址寄存器修改.CJ和CJ(P)都占三个程序步,指针标号占一步.
(5)若用M8000常开触点作为跳转条件,则CJ变成无条件跳转指令.
(6)不在同一个指针标号的程序段中出现的同一个线圈不看作双线圈.
(7)在跳转执行期间,即使被跳过程序的驱动条件改变,但其线圈(或结果)仍保持跳转前的状态,因为跳转期间根本没有执行这段程序.
(8)处于被跳过的程序段中的Y、M、S由于该段程序不执行,故即使驱动它们的工作条件发生了变化,它们的状态也依然保持跳转前的状态不变.同理,T、C如果被跳过,则跳转期间它们的当前值被锁定,当跳转中止、程序继续执行时,定时计数接着进行.
(9)如果在跳转开始时定时器和计数器已在工作,则在跳转执行期间它们将停止工作,到跳转条件不满足后又继续工作.但对于正在工作的定时器T192~T199和高速计数器C235~C255,不管有无跳转仍连续工作.
(10)若积算定时器和计数器的复位(RST)指令在跳转区外,即使它们的线圈被跳转,但对它们的复位仍然有效.
4.2 使用子程序指令时应注意的几个问题:
(1)主程序在前,子程序在后,即子程序要放在FEND指令之后.不同位置的“CALL”指令可以调用相同标号的子程序,但同一标号的指针只能使用一次.
(2)转移标号不能重复,也不可与跳转指令CJ的标号重复.(3)子程序必须写在FEND和END之间,否则出错.
(4)子程序可以调用下一级子程序,称为子程序嵌套,FX2N系列的PLC最多可以有5级子程序嵌套.
5 结语
通过以上实例,三菱FX系列PLC条件跳转指令和子程序指令在实际应用中可以用来选择执行指定的程序段,或者要反复被运行程序段.我们在实际使用的过程中一定要注意他们的使用注意事项,以免使用中出现错误.
[1]郭艳萍,陈冰.电气控制与PLC应用[M].北京:人民邮电出版社,2010.
[2]黄中玉,于宁波.PLC应用技术[M].北京:人民邮电出版社,2009.
[3]岳庆来.变频器、可编程序控制器及触摸屏综合应用技术[M].北京:机械工业出版社,2009.