Чтобы управлять типом данных сигнала в Simulink® модель, вы задаете тип данных для соответствующего выхода блоков.
Можно также ввести новый сигнал определенного типа данных в модель любым из следующих способов:
Загрузите данные сигнала необходимого типа из MATLAB® рабочая область в модель через блок Inport корневого уровня или блок From Workspace.
Создайте в вашей модели блок Constant и установите его параметр на нужный тип.
Используйте блок Data Type Conversion для преобразования сигнала в требуемый тип данных.
Блоки Simulink по умолчанию определяют тип данных их выходов. Многие блоки позволяют вам переопределить тип по умолчанию и явным образом задать тип данных выходов, используя параметры блоков, которое обычно называется Output data type. Для примера параметр Output data type появляется на панели < reservedrangesplaceholder0 > Постоянного диалогового окна блока.
Для получения дополнительной информации см. следующие темы:
Для получения информации о... | Видите... |
---|---|
Допустимые значения типов данных, которые можно задать | |
Помощник, который помогает вам задать допустимые значения типов данных | |
Указание допустимых значений типов данных для нескольких блоков одновременно |
В целом можно задать тип выходных данных как любой из следующих:
Правило, наследующее тип данных (см. «Правила наследования типов данных»)
Имя встроенного типа данных (см. «Встроенные типы данных»)
Выражение, которое вычисляется по типу данных (см. «Выражения типа данных»)
Допустимые значения типов данных варьируются среди блоков. Можно использовать выпадающее меню, сопоставленное с параметром block data type, чтобы просмотреть типы данных, которые поддерживает конкретный блок. Например, в Data type раскрывающемся меню диалогового окна Data Store Memory перечислены типы данных, которые он поддерживает, как показано здесь.
Для получения дополнительной информации о типах данных, поддерживаемых конкретным блоком, см. документацию для блока в документации 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 см. в разделе Настройка свойств данных при помощи Model Data Editor.
Можно задать значение параметра типа данных как имя встроенного типа данных, например single
или boolean
. Чтобы просмотреть встроенные типы данных, поддерживаемые блоком, используйте выпадающее меню типа данных в диалоговом окне блока. Список всех поддерживаемых встроенных типов данных см. в разделе Типы данных, поддерживаемые Simulink.
Можно задать значение параметра типа данных как выражения, которое вычисляет объект типа числовых данных. Просто введите выражение в поле типа данных в диалоговом окне блока. В целом введите одно из следующих выражений:
fixdt
Команда
Задайте значение параметра типа данных как команды, которая вызывает fixdt
функция. Эта функция позволяет вам создать Simulink.NumericType
объект, который описывает тип данных с фиксированной точкой или с плавающей точкой.
Имя объекта типа данных
Задайте значение параметра типа данных как имя объекта данных, который представляет тип данных. Объекты данных Simulink, которые вы создаете из классов, таких как Simulink.NumericType
и Simulink.AliasType
упрощает задачу внесения изменений всей модели в выходные типы данных и позволяет использовать пользовательские псевдонимы для типов данных. Дополнительные сведения об объектах данных Simulink см. в разделе Объекты данных.
Используя Model Data Editor (см. «Настройка свойств данных при помощи Model Data Editor»), можно назначить один и совпадающий тип данных нескольким сигналам одновременно. Можно использовать этот метод для разработки интерфейса модели путем конфигурирования типов данных и других атрибутов сразу нескольких блоков Inport и Outport (см. «Настройка интерфейса данных для компонента»). Можно также тонко управлять типами данных произвольных сигналов в алгоритме блока.
Для примера, slexAircraftExample
модель в примере Aircraft Longitudinal Flight Control содержит многочисленные блоки Gain. Предположим, что вы хотите задать тип выходных данных трех блоков Gain на корневом уровне модели как single
. Выполнить эту задачу можно следующим образом:
В Model Data Editor (на вкладке Modeling, нажмите Model Data Editor) проверьте вкладку Signals.
Рядом с Filter contents окном переключите кнопку Filter using selection.
На верхнем уровне модели выберите сигнальные линии, которые представляют выходы трех блоков Gain (маркированных Zw
, Mw
, и Mq
). На Model Data Editor показаны три строки, которые соответствуют трем сигналам.
В Model Data Editor выберите все три сигнала (строки). Например, можно нажать Ctrl+A или удерживать Shift при щелчке по верхней и нижней строкам в Source столбце.
Для любого из трех сигналов щелкните по камере в столбце Data Type. В раскрывающемся списке выберите single
. Этот Model Data Editor применяется ко всем выбранным строкам.
Для преобразования модели в строгий проект одинарной точности см. Раздел «Валидация встраиваемой модели с плавающей точкой».
В некоторых случаях вы не можете полагаться на наследование типа данных (см. Правила наследования типа данных), чтобы установить эквивалентность между типами данных различных элементов данных (таких как сигнальные линии в параллельных путях данных или элементы шины в Simulink.Bus
объект). Вместо этого можно создать Simulink.NumericType
или Simulink.AliasType
объект в рабочей области или словаре данных.
Создайте Simulink.NumericType
Объект, не требуется ли переименовывать тип разделяемых данных путем создания псевдонима. Установите IsAlias
свойство к false
(значение по умолчанию).
В этом примере показано, как использовать Simulink.NumericType
объект для совместного использования типа выходных данных между двумя блоками интерполяционной таблицы в одной модели.
Откройте пример модели sldemo_fuelsys
.
sldemo_fuelsys
Модель создает Simulink.NumericType
объекты в базовом рабочем пространстве. Один из объектов назван s16En15
.
В командной строке проверьте свойства s16En15
.
s16En15
s16En15 = NumericType with properties: DataTypeMode: 'Single' IsAlias: 0 DataScope: 'Auto' HeaderFile: '' Description: ''
Этот объект представляет встроенный тип данных Simulink single
.
В модели перейдите в fuel_rate_control/airflow_calc
подсистема.
На вкладке Modeling нажмите Model Data Editor. В Model Data Editor смотрите вкладку Signals.
В модели щелкните выходной сигнал блока Pumping Constant. В Data Type столбце Model Data Editor показано, что тип данных сигнала установлен на s16En15
.
Щелкните на выход сигнале блока Ramp Rate Ki. Тип выходных данных этого блока также установлен на s16En15
.
Обновите блок и, при необходимости, разверните ширину Data Type столбца. Правая сторона столбца показывает, что два блока интерполяционной таблицы используют тип данных single
.
В командной строке настройте s16En15
для представления типа данных double
.
s16En15.DataTypeMode = 'Double';
Обновите блок.
Сигналы выхода двух блоков интерполяционной таблицы теперь используют тип данных double
. Из-за наследования типа данных другие сигналы, такие как e0
и e1
, получите тот совпадающий тип данных.
Кроме того, чтобы установить эквивалентность типа данных между алгоритмами или путями данных в одной модели, можно использовать блоки, такие как Data Type Propagation и Data Type Conversion Inherited. Когда вы используете эти блоки, вам не нужно создавать и постоянно хранить объект типа данных. Однако вы не можете использовать блоки для совместного использования типа данных между сигналами в разных моделях, если модели не находятся в одной иерархии модели-ссылки.
В модели можно создать сигналы, которые соответствуют пользовательским типам данных 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 Editor на вкладке Debug выберите Information Overlays и перейдите к разделу портов. Выберите тип данных порта, который необходимо отобразить. Типы данных появляются на блоке рядом с каждым сигналом. Для получения дополнительной информации см. раздел «Типы данных портов».
Смотрите правую сторону столбца Data Type в Model Data Editor (на вкладке Modeling нажмите Model Data Editor). Дополнительные сведения о Model Data Editor см. в разделе Настройка свойств данных при помощи Model Data Editor.
Использование этих методов для проверки типов данных помогает вам:
Разработайте стратегию типа данных для модели на высоком уровне.
Отлаживайте числовые проблемы из-за квантования и переполнения.
Сделать модель легче понять, делясь ею.
Для получения дополнительной информации см. раздел «Типы данных портов».
double
Несмотря на изменение настроекЕсли многие элементы данных (сигналы, параметры и состояния) в вашей модели продолжают использовать тип данных double
после того, как вы сконфигурируете такие параметры блоков, как Output data type, подтвердите, что модель не сконфигурирована для переопределения типов данных. См. «Переопределение типа данных».
Simulink.AliasType
| Simulink.Bus
| Simulink.NumericType