Можно сгенерировать код только для активных значений или и для активных и для неактивных значений различных параметров в Simulink®. Можно также представлять значения различных параметров как встроенные переменные или как настраиваемые переменные в сгенерированном коде.
Примечание
Чтобы сгенерировать код только для активных значений различных параметров, необходимо установить Simulink Coder™. Чтобы сгенерировать код для активных и неактивных значений различных параметров, необходимо установить Embedded Coder®.
Различные параметры могут иметь несколько значений. Каждое значение различного параметра сопоставлено с различным выражением условия. В процессе моделирования значение различного параметра сопоставило с условием, которое оценивает к true активное значение различного параметра. Значение сопоставило с условием, которое оценивает к false неактивное значение различного параметра. Когда вы генерируете код, можно принять решение включать только активное значение или и активные и неактивные значения в сгенерированном коде. Можно также принять решение представлять значения как встроенные или как настраиваемые переменные в сгенерированном коде. Для получения дополнительной информации о различных параметрах смотрите Параметры Варианта Использования к Параметрам блоков Повторного использования с Различными Значениями.
Поддержки Simulink, генерирующие код только для активных значений или и для активных и для неактивных значений различных параметров. Значения, включенные в код, основаны на различном времени активации, которое вы задаете для различных параметров.
Когда вы задаете Различное время активации как:
update diagram – Simulink устанавливает активные значения различных параметров во время схемы обновления перед распространением атрибутов сигнала. Неактивный выбор удален до распространения атрибутов сигнала. Атрибуты сигнала, такие как размерность и тип данных не анализируются для непротиворечивости через модель. Сгенерированный код содержит только активное значение различных параметров.
update diagram analyze all choices– Simulink устанавливает активные значения различных параметров во время схемы обновления после распространения атрибутов сигнала. Атрибуты сигнала распространены и к активным и к неактивным значениям. Атрибуты сигнала, такие как размерность и тип данных анализируются для непротиворечивости через модель. Сгенерированный код содержит только активное значение различных параметров.
code compile – Simulink устанавливает активный выбор во время компиляции кода. Атрибуты сигнала распространены и к активным и к неактивным значениям. Атрибуты сигнала, такие как размерность и тип данных анализируются для непротиворечивости через модель. Сгенерированный код содержит и активные и неактивные значения различных параметров. Значения заключены в условные операторы препроцессора C #if и #endif.
Поддержки Simulink, представляющие значения различных параметров как встроенные переменные или как настраиваемые переменные в сгенерированном коде. Представление значений в коде основано на классе памяти, который вы задаете для различных параметров.
Встроенная переменная: Если вы задаете класс памяти различного параметра как Auto, который является классом памяти по умолчанию, и время активации как update diagram или update diagram analyze all choices, затем различный параметр встраивается к литеральному числовому значению параметра в сгенерированном коде. Если вы задаете класс памяти различного параметра как Auto и время активации как code compile, затем различный параметр встраивается как макросы в сгенерированном коде. Встроенные переменные уменьшают глобальный КПД Использования оперативной памяти и увеличения сгенерированного кода. Код не выделяет память, чтобы представлять числовые параметры блоков, такие как параметр Gain блока Gain. Вместо этого код встраивается к литеральному числовому значению параметра.
Настраиваемый: Если вы задаете класс памяти различного параметра как что-нибудь кроме Auto, затем различный параметр представлен с помощью символьных имен в сгенерированном коде, как описано в Выбирают Storage Class for Controlling Data Representation in Generated Code.
В этом примере показано, как сгенерировать код С для различных параметров. Стиль сгенерированного кода основан на различном времени активации и классе памяти, который вы задаете для различных параметров.
Рассмотрите slexVariantParameters.slx модель.

Параметры Gain Gain1 и блоков Gain2 являются различными параметрами со своим набором значений к K1 и K2, соответственно. Переменная K1 имеет два значения: 3.5 и 8.5. Переменная K2 имеет два значения: 4.5 и 9.5.
Simulink выбирает активные значения K1 и K2 на основе значения различной контрольной переменной V. Если V==1 оценивает к true, затем значение K1 установлен в 3.5, и значение K2 установлен в 8.5. Если V==2 оценивает к true, затем значение K1 установлен в 4.5, и значение K2 установлен в 9.5.
Стиль сгенерированного кода основан на различном времени активации и классе памяти, который вы задаете для различных параметров. В этом примере различное время активации установлено в update diagram, и класс памяти установлен как Auto. Когда вы генерируете код из этой модели, код сгенерирован только для активных значений K1 и K2. В сгенерированном коде значения встраиваются к литеральному значению параметров.
Прежде чем вы сгенерируете код из модели, необходимо сначала гарантировать, что у вас есть разрешение записи в вашей текущей папке.
Подготовьте модель к генерации кода путем определения настроек генерации кода в диалоговом окне Configuration Parameters. Выберите соответствующий решатель и цель генерации кода, и проверяйте настройку модели на КПД выполнения. Для получения дополнительной информации о каждом из этих шагов смотрите, Генерируют Код Используя Simulink® Coder™.
В галерее Apps панели инструментов модели нажмите Simulink Coder.
На вкладке C Code нажмите Build.
Генератор кода создает папку slexVariantParameters_ert_rtw в вашей текущей рабочей папке и файлах исходного кода мест в той папке. Сгенерированный код находится в двух первичных файлах: slexVariantParameters.c и slexParameters.h. Файл slexVariantParameters.h содержит значение различной контрольной переменной и файл slexVariantParameters.c содержит значения различных параметров.
Во вкладке C Code выберите Open Report.
Выберите slexVariantParameters.c файл от панели Generated Code отчета. Код сгенерирован только для активных значений K1 и K2. В сгенерированном коде значения встраиваются к литеральному значению параметров.
mUDInlined_Y.Out1 = 4.5 * mUDInlined_U.In1; mUDInlined_Y.Out2 = 3.5 * mUDInlined_U.In2;
В модели измените время активации в code compile и класс памяти к ExportedGlobal, затем сгенерируйте код снова. Наблюдайте изменение в стиле сгенерированного кода.
Код сгенерирован только для всех активных и неактивных значений K1 и K2. В сгенерированном коде значения представлены с помощью символьных имен.
Эта таблица показывает различие в стиле сгенерированного кода для классов памяти Auto и ExportedGlobal с различными временами активации.
| Время активации | Класс памяти | |
Auto (значение по умолчанию) | ExportGlobal | |
update diagram | Код сгенерирован только для активных значений различных параметров. В сгенерированном коде значения встраиваются к литеральному значению параметров. Рассмотрите этот отрывок сгенерированного кода. mUDInlined_Y.Out1 = 4.5 * mUDInlined_U.In1; mUDInlined_Y.Out2 = 3.5 * mUDInlined_U.In2; | Код сгенерирован только для активных значений различных параметров. В сгенерированном коде значения представлены с помощью символьных имен. Рассмотрите этот отрывок сгенерированного кода. Здесь, real_T K1 = 3.5; real_T K2 = 4.5; … … mUDInlined_Y.Out1 = K2 * mUDInlined_U.In2; mUDInlined_Y.Out2 = K1 * mUDInlined_U.In1; |
update diagram analyze all choices | Сгенерированный код - то же самое как тот из | Сгенерированный код - то же самое как тот из |
code compile | Код сгенерирован для всех активных и неактивных значений различных параметров. Все значения анализируются, чтобы гарантировать непротиворечивость атрибутов сигнала, таких как размерность и тип данных через модель. В сгенерированном коде значения встраиваются как макросы. Рассмотрите этот отрывок сгенерированного кода. Активные и неактивные значения заключены в условные операторы препроцессора C #if V == 1 #define rtCP_Gain1_K1 (3.5) #elif V == 2 #define rtCP_Gain1_K1 (8.5) #endif #if V == 1 #define rtCP_Gain_K2 (4.5) #elif V == 2 #define rtCP_Gain_K2 (9.5) #endif mUDInlined_Y.Out1 = rtCP_Gain_K2 * mUDInlined_U.In2; mUDInlined_Y.Out2 = rtCP_Gain1_K1 * mUDInlined_U.In1; | Код сгенерирован для всех активных и неактивных значений различных параметров. Все значения анализируются, чтобы гарантировать непротиворечивость атрибутов сигнала, таких как размерность и тип данных через модель. В сгенерированном коде значения представлены с помощью символьных имен. Рассмотрите этот отрывок сгенерированного кода. Активные и неактивные значения заключены в условные операторы препроцессора C #if V == 1 #real_T K1 = 3.5; #elif V == 2 #real_T K1 = 8.5; #endif #if V == 1 #real_T K2 = 4.5; #elif V == 2 #real_T K2 = 9.5; #endif mUDInlined_Y.Out1 = K2 * mUDInlined_U.In2; mUDInlined_Y.Out2 = K1 * mUDInlined_U.In1; |
Выберите Storage Class for Controlling Data Representation in Generated Code | Используйте различные параметры, чтобы снова использовать параметры блоков с различными значениями