第3章 步进顺控指令 在工业控制中存在着大量的顺序控制,如机床的自动加工、自动生产线的自动运行及机械手的动作等,都是按照固定的顺序进行动作的。采用梯形图及指令表方式编程是可编程控制器最基本的编程方式,它采用的是常规控制电路的设计思路,所以很容易被广大电气工作者接受。用梯形图可以实现各种各样的控制要求。但是对于这种顺序动作的控制用梯形图方式编程往往要考虑各动作之间的互锁、状态的记忆等一系列问题,需要一定的编程技巧,而且很容易遗漏其中的细节。如果控制过程复杂,梯形图往往很长,前后之间的相互关联会给读图带来困难。 如果用步进顺控指令编程就简单了,并且易读易懂,本章介绍一种用于顺序控制的编程方法——状态转移图。 3.1步进梯形图指令与状态转移图 3.1.1步进梯形图指令 三菱公司的小型PLC在基本逻辑指令之外增加了两条步进梯形图指令STL(Step Ladder Instruction)和RET,这是一种符合IEC11313标准中定义的SFC图(Sequential Function Chart,顺序功能图)的通用流程图语言。顺序功能图也称状态转移图,SFC图特别适合于步进顺序的控制,而且编程十分直观、方便,便于读图,初学者也很容易掌握和理解。 步进梯形图指令如表31所示。STL指令的梯形图符号在不同的编程软件中有所不同。 表31步进梯形图指令 名称 指令 梯形图符号 可用软元件 程序步 步进指令 STL S 1 步进结束指令 RET 1 步进梯形图指令STL使用的软元件为状态继电器S,FX3U型PLC元件编号范围为S0~S899(900点),S1000~S4095(3096点),共计3996点。S900~S999为信号报警器。 S0~S499(500点)为通用型状态继电器,其中S0~S9(10点)用于初始状态,S10~S19(共10点)用于回零状态。通用型状态继电器在失电时将复位为0。 S500~S899(400点)为失电保持型状态继电器,失电保持型状态继电器可在失电时保持原来的状态不变。 S1000~S4095为失电保持专用型状态继电器,不能通过参数设定来改变其失电保持的范围。 S0~S899可以通过参数设定来改变其失电保持的范围,如设定起始编号为200,结束编号为800,则S200~S800变为失电保持型状态继电器。 3.1.2状态转移图和步进梯形图 状态转移图(SFC图)主要由状态步、转移条件和驱动负载3部分组成,如图31(a)所示。 图31步进顺控指令图的3种表达方式 初始状态步一般使用初始状态继电器S0~S9。SFC图将一个控制程序分成若干状态步,每个状态步用一个状态继电器S表示,由每个状态步驱动对应的负载,完成对应的动作。注意,状态步必须满足对应的转移条件才能处于动作状态(状态继电器得电)。 初始状态步可以由梯形图的接点作为转移条件,也常用M8002(初始化脉冲)的接点作为转移条件。当一个状态步处于动作状态时,如果与下面相连的转移条件接通后,该状态步将自动复位,则它下面的状态步置位将会处于动作状态,并驱动对应的负载。 如图31(a)所示,当PLC初次运行时,M8002产生一个脉冲,使初始状态继电器S0得电,即初始状态步S0动作,S0没有驱动负载,处于等待状态,当转移条件X0和X3都闭合时,S0失电复位,S20得电置位,S20所驱动的负载Y0也随之得电。 SFC图既便于阅读,也便于设计,SFC图也可以用STL图表示,如图31(b)所示。状态步的线圈要用SET指令,其主控接点用STL指令,主控接点右边为副母线。在SFC图结束后要用RET指令,图31(c)是SFC图的另一种表达方式。 以图32(a)所示的运料车为例,使用SFC图来编程。运料车为单循环控制方式,送料车单循环控制过程可分为4个状态步: 前进到A点→后退到O点→前进到B点→后退到O点。PLC输入/输出接线图如图32(b)所示。 图32运料车自动循环控制程序 按照图32(a)所示的运料车运行方式画出SFC图,对应的STL图如图33(b)所示,图33(c)为指令表。如图33(a)所示,每个状态步用一个状态继电器S表示。 图33运料车自动循环控制程序 工作原理如下: 当PLC运行时,初始化脉冲M8002使初始状态步S0置位,等待命令。 运料车在原位时X0=1,当按下起动按钮时X3=1,满足转移条件,S0复位,S20置位,S20驱动输出继电器Y0,运料车向前运行。 到A点时碰到限位开关SQ2,X1=1,S20复位,Y0也相应失电。S21置位,S21驱动输出继电器Y1,运料车向后运行。 回到O点时碰到限位开关SQ1,X0=1,S21复位,S22置位,运料车再次向前。 到B点时碰到限位开关SQ3,X2=1,S22复位,S23置位,运料车向后运行到O点时碰到限位开关SQ1,X0=1,S23复位,S0置位,运料车停止,完成一个循环过程。 可见SFC图简洁明了,不需要考虑输出量之间的互锁,也不需要考虑状态的记忆,编程方法比较简单。 STL图在不同编程软件中所表达的方式是不一样的,如图34所示。图34(a)为FXGP/WINC编程软件绘制的梯形图,图34(b)为GX Developer编程软件绘制的梯形图。 在FXGP/WINC编程软件中,STL指令是以主控接点的形式表现。在GX Developer编程软件中,STL指令是以主控线圈的形式表现。 图34(b)所示的梯形图是由较新版本GX Developer编程软件绘制的,但是这种梯形图不够直观,因此本书主要采用FXGP/WINC编程软件绘制的梯形图。 图34运料车在不同编程软件中的梯形图 SFC图适用于具有比较固定顺序的控制,但是某些步进顺序控制过程中要加入一些随机控制信号。例如运料车在运行过程中要求立即退回原位、停止等随机控制信号。用SFC图来处理随机控制信号是不方便的。对于这类随机控制信号,还需要用梯形图来补充。 例如在图32所示运料车单循环控制的基础上再增加连续循环、暂停和退回原位控制,其控制梯形图如图35所示,PLC控制接线图如图35(a)所示,主接线图如图35(b)所示。运料车的连续循环控制由开关SA(X6)来控制。 图35增加控制信号的运料车PLC接线图与主接线图 增加控制信号的运料车PLC梯形图如图36所示,当X6=0时,运料车运行一个循环过程到原位后X0=1,由S23状态步回到S0状态步,运料车停止运行。当X6=1时,运料车运行一个循环后,由S23状态步回到S20状态步,运料车连续循环运行。 按下后退按钮SB2时,X4接点闭合,将S20~S23复位,回到S0状态步,Y1得电,运料车后退到原位停止。 按下暂停按钮SB3时,X5闭合,特殊辅助继电器M8034得电自锁,PLC的全部输出继电器Y不输出,运料车停止。再按下起动按钮X3,M8034失电,输出继电器恢复输出,运料车继续按停止前的运行方式工作。 图36增加控制信号的运料车PLC梯形图 3.1.3SFC图和STL图编程注意事项 在用SFC图和STL图编程时应注意有关事项,下面用图37和图38来说明。 图37的编程说明如下。 (1) 没有接点的线圈支路应放在上面先编程,如S20状态步中的Y0线圈。而有接点的线圈支路应放在下面后编程。如果没有接点的线圈(如图37中的Y2)一定要放在后面,则线圈前面要加一个M8000接点。 (2) 同一个线圈可以用于不同的状态步中,如S20和S21状态步中的Y0线圈(但是在同一个状态步中,同一个线圈多次使用时要特别注意)。 (3) 同一个定时器可以在不相邻的状态步中使用,例如在S20状态步中使用定时器T1后,相邻S21状态步中就不能使用,而在S22状态步中却可以接着使用。 图37编程说明1 图38编程说明2 图38的编程说明如下。 (1) 在一个状态步中,当驱动负载用SET指令时,如S20状态步中的SET Y0,当Y0置位后使S20复位,S21状态步置位,Y0仍置位,到S22状态步时由RST Y0指令来复位Y0。 (2) 转移条件可以是单接点也可以是接点组,如S20到S22状态步的接点组。从一个状态步转移到多个状态步时可以用回路分支导线指令MPS、MRD、MPP (注意: 这与原编程手册是不一致的,原编程手册中说明转移条件不能用ANB、ORB、MPS、MRD、MPP),但最好不要用MPS、MRD和MPP指令。 (3) STL主控接点为常开接点,STL主控接点后的线为副母线,线圈可以直接连接在副母线上,接在副母线上的接点用起始接点指令(LD、LDI、LDP、LDF)。 (4) 从一个状态步转移到相邻状态步(连续步)时用SET指令,而从一个状态步跳转到不相邻状态步(不连续步)时既可用OUT指令,也可用SET指令。 (5) 在STL指令中建议不要用CJ功能指令。 (6) 在SFC图中不要用MC/MCR指令。 3.1.4状态转移条件的有关处理方法 1. 相邻两个状态步的转移条件同时接通时的处理 当相邻两个状态步的转移条件同时接通时,第一个状态步的转移条件接通,将从第一个状态步转移到第二个状态步,由于第二个状态步的转移条件也接通,同时又立即从第二个状态步转移到第三个状态步,这样第二个状态步就被跳过。为了解决这个问题,可以将第二个状态步的转移条件改为X或Y的边沿接点或用M2800~M3071的边沿接点。 例3.1用PLC控制一个圆盘。 用PLC控制一个圆盘,圆盘的旋转由电动机控制。要求按下起动按钮后每转1圈停止3s,转5圈后停止。该例题如果用SFC图编程比较简单,如图39所示。 图39相邻两个状态步的转移条件同时接通时的处理 先看图39(b)所示梯形图,初始状态时S0置位,当按下起动按钮X0时,S20置位,由于限位开关X1已经处于受压状态,X1常开接点也闭合,所以又跳到S21状态步,S20复位,Y0不能得电,圆盘也就不能转动。 解决的方法是将X1的常开接点改为上升沿接点,如图39(c)所示。这样X1上升沿接点常开接点只是在初始状态时闭合一个扫描周期,正常时是断开的,这样当按下起动按钮X0时,S20置位就不会跳到S21状态步了。S20置位,Y0得电,圆盘转动,转一圈后碰到限位开关X1,X1上升沿接点闭合一个扫描周期跳转到S21状态步,计数器C0计数一次,定时器T0延时3s,又转移回到S20。圆盘转动5次后,计数器C0计数5次,转移回到S0,将计数器复位,圆盘停止工作。 2. 同一信号的状态转移 用M、S、T、C的接点做状态步的转移条件时,如果相邻状态步的转移条件相同,则应将其改成M2800~M3071的边沿接点,如图310所示。 例3.2用PLC控制4盏灯。 用PLC控制4盏灯,要求按下起动按钮时,每次亮一盏灯,每盏灯亮2s,4盏灯轮流亮,并周而复始。按下停止按钮时,灯全部熄灭。 图310相邻状态步的转移条件相同时的处理 PLC状态转移图如图310所示。PLC运行时,初始化脉冲M8002使初始状态步S0置位。用一个定时器T0,T0每2s发出一个脉冲作为每个状态步的转移条件。由于每个状态步的转移条件都是T0,但是不能直接用T0的接点作为转换接点,而要用M2800~M3071的边沿接点。 起动时,按下起动按钮X0,S20置位,Y0得电,同时S24置位(此处S24作为辅助继电器使用,而不是作为状态器使用),S24常开接点闭合,接通定时器T0,T0接点每隔2s发出一个脉冲。接通M2800,M2800上升沿接点每2s发出一个脉冲。S20、S21、S22、S23依次置位,每次亮一盏灯,4盏灯轮流得电。 按下停止按钮X1,S20~S24复位,T0线圈失电,S0置位,灯全部熄灭。 3.2SFC图的跳转与分支 3.2.1SFC图的跳转 SFC图的跳转有以下形式。 (1) 向下跳: 跳过相邻的状态步(也称跳转),到下面的状态步,如图311(a)所示,当转移条件X1=1时,从S0状态步跳到S22状态步。 (2) 向上跳: 跳回到上面的状态步(也称重复),如图311(a)所示,当转移条件X6=1,X3=0时,从S22状态步跳回到S20状态步; 当转移条件X6=1,X3=1时,从S22状态步跳回到S0状态步。 (3) 跳向另一条分支: 如图311(d)所示,当转移条件X4=1时,从S30状态步跳到另一条分支的S21状态步。 (4) 复位: 如图311(d)所示,当转移条件X3=1时,使本状态步S32复位。 在编程软件中,SFC图的跳转用箭头表示,状态复位用空心箭头。 图311(b)和图311(e)为编程软件表示的SFC图。图311(c)和图311(f)为指令表。 例3.3用PLC控制小车。 一辆小车在A、B两点之间运行,如图312所示。在A、B两点分别设有后限位开关SQ2和前限位开关SQ1,小车在A、B两点之间时可以控制小车前进或后退。小车运行后,在A、B两点之间自动往返运行,在B点要求停留10s。 小车运行的PLC输入/输出接线图如图313(a)所示。 小车运行的状态转移图如图313(b)所示,当按下前进按钮X0时,S20置位动作,Y0得电,小车前进。碰到前限位开关X5时,S20复位,S21置位,小车停止10s,S22置位。 Y1得电,小车后退,碰到后限位开关X6时,上跳回到S20状态步,进入自动循环过程。如果将开关X3闭合,小车后退,碰到后限位开关X6时停止。 如果开始时按后退按钮X1,则从S0状态步下跳到状态步S22。之后进入自动循环过程(X3=0时)或小车后退到后限位停止(X3=1时)。 图311跳转的形式 图312小车运行图 图313小车运行PLC接线图和SFC图 如图314所示为图313(b)SFC图的步进梯形图。 图314小车运行STL图 小车运行STL图对应的指令表如表32所示。 表32小车运行STL图对应的指令表 0LDM8002 1ORX002 2SETS0 4ZRSTS20S22 9LDX004 10OUTM8034 12STLS0 13LDX000 14SETS20 16LDX001 17OUTS22 19STLS20 20OUTY000 21LDX005 22SETS21 24STLS21 25OUTT0K100 28LDT0 29SETS22 31STLS22 32OUTY001 33LDX006 34ANIX003 35OUTS20 37LDX006 38ANDX003 39OUTS0 41RET 42END 在此例中设置了以下4种停止方式。 (1) 结束停: 在小车运行过程中,将开关X3闭合,小车后退到后限位时停止。如果开始时将开关X3闭合,再按下前进按钮X0,小车则运行一次单循环过程。 (2) 立即停: 在小车运行过程中,按下按钮 X2,在图314所示的梯形图中,X2接点闭合,将S20~S22全部复位,S0置位,小车立即停止。 (3) 暂停: 在小车运行过程中,将开关X4闭合,特殊辅助继电器M8034得电,全部输出继电器失电,小车停止。将开关X4断开,特殊辅助继电器M8034失电,输出继电器恢复到原来状态,小车继续运行。 (4) 急停: 用急停按钮或开关将PLC的输出电路的电源切断,直接断开接触器,这种方式比较可靠,将急停按钮或开关再次闭合可继续运行。如果用急停按钮或开关将PLC的电源切断,则PLC停止运行。再次通电时,需要按下起动按钮才能运行。 3.2.2SFC图的分支 状态转移图(SFC)可分为单分支、选择分支、并行分支和混合分支4种。 单分支是最常用的一种形式,前面所介绍的实例采用的均为单分支状态转移图。 选择分支状态转移图如图315(a)所示,在选择分支状态转移图中有多个分支,只能选择其中的一条分支。对应的步进梯形图和指令表如图315(b)和图315(c)所示。 图315选择分支 图316并行分支 并行分支状态转移图如图316(a)所示,对应的步进梯形图和指令表如图316(b)和图316(c)所示。在并行分支状态转移图中也有多个分支,当满足转移条件X2时,所有并行分支S23、S26同时置位,在并行合并处所有并行分支S24、S27同时置位,当转移条件X5=1时,转移到S28状态步。 混合分支状态转移图如图317所示,它由选择分支和并行分支状态转移图混合连接而成,动作过程比较复杂,应注意在并行汇合处的状态步有等待的过程。例如在图317(a)中,若X2=1,S23置位,随后S24置位,最后S28置位,S28在并行汇合处等待S29置位,在S29置位后,X7=1时向下转移。图317(b)也是一样。 图317混合分支 选择分支编程实例可参照实例10.1大小球分拣传送机械手和实例10.2电镀自动生产线PLC控制。 并行分支编程实例可参照实例8.10组合钻床。 混合分支编程实例可参照实例8.12可逆星三角降压起动、点动、连动、反接制动控制。 习题 1. 画出题图1所示单分支状态转移图的步进梯形图,并写出指令表。 题图1单分支状态转移图的步进梯形图 2. 画出题图2所示混合分支状态转移图的步进梯形图,并写出指令表。 题图2混合分支状态转移图的步进梯形图 3. 根据题图3所示的SFC图画出对应的STL图,并写出指令表。 题图3SFC图 4. 用PLC控制一个圆盘,圆盘的旋转由电动机控制。要求按下起动按钮后正转2圈、反转1圈后停止。试画出状态转移图、步进梯形图,并写出指令表。 5. 如题图4所示为一台剪板机装置图,其控制要求如下: 按起动按钮X0,开始送料,当板料碰到限位开关X1时停止,压钳下行将板料压紧时限位开关X2动作,剪刀下行将板料剪断后触及限位开关X3,压钳和剪刀同时上行,分别碰到上限位开关时停止。试画出PLC接线图和状态转移图。 题图4剪板机装置图 6. 某泵站有4台水泵,分别由4台三相异步电动机驱动。为了防止备用水泵长时间不用而造成锈蚀等问题,要求2台运行2台备用,并每隔8h切换1台,4台水泵轮流运行。初次起动时,为了减少起动电流,要求第1台起动10s后第2台起动。根据控制要求画出PLC输入/输出控制接线图和状态转移图。 7. 控制1台电动机,按下起动按钮,电动机正转10s停3s,再反转10s停3s。循环10次后信号灯闪3s结束。按下停止按钮,电动机立即停止。 8. 用PLC控制4盏彩灯按题图5所示的时序图动作,每隔1s变化1次,全部熄灭1s后又重复上述过程,分别画出题图5(a)和题图5(b)的状态转移图。 题图5时序图 9. 如题图6所示为1个圆盘,圆盘的旋转由电动机控制。要求按下起动按钮后正转1圈、反转1圈再正转1圈后停止。 题图6圆盘 10. 一辆小车在A、B两点之间运行,在A、B两点各设一个限位开关,如题图7所示,小车在A点时(后限位开关受压动作),在车门关好的情况下,按一下向前运行按钮,小车就从A点运行到B点停下来,然后料斗门打开,装料10s,之后小车自动向后行到A点停止,车门打开,卸料4s后车门关闭。试画出PLC接线图和状态转移图。 题图7小车运行示意图 11. 某生产线有一辆小车用电动机拖动。电动机正转小车前进,电动机反转小车后退,在O、A、B、C点各设置一个限位开关,如题图8所示。小车停在原位O点,用一个控制按钮控制小车。第1次按按钮,小车前进到A点后退回到原位O停止; 第2次按按钮,小车前进到B点后退到原位O停止; 第3次按按钮,小车前进到C点后退到原位O停止。再次按按钮,又重复上述过程。试画出PLC接线图和状态转移图。 题图8小车运行示意图