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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Используйте 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 автомасштабировал их.

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

    • Объекты параметра, свойство 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, под Minimum и столбцами Maximum, задают диапазон значений для элементов табличных данных.

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

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

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

  5. Расширьте Ассистент Типа данных и нажмите 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), объекты параметра, используемые в выражении, следуют различным правилам ввода данных. Установка auto свойства DataType имеет немного отличающееся значение. Смотрите Установленное Значение переменных при помощи Математического выражения.

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

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

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте