主要内容

的检查状态活动操作符

在一个Stateflow®图具有并行状态分解,子状态可以同时活跃。为了协调不同并行状态的行为,一个状态可以检查另一个状态的子状态活动并相应地做出反应。例如,一个状态可以使它的子状态与另一个状态的子状态保持同步。

操作符

要检查某个状态在给定的时间步骤中是否处于活动状态,请调用操作符的状态和转换操作。的操作符接受一个限定的状态名state_name并返回布尔值输出。如果状态state_name是活跃的,返回值1 (真正的).否则,返回值0 ().

在(state_name

例如,在这个图表中,风扇加热器是并行(AND)状态。每个州都有一对子州,.每次图表醒来时,激活子状态风扇之间的交替风扇。从风扇。在.在国家加热器,转换的条件检查子状态活动风扇并保持状态同步。中有源基态的变化风扇使中的有源状态发生相应的变化加热器

国家活动的决议

检查状态活动是一个分为两部分的过程。首先,状态流图通过对图表层次结构执行本地化搜索以查找匹配的状态来解析限定的状态名。然后,图表确定匹配状态是否为活动状态。

搜索从层次结构级别开始,其中使用限定状态名调用操作符:

  • 对于状态操作,起点是包含该操作的状态。

  • 对于转换标签,起始点是转换源的父级。

解析过程搜索图表层次结构的每一层,以寻找到达状态的路径。如果某个状态与路径匹配,则流程将该状态添加到可能匹配的列表中。然后,该过程继续在层次结构的更高一级进行搜索。解析过程在搜索层次结构的图表级别后停止。如果存在唯一的匹配,则图表检查匹配状态是否为活动状态。否则,解析进程将失败。模拟以错误停止。

这个流程图说明了检查状态活动的过程中的不同阶段。

检查状态活动的最佳实践

要解析状态活动,状态流图不会对所有状态执行彻底搜索,并且在找到第一个匹配项后也不会停止。为了提高找到唯一搜索结果的机会:

  • 在限定数据名称中使用特定路径。

  • 给州指定唯一的名称。

  • 使用状态和框作为框来限制路径解析搜索的范围。

状态活动解析的示例

Search查找子状态的本地副本

这个图表包含了两个平行的状态,一个B.每个州都有一对子州,A1A2A1有亚态XY,而A2有亚态P.在A.A2而在B.A2,条件(A1.Y)P

图表将每个限定状态名称解析为子状态的本地副本Y

  • 在国家一个,条件(A1.Y)检查状态的活动A.A1.Y

  • 在国家B,条件(A1.Y)检查状态的活动B.A1.Y

例如,该表列出了状态转换条件的解析过程中的不同阶段一个

阶段 描述 结果
1 从国家A.A2,图表搜索州A.A2.A1.Y 没有发现匹配。
2 向上移动到层次结构的下一层(状态一个)时,图表搜索该州A.A1.Y 发现匹配。
3. 向上移动到层次结构的下一层(图表层),图表搜索状态A1。Y 没有发现匹配。

搜索以找到一个匹配项结束。因为解析算法本地化了搜索的范围,所以操作员保护过渡A.A2只检测状态A.A1.Y.的操作员保护过渡B.A2只检测状态B.A1.Y

的另一个副本的状态活动Y,使用更具体的限定州名:

  • 在国家一个,使用这个表达(B.A1.Y)

  • 在国家B,使用这个表达(A.A1.Y)

搜索没有产生匹配

在这个图表中动作的状态A.B包含表达式(Q.R).statflow无法解析限定状态名Q.R

该表列出了解决过程中的不同阶段。

阶段 描述 结果
1 从国家A.B,图表搜索州A.B.Q.R 没有发现匹配。
2 向上移动到层次结构的下一层(状态一个)时,图表搜索该州A.Q.R 没有发现匹配。
3. 向上移动到层次结构的下一层(图表层),图表搜索状态Q.R 没有发现匹配。

搜索在图表级别结束,没有找到匹配Q.R,导致错误。

要避免此错误,请使用更具体的限定状态名。例如,通过使用表达式检查状态活动(P.Q.R)

搜索发现错误的状态

在这个图表中动作的状态A.B包含表达式(Q.R).解析限定状态名时Q.R, statflow不能检测子状态A.B.P.Q.R

该表列出了解决过程中的不同阶段。

阶段 描述 结果
1 从国家A.B,图表搜索州A.B.Q.R 没有发现匹配
2 向上移动到层次结构的下一层(状态一个)时,图表搜索该州A.Q.R 没有发现匹配。
3. 向上移动到层次结构的下一层(图表层),图表搜索状态Q.R 发现匹配。

搜索以找到一个匹配项结束。的操作符只检测子状态R顶级状态

检查。的状态活动A.B.P.Q.R,则使用更具体的限定州名。例如,使用这个表达式(P.Q.R)

搜索产生多个匹配

在这个图表中动作的状态A.B包含表达式(P.Q.R).statflow无法解析限定状态名P.Q.R

该表列出了解决过程中的不同阶段。

阶段 描述 结果
1 从国家A.B,搜寻状态A.B.P.Q.R 匹配发现
2 向上移动到层次结构的下一层(状态一个)时,图表搜索该州A.P.Q.R 没有发现匹配。
3. 向上移动到层次结构的下一层(图表层),图表搜索状态P.Q.R 发现匹配。

搜索在图表级别结束,找到两个匹配项P.Q.R,导致错误。

为了避免此错误:

  • 使用更具体的限定州名。例如,检查内部的子状态活动B,使用这个表达(B.P.Q.R)

  • 重命名一个匹配的状态。

  • 封闭顶层状态P处于盒子或其他状态。添加框将阻止搜索过程检测顶级状态中的子状态。

另请参阅

|

相关的话题