メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

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

Simulink® モデルには Stateflow® チャートが含まれますが、これらのチャートはモデルの実行期間中、必ずしもアクティブであるとは限りません。チャートがアクティブになる方法としては、Simulink から入力イベントを受信することが挙げられます。Stateflow チャートはアクティブになるとアクションを実行します。

入力イベントは Stateflow チャートの外部で発生します。Simulink モデル、Simulink 関数、または別の Stateflow チャートで入力イベントを生成できます。

入力イベントの定義

入力イベントを定義するには、次を行います。

  1. Stateflow チャートにイベントを追加します。詳細については、チャートでのイベントの定義を参照してください。

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

入力イベントは、制御信号の変更または Simulink ブロックからの関数呼び出しによって Stateflow チャートをアクティブ化できます。制御信号の変更はエッジ トリガーとも呼ばれます。エッジ トリガー入力イベントと関数呼び出し入力イベントの両方を同じ Stateflow チャート内で使用することはできません。これらの入力イベントを一緒に使用すると、コンパイル時エラーが発生します。

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

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

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

エッジ トリガー タイプ

説明

立ち上がり

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

立ち下がり

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

両エッジ

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

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

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

モデルが定期的または周期的にチャートを実行する必要がある場合は、エッジ トリガー入力イベントを使用してチャートをアクティブ化します。たとえば、このモデルでは、エッジ トリガー入力イベントは Edge to Function チャートを定期的な間隔でアクティブ化します。

A model that uses edge-triggered events to activate charts. It contains two charts named Edge to Function and Loop Scheduler. A 1-second clock periodically activates the Edge to Function chart, which in turn uses an event named call to activate the Loop Scheduler chart. The Loop Scheduler chart inputs from and outputs to a subsystem named A1.

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

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

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

関数呼び出し入力イベントにより、Stateflow チャートが、シミュレーションの現在のタイム ステップ時に実行されます。

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

モデルが関数呼び出しと同じタイム ステップでチャートからの出力データにアクセスする必要がある場合に、関数呼び出し入力イベントを使用してチャートをアクティブ化します。たとえば、このモデルでは、関数呼び出し入力イベントは Looping Scheduler チャートをアクティブ化します。

A model that uses edge-triggered events to activate charts. It contains two charts named Edge to Function and Loop Scheduler. A 1-second clock periodically activates the Edge to Function chart, which in turn uses an event named call to activate the Loop Scheduler chart. The Loop Scheduler chart inputs from and outputs to a subsystem named A1.

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

関数呼び出し入力イベントの場合は、トリガー イベントが 1 つのみ存在します。イベントの呼び出し側は、明示的にチャートを呼び出して実行します。

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

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

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

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

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

Simulink model that uses two signals of type double as input events to a Stateflow chart.

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

Simulink model that uses a signal of type boolean and a signal of type double as input events to a Stateflow chart. This configuration produces a run-time error.

参考

トピック