Сконфигурируйте интерфейс данных для кода, сгенерированного для модели.
Управляйте именем, типом данных и классом памяти данных сигналов и параметров в сгенерированном коде.
Понимание способов представления и использования данных и сигналов в моделях.
Знакомство с представлением конструкций данных как объектов данных.
Возможность чтения кода С
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. Чтобы исследовать объекты сигнальных данных базового рабочего пространства, используйте следующие шаги:
Откройте rtwdemo_throttlecntrl_datainterface
и сохраните копию следующим образом throttlecntrl_datainterface
в доступном для записи месте на пути MATLAB.
Откройте Model Explorer.
Выберите Base Workspace.
Выберите 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'
Чтобы просмотреть другие сигнальные объекты, в Model Explorer щелкните имя объекта или в Командном Окне MATLAB введите имя объекта. В этой таблице обобщены характеристики объектов для некоторых объектов данных в этой модели.
Характеристики объекта | pos_cmd_one | pos_rqst | P_InErrMap | ThrotComm * | ThrottleCommands * |
---|---|---|---|---|---|
Описание | Выходы верхнего уровня | Вход верхнего уровня | Калибровочный параметр | Структура output верхнего уровня | Определение шины |
Тип данных | Дважды | Дважды | Автомобиль | Автомобиль | Структура |
Класс памяти | Экспортированный глобальный | Импортированный указатель на экспорт | Постоянный | Экспортированный глобальный | Ничего |
* ThrottleCommands
задает объект Bus; ThrotComm
является экземпляром шины. Если шина является невиртуальной шиной, сигнал генерирует структуру в коде С
Можно использовать определение шины (ThrottleCommands
) для создания экземпляров нескольких образцов структуры. В диаграмму модели объект шины появляется как широкая линия с центральными штрихами, как показано на рисунке.
Можно создать объекты данных для именованных сигналов, состояний и параметров. Чтобы связать объект данных со конструкцией, конструкция должна иметь имя.
Для поиска конструкций, для которых можно создать объекты данных, используйте Мастер объектов данных. Этот инструмент находит конструкции и затем создает объекты для вас. Модель включает два сигнала, которые не связаны с объектами данных: fbk_1
и pos_cmd_two
.
Чтобы найти сигналы и создать для них объекты данных:
В редакторе Simulink, на вкладке Modeling, в разделе Design, нажмите Data Object Wizard. Откроется диалоговое окно Мастер объектов данных.
Чтобы найти конструкции кандидата, нажмите Find. Конструкции fbk_1
и pos_cmd_two
появится в диалоговом окне.
Чтобы выбрать обе конструкции, щелкните Select All.
В таблице под Class убедитесь, что каждый предложенный объект данных использует класс Simulink.Signal
. Чтобы изменить класс объектов, нажмите Change Class.
Чтобы создать объекты данных, нажмите Create. Конструкции fbk_1
и pos_cmd_two
удаляются из диалогового окна.
Закройте мастер объектов данных.
На Contents панели Model Explorer найдите вновь созданные объекты fbk_1
и pos_cmd_two
.
Включите отображение сигнала в сгенерированном коде.
В редакторе Simulink щелкните правой кнопкой мыши по pos_cmd_one
сигнальная линия и выберите Properties. Откроется диалоговое окно Свойства сигнала (Signal Properties).
Убедитесь, что вы выбрали параметр Signal name must resolve to Simulink signal object.
Включите разрешение объекта сигнала для сигналов в модели. В Командном Окне MATLAB введите:
disableimplicitsignalresolution('throttlecntrl_datainterface')
Сохраните и закройте throttlecntrl_datainterface
.
В моделях контроллеров дросселя типы данных установлены в double
. Потому что программное обеспечение Simulink использует double
тип данных для симуляции, не ожидайте изменений в поведении модели, когда вы запускаете сгенерированный код. Этот эффект можно проверить, запустив тестовую обвязку.
Прежде чем запускать тестовую обвязку, обновите его, включив в него throttlecntrl_datainterface
модель.
Примечание
Для выполнения следующей процедуры требуется лицензия Stateflow.
Откройте throttlecntrl_datainterface
.
Откройте копию тестовой обвязки, throttlecntrl_testharness
.
Щелкните правой кнопкой мыши по Unit_Under_Test
Model блок и выберите Block Parameters (ModelReference).
Установите Model name значение throttlecntrl_datainterface
. Нажмите OK.
Обновите тестовую обвязку диаграммы модели.
Симулируйте тестовую обвязку.
Получившийся график показывает, что различие между золотой и моделируемой версиями модели остается нулем.
Сохраните и закройте throttlecntrl_testharness
.
Объекты данных существуют в отдельном файле от модели в базовом рабочем пространстве. Чтобы сохранить данные вручную, в Командном Окне MATLAB, введите save
.
Отделение данных от модели обеспечивает следующие преимущества:
Одна модель, несколько наборов данных:
Использование различных значений параметров для изменения поведения алгоритма управления (для примера, для переиспользуемых компонентов с различными значениями калибровки)
Использование различных типов данных для изменения целевого оборудования (для примера, для целевого оборудования с плавающей и фиксированной точками)
Несколько моделей, один набор данных:
Обмен данными между моделями в системе
Обмен данными между проектами (для примера, трансмиссии, двигателя и контроллеров колес может использовать один и тот же набор данных сообщений CAN)
Можно объявить данные в моделях Simulink и диаграммах Stateflow с помощью объектов данных или прямой спецификации.
Из Model Explorer или из командной строки в Командном окне MATLAB управляйте (создавайте, просматривайте, конфигурируйте и так далее) базовым рабочим пространством данными.
Мастер объектов данных предоставляет быстрый способ создания объектов данных для таких конструкций, как сигналы, шины и параметры.
Явно сконфигурируйте объекты данных, чтобы они появлялись по имени в сгенерированном коде.
Отделение данных от модели обеспечивает несколько преимуществ.