Показать сообщение отдельно
Старый 30.08.2017, 07:00   #63
LordN
Senior Member
 
Регистрация: Dec 2007
Адрес: Томск
Сообщения: 4 123
Благодарил(а): 239 раз(а)
Поблагодарили: 161 раз(а) в 153 сообщениях
По умолчанию

Универсальный 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
исправления
некорректно работала мертвая зона при включенной инверсии по входу
добавлена инверсия выхода
Вложения
Тип файла: msl PID v4-1.msl (96.7 Кбайт, 232 просмотров)


__________________
C уважением, LordN

Последний раз редактировалось Arsie, 02.12.2021 в 16:23
LordN вне форума   Ответить с цитированием