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

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

  • Точно симулируйте выполнение вашего алгоритма управления на оборудовании.

  • Сгенерируйте эффективный код.

  • Интегрируйте сгенерированный код с пользовательским кодом.

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

Уменьшите усилия по техническому обслуживанию с наследованием типов данных

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

Некоторые правила наследования выбирают тип данных параметра, отличный от типа данных, которые используют соответствующие сигналы. Например, предположим, что:

  • Входной и выходной сигналы блока Gain используют типы данных с фиксированной точкой с двоичным масштабированием только точки.

  • На вкладке Parameter Attributes Parameter data type установлено значение Inherit: Inherit via internal rule (значение по умолчанию).

  • На вкладке Parameter Attributes вы задаете минимальное и максимальное значение для параметра при помощи Parameter minimum и Parameter maximum.

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

Когда вы выбираете внутренние правила (Inherit: Inherit via internal rule) для включения Simulink® чтобы выбрать типы данных, перед моделированием или генерацией кода сконфигурируйте характеристики вашего целевого компьютера. Внутренние правила могут использовать эти настройки для выбора типов данных, которые дают эффективный сгенерированный код.

Контекстно-чувствительный набор данных

Когда вы используете переменный MATLAB или Simulink.Parameter объект, чтобы задать значение параметров блоков, можно сконфигурировать объект переменной или параметра, чтобы использовать context-sensitive тип данных. Когда вы моделируете или генерируете код, объект переменной или параметра использует совпадающий тип данных как параметры блоков. С помощью этого метода можно сопоставить тип данных переменной или объекта параметра с типом данных параметров блоков. Чтобы управлять типом данных параметров блоков и переменной или объекта, вы задаете только тип данных параметров блоков.

Чтобы использовать контекстно-зависимый набор данных, задайте значение переменного MATLAB double значение. Для Simulink.Parameter объект, установите Value свойство при помощи double значение и установите DataType свойство к auto (значение по умолчанию).

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

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

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

  1. Использование Simulink.Bus объект как тип данных структуры.

  2. Использование Simulink.AliasType или Simulink.NumericType объект как тип данных элемента в объекте шины и как тип данных целевого элемента данных.

Методы для явного задания типов данных параметров

Многие блоки, поддерживаемые для симуляции в дискретном времени и генерации кода (такие как во встроенной дискретной библиотеке), позволяют вам явным образом задать типы данных параметров. Например, в диалоговом окне n-D Lookup Table блока, на вкладке Data Types, можно задать тип данных для данных интерполяционной таблицы с помощью параметра Table data. В Gain диалогового окна блока используйте вкладку Parameter Attributes, чтобы задать Parameter data type, которая управляет типом данных параметра Gain.

Некоторые блоки, такие как блоки в библиотеке Continuous, не позволяют вам задавать типы данных параметров. Эти параметры блоков используют внутренние правила для выбора типа данных. Чтобы косвенно управлять типом данных такого параметра, примените тип данных к Simulink.Parameter вместо этого объект.

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

Если вы используете аргументы модели, можно задать тип данных:

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

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

  • Для значения аргумента, которое вы задаете в блоке Model.

Настройки по умолчанию для этих типов данных обычно используют наследование и контекстно-зависимое типирование данных. Для примера значение по умолчанию DataType свойство Simulink.Parameter объект auto, что заставляет объект параметра получить тип данных из параметров блоков или параметров, которые используют объект.

Чтобы явным образом задать тип данных, можно использовать Data Type Assistant в диалоговых окнах блока и диалоговых окнах свойств. Дополнительные сведения о помощнике по типам данных см. в разделе Установка типов данных с использованием помощника по типам данных.

Используйте Model Data Editor для пакетного редактирования

Используя Model Data Editor (на вкладке Modeling нажмите Model Data Editor), можно задать один и совпадающий тип данных для нескольких параметров блоков одновременно. На вкладке Parameters установите в раскрывающемся списке Change view значение Design и задавать типы данных при помощи столбца Data Type.

Дополнительные сведения о Model Data Editor см. в разделе Настройка свойств данных при помощи Model Data Editor.

Вычисление оптимальной точности масштабирования с фиксированной точкой для параметров настраиваемых блоков

Когда вы применяете типы данных с фиксированной точкой к модели, можно использовать Data Type Assistant и Fixed-Point Tool, чтобы вычислить оптимальную точность масштабирования для настраиваемых параметров блоков. A параметров блоков, Simulink.Parameter объект, или другой объект параметра tunable, если он появляется в сгенерированном коде как переменная, сохраненная в памяти.

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

  • Используйте Инструмент с Фиксированной Точкой (Fixed-Point Tool), чтобы автоматически масштабировать целую модель или подсистему. Инструмент может предлагать и применять типы данных с фиксированной точкой для элементов данных, включая параметры блоков, Simulink.Parameter объекты, сигналы и состояния.

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

    Когда вы позже изменяете области значений значений для параметров, этот метод позволяет вам или модели пересчитать масштабирование без необходимости автоматического масштабирования всей модели. Однако, если изменение области значений параметра также изменяет область значений связанного сигнала, необходимо вручную вычислить и применить новое масштабирование для сигнала или использовать Fixed-Point Tool для автоматического масштабирования модели или подсистемы.

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

ТемаДополнительная информация
Типы данных с фиксированной точкой и масштабированиеНомера с фиксированной точкой в Simulink (Fixed-Point Designer)
Как задать информацию о области значений значений для параметров блоков и объектов параметровЗадайте минимальное и максимальное значения для параметров блоков
Использование помощника по типам данныхЗадайте типы данных, используя Data Type Assistant
Настраиваемость и параметры блоков представление в сгенерированном коде Как сгенерированный код хранит внутренний сигнал, состояние и данные параметра (Simulink Coder) и создает настраиваемый параметр калибровки в сгенерированном коде (Simulink Coder)

Автоматическое масштабирование всей модели с помощью Fixed-Point Tool

Можно использовать Fixed-Point Tool, чтобы автоматически масштабировать элементы данных в модели, включая настраиваемые параметры и сигналы, значения которых зависят от этих параметров. Если вы используете этот метод:

  • Чтобы сконфигурировать параметры как настраиваемые, используйте объекты параметров (для примера, Simulink.Parameter) вместо диалогового окна Параметр модели Configuration. Этот Fixed-Point Tool могут автоматически масштабировать объекты параметров, но не могут автоматически масштабировать числовые переменные, которые вы выбираете в диалоговом окне Строения параметра модели.

    Если ваша модель уже использует диалоговое окно Параметра модели Строения, используйте tunablevars2parameterobjects функция для создания объектов параметров.

  • Когда вы используете Simulink.Parameter объекты, чтобы задать параметры блоков значения, задайте значение области значений информацию в объектах вместо блоков. Этот Fixed-Point Tool использует информацию о диапазоне в каждом объекте, чтобы предложить тип данных для этого объекта.

  • Чтобы включить инструмент для автоматического масштабирования значений параметров, которые вы храните как поля структуры, используйте Simulink.Bus объект как тип данных всей структуры. Укажите информацию о области значений для каждого поля при помощи Min и Max свойства соответствующего элемента в объекте шины. Затем инструмент может применить тип данных к каждому элементу при помощи DataType свойство.

    Для использования объекта шины в качестве типа данных структуры параметра смотрите Типы данных поля управления и характеристики путем создания объекта параметра.

  • Перед применением типов данных, которые предлагает Fixed-Point Tool, очистите предложения по параметрам и объектам параметров, типы данных которых вы не хотите изменять инструмент. Для примера очистите предложения по этим сущностям:

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

    • Simulink.Parameter моделировать аргументы в рабочем пространстве модели.

      Кроме того, перед автосканированием модели рассмотрите замену этих объектов параметров числовыми переменным MATLAB, чтобы предотвратить автомасштабирование Fixed-Point Tool.

      Разрешение инструменту автоматического масштабирования аргументов модели может увеличить риск непреднамеренных несоответствий типов данных между значениями аргументов модели (которые вы задаете в блоках Model в родительской модели), аргументами модели в рабочем пространстве модели и параметрами блоков клиента в модели.

    • Объекты параметра, чьи DataType для свойства задано значение auto (контекстно-зависимый). Очистить предложения, если необходимо, чтобы объекты параметров продолжали использовать контекстно-зависимое типирование данных.

Для получения дополнительной информации об использовании Fixed-Point Tool для автоматического масштабирования Simulink.Parameter объекты, см. раздел «Автоматическое сканирование объектов данных с помощью Fixed-Point Tool» (Fixed-Point Designer).

Вычисление оптимальной точности масштабирования для отдельных параметров

Можно сконфигурировать параметры блоков или Simulink.Parameter объект для вычисления собственного оптимального масштабирования. Во-первых, задайте информацию о области значений значений для целевого параметра или объекта параметра. Затем используйте Data Type Assistant или функцию fixdt для применения типа данных к параметру или объекту. Используйте эти методы, когда вы не хотите использовать Инструмент с фиксированной точкой (Fixed-Point Tool) для автоматического масштабирования модели.

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

В диалоговом окне блока используйте функцию fixdt для задания типа данных с фиксированной точкой с неопределенным масштабированием. Для примера используйте оптимальное масштабирование для данных интерполяционной таблицы и сохраните данные в 16-битном слове:

  1. На вкладке Data Types блока n-D Lookup Table, под Minimum и Maximum столбцами, задайте область значений значений для элементов данных таблицы.

  2. В столбце Data Type установите тип данных таблицы fixdt(1,16).

  3. Если вы используете настраиваемую Simulink.Parameter объект, чтобы задать значение параметра данных таблицы, установите DataType свойство объекта, которое должно быть auto. В сгенерированном коде объект параметра использует то же масштабирование, что и параметры блоков.

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

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

Предположим, что вы создаете объект параметра, чтобы представлять значение 15.25, и что проект области значений значения находится между 0.00 и 32.00. Для вычисления оптимальной точности масштабирования используйте Data Type Assistant.

  1. В командной строке создайте объект параметра в базовом рабочем пространстве, значение которого 15.25.

    myParam = Simulink.Parameter(15.25);

  2. В браузере Рабочего пространства MATLAB дважды кликните объект myParam. Откроется диалоговое окно свойств.

  3. Задайте информацию о области значений в объекте. Для примера установите Minimum равным 0.00 и Maximum к 32.00.

  4. Установите Data type значение fixdt(0,16,0).

  5. Разверните раздел Data Type Assistant и нажмите Calculate Best-Precision Scaling.

    Тип данных изменяется с fixdt(0,16,0) на fixdt(0,16,10).

Вычисленное масштабирование (длина дроби 10 бит) позволяет типу данных с фиксированной точкой представлять значения параметров, которые находятся в заданной области значений.

Если вы задаете информацию о области значений и типе данных в объекте параметра, рассмотрите удаление информации о области значений и типе данных из блоков, которые используют объект. Некоторые инструменты, такие как Fixed-Point Tool, игнорируют информацию о области значений, заданную в блоке, и используют только информацию в объекте параметра. Удаление информации из блока предотвращает путаницу и ошибки пользователя.

Например, на вкладке Parameter Attributes диалогового окна Gain блока задайте Parameter minimum и Parameter maximum []. Установите Parameter data type унаследованный тип данных, такой как Inherit: Inherit from 'Gain' так что параметры блоков используют совпадающий тип данных как объект параметра.

Обнаружение проблем численной точности из-за квантования и переполнения

Когда тип данных параметров блоков, переменного MATLAB или объекта параметра не может представлять значение, которое вы задаете, тип данных квантует значение, нарушая числовую точность. Для примера - 32-битный тип данных с плавающей точкой single (float в коде С) не может точно представлять значение параметров 1.73. Когда значение элемента данных в реальном мире находится вне области значений, которые может представлять тип данных, переполнение может вызвать потерю информации.

Чтобы обнаружить эти проблемы, используйте параметры конфигурации диагностики в разделе Configuration Parameters > Diagnostics > Data Validity > Parameters. Установите значения этих параметров конфигурации диагностики равными warning или error:

  • Detect downcast

  • Detect precision loss

  • Detect underflow

  • Detect overflow

Повторно используйте пользовательские типы данных C для данных параметра

В модели можно создать данные параметров, которые соответствуют пользовательским типам данных C, таким как структуры, которые задаёт существующий Код С. Используйте эти данные для:

  • Замените существующий код С на модель Simulink.

  • Интеграция Кода С для симуляции в Simulink (для примера, с помощью Legacy Code Tool).

  • Подготовьтесь к генерации кода (Simulink Coder™), который можно интегрировать с существующим кодом.

Используйте следующие методы, чтобы соответствовать пользовательским типам данных:

Чтобы создать эти классы и объекты, можно использовать функцию Simulink.importExternalCTypes.

Если блок MATLAB Function или Stateflow® диаграмма в вашей модели использует импортированный перечисление или тип структуры, сконфигурируйте параметры конфигурации модели, чтобы включить (#include) определение типа из внешнего файла заголовка. Смотрите Определения Импортированных Шин и Перечисляемый тип (для блока MATLAB Function) и Доступ к Пользовательским Переменным Кода и Функциям в Диаграммах Stateflow (Stateflow) и Интеграция Пользовательских Структур в Диаграммы Stateflow (Stateflow) (для графика).

Типы данных математических выражений

Если вы задаете параметры блоков с помощью математического выражения, блок определяет конечный тип данных параметра с помощью комбинации правил набора данных MATLAB и Simulink.

Предположим, что вы задаете два объекта параметра int8Param и doubleParamи используйте объекты, чтобы задать параметр Constant value в блоке Constant.

int8Param = Simulink.Parameter(3);
int8Param.DataType = 'int8';

doubleParam = Simulink.Parameter(9.36);
doubleParam.DataType = 'double';

Блок Constant определяет тип данных параметра Constant value используя следующие шаги:

  1. Каждый объект параметра приводит указанное числовое значение к указанному типу данных.

    Объект параметраТип данныхЧисловое значениеРезультат
    int8Paramint83int8(3)
    doubleParamdouble9.36double(9.36)

  2. Блок оценивает указанное выражение, int8Param * doubleParam, с использованием правил MATLAB.

    Выражение, которое включает в себя double тип данных и другой тип возвращают результат другого типа. Поэтому результат выражения int8(3) * double(9.36) является int8(28).

Если вы используете выражение, чтобы задать значение объекта параметра (такого как Simulink.Parameter), объекты параметра, используемые в выражении, следуют различным правилам ввода данных. The auto установка DataType свойство имеет немного другое значение. См. «Задать значение переменных при помощи математического выражения».

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

Для получения дополнительной информации об управлении типами данных параметров в сгенерированном коде, смотрите Типы данных параметров в Сгенерированном Коде (Simulink Coder).

Похожие темы