Можно импортировать данные шины во входные порты верхнего уровня путем определения данных вручную в параметре конфигурации Input или с помощью инструмента Root Inport Mapper. Для получения информации об импорте данных шины с помощью инструмента Root Inport Mapper, смотрите Импорт данных шины.
Можно импортировать данные шины (виртуальная, невиртуальная, или массив шин) в входной порт верхнего уровня, заданный объектом шины (см Simulink.Bus
). В блоке Inport верхнего уровня установите Data type равным Bus
и укажите имя объекта шины. Чтобы задать значения данных для сигналов шины, используйте структуру:
MATLAB®
timeseries
объекты
MATLAB- timetable
объекты
Комбинация timeseries
и timetable
объекты
Элементы шины, для которых вы не включаете поле в структуру, используют значения заземления. Можно использовать пустую матрицу, чтобы задать, чтобы использовать значения заземления.
Примечание
Когда вы задаете timetable
данные для загрузки, timetable
должен содержать данные только для одного сигнала.
Структура timeseries
или timetable
(или оба) объектов должны совпадать с элементами шины с точки зрения:
Иерархия
Имя поля структуры, которое должно совпадать с именем элемента шины. (The name
свойство timeseries
объект не должен совпадать с именем элемента шины.)
Тип данных
Размерности
Сложность
Порядок полей структуры не должен совпадать с порядком элементов шины.
Можно включать структуру как элемент массива Dataset
объект. Можно использовать структуру в списке, разделенном запятыми. Можно задать пустую матрицу в списке, разделенном запятыми. Пустая матрица использует значения заземления для сигнала шины.
Например, чтобы загрузить данные для входных портов in1
и in3
, и использовать значения заземления для портовых in2
, введите в параметре Input следующее:
in1, [], in3
Можно инициализировать сигналы шины, в том числе с помощью частичной спецификации данных инициализации. Для получения дополнительной информации смотрите «Задание начальных условий для элементов шины».
Для получения дополнительной информации об импорте массива данных шины в корневой Inport блок, смотрите Import Array of Buses Data.
Данные сигнала, которые вы можете использовать инструмент Root Inport Mapper для импорта и сопоставления с блоком верхнего уровня, Inport могут включать данные шины. Вы не можете использовать этот инструмент для сопоставления сигналов шины с блоком Enable или Trigger верхнего уровня.
Вы не можете использовать входные порты для импорта шин во режимах external mode. Чтобы импортировать данные шины в быстрых режимах Accelerator, используйте Dataset
формат.
Эта модель имеет два блока Inport, соединенных с блоками Scope. Тип данных In1
унаследован блок (nonbus data) и тип данных In2
блок определяется объектом шины BusObject
. Модель имеет коллбэк, который загружается BusObject
и его подсистем BusObject1
.
The BusObject
шинный объект имеет два элемента:
c
s1
, которая является вложенной шиной, которая имеет два элемента:
a
b
Откройте model
.
Создайте timeseries
MATLAB объект для
In1
, для которого необходимо импортировать небусовые данные.
Для примера:
t1 = (1:10)'; d1 = sin(t1); in1 = timeseries(d1,t1);
Создайте структуру входа, которая может состоять из MATLAB timeseries
объекты или MATLAB timetable
объекты или комбинация этих типов объектов. Создайте одну timeseries
или timetable
объект для каждого элемента шины листа, для которого вы не хотите использовать значения заземления. Этот пример использует значения заземления для b
элемент шины, поэтому ему не нужен timeseries
или timetable
объект для этого элемента.
t2 = (1:5)'; d2 = cos(t2); in2.c = timeseries(d1,t1); in2.s1.a = timetable(seconds(t2),d2);
Система MATLAB timeseries
объекты, которые вы создаете, должны совпадать с соответствующими элементами шины, как описано в Импортированные требования к данным шины.
Создайте Dataset
объект и добавление in1
и in2
в набор данных.
ds = Simulink.SimulationData.Dataset; ds = ds.addElement(in1,'in1_signal'); ds = ds.addElement(in2,'in2_signal');
В поле Configuration Parameters > Data Import/Export > Input параметра введите Dataset
ds объекта
.
Симулируйте модель. Блок Scope, подключенный к In2, показывает импортированные данные шины.
Для определения количества timeseries MATLAB
объекты и тип данных, сложность и размерности, необходимые для создания структуры timeseries
объекты из шины, используйте следующие методы:
Simulink.Bus.getNumLeafBusElements
Simulink.Bus.getLeafBusElements
Для примера, для объекта шины BusObject
:
num_el = BusObject.getNumLeafBusElements
num_el = 3
el_list = BusObject.getLeafBusElements
el_list = 3x1 BusElement array with properties: Min Max DimensionsMode SampleTime Description Units Name DataType Complexity Dimensions
el_list(1).Dimensions
ans = 1
Если у вас есть timeseries
объекты заданы, можно использовать их, чтобы создать структуру timeseries
объекты, основанные на объекте шины. Используйте
функция. Для примера, если вы определили Simulink.SimulationData.createStructOfTimeseries
timeseries
объекты ts1
, ts2
, и ts3
и у вас есть объект шины MyBusObject
можно использовать эту команду для создания структуры timeseries
объекты:
input = Simulink.SimulationData.createStructOfTimeseries(... 'MyBusObject',{ts1,ts2,ts3});
Количество timeseries
объекты массива ячеек должны совпадать с количеством элементов листа в объекте шины. Тип, размерности и сложность данных каждого timeseries
объект должен совпадать с атрибутами соответствующего узла листа объекта шины.
Чтобы импортировать (загрузить) массив данных шин с помощью корневого блока Inport, используйте массив структур MATLAB timeseries
объекты.
Примечание
Вы не можете использовать Enable, Trigger, From Workspace или From File блок для импорта данных для массива шин.
Можно использовать записанные данные для массива сигналов шин от предыдущего симуляции в качестве входов округления до Inport корневого уровня в последующем запуске симуляции. Записанные данные являются полной спецификацией данных для блока Inport.
Если вы создаете массив структур MATLAB timeseries
объекты для полного задания импортируемых данных:
Задайте поля структуры в том же порядке, как и сигналы в сигналах шины.
Не включать больше полей в структуру, чем сигналов в шине.
Для листовых полей точно совпадайте с типом данных, размерностями и сложностью соответствующего сигнала в шине.
Чтобы задать частичные данные для массива шин, создайте массив структур MATLAB с MATLAB timeseries
объекты в узлах листа.
Структура, которую вы создаете для задания частичных данных, должна соответствовать следующим правилам:
Можно опускать поля, включая листовые узлы и поддиапазоны. Можно также исключить размерности. Если вы не задаете поле, Simulink® использует значение заземления для этого поля.
Для вложенных шинных узлов сделайте размерность каждого поля равным или меньше, чем размерность для соответствующего узла массива шин.
В этом примере показано, как можно задать частичные данные для импорта с помощью корневого Inport блока, тип данных которого определяется как объект шины MyBus
. Можно открыть модель (ex_partial_loading_aob_model
) и код MATLAB, который определяет данные для импорта (ex_partial_loading_aob_data.m).
Когда вы симулируете ex_partial_loading_aob_model
, вы видите:
The input
Inport блок использует MyBus
шинный объект как тип данных.
The MyBus
массив шин включает MyBus(1)
и MyBus(2)
. Размерность порта устанавливается равным 2, чтобы отразить две шины в массиве шин, и Output as nonvirtual bus включено.
Вот элементы массива автобусов, который включает MyBus(1)
и MyBus(2)
. Цветовая подсветка показывает узлы массива шин, для которых импортируются данные.
Вот код MATLAB, который определяет данные для импорта. Цвет, который подсвечивает код, совпадает с цветом соответствующего узла в массиве шин. Чтобы просмотреть код, используемый в этой модели, откройте ex_partial_loading_aob_data.m файла кода MATLAB.
В коде, который определяет данные импорта:
The timeseries
MyBusValue объекта
определяет данные для подсвеченных узлов.
The timeseries
BT объекта
для MyBus(2)
, потому что BT
является конечным узлом, он должен точно совпадать с размерностями, типом данных и сложностью соответствующего элемента шины.
Структура задает данные для Y(2)
. Можно пропустить первые и последние вложенные автобусы Y
(то есть Y(1)
и Y(3)
).
Этот пример задает данные для Y(2)
; можно пропустить первые и последние вложенные автобусы Y
(то есть Y(1)
и Y(3)
).
После того, как вы задаете MyBusValue
переменная для данных импорта, установите параметр Configuration Parameters Data Import/Export > Input > MyBusValue
.