ドキュメンテーション

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

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

この例では、In Bus Element ブロックを使用してバスの入力データを読み込む方法を示します。In Bus Element ブロックを使用すると、バスの外部インターフェイスの柔軟な設計と実装が可能になります。In Bus Element ブロックは、バスの要素のデータの読み込みにもバス全体のデータの読み込みにも使用できます。また、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 ブロックで信号を観察します。