exponenta event banner

Конфигурирование интерфейса данных

Об этом примере

Цели обучения

  • Сконфигурируйте интерфейс данных для кода, созданного для модели.

  • Управление именем, типом данных и классом хранения данных сигналов и параметров в сгенерированном коде.

Предпосылки

  • Понимание способов представления и использования данных и сигналов в моделях.

  • Знакомство с представлением конструкций данных в виде объектов данных.

  • Возможность чтения кода C.

Обязательный файл

rtwdemo_throttlecntrl_datainterface файл модели

Объявить данные

Для большинства языков программирования перед использованием необходимо объявить данные. В объявлении указывается следующая информация:

Атрибут данныхОписание
ОбъемРегион программы, имеющий доступ к данным
ПродолжительностьПериод, в течение которого данные находятся в памяти
Тип данныхОбъем памяти, выделенной для данных
ИнициализацияНачальное значение, указатель на память или NULL. Если начальное значение не указано, большинство компиляторов присваивают нулевое значение или нулевой указатель.

Для создания кода поддерживаются следующие типы данных.

Поддерживаемые типы данных

ИмяОписание
doubleПлавающая точка с двойной точностью
singleПлавающая точка с одинарной точностью
int8Целое число со знаком 8 бит
uint8Беззнаковое 8-разрядное целое число
int16Знаковое 16-разрядное целое число
uint16Беззнаковое 16-разрядное целое число
int32Подписанное 32-разрядное целое число
uint32Беззнаковое 32-разрядное целое число
Типы данных с фиксированной точкой8-, 16-, 32-разрядные длины слов

Класс хранения - это область и продолжительность элемента данных. Дополнительные сведения о классах хранения см. в разделе Конфигурация генерации кода C для элементов интерфейса модели.

Использовать объекты данных

В моделях Simulink ® и диаграммах Stateflow ® для объявления данных доступны следующие методы: объекты данных и прямая спецификация. В этом примере используется метод объекта данных. Оба метода обеспечивают полный контроль над типом данных и классом хранения. Эти два метода можно смешивать в одной модели.

В среде MATLAB ® и Simulink можно использовать объекты данных различными способами. В этом примере рассматриваются следующие типы объектов данных:

  • Сигнал

  • Параметр

  • Автобус

Для конфигурирования интерфейса данных для модели с использованием метода объекта данных в базовой рабочей области MATLAB определяются объекты данных. Затем свяжите их с моделью Simulink или встроенной диаграммой Stateflow. При построении модели процесс построения использует связанные базовые объекты данных рабочей области в созданном коде.

Можно задать следующие значения свойств объекта данных:

  • Тип данных

  • Класс хранения

  • Значение (параметры)

  • Начальное значение (сигналы)

  • Идентификатор (определите другое имя в сгенерированном коде)

  • Размер (обычно наследуется для параметров)

  • Сложность (унаследована для параметров)

  • Единица измерения (физическая единица измерения)

  • Минимальное значение

  • Максимальное значение

  • Описание (используется для документирования объектов данных - не влияет на моделирование или создание кода)

Базовые объекты данных рабочей области можно создавать и проверять, вводя команды в окне команд MATLAB или используя обозреватель моделей. Чтобы исследовать базовые объекты данных сигналов рабочей области, выполните следующие действия.

  1. Открытый rtwdemo_throttlecntrl_datainterface и сохраните копию как throttlecntrl_datainterface в доступном для записи расположении на пути MATLAB.

  2. Откройте обозреватель моделей.

  3. Выберите «Базовая рабочая область».

  4. Выберите pos_cmd_one сигнальный объект для просмотра.

    Можно также просмотреть определение сигнального объекта. В окне команд MATLAB введите pos_cmd_one:

    pos_cmd_one =
     
    Signal with properties:
    
           CoderInfo: [1x1 Simulink.CoderInfo]
         Description: 'Throttle position command from the first PI controller'
            DataType: 'double'
                 Min: -1
                 Max: 1
                Unit: ''
          Dimensions: -1
      DimensionsMode: 'auto'
          Complexity: 'auto'
          SampleTime: -1
        InitialValue: '0'
    
  5. Чтобы просмотреть другие сигнальные объекты, в обозревателе моделей щелкните имя объекта или в окне команды MATLAB введите имя объекта. Эта таблица суммирует характеристики объектов для некоторых объектов данных в этой модели.

    Признаки объектаpos_cmd_onepos_rqstP_InErrMapThrotComm*ThrottleCommands*
    ОписаниеВыходные данные верхнего уровняВход верхнего уровняКалибровочный параметрСтруктура вывода верхнего уровняОпределение шины
    Тип данныхДваждыДваждыАвтомобильАвтомобильСтруктура
    Класс храненияЭкспортировано глобальноИмпортированный внешний указательПостоянныйЭкспортировано глобальноНичего

    * ThrottleCommands определяет объект Bus; ThrotComm представляет собой экземпляр шины. Если шина представляет собой невиртуальную шину, сигнал генерирует структуру в коде C.

Можно использовать определение шины (ThrottleCommands) для создания экземпляра нескольких экземпляров структуры. На схеме модели объект шины отображается в виде широкой линии с центральными тире, как показано на рисунке.

Добавить новые объекты данных

Можно создавать объекты данных для именованных сигналов, состояний и параметров. Чтобы связать объект данных с конструкцией, конструкция должна иметь имя.

Для поиска конструкций, для которых можно создавать объекты данных, используйте Мастер объектов данных. Этот инструмент находит конструкции, а затем создает объекты для пользователя. Модель включает два сигнала, которые не связаны с объектами данных: fbk_1 и pos_cmd_two.

Чтобы найти сигналы и создать для них объекты данных:

  1. В редакторе Simulink на вкладке «Моделирование» в разделе «Проект» выберите «Мастер объектов данных». Откроется диалоговое окно Мастер объектов данных.

  2. Чтобы найти конструкции-кандидаты, нажмите кнопку «Найти». Конструкции fbk_1 и pos_cmd_two появится в диалоговом окне.

  3. Чтобы выбрать обе конструкции, нажмите «Выбрать все».

  4. В таблице в разделе Класс убедитесь, что каждый предлагаемый объект данных использует класс. Simulink.Signal. Чтобы изменить класс объектов, щелкните Изменить класс (Change Class).

  5. Чтобы создать объекты данных, нажмите кнопку Создать. Конструкции fbk_1 и pos_cmd_two удаляются из диалогового окна.

  6. Закройте мастер объектов данных.

  7. На панели Содержимое (Contents) Обозревателя моделей (Model Explorer) найдите вновь созданные объекты. fbk_1 и pos_cmd_two.

Включить объекты данных для сгенерированного кода

  1. Включить отображение сигнала в сгенерированном коде.

    1. В редакторе Simulink щелкните правой кнопкой мыши значок pos_cmd_one и выберите Свойства. Откроется диалоговое окно Свойства сигнала (Signal Properties).

    2. Убедитесь, что выбран параметр Signal name должен разрешаться в параметр Simulink signal object.

  2. Включение разрешения сигнальных объектов для сигналов в модели. В окне команд MATLAB введите:

    disableimplicitsignalresolution('throttlecntrl_datainterface')
  3. Сохранить и закрыть throttlecntrl_datainterface.

Влияние моделирования на ввод данных

В модели контроллера дросселя для типов данных установлено значение double. Поскольку программное обеспечение Simulink использует double тип данных для моделирования, не ожидайте изменений в поведении модели при запуске созданного кода. Этот эффект можно проверить, запустив тестовый электрический жгут.

Перед запуском тестового электрического жгута обновите его, включив throttlecntrl_datainterface модель.

Примечание

Для выполнения следующей процедуры требуется лицензия Stateflow.

  1. Открытый throttlecntrl_datainterface.

  2. Откройте копию тестового жгута, throttlecntrl_testharness.

  3. Щелкните правой кнопкой мыши Unit_Under_Test Блок модели и выберите Параметры блока (Model Reference).

  4. Задать для имени модели значение throttlecntrl_datainterface. Нажмите кнопку ОК.

  5. Обновите схему модели тестового кабеля.

  6. Смоделировать тестовый жгут.

    Полученный график показывает, что разница между золотым и моделируемым вариантами модели остаётся нулевой.

  7. Сохранить и закрыть throttlecntrl_testharness.

Управление данными

Объекты данных существуют в отдельном файле от модели в базовой рабочей области. Для сохранения данных вручную в окне команд MATLAB введите save.

Отделение данных от модели обеспечивает следующие преимущества:

  • Одна модель, несколько наборов данных:

    • Использование различных значений параметров для изменения поведения алгоритма управления (например, для многократно используемых компонентов с различными значениями калибровки)

    • Использование различных типов данных для изменения целевого аппаратного обеспечения (например, для аппаратного обеспечения с плавающей и фиксированной точками)

  • Несколько моделей, один набор данных:

    • Совместное использование данных моделями в системе

    • Обмен данными между проектами (например, трансмиссия, двигатель и контроллеры колес могут использовать один и тот же набор данных сообщений CAN)

Ключевые моменты

  • Объявить данные в моделях Simulink и диаграммах Stateflow можно с помощью объектов данных или прямой спецификации.

  • В обозревателе моделей или в командной строке в окне команд MATLAB управление (создание, просмотр, настройка и т. д.) базовыми данными рабочей области.

  • Мастер объектов данных предоставляет быстрый способ создания объектов данных для таких конструкций, как сигналы, шины и параметры.

  • Настройте явное отображение объектов данных по имени в сгенерированном коде.

  • Разделение данных на модели дает несколько преимуществ.

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