exponenta event banner

Непрерывное моделирование в потоке состояний

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

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

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

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

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

  1. Щелкните правой кнопкой мыши внутри диаграммы и выберите в контекстном меню пункт «Свойства».

  2. В диалоговом окне «Свойства диаграммы» установите в поле «Обновить метод» значение Continuous. При выборе этой опции:

    • Установлен флажок Включить обнаружение пересечения нуля.

    • Флажок Включить супершаговую семантику недоступен.

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

  4. Нажмите кнопку ОК.

Примечание

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

Взаимодействие с Simulink Solver

Ведение режима во второстепенных временных шагах

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

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

  • Государство exit действия, которые происходят перед выходом из состояния в начале перехода.

  • Государство entry действия, которые происходят после входа в новое состояние в конце перехода.

  • Действия перехода, которые происходят во время перехода.

  • Действия условия для перехода, но только в том случае, если переход непосредственно достигает состояния. Например, эта диаграмма выполняет действие n++ даже когда условия c2 и c3 являются ложными. Поскольку переход состояния отсутствует, действие условия обновляется n на второстепенном временном шаге и приводит к ошибке.

Не записывать локальные непрерывные данные в состоянии during действия, поскольку эти действия выполняются во второстепенных временных шагах.

Вычислить производные в состоянии during Действия

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

Не считывать выходные данные или производные в состоянии during Действия или условия перехода

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

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

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

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

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

Не использовать события ввода

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

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

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

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

Ограничение использования временной логики

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

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

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

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

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

Связанные темы