Можно импортировать данные о шине к входным портам верхнего уровня путем ручного определения данных в параметре конфигурации Input или при помощи инструмента Root Inport Mapper. Для получения информации об импорте данных о шине с помощью инструмента Root Inport Mapper смотрите, Импортируют Данные о Шине.
Можно импортировать шину (виртуальный, невиртуальный, или массив шин) данные к входному порту верхнего уровня, заданному объектом шины (см. Simulink.Bus
). В блоке Inport верхнего уровня, набор Data type к Bus
и задают имя объекта шины. Чтобы задать значения данных для сигналов шины, используйте структуру:
Объекты MATLAB® timeseries
MATLAB объекты timetable
Комбинация timeseries
и объектов timetable
Соедините шиной элементы, для которых вы не включаете поле в наземные значения использования структуры. Можно использовать пустую матрицу, чтобы задать, чтобы использовать наземные значения.
Когда вы задаете данные timetable
, чтобы загрузить, timetable
должен содержать данные только для одного сигнала.
Структура timeseries
или timetable
(или оба) объекты должна совпадать с элементами шины с точки зрения:
Иерархия
Имя поля структуры, которое должно совпадать с именем элемента шины. (Свойство name
объекта timeseries
не должно совпадать с именем элемента шины.)
Тип данных
Размерности
Сложность
Порядок полей структуры не должен совпадать с порядком элементов шины.
Можно включать структуру как элемент объекта Dataset
. Можно использовать структуру в списке, разделенном запятыми. Можно задать пустую матрицу в списке, разделенном запятыми. Пустая матрица использует наземные значения для сигнала шины.
Например, чтобы загрузить данные для входных портов in1
и in3
, и использовать наземные значения для порта in2
, вводят следующее в параметр Input:
in1, [], in3
Если вы используете структуру MATLAB объекты timeseries
для корневого блока Inport в модели с несколькими корневыми блоками Inport, все корневые блоки Inport должны использовать MATLAB объекты timetable
или timeseries
. Преобразуйте любые корневые данные о блоке Inport, которые используют Simulink.TsArray
, или Simulink.Timeseries
возражает против MATLAB объектам timeseries
.
Можно инициализировать сигналы шины, включая использование частичной спецификации данных об инициализации. Для получения дополнительной информации смотрите, Задают Начальные условия для Сигналов Шины.
Для получения дополнительной информации об импорте массива данных о шине к корневому блоку Inport, смотрите Массив Импорта Данных о Шинах.
Данные сигнала, которые можно использовать инструмент Root Inport Mapper, чтобы импортировать и сопоставить с блоком Inport верхнего уровня, могут включать данные о шине. Вы не можете использовать тот инструмент, чтобы сопоставить сигналы шины с блоком Enable или Trigger верхнего уровня.
Вы не можете использовать входные порты, чтобы импортировать шины в режимах external mode. Чтобы импортировать данные о шине в быстром режиме Accelerator, используйте формат Dataset
.
Эта модель имеет два блока Inport, соединенные с блоками Осциллографа. Тип данных блока In1
наследован (данные о нешине), и тип данных блока In2
задан объектом BusObject
шины. Модель имеет коллбэк, который загружает BusObject
и его подшину BusObject1
.
Объект шины BusObject
имеет два элемента:
c
s1
, который является вложенной шиной, которая имеет два элемента:
a
b
Откройте model
.
Создайте объект MATLAB timeseries
для 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);
timeseries
MATLAB возражает, что вы создаете, должен совпадать с соответствующими элементами шины, как описано в Импортированных Требованиях к данным Шины.
Создайте объект Dataset
и добавьте in1
и in2
к набору данных.
ds = Simulink.SimulationData.Dataset; ds = ds.addElement(in1,'in1_signal'); ds = ds.addElement(in2,'in2_signal');
В Configuration Parameters> Import/Export> окно редактирования параметра Input, введите объект Dataset
ds
.
Моделируйте модель. Блок Scope, соединенный с In2, показывает импортированные данные о шине.
Чтобы определить количество MATLAB объекты timeseries
и тип данных, сложность и размерности, необходимые для создания структуры объектов 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
.
Вы не можете использовать Разрешение, Триггер, Из Рабочей области или блока 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
, вы видите:
Блок input
Inport использует объект шины MyBus
в качестве своего типа данных.
Массив MyBus
шин включает MyBus(1)
и MyBus(2)
. Размерность порта собирается в 2 отразить две шины в массиве шин, и Output as nonvirtual bus включен.
Вот элементы массива шин, который включает MyBus(1)
и MyBus(2)
. Цветное выделение показывает узлы массива шин, для которых импортируются данные.
Вот код MATLAB, который задает данные, чтобы импортировать. Цвет, который подсвечивает код, совпадает с цветом соответствующего узла в массиве шин. Чтобы просмотреть код, используемый в этой модели, откройте файл кода MATLAB ex_partial_loading_aob_data.m.
В коде, который задает данные об импорте:
Объект timeseries
MyBusValue
задает данные для подсвеченных узлов.
Объект 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
.