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

Алгебраическая петля

Алгебраическая петля (algebraic loop) — это ситуация в моделировании, когда вход одного или нескольких блоков напрямую зависит от их же выходов через цепочку связей без задержки во времени. В результате возникает круговая зависимость, которую система не может самостоятельно решить в рамках одного временного шага, что и приводит к ошибке. Эта круговая зависимость, в котором сигнал влияет сам на себя, и называется замкнутой цепью или петлей.

Например, есть модель с блоком Add. На вход блока Add подается сигнал с его выхода, что приводит к образованию замкнутого цикла (петли) и системной ошибки Algebraic Loop:

algebraic loop article

В данном случае решением проблемы с алгебраической петлей будет корректное подключение сигнальных линий, в котором блок Add не будет замыкаться сам на себе. Перейдите к блоку с ошибкой алгебраической петли и исправьте ее, поставив сигнальную линию корректно или добавив блок Delay в обратный сигнал.

algebraic loop article 2

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

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

Как справляться с алгебраическими петлями:

  • Использовать блоки Transport Delay или Unit Delay, чтобы разорвать замкнутую цепь, вводя небольшую задержку;

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