Сгенерируйте разделяемый служебный код для пользовательских типов данных

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

Однако можно сконфигурировать генератор кода, чтобы поместить одно определение типа в заголовочный файл в _sharedutils папка. Затем когда вы генерируете код из модели, если определение типа уже существует в _sharedutils папка, генератор кода не копирует определение, но вместо этого снова использует его посредством включения (#include).

Через этот механизм можно совместно использовать:

Совместно использовать пользовательский тип данных через многоуровневые модели:

  1. Задайте тип данных. Например, создайте Simulink.AliasType объект.

  2. Установите осциллограф данных и свойства заголовочного файла к определенным значениям, которые позволяют совместно использовать.

    Для объекта типа данных, набор DataScope свойство к 'Exported' и, опционально, задайте имя заголовочного файла через HeaderFile свойство.

    Для перечисления, которое вы задаете как enum класс в файле скрипта, реализуйте getDataScope метод (с возвращаемым значением 'Exported') и, опционально, реализуйте getHeaderFile метод.

    Для перечисления, которое вы задаете при помощи Simulink.defineIntEnumType функция, набор 'DataScope' парный аргумент к 'Exported' и, опционально, задайте 'HeaderFile' парный аргумент

  3. Используйте тип данных в моделях.

  4. Прежде, чем сгенерировать код из каждой модели, набор параметр конфигурации модели Shared code placement к Shared location.

  5. Сгенерируйте код из моделей.

    Примечание

    Можно сконфигурировать определение пользовательского типа данных, чтобы появиться в заголовочном файле в _sharedutils папка. Разделяемые служебные функции, которые сборка модели генерирует в _sharedutils папка не использует имя пользовательского типа данных. Только типовой кодекс, расположенный в папках кода для каждой модели, использует имя пользовательского типа данных.

Похожие темы