每个SFC步和IEC动作提供隐含生成变量供运行时监视步和IEC动作 ⇘ 状态 。同样可以定义变量来监视和控制SFC执行(超时,重启,尖模式)。这些变量也可由SFC对象隐含生成。
针对每个步和IEC动作,隐含变量会生成。一个结构实例,如元素的命名,如“step1 ”对一个步名为“step1”的步。注意,定义 ⇘ 元素属性,对这个元素一个符号定义是否应该输出到符号配置中,以及这个符号如何在PLC中被访问。
这些隐含变量的类型实在库IecSFC.library中定义的。SFC对象添加时这个库会自动被包含。
针对每个步和IEC动作,一个隐含结构变量类型 SFCStepType 或 SFCActionType被创建。结构组件(标示)描述了步和动作的状态,或活跃步的当前处理时间。
隐含变量声明的语法是:
<stepname>: SFCStepType; bzw. _<actionname>:SFCActionType;
不同于CoDeSys V2.3不同于CoDeSys V2.3,步的隐含变量总是跟一个下划线。 |
步或动作的以下布尔标示状态变量是:: i
针对步:
<stepname>.x:显示了当前活跃状态。
<stepname>._x: 显示了下个周期活跃状态。
如果<stepname>.x = TRUE,步会在当前周期执行。
如果 <stepname>._x = TRUE and <stepname>.x = FALSE,步会在以下周期执行, 即 在下一周期开始 <stepname>._x gets copied 被复制到 <stepname>.x 。
针对动作:
_<actionname>.x is TRUE,如果动作被执行
_<actionname>.xist TRUE, 如果动作活跃
符号生成:
在步或动作的 ⇘ 元素属性中你可以定义,针对步名或动作名标示,一个符号定义应该添加到可能创建和下载的 ⇘ 符号配置中。为了这个目的,在元素属性视图中的“符号”列,为想要的访问变量做一个入口。
提示! 上述标示可能用来强制一个步的特定状态,来设置一个步活跃,但要清楚,这会影响SFC中未控制步的状态! |
通过时间变量的时间:
标示“t”给出步激活后过去的时间;这指示针对步的,无论在 ⇘ 步特性 中是否定义了最小时间(参见以下: ⇘ SFC错误。
针对步: <stepname>.t (<stepname>._t 对外部使用无效)
针对动作:时间隐含变量没使用。
一些隐含变量,也叫SFC标示,(见下表)可以控制SFC的操作,如用来指示过去的时间或使能尖模式来切换转换。
为了访问这些标示使它们工作,它们必须声明和激活。这在 ⇘ SFC 设置 对话框中设置。 它是对象属性对话框的子对话框。手动声明,像CoDeSys V2.3中需要的,只是对其它POU有写权限的有必要。(见下, ⇘ 访问标识)这种情况下,注意以下:如果 全局声明这些标示,你必须失效SFC设置对话框中“声明”选项,不暗含声明本地标示,否则它会代替全局的使用!记住,SFC POU的SFC设置初始是由当前 ⇘ SFC 选项对话框设置的定义决定的。
注意只是通过SFC设置对话框完成的标示变量的声明,只会在SFC POU在线模式下可见 !
以下隐含变量(标示)可以使用。它们必须在SFC设置中声明并激活:
SFCInit: BOOL; |
如果这个变量变TRUE,顺序功能图会回到 ⇘ 初始步。所有步和动作及其它SFC标示都会重启(初始化)。初始步会保持激活,但是步执行直到变量为TRUE。SFCInit必须重置回FALSE,来回到正常的处理中。 |
SFCReset: BOOL; |
这个变量和SFCInit相似。不同于后者,初始步的初始化完成后,继续的处理才发生。因此,这种情况下,SFCReset标示重置回FALSE需在初始步中完成。 |
SFCError: BOOL; |
SFC中步的任何超时发生的话,这个变量变为TRUE。先决条件:SFCEnableLimit必须为TRUE。注意任意超时可以在SFCError重启前被注册。SFCError必须被定义,如果你想用其它时间控制标示(SFCErrorStep, SFCErrorPOU, SFCQuitError)。 |
SFCEnableLimit: BOOL; |
这个变量通过SFCError进行步中时间控制,隐含激活(TRUE)和失效(FALSE) 。这意味着,如果这个变量声明并激活了( ⇘ SFC 设置)),那么它必须设为TRUE来使SFCError工作。否则,任何超时都不会注册。在启动或手动操作时可以使用。如果这个变量没有定义,SFCError会自动工作。当然作为先决条件,SFCError必须定义! |
SFCErrorStep: STRING; |
这个变量存储SFCError超时时注册的步的名字。先决条件:SFCError必须定义! |
SFCErrorPOU: STRING; |
这个变量存储超时发生时SFC POU的名字。先决条件:SFCError必须定义! |
SFCQuitError: BOOL; |
只要这个变量是TRUE,SFC图的执行就停止,且SFCError会被重启。当这个变量被重置为FALSE后,所有活跃的步中的当前时间状态会重启。先决条件:SFCError必须定义! |
SFCPause: BOOL; |
只要这个变量是TRUE,SFC图的执行停止。 |
SFCTrans: BOOL; |
当一个转换驱动时,这个变量变TRUE |
SFCCurrentStep: STRING; |
这个变量存储当前活跃的步名,独立于时间监视。针对同时的,外右的步名会注册。 |
SFCTip, SFCTipMode: BOOL; |
这个变量在当前表中允许使用微调模式。当这个模式通过SFCTipMode=TRUE打开时,你只能设置SFCTip=TRUE(上升沿)来跳到下一步。只要SFCTipMode为FALSE,可以跳过转换。 |
为了访问SFC执行控制时的标示(超时,尖模式),标示变量必须上面描述的一样声明和激活 ( ⇘ SFC 执行控制)。
访问语法:
... SFC POU中,动作或转换: <stepname>.<flag> resp. _<actionname>.<flag>
... 从另一个 POU:<SFC POU>.<stepname>.<flag> resp. <SFC POU>_<actionname>.<flag>
注意从其它POU中写访问,隐含变量必须隐含声明为SFC POU VAR_INPUT变量,或 全局变量,如在 ⇘ GVL中。