Main Content

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

Stateflow ブロックからの C または C++ コードの生成

Stateflow® チャートを含む Simulink® モデルから C または C++ のコードを生成するには、Simulink Coder™ を使用しなければなりません。Simulink Coder に加え、Embedded Coder® を使用して生成コードを強化することができます。Embedded Coder の強化機能によって、さらに読みやすくコンパクトで高速に実行できるコードにすることができます。

ターゲットに対するコードを生成する場合、Stateflow は自動的に Stateflow マシンを解析します。解析では各 Stateflow マシンにあるグラフィカル オブジェクトおよび非グラフィカル オブジェクトとデータは、サポートされるチャート表記法とアクション言語の構文に照らして評価されます。詳細については、チャート シミュレーション時の一般的なモデリング エラーの検出を参照してください。

Simulink Coder を使用したコードの生成

Simulink Coder を使用すると、Stateflow チャートを含むモデルから C および C++ のコードを生成することができます。その後、生成されたコードを次のようなリアルタイムや非リアルタイムのアプリケーションに使用できます。

  • シミュレーションの高速化

  • ラピッド プロトタイピング

  • ハードウェアインザループ (HIL) テスト

Simulink Coder を使用すると、クラシック アクセラレータ モードとラピッド アクセラレータ モードにもアクセスできます。アクセラレータ モードは、後で実行に使用されるターゲット コードを生成することによって機能します。これらのモードの詳細については、アクセラレータ モードの動作を参照してください。

HIL テストでは、コントローラー設計をテストして物理システム (プラント) のモデルが有効かどうかを判定することができます。HIL テストの詳細については、ハードウェアインザループ シミュレーションとは (Simscape)を参照してください。

Simulink Coder でのコード生成用にモデルを設定するには、モデルの構成とコードの生成 (Simulink Coder)を参照してください。

Embedded Coder を使用したコードの生成

Embedded Coder を追加すると、さらにコンパクトで読み取りやすく、高速に実行できる C や C++ のコードを生成できます。また、Embedded Coder は、生成された関数、ファイル、データの制御を可能にすることにより、Simulink Coder の機能を拡張します。さらに、Embedded Coder を使用すると、古い形式のコードやデータ型、キャリブレーション パラメーターとの統合が簡単になります。Embedded Coder は以下のソフトウェア標準に対応しています。

  • AUTOSAR

  • MISRA C

  • ASAP2

Embedded Coder は、特定のハードウェア向けの高度な最適化とデバイス ドライバーを備えたサポート パッケージも提供します。

Embedded Coder でのコード生成用にモデルを設定するには、Generate Code by Using the Quick Start Tool (Embedded Coder)を参照してください。

Stateflow オブジェクトに対して生成されたコードを最適化するための設計のヒント

 マシンを親とするデータにはアクセスしない

 グラフィカル関数のインライン オプションを明示する

 Stateflow チャートで複数のエッジトリガー イベントを使用しない

 チャートの入力信号を単一のバス オブジェクトに統合する

 離散サンプル時間を使用する

ラピッド プロトタイピングおよび量産配布用のコードの生成

次の表は、コード生成に関する情報を目的に基づいて提示しています。

目的

Simulink Coder ドキュメンテーション

Embedded Coder ドキュメンテーション

C/C++ ソース コードの生成

コード生成の基礎 (Simulink Coder)

コード生成の基礎 (Embedded Coder)

C/C++ ソース コードの生成と実行可能ファイルのビルド

ビルド プロセス (Simulink Coder)

ビルド プロセス (Embedded Coder)

外部コードの統合

外部コードの統合 (Simulink Coder)

カスタム統合 (Embedded Coder)

複数モデルでの使用を目的とした、移植可能な内蔵型ライブラリ内のライブラリ チャートのみを対象とする外部コードのインクルード

ライブラリ チャート用の外部コードの統合 (Simulink Coder)

ライブラリ チャート用の外部コードの統合 (Embedded Coder)

生成コードの最適化

boolean 変数およびステート コンフィギュレーション変数に関するメモリ使用量の削減 (Simulink Coder)

Reduce Memory Usage for Boolean and State Configuration Variables (Embedded Coder)

生成コード内の Stateflow オブジェクトのトレーサビリティ

トレーサビリティ コメントにより次が得られます。

  • 生成されたコードの検証。コードの行に対応する Stateflow オブジェクトの識別に加え、レビューの実施/未実施を問わず、さまざまなオブジェクトのコードの追跡が可能です。

  • 大規模モデル用に生成されたコード内へのコメントのインクルード。生成コード内のオブジェクトの識別に加え、コメントや説明の手動入力の回避が可能です。

トレーサビリティ コメントを有効にするには、Embedded Coder または HDL Coder™ ソフトウェアがなければなりません。C/C++ のコード生成では、組み込みリアルタイム (ert) ベースのターゲットの生成コードにのみコメントが記述されます。詳細については、Trace Stateflow Elements in Generated Code (Embedded Coder)トレーサビリティを使用した Simulink モデルと HDL コード間の移動 (HDL Coder)を参照してください。

関連するトピック