このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
入力イベントの送信による Stateflow チャートのアクティブ化
Simulink® モデルには Stateflow® チャートが含まれますが、これらのチャートはモデルの実行期間中、必ずしもアクティブであるとは限りません。チャートがアクティブになる方法としては、Simulink から入力イベントを受信することが挙げられます。Stateflow チャートはアクティブになるとアクションを実行します。
入力イベントは Stateflow チャートの外部で発生します。Simulink モデル、Simulink 関数、または別の Stateflow チャートで入力イベントを生成できます。
入力イベントの定義
入力イベントを定義するには、次を行います。
Stateflow チャートにイベントを追加します。詳細については、チャートでのイベントの定義を参照してください。
プロパティ インスペクターで、イベントの [スコープ] プロパティを
[Simulink から入力]
に設定します。Simulink モデルの Stateflow ブロックの一番上に単一のトリガー端子が表示されます。
入力イベントは、制御信号の変更または Simulink ブロックからの関数呼び出しによって Stateflow チャートをアクティブ化できます。制御信号の変更はエッジ トリガーとも呼ばれます。エッジ トリガー入力イベントと関数呼び出し入力イベントの両方を同じ Stateflow チャート内で使用することはできません。これらの入力イベントを一緒に使用すると、コンパイル時エラーが発生します。
エッジ トリガーを使用した Stateflow チャートのアクティブ化
エッジ トリガー入力イベントにより、Stateflow チャートが、シミュレーションの現在のタイム ステップ時に実行されます。このタイプの入力イベントでは、制御信号の変更がトリガーの役割を果たします。
関数呼び出し入力イベントを指定するには、[トリガー] プロパティを [関数呼び出し]
に設定します。
エッジ トリガー タイプ | 説明 |
---|---|
| 立ち上がりエッジ トリガー。制御信号が 0 または負の値から正の値に変化すると、チャートがアクティブになります。 |
| 立ち下がりエッジ トリガー。制御信号が正の値から 0 または負の値に変化すると、チャートがアクティブになります。 |
| 立ち上がりエッジ トリガーまたは立ち下がりエッジ トリガーのいずれか。制御信号がどちらかの方向に変化してゼロクロッシングを行うと、チャートがアクティブになります。 |
いずれの場合も、制御信号の値を有効なエッジ トリガーにするには、その値が 0 と等しくなるか、ゼロクロッシングを行わなければなりません。たとえば、-1 から 1 に変化する信号は、有効な立ち上がりエッジ トリガーです。1 から 2 に変化する信号は、有効な立ち上がりエッジ トリガーではありません。0 から 2 に変化する信号は、有効な立ち上がりエッジ トリガーです。
エッジ トリガー入力イベントを使用する場合
モデルが定期的または周期的にチャートを実行する必要がある場合は、エッジ トリガー入力イベントを使用してチャートをアクティブ化します。たとえば、このモデルでは、エッジ トリガー入力イベントは Edge to Function チャートを定期的な間隔でアクティブ化します。
複数のエッジ トリガー入力イベントの動作
タイム ステップごとに、Stateflow は入力イベントをその端子番号の昇順でチェックします。チャートは、有効なイベントごとに 1 回起動します。エッジ トリガー入力イベントの場合は、同じタイム ステップ内に複数のエッジが発生する可能性があります。これにより、タイム ステップ内で複数回、チャートが起動されます。
関数呼び出しを使用した Stateflow チャートのアクティブ化
関数呼び出し入力イベントにより、Stateflow チャートが、シミュレーションの現在のタイム ステップ時に実行されます。
関数呼び出し入力イベントを使用する場合
モデルが関数呼び出しと同じタイム ステップでチャートからの出力データにアクセスする必要がある場合に、関数呼び出し入力イベントを使用してチャートをアクティブ化します。たとえば、このモデルでは、関数呼び出し入力イベントは Looping Scheduler チャートをアクティブ化します。
複数の関数呼び出し入力イベントの動作
関数呼び出し入力イベントの場合は、トリガー イベントが 1 つのみ存在します。イベントの呼び出し側は、明示的にチャートを呼び出して実行します。
入力イベントと制御信号の関連
1 つのチャート内で 1 つ以上の入力イベントを定義すると、チャート ブロックの上部に単一のトリガー端子が表示されます。複数の外部 Simulink ブロックが、トリガー端子に接続した信号ベクトルを介して、入力イベントをトリガーできます。入力イベントの [端子] プロパティは、トリガー端子に接続する制御信号ベクトルへのインデックスを指定します。
既定では、[端子] の値は、入力イベントの追加順で表示されます。これらの割り当ては、イベントの [端子] プロパティを変更することによって変更できます。入力イベントの [端子] プロパティを変更すると、残りの入力イベントの [端子] の値の番号が自動的に再設定されます。
入力イベントで使用可能なデータ型
1 つのトリガー端子に対して複数の入力イベントを設定するには、すべての信号のデータ型が同じでなければなりません。データ型が異なる複数の信号を入力イベントとして使用すると、シミュレーション時にエラーが発生します。たとえば、double
型の 2 つの入力信号を多重化して、チャートに対する入力イベントとして使用できます。
boolean
と double
など、データ型が異なる 2 つの入力信号を多重化することはできません。