白话SFC
SFC的历史
SFC是一个英文字母的缩写,它的英文全称是Sequential Function Chart,中文名字叫做顺序功能流程图。SFC的历史来源于传统的DCS系统,当年HONEYWELL的TDC2000和横河的uXL都提供各自顺序控制工具,TDC2000使用CL语言一种类似Basic语言的方式来完成顺序控制而uXL使用顺控表以一种填表方式来完成。时至近代随着混合型DCS的走入自控时代,大型PLC厂商和DCS厂商都纷纷提供了基于windows平台使用SFC工具。并且SFC进入了工业控制编程语言形成了国际化标准,这就是IEC61131-3的标准。
SFC的构成
SFC主要是一种可视化并且支持拖拽形式的组态方式,它的主要构成包括四部分,分别是步(STEP)、转换(Transition)、行为(Action)、锁(interlock)的功能。
SFC的白话
SFC的这种语言编程形式对于没有接触过的人来说可能有点抽象,还是延续我以前一贯的叙述方式,SFC的执行更类似炒菜一个过程。
步骤(STEP)就是像是炒菜中的每一个步骤
过渡(Transition)就像是炒菜中每个步骤的前提条件
行为(Action)就像是炒菜中的每个动作
锁(interlock)就像是炒菜中事故的掌控
炒菜开始,首先进入准备步骤,然后产生切菜和切葱姜行为,然后进入一个条件判断,这个条件是判断菜切好了吗?葱姜切好了吗?如果切好了就进入点火步骤,如果没有切好就一直等待。进入点火步骤以后就进行点火和放油行为并且启动一个延时,然后等待这个延时然后判断火是不是点着了?油有没有放进去,判断油温符合要求吗?如果这仨个条件都符合就进入炒菜步骤,如果不符合就一直等到延时超时启动赶紧中断炒菜这个过程(锁的功能)可能出现煤气灶点不着火或者油有问题。进入炒菜这个步骤之后,就要产生把葱姜和菜还有盐和味精放入锅内进行搅拌这些行为,并且启动一个计时,然后进入判断等待这个计时是否到时条件,如果计时到时就进入出锅这个步骤,如果没有到时就继续等待。进入出锅步骤以后就产生了把炒好的菜放到碟子里这个行为,然后又一次产生一个循环继续炒下一个菜。在这个炒菜过程中一直监控燃气灶火是否正常,油温是否过高,菜的火候是否过老,一旦发生上述条件任何一个出现问题,就进入关火端锅下灶(锁程序)。
SFC的IEC描述
经过上述描述我想大概有了一些思路上的理解了,那么下面我就用IEC61131-3语言在描述一遍。
步(STEP)用矩形框表示,描述了被控系统的每一特殊状态。SFC中的每一步的名字应当是唯一的并且应当在SFC中仅仅出现一次。一个步可以是激活的,也可以是休止的,只有当步处于激活状态时,与之相应的动作才会被执行,至于一个步是否处于激活状态,则取决于上一步及过渡。
过渡(Transition)表示从一个步到另一个步的转化,这种转化并非任意的,只有当满足一定的转换条件时,转化才能发生。转换条件可以用ST、LD或FBD来描述。转换定义可以用ST、IL、LD或FBD来描述。过渡用一条横线表示,可以对过渡进行编号。
动作(action)每一步是用一个或多个动作(action)来描述的。动作包含了在步被执行时应当发生的一些行为的描述,动作用一个附加在步上的矩形框来表示。每一动作可以用IEC的任一语言如ST、FBD、LD或IL来编写。每一动作有一个限定(Qulifier),用来确定动作什么时候执行;标准还定义了一系列限定器(Qulifier),精确地定义了一个特定与步相关的动作什么时候执行。
锁(interlock)表示通过ST、FBD、LD或IL列举一系列用户判断条件,来监控整体SFC的执行,一旦用户条件满足,SFC就中断执行进入一种HOLD保持状态,等待用户处理SFC执行的状态。