При разработке системы вы моделируете модель неоднократно, чтобы анализировать систему на основе различных входных параметров, граничных условий или условий работы. Во многих приложениях фаза запуска со значительным динамическим поведением характерна для нескольких моделирований. Например, холодный взлет запуска газотурбинного двигателя происходит перед каждым набором маневров самолета. Идеально, вы:
Моделируйте фазу запуска однажды.
Сохраните состояние моделирования в конце фазы запуска.
Используйте это состояние в качестве начального состояния для каждого набора условий или маневров.
В этом типе ситуации используйте SimState, чтобы сохранить состояние моделирования. Для будущих моделирований можно восстановить SimState и использовать его, чтобы установить начальные условия для моделирований продвижение.
SimState включает и регистрируемые и внутренние состояния каждого блока (например, непрерывные состояния, дискретные состояния, работают векторы, состояния пересечения нулем), и внутреннее состояние механизма Simulink® (например, данные решателя ОДУ).
Можно также использовать опцию конечных состояний в панели Импорта/Экспорта Данных Параметров конфигурации, чтобы сохранить состояние моделирования. Однако эта опция сохраняет только регистрируемые состояния — непрерывные и дискретные состояния блоков. Эти состояния являются только подмножествами полного состояния моделирования модели. Они не включают информацию о скрытых состояниях определенных блоков — информация, которая не включена в регистрируемые состояния, но все еще требуется для соответствующего выполнения блока. Следовательно вы не можете использовать конечные состояния, чтобы сохранить и восстановить полное состояние моделирования как начальное состояние нового моделирования.
SimState содержит информацию о:
Регистрируемые состояния
Состояние решателя и механизма выполнения
Пересечение нулем сигнализирует для блоков о том нуле регистра пересечения
Выходные значения определенных блоков в модели
Симулинк анализирует блочные связи и другую информацию, чтобы определить, использует ли она выходные значения эффективно в качестве информации состояния.
SimState также хранит скрытые состояния этих блоков:
Транспортная задержка
Переменная транспортная задержка
Из рабочей области
Для Каждой подсистемы
Условно выполняемые подсистемы
Stateflow
Matlab.system
Второе поколение Simscape™ Multibody™
Храня эту информацию, SimState гарантирует, что результат моделирования, которое начинает с SimState, совпадает с моделированием, которое запускается с начала.
Когда SimState сохраняет состояние моделирования, это сохраняет информацию в дополнение к регистрируемым состояниям в модели. Необходимо восстановить всю эту информацию, чтобы гарантировать, что моделирование совпадает с непрерывным моделированием. Например, если информация о решателе влияла на моделирование, то изменение состояния блока, не используя SimState может привести к различным результатам.
Можно сохранить несколько SimStates во время моделирования. Можно затем возобновить моделирование от любого из тех состояний.
SimState может помочь восстановить состояние блоков, таких как блок Transport Delay, который обычно трудно восстановить к конкретному состоянию. В состоянии блока Transport Delay не сохраняют формат структуры или формат массивов когда вы данные логов с помощью параметра конфигурации конечных состояний, не используя Simstate. Блоки со скрытыми состояниями особенно трудно восстановить, и SimState позволяет вам сделать так.
Можно сохранить SimState:
В итоговом Времени остановки
Когда вы прерываете моделирование с кнопкой Pause или Stop
Когда вы используете set_param или блок, как блок Stop, чтобы остановить моделирование
Сохраните SimState в начале последнего шага с помощью одной из этих опций.
В диалоговом окне Configuration Parameters, в панели Импорта/Экспорта Данных, устанавливают флажок конечных состояний. Сохранение полный SimState во флажке конечного состояния становится доступным.
Выберите Save, завершенный SimState во флажке конечного состояния.
В текстовом поле конечных состояний введите имя переменной для SimState.
Моделируйте модель.
Используйте команду 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.
Рассмотрите модель, которую вы запустили с 0–100 с и что вы теперь хотите запуститься с 100–200 с. Время начала составляет 0 с для обоих исходное моделирование (0–100 с) и для текущего моделирования (100–200 с). Начальное время текущего моделирования составляет 100 с. Кроме того, если блок имел 10 хитов частоты дискретизации во время исходного моделирования, Simulink распознает, что следующий хит частоты дискретизации является 11-м, относительно 0, не 100 с.
Если вы изменяете Время начала прежде, чем восстановить SimState, Simulink перезаписывает Время начала со значением, сохраненным в SimState.
Восстановите SimState с помощью одной из этих опций.
В диалоговом окне Configuration Parameters, в панели Импорта/Экспорта Данных, при Загрузке из рабочей области, устанавливают флажок начального состояния. Текстовое поле становится доступным.
Введите имя переменной, содержащей SimState в текстовом поле.
Установите Время остановки на значение, больше, чем время, в которое был сохранен SimState.
Чтобы восстановить SimState, который вы сохранили в примере, Сохраняют SimState:
set_param('fuelsys','LoadInitialState','on','InitialState',...
'myOperPoint');
myOperPoint = simOut.get('myOperPoint')
Можно использовать объекты SimState, сохраненные в релизах начиная с R2010a, чтобы восстановить SimState модели. Однако эта опция восстанавливает только регистрируемые состояния модели. Видеть версию Симулинка раньше сохраняло SimState, исследовало параметр версии объекта SimState.
Simulink обнаруживает, если объект SimState, который вы обеспечили как начальное состояние, был сохранен в текущем релизе. По умолчанию Simulink отображает сообщение об ошибке, если SimState не был сохранен в текущем релизе. Можно сконфигурировать диагностику, чтобы позволить Simulink отображать сообщение как предупреждение и попытку восстановить как можно больше значений.
Чтобы включить это восстановление максимальных усилий, в диалоговом окне Configuration Parameters устанавливает сообщение для объекта SimState от более раннего релиза до warning.
Используйте loggedStates, чтобы получить или установить состояния блоков. Если xout является журналом состояния, что экспорт Simulink в рабочую область, то поле loggedStates имеет ту же структуру как xout.signals.
Вы не можете изменить состояния, которые не регистрируются. Simulink не позволяет эту модификацию, когда это могло заставить состояние быть противоречивым с моделированием.
Можно использовать API для C и S-функций Level 2 MATLAB®, чтобы позволить S-функциям работать с SimState. Для получения информации о том, как реализовать эти API в S-функциях, смотрите Соответствие S-функции с SimState.
S-функции, которые имеют векторы P-work, но не объявляют их уровень соответствия SimState или объявляют, что он неизвестен или запрещенными, не поддерживают SimState. Для получения дополнительной информации смотрите Соответствие S-функции с SimState.
Можно переименовать модель между сохранением и восстановлением его SimState.
Контрольная сумма интерфейса SimState, в основном, основана на параметрах конфигурации в модели. Можно внести некоторые неструктурные изменения в модель между сохранением и восстановлением SimState. В диалоговом окне Configuration Parameters, в панели Диагностики, используют диагностику несоответствия контрольной суммы интерфейса SimState, чтобы отследить такие изменения. Можно затем узнать, совпадает ли интерфейсная контрольная сумма восстановленного SimState с текущей интерфейсной контрольной суммой. Смотрите, что контрольная сумма интерфейса SimState не сочетается.
Можно внести следующие неструктурные изменения в модель, не влияя способность восстановить ранее сохраненный SimState:
Изменения в сигнале образцового уровня журналирование настроек в Образцовых Параметрах конфигурации: Импорт/Экспорт Данных.
Журналирование определенных сигналов.
Сложение и удаление Осциллографа, Пуская в ход Средство просмотра Осциллографа и Осциллографа, К Рабочей области, К Файлу и блокам Отображения
Сложение и удаление Уровня 2 MATLAB или S-функции C, которые сконфигурированы как устройства просмотра моделирования и не устанавливают соответствие SimState на Пользовательский или Запрещенный. Смотрите Соответствие S-функции с SimState для получения дополнительной информации.
Эти модификации могут изменить количество частот дискретизации в модели. Это может заставить интерфейсную контрольную сумму модели отличаться от SimState, сохраняют и восстанавливают контрольную сумму. Сконфигурируйте диагностику несоответствия контрольной суммы интерфейса SimState, чтобы отобразить warning (значение по умолчанию), error или none, чтобы не сравнить контрольные суммы.
Вы не можете внести структурные изменения в модель между временем, вы сохраняете SimState и время, вы восстанавливаете моделирование с помощью SimState. Примеры включают, добавляя или удаляя блок после сохранения SimState, изменения частоты дискретизации модели и изменения типа решателя от переменного шага до фиксированного шага.
Несоответствия могут произойти, когда вы пытаетесь моделировать использование решателя, который отличается от того, который сгенерировал сохраненный SimState. Simulink разрешает изменения решателя. Например, можно использовать решатель ode15s, чтобы решить начальный жесткий фрагмент моделирования и сохранить итоговый SimState. Можно затем продолжить моделирование с восстановленным SimState с помощью ode45. Другими словами, эта диагностика помогает вам видеть изменения решателя, но не сигнализирует о проблеме с моделированием.
Когда вы используете решатель переменного шага с максимальным набором размера шага к auto, Симулинк использует максимальный размер шага от восстановленного 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.