Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

Atomic サブチャート用の個別コードの生成

この例では、Atomic サブチャートを使用して、Stateflow® チャートの個別の部分に対するコードを生成する方法を説明します。チャート用にコードを生成すると、Atomic サブチャートのコードが別のファイルに保存されます。Atomic サブチャートは Simulink® モデル内の Stateflow チャートのみでサポートされます。詳細については、Atomic サブチャート使用した再利用可能なサブコンポーネントの作成を参照してください。

Atomic サブチャートがない元のモデル

次のモデルには Sine Wave (Simulink) ブロックが 2 つあり、一方は周波数が毎秒 1 ラジアンで、もう一方は周波数が毎秒 2 ラジアンです。

チャートの各ステートは飽和論理を使用して、入力正弦波を同じ周波数の出力矩形波に変換します。

この例では Atomic サブチャートを使用しないため、モデル全体について生成されたコードが 1 つのファイルに格納されます。チャートの特定の部分のコードを見つけるには、ファイル全体に目を通す必要があります。

一方で、ステート A を Atomic サブチャートに変換し、このサブチャートのコードが別のファイルになるように指定することができます。このコード生成方法を使用すると、チャートの特定部分の単体テストを行うことができます。関係のないコードを検索することなく、関心があるコードだけに集中できます。

Atomic サブチャートを使用するようにモデルを編集

手順 1: ステートの Atomic サブチャートへの変換

ステート A を右クリックして、[グループとサブチャート]、[Atomic サブチャート] を選択します。ステート A が Atomic サブチャートに変わり、左上隅に [Atomic] というラベルが表示されます。

手順 2: Atomic サブチャート用にスタンドアロンの C ファイルを設定

  1. サブチャート A を右クリックして [プロパティ] を選択し、このサブチャートのプロパティ ダイアログ ボックスを開きます。

  2. [コード生成関数のパッケージ化] プロパティを [Reusable function] に設定します。

  3. [コード生成ファイル名のオプション] プロパティを [User specified] に設定します。

  4. [コード生成ファイル名] ボックスで、ファイル名として saturator と入力します。

  5. [OK] をクリックします。

手順 3: コード生成レポートの設定

  1. [モデル化] タブで、[チャート プロパティ]、[モデル設定] をクリックして、[コンフィギュレーション パラメーター] ダイアログ ボックスを開きます。

  2. [コード生成] タブで、[システム ターゲット ファイル] パラメーターを ert.tlc に設定します。

  3. [コード生成]、[レポート] で、[コード生成レポートを作成] を選択します。

  4. [詳細設定パラメーター] で、[モデルからコードに] を選択します。

  5. [適用] をクリックします。

手順 4: 生成される関数名のカスタマイズ

[コンフィギュレーション パラメーター] ダイアログ ボックスの [コード生成]、[識別子] タブで、[サブシステムのメソッド] パラメーターを形式スキーム $R$N$M$F に設定します。ここで、次のようになります。

  • $R はルート モデル名。

  • $N はブロック名。

  • $M はマングル トークン。

  • $F は Atomic サブチャート用のインターフェイス関数のタイプ。

コードの生成

Embedded Coder® を使用してモデルのコードを生成するには、Ctrl+B キーを押します。

コード生成レポートには、チャートから生成されたコード (モデル ファイル) と Atomic サブチャートから生成されたコード (サブシステム ファイル) へのリンクがあります。サブチャートのコードを検証するには、saturator.c ハイパーリンクをクリックします。

31 行目は Atomic サブチャート用に生成された during 関数が名前 ex_reuse_states_A_during をもつことを示します。この名前は、[サブシステムのメソッド] 用に指定された形式スキーム $R$N$M$F に従っています。

  • ルート モデル名は ex_reuse_states です。

  • ブロック名は A です。

  • マングル トークンは空です。

  • Atomic サブチャート用のインターフェイス関数のタイプは during です。

メモ: コード生成レポートに表示される行番号は、実際に表示される行番号とは異なる可能性があります。

参考

(Simulink)

関連するトピック