Гибридные системы используют модальную логику для перехода от одного режима к другому в ответ на физические события и условия. В этих системах динамика в непрерывном времени управляет каждым режимом. Простым примером этого типа гибридной системы является прыгающий мяч. Мяч непрерывно перемещается по воздуху, пока не ударяется о землю, в этой точке происходит изменение режима или разрыв. В результате мяч внезапно меняет направление и скорость. Для получения дополнительной информации смотрите Модель Прыгающего Мяча за Непрерывное Время.
Симулируйте гибридные системы, которые реагируют на непрерывные и дискретные изменения режима путем конфигурирования Stateflow® графики для непрерывного моделирования. На диаграмме Stateflow можно кратко и интуитивно представлять модальную логику как ряд состояний, переходов или графиков потока. Можно также представлять информацию о состоянии как непрерывные локальные переменные с автоматическим доступом к производным по времени.
Симуляция в непрерывном времени поддерживается только в диаграммах Stateflow в Simulink® модели. Если ваша непрерывная система не содержит модальной логики, рассмотрите использование модели Simulink. Для получения дополнительной информации смотрите Модель Непрерывной Системы (Simulink).
Непрерывное обновление является свойством диаграммы Stateflow.
Щелкните правой кнопкой мыши внутри графика и выберите 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 в диалоговом окне Параметры конфигурации модели. Для получения дополнительной информации см. «Обнаружение пересечения нулем» (Simulink).
Чтобы сохранить целостность и плавность результатов симуляции в непрерывном времени, ограничьте ваши графики ограниченным подмножеством семантики диаграммы Stateflow. Ограничивая семантику, входы не зависят от непредсказуемых факторов, таких как:
Количество незначительных интервалов, которые решатель Simulink использует в каждом главном временном шаге.
Количество итераций, необходимых для стабилизации алгоритмов интегрирования и пересечений нулем.
Минимизируя эти побочные эффекты, диаграмма Stateflow может поддерживать свое состояние в незначительных временных шагах и обновлять свое состояние только во время основных временных шагов. Поэтому диаграмма Stateflow может вычислять выходы на основе постоянного состояния в течение непрерывного времени.
Во время симуляции в непрерывном времени график обновляет свои выходы в незначительных временных шагах, соответствующих during
действия активного состояния. График без состояний не выдает выхода. Чтобы имитировать поведение графика без гражданства за непрерывное время, создайте одно состояние, которое вызывает графическую функцию в своей during
действие.
entry
, exit
, и переходные действияЧтобы поддерживать точность в симуляции в непрерывном времени, обновляйте дискретные и непрерывные локальные данные только во время основных временных шагов, соответствующих переходам состояния. Во время переходов состояний происходят только эти типы действий:
Конечные 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 буферизует переменные таким образом, чтобы это влияло на поведение графиков между незначительным временным шагом и следующим основным временным шагом.
Изменение рабочей точки графика непрерывного времени не поддерживается. Если вы загружаете рабочую точку для диаграммы непрерывного времени, вы не можете изменять активность состояний или каких-либо значений локальных или выходных данных диаграммы. Для получения дополнительной информации смотрите Правила использования рабочей точки графика.