顺序功能图的学习

SFC顺序功能图,英文Squence Function Chart,是IEC 61131-3标准PLC语言中的一种,主要应用于流程性很强的复杂逻辑控制,用标准中的话说就是针对顺序控制过程的控制条件和过程提出的一套表示逻辑控制功能的方法。比如一连串加工步组成的加工、组装、线体等工艺逻辑序列。最早是法国的国家自动化促进会提出。这种方法既可以使用文字进行描述,也可以用图形化语言描述,不过,标准中一般将该语言划分到图形语言中。

 

该语言有简单的几个要素:步,转换,有向箭头。

步:该语言将过程循环分解开的清晰并且连续的阶段。

转换:步与步之间迁移的条件,由有向连线将步与转换进行连接。

步分为初始步,活动步,非活动步。在图形语言中,初始步与其他步区别明显。活动步与非活动步之间的区别一般在编译器中被以颜色进行区分。在文本语言描述中,初始步的描述为:

  INITIAL_STEP XXX:

    (Body)

  END_STEP

普通步则为:

  STEP XXX:

    (Body)

  END_STEP

步有两个参数,一个是步状态,另一个是步消逝时间。步状态可以使用***.X来访问,类型为布尔类型,消逝时间是Time类型的变量,可以用***.T来访问。

每个SFC网络中必须有至少一个初始步。对于某些过程,可能存在多个不同的进入序列的位置,此时就需要设置多个初始步。

与步相连,位于步右侧的图块是动作,动作时一个或一组执行逻辑的组合,这里或是置位,或是赋值,或是调用函数或功能块。使用语言也不定,ST,FBD,LD都可以。但是西门子的默认设置为SCL语言,三菱则默认梯形图。

动作分为存储型动作和非存储型动作。存储型动作就是将输出位置位,待到下一个某步动作再将输出位复位。动作类型的选择依据限定符的选择而定,有空限定符,N非存储型动作,S存储型动作,R复位动作,L时限动作,D延时动作以及这些限定符的组合例如:LS,DS,DR等等。如果使用N和空限定符以外的限定符,那动作程序中就不能使用某些指令,比如,如果使用存储型S限定符,在西门子中,就只能用SCL语言输入置位位,不能有其他输入。如果有多个置位,那就得新建多个动作分别存储执行。奇怪的是,西门子的编辑界面中有各类限定符可选,而三菱的GWORKS3中只能选择N:非存储型动作限定符。不过与此对应的在三菱的动作中,可以输入若干条梯形图指令,类似于子程序。

动作与步直接相连,步转变为活动步时,动作就根据自己的限定符做响应执行。没有动作或空动作的步是空步,运行时,直接跳到下一个转换做判断。

在动作中,可以执行输入输出操作,也可以执行程序块和函数的调用。输入输出操作使用简单的梯形图或ST语言描述,如果使用文本型语言描述程序块的调用,则使用CALL语句来调用。动作和转换以及步都有对应的名称,动作默认名为Action_*,步默认名为STEP*,转换名默认为Transition_*。这些名称可以自定义,但是不能重复。对于转换,还有一个优先级的属性,是整数数值。选择分支时,优先执行高优先级的转换判断,如果没有设优先级或优先级相同,则在SFC网络视图中按从左到右的顺序执行转换判断。

 

转换

转换是一个步与步交接令牌的条件,是一个布尔量。针对不同的状态,转换又分为两种,一种是【使能转换】一种是【非使能转换】。使能转换是指,当通过有向连线连接的所有前级步都处于活动步状态时,该转换就称为使能转换。而与之对应的则称为非使能转换。如果一个使能转换自身的条件判断结果为真,就是说转换条件达成,则称为实现转换或触发。实现转换后与该转换连接的后级步将立刻转变为活动步,这一操作称为【转换的清除】,前级步均变为非活动步,这称为【转换的进展】。

转换的核心是一个布尔条件,在网络中以处于前后级步中间的有向连线画横表示。横线右侧显示转换名和优先级。左侧一般显示转换条件,这里即可以直接使用视图结构将梯形图逻辑引到转换做为输出(西门子),也可以将转换作为子程序,并在子程序中将转换名作为线圈输出,还可以使用专有线圈比如三菱中的虚拟线圈【TRAN】。标准中,使用ST语言可以用2种句式来表述:

第一种,不适用转换名,直接写到步与步之间

STEP STEP1:  END_STEP

  TRANSITION  FROM STEP1 TO STEP2

  (*/*)

  END_TRANSITION

STEP STEP2:  END_STEP

第二种,使用转换名,同时需要在转换附近定义转换名

TRANSITION TRAN**

  (*/*)这个布尔值的求解,将赋值到由转换名标记的位置。

END_TRANSITION

在转换处,可以将网络拓展为分支或并行结构,也可以将分支合并。SFC网络按照步与步的顺序结构分为5种:

1、单序列

2、选择序列-开始...分支

3、选择序列-结束...合并

4、并行序列-开始...分支

5、并行序列-结束...合并

这里选择序列和并行序列看起来相似,但因为转换的位置不同而区分,具体如下(截标准图):

顺序功能图的学习

 

 顺序功能图的学习

 

 注意上图所示的转换D/E/F/G和H/M的位置区别。

单序列结构是自上而下的走向,单一路径。选择序列中,开始分支结构的转换变为使能转换时,所有使能转换按优先级或从左到右的顺序依次判定,哪个先为真就执行向哪一个分支进展。同时,此处的转换应当是互斥的,或有优先级的。在结束合并结构中,后级步的前级转换任意一个从使能转换变为实现转换后,后级步就进展变为活动步,序列开始向下。并行序列中,开始分支结构的转换的后级步有若干个,只要实现转换达成,则后级步同步激活并使序列向下执行。而结束合并结构相反,必须是该转换的所有前级步都成为活动步,才使能并去判断实现转换,序列才向下进展。

除了分支结构,实际编程时还有跳转,标准中是一个有向连线去指向某一转换下方来表示。比如西门子博图和三菱GWORK3中的编写。跳转是包含转换的。类似于选择序列的结束合并分支。

通过以上几种序列的组合可以实现多种控制逻辑,但是实际编写时,需要注意防止出现不可达序列或不安全序列。不可达步就是存在某种状态,序列停止无法继续向下进展,这容易发生在并行序列的结束合并分支中。不安全序列则是出现了序列无限循环。序列的进展在程序内部不断循环不能正常进行。

 

上一篇:数论模板复习


下一篇:HDU3853 LOOPS