Загрузите данные о шине к входным портам Корневого Уровня

Можно импортировать данные о шине к входным портам верхнего уровня путем ручного определения данных в параметре конфигурации 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 Верхнего уровня

Эта модель имеет два блока Inport, соединенные с блоками Осциллографа. Тип данных блока In1 наследован (данные о нешине), и тип данных блока In2 задан объектом BusObject шины. Модель имеет коллбэк, который загружает BusObject и его подшину BusObject1.

Объект шины BusObject имеет два элемента:

  • c

  • s1, который является вложенной шиной, которая имеет два элемента:

    • a

    • b

  1. Откройте model.

  2. Создайте объект MATLAB timeseries для In1, для которого вы хотите импортировать данные о нешине.

    Например:

    t1 = (1:10)';
    d1 = sin(t1);
    in1 = timeseries(d1,t1);
  3. Создайте входную структуру, которая может состоять из 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 возражает, что вы создаете, должен совпадать с соответствующими элементами шины, как описано в Импортированных Требованиях к данным Шины.

  4. Создайте объект Dataset и добавьте in1 и in2 к набору данных.

    ds = Simulink.SimulationData.Dataset;
    ds = ds.addElement(in1,'in1_signal');
    ds = ds.addElement(in2,'in2_signal');
  5. В Configuration Parameters> Import/Export> окно редактирования параметра Input, введите объект Dataset ds.

  6. Моделируйте модель. Блок 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, можно использовать их, чтобы создать структуру объектов 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.

Смотрите также

Связанные примеры

Больше о

Для просмотра документации необходимо авторизоваться на сайте