有限状态机变量赋值的一些小概念

描述

变量的赋值

在转换中执行赋值时,所使用的值有明显的区别。在下面的表达式中

信号处理器

蓝色部分表示引发事件(也就是常说的e)时的值,绿色部分表示执行所有激活链后将更新的值。对于以下状态图:

信号处理器

当处于状态 1 并引发事件 e 时,执行将按如下方式发生:

  • 转到状态 2,更新 x 的未来值。
  • 检查优先级为 1 的转换,x 仍等于 0;无法进行过渡。
  • 检查优先级为 2 的转换,该转换为空且始终为 true;可以进行转换,转到状态 4。
  • 激活链结束,x 的未来值成为它的实际值,所以 x 的值变成 1,我们停留在状态 4。

感兴趣的小伙伴可以思考一下为什么是状态4而不是状态3

赋值更新激活链末尾的变量或离散输出的值。因此,当相同的值被分配两次时,就会出现问题,我们应该使用哪一个?

信号处理器

x 的值应该是 1 还是值 18?为避免状态图执行的歧义,禁止对激活链中的变量进行多次更新。为了打破链条,您必须为其中一个转换添加一个触发器:

信号处理器

这样,状态 2 和状态 3 之间的转换就不会直接进行;在重新更新变量 X 之前,必须在状态 2 中引发事件 E。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分