В этом примере показов, как распространить шины на ссылочные модели. Это также показывает, как можно симулировать модели-ссылки независимо с помощью записанных данных сигнала от родительской модели.
Откройте и симулируйте пример модели 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, на вкладке « Моделировании», в галерее Design, нажмите Bus Editor.
Модель использует Bus
объекты для задания выходов следующих блоков Bus Creator:
COUNTERBUSCreator1
COUNTERBUSCreator2
LIMITBUSCreator1
LIMITBUSCreator2
IncrementBusCreator
Блок Inport с именем counter_input in sldemo_mdlref_counter_bus
задает Bus
объект с именем COUNTERBUS
. Дважды кликните блок. В диалоговом окне Параметров блоков, на вкладке 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 Block.
Для этой модели Режим регистрации установлен в 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
как модель верхней части нажав значок Open As Верхней части Model в левом нижнем углу Блока Model.
Ссылочная модель сконфигурирована, чтобы считать записанные данные сигнала через корневые блоки Inport. Чтобы увидеть это строение, откройте диалоговое окно Параметров конфигурации. На панели инструментов Simulink, на вкладке Modeling, нажмите Model Settings. На вкладке Data Import/Export, вход использует разделенный списками , разделенными запятыми, чтобы задать записанные данные из topOut
для двух входных портов. Порт counter_input использует массив структур timeseries, чтобы загрузить данные для COUNTERBUS, а порт increment_input использует структуру timeseries, чтобы загрузить данные для INCREMENTBUS.
topOut.getElement('COUNTERBUS')
topOut.getElement('INCREMENTBUS')
Вы можете сконфигурировать поле Input, нажав кнопку Connect Input. Откроется инструмент Root Inport Mapper. В этом примере инструмент использует алгоритм отображения, чтобы настроить поле Input из записанных данных в базовом рабочем пространстве.
Чтобы выбрать данные для импорта:
В окне Root Inport Mapper нажмите From Workspace.
Выберите записанные данные topOut
и нажмите OK.
В открывшемся диалоговом окне укажите имя файла и нажмите кнопку «Сохранить».
С помощью данных, загруженных в инструмент Root Inport Mapper, можно определить корневой входной порт, для которого нужно назначить входные данные. Simulink сопоставляет входные данные с входными портами на основе одного из следующих критериев: имя блока, путь блока, имя сигнала, порядок порта или пользовательский алгоритм. Потому что topOut
регистрируется с помощью имен сигналов из модели, лучшим выбором для критерия отображения является Имя сигнала. Используя этот критерий, Simulink пытается сопоставить имена переменных входных данных с именами входных сигналов.
Чтобы выбрать эту опцию:
На панели иерархии Root Inport Mapper выберите набор данных сценария topOut
.
Нажмите на переключатель Имя.
Нажмите кнопку Map to Model стрелы, затем выберите Map All.
При отображении данных Simulink оценивает входные порты по входным данным, чтобы определить совместимость. Таблица Root Inport Mapper отражает состояние этой совместимости с зеленой галочкой, оранжевым предупреждающим треугольником или красным восклицательным знаком ошибки. В этом примере таблица показывает зеленый статус, указывающий на отсутствие проблемы совместимости. Можно симулировать модель с этим отображением входных данных к входным портам. Сопоставление также устанавливает Вход на вкладке Данных Import/Export диалогового окна Параметров конфигурации в соответствующий список , разделенный запятыми входов. Чтобы применить изменения к модели, в диалоговом окне Параметры конфигурации (Configuration Parameters) нажмите Применить (Apply).
Моделируйте sldemo_mdlref_counter_bus
.
После симуляции возможностей из sldemo_mdlref_bus
(OUTERDATA
) и sldemo_mdlref_counter_bus
(INNERDATA
) показать ту же трассировку.
Сигнал, подающий возможности в ссылочной модели, также регистрируется. Записанные данные доступны в рабочем пространстве MATLAB под переменной subOut
. Можно проверить, что данные в topOut.getElement('OUTERDATA')
и subOut.getElement('INNERDATA')
то же самое.