構造体形式かつ double 型以外のデータタイプを持つ変数を、 Simulink.Parameter オブジェクトと関連付け、コード生成するにはどのようにすれば良いですか?
5 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
MathWorks Support Team
le 25 Oct 2013
Réponse apportée : MathWorks Support Team
le 25 Oct 2013
A.x = uint16(10) 、 A.y = uint16(15) ... という構造体の各フィールドに double 型以外の値を格納しています。
この構造体を Simulink.Parameter や mpt.Parameter オブジェクトと関連付けし
てコード生成したい場合、どのようにすれば良いか教えて下さい。
Réponse acceptée
MathWorks Support Team
le 25 Oct 2013
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 commentaires
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur コード生成 dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!