В этом примере показано, как распространить шины в модели, на которые ссылаются. Это также показывает, как можно симулировать модели, на которые ссылаются, независимо с помощью регистрируемых данных сигнала от родительской модели.
Откройте и симулируйте модель 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')
то же самое.