Main Content

From Workspace

ワークスペースから Simulink モデルへの信号データの読み込み

  • From Workspace block

ライブラリ:
Simulink / Sources

説明

From Workspace ブロックは、ワークスペースから Simulink® モデルに対してデータを読み取り、そのデータをブロック出力で信号または非バーチャル バスとして提供します。データはベース ワークスペース、モデル ワークスペース、またはマスク ワークスペースから読み込むことができます。From Workspace ブロックを使用して、参照モデルまたはサブシステムにアクセスできるワークスペースからモデルの階層構造内の任意のモデルまたはサブシステムに信号データを読み込むことができます。

サンプルの出力周期、内挿および外挿動作、ゼロクロッシング検出を使用するかどうかを含む、ブロックでワークスペース データから出力を構成する方法を指定できます。

From Workspace ブロック アイコンは [データ] パラメーターの値を表示します。たとえば、From Workspace ブロックを使用してデータを変数 x に読み込む場合、x[データ] パラメーターの値として指定すると、ブロックが x を表示します。

読み込むデータの指定

From Workspace ブロックの読み込むデータは [データ] パラメーターを使用して指定します。変数名などの [データ] パラメーターの値は MATLAB® 式として指定できます。[データ] パラメーター内の式は、From Workspace ブロックがサポートする形式のデータとして評価されなければなりません。式がどのように評価されるかの詳細については、記号の解釈を参照してください。

From Workspace ブロックはデータ ディクショナリからデータを読み込みません。データ ディクショナリを使用して、シミュレーションの入力データではなく、モデルの設計データのみを保存します。[サンプル時間] パラメーターの値など、From Workspace ブロックに関連する設計データをデータ ディクショナリに保存できます。

すべて展開する

この例では、MATLAB ワークスペースから 2 次元構造体を読み取る方法を示します。モデルを開くと、次のコードが PreLoadFcn コールバックで実行されます。

t1 = 0.2 * [0:49]';
m = magic(10);
M = repmat(m,[1 1 length(t1)]);
data.time=t1;
data.signals.values = M;
data.signals.dimensions=[10 10];

このコードでは、関数 magic を使用して、10 行 10 列の行列 (2 次元信号) を作成し、時間ベクトルを追加することにより 3 次元行列を作成します。時間ベクトルは列ベクトルでなければなりません。signals.values フィールドは 3 次元行列で、3 番目の次元は時間に対応します。signals.dimensions フィールドは 2 要素のベクトルです。最初の要素は signals.values フィールドの行数、2 番目の要素は列数です。

モデルを実行すると、From Workspace ブロックはワークスペースから構造体 data を読み取ります。

端子

出力

すべて展開する

ワークスペースから読み込まれたデータ。ブロック出力で信号または非バーチャル バスとして提供されます。読み込むデータに応じて、出力信号はスカラー、ベクトル、多次元、または可変サイズの信号、バス、またはバス配列 (R2021a 以降)になる可能性があります。From Workspace ブロックは、int64 および uint64 を除くすべての組み込みデータ型の実数データおよび複素数データの読み込みをサポートします。

データ型: single | double | half | int8 | int16 | int32 | uint8 | uint16 | uint32 | Boolean | fixed point | enumerated | bus
複素数のサポート: あり

パラメーター

すべて展開する

ワークスペースから読み込むデータ。MATLAB 変数、または From Workspace ブロックによってサポートされている形式のデータとして評価される MATLAB 式として指定します。この式では、From Workspace ブロックが出力で提供するデータを作成したり、あるいは読み込むデータが含まれるワークスペース変数を参照したりすることができます。式の評価方法の詳細については、記号の解釈を参照してください。

From Workspace ブロックは、スカラー、多次元、可変サイズの信号の実数または複素数のデータ、さらにバスまたはバス配列のデータを読み込むことができます。

From Workspace ブロックでは、モデル内でブロックに生成させる出力のタイプに応じて異なる入力データ形式がサポートされています。すべての出力のタイプとデータ形式で、以下のとおりです。

  • 入力データの時間値は double データ型で、単調増加する必要があります。

  • 時間値およびデータ値に Inf 値または NaN 値が含まれていてはなりません。

出力のタイプデータ形式ヒント

スカラーまたはベクトル信号

  • 単一の列を含む timetable (R2020a 以降)

  • timeseries オブジェクト

  • Simulink.SimulationData.Signal オブジェクト

  • [構造体] または [時間付き構造体] ログ形式に一致するフィールドと階層を持つ構造体

  • 最初の列が時間で、1 つ以上の追加列に各タイムスタンプの信号値が含まれている 2 次元配列

  • スカラーおよびベクトルの信号では、信号データの行数が時間ベクトルの行数に一致している必要があります。

  • timetable を作成するには、時間値が duration ベクトルでなければなりません。

    シミュレーション時間では常に秒単位が使用されます。秒以外の単位を使用する duration ベクトルを作成すると、ソフトウェアによってシミュレーションで使用するために値が秒に変換されます。

  • 配列形式では、複素数である信号値または double 以外のデータ型をもつ信号値はサポートされていません。

多次元信号

  • timeseries オブジェクト

  • 単一の列を含む timetable (R2020a 以降)

  • Simulink.SimulationData.Signal オブジェクト

  • [構造体] または [時間付き構造体] ログ形式に一致するフィールドと階層を持つ構造体

  • 2 次元以上の値をもつ多次元信号の場合、最後の次元の長さは時間ベクトルの長さと一致しなければなりません。

    たとえば、22 列の行列の信号からなる 10 個のサンプルの入力データでは、時間ベクトルは 10 行で、信号値の配列の次元は 2×2×10 になります。

  • timetable を作成するには、時間値が duration ベクトルでなければなりません。

    シミュレーション時間では常に秒単位が使用されます。秒以外の単位を使用する duration ベクトルを作成すると、ソフトウェアによってシミュレーションで使用するために値が秒に変換されます。

可変サイズの信号

[構造体] または [時間付き構造体] ログ形式に一致するフィールドと階層を持つ構造体

From Workspace ブロックを使用して読み込むことのできる形式で可変サイズの信号を記録するには、信号を最上位の Outport ブロックに接続し、モデルの [形式] コンフィギュレーション パラメーターを [構造体] または [時間付き構造体] に設定します。

バス

timetable (R2020a 以降) オブジェクトまたは timeseries オブジェクトの構造体

  • バスを定義する Simulink.Bus オブジェクトとして [出力データ型] パラメーターを指定します。

  • 構造体の階層およびフィールド名はバスの階層および要素名と一致していなければなりません。

  • timetable または timeseries オブジェクトには、バス内のリーフ信号のデータが含まれます。

  • timetable には 1 列だけ含まれている必要があります。

バスの入力データを部分的に指定するには、入力データ構造体で、データを読み込む必要がないバス要素を [] に設定します。

バス配列 (R2021a 以降)

それぞれがバス配列内のバスのデータを表す構造体の配列
  • ラピッド アクセラレータ シミュレーションでは、バス配列データの読み込みはサポートされていません。

  • 最上位モデルの From Workspace ブロックでは、ノーマル モードおよびアクセラレータ モードのシミュレーションにおけるバス配列データの読み込みがサポートされています。

  • 参照モデルの From Workspace ブロックでは、参照モデルがノーマル モードで実行されている場合にのみ、バス配列データの読み込みがサポートされています。

  • バス配列の入力データを部分的に指定するには、そのバスのデータを表す構造体で、データを読み込む必要がないバス要素を [] に設定します。

詳細については、From Workspace ブロックを使用したデータの読み込みを参照してください。

ヒント

  • To File ブロックを使用して配列形式に記録されたデータを読み込むには、時間値が 1 行ではなく 1 列になるように配列を転置します。関数 transpose を使用して、転置されたデータを新しいファイルに保存できます。

  • 関数 simparsim、または batchsim を使用して実行したプログラムによるシミュレーションでは、Simulink.SimulationInput オブジェクトを使用して From Workspace ブロックの読み込むデータを指定できます。

    • 関数 setBlockParameter を使用してブロックに対してシミュレーションで使用する VariableName パラメーターの値を設定します。

    • 関数 setVariable を使用して、入力データが含まれた変数を SimulationInput オブジェクトに追加します。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

ブロック パラメーターの値をプログラムで取得するには、関数 get_param を使用します。

パラメーター: VariableName
値: 'simin' (既定値) | MATLAB expression | timeseries object | timetable | structure | 2-D array
データ型: char | string

例: set_param("myModel/From Workspace","VariableName","inData") configures the From Workspace block named From Workspace in the model myModel to load data stored in the MATLAB variable named inData.

From Workspace ブロックが読み込むワークスペース データのデータ型。既定では、From Workspace ブロックはワークスペース データ、または信号のデータ型を定義する下流のブロックから出力信号のデータ型を継承します。

ヒント

  • スカラー、ベクトル、または多次元信号のデータを読み込むときに、出力データ型を継承することを選択するか、ワークスペース データのデータ型に一致するように出力データ型を指定することができます。

  • バスまたはバス配列のデータを読み込むには、[出力データ型]Bus: <bus_object> に設定し、出力バスを定義する Simulink.Bus オブジェクトの名前を指定します。

    列挙型データを読み込むときは、[出力データ型]Enum: <class_name> に設定し、列挙型データ値を定義する列挙型クラスの名前を指定します。

  • データ属性の設定には [データ型アシスタント] が役立ちます。[データ型アシスタント] を使用するには、the Show data type assistant button をクリックします。詳細については、データ型アシスタントを利用したデータ型の指定を参照してください。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

ブロック パラメーターの値をプログラムで取得するには、関数 get_param を使用します。

パラメーター: OutDataTypeStr
値: 'Inherit: auto' (既定値) | 'double' | 'single' | 'half' | 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'boolean' | 'fixdt(1,16,0)' | 'fixdt(1,16,2^0,0)' | 'Enum: <class name>' | 'Bus: <object name>' | data type expression
データ型: char | string

例: set_param("myModel/From Workspace","OutDataTypeStr","int32") specifies that data type must be int32 for the data the From Workspace block named From Workspace loads into the model myModel.

[サンプル時間] パラメーターは、シミュレーション中にブロックが新しい出力値を計算するタイミングを指定します。詳細については、サンプル時間の指定を参照してください。

出力に時間オフセットを含めない場合は、[サンプル時間] パラメーターをスカラーとして指定します。出力に時間オフセットを追加する場合は、[サンプル時間] パラメーターを、最初の要素がサンプリング周期、2 番目の要素がオフセットである 12 列のベクトルとして指定します。

既定では、[サンプル時間] パラメーターの値は 0 で、これは時間オフセットのない連続サンプル時間を示します。離散信号の場合は、[サンプル時間] を離散サンプリング間隔として指定します。たとえば、[サンプル時間] として 0.1 を指定して、100 ミリ秒ごとにサンプリングされる離散信号をモデル化します。値を継承するには、[サンプル時間] として -1 を指定します。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

ブロック パラメーターの値をプログラムで取得するには、関数 get_param を使用します。

パラメーター: SampleTime
値: '0' (既定値) | scalar | vector
データ型: char | string

例: set_param("myModel/From Workspace","SampleTime","0.1") configures the From Workspace block named From Workspace in the model myModel to execute with a sample time of 0.1 seconds.

内挿法は、読み込まれたワークスペース データにおいて、時間値の間にあるシミュレーション時間に対して出力値を提供するために使用されます。[データを内挿する] を選択すると、From Workspace ブロックは、読み込まれたワークスペース データ内の隣接する値を使用して出力値を線形内挿します。[データを内挿する] が選択されていない場合、From Workspace ブロックは、読み込まれたワークスペース データ内の前のデータ点の値を提供します。内挿アルゴリズムの詳細については、内挿を参照してください。

列挙型、固定小数点、または可変サイズの信号データを読み込む場合は、[データを内挿する] パラメーターをクリアします。

読み込まれたワークスペース データにおいて、最後の値の後に出力値を提供する場合、From Workspace ブロックは [データを内挿する] パラメーターと [最後のデータ後の出力フォーム] パラメーターを組み合わせて使用します。

[データを内挿する] パラメーターの値は、読み込まれたワークスペース データにおいて、From Workspace ブロックが最初のデータ点の前のシミュレーション時間に対して出力値を外挿する方法にも影響を与えます。[データを内挿する] が選択されている場合、From Workspace ブロックはワークスペース データ内の最初の 2 つのデータ点を使用して、最初のデータ点の前のシミュレーション時間に対して出力値を線形外挿します。[データを内挿する] が選択されていない場合は、ブロックは最初のワークスペース データ点の前のシミュレーション時間に対して、出力値としてグラウンドを提供します。From Workspace ブロックの外挿動作に関する詳細については、外挿を参照してください。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

ブロック パラメーターの値をプログラムで取得するには、関数 get_param を使用します。

パラメーター: Interpolate
値: 'on' (既定値) | 'off'
データ型: char | string

例: set_param("myModel/From Workspace","Interpolate","off") configures the From Workspace block named From Workspace to use zero-order hold interpolation for loading data into the model myModel.

ゼロクロッシング検出とは、ブロック出力内の不連続点を特定したり、不連続点近くでの過度に小さいタイム ステップの使用を回避してシミュレーションの低速化を防ぐために用いられる手法です。"ゼロクロッシング" とはデータ内の不連続点のことです。From Workspace ブロックでは、サンプル時間が連続 (0) の場合にゼロクロッシングを検出できます。

データに同じ時間を持つ複数のサンプルが含まれている場合に、読み込まれたワークスペース データによってブロック出力内の不連続点が作成されます。たとえば、次の入力データの場合、不連続点は時間 2 で発生します。

time:     0 1 2 2 3
signal:   2 3 4 5 6

From Workspace ブロックは、[内挿] パラメーターを選択した場合にのみ、入力データ内の重複時間値によって生じるゼロクロッシングを検出します。

また、[最後のデータ後の出力フォーム][0 に設定] に設定すると、From Workspace ブロックはワークスペース データ内の最後のサンプルで出力内の不連続点を作成できます。

バスの入力データを読み込むときに、From Workspace ブロックはすべてのバス要素のゼロクロッシングを検出します。

このブロックでは、可変ステップ ソルバーを使用するシミュレーションでのみゼロクロッシング検出がサポートされます。シミュレーションに固定ステップ ソルバーを使用する場合、このブロックに対してゼロクロッシングの検出や特定は行われません。

詳細については、ゼロクロッシング検出を参照してください。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

ブロック パラメーターの値をプログラムで取得するには、関数 get_param を使用します。

パラメーター: ZeroCross
値: 'on' (既定値) | 'off'
データ型: char | string

例: set_param("myModel/From Workspace","ZeroCross","off") disables the Enable zero-crossing detection parameter for the From Workspace block named From Workspace in the model myModel.

From Workspace ブロックは [データを内挿する] 設定と [最後のデータ後の出力フォーム] 設定を使用して、ワークスペース データで使用可能な最後のサンプル後のシミュレーション時間に対するブロック出力を決定します。

[最後のデータ後の出力フォーム] の設定[データを内挿する] の設定最終データの後のブロック出力

外挿

オン

最終データ値から外挿

オフ

エラー

0 に設定

オン

0

オフ

最終値を保持

オン

ワークスペースからの最終値

オフ

周期的に繰り返す

オン

エラー

オフ

読み込まれたワークスペース データが時間なしの構造体形式を使用する場合、ワークスペース データを最初の値から繰り返します。

時間付き構造体以外のワークスペース データ形式の場合はエラーになります。

From Workspace ブロックの外挿動作に関する詳細については、外挿を参照してください。

プログラムでの使用

ブロック パラメーターの値をプログラムで設定するには、関数 set_param を使用します。

ブロック パラメーターの値をプログラムで取得するには、関数 get_param を使用します。

パラメーター: OutputAfterFinalValue
値: 'Extrapolation' (既定値) | 'Setting to zero' | 'Holding final value' | 'Cyclic repetition'
データ型: char | string

例: set_param("myModel/From Workspace","OutputAfterFinalValue","Holding final value") configures the From Workspace block named From Workspace in the model myModel to use the final input data value as the output value for time steps that occur after the last time value in the input data.

ブロックの特性

データ型

Boolean | bus | double | enumerated | fixed pointa | half | integer | single | string

直達

いいえ

多次元信号

はい

可変サイズの信号

はい

ゼロクロッシング検出

はい

a Fixed-Point Designer を使って作成された fi オブジェクトによる入力をサポートします。

アルゴリズム

すべて展開する

拡張機能

バージョン履歴

R2006a より前に導入

すべて展開する