このペ,ジの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
“キャリブレションパラメタ”はグロ,バルメモリに保存される値です。アルゴリズムは計算で使用するためにこの値を読み取りますが,書き込みは行いません。キャリブレ,ションパラメ,タ,はアルゴリズムの実行中に保存された値を変更できるため,"調整可能"です。キャリブレ,ションパラメ,タ,を作成することで以下が可能です。
実行中にパラメタを調整して信号値をモニタし,最適なパラメタ値を特定する。
メモリに保存されたパラメ,タ,値を上書きし,アルゴリズムを異なる実行条件に効率的に適応させる。たとえば,各車両のエンジン制御ユニットに異なるパラメーター値を保存して,質量の異なる複数の車両に同じ制御アルゴリズムを使用できます。
金宝app®で,キャリブレ,ションパラメ,タ,を表す金宝app仿真软件。参数
オブジェクトを作成します。パラメ,タ,オブジェクトを使用して,获得ブロックの[ゲ电子邮箱ン]パラメ,タ,など,ブロックパラメ,タ,値を設定します。生成されたコードでパラメーター オブジェクトの表現を制御するには、ストレージ クラスをオブジェクトに適用します。
たとえばラピッドプロトタイピングなど,生成されたコードでブロックパラメーターに既定でアクセスできるようにするには,[既定のパラメ,タ,動作](既定のパラメ,タ,動作を参照)を[調整可能]
に設定します。詳細にいては,生成コ,ド内の変数の保持を参照してください。
以下の例では,生成されたコードでブロックパラメーターをグローバル変数として表すことで,調整可能なパラメーターデータを作成する方法を示します。
パラメ,タ,オブジェクトを使用したブロックパラメ,タ,の構成
モデル例rtwdemo_paraminline
を開き,生成されたブロック名を表示するよう設定します。
load_system (“rtwdemo_paraminline”) set_param (“rtwdemo_paraminline”,“HideAutomaticNames”,“关闭”) open_system (“rtwdemo_paraminline”)
[モデル化]タブで[モデルデ,タエディタ,]をクリックします。
モデルデ,タエディタ,で,[パラメ,タ,]タブを検査します。
モデルでG1
获得ブロックをクリックします。モデルデ,タエディタ,で,ブロックの(获得)パラメ,タ,に対応する行が強調表示されます。
モデルデ,タエディタ,の[値]列で,ゲ2
からmyGainParam
に変更します。
myGainParam
の横にあるアクションボタン(3の縦向きのドット)をクリックし,[作成]を選択します。
创建新数据ブロックのダ电子邮箱アログボックスで,[値]を金宝appSimulink.Parameter (2)
に設定します。[作成]をクリックします。金宝app仿真软件。参数
オブジェクトmyGainParam
は,パラメ,タ,値2
をモデルワ,クスペ,スに保存します。
myGainParamダaapl .アログボックスの[コ,ド生成]タブで,[编码器アプリでの構成]をクリックします。
コ,ドマッピングエディタ,で,myGainParam
の[ストレ,ジクラス]をExportedGlobal
に設定します。このストレージクラスにより,パラメーターオブジェクトは調整可能なグローバル変数として生成されたコードに表示されます。
あるいは,パラメーターオブジェクトを作成してモデルを構成するには,コマンドプロンプトで以下のコマンドを使用します。
set_param (“rtwdemo_paraminline / G1”,“获得”,“myGainParam”MWS = get_param(“rtwdemo_paraminline”,“modelworkspace”);mws.assignin (“myGainParam”S金宝appimulink.Parameter (2));Cm = code .mapping.utils.create(“rtwdemo_paraminline”);setModelParameter(厘米,“myGainParam”,“StorageClass”,“ExportedGlobal”);
モデルデ,タエディタ,を使用して,G2
获取ブロック用のパラメ,タ,オブジェクトmyOtherGain
を作成します。ストレ,ジクラスExportedGlobal
を適用します。
あるいは,以下のコマンドをコマンドプロンプトで使用します。
set_param (“rtwdemo_paraminline / G2”,“获得”,“myOtherGain”) mws.assignin (“myOtherGain”S金宝appimulink.Parameter (2));setModelParameter(厘米,“myOtherGain”,“StorageClass”,“ExportedGlobal”);
コ,ドの生成と検査
モデルからコ,ドを生成します。
slbuild (“rtwdemo_paraminline”)
###开始构建过程:rtwdemo_paraminline构建过程成功完成:rtwdemo_paraminline构建摘要构建的顶级模型目标:模型动作重建原因==================================================================================================== rtwdemo_paraminline生成和编译的代码生成信息文件不存在。构建1 / 1模型(0个模型已经更新)构建持续时间:0h 0m 9.502s
生成されたrtwdemo_paraminline.h
ファ@ @ルには,グロ@ @バル変数myGainParam
とmyOtherGain
の走读生
宣言が含まれます。このヘッダファルをンクルド(# include
)することで,実行時にコ,ドによる変数の値の読み取りと書き込みを可能にします。
文件= fullfile(“rtwdemo_paraminline_grt_rtw”,“rtwdemo_paraminline.h”);rtwdemodbtype(文件,...'extern real_T myGainParam;',引用:“<根>/G2””, 1, 1)
extern real_T myGainParam;/*变量:myGainParam *引用:'/G1' */ extern real_T myOtherGain;/*变量:myOtherGain *引用对象:' /G2'
rtwdemo_paraminline.c
ファ电子邮箱ルは,myGainParam
およびmyOtherGain
にメモリを割り当て初期化します。
文件= fullfile(“rtwdemo_paraminline_grt_rtw”,“rtwdemo_paraminline.c”);rtwdemodbtype(文件,...'/*导出块参数*/',引用:“<根>/G2””, 1, 1)
*/ real_T myGainParam = 2.0;/*变量:myGainParam *引用by: '/G1' */ real_T myOtherGain = -2.0;/*变量:myOtherGain *引用对象:' /G2'
モデルの関数一步
で生成されたコ,ドのアルゴリズムは計算にmyGainParam
とmyOtherGain
を使用します。
rtwdemodbtype(文件,...'/*模型阶跃函数*/',/*模型初始化函数*/, 1,0)
/*模型步函数*/ void rtwdemo_paraminline_step(void){/*输出端口:'<根>/Out1'合并:*增益:'<根>/G1' *增益:'<根>/G2' *输入:'<根>/In1' * Sum: '<根>/Sum' */ rtwdemo_paraminline_Y。Out1 = myGainParam * rtwdemo_paraminline_U。In1 + myOtherGain * -75.0;}
ブロックパラメーターの値の設定に数値変数を使用する場合,ストレージクラスを変数に適用することはできません。回避策として,変数をパラメーターオブジェクトに変換し,ストレージクラスをそのオブジェクトに適用することができます。変数をパラメ,タ,オブジェクトに変換するには,以下の手法のいずれかを選択します。
モデルデ,タエディタ,の[パラメ,タ,]タブで,[ビュ,の変更]が[コ,ド]
に設定された状態で,変数に対応する行を見けます。(存储类)列で,ドロップダウンリストから[转换为参数对象]
を選択します。モデルデ,タエディタ,が変数をパラメ,タ,オブジェクトに変換します。その後(存储类)列を使用して,ストレ,ジクラスをオブジェクトに適用します。
この手法はモデルエクスプロ,ラ,でも使用できます。
デ、タオブジェクトウィザ、ドを使用します(デ,タオブジェクトウィザ,ドを使用したモデルのデ,タオブジェクトの作成を参照)。ウィザ,ドで[パラメ,タ,]チェックボックスをオンにします。ウィザ,ドが変数をオブジェクトに変換します。次に,そのオブジェクトにストレージクラスを,たとえばモデルデータエディターまたはモデルエクスプローラーを使用して適用します。
この例では,生成されたコードでキャリブレーションパラメーターを出力するストレージクラスを作成する方法を示します。ストレ,ジクラスは,各パラメ,タ,オブジェクト(金宝app仿真软件。参数
)が,キ,ワ,ドやプラグマなどの特殊な装飾をも,グロ,バル変数として表示されるようにします。
生成されたコ,ドで,キャリブレ,ションパラメ,タ,は,calPrms.c
という名前のファ电子邮箱ルで定義され,calPrms.h
で宣言されたグロ,バル変数として表示されなければなりません。変数の定義は,次の定義のようにしなければなりません。
#pragma SEC(CALPRM) const volatile float param1 = 3.0F;const volatile float = 5.0F;const volatile float = 7.0F;# pragma交会()
変数にはキ,ワ,ド常量
およびキ,ワ,ド挥发性
を使用します。プラグマ# pragma交会(CALPRM)
は,メモリ内での変数の配置を制御します。プラグマを実装するには、変数定義が連続したコードのブロックに表示されなければなりません。
また,生成されたコ,ドには,各パラメ,タ,のa2l
)記述が含まれていなければなりません。
ここで,サンプルパッケ,ジ+金宝app SimulinkDemos
をコピ,して現在のフォルダ,にパッケ,ジを作成します。このパッケ,ジには,後でモデルのデ,タ要素にストレ,ジクラスを適用するのに使用する参数
クラスおよび信号
クラスの定義が保存されます。後で,このパッケ,ジにはストレ,ジクラスと関連するメモリセクションの定義も保存されます。
現在のmatlab®フォルダ,を書き込み可能な場所に設定します。
+金宝app SimulinkDemos
パッケ,ジフォルダ,を現在のフォルダ,にコピ,します。コピに+ myPackage
という名前を付けます。
拷贝文件(fullfile (matlabroot,...“工具箱”,“金宝app模型”,“simdemos”,“dataclasses”,' 金宝app+ SimulinkDemos '),...' + myPackage ',“f”)
+ myPackage
フォルダ内でファルSignal.m
に移動し,信号
クラスの定義を編集します。
メソッドsetupCoderInfo
を定義する方法
セクションのコメントを解除します。関数useLocalCustomStorageClasses
への呼び出しで,“packageName”
を“myPackage”
に置き換えます。完了すると,セクションは以下のようになります。
方法函数setupCoderInfo (h)使用此包中的自定义存储类useLocalCustomStorageClasses (h,“myPackage”);结束结束%的方法
ファ@ @ルを保存して閉じます。
+ myPackage
フォルダ内でファルParameter.m
に移動し,参数
クラスの定義を編集します。メソッドsetupCoderInfo
を定義する方法
セクションのコメントを解除し,“packageName”
を“myPackage”
で置き換えます。
ファ@ @ルを保存して閉じます。
現在のフォルダ,を,パッケ,ジフォルダ,+ myPackage
を含むフォルダ,に設定します。
カスタムストレジクラスデザナを開きます。
cscdesigner (“myPackage”)
カスタムストレジクラスデザナの[メモリセクション]タブで[新規]をクリックします。
新規のメモリセクションで,次の表に従ってプロパティを設定します。
プロパティ | 値 |
---|---|
名字 | CalMem |
ステ,トメントを囲む文字 | 変数のグル,プ |
ステ,トメントの前 | # pragma交会(CALPRM) |
ステ,トメントの後 | # pragma交会() |
常量 | 選択 |
挥发性 | 選択 |
[適用]をクリックします。
[カスタムストレ,ジクラス]タブで[新規]をクリックします。
新規のストレ,ジクラスで,次の表に従ってプロパティを設定します。
プロパティ | 値 |
---|---|
名前 | CalParam |
信号 | クリア |
デ,タスコ,プ | 出口 |
ヘッダファル | calPrms.h |
定義ファ@ @ル | calPrms.c |
メモリセクション | CalMem |
(好的)をクリックします。変更を保存する確認のメッセ,ジに対して[はい]をクリックします。
myPackage。参数
への設定ストレージクラスの適用を簡単にするために,モデルエクスプローラーを使用して既定のパラメーターオブジェクトを金宝app仿真软件。参数
からmyPackage。参数
に変更します。
コマンドプロンプトでモデルエクスプロ,ラ,を開きます。
daexplr
モデルエクスプロ,ラ,の[モデルの階層構造]ペ电子邮箱ンで,(基础工作)を選択します。
モデルエクスプロラのルバで,[添加Si金宝appmulink参数]ボタンの横にある矢印をクリックします。ドロップダウンリストで[クラスリストのカスタマ电子邮箱ズ]を選択します。
[クラスリストのカスタマ电子邮箱ズ]ダ电子邮箱アログボックスで,(参数类)の下で[myPackage。参数)の横にあるチェックボックスをオンにします。(好的)をクリックします。
モデルエクスプロラのルバで,[添加Si金宝appmulink参数]ボタンの横にある矢印をクリックします。ドロップダウンリストで(myPackage参数)を選択します。
myPackage。参数
オブジェクトがベ,スワ,クスペ,スに表示されます。このオブジェクトは削除できます。
ここで,モデルデータエディターのようなツールを使用してパラメーターオブジェクトを作成すると,仿真软金宝app件は金宝app仿真软件。参数
オブジェクトの代わりにmyPackage。参数
オブジェクトを作成します。
モデル例rtwdemo_roll
で,BasicRollMode
サブシステムはpidコントロ,ラ,を表します。P, i,およびdパラメタをキャリブレションパラメタとして構成します。
モデルを開きます。
rtwdemo_roll
モデルでBasicRollMode
サブシステム内に移動します。
アプリギャラリ,で(嵌入式编码)をクリックします。
ブロック線図の下で,[モデルデ,タエディタ,]タブを選択してモデルデ,タエディタ,を開きます。
モデルデ,タエディタ,で,[パラメ,タ,]タブを選択してブロック線図を更新します。
これにより,获得ブロックによって使用されているワークスペース変数に対応する行がデータテーブルに表示されます(コントローラーのP,我およびDパラメーターを表します)。
モデルデ,タエディタ,で,[コンテンのフィルタ]ボックスの横にある[選択を使用してフィルタ,処理します]ボタンを有効にします。
モデルで3の获得ブロックを選択します。
[コンテンのフィルタ]ボックスに”模型的工作空间
と入力します。
获得ブロックが使用する変数はモデルワ,クスペ,ス内にあります。
デ,タテ,ブルで3行を選択し,行の(存储类)列で[转换为参数对象]
を選択します。
モデルデ,タエディタ,により,ワ,クスペ,ス変数がmyPackage。参数
オブジェクトに変換されます。これで,ストレ,ジクラスをオブジェクトに適用できます。
行の[ストレ,ジクラス]列で,(CalParam)
を選択します。
a2l
ファ@ @ルが生成されるようモデルを設定します。[コンフィギュレ,ションパラメ,タ,]、[コ,ド生成]、[@ @ @ @ @ @ @ @ @ @ @ @]、[asap2 @ @ンタ@ @フェ@ @ス]を選択します。
モデルからコ,ドを生成します。
コ,ド生成レポ,トで,calPrms.c
ファ@ @ルを検査します。このファルは,キャリブレションパラメタを定義します。
/*导出数据定义*/ #pragma SEC(CALPRM) /*自定义存储类定义:CalParam */ const volatile real32_T disgain = 0.75F;real32_T intGain = 0.5F;const volatile real32_T rateGain = 2.0F;# pragma交会()
ファereplicationルcalPrms.h
はパラメ,タ,を宣言します。
@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @rtwdemo_roll.a2l
を検査します。ファereplicationルには、たとえばdispGain
など,各パラメ,タ,に関する情報が含まれます。
/begin CHARACTERISTIC /*名称*/ distgain /*长标识符*/ "" /*类型*/ VALUE /* ECU地址*/ 0x0000 /* @ECU_Address@dispGain@ */ /*记录布局*/ Scalar_FLOAT32_IEEE /*最大差值*/ 0 /*转换方法*/ rtwdemo_roll_CM_single /*下限*/ -3.4E+38 /*上限*/ 3.4E+38 /end CHARACTERISTIC . /
いくつかのシステム定数(マクロ)から計算された値を使用して,調整可能なパラメーターを初期化するコードを生成できます。たとえば,マクロnumVessels
とvesInitVol
から計算された値を使用して,調整可能なパラメ,タ,totalVol
を初期化するこのコ,ドを生成できます。
#define numvessel 16 #define vesInitVol
この初期化の手法によって調整可能なパラメーターとシステム定数との間の数学的関係が保持され,生成されたコードの読みやすさが向上し,より簡単に維持できるようになります。このコ,ドを生成するには,次のようにします。
システム定数を表現するパラメ,タ,オブジェクトを作成します。
numvessel = S金宝appimulink.Parameter(16);vesInitVol = 金宝appSimulink.Parameter(18.2);
ストレ,ジクラス定义
を使用し,生成されたコ,ドにマクロを出力するオブジェクトを構成します。
numVessels.CoderInfo.StorageClass =“自定义”;numVessels.CoderInfo.CustomStorageClass =“定义”;vesInitVol.CoderInfo.StorageClass =“自定义”;vesInitVol.CoderInfo.CustomStorageClass =“定义”;
調整可能なパラメ,タ,を表す別のパラメ,タ,オブジェクトを作成します。ストレ,ジクラスExportedGlobal
を使用し,生成されたコ,ドにグロ,バル変数を出力するオブジェクトを構成します。
totalVol = 金宝appSimulink.Parameter;totalVol.CoderInfo.StorageClass =“ExportedGlobal”;
式numvessel * vesInitVol
を使用してtotalVol
の値を設定します。生成されたコードで式を保持するように指定するには、関数slexpr
を使用します。
totalVol。值= slexpr(' numvessel * vesInitVol');
totalVol
を使用してモデルのブロックパラメ,タ,値を設定します。モデルから生成するコードは,システム定数に基づいた値を使用して調整可能なパラメーターを初期化します。
金宝app仿真软件。参数
オブジェクトの値を設定する式の使用の詳細と制限にいては,数式を使用した変数値の設定を参照してください。
パラメーターオブジェクトは,ベースワークスペース,モデルワークスペースまたはデータディクショナリで作成できます。ただし,matlabセッションを終了すると,ベ,スワ,クスペ,ス内の変数は削除されます。パラメ,タ,オブジェクトおよびモデルが使用するその他の変数の保存場所を決定するには,金宝appSimulinkモデルの変数とオブジェクトの保存場所の決定を参照してください。
パラメーターオブジェクトの場所は,生成されたコードの対応するデータ定義のファイルの配置に影響する可能性があります。
パラメーターオブジェクトをベースワークスペースまたはデータディクショナリに配置する場合,コードジェネレーターでは,対応するパラメーターデータ(たとえばグローバル変数など)がシステム内の特定のコンポーネントではなく,コードを生成するシステムに属していると仮定されます。たとえば,モデル参照階層内のモデルで汽车
以外のストレージクラスをもつパラメーターオブジェクトが使用されている場合,データ定義は階層の最上位モデル用に生成されたコードに表示され,オブジェクトを使用するモデル用に生成されたコードには表示されません。
ただし,嵌入式编码器®をお持ちの場合は,一部のストレージクラスを使用してデータを所有するモデルの名前を指定することができます。所有者モデルを指定すると,そのモデル用に生成されたコ,ドによってデ,タが定義されます。デタの所有権の詳細にいては,控制在生成的文件中全局数据定义和声明的放置(嵌入式编码)を参照してください。
パラメーターオブジェクトをモデルワークスペースに配置する場合,コードジェネレーターは,モデルがデータを所有していると仮定します。保存モデルを含む参照階層からコードを生成する場合,データ定義はその保存モデル用に生成されたコードに表示されます。
デタの所有権の詳細にいては,控制在生成的文件中全局数据定义和声明的放置(嵌入式编码)を参照してください。
汽车
以外のストレージクラスをパラメーターオブジェクトに適用する場合,オブジェクトは生成されたコード内でグローバルシンボルとして表示されます。そのため,モデル参照階層では,異なるモデルワークスペースまたはディクショナリに含まれる2つのオブジェクトが同じ名前を持つことはできません。各オブジェクトの名前はモデルの階層構造全体で一意でなければなりません。
ただし,嵌入式编码器がある場合,ストレ,ジクラスFileScope
を使用し,異なるモデルワークスペースにおけるパラメーターオブジェクト間で名前の衝突を防ぐことができます。Structストレ,ジクラスを使用してパラメ,タ,デ,タを構造体に整理する(嵌入式编码)を参照してください。
モデルワ,クスペ,ス内にAUTOSAR。参数
オブジェクトを保存した場合,コードジェネレーターはオブジェクトに対して指定したストレージクラスを無視します。
アルゴリズムの実行中にパラメーターの値を調整する場合,出力信号値をモニターまたは取得して,調整の結果を解析します。生成されたコードでアクセス可能なデータとして信号を表すには、テスト ポイントやストレージ クラスなどの手法を使用できます。生成コ,ド内の変数の保持を参照してください。
生成されたコ,ドを設定して,以下を含めることができます。
エクスターナルモードから独立しているパラメーターを調整するためのCアプリケーションプログラムインターフェイス(API)。生成されたコードには,パラメーター値にアクセスするための独自のコードを書き込めるように,追加のコードが含まれています。C APIを使用した生成コ,ドと外部コ,ドの間のデ,タ交換を参照してください。
エクスターナルモードから独立しているパラメーターを調整するための目标语言编译器API。参数的函数を参照してください。
調整可能なパラメ,タ,の最小値と最大値を指定することをお勧めします。
以下の方法で最小値と最大値を指定できます。
パラメタオブジェクトを使用するブロックダアログボックス内。この手法を使用して,最小値と最大値の情報をモデル内に保存します。
パラメ,タ,値を設定するのに使用する金宝app仿真软件。参数
オブジェクトのプロパティを使用。この手法を使用して,最小値と最大値の情報をモデル外部に保存します。
詳細にいては,ブロックパラメ,タ,の最小値と最大値の指定を参照してください。
目的 | 考慮事項および詳細情報 |
---|---|
ストレ,ジ型修飾子常量 および挥发性 を適用する |
嵌入式编码器があり,ストレ,ジ型修飾子を生成する場合は,型修飾子constとvolatileを使用したグロ,バルデ,タの保護(嵌入式编码)を参照してください。 |
キ,ワ,ド静态 を適用して異なるコンポ,ネントにおけるパラメ,タ,間で名前の衝突を防ぐ |
嵌入式编码器がある場合,ストレ,ジクラス |
ASAP2 (a2l )の記述を生成する |
Asap2規格を使用してキャリブレ,ションパラメ,タ,を記述する, |
Autosar XML (arxml)記述を生成する | 嵌入式编码器がある場合,AUTOSAR規格向けに構成するモデルで使われるキャリブレーションパラメーターを記述するARXMLファイルを生成できます。Autosarキャリブレ,ションパラメ,タ,とルックアップテ,ブルのモデル化(AUTOSAR Blockset)を参照してください。 |
キャリブレ,ションのためのルックアップテ,ブルデ,タを保存する | ASAP2規格またはAUTOSAR規格(STD_AXIS COM_AXIS,曲线など)に従ってキャリブレーション用にルックアップテーブルデータを保存するには, ただし,いくかの制限が適用されます。 詳細にいては,パラメ,タ,と信号のasap2情報の定義およびAutosar測定およびキャリブレ,ション用のルックアップテ,ブルの設定(AUTOSAR Blockset)を参照してください。 |
プラグマを使用して特定のメモリ位置にパラメ,タ,デ,タを保存する | 嵌入式编码器ライセンスがある場合,カスタムプラグマが含まれるコードを生成するには,ストレージクラスとメモリセクションを使用します。通过插入Pragmas控制数据和函数在内存中的位置(嵌入式编码)を参照してください。 |
金宝app仿真软件。参数
|金宝app仿真软件。LookupTable
|金宝app仿真软件。断点