Гибридные системы используют модальную логику для перехода от одного режима до другого в ответ на физические явления и условия. В этих системах движущие силы непрерывного времени управляют каждым режимом. Простым примером этого типа гибридной системы является прыгающий мяч. Мяч перемещается постоянно через воздух, пока это не ударяется о землю, в которой точке происходят изменение режима или разрыв. В результате мяч внезапно изменяет направление и скорость. Для получения дополнительной информации см. Модель Прыгающий мяч в Непрерывное Время.
Симулируйте гибридные системы, которые отвечают на непрерывные и дискретные изменения режима путем конфигурирования графиков Stateflow® в течение непрерывного времени, моделируя. В диаграмме Stateflow можно представлять модальную логику кратко и интуитивно как серию состояний, переходов или блок-схем. Можно также представлять информацию состояния как непрерывные локальные переменные с автоматическим доступом к производным времени.
Симуляция непрерывного времени поддерживается только в диаграммах Stateflow в моделях Simulink®. Если ваша непрерывная система не содержит модальную логику, рассмотрите использование модели Simulink. Для получения дополнительной информации см. Модель Непрерывная Система (Simulink).
Непрерывное обновление является свойством диаграммы Stateflow.
Щелкните правой кнопкой в графике и выберите Properties из контекстного меню.
В диалоговом окне Chart Properties, набор поле Update method к Continuous
. Когда вы выбираете эту опцию:
Флажок Enable zero-crossing detection устанавливается.
Флажок Enable super step semantics недоступен.
(Необязательно) По умолчанию обнаружение пересечения нулем включено. Чтобы отключить эту опцию, снимите флажок Enable zero-crossing detection. Для получения дополнительной информации смотрите, Отключают Обнаружение Пересечения нулем.
Нажмите OK.
Примечание
Вы не можете использовать графики Мура в течение непрерывного времени, моделируя.
Во время симуляции непрерывного времени диаграмма Stateflow обновляет свой режим только в главных временных шагах. В незначительном временном шаге график вычисляет выходные параметры на основе состояния графика во время последнего главного временного шага. Для получения дополнительной информации смотрите Время Непрерывной выборки (Simulink).
Когда вы задаете локальные непрерывные переменные, диаграмма Stateflow обеспечивает программируемый доступ к их производным. Решатель Simulink вычисляет непрерывное состояние графика на шаге текущего времени на основе значений этих переменных и их производных на предыдущем временном шаге. Для получения дополнительной информации смотрите Непрерывный По сравнению с Дискретными Решателями (Simulink).
Чтобы определить, когда изменение состояния происходит, диаграмма Stateflow регистрирует функцию пересечения нулем с решателем Simulink. Когда Simulink обнаруживает изменение режима, поисковые запросы решателя вперед от предыдущего главного временного шага, чтобы обнаружить, когда изменение состояния произошло. Для получения дополнительной информации смотрите Обнаружение Пересечения нулем (Simulink).
Обнаружение пересечения нулем на изменениях состояния может представить компромисс между точностью и эффективностью. При обнаружении нулевых пересечений модель Simulink точно симулирует изменения режима, незаконно не уменьшая размер шага. Для систем, которые показывают болтовню или частые колебания между двумя режимами непрерывной операции, обнаружение пересечения нулем может потенциально повлиять на время симуляции. Болтовня требует, чтобы модель Simulink проверяла на нулевые пересечения в быстрой последовательности, которые могут замедлить симуляцию. В этих ситуациях вы можете:
Отключите обнаружение пересечения нулем.
Выберите различный алгоритм обнаружения пересечения нулем для своего графика.
Измените параметры, которые управляют частотой нулевых пересечений в вашей модели Simulink.
Можно выбрать из различных алгоритмов обнаружения пересечения нулем для панели Solver в диалоговом окне Model Configuration Parameters. Для получения дополнительной информации смотрите Обнаружение Пересечения нулем (Simulink).
Чтобы обеспечить целостность и гладкость результатов симуляции непрерывного времени, ограничьте свои графики к ограниченному подмножеству семантики диаграммы Stateflow. Путем ограничения семантики входные параметры не зависят от непредсказуемых факторов, таких как:
Количество незначительных интервалов, которые решатель Simulink использует в каждом главном временном шаге.
Количество итераций, требуемых стабилизировать интегрирование и алгоритмы нулевых пересечений.
Путем минимизации этих побочных эффектов диаграмма Stateflow может обеспечить свое состояние на незначительных временных шагах и обновить ее состояние только во время главных временных шагов. Поэтому диаграмма Stateflow может вычислить выходные параметры на основе постоянного состояния в течение непрерывного времени.
Во время симуляции непрерывного времени график обновляет свои выходные параметры на незначительных временных шагах, соответствующих during
действия активного состояния. График без состояний не производит выхода. Чтобы подражать поведению графика не сохраняющего состояние в непрерывное время, создайте одно состояние, которое вызывает графическую функцию в ее during
действие.
entry
выход
, и действия переходаЧтобы обеспечить точность в симуляции непрерывного времени, обновите дискретные и непрерывные локальные данные только во время главных временных шагов, соответствующих изменениям состояния. Во время изменений состояния только происходят эти типы действий:
exit
состояния действия, которые происходят прежде, чем оставить состояние в начале перехода.
entry
состояния действия, которые происходят после ввода нового состояния в конце перехода.
Действия перехода, которые происходят во время перехода.
Действия условия с переходом, но только если переход непосредственно достигает состояния. Например, этот график выполняет действие n++
даже когда условия c2
и c3
являются ложными. Поскольку нет никакого изменения состояния, действие условия обновляет n
в незначительном временном шаге и результатах по ошибке.
Не пишите в локальные текущие данные в during
состояния действия, потому что эти действия происходят в незначительных временных шагах.
during
состояния
ДействияВ незначительных временных шагах график непрерывного времени выполняет только during
состояния действия. Поскольку модели Simulink читают производные непрерывного времени во время незначительных временных шагов, вычисляют производные в
during
действия, чтобы обеспечить актуальнейшее вычисление.
during
состояния
Действия или в условиях переходаВ незначительных временных шагах возможно, что выходные параметры и производные не отражают свои актуальнейшие значения. Чтобы обеспечить сглаженные выходные параметры, вычислите значения из локальных дискретных данных, локальных текущих данных и входных параметров графика.
during
состояния
Действия или в условиях переходаВы не можете вызвать функции Simulink во время незначительных временных шагов. Вместо этого вызовите функции Simulink только в действиях, которые происходят во время главных временных шагов: entry
состояния или
exit
действия и действия перехода. Вызывание функций Simulink в during
состояния действия или в условиях перехода приводят к ошибке в процессе моделирования. Для получения дополнительной информации смотрите Повторное использование Компоненты Simulink в диаграммах Stateflow.
during
ДействияПредотвратить изменения режима между главными временными шагами, условия, которые влияют на поток управления в during
действия зависят от дискретных переменных. Дискретные переменные не изменяют значение между главными временными шагами.
Присутствие входных событий заставляет график вести себя как триггируемая подсистема и не могущий симулировать в непрерывное время. Например, эта модель генерирует ошибку, если график использует непрерывный метод обновления.
Чтобы подражать поведению входного события, передайте входной сигнал через блок Hit Crossing как вход к графику непрерывного времени.
Когда изменение режима происходит во время симуляции непрерывного времени, entry
действие целевого состояния указывает к модели Simulink, что изменение состояния произошло. С внутренним переходом график никогда не выполняет entry
действие. Для получения дополнительной информации смотрите Внутренние Переходы.
Не используйте основанную на событии временную логику потому что в симуляции непрерывного времени, нет никакой концепции метки деления. Используйте только абсолютно-разовую временную логику для симуляции непрерывного времени. Для получения дополнительной информации смотрите Управление выполнением диаграммы при помощи Временной Логики.
Чтобы реализовать обнаружение изменения, Stateflow буферизует переменные способом, который влияет на поведение графиков между незначительным временным шагом и следующим главным временным шагом.
Изменение рабочей точки графика непрерывного времени не поддерживается. Если вы загружаете рабочую точку для графика непрерывного времени, вы не можете изменить действие состояний или любые значения локальных или выходных данных о графике. Для получения дополнительной информации см. Правила для Использования Рабочей точки Графика.