Алгоритм PID

Темы связанные с инженерными разработками, но не подходящие в другие ветки форума
Аватара пользователя
taras_33

Activity
professional
professional
Сообщения: 391
Зарегистрирован: 31 окт 2009, 18:25
Награды: 1
Версия LabVIEW: 2019
Поблагодарили: 13 раз
Контактная информация:

Re: Алгоритм PID

Сообщение taras_33 »

Так я то понимаю, что это модель.
-выходной аналоговый сигнал поступает с выхода системы на управляющий вентиль
- аналоговый вентиль переключением подачи масла под давлением
смещает поршень в нужном направлении.
- аналоговый сигнал датчика перемещения поршня поступает на вход
и считывается системой как PV
У меня сделано в точности как вы описали

Вот так
Classical PID.png
Classical PID.png (9.19 КБ) 2817 просмотров
Только это классический ПИД, как в случае с печкой, где желаемой температуре соответствует определенный "устаканившийся" выход. В случае с сервоклапаном "устаканившийся" выход всегда близок к нулю, при любом желаемом положении цилиндра.

В демо примере, который Вы любезно предоставили, "устаканившийся" выход (зеленая кривая) нулевой при любом положении SP. Вот это меня первоначально и обрадовало. Но когда начал детально разбиратся, оказалось не все так просто

В любом случае алгоритм вычислени выхода PID системы, отличается от моего. Попробую его перевести в си и зашить контроллер. Посмотрю что получится.
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning!
Аватара пользователя
Jakob Brontfeyn

Activity Gold Silver Black
expert
expert
Сообщения: 1729
Зарегистрирован: 28 фев 2008, 11:01
Награды: 6
Благодарил (а): 1 раз
Контактная информация:

Re: Алгоритм PID

Сообщение Jakob Brontfeyn »

А Вам не бросилось в глаза то что выходной сигнал
изменяется в диапазоне плюс-минус от нуля?
В этом существенное отличие от печки, хотя внешне
выглядит вроде как одинаково.
Аватара пользователя
taras_33

Activity
professional
professional
Сообщения: 391
Зарегистрирован: 31 окт 2009, 18:25
Награды: 1
Версия LabVIEW: 2019
Поблагодарили: 13 раз
Контактная информация:

Re: Алгоритм PID

Сообщение taras_33 »

Jakob Brontfeyn писал(а):А Вам не бросилось в глаза то что выходной сигнал
изменяется в диапазоне плюс-минус от нуля?
В этом существенное отличие от печки, хотя внешне
выглядит вроде как одинаково.
Да не важно какой выход в плюсе или минусе. К примеру выход контроллера 0V - 3V конвертируется электроникой в -8mA +8mA. Или выход DAQ +/-10V конвертируется в 0-220V для печки, упрощенно конечно, там шим (PWM) регулирование. Суть не в этом а том, что у сервоклапана стабилизировавшийся выход стремится к центру шкалы при любом положении. Это все равно что на печке какую бы температуру мы не задали, рано или поздно выход будет около 110V. Поэтому, как мне кажется, классический алгоритм как то не совсем подходит для этой задачи. Я очень надеюсь, что всетаки мне кажется и решение для улучшения будет найдено.
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning!
Blackman

Activity
leader
leader
Сообщения: 932
Зарегистрирован: 17 янв 2016, 15:02
Награды: 1
Версия LabVIEW: 6.1,8.5,20

Re: Алгоритм PID

Сообщение Blackman »

Печка-статический объект управления, которая обычно управляется PI регулятором.
Сервоклапан-астатический объект управления, который обычно управляется PD регулятором. По данным клапана приведенного в качестве примера (см первое сообщение), его ошибка от гистерезиса составляет порядка 1%. Тогда 0.6 мм на расстоянии 300 мм составит всего 0,2%. Как бы все нормально. Но если есть более жесткие требования, то можно попробовать добавить Dither генератор, как это делают в своих аналоговых контроллерах Bosch Rexroth AG.
Вложения
Using Dither in Digital Control Loops.pdf
Общая теория Dithering
(21.81 КБ) 166 скачиваний
Bosch Rexroth AG re29980_2005-09.pdf
(106.25 КБ) 140 скачиваний
Аватара пользователя
Andrew Lunev

Activity Professionalism
VIP
VIP
Сообщения: 957
Зарегистрирован: 11 дек 2010, 12:31
Награды: 2
Версия LabVIEW: 2014-2021
Откуда: Москва
Благодарил (а): 4 раза
Поблагодарили: 10 раз

Re: Алгоритм PID

Сообщение Andrew Lunev »

Куда-то всех совсем в дебри потянуло. Надеялся без меня кто-то напишет, но видимо придется мне...
Итак. Если вспомнить теорию управления, то объекты, которыми мы управляем делятся на статические и астатические (подробней гуглить "порядок астатизма").
Если совсем упрощенно, то если при нулевом входе на объект выход тоже нулевой, то объект статический (печка). Если же при нулевом входе на выходе объекта константа, то объект астатический (то есть имеет в своем описании чистый интегратор). Ваш гидроцилиндр вместе с сервоклапаном - объект с астатизмом первого порядка. То есть когда на входе сервоклапана ноль, на выходе гидроцилиндра постоянное положение, а не нулевое.
ПИД-регулятор - универсально устройство, которое позволяет управлять с приемлемым качеством почти любым объектом. Но не зря в нем три настроечных параметра. В зависимости от типа объекта используются определенные.
Интегральная часть в регуляторе добавляет еще один порядок астатизма в систему и если вы используете ПИ - регулятор с объектом с астатизмом первого порядка, то получаете уже астатизм второго порядка в замкнутой системе, а это структурно неустойчивый объект. Каждый интегратор сдвигает фазу сигнала на 90 градусов, два интегратора подряд сдвигают фазу на 180 градусов и в этом случае меняется знак обратной связи и система становится неустойчивой. То есть получаете вместо системы стабилизации генератор. (Подробней гуглить "устойчивость САУ, запас по фазе").
Таким образом, получаем, что в вашем случае в ПИД - регуляторе интегральная часть должна быть равна нулю, иначе будут незатухающие колебания. Добиться устойчивости при структуре ПИД можно, но только если общий коэффициент усиления контура будет меньше единицы или будет большое влияние дифференциальной части, но качество управления в этом случае боюсь будет хуже, чем при обычном П - регуляторе.
В итоге, используйте П или ПД регуляторы для управления вашим объектом. Если хотите попробовать ПИД, то уменьшите П часть раз в 10-20 перед тем, как введете И часть и вводите ее постепенно, начиная с небольших влияний.

UPD: Все-таки Blackman меня опередил и все верно написал. :)
Аватара пользователя
taras_33

Activity
professional
professional
Сообщения: 391
Зарегистрирован: 31 окт 2009, 18:25
Награды: 1
Версия LabVIEW: 2019
Поблагодарили: 13 раз
Контактная информация:

Re: Алгоритм PID

Сообщение taras_33 »

ошибка от гистерезиса составляет порядка 1%. Тогда 0.6 мм на расстоянии 300 мм составит всего 0,2%. Как бы все нормально. Но если есть более жесткие требования, то можно попробовать добавить Dither генератор
servo по ссылке это в качестве примера, их тут "целый вагон и маленькая тележка" разные токи управления, давления и тд. И мой контроллер для каждого выставлят свои параметры. Самые "капризные" как раз +/- 8 mA. Dither - Попробую. В данный момент использую другой метод. Суть такая. У сервоклапана есть мертвая зона - порог чувствительности. Эксперементы показали, что он находится в районе 12 микроампер. То есть если мой ПИД регулятор насчитал, что для устранения ошибки позиционирования нужно подать 4мкА, то сервоклапан не реагирует вообще никак. В итоге накапливаестся ошибка и следующий расчет выдает скажем 22мкА, а это уже много. (это мой воспаленный мозг делает такие выводы :haha: ) Решил побороться с этой dead zone. На выход поставил компаратор, в итоге, что бы не насчитал регулятор, ток всегда будет больше +12мкА либо меньше -12мкА, в зависимости какой знак имела ошибка . И знаете - помогло! Точноть стала лучше.
В любом случае спасибо за помощь и разъяснения, есть над чем подумать.
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots.
So far, the Universe is winning!
Ответить

Вернуться в «Общие»