主要内容

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

总线オブジェクトを使ったインターフェイス指定

この例では,バスを参照モデルに伝播する方法を示します。また,親モデルからのログ信号データを使用して参照モデルを個別にシミュレートする方法も説明します

モデル例を開く

モデル例sldemo_mdlref_busを開いて,シミュレートします。

モデルの確認

このモデルには,単純なカウンターのモデルであるsldemo_mdlref_counter_busを参照するCounterAという名前の模型ブロックが含まれています。

COUNTERBUSという名前のバス配列により,データと,このカウンターの飽和の上限および下限が,モデルに入力されます。COUNTERBUSという名前のバスにはそれぞれ 2 つの要素 (データ信号と LIMITBUS という名前の入れ子のバス) が含まれています。データはカウントに使用され、LIMITBUS にはカウンターの上限値および下限値が含まれています。

模型ブロックには,INCREMENTBUSという名前のバスに接続する2つ目の入力端子があります。このバスには,インクリメントの変更とカウンターのリセットを行う要素が含まれています。

このモデルはsldemo_mdlref_bus.slddという名前のデータディクショナリファイルを使用します。このファイルには,COUNTERBUS, LIMITBUS, INCREMENTBUSの要素を定義する金宝app仿真软件。公共汽车オブジェクトが含まれています。

公共汽车オブジェクトを表示するには,バスエディターを開きます。金宝app仿真软件®ツールストリップの[モデル化)タブの[設計]ギャラリーで,[バスエディター]をクリックします。

公共汽车オブジェクトは,以下の总线创造者ブロックの出力を指定するためにモデルで使用されます。

  • COUNTERBUSCreator1

  • COUNTERBUSCreator2

  • LIMITBUSCreator1

  • LIMITBUSCreator2

  • IncrementBusCreator

sldemo_mdlref_counter_bus内にあるcounter_inputという名前の尺寸ブロックは,COUNTERBUSという名前の公共汽车オブジェクトを指定します。ブロックをダブルクリックします。[ブロック パラメーター] ダイアログ ボックスの[信号属性]タブで,[データ型)总线:COUNTERBUSに設定します。

increment_inputという名前の尺寸ブロックも同様に,INCREMENTBUSという名前の公共汽车オブジェクトを使用するように設定されます。

信号データのログ

以下の信号は,信号ログ記録用にマークされています。

  • COUNTERBUS

  • INCREMENTBUS

  • OUTERDATA

  • INNERDATA

このモデルのシミュレーション後,ログ信号は,ベースワークスペース内で変数topOutとして使用できます。

topOut = 金宝appSimulink.SimulationData.Dataset topOut BlockPath 4个元素名称  ____________ ________________________________________ 1 [1 x1信号]COUNTERBUS sldemo_mdlref_bus /连接2 [1 x1信号]OUTERDATA sldemo_mdlref_bus / CounterA 3 [1 x1信号]INCREMENTBUS sldemo_mdlref_bus / IncrementBusCreator 4 [1 x1信号]INNERDATA……erA|sldemo_mdlref_counter_bus/COUNTER -使用大括号{}访问、修改或使用索引添加元素。

このモデルでは,信号のログに数据集形式を使用します。与えられた信号の数据集形式のログデータにアクセスするには,getElementメソッドを使用します。

topOut.getElement(“COUNTERBUS”)
ans = 金宝appSimulink. simulationdata . signal Package: Simulink。SimulationData属性:Name: 'COUNTERBUS' PropagatedName: " BlockPath: [1x1 Simulink.Si金宝appmulationData. BlockPath: [1x1 Simulink.SimulationData. BlockPath] "BlockPath] PortType: 'outport' PortIndex: 1 Values: [2x1 struct]

バスデータは,MATLAB®構造体としてフィールドにログが作成されます。

topOut.getElement . values(“COUNTERBUS”)
Ans = 2x1带有字段的结构数组:数据限制

この構造体は,各バスのMATLABtimeseriesオブジェクトを含みます。

topOut.getElement (COUNTERBUS) . values (1) . data
timeseries公共属性:Name: 'data' Time: [301x1 double] TimeInfo: tsdata. timeseries公共属性:Name: 'data' Time: [301x1 double] TimeInfo: tsdata. timeseriestimeemetdata数据:[301x1 int32] DataInfo: tsdata. datametdata . timeemetdata
topOut.getElement (COUNTERBUS) . values (2) . data
timeseries公共属性:Name: 'data' Time: [301x1 double] TimeInfo: tsdata. timeseries公共属性:Name: 'data' Time: [301x1 double] TimeInfo: tsdata. timeseriestimeemetdata数据:[301x1 int32] DataInfo: tsdata. datametdata . timeemetdata

ログデータを関数情节を使用してプロットすることもできます。

topOut.getElement (OUTERDATA) .Values.plot ()

参照モデル信号のログ作成

参照モデルに信号を記録するには,模型ブロックを選択し,(模型ブロック]タブで(信号のログ]をクリックします。

このモデルでは,[ログモード]按照模型中的规定记录所有信号に設定されています。sldemo_mdlref_counter_busを最上位モデルとしてシミュレーションするときにログ記録されるすべての信号は,参照モデルとしてシミュレーションするときにもログ記録されます。これらの信号のいずれかのログを変更するか,信号のサブセットのログを作成する場合は,以下の手順に従います。

  1. [ログモード]を[覆盖信号]に設定します。

  2. このモデルでは按照模型中的规定记录所有信号設定を使用すべきでないことを示すために,[モデルの階層構造)ペインの[CounterA (sldemo_mdlref_counter_bus))チェックボックスをクリアします。

  3. 最上位モデルのシミュレーション時にログを作成する信号をテーブルで選択します。

  4. この変更を保存するには,最上位モデルを保存します。

データの読み込み

模型ブロックの左下隅にある(最上位モデルとして開く]バッジをクリックして,参照モデルsldemo_mdlref_counter_busを最上位モデルとして開きます。

参照モデルは,ログが作成された信号データをルートの尺寸ブロックを通じて読み取るように設定されています。この構成を確認するには,[コンフィギュレーションパラメーター]ダイアログボックスを開きます。金宝app仿真软件ツールストリップの[モデル化)タブで[モデル設定)をクリックします。[データのインポート/エクスポート]タブの[入力]では,コンマ区切りのリストを使用して2つの入力端子のtopOutからのログデータを指定します。counter_input端子は時系列構造体の配列を使用してCOUNTERBUSのデータを読み込み,increment_input端子は時系列構造体を使用してINCREMENTBUSのデータを読み込みます。

  • topOut.getElement(“COUNTERBUS”)

  • topOut.getElement(“INCREMENTBUS”)

[入力]フィールドは,(入力の接続)ボタンをクリックすると設定できます。ルート尺寸マッパーツールが開きます。この例では,ツールはマッピングアルゴリズムを使用してベースワークスペースのログデータから[入力]フィールドを設定します。

インポートするデータを選択するには,次の手順を実行します。

  1. ルート尺寸マッパーで,[ワークスペースから]をクリックします。

  2. ログが作成されたデータtopOutを選択し,(好的)をクリックします。

  3. 開いたダイアログボックスでファイル名を指定して,[保存]をクリックします。

データがルート尺寸マッパーツールに読み込まれたので,入力データを割り当てるルートの入力端子を決定できます。金宝app仿真软件は,これらの基準(ブロック名,ブロックパス,信号名,端子の順序,カスタムアルゴリズム)のいずれかに基づいて,入力データと入力端子を対応させます。モデルから信号名を使用してtopOutのログが作成されるため,マッピングの基準には[信号名]が最適な選択です。この基準を使用すると,金宝app仿真软件は入力データの変数名と入力信号の名前を対応させようと試みます。

このオプションを選択するには,以下のようにします。

  1. [ルート尺寸マッパー]階層ペインで,シナリオデータセットtopOutを選択します。

  2. [信号名]ラジオボタンをクリックします。

  3. [モデルにマッピング]ボタンの矢印をクリックしてから,[すべてをマッピング]をクリックします。

データをマッピングする際,金宝app仿真软件は入力データに対して入力端子を評価し,互換性を判断します。[ルート尺寸マッパー]テーブルには,この互換性のステータスが,緑のチェックマーク,オレンジの警告三角マーク,または赤のエラー感嘆符マークで示されます。この例では,テーブルには緑のステータスが表示され,互換性の問題がないことを示します。入力データから入力端子へのこのようなマッピングを使用して,モデルをシミュレートできます。マッピングによって,[コンフィギュレーションパラメーター]ダイアログボックスの[データのインポート/エクスポート]タブの[入力]に適切な入力のコンマ区切りリストが設定されます。変更内容をモデルに適用するには,[コンフィギュレーションパラメーター]ダイアログにて[適用]をクリックします。

インポートデータを使用したモデルのシミュレーション

sldemo_mdlref_counter_busをシミュレートします。

シミュレーション後,sldemo_mdlref_busOUTERDATA)とsldemo_mdlref_counter_busINNERDATA)からのに范围同じトレースが表示されます。

参照モデルの范围に入力する信号もログが作成されます。ログデータは,変数subOutの下でMATLABワークスペースで利用可能です。topOut.getElement(“OUTERDATA”)subOut.getElement(“INNERDATA”)のデータが同じであることを検証できます。

参考

関連するトピック