SFC 顺序功能图
SFC 用步骤表示流程所处阶段,用转换决定何时进入下一步,并把执行逻辑放在步骤关联的动作中。动作的实现语言支持 ST 和 LD。
创建 SFC 程序
- 在项目树中添加 POU,填写名称,选择所需 POU 类型。
- 在 语言 下拉列表中选择 顺序功能图语言(SFC),然后确认。
- 打开新建的 POU。编辑器默认显示初始步骤
Init,下方有转换和指向Init的跳转。

认识编辑器
编辑区上方是变量表,下面依次是 SFC 工具栏和流程图画布。变量表中的 添加变量 可声明转换条件和动作代码使用的变量。图中 Init 为双边框初始步骤,步骤之间的小矩形为转换,箭头旁的名称为跳转目标。

| 工具栏图标 | 用途 |
|---|---|
| 步转移 | 连续插入一个步骤和后续转换 |
| 步 | 插入步骤 |
| 转移 | 插入转换 |
| 跳转 | 插入指向指定步骤的跳转 |
| 动作 | 为选中步骤添加动作 |
| 分支 | 插入分支结构 |
| 删除、撤销、恢复 | 调整当前图表 |
插入命令作用于当前选中的图元。先选中步骤、转换或连接位置,再使用工具栏;也可以在步骤上右键打开可用命令。
添加步骤和转换
识别步骤与转换
- 步骤是写有步骤名称的矩形。SFC 程序中的初始步骤
Init使用双边框;其他步骤通过连接线与前后的转换连接。步骤名称可在图中编辑。同一 POU 内建议使用唯一且有意义的名称,便于关联动作和排查流程。 - 转换是连接步骤的小矩形。它的条件必须得到 BOOL 结果;条件为
TRUE时,流程才可以进入后续步骤。截图中显示的TRUE是演示用恒真条件,应按实际控制条件修改。 - 跳转以箭头和目标步骤名称表示,可 将流程接回已有步骤。使用跳转后,应检查目标名称对应的步骤。
插入单个图元或一组“步骤+转换”
- 选中准备插入的位置。只需要一个图元时,分别点击工具栏的 步 或 转移。
- 需要连续扩展流程时,点击 步转移;也可在步骤上右键,选择 插入步转移 或 在…之后插入步转移。这会同时增加一个步骤和相邻的转换。
- 继续插入后续步骤。下方动图从
Init开始,依次插入Step0、Step1。 - 在图中编辑步骤名称,例如“等待启动”“运行”“停止”。如果需要更换初始步骤,在目标步骤的右键菜单中选择 转为初始步,并检查双边框是否移到该步骤。
- 检查每个步骤、转换和跳转之间的连接方向,确认流程可以到达预期的后续步骤。

设置转换条件
在转换处填写能够计算为 BOOL 的条件,例如一个 BOOL 变量或返回 BOOL 的表达式。条件中的变量可在 SFC 编辑器上方的变量表中声明。例如,先声明 Ready、Fault 为 BOOL,再将转换条件写为 Ready AND NOT Fault。不要把动作赋值语句写成转换条件。
转换条件也支持直接输入文本表达式,包括布尔逻辑、比较和组合表达式,例如 a AND b、int1 > 5、(a AND b) OR (c > 3)。表达式中使用的变量须先声明,且表达式最终必须得到 BOOL 值。还可直接引用功能块的 BOOL 输出(例如 TON_1.Q、CTU_1.Q)或 BOOL 地址(例如 %IX0.0、%QX0.1、%MX10.0)。下图展示了在转换上直接输入布尔逻辑表达式的示例。

将鼠标移到转换条件上,编辑器会显示表达式及其类型提示。完成后逐个检查转换条件;图中的 TRUE 会让对应转换始终满足,通常只适合演示流程。
通过右键菜单编辑流程
在步骤上右键,可使用 插入步转移、在…之后插入步转移、插入左分支、插入右分支 等命令;菜单还提供 转为初始步 和动作相关命令。右键操作前应先确认当前选中的步骤。

下面的示例展示了从 Init 分出多个路径、在后续步骤汇合并跳转回初始步骤的图表。变量表中可看到 t1 至 t4 等 BOOL 变量;图中步骤右上角的 A 是基础动作标记。插入左、右分支后,在分支节点上右键,可选择 选择分支 或 并行分支,并检查每条支线的连接和汇合位置。

编辑器对两类分支的结构要求不同:选择分支的每条支线以转换开始,以转换或跳转结束;并行分支的每条支线以步骤或嵌套并行分支开始,以步骤、跳转或嵌套并行分支结束,并且分支整体的上方、下方需要转换。若结构不符合要求,编辑器会给出图形诊断。
分支可以嵌套,测试用例覆盖了选择分支中嵌套选择或并行分支,以及并行分支中嵌套选择或并行分支。并行分支的入口转换满足时,各支线步骤同时激活;汇合转换可组合各支线条件,例如用 t1 AND t2 AND t3 等待全部条件满足,或按流程需要使用 t1 OR t2 OR t3。
**选择分支示例:**下图中,初始步后的多个转换分别进入不同支线,适合用于说明按转换条件选择路径。

**并行分支示例:**下图中,一个转换后同时展开多条支线,适合用于说明并行步骤结构。

理解流程的推进
阅读 SFC 图表时,可以按以下顺序检查:
- 找到双边框的初始步。程序开始执行该 SFC 流程时,从初始步进入。
- 确认当前活动步骤及其关联动作。入口动作对应进入步骤,基础动作对应步骤活动期间,出口动作对应离开步骤;关联动作还会受到限定符影响。
- 查看活动步骤后面的转换条件。条件得到
TRUE时,流程可以转向连接的后续步骤;条件为FALSE时,流程停留在当前步骤。 - 遇到分支时,先辨认分支类型:选择分支从满足条件的支线中进入一条;并行分支使多条支线同时参与流程。再检查各支线的转换、汇合位置和跳转目标。
- 进入后续步骤后,继续按步骤、动作和转换的关系检查流程。
这是一种阅读和排查图表的方法。动作在控制器周期内的精确调用次数、分支条件同时为真时的优先级以及出口动作落在哪个周期,应通过当前版本的运行结果确认,不能只凭图形位置推断。
下图标出了初始步和活动步。阅读流程时,从当前活动步沿连接线检查后续转换条件,再确认条件满足后进入的步骤。
