主要内容

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

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

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

  • 状态流チャート内のパラレル ステート

  • 別の 状态流チャート

  • 金宝app®の 触发子系统または 函数调用子系统

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

イベントのタイプ

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

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

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

ローカル イベントは、以下の 状态流階層のレベルで定義できます。

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

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

状态流チャートにイベントを追加するには、[シンボル] ペイン、状态流エディターのメニュー、またはモデル エクスプローラーを使用できます。

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

  1. [モデル化]タブの[データの設計]で、[[シンボル] ペイン]を選択します。

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

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

    • 输入事件

    • 本地事件

    • 输出事件

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

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

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

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

  1. 金宝app模拟モデルの 状态流チャートで、追加するイベントのタイプに対応するメニュー オプションを選択します。

    タイプ メニュー オプション
    入力イベント [モデル化]タブの[データの設計]で、[イベント入力]をクリックします。
    出力イベント [モデル化]タブの[データの設計]で、[イベント出力]をクリックします。
    ローカル イベント [モデル化]タブの[データの設計]で、[ローカル イベント]をクリックします。

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

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

  1. [モデル化]タブの[データの設計]で、[モデル エクスプローラー]を選択します。

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

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

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

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

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

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

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

ステートまたは遷移アクションでローカル イベントまたは出力イベントをブロードキャストするには、邮寄演算子を使用します。たとえば、遷移が有効な時点で出力イベントをブロードキャストする場合、イベント名を条件アクションとして使用しないようにします。

{output_event;}

代わりに、邮寄演算子を呼び出します。

{send(output_event);}

どちらのアクションも有効ではありますが、邮寄演算子を使用すると、チャートが読みやすくなり、明示的イベントをデータと取り違えることがなくなります。

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

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

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

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

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

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

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

エッジ トリガーを使用する入力イベントと関数呼び出しを使用する入力イベントを混在させると、コンパイル時にエラーが発生します。

参考

||

関連するトピック