如何处理输入流并根据 UML 状态机图中的输入组合生成输出
How to handle stream of inputs and generate output based on input combination in UML State machine diagram
以下是带输入输出的安全控制器
下面给出了设计状态机的条件:
这里 SignalOk、SignalWeak 和 SignalLost 是转向角的测量信号质量。 SteeringAngle 信号本身包含原始转向数据。如果连续 3 个 SignalOk,系统控制器将输出 ValidSignal 和转向角数据。在其他情况下,信号将被视为 CorrputSignal。我正在使用 UML 2 状态图(哈雷尔图)。这是到目前为止我所做的:
N.B.:暂不支持并行状态和广播,但支持嵌套状态。
我不知道如何在状态机中对这个输入流建模,我们将不胜感激。
首先我建议重命名状态,这样它们就不像动作了。我建议将它们命名为 First Ok received
、Second Ok received
和 Ok confirmed
.
由于 SteeringAngle
的前两次将被忽略,因此由它触发的唯一转换应该是 Ok confirmed
中的内部转换。此转换还将调用 ValidSignal
.
未指定 SteeringAngle
和 SignalOk
的顺序。因此,SteeringAngle
应该推迟到Second Ok received
。这样,即使它先到,它也会留在事件池中。
SignalWeak
或 SignalLost
的任何接收都应该 return 到 Ready
。您可以通过 Operational
到 Ready
.
的本地转换来执行此操作
一个附加建议:在 Operational
中定义一个初始状态,并将 SystemOk
过渡到 Operational
。效果是一样的,但是它可以更好地分离两个顶级状态。
以下是带输入输出的安全控制器
N.B.:暂不支持并行状态和广播,但支持嵌套状态。 我不知道如何在状态机中对这个输入流建模,我们将不胜感激。
首先我建议重命名状态,这样它们就不像动作了。我建议将它们命名为 First Ok received
、Second Ok received
和 Ok confirmed
.
由于 SteeringAngle
的前两次将被忽略,因此由它触发的唯一转换应该是 Ok confirmed
中的内部转换。此转换还将调用 ValidSignal
.
未指定 SteeringAngle
和 SignalOk
的顺序。因此,SteeringAngle
应该推迟到Second Ok received
。这样,即使它先到,它也会留在事件池中。
SignalWeak
或 SignalLost
的任何接收都应该 return 到 Ready
。您可以通过 Operational
到 Ready
.
一个附加建议:在 Operational
中定义一个初始状态,并将 SystemOk
过渡到 Operational
。效果是一样的,但是它可以更好地分离两个顶级状态。