exponenta event banner

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

Для управления типом данных сигнала в модели Simulink ® необходимо указать тип данных для вывода соответствующего блока.

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

Блоки Simulink определяют тип данных своих выходов по умолчанию. Многие блоки позволяют переопределить тип данных по умолчанию и явно указать тип выходных данных, используя параметр блока, который обычно называется «Тип выходных данных». Например, параметр Тип выходных данных (Output data type) отображается на панели Атрибуты сигнала (Signal Attributes) диалогового окна Блок константы (Constant block).

Дополнительные сведения см. в следующих разделах:

Для получения информации о...Видишь...

Допустимые значения типов данных, которые можно указать

Ввод допустимых значений типа данных

Ассистент, помогающий указать допустимые значения типа данных

Задание типов данных с помощью помощника по типам данных

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

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

Ввод допустимых значений типа данных

Как правило, тип выходных данных можно указать следующим образом:

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

Дополнительные сведения о типах данных, поддерживаемых определенным блоком, см. в документации по блоку в документации Simulink.

Правила наследования типов данных

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

Правило наследованияОписание
Inherit: Inherit via back propagation

Simulink автоматически определяет тип выходных данных блока во время распространения типа данных (см. раздел Распространение типа данных). В этом случае блок использует тип данных нисходящего блока или сигнального объекта.

Inherit: Same as input

Блок использует тип данных своего единственного входного сигнала для своего выходного сигнала.

Inherit: Same as first input

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

Inherit: Same as second input

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

Inherit: Inherit via internal rule

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

При применении унаследованных типов данных к сигналу Simulink определяет конкретный тип данных сигнала только после обновления блок-схемы.

  • Сведения о выводе этого типа данных на блок-схему см. в разделе Типы данных портов.

  • Чтобы проверить этот конкретный тип данных для нескольких сигналов в таблице с возможностью поиска и сортировки, используйте Редактор данных модели (Model Data Editor) (на вкладке Моделирование (Modeling) щелкните Редактор данных модели (Model Data Editor)). В правой части столбца «Тип данных» отображаются конкретные типы данных для каждого сигнала. Дополнительные сведения о редакторе данных модели см. в разделе Настройка свойств данных с помощью редактора данных модели.

Встроенные типы данных

Можно указать значение параметра типа данных в качестве имени встроенного типа данных, например: single или boolean. Для просмотра встроенных типов данных, поддерживаемых блоком, используйте раскрывающееся меню типа данных в диалоговом окне блока. Список всех поддерживаемых встроенных типов данных см. в разделе Типы данных, поддерживаемые Simulink.

Выражения типа данных

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

  • fixdt Команда

    Укажите значение параметра типа данных в качестве команды, вызывающей fixdt функция. Эта функция позволяет создавать Simulink.NumericType объект, описывающий тип данных с фиксированной или плавающей точкой.

  • Имя объекта типа данных

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

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

С помощью редактора данных модели (см. раздел Настройка свойств данных с помощью редактора данных модели) можно назначить один и тот же тип данных нескольким сигналам одновременно. Этот метод можно использовать для проектирования интерфейса модели путем настройки типов данных и других атрибутов сразу нескольких блоков Inport и Outport (см. раздел Настройка интерфейса данных для компонента). Вы также можете точно управлять типами данных произвольных сигналов в вашем блочном алгоритме.

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

  1. В Редакторе данных модели (на вкладке Моделирование (Modeling) щелкните Редактор данных модели (Model Data Editor)) проверьте вкладку Сигналы (Signals).

  2. Рядом с полем Содержимое фильтра (Filter contents) переключите кнопку Фильтр с помощью выбора (Filter using selection).

  3. На верхнем уровне модели выберите сигнальные линии, которые представляют выходы трех блоков усиления (с меткой Zw, Mw, и Mq). Редактор данных модели показывает три строки, которые соответствуют трем сигналам.

  4. В редакторе данных модели выберите все три сигнала (строки). Например, можно нажать клавиши CTRL + A или, удерживая нажатой клавишу SHIFT, щелкнуть верхнюю и нижнюю строки в столбце «Источник».

  5. Для любого из трех сигналов щелкните ячейку в столбце «Тип данных». В раскрывающемся списке выберите single. Редактор данных модели применяет этот выбор ко всем выбранным строкам.

Сведения о преобразовании модели в конструкцию строгой одинарной точности см. в разделе Проверка внедренной модели с плавающей запятой.

Совместное использование типа данных между отдельными алгоритмами, путями данных, моделями и элементами шины

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

Создать Simulink.NumericType если не требуется переименовывать общий тип данных путем создания псевдонима. Установите IsAlias свойство для false (значение по умолчанию).

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

  1. Открыть пример модели sldemo_fuelsys.

    sldemo_fuelsys

    Модель создает Simulink.NumericType объектов в базовом рабочем пространстве. Один из объектов назван s16En15.

  2. В командной строке проверьте свойства s16En15.

    s16En15
    s16En15 = 
    
      NumericType with properties:
    
        DataTypeMode: 'Single'
             IsAlias: 0
           DataScope: 'Auto'
          HeaderFile: ''
         Description: ''

    Этот объект представляет встроенный тип данных Simulink single.

  3. В модели перейдите в папку fuel_rate_control/airflow_calc подсистема.

  4. На вкладке Моделирование (Modeling) щелкните Редактор данных модели (Model Data Editor). В Редакторе данных модели (Model Data Editor) проверьте вкладку Сигналы (Signals).

  5. В модели щелкните выходной сигнал блока «Постоянная накачки». В столбце Тип данных редактора данных модели (Model Data Editor Data Type) показано, что тип данных сигнала имеет значение s16En15.

  6. Щелкните по выходному сигналу блока Ramp Rate Ki. Тип выходных данных этого блока также имеет значение s16En15.

  7. Обновите блок-схему и, при необходимости, увеличьте ширину столбца «Тип данных». В правой части столбца показано, что два блока таблицы поиска используют тип данных single.

  8. В командной строке настройте s16En15 для представления типа данных double.

    s16En15.DataTypeMode = 'Double';

  9. Обновите блок-схему.

    Выходные сигналы двух блоков таблицы поиска теперь используют тип данных double. Из-за наследования типа данных другие сигналы, такие как e0 и e1, получить тот же тип данных.

Кроме того, чтобы установить эквивалентность типов данных между алгоритмами или путями данных в одной модели, можно использовать такие блоки, как Распространение типов данных (Data Type Propagation) и Наследование преобразования типов данных (Data Type Conversion Inherated). При использовании этих блоков нет необходимости создавать и постоянно сохранять объект типа данных. Однако блоки нельзя использовать для совместного использования типа данных между сигналами в различных моделях, если модели не находятся в одной иерархии ссылок на модели.

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

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

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

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

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

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

  • Для типа структуры создайте Simulink.Bus объект. Используйте объект в качестве типа данных для сигналов шины. См. раздел Типы данных для сигналов шины.

  • Для перечисления создайте класс перечисления и используйте его в качестве типа данных для сигналов. См. раздел Использование перечисляемых данных в моделях Simulink.

  • Для соответствия typedef оператор, который представляет псевдоним примитивного числового типа данных, используйте Simulink.AliasType объект в качестве типа данных для сигналов. Посмотрите Simulink.AliasType.

Для создания этих классов и объектов можно использовать функцию Simulink.importExternalCTypes.

Если функциональный блок MATLAB или диаграмма Stateflow ® в модели использует импортированный тип перечисления или структуры, настройте параметры конфигурации модели для включения (#include) определение типа из внешнего файла заголовка. См. разделы Управление импортированными определениями типов шины и перечисления (для функционального блока MATLAB) и Доступ к переменным и функциям пользовательского кода в диаграммах Stateflow (Stateflow Charts) и Интеграция пользовательских структур в диаграммы Stateflow (Stateflow Charts) (для диаграммы).

Определение типа данных сигнала, использующего унаследованную настройку

Когда сигнал использует унаследованный тип данных, например, Inherit: Inherit via internal rule (установка по умолчанию для большинства блоков), чтобы определить значимый тип данных, который сигнал использует для моделирования, обновите блок-схему и затем используйте один или оба из следующих методов:

  • В редакторе Simulink на вкладке Debug выберите Information Overlays и перейдите к разделу портов. Выберите тип данных порта, который требуется отобразить. Типы данных отображаются на блок-схеме рядом с каждым сигналом. Дополнительные сведения см. в разделе Типы данных портов.

  • Проверьте правую часть столбца Тип данных (Data Type) в Редакторе данных модели (Model Data Editor) (на вкладке Моделирование (Modeling) щелкните Редактор данных модели (Model Data Editor)). Дополнительные сведения о редакторе данных модели см. в разделе Настройка свойств данных с помощью редактора данных модели.

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

  • Разработка стратегии типов данных для модели на высоком уровне.

  • Отладка числовых проблем из-за квантования и переполнения.

  • Сделайте модель более понятной при совместном использовании.

Дополнительные сведения см. в разделе Типы данных портов.

Типы данных остаются double Несмотря на изменение настроек

Если многие элементы данных (сигналы, параметры и состояния) в модели продолжают использовать тип данных double после настройки параметров блока, таких как тип выходных данных, убедитесь, что модель не настроена на переопределение типов данных. См. раздел Переопределение типа данных элемента управления.

См. также

| |

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