このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
In Bus Element ブロックを使用したバスの入力データの読み込み
In Bus Element ブロックを使用してバスに対する外部入力データを読み込むことができます。In Bus Element ブロックを使用すると、バスの外部インターフェイスの柔軟な設計と実装が可能になります。
In Bus Element ブロックは、バスの要素に対するデータを読み込むことも、バス全体に対するデータを読み込むこともできます。In Bus Element ブロックを使用してバス全体に対するデータを読み込む場合、Simulink.Bus
オブジェクトを使用してブロックのデータ型を指定しなければなりません。
複数の 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
が読み込まれます。
入力データの作成
バス データを読み込む端子は、timeseries
、timetable
、および matlab.io.datastore.SimulationDatastore
の個別のオブジェクトで構成される構造体を受け入れます。構造体の階層はバスの階層と一致していなければなりません。In Bus Element ブロックを使用してバス要素を選択する端子では、データの部分指定と過剰指定が可能です。
In Bus Element ブロックは、string
、enumerated
、fixed point
を除くすべてのデータ型に対して読み込まれたデータを内挿します。
この例では、正弦波、直線、および定数に対応する 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
端子にマッピングする構造体で、入れ子にされた構造体 a
に z
のフィールドは含まれていません。この構造体を変更せずにモデルをシミュレートすると、 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 ブロックで信号を観察します。