Активируйте вариант во время различных этапов рабочего процесса симуляции и генерации кода

Используя различное время активации, Simulink® устанавливает активный выбор в различных блоках и различных параметрах во время различных этапов рабочих процессов генерации кода и симуляции.

Активный выбор установлен:

  • Во время этапа компиляции модели или этапа цикла симуляции рабочего процесса симуляции.

  • Во время этапа компиляции модели, этапа компиляции кода или этапа запуска модели рабочего процесса генерации кода.

Смотрите этапы, чтобы установить активный выбор в различных блоках и различных параметрах.

Чтобы установить активный выбор, Simulink оценивает различные средства управления, которые вы задаете в браузере рабочей области, в командной строке, или в коллбэках, такой как InitFcn, PreLoadFcn, и PostLoadFcn. Для получения дополнительной информации о коллбэках смотрите Коллбэки Модели.

Когда вы устанавливаете активный выбор в промежуточных стадиях, можно включать только активный выбор или и активный и неактивный выбор в рабочем процессе генерации кода и симуляции. И включая активный и включая неактивный выбор с code compile время активации улучшает скорость рабочих процессов генерации кода, потому что вы не должны регенерировать модель каждый раз, когда вы изменяете активный выбор. Точно так же startup время активации улучшает скорость итеративной симуляции и рабочих процессов генерации кода, потому что вы не должны перекомпилировать модель каждый раз, когда вы изменяете активный выбор. Вы запускаете модель только однажды. Можно затем изменить активный выбор и сгенерировать выход с помощью артефактов, сгенерированных в предыдущей итерации. Различное время активации также позволяет вам задавать, анализировать ли все варианты для несовместимостей в атрибутах сигнала в модели, таких как размерность и тип данных.

Примечание

Только один выбор может быть активным любой данный этап рабочего процесса генерации кода и симуляции.

Overview of variant activation time during simulation and code generation

Этапы, чтобы установить активный выбор в различных блоках и различных параметрах

Эти таблицы описывают этапы, на которых Simulink устанавливает активный выбор различных блоков и различных параметров в процессе моделирования и рабочего процесса генерации кода.

Этапы рабочего процесса симуляцииОписаниеРазличное время активации
компиляция моделиЭто - первая стадия рабочего процесса симуляции. На этом этапе выражения параметров блоков и функции обратного вызова модели оценены, атрибуты сигнала, атрибуты шага расчета, и блокируются, порядок выполнения определяется, и блок оптимизирован, чтобы улучшить скорость симуляции.
цикл симуляцииSimulink последовательно вычисляет состояния и выходные параметры системы с промежутками со времени начала симуляции ко времени окончания.запуск

Для получения дополнительной информации об этапах в рабочем процессе симуляции смотрите Фазы Симуляции в Динамических системах.

Этапы рабочего процесса генерации кодаОписаниеРазличное время активации
компиляция моделиЭто - первая стадия рабочего процесса симуляции. На этом этапе выражения параметров блоков и функции обратного вызова модели оценены, атрибуты сигнала, атрибуты шага расчета, и блокируются, порядок выполнения определяется, и блок оптимизирован, чтобы улучшить скорость симуляции.
компиляция кодаКод С переводится в машинный код.компиляция кода
запуск моделиЦентральный процессор выполняет команды машинного кода модели. запуск

Типы различного времени активации в блоках вариантов и различных параметров

Simulink устанавливает активный выбор различных блоков и различных параметров во время различных этапов симуляции и рабочего процесса генерации кода с помощью этих различных времен активации:

обновите схему

В процессе моделирования Simulink устанавливает и сохраняет активный выбор в начале этапа компиляции модели, прежде чем атрибуты сигнала будут распространены с блоками. Неактивный выбор удален из рабочего процесса симуляции. Атрибуты сигнала затем распространены только к активному выбору, поэтому только активный выбор участвует в последующих этапах симуляции. Атрибуты сигнала не анализируются для непротиворечивости через модель.

Рабочий процесс генерации кода - то же самое как рабочий процесс симуляции. Поскольку только активный выбор сохраняется, и неактивный выбор удален на этапе компиляции модели, код, который сгенерирован на этапе codegen, содержит только активный выбор.

Для получения информации о том, как использовать update diagram время активации в различных блоках и в различных параметрах, смотрите Различное время активации и ActivationTime.

обновитесь схема анализируют весь выбор

В процессе моделирования Simulink распространяет атрибуты сигнала ко всем вариантам. Атрибуты сигнала в выборе анализируются, чтобы проверять, может ли каждый блок принять сигналы, соединенные с его входными параметрами. Simulink затем устанавливает и сохраняет активный выбор поздно на этапе компиляции модели. Неактивный выбор удален из рабочего процесса симуляции, поэтому только активный выбор участвует в последующих этапах симуляции.

Рабочий процесс генерации кода - то же самое как рабочий процесс симуляции. Поскольку только активный выбор сохраняется, и неактивный выбор удален на этапе компиляции модели, код, который сгенерирован на этапе codegen, содержит только активный выбор.

Для получения информации о том, как использовать update diagram analyze all choices время активации в различных блоках и в различных параметрах, смотрите Различное время активации и ActivationTime.

компиляция кода

Рабочий процесс симуляции - то же самое как update diagram analyze all choices.

Во время генерации кода Simulink распространяет атрибуты сигнала ко всем вариантам. Атрибуты сигнала во всем выборе анализируются, чтобы проверять, может ли каждый блок принять сигналы, соединенные с его входными параметрами. Весь выбор участвует в codegen этапе рабочего процесса. Таким образом сгенерированный код включает весь выбор. В коде выбор заключен в условные выражения препроцессора C #if и #else.

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

Примечание

В code compile:

  • Необходимо установить Simulink Coder™, чтобы сгенерировать код только для активного выбора в модели.

  • Необходимо установить Embedded Coder® сгенерировать код для активного и неактивного выбора в модели.

Для получения информации о том, как использовать code compile время активации в различных блоках и в различных параметрах, смотрите Различное время активации и Код Компиляции Условно для всех Значений Различных Параметров.

запуск

В процессе моделирования Simulink распространяет атрибуты сигнала ко всем вариантам. Атрибуты сигнала во всем выборе анализируются, чтобы проверять, может ли каждый блок принять сигналы, соединенные с его входными параметрами. Simulink затем устанавливает и сохраняет активный выбор и удаляет неактивный выбор на этапе цикла симуляции. Только активный выбор участвует в этапе цикла симуляции. Эта опция не требует, чтобы вы скомпилировали модель в следующий раз, когда вы изменяете активный выбор. Вы компилируете модель только однажды, и можно затем указать, что различный активный выбор до цикла симуляции подготавливает и симулирует модель. Simulink последовательно вычисляет состояния и выходные параметры модели для того активного выбора.

Во время генерации кода Simulink распространяет атрибуты сигнала ко всему выбору вариантов. Атрибуты сигнала во всем выборе анализируются, чтобы проверять, может ли каждый блок принять сигналы, соединенные с его входными параметрами. Весь выбор участвует в codegen этапе рабочего процесса и следовательно, сгенерированный код включает весь выбор. В коде выбор заключен в регулярный if условия.

Simulink устанавливает активный выбор только, когда вы запускаете исполняемый файл, который создается из сгенерированного кода. Другими словами, когда вы запускаете исполняемый файл, центральный процессор принимает активный выбор, как введено. Процессор выполняет if условия для активного выбора и генерируют выход только для активного выбора. Преимущество использования этой опции состоит в том, что вы не обязаны регенерировать исполняемый файл в следующий раз, когда вы задаете различный активный выбор. Вы генерируете исполняемый файл только однажды. Можно затем задать различный активный выбор до выполнения исполняемого файла и затем сгенерировать выход для того активного выбора.

Примечание

В startup, необходимо установить или Simulink Coder или Embedded Coder, чтобы сгенерировать код для активного и неактивного выбора в модели.

С startup время активации, вы можете:

Для получения информации об ограничениях с startup время активации, смотрите Известные Ограничения времени активации варианта запуска.

Рисунок различных различных времен активации

Этот рисунок показывает этапы, на которых Simulink устанавливает активный выбор в течение различных различных времен активации.

Variant activation time during different stages of simulation and code generation in variant blocks and in variant parameters

Различное время активации для различных блоков

Этот раздел объясняет, как задать различное время активации, поддерживаемые различные режимы управления и различное распространение условия в течение различных времен активации в различных блоках.

Используйте различное время активации в различных блоках

Этот пример объясняет, как задать активное время активации варианта использования выбора в различных блоках.

Рассмотрите эту модель. Различная Подсистема VSS1 имеет два потенциальных варианта, Linear и Nonlinear. Различное выражение условия сопоставлено с Linear V == 1. Различное выражение условия сопоставлено с Nonlinear V == 2. На диалоговом окне VSS1, параметр Variant activation time задан как code compile.

Когда вы генерируете код из этой модели, сгенерированный код содержит все варианты VSS1. В коде выбор заключен в условные операторы препроцессора C #if и #elif. Прежде чем вы скомпилируете код, чтобы сгенерировать исполняемый файл, можно задать значение для V как вход к компилятору. После компиляции кода компилятор принимает значение V оценивать каждый условный оператор препроцессора. На основе условия, которое оценивает к true, компилятор устанавливает активный выбор и затем генерирует исполняемый файл только для активного выбора. Например, если вы предоставляете вход компилятору как 1, исполняемый файл содержит только Linear вариант.

Сгенерировать исполняемый файл для Nonlinear вариант, измените входное значение в компилятор к 2 и перекомпилируйте сгенерированный код.

An example of how to use variant activation time in variant blocks

Поддерживаемое различное время активации в различных блоках

Доступность времен активации зависит от типа различного режима управления, который вы задаете для блока. Эта таблица приводит различное время активации, поддержанное каждым различным режимом управления. Для получения информации о различных режимах управления смотрите Введение в Различные Средства управления.

Variant activation time
Variant control mode update diagramupdate diagram analyze all choicescode compilestartup
expression
labelxxx
sim codegen switchingxx

Примечание

Различное время активации блока Variant Connector (Simscape) и основанных на событии различных блоков, таких как блок Simulink Function, блок Initialize Function, блок Reset Function и блок Terminate Function набором по умолчанию к update diagram. Вы не можете установить его ни на какое другое время активации.

Различное распространение условия в течение различных времен активации в различных блоках

Различное распространение условия позволяет вам присваивать выражения условия вне различных блоков с соединяющимися блоками, чтобы улучшать производительность. Когда вы распространяете условия вне блока Variant, неактивный выбор не запускается в процессе моделирования, который может улучшать производительность, особенно в больших моделях. Распространение различного условия вне различного блока варьируется в течение различных времен активации. Для получения информации смотрите, Распространяют Различные Условия Вне Различного блока Subsystem.

Распространение условий посредством расположения каскадом блоков приводит к соединению условий. Simulink не поддерживает условия соединения от различных блоков с startup и code compile различные времена активации. Для получения дополнительной информации смотрите Факторы и Ограничения в течение Времени Активации Варианта запуска.

Различное время активации в различных параметрах

Этот раздел объясняет, как задать различное время активации и поддерживаемые различные режимы управления в различных параметрах.

Используйте Различное Время Активации в Различных параметрах

Этот пример объясняет, как задать активное время активации варианта использования выбора в различных параметрах.

Рассмотрите эту модель. Параметр Gain блока Gain является различным параметром со своим набором значений к K. Переменная K имеет два значения: 3.5 and 8.5. Различное время активации K задан как code compile использование Simulink.VariantControl. Эта установка означает, что можно задать активный выбор, прежде чем компиляция кода запустится.

An example of how to use variant activation time in variant parameters

V = Simulink.VariantControl('Value', 1, 'ActivationTime', code compile')
K = Simulink.VariantVariable('Choices', {'V==1', 3.5, 'V==2', 8.5})

Когда вы генерируете код из этой модели, сгенерированный код содержит и активный и неактивный выбор K. В коде выбор заключен в условные операторы препроцессора C #if и #elif. Когда вы компилируете этот код, чтобы сгенерировать исполняемый файл, компилятор принимает значение V как введено оценивать каждый условный оператор препроцессора. На основе условия, которое оценивает к true, компилятор устанавливает активный выбор и затем генерирует исполняемый файл только для активного выбора. Например, если вы предоставляете вход компилятору как 1, исполняемый файл создается для K установите на 3.5.

Сгенерировать исполняемый файл с K установите на 8.5, измените входное значение в компилятор к 2 и скомпилируйте сгенерированный код снова. Вы не должны регенерировать код, чтобы сгенерировать исполняемый файл для различных различных значений.

Поддерживаемое различное время активации в различных параметрах

Эта таблица приводит различные времена активации, доступные для различных параметров.

Различный режим управленияРазличное время активации
 update diagramupdate diagram analyze all choicescode compilestartup
expression
labelне поддерживаемый
sim codegen switchingне поддерживаемый

Классы памяти в течение различных различных времен активации

Когда вы задаете выражение условия, чтобы определить активный выбор, каждой различной контрольной переменной выражения сопоставили класс памяти с ним. Используйте классы памяти, чтобы управлять внешним видом и размещением различных контрольных переменных в сгенерированном коде. Классы памяти также предотвращают оптимизацию, такую как устранение устройства хранения данных для различных контрольных переменных в сгенерированном коде. Для получения дополнительной информации смотрите, Выбирают Storage Class for Controlling Data Representation in Generated Code (Simulink Coder).

Переменные, используемые в различных выражениях условия, должны удовлетворить этим критериям, чтобы сгенерировать код с Simulink Coder или Embedded Coder.

  • Различные контрольные переменные в различных выражениях условия должны иметь эти классы памяти.

  • Если вы пишете свой собственный класс памяти, проверяйте, что он не генерирует macro или const.

  • Чтобы использовать скалярные переменные без любого класса памяти для генерации кода, выберите Tunable как Default parameter behavior от Model Settings под Code Generation> Optimization.

Похожие темы