SFC元件
简介
SFC的元件包括步、转移、跳转、动作块、分支、标签、注释。
SFC的各个元件形状以及特征如下表所示。
名称 | 图形元素 |
---|---|
步 | 初始步 普通步 |
转移 | |
跳转 | |
动作 | |
分支 | 并行分支 选择分支 |
标签 | |
注释 |
图例说明
一个典型功能的SFC程序如下图所示。
步
简介
一个步代表一种状态,一个步要么是活动的要么是不活动的。
任何时刻,程序组织单元(POU)的状态由一些活动步的设置及其内部变量的值来定义。
- 初始步
每个SFC语言的POU均以初始步开始。POU运行总是从初始步依次往下演变运行。 初始步是SFC语言POU必不可少的元件,不可删除。
初始步如下图所示。
注意:初始步可以添加出口动作,关联步动作以及关联工程管理树的动作,但不能添加入口动作。
- 普通步
SFC语言的POU支持多个普通步的组态,普通步可以增加删除,每个普通步可以增加入口动作,出口动作,关联步动作以及关联工程管理树的动作。
普通步如下图所示。
- 激活步
当步激活时,在线可以看到该步的背景色变为蓝色,当前步关联的动作被调用执行。
如下图所示。
激活步起始时间为步名._t(TIME):当步刚被激活时,步获得的当前起始时间。
激活步运行时间为步名.t(TIME): 当步刚被激活时,步获得当前起始时间(步名._t),并且步的运行时间开始累积,当运行到该步解除激活状态时,步的运行时间复位为T#0s。如上图所示,step1步处于活动状态,运行了T#4s0ms,则Step1.t:=T#4s0ms。
步下一状态为步名._x(BOOL):步活动标志,当值为TRUE时,表明该步下一调度周期为活动状态,当值为FALSE,表明该步下一调度周期为非活动状态。
步当前状态为步名.x(BOOL):步活动标志,当值为TRUE时,表明该步当前调度周期为活动状态,当值为FALSE,表明该步当前调度周期为非活动状态,如上图所示Step1.x:=TRUE。
步名称、步运行时间、步状态只在当前POU有效,不能在其它POU中引用。
步名约束规则:
(1)步名必须满足变量名的定义规则
(2)步名不能与该SFC POU变量区的变量名相同
(3)步名不能与动作重名
下表为步动作的执行顺序。
执行时序 | 动作 | 动作处理 |
---|---|---|
1 | Step1步出口动作 | 当Step1.x=TRUE,且Trans1=TRUE,该动作被执行。(它的入口动作和步动作已经在上一个周期被执行了) |
2 | Step2步入口动作 | 如果Trans1=TRUE,且Step2被激活(即Step2._x=TRUE),则入口动作被执行 |
3 | Step2步动作 | Step2被激活后(即Step2.x=TRUE),且入口动作已执行完,则执行步动作 |
4 | Step2 关联动作 | 步动作执行完毕,关联动作执行 |
5 | 转移,激活下一步 | 如果Step2是激活状态,Trans2为TRUE,则后续步被激活 |
下图为SFC的步动作执行时序组态图
步支持最小时间和步注释设置。
转移
简介
步之间的切换就是转移,转移表示控制从一个或多个前驱步沿相应的有向连接转换到一个或多个后继步所依据的条件,转移方向是从前驱步底端到后继步顶端。只有当步的转移条件为真时,步的转移才进行。转移条件可以是逻辑变量、布尔表达式、逻辑地址、逻辑常量或者是由其它语言编程实现的逻辑,各个转移条件如下图所示。
转移约束规则:
(1)转移已经关联了POU,则该SFC POU的变量区不能定义转移名称的变量
(2)转移名称已经在变量区定义,则该转移双击不能关联POU
(3)转移已经关联了POU,则该SFC POU不能在工程管理树上添加同转移名称的动作
(4)该SFC POU在工程管理树上添加同转移名称的动作,则该转移不能关联POU,SFC POU也不能定义同转移名称的变量
(5)多个转移同名(不区分大小写)的情况下,如果关联POU,则关联的是同一个POU
跳转
简介
跳转实际上是连接到有跳转符号的步或者连接到有标签的并行分支的操作,可以通过该元件使SFC实现循环,SFC语言编辑的 POU至少包含一个跳转。 跳转是一种程序执行时,可以无条件转到跳转关联的标签处执行,可以从某一步直接转移到当前分支内部或外部的其他步或者带标签的并行分支上。跳转用来代替一个步,并且由它所在位置的转移来执行,转移条件满足时,跳转才执行。 跳转元素如下图所示。
动作块
简介
动作块包括限定符和动作名,限定符包括时间限制符和非时间限定符,限定符决定了这个动作名关联动作的执行方式,动作名关联的动作为该SFC POU树上添加的动作。
动作块如下图所示。
限定符如下表所示:
限定符 | 名称 | 说明 | |
---|---|---|---|
N | 非存储 | 只要该步处于激活状态,该动作就一直执行。反之,动作停止执行。 | |
S | 置位 | 步激活后立即执行动作。即使已取消激活该步,该动作将一直执行到被复位为止。 | |
R | 复位 | 该动作被停止执行。 | |
L | 限时 | 步激活后立即执行此动作。该动作将一直执行到取消激活该步或限时结束为止。 | 要加时间常数(设定值) |
D | 延时 | 仅在步激活后经过了给定的延迟时间并且该步仍处于激活状态,才开始执行动作,执行动作直到取消激活该步为止。 | 要加时间常数(设定值) |
P | 上升沿脉冲 | 脉冲型:当步开始激活时,动作开始执行,并且动作只被执行一次,之后动作将停止执行。 | |
P0 | 下降沿脉冲 | 脉冲型:当步由激活转非激活时,动作开始执行,并且动作只被执行一次,之后动作将停止执行。 | |
P1 | 上升沿脉冲 | 脉冲型:当步开始激活时,动作开始执行,并且动作只被执行一次,之后动作将停止执行。 | |
SD | 保持和延时 | 仅在步激活后经过给定的延迟时间后才开始执行动作。该动作将执行到收到复位为止。 | 要加时间常数(设定值) |
DS | 延时和保持 | 仅在步激活后经过了给定的延迟时间并且该步仍处于激活状态,才开始执行动作。该动作将执行到收到复位为止。 | 要加时间常数(设定值) |
SL | 保持和限时 | 步激活后立即执行此动作。该动作将一直执行到限时结束或收到复位为止。 | 要加时间常数(设定值) |
动作名为工程管理树该SFC POU底下挂的动作,如下图所示。
通过如下步骤可以实现SFC POU下挂动作
(1)右键SFC语言的POU
(2)在弹出的右键菜单中,选择【增加动作】
(3)弹出添加动作对话框
(4)命名动作名称,点击【确定】
下图为SFC下挂动作的过程
动作支持CFC、LD、IL、ST。
分支
SFC 分支分为并行分支和选择分支。
并行分支
并行分支是前置转移条件使能的时候,并行分支每个分支都会执行。
在SFC中,两个以上的分支可以定义成并行分支。每个并行分支以步起始并且以步结束。并行分支可以包含选择分支和其它并行分支。并行分支开始于一个双行(并行开始)结束于一个双行(并行结束)或者是一个跳转。如果并行分支开始行的前步是活动的,并且前置转移条件是TRUE,那么所有并行分支的第一步都成为活动的。这些分支彼此是平行处理的。当并行分支的结束行的步都是活动的并且其后置转移条件是TRUE,则并行结束行之后的步被激活。
如下图为并行分支。
选择分支
选择分支是前置转移条件使能时,只执行其中一条分支,执行规则是前置转移条件使能的多个分支中的最左边的那个分支会执行,其余分支不执行。
在SFC中,两个以上的分支可定义为选择分支。每个选择分支必须开始和结束于转换。选择分支可以包含并行分支和其它选择分支。选择分支开始于水平行(选择开始)结束于水平行(选择结束)或者结束于跳转。如果选择起始行之前的步是活动的,那么每个选择分支的第一个转换从左到右执行。从左边开始,转换条件是TRUE则第一个转换被打开,随后的步被激活。
如下图为选择分支。
标签
简介
只有并行分支支持标签添加。并行分支添加了标签,跳转就可以跳转到标签,从并行分支开始执行。
标签位置处于并行分支的顶端中间位置,标签的背景色为灰色。您可以通过选择并行分支前面的转移元件的右键菜单【添加并行分支标签】来添加标签。
如下图所示。
注释
注释分为POU注释和步注释
POU注释
POU注释位于SFC POU程序的顶端,单行显示。
如下图所示。
步注释
步支持注释,您可以通过步的右键菜单【步属性】来设置。该注释可以对这个步的功能进行一些说明。
如下图所示。
如上图所示,红框的内容是Step1的步注释。