По умолчанию при использовании объектов типа данных, таких как Simulink.AliasType и Simulink.Busи пользовательские перечисления для указания типов данных для сигналов и параметров блока, код, генерируемый из модели, определяет типы (например, с помощью typedef заявления). Чтобы упростить интеграцию сгенерированного кода с другим существующим кодом и модулировать сгенерированный код, можно управлять размещением файлов определений типов путем корректировки свойств объектов и перечислений.
Для управления размещением файла пользовательского определения типа в сгенерированном коде установите значение DataScope и HeaderFile свойства объекта типа данных в соответствии с таблицей. Аналогично, для перечисления, определенного в файле MATLAB ®, задайте возвращаемые аргументы getDataScope и getHeaderFile методы.
- имя пользовательского типа данных.typename
- имя файла заголовка.filename
- имя модели.model
| Цель | Определить DataScope как | Определить HeaderFile как |
|---|---|---|
Экспорт определения типа в | Auto | Пустой |
Импортируйте определение типа из создаваемого файла заголовка, | Auto или Imported | (при необходимости включить .h внутренний номер) |
Экспорт определения типа в созданный файл заголовка, | Exported | или |
Экспорт определения типа в созданный файл заголовка, | Exported | Пустой |
При импорте определения типа данных (например, путем установки DataScope кому Imported), созданный код модели создает #include директива для файла заголовка вместо определения типа. Предоставляется файл заголовка, содержащий определение.
Если замена типа данных используется для замены встроенного типа данных Simulink ® собственным типом данных в сгенерированном коде (см. Параметры конфигурации модели: Замена типа данных генерации кода ),typedef заявления и #include директивы появляются в rtwtypes.h вместо .model_types.h
Когда Simulink.AliasType или Simulink.NumericType объект участвует в заменах типов данных, невозможно установить DataScope свойства объекта для Exported. Следовательно, если требуется, чтобы генератор кода генерировал соответствующий typedef оператор, невозможно управлять размещением файла оператора. Однако можно задать DataScope кому Imported, что означает, что можно настроить код для повторного использования typedef оператор, который предоставляет внешний код.
В качестве обхода вместо использования объекта типа данных в качестве замены типа данных используйте объект для задания типов данных отдельных элементов данных в модели. Для настройки многих элементов данных можно использовать Редактор данных модели (Model Data Editor) и воспользоваться преимуществами распространения и наследования типов данных. Дополнительные сведения см. в разделе Управляющие имена примитивных типов данных.
Вы можете использовать Simulink.AliasType объект с численно комплексными данными (i). В этом случае при настройке созданного кода для импорта определения типа из внешнего кода (например, путем установки DataScope свойство для Imported), ваш код должен содержать два дополнительных typedef заявления.
Предположим, что ваш внешний файл заголовка myAliasTypes.h определяет тип данных IAT_int32 как псевдоним 32-разрядного целого числа. Файл должен определять два типа: IAT_int32 и cIAT_int32:
#ifndef myAliasTypes_H_ #define myAliasTypes_H_ #include "rtwtypes.h" typedef int32_T IAT_int32; typedef cint32_T cIAT_int32; #endif
Вам не нужно создавать два Simulink.AliasType объекты. В этом примере создается один объект, IAT_int32. Созданный код затем создает сложные данные (переменные) с использованием обоих IAT_int32 и cIAT_int32.
При экспорте одного или нескольких определений типов данных в созданный файл заголовка файл содержит макрозащиту на уровне файла формы RTW_HEADER_. filename_h
Предположим, что вы используете несколько Simulink.AliasType объекты: mySingleAlias, myDoubleAlias, и myIntAlias со следующими свойствами:
DataScope установить в значение Exported
HeaderFile установить в значение myTypes.h
При создании кода охраняемый файл myTypes.h содержит typedef утверждения:
#ifndef RTW_HEADER_myTypes_h_ #define RTW_HEADER_myTypes_h_ #include "rtwtypes.h" typedef real_T myDoubleAlias; typedef real32_T mySingleAlias; typedef int16_T myIntAlias; #endif
При экспорте определений типов данных в , файл содержит макрозащиту формы model_types.h_DEFINED_TYPEDEF_FOR_ для каждого typename_typedef заявление. Предположим, что вы используете Simulink.AliasType объект mySingleAlias со следующими свойствами:
DataScope установить в значение Auto
HeaderFile не указано
При создании кода файл содержит охраняемый model_types.htypedef заявление:
#ifndef _DEFINED_TYPEDEF_FOR_mySingleAlias_ #define _DEFINED_TYPEDEF_FOR_mySingleAlias_ typedef real32_T mySingleAlias; #endif
Simulink.AliasType | Simulink.Bus | Simulink.NumericType