Skip to main content

SFC 标志

SFC 标志是隐式生成的具有预定义名称的变量。您可以使用标志来影响 SFC 图表的处理。例如,您可以使用这些标志来显示超时或重置步骤链。此外,您还可以激活点动模式来激活转换。您必须声明并激活这些变量才能访问它们。

SFC 标志

姓名

数据类型

描述

SFCInit

BOOL

TRUECODESYS将序列重置为初始步骤。其他 SFC 标志也会重置(初始化)。变量TRUE,初始步骤仍保持设置状态(活动状态),但其操作不会执行。仅当您设置SFCInit再次FALSE POU 是否能正常进一步处理。

SFCReset

BOOL

行为类似于SFCInit

然而,CODESYS在初始步骤初始化后继续处理。例如,在初始步骤中,您可以立即重置SFCReset标记为FALSE

SFCError

BOOL

TRUE如果 SFC 图表中发生超时。如果程序中发生第二次超时,则不会注册,除非您先前重置了变量SFCError . 声明SFCError需要其他标志变量来控制时间顺序( SFCErrorStepSFCErrorPOUSFCQuitError)。

SFCEnableLimit

BOOL

专门用于激活(TRUE ) 和停用 ( FALSE)使用步骤超时控制SFCError

如果声明并激活此变量(SFC 设置),则必须将其设置为TRUE为了SFCError才能正常工作。如果不声明,则超时将被忽略。这很有用,例如,在启动或手动操作时。如果您没有声明变量,那么SFCError将自动运行。

要求声明SFCError

SFCErrorStep

STRING

存储导致超时的步骤的名称,该步骤由SFCError

该名称将一直保留,直到通过以下方式重置已注册的步骤错误SFCQuitError(假 -> 真)。

要求声明SFCError

SFCErrorPOU

STRING

存储发生超时并由其注册的块的名称SFCError。名称将保存,直到超时被重置SFCQuitError

要求声明SFCError

SFCQuitError

BOOL

只要这个布尔变量TRUECODESYS暂停 SFC 图表的处理和任何超时,保存在变量中SFCError,将被重置。如果将变量重置为FALSE,则活动步骤中的所有先前时间都将被重置。

要求声明SFCError

SFCPause

BOOL

只要这个变量TRUECODESYS暂停 SFC 图表的处理。

SFCTrans

BOOL

TRUE当转移处于活动状态时

SFCCurrentStep

STRING

显示活动步骤的名称,无论时间监控如何

在并行分支中,始终存储最右侧分支线的步骤名称。

SFCTip

SFCTipMode

BOOL

控制 SFC 块的“点动模式”

如果您使用以下方式启用此标志SFCTipMode=TRUE,然后你只需设置即可激活下一步SFCTipTRUE。 尽管SFCTipMode设置为FALSE,转换也可用于继续激活。

SFCErrorAnalyzation

包含对总值有贡献的所有变量的字符串TRUESFCError(一步超时)

SFCError需要为此激活。

SFCErrorAnalyzation隐式使用 POU 的功能AnalyzeExpressionAnalyzation图书馆。

SFCErrorAnalyzationTable

表格中包含对总值有贡献的所有变量TRUESFCError(一步超时)

SFCError需要为此激活。

SFCErrorAnalyzationTable隐式使用 POU 的功能AnaylzeExpressionTableAnalyzation图书馆。

隐式生成 SFC 标志

CODESYS激活相应选项时,会自动声明 SFC 标志。您可以在SFC 设置每个 POU 的属性对话框的选项卡,或者在证监会项目中每个 SFC POU 的项目设置对话框。

提示

仅当您未选择使用默认值选项。选择此选项时,将应用在项目设置中定义的设置。

提示

在 SFC 设置对话框中声明的 SFC 标志仅在 SFC 块的在线视图中可见。

明确生成 SFC 标志

手动声明,这是必要的CoDeSys V2.3,现在只需要启用来自另一个块的写访问。在这种情况下,您应该注意,当您在全局变量列表中声明该标志时,必须停用其宣布在 SFC 设置对话框中设置。如果不这样做,则会隐式声明本地 SFC 标志,CODESYS代替全局变量。

SFCError 的应用示例

2. 例子

您已创建一个名为sfc1,其中包含s1步骤。您已在步骤属性中定义了超时。(请参阅“在线查看sfc1 SFC POU”。)

如果出于任何原因s1步骤保持活动状态的时间比其时间属性允许的时间(超时)长,那么CODESYS设置SFCError标志以允许应用程序访问。

要允许访问,必须在 SFC 设置中声明并激活 SFC 标志。如果仅声明了 SFC 标志,则该标志仅显示在sfc1在声明部分,但是没有任何作用。

_cds_img_sfc_sfc_flags.png

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

_cds_img_sfc_sfcerror_example.png

SFC 块的在线视图sfc1

_cds_img_sfc_sfcerror_example_online.png

SFCErrorTRUE一旦发生超时sfc2

请注意,您可以使用SFCErrorAnalyzationSFCErrorAnalyzationTable标志(Analyzation库)来确定对值有贡献的表达式的组成部分TRUESFCError



访问旗帜

访问语法

您直接在 POU 内分配标志:<variable name>:=<SFC flag>

3. 例子

checkerror:=SFCerror;



来自另一个 POU,其 POU 名称为:<variable name>:=<POU name>.<SFC flag>

4. 例子:

checkerror:=SFC_prog.SFCerror;



如果需要从另一个块进行写访问,那么您还必须在 SFC 块中或在 GVL 中全局地将 SFC 标志明确声明为 VAR_INPUT 变量。

5. 例子

本地声明

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