По умолчанию, если в модели используется пользовательский тип данных (например, 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.AliasType объект.
Задайте для свойств области данных и файла заголовка определенные значения, разрешающие общий доступ.
Для объекта типа данных установите значение DataScope свойство для 'Exported' и, при необходимости, указать имя файла заголовка через HeaderFile собственность.
Для перечисления, определяемого как enum класса в файле сценария, реализуйте getDataScope метод (с возвращаемым значением 'Exported') и, необязательно, реализовать getHeaderFile способ.
Для перечисления, определяемого с помощью Simulink.defineIntEnumType , установите 'DataScope' аргумент пары к 'Exported' и, при необходимости, укажите 'HeaderFile' аргумент пары
Используйте тип данных в моделях.
Перед созданием кода из каждой модели установите параметр конфигурации модели Shared code placement равным Shared location.
Создайте код из моделей.
Примечание
Можно настроить определение пользовательского типа данных для отображения в файле заголовка в _sharedutils папка. Общие служебные функции, генерируемые компоновкой модели в _sharedutils папка не использует имя пользовательского типа данных. Только код модели, расположенный в папках кода для каждой модели, использует имя пользовательского типа данных.