Гибридные системы используют модальную логику для перехода от одного режима до другого в ответ на физические явления и условия. В этих системах непрерывно-разовые движущие силы управляют каждым режимом. Простым примером этого типа гибридной системы является прыгающий мяч. Шар перемещается постоянно через воздух, пока это не поражает землю, в которой точке происходят изменение режима или разрыв. В результате шар внезапно изменяет направление и скорость. Для получения дополнительной информации см. Модель Прыгающий мяч в Непрерывное Время.
Моделируйте гибридные системы, которые отвечают на непрерывные и дискретные изменения режима путем конфигурирования графиков 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) и Предотвращение Чрезмерных Нулевых Пересечений (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 буферизует переменные способом, который влияет на поведение графиков между незначительным временным шагом и следующим главным временным шагом.
Изменение рабочей точки непрерывно-разового графика не поддержано. Если вы загружаете рабочую точку для непрерывно-разового графика, вы не можете изменить действие состояний или любые значения локальных или выходных данных о графике. Для получения дополнительной информации см. Правила для Использования Рабочей точки Графика.