Используя различное время активации, Simulink® устанавливает активный выбор в различных блоках и различных параметрах во время различных этапов рабочих процессов генерации кода и симуляции.
Активный выбор установлен:
Во время этапа компиляции модели или этапа цикла симуляции рабочего процесса симуляции.
Во время этапа компиляции модели, этапа компиляции кода или этапа запуска модели рабочего процесса генерации кода.
Смотрите этапы, чтобы установить активный выбор в различных блоках и различных параметрах.
Чтобы установить активный выбор, Simulink оценивает различные средства управления, которые вы задаете в браузере рабочей области, в командной строке, или в коллбэках, такой как InitFcn
, PreLoadFcn
, и PostLoadFcn
. Для получения дополнительной информации о коллбэках смотрите Коллбэки Модели.
Когда вы устанавливаете активный выбор в промежуточных стадиях, можно включать только активный выбор или и активный и неактивный выбор в рабочем процессе генерации кода и симуляции. И включая активный и включая неактивный выбор с code compile
время активации улучшает скорость рабочих процессов генерации кода, потому что вы не должны регенерировать модель каждый раз, когда вы изменяете активный выбор. Точно так же startup
время активации улучшает скорость итеративной симуляции и рабочих процессов генерации кода, потому что вы не должны перекомпилировать модель каждый раз, когда вы изменяете активный выбор. Вы запускаете модель только однажды. Можно затем изменить активный выбор и сгенерировать выход с помощью артефактов, сгенерированных в предыдущей итерации. Различное время активации также позволяет вам задавать, анализировать ли все варианты для несовместимостей в атрибутах сигнала в модели, таких как размерность и тип данных.
Примечание
Только один выбор может быть активным любой данный этап рабочего процесса генерации кода и симуляции.
Эти таблицы описывают этапы, на которых 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
время активации, вы можете:
Выполните быструю симуляцию перезапуска на своей модели и измените активный выбор до этапа цикла симуляции без потребности перекомпилировать модель каждый раз. Это улучшает рабочий процесс Simulink Test с быстрым перезапуском. Для получения дополнительной информации смотрите, Симулируют Различную Подсистему в Запуске с Быстрым Enabled Перезапуском, Симулируют Различную Подсистему с Активацией Запуска Используя parsim, и Проверяют и Подтверждают Различные Модели со Временем Активации Запуска.
Выполните акселератор или быструю симуляцию акселератора на ваших моделях. Можно симулировать модель инкрементно с различными различными настройками путем изменения активного варианта каждый раз без потребности регенерировать код, когда нет никаких структурных изменений в модели. Для получения дополнительной информации смотрите, Симулируют Различные Блоки в Акселераторе и Быстрых Режимах Accelerator с Исполняемым файлом Времени и Запуска Активации Запуска для Различных Различных Значений параметров, Не Перекомпилировав Код.
Соберите и агрегируйте результаты покрытия от нескольких симуляций Различной Подсистемы, Различного Источника и Различных блоков Приемника. С набором времени активации к startup
, отчет покрытия отображает все варианты, независимо от того, активируются ли они во время симуляции. Если вариант не активен во время симуляции, анализ покрытия сообщает о 0%-м покрытии для того варианта. Для получения дополнительной информации смотрите Покрытие модели для Различных Блоков (Simulink Coverage).
Симулируйте и создайте приложения реального времени из моделей Simulink с Различными блоками и запустите их на целевом компьютере Speedgoat, соединенном с вашими физическими системами. Чтобы создать оперативные модели, необходимо изменить Варианты в atomic
и установленный различный параметр как Simulink.Parameter
и отключите External Mode
.
Для получения информации об ограничениях с startup
время активации, смотрите Известные Ограничения времени активации варианта запуска.
Этот рисунок показывает этапы, на которых Simulink устанавливает активный выбор в течение различных различных времен активации.
Этот раздел объясняет, как задать различное время активации, поддерживаемые различные режимы управления и различное распространение условия в течение различных времен активации в различных блоках.
Этот пример объясняет, как задать активное время активации варианта использования выбора в различных блоках.
Рассмотрите эту модель. Различная Подсистема 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
и перекомпилируйте сгенерированный код.
Доступность времен активации зависит от типа различного режима управления, который вы задаете для блока. Эта таблица приводит различное время активации, поддержанное каждым различным режимом управления. Для получения информации о различных режимах управления смотрите Введение в Различные Средства управления.
Variant activation time | ||||
---|---|---|---|---|
Variant control mode | update diagram | update diagram analyze all choices | code compile | startup |
expression | ✓ | ✓ | ✓ | ✓ |
label | ✓ | x | x | x |
sim codegen switching | ✓ | ✓ | x | x |
Примечание
Различное время активации блока 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
. Эта установка означает, что можно задать активный выбор, прежде чем компиляция кода запустится.
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 diagram | update diagram analyze all choices | code compile | startup | |
expression | ✓ | ✓ | ✓ | ✓ |
label | не поддерживаемый | |||
sim codegen switching | не поддерживаемый |
Когда вы задаете выражение условия, чтобы определить активный выбор, каждой различной контрольной переменной выражения сопоставили класс памяти с ним. Используйте классы памяти, чтобы управлять внешним видом и размещением различных контрольных переменных в сгенерированном коде. Классы памяти также предотвращают оптимизацию, такую как устранение устройства хранения данных для различных контрольных переменных в сгенерированном коде. Для получения дополнительной информации смотрите, Выбирают Storage Class for Controlling Data Representation in Generated Code (Simulink Coder).
Переменные, используемые в различных выражениях условия, должны удовлетворить этим критериям, чтобы сгенерировать код с Simulink Coder или Embedded Coder.
Различные контрольные переменные в различных выражениях условия должны иметь эти классы памяти.
Эта таблица приводит встроенные классы памяти, поддержанные в течение различных времен активации, чтобы сгенерировать код с помощью Simulink Coder и Embedded Coder.
Встроенный класс памяти | Различное время активации | |
---|---|---|
code compile | startup | |
ExportedGlobal (Simulink Coder) | x | ✓ |
Значение по умолчанию модели (Simulink Coder) | x | ✓ |
ImportedExtern, ImportedExternPointer (Simulink Coder) | x | ✓ |
Автоматический (Simulink Coder) | x | x |
Эта таблица приводит списки таблиц пользовательские классы памяти, поддержанные в течение различных времен активации, чтобы сгенерировать код с помощью Embedded Coder.
Пользовательский класс памяти | Различное время активации | |
---|---|---|
code compile | startup | |
GetSet (Simulink Coder) | x | ✓ |
Задайте, ImportedDefine (Simulink Coder) | ✓ | x |
CompilerFlag (Simulink Coder) | ✓ | x |
Const и ConstVolatile. Смотрите, Const, энергозависимый, и ConstVolatile (Simulink Coder) | x | x |
Битовое поле (Simulink Coder) | x | ✓ |
Struct (Simulink Coder) | x | ✓ |
ExportToFile (Simulink Coder) | x | ✓ |
ImportFromFile (Simulink Coder) | x | ✓ |
Энергозависимый. Смотрите, Const, энергозависимый, и ConstVolatile (Simulink Coder) | x | ✓ |
Если вы пишете свой собственный класс памяти, проверяйте, что он не генерирует macro
или const
.
Чтобы использовать скалярные переменные без любого класса памяти для генерации кода, выберите Tunable
как Default parameter behavior от Model Settings под Code Generation> Optimization.