При разработке системы вы моделируете модель неоднократно, чтобы анализировать систему на основе различных входных параметров, граничных условий или условий работы. Во многих приложениях фаза запуска со значительным динамическим поведением характерна для нескольких моделирований. Например, холодный взлет запуска газотурбинного двигателя происходит перед каждым набором маневров самолета. Идеально, вы:
Моделируйте фазу запуска однажды.
Сохраните состояние моделирования в конце фазы запуска.
Используйте это состояние в качестве начального состояния для каждого набора условий или маневров.
В этом типе ситуации используйте 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
.