ドキュメンテーション センター

  • 評価版
  • 製品アップデート

目次

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

バスの timeseries オブジェクトの構造体のインポート

インポートされたバス データの要件

バス オブジェクトによって定義されたルートレベルの入力端子 (「Simulink.Bus」を参照) は、値を指定するバス要素を表す MATLAB® timeseries オブジェクトの構造体からデータをインポートできます。構造体のフィールドに含めないバス要素は、グラウンド値を使用します。

MATLAB timeseries オブジェクトの構造体は、以下についてバス要素と一致しなければなりません。

  • 階層

  • 構造体の名前は、バス要素名と一致しなければなりません。timeseries オブジェクトのname プロパティは、バス要素名と一致する必要はありません。

  • データ型

  • 次元

  • 実数/複素数

構造体フィールドの順序は、バス要素の順序と一致する必要はありません。

Simulink.TsArray オブジェクトの変換

[コンフィギュレーション パラメーター][データのインポート/エクスポート][信号のログ形式] パラメーターが既定の Dataset 形式でなく、ModelDataLogs 形式に設定されているモデルのログ データを使用する場合は、データを変換して MATLAB timeseries オブジェクトの構造体を使用するようにしてください。下位互換性のために ModelDataLogs 形式がサポートされています。ModelDataLogs 形式は将来のリリースで削除される予定です。

MATLAB timeseries オブジェクトの構造体は、Simulink.TsArray オブジェクトから作成できます。たとえば、tsaSimulink.TsArray オブジェクトである場合は、以下のようになります。

input = Simulink.SimulationData.createStructOfTimeseries(tsa);

    メモ:   複数のルート Inport ブロックをもつモデル内の 1 つのルート Inport ブロックに MATLAB timeseries オブジェクトの構造体を使用する場合、すべてのルート Inport ブロックは MATLAB timeseries オブジェクトを使用しなければなりません。Simulink.TsArray または Simulink.Timeseries オブジェクトを使用するルート Inport ブロック データはすべて MATLAB timeseries オブジェクトに変換してください。

バス データのインポート

バス データをルート Inport ブロックにインポートするようにモデルを設定するには、以下の手順に従います。

この手順の例では、以下のように設定されたモデルがあると仮定しています。

  • TopBusObject バス オブジェクトには以下の 2 つの要素があります。

    • c

    • s1。このサブバスには 2 つの要素があります。ab です。

  • モデルには 2 つの Inport ブロックがあります。In1In2 です。

    • In1 Inport ブロックはバス以外のデータをインポートします。

    • In2 Inport ブロックは TopBusObject 型のバス データをインポートします。

  1. バス以外のデータをインポートする各ルート Inport または Trigger ブロックに対して MATLAB timeseries オブジェクトを作成します。

    以下に例を示します。

    N = 10;
    Ts = 1;
    t1 = ((0:N)* Ts)'; 
    d1 = sin(t1);
    in1 = timeseries(d1,t1)
  2. MATLAB timeseries オブジェクトの構造体を作成します。グラウンドの値を使用しないリーフ バス要素ごとに 1 つの timeseries オブジェクトの構造体を作成します。

    たとえば、s2 バス内のすべての要素に対してグラウンド以外の値を指定するには、以下のようにします。

    in2.c = timeseries(d1,t1);
    in2.s1.a = timeseries(d2,t2);
    in2.s1.b = timeseries(d3,t3);
    

    作成した MATLAB timeseries オブジェクトは、「インポートされたバス データの要件」で説明されているように、対応するバス要素と一致しなければなりません。

    バスから timeseries オブジェクトの構造体を作成するために必要な MATLAB timeseries オブジェクトの数とデータ型、実数/複素数、次元を判断するには、Simulink.Bus.getNumLeafBusElements メソッドと Simulink.Bus.getLeafBusElements メソッドを使用できます。たとえば、バス オブジェクト MyBus の場合、以下のようにします。

    num_el = MyBus.getNumLeafBusElements;
    el_list = MyBus.getLeafBusElements;

    timeseries または Simulink.Timeseries オブジェクトのバス オブジェクトおよびセル配列から MATLAB timeseries オブジェクトの構造体を作成するには、Simulink.SimulationData.createStructOfTimeseries ユーティリティを使用します。例:

    input = ...
    Simulink.SimulationData.createStructOfTimeseries('MyBus',...
    {ts1,ts2,ts3});

    セル配列内の timeseries オブジェクトの数は、バス オブジェクト内のリーフ要素の数 (この例では、num_el) と一致しなければなりません。各 timeseries オブジェクトのデータ型、次元および複雑度は、対応するバス オブジェクトのリーフ ノードの各属性 (この例では、el_list に列挙された属性) と一致しなければなりません。

  3. [コンフィギュレーション パラメーター][データのインポート/エクスポート][入力] パラメーターのエディット ボックスで、コンマ区切りの MATLAB timeseries オブジェクトと MATLAB timeseries オブジェクトの構造体のリストを入力します。

    たとえば、in1 timeseries オブジェクト、および timeseries オブジェクトの in2 構造体などです。

バス データの配列のインポート

ルート Inport ブロックを使用してバス データの配列をインポート (読み込み) するには、MATLAB timeseries オブジェクトの構造体の配列を使用します。

    メモ:   Enable、Trigger、From Workspace または From File の各ブロックを使用して、バス データの配列をインポートすることはできません。

データのフル仕様

以前のシミュレーションで取得したバス信号の配列のログ データを後続のシミュレーション実行でルートレベルの Inport ブロックへのラウンド トリップ入力として使用できます。ログ データは、Inport ブロックのデータのフル仕様に該当します。

MATLAB timeseries オブジェクトの構造体の配列を作成して、インポートするデータを完全に指定する場合、以下のようにします。

  • バス信号内の信号と同じ順序で構造体のフィールドを指定してください。

  • バス内の信号よりも多くのフィールドを構造体に含めないでください。

    リーフ フィールドについては、バス内の対応する信号のデータ型、次元および複雑度と正確に一致させてください。

データの部分的仕様

バスの配列の部分データを指定するには、リーフ ノードで MATLAB timeseries オブジェクトを使用して構造体の MATLAB 配列を作成します。

部分データを指定する目的で作成する構造体は、以下のルールに従わなければなりません。

  • リーフ ノードやサブ分岐など、フィールドを省略できます。次元も省略できます。フィールドを指定しない場合、Simulink® はそのフィールドのグラウンド値を使用します。

  • サブバス ノードについては、バスの配列の対応するノードの次元以下に各フィールドの次元を設定します。

この例は、データ型がバス オブジェクト MyBus として定義されたルート Inport ブロックを使用して、インポート対象の部分データを指定する方法を示します。モデル (ex_partial_loading_aob_modelex_partial_loading_aob_model) と、インポートするデータを定義する MATLAB コード (ex_partial_loading_aob_data.mex_partial_loading_aob_data.m) を開くことができます。

ex_partial_loading_aob_model のシミュレーションを実行すると、以下のようになります。

input Inport ブロックは、MyBus バス オブジェクトをデータ型として使用します。

バスの MyBus 配列には、MyBus(1)MyBus(2) が含まれます。バスの配列に含まれる 2 つのバスを反映するため、端子の次元は 2 に設定されて、[非バーチャル バスとして出力] が有効になります。

MyBus(1)MyBus(2) を含む、バスの配列の要素を以下に示します。強調色は、データがインポートされるバスの配列のノードを強調表示します。

インポートするデータを定義する MATLAB コードを以下に示します。コードを強調表示する色は、バスの配列の対応するノードの色と一致します。このモデルで使用されたコードを表示するには、MATLAB コード ファイル ex_partial_loading_aob_data.mex_partial_loading_aob_data.m を開きます。

インポート データを定義するコードは、以下のように規定されます。

  • timeseries オブジェクト MyBusValue は、強調表示されたノードのデータを指定します。

  • MyBus(2)timeseries オブジェクト BT は、BT がリーフ ノードに該当するので、対応するバス要素の次元、データ型および複雑度と正確に一致しなければなりません。

  • 構造体は、Y(2) のデータを指定します。Y の最初のサブバスと最後のサブバス (つまり、Y(1)Y(3)) は省略できます。

この例では、Y(2) のデータを指定します。Y の最初のサブバスと最後のサブバス (つまり、Y(1)Y(3)) は省略できます。

インポート データの MyBusValue 変数を指定したら、[コンフィギュレーション パラメーター][データのインポート/エクスポート][入力] パラメーターを MyBusValue に設定します。

この情報は役に立ちましたか?