Просмотр полной версии : PID+3х
Опытные товарищи подскажите. Все перечитал, вроде. ПР200. Регулятор давления в установке. Управление 3х ходовым клапаном перед откачным насосом .Работа от аналогового ПИД Овен. Сделал преобразователь из аналога в импульсные выходы (не ШИМ) больше , меньше на базе модели привода. Учел реверсы, паузы, нечувствительность....и даже выбег. Все работает в связке с аналоговым ПИД и показывает хорошие результаты на ИМ 10сек, при цикле ПР 30мс (уже сильно нагружена). Но идет дрейф выхода ПИД относительно реального положения задвижки. Причина, неидентичность характеристик привода право-лево. Скорость дрейфа можно компенсировать значением люфта в право или лево. Но так как идеально скомпенсировать теоретически не возможно (особенно при цикле ПР) через некоторое время ,достаточно большое , ПИД может дать например 0 , а задвижка реально например 30%. Попытка принудительно синхронизировать процесс принудительным закрыванием задвижки при 0 с ПИД ,до конечников, приводит к временному скачку давления, что не есть хорошо. Аналогично в 100% в зависимости куда идет дрейф. Отюда вопрос : решается ли это как нибуть. И второй вопрос: свободен ли от этого метод преобразования с ШИМ. Да , обратной связи по положению нет.Спасибо всем.
Сергей0308
12.07.2023, 14:54
Опытные товарищи подскажите. Все перечитал, вроде. ПР200. Регулятор давления в установке. Управление 3х ходовым клапаном перед откачным насосом .Работа от аналогового ПИД Овен. Сделал преобразователь из аналога в импульсные выходы (не ШИМ) больше , меньше на базе модели привода. Учел реверсы, паузы, нечувствительность....и даже выбег. Все работает в связке с аналоговым ПИД и показывает хорошие результаты на ИМ 10сек, при цикле ПР 30мс (уже сильно нагружена). Но идет дрейф выхода ПИД относительно реального положения задвижки. Причина, неидентичность характеристик привода право-лево. Скорость дрейфа можно компенсировать значением люфта в право или лево. Но так как идеально скомпенсировать теоретически не возможно (особенно при цикле ПР) через некоторое время ,достаточно большое , ПИД может дать например 0 , а задвижка реально например 30%. Попытка принудительно синхронизировать процесс принудительным закрыванием задвижки при 0 с ПИД ,до конечников, приводит к временному скачку давления, что не есть хорошо. Аналогично в 100% в зависимости куда идет дрейф. Отюда вопрос : решается ли это как нибуть. И второй вопрос: свободен ли от этого метод преобразования с ШИМ. Да , обратной связи по положению нет.Спасибо всем.
Не совсем понятно что не так с вашей программой, короче, можно взять ПИД-регулятор в менеджере компонентов, там есть с дискретными выходами больше-меньше!
Ну, а когда свою программу доделаете, в смысле, доведёте до ума, тогда всем покажите её преимущества!
Мне принципиально непонятно, зачем что-то использовать своё недоделанное, когда можно чужое, но работающее, в смысле, когда придумаете, что-то лучше, чем уже имеется, тогда его и ставьте(используйте), это же детский каприз, типа пусть будет хуже, но по-моему!
Не совсем понятно что не так с вашей программой, короче, можно взять ПИД-регулятор в менеджере компонентов, там есть с дискретными выходами больше-меньше!
Ну, а когда свою программу доделаете, в смысле, доведёте до ума, тогда всем покажите её преимущества!
Мне принципиально непонятно, зачем что-то использовать своё недоделанное, когда можно чужое, но работающее, в смысле, когда придумаете, что-то лучше, чем уже имеется, тогда его и ставьте(используйте), это же детский каприз, типа пусть будет хуже, но по-моему!
А что так через губу. Я что против. Лучше скажите где в библиотеке такой макрос? В регуляторах нет. А на вопрос который задавался ранее много раз ответа не получил никто. Вот и спрашиваю.
В регуляторах я тоже не нашел. Может "Для Вентиляции"? KZR_DO_Sel ?
Сергей0308
12.07.2023, 15:36
А что так через губу. Я что против. Лучше скажите где в библиотеке такой макрос? В регуляторах нет. А на вопрос который задавался ранее много раз ответа не получил никто. Вот и спрашиваю.
Кстати, ПИД-регуляторы часто на форуме обсуждаются, в смысле ищут с дискретными выходами больше-меньше, короче и на форуме посмотрите, сравните несколько штук, что Вам больше подойдёт или понравится, тот и используйте!
В регуляторах я тоже не нашел. Может "Для Вентиляции"? KZR_DO_Sel ?
Не , это что то не то. Надо ПИД с выходами больше меньше. То что люди называют ПИД2+ШИМ. Почему в библиотеке такого нет , не понятно. Значить никто еще не сделал?
Если у Вас свой алгоритм, которого мы не видим - как мы Вам поможем?
Даже если задвижка открывается быстрее, чем закрывается - это все можно учесть в алгоритме.
Еще не понятно, что значит дрейф? Может это накопление интегральной составляющей?
Кстати, ПИД-регуляторы часто на форуме обсуждаются, в смысле ищут с дискретными выходами больше-меньше, короче и на форуме посмотрите, сравните несколько штук, что Вам больше подойдёт или понравится, тот и используйте!
Смотрел уже. Изучаю так сказать передовой опыт. Только и у меня работает, но с проблемой. Это то что все называют отклонение истинного положения привода от %ПИД. И причина понятна. И многие задавали этот вопрос. Как вывернутся? А с ШИМом так же будет? Почему спрашиваю ,люди коррекцию делают , но у них процессы очень медленные, инерционные, можно и скорректировать на ходу.
Если у Вас свой алгоритм, которого мы не видим - как мы Вам поможем?
Даже если задвижка открывается быстрее, чем закрывается - это все можно учесть в алгоритме.
Еще не понятно, что значит дрейф? Может это накопление интегральной составляющей?
Вряд ли. Собственно все просто. В начале истинное положение задвижки совпадает в процентах с выходом ПИД (0-100). Но в течении нескольких дней средняя точка колебаний смещается к 0 или 100 и продолжает работать. Только ПИД ограничен 0 и 100. В минус не уйдешь. приходится принудительно закрыть или открыть до конечника.
Вряд ли. Собственно все просто. В начале истинное положение задвижки совпадает в процентах с выходом ПИД (0-100). Но в течении нескольких дней средняя точка колебаний смещается к 0 или 100 и продолжает работать. Только ПИД ограничен 0 и 100. В минус не уйдешь. приходится принудительно закрыть или открыть до конечника.
Т.е. если давление больше уставки, а ПИД уже на 0, надо все равно пропускать сигнал "меньше" на задвижку, пока не сработает концевик.
И наоборот...
Сергей0308
12.07.2023, 16:20
Вряд ли. Собственно все просто. В начале истинное положение задвижки совпадает в процентах с выходом ПИД (0-100). Но в течении нескольких дней средняя точка колебаний смещается к 0 или 100 и продолжает работать. Только ПИД ограничен 0 и 100. В минус не уйдешь. приходится принудительно закрыть или открыть до конечника.
У Овена и не только имеется множество ПИД-регуляторов больше-меньше(с дискретными выходами) без датчика положения, в смысле они как-то работают, а ваш регулятор не работает, в смысле для привода ПИД-регулятора в принципе не обязательно иметь датчик положения! Если у Вас не получается, поставьте датчик положения, я когда-то, примерно(точно не помню) лет 15 назад использовал такую приблуду:
68792
совместно с индуктивным датчиком в качестве датчика положения.
Т.е. если давление больше уставки, а ПИД уже на 0, надо все равно пропускать сигнал "меньше" на задвижку, пока не сработает концевик.
И наоборот...
Вообщем правильно. Например реальное положение задвижки 10%, а ПИД 4% . Соответственно пока ПИД не упрется в 0, регулирование работает. Но далее останется приоткрытая на 6% задвижка. И? Если интересно сейчас вычленю макрос и выложу. Собственно обычная следящая система которая стремится сделать выход равным входу с определенными точностями и ограничениями. И пока она работает формируются раздельные сигналы вправо, влево. Входом является выход библиотечного макроса ПИДа.
У Овена и не только имеется множество ПИД-регуляторов больше-меньше(с дискретными выходами) без датчика положения, в смысле они как-то работают, а ваш регулятор не работает, в смысле для привода ПИД-регулятора в принципе не обязательно иметь датчик положения! Если у Вас не получается, поставьте датчик положения, я когда-то, примерно(точно не помню) лет 15 назад использовал такую приблуду:
68792
совместно с индуктивным датчиком в качестве датчика положения.
С обратной связью и у меня заработает, даже сомнений нет. Привода заводские , ломать нельзя. И речь идет о программном компоненте , а не об аппаратном. В библиотеке ОЛ нет такого, или?
Вообщем правильно. Например реальное положение задвижки 10%, а ПИД 4% . Соответственно пока ПИД не упрется в 0, регулирование работает. Но далее останется приоткрытая на 6% задвижка. И? Если интересно сейчас вычленю макрос и выложу. Собственно обычная следящая система которая стремится сделать выход равным входу с определенными точностями и ограничениями. И пока она работает формируются раздельные сигналы вправо, влево. Входом является выход библиотечного макроса ПИДа.
Ну! Идею Вы поняли. Можно реализовать слежение за рабочей точкой.
Например:
ua_Pwr_off = 50% - загружается при включении PID
через определенную паузу смещаем задвижку на (oa_PWR - 50%) * время_полного_хода / 100%, т.е. сдвигаем на разницу в % в зависимости от знака
после чего перезапускаем PID (он начинает новый отсчет от 50%)
А я вот не понимаю, зачем привязывать положение задвижки к выходу ПИД? Ну, надо по ПИД открывать - открывайте, надо закрывать - закрывайте.
Eugene.A
12.07.2023, 20:06
Это погоня за двумя зайцами.
Вот представьте, вы ПИД-регулятор, ведущий автомобиль по маршруту. У вас есть задание - конечная точка, есть возмущающие воздействия - изгибы дороги, разметка, светофоры, ухабы и т.п. Есть руль, есть педали, и есть глаза, отслеживающие отклонения от траектории к цели и регистрирующие возмущающие воздействия.
А теперь представьте, что у вас есть указатель положения рулевого механизма. Сильно он поможет вам в достижении конечной точки маршрута?
Вот у вас есть датчик давления, есть уставка, т.е. параметр, которого вы должны достичь, и есть исполнительный механизм, позволяющий воздействовать на параметр известным способом. Что вам ещё нужно?
Ну! Идею Вы поняли. Можно реализовать слежение за рабочей точкой.
Например:
ua_Pwr_off = 50% - загружается при включении PID
через определенную паузу смещаем задвижку на (oa_PWR - 50%) * время_полного_хода / 100%, т.е. сдвигаем на разницу в % в зависимости от знака
после чего перезапускаем PID (он начинает новый отсчет от 50%)
Сам ПИД и выходной каскад модели привода завязаны как шестеренки. ПИД управляет моделью. Модель как положено приводу выходит на тот же процент точно только с запаздыванием. И тут все нормально. Проблема в самой задвижке которая прицеплена к модели чрез выходы больше-меньше, глазами если смотреть , она через сутки будет не там где нужно. Или я что не понял что вы предложили. Скорректировать можно только по конечникам. Только они всегда там где положено. Но в ходе процесса...
А я вот не понимаю, зачем привязывать положение задвижки к выходу ПИД? Ну, надо по ПИД открывать - открывайте, надо закрывать - закрывайте.
Вот и я так думал. Действительно без разницы где ПИД главное чтоб формировались сигналы больше-меньше для задвижки. Только пока выход ПИД не станет в результате дрейфа таким что его изменения из за его ограничения 0-100 не хватит чтоб поставить задвижку в нужное положение. Понятно сказал? А так , да работает все как часы до определенного времени.
Вот и я так думал. Действительно без разницы где ПИД главное чтоб формировались сигналы больше-меньше для задвижки. Только пока выход ПИД не станет в результате дрейфа таким что его изменения из за его ограничения 0-100 не хватит чтоб поставить задвижку в нужное положение. Понятно сказал? А так , да работает все как часы до определенного времени.
Ну, ПИД не ограничен 0..100. Можно поставить -100...+100, можно поставить -1...+101. И в большинстве макросов больше-меньше, которые здесь были, есть условие: если вход меньше меньшего, то мы принудительно закрываем задвижку, если вход больще большего - то открываем
Это погоня за двумя зайцами.
Вот представьте, вы ПИД-регулятор, ведущий автомобиль по маршруту. У вас есть задание - конечная точка, есть возмущающие воздействия - изгибы дороги, разметка, светофоры, ухабы и т.п. Есть руль, есть педали, и есть глаза, отслеживающие отклонения от траектории к цели и регистрирующие возмущающие воздействия.
А теперь представьте, что у вас есть указатель положения рулевого механизма. Сильно он поможет вам в достижении конечной точки маршрута?
Вот у вас есть датчик давления, есть уставка, т.е. параметр, которого вы должны достичь, и есть исполнительный механизм, позволяющий воздействовать на параметр известным способом. Что вам ещё нужно?
Ладно давайте на машинках. Действительно положение руля меня не интересует, я даю воздействие на руль вправо-лево соответствующими импульсами, длительность которых пропорциональна визуальному отклонению от маршрута (на самом деле чуть сложнее). Так вот хорошо когда при руле в нейтральном положении машина идет прямо. А если руль сбит на оборот и имеет естественно ограничения на вращение, те вправо до упора осталось 1 оборот , влево 3. Вроде как все равно с точки рулежки, до определенного времени. Вот только если надо будет сильно повернуть вправо (по информации с дороги) то может не хватить руля, он упрется в ограничитель. И машина поедет не туда. Что надо сделать, правильно , снять руль и поставить так чтоб вправо и в лево было одинаковое количество оборотов относительно движения по прямой. Только на ходу такое не сделаешь, останавливаться надо. Но если реакция машины на воздействие руля очень медленная, то можно и на ходу, машина сильно не уйдет за это время. Что товарищи с других форумов и предлагали. У меня по сравнению регулировкой тепла в доме, опять на машинках - феррари. Вот так вроде.
Ну, ПИД не ограничен 0..100. Можно поставить -100...+100, можно поставить -1...+101. И в большинстве макросов больше-меньше, которые здесь были, есть условие: если вход меньше меньшего, то мы принудительно закрываем задвижку, если вход больще большего - то открываем
Вроде как да. Тут что то есть. Я сейчас в этом направлении и думаю.Но нет ,как в 0 уперся, так и в -10 упрется.
Сергей0308
12.07.2023, 20:42
У товарища простая хотелка, главное понятная, хочет ПИД-регулятор с дискретными выходами больше-меньше без датчика положения, в смысле, некоторые неделями объясняют, что они хотят, а здесь и объяснять не надо!
Короче, повторю ещё раз, таких много выкладывалось на форуме, пусть выбирает наиболее ему подходящий или понравившийся и если там чего не хватает(типа времени выборки люфта при реверсе), добавит нужные для его случая функции, всё!
Непонятно чего он выжидает, уже бы мог давно сделать!
Ну и если возникли какие трудности с реализацией все охотно бы помогли!
А попробуйте это макрос
68793
Сделан по мотивам этого видео https://youtu.be/fRw0xxcWv5k но в железе не испытан
Или можно Овеновский макрос попробовать
68794
У товарища простая хотелка, главное понятная, хочет ПИД-регулятор с дискретными выходами больше-меньше без датчика положения, в смысле, некоторые неделями объясняют, что они хотят, а здесь и объяснять не надо!
Короче, повторю ещё раз, таких много выкладывалось на форуме, пусть выбирает наиболее ему подходящий или понравившийся и если там чего не хватает(типа времени выборки люфта при реверсе), добавит нужные для его случая функции, всё!
Непонятно чего он выжидает, уже бы мог давно сделать!
Ну и если возникли какие трудности с реализацией все охотно бы помогли!
Читал, смотрел, скачивал. Периодически по тексту этих форумов, проскакивает вопрос: а что вы делаете с дрейфом истинного положения относительно программного. Никто не ответил, как будто и нет его.
Eugene.A
12.07.2023, 20:53
А если руль сбит на оборот и имеет естественно ограничения на вращение, те вправо до упора осталось 1 оборот , влево 3.
На неисправном автомобиле ездить не рекомендуется.
У вас система просто неисправна, а вы пытаетесь автоматизировать бардак. Получится автоматический бардак.
То, что вы описываете, может возникнуть только при неправильной установке привода на клапан или неправильной установке концевиков. ПИД здесь не при чём.
0-100 % выхода ПИДа обозначают скорость и направление действия привода, а не положение. 50 % - привод стоит. 0% - привод закрывается с максимальной скоростью, 100% - привод открывается с максимальной скоростью. Упереться привод может только в концевик по достижении конечного положения. Если при этом результат не достигнут - неправильно подобрано оборудование, например, слишком медленный привод, или недостаточная пропускная способность клапана. Никакими алгоритмами это не преодолеть.
На неисправном автомобиле ездить не рекомендуется.
У вас система просто неисправна, а вы пытаетесь автоматизировать бардак. Получится автоматический бардак.
То, что вы описываете, может возникнуть только при неправильной установке привода на клапан или неправильной установке концевиков. ПИД здесь не при чём.
0-100 % выхода ПИДа обозначают скорость и направление действия привода, а не положение. 50 % - привод стоит. 0% - привод закрывается с максимальной скоростью, 100% - привод открывается с максимальной скоростью. Упереться привод может только в концевик по достижении конечного положения. Если при этом результат не достигнут - неправильно подобрано оборудование, например, слишком медленный привод, или недостаточная пропускная способность клапана. Никакими алгоритмами это не преодолеть.
Вы не поняли проблему. Все у меня в порядке. Так работают все привода, вправо и лево разные чувствительности. Мы это компенсируем параметрами люфт право и люфт влево. Но точно не получится из за цикла ПР и все равно уйдет со временем. Вот значение ПИДа внутреннее и уходит. Многие хотели чтоб процент ПИД совпадал с реальным положением задвижки, не прокатывает. Но в значительном диапазоне на мой алгоритм это не влияет, но на краях есть проблема. Вот это в начале я и не понял, только на реальном объекте. В отладчике такого не увидишь.
А попробуйте это макрос
68793
Сделан по мотивам этого видео https://youtu.be/fRw0xxcWv5k но в железе не испытан
Или можно Овеновский макрос попробовать
68794
А вот за это спасибо. Изучаю. Принцип реализации модели другой.
Сергей0308
12.07.2023, 21:21
Читал, смотрел, скачивал. Периодически по тексту этих форумов, проскакивает вопрос: а что вы делаете с дрейфом истинного положения относительно программного. Никто не ответил, как будто и нет его.
Я же написал там не используется датчик положения привода и положение привода не расчитывается! Если текущее значение меньше уставки(для режима нагреватель) периодически поступают импульсы на открытие, если текущее значение регулируемого параметра больше уставки, периодически поступают импульсы на закрытие, всё! Датчик положения здесь не нужен! Период следования и ширина(продолжительность) импульсов зависит от величины рассогласования(пропорциональная составляющая), времени рассогласования(интегральная составляющая) и скорости изменения регулирующего параметра(дифференциальная составляющая), вкратце, всё!
Зачем Вы говорите о том, чего там нет в принципе?
Сергей0308
12.07.2023, 21:30
Вы не поняли проблему. Все у меня в порядке. Так работают все привода, вправо и лево разные чувствительности. Мы это компенсируем параметрами люфт право и люфт влево. Но точно не получится из за цикла ПР и все равно уйдет со временем. Вот значение ПИДа внутреннее и уходит. Многие хотели чтоб процент ПИД совпадал с реальным положением задвижки, не прокатывает. Но в значительном диапазоне на мой алгоритм это не влияет, но на краях есть проблема. Вот это в начале я и не понял, только на реальном объекте. В отладчике такого не увидишь.
У Вас какие-то принципиально неверные понятия, Вам необходимо менять своё мировоззрение, лучше поздно, чем никогда!
Eugene.A
12.07.2023, 21:47
Вы не поняли проблему. Все у меня в порядке.
Если у вас всё в порядке с рулевым управлением, а вы не вписываетесь в повороты, то непорядок в голове у драйвера, вы не сдали вождение. И никакой датчик положения вам не поможет, ни физический, ни вычисленный. По датчику всё будет в порядке, но вы въедете в канаву, или ваш параметр, давление, вылетит за пределы допуска.
У Вас какие-то принципиально неверные понятия, Вам необходимо менять своё мировоззрение, лучше поздно, чем никогда!
".....Период следования и ширина(продолжительность) импульсов...." те вы описали ШИМ преобразователь. Те другой принцип. Хорошо. И нормальное у меня мировоззрение и ориентация.
Но все равно спасибо. Выше товарищ направил меня в нужное русло.
Если у вас всё в порядке с рулевым управлением, а вы не вписываетесь в повороты, то непорядок в голове у драйвера, вы не сдали вождение. И никакой датчик положения вам не поможет, ни физический, ни вычисленный. По датчику всё будет в порядке, но вы въедете в канаву, или ваш параметр, давление, вылетит за пределы допуска.
Вы сами захотели , на примере машинок. Можем про полиномы Лежандра, преобразование Лапласа, теорию Найквиста для линеаризованных систем.... Не надо больше. Если нечего сказать. Но все равно спасибо за участие. Общаюсь потому, как когда кому то рассказываешь , сам поймешь.
Eugene.A
12.07.2023, 22:08
".....Период следования и ширина(продолжительность) импульсов...." те вы описали ШИМ преобразователь.
ШИМ это и есть регулятор скорости. Чем длиннее импульсы, тем быстрее перемещается привод. Этот способ регулирования применяется для приводов, у которых двигатели переменного тока, обороты которых регулировать, скажем так, затруднительно. ШИМ - это дёшево. Для тех применений, где быстродействия не требуется.
Кстати, о руле автомобиля. Его положение не определяет положение автомобиля относительно оси его движения, оно определяет скорость его отклонения от оси. Так же и выход ПИД регулятора, он определяет не положение привода, а скорость его перемещения и направление перемещения.
Сергей0308
12.07.2023, 22:26
".....Период следования и ширина(продолжительность) импульсов...." те вы описали ШИМ преобразователь. Те другой принцип. Хорошо. И нормальное у меня мировоззрение и ориентация.
Но все равно спасибо. Выше товарищ направил меня в нужное русло.
И ШИМ Вы неверно понимаете, в смысле, ШИМ это когда меняется только ширина импульса, при этом период следования остаётся неизменным!
Я правильно понимаю, что Вы в какой-то антигалактике живёте, в смысле, у Вас всё не так, как на Земле?
И, уже повторяюсь, лучше сразу сделать ПИД-регулятор больше-меньше, чем приделывать к ПИД-регулятору с аналоговым выходом костыль!
Это займёт больше ресурсов(элементов) и затруднит настройку, в смысле, проще настроить один блок, чем несколько, последовательных!
Powered by vBulletin® Version 4.2.3 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot