Тип данных параметров блоков (такого как параметр Gain блока Gain), числовой MATLAB® переменная, или Simulink.Parameter
объект определяет тип данных, которые используют соответствующие сущности в сгенерированном коде (для примера, глобальная переменная или аргумент функции). Чтобы сгенерировать более эффективный код, можно сопоставить типы данных параметров с типами данных сигналов или хранить параметры в меньших типах данных.
Для получения основной информации об установке типов данных параметров блоков в модели, смотрите Control Block Parameter Data Types.
Тип данных, который использует параметры блоков, переменный MATLAB или объект параметра, определяет тип данных, который используется сгенерированным кодом для хранения значения параметров в памяти. Для примера:
Если вы задаете параметр конфигурации <reservedrangesplaceholder1> модели (см. Поведение параметра по умолчанию) Tunable
, параметр Gain блока Gain появляется в сгенерированном коде как поле глобальной структуры, которая хранит данные параметра. Если вы применяете тип данных single
для параметров блоков в модели в поле структуры в коде используется соответствующий тип данных, real32_T
.
Если вы применяете класс памяти ExportedGlobal
в Simulink.Parameter
объект появляется в сгенерированном коде как отдельная глобальная переменная. Если вы задаете DataType
свойство объекта, которое должно быть int8
глобальная переменная в коде использует соответствующий тип данных, int8_T
.
Если вы конфигурируете Simulink.Parameter
объект в рабочем пространстве модели как аргумент модели, объект появляется в сгенерированном коде как формальный параметр (аргумент) функции точки входа модели, такой как step
функция. The DataType
свойство объекта определяет тип данных формального параметра.
Кроме определения типа данных, которые использует сгенерированный код для хранения значений параметров в памяти, тип данных параметра, переменной или объекта может также:
Заставить блок привести значение параметра до генерации кода. Приведение может привести к переполнению, недействию или квантованию.
Заставьте сгенерированный код включать дополнительный код, для примера кода насыщения.
Когда типы данных параметров блоков, переменных рабочей области и сигналов различаются, блоки могут использовать typecasts, чтобы согласовать несоответствия типов данных. Эти typecasts могут вызвать сгенерированный алгоритм кода, включая модель step
функция, для включения явных приведений для согласования несоответствий в типах данных запоминающего устройства и битовых сдвигов C для согласования несоответствий при масштабировании с фиксированной точкой.
Несоответствия типа данных параметра могут возникнуть, когда:
Тип данных, который вы задаете для переменного MATLAB или объекта параметра (Simulink.Parameter
) отличается от типа данных параметров блоков. В параметры блоков вводится значение переменной или объекта.
Тип данных, который вы задаете для начального значения, отличается от типа данных инициализированного сигнала или состояния.
Тип данных, который вы задаете для параметров блоков, отличается от типа данных сигнала или сигналов, над которыми работает параметр. Некоторые блоки вводят параметр для выполнения операции. Для примера блок Gain выполняет эту typecast.
Если вы конфигурируете переменную или объект, чтобы использовать смещение или дробный наклон с фиксированной точкой, параметры блоков не могут выполнить typecast. В этом случае необходимо сопоставить тип данных переменной или объекта параметра с типом данных параметров блоков. Используйте один из следующих методов:
Используйте контекстно-зависимую типизацию данных для переменной или объекта параметра. Для переменного MATLAB используйте double
число, чтобы задать значение переменной. Для объекта параметра установите DataType
свойство к auto
.
Использование Simulink.AliasType
или Simulink.NumericType
объект, чтобы задать тип данных параметров блоков и тип данных объекта параметра.
Используйте этот метод, когда вы не можете полагаться на контекстно-зависимое типирование данных, например, когда вы используете поле структуры, чтобы задать значение параметров блоков.
Вручную задайте один и совпадающий тип данных для параметров блоков и объекта переменной или параметра.
Используйте этот метод, чтобы уменьшить зависимость модели от унаследованных и контекстно-зависимых типов данных и от внешних переменных и объектов.
Для блоков, которые получают доступ к данным параметра через указатель или ссылку в сгенерированном коде, если вы задаете различные типы данных для переменной рабочей области и параметров блоков, сгенерированный код неявно приводит тип данных переменной к типу данных параметров блоков. Обратите внимание, что неявное приведение требует копирования данных, которое может значительно увеличить потребление ОЗУ и замедлить скорость выполнения кода для больших наборов данных. Для примера блоки Интерполяционной таблицы часто получают доступ к большим векторам или матрицам через указатель или ссылку в сгенерированном коде.
Для получения информации о соответствии типов данных параметров при использовании аргументов модели, смотрите Типы управляющих данных аргументов модели и Значения аргументов.
Можно сконфигурировать параметры конфигурации диагностики, чтобы обнаружить непреднамеренные несоответствия типов данных, которые приводят к квантованию и потере точности параметров. Смотрите Параметры конфигурации модели: Диагностика валидности данных.
Когда вы используете определенные шаблоны моделирования и конструкции, такие как типы данных с фиксированной точкой, структуры параметров и объекты интерполяционной таблицы, используйте различные методы для управления типами данных параметров.
Чтобы применить масштабирование с лучшей точностью и фиксированной точностью к настраиваемым параметрам блоков или объекту параметра, можно использовать Fixed-Point Tool для автоматического масштабирования всей системы или использовать Data Type Assistant для настройки отдельных параметров или объектов. См. «Вычисление оптимальной точности масштабирования фиксированной точки» для настраиваемых Параметров блоков.
Если настраиваемый параметр использует масштабирование с лучшей точностью и фиксированной точностью, Simulink® выбирает тип данных на основе минимальных и максимальных значений, которые вы задаете для параметра (см. «Задание минимальных и максимальных значений для параметров блоков»). Можно задать эти значения в диалоговом окне блока, которое использует параметр или в свойствах Simulink.Parameter
объект.
Если вы не задаете минимум или максимум, Simulink выбирает тип данных на основе значения параметра. Выбранное масштабирование может ограничить область значений возможных значений настройки. Поэтому лучшая практика задать минимальное и максимальное значения для каждого настраиваемого параметра.
Настраиваемый параметр может использовать масштабирование наилучшей точности, даже если вы не задаете его в типе данных параметра. Например, блок Gain может выбрать масштабирование с оптимальной точностью, если для Parameter data type в диалоговом окне блока задано значение Inherit: Inherit via internal rule
. Эта настройка является настройкой по умолчанию для блока.
Когда вы используете структуру в качестве значения параметров блоков (для примера инициализировать сигнал шины), или когда вы организовываете несколько значений параметров блоков в одну структуру, можно создать Simulink.Bus
объект для использования в качестве типа данных Simulink.Parameter
объект. Затем можно управлять типами данных отдельных полей в структуре. Смотрите Типы данных и Характеристики Управляющего поля путем Создания Объекта параметра и Типы данных управления Полей Структуры Начальных Условий.
Когда вы используете Simulink.LookupTable
и Simulink.Breakpoint
объекты для хранения данных таблицы и точек по оси Х для блока интерполяционной таблицы, для управления типами данных таблицы и данных точек по оси Х используют один из следующих методов:
Установите Value
свойство встроенного Simulink.lookuptable.Table
и Simulink.lookuptable.Breakpoint
объекты при помощи нетипичных выражений, таких как [1 2 3]
, который возвращает double
вектор. Если для Breakpoint specification задано значение Explicit values
используйте текстовое поле выражения MATLAB и табличный интерфейс в нижней части диалогового окна свойств. Чтобы управлять типом данных, установите DataType
свойство к значению, отличному от auto
.
Используйте этот метод, чтобы отделить значение таблицы или данных точек по оси Х от типа данных, что может улучшить читаемость и понимание вашего проекта. Затем можно использовать Simulink.NumericType
или Simulink.AliasType
объект для:
Настройте имя типа данных в сгенерированном коде.
Сопоставьте тип данных таблицы или данных точек по оси Х с типом данных сигнала в модели.
Установите Value
свойство внедренных объектов при помощи типизированных выражений, таких как single([1 2 3])
. Чтобы использовать тип данных с фиксированной точкой, установите Value
свойство со fi
объект. Если для Breakpoint specification задано значение Explicit values
используйте текстовое поле выражения MATLAB и табличный интерфейс в нижней части диалогового окна свойств.
Установите DataType
свойство встраиваемых объектов к значению по умолчанию, auto
. Таблица и данные точек по оси Х затем получают тип данных, который используется для установки Value
свойство.
Используйте этот метод для хранения информации о типе данных в Value
свойство, которое может упростить способ взаимодействия со Simulink.LookupTable
и Simulink.Breakpoint
объекты. Вы можете покинуть DataType
свойство в значение по умолчанию.
Когда вы позже измените данные точек по оси Х или данные таблицы в Value
свойство, сохраните информацию о типе данных при помощи типизированного выражения. Кроме того, если вы используете команду в командной строке или скрипт, чтобы изменить данные, чтобы избежать использования типизированного выражения, используйте подписанное назначение, (:)
.
myLUTObject.Table.Value(:) = [4 5 6];
При изменении данных, хранящихся в Value
свойство, если вы не используете типизированное выражение или подписанное назначение, вы теряете информацию о типе данных.
Когда блоки в подсистеме используют Simulink.LookupTable
или Simulink.Breakpoint
объекты, переопределение типа данных (см. «Управление Инструментирования с фиксированной точкой» и «Переопределение типа данных») нельзя задать только в подсистеме. Вместо этого установите переопределение типа данных на всей модели.
Можно использовать выражение, чтобы задать значение объекта параметра (такого как Simulink.Parameter
). Выражение кодирует математические отношения между различными объектами. Когда вы используете этот метод, применяются различные правила набора данных. См. «Задать значение переменных при помощи математического выражения».