メインコンテンツ

識別子に対するカスタム命名規則の適用

この例では、信号、パラメーター、データ ストア メモリ変数などの Simulink® データ オブジェクトに対して統一された命名規則を適用する方法を示します。

モデルで Simulink パッケージの Simulink データ オブジェクトを使用している場合、生成コード内の識別子は、既定でオブジェクトの名前をコピーします。たとえば、Speed という名前の Simulink.Signal オブジェクトは、生成コード内で識別子 Speed として示されます。

Simulink データ オブジェクトに固有の命名規則を指定することで、これらの識別子を制御できます。生成コードにおける命名規則を指定する際には、識別子の命名に関する ANSI® C/C++ の規則に従います。

小文字の命名規則の適用

1. モデルを開きます。

model='NameRules';
open_system(model)

ApplyCustomNamingConventionsToIdentifiersExample.png

2. [C コード] タブを開き、[コードの表示] をクリックします。

3. [モデル コンフィギュレーション パラメーター] で、[識別子]、[詳細設定パラメーター]、[Simulink データ オブジェクトの命名規則] に移動します。このモデルでは、3 つの規則が Force lower case に設定されています。

4. モデルのコードを生成します。生成されたファイル NameRules.c では、パラメーターに小文字の識別子が使用されます。

/* Exported block parameters */
real_T f1 = 2.0;                       /* Variable: F1
                                        * Referenced by: '<Root>/Chart'
                                        */
real_T g1 = 3.0;                       /* Variable: G1
                                        * Referenced by:
                                        *   '<Root>/Chart'
                                        *   '<S3>/Gain1'
                                        */
real_T g2 = 4.0;                       /* Variable: G2
                                        * Referenced by: '<S3>/Gain2'
                                        */
real_T g3 = 5.0;                       /* Variable: G3
                                        * Referenced by: '<S2>/Gain'
                                        */

関数を使用した命名規則の適用

MATLAB® 関数を定義することで、生成コード内の識別子をカスタマイズできます。

1. データ オブジェクト名を変更して識別子を返す MATLAB 関数を作成し、その関数を作業フォルダーに保存します。たとえば、次の関数は、データ オブジェクトの名前にそのデータ オブジェクトのデータ型を追加して識別子名を返します。

function revisedName = append_text(name, object)
% APPEND_TEXT: Returns an identifier for generated
% code by appending text to a data object name.
%
% Input arguments:
% name: data object name as spelled in model
% object: information about model
%
% Output arguments:
% revisedName: altered identifier returned for use in
% generated code.
%
%
DataType = Simulink.data.evalinGlobal(object.modelName,[name,'.DataType']);

revisedName = [name,'_',DataType];

2. [モデル コンフィギュレーション パラメーター] で、[識別子]、[詳細設定パラメーター]、[Simulink データ オブジェクトの命名規則] に移動します。[パラメーター名] ドロップダウン リストで Custom MATLAB function を選択します。

3. Parameter naming の下にある [MATLAB 関数] フィールドに、MATLAB 関数を定義するファイルの名前 append_text.m を入力し、[適用] をクリックします。

Simulink data object naming rules parameters. Parameter naming is set to Custom MATLAB function and MATLAB function is set to append_text.m.

4. モデルのコードを生成します。生成コードは、NameRules.c 内のパラメーター オブジェクトの命名規則を実装します。

/* Exported block parameters */
real_T F1_auto = 2.0;                  /* Variable: F1
                                        * Referenced by: '<Root>/Chart'
                                        */
real_T G1_auto = 3.0;                  /* Variable: G1
                                        * Referenced by:
                                        *   '<Root>/Chart'
                                        *   '<S3>/Gain1'
                                        */
real_T G2_auto = 4.0;                  /* Variable: G2
                                        * Referenced by: '<S3>/Gain2'
                                        */
real_T G3_auto = 5.0;                  /* Variable: G3
                                        * Referenced by: '<S2>/Gain'
                                        */

ストレージ クラス define の命名規則の指定

ストレージ クラスを Define に設定した Simulink データ オブジェクトにのみ適用される命名規則を指定できます。

1. "コード マッピング エディター" を開きます。[C コード] タブで、[コード インターフェイス]、[既定のコード マッピング] を選択します。

2. "コード マッピング エディター"[パラメーター] タブで External Parameter Objects というラベルの付いたデータ テーブル行を見つけます。その行にある [リフレッシュ] ボタンをクリックします。

3. ベース ワークスペースに存在する Simulink.Parameter オブジェクト G1 に対応するデータ テーブルの行を見つけます。ドロップダウン メニューから、G1 のストレージ クラスを Define に設定します。

3.png

4. [Model Configuration Properties] で、[識別子]、[詳細設定パラメーター]、[Simulink データ オブジェクトの命名規則] に移動します。#define naming ドロップダウン リストから [カスタム MATLAB 関数] を選択します。

5. #define naming の下にある [MATLAB 関数] フィールドに、MATLAB 関数を定義するファイルの名前 append_text.m を入力します。

6. [パラメーター名] ドロップダウン リストで Force lower case を選択し、[適用] をクリックします。

7. モデルのコードを生成します。生成されたファイル NameRules.h では、G1G1_autoK1K1_auto で表されます。

/* Definition for custom storage class: Define */
#define G1_auto                        3.0                       /* Referenced by:
                                                                  * '<Root>/Chart'
                                                                  * '<S3>/Gain1'
                                                                  */
#define K1_auto                        6.0                       /* Referenced by: '<Root>/Chart' */

データ オブジェクトの命名規則のオーバーライド

Identifier プロパティを指定することで、個々のデータ オブジェクトに対してデータ オブジェクトの命名規則をオーバーライドできます。生成コードは、命名規則に関係なく、データ オブジェクトを表す識別子として、指定したテキストを使用します。

1. "コード マッピング エディター"[パラメーター] タブで Simulink.Parameter オブジェクト G2 に対応するデータ テーブルの行を見つけます。その行を右クリックし、[開く] を選択します。

2. プロパティ インスペクターで、[コード生成] タブに移動します。Identifier プロパティを myIdentifier として指定します。[適用] をクリックします。

3. モデルのコードを生成します。生成されたファイル NameRules.c では、G2 は変数 myIdentifier で表されます。

/* Exported block parameters */
real_T f1 = 2.0;                       /* Variable: F1
                                        * Referenced by: '<Root>/Chart'
                                        */
real_T myIdentifier = 4.0;             /* Variable: G2
                                        * Referenced by: '<S3>/Gain2'
                                        */
real_T g3 = 5.0;                       /* Variable: G3
                                        * Referenced by: '<S2>/Gain'
                                        */