По умолчанию, если в модели используется пользовательский тип данных (такой как 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
function, установите 'DataScope'
аргумент в виде пары 'Exported'
и, опционально, задайте 'HeaderFile'
аргумент в виде пары
Используйте тип данных в моделях.
Перед генерацией кода из каждой модели установите параметр конфигурации модели Shared code placement равным Shared location
.
Сгенерируйте код из моделей.
Примечание
Вы можете сконфигурировать определение пользовательского типа данных, чтобы оно появилось в заголовочном файле в _sharedutils
папка. Общие служебные функции, который сборка модели генерирует в _sharedutils
папка не использует пользовательское имя типа данных. Только код модели, расположенный в папках кода для каждой модели, использует пользовательское имя типа данных.