主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

ブロックパラメーターのデータ型の制御

获得ブロックの[ゲイン]パラメーターなどのブロックパラメーターは,信号がデータ型をもつのと同じようにデータ型をもちます(信号のデータ型の制御を参照)。ブロックパラメーター値の設定に使用する MATLAB®変数、金宝app仿真软件。参数オブジェクト,および他のパラメーターオブジェクトもデータ型をもちます。ブロックパラメーターのデータ型を制御して,次を可能にします。

  • ハードウェアでの制御アルゴリズムの実行を正確にシミュレーションできる。

  • 効率的なコードを生成できる。

  • 生成されたコードをカスタムコードと統合できる。

  • ターゲットのハードウェアでサポートされないデータ型の使用を回避できる。

データ型の継承による保守労力の軽減

既定では,ブロックパラメーター,データ型を使用する数値MATLAB変数,および金宝app仿真软件。参数オブジェクトは,継承された状況依存のデータ型指定によりデータ型を取得します。たとえば,获得ブロックの入力信号と出力信号がデータ型を使用する場合,[ゲイン]パラメーターは通常同じデータ型を使用します。金宝app仿真软件。参数オブジェクトを使用して,ブロックパラメーターの値を設定する場合,既定ではオブジェクトがパラメーターと同じデータ型を使用します。この継承を利用して,パラメーターのデータ型を明示的に指定するのを回避できます。

一部の継承ルールでは,対応する信号が使用するデータ型以外のパラメーターデータ型が選択されます。たとえば,次の場合を仮定します。

  • 获得ブロックの入力信号と出力信号は,2進小数点のみのスケーリングで固定小数点データ型を使用する。

  • [パラメーター属性)タブで,[パラメーターのデータ型)[继承:通过内部规则继承](既定)に設定します。

  • [パラメーター属性)タブで,[パラメーターの最小値)および[パラメーターの最大値)を使用してパラメーターの最小値と最大値を指定している。

データ型設定[継承:内部ルールによる継承)により,ブロックでは,信号が使用するデータ型とは異なるデータ型を,異なる語長またはスケーリングで選択できます。パラメーターに指定した最小値と最大値は,ブロックが選択するスケーリングに影響します。

金宝app®でのデータ型の選択を有効にする内部ルール([継承:内部ルールによる継承))を選択する場合は,シミュレーションまたはコードの生成前に,ターゲットハードウェアの特性を設定します。内部ルールでは,これらの設定を使用して,効率的な生成コードを生成するデータ型を選択できます。

状況依存データ型指定

MATLAB変数または金宝app仿真软件。参数オブジェクトを使用してブロックパラメーターの値を設定する場合は,"状況依存"データ型指定を使用するように変数またはパラメーターオブジェクトを設定できます。シミュレーションまたはコードの生成を実行する場合,変数またはパラメーターオブジェクトはブロックパラメーターと同じデータ型を使用します。この手法では,変数またはパラメーターオブジェクトのデータ型をブロックパラメーターのデータ型と一致させることができます。ブロックパラメーターおよび変数またはオブジェクトのデータ型を制御するには、ブロック パラメーターのデータ型のみを指定します。

状況依存データ型指定を使用するには,MATLAB変数の値を値に設定します。金宝app仿真软件。参数オブジェクトの場合は,値を使用して价值プロパティを設定し,数据类型プロパティを汽车(既定値)に設定します。

構造体フィールドに対する状況依存データ型指定

関連するブロックパラメーター定義を構造体に整理で説明したように,複数のブロックパラメーター値を1つの構造体に整理することができます。

パラメーター構造体のフィールドでは,状況依存データ型指定はサポートされません。しかし,フィールドのデータ型をモデル内の別のデータ項目のデータ型と一致させるため,バスオブジェクトとデータ型オブジェクトを使用できます。

  1. 金宝app仿真软件。公共汽车オブジェクトを構造体のデータ型として使用します。

  2. 金宝app仿真软件。AliasTypeオブジェクトまたは金宝app仿真软件。NumericTypeオブジェクトを,バスオブジェクトの要素のデータ型およびターゲットデータ項目のデータ型として使用します。

パラメーターデータ型を明示的に指定する手法

離散時間シミュレーションとコード生成でサポートされる多くのブロック(組み込みの离散ライブラリのブロックなど)を使って,パラメーターデータ型を明示的に指定できます。たとえば,一天的查找表ブロックのダイアログボックスの[データ型)タブで,[テーブルデータ]パラメーターを使用してルックアップテーブルデータのデータ型を指定できます。获得ブロックのダイアログボックスで,[パラメーター属性)タブを使用して[パラメーターのデータ型)を設定します。これは[ゲイン]パラメーターのデータ型を制御します。

连续ライブラリ内のブロックなど,一部のブロックでは,パラメーターデータ型を指定できません。これらのブロックパラメーターは内部ルールを使用してデータ型を選択します。このようなパラメーターのデータ型を間接的に制御するには,代わりにデータ型を金宝app仿真软件。参数オブジェクトに適用します。

金宝app仿真软件。参数オブジェクトまたは他のパラメーターオブジェクトを使用してブロックパラメーターの値を設定する場合は,オブジェクトの数据类型プロパティを使用してデータ型を指定できます。

モデル引数を使用すると,次のデータ型を指定できます。

  • モデルワークスペースに保存するモデル引数。

  • 一部のブロック(离散ライブラリのブロックなど)では,モデル引数を使用するブロックパラメーター。

  • 模型ブロックで指定する引数値。

通常,これらのデータ型の既定の設定では継承と状況依存データ型指定を使用します。たとえば,金宝app仿真软件。参数オブジェクトの数据类型プロパティの既定値は汽车です。この場合,パラメーターオブジェクトはオブジェクトを使用するブロックパラメーターからデータ型を取得します。

データ型を明示的に指定するには,ブロックのダイアログボックスとプロパティのダイアログボックスでデータ型アシスタントを使用できます。データ型アシスタントの詳細については,データ型アシスタントを利用したデータ型の指定を参照してください。

一括編集のためのモデルデータエディターの使用

モデルデータエディター([モデル化)タブで[モデルデータエディター]をクリック)を使用して,複数のブロックパラメーターに同じデータ型を一度に指定できます。[パラメーター]タブで,[ビューの変更)ドロップダウンリストを[設計]に設定し,[データ型)列を使用してデータ型を指定します。

モデルデータエディターの詳細については,モデルデータエディターを使用したデータプロパティの設定を参照してください。

調整可能なブロックパラメーターに最適な精度の固定小数点スケーリングの計算

モデルに固定小数点データ型を適用する際は,データ型アシスタントと固定小数点ツールを使用して,調整可能なブロックパラメーターに最高精度のスケーリングを計算できます。ブロックパラメーター,金宝app仿真软件。参数オブジェクトまたはその他のパラメーターオブジェクトは,生成されたコードにメモリ内に格納されている変数として表示される場合は"調整可能"です。

選択されるスケーリングは,パラメーターに代入する値の範囲に対応しなければなりません。ツールで適切なスケーリングを計算できるようにするには,ブロックまたはパラメーターオブジェクトで範囲情報を指定します。その後,次のいずれかの方法を使用してスケーリングを計算します。

  • 固定小数点ツールを使用して,モデルまたはサブシステム全体をオートスケールします。このツールは,ブロックパラメーター,金宝app仿真软件。参数オブジェクト,信号,状態などのデータ項目に対して固定小数点データ型を推奨して適用することができます。

  • それぞれのスケーリングを計算するように個々のブロックパラメーターまたはパラメーターオブジェクトを構成します。

    この手法を使用すると,後でパラメーターの値の範囲を変更した場合に,モデル全体をオートスケールせずにユーザーまたはモデルがスケーリングを再計算することができます。ただし,パラメーターの値の範囲を変更すると関連する信号の値の範囲も変わる場合は,信号の新しいスケーリングを手動で計算して適用するか,固定小数点ツールを使用してモデルまたはサブシステムをオートスケールしなければなりません。

固定小数点データ型,ブロックパラメーターおよびその他のツールや概念の基本情報については,次の表の情報を使用してください。

トピック 詳細
固定小数点データ型とスケーリング 金宝app仿真软件における固定小数点数(定点设计师)
ブロックパラメーターとパラメーターオブジェクトの値の範囲情報を指定する方法 ブロックパラメーターの最小値と最大値の指定
データ型アシスタントを使用する方法 データ型アシスタントを利用したデータ型の指定
生成コードにおける調整可能性とブロックパラメーターの表現 生成されたコードによる内部信号,状態,パラメーターデータの保存方法(金宝app仿真软件编码器)および生成されたコードにおける調整可能なキャリブレーションパラメーターの作成(金宝app仿真软件编码器)

固定小数点ツールを使用したモデル全体のオートスケーリング

固定小数点ツールを使用すると,モデル内のデータ項目をオートスケールできます。このデータ項目には,調整可能なパラメーターや,そのパラメーターに応じて異なる値をもつ信号が含まれます。この手法を使用する場合は,次のようにします。

  • パラメーターを調整可能に構成するには,[モデルパラメーター設定]ダイアログボックスではなくパラメーターオブジェクト(金宝app仿真软件。参数など)を使用します。固定小数点ツールではパラメーターオブジェクトはオートスケールできますが,[モデルパラメーター設定]ダイアログボックスで選択した数値変数はオートスケールできません。

    モデルで既に[モデルパラメーター設定]ダイアログボックスを使用している場合は,代わりに,関数tunablevars2parameterobjectsを使用してパラメーターオブジェクトを作成します。

  • 金宝app仿真软件。参数オブジェクトを使用してブロックパラメーター値を設定するときは,ブロックではなくオブジェクトで値の範囲情報を指定します。固定小数点ツールは,各オブジェクトの範囲情報を使用して,そのオブジェクトのデータ型を推奨します。

  • 構造体のフィールドとして保存したパラメーター値をツールでオートスケールできるようにするには,金宝app仿真软件。公共汽车オブジェクトを構造体全体のデータ型として使用します。バスオブジェクト内の対応する要素の最小值プロパティと马克斯プロパティを使用して,各フィールドの範囲情報を指定します。これにより,ツールで数据类型プロパティを使用して各要素にデータ型を適用できるようになります。

    バスオブジェクトをパラメーター構造体のデータ型として使用するには,パラメーターオブジェクトの作成によるフィールドのデータ型と特性の制御を参照してください。

  • 固定小数点ツールが推奨するデータ型を適用する前に,データ型がツールによって変更されないようにする必要があるパラメーターとパラメーターオブジェクトに対する推奨をクリアします。たとえば,次のエンティティに対する推奨をクリアします。

    • ImportedExternなどのストレージクラスを適用して独自の手書きコードから生成コードにインポートしたパラメーターオブジェクト。

    • モデルワークスペース内の金宝app仿真软件。参数モデル引数。

      あるいは,モデルのオートスケーリングを行う前に,これらのパラメーターオブジェクトをMATLAB数値変数に置き換えて,固定小数点ツールによってオートスケーリングが実行されないようにすることを検討してください。

      ツールでモデル引数をオートスケールできるようにすると,モデル引数の値(親モデル内の模型ブロックで指定した値),モデルワークスペース内のモデル引数,モデル内のクライアントブロックパラメーターの間でデータ型の意図しない不一致が生じるリスクが高くなります。

    • 数据类型プロパティが汽车(状況依存)に設定されているパラメーターオブジェクト。パラメーターオブジェクトで引き続き状況依存データ型指定を使用する場合は、推奨をクリアします。

固定小数点ツールを使用した金宝app仿真软件。参数オブジェクトのオートスケーリングの詳細については,固定小数点ツールを使用したデータオブジェクトのオートスケーリング(定点设计师)を参照してください。

個々のパラメーターに最適な精度のスケーリングの計算

それぞれに最高精度のスケーリングを計算するようにブロックパラメーターまたは金宝app仿真软件。参数オブジェクトを構成できます。まず,ターゲットパラメーターまたはパラメーターオブジェクトの値の範囲情報を指定します。次に,データ型アシスタントまたは関数fixdtを使用して,パラメーターまたはオブジェクトにデータ型を適用します。これらの手法は,固定小数点ツールでモデルをオートスケールしない場合に使用します。

ブロックパラメーターによる最高精度のスケーリングの自動計算の有効化-一部のブロック(通常は离散ライブラリ内のブロック)のパラメーターで,最高精度の固定小数点スケーリングが自動的に計算されるようにすることができます。この手法は,範囲とデータ型の情報をパラメーターオブジェクトではなくモデルに格納するために使用します。この手法を使用すると,後で範囲情報を変更した場合に,ブロックパラメーターで最高精度のスケーリングが自動的に再計算されます。

ブロックダイアログボックスで関数fixdtを使用して,スケーリングが指定されていない固定小数点データ型を指定します。たとえば,ルックアップ テーブル データに最適な精度のスケーリングを使用して、そのデータを 16 ビット ワードに格納します。

  1. 一天的查找表ブロックの[データ型)タブの[最小値]列と[最大値]列で,テーブルデータの要素の値の範囲を指定します。

  2. [データ型)列で,テーブルデータ型をfixdt (16)に設定します。

  3. 調整可能な金宝app仿真软件。参数オブジェクトを使用してテーブルデータパラメーターの値を設定する場合は,そのオブジェクトの数据类型プロパティを汽车に設定します。生成されたコードでは,パラメーターオブジェクトはブロックパラメーターと同じスケーリングを使用します。

コードをシミュレートまたは生成するとき,ルックアップテーブルデータは,指定した範囲情報に応じて異なる2進小数点スケーリングをもつ16ビットの符号付き固定小数点データ型を使用します。スケーリングの計算により,固定小数点型が範囲内の値を表現できるようになります。後で最小値または最大値を変更すると,コードをシミュレートまたは生成するときに,ブロックでスケーリングが再計算されます。

パラメーターオブジェクトのスケーリングの計算-金宝app仿真软件。参数オブジェクトを使用して複数のブロックパラメーターの値を設定している場合に,それらのブロックパラメーターで異なるデータ型(異なる固定小数点スケーリングを含む)が使用されているときは,そのオブジェクトの数据类型プロパティを汽车(既定の設定)に設定することはできません。代わりに,オブジェクトで範囲とデータ型の情報を指定して,パラメーターオブジェクトに最適な精度の固定小数点スケーリングを計算することができます。この手法は,範囲とデータ型の情報をブロックダイアログボックスではなくパラメーターオブジェクトに格納するためにも使用できます。この手法を使用すると,後で範囲情報を変更した場合に,データ型アシスタントを使用して最高精度のスケーリングを再計算しなければなりません。

たとえば値15.25を表すパラメーターオブジェクトを作成するとし,その値の設計範囲が0.0032.00であるとします。最高精度のスケーリングを計算するには,データ型アシスタントを使用します。

  1. コマンドプロンプトで,値が15.25のパラメーターオブジェクトをベースワークスペースに作成します。

    myParam = 金宝appSimulink.Parameter (15.25);

  2. MATLABワークスペースブラウザーでオブジェクトmyParamをダブルクリックします。プロパティダイアログボックスが開きます。

  3. オブジェクトで範囲情報を指定します。たとえば,[最小値]0.00[最大値]32.00に設定します。

  4. [データ型)fixdt (0 16 0)に設定します。

  5. データ型アシスタントを展開して(最高精度のスケーリングを計算)をクリックします。

    データ型がfixdt (0 16 0)からfixdt(0, 16日,10)に変わります。

スケーリングの計算(小数部の長さ10ビット)により,固定小数点データ型が指定の範囲内のパラメーター値を表現できるようになります。

範囲とデータ型の情報をパラメーターオブジェクトで指定する場合は,そのオブジェクトを使用するブロックから範囲とデータ型の情報を削除することを検討してください。固定小数点ツールなどの一部のツールでは,ブロックで指定した範囲情報は無視され,パラメーターオブジェクト内の情報のみが使用されます。ブロックから情報を削除すると,混乱やユーザーエラーを防ぐことができます。

たとえば,获得ブロックダイアログボックスの[パラメーター属性)タブで,[パラメーターの最小値)[パラメーターの最大値)[]に設定します。[パラメーターのデータ型)[継承:“获得”から継承)などの継承されたデータ型に設定して,ブロックパラメーターでパラメーターオブジェクトと同じデータ型が使用されるようにします。

量子化とオーバーフローによる数値精度の問題の検出

ブロックパラメーター,MATLAB変数またはパラメーターオブジェクトのデータ型で,指定した値を表すことができない場合,データ型は,数値精度を下げながら,値を量子化します。32岁的たとえばビットの浮動小数点データ型(Cコードでは浮动)はパラメーター値1.73を正確に表すことができません。データ項目の実際値が,データ型で表すことができる値の範囲外にある場合,オーバーフローによって情報が失われる可能性があります。

これらの問題を検出するには,[コンフィギュレーションパラメーター][診断][データ有効性)[パラメーター]で診断コンフィギュレーションパラメーターを使用します。これらの診断コンフィギュレーションパラメーターの値を[警告]または[エラー]に設定します。

  • ダウンキャストの検出

  • 桁落ちの検出

  • アンダーフローの検出

  • オーバーフローの検出

パラメーターデータのカスタムCデータ型の再利用

モデルで,既存のCコードで定義されている構造体などのカスタムCデータ型に適合するパラメーターデータを作成できます。このデータを使用して以下を実行します。

  • 既存のCコードを仿真软金宝app件モデルで置き換える。

  • 金宝app仿真软件でのシミュレーション用のCコードを統合する(たとえば,レガシコードツールを使用)。

  • 既存のコードと統合できるコードの生成を準備する(金宝app仿真软件编码器™)。

以下の手法を使用してカスタムデータ型を一致させます。

  • 構造体型の場合は,金宝app仿真软件。公共汽车オブジェクトを作成します。このオブジェクトを金宝app仿真软件。参数オブジェクトに保存する構造体のデータ型として使用します。関連するブロックパラメーター定義を構造体に整理を参照してください。

  • 列挙型の場合は,列挙型クラスを作成してブロックパラメーターのデータ型として使用します。金宝app仿真软件モデルでの列挙型データの使用を参照してください。

  • プリミティブ数値データ型のエイリアスを表す类型定义ステートメントを一致させるには,金宝app仿真软件。AliasTypeオブジェクトをブロックパラメーターのデータ型として使用します。金宝app仿真软件。AliasTypeを参照してください。

これらのクラスとオブジェクトを作成するには,関数金宝appSimulink.importExternalCTypesを使用します。

モデル内のMATLAB函数ブロックまたはStateflow®チャートに,インポートされた列挙型または構造体型が使用されている場合,モデルコンフィギュレーションパラメーターが外部ヘッダーファイルから型定義をインクルードする(# include)ように構成します。インポートされたバスと列挙型定義の制御MATLAB函数ブロックの場合),およびStateflowチャート内のカスタムコードの変数および関数へのアクセス(Stateflow),およびStateflowチャートのカスタム構造体の統合(Stateflow)(チャートの場合)を参照してください。

数式のデータ型

数式を使用してブロックパラメーターを指定する場合,ブロックはMATLABおよび仿真软件金宝appのデータ型ルールを組み合わせて使用して最終的なパラメーターのデータ型を判断します。

たとえば,int8ParamdoubleParamの2つのパラメーターオブジェクトを定義し,これらのオブジェクトを使用して常数ブロックで[定数値]パラメーターを指定するとします。

int8Param = 金宝appSimulink.Parameter (3);int8Param。数据类型=“int8”;doubleParam = 金宝appSimulink.Parameter (9.36);doubleParam。数据类型=“双”

常数ブロックは,以下の手順を使用して[定数値]パラメーターのデータ型を判断します。

  1. 各パラメーターオブジェクトは指定された数値を指定されたデータ型にキャストします。

    パラメーターオブジェクト データ型 数値 結果
    int8Param int8 3. int8 (3)
    doubleParam 9.36 双(9.36)

  2. ブロックは,MATLABルールを使用して指定された式int8Param * doubleParamを評価します。

    データ型と別の型を含む式は,別の型の結果を返します。したがって式int8(3) *双(9.36)の結果はint8 (28)となります。

パラメーターオブジェクト(金宝app仿真软件。参数など)の値を設定するのに式を使用している場合,その式の中に使用されているパラメーターオブジェクトは異なるデータ型ルールに従います。数据类型プロパティの汽车設定は,少し異なる意味を持ちます。数式を使用した変数値の設定を参照してください。

生成されたコードにおけるブロックパラメーターのデータ型

生成されたコードにおけるパラメーターデータ型の制御の詳細については,生成されたコードにおけるパラメーターのデータ型(金宝app仿真软件编码器)を参照してください。

関連するトピック