ステート構造を使用した排他的モードとパラレル モードの定義
各ステート (またはチャート) には、含めることのできるサブステートの種類を決定する "構造" が含まれています。スーパーステートのすべてのサブステートは、スーパーステートの構造とタイプが一致していなければなりません。ステートの構造は、排他的 (OR) またはパラレル (AND) です。
排他的 (OR) ステート構造
実線の境界をもつサブステートは、排他的 (OR) ステート構造を示しています。この構造は、互いに排他的な動作モードの記述に使用します。ステートに排他的 (OR) 構造が含まれる場合、一度にアクティブにできるサブステートの数は 1 つに限定されます。
たとえば、次のチャートでは、ステート A
とステート B
のどちらかのみがアクティブになります。ステート A
がアクティブな場合、ステート A1
またはステート A2
のいずれかをアクティブにできます。
パラレル (AND) ステート構造
破線の境界をもつサブステートは、パラレル (AND) 構造を示しています。この構造は、同時動作モードの記述に使用します。ステートがパラレル (AND) 構造をもつ場合、すべてのサブステートは同時にアクティブになります。
以下の例では、ステート A
がアクティブになると、A1
と A2
の両方が同時にアクティブになります。
パラレル ステート内のアクティビティは、以下の例で示すように、基本的に独立しています。
以下の例では、ステート A
がアクティブになると、ステート B
と C
の両方が同時にアクティブになります。ステート C
がアクティブになると、ステート C1
またはステート C2
のどちらかがアクティブになります。
サブステート構造の指定
スーパーステートの構造を設定することで、パラレル (AND) ステートまたは排他的 (OR) ステートをスーパーステートに含めるかどうかを指定します。ステートがアクティブなときに、そのサブステートがすべてアクティブになっている場合は、そのステートにはパラレル (AND) 構造が含まれています。ステートがアクティブなときに、そのサブステートが 1 つのみアクティブになっている場合は、そのステートには排他的 (OR) 構造が含まれています。
ステートの構造を変更するには、ステートを選択し、ステートを右クリックして [構造] コンテキスト メニューを表示し、メニューから [排他 (OR)] または [パラレル (AND)] を選択します。
チャートのステート構造も指定することができます。この場合、Stateflow® チャートでは、最上位のステートがサブステートとして扱われます。チャートは、排他的構造を含むステートを作成します。チャートの構造を指定するには、すべてのオブジェクトの選択を解除し、チャートを右クリックして [構造] コンテキスト メニューを表示し、メニューから [排他 (OR)] または [パラレル (AND)] を選択します。
サブステートの外観は、そのスーパーステートの構造を示しています。排他的サブステートは実線の境界となり、パラレル サブステートは破線の境界となります。パラレル サブステートは、右上隅に番号も表示されます。この番号は、兄弟関係にあるサブステートの相対的なアクティブ化の順序を示しています。