SFC顺序功能图和STL步进梯形图

时间:2025-03-12

【注:以下内容是以基于 汇川PLC(easy52x) 使用AutoShop编程模拟仿真来写的,其他品牌PLC可能会略有差异,本文章旨在快速上手STL和SFC编程】

推荐学习顺序

梯形图 --> STL步进梯形图 --> SFC顺序功能图

STL步进梯形图

STL步进梯形图 不同于 普通梯形图,它可以把一个完整的运行过程分成若干步来完成,每一步就是一种状态,当满足某种条件时,就可以从当前状态切换到下一个状态;这种控制方式,只有当前状态下的指令会执行,其他状态下的指令不会执行;

STL步进梯形图指令

STL步进梯形图指令只有STL和RET两个指令,普通梯形图中的指令也可以使用;

STL 指令

功能:表示进入某一状态S;程序跳至副母线,即程序只会执行当前状态S处的指令,其他状态处的指令不会执行;

格式:STL  Sn

Sn表示状态,如S0,S1....等;

举例:STL S0   //进入状态0;

 

左边最粗的竖线就是主母线,相当于主程序,右边细一点的竖线就是副母线,相当于状态S0下的执行过程

RET 指令

功能:表示结束步进梯形图程序;程序跳至主母线,继续执行主母线后面的非步进指令或步进指令(如果有的话);

格式:RET

(注意:AutoShop软件中RET必须直连在STL指令后面,如下a图所示,b图和c图都会报错!)

STL步进梯形图编程

状态编号

为了能把STL步进梯形图顺利转成SFC顺序功能图,推荐使用SFC的状态号规则:S0~S9为初始状态软元件,S10~S19可以用于特殊目的,其他普通状态可以使用S20~S889等;

STL步进图中对状态号没有严格限制,初始状态号设置成S0~S9之外的也能用;但是SFC顺序功能图中却有严格的要求,初始状态号只能是S0~S9,其他普通步进状态号只能是S10~S889等;

进入初始状态

由于步进状态S一般使用常开触点,因此,启动PLC后并不会直接进入初始状态,所以,需要我们提前设置好,让它进入初始状态,其中,最简单的办法就是使用SET指令直接设置为初始状态;

例如:

M8002软元件是程序运行的第1个扫描周期标志,程序运行第1个扫描周期为ON,后面一直为OFF,也就是说程序运行第一个扫描周期时M8002导通,S0置1,后面的初始状态S0常闭触点也就导通,即进入初始状态S0;

步进程序的组成

一个完整的 STL步进梯形图 由STL指令进入,到RET指令结束;中间的程序只会在状态间切换,从当前状态切换到下一状态需要满足跳转条件;

一个完整的 步进程序 一般由 普通梯形图 + STL步进梯形图 组成;一个典型的例子就像这样:普通梯形图用于控制进入步进初始状态,STL步进梯形图用于实现不同状态的功能;

即:普通梯形图 ==> [STL--步进--RET]

也就是说,STL步进梯形图中也可以穿插普通梯形图,但是需要遵循规则:普通梯形图必须插在一个STL步进梯形图的结尾,不能插在中间;

即:普通梯形图 ==> [STL--步进--RET] ==> 普通梯形图 ==> [STL--步进--RET];

关于STL步进梯形图编程的一些规则(自己去验证)

1)不同状态S下,可以使用同一个输出而不出现双线圈输出;

2)在一个扫描周期内,从当前状态切换到下一状态时,会出现两个状态同时接通的瞬间;应对办法,设置互锁;

3)相邻状态不能使用同一定时器;

4)状态转移除了用SET指令也可以用OUT指令,但SFC中OUT指令用于向分离的状态转移;

5)中断和子程序中不能使用STL指令

6)STL步进程序中最好不要用跳转指令,不是因为禁止使用,而是因为逻辑会变得太复杂;

流水灯实例

举个简单的例子,现有A、B、C三盏灯,运行要求:启动按钮按下,ABC依次亮3秒,然后重复,停止按钮按下系统停止运行!

以下就是完整的步进程序,只是为了实现仿真功能,不作优化和其他考虑

网络1:开机后,按下“启动按钮”X0的时候,S0置位(进入初始状态),M0置位(由于是SET指令,所以会保持),“运行指示”灯Y6亮;运行时,按下“停止按钮”,M0复位,“运行指示”灯Y6灭;

网络2:是初始状态S0;

“启动按钮”按下时就会进入初始状态,初始状态下用于复位状态S24,并进入下一个状态S21;复位S24是因为运行过程中,当按下“停止按钮”时,会进入停止状态S24,S24被置位,因此,当再次按下“启动按钮”运行系统时,需要复位S24;

网络3:是状态S21;

运行时,进入状态S21后,S21常开触点和M1常开触点都置位导通,灯A亮,灯A亮导致计时器开始计时,3秒后,计时器输出端口Q置位,即M1置位,M1常开触点闭合,进入状态S22,S21常开触点断开,S21状态的功能失效(灯A灭,计时器复位);

当按下“停止按钮”时,M0常开触点断开,灯A灭,计时器复位并进入状态S24(停止状态);

网络4:是状态S22,过程和状态S21一样分析;

网络5:是状态S23,过程和状态S21一样分析;

网络6: 是状态S24(停止状态);该状态下“停止指示”灯亮,然后退出步进,回到主程序继续执行;                          

流水灯实例仿真结果

启动按钮(X0)按下(左图)弹起(右图)后的效果:运行指示灯(Y6)亮,灯A(Y0)亮

流水灯仿真效果:灯A(Y0)、灯B(Y1),灯C(Y2)3秒轮流亮

状态S21(左图),灯A(Y0)亮,运行指示灯(Y6)亮,此时按下“停止按钮”X1的演示效果(右图):运行指示灯(Y6)和 灯A(Y0)灭,停止指示灯(Y7)亮;

SFC顺序功能图

SFC顺序功能图比STL步进图还要直观,它是用图形符号来展示整个流程的;可以这么说,会写STL步进图,基本上就会写SFC顺序功能图了;SFC只是把某个状态下要执行的指令全部放在了一个“步进符”中,而转移条件放在了“状态转移条件图”中;

下面展示一下SFC顺序功能图的样式:

符号定义

至于大家叫它们符号还是叫它们图块,怎么顺口怎么来吧! 

梯形块图,里面是普通的梯形图;
起始步进符(图),就是初始状态,一个程序只能有一个起始符;
普通步进符(图),S10~S889;
状态转移条件图,就是从一个状态转至另一个状态的条件

向上状态转移图,用于状态转移至上面的某个状态S;

SFC编程从上到下,状态号不能重复使用,当需要从底部返回上面的状态时,就用这个;

状态复位图,用于复位某个状态S;其他状态改变;
选择分支图,用于从同一个步进点按不同条件转至多个步进点
分支汇合图,用于多个步进点按不同条件转至同一个步进点;
并行分支图,用于由同一个步进点按同一个条件转至多个步进点;
并行分支汇合图,用于多个步进点按同一个条件合并至同一个步进点;

SFC编程的特点

1)和STL步进梯形图一样,SFC顺序功能图也需要设置好状态才能进入初始状态;这些用于触发进入初始状态的梯形图都可以放在中来完成;最简单的办法就是通过M8002来驱动指令SET S0进入初始状态;

2)初始状态号只能是S0~S9,其他普通步进状态号只能是S10~S889等;

3)SFC中状态号不能重复使用;

4)SFC可以实现复杂的分支流程,如下图所示:

SFC实例

为了方便对比STL步进图,就拿前面 STL步进梯形图  的 流水灯实例 来转换成SFC顺序功能图,它们整体对应关系如下图所示:         

                                                                                   

流水灯实例 网络1 的转换

 流水灯实例 的STL步进图 网络1替换前:

替换后:

流水灯实例 的网络1等效于SFC顺序图中的,其中的内置梯形图如下图所示,与流水灯实例 的网络1内容完全一样;

流水灯实例 网络2(初始状态S0) 的转换

流水灯实例 的STL步进图网络2(初始状态S0)替换前:

 替换后:

和STL步进图不一样的地方在于没有了STL指令   ,初始步进符和普通步进符就相当于STL指令;转移状态的指令变成了,转移条件如下所示:

流水灯实例 的网络3(状态S21)的转换

流水灯实例 的网络3(状态S21)、网络4(状态S22)、网络5(状态S23),把它们转换成SFC顺序图步骤一样,下面以网络3(状态S21)的转换为例;

流水灯实例 的STL步进图网络3 转换前:           

         

转换后:

从上图中可以看出,除了状态转移的指令被移除外,其他的都保留在状态S21内置梯形图中; 

第一条状态转移SET S22指令的条件(M0和M1常开触点)被替换成了左边的“‘状态转移符’”

第二条状态转移SET S24指令的条件(M0常开触点和取反指令)被替换成了右边的“状态转移符”; 

流水灯实例 的网络6(状态S24)的转换 

流水灯实例 的STL步进图网络6 替换前: 

替换后:                                                                             

总结:普通输出指令作为该状态下的执行过程被留在步进符内,而要转移状态的SET输出指令变成“状态转移符”,转移条件就是SET指令的执行条件, 除了STL指令外;

SFC实例仿真结果

SFC顺序功能图的仿真结果和STL步进梯形图的仿真效果一样;

“启动按钮”(X0)按下弹起的演示效果:运行指示灯(Y6)亮,开始流水灯;

流水演示:灯A(Y0)、灯B(Y1)、灯C(Y2)、轮流亮3秒;运行指示灯(Y6)亮;

 停止按钮(X1)被按下:运行指示灯(Y6)灭,停止指示灯(Y7)亮;     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值