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

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

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

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

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

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

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

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

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

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

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

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

Установка 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 в качестве типа данных элемента в объекте шины и как тип данных целевого элемента данных.

Методы, чтобы явным образом задать типы данных параметров

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

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

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

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

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

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

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

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

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

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

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

Для получения дополнительной информации о Редакторе Данных модели, смотрите Configure Data Properties при помощи Редактора Данных модели.

Вычислите фиксированную точку Лучшей Точности, масштабирующуюся для настраиваемых блочных параметров

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

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

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

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

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

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

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

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

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

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

    Если ваша модель уже использует диалоговое окно Model Parameter Configuration, используйте функцию tunablevars2parameterobjects, чтобы создать объекты параметра вместо этого.

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

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

    Чтобы использовать объект шины в качестве типа данных структуры параметра, смотрите Типы данных Поля элемента управления и Характеристики путем Создания Объекта параметра.

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

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

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

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

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

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

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

Вычислите Лучшую Точность, масштабирующуюся для отдельных параметров

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

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

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

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

  2. В соответствии со столбцом Типа данных, набор тип данных table к 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 workspace дважды кликните объект myParam. Диалоговое окно свойства открывается.

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

  4. Установите Тип данных на fixdt(0,16,0).

  5. Расширьте Ассистент Типа данных и нажмите Calculate Best-Precision Scaling.

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

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

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

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

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

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

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

  • Обнаружьте удрученный

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

  • Обнаружьте потерю значимости

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Похожие темы

Была ли эта тема полезной?