В этом примере показано, как распространить шины в модели, на которые ссылаются. Это также показывает, как можно симулировать модели, на которые ссылаются, независимо с помощью регистрируемых данных сигнала от родительской модели.
Откройте и симулируйте модель sldemo_mdlref_bus в качестве примера.

Модель содержит блок Model под названием CounterA, это ссылается на sldemo_mdlref_counter_bus, который является моделью простого счетчика.
Массив шин под названием COUNTERBUS питает данные и пределы насыщения счетчика в модель. Шины под названием COUNTERBUS каждый содержит два элемента: данные сигнализируют и вложенная шина под названием LIMITBUS. Данные используются в подсчете, и LIMITBUS содержит верхние значения и значения нижнего предела счетчика.
Блок Model имеет второй входной порт, который связывает с шиной под названием INCREMENTBUS. Эта шина содержит элементы, которые изменяют шаг и сбрасывают счетчик.
Модель использует файл с именем словаря данных sldemo_mdlref_bus.sldd это содержит объекты, которые задают элементы COUNTERBUS, LIMITBUS и INCREMENTBUS.Simulink.Bus
Просмотреть Bus объекты, откройте Редактор Шины. В Simulink® Toolstrip, на вкладке Modeling, в галерее Design, нажимают Bus Editor.
Модель использует Bus объекты задать выходные параметры следующих блоков Создателя Шины:
COUNTERBUSCreator1
COUNTERBUSCreator2
LIMITBUSCreator1
LIMITBUSCreator2
IncrementBusCreator
Inport блок, названный counter_input в sldemo_mdlref_counter_bus задает Bus возразите названному COUNTERBUS. Дважды кликните блок. В диалоговом окне Block Parameters, на вкладке Signal Attributes, Тип данных установлен в Bus: COUNTERBUS.
Inport блок, названный increment_input, так же сконфигурирован, чтобы использовать Bus возразите названному INCREMENTBUS.
Эти сигналы отмечены для логгирования сигнала:
ПРОТИВОШИНА
INCREMENTBUS
OUTERDATA
INNERDATA
После того, как вы симулируете модель, регистрируемые сигналы доступны в базовом рабочем пространстве в topOut переменная.
topOut =
Simulink.SimulationData.Dataset 'topOut' with 4 elements
Name BlockPath
____________ ________________________________________
1 [1x1 Signal] COUNTERBUS sldemo_mdlref_bus/Concatenate
2 [1x1 Signal] OUTERDATA sldemo_mdlref_bus/CounterA
3 [1x1 Signal] INCREMENTBUS sldemo_mdlref_bus/IncrementBusCreator
4 [1x1 Signal] INNERDATA ...erA|sldemo_mdlref_counter_bus/COUNTER
- Use braces { } to access, modify, or add elements using index.
Модель использует Dataset формат для логгирования сигнала. Получить доступ к Dataset записанные данные формата для данного сигнала, используйте getElement метод:
topOut.getElement('COUNTERBUS')
ans =
Simulink.SimulationData.Signal
Package: Simulink.SimulationData
Properties:
Name: 'COUNTERBUS'
PropagatedName: ''
BlockPath: [1x1 Simulink.SimulationData.BlockPath]
PortType: 'outport'
PortIndex: 1
Values: [2x1 struct]
Данные о шине регистрируются как структура MATLAB® в Values поле :
topOut.getElement('COUNTERBUS').Values
ans =
2x1 struct array with fields:
data
limits
Эта структура содержит MATLAB timeseries объекты для каждой шины:
topOut.getElement('COUNTERBUS').Values(1).data timeseries
Common Properties:
Name: 'data'
Time: [301x1 double]
TimeInfo: tsdata.timemetadata
Data: [301x1 int32]
DataInfo: tsdata.datametadata
topOut.getElement('COUNTERBUS').Values(2).data timeseries
Common Properties:
Name: 'data'
Time: [301x1 double]
TimeInfo: tsdata.timemetadata
Data: [301x1 int32]
DataInfo: tsdata.datametadata
Можно также построить записанные данные с помощью plot функция:
topOut.getElement('OUTERDATA').Values.plot()
Чтобы регистрировать сигналы в модели, на которую ссылаются, выберите блок Model и нажмите Log Signals на вкладке блока Model.
Для этой модели, Регистрируя Режим установлен в Log all signals as specified in model. Все сигналы, которые регистрируются при симуляции sldemo_mdlref_counter_bus как топ-модель также регистрируются при симуляции его как модели, на которую ссылаются. Изменить логгирование для любого из этих сигналов или регистрировать подмножество сигналов:
Установите режим логгирования на Override signals.
В панели Иерархии модели очистите CounterA (sldemo_mdlref_counter_bus) флажок, чтобы указать, что эта модель не должна использовать Log all signals as specified in model установка.
В таблице выберите сигналы регистрировать при симуляции топ-модели.
Чтобы сохранить изменения, сохраните топ-модель.
Откройте модель sldemo_mdlref_counter_bus, на которую ссылаются, как топ-модель путем нажатия на Открытое Как на значок Топ-модели в левом нижнем углу блока Model.

Модель, на которую ссылаются, сконфигурирована, чтобы считать регистрируемые данные сигнала через корневые Inport блоки. Чтобы видеть эту настройку, откройте диалоговое окно Configuration Parameters. В Панели инструментов Simulink, на вкладке Modeling, нажимают Model Settings. На вкладке Data Import/Export Вход использует список, разделенный запятыми, чтобы задать записанные данные от topOut для этих двух входных портов. counter_input порт использует массив структуры timeseries, чтобы загрузить данные для COUNTERBUS, и increment_input порт использует структуру timeseries, чтобы загрузить данные для INCREMENTBUS.
topOut.getElement('COUNTERBUS')
topOut.getElement('INCREMENTBUS')
Можно сконфигурировать Поле ввода путем нажатия Входной Connect кнопки. Инструмент Root Inport Mapper открывается. В этом примере инструмент использует алгоритм отображения, чтобы настроить Поле ввода от записанных данных в базовом рабочем пространстве.
Выбрать данные, чтобы импортировать:
В Корневом Картопостроителе Inport нажмите From Workspace.
Выберите записанные данные topOut и нажмите ОК.
В диалоговом окне, которое открывается, задайте имя файла и нажмите Save.
С данными, загруженными в инструмент Root Inport Mapper, можно определить корневой входной порт, для которого можно присвоить входные данные. Simulink совпадает с входными данными входным портам на основе одного из этих критериев: имя блока, блок path, сигнализирует об имени, порядке порта или пользовательском алгоритме. Поскольку topOut регистрируется с помощью имен сигнала из модели, лучшим выбором для критерия отображения является Имя Сигнала. Используя этот критерий, Simulink пытается совпадать с именами переменных входных данных к именам входных сигналов.
Выбирать эту опцию:
В Корневой панели иерархии Картопостроителя Inport выберите набор данных topOut сценария.
Кликните по переключателю Signal Name.
Кликните по стреле кнопки Map to Model, затем нажмите Map All.
При отображении данных Simulink оценивает входные порты против входных данных, чтобы определить совместимость. Таблица Root Inport Mapper отражает состояние этой совместимости с зеленой галочкой, оранжевым треугольником предупреждения или красным ошибочным восклицательным знаком. В этом примере таблица показывает зеленое состояние, указывающее, что нет никакой проблемы совместимости. Можно симулировать модель с этим отображением входных данных к входным портам. Отображение также устанавливает Вход во вкладке Data Import/Export диалогового окна Параметров конфигурации к соответствующему списку, разделенному запятыми входных параметров. Чтобы применить изменения в модели, в диалоговом окне Параметров конфигурации, нажимают Apply.
Симулируйте sldemo_mdlref_counter_bus.
После симуляции, осциллографов от sldemo_mdlref_bus (OUTERDATA) и sldemo_mdlref_counter_bus (INNERDATA) покажите ту же трассировку.


Сигнал, питающий осциллограф в модели, на которую ссылаются, также регистрируется. Записанные данные доступны в рабочем пространстве MATLAB под переменной subOut. Можно проверить что данные в topOut.getElement('OUTERDATA') и subOut.getElement('INNERDATA') то же самое.