ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

イベントのブロードキャストによるモデル コンポーネントの同期

"イベント" とは、以下のいずれかのオブジェクトのアクションをトリガーできる Stateflow® オブジェクトです。

  • Stateflow チャート内のパラレル ステート。

  • 別の Stateflow チャート。

  • Simulink® の Triggered Subsystem または Function-Call Subsystem。

シミュレーション目的では、Stateflow チャート内のイベント数に制限はありません。ただし、コード生成の場合は、基となる C コンパイラによって、イベント数が理論上 231-1 個に制限されています。

イベントのタイプ

"暗黙的イベント" とは、チャート実行時にブロードキャストされる組み込みイベントです。これらのイベントは、明示的に定義またはトリガーされることのない暗黙的イベントです。詳細については、暗黙的イベントを使用したチャート動作の定義を参照してください。

"明示的なイベント" とは、明示的に定義するイベントです。明示的イベントには、次のいずれかのスコープを指定できます。

スコープ説明
入力チャート外から Stateflow チャートへブロードキャストされるイベント。詳細については、入力イベントの送信による Stateflow チャートのアクティブ化Stateflow チャートを使用したヒューマンマシン インターフェイスのロジックの設計を参照してください。
ローカルStateflow チャートの任意の場所で発生できるイベントですが、親オブジェクトおよびその子オブジェクト内でのみ表示されます。ローカル イベントは、Simulink モデルの Stateflow チャートでのみサポートされます。詳細については、ローカル イベントをブロードキャストしてパラレル ステートを同期を参照してください。
出力Stateflow ブロックで発生するイベントですが、Simulink ブロックにブロードキャストされます。出力イベントは、Simulink モデルの Stateflow チャートでのみサポートされます。詳細については、出力イベントの送信による Simulink ブロックのアクティブ化を参照してください。

明示的イベントは、以下の Stateflow 階層のレベルで定義できます。

階層のレベル表示
チャートイベントは、チャートと、そのすべてのステートおよびサブステートで表示されます。
サブチャートイベントは、サブチャートと、そのすべてのステートおよびサブステートで表示されます。
ステートイベントは、ステートおよびそのすべてのサブステートで表示されます。

チャートでのイベントの定義

Stateflow チャートにイベントを追加するには、[シンボル] ウィンドウ、Stateflow エディターの [チャート] メニュー、またはモデル エクスプローラーを使用します。

[シンボル] ウィンドウを使用したイベントの追加

  1. [シンボル] ウィンドウを開くには、[ツール表示][シンボル] を選択します。

  2. [イベントを作成します] アイコン をクリックします。

  3. 新規イベントの行にある [タイプ] で、アイコンをクリックして以下を選択します。

    • Input Event

    • Local Event

    • Output Event

  4. イベントの名前を編集します。

  5. 入出力イベントの場合は、[端子] フィールドをクリックして端子番号を選択します。

  6. イベントのプロパティを指定するには、プロパティ インスペクターを開きます。[シンボル] ウィンドウで、イベントの行を右クリックして [エクスプローラー] を選択します。詳細については、イベントのプロパティの設定を参照してください。

Stateflow エディターのメニューを使用したイベントの追加

  1. Simulink モデルの Stateflow チャートで、追加するイベントのスコープに対応するメニュー オプションを選択します。

    スコープメニュー オプション
    入力[チャート][入力と出力を追加][Simulink からのイベント入力]
    出力[チャート][入力と出力を追加][Simulink へのイベント出力]
    ローカル[チャート][他の要素を追加][ローカル イベント]

  2. [イベント] ダイアログ ボックスで、データ プロパティを指定します。詳細については、イベントのプロパティの設定を参照してください。

モデル エクスプローラーを使用したイベントの追加

  1. Simulink モデルの Stateflow チャートで、[表示][モデル エクスプローラー] を選択します。

  2. [モデルの階層構造] ペインで、表示対象の新規イベントがある Stateflow 階層のオブジェクトを選択します。選択したオブジェクトは、新しいイベントの親になります。

  3. モデル エクスプローラーのメニューで、[追加][イベント] を選択します。既定の定義が設定された新しいイベントが、モデル エクスプローラーの [コンテンツ] ペインに表示されます。

  4. [イベント] ペインで、イベントのプロパティを指定します。詳細については、イベントのプロパティの設定を参照してください。

Stateflow チャートからのイベント情報へのアクセス

入力イベントやローカル イベントのプロパティを表示することや、出力イベントの出力先を Stateflow チャートから直接開くことができます。対象のイベントを含むステートまたは遷移を右クリックして、[エクスプローラー] を選択します。コンテキスト メニューに、ステートまたは遷移内で解決されているすべてのシンボルの名前とスコープがリストされます。コンテキスト メニューから入力イベントまたはローカル イベントを選択すると、そのプロパティがモデル エクスプローラーに表示されます。コンテキスト メニューから出力イベントを選択すると、そのイベントに関連付けられている Simulink サブシステムまたは Stateflow チャートが開きます。

Stateflow チャートでイベントを使用する場合のベスト プラクティス

send コマンドを使用して、アクションで明示的イベントをブロードキャストする

ステートまたは遷移のアクションで明示的イベントをブロードキャストするには、send コマンドを使用します。このコマンドを使用すると、チャートが読みやすくなり、明示的イベントをデータと取り違えることがなくなります。詳細については、ローカル イベントをブロードキャストしてパラレル ステートを同期を参照してください。

条件付きアクションをトリガーする明示的イベントの使用は避ける

次の場合は、イベントではなく遷移に条件を使用します。

  • 条件文を表す場合。たとえば [x < 1][x == 0] など。

  • データ値の変更を表す場合。たとえば [hasChanged(x)] など。

詳細については、遷移アクション タイプを参照してください。

ステート アクティビティをチェックする目的で暗黙的なイベント enter を使用することは避ける

ステート アクティビティをチェックするには、暗黙的イベント enter ではなく in 演算子を使用します。詳細については、in 演算子を使用したステート アクティビティのチェックを参照してください。

エッジ トリガー入力イベントと関数呼び出し入力イベントをチャート内に混在させない

エッジ トリガーを使用する入力イベントと関数呼び出しを使用する入力イベントを混在させると、解析時やシミュレーション時にエラーが発生します。

関連するトピック