Алгоритм PID

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

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

Алгоритм PID

Сообщение taras_33 »

Решил спросить совета о ПИД регулировании.
Суть вот в чем. Гидравлический цилиндр управляется сервоклапаном (типа такого), с наличием датчика перемещения, установленном на цилиндре. Вообщем такая система: Set Point 0 - 10V , Feed Back 0 - 10V и Process Variable +/- 8mA. Так вот при любом установившимся положении цилиндра ток сервоклапана близок к нулю. В этом собственно и отличие от классической системы. Например взять электро печь, для поддержания температуры в 200 С требуется 70 вольт, для 300 С ну скажем 110 вольт. То есть каждой установки температуры SP соответствует определенное значение PV. В моем случае PV конечном итоге близка к нулю, ну дергается туда сюда с частотой 2000 Гц (частота воздействия) для удержания цилиндра в заданном положении.
Проблема в том, что не получается задействовать полноценный PID, только P (пропорциональная состовляющая) То есть error = SP - FB, а PV= error * Kp
При попытке задействовать интегральную либо дифференцирующую составляющую система ведет себя нестабильно. Может кто подскажет какой алгоритм 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!
mish17
beginner
beginner
Сообщения: 16
Зарегистрирован: 13 авг 2018, 08:28
Версия LabVIEW: 17

Re: Алгоритм PID

Сообщение mish17 »

Я бы при поддержании требуемого перемещения поддерживал скорость перемещения, задание которой изменяется в зависимости от приближения к уставке ( т.е. контролируемый разгон и останов).
Аватара пользователя
taras_33

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

Re: Алгоритм PID

Сообщение taras_33 »

Проблема не в скорости, а в ошибке установки. Скажем я подаю синусоиду 0.1Гц в качестве SP, цилиндр медленно делает полный цикл за 10 секунд. Я вывожу это дело на XY Graph. Установка по X, положение по Y ( SP vs FB). И наблюдаю гистерезис, при перемещении в 30 см, ошибка (в самом худшем месте на графике) 0.6 мм. В моем случае это не приемлемо. В идеале движение вперед, должно совпадать с движением назад. Увеличиваю Kp, ошибка уменьшается, но увеличивается нестабильность...
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 »

Было такое в моей практике, смотри пример демомодель,
я вместо ПИД поставил только одно умножение для демо,
в реале если постсвить ПИД будет работать быстрее
Вложения
PID_Hydravlik.vi
(31.59 КБ) 144 скачивания
mish17
beginner
beginner
Сообщения: 16
Зарегистрирован: 13 авг 2018, 08:28
Версия LabVIEW: 17

Re: Алгоритм PID

Сообщение mish17 »

Если регулировать сразу по положению- основная составляющая в выходном сигнале-пропорциональная,если регулировать скорость движения цилиндра- основная составляющая будет интегральная, за счет этого не будет биений.
Вложения
Hydro1.vi
(25.4 КБ) 152 скачивания
Аватара пользователя
taras_33

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

Re: Алгоритм PID

Сообщение taras_33 »

Было такое в моей практике, смотри пример демомодель,
я вместо ПИД поставил только одно умножение для демо,
в реале если постсвить ПИД будет работать быстрее
Спасибо. Любопытное решение! Нужно опробывать на практике. Когда появится возможность, прошью контроллер (ПИД у меня в ARM контроллере) с новым алгоритмом, о результатах отпишусь.
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!
Аватара пользователя
taras_33

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

Re: Алгоритм PID

Сообщение taras_33 »

Если регулировать сразу по положению- основная составляющая в выходном сигнале-пропорциональная,если регулировать скорость движения цилиндра- основная составляющая будет интегральная, за счет этого не будет биений
Скорость мало зависит от тока (что 8mA что 2mA разница почти не заметна) это специфика работы сервоклапанов, особенно если они двухступеньчатые, гораздо больше от приложенного давления.
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!
Аватара пользователя
taras_33

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

Re: Алгоритм PID

Сообщение taras_33 »

если постсвить ПИД будет работать быстрее
На демо все красиво. Только не совсем понял куда мой FB прикрутить.
У ПИД два входа на демо один, значит ли это что второй вход и есть мой FB?
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 »

Почему 2 входа? у ПИД алгоритма один вход, это разность между сетпоинт
и процесс вариабле.

Где прозводится вычитание в Вашем конкретном случае внутри или снаружи
ПИД-суб-Ви, наверное не так уже и важно. В моем примере разность
вычисляется снаружи.
Аватара пользователя
taras_33

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

Re: Алгоритм PID

Сообщение taras_33 »

а
Почему 2 входа? у ПИД алгоритма один вход, это разность между сетпоинт
и процесс вариабле.
А где обратная связь? FB
У меня два входа:
Желаемое положение - SP
Фактическое положение - FB
Один выход PV

Три PID параметра
Kp
Ki
Kd

Высчитываю ошибку положения
Error = SP - FB

Пропорциональная составляющая = Error * Kp
Интегральная = накопленная ошибка * Ki
Деффиринциальная = (последнее значение PV минус текущее положение FB) * Kd

То есть при вычислении используется FB
далее выход это сумма всех трех составляющих PV = Пропорциональной +Интегральной + Деффиринциальной

Данный алгоритм хорошо работает в системах, где выход не нулевой - электропечь например.
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!
Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5462
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 28 раз
Поблагодарили: 86 раз

Re: Алгоритм PID

Сообщение IvanLis »

taras_33 писал(а):А где обратная связь? FB
В примере обратная связь сделана через локальную переменную.
Но это только П от ПИД, интегральная и диф. составляющие там отсутствуют, о чем автор и написал :dntknw:

Ждите советов от профи.
Аватара пользователя
taras_33

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

Re: Алгоритм PID

Сообщение taras_33 »

В примере обратная связь сделана через локальную переменную

Так это понятно, просто в примере происходит запись в эту переменную. А с Feed Back только прочитать можно.
Дело все в том, что у меня PID адаптирован к контроллеру и алгоритм очень упрощен. Кроме того у меня PV это и есть выход. В примере выход отдельный. Вообщем нужно "курить" теорию и думать как организовать грамотное взаимодействие (вычисление) между четырьмя "объектами"
SP - только чтение
FB - только чтение
PV - чтение/запись
Output - результат вычислений
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 »

Вот вставил в модель ПИД-суб-ВИ,
сейчас работа модели уже очень близка
к реальной.
Вложения
PID_Hydravlik_1_1.llb
(63.52 КБ) 167 скачиваний
Аватара пользователя
taras_33

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

Re: Алгоритм PID

Сообщение taras_33 »

Спасибо, выглядит супер. Но вопрос остался открытым.
Вот выделил желтым, что до меня не доходит и где происходит конфликт.
PID.png
Из контекста справки понятно что PV это аналоговый вход. Все верно, в моем случае это датчик положения.
В Вашем примере PV это переменная, в которую кроме чтения, происходит еще и запись.

PS. Отдельное спасибо за PID subVI
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 »

Тарас, это же модель.
Запись в локальную переменную
моделирует здесь следующую реальную цепочку:

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

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