Skip to main content

状态图

状态图是一种图形形式,您可以使用它对有限状态机进行图形化编程。状态机是在运行时连续处于有限数量状态之一的系统。可以在每个状态下执行操作。当一个事件发生时,就会发生到下一个状态的转换。也可以在过渡期间执行操作。

CODESYS,状态图是在 状态图 实现语言。这种类型的 POU 由 _uml_icon_statechart.png 中的符号 POU 查看或 设备 看法。您可以将程序、功能块、函数、方法、动作或属性创建为状态图。编辑器提供状态、伪状态和转换的元素。

状态和转换都可以调用方法或动作。伪状态是用于控制过程的控制元素,但它们不调用任何动作或方法。

. 状态:
  • _uml_icon_sc_state.png: 状态

  • _uml_icon_fast_state.png: 快速状态

  • _uml_icon_composite_state.png: 复合状态

. 伪状态:
  • _uml_icon_start_state.png: 开始状态

  • _uml_icon_end_state.png: 结束状态

  • _uml_icon_fork_join.png: 分叉/加入

  • _uml_icon_choice.png: 选择

. 过渡:
  • _uml_icon_tool_transition.png: 过渡

  • _uml_icon_tool_transition_completion.png:完成过渡

  • _uml_icon_tool_transition_exception.png: 异常过渡

一个状态图至少有两个状态和两个转换到另一个状态的转换。

响应事件的转换的保护条件是布尔表达式或布尔变量。它以常规字体和过渡线旁边的方括号显示。下面的例子: [bPowerOn], [bPowerOff], [bDoIt], [bReady].

事务动作是在转移的保护条件成立时立即执行的动作 TRUE.动作名称以粗体显示 // 在过渡线之前。

下面的例子: //PowerUp //PowerDown TODO

当活动状态的多个传出转换的保护条件同时应用时,转换具有适用的优先级。在这种情况下,优先级在图表中由过渡线开头的数字符号表示。请参阅下面的示例 Idle:(1)和(2)。

状态总共可以有三种类型的动作: ENTRY, DO, 和 EXIT.有关这些操作的详细信息,请参阅帮助页面 状态 元素。

1. 例子

该示例显示了具有通常三种状态的简单机器的状态图: PowerOff, Idle, 和 DoIt.当一个事件发生时,这意味着创建的保护条件得到满足,系统切换到下一个状态。例如机器切换到工作状态 DoIt 只要守卫条件 bDoIt 获取值 TRUE.

当所有动作结束时,机器切换回状态 Idle 等待下一个事件。机器也可以关闭(//PowerDown 行动),然后在 PowerOff 状态。

_uml_img_sc_simple.png