跳到主要内容

6.3.2 SFC语言语法

6.3.2.1 SFC基础指令表格

序号指令描述
1此图为新建项目图标嵌套闭合
2此图为新建项目图标顺控器结尾
3此图为新建项目图标打开并行分支
4此图为新建项目图标打开选择分支
5此图为新建项目图标步和转换条件

串行分支:

通过转移条件成立转移至串行连接的下一步执行处理的方法,如下图所示:

  • 执行步n的动作输出时,如果转移条件成立,则对步n的动作进行非执行处理,执行步n+1

alt text

选择分支:

在并行连接的多个步中,仅执行最先成立的转移条件的步的方式,如下图所示:

  • 执行步n的动作输出时,选择转移条件1或者2中最先成立的条件的步,执行改步的相关动作
  • 转移条件同时成立时,左侧的转移条件按优先。对步n的动作输出进行非执行处理
  • 选择后,依次执行所选列的各个步,直至进行合并为止

alt text

并行分支:

通过转移条件成立同时执行并行连接的多个步的方式,如下图所示:

  • 执行步n的动作输出时,如果转移条件1成立,同时执行步(n+1)的动作输出、执行步(n+3)的动作输出、执行步(n+5)的动作输出
  • 转移条件2成立时转移至步(n+2),转移条件3成立时转移至步(n+4),转移条件4成立时转移至步(n+6)

alt text

注意
  • 并行分支和并行聚合必须一一对应。
  • 选择分支结构中只能有一个分支被激活。分支跳转的优先级从左到右或根据优先级选择。
  • 选择分支和选择聚合必须一一对应。
  • 选择分支必须结束于同一选择聚合。
  • 在SFC元素的链接中,总是维持着步/转换和转换/步的相互更迭,即:
    • 二个步决不应直接链接,它们总是由一个转换分隔
    • 二个转换决不应直接链接,它们总是由一个步分隔

6.3.2.2 步

一个步代表一种状况,在该状况中,程序组织单元的行为特性相对于其输入和输岀遵守一套由步的相关操作定义的规则。一个步要么是活动的,要么是不活动的。在任何给定时刻,程序组织单元的状态由一些活动步的设置及其内部变量和输出变量的值定义。

注意
  • 步的上面只能接转换、并行分支或选择分支聚合。
  • 步的下面只能接转换、选择分支或并行分支聚合。
  • 步有两种类型:起始步和普通步。起始步在程序刚启动时就处于激活状态,然后程序将按照转换条件的变化按照顺序依次执行。

步标志(步的活动或不活动状态)

  • 可由布尔结构元素***.X的逻辑值来表示,这里的"***"是步名称,当相应的步为活动时,此布尔变量值为1,当相应的步为不活动时,此布尔变量值为 0。此变量的状态对于表54中所示的步右侧的图形链接是可用的。
  • 从一个步的开始所经历时间***.T可以由类型TIME的结构元素来表示。 当一个步被解除激活时,步所经历时间的值应保持在此步被解除激活时它所具有的值。当步被激活时, 步所经历的时间的值应复位为零。
注意
  • 步名称、步标志和步时间这些变量对这些步所在的FB都是本地静态变量。

  • 每个SFC的最大步数和步经历时间的精确性是与实现相关的。

  • 如果出现以下情况,它应是一个错误:

    • 一个SFC网络不准确地包含一个初始步;
    • 用户程序试图向步状态或步时间直接赋值。

6.3.2.3 转换条件

转换条件表示控制从一个或多个前驱步沿相应的有向连线转换到一个或多个后继步所依据的条件。转换由一根横跨垂直有向连线的水平线表示。

转换条件:

  • 控制从一个步转移到其他步的条件;
  • 当转换条件满足时,紧接在前的步从激活态变成不激活态;
  • 只有当所有紧接在前的步的状态都在激活状态时,转换条件才被测试;
  • 转换条件由一个变量或一个表达式来定义
注意
  • 转换的上面只能接步、选择分支、并行分支聚合;
  • 转换的下面只能接步、并行分支、选择聚合、或跳转分支

6.3.2.4 操作

操作是对系统变量进行的操纵的描述。一个步中可以有0个或多个操作。操作有多种类型,操作类型由操作限定词来描述。操作可以是一个布尔变量的改变,也可以是调用一个子程序。一个操作块包含一个操作连同其执行的条件(称为操作限定符)系统对步的激活和解除激活期间所有步的动作块的执行条件进行监视。

注意
  • 操作是布尔变量、ST语言的一组语句、LD语言的一组梯级(rung)构成。
  • 作为一个操作名称的布尔变量的值以不是作为同一个SFC的一个或多个操作的名称之外的任何方式被修改,它将是一个错误。

6.3.2.5 步和操作

支持SFC元素的一个可编程控制器实现下图中为操作与步的关联而定义的一个或多个机制。每步操作块的最大数是依赖于具体实现

alt text

图 action_block

操作块

上图action_block所示操作块是一个图形元素,用于将布尔变量与一个操作限定符相组合,以便根据规则为相关的操作生成一个使能条件。

  • 操作块提供一种选择性地规定表中的“c”字段指示的布尔“指示器”变量的方法,该变量可以由规定的操作来设置,以表示其完成、超时、出错条件等。
序号描述操作块
1"a": 操作限定符
"b": Action name
"c": Boolean "indicator" variables (deprecated)
"d": Action using:
alt text
说明
  • 如果“c”字段不存在,且“b”字段规定此操作应是一个布尔变量,那么当需要时该变量应被解释为“c”变量;
  • 如果没有定义“c”字段,而“b”字段也没有规定一个布尔变量,则认为此“指示器”变量的值总是FALSE

操作限定符

操作应通过本文定义的一个或多个机制说明,并应通过文本的步主体或图形操作块与步联系起来。操作的控制应由操作限定符来表示:

  • N:操作在步的整个激活期间激活,随着步退出激活状态恢复成不激活状态。
  • S:操作在步激活后将一直保持激活,与步的失去激活无关。
  • R:操作在步激活后将一直保持在不激活状态。此操作的作用是用于在当前步停止其他正在执行的操作,如某步有个S操作,由于步退出后该操作仍然继续在执行,如果要让它停止执行,就可以使用R操作。

6.3.2.5 执行顺序

  • SFC程序的执行从活动顺序的初始步开始。 一旦激活一个步时,将立即执行该步中的操作。 在此,需考虑各操作的互锁条件。 执行了所有操作之后,将首先检查是否存在监控错误。 如果没有监控错误并满足以下转换条件。则将激活序列的下一步。如果存在监控错误或者不满足转换条件,则当前步仍处于活动状态,直到错误消除或者满足转换条件。 在SFC程序的末尾,可以使用跳转激活顺控程序的循环处理,也可以使用循序结尾终止顺控程序。

  • 初始状态由其内部和输出变量的初始值以及其初始步的设置(即初始为活动状态的步)表示。每个SFC网络应准确地具有一个初始步。对于系统初始化,所有步的缺省初始步经历时间是零。普通步的缺省初始状态是FALSE,而初始步的缺省初始状态是TRUE。但是,当一个SFC功能块的实例被声明是保持(RETAIN)时,包含在该功能块中所有步的状态和经历时间(若支持)应按系统初始化的保持对待。

  • 在一个SFC网络中所有指令的执行依照以下算法进行调度:

    • 激活初始步(仅在第一次调用时),否则对其后继转换为TRUE的所有步解除激活,并激活紧接这些转换后的所有步。
    • 检查所有动作控制的输出。若刚检测到一个TRUE-FALSE边沿,则最后一次执行所关联的动作。
    • 执行其动作控制所求值为TRUE的所有操作。
    • 对转换进行求值,并从步1开始继续循环执行。
    • 在SFC网络中没有显性的终点。如果没有后继的转换,则程序不会自动地返回到初始步,SFC程序将停留在最后一个活动步。