Сохраните и восстановите состояние моделирования как SimState

SimState и повторяющиеся моделирования

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

  1. Моделируйте фазу запуска однажды.

  2. Сохраните состояние моделирования в конце фазы запуска.

  3. Используйте это состояние в качестве начального состояния для каждого набора условий или маневров.

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

SimState включает и регистрируемые и внутренние состояния каждого блока (например, непрерывные состояния, дискретные состояния, работают векторы, состояния пересечения нулем), и внутреннее состояние механизма Simulink® (например, данные решателя ОДУ).

Примечание

Можно также использовать опцию конечных состояний в панели Импорта/Экспорта Данных Параметров конфигурации, чтобы сохранить состояние моделирования. Однако эта опция сохраняет только регистрируемые состояния — непрерывные и дискретные состояния блоков. Эти состояния являются только подмножествами полного состояния моделирования модели. Они не включают информацию о скрытых состояниях определенных блоков — информация, которая не включена в регистрируемые состояния, но все еще требуется для соответствующего выполнения блока. Следовательно вы не можете использовать конечные состояния, чтобы сохранить и восстановить полное состояние моделирования как начальное состояние нового моделирования.

Информация, сохраненная в SimState

SimState содержит информацию о:

  • Регистрируемые состояния

  • Состояние решателя и механизма выполнения

  • Пересечение нулем сигнализирует для блоков о том нуле регистра пересечения

  • Выходные значения определенных блоков в модели

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

SimState также хранит скрытые состояния этих блоков:

  • Транспортная задержка

  • Переменная транспортная задержка

  • Из рабочей области

  • Для Каждой подсистемы

  • Условно выполняемые подсистемы

  • Stateflow

  • Matlab.system

  • Второе поколение Simscape™ Multibody™

Храня эту информацию, SimState гарантирует, что результат моделирования, которое начинает с SimState, совпадает с моделированием, которое запускается с начала.

Преимущества Использования SimState

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

  • Можно сохранить несколько SimStates во время моделирования. Можно затем возобновить моделирование от любого из тех состояний.

  • SimState может помочь восстановить состояние блоков, таких как блок Transport Delay, который обычно трудно восстановить к конкретному состоянию. В состоянии блока Transport Delay не сохраняют формат структуры или формат массивов когда вы данные логов с помощью параметра конфигурации конечных состояний, не используя Simstate. Блоки со скрытыми состояниями особенно трудно восстановить, и SimState позволяет вам сделать так.

Когда можно сохранить SimState

Можно сохранить SimState:

  • В итоговом Времени остановки

  • Когда вы прерываете моделирование с кнопкой Pause или Stop

  • Когда вы используете set_param или блок, как блок Stop, чтобы остановить моделирование

Сохраните SimState

Сохраните SimState в начале последнего шага с помощью одной из этих опций.

Интерактивный

  1. В диалоговом окне Configuration Parameters, в панели Импорта/Экспорта Данных, устанавливают флажок конечных состояний. Сохранение полный SimState во флажке конечного состояния становится доступным.

  2. Выберите Save, завершенный SimState во флажке конечного состояния.

  3. В текстовом поле конечных состояний введите имя переменной для SimState.

  4. Моделируйте модель.

Из Командной строки MATLAB

Используйте команду sim с set_param. Установите параметр SaveCompleteFinalSimState на on.

fuelsys
set_param('fuelsys','SaveFinalState','on','FinalStateName',...
'myOperPoint','SaveCompleteFinalSimState','on');
simOut = sim('fuelsys','StopTime','10')
set_param('fuelsys','SaveFinalState','off');

Примечание

Прежде чем вы сохраните SimState, рекомендуется отключить Блочный параметр Сокращения в Параметрах конфигурации> Цель Моделирования> Усовершенствованные Параметры.

Восстановите SimState

Время начала не изменяется от значения в моделировании, которое сгенерировало SimState. Это - ссылочное значение навсегда и зависящие от времени переменные и в оригинале и в текущем моделировании. Например, блок может сохранить и восстановить количество хитов частоты дискретизации, которые произошли с начала моделирования как его SimState.

Рассмотрите модель, которую вы запустили с 0–100 с и что вы теперь хотите запуститься с 100–200 с. Время начала составляет 0 с для обоих исходное моделирование (0–100 с) и для текущего моделирования (100–200 с). Начальное время текущего моделирования составляет 100 с. Кроме того, если блок имел 10 хитов частоты дискретизации во время исходного моделирования, Simulink распознает, что следующий хит частоты дискретизации является 11-м, относительно 0, не 100 с.

Примечание

Если вы изменяете Время начала прежде, чем восстановить SimState, Simulink перезаписывает Время начала со значением, сохраненным в SimState.

Восстановите SimState с помощью одной из этих опций.

Интерактивный

  1. В диалоговом окне Configuration Parameters, в панели Импорта/Экспорта Данных, при Загрузке из рабочей области, устанавливают флажок начального состояния. Текстовое поле становится доступным.

  2. Введите имя переменной, содержащей SimState в текстовом поле.

  3. Установите Время остановки на значение, больше, чем время, в которое был сохранен SimState.

Из Командной строки MATLAB

Чтобы восстановить SimState, который вы сохранили в примере, Сохраняют SimState:

set_param('fuelsys','LoadInitialState','on','InitialState',...
'myOperPoint');
myOperPoint = simOut.get('myOperPoint')

Восстановите SimState, сохраненный в более ранней версии Simulink

Можно использовать объекты SimState, сохраненные в релизах начиная с R2010a, чтобы восстановить SimState модели. Однако эта опция восстанавливает только регистрируемые состояния модели. Видеть версию Симулинка раньше сохраняло SimState, исследовало параметр версии объекта SimState.

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

Чтобы включить это восстановление максимальных усилий, в диалоговом окне Configuration Parameters устанавливает сообщение для объекта SimState от более раннего релиза до warning.

Измените Штаты блока в SimState

  • Используйте loggedStates, чтобы получить или установить состояния блоков. Если xout является журналом состояния, что экспорт Simulink в рабочую область, то поле loggedStates имеет ту же структуру как xout.signals.

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

S-функции

Можно использовать API для C и S-функций Level 2 MATLAB®, чтобы позволить S-функциям работать с SimState. Для получения информации о том, как реализовать эти API в S-функциях, смотрите Соответствие S-функции с SimState.

S-функции, которые имеют векторы P-work, но не объявляют их уровень соответствия SimState или объявляют, что он неизвестен или запрещенными, не поддерживают SimState. Для получения дополнительной информации смотрите Соответствие S-функции с SimState.

Образцовые изменения и восстановление SimState

  • Можно переименовать модель между сохранением и восстановлением его SimState.

  • Контрольная сумма интерфейса SimState, в основном, основана на параметрах конфигурации в модели. Можно внести некоторые неструктурные изменения в модель между сохранением и восстановлением SimState. В диалоговом окне Configuration Parameters, в панели Диагностики, используют диагностику несоответствия контрольной суммы интерфейса SimState, чтобы отследить такие изменения. Можно затем узнать, совпадает ли интерфейсная контрольная сумма восстановленного SimState с текущей интерфейсной контрольной суммой. Смотрите, что контрольная сумма интерфейса SimState не сочетается.

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

    Примечание

    Эти модификации могут изменить количество частот дискретизации в модели. Это может заставить интерфейсную контрольную сумму модели отличаться от SimState, сохраняют и восстанавливают контрольную сумму. Сконфигурируйте диагностику несоответствия контрольной суммы интерфейса SimState, чтобы отобразить warning (значение по умолчанию), error или none, чтобы не сравнить контрольные суммы.

  • Вы не можете внести структурные изменения в модель между временем, вы сохраняете SimState и время, вы восстанавливаете моделирование с помощью SimState. Примеры включают, добавляя или удаляя блок после сохранения SimState, изменения частоты дискретизации модели и изменения типа решателя от переменного шага до фиксированного шага.

  • Несоответствия могут произойти, когда вы пытаетесь моделировать использование решателя, который отличается от того, который сгенерировал сохраненный SimState. Simulink разрешает изменения решателя. Например, можно использовать решатель ode15s, чтобы решить начальный жесткий фрагмент моделирования и сохранить итоговый SimState. Можно затем продолжить моделирование с восстановленным SimState с помощью ode45. Другими словами, эта диагностика помогает вам видеть изменения решателя, но не сигнализирует о проблеме с моделированием.

Примечание

Когда вы используете решатель переменного шага с максимальным набором размера шага к auto, Симулинк использует максимальный размер шага от восстановленного SimState для нового моделирования. Чтобы гарантировать что конкатенированная траектория SimState двух соответствий моделирований то из непрерывного моделирования, задайте значение для максимального размера шага.

Ограничения SimState

Примечание

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

Блокируйте поддержку

Следующие блоки не поддерживают SimState:

  • В блоках Стека и Очереди настройке по умолчанию для Нажатия полная опция стека является Динамическим перераспределением. Эта настройка по умолчанию не поддерживает SimState. Другие настройки (Игнорируют, Предупреждение и Ошибка) поддерживают SimState.

  • Блоки Simscape Multibody Первого поколения

Симулинк пытается сохранить вывод блока как часть SimState. Для S-функций это происходит, даже если функции объявляют, что никакой SimState не требуется. Если блок вывод имеет пользовательский тип, Симулинк не может сохранить SimState и отображает ошибку. Для получения дополнительной информации об использовании SimState с S-функциями, смотрите S-функции.

Модель - ссылка предлагает частичную поддержку SimState. Для получения дополнительной информации смотрите Образцовую Ссылку.

Моделирование

  • Можно сохранить SimState только в итоговом времени остановки или во время выполнения, в которое вы приостанавливаете или останавливаете моделирование.

  • Можно использовать только Нормальное или режим моделирования Акселератора.

  • Вы не можете сохранить SimState в Режиме normal mode и восстановить его в Режиме Accelerator, или наоборот.

  • Вы не можете изменить состояния определенных блоков, которые не регистрируются. Для получения дополнительной информации смотрите Изменение Штаты Блока В SimState.

Генерация кода

Функция SimState не поддерживает Simulink Coder™ или Встроенную генерацию кода Coder®.

Образцовая ссылка

  • Вы не можете изменить регистрируемые состояния блоков, которые являются в модели, на которую ссылаются, в Режиме Accelerator.

  • Следующие блоки не поддерживают SimState, когда включено в модель, на которую ссылаются в Режиме Accelerator:

    • Уровень 2 S-функция MATLAB

    • Matlab.system

    • Интерполяционная таблица n-D

    • S-функция (с пользовательским SimState или векторами PWork)

    • К файлу

    • Блоки Simscape

  • Для получения дополнительной информации смотрите информацию состояния для Моделей, на которые Ссылаются.

Образцовая функция

Вы не можете ввести SimState к функции model.

Похожие темы

Была ли эта тема полезной?