Main Content

addSignal

ブロックの出力信号をモデル コード マッピングに追加する

R2020b 以降

    説明

    addSignal(coderMapObj,portHandle) は、ブロックの出力端子ハンドルによって指定された信号を指定されたモデル コード マッピングに追加します。

    この関数は、ルートレベルの Inport ブロックから発生する信号には適用されません。

    addSignal(coderMapObj,portHandle,Name=Value) は、前の構文の入力引数に加えて、1 つ以上の名前と値の引数を指定します。

    すべて折りたたむ

    プログラム インターフェイスを使用して、Simulink モデルのコード マッピング構成で信号を追加および削除します。

    コマンドが [コード マッピング] エディターにどのように反映されるかを対話的に確認するには、[信号/状態] タブが選択された状態でエディターが開いていることを確認してください。[コード マッピング] エディターを開く方法については、コード マッピング エディター – C を開くを参照してください。

    モデル CoderMapAPI を開きます。

    simulinkModel = "CoderMapAPI";
    open_system(simulinkModel);

    関数coder.mapping.api.getを使用して、モデルのコード マッピング オブジェクトを取得します。

    codeMapObj = coder.mapping.api.get(simulinkModel);

    4 つの Gain ブロックの出力端子のハンドルを取得し、変数に格納します。

    port_handle_1 = get_param(simulinkModel+"/gain_1","PortHandles").Outport;
    port_handle_2 = get_param(simulinkModel+"/gain_2","PortHandles").Outport;
    port_handle_3 = get_param(simulinkModel+"/gain_3","PortHandles").Outport;
    port_handle_4 = get_param(simulinkModel+"/gain_4","PortHandles").Outport
    port_handle_4 = 347.0042
    

    関数 addSignal を使用して、モデルのコード マッピングに信号を追加します。sig_1sig_3 のストレージ クラスを ImportedExtern に、sig_2sig_4 のストレージ クラスを ImportedExternPointer に設定します。モデルを更新します。

    addSignal(codeMapObj,[port_handle_1,port_handle_3],StorageClass="ImportedExtern")
    addSignal(codeMapObj,[port_handle_2,port_handle_4],StorageClass="ImportedExternPointer")
    set_param(simulinkModel,"SimulationCommand","update")

    slbuildコマンドを使用して、モデルからコードを生成します。

    evalc("slbuild(simulinkModel)");

    ImportedExtern および ImportedExternPointer ストレージ クラスの信号は、モデルの生成されたプライベート ヘッダー ファイルの別個のセクションで宣言されます。変数 priv_h_file にプライベート ヘッダー ファイルの名前を格納します。

    priv_h_file = fullfile(simulinkModel+"_grt_rtw",simulinkModel+"_private.h")
    priv_h_file = 
    "CoderMapAPI_grt_rtw/CoderMapAPI_private.h"
    

    信号の宣言は、ヘッダー ファイルで次のコードとして表示されます。

    /* Imported (extern) block signals */
    extern real_T sig__1;              /* '<Root>/gain_1' */
    extern real_T sig__3;              /* '<Root>/gain_3' */
    extern real_T in_port_1;           /* '<Root>/in_port_1' */
    extern real_T in_port_2;           /* '<Root>/in_port_2' */
    
    /* Imported (extern) pointer block signals */
    extern real_T *sig__2;             /* '<Root>/gain_2' */
    extern real_T *sig__4;             /* '<Root>/gain_4' */
    extern real_T *in_port_3;          /* '<Root>/in_port_3' */
    extern real_T *in_port_4;          /* '<Root>/in_port_4' */
    

    信号は、指定されたストレージ クラスに従って定義されます。

    ヘッダー ファイルを開くには、MATLAB® コマンド ウィンドウに次のコマンドを入力します。

    edit(priv_h_file)
    

    関数removeSignalを使用して、モデルのコード マッピングから最初の 2 つの信号線を削除します。モデルを更新します。

    removeSignal(codeMapObj,[port_handle_1,port_handle_2])
    set_param(simulinkModel,"SimulationCommand","update")

    slbuild コマンドを使用してモデルをリビルドします。

    evalc("slbuild(simulinkModel)"); 

    更新されたセクションは、ヘッダー ファイルで次のコードとして表示されます。

    /* Imported (extern) block signals */
    extern real_T sig__3;              /* '<Root>/gain_3' */
    extern real_T in_port_1;           /* '<Root>/in_port_1' */
    extern real_T in_port_2;           /* '<Root>/in_port_2' */
    
    /* Imported (extern) pointer block signals */
    extern real_T *sig__4;             /* '<Root>/gain_4' */
    extern real_T *in_port_3;          /* '<Root>/in_port_3' */
    extern real_T *in_port_4;          /* '<Root>/in_port_4' */
    

    削除された信号がヘッダー ファイルで表示されなくなっています。

    入力引数

    すべて折りたたむ

    関数 coder.mapping.api.get の呼び出しによって返されるコード マッピング オブジェクト (モデル コード マッピング)。

    コード マッピングに追加する信号。信号のソース ブロックの出力端子ハンドルとして指定します。複数の信号を同時に追加するには、出力端子ハンドル配列を指定します。

    例: addSignal(coderMapObj,[outport_1_Handle,outport_2_Handle])

    名前と値の引数

    オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名、Value は対応する値です。名前と値の引数は他の引数の後に配置しなければなりませんが、ペアの順序は重要ではありません。

    例: StorageClass="ExportedGlobal"

    指定された信号用に設定するストレージ クラスの名前。ストレージ クラスは、モデルの内部 Embedded Coder® ディクショナリ、またはモデルに付加されている共有 Embedded Coder ディクショナリのいずれかで定義されます。

    コード生成のための信号データ構成の詳細については、C コード生成のための信号データの構成を参照してください。

    生成されたコード内で信号データを表す変数の名前。

    データ型: char | string

    データ要素および外部コードによって読み取られるグローバル データの定義を含む C ソース ファイルのファイル名。ストレージ クラス ExportToFile および Volatile に適用されます。

    データ型: char | string

    データ要素が生成コードで呼び出す get 関数の名前。ストレージ クラス GetSet に適用されます。

    データ型: char | string

    データ要素および外部コードによって読み取られるグローバル データの宣言を含む C ヘッダー ファイルのファイル名。ストレージ クラス ExportToFileGetSetImportFromFile、および Volatile に適用されます。

    データ型: char | string

    同じモデルの階層構造の他のモデルで使用されるグローバル データを所有するモデルの名前。グローバル データ定義は、所有者モデル用に生成されたコードに含まれます。ストレージ クラス ExportToFile および Volatile に適用されます。

    データ型: char | string

    モデル コンフィギュレーション パラメーター [配列のレイアウト][行優先] に設定されている場合、生成されたコード内で多次元配列として表されるデータ要素の次元を保持するかどうかを示すフラグ。ストレージ クラス ExportToFileGetSetImportFromFileLocalizable、および Volatile に適用されます。

    データ型: logical

    データ要素が生成コードで呼び出す set 関数の名前。ストレージ クラス GetSet に適用されます。

    データ型: char | string

    コード ジェネレーターが生成されたコード内でデータ要素の構造体を識別するために使用する名前。ストレージ クラス Bitfield および Struct に適用されます。

    データ型: char | string

    Embedded Coder ディクショナリで定義されたストレージ クラス プロパティ。指定可能な値は、ストレージ クラスの定義に応じて異なります。

    Embedded Coder ディクショナリで定義されている測定サービス インターフェイスの名前を含む string または文字ベクトル。信号、状態、およびデータ ストアの測定サービス インターフェイスを構成することで、データを測定用に生成コードで保持できます。ディクショナリの既定値を使用するには、"Dictionary default" を指定します。状態のデータをコードで保持する必要がない場合は、"Not measured" を指定します。

    測定サービス インターフェイスを構成するには、サービス インターフェイス構成を定義する Embedded Coder ディクショナリがモデルに接続されていなければなりません。詳細については、Configure Measurement Service Interfaces for Signals, States, and Data Storesを参照してください。

    データ型: char | string

    バージョン履歴

    R2020b で導入