0

リアルタイム システムを検証するために、Timed Automata について詳しく知りたいです。現在、私は UPPAAL というツールに慣れようとしています。

簡単なグラフをいくつか描き、さまざまなプロパティを追加しました。モデル全体は、異なる機械ユニットがブロックを相互に受け渡す生産セル システムを表すと想定されています。

ブロック ( BlockCycle )、2 つの機械ユニット ( FeederFeederBelt )、およびブロックの到着を感知する 2 つのセンサーをモデル化しました。

私のシステムは理にかなっていると思っていましたが、行き詰まりました。

この遷移のターゲット状態は、不変条件に違反しています。モデルがこのように動作することを意図している限り、これは問題ではありません。

(いいえ、しませんでした。;P)

しかし、デッドロックの理由を見つけることができないようです。このツールはBlockCycleモデルを示していますが、そこで不変条件を指定していません。実際、すべての移行要件が満たされているため、移行 ( Pos7 からPos8)は確実に実行する必要があります。

以下に、システムがどのように進化し、最終的にスタックするかを示します (エラー メッセージが表示されます)。

モデルのステップスルー

ラベル:

  • 緑 : プロパティ チェック (例: FB_RunningFB_Running == trueを意味します)
  • 濃い青: プロパティの更新/割り当て
  • 濃い赤: ロケーション (例: Pos7またはPos8 )

問題のそれぞれの遷移を含む BlockCycleモデル:

BlockCycle モデル

私の質問: 実行できるトランザクションがまだあるのに、システムがデッドロックするのはなぜですか。


Edit1: Sensor7 の位置Active ( BlockAtPos[7]と呼ばれる) の不変プロパティを削除すると、デッドロックが解決されます。したがって、デッドロックする前の最後の遷移でSensor7BlockCycleの間に同期がないため、矛盾が発生すると思います ( BlockAtPos[7]が false になる一方で、センサーはInActive遷移を行う機会がまだありません)。不変条件に違反しています。


注: 私の UPPAAL コード/ファイルはpcs.xmlにあります。

4

0 に答える 0