Алгебраическая петля
Алгебраическая петля (algebraic loop) — это ситуация в моделировании, когда вход одного или нескольких блоков напрямую зависит от их же выходов через цепочку связей без задержки во времени. В результате возникает круговая зависимость, которую система не может самостоятельно решить в рамках одного временного шага, что и приводит к ошибке. Эта круговая зависимость, в котором сигнал влияет сам на себя, и называется замкнутой цепью или петлей.
Например, есть модель с блоком Add. На вход блока Add подается сигнал с его выхода, что приводит к образованию замкнутого цикла (петли) и системной ошибки Algebraic Loop:
В данном случае решением проблемы с алгебраической петлей будет корректное подключение сигнальных линий, в котором блок Add не будет замыкаться сам на себе. Перейдите к блоку с ошибкой алгебраической петли и исправьте ее, поставив сигнальную линию корректно или добавив блок Delay в обратный сигнал.
Engee не разрывает алгебраические петли. Если такая петля есть, то симуляция остановится, и ошибка в окне диагностики покажет, в каком блоке она возникла. |
Если Engee не может решить уравнение за некоторое число итераций, то выдается сообщение об ошибке в окно диагностики. Следовательно, следует избегать моделирования систем с алгебраическими петлями.
Как справляться с алгебраическими петлями:
-
Использовать блоки Transport Delay или Unit Delay, чтобы разорвать замкнутую цепь, вводя небольшую задержку;
-
Изменять структуру схемы, чтобы исключить необходимость прямой зависимости переменных.