Main Content

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

Stateflow チャートでの Simulink コンポーネントの再利用

Simulink® 関数は、ユーザーが Simulink ブロックを入力し、ステートと遷移のアクションにおいて呼び出すグラフィカル オブジェクトです。Simulink 関数は、Simulink モデルの Stateflow® チャートでのみサポートされます。

Simulink 関数を使用すると、グラフィカル オブジェクトと非グラフィカル オブジェクトの数を最小限に抑えることができるため、モデル設計の効率が向上し、モデルが読みやすくなります。この関数の代表的な使用例は、以下のとおりです。

同じチャートから Stateflow チャート内で定義された Simulink 関数を呼び出すことができます。また、モデル内の Simulink Function ブロックによって定義された関数を呼び出すことも可能です。

チャート内で Simulink 関数を定義する場所

Simulink 関数は、チャート、ステート、またはサブチャート内の任意の場所に配置できます。関数の配置は、そのスコープを判定します。つまりその関数を呼び出すことのできる、ステートと遷移の集合を判定します。以下のガイドラインに従います。

  • ある特定のステートか、サブチャートとそのサブステートの内部でのみ関数を呼び出す場合は、Simulink 関数をそのステートまたはサブチャートに配置します。この関数は、そのステートまたはサブチャートの親や先祖に含まれる同じ名前の関数よりも優先されます。

  • 関数をチャートの任意の部分から呼び出す場合は、Simulink 関数をチャート レベルに配置します。

チャート内の複数のサイトからの Simulink 関数の呼び出し

チャートで複数の呼び出し側から Simulink 関数を呼び出した場合、すべての呼び出し側が関数変数のステートを共有します。たとえば、各タイム ステップで同じ Simulink 関数を 2 回呼び出すチャートがあると仮定します。

関数 f には、関数が実行されるたびに 1 だけカウンターを増分するブロック線図が含まれています。

各タイムステップで、関数 f は 2 回呼び出され、これによりカウンターは 2 ずつ増えることになります。すべての呼び出し側がこのカウンターの値を共有するため、各タイム ステップにおいて yy1 が 2 だけ増分されます。

メモ

この動作は、Simulink モデル内の外部 Function-Call Subsystem にも当てはまります。詳細については、Function-Call Subsystem の使用を参照してください。

Stateflow チャートにおける Simulink 関数の使用ルール

 連続時間チャートのステート during アクションまたは遷移ステートにおいては Simulink 関数を呼び出さない

 初期化時実行モードを有効にした場合は、デフォルト遷移で Simulink 関数を呼び出さない

 Simulink 関数の入出力端子の名前には、アルファベット文字またはアンダースコアのみを使用する

 Simulink 関数では、不連続的な信号を連続的な信号に変換する

 Simulink 関数をエクスポートしない

 Simulink 関数の名前を変更するには、Stateflow エディターを使用する

 Moore チャートで Simulink 関数を使用しない

 Simulink 関数用の HDL コードを生成しない

 入力端子のプロパティを Simulink 関数用に明示的に設定する

 関数呼び出し式の入力と出力が適切なサイズであることを確認する

 値による引数の受け渡し

参考

関連するトピック