Main Content

ブロック パラメーターの最小値と最大値の指定

ブロック パラメーターで範囲外の値を使用しないようにして、モデル設計を保護できます。たとえば、航空機の補助翼の角度を表すパラメーターの値が既知の大きさを超えることができない場合は、モデル内のパラメーターに対して設計の最大値を指定できます。

Fixed-Point Designer™ を利用すると、Simulink® は範囲情報を使用して、以下に最高精度の固定小数点スケーリングを計算できます。

  • 調整可能なパラメーター。

  • 信号。調整可能なパラメーターに代入する値の範囲を考慮して計算されます。

ブロック パラメーターの基本的な情報については、ブロック パラメーター値の設定を参照してください。

パラメーター値の範囲の指定

ブロック パラメーターの値の範囲を指定するとき、通常、ブロック (モデル ファイル) に情報を保存するか、外部変数またはパラメーター オブジェクトに情報を保存するかを選択できます。手法はモデル化の目的に基づいて選択します。

  • 使用できる場合、同じブロック内の他のパラメーターを使用します。たとえば、Gain ブロックの [ゲイン] パラメーターの値の範囲を制御するには、ブロック ダイアログ ボックスの [パラメーター属性] タブの [パラメーターの最小値] パラメーターと [パラメーターの最大値] パラメーターを使用します。n-D Lookup TablePID Controller などのその他のブロックでは、[データ型] タブを使用します。

    この手法を使用して以下を実行します。

    • モデル ファイルに範囲情報を格納する。

    • 固定小数点データ型情報をブロックに保存するときに範囲情報を格納する (たとえば、最高精度のスケーリングを含む、Gain ブロックの [パラメーターのデータ型] パラメーターを固定小数点型に設定する)。この手法では、より明確に範囲情報をデータ型情報に関連付けることができます。

  • パラメーター オブジェクト (Simulink.Parameter など) を使用してパラメーター値を設定します。オブジェクトの Min プロパティと Max プロパティを使用して、ブロックではなくオブジェクトで範囲情報を指定できます。

    この手法を使用して以下を実行します。

    • 最小情報または最大情報を格納できないブロック (Continuous ライブラリ内の多くのブロックなど) の範囲情報を指定する。

    • 複数のブロック パラメーター間で共有する単一値の範囲情報を指定する (変数の作成によるブロック パラメーター値の共有と再利用を参照)。数値 MATLAB® 変数を使用せずに Min プロパティと Max プロパティを指定できるようにパラメーター オブジェクトを使用します。

    • 固定小数点データ型の情報をパラメーター オブジェクトに格納するときに範囲情報を格納する (DataType プロパティを auto ではなく固定小数点型に設定する)。この手法では、より明確に範囲情報をデータ型情報に関連付けることができます。

    範囲情報をパラメーター オブジェクトで指定する場合は、ブロックから範囲情報を削除することを検討してください。たとえば、Gain ブロック ダイアログ ボックスの [パラメーター属性] タブで、[パラメーターの最小値][パラメーターの最大値][] に設定します。固定小数点ツールなどの一部のツールでは、ブロックで指定した範囲情報は、パラメーター オブジェクトで範囲情報を指定していない場合にのみ使用されます。パラメーター オブジェクトで範囲情報を指定している場合、ツールではブロックで指定した範囲情報は無視されます。

    データ オブジェクトの作成と使用の基本的な情報については、データ オブジェクトを参照してください。

有効な範囲情報の指定

最小値または最大値を、スカラーの double データ型の実数に評価される式で指定します。たとえば、[パラメーターの最小値] を選択することで、Gain ブロックの [ゲイン] パラメーターの最小値を指定することができます。

  • 98.884 などの数値リテラル。暗黙的にデータ型は double になります。

  • データ型が double である数値ワークスペース変数 (変数の作成によるブロック パラメーター値の共有と再利用を参照)。この手法を使用すると、複数のデータ項目の間で最小値または最大値を共有できます。

    ただし、変数を使用してパラメーター オブジェクトの Min プロパティまたは Max プロパティを設定することはできません。

ブロック パラメーターまたはパラメーター オブジェクトの最小値または最大値を未指定のままにするには、空行列 [] (既定値) を使用します。

非スカラー パラメーターの範囲情報の指定

ブロック パラメーターの値がベクトルまたは行列の場合、指定した範囲情報はベクトルまたは行列の各要素に適用されます。いずれかの要素の値が指定の範囲外の場合は、モデルでエラーが生成されます。

ブロック パラメーターの値が構造体または構造体のフィールドの場合は、データ型が Simulink.Bus オブジェクトである Simulink.Parameter オブジェクトを作成して、構造体フィールドの範囲情報を指定します。範囲情報は、バス オブジェクト内の信号要素のプロパティを使用して指定します。詳細については、パラメーター オブジェクトの作成によるフィールドのデータ型と特性の制御を参照してください。

複素数値パラメーターの範囲情報の指定

ブロック パラメーターの値が複素数 (i) の場合、指定した範囲情報は複素数の実数部と虚数部に個別に適用されます。複素数の実数部または虚数部の値が範囲外の場合は、モデルでエラーが生成されます。

モデル データ エディターを使用した複数のパラメーターの範囲の指定

モデル データ エディター ([モデル化] タブで [モデル データ エディター] をクリック) を使用すると、検索および並べ替えが可能なテーブルにより、複数のブロック パラメーターおよび変数の値の範囲を指定できます。[パラメーター] タブで、[ビューの変更] ドロップダウン リストを [設計] に設定し、[Min] 列と [Max] 列に値を指定します。

詳細については、モデル データ エディターを参照してください。

ブロック パラメーターに指定できる値の制限

ブロック パラメーターで範囲外の値が使用されないようにして設計を保護するには、同じブロックの他のパラメーターを使用して最小値と最大値の情報を指定できます。ユーザーがターゲット パラメーターに対して指定の範囲外の値を設定すると、モデルでエラーが生成されます。

ブロックでパラメーターの値の範囲を指定できるかどうかに関係なく、パラメーター オブジェクト (Simulink.Parameter オブジェクトなど) を使用してターゲット パラメーターの値を設定することを検討してください。オブジェクトのプロパティを使用して範囲情報を指定します。この手法を使うと、複数のブロック パラメーター値の設定に使用する変数の範囲情報を指定できます。

調整可能な固定小数点パラメーターの範囲情報の指定

モデルで固定小数点データ型を使用する場合は、Simulink でブロック パラメーターおよび Simulink.Parameter オブジェクトに最適な精度のスケーリングが選択されるようにすることができます。シミュレーション中または生成コードの実行中に値を変更してこのようなパラメーターを調整する場合、Simulink で選択される固定小数点スケーリングは、パラメーターに代入する値の範囲に対応しなければなりません。

また、パラメーターの値を変更する場合、モデル内の信号のデータ型は、取り得る信号値の該当する拡張範囲に対応しなければなりません。固定小数点ツールを使用して、モデルに対して固定小数点データ型を推奨して適用する場合に、このツールで信号を正確にオートスケールできるようにするには、調整可能なパラメーターの範囲情報を指定します。

調整可能なパラメーターの範囲情報を指定するには、調整可能なブロック パラメーターに最適な精度の固定小数点スケーリングの計算を参照してください。固定小数点ツールが調整可能なパラメーターの値の範囲を考慮しながら信号をどのようにオートスケールするかの詳細については、Simulink.Parameter オブジェクトの範囲の派生 (Fixed-Point Designer)を参照してください。

double よりも高い精度または広い範囲のデータに対する予期しないエラーまたは警告

データ項目 (信号またはパラメーター) で double 以外のデータ型が使用されている場合、比較する前に、Simulink によってデータ項目および各設計範囲 (指定した最小値または最大値) が double 以外のデータ型にキャストされます。この方法は、誤解を招く不必要なエラーや警告の生成を防ぐために役立ちます。

ただし、Simulink では比較の前に設計範囲が double として保存されます。データ項目のデータ型が double よりも高い精度 (語長が 128 ビットで小数部の長さが 126 ビットの固定小数点データ型など) または double よりも広い範囲をもつ場合で double によって設計範囲の値を正確に表現できない場合、Simulink によって予期しない警告およびエラーが生成される可能性があります。

double でない型が高い精度をもつ場合、設計範囲を、double で表現可能なゼロから次に遠い数値に丸めることを検討してください。たとえば、最大値を 98.8847692348509014 に設定した後で、信号によってエラーが生成されると仮定します。double で表現可能なゼロから次に遠い数値をコマンド プロンプトで計算します。

format long
98.8847692348509014 + eps(98.8847692348509014)
ans =

  98.884769234850921

得られた数値 98.884769234850921 を使用して最大値を置き換えます。

生成コードの最適化

Embedded Coder® がある場合、Simulink Coder™ は、信号とパラメーターに指定する最小値と最大値を考慮することで、モデルから生成するコードを最適化できます。この最適化により、アルゴリズム コードが削除され、SIL やエクスターナル モードなどの一部のシミュレーション モードの結果に影響を与えることがあります。詳細については、Optimize using the specified minimum and maximum values (Embedded Coder)を参照してください。

関連するトピック