Если Simulink® сообщает об алгебраическом цикле в вашей модели, алгебраический решатель цикла может смочь решить цикл. Если Simulink не может решить цикл, существует несколько методов, чтобы устранить цикл.
Используйте этот рабочий процесс, чтобы решить, как вы хотите устранить алгебраический цикл.
Используйте getAlgebraicLoops
идентифицировать алгебраические циклы в модели и подсвечивать их в Редакторе Simulink. С этим подходом:
Можно пересечь несколько слоев иерархии модели, чтобы определить местоположение алгебраических циклов.
Можно идентифицировать действительные и искусственные алгебраические циклы.
Можно визуализировать все циклы в модели одновременно.
Вы не должны развертывать в и из модели через контуры.
Вы не должны обнаруживать циклы в последовательном порядке. Кроме того, вы не должны компилировать модель каждый раз, когда вы обнаруживаете и решаете цикл. Поэтому можно решить циклы быстро.
Вы выполняете алгебраическое выделение цикла на целой модели, не на определенных подсистемах.
Откройте модель.
В панели Diagnostics Параметров конфигурации Модели, набор Algebraic loop к none
или warning
. Установка этого параметра на error
препятствует тому, чтобы модель компилировала.
Скомпилируйте модель без любых ошибок. Модель должна скомпилировать, прежде чем можно будет подсветить любые алгебраические циклы.
В командной строке MATLAB®, введите:
Simulink.BlockDiagram.getAlgebraicLoops(bdroot)
getAlgebraicLoops
функционируйте подсвечивает алгебраические циклы в модели, включая алгебраические циклы в подсистемах. Это также создает отчет с информацией о каждом цикле:
Сплошные линии представляют действительные алгебраические циклы.
Пунктирные линии представляют искусственные алгебраические циклы.
Красная подсветка появляется вокруг блока, присвоенного с алгебраической переменной.
Loop ID помогает вам идентифицировать систему, которая содержит конкретный цикл.
Настройте отчет путем выбора или снятия флажка Visible для цикла.
Если вы идентифицировали алгебраические циклы в модели, можно удалить их путем редактирования модели. Закройте отчет подсветки и внесите изменения в модель. Можно отредактировать модель только после того, как вы закроете отчет.
Simulink не сохраняет выделение цикла. Закрытие модели или выход из отображения удаляют выделение цикла.
Simulink обнаруживает алгебраические циклы в процессе моделирования инициализация, например, когда вы обновляете свою схему. Можно установить Алгебраическую диагностику цикла сообщать об ошибке или предупреждении, если программное обеспечение обнаруживает какие-либо алгебраические циклы в модели.
В панели Диагностики Параметров конфигурации Модели, установленных Алгебраический параметр цикла:
none
- Simulink пытается решить алгебраический цикл; сообщает ошибка, только если алгебраический цикл не может быть решен.
warning
- Алгебраические циклы приводят к предупреждениям. Simulink пытается решить алгебраический цикл; сообщает ошибка, только если алгебраический цикл не может быть решен.
error
- Алгебраические циклы останавливают инициализацию. Рассмотрите цикл вручную, прежде чем Simulink попытается решить цикл.
В этом примере показано, как использовать алгебраическую диагностику цикла, чтобы подсветить алгебраические циклы в sldemo_hydcyl
модель.
Откройте sldemo_hydcyl
модель
В панели Диагностики Параметров конфигурации Модели, установленных Алгебраический параметр цикла на error
.
Попытайтесь симулировать модель
Когда Simulink обнаруживает алгебраический цикл во время инициализации, остановок симуляции. Диагностическое Средство просмотра отображает сообщение об ошибке и перечисляет все блоки в модели, которые являются частью того алгебраического цикла. В модели красные подсветки показывают блоки и сигналы, которые составляют цикл.
Чтобы удалить подсветки, закройте Диагностическое Средство просмотра.