不知道大家在使用PLC编程时使用最多的编程方式是什么?不出意外的话使用最多的编程方式是梯形图和ST语言和SCL语言。至于指令表编程放眼现在也是凤毛麟角般的存在。但是大家有没有想起另外一种PLC的编程方式SFC也叫顺序功能图编程。
SFC顺序功能图
顺序功能图(SFC),又称为状态转移图或功能表图,是一种用于描述控制流程功能和特性的图形编程语言。它是为可编程逻辑控制器(PLC)开发的,并且是IEC 61131-3标准定义的五种语言之一
SFC主要由以下部分组成
状态步:
状态步表示控制系统的一个工作状态,可以分为初始状态步和一般状态步。初始状态步用双线矩形框表示,是系统等待启动命令的状态;一般状态步用单线矩形框表示。
有向连线:
有向连线表示状态之间的转移方向,通常从上到下表示,可以省略箭头。
转移条件:
转移条件用短划线表示,表示状态之间的转移必须在条件满足的情况下进行。
命令和动作
:每个状态中的命令和动作表示控制要求及其对应的程序,通常用相应的文字符号写在状态框旁边。
状态
不知道大家在学习PLC时有没有画过逻辑控制图,我们的SFC编程序方式就是把我们的逻辑控制图搬运到软件中。换种说法大家在使用梯形图做逻辑控制时无论你是用继电器写SET一个M,然后复位一个M一步一步的写法。还是用步进指令SET S0,STL S0的方法、还是用寄存器赋值法,当D0等于1时执行什么操作,当D0等2时执行什么操作.....等等方法,都是以顺序流程来做的。
而我们的SFC就是把你的操作流程序给可视化了,让你更好的排查和写程序。所以我们的SFC有一个优点就是:
以图形化方式描述控制流程,将复杂过程分解为多个步骤,直观展示各步骤的执行顺序和转换条件,便于理解和沟通。
并行分支
例如:现在有一台PLC控制三个工位的逻辑控制,每个工位都有不一样的逻辑,现要求每个工位都能有手动程序,自动程序,当自动程序运行时按下启动能同时运行所有工位、按下能同时停止所有工位、复位一样。
如果采用传统的编程方法去做的话,由先大家肯定先做每个工位的手自动的标志位,启动、停止、复位逻辑。
继电器法:定义M0~M100为工位1的逻辑 ,定义M200~M299为工位2的逻辑控制、M义M300~M399为工位3的逻辑控制。然后用始SET 一个M 复位一个M。这样写三个工位的程序。(当然程序千变万化这是举例,一条路直通哥
免打扰
)
步进写法:定义S0~S9为初始步。定义S100~S199为工位1,定义S200~S299为工位2,定义S300~S399为工位3。S10~S100为公共部分或备用部分。
寄存器写法:定义D10的值为工位1,定义D20的值为工位2,定义D30的值为工位3。
而SFC的写法为如图:
可以看出SFC的对于并行分支运行可读性还是很高的
评论区讨论一下
评论区讨论一下,为什么SFC很少人用,缺点是什么?
授人以鱼不如授人以渔返回搜狐,查看更多