exponenta event banner

Спецификация интерфейса с использованием объектов шины

В этом примере показано, как распространять шины в ссылочные модели. В нем также показано, как можно независимо моделировать ссылочные модели с использованием данных зарегистрированного сигнала из родительской модели.

Открытие модели примера

Открытие и моделирование примерной модели sldemo_mdlref_bus.

Изучение модели

Модель содержит блок модели с именем CounterA, который ссылается на sldemo_mdlref_counter_bus, которая является моделью простого счетчика.

Массив шин с именем COUNTERBUS подает данные и пределы насыщения счетчика в модель. Каждая из шин с именем COUNTERBUS содержит два элемента: сигнал данных и вложенную шину с именем LIMITBUS. Данные используются при подсчете, а LIMITBUS содержит верхнее и нижнее предельные значения счетчика.

Блок модели имеет второй входной порт, который подключается к шине с именем INCREMENTBUS. Эта шина содержит элементы, которые изменяют приращение и сбрасывают счетчик.

Модель использует файл словаря данных с именем sldemo_mdlref_bus.sldd который содержит Simulink.Bus объекты, определяющие элементы COUNTERBUS, LIMITBUS и INCREMENTBUS.

Для просмотра Bus откройте редактор шины. На панели инструментов Simulink ® на вкладке «Моделирование» в коллекции «Дизайн» выберите «Редактор шины».

Модель использует Bus объекты для задания выходов следующих блоков Bus Creator:

  • COUNTERBUSCreator1

  • COUNTERBUSCreator2

  • LIMITBUSCreator1

  • LIMITBUSCreator2

  • IncrementBusCreator

Блок Inport с именем counter_input в sldemo_mdlref_counter_bus задает Bus объект с именем COUNTERBUS. Дважды щелкните блок. В диалоговом окне «Параметры блока» на вкладке «Атрибуты сигнала» для параметра «Тип данных» установлено значение 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).

Для этой модели для параметра Режим регистрации (Logging Mode) установлено значение Log all signals as specified in model. Все сигналы, регистрируемые при моделировании sldemo_mdlref_counter_bus в качестве верхней модели также регистрируются при моделировании ее в качестве ссылочной модели. Для изменения регистрации любого из этих сигналов или регистрации подмножества сигналов:

  1. Установить режим ведения журнала в Override signals.

  2. На панели Иерархия модели (Model Hierarchy) снимите флажок CounterA (sldemo_mdlref_counter_bus), чтобы указать, что эта модель не должна использовать Log all signals as specified in model установка.

  3. В таблице выберите сигналы для регистрации при моделировании модели верхнего уровня.

  4. Чтобы сохранить изменения, сохраните верхнюю модель.

Загрузить данные

Открытие ссылочной модели sldemo_mdlref_counter_bus как модель верхнего уровня, щелкнув значок «Открыть как модель верхнего уровня» в левом нижнем углу блока «Модель».

Ссылочная модель сконфигурирована для считывания зарегистрированных данных сигнала через корневые блоки Inport. Для просмотра этой конфигурации откройте диалоговое окно «Параметры конфигурации». На панели инструментов «Симуляция» на вкладке «Моделирование» выберите «Параметры модели». На вкладке Импорт/экспорт данных (Data Import/Export) команда Ввод (Input) использует список, разделенный запятыми, для указания зарегистрированных данных из topOut для двух портов ввода. Порт counter_input использует массив структуры временных рядов для загрузки данных для COUNTERBUS, а порт increment_input использует структуру временных рядов для загрузки данных для INCREMENTBUS.

  • topOut.getElement('COUNTERBUS')

  • topOut.getElement('INCREMENTBUS')

Поле Input можно настроить, нажав кнопку Connect Input. Откроется инструмент сопоставления корневого ввода. В этом примере инструмент использует алгоритм сопоставления для настройки поля Ввод (Input) из зарегистрированных данных в базовой рабочей области.

Чтобы выбрать данные для импорта:

  1. В сопоставителе корневого ввода щелкните В рабочей области (From Workspace).

  2. Выберите зарегистрированные данные topOut и нажмите кнопку ОК.

  3. В открывшемся диалоговом окне укажите имя файла и нажмите кнопку «Сохранить».

Данные, загруженные в средство сопоставления корневых входов, позволяют определить корневой входной порт для назначения входных данных. Simulink сопоставляет входные данные с входными портами на основе одного из следующих критериев: имя блока, путь блока, имя сигнала, порядок портов или пользовательский алгоритм. Поскольку topOut регистрируется с использованием имен сигналов из модели, лучшим выбором для критерия отображения является Signal Name. Используя этот критерий, Simulink пытается сопоставить имена переменных входных данных с именами входных сигналов.

Чтобы выбрать эту опцию, выполните следующие действия.

  1. В области иерархии сопоставления корневых входов выберите набор данных сценария topOut.

  2. Выберите переключатель Signal Name.

  3. Щелкните стрелку кнопки Сопоставить с моделью (Map to Model), затем щелкните Сопоставить все (Map All).

При сопоставлении данных Simulink оценивает входные порты по входным данным для определения совместимости. Таблица Сопоставитель корневого ввода (Root Inport Mapper) отражает состояние этой совместимости с зеленым флажком, оранжевым предупреждающим треугольником или красным восклицательным знаком ошибки. В этом примере в таблице отображается зеленый статус, указывающий на отсутствие проблем совместимости. Модель можно смоделировать с помощью этого сопоставления входных данных с портами ввода. При сопоставлении на вкладке Импорт/экспорт данных (Data Import/Export) диалогового окна Параметры конфигурации (Configuration Parameters) также устанавливается соответствующий список входных данных, разделенных запятыми. Чтобы применить изменения к модели, в диалоговом окне Параметры конфигурации (Configuration Parameters) нажмите кнопку Применить (Apply).

Моделирование модели с импортированными данными

Моделировать sldemo_mdlref_counter_bus.

После моделирования области из sldemo_mdlref_bus (OUTERDATA) и sldemo_mdlref_counter_bus (INNERDATA) показать ту же трассировку.

Сигнал, подаваемый в область в ссылочной модели, также регистрируется. Записанные данные доступны в рабочей области MATLAB под переменной subOut. Вы можете проверить, что данные в topOut.getElement('OUTERDATA') и subOut.getElement('INNERDATA') то же самое.

См. также

Связанные темы