Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

In Bus Element ブロックを使用したバスの入力データの読み込み

In Bus Element ブロックを使用してバスに対する外部入力データを読み込むことができます。In Bus Element ブロックを使用すると、バスの外部インターフェイスの柔軟な設計と実装が可能になります。In Bus Element ブロックは、バスの要素のデータの読み込みにもバス全体のデータの読み込みにも使用できます。また、In Bus Element ブロックを複数使用して同じバス要素を選択することもできます。

この例では、In Bus Element ブロックを使用してバス要素の入力データを読み込む方法を示します。In Bus Element ブロックを使用してバス全体に対するデータを読み込む場合、Simulink.Bus オブジェクトを使用して In Bus Element ブロックのデータ型を指定しなければなりません。

モデルを開いて検証

ex_load_inbuselement モデルを開きます。

open_system('ex_load_inbuselement.slx')

モデルの端子は 1 つ以上の In Bus Element ブロックで定義できます。ex_load_inbuselement モデルでは、1 つの端子 InBus が 3 つの In Bus Element ブロックで定義されています。それぞれの In Bus Element ブロックのラベルは、そのブロックで選択するバス要素を示しています。InBus 端子は、信号 x および y が入れ子にされたバス a と個別の信号 b を含むバスに対応します。

モデルの端子でシミュレーションの入力として読み込むワークスペース データは、[データのインポート/エクスポート] ペインの [入力] パラメーターを使用して指定します。ex_load_inbuselement モデルの [入力] パラメーターでは、In Bus Element ブロックのダイアログ ボックスの [端子番号] の定義に応じて端子にマッピングする変数 struct1 が読み込まれます。

入力データの作成

バス データを読み込む端子は、timeseriestimetable、および matlab.io.datastore.SimulationDatastore の個別のオブジェクトで構成される構造体を受け入れます。構造体の階層はバスの階層と一致していなければなりません。In Bus Element ブロックを使用してバス要素を選択する端子では、データの部分指定と過剰指定が可能です。

この例では、正弦波、直線、および定数に対応する 3 つの timeseries 信号を使用して構造体を作成します。

time = linspace(0,10,11);
sineData = sin(time);
constData = 3*ones(11,1);
lineData = linspace(0,10,11);

tsSine = timeseries(sineData,time);
tsConst = timeseries(constData,time);
tsLine = timeseries(lineData,time);

モデルの端子に入力データを提供する構造体 struct1 を作成します。構造体フィールドの名前はバス要素の名前と一致していなければなりません。

struct1.a.x = tsConst;
struct1.a.y = tsLine;
struct1.b = tsSine;

入力データの完全指定

前の節で作成したデータは、モデルの In Bus Element ブロックで選択される信号の完全指定のデータです。モデルをシミュレートし、Dashboard Scope ブロックで信号を観察します。

入力データの部分指定

In Bus Element ブロックを使用してバス要素を選択する場合、使用する構造体に選択される 1 つ以上の要素を含めないようにすることでデータの部分指定が可能です。構造体でデータが定義されていない要素については、シミュレーションでグラウンド信号の値が使用されます。

たとえば、要素 InBus.a.y を選択する In Bus Element ブロックのラベルを編集し、その In Bus Element ブロックで InBus.a.z が選択されるようにします。InBus 端子にマッピングする構造体で、入れ子にされた構造体 az のフィールドは含まれていません。この構造体を変更せずにモデルをシミュレートすると、 Dashboard Scope で InBus.a.z のグラウンドが示されます。

InBus.a.z を選択する In Bus Element 端子ブロックを変更して InBus.a.y を選択するように戻します。

入力データの過剰指定

In Bus Element ブロックを使用してバス要素を選択する場合、端子のデータの過剰指定が可能です。過剰指定の入力データには、モデルのいずれの In Bus Element ブロックでも選択されない信号が含まれます。

たとえば、InBus.a.y を選択する In Bus Element ブロックのラベルを InBus.b を選択するように変更します。これにより、InBus.a.y はいずれの In Bus Element ブロックでも選択されなくなりますが、構造体にはその要素のデータがそのまま残ります。

モデルをシミュレートし、Dashboard Scope ブロックで信号を観察します。

参考

ブロック

オブジェクト

関数

関連するトピック