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

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

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

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

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

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

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

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

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

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

rtwdemo_throttlecntrl_datainterface файл модели

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. В Редакторе Simulink, во вкладке Modeling, под Design, нажимают 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. В Редакторе 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, справьтесь (создайте, просмотрите, сконфигурируйте, и так далее), данные о базовом рабочем пространстве.

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

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

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

Похожие темы