Если Simulink ® сообщает о алгебраическом цикле в модели, решатель алгебраического цикла может решить этот цикл. Если Simulink не может решить цикл, существует несколько способов его устранения.
Этот рабочий процесс используется для определения способа устранения алгебраического цикла.

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

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