SFC 标志是隐式生成的变量,具有预定义的名称。您可以使用它们来影响 SFC 图表的处理。例如,您可以使用这些标记来显示超时或重置步骤链。此外,您还可以专门启动慢跑模式,以激活转场功能。您必须声明并激活这些变量,才能访问它们。
SFC 标志
名称 |
数据类型 |
说明 |
---|---|---|
|
布尔 |
|
|
布尔 |
该函数的行为类似于 |
|
布尔 |
|
|
布尔 |
专门用于使用 要求是宣布 |
|
字符串 |
存储导致超时的步骤名称,该名称由 要求是宣布 |
|
字符串 |
存储发生超时并由 要求是宣布 |
|
布尔 |
只要该布尔变量为 要求是宣布 |
|
布尔 |
只要该变量为 |
|
布尔 |
|
|
字符串 |
显示活动步骤的名称,与时间监控无关。在并行分支中,总是存储最右侧分支线的步骤名称。 |
|
布尔 |
控制 SFC 块的点动模式。 如果使用 |
|
以字符串形式包含对
|
|
|
在表格中包含对
|
隐式生成 SFC 标志
CODESYS 会在激活相应选项时自动声明 SFC 标志。您可以在每个 POU 属性对话框的“SFC 设置” 选项卡中设置该选项,也可以在“SFC” 项目设置对话框中为项目中的每个 SFC POU 设置该选项。
只有在未选择“使用默认值” 选项的情况下,单个 POU 的 SFC 标志设置才有效。选择该选项后,项目设置中定义的设置将被应用。
在 SFC 设置对话框中声明的 SFC 标志仅在 SFC 块的联机视图中可见。
另见
明确生成 SFC 标志
手动声明在CoDeSys V2.3 中是必要的,现在只在从另一个块进行写访问时才需要。在这种情况下,应注意在全局变量列表中声明标志时,必须在 SFC 设置对话框中停用“Declare” 设置。如果不这样做,就会隐式声明一个本地 SFC 标志,由CODESYS 代替全局变量使用。
SFCError 的应用示例
示例
您创建了一个名为sfc1
的 SFC 块,其中包含s1
步骤。您已在步骤属性中定义了超时。(见下文 "在线查看 SFC 数据块sfc1
")。
如果由于某种原因,s1
步骤的活动时间超过了其时间属性所允许的时间(超时),那么CODESYS 就会设置SFCError
标志,允许应用程序访问。
要允许访问,必须在 SFC 设置中声明并激活 SFC 标志。如果只进行了声明,那么 SFC 标志只会显示在sfc1
在线视图的声明部分,但没有任何功能。

现在,SFC 标志可以在 POU 内引用,例如在操作 (2) 中或在程序块 (1) 外引用。

SFC 功能块的在线视图 sfc1

sfc2
内一旦出现超时,SFCError
为 TRUE
。
请注意,您可以使用标志SFCErrorAnalyzation
和 SFCErrorAnalyzationTable
来确定表达式中对 SFCError
的值 TRUE
有贡献的成分。
另见
访问旗帜
访问语法
您可以直接在 POU 中指定标志: <variable name>:=<SFC flag>
示例
checkerror:=SFCerror;
来自另一个带有 POU 名称的 POU: <variable name>:=<POU name>.<SFC flag>
示例:
checkerror:=SFC_prog.SFCerror;
如果需要从其他程序块进行写入访问,则还必须在 SFC 程序块中明确声明 SFC 标志为 VAR_INPUT 变量,或在 GVL 中进行全局声明。
示例
当地声明:
PROGRAM SFC_prog VAR_INPUT SFCinit:BOOL; END_VAR
全局变量列表中的全局声明:
VAR_GLOBAL SFCinit:BOOL; END_VAR
PROGRAM PLC_PRG VAR setinit: BOOL; END_VAR SFC_prog.SFCinit:=setinit; // write access to SFCinit in SFC_prog
另见