主要内容

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

モデルのエントリポ@ @ント関数に対する@ @ c @ @コ@ @ド生成の構成

エントリポ@ @ント関数とは

エントリポントは,プログラムコントロル(実行)の転送が行われるコド内の場所です。主関数(main ())はC / c++プログラムへのエントリポイントであり,アプリケーションが実行を開始すると呼び出されます。たとえば,関数主要などから,他の関数への呼び出しによって,関数コ,ドにエントリポ,ントが提供されます。プログラムコントロ,ルは呼び出される関数に転送されます。関数のコ,ドが実行され,終了すると,コントロ,ルが主要または他の呼び出し関数に返されます。

モデルのコードを生成するときに,コードジェネレーターは生成されたコードを実行するために呼び出すことができる一連のエントリポイント関数を定義します。生成された関数は,外部コードまたは変更する生成された主要関数のバージョンから呼び出すことができます。

コード生成レポートの[コードインターフェイスレポート]セクションに,コードジェネレーターがモデルに対して生成するエントリポイント関数が一覧表示されます。詳細にいては,分析生成的代码接口を参照してください。

生成されたエントリポ▪▪ント関数のタ▪▪プ

コドジェネレタは以下のタプのモデル関数に対してエントリポント関数を生成します。

モデル関数のタ@ @プ モデルソ,ス名 生成された既定の関数名 説明
エクスポ,トした関数(嵌入式编码器®が必要) ExportedFunction:slIdentifier。ここで,slIdentifierはモデル内の関数呼び出し导入ブロックの名前です。 function-call-inport-block-nameまたはsignal-label(指定した場合) エクスポ,トした関数モデルの場合,サブシステムのエクスポ,ト関数。
初期化関数 初始化 模型_initialize

モデルの初期化コ,ド。アプリケーション コードの開始位置で関数を“一度”呼び出します。この関数を使用してリアルタ▪ムモデルデ▪タ構造体(rtM)をリセットしないでください。

分割関数 分区:slIdentifier。ここで,slIdentifierはモデル内のブロックから明示的に作成され,金宝app仿真软件®スケジュールエディター(P1など)に表示される分割です。 模型_stepn。ここで,nはいずれかのモデルサンプル周期に対して生成された関数を一意に識別します。 モデル分割の場合,出力および更新コ,ド。モデルコンフィギュレーション パラメーター[1 emfの出力/更新関数]はオンです(既定の設定)。
分割更新関数 PartitionUpdate:slIdentifier。ここで,slIdentifierはモデル内のブロックから明示的に作成され,金宝app仿真软件®スケジュールエディター(P1など)に表示される分割です。 模型_outputn模型_updaten。ここで,nはいずれかのモデルサンプル周期に対して生成された関数を一意に識別します。 モデル分割の場合,個別の関数内の出力および更新コ,ド。モデルコンフィギュレションパラメタ[1 emfの出力/更新関数]はオフです。
周期的なマルチタスク関数 周期:slIdentifier。ここで,slIdentifierはマルチタスクモデル(D1など)の周期レートまたは連続レートに対するサンプル時間の周期に対応する注釈です。 模型_stepn。ここで,nはいずれかのモデルサンプル周期に対して生成された関数を一意に識別します。 マルチタスクに対して構成されたレ,トベ,スモデル内のブロックの場合,出力および更新コ,ド。コ,ドジェネレ,タ,はサンプル周期ごとに関数を生成します。モデルコンフィギュレションパラメタ[1 emfの出力/更新関数]はオンです(既定の設定)。
周期的なマルチタスク更新関数 PeriodicUpdate:slIdentifier。ここで,slIdentifierはマルチタスクモデル(D1など)の周期レートまたは連続レートに対するサンプル時間の周期に対応する注釈です。 模型_outputn模型_updaten。ここで,nはいずれかのモデルサンプル周期に対して生成された関数を一意に識別します。 マルチタスクに対して構成されたレートベースモデル内のブロックの場合,個別の関数内の出力および更新コード。コ,ドジェネレ,タ,はサンプル周期ごとに出力関数と更新関数を生成します。モデルコンフィギュレションパラメタ[1 emfの出力/更新関数]はオフです。
周期的なシングルタスク関数 周期 模型_step シングルタスクに対して構成されたレ,トベ,スモデル内のブロックの場合,出力および更新コ,ド。モデルコンフィギュレションパラメタ[1 emfの出力/更新関数]はオンです(既定の設定)。
周期的なシングルタスク更新関数 PeriodicUpdate 模型_outputおよび模型_update シングルタスクに対して構成されたレートベースモデル内のブロックの場合,個別の関数内の出力および更新コード。モデルコンフィギュレションパラメタ[1 emfの出力/更新関数]はオフです。
リセット関数 重置:slIdentifier。ここでslIdentifierはモデル内のリセット関数の名前です。 模型_reset-function-name

モデルに重置功能ブロックが含まれている場合,生成されるリセットコ,ド。条件または状態をリセットするには,アプリケ,ションコ,ドから関数を呼び出します。

金宝app仿真软件的功能 金宝app仿真软件功能:slIdentifier。ここでslIdentifierはモデル内の金宝app仿真软件的功能ブロックの名前です。 グロ,バルな金宝app仿真软件的功能ブロックの函数名またはスコ,プ内の金宝app仿真软件的功能ブロックの模型_函数名 エクスポ,トした関数モデルの場合,金宝app仿真软件的功能ブロックのエクスポ,ト関数。
終了関数 终止 模型_terminate

システムをオフにするコ,ド。Ertベスのモデルの場合、モデル コンフィギュレーション パラメーター[終了関数の生成](既定で設定されている)をオフにしてこの関数の生成を抑制できます。

嵌入式编码器®ソフトウェアをお持ちの場合,外部コードと生成コードの統合を容易にして,コードの標準とガイドラインに準拠するために,コードジェネレーターがモデルまたはサブシステムから関数インターフェイスを生成する方法を構成できます。

エントリポ@ @ント関数が再利用可能かどうかを設定

既定では,コードジェネレーターは,最上位モデルに対して再利用または再呼び出し可能でないコードを生成します。エントリポ@ @ント関数にはvoid-void@ @ @ @ @ @ @ @ @ @ @ @ @ @。コードは,共有メモリ内にあるグローバルデータ構造体に直接アクセスすることで他のコードとやりとりします。

アプリケーションに再利用可能なマルチインスタンスのエントリポイント関数コードが必要な場合,一意のデータを使用して各関数(インスタンス)を呼び出すようにコードジェネレーターを構成できます。この場合,コ,ドは再呼び出し可能です。

モデルコンフィギュレ,ションパラメ,タ,の[コドンタフェスのパッケジ化]および関連するパラメ、タ、を使用して、エントリポ、ント関数が再利用可能かどうかを設定します。選択するパラメーター設定は,システムターゲットファイル,プログラミング言語および引数インターフェイスに関するコンフィギュレーション選択などの要因によって異なります。

単一▪▪ンスタンスのcエントリポ▪▪ント関数の既定の設定

既定では,GRTベースおよびERTベースのシステムターゲットファイルに対して,コードジェネレーターは単一インスタンスのCエントリポイント関数を生成します。生成コ,ドは次を実行します。

  • 引数のない実行関数を作成する(void-void)。

  • (コンパaapl .ル時に)モデルデ.タ構造体に対してメモリを静的に割り当てる。

単一インスタンスのエントリポイント関数のコードを構成するための既定のモデルコンフィギュレーションパラメーター設定は次の通りです。

再利用可能なマルチ▪▪ンスタンスcエントリポ▪▪ント関数の生成

锐信ベースまたはERTベースいずれかのシステムターゲットファイルに対して再利用可能なエントリポイント関数をCで生成するようにコードジェネレーターを構成できます。ただし,既定では,コドジェネレタが生成する関数ンタフェスはさまざまです。モデルコンフィギュレションパラメタ[言語][C]に設定され,[コドンタフェスのパッケジ化][再利用可能な関数]に設定されていると仮定すると,コードジェネレーターは各システムターゲットファイルシナリオに対してこのエントリポイント関数コードを生成します。

システムタゲットファル @ @ @ @ @ @ @ @ @ @ @ @ @ @
GRTベ,ス
  • 再呼び出し可能で,再利用可能なマルチaapl . cエントリポaapl .ント関数。

  • モデルのル,トレベルの轮廓尺寸ブロックと外港ブロックの値をリアルタ▪▪ムモデルデ▪▪タ構造体にパックします。この構造体を実行関数に引数として参照渡しします。

  • モデル▪▪ンスタンスのデ▪▪タの実行時にメモリを動的に割り当てます。mallocなどの関数を呼び出すことでメモリを割り当てます。

Ertベス
  • 再呼び出し可能で,再利用可能なマルチaapl . cエントリポaapl .ント関数。

  • 各モデルのルートレベルの尺寸ブロックと外港ブロックの値を個別の引数として実行関数に渡します。

  • モデルデ,タ構造体に対してメモリを静的に割り当てます。

ERTベースのシステムターゲットファイルを使用していて,再呼び出し可能で再利用可能なマルチインスタンスのCエントリポイント関数を生成する場合は,以下を検討します。

  • 動的なメモリ割り当てを使用して,モデルデ,タ構造体を初期化。[モデルの初期化に動的メモリ割り当てを使用]を選択します。

  • モデルのル,トレベルの轮廓尺寸ブロックの値を構造体にパックし,ル,トレベルの外港ブロックの値を2番目の構造体にパックし,構造体を実行関数に引数として参照渡し。[ル,トレベルI/Oを以下として渡す][構造体参照]に設定します。

  • モデルのル,トレベルの轮廓尺寸ブロックと外港ブロックの値をリアルタイムモデルデータ構造体にパックし,その構造体を実行関数に引数として参照渡し。[ル,トレベルI/Oを以下として渡す][モデルデ,タ構造体の一部]に設定します。

生成されたc関数ンタフェスの構成方法の選択

外部コードと生成コードの統合を容易にして,コードの標準とガイドラインに準拠するために,コードマッピングエディターまたはコードマッピングAPIを使用して,コードジェネレーターがモデルまたはサブシステムから関数インターフェイスを生成する方法を構成できます。

構成 詳細
モデル全体の関数のカテゴリ(初期化/終了,実行,共有ユティリティ)に対する既定の命名規則 配置函数的默认代码生成
個々のエントリポ▪▪ント関数(既定の命名規則をオ▪▪バ▪ラ▪▪ドする) 個々のcエントリポescント関数に対する名前の設定
基本レートのステップエントリポイント関数に対する対話的なステップ関数インターフェイス(関数名,戻り値,引数C型修飾子,名前,順序) 個々のステップ関数に対する名前と引数の設定
金宝app仿真软件功能ブロックと函数调用者ブロックに対する対話的な関数インターフェイス(関数名,戻り値,引数C型修飾子,名前,順序) 为Simulink函数和函数调用方块配置入口点函数接口金宝app

ソフトウェアインザループ(SIL)テストを使用して,カスタマイズされたエントリポイント関数のコードを検証できます。生成コドを使用してsilブロックを作成します。次にSILブロックをモデルに統合し,生成されたコードが元のモデルまたは非バーチャルサブシステムと同じ結果を提供することを検証します。詳細にいては,选择SIL或PIL方法を参照してください。

関数カテゴリに対する既定のコ,ド生成設定の構成

モデル全体の関数のカテゴリに対して既定の構成を指定することにより,Cコード生成用にモデルを準備する作業を軽減します。たとえば,関数名規則やメモリセクションにおける関数コ,ドの配置を構成できます。既定の構成を適用すると,多数の関数をもつモデルの場合は特に,時間が節約でき,コードでエラーが発生するリスクを抑えることができます。

コドジェネレタはモデル関数の次のカテゴリに対して,エントリポント関数を生成します。

関数カテゴリ 説明
初期化/終了 システムを初期化し,オフにする関数
実行 実行とリセットを開始する関数
共有ユ,ティリティ 共有ユ,ティリティ関数コ,ド

コドマッピングエディタまたはコドマッピングAPI関数setFunctionDefaultを使用して関数の既定のコ,ドマッピングを構成します。これらのインターフェイスを使用して,関数カテゴリをモデルの嵌入式编码器ディクショナリで定義された関数カスタマイズテンプレートに関連付けることができます。

アプリケーションで,メモリ内でのエントリポイント関数の配置を構成する必要がある場合は(生成コードを特定のハードウェア向けに最適化するためなど),既定のメモリセクションをモデル全体の関数のカテゴリに適用できます。コードマッピングエディターで,特定のメモリセクションを使用するように定義された関数カスタマイズテンプレートに関数カテゴリをマッピングします。を参照してください。

関数カスタマイズテンプレートが存在しない場合,嵌入式编码器ディクショナリを使用して作成できます(为软件架构定义存储类、内存段和功能模板を参照)。

関数カテゴリに対する既定の構成を設定する方法の例にいては,为数据元素和函数类别配置默认的C代码生成を参照してください。

個々のcエントリポescント関数に対する名前の設定

生成されたCコードがコードの標準およびガイドラインに準拠するように,またはそのコードが外部コードとより簡単に統合できるように,個々のエントリポイント関数の名前を設定できます。たとえば,モデルに対して生成された初期化関数にmyInitFuncと名前を付けることができます。

モデルが少なくとも次のいずれか1つの条件を満たす場合は,関数の名前を個別に設定することを検討してください。

  • 一意の命名要件をも複数の関数を使用する。

  • 関数をほとんど使用しない。

  • 関数カテゴリに対する既定の構成があり、特定の関数でこの構成をオ、バ、ラ、ドしなければならない。

コードマッピングエディターまたはコードマッピングAPI関数setFunctionを使用して,個々のステップ関数の関数名を設定します。これらのインターフェイスを使用して,関数をモデルの嵌入式编码器ディクショナリで定義された関数カスタマイズテンプレートに関連付けて,関数名を使用できます。

この例では,モデルrtwdemo_fcnprotoctrlに対する関数初始化の名前を変更する方法を示します。

  1. モデルrtwdemo_fcnprotoctrlを開き,モデルのコピ,を書き込み可能な場所に保存します。

  2. 嵌入式编码器アプリを開きます。

  3. [cコ,ド]タブで,[コ,ド,ンタ,フェ,ス][個々の要素コ,ドのマッピング]を選択します。

  4. コ,ドマッピングエディタ,の(函数)タブで,次のいずれかの方法を使用して関数名を変更します。

    • (函数名)列で,関数の名前を入力します。

    • (功能预览)列で,関数プロトタ@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @[C初始化関数名]フィ,ルドで,関数名を入力します。[適用]をクリックし,[c関数プロトタc_c_プ]フィ,ルドで変更を確認するか,(好的)をクリックしてダアログボックスを終了し,コドマッピングエディタの(功能预览)列に関数名を表示します。

    この例の場合,関数初始化の名前をfcnprotoctrl_initに変更します。

  5. モデルを保存します。

  6. コ,ドを生成します。

  7. 生成されたコ,ドで変更内容を確認します。[コ,ド]ビュ,で,関数名fcnprotoctrl_initの@ @ンスタンスを検索します。関数名が生成されたファ@ @ルrtwdemo_fcnprotoctrl.hrtwdemo_fcnprotoctrl.cに表示されます。

    • rtwdemo_fcnprotoctrl.hの場合:

      fcnprotoctrl_init(void);
    • rtwdemo_fcnprotoctrl.cの場合:

      Void fcnprotoctrl_init(Void){…}

個々のステップ関数に対する名前と引数の設定

生成されたCコードがコードの標準およびガイドラインに準拠するように,またはそのコードが外部コードとより簡単に統合できるように,仿真金宝app软件の周期関数に対して生成された個々のステップ関数の名前と引数を設定できます。ステップ関数の以下の要素をカスタマ@ @ズできます。

  • 関数名

  • 引数名

  • 引数の順序

  • 戻り値および引数デ,タの修飾子

  • 引数のバッファリング最適化

モデルが少なくとも次のいずれか1つの条件を満たす場合は,ステップ関数の名前と引数を個別に設定することを検討してください。

  • コドジェネレタが1のステップ関数を生成する周期的なシングルタスクモデルである。

  • 执行関数カテゴリには既定の構成があり,特定のステップ関数についてこの構成をオーバーライドしなければならない。

コ,ドマッピングエディタ,またはコ,ドマッピングAPI関数setFunctionを使用して,個々のステップ関数のコ,ドマッピングを構成します。これらのインターフェイスを使用して,関数をモデルの嵌入式编码器ディクショナリで定義された関数カスタマイズテンプレートに関連付けて,ステップ関数プロトタイプを完全にカスタマイズできます。

この例では,レートベースのシングルタスクモデルに対してステップ関数名と引数をカスタマイズする方法を示します。

構成ダ@ @アログボックスを開く

1.モデルrtwdemo_fcnprotoctrlを開き,モデルのコピ,を書き込み可能な場所に保存します。

2.嵌入式编码器アプリを開きます。

3.[cコ,ド]タブで,[コドンタフェス],[個々の要素コドのマッピング]を選択します。

4.コ,ドマッピングエディタ,で,(功能)タブをクリックします。

5.ステップ関数行の(功能预览)列で,プロトタイプのハイパーリンクをクリックし,[C一步関数インターフェイスの設定]ダイアログボックスを開きます。

[C步骤関数aapl . exeンタ. exeフェaapl . exeスの設定]ダaapl . exe[c関数プロトタc_c_プ]フィ,ルドに,関数プロトタ,プに行う変更のプレビュ,が表示されます。

マルチンスタンスコドを生成するように構成されているモデルにいては,最上位モデルからの再呼び出し可能なコ,ドの生成を参照してください。

関数名のカスタマ@ @ズ

1.[C Step関数c_c_ンタ.フェc_c_スの設定]ダc_c_アログボックスで,[C步骤関数名前]fcnprotoctrl_runに設定します。関数プレビューが更新され、新しい関数名が反映されます。

2.[適用]をクリックし,ダaaplアログボックスを閉じて,モデルを保存します。

3.コ,ドを生成し,名前の変更を確認します。

  • [コ,ド]タブをクリックします。[コ,ド]ビュのファルリストで,ファルrtwdemo_fcnprotoctrl.hを選択します。[検索]フィ,ルドで,コ,ド要素のリストに関数名fcnprotoctrl_runが含まれていることを確認します。宣言を表示するには,この関数名を選択します。

コ,ド内で宣言が強調表示されます。

  • ファereplicationルrtwdemo_fcnprotoctrl.cで名前の変更を検証します。ソ,スコ,ド(定義),を表示するには,[検索]フィ,ルドでfcnprotoctrl_runを選択します。

他の例にいては,個々のcエントリポescント関数に対する名前の設定を参照してください。

関数引数のカスタマ@ @ズ

グロ,バルデ,タ構造体の設定

既定では,最上位モデルまたは参照モデルはステップ関数void-voidを使用してデ,タを渡します。このタイプの関数では,共有メモリにデータ構造体として保存されたグローバルデータにアクセスし,生成されたコードで外部のコードと通信できます。

ステップ関数void-voidが含まれるようにモデルを構成するには,[C一步関数インターフェイスの設定]ダイアログボックスを開き,[ステップ関数プロトタ电子邮箱プの引数を設定]チェックボックスをオフにします。[c関数プロトタc_c_プ]プレビュ,で変更を確認します。

引数の設定

レ,トベ,スモデルのステップ関数は,引数を使用してデ,タを渡すことができます。以下の引数の設定をカスタマ@ @ズできます。

  • 戻り値

  • 型修飾子

  • 名前

  • 順序

1.[C步骤関数aapl . exeンタ. exeフェaapl . exeスの設定]ダaapl . exe。コ,ドマッピングエディタ,で,(功能)タブをクリックします。次に,ステップ関数の関数プレビュ,をクリックします。

2.[C Step関数c_c_ンタ.フェc_c_スの設定]ダc_c_アログボックスで,[ステップ関数プロトタ电子邮箱プの引数を設定]をオンにします。

3.(得到默认)をクリックします。ダイアログボックスが展開され,関数の戻り値を設定するフィールドと,入力引数および出力引数の一覧が既定の設定とともにリストされたテーブルが表示されます。

4.ステップ関数の戻り値をカスタマ@ @ズします。[c戻り引数]无效または出力引数の1のいずれかに設定します。この例では无效を選択します。

5.各引数にいて,[c型修飾子]を指定します。

型修飾子:

  • 价值: 値 (参数など)

  • 常量常量修飾子をも値(常量参数など)

  • 指向const的指针常量修飾子をも,ポンタで参照される値(常量参数など)

  • 指针:ポ.ンタ.による参照(参数など)

  • 指向Const的Const指针常量修飾子をも,ポ▪▪ンタで参照される,ポ▪▪ンタ自体である値(常量常量参数など)

参照モデルを含むモデル

  • 参照モデルの場合,ステップ関数インターフェイスでルート入力引数の型修飾子は汽车に設定されます。コ,ドジェネレ,タ,は,ソ,ス信号から常量修飾子を破棄する型キャストを生成して,。

  • 参照モデルの親の場合,ソ,ス信号の型修飾子は汽车以外の値に設定されます。この動作をオバラドするには,参照モデルに常量型修飾子を追加します。

この例では,c型修飾子を変更しません。

6.[c識別子名]列の値を編集して,引数の名前をカスタマ。

この例では,アンダースコアを削除して引数の名前を変更します(arg_In1をargIn1に変更するなど)。

7.テブルの行を新しい場所にドラッグして,引数の順序をカスタマズします。

この例では,Out1を1番目の位置に移動します。出2を3番目の位置に移動します。

8.行った変更を検証してから適用し,ダaaplアログボックスを閉じたら,モデルを保存します。

9.コ,ドを生成し,[コ,ド]ビュ,で変更内容を確認します。

  • [検索]フィ,ルドに関数fcnprotoctrl_runが含まれていることをチェックして,ファrtwdemo_fcnprotoctrl.hで変更内容を確認します。関数宣言を表示するには、関数名を選択します。

  • ファereplicationルrtwdemo_fcnprotoctrl.cで変更内容を確認します。関数の定義を表示するには、関数名fcnprotoctrl_runを選択します。

プレビュとは異なるプロトタプ

[C一步関数インターフェイスの設定]ダイアログボックスで,参照モデルの関数プロトタイプのプレビューを表示すると,生成コード内の関数プロトタイプよりも引数の数が少なく表示される場合があります。

たとえば,mdlref_counterという名前のモデルを考えます。このモデルには、入力端子(arg_input)、出力端子 (arg_output),限度値としてワ,クスペ,スパラメ,タ,の引数名lower_saturation_limitおよびupper_saturation_limitをも饱和度ブロックが含まれます。[C一步関数インターフェイスの設定]ダイアログボックスでは,関数プロトタイプのプレビューが次のように表示されます。

mdlref_counter_custom (arg_input arg_output)

生成されたコドでは,プロトタプに次のパラメタ引数が含まれています。

mdlref_counter_custom(real_T arg_input, real_T arg_output, real_T rtp_lower_saturation_limit, real_T rtp_upper_saturation_limit)

引数のバッファリングの最適化

モデルのステップ関数でI/O引数に必要なバッファリングを最適化できます。入力端子と出力端子のペアを設定する際にこれらの要件を満たすと,コードジェネレーターは対応する引数をマージして,関連付けられたバッファーを再利用します。

  • 轮廓尺寸ブロックと外港ブロックは,データ型,次元,サンプルレートを含め,同じプロパティをもたなければならない。

  • 轮廓尺寸ブロックと外港ブロックのサンプルレートはモデルの基本レートと同じでなければならない。

  • 条件付きで実行されるサブシステムでは输出端口ブロックを駆動できない。

  • 単一の非バ,チャルブロック出力で输出端口ブロックを駆動しなければならない。たとえば,複数のバッファーをマージする Mux ブロックは Outport ブロックを駆動できない。

  • [C一步関数インターフェイスの設定]ダイアログボックスで,同じC型修飾子と識別子名で尺寸と外港を設定しなければならない。

この例では,端子In3と端子Out2の引数を,モデル例rtwdemo_fcnprotoctrlに対してマ,ジする方法を示します。

1.モデルrtwdemo_fcnprotoctrlの[C Step関数]ダ。

2.[ステップ関数プロトタ电子邮箱プの引数を設定]を選択し,引数の表示を開きます。

3.端子In3Out2の場合,[c型修飾子]指针に,[c識別子名]sharedArgに設定します。

4.プレビュ,にargIn3argOut2のマ,ジされた引数が表示されることを確認します。

5.行った変更を検証してから適用し,ダaaplアログボックスを閉じたら,モデルを保存します。

6.コ,ドを生成して表示します。[コ,ド]ビュ,で,関数fcnprotoctrl_runを検索し,関数@ @ @フェ@ @ @ @ @ @ @この例では、轮廓尺寸ブロックには読み取りコード、Outport ブロックには書き込みコードで共有引数が表示されます。

Cエントリポaapl . Cント関数に対するコ. Cド生成設定のプログラムによる構成

Cコード生成に対するモデル関数の構成を自動化するには,コードマッピングのプログラミングインターフェイスを使用します。たとえば,カスタム ブロック ライブラリまたはアプリケーションのテスト環境の一部を作成する場合、プログラミング インターフェイスを使用して関数の構成を自動化します。

これらの関数の一般的な使用法には以下が含まれます。

  • 関数▪▪ンタ▪▪フェ▪▪スを作成する。

  • 既存の関数▪▪ンタ▪▪フェ▪▪スを変更する。

  • モデルの既定の構成情報を開始点として,関数@ @ @フェ@ @ @ @ @ @ @

  • モデル関数▪▪ンタ▪フェ▪▪スを既定のert関数の構成にリセットする。

Cエントリポント関数のコド生成設定をプログラムで構成する方法の例にいては,以编程方式配置默认数据和功能代码生成を参照してください。この例では、関数カテゴリと個々の関数に対する既定の設定の構成方法を示します。

生成されたエントリポ▪▪ント関数と▪▪ンタ▪フェ▪▪スをとる方法

  1. モデルのコ,ドが生成された後,[コ,ド]ビューを使用して生成されたエントリポイント関数,および該当する場合は,外部の入力端子と出力端子を表す変数を確認します。

  2. モデルのエントリポ▪▪ント関数を宣言する生成されたヘッダ▪▪ファ▪▪ルを含める# includeステ,トメントを外部コ,ドに追加します。

  3. 生成されたファ@ @ルrtwtypes.hを含める# includeステ,トメントを追加します。このファ电子邮箱ルは型定義,#定义ステ,トメント,および列挙型を提供します。

  4. タ,ゲット固有のデ,タ構造体とハ,ドウェア(adcやdacなど)を初期化します。

  5. 該当する場合は,再利用可能なモデルの各。

  6. 該当する場合は,モデルの输入ブロックを表す生成された変数に入力デ,タを書き込みます。

  7. 生成されたエントリポesc escント関数を呼び出し,関数rt_OneStepの使用を設定します。

  8. 該当する場合は,モデルの输出端口ブロックを表す生成された変数からデ,タを読み取ります。

詳細にいては,将生成的独立可执行程序部署到目标硬件を参照してください。

C関数ンタフェスのカスタマズの制限事項

次の制限事項は生成されたc関数スのカスタマ。

  • モデルコンフィギュレションパラメタ[1 emfの出力/更新関数]を選択しなければなりません。

  • マルチレ,トモデルはサポ,トされていますが,シングルタスクのモデルを構成しなければなりません。

  • 默认的ストレージクラスを使用するようにルートレベルの尺寸および外港を構成しなければなりません。

  • 関数▪▪ンタ▪▪フェ▪▪スをカスタマ▪▪ズする場合は,独自のカスタム主要プログラムを提供しなければなりません。MathWorks®が提供する静的なrt_main.cを使用して関数▪▪ンタ▪▪フェ▪▪スを構成することはできません。既定以外の関数ンタフェスの構成を指定すると,生成されたコドと既定の静的なrt_main.cとの間に不一致が発生します。

  • 再利用できない関数によって実装されたサブシステムが1つ以上の尺寸の値を使用していない限り,コードジェネレーターはモデルのルート尺寸に対するデータ構造体を削除します。

  • 垫ファイルのログを有効にするか,1つ以上の外港のサンプル時間が基礎的な基本レート(定数のレートも含め)ではない場合,コードジェネレーターはモデルのルート外港に対するデータ構造体を削除します。

  • 子系统ブロックをコピーして新しいモデル内または同じモデル内でブロックを作成すると,元の子系统ブロックの関数インターフェイス情報は新しい子系统ブロックにコピーされません。

  • Stateflow®をお持ちの場合,モデルのルート尺寸の値を使用するかモデルのルート尺寸の値を使用するサブシステムを呼び出すStateflowチャートに対しては,次のいずれかを実行してコードを生成します。

    • Stateflowチャ,トで,[初期化時に指定されたチャ,トを実行(入力)]チェックボックスをオフにします。

    • 関数状态流を再利用できない関数にします。

    • 金宝app®信号转换ブロックをル,ト输入端口の直後に挿入します。信号转换ブロックパラメ,タ,のダ,['ブロック削減'の最適化からこのブロックを排除する]を選択します。

  • モデルのルート尺寸の値がSimscape™変換ブロックに接続されている場合,仿真软件金宝app信号转换ブロックをル,トInportとSimscape変換ブロックの間に挿入します。信号转换ブロックパラメ,タ,のダ,['ブロック削減'の最適化からこのブロックを排除する]を選択します。

  • 関数インターフェイスで構成された参照モデルをビルドする際は,バーチャルバスを参照モデルに対する入力または出力として使用しないでください。代わりに,非バ,チャルバスを使用します。

  • C関数ンタフェスが既定ではない場合,その値はモデルコンフィギュレションパラメタ[コ、ド生成で固定サ、ズのスカラ、のル、ト入力を値渡しで行う]で無視されます。詳細にいては,コド生成で固定サズのスカラのルト入力を値渡しで行うを参照してください。

参考

|

関連するトピック