Мое мнение такое - качество регулирования вашего регулятора будет очень низким.
Мое мнение такое - качество регулирования вашего регулятора будет очень низким.
Реальность гораздо хуже вами описанного. В автобусе те, кому холодно всегда сидят раздетые и на местах, расположенных прям под лючком, откуда дует.
Те же, кому жарко сидят вдалеке от лючка, запакованные в полярные шубы "бир юса". Попытка пересадить "подлюков" на другие места или раздеть альпинистов ни к чему не приводит)
- ά ν θ ρ ω π ο ς -
Мои универсальные макросы https://github.com/anthrwpos1/macros
Причесал в итоге уравнение регулирования и получил соедующий результат.
Величина управления раскладывается на три слагаемых.
Первое пропорционально отстройке, второе пропорционально производной температуры, а третий зависит от истории работы нагревателя (фактически оно равно среднему значению мощности нагревателя за "интегральное" время).
Таким образом, он почти совпадает с обычным ПИДом. Замена интегральной поправки по температуре на поправку связанную с историей работы однозначно положительно сказывается на регулировании. Эта поправка не срезается из-за достижения предельной мощности, как это происходит обычно. Но она и не приводит к запоздалому началу регулирования как это происходит в моей версии ПИД, где интегральная составляющая считается отдельно.
Кроме того, этот регулятор наглядно показывает интересный факт: пропорциональный и дифференциальный коэффициент могут быть выбраны сколь угодно круто при условии, если между ними соблюдено адекватное соотношение. Если дифференциальное время оказывается слишком низким - возникает перерегулирование. Если слишком высоким - недорегулирование (при сколь угодно низком Xp!). Таким образом распространенный в интернете совет по наладке ПИД о том, чтобы поставить нулевое время дифференцирования и добиться пропорциональным коэффициентом отсуствия перерегулирования оказывается полной ерундой. Кстати до этого я исследовал ПИД аналитически и постоянно получал этот результат - что Xp можно задать сколь угодно крутым, и никак не мог поверить, что это действительно возможно, мне постоянно казалось, что я разучился решать дифференциальные уравнения и искал ошибки).
Вобщем, теперь уже окончательно ясно, что нового регулятора как такового я не открыл, а открыл - адекватный метод вычисления интегральной поправки, коим и буду теперь пользоваться. Ну и плюс открыл неожиданные возможности наладки ПИД, о которых не знал раньше. Есть правда одно НО. Это сработает только если регулятор адекватно фильтрует входные данные и считает производную. Не все регуляторы адекватно считают производную - проверено на опыте)
- ά ν θ ρ ω π ο ς -
Мои универсальные макросы https://github.com/anthrwpos1/macros
а можете указать данный источник по поводу обнуления Д составляющей? это всё при также происходит при также обнулённой И составляющей?
просто на 3 курсе учебника ТАУ банально видно что П регулятор всегда имеет перерегулирование + статическую погрешность регулирования, ПД - не такое перерегулирование как у П но всё равно не идеально.
и только интеграл помогает нам в конечном счёте избавиться от статической погрешности ( хотя он и разносит колебания динамической )
в общем лично моё мнение по теории и практике настройки - П - скорость выхода на уставку и окно статической погрешности, И - забываем про статику и уже настраиваем колебания кривой разгона , Д - ускоряем тех двух перцев , что перед ним.
и дополню - в большинстве процессов степень затухания 1/3 считается оптимальной - крайне редко , где требуется более точный выход.
Могу предложить - согласно данной модели. На картинке: пропорциональный коэффициент, дифференциальное время, интегральное время, а ниже - добавка, которой нет в ПИД-регуляторах) Не могу сказать, как нужно её правильно учесть.
temp2.jpg
Кроме параметров, которые уже расшифровывались тау - это "крутизна управления". Нужно ставить в 2-3 раза больше, чем задержка от воздействия до реакции.
изменение регулируемой величины ПД регулятором описываются (в простейшей модели типа той что я использую) диффурой второго порядка. Там возникает характеристическое уравнение второй степени. Где его дискриминант отрицательный, возникает перерегулирование (решение кроме затухающей экспоненты содержит синус и косинус), где положительный - недорегулирование (решение- постоянная умноженная на затухающую экспоненту), ноль - наибыстрейшее затухание (решение - полином 1 степени умноженный на затухающую экспоненту). При определенных условиях экспонента может перестать быть затухающейТеория позволяет сколь угодно крутой пропорциональный коэффициент при правильно выбранном дифференциальном. Поэтому гипотетически статическую погрешность можно сделать сколь угодно малой без интегрального регулирования.и только интеграл помогает нам в конечном счёте избавиться от статической погрешности ( хотя он и разносит колебания динамической )
Но на практике возможности ограничены запаздыванием измеренной датчиком реакции системы на управление. В модели этой задержки нет, при включении нагревателя сразу растет 1 производная температуры. Поэтому на практике нельзя сделать слишком низкое Xp и приходится добавлять интегральную подстройку.
Последний раз редактировалось anthrwpos; 24.10.2018 в 12:59.
- ά ν θ ρ ω π ο ς -
Мои универсальные макросы https://github.com/anthrwpos1/macros
Так изложи нам свою авторскую методику расчета коэффициентов ПИД регулятора.
Последний раз редактировалось Вольд; 23.10.2018 в 18:50.
С, C_h и Q как определить ?
Пока что приходит в голову только так:
Задать на глазок, а затем корректировать с помощью корреляционного анализа.
Теплопотери определяются следующим образом:
Pe(t)=Q*Err(t)+(Wh(t)*Q)/Ch-dT/dt*C;
Соответственно, если Pe(t) коррелирует с Err(t) (отстройка) - нужно корректировать Q
Если с dT/dt - нужно корректировать C
если с Wh(t) - Ch.
Хотя это еще вопрос действительно ли эти величины должны быть независимы?
Я кстати, делаю испытательный стенд на жабе, где можно будет на модели, приближенной к реальности погонять разные регуляторы и посмотреть, что из этого выходит. Как сделаю - опубликую тут.
PS Картина работы данного регулятора. Мне лично нравится)управление.JPG
Красным - температура, по левой шкале. По правой шкале - синее - вычисленные теплопотери, зеленое - мощность нагревателя.
PPS Сделал стенд на жабке. Кто владеет жабкой - можете поразвлекаться, а то и улучшить. Забабахал туда простенькую рисовалку графиков, модель комнаты близкую к реальности, с шумами датчика и простенький ПИД-регулятор и свой регулятор.
https://github.com/anthrwpos1/RegTest
Пид сделан специально обычным, дубовым, как его делают в промышленности, чтобы разработчики ПИД-алгоритмов наглядно увидели, как он регулирует)
Чуть позже сделаю "мой ПИД". Разработчикам ОВЕН рекомендую тоже побаловаться со стендом, а так-же посмотреть, не является ли случайно ваша реализация ПИД в ТРМках и прочих местах той самой дубовой, как в этой программе, потому что очень похоже=)
Последний раз редактировалось anthrwpos; 27.10.2018 в 20:27.
- ά ν θ ρ ω π ο ς -
Мои универсальные макросы https://github.com/anthrwpos1/macros
Мне кажется, или Вы недавно отучились в вузе?) ... Столько оптимизма
Судя по описанию, сам ваш регулятор гораздо проще ПИД, но содержит дополнительные вычисления для частного использования.
Вообще, можно попробовать глянуть в сторону FuzzyLogic управления.
Обычно, нагреватели управляются дискретно включен/выключен.
Если он с какого-то рода симисторным управлением, имитирующим управление мощностью (температурой нагрева), значит модель самого нагревателя тоже надо учитывать (дискретную). Может, конечно, я не прав.
Линейно работает П-регулятор.
ПИД-регулятор на то и имеет 3 коэффицента, чтобы "пропорционировать", "опережать (ускоряться)" и учитывать наработку "в прошлом". Если не устраивает ПИД-регулятор из коробки, реализацию дифференцирования можно написать самому с дискретизацией как вам удобно.
Имеет, если вы:
1. в состоянии составить полную мат. модель реальной системы (что по моему мнению очень сложно на практике).
2. учесть в модели, что она на самом деле дискретна, а методики синтеза в основном для непрерывных систем (применить теорему Котельникова-Шеннона, если получается,... или опечалиться)
3. синтезировать оптимальный регулятор, используя полученные знания за 5-6 лет вуза (потратив мнооого времени)
4. объект управления - шаттл с посадкой на вертикальную платформу, а не обогрев курятника
Синтезированный регулятор будет естественно лучше ПИД, и настраивать его не придется методом научного тыка, но на практике это как правило не реально, трудозатратно, немозгохватаемо (это я про себя если что), не поставить на поток, недостаточно времени, недостаточно сведений для составления мат. модели, т.к. используются датчики и исполнительные механизмы с начинкой "черный ящик".
Давно. Но вообще я физик, а вот с КИП/АСУ работаю не так давно.По сложности он такой-же как ПИД, но в нем другой алгоритм компенсации статической ошибки ПД-регулятора. Не интегральный.
Судя по описанию, сам ваш регулятор гораздо проще ПИД, но содержит дополнительные вычисления для частного использования.Обычно аналоговый выход с регуляторов подается на ШИМ, а он уже управляет нагревателем дискретно.Обычно, нагреватели управляются дискретно включен/выключен.Оператор называют линейным, если A(ax+by) = a*A(x) + b*A(y), где x,y - вектора, a,b - произвольные числа.Линейно работает П-регулятор.
Операторы интегрирования и дифференцирования линейны. (интересно, в технических вузах преподают всякие ФункАны и ЛинАлы? =) )Моя цель была сделать не регулятор какой либо одной реальной системы, а регулятор столь-же универсальный как ПИД, на основе модели, которая приближенно описывает большинство существующих реальных систем.Имеет, если вы:
1. в состоянии составить полную мат. модель реальной системы (что по моему мнению очень сложно на практике).
2. учесть в модели, что она на самом деле дискретна, а методики синтеза в основном для непрерывных систем (применить теорему Котельникова-Шеннона, если получается,... или опечалиться)
3. синтезировать оптимальный регулятор, используя полученные знания за 5-6 лет вуза (потратив мнооого времени)
4. объект управления - шаттл с посадкой на вертикальную платформу, а не обогрев курятника
Синтезированный регулятор будет естественно лучше ПИД, и настраивать его не придется методом научного тыка, но на практике это как правило не реально, трудозатратно, немозгохватаемо (это я про себя если что), не поставить на поток, недостаточно времени, недостаточно сведений для составления мат. модели, т.к. используются датчики и исполнительные механизмы с начинкой "черный ящик".
Вообще изначально моей целью было на основе некой простой модели вывести, чему физически должны соответствовать коэффициенты ПИД. Но в итоге я пришел к выводу, что физическое соответствие есть только у дифференциального времени ПИД, наполовину у пропорционального коэффициента, а интегральная компенсация вообще не имеет смысла и её нужно заменить другим алгоритмом.
В итоге на настоящий момент я окончательно пришел к модели ПД+ регулятора, в котором вместо интегрирования отстройки мы в качестве добавки используем нечто что я называю "вычисленными потерями".
Всего у меня так-же как и в ПИД, 3 параметра:
Основной параметр D равный отношению мощности управления к скорости роста величины.
Время инерции системы tU определяется как время отклика системы на управление (строго - время, нужное для того, чтобы скорость роста величины достигла 63% установившегося значения)
Время крутизны регулирования tX.
Тогда пропорциональный коэфициент ПД-регулятора Xp = tX / D
дифференциальное время ПД регулятора tD = tU
добавка, компенсирующая статическую ошибку <PE>_tX (среднее значение потерь за время tX)
где PE = <P>_tU - D * (dX/dt) (среднее значение управления минус основной параметр на производную величины)
Понять смысл данной поправки очень легко. По определению параметра D, произведение D * (dX/dt) есть скорость изменения полной энергии системы. Тогда как <P>_tU есть ни что иное как поступление энергии в систему от исполнительного устройства. Вычитаем из поступлений изменения - получаем потери энергии. Усредняем их за некое время tX, которое обеспечивает достаточное сглаживание и получаем ту самую статическую поправку.
В итоге ПД-регулятор определяет нехватку энергии, которую нужно компенсировать, чтобы "догреть" изолированную систему до уставки за время tX. А добавка определяет потери, которые нужно компенсировать.
- ά ν θ ρ ω π ο ς -
Мои универсальные макросы https://github.com/anthrwpos1/macros