Чтобы управлять типом данных сигнала в модели Simulink®, вы задаете тип данных для соответствующего блока вывод.
Можно также ввести новый сигнал определенного типа данных в модель любым из следующих способов:
Загрузите данные сигнала желаемого типа из рабочей области MATLAB® в вашу модель через блок Inport корневого уровня или блок From Workspace.
Создайте блок Constant в своей модели и установите ее параметр на желаемый тип.
Используйте блок Data Type Conversion, чтобы преобразовать сигнал в желаемый тип данных.
Блоки Simulink определяют тип данных своих выходных параметров по умолчанию. Много блоков позволяют вам заменять тип по умолчанию и явным образом задавать тип выходных данных, с помощью параметров блоков, которые обычно называют Output data type. Например, параметр Output data type появляется на панели Signal Attributes диалогового окна блока Constant.
Смотрите следующие темы для получения дополнительной информации:
Для получения информации о... | Смотрите... |
---|---|
Допустимые значения типа данных, которые можно задать | |
Ассистент, который помогает вам задать допустимые значения типа данных | |
Определение допустимых значений типа данных для нескольких блоков одновременно |
В целом можно задать тип выходных данных как любое следующее:
Правило, которое наследовало тип данных (см. Правила Наследования Типа данных),
Имя встроенного типа данных (см. Встроенные Типы данных),
Выражение, которое оценивает к типу данных (см. Выражения Типа данных),
Допустимые значения типа данных отличаются среди блоков. Можно использовать выпадающее меню, сопоставленное с параметром типа данных блока, чтобы просмотреть типы данных, которые поддерживает конкретный блок. Например, выпадающее меню 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 (View> 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
, которая идет с продуктом Simulink, содержит многочисленные блоки Усиления. Предположим, что вы хотите задать тип выходных данных трех блоков Усиления на корневом уровне модели как single
. Можно достигнуть этой задачи можно следующим образом:
В Model Data Editor (View> Model Data Editor), осмотрите вкладку Signals.
Рядом с полем Filter contents переключите кнопку Filter using selection.
В верхнем уровне модели выберите сигнальные линии, которые представляют выходные параметры трех блоков Усиления (маркировал 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
.
Выберите View> Model Data Editor. В Model Data Editor осмотрите вкладку Signals.
В модели кликните по выходному сигналу блока Pumping Constant. Столбец Data Type Model Data Editor показывает, что тип данных сигнала установлен в s16En15
.
Кликните по выходному сигналу Уровня Пандуса блок Ки. Тип выходных данных этого блока также установлен в s16En15
.
Обновите блок-схему и, при необходимости, расширьте ширину столбца Data Type. Правая сторона столбца показывает, что два блока интерполяционной таблицы используют тип данных single
.
В командной строке сконфигурируйте s16En15
, чтобы представлять тип данных double
.
s16En15.DataTypeMode = 'Double';
Обновите блок-схему.
Выходные сигналы двух блоков интерполяционной таблицы теперь используют тип данных double
. Из-за наследования типа данных, другие сигналы, такие как e0
и e1
, получают совпадающий тип данных.
Также, чтобы установить эквивалентность типа данных между алгоритмами или информационными каналами в той же модели, можно использовать блоки, такие как Распространение Типа данных и Наследованное Преобразование типа данных. Когда вы используете эти блоки, вы не должны создавать и постоянно хранить объект типа данных. Однако вы не можете использовать блоки, чтобы совместно использовать тип данных между сигналами в различных моделях, если модели не находятся в той же иерархии модели - ссылки.
В модели можно создать сигналы, которые соответствуют пользовательским типам данных 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 выберите Display> Signals & Ports> Port Data Types. Типы данных появляются на блок-схеме рядом с каждым сигналом. Для получения дополнительной информации смотрите Типы Данных порта.
Осмотрите правую сторону столбца Data Type в Model Data Editor (View> Model Data Editor). Для получения дополнительной информации о Model Data Editor, смотрите Configure Data Properties при помощи Model Data Editor.
Используя эти методы, чтобы осмотреть типы данных помогает вам к:
Разработайте стратегию типа данных модели на высоком уровне.
Отладьте числовые проблемы из-за квантования и переполнения.
Сделайте модель более понятной при совместном использовании его.
Для получения дополнительной информации смотрите Типы Данных порта.
double
несмотря на изменение настроекЕсли многие элементы данных (сигналы, параметры и состояния) в вашей модели продолжают использовать тип данных double
после того, как вы конфигурируете параметры блоков, такие как Output data type, подтвердите, что модель не сконфигурирована, чтобы заменить типы данных. Смотрите Переопределение Типа данных Управления.
Simulink.AliasType
| Simulink.Bus
| Simulink.NumericType