Сгенерированный код можно оптимизировать, выбрав Инлайн инвариантные сигналы на панели Оптимизация (Optimization). Сгенерированный код использует числовые значения инвариантных сигналов вместо их символических имен.
Инвариантный сигнал - это блочный выходной сигнал, который не изменяется во время моделирования Simulink ®. Например, сигналS3 - инвариантный сигнал. Инвариантный сигнал не совпадает с инвариантной константой. Две константы (1 и 2) и значение усиления 3 являются инвариантными константами. Чтобы встроить инвариантные константы, задайте для параметра Поведение по умолчанию значение Inlined.

В этом примере показано, как использовать встроенные инвариантные сигналы для оптимизации генерируемого кода. Эта оптимизация преобразует символические имена инвариантных сигналов в постоянные значения.
InlineInvariantSignals оптимизация:
Сокращение потребления ПЗУ и ОЗУ.
Повышает скорость выполнения.
Пример модели
Рассмотрим модель rtwdemo_inline_invariant_signals.
model = 'rtwdemo_inline_invariant_signals';
open_system(model);

Создать код
Создайте временную папку (во временной папке системы) для процесса сборки и контроля.
currentDir = pwd; [~,cgDir] = rtwdemodir();
Создайте модель с помощью Simulink Coder.
slbuild(model)
### Starting build procedure for: rtwdemo_inline_invariant_signals ### Successful completion of build procedure for: rtwdemo_inline_invariant_signals Build Summary Top model targets built: Model Action Rebuild Reason ================================================================================================================= rtwdemo_inline_invariant_signals Code generated and compiled Code generation information file does not exist. 1 of 1 models built (0 models already up to date) Build duration: 0h 0m 7.2481s
Просмотр созданного кода без оптимизации. Эти строки кода находятся в rtwdemo_inline_invariant_signals.c.
cfile = fullfile(cgDir,'rtwdemo_inline_invariant_signals_grt_rtw',... 'rtwdemo_inline_invariant_signals.c'); rtwdemodbtype(cfile,'/* Output and update for atomic system',... '/* Model output', 1, 0);
/* Output and update for atomic system: '<Root>/InlinedConstFcn' */
void rtwdemo_inline__InlinedConstFcn(int32_T rtu_In1,
B_InlinedConstFcn_rtwdemo_inl_T *localB, const ConstB_InlinedConstFcn_rtwdem_T
*localC)
{
/* Product: '<S1>/Product' */
localB->Product = rtu_In1 * localC->Sum_p;
}
Включить оптимизацию
Откройте диалоговое окно «Параметры конфигурации».
На панели Оптимизация (Optimization) выберите Встроенные инвариантные сигналы (Inline Invariant Signals).
Кроме того, для оптимизации можно использовать API командной строки:
set_param(model, 'InlineInvariantSignals', 'on');
Создание кода с оптимизацией
Созданный код использует числовые значения свернутых констант вместо создания дополнительной структуры (rtwdemo_inline_invariant_ConstB).
Создайте модель с помощью Simulink Coder.
slbuild(model)
### Starting build procedure for: rtwdemo_inline_invariant_signals ### Successful completion of build procedure for: rtwdemo_inline_invariant_signals Build Summary Top model targets built: Model Action Rebuild Reason ================================================================================================ rtwdemo_inline_invariant_signals Code generated and compiled Generated code was out of date. 1 of 1 models built (0 models already up to date) Build duration: 0h 0m 5.5562s
Просмотр созданного кода с оптимизацией. Эти строки кода находятся в rtwdemo_minmax.c.
rtwdemodbtype(cfile,... '/* Output and update for atomic system', '/* Model output', 1, 0);
/* Output and update for atomic system: '<Root>/InlinedConstFcn' */
void rtwdemo_inline__InlinedConstFcn(int32_T rtu_In1,
B_InlinedConstFcn_rtwdemo_inl_T *localB)
{
/* Product: '<S1>/Product' */
localB->Product = rtu_In1 << 5;
}
Закройте отчет о модели и создании кода.
bdclose(model) rtwdemoclean; cd(currentDir)