メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

ブロック パラメーター値の設定

ブロックには、出力値の計算方法を決める数値パラメーターがあります。ブロックで実行される計算を制御するには、パラメーター値を指定します。たとえば、Gain ブロックには [ゲイン] パラメーターがあり、Transfer Fcn ブロックには伝達関数の係数を表す複数のパラメーターがあります。

ブロック パラメーター値の設定には数値、変数および式を使用できます。手法はモデル化の目的に基づいて選択します。たとえば、次のようなことができます。

  • 変数を作成してブロック間およびモデル間でパラメーター値を共有する。

  • パラメーター オブジェクトを作成してデータ型や次元などのパラメーターの特性を制御する。

  • 数式を使用してアルゴリズムをコードとしてモデル化する。

モデル データ エディター ([モデル化] タブで [モデル データ エディター] をクリック) の [パラメーター] タブ、プロパティ インスペクター ([モデル化] タブの [設計] の下で、[プロパティ インスペクター] をクリック)、またはブロック ダイアログ ボックスを使用して、ブロック パラメーターを設定します。詳細については、モデルへのブロックの追加を参照してください。ブロックのサンプル時間を設定するには、サンプル時間の指定を参照してください。

ヒント

モデル エクスプローラーを使用すると、一度に多数のブロック パラメーター値に一括変更を加えることができます。詳細については、モデル エクスプローラーを参照してください。

プログラムからのパラメーター値へのアクセス

ブロック パラメーター値にプログラムからアクセスするには、関数 get_param および set_param を使用します。この手法を使用すると以下を実行できます。

  • モデルをプログラムによって作成する。

  • モデルをプログラムからシミュレートする際に、パラメーター値をシミュレーションの実行中に調整する。

スクリプトを使用してシミュレーションの実行ごとにパラメーター値をスイープするには、get_param 関数および set_param 関数ではなく Simulink.SimulationInput オブジェクトを使用します。ブロック パラメーター値の最適化、推定およびスイープを参照してください。

My Constant という名前の Constant ブロックを含む myModel という名前のモデルを作成するとします。次に、ブロック ダイアログ ボックスを使用して、[定数値] パラメーターを 15 に設定します。パラメーター値をプログラムから返すには、get_param 関数を使用します。ブロック パスと、同等のプログラム上のパラメーター名 Value を指定します。

paramValue = get_param('myModel/My Constant','Value')
paramValue =

15

たとえば、値をプログラムから 25 に変更するには、set_param 関数を使用します。関数への入力として文字ベクトル '25' を使用します。

set_param('myModel/My Constant','Value','25')

プログラム上のブロック パラメーターとプロパティの詳細については、プログラムによるブロックのパラメーターとプロパティの指定を参照してください。

プログラミングによるシミュレーションの詳細については、プログラムによるシミュレーションの実行を参照してください。

関数 get_param および set_param の使用を避けるには、MATLAB® 変数または Simulink.Parameter オブジェクトの名前をパラメーター値として使用し、その変数またはオブジェクトの値をコマンド プロンプトで変更します。変数の作成によるブロック パラメーター値の共有と再利用を参照してください。

パラメーター値の指定

目的ブロック パラメーター値説明

パラメーター値をモデル ファイルに保存する。

2.3

[1.2 2.3 4.5; 7.9 8.7 6.5]

2 + 3i

リテラル数値。スカラー、ベクトル、行列または多次元配列として指定します。複素数値を指定するには、i を使用します。

  • モデル内でブロックの位置を特定したりブロックを識別したりせずにパラメーター値にアクセスする。

  • モデル ファイルを変更せずにパラメーター値を変更する。

  • ブロック間またはモデル間でパラメーター値を共有する。

  • 値のスイープまたは調整時にパラメーターを特定の名前で識別する。

myVar

ワークスペースに存在する MATLAB 変数。

詳細については、変数の作成によるブロック パラメーター値の共有と再利用を参照してください。

  • ワークスペース変数間の名前の衝突を回避する。

  • 階層とわかりやすい名前を使用してパラメーター値を整理する。

  • モデルで使用されるワークスペース変数の数を削減する。

myParam.a.SpeedVect

パラメーター構造体のフィールド。

詳細については、関連するブロック パラメーター定義を構造体に整理を参照してください。

行列変数または配列変数の一部を使用する。たとえば、n-D Lookup Table ブロックのパラメーターを設定する。

myMatrixParam(:,2)

インデックス操作。

  • パラメーター値とは別に、データ型、実数/複素数、単位、値の許容範囲、次元などのパラメーターの特性を定義する。

  • カスタム ドキュメンテーションでシステム定数を定義する。

  • 生成コードで調整可能なパラメーターを作成する。

  • 変数の値を定数やその他の変数を含む数式に設定する。

myParam

パラメーター オブジェクト。

詳細については、パラメーター オブジェクトの使用を参照してください。

  • パラメーター値を、特定不可能な数値リテラルとして表現する代わりに、既知の物理定数間の数学的関係として表現する。

  • モデル内のブロック数を削減する。

  • ブロックの代わりにコードを使用して、不明瞭な計算や自明な計算をモデル化する。

  • MATLAB の演算子と関数を使用して計算を実行する。

  • パラメーター値を計算するカスタム MATLAB 関数を記述する。

5^3.2 - 1/3

myParam * myOtherparam + sin(0.78*pi)

myFun(15.23)

式またはカスタム関数。

詳細については、数式、MATLAB 関数、カスタム関数の使用を参照してください。

double 以外のデータ型を使用してブロック パラメーター値を指定する。

15.23

single(15.23)

myParam

型付き式、型なし式、MATLAB 数値変数またはパラメーター オブジェクト。

パラメーターのデータ型の制御の詳細については、ブロック パラメーターのデータ型の制御を参照してください。

パラメーター オブジェクトの使用

パラメーター オブジェクトとは、Simulink.Parameter オブジェクトと作成するサブクラスのオブジェクトです。パラメーター オブジェクトは、ベース ワークスペースやデータ ディクショナリなどのワークスペースにあります。

パラメーター オブジェクトはシステム定数の定義に使用できます。たとえば、パラメーター オブジェクトを使用して地球の半径を表します。オブジェクトのプロパティを使用して、物理単位を指定したり値の目的をドキュメント化したりします。

コード生成のためにモデルの準備を整えるには、パラメーター オブジェクトを作成します。生成コードで調整可能なグローバル変数として表示されるようにパラメーター オブジェクトを構成できます。また、このオブジェクトを使用してパラメーターのデータ型を制御することもできます。

パラメーター オブジェクトを作成してモデルで使用するには、データ オブジェクトを参照してください。変数を使用したブロック パラメーター値の設定の詳細については、変数の作成によるブロック パラメーター値の共有と再利用を参照してください。

数式、MATLAB 関数、カスタム関数の使用

ブロック パラメーター値を、MATLAB の関数と演算子 (sinmax など) を呼び出す式に設定できます。また、MATLAB パス上に書き込んだ独自のカスタム関数を呼び出すこともできます。

たとえば、ブロック アルゴリズムのあるセクションが変数を使用して、アルゴリズムの他の部分で使用される単一の定数を計算するとします。この計算は複数のブロックを作成して実行できます。

代わりに、MATLAB コードで記述した式を使用する単一の Constant ブロックを作成します。この手法により、ブロック アルゴリズムのサイズが抑えられ、可読性が向上します。

多数のブロックの代わりに式を使用することで、アルゴリズムの複雑な部分をモデル化できます。既存の信号を処理するには、アルゴリズム ブロックのパラメーター (Gain ブロックの [ゲイン] パラメーターなど) の値として数式を使用します。

式を使用すると、カスタム関数を呼び出してブロック パラメーター値を設定することもできます。たとえば、単一の入力数値を受け入れて制御アルゴリズムの最適な P、I および D パラメーターを計算する MATLAB 関数を記述するとします。

MATLAB code for function paramFcn that calculates proportional, integral, or derivative value for a control algorthim.. The first argument is a performance value and the second argument is P, I, or D depending on which value should be calculated.

この関数を使用してパラメーター値を設定することで、PID Controller ブロックをパラメーター化できます。

Block properties dialog box for the PID Controller block. The Proportional, Integral, and Derivative block parameters are set using the paramFcn function described above.

式を最大限に活用するため、以下のヒントを考慮してください。

  • 変数とパラメーター オブジェクトを使用する場合、その変数とオブジェクトが表す実際の数量間の代数関係を明示的にモデル化できます。数式を使用した変数値の設定で説明されているように、パラメーター オブジェクトの中で式を使用します。

  • ブロック パラメーター値の式を編集中に関数のドキュメンテーションに移動するには、パラメーター値の隣にあるボタン を使用します。カスタム関数のソース コードに移動することもできます。

その他のモデル化の目的に関する考慮事項

ブロック パラメーター値を設定する手法はモデル化の目的に基づいて選択します。

目的機能または製品ベスト プラクティス
複数のシミュレーションをすばやく実行します。Simulink.SimulationInput オブジェクトと関数 sim変数またはパラメーター オブジェクトを使用してブロック パラメーター値を設定します。この手法を使うと、パラメーターにわかりやすい名前を割り当てることができ、モデル内でブロックを識別したりブロックの位置を特定したりする必要がなくなります。ブロック パラメーター値の最適化、推定およびスイープを参照してください。
テスト中にパラメーター値をスイープします。Simulink® Test™変数またはパラメーター オブジェクトを使用してブロック パラメーター値を設定します。反復とパラメーターのオーバーライドを使用して複数のテストを実行します。パラメーター オーバーライド (Simulink Test)およびTest Iterations (Simulink Test)を参照してください。
パラメーター値を推定して最適化します。Simulink Design Optimization™

変数またはパラメーター オブジェクトを使用してブロック パラメーター値を設定します。

double 以外のデータ型を使用するパラメーターを推定して最適化するには、パラメーター オブジェクトを使用して値をデータ型から分離します。

パラメーター推定の詳細については、Parameter Estimation (Simulink Design Optimization)を参照してください。応答の最適化の詳細については、Optimize Model Response (Simulink Design Optimization)を参照してください。

モデルからコードを生成します。SIL/PIL シミュレーションまたはエクスターナル モード シミュレーションによって外部プログラムをシミュレートします。Simulink Coder™

パラメーター オブジェクトを使用してブロック パラメーター値を設定します。この手法を使うと、生成コードで調整可能なパラメーターを宣言および識別したり、パラメーターのデータ型を制御したりするのに役立ちます。生成されたコードにおける調整可能なキャリブレーション パラメーターの作成 (Simulink Coder)を参照してください。

式を使用してブロック パラメーター値を設定する場合は、生成されたコードにおける調整可能性が失われる演算子や関数は使用しないでください。調整可能な式の制限 (Simulink Coder)を参照してください。

参考

トピック