Сконфигурируйте интерфейс данных

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

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

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

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

Необходимые условия

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

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

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

Необходимый файл

rtwdemo_throttlecntrl_datainterface файл модели

Объявление данных

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

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

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

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

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

A storage class - эти возможности и длительность элемента данных. Для получения дополнительной информации о классах хранения смотрите Строение Генерации кода C для Элементов Интерфейса Модели.

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

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

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

  • Сигнал

  • Параметр

  • Автобус

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

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

  • Тип данных

  • Класс памяти

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

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

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

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

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

  • Модуль измерения (физический модуль измерения)

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

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

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

Можно создавать и просматривать объекты данных базового рабочего пространства путем ввода команд в Командном окне MATLAB или с помощью Model Explorer. Чтобы исследовать объекты сигнальных данных базового рабочего пространства, используйте следующие шаги:

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

  2. Откройте Model Explorer.

  3. Выберите Base Workspace.

  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. Чтобы просмотреть другие сигнальные объекты, в Model Explorer щелкните имя объекта или в Командном Окне MATLAB введите имя объекта. В этой таблице обобщены характеристики объектов для некоторых объектов данных в этой модели.

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

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

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

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

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

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

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

  1. В редакторе Simulink, на вкладке Modeling, в разделе Design, нажмите Data Object Wizard. Откроется диалоговое окно Мастер объектов данных.

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

  3. Чтобы выбрать обе конструкции, щелкните Select All.

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

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

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

  7. На Contents панели Model Explorer найдите вновь созданные объекты fbk_1 и pos_cmd_two.

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

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

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

    2. Убедитесь, что вы выбрали параметр Signal name must resolve to 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 блок и выберите Block Parameters (ModelReference).

  4. Установите Model name значение throttlecntrl_datainterface. Нажмите OK.

  5. Обновите тестовую обвязку диаграммы модели.

  6. Симулируйте тестовую обвязку.

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

  7. Сохраните и закройте throttlecntrl_testharness.

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

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

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

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

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

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

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

    • Обмен данными между моделями в системе

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

Ключевые точки

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

  • Из Model Explorer или из командной строки в Командном окне MATLAB управляйте (создавайте, просматривайте, конфигурируйте и так далее) базовым рабочим пространством данными.

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

  • Явно сконфигурируйте объекты данных, чтобы они появлялись по имени в сгенерированном коде.

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

Похожие темы