Main Content

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

入力イベントの送信による Stateflow チャートのアクティブ化

"入力イベント" は Stateflow® チャートの外部で発生し、そのチャートでのみ認識されます。このタイプのイベントにより、他の Stateflow チャートを含めた他の Simulink® ブロックは、特定のチャートに対してその外部で発生したイベントを通知できるようになります。入力イベントを定義するには、次を行います。

  1. チャートでのイベントの定義 の説明に従って、イベントを Stateflow チャートに追加します。

  2. イベントの [スコープ] プロパティを [Simulink から入力] に設定します。Simulink モデルの Stateflow ブロックの一番上に単一のトリガー端子が表示されます。

  3. 入力イベントは、制御信号 (エッジ トリガー) の変更または Simulink ブロックからの関数呼び出しによって Stateflow チャートをアクティブ化できます。

    • エッジ トリガー入力イベントを指定するには、[トリガー] プロパティを次のいずれかのオプションに設定します。

      • 立ち上がり

      • 立ち下がり

      • 両エッジ

    • 関数呼び出し入力イベントを指定するには、[トリガー] プロパティを [関数呼び出し] に設定します。

    エッジ トリガー入力イベントと関数呼び出し入力イベントを同じ Stateflow チャート内に混在させることはできません。これらの入力イベントを混在させると、解析時やシミュレーション時にエラーが発生します。

詳細については、イベントのブロードキャストによるモデル コンポーネントの同期を参照してください。

エッジ トリガーを使用した Stateflow チャートのアクティブ化

エッジ トリガー入力イベントにより、Stateflow チャートが、シミュレーションの現在のタイム ステップ時に実行されます。このタイプの入力イベントでは、制御信号の変更がトリガーの役割を果たします。

エッジ トリガー タイプ

説明

立ち上がり

立ち上がりエッジ トリガー。制御信号が 0 または負の値から正の値に変化すると、チャートがアクティブになります。

立ち下がり

立ち下がりエッジ トリガー。制御信号が正の値から 0 または負の値に変化すると、チャートがアクティブになります。

両エッジ

立ち上がりエッジ トリガーまたは立ち下がりエッジ トリガーのいずれか。制御信号がどちらかの方向に変化してゼロクロッシングを行うと、チャートがアクティブになります。

いずれの場合も、制御信号の値を有効なエッジ トリガーにするには、ゼロクロッシングを行わなければなりません。たとえば、-1 から 1 に変化する信号は、有効な立ち上がりエッジ トリガーです。1 から 2 に変化する信号は、有効な立ち上がりエッジ トリガーではありません。

エッジ トリガー イベントを使用する場合

モデルが定期的または周期的にチャートを実行する必要がある場合は、エッジ トリガー入力イベントを使用してチャートをアクティブ化します。たとえば、モデル sf_loop_scheduler では、エッジ トリガー イベントは Edge to Function チャートを定期的な間隔でアクティブ化します。詳細については、単一のステップでサブシステムを複数回スケジュールを参照してください。

複数のエッジ トリガー入力イベントの動作

どのタイム ステップでも、入力イベントはその端子番号の昇順でチェックされます。チャートは、有効なイベントごとに 1 回起動されます。エッジ トリガー入力イベントの場合は、同じタイム ステップ内に複数のエッジが発生する可能性があります。これにより、タイム ステップ内で複数回、チャートが起動されます。この状況では、イベントはその端子番号の昇順でチャートを起動します。

関数呼び出しを使用した Stateflow チャートのアクティブ化

関数呼び出し入力イベントにより、Stateflow チャートが、シミュレーションの現在のタイム ステップ時に実行されます。このタイプの入力イベントでは、Stateflow チャートを呼び出すブロックに対して関数呼び出し出力イベントも定義しなければなりません。

関数呼び出し入力イベントを使用する場合

モデルが関数呼び出しと同じタイム ステップでチャートからの出力データにアクセスする必要がある場合に、関数呼び出し入力イベントを使用してチャートをアクティブ化します。たとえば、モデル sf_loop_scheduler では、関数呼び出し入力イベントは Looping Scheduler チャートをアクティブ化します。詳細については、単一のステップでサブシステムを複数回スケジュールを参照してください。

複数の関数呼び出し入力イベントの動作

関数呼び出し入力イベントの場合は、トリガー イベントが 1 つのみ存在します。イベントの呼び出し側は、明示的にチャートを呼び出して実行します。単一のタイム ステップ内では、有効な関数呼び出しは 1 回のみです。

入力イベントと制御信号の関連

1 つのチャート内で 1 つ以上の入力イベントを定義すると、チャート ブロックの上部に単一のトリガー端子が表示されます。複数の外部 Simulink ブロックが、トリガー端子に接続した信号ベクトルを介して、入力イベントをトリガーできます。入力イベントの [端子] プロパティは、トリガー端子に接続する制御信号ベクトルへのインデックスを指定します。

既定では、[端子] の値は、入力イベントの追加順で表示されます。これらの割り当ては、イベントの [端子] プロパティを変更することによって変更できます。入力イベントの [端子] プロパティを変更すると、残りの入力イベントの [端子] の値の番号が自動的に再設定されます。

入力イベントで使用可能なデータ型

1 つのトリガー端子に対して複数の入力イベントを設定するには、すべての信号のデータ型が同じでなければなりません。データ型が異なる複数の信号を入力イベントとして使用すると、シミュレーション時にエラーが発生します。たとえば、double 型の 2 つの入力信号を多重化して、チャートに対する入力イベントとして使用できます。

booleandouble など、データ型が異なる 2 つの入力信号を多重化することはできません。

関連するトピック