如何处理输入流并根据 UML 状态机图中的输入组合生成输出

How to handle stream of inputs and generate output based on input combination in UML State machine diagram

以下是带输入输出的安全控制器 下面给出了设计状态机的条件: 这里 SignalOkSignalWeakSignalLost 是转向角的测量信号质量。 SteeringAngle 信号本身包含原始转向数据。如果连续 3 个 SignalOk,系统控制器将输出 ValidSignal 和转向角数据。在其他情况下,信号将被视为 CorrputSignal。我正在使用 UML 2 状态图(哈雷尔图)。这是到目前为止我所做的:

N.B.:暂不支持并行状态和广播,但支持嵌套状态。 我不知道如何在状态机中对这个输入流建模,我们将不胜感激。

首先我建议重命名状态,这样它们就不像动作了。我建议将它们命名为 First Ok receivedSecond Ok receivedOk confirmed.

由于 SteeringAngle 的前两次将被忽略,因此由它触发的唯一转换应该是 Ok confirmed 中的内部转换。此转换还将调用 ValidSignal.

未指定 SteeringAngleSignalOk 的顺序。因此,SteeringAngle应该推迟到Second Ok received。这样,即使它先到,它也会留在事件池中。

SignalWeakSignalLost 的任何接收都应该 return 到 Ready。您可以通过 OperationalReady.

的本地转换来执行此操作

一个附加建议:在 Operational 中定义一个初始状态,并将 SystemOk 过渡到 Operational。效果是一样的,但是它可以更好地分离两个顶级状态。