PDA

Просмотр полной версии : Вопрос по PID регуляторам библиотеки Util.lib



nikutuzov
16.04.2025, 12:32
Правильно ли я понимаю, что когда выход OVERFLOW становится TRUE, это свидетельствует о переполнении интегрального звена и регулятор нужно сбросить, подав на вход RESET TRUE?
Как оценивается переполнение?

Евгений Кислов
16.04.2025, 12:44
Правильно ли я понимаю, что когда выход OVERFLOW становится TRUE, это свидетельствует о переполнении интегрального звена и регулятор нужно сбросить, подав на вход RESET TRUE?

Да.


Как оценивается переполнение?

Во времена CoDeSys V2.3 оценивалось так, как показано ниже. Вряд ли в V3.5 что-то сильно изменилось.



IF 1E38 - IN*TM < OUT OR -1E38 - IN*TM > OUT THEN // TM - time since last call in msec
OVERFLOW:=TRUE;
...
END_IF

IF Y>1E30 OR Y<-1E30 THEN // Overflow steht bevor, darf aber eigentlich nicht passieren
OVERFLOW:=TRUE;
END_IF

nikutuzov
16.04.2025, 13:25
Евгений, спасибо большое

FPavel
16.04.2025, 20:33
Про выход OVERFLOW уже не помню, а вот LIMITS_ACTIVE использовал для сброса интегральной составляющей.
Т.е. OVERFLOW интересен, но не востребован.

Попробуйте открыть Utils для чтения - увидите исходники (при открытии выбирайте расширение не .pro, а .lib).
Есть ещё справка
https://content.helpme-codesys.com/en/libs/Util/3.5.17.0/Controller/PID.html
Но хорошо дополнять чтением исходников