Идентифицируйте алгебраические циклы в своей модели

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

Используйте этот рабочий процесс, чтобы решить, как вы хотите устранить алгебраический цикл.

Подсветите алгебраические циклы в модели

Используйте getAlgebraicLoops идентифицировать алгебраические циклы в модели и подсвечивать их в Редакторе Simulink. С этим подходом:

  • Можно пересечь несколько слоев иерархии модели, чтобы определить местоположение алгебраических циклов.

  • Можно идентифицировать действительные и искусственные алгебраические циклы.

  • Можно визуализировать все циклы в модели одновременно.

  • Вы не должны развертывать в и из модели через контуры.

  • Вы не должны обнаруживать циклы в последовательном порядке. Кроме того, вы не должны компилировать модель каждый раз, когда вы обнаруживаете и решаете цикл. Поэтому можно решить циклы быстро.

Вы выполняете алгебраическое выделение цикла на целой модели, не на определенных подсистемах.

  1. Откройте модель.

  2. В панели Diagnostics Параметров конфигурации Модели, набор Algebraic loop к none или warning. Установка этого параметра на error препятствует тому, чтобы модель компилировала.

  3. Скомпилируйте модель без любых ошибок. Модель должна скомпилировать, прежде чем можно будет подсветить любые алгебраические циклы.

  4. В MATLAB® командная строка, введите:

    Simulink.BlockDiagram.getAlgebraicLoops(bdroot)

getAlgebraicLoops функционируйте подсвечивает алгебраические циклы в модели, включая алгебраические циклы в подсистемах. Это также создает отчет с информацией о каждом цикле:

  • Сплошные линии представляют действительные алгебраические циклы.

  • Пунктирные линии представляют искусственные алгебраические циклы.

  • Красная подсветка появляется вокруг блока, присвоенного с алгебраической переменной.

  • Loop ID помогает вам идентифицировать систему, которая содержит конкретный цикл.

Настройте отчет путем выбора или снятия флажка Visible для цикла.

Если вы идентифицировали алгебраические циклы в модели, можно удалить их путем редактирования модели. Закройте отчет подсветки и внесите изменения в модель. Можно отредактировать модель только после того, как вы закроете отчет.

Simulink не сохраняет выделение цикла. Закрытие модели или выход из отображения удаляют выделение цикла.

Используйте алгебраическую диагностику цикла

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

В панели Диагностики Параметров конфигурации Модели, установленных Алгебраический параметр цикла:

  • none - Simulink пытается решить алгебраический цикл; сообщает ошибка, только если алгебраический цикл не может быть решен.

  • warning - Алгебраические циклы приводят к предупреждениям. Simulink пытается решить алгебраический цикл; сообщает ошибка, только если алгебраический цикл не может быть решен.

  • error - Алгебраические циклы останавливают инициализацию. Рассмотрите цикл вручную, прежде чем Simulink попытается решить цикл.

В этом примере показано, как использовать алгебраическую диагностику цикла, чтобы подсветить алгебраические циклы в sldemo_hydcyl модель.

  1. Откройте sldemo_hydcyl модель

  2. В панели Диагностики Параметров конфигурации Модели, установленных Алгебраический параметр цикла на error.

  3. Попытайтесь симулировать модель

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

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

Похожие темы