Чтобы управлять типом данных сигнала в модели Simulink®, вы задаете тип данных для соответствующего блока выход.
Можно также ввести новый сигнал определенного типа данных в модель любым из следующих способов:
Загрузите данные сигнала желаемого типа из рабочей области MATLAB® в вашу модель через блок Inport корневого уровня или блок From Workspace.
Создайте блок Constant в своей модели и установите ее параметр на желаемый тип.
Используйте блок Data Type Conversion, чтобы преобразовать сигнал в желаемый тип данных.
Блоки Simulink определяют тип данных своих выходных параметров по умолчанию. Много блоков позволяют вам заменять тип по умолчанию и явным образом задавать тип выходных данных, с помощью параметров блоков, которые обычно называют Output data type. Например, параметр Output data type появляется на панели Signal Attributes диалогового окна блока Константа.
Смотрите следующие темы для получения дополнительной информации:
Для получения информации о... | Смотрите... |
---|---|
Допустимые значения типа данных, которые можно задать | |
Ассистент, который помогает вам задать допустимые значения типа данных | |
Определение допустимых значений типа данных для нескольких блоков одновременно |
В общем случае можно задать тип выходных данных как любое следующее:
Правило, которое наследовало тип данных (см. Правила Наследования Типа данных),
Имя встроенного типа данных (см. Встроенные Типы данных),
Выражение, которое оценивает к типу данных (см. Выражения Типа данных),
Допустимые значения типа данных варьируются среди блоков. Можно использовать выпадающее меню, сопоставленное параметром типа данных блока, чтобы просмотреть типы данных, которые поддерживает конкретный блок. Например, выпадающее меню 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 (см. Configure Data Properties при помощи Model Data Editor), можно присвоить совпадающий тип данных нескольким сигналам одновременно. Можно использовать этот метод, чтобы спроектировать интерфейс модели путем конфигурирования типов данных и других атрибутов нескольких Inport и блоки Outport целиком (см. Интерфейс Configure Data для Компонента). Можно также точно управлять типами данных произвольных сигналов в алгоритме блока.
Например, slexAircraftExample
модель в Самолете Продольный пример Управления полетом содержит многочисленные блоки 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, на вкладке Debug, select Information Overlays и перешли к разделу портов. Выберите тип данных порта, который вы хотите отобразить. Типы данных появляются на блок-схеме рядом с каждым сигналом. Для получения дополнительной информации смотрите Типы Данных порта.
Смотрите правую сторону столбца Data Type в Model Data Editor (на вкладке Modeling, нажмите Model Data Editor). Для получения дополнительной информации о Model Data Editor, смотрите Configure Data Properties при помощи Model Data Editor.
Используя эти методы, чтобы смотреть типы данных помогает вам к:
Спроектируйте стратегию типа данных модели на высоком уровне.
Отладьте числовые проблемы из-за квантования и переполнения.
Сделайте модель более понятной при совместном использовании его.
Для получения дополнительной информации смотрите Типы Данных порта.
double
Несмотря на изменение настроекЕсли многие элементы данных (сигналы, параметры и состояния) в вашей модели продолжают использовать тип данных double
после того, как вы конфигурируете параметры блоков, такие как Output data type, подтвердите, что модель не сконфигурирована, чтобы заменить типы данных. Смотрите Переопределение Типа данных Управления.
Simulink.AliasType
| Simulink.Bus
| Simulink.NumericType