Main Content

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

To Workspace

Simulink モデルからワークスペースにデータのログを作成

  • To Workspace block

ライブラリ:
Simulink / Sinks
DSP System Toolbox / Sinks
HDL Coder / Sinks

説明

To Workspace ブロックは、その入力端子に接続されているデータのログを Simulink® モデルからワークスペースに作成します。通常、ログ データはベース ワークスペースに返されます。関数内でモデルをプログラムによってシミュレートする場合、ログ データはその関数のワークスペースに返されます。シミュレーション中に、ログ データはシミュレーション データ インスペクターにストリーミングされます。シミュレーションが一時停止または停止するまで、ログ データはワークスペースに書き込まれます。

To Workspace ブロックを使用して、信号、バスまたはバス配列のログ データを作成できます。To Workspace ブロックは可変サイズの信号のデータを含む、スカラー データと多次元信号データのログ記録をサポートしています。

To Workspace ブロックがログに記録するデータを格納する変数の名前を設定したり、ログ データの形式を指定したりできます。ブロック パラメーターまたはモデル パラメーターを指定して、To Workspace ブロックがログを記録する値も制御できます。詳細については、ログに記録する信号値の指定を参照してください。

ログ データにアクセス

シミュレーション結果がワークスペースに返される方法は、モデルのシミュレーション方法と設定方法によって異なります。シミュレーション結果は、次のいずれかの状況で単一の Simulink.SimulationOutput オブジェクトに返されます。

  • [単一のシミュレーション出力] パラメーターを有効にする。

    既定では、[単一のシミュレーション出力] パラメーターは、新しいモデルを作成すると有効になります。このパラメーターを有効にするには [コンフィギュレーション パラメーター] ダイアログ ボックスを使用します。[モデル化] タブの [設定] で、[モデル設定] をクリックします。次に、[コンフィギュレーション パラメーター] ダイアログ ボックスで [データのインポート/エクスポート] を選択し、[単一のシミュレーション出力] を選択します。

  • [複数のシミュレーション] ペインを使用して一連のシミュレーションを実行する。

  • 1 つ以上の Simulink.SimulationInput オブジェクトを使用してモデルをプログラムによってシミュレートする。

    関数 simparsim、および batchsim を使用してシミュレーションを実行する場合、SimulationInput オブジェクトを使用してシミュレーションを構成できます。

  • 結果を単一のシミュレーション出力として返す関数 sim の構文を使用してモデルをシミュレートする。

    詳細については、sim を参照してください。

シミュレーション結果が 1 つの出力に返されると、SimulationOutput オブジェクトにモデル内の各 To Workspace ブロックの変数が格納されます。To Workspace ブロックによりログに記録されたデータにアクセスするには、次を行います。

  • ブロックの [変数名] パラメーターを使用して指定した変数名とドットを使用します。既定では、モデルは変数名 out を使用して単一のシミュレーション出力を返すように設定され、To Workspace ブロックは simout という名前の変数にデータを保存します。

    toWksData = out.simout;
  • ログ データを格納する変数の名前をもつ関数 get を使用します。

    toWksData = get(out,simout);

モデルで、To Workspace ブロックはワークスペース内のデータにアクセスする方法を示します。既定では、ブロックは out.simout を示します。次を行うと、ブロックの外観が更新されます。

  • ブロックの [変数名] パラメーターに異なる値を指定する。

  • 単一のシミュレーション出力に異なる変数名を指定する。

  • [単一のシミュレーション出力] コンフィギュレーション パラメーターをオフにする。

すべて展開する

To Workspace ブロックはシミュレーション データをワークスペースに記録します。

たとえば、SineToWorkspace モデルをシミュレートします。

The SineToWorkspace model

mdl = "SineToWorkspace";
out = sim(mdl);

モデルからのシミュレーション結果は、out という名前の単一の Simulink.SimulationOutput オブジェクトで返されます。To Workspace ブロックで保存された結果にアクセスするには、ドット表記を使用します。

toWksData = out.simout
  timeseries

  Common Properties:
            Name: 'Sine Wave'
            Time: [51x1 double]
        TimeInfo: tsdata.timemetadata
            Data: [51x1 double]
        DataInfo: tsdata.datametadata

端子

入力

すべて展開する

ワークスペースにログを作成するデータを受け取る入力端子。To Workspace ブロックは、バス、列挙型、固定小数点データなど、任意の組み込みデータ型またはユーザー定義のデータ型の実数データおよび複素数データのログ記録をサポートしています。

ヒント

固定小数点データのログ記録には、Fixed-Point Designer™ のライセンスが必要です。

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

パラメーター

すべて展開する

ログ データを格納する変数の名前を指定します。既定では、To Workspace ブロックによって simout という変数にログ データが保存されます。モデルに複数の To Workspace ブロックが含まれている場合、各ブロックの [変数名] パラメーター値は一意である必要があります。

MATLAB® 変数の命名の詳細については、変数名を参照してください。

プログラムでの使用

ブロック パラメーター: VariableName
型: string | 文字ベクトル
値: 有効な MATLAB 変数名
既定の設定: 'simout'

シミュレーションの最後の時点からのデータのみを保存または解析する場合は、ログに記録するサンプルの数をゼロより大きい正の整数として指定します。既定では、To Workspace ブロックはシミュレーション全体のデータをログに記録し、[直近のデータ点数に制限] パラメーターの値は inf です。

シミュレーション時にログに記録されるサンプルを制御する方法の詳細については、ログに記録する信号値の指定を参照してください。

プログラムでの使用

ブロック パラメーター: MaxDataPoints
型: string | 文字ベクトル
値: 'inf' | ゼロより大きい正の整数
既定の設定: 'inf'

ログ データの有効なサンプル レートを削減する間引き係数を指定します。間引き係数 n に対して、To Workspace ブロックは n 個ごとにサンプル値をログに記録します。たとえば、[間引き] 値を 2 に指定すると、To Workspace ブロックはデータ点を 1 つおきにログに記録します。

シミュレーション時にログに記録されるサンプルを制御する方法の詳細については、ログに記録する信号値の指定を参照してください。

プログラムでの使用

ブロック パラメーター: Decimation
型: string | 文字ベクトル
値: スカラー
既定の設定: '1'

ワークスペースに記録されるデータの形式を指定します。バスまたはバス配列の入力のデータを記録するには、[timeseries] 形式を使用します。

[保存形式]ワークスペースのデータ形式シミュレーション ワークフローのサポート
時系列

timeseries オブジェクトとしてログに記録される非バス入力。

timeseries オブジェクトの構造体としてログに記録されるバス入力。構造体のフィールドに対する階層と名前は、バスを定義する Simulink.Bus オブジェクトで指定された階層および名前と一致します。

timeseries オブジェクトの構造体の配列としてログに記録されるバス配列の入力。

サポートあり:

  • ノーマル モード シミュレーション

  • アクセラレータ モード シミュレーション

  • ラピッド アクセラレータ モード シミュレーション (R2022a 以降)

  • XCP 通信を使用するエクスターナル モード シミュレーション (StreamToWks'on' に設定され、MATFileLogging'off' に設定されている場合)

サポートなし:

  • TCP/IP またはシリアル通信を使用するエクスターナル モード シミュレーション

  • ソフトウェアインザループ (SIL) シミュレーション

  • プロセッサインザループ (PIL) シミュレーション

  • Simulink Coder™ ターゲットのコード生成

時間付き構造体

以下のフィールドを含む構造体としてログに記録される非バス入力:

  • time — 入力値がログに記録されるシミュレーション時間ヒットの列ベクトル。

  • signals — 以下のフィールドを含むサンプル値をもつ構造体:

    • values — サンプル値の配列。

    • dimensions — サンプル次元。

    • label — モデル内の信号線の名前。

  • blockNameTo Workspace ブロックの名前。

常にサポートあり:

  • ノーマル モード シミュレーション。

  • XCP 通信を使用するエクスターナル モード シミュレーション (StreamToWks'on' に設定され、MATFileLogging'off' に設定されている場合)

To Workspace ブロックが参照モデル内にある場合を除いてサポートされる:

  • アクセラレータ モード シミュレーション

  • ラピッド アクセラレータ モード シミュレーション

  • TCP/IP またはシリアル通信を使用するエクスターナル モード シミュレーション

To Workspace ブロックが参照モデル内にある場合を除いて、生成コードに対して [MAT ファイルのログ] (Simulink Coder) が有効になっている場合にサポートされる:

  • ソフトウェアインザループ (SIL) シミュレーション

  • プロセッサインザループ (PIL) シミュレーション

  • Simulink Coder ターゲットのコード生成

構造体

[時間付き構造体] 形式と一致する構造体としてログに記録されるが、構造体の time フィールドが空である非バス入力。

配列

N 次元配列として保存される非バス入力のサンプル値。ここで、N は入力の次元数よりも 1 大きい数値です。以下に例を示します。

  • スカラー信号データは列ベクトルとしてログに記録される。

  • ベクトル信号データは行列としてログに記録される。

  • 行列信号データは 3 次元配列としてログに記録される。

配列内の値の構造は入力信号データの次元によって決まります。

  • スカラー信号とベクトル信号の場合、各サンプル値は出力配列内の行です。配列の最初の次元が時間と一致し、simout(1,:) は最初にログに記録された信号値を返します。

  • 行列信号の場合、出力配列の 3 番目の次元が時間と一致し、simout(:,:,1) は最初にログに記録された信号値を返します。

  • N 次元の信号の場合、最後の次元が時間と一致し、最後の次元の要素数は、シミュレーションからログに記録されたサンプルの数と等しくなります。

出力配列には信号値のみが含まれ、時間データは含まれません。

ヒント

  • サンプルベースではなくフレームベースとしてデータをログに記録するには、次の手順に従います。

    • [構造体] 形式または [配列] 形式を使用してデータがログに記録されるように [保存形式] パラメーターを設定します。

    • [2 次元信号の保存形式] パラメーターを [2 次元配列 (最初の次元と連結)] として指定します。

  • From Workspace ブロックを使用してログ データを読み込む場合は、[timeseries] 形式または [時間付き構造体] 形式の使用を検討してください。[配列] 形式を使用してデータをログに記録する場合、データを読み込む前にサンプル時間の値を配列に組み込む必要があります。

プログラムでの使用

ブロック パラメーター: SaveFormat
型: string | 文字ベクトル
値: 'Timeseries' | 'Structure with Time' | 'Structure' | 'Array'
既定の設定: 'Timeseries'

2 次元入力データを 3 次元配列または 2 次元配列としてログに記録するかどうかを指定します。

3 次元配列としてのログ記録は、サンプルベースの入力データに適しています。サンプルは 3 番目の次元に沿って連結され、2 次元サンプル データに簡単にアクセスできるようになります。

2 次元配列としてのログ記録は、フレームベースの入力データに適しています。サンプルは最初の次元に沿って連結されます。これにより、実質的に最初の次元からバッファリングされるフレームが削除されます。

入力データの次元2 次元信号の保存形式ワークスペースのデータ次元
M 行 N 列2 次元配列 (最初の次元に沿って連結)

K 行 N 列の行列。ここで、K はシミュレーションからログに記録されたサンプルの数の M 倍に等しくなります。

たとえば、24 列の行列入力のサンプルを 10 個ログに記録すると、204 列の行列が作成されます。

3 次元配列 (3 番目の次元と連結)

M×N×K の配列。ここで、K はシミュレーションからログに記録されたサンプルの数と等しくなります。

たとえば、24 列の行列入力のサンプルを 10 個ログに記録すると、2×4×10 の配列が作成されます。

依存関係

このパラメーターを有効にするには、[保存形式][配列] または [構造体] に設定します。

プログラムでの使用

ブロック パラメーター: Save2DSignal
型: string | 文字ベクトル
値: '2-D array (concatenate along first dimension)' | '3-D array (concatenate along third dimension)'
既定の設定: '3-D array (concatenate along third dimension)'

固定小数点入力データのログを記録する方法を指定します。既定の設定では、To Workspace ブロックは固定小数点データのログを fi (Fixed-Point Designer) オブジェクトとして記録します。このパラメーターをオフにすると、To Workspace ブロックは固定小数点入力データのログを double として記録します。

次を行う場合、To Workspace ブロックは常に固定小数点データのログを fi オブジェクトとして記録します。

  • ラピッド アクセラレータ モードでモデルをシミュレートする。

  • [保存形式] パラメーターを [timeseries] として指定する。

To Workspace ブロックを使用して固定小数点データのログを記録するには、Fixed-Point Designer のライセンスが必要です。

プログラムでの使用

ブロック パラメーター: FixptAsFi
型: string | 文字ベクトル
値: 'off' | 'on'
既定の設定: 'off'

シミュレーション中にブロックが入力値をログに記録するタイミングを指定します。既定の設定で、サンプル時間は継承されます (-1)。連続サンプル時間の場合、値を 0 として指定します。離散サンプル時間を使用する場合は、[サンプル時間] パラメーターをスカラーとして指定します。詳細については、サンプル時間の指定を参照してください。

プログラムでの使用

ブロック パラメーター: SampleTime
型: string | 文字ベクトル
値: スカラー
既定の設定: '-1'

ブロックの特性

データ型

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

直達

いいえ

多次元信号

はい

可変サイズの信号

はい

ゼロクロッシング検出

いいえ

ヒント

  • To Workspace ブロックを使用してログに記録されたデータを [データセット] 形式に変換できます。[データセット] 形式を使用する信号のログなど、他のログ手法を使用する場合にデータを変換すると、後処理が簡単になります。詳細については、timeseries オブジェクトから Dataset オブジェクトへの変換を参照してください。

  • モデルをシミュレートする関数を呼び出す場合、シミュレーションに記録されるデータはその関数のワークスペースに返されます。関数内のシミュレーションからログに記録されたデータをベース ワークスペースに返すには、関数 assignin を使用します。たとえば、myfunc というこの関数はモデル myModel をシミュレートします。これには、データのログを変数 simout に記録し、To Workspace ブロックによってログに記録されたデータをベース ワークスペースに送信する To Workspace ブロックが含まれます。

    function myfunc
        out = sim("myModel");
        toWksData = get(out,"simout");
        assignin("base","toWksData",toWksData);
    end
    

拡張機能

PLC コード生成
Simulink® PLC Coder™ を使用して構造化テキスト コードを生成します。

固定小数点の変換
Fixed-Point Designer™ を使用して固定小数点システムの設計とシミュレーションを行います。

バージョン履歴

R2006a より前に導入

すべて展開する