Управляйте генерацией функций для подсистем

Что такое Функция Подсистемы?

Функция подсистемы является функцией, которую генератор кода производит для подсистемы в модели. Функциональный интерфейс и как генератор кода группирует код, зависит от того, является ли подсистема виртуальной или атомарной (невиртуальной) подсистемой и как вы конфигурируете параметры блоков подсистемы. Для получения дополнительной информации смотрите Подсистему, Атомарную подсистему, Подсистему CodeReuse.

Опции для управления генерацией кода функции подсистемы

Можно спроектировать и сконфигурировать модель способом, которая управляет, как генератор кода производит код из подсистем.

КСмотрите
Сгенерируйте встроенный код от выбранной подсистемы.Встроенный код подсистемы
Сгенерируйте код только для подсистемы.Сгенерируйте код и исполняемые файлы для отдельных подсистем
Сгенерируйте отдельные функции без аргументов, и опционально поместите код подсистемы в отдельный файл.Сгенерируйте код подсистемы как отдельную функцию и файлы
Сгенерируйте одну повторно используемую функцию для подсистемы, которая включена в несколько мест в модели.Сгенерируйте повторно используемый код от подсистем
Сгенерируйте одну повторно используемую функцию для подсистемы, которая включена в несколько мест в иерархии модели - ссылки.Сгенерируйте повторно используемый код от подсистем библиотеки, разделяемых через модели
Сгенерируйте код для допускающей повторное использование подсистемы библиотеки, которая содержит несколько функциональных интерфейсов.Основанная на библиотеке генерация кода для допускающих повторное использование подсистем библиотеки

Зависимость функции подсистемы

Код, сгенерированный от подсистем, может быть абсолютно независим от кода, сгенерированного для модели. При генерации кода для подсистемы код может сослаться на структуры глобальных данных модели, даже если код функции подсистемы находится в отдельном файле. Каждый файл кода подсистемы содержит include директивы и комментарии, описывающие зависимости. Генератор кода проверяет на циклические зависимости от файла и предупреждает о них во время сборки. Для описаний как код пакетов генератора кода, смотрите, Управляют Зависимостями от Файла Процесса сборки.

Чтобы сгенерировать код функции подсистемы, который независим от кода, сгенерированного для родительской модели, поместите подсистему в библиотеку и сконфигурируйте его, когда допускающая повторное использование подсистема, как объяснено в Генерируют Повторно используемый код от Подсистем Библиотеки, Разделяемых Через Модели.

Если у вас есть лицензия Embedded Coder®, можно сгенерировать код для библиотеки, состоящей из допускающих повторное использование подсистем, которые имеют различные функциональные интерфейсы. Для получения дополнительной информации смотрите Основанную на библиотеке Генерацию кода для Допускающих повторное использование Подсистем Библиотеки.

Сохраните контуры подсистемы в сгенерированном коде

В этом примере показано, как сохранить контур виртуальной подсистемы. Путем выбора Обработки параметра подсистемы как атомарного модуля вы даете генератору кода команду создавать код для подсистемы так, чтобы это выполнилось как атомарный модуль. Если вы отмечаете систему как атомарная, можно задать, как генератор кода представляет подсистему в коде путем установки Упаковки Функции Генерации кода параметров блоков. Можно указать, что генератор кода производит эти реализации кода для подсистемы:

  • Встроенный: Встройте код подсистемы на сайтах вызова

  • Функция: пустая/пустая функция с вводом-выводом и внутренними данными в структуре глобальных данных

  • Допускающая повторное использование функция: повторно используемая функция с данными, переданными в как часть аргументов функции

  • 'auto': Позвольте Simulink Coder оптимизировать реализацию на основе контекста

1. Сгенерируйте код и отчет генерации кода.

2. Используйте сгенерированный отчет смотреть сгенерированный исходный файл rtwdemo_atomic.c. Для SS1, генератор кода производит допускающий повторное использование функциональный код с именем функции myfun.

Simulink и Simulink Coder могут избежать искусственных алгебраических циклов, если вы выбираете параметр, Минимизируют алгебраические случаи цикла. См. документацию Simulink для получения информации о минимизации случаев алгебраических циклов.

Модель в качестве примера

model = 'rtwdemo_atomic';
open_system(model);

Похожие темы