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

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

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

  • Загрузите данные сигнала желаемого типа из рабочей области MATLAB® в вашу модель через блок Inport корневого уровня или блок From Workspace.

  • Создайте блок Constant в своей модели и установите ее параметр на желаемый тип.

  • Используйте блок Data Type Conversion, чтобы преобразовать сигнал в желаемый тип данных.

Блоки Simulink определяют тип данных своих выходных параметров по умолчанию. Много блоков позволяют вам заменять тип по умолчанию и явным образом задавать тип выходных данных, с помощью параметров блоков, которые обычно называют Output data type. Например, параметр Output data type появляется на панели Signal Attributes диалогового окна блока Константа.

Смотрите следующие темы для получения дополнительной информации:

Для получения информации о...Смотрите...

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

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

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

Задайте типы данных Используя ассистент типа данных

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

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

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

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

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

Для получения дополнительной информации о типах данных, которые поддерживает определенный блок, см. документацию для блока в документации 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). Правая сторона столбца Data Type показывает определенный тип данных для каждого сигнала. Для получения дополнительной информации о Model Data Editor, смотрите Configure Data Properties при помощи Model Data Editor.

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

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

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

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

  • fixdt Команда

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

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

    Задайте значение параметра типа данных как имя объекта данных, который представляет тип данных. Объекты данных Simulink, которых вы инстанцируете от классов, таких как Simulink.NumericType и Simulink.AliasType, упростите задачу внесения изменений всей модели в типы выходных данных и позвольте вам использовать пользовательские псевдонимы для типов данных. Смотрите Объекты данных для получения дополнительной информации об Объектах данных Simulink.

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

Используя Model Data Editor (см. Configure Data Properties при помощи Model Data Editor), можно присвоить совпадающий тип данных нескольким сигналам одновременно. Можно использовать этот метод, чтобы спроектировать интерфейс модели путем конфигурирования типов данных и других атрибутов нескольких Inport и блоки Outport целиком (см. Интерфейс Configure Data для Компонента). Можно также точно управлять типами данных произвольных сигналов в алгоритме блока.

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

  1. В Model Data Editor (на вкладке Modeling, нажмите Model Data Editor), смотрите вкладку Signals.

  2. Рядом с полем Filter contents переключите кнопку Filter using selection.

  3. В верхнем уровне модели выберите сигнальные линии, которые представляют выходные параметры трех блоков Gain (пометил Zw, Mw, и Mq). Model Data Editor показывает три строки, которые соответствуют трем сигналам.

  4. В Model Data Editor выберите все три сигнала (строки). Например, можно нажать Ctrl+A или содержать Shift при нажатии на верхние и нижние строки в столбце Source.

  5. Для любого из трех сигналов кликните по ячейке в столбце Data Type. Из выпадающего списка выберите single. Model Data Editor применяет этот выбор ко всем выбранным строкам.

Чтобы преобразовать модель в строгий проект одинарной точности, смотрите, Подтверждают Встроенную Модель С плавающей точкой.

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

В некоторых случаях вы не можете использовать наследование типа данных (см. Правила Наследования Типа данных), чтобы установить эквивалентность между типами данных различных элементов данных (такими как сигнальные линии в параллельных информационных каналах или элементы шины в 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. В модели кликните по выходному сигналу блока Pumping Constant. Столбец Data Type Model Data Editor показывает, что тип данных сигнала установлен в s16En15.

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

  7. Обновите блок-схему и, при необходимости, расширьте ширину столбца Data Type. Правая сторона столбца показывает, что два блока интерполяционной таблицы используют тип данных single.

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

    s16En15.DataTypeMode = 'Double';

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

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

В качестве альтернативы, чтобы установить эквивалентность типа данных между алгоритмами или информационными каналами в той же модели, можно использовать блоки, такие как Data Type Propagation и Data Type Conversion Inherited. Когда вы используете эти блоки, вы не должны создавать и постоянно хранить объект типа данных. Однако вы не можете использовать блоки, чтобы совместно использовать тип данных между сигналами в различных моделях, если модели не находятся в той же иерархии модели - ссылки.

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

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

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

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

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

Используйте эти методы, чтобы совпадать с вашими пользовательскими типами данных:

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

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

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

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

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

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

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

  • В Редакторе Simulink, на вкладке Debug, выбирают Information Overlays> Port Data Type. Типы данных появляются на блок-схеме рядом с каждым сигналом. Для получения дополнительной информации смотрите Типы Данных порта.

  • Смотрите правую сторону столбца Data Type в Model Data Editor (на вкладке Modeling, нажмите Model Data Editor). Для получения дополнительной информации о Model Data Editor, смотрите Configure Data Properties при помощи Model Data Editor.

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

  • Спроектируйте стратегию типа данных модели на высоком уровне.

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

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

Для получения дополнительной информации смотрите Типы Данных порта.

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

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

Смотрите также

| |

Похожие темы