構造体形式かつ double 型以外のデータタイプを持つ変数を、 Simulink.Parameter オブジェクトと関連付​け、コード生成するに​はどのようにすれば良​いですか?

5 次查看(过去 30 天)
A.x = uint16(10) 、 A.y = uint16(15) ... という構造体の各フィールドに double 型以外の値を格納しています。
この構造体を Simulink.Parameter や mpt.Parameter オブジェクトと関連付けし
てコード生成したい場合、どのようにすれば良いか教えて下さい。

采纳的回答

MathWorks Support Team
Simulink 7.5 (R2010a) 以降では、構造体全体をパラメータオブジェクトにすることができます。構造体の各要素が double 型以外の値を有する場合は、さらに バスオブジェクトを定義し、バス要素を元々の構造体要素のデータ型と一致するように設定しておき、パラメータオブジェクトの Datatype フィールドに定義したバスオブジェクトを設定することで可能です。
手順は次のようになります。
%%元々の構造体↓
A.x = uint16(10);
A.y = uint16(15);
% バスオブジェクト定義
Sec_Bus = Simulink.Bus;
sig1 = Simulink.BusElement;
sig1.Name = 'x'; % ・・・ パラメータである構造体の要素(フィールド)名と同名にする
sig1.DataType = 'uint16';
sig1.Dimensions = 1;
sig2 = Simulink.BusElement;
sig2.Name = 'y'; % ・・・ パラメータである構造体の要素(フィールド)名と同名にする
sig2.DataType = 'uint16';
sig2.Dimensions = 1;
Sec_Bus.Elements = [sig1 sig2]; % バスオブジェクトに上述バス要素 (複数) を指定
% パラメータオブジェクト定義
p= mpt.Parameter;
p.DataType = 'Bus:Sec_Bus'; % ・・・ ※ここでデータタイプを"バスオブジェクト"とする
p.Value = A;
p.RTWInfo.StorageClass = 'Custom';
p.RTWInfo.CustomStorageClass = 'Const';
A =p;
clear p;
なお、 Simulink モデル上の Constant や Gain の値設定は、A.x や A.y のままとします。
このようにすることで、 Simulink のパラメータオブジェクトと任意のデータ型の要素を持つ構造体を関連付けることができ、コード生成時に構造体をチューナブルとすることができます。参考モデルを本ページ下部の関連ドキュメントよりダウンロードし、コード生成することで確認することができます。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 コード生成 的更多信息

标签

尚未输入任何标签。

产品


版本

R2010b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!