exponenta event banner

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

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

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

  • Создание эффективного кода.

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

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

Сокращение затрат на обслуживание с помощью наследования типов данных

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

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

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

  • На вкладке Атрибуты параметра (Parameter Attributes) для параметра Тип данных (Parameter 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 для установки значения параметра блока можно настроить переменную или объект параметра на использование контекстно-зависимого ввода данных. При моделировании или создании кода переменная или объект параметра использует тот же тип данных, что и параметр блока. С помощью этого метода можно сопоставить тип данных переменной или объекта параметра с типом данных параметра блока. Для управления типом данных параметра блока и переменной или объекта указывается только тип данных параметра блока.

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

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

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

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

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

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

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

Многие блоки, поддерживаемые для дискретного моделирования и генерации кода (например, во встроенной библиотеке дискретных данных), позволяют явно указывать типы данных параметров. Например, в диалоговом окне «Блок таблицы поиска n-D» на вкладке «Типы данных» можно указать тип данных таблицы поиска с помощью параметра «Данные таблицы». В диалоговом окне Блок усиления (Gain block) используйте вкладку Атрибуты параметра (Parameter Attributes), чтобы задать тип данных параметра Усиление (Gain).

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

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

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

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

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

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

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

Для явного указания типа данных можно использовать Помощник по типам данных в диалоговых окнах блоков и диалоговых окнах свойств. Сведения об помощнике по типам данных см. в разделе Задание типов данных с помощью помощника по типам данных.

Использование редактора данных модели для пакетного редактирования

С помощью редактора данных модели (на вкладке «Моделирование» выберите «Редактор данных модели») можно одновременно указать один и тот же тип данных для нескольких параметров блока. На вкладке Параметры (Parameters) установите в раскрывающемся списке Изменить представление (Change view) значение Design и укажите типы данных с помощью столбца «Тип данных».

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

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

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

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

  • Используйте инструмент «Фиксированная точка» для автоматического масштабирования всей модели или подсистемы. Инструмент может предлагать и применять типы данных с фиксированной точкой для элементов данных, включая параметры блока, Simulink.Parameter объекты, сигналы и состояния.

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

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

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

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

Автоматическое масштабирование всей модели с помощью инструмента «Фиксированная точка»

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

  • Чтобы настроить параметры как настраиваемые, используйте объекты параметров (например, Simulink.Parameter) вместо диалогового окна Конфигурация параметров модели (Model Parameter Configuration). Инструмент «Фиксированная точка» (Fixed-Point) может автоматически масштабировать объекты параметров, но не может автоматически масштабировать числовые переменные, выбранные в диалоговом окне Конфигурация параметров модели (Model Parameter Configuration).

    Если модель уже использует диалоговое окно Конфигурация параметров модели (Model Parameter Configuration), используйте tunablevars2parameterobjects для создания объектов параметров.

  • При использовании Simulink.Parameter для установки значений параметров блока укажите информацию о диапазоне значений в объектах вместо блоков. Инструмент «Фиксированная точка» использует информацию о диапазоне в каждом объекте, чтобы предложить тип данных для этого объекта.

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

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

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

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

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

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

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

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

Дополнительные сведения об использовании инструмента «Фиксированная точка» для автоматического масштабирования Simulink.Parameter см. раздел Автоматическое масштабирование объектов данных с помощью инструмента «Фиксированная точка» (Конструктор фиксированных точек).

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

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

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

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

  1. На вкладке «Типы данных» n-D блока «Таблица подстановки» в столбцах «Минимум» и «Максимум» укажите диапазон значений для элементов данных таблицы.

  2. В столбце «Тип данных» задайте для типа данных таблицы значение fixdt(1,16).

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

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

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

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

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

    myParam = Simulink.Parameter(15.25);

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

  3. Укажите информацию о диапазоне в объекте. Например, задайте для параметра «Минимум» значение 0.00 и максимум до 32.00.

  4. Задайте для типа данных значение fixdt(0,16,0).

  5. Разверните «Помощник по типам данных» и нажмите «Рассчитать наиболее точное масштабирование».

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

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

При указании информации о диапазоне и типе данных в объекте параметра рекомендуется удалить информацию о диапазоне и типе данных из блоков, использующих объект. Некоторые инструменты, например инструмент «Фиксированная точка», игнорируют информацию о диапазоне, указанную в блоке, и используют только информацию в объекте параметра. Удаление информации из блока предотвращает путаницу и ошибки пользователя.

Например, на вкладке Атрибуты параметра (Parameter Attributes) диалогового окна Блок усиления (Gain block) установите значения Минимум параметра (Parameter minimum) и Максимум параметра (Parameter maximum []. Задать тип данных параметра в качестве наследуемого типа данных, например Inherit: Inherit from 'Gain' таким образом, параметр блока использует тот же тип данных, что и объект параметра.

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

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

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

  • Обнаружить понижение

  • Обнаружение потери точности

  • Обнаружение недопотока

  • Обнаружение переполнения

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

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

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

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

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

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

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

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

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

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

Предположим, что определены два объекта параметров int8Param и doubleParamи используйте объекты для задания параметра «Значение константы» в блоке «Константа».

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

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

Блок Константа (Constant) определяет тип данных параметра Константа (Constant), используя следующие шаги.

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

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

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

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

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

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

Дополнительные сведения об управлении типами данных параметров в сгенерированном коде см. в разделе Типы данных параметров в сгенерированном коде (Simulink Coder).

Связанные темы