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

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

Изучение целей

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

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

Предпосылки

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

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

  • Способность считать код С.

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

Файл модели rtwdemo_throttlecntrl_datainterface

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

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

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

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

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

ИмяОписание
doubleПлавающая точка двойной точности
singleПлавающая точка с одинарной точностью
int88-битное целое число со знаком
uint88-битное целое число без знака
int1616-битное целое число со знаком
uint1616-битное целое число без знака
int3232-битное целое число со знаком
uint3232-битное целое число без знака
Типы данных с фиксированной точкой8-, 16-, 32-битные размеры слова

storage class является осциллографом и длительностью элемента данных. Для получения дополнительной информации о классах памяти, смотрите, Применяют Классы памяти к Отдельному Сигналу, состоянию и Элементам данных Параметра.

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

В моделях 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*
    ОписаниеВывод верхнего уровняВход верхнего уровняКалибровочный параметрВыходная структура верхнего уровняСоедините шиной определение
    Тип данных'double''double''auto''auto'Структура
    Класс памятиЭкспортируемая глобальная переменнаяИмпортированный указатель экстернаПостоянныйЭкспортируемая глобальная переменная'none'

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

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

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

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

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

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

  1. В окне модели выберите Code> Data Objects> Data Object Wizard. Диалоговое окно 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. В окне модели щелкните правой кнопкой по сигнальной линии 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 и выберите Block Parameters (ModelReference).

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

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

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

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

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

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

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

Разделение данных из модели предоставляет следующие преимущества:

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

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

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

  • Многоуровневые модели, один набор данных:

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

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

Ключевые пункты

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

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

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

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

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

Похожие темы