exponenta event banner

Управление размещением файлов пользовательских типов данных

По умолчанию при использовании объектов типа данных, таких как Simulink.AliasType и Simulink.Busи пользовательские перечисления для указания типов данных для сигналов и параметров блока, код, генерируемый из модели, определяет типы (например, с помощью typedef заявления). Чтобы упростить интеграцию сгенерированного кода с другим существующим кодом и модулировать сгенерированный код, можно управлять размещением файлов определений типов путем корректировки свойств объектов и перечислений.

Область данных и файл заголовка

Для управления размещением файла пользовательского определения типа в сгенерированном коде установите значение DataScope и HeaderFile свойства объекта типа данных в соответствии с таблицей. Аналогично, для перечисления, определенного в файле MATLAB ®, задайте возвращаемые аргументы getDataScope и getHeaderFile методы.

  • typename - имя пользовательского типа данных.

  • filename - имя файла заголовка.

  • model - имя модели.

ЦельОпределить DataScope какОпределить HeaderFile как
Экспорт определения типа в model_types.hAutoПустой
Импортируйте определение типа из создаваемого файла заголовка, filenameAuto или Importedfilename (при необходимости включить .h внутренний номер)
Экспорт определения типа в созданный файл заголовка, filename.hExportedfilename или filename.h
Экспорт определения типа в созданный файл заголовка, typename.hExportedПустой

При импорте определения типа данных (например, путем установки 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.h содержит охраняемый typedef заявление:

#ifndef _DEFINED_TYPEDEF_FOR_mySingleAlias_
#define _DEFINED_TYPEDEF_FOR_mySingleAlias_

typedef real32_T mySingleAlias;

#endif

См. также

| |

Связанные темы