Документация Engee
Notebook

Удаление алгебраических петель

Рассмотрим методы для удаления алгебраических циклов из модели.

Введение задержки

Блоки прямого прохождения в цепи обратной связи могут создавать алгебраические циклы в модели. Вы можете удалить эти алгебраические циклы, введя задержку с помощью блока Запаздывание (Delay) или Единичное запаздывание (UnitDelay).

Откройте модель algebraic_loop. Модель содержит три атомарные подсистемы: A, B, и C. Выход подсистемы A является входом для подсистемы B, а выход подсистемы B является входом для подсистемы C. Выход подсистемы C возвращается в подсистему A и подсистему B, создавая два цикла обратной связи.

algebraic_loop_27_03_25_09_25_40.png

Если запустить модель, то вы увидите сообщение об ошибке в окне Диагностики.

image.png

Чтобы удалить алгебраические циклы из вашей модели, добавьте задержку до или после каждой алгебраической переменной. Чтобы увидеть это решение, откройте модель algebraic_loop_two_UnitDelay, которая аналогична модели algebraic_loop, но с блоком единичной задержки, добавленным после блока усиления в каждом цикле обратной связи.

algebraic_loop_two_unitdelay_27_03_25_09_29_04.png

Запустите модель, чтобы убедиться, что при сборке модели алгебраические петли не обнаружены.

При таком расположении блоков задержки подсистема A и подсистема B используют выходные данные подсистемы C с предыдущего временного интервала.

В этой модели вы также можете удалить алгебраическую петлю, добавив один блок единичной задержки между подсистемой B и подсистемой C. Этот путь сигнала является частью обеих контуров обратной связи, поэтому задержка влияет на путь обеих алгебраических переменных. Чтобы увидеть это решение, откройте модель algebraic_loop_one_UnitDelay.engee.

algebraic_loop_one_unitdelay_27_03_25_09_27_22.png

При таком расположении блока «Запаздывание на один шаг» подсистема C использует значение предыдущего временного шага для вывода из подсистемы B для получения значения обратной связи для текущего временного шага.

Другие способы устранения алгебраических петель

Если решатель не может решить алгебраическую задачу, Engee выдаёт ошибку. Используйте один из следующих способов, чтобы устранить петлю:

  • Перепишите уравнение, чтобы избежать циклической зависимости;
  • Преобразуйте ДАУ в ОДУ, что позволит устранить любые алгебраические циклы;
  • Для некоторых алгебраических циклов укажите начальные значения для алгебраических состояний в цикле. Для этого можно использовать, например, блок IC.

Устранение искусственных алгебраических петель, вызванных атомарными системами

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

Преобразование атомной подсистемы в виртуальную подсистему:

  • Откройте модель, содержащую атомарную подсистему.

  • Щелкните правой кнопкой мыши атомарную подсистему и выберите Параметры подсистемы.

  • Снимите флажок Рассматривать как атомную единицу.

Объединенные сигналы, создающие искусственные Алгебраические циклы

В некоторых моделях сигналы объединяются в группы. Такое объединение может привести к тому, что Engee обнаружит алгебраическую петлю, даже если алгебраического ограничения не существует. Если вы перенаправите один или несколько сигналов, вы сможете устранить искусственную алгебраическую петлю.

В этом примере линеаризованная модель имитирует динамику системы из двух резервуаров, питаемых одним насосом. В alg_loop_ss.engee:

alg_loop_ss_27_03_25_09_34_46.png

  • Производительность $q1$ — это скорость потока жидкости, поступающей в резервуар из насоса.

  • Выход $h2$ - это высота жидкости во втором резервуаре.

  • Блок «Пространство состояний» определяет динамическую реакцию системы резервуара на работу насоса.

  • На выходе блока "Пространства состояний" получается вектор, содержащий $q1$ и $h2$.

Если попробовать промоделировать модель, мы получим сообщение об обнаружении алгебраической петли. Чтобы устранить ее выполните следующие пункты:

  • Измените матрицы $C$ и $D$ следующим образом: image.png

  • Передайте $q1$ непосредственно на вход, а не через блок Пространства состояний.

Вы можете открыть готовую модель отредактированную модель alg_loop_ss_sol.engee. Теперь входной сигнал ($q1$) не проходит напрямую на выход (матрица $D = 0$), поэтому блок «Пространство состояний» больше не имеет прямой связи.

alg_loop_ss_sol_27_03_25_09_36_21.png

Вывод

Мы рассмотрели несколько методов удаление алгебраических петель в моделях Engee. Повторим, что строить модель с алгебраическими петлями неправильно и неоптимально. Это увеличивает вычислительные затраты и вызывает сложности при анализе результатов. Поэтому советуем избегать алгебраических петель, перестраивая уравнения или внося дополнительные блоки запаздывания в модель.