Моделирование в непрерывном времени в Stateflow

Гибридные системы используют модальную логику для перехода от одного режима к другому в ответ на физические события и условия. В этих системах динамика в непрерывном времени управляет каждым режимом. Простым примером этого типа гибридной системы является прыгающий мяч. Мяч непрерывно перемещается по воздуху, пока не ударяется о землю, в этой точке происходит изменение режима или разрыв. В результате мяч внезапно меняет направление и скорость. Для получения дополнительной информации смотрите Модель Прыгающего Мяча за Непрерывное Время.

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

Симуляция в непрерывном времени поддерживается только в диаграммах Stateflow в Simulink® модели. Если ваша непрерывная система не содержит модальной логики, рассмотрите использование модели Simulink. Для получения дополнительной информации смотрите Модель Непрерывной Системы (Simulink).

Сконфигурируйте диаграмму Stateflow для симуляции в непрерывном времени

Непрерывное обновление является свойством диаграммы Stateflow.

  1. Щелкните правой кнопкой мыши внутри графика и выберите Properties из контекстного меню.

  2. В диалоговом окне Свойств графика» установите значение в поле Update method Continuous. Когда вы выбираете эту опцию:

    • Установлен флажок Enable zero-crossing detection.

    • Флажок Enable super step semantics недоступен.

  3. (Необязательно) По умолчанию обнаружение пересечения нулем включено. Чтобы отключить эту опцию, снимите флажок Enable zero-crossing detection. Для получения дополнительной информации смотрите Отключение обнаружения пересечения нулем.

  4. Нажмите OK.

Примечание

Вы не можете использовать графики Мура для непрерывного моделирования.

Взаимодействие с решателем Simulink

Поддерживайте режим в незначительных временных шагах

Во время симуляции в непрерывном времени диаграмма 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 состояний Действия или переходные условия

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

Не вызывайте функции Simulink в during состояний Действия или переходные условия

Вы не можете вызвать функции Simulink во время незначительных временных шагов. Вместо этого вызывайте функции Simulink только в действиях, которые происходят во время основных временных шагов: состояние entry или exit действия и переходные действия. Вызов функций Simulink в during состояний действия или в условиях перехода приводят к ошибке во время симуляции. Для получения дополнительной информации см. «Повторное использование компонентов Simulink в диаграммах Stateflow».

Используйте дискретные переменные для управления условиями в during Действия

Чтобы предотвратить изменения режима между основными временными шагами, условия, которые влияют на поток управления в during действия зависят от дискретных переменных. Дискретные переменные не изменяют значение между основными временными шагами.

Не используйте входные события

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

Чтобы имитировать поведение входного события, передайте входной сигнал через блок Hit Crossing как вход в график непрерывного времени.

Не используйте внутренние переходы

Когда изменение режима происходит во время симуляции в непрерывном времени, entry действие состояния назначения указывает модели Simulink, что произошел переход состояния. С внутренним переходом график никогда не выполняет entry действие. Для получения дополнительной информации см. Раздел «Внутренние переходы»

Предельное использование временной логики

Не используйте основанную на событиях временную логику, потому что в симуляции в непрерывном времени нет концепции такта. Используйте только временную логику в абсолютном времени для симуляции в непрерывном времени. Для получения дополнительной информации см. «Управление выполнением диаграммы при помощи временной логики».

Не используйте операторы обнаружения изменений

Чтобы реализовать обнаружение изменений, Stateflow буферизует переменные таким образом, чтобы это влияло на поведение графиков между незначительным временным шагом и следующим основным временным шагом.

Не изменяйте значения рабочих точек

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

Похожие темы