Классический режим инициализации

Когда использовать классическую инициализацию

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

Classic mode был режимом инициализации по умолчанию для моделей Simulink, созданных в R2013b или ранее. Вы можете продолжать использовать классический режим, если:

Установите классический режим инициализации

Для установки классического режима инициализации:

  1. Откройте диалоговое окно Параметры конфигурации. На вкладке Modeling и из раздела Setup выберите Model Settings.

  2. В поле поиска введите Underspecified initialization detection.

  3. В раскрывающемся списке выберите Classic.

Классические проблемы и ограничения инициализации

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

  • Преобразование тождеств может изменить поведение модели.

    Условные подсистемы, которые включают идентичные подсистемы, могут отображать различные начальные значения перед первым выполнением, если применяются обе из следующих:

    • Модель использует классический режим инициализации.

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

  • Несогласованный выход с интегратором дискретного времени или блоком s-function

    Условные подсистемы, которые используют классический режим инициализации и выход которых соединяется с блоком Интегратора Дискретного Времени или блоком S-Function, могут привести к несогласованному выводу.

  • Порядок выполнения, влияющий на выход блока слияния

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

  • При переименовании блоков исходной подсистемы Merge блоков может измениться исходный выход блока Merge.

    Когда две или более подсистемы подают различные начальные выходные значения в блок Merge, который не задает свое собственное начальное выходное значение, переименование одной из подсистем может повлиять на начальный выход блока Merge в классическом режиме инициализации.

  • Simulink не обеспечивает правильную проверку согласованности

    Simulink не обеспечивает правильную проверку непротиворечивости для настроек между двумя блоками Outport, соединенными через контур модели-ссылки.

Дополнительные сведения о задачах преобразования модели из классического в упрощенный режим см. в разделе Преобразование из классического в упрощенный режим инициализации.

Преобразование тождеств может изменить поведение модели

Условные подсистемы, которые включают идентичные подсистемы, могут отображать различные начальные значения перед первым выполнением, если применяются обе из следующих:

  • Модель использует классический режим инициализации.

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

Блок преобразования тождеств является блоком, который не изменяет значение своего входного сигнала. Примерами идентифицирующих блоков преобразования являются блок Signal Conversion или блок Gain со значением 1.

В ex_identity_transform_cl модель, подсистемы A и B идентичны, но B выводит на блок Gain, который, в свою очередь, выводит на блок Outport.

Когда вы симулируете модель, начальное значение для A (верхний сигнал в блоке Scope) 2, но начальное значение B является 0, даже если подсистемы идентичны.

Если вы обновляете модель, чтобы использовать упрощенный режим инициализации (см ex_identity_transform_simpl), модель выглядит одинаково. Шаги, необходимые для преобразования ex_identity_transform_cl на ex_identity_transform_simpl являются:

  1. Установите Underspecified initialization detection значение Simplified.

  2. Для блоков Outport в подсистемах A и B установите параметр Source of initial output value на Input signal.

    Можно также получить то же поведение, установив параметр Source of initial output value равным Dialog и параметр Initial output для 3.

Когда вы симулируете обновленную модель, связь преобразования тождеств не изменяет результат. В обоих случаях выхода является последовательным.

Несогласованный выход с интегратором дискретного времени или блоком s-function

Условные подсистемы, которые используют классический режим инициализации и выход которых соединяется с блоком Интегратора Дискретного Времени или блоком S-Function, могут привести к несогласованному выводу.

В ex_discrete_time_cl модель, активированная подсистема включает два блока Constant и выходы блоку Discrete-Time Integrator. Включенная подсистема выводит два блока Display.

Когда вы моделируете модель, два блока отображения показывают различные значения.

Блок Constant1, который соединяется с блоком Интегратора Дискретного Времени, выполняется, даже если условная подсистема отключена. Верхнее Отображение блок показывает значение 2, которое является значением Constant1 блока. Блок Constant2 не выполняется, поэтому нижний блок Display показывает значение 0.

Если вы обновляете модель, чтобы использовать упрощенный режим инициализации (см ex_discrete_time_simpl), модель выглядит одинаково. Обновленная модель исправляет несогласованную проблему выхода с помощью упрощенного режима. Шаги, необходимые для преобразования ex_discrete_time_cl на ex_discrete_time_simpl являются:

  1. Установите Underspecified initialization detection значение Simplified.

  2. Для блоков Outport Out1 и Out2 установите параметр Source of initial output value равным Input signal. Этот параметр явно наследует начальное значение, которое в этом случае равняется 2.

    Можно также получить то же поведение, установив параметр Source of initial output value равным Dialog и параметр Initial output для 2.

Когда вы моделируете обновленную модель, блоки Display показывают тот же выход. Выходное значение 2, потому что оба блока Outport наследуют свое начальное значение.

Порядок выполнения, влияющий на выход блока слияния

Порядок выполнения условных подсистем, которые используют классическую инициализацию режима, при соединении с блоком Merge, может повлиять на выход этого Merge блока. Изменение в порядке выполнения блока может привести к неожиданным результатам. Поведение зависит от того, как вы задаете параметр Output When Disabled.

The ex_basic_merge_sorted_order_1_cl модель имеет две одинаковые включенные подсистемы (Enable A и Enable B), которые соединяются с блоком Merge. Когда вы моделируете модель, красные числа показывают отсортированный порядок выполнения блоков.

Когда вы моделируете модель, Scope блок выглядит следующим образом:

The ex_basic_merge_sorted_order_2_cl модель такая же, как и ex_merge_sorted_1_cl, за исключением того, что порядок выполнения блока является противоположным порядку выполнения по умолчанию. Для изменения порядка выполнения выполните следующее:

  1. Откройте диалоговое окно Properties для подсистемы Enable A и установите параметр Priority равным 2.

  2. Установите Priority подсистемы Enable B в 1.

Когда вы симулируете модель с использованием другого порядка выполнения, блок Scope выглядит следующим образом:

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

Чтобы обновить модели, используйте упрощенный режим инициализации (см ex_basic_merge_sorted_order_1_simpl и ex_basic_merge_sorted_order_2_simpl):

  1. Установите Underspecified initialization detection значение Simplified.

Параметр Initial Output блока Merge является пустой матрицей, [], по умолчанию. Следовательно, начальное выходное значение устанавливается на начальное значение по умолчанию для этого типа данных, которое является 0. Для получения информации об исходном значении по умолчанию см. Раздел «Инициализация значений сигналов». Когда вы моделируете каждую модель упрощенного режима, обе модели дают одинаковые результаты.

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

The ex_merge_sorted_1_cl модель имеет две включенные подсистемы (Enable A и Enable B), которые соединяются с блоком Merge. Когда вы моделируете модель, красные числа показывают отсортированный порядок выполнения блоков.

Когда вы моделируете модель, блок Scope выглядит следующим образом:

The ex_merge_sorted_2_cl модель такая же, как и ex_merge_sorted_1_cl, за исключением того, что порядок выполнения блока является противоположным порядку выполнения по умолчанию. Для изменения порядка выполнения выполните следующее:

  1. Откройте диалоговое окно Properties для подсистемы Enable A и установите параметр Priority равным 2.

  2. Установите Priority подсистемы Enable B в 1.

Когда вы симулируете модель с использованием другого порядка выполнения, блок Scope выглядит следующим образом:

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

Чтобы обновить модели, используйте упрощенный режим инициализации (см ex_merge_sorted_1_simpl и ex_merge_sorted_2_simpl):

  1. Установите Underspecified initialization detection значение Simplified.

  2. Для блоков Outport в Enable A и Enable B установите параметр Output when disabled равным held. Упрощенный режим не поддерживает reset для выходных портов условных подсистем, ведущих блоки Merge.

Когда вы моделируете каждую модель упрощенного режима, обе модели дают одинаковые результаты.

Настраиваемые параметры

Многие параметры блоков настраиваются. Настраиваемый параметр является параметром, значение которого может быть изменено без перекомпиляции модели (см. Model Compilation для получения дополнительной информации о компиляции модели). Для примера параметр усиления блока Gain настраиваем. Можно изменить коэффициент усиления блока во время симуляции. Если параметр не настраивается, и симуляция выполняется, управление диалоговым окном, которое устанавливает параметр, отключено.

Когда вы изменяете значение настраиваемого параметра, изменение вступает в эффект в начале следующего временного шага.

Государство

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

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

Блоки неявно задают состояния модели. В частности, блок, который нуждается в некоторых или всех своих предыдущих выходах, чтобы вычислить свои текущие выходные параметры неявно задает набор состояний, которые нужно сохранить между временными шагами. Говорят, что такой блок имеет состояния.

Ниже приведено графическое представление блока с состояниями:

Блоки, которые определяют непрерывные состояния, включают следующие стандартные блоки Simulink:

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

Simulink не обеспечивает правильную проверку согласованности

Simulink не обеспечивает правильную проверку непротиворечивости для настроек между двумя блоками Outport, соединенными через контур модели-ссылки.

Simulink выдает ложное предупреждение или нет предупреждения, когда все из следующих условий верны:

  • Для Underspecified initialization detection опций задано значение Classic.

  • Модель содержит блок Model.

  • В ссылочной модели корневой Outport блок управляется прямо (или косвенно через виртуальные блоки) условно выполненной подсистемой. В этом сценарии Outport блок, соответствующий условно выполненному выходу подсистемы, является исходным блоком Outport.

  • В верхней модели выходной порт блока Model, который управляется блоком исходного Outport, в свою очередь, управляет блоком Outport назначения условно выполняемой подсистемы.

Если и исходный, и целевой блоки Outport находятся в одной модели, и настройки Initial output и Output when disabled (если применимо) для обоих блоков Outport различаются, Simulink выдает ошибку. Однако в описанном выше случае Simulink либо выдает ложное предупреждение, когда два блока Outport имеют одинаковые настройки, либо не выдает предупреждение или ошибку, когда они отличаются.