Skip to main content

处理顺序

重要

实现动作时请注意以下事项:

由于一个动作可以在多个 SFC 图中使用,因此在同一个周期内可能多次执行该动作。

示例:一个 SFC 图包含两个 IEC 动作A和B,二者都以 SFC 编程,并且都调用 IEC 动作C。在这种情况下,C会被调用两次。

在 SFC 图的不同层级中同时使用同一个 IEC 动作,可能会在处理时导致不可预测的结果。因此,CODESYS会发出相应的错误消息。例如,当您处理在早期版本的开发系统中创建的项目时,可能会显示此错误消息。

提示

注意:可以使用隐式变量来监视步和动作的处理状态,或者控制处理过程。

元素的基本行为

  • 激活步

    激活步包含当前正在执行的动作。在在线模式下,CODESYS以蓝色显示激活步。

  • 初始步

    在调用以 SFC 编写的 POU 之后的第一个周期中,初始步会自动被激活,并执行步动作。

  • IEC 动作至少执行两次。第一次是在步被激活时,第二次是在步被停用时(但要到下一个周期才执行)。

  • 选择分支

    如果分支之前的步处于激活状态,则按从左到右的顺序评估各选择分支的第一个转移。一旦某个转移产生值TRUE,相应分支的下一步就会被激活。其右侧各分支的转移不再被评估。

  • 并行分支

    如果分支之前的步处于激活状态,并且水平双线之前的转移为TRUE,则所有分支的第一个步将同时被激活。随后各分支并行执行。当所有分支的最后一个步都处于激活状态,并且下一个转移产生值TRUE时,分支之后的步即被激活。

处理顺序

  1. 复位 IEC 动作

    带有限定符N、R、S、L、D、P、SD、DS、SL的动作的内部控制标志将被复位。这些标志控制 IEC 动作。但是,在动作内部访问的标志不会被复位。

  2. 执行出口动作

    然后检查每个步,以验证其是否满足执行出口动作的条件。验证顺序遵循 SFC 图的布局,从上到下、从左到右。

    当步被停用时,即当其入口动作和步动作(如有)已在上一个周期中执行,并且下一步的条件产生TRUE时,将执行出口动作。

  3. 执行入口动作

    然后检查每个步,以验证其是否满足执行入口动作的条件。验证顺序遵循 SFC 图的布局,从上到下、从左到右。如果满足条件,则执行所有入口动作。

    当相关的步被激活时,入口动作执行一次。其前提条件是该步之前的转移产生值TRUE。

  4. 时间检查/执行步动作

    执行检查,以检测某个步保持激活的时间是否超过允许值。时间检查用于检测流程中的错误。例如,预期的转移未得到满足,因而流程停在某个步中。

  5. 执行 IEC 动作

    IEC 动作按字母顺序执行。这通过两次遍历动作列表来完成。在第一次遍历中,执行在上一个周期中已被停用的所有步的 IEC 动作。在第二次遍历中,执行所有处于激活状态的步的 IEC 动作。

  6. 转移检查/激活下一步

    满足以下条件时,下一步将被激活:

    • 该步在当前周期中处于激活状态。

    • 后续转移返回值TRUE。

    • 为该步定义的最短时间(如有)已经结束。