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

По умолчанию, если модель использует пользовательский тип данных (такой как объект 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, не используют имя пользовательского типа данных. Только типовой кодекс, расположенный в папках кода для каждой модели, использует имя пользовательского типа данных.

Похожие темы