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