Skip to main content

隐式变量

每个 SFC 对象都提供隐式变量,供您在运行时监视步和 IEC 动作的状态。这些隐式变量会为每个步和每个 IEC 动作自动声明。

隐式变量是结构实例,对于步,其类型为SFCStepType;对于动作,其类型为SFCActionType。变量名称与相关元素的名称相对应,例如,对于步名称为step1的步,变量名称为step1。结构组件提供有关步或动作当前状态的信息,以及在激活步期间已经过的时间。

步和动作的状态

重要

您可以使用上述变量为某个步强制指定特定的状态值,以激活该步。但请注意,这可能导致 SFC 图处于不一致或不受控制的状态。

隐式变量声明的语法:

<step name> : SFCStepType;
_<action name> : SFCActionType;TRUE
表 1. 以下隐式变量可用于步或 IEC 动作的状态:

步

<step name>.x

显示当前周期中的步状态。

当<step name>.x = TRUE时,该步正在当前周期中执行。

<step name>._x

显示下一个周期的步状态。

如果<step name>._x = TRUE且<step name>.x = FALSE,则该步在当前周期中被处理。这意味着变量<step name>._x在周期开始时被复制到<step name>.x中。

<step name>.t

提供自步被激活以来已经过的时间段的变量。

此信息仅适用于步。无论步属性中是否定义了最短时间,都会记录该时间。

有关更多信息,请参阅:SFC 标志

<step name>._t

仅供内部使用的变量。

<pou name>._MetaStep

启用_MetaStep功能时,用于获取链表中ISFC元素信息的入口点。



IEC 动作

_<action name>.x

显示当前周期中的动作状态。

TRUE:该动作正在当前周期中执行。

_<action name>._x

TRUE:该动作已激活。

隐式变量:_MetaStep

用于 SFC POU 中所编程元素的链表的变量

重要

_MetaStep功能会生成大量额外的隐式代码,用于实现元素的链接。请仅在确实需要时才启用该功能。

隐式变量_MetaStep标识属于 SFC 图初始步的元素。启用_MetaStep功能后,将创建额外的隐式变量,从而形成 SFC 图中元素的链表。从初始步开始,所有转移、步和跳转都通过对其他ISFCElement对象(来自IecSfc.library,>= V4.4.0.0)的引用进行链接。

根据接口的不同,每个ISFCElement都具有以下内容

  • 前驱

  • 后继

  • 名称

  • 链中元素的数量

根据ISFCElement对象的类型,可能会实现具有附加属性的更具体的子接口。

变量<pou name>._MetaStep用作入口点。IQueryInterface函数可用于确定ISFC元素链表中前驱元素和后继元素的信息。

限制:在该功能的当前版本中,SFC 程序中转移的名称必须唯一。否则,将发出警告,并且不会生成链表中的附加数据。

要启用_MetaStep功能,您需要执行以下步骤:

  1. 在项目信息对话框的属性选项卡上,将布尔属性UseMetaStepsEnabled设置为TRUE。

  2. 对于需要该功能的每个 SFC 对象,在各自属性对话框的SFC设置选项卡上启用SFCMetaSteps变量的使用。

访问隐式变量

访问语法

在 POU 内,直接为隐式变量赋值:

<variable name>:=<step name>.<implicit variable>或<variable name>:=_<action name>.<implicit variable>

例 5. 示例
status := step1._x;


来自另一个带有实例路径的 POU:

  • <variable name> := <pou name>.<step name>.<implicit variable>

  • <variable name> := <pou name>._<action name>.<implicit variable>

例 6. 示例:
status := SFC_prog.step1._x;


符号生成

在步或动作的属性中,您可以指定是否为相应的步标志或动作标志添加符号定义。为此,请在属性视图的符号列中启用所需的访问权限。