Глобальные переменные могут увеличить требования к памяти и уменьшить скорость выполнения. Чтобы уменьшать глобальный RAM для подсистемы одноразового использования, можно сгенерировать функциональный интерфейс, который передает данные через аргументы вместо глобальных переменных. Интерфейс Function параметра блока Subsystem (Simulink) предоставляет эту возможность. Чтобы сравнить выходные параметры для опций Function interface, сначала сгенерируйте функцию для подсистемы с void-void
интерфейс, и затем генерирует функцию с аргументами.
void-void
ФункцияПо умолчанию, когда вы конфигурируете блок Subsystem как функцию одноразового использования, это генерирует void-void
интерфейс.
Откройте модель rtwdemo_roll
в качестве примера.
Щелкните правой кнопкой по подсистеме RollAngleReference
. Из списка выбирают Block Parameter (Subsystem)
.
В диалоговом окне Block Parameters подтвердите, что флажок Treat as atomic unit устанавливается.
Кликните по вкладке Code Generation и установите параметр Code interface packaging на Nonreusable function
.
Параметр Function interface уже устанавливается на void_void
.
Нажмите Apply и OK.
Повторите шаги 2-6 для других подсистем HeadingMode
и BasicRollMode
.
Сгенерируйте код и статический метрический отчет кода для rtwdemo_roll
. Эта модель сконфигурирована, чтобы сгенерировать отчет генерации кода и открыть отчет автоматически. Для получения дополнительной информации смотрите, Генерируют Статический Метрический Отчет Кода для Модели Simulink.
В отчете генерации кода, в rtwdemo_roll.c
, сгенерированный код для подсистемы RollAngleReference
содержит void-void
функциональное определение:
void rtwdemo_roll_RollAngleReference(void) { ... }
void_void
опция, количеством байтов для глобальных переменных является 55
.
Затем сгенерируйте ту же функцию с Allow arguments
опция, чтобы сравнить результаты.
Чтобы уменьшать глобальный RAM, улучшите скорость использования и выполнения ROM, сгенерируйте функцию, которая позволяет аргументы:
Откройте диалоговое окно Subsystem Block Parameter для RollAngleReference
.
Кликните по вкладке Code Generation. Установите параметр Function interface на Allow arguments
.
Нажмите Apply и OK.
Повторите шаги 2 и 3 для других подсистем HeadingMode
и BasicRollMode
.
Сгенерируйте код и статический метрический отчет кода для rtwdemo_roll
.
В отчете генерации кода, в rtwdemo_roll.c
, сгенерированный код для подсистемы RollAngleReference
теперь имеет аргументы:
real32_T rtwdemo_roll_RollAngleReference(real32_T rtu_Phi,... boolean_T rtu_AP_Eng,... real32_T rtu_Turn_Knob) { ... }
Allow arguments
набор опции, общим количеством байтов для глобальных переменных является теперь 47
байты.