Непрерывное время моделируя в Stateflow

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

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

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

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

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

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

  2. В диалоговом окне Chart Properties, набор поле Update method к Continuous. Когда вы выбираете эту опцию:

    • Флажок Enable zero-crossing detection устанавливается.

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

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

  4. Нажмите OK.

Примечание

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

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

Обеспечьте режим в незначительных временных шагах

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

Вычислите непрерывное состояние на каждом временном шаге

Когда вы задаете локальные непрерывные переменные, диаграмма Stateflow обеспечивает программируемый доступ к их производным. Решатель Simulink вычисляет непрерывное состояние графика на шаге текущего времени на основе значений этих переменных и их производных на предыдущем временном шаге. Для получения дополнительной информации смотрите Непрерывный По сравнению с Дискретными Решателями.

Укажите нулевые пересечения на изменениях состояния

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

Отключите обнаружение пересечения нулем

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

  • Отключите обнаружение пересечения нулем.

  • Выберите различный алгоритм обнаружения пересечения нулем для своего графика.

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

Можно выбрать из различных алгоритмов обнаружения пересечения нулем для панели Solver в диалоговом окне Model Configuration Parameters. Для получения дополнительной информации смотрите Обнаружение Пересечения нулем.

Инструкции для симуляции непрерывного времени

Чтобы обеспечить целостность и гладкость результатов симуляции непрерывного времени, ограничьте свои графики к ограниченному подмножеству семантики диаграммы Stateflow. Путем ограничения семантики входные параметры не зависят от непредсказуемых факторов, таких как:

  • Количество незначительных интервалов, которые решатель Simulink использует в каждом главном временном шаге.

  • Количество итераций, требуемых стабилизировать интегрирование и алгоритмы нулевых пересечений.

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

Графики непрерывного времени должны иметь по крайней мере Одно состояние

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

Обновите локальные данные в entryвыход, и действия перехода

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

  • 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 буферизует переменные способом, который влияет на поведение графиков между незначительным временным шагом и следующим главным временным шагом.

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

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

Похожие темы