Main Content

removeSignal

ブロックの出力信号をモデル コード マッピングから削除する

R2020b 以降

    説明

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

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

    すべて折りたたむ

    プログラム インターフェイスを使用して、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 の呼び出しによって返されるコード マッピング オブジェクト (モデル コード マッピング)。

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

    例: removeSignal(codeMapObj,[outport_1_Handle,outport_2_Handle])

    バージョン履歴

    R2020b で導入