Типы данных параметров в сгенерированном коде

Тип данных параметров блоков (таких как параметр Gain блока Gain), числовая переменная MATLAB® или Simulink.Parameter объект определяет тип данных что соответствующая сущность в использовании сгенерированного кода (например, глобальная переменная или аргумент функции). Чтобы сгенерировать более эффективный код, можно совпадать с типами данных параметров типам данных сигнала или сохранить параметры в меньших типах данных.

Для основной информации об установке типов данных параметров блоков в модели смотрите Типы данных параметров Блока управления (Simulink).

Значение типов данных параметров

Тип данных, что параметры блоков, переменная MATLAB или использование объекта параметра определяют тип данных что использование сгенерированного кода, чтобы сохранить значение параметров в памяти. Например:

  • Если вы устанавливаете параметр конфигурации модели Default parameter behavior (см. поведение параметра По умолчанию (Simulink Coder)) к Tunable, параметр Gain блока Gain появляется в сгенерированном коде как поле глобальной структуры, которая хранит данные о параметре. Если вы применяете тип данных single к параметрам блоков в модели поле структуры в коде использует соответствующий тип данных, real32_T.

  • Если вы применяете класс памяти ExportedGlobal к Simulink.Parameter объект, объект появляется в сгенерированном коде как отдельная глобальная переменная. Если вы устанавливаете DataType свойство объекта к int8, глобальная переменная в коде использует соответствующий тип данных, int8_T.

  • Если вы конфигурируете Simulink.Parameter объект в рабочем пространстве модели в качестве аргумента модели, объект появляется в сгенерированном коде как формальный параметр (аргумент) функции точки входа модели, такой как step функция. DataType свойство объекта определяет тип данных формального параметра.

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

  • Заставьте блок бросать значение параметра до генерации кода. Бросок может привести к переполнению, потере значимости или квантованию.

  • Заставьте сгенерированный код включать дополнительный код, например, код насыщения.

Преобразовывает тип из-за несоответствий типа данных параметров

Когда типы данных параметров блоков, переменных рабочей области и сигналов отличаются, блоки могут использовать преобразования типа, чтобы согласовать неверные типы данных. Эти преобразования типа могут вызвать алгоритм сгенерированного кода, включая модель step функция, чтобы включать явные броски, чтобы согласовать несоответствия в типе данных устройства хранения данных и сдвигах разряда C, чтобы согласовать несоответствия в масштабировании фиксированной точки.

Несоответствия типа данных параметров могут произойти когда:

  • Тип данных, который вы задаете для переменной MATLAB или объекта параметра (Simulink.Parameter) отличается от типа данных параметров блоков. Параметры блоков преобразовывают тип значения переменной или объекта.

  • Тип данных, который вы задаете для начального значения, отличается от типа данных инициализированного сигнала или состояния.

  • Тип данных, который вы задаете для параметров блоков, отличается от типа данных сигнала или сигнализирует, что параметр работает с. Некоторые блоки преобразовывают тип параметра, чтобы выполнить операцию. Например, блок Gain выполняет это преобразование типа.

Если вы конфигурируете переменную или возражаете, чтобы использовать смещение или дробный наклон фиксированной точки, параметры блоков не могут выполнить преобразование типа. В этом случае необходимо совпадать с типом данных переменного или объекта параметра с типом данных параметров блоков. Используйте один из этих методов:

  • Используйте контекстно-зависимый ввод данных в переменном или объекте параметра. Для переменной MATLAB используйте double номер, чтобы установить значение переменной. Для объекта параметра, набор DataType свойство к auto.

  • Используйте Simulink.AliasType или Simulink.NumericType возразите, чтобы установить тип данных параметров блоков и тип данных объекта параметра.

    Используйте этот метод, когда вы не можете использовать контекстно-зависимый ввод данных, например, когда вы используете поле структуры, чтобы установить значение параметров блоков.

  • Вручную задайте совпадающий тип данных для параметров блоков и переменного или объекта параметра.

    Используйте этот метод, чтобы уменьшать зависимость модели на наследованных и контекстно-зависимых типах данных и на внешних переменных и объектах.

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

Для получения информации о соответствии с типами данных параметров, когда вы будете использовать аргументы модели, смотрите Типы данных Управления Аргументов Модели и Значений аргументов.

Обнаружьте Удрученный и Потеря Точности из-за Неверных типов данных

Можно сконфигурировать диагностические параметры конфигурации, чтобы обнаружить неумышленные неверные типы данных, которые приводят к квантованию и потере точности параметра. Смотрите Параметры конфигурации Модели: Диагностика Валидности Данных (Simulink).

Факторы для других шаблонов моделирования

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

Настраиваемые параметры и масштабирование фиксированной точки Лучшей Точности

Чтобы применить фиксированную точку лучшей точности, масштабирующуюся к настраиваемым параметрам блоков или объекту параметра, можно использовать Fixed-Point Tool, чтобы автомасштабировать целую систему или использовать Ассистент Типа данных, чтобы сконфигурировать отдельные параметры или объекты. Смотрите Вычисляют Фиксированную точку Лучшей Точности, Масштабирующуюся для Настраиваемых Параметров блоков (Simulink).

Если настраиваемый параметр использует масштабирование фиксированной точки лучшей точности, Simulink® выбирает тип данных на основе минимальных и максимальных значений, которые вы задаете для параметра (см., Задают Минимальные и Максимальные значения для Параметров блоков (Simulink)). Можно задать эти значения в диалоговом окне блока, которое использует параметр или в свойствах Simulink.Parameter объект.

Если вы не задаете минимум или максимум, Simulink выбирает тип данных на основе значения параметра. Выбранное масштабирование может ограничить область значений возможных настраивающих значений. Поэтому это - лучшая практика задать минимальные и максимальные значения для каждого настраиваемого параметра.

Настраиваемый параметр может использовать масштабирование лучшей точности, даже если вы не задаете его в типе данных параметров. Например, блок Gain может выбрать масштабирование лучшей точности, если Parameter data type в диалоговом окне блока установлен в Inherit: Inherit via internal rule. Эта установка является значением по умолчанию для блока.

Управляйте типами данных полей структуры

Когда вы используете структуру в качестве значения параметров блоков (например, чтобы инициализировать сигнал шины), или когда вы организуете несколько значений параметров блоков в одну структуру, можно создать Simulink.Bus возразите, чтобы использовать в качестве типа данных Simulink.Parameter объект. Можно затем управлять типами данных отдельных полей в структуре. Смотрите Типы данных Поля элемента управления и Характеристики путем Создания Объекта параметра (Simulink) и Типы данных Управления Начальных Полей Структуры Условия (Simulink).

Управляйте типами данных объектов интерполяционной таблицы

Когда вы используете Simulink.LookupTable и Simulink.Breakpoint объекты к таблице store и данным о точке останова для блока интерполяционной таблицы, чтобы управлять типами данных таблицы и данных о точке останова, используют один из этих методов:

  • Установите Value свойство встроенного Simulink.lookuptable.Table и Simulink.lookuptable.Breakpoint объекты при помощи нетипизированных выражений, таких как [1 2 3], который возвращает double вектор. Чтобы управлять типом данных, установите DataType свойство к значению кроме auto.

    Используйте этот метод, чтобы разделить значение таблицы или данных о точке останова из типа данных, который может улучшить удобочитаемость и понимание вашего проекта. Можно затем использовать Simulink.NumericType или Simulink.AliasType объект к:

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

    • Совпадайте с типом данных таблицы или установите точки останова данные с типом данных сигнала в модели.

  • Установите Value свойство внедренных объектов при помощи введенных выражений, таких как single([1 2 3]). Чтобы использовать тип данных с фиксированной точкой, установите Value свойство с fi объект.

    Установите DataType свойство внедренных объектов к значению по умолчанию, auto. Таблица и данные о точке останова затем получают тип данных, который вы используете, чтобы установить Value свойство.

    Используйте этот метод, чтобы хранить информацию типа данных в Value свойство, которое может упростить способ, которым вы взаимодействуете с Simulink.LookupTable и Simulink.Breakpoint объекты. Можно оставить DataType свойство в значении по умолчанию.

    Когда вы позже изменяете точку останова или табличные данные в Value свойство, сохраните информацию о типе данных при помощи введенного выражения. В качестве альтернативы, если вы используете команду в командной строке или скрипте, чтобы изменить данные, избегать использования введенного выражения, используйте преобразованное в нижний индекс присвоение, (:).

    myLUTObject.Table.Value(:) = [4 5 6];

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

Когда блоки в подсистеме используют Simulink.LookupTable или Simulink.Breakpoint объекты, вы не можете установить переопределение типа данных (см. Переопределение Инструментирования и Типа данных Фиксированной точки Управления (Simulink)), только на подсистеме. Вместо этого переопределение типа данных набора на целой модели.

Ввод данных для выражений в объектах параметра

Можно использовать выражение, чтобы установить значение объекта параметра (такого как Simulink.Parameter). Выражение кодирует математические отношения между различными объектами. Когда вы используете этот метод, различные правила ввода данных применяются. Смотрите Установленное Значение переменных при помощи Математического выражения (Simulink).

Похожие темы