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

Понятие алгебраической петли

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

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

Рассмотрим модель, которая содержит блок суммы. Он вычитает выходное значение блока $x_a$ из входного значения $u$.

newmodel_1_1742392010658.png

Модель реализует следующее уравнение: $$ x_a = u - x_a $$

Как видите, есть алгебраическая петля. И решение в данном случае будет простое - переписать уравнение:

$$ x_a = u/2 $$

Математическая интерпретация

Engee имеет численные решатели для симуляции обыкновенных дифференциальных уравнений (ОДУ). ОДУ — это системы уравнений, которые можно записать в виде:

$$ \dot{x}=f(x,t) $$

где $x$ - вектор состояния и $t$ - независимая переменная времени.

Некоторые системы уравнений включают дополнительные ограничения, которые включают независимую переменную и вектор состояния, но не производную от вектора состояния. Такие системы называются дифференциальными алгебраическими уравнениями (ДАУ).

Термин «алгебраический» относится к уравнениям, в которых нет производных. Вы можете выразить дифференциальные уравнения в частных производных:

$$ \dot{x}=f(x,x_a,t) $$ $$ 0=g(x,x_a,t) $$

где:

  • $f$ и $g$ могут быть векторными функциями;
  • Первое уравнение - это дифференциальное уравнение;
  • Второе уравнение - это алгебраическое уравнение;
  • Вектором дифференциальных переменных является $x$
  • Вектором алгебраических переменных является $x_a$

В модели алгебраический цикл представляет собой алгебраическое ограничение. Модели с алгебраическими циклами определяют систему дифференциальных алгебраических уравнений. Решается алгебраический цикл численно для $x_a$ на каждом шаге моделирования, использующего решатель ОДУ.

Рассмотрим эту модель, реализующую простую систему дифференциальных уравнений. Внутренний цикл представляет собой алгебраическое ограничение, а внешний цикл — дифференциальное уравнение.

newmodel_1_1742389181735.png

Модель реализует систему ДАУ: $$ \dot{x}=x_a $$ $$ 0=u-x-2x_a $$

Для каждого шага, выполняемого решателем ОДУ, решатель алгебраического цикла должен решить алгебраическое ограничение для $x_a$ перед вычислением производной $\dot{x}$.

Исскуственные алгебраические петли

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

Давайте рассмотрим пример. Дана модель, которая является системой управления с пропорциональным контроллером объекта, описанным

$$ G(s)=\frac{1}{s^2+2s+1} $$

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

newmodel_1_19_03_25_15_44_58.png

Откройте модель create_alg_loop.engee, как описано в следующих шагах:

  • Заключите контроллер и объект управления в подсистему.

  • В параметрах подсистемы выберите «Обратить в атомарную единицу», чтобы сделать подсистему атомарной.

  • Запустите модель.

Также вы можете запустить готовую модель atomic_alg_loop.engee.

В результате вы получите ошибку: image.png

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

Вывод

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