exponenta event banner

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

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

Основные сведения о настройке типов данных параметров блока в модели см. в разделе Типы данных параметров блока управления.

Значимость типов данных параметров

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

  • Если для параметра конфигурации модели Поведение параметра по умолчанию (Default parameter behavior) (см. Поведение параметра по умолчанию) задано значение Tunableпараметр усиления блока усиления появляется в сгенерированном коде как поле глобальной структуры, которая хранит данные параметра. При применении типа данных single для параметра блока в модели поле структуры в коде использует соответствующий тип данных, real32_T.

  • При применении класса хранения ExportedGlobal в Simulink.Parameter объект отображается в созданном коде как отдельная глобальная переменная. Если установить DataType свойства объекта для int8, глобальная переменная в коде использует соответствующий тип данных, int8_T.

  • При настройке Simulink.Parameter объект в рабочей области модели в качестве аргумента модели, объект появляется в сгенерированном коде как формальный параметр (аргумент) функции точки входа модели, такой как step функция. DataType свойство объекта определяет тип данных формального параметра.

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

  • Заставьте блок привести значение параметра до создания кода. Приведение может привести к переполнению, недостижению или квантованию.

  • Включение в созданный код дополнительного кода, например, кода насыщения.

Типы из-за несовпадений типов данных параметров

Когда типы данных параметров блока, переменных рабочего пространства и сигналов различаются, блоки могут использовать типизированные значения для согласования несовпадений типов данных. Эти типы могут вызвать сгенерированный алгоритм кода, включая модель step включение явных слепков для согласования несовпадений в типе данных хранилища и сдвигов битов C для согласования несовпадений в масштабировании с фиксированной точкой.

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

  • Тип данных, указанный для переменной MATLAB или объекта параметра (Simulink.Parameter) отличается от типа данных параметра блока. Параметр блока набирает значение переменной или объекта.

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

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

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

  • Используйте контекстно-зависимую типизацию данных для переменной или объекта параметра. Для переменной MATLAB используйте double число для установки значения переменной. Для объекта параметра установите значение DataType свойство для auto.

  • Использовать Simulink.AliasType или Simulink.NumericType для установки типа данных параметра блока и типа данных объекта параметра.

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

  • Вручную укажите один и тот же тип данных для параметра блока и переменной или объекта параметра.

    Этот метод используется для уменьшения зависимости модели от унаследованных и контекстно-зависимых типов данных, а также от внешних переменных и объектов.

Для блоков, которые получают доступ к данным параметров через указатель или ссылку в сгенерированном коде, при указании различных типов данных для переменной рабочей области и параметра блока созданный код неявно приводит тип данных переменной к типу данных параметра блока. Следует отметить, что неявное приведение требует копии данных, которая может значительно увеличить потребление ОЗУ и замедлить скорость выполнения кода для больших наборов данных. Например, блоки таблицы поиска часто обращаются к большим векторам или матрицам через указатель или ссылку в сгенерированном коде.

Сведения о сопоставлении типов данных параметров при использовании аргументов модели см. в разделе Управление типами данных аргументов модели и значениями аргументов.

Обнаружение Downcast и потери точности из-за несовпадений типов данных

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

Рекомендации по другим шаблонам моделирования

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

Настраиваемые параметры и наиболее точное масштабирование с фиксированной точкой

Чтобы применить масштабирование с максимальной точностью с фиксированной точкой к настраиваемому параметру блока или объекту параметра, можно использовать инструмент «Фиксированная точка» для автоматического масштабирования всей системы или использовать помощник по типам данных для настройки отдельных параметров или объектов. См. раздел Расчет масштабирования с фиксированной точкой с наилучшей точностью для перестраиваемых параметров блока.

Если настраиваемый параметр использует масштабирование с фиксированной точкой наилучшей точности, Simulink ® выбирает тип данных на основе минимальных и максимальных значений, заданных для параметра (см. раздел Указание минимальных и максимальных значений для параметров блока). Эти значения можно задать в диалоговом окне блока, в котором используется параметр, или в свойствах Simulink.Parameter объект.

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

Настраиваемый параметр может использовать масштабирование с наилучшей точностью, даже если он не указан в типе данных параметра. Например, блок усиления может выбрать масштабирование с наилучшей точностью, если для параметра «Тип данных» в диалоговом окне блока задано значение Inherit: Inherit via internal rule. Этот параметр используется по умолчанию для блока.

Типы управляющих данных полей структуры

При использовании структуры в качестве значения параметра блока (например, для инициализации сигнала шины) или при организации нескольких значений параметров блока в одну структуру можно создать Simulink.Bus объект для использования в качестве типа данных Simulink.Parameter объект. Затем можно управлять типами данных отдельных полей в структуре. См. раздел Типы данных полей управления и признаки путем создания объектов параметров и типов данных управления полей структуры начального условия.

Управление типами данных объектов таблицы подстановки

При использовании Simulink.LookupTable и Simulink.Breakpoint объекты для хранения данных таблицы и точек останова для блока таблицы подстановки, для управления типами данных таблицы и данных точек останова, используйте один из следующих методов:

  • Установите Value свойство внедренного Simulink.lookuptable.Table и Simulink.lookuptable.Breakpoint с использованием нетипизированных выражений, таких как [1 2 3], который возвращает double вектор. Если для спецификации точки останова установлено значение Explicit valuesиспользуйте текстовое поле выражения MATLAB и табличный интерфейс в нижней части диалогового окна свойств. Для управления типом данных установите DataType свойство для значения, отличного от auto.

    Используйте этот метод, чтобы отделить значение таблицы или данных точки останова от типа данных, что может улучшить удобочитаемость и понимание конструкции. Затем можно использовать Simulink.NumericType или Simulink.AliasType объект для:

    • Настройте имя типа данных в созданном коде.

    • Сопоставьте тип данных таблицы или данных точки останова с типом данных сигнала в модели.

  • Установите Value свойства внедренного объекта с помощью типизированных выражений, таких как single([1 2 3]). Чтобы использовать тип данных с фиксированной точкой, установите значение Value свойство с fi объект. Если для спецификации точки останова установлено значение 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). Выражение кодирует математические отношения между различными объектами. При использовании этого метода применяются различные правила ввода данных. См. раздел Задание значения переменной с помощью математического выражения.

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