このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
addSignal
説明
addSignal(
は、ブロックの出力端子ハンドルによって指定された信号を指定されたモデル コード マッピングに追加します。coderMapObj
,portHandle
)
この関数は、ルートレベルの Inport ブロックから発生する信号には適用されません。
addSignal(
は、前の構文の入力引数に加えて、1 つ以上の名前と値の引数を指定します。coderMapObj
,portHandle
,Name=Value
)
例
Simulink モデルのコード マッピング内の信号線のプログラムによる追加および削除
プログラム インターフェイスを使用して、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_1
と sig_3
のストレージ クラスを ImportedExtern
に、sig_2
と sig_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' */
削除された信号がヘッダー ファイルで表示されなくなっています。
入力引数
coderMapObj
— コード マッピング オブジェクト
CodeMapping
オブジェクト
関数 coder.mapping.api.get
の呼び出しによって返されるコード マッピング オブジェクト (モデル コード マッピング)。
portHandle
— コード マッピングに追加する信号
ブロック出力端子ハンドル | 端子ハンドル配列
コード マッピングに追加する信号。信号のソース ブロックの出力端子ハンドルとして指定します。複数の信号を同時に追加するには、出力端子ハンドル配列を指定します。
例: addSignal(coderMapObj,[outport_1_Handle,outport_2_Handle])
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで、Name
は引数名、Value
は対応する値です。名前と値の引数は他の引数の後に配置しなければなりませんが、ペアの順序は重要ではありません。
例: StorageClass="ExportedGlobal"
StorageClass
— ストレージ クラスの名前
"Auto"
| "ExportedGlobal"
| ...
指定された信号用に設定するストレージ クラスの名前。次の値のいずれかとして指定します。
"Auto"
"ExportedGlobal"
"ImportedExtern"
"ImportedExternPointer"
コード生成のための信号データ構成の詳細については、C コード生成のための信号データの構成を参照してください。
Identifier
— 変数名
文字ベクトル | string スカラー
生成されたコード内で信号データを表す変数の名前。
データ型: char
| string
バージョン履歴
R2020b で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)