По умолчанию, если модель использует пользовательский тип данных (такой как объект Simulink.AliasType
или класс перечисления), генератор кода помещает соответствующее определение типа (typedef
) в файл
. Когда вы генерируете код от многоуровневых моделей, каждая модель копирует определение типа. Эти дублирующиеся определения могут препятствовать тому, чтобы вы компилировали тела сгенерированного кода вместе.model_types.h
Однако можно сконфигурировать генератор кода, чтобы поместить одно определение типа в заголовочный файл в папке _sharedutils
. Затем когда вы генерируете код из модели, если определение типа уже существует в папке _sharedutils
, генератор кода не копирует определение, но вместо этого снова использует его посредством включения (#include
).
Через этот механизм можно совместно использовать:
Тип данных Simulink® возражает, что вы инстанцируете от классов Simulink.AliasType
, Simulink.Bus
и Simulink.NumericType
. Для основной информации о создании и использовании этих объектов, смотрите Имена типов данных Управления в Сгенерированном коде (Embedded Coder) и Simulink.Bus
.
Перечисления, которые вы задаете, например, путем авторской разработки класса enum
в файле скрипта или при помощи функционального Simulink.defineIntEnumType
. Для основной информации об определении перечислений в Simulink смотрите Использование Перечислимые Данные в Моделях Simulink (Simulink).
Совместно использовать пользовательский тип данных через многоуровневые модели:
Задайте тип данных. Например, создайте объект Simulink.AliasType
.
Установите осциллограф данных и свойства заголовочного файла к определенным значениям, которые позволяют совместно использовать.
Для объекта типа данных, набор свойство DataScope
к 'Exported'
и, опционально, задают имя заголовочного файла через свойство HeaderFile
.
Для перечисления, которое вы задаете как класс enum
в файле скрипта, реализуйте метод getDataScope
(с возвращаемым значением 'Exported'
) и, опционально, реализуйте метод getHeaderFile
.
Для перечисления, которое вы задаете при помощи функции Simulink.defineIntEnumType
, установите аргумент пары 'DataScope'
на 'Exported'
и, опционально, задайте аргумент пары 'HeaderFile'
Используйте тип данных в моделях.
Прежде, чем сгенерировать код из каждой модели, набор образцовый параметр конфигурации Shared code placement к Shared location
.
Сгенерируйте код из моделей.
Можно сконфигурировать определение пользовательского типа данных, чтобы появиться в заголовочном файле в папке _sharedutils
. Разделяемые служебные функции, которые сборка модели генерирует в папку _sharedutils
, не используют имя пользовательского типа данных. Только типовой кодекс, расположенный в папках кода для каждой модели, использует имя пользовательского типа данных.