Универсальный PID-регулятор v4
Код:
Init start - всегда равен 1, начальный сброс регулятора
Invers - вход для инверсии регулятора. 0 = прямой регулятор, 1 = обратный.
In - вход
Set - Уставка
Dead Zone - нейтральная зона, в которой ошибка всегда равно нулю или, что тоже самое,
уставка Set всегда равна значению входа In.
При выходе In из этой зоны вверх, к значению уставки Set прибавляется значение DeadZone
и, тоже самое, вниз, от значения уставки Set отнимается значение DeadZone
Pb[0...1000] - коэффициент пропорциональности / 1000, множитель только перед пропорциональной
составляющей регулятора, кое-где в литературе его называют коэфф-м байпаса.
Pr[0...1000] - коэффициент робастностсти / 1000, множитель перед всем ПИД-регулятором,
как в конструторском регуляторе, если задать Pb=1000, то Pr будет в точности выполнять
ту же самую функцию. Если Pr = 1000, то регулятор станет классической формы с несвязанными коэффициентами.
Pd[0...1000] - коэффициент интегрирования дифференциала / 1000, множитель перед слагаемым что интегрируется вместе с ошибкой.
при Pd = 0 регулятор имеет классическую форму. при Pd = 1000 интегрируется сумма ошибки и дифференциала
в некоторых случаях применение этого коэффициента позволяет улучшить переходную характеристику
I, сек - интегральный коэффициент, постоянная времени интегрирования.
I=0 отключает и сбрасывает на SetCentr интеграл
D, сек - дифференциальный коэффициент, постоянная времени дифференцирования
Out min - минимум выхода PID регулятора, изменение сбрасывает интеграл к SetCentr[%PID]
Out max - максимум выхода PID регулятора, изменение сбрасывает интеграл к SetCentr[%PID]
Reset - вход центрирования интеграла, сброс интеграла к значению на входе SetCentr[%PID]
SetCentr[%PID]- значение центра регулятора в процентах от изменения выхода
Load - вход загрузки в интеграл значения со входа PreSet[%PID]
PreSet[%PID] - вход предустановки выхода PID регулятора в процентах от изменения выхода
**** изменение тика системы сбрасывает интеграл к SetCentr[%PID]
Out min и Out max можно задавать и положительными и отрицательными
например,
Out min = -1000
Out max = +1000
SetCentr = 0
выход ПИД-регулятора начнёт работу с нуля и в зависимости от ошибки будет стремиться либо к +1000 либо к -1000
исправления
некорректно работала мертвая зона при включенной инверсии по входу
добавлена инверсия выхода