По умолчанию, если модель использует пользовательский тип данных (такой как Simulink.AliasType возразите или класс перечисления), генератор кода помещает соответствующее определение типа (typedef) в файл. Когда вы генерируете код от многоуровневых моделей, каждая модель копирует определение типа. Эти дублирующиеся определения могут препятствовать тому, чтобы вы компилировали тела сгенерированного кода вместе.model_types.h
Однако можно сконфигурировать генератор кода, чтобы поместить одно определение типа в заголовочный файл в _sharedutils папка. Затем когда вы генерируете код из модели, если определение типа уже существует в _sharedutils папка, генератор кода не копирует определение, но вместо этого снова использует его посредством включения (#include).
Через этот механизм можно совместно использовать:
Тип данных Simulink® возражает, что вы инстанцируете от классов Simulink.AliasType, Simulink.Bus, и Simulink.NumericType. Для основной информации о создании и использовании этих объектов, смотрите Имена типов данных Управления в Сгенерированном коде и 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 папка не использует имя пользовательского типа данных. Только типовой кодекс, расположенный в папках кода для каждой модели, использует имя пользовательского типа данных.