exponenta event banner

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

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

Связанные темы