Параметры блоков, такие как параметр 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
(значение по умолчанию).
Как описано в Организуют Связанные Определения Параметров блоков в Структурах, можно организовать несколько значений параметров блоков в структуру.
Поля структур параметра не поддерживают контекстно-зависимый ввод данных. Однако, чтобы совпадать с типом данных поля с типом данных другого элемента данных в модели, можно использовать объект шины и объект типа данных.
Используйте Simulink.Bus
возразите как тип данных структуры.
Используйте 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 (на вкладке Modeling, нажмите 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, чтобы автомасштабировать элементы данных в модели, включая настраиваемые параметры и сигналы, значения которых зависят от тех параметров. Если вы используете этот метод:
Чтобы сконфигурировать параметры как настраиваемые, используйте объекты параметра (например, 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-битном слове:
На вкладке Data Types блока n-D Lookup Table, под Minimum и столбцами Maximum, задают диапазон значений для элементов табличных данных.
В соответствии со столбцом Data Type, набор тип данных table к fixdt(1,16)
.
Если вы используете настраиваемый Simulink.Parameter
возразите, чтобы установить значение табличного параметра данных, установить DataType
свойство объекта к auto
. В сгенерированном коде объект параметра использует то же масштабирование в качестве параметров блоков.
Когда вы симулируете или генерируете код, данные об интерполяционной таблице используют 16-битный тип данных с фиксированной точкой со знаком, масштабирование двоичной точки которого зависит от информации области значений, которую вы указываете. Расчетное масштабирование позволяет фиксированной точке представлять значения, которые лежат в области значений. Если вы позже изменяете минимальные или максимальные значения, блок повторно вычисляет масштабирование, когда вы симулируете или генерируете код.
Вычислите Масштабирование для Объекта параметра. Если вы используете Simulink.Parameter
возразите, чтобы установить значения нескольких параметров блоков, и если параметры блоков используют различные типы данных (включая различное масштабирование фиксированной точки), вы не можете установить DataType
свойство объекта к auto
(значение по умолчанию). Вместо этого можно вычислить фиксированную точку лучшей точности, масштабирующуюся для объекта параметра путем указания диапазона и информации о типе данных в объекте. Можно также использовать этот метод, чтобы сохранить область значений и информацию о типе данных в объекте параметра вместо диалогового окна блока. Когда вы используете этот метод, если вы позже изменяете информацию об области значений, необходимо повторно вычислить лучшую точность, масштабирующуюся при помощи Ассистента Типа данных.
Предположим, что вы создаете объект параметра, чтобы представлять значение 15.25
, и что область значений проекта значения между 0.00
и 32.00
. Чтобы вычислить масштабирование лучшей точности, используйте Ассистент Типа данных.
В командной строке создайте объект параметра в базовом рабочем пространстве, значением которого является 15.25
.
myParam = Simulink.Parameter(15.25);
В браузере рабочего пространства MATLAB дважды кликните объект myParam
. Диалоговое окно свойства открывается.
Укажите информацию области значений в объекте. Например, установите Minimum на 0.00
и Maximum к 32.00
.
Установите Data type на fixdt(0,16,0)
.
Расширьте Ассистент Типа данных и нажмите 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, таким как структуры, что существующий код С задает. Используйте эти данные для:
Замените существующий код С на модель Simulink.
Интегрируйте код С для симуляции в Simulink (например, при помощи Legacy Code Tool).
Подготовьтесь генерировать код (Simulink Coder™), который можно интегрировать с существующим кодом.
Используйте эти методы, чтобы совпадать с вашими пользовательскими типами данных:
Для типа структуры создайте Simulink.Bus
объект. Используйте объект в качестве типа данных для структуры, которую вы храните в Simulink.Parameter
объект. Смотрите Организуют Связанные Определения Параметров блоков в Структурах.
Для перечисления создайте класс перечисления и используйте его в качестве типа данных для параметров блоков. Смотрите Использование Перечислимые Данные в Моделях Simulink.
Совпадать с typedef
оператор, который представляет псевдоним примитива, типа числовых данных, использует Simulink.AliasType
возразите как тип данных для параметров блоков. Смотрите Simulink.AliasType
.
Чтобы создать эти классы и объекты, можно использовать функциональный 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 с помощью этих шагов:
Каждый объект параметра бросает заданное числовое значение к заданному типу данных.
Объект параметра | Тип данных | Числовое значение | Результат |
---|---|---|---|
int8Param | int8 | 3
| int8(3) |
doubleParam | double | 9.36
| double(9.36) |
Блок выполняет заданное выражение, int8Param * doubleParam
, использование правил MATLAB.
Выражение, которое включает double
тип данных и другой тип возвращают результат другого типа. Поэтому результат выражения int8(3) * double(9.36)
int8(28)
.
Если вы используете выражение, чтобы установить значение объекта параметра (такого как Simulink.Parameter
), объекты параметра, используемые в выражении, следуют различным правилам ввода данных. auto
установка DataType
свойство имеет немного отличающееся значение. Смотрите Установленное Значение переменных при помощи Математического выражения.
Для получения дополнительной информации об управлении типами данных параметров в сгенерированном коде, смотрите Типы данных параметров в Сгенерированном коде (Simulink Coder).