メインコンテンツ

コード置換ライブラリ開発のクイック スタート - Simulink

この例では、数学関数 sin の置換コードを生成するためのエントリを含むコード置換ライブラリを開発する方法を示します。コード置換ツールを使用します。

前提条件

この例を実行するには、次のソフトウェアをインストールします。

  • MATLAB®

  • MATLAB Coder™

  • Simulink®

  • Simulink Coder™

  • Embedded Coder®

  • コンパイラ

MathWorks® 製品をインストールする手順の詳細については、MATLAB のインストール ドキュメンテーションを参照してください。MATLAB がインストールされており、他にインストールされている MathWorks 製品を確認する場合は、コマンド ウィンドウに ver と入力します。

サポートされているコンパイラのリストについては、https://www.mathworks.com/support/compilers/current_release/を参照してください。

コード置換ツールを開く

1. MATLAB セッションを開始します。

2. 空のフォルダーを作成するか空のフォルダーに移動 (cd) します。

3. コマンド プロンプトで、crtool コマンドを入力します。Code Replacement Toolウィンドウが開きます。

コード置換テーブルの作成

1. Code Replacement Toolウィンドウで、[ファイル]、[新しいテーブル] を選択します。

2. 右側のペインで、テーブルに crl_table_sinfcn の名前を付けて、[適用] をクリックします。テーブルを保存すると、テーブルは crl_table_sinfcn.m のファイル名で保存されます。

crtool_qs_name.png

テーブル エントリの作成

double 入力と double 出力を使用する関数 sin をカスタム実装関数にマッピングするテーブル エントリを作成します。

1. 左側のペインで、テーブル crl_table_sinfcn を選択します。次に、[ファイル]、[新しいエントリ]、[関数] を選択します。エントリは中央のペインに、最初は名前なしで表示されます。

2. 中央のペインで、新しいエントリを選択します。

3. 右側のペインの [マッピング情報] タブで、[関数] メニューから sin を選択します。

4. [アルゴリズム]Unspecified に設定し、[概念関数] グループのパラメーターは既定値のままにします。

5. [置換関数] グループで、置換関数に sin_dbl の名前を付けます。

6. [置換関数] グループの他のパラメーターは既定値のままにします。

7. [適用] をクリックします。[関数シグネチャのプレビュー] が更新されて、指定された置換関数名が反映されます。

8. [マッピング情報] タブの下部までスクロールし、[エントリの検証] をクリックします。エントリが検証されます。

次の図は、完了したマッピング情報を示しています。

crtool_qs_mi_sindbl.png

置換コードのビルド情報の指定

1. [ビルド情報] タブの [実装ヘッダー ファイル] パラメーターに、sin_dbl.h と入力します。

2. 他のパラメーターは既定値のままにします。

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

4. オプションで、エントリを再検証できます。[マッピング情報] タブに戻り、[エントリの検証] をクリックします。

別のテーブル エントリの作成

single 入力と double 出力を使用する関数 sinsin_sgl という名前のカスタム実装関数にマッピングするエントリを作成します。sin_dbl エントリをコピーして貼り付け、エントリを作成します。

1. 中央のペインで、sin_dbl エントリを選択します。

2. [編集]、[コピー] を選択します。

3. [編集]、[貼り付け] をクリックします。

4. [マッピング情報] タブの [概念関数] セクションで、入力引数 u1 のデータ型を single に設定します。

5. [置換関数] セクションで、関数に sin_sgl の名前を付けます。入力引数 u1 のデータ型を single に設定します。

6. [適用] をクリックします。[関数シグネチャのプレビュー] に変更が表示されます。

7. [ビルド情報] タブの [実装ヘッダー ファイル] パラメーターに、sin_sgl.h と入力します。他のパラメーターは既定値のままとし、[適用] をクリックします。

コード置換テーブルの検証

1. [アクション]、[テーブルの検証] を選択します。

2. ツールでエラーが報告された場合は、エラーを修正し、検証を再実行します。エラーが報告されなくなるまで、エラーの修正と検証を繰り返します。次の図は、検証レポートを示しています。

Table of code replacement entries showing two validated entries.

コード置換テーブルの保存

コード置換テーブルを作業フォルダー内の MATLAB ファイルに保存します。[ファイル]、[テーブルの保存] を選択します。既定では、テーブル名を使用してファイルに名前を付けます。この例では、テーブルはファイル crl_table_sinfcn.m に保存されます。

コード置換テーブル定義のレビュー

コード置換テーブル定義の MATLAB コードのレビューを検討してください。ツールを使用してテーブル定義ファイルの初期バージョンを作成した後に、テキスト エディターでファイルを更新、拡張またはコピーできます。

定義をレビューするには、MATLAB または別のテキスト エディターで、ファイル crl_table_sinfcn.m を開きます。

登録ファイルの生成

コード置換テーブルを使用する前に、テーブルをコード置換ライブラリの一部として登録しなければなりません。コード置換ツールを使用して登録ファイルを生成します。

1. コード置換ツールで、[ファイル]、[登録ファイルの生成] を選択します。

2. [登録ファイルの生成] ダイアログ ボックスで、次の図に一致するダイアログ ボックス フィールドを編集し、[OK] をクリックします。

Generate registration file dialog box.

3. [登録ファイルを保存する場所の選択] ダイアログ ボックスで、登録ファイルの場所を指定します。場所は MATLAB パス上にあるか、現在の作業フォルダー内になければなりません。ファイルを保存します。ファイルを rtwTargetInfo.m として保存します。

コード置換テーブルの登録

コマンド プロンプトで、次のように入力します。

RTW.TargetRegistry.getInstance('reset');

コード置換のレビューとテスト

コード置換ライブラリを適用します。コード ジェネレーターで想定どおりにコード置換が行われているか確認します。

1. エラーをチェックします。コマンド ラインで、テーブル定義ファイルを呼び出します。以下に例を示します。

tbl = crl_table_sinfcn

tbl =

TflTable with properties:
               Version: '1.0'
       ReservedSymbols: []
   StringResolutionMap: []
            AllEntries: [2x1 RTW.TflCFunctionEntry]
           EnableTrace: 1|

定義ファイルにエラーがある場合、呼び出しによってメッセージがトリガーされます。エラーを修正して、もう一度試します。

2. Code Replacement Viewerを使用してコード置換エントリをチェックします。以下に例を示します。

crviewer('Sin Function Example')

ビューアーで、テーブルのエントリを選択し、内容が想定どおりであるか確認します。ビューアーを使って、次のような問題を検出できます。

  • 不適切な引数の順序。

  • コード ジェネレーターで想定される内容と一致しない、概念引数の名前。

  • 不適切な優先順位設定。

3. 既存のモデルを指定するか、関数 sin に設定された Trigonometric ブロックを含むモデルを作成します。以下に例を示します。

Simulink model with one input, one output, and one Trigonometric Function block that uses the sin function.

4. モデルを開き、Embedded Coder (ERT ベース) のターゲットを使用してコード ジェネレーター用に設定します。

5. ライブラリが、モデル コンフィギュレーション パラメーターの [コード生成]、[インターフェイス]、[コード置換ライブラリ] で使用できるオプションとしてリストされているか確認します。リストされている場合は、そのライブラリを選択します。

Code replacement libraries configuration parameter set to Sin Function Example.

リストされていない場合は、登録ファイル rtwTargetInfo.m を開きます。ファイルを作成したときに、正しいコード置換テーブル名を入力したか確認します。選択したライブラリにカーソルを合わせると、ヒントが表示されます。このヒントには、ライブラリの説明や、ライブラリに含まれるテーブルのリストなど、コード置換ライブラリの登録ファイルから取得された情報が含まれます。

6. パラメーターをすばやく検索するには、[コンフィギュレーション パラメーター] ダイアログ ボックスの [検索] フィールドに、パラメーター名を入力します。次のパラメーターを選択して、コード置換解析用にコード生成レポートを設定します。

  • コード生成レポートを作成

  • レポートを自動的に開く

  • コードからモデルに

  • モデルからコードに

  • コード置換をトリガーするブロックをまとめる

  • コメントを含める

  • Simulink ブロックのコメント

  • Simulink ブロックの説明

7. コードのみが生成されるようモデルを設定します。実行可能プログラムをビルドする前に、コード ジェネレーターでコードが想定どおり置換されているか確認します。

8. モデルのコードを生成します。

9. コード生成レポートの [コード置換レポート] セクションでコード置換の結果を確認します。

Code replacements report for my_sin_func.

レポートには、コード ジェネレーターで一致が検出され、関数 sin_dbl の置換コードが適用されたことが示されています。

10. コード置換を確認します。モデル ウィンドウで、Trigonometric Function ブロックを右クリックします。[C/C++ コード]、[C/C++ コードに移動] を選択します。コード生成レポートが開き、my_sin_func.c のコード置換が強調表示されます。この例では、コード ジェネレーターで sinsin_dbl に置き換えられています。

Generated code in the code generation report. The code for the trigonometric function is highlighted showing the call to the implementation function sin_dbl.

詳細

参考

トピック