Main Content

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

ルート レベルの入力端子へのバス データの読み込み

[入力] コンフィギュレーション パラメーターでデータを手動で指定するか、ルート Inport マッパー ツールを使用することで、バス データを最上位の入力端子にインポートできます。ルート Inport マッパー ツールを使用したバス データのインポートの詳細については、バス データのインポートを参照してください。

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

バス (バーチャル、非バーチャル、バス配列) データをバス オブジェクトで定義した最上位レベルの入力端子にインポートできます (Simulink.Bus を参照)。最上位の Inport ブロックで、[データ型][バス] に設定し、バス オブジェクトの名前を指定します。バス信号のデータ値を指定するには、次の構造体を使用します。

  • MATLAB® timeseries オブジェクト

  • MATLAB timetable オブジェクト

  • timeseries オブジェクトと timetable オブジェクトの組み合わせ

構造体のフィールドに含めないバス要素は、グラウンド値を使用します。空行列を使用して、グラウンド値を使用するように指定できます。

メモ

読み込む timetable データを指定するとき、timetable には 1 つの信号のみのデータを含めなければなりません。

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

  • 階層

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

  • データ型

  • 次元

  • 実数/複素数

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

構造体を Dataset オブジェクトの要素として含めることができます。構造体はコンマ区切りのリストで使用できます。コンマ区切りのリストには空の行列を指定できます。空の行列は、バス信号にグラウンド値を使用します。

たとえば、入力端子 in1 および in3 のデータを読み込み、端子 in2 にグラウンド値を使用して、[入力] パラメーターに次を入力します。

in1, [], in3

バス信号の初期化

初期化データの部分仕様の使用を含む、バス信号を初期化できます。詳細については、バス要素の初期条件の指定を参照してください。

バス配列のデータをルートの Inport ブロックにインポートする場合の詳細については、バス配列のデータのインポートを参照してください。

最上位の入力へのバス データのインポートの制限

ルート Inport マッパー ツールを使用した最上位の Inport ブロックへのインポートおよびマッピングを行う信号データには、バス データを含めることができます。このツールを使用して、バス信号を最上位の Enable ブロックまたは Trigger ブロックにマッピングすることはできません。

エクスターナル モードで入力端子を使用してバスをインポートすることはできません。ラピッド アクセラレータ モードでバス データをインポートするには、[データセット] 形式を使用します。

サンプル マテリアルを開く

この例では次のファイルを使用します。

  • InportLoadingBus:バスの入力データを読み込むように構成された最上位の Inport ブロックを含むモデル

  • LoadPartialAOB:バス配列の部分入力データを読み込むモデル

  • partialAOBData.m:モデル LoadPartialAOB で読み込む Simulink.Bus オブジェクトとデータを作成する関数

  • BasicColors.m:この例の Simulink.Bus オブジェクトで使用するデータ型を定義する列挙クラス定義

これらのファイルにアクセスするには、[Open Live Script] をクリックします。次に、必要なファイルを開くコードを実行します。

モデル InportLoadingBus を開きます。

open_system("InportLoadingBus")

モデル LoadPartialAOB を開きます。

open_system("LoadPartialAOB")

MATLAB® ファイル partialAOBData.m を開きます。

edit("partialAOBData.m")

列挙クラス定義ファイル BasicColors.m を開きます。

edit("BasicColors.m")

最上位の Inport へのバス データのインポート

このモデルには、Scope ブロックに接続された 2 つの Inport ブロックがあります。In1 ブロックのデータ型は継承 (非バス データ) であり、In2 ブロックのデータ型はバス オブジェクト BusObject によって定義されます。モデルには BusObject とそのサブバス BusObject1 を読み込むコールバックがあります。

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

  • c

  • s1。次の 2 つの要素を含む入れ子にされたバスです。

    • a

    • b

  1. モデル InportLoadingBus を開きます。

  2. 1 つ目の入力端子で読み込むデータを格納する timeseries オブジェクトを作成します。この入力端子では非バス データを読み込みます。

    t1 = (1:10)';
    d1 = sin(t1);
    in1 = timeseries(d1,t1);
  3. timeseries オブジェクト、timetable オブジェクト、またはこれらのオブジェクトのタイプの組み合わせで構成できる入力構造体を作成します。グラウンド値を使用しないリーフ バス要素ごとに 1 つの timeseries または timetable オブジェクトを作成します。この例では b バス要素のグラウンド値を使用するため、この要素の timeseries または timetable オブジェクトは必要ありません。

    t2 = (1:5)';
    d2 = cos(t2);
    in2.c = timeseries(d1,t1);
    in2.s1.a = timetable(seconds(t2),d2);

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

  4. Dataset オブジェクトを作成し、in1 および in2 をオブジェクトに追加します。

    ds = Simulink.SimulationData.Dataset;
    ds = ds.addElement(in1,'in1_signal');
    ds = ds.addElement(in2,'in2_signal');
  5. [コンフィギュレーション パラメーター] ダイアログ ボックスを開きます。[モデル化] タブで、[モデル設定] をクリックします。

  6. [データのインポート/エクスポート] ペインで [入力] を選択します。

  7. [入力] フィールドに Dataset オブジェクト ds の名前を入力します。

  8. モデルをシミュレートします。2 つ目の入力端子に接続された Scope ブロックは、インポートされたバス データを表示します。

バス オブジェクトの情報の取得

バスから timeseries オブジェクトの構造体を作成するために必要な timeseries オブジェクトの数とデータ型、実数/複素数、次元を判断するには、以下のメソッドを使用します。

たとえば、バス オブジェクト BusObject の場合、以下のようにします。

numElem = getNumLeafBusElements(BusObject)
numElem =

     3
elemList = getLeafBusElements(BusObject)
elemList = 

  3x1 BusElement array with properties:

    Min
    Max
    DimensionsMode
    SampleTime
    Description
    Units
    Name
    DataType
    Complexity
    Dimensions
elemList(1).Dimensions
ans =

     1

Timeseries オブジェクトの構造体のバスからの作成

定義された timeseries オブジェクトがある場合、これを使用して、バス オブジェクトに基づいて timeseries オブジェクトの構造体を作成できます。関数 Simulink.SimulationData.createStructOfTimeseries を使用します。たとえば、timeseries オブジェクト ts1ts2 および ts3 を定義して、バス オブジェクト MyBusObject を定義している場合、次のコマンドを使用して、timeseries オブジェクトの構造体を作成できます。

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

cell 配列内の timeseries オブジェクトの数は、バス オブジェクト内のリーフ要素の数と一致しなければなりません。各 timeseries オブジェクトのデータ型、次元および実数/複素数は、対応するバス オブジェクトのリーフ ノードの各属性と一致しなければなりません。

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

最上位の Inport ブロックを使用してバス配列のデータを読み込むには、timeseries オブジェクトの構造体の配列を使用します。

メモ

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

データのフル仕様

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

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

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

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

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

データの部分的仕様

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

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

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

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

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

モデルをシミュレートすると、バス配列の要素に接続されたいくつかの Display ブロックでバスのグラウンド値 DefaultColor が表示されることがわかります。バス配列の他の要素に接続されたそれ以外の Display ブロックでは、バス配列の部分データで定義された値が表示されます。

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

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

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

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

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

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

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

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

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

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

参考

関連するトピック