Отвлекитесь, эмбеддеры! Отвлеченные темы - обсудить проблемы тепловой смерти вселенной, или просто пиво. Этот раздел - для отдыха. |
12.12.2017, 21:45
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.03.2010
Сообщений: 2,897
Сказал спасибо: 498
Сказали Спасибо 3,061 раз(а) в 1,425 сообщении(ях)
|
Re: Мои ответы на вопросы [b]AR_Favorit[/b]
Сообщение от ALEGYR
|
Ну конечно! Это ведь это не ты, а я поумничал и написал
|
Я писал о правильной настройке и вырождении в простых системах ПИДа в ПИ, а ты пишешь о существующем только в твоей голове "вырождении из ПИД в ПД и даже в П". Разницу не замечаешь? Или у тебя так - "слова вроде похожие, дай напишу, типа я понял, что они значат" Афазия, коли так, - это хреново, дедуль. Это значит, что Альцгймер в твоей черепушке Паркинсона победил и быстро укрепляет свою власть...
|
|
|
|
12.12.2017, 21:49
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.03.2010
Сообщений: 2,897
Сказал спасибо: 498
Сказали Спасибо 3,061 раз(а) в 1,425 сообщении(ях)
|
Re: Мои ответы на вопросы [b]AR_Favorit[/b]
|
|
|
|
12.12.2017, 22:32
|
|
Вид на жительство
Регистрация: 10.06.2005
Сообщений: 325
Сказал спасибо: 43
Сказали Спасибо 360 раз(а) в 194 сообщении(ях)
|
Re: Мои ответы на вопросы [b]AR_Favorit[/b]
Сообщение от AR_Favorit
|
Я писал о правильной настройке и вырождении в простых системах ПИДа в ПИ, а ты пишешь о существующем только в твоей голове "вырождении из ПИД в ПД и даже в П". Разницу не замечаешь?
|
Конечно замечаю!
Мы же тут вроде код ТВОЕГО правильного ПИДа обсуждаем, и о ТВОЕЙ правильной настройке говорим! А оно у тебя вдруг(!), с ТВОИХ же слов, вырождается из ПИДа в ПИ!!!
см свою цитату
Сообщение от AR_Favorit
|
В итоге правильно настроенный PID-алгоритм в данном случае вырождается в PI-алгоритм
|
|
|
|
|
12.12.2017, 22:51
|
|
Вид на жительство
Регистрация: 10.06.2005
Сообщений: 325
Сказал спасибо: 43
Сказали Спасибо 360 раз(а) в 194 сообщении(ях)
|
Re: Мои ответы на вопросы [b]AR_Favorit[/b]
Сообщение от AR_Favorit
|
165 итераций прибавляют в среднем 82 каждая. Без учета кефов за время нагрева интегральная составляющая накопит 165х82=13530.
|
Дурашка! У тебя же в твоем коде стоит условие
if (integral_err‹(EE_PID_TIME*2000)) integral_err += PID_curr_err;
и EE_PID_TIME = 1
см свою же цитату
Сообщение от AR_Favorit
|
Значит у меня будет EE_PID_TIME = 1
|
С чего же вдруг у тебя интегральная составляющая накопит 13530?
У тебя интегральная составляющая, секунд за 50 нагрева (!), накопит масксимально допустимое значение 2000, и с этого момента перестанет как либо влиять на управляющий сигнал ПИДа!!!
И что интересно, это чУдное превращение ПИДа в П произойдет даже раньше того как бачок с маслом нагреется до уставки в 75 градусов!!!
Вот беда-то, так беда!!!
Последний раз редактировалось ALEGYR; 12.12.2017 в 22:53.
|
|
|
|
12.12.2017, 23:46
|
|
Вид на жительство
Регистрация: 10.06.2005
Сообщений: 325
Сказал спасибо: 43
Сказали Спасибо 360 раз(а) в 194 сообщении(ях)
|
Re: Мои ответы на вопросы [b]AR_Favorit[/b]
Сообщение от AR_Favorit
|
Я предлагаю начать с Кп = 40, Ки = 44, Кд=0.
|
Спасибо!
Сообщение от AR_Favorit
|
При этом твою любимую строку
"if (integral_err‹(EE_PID_TIME*2000)) integral_err += PID_curr_err;", разумеется, придется скорректировать, ибо она предназначена для систем с на порядок меньшей интегральной составляющей.
|
я понимаю что с твоим костыльком придется повозиться!
Беда только в том, что мне твои костыльки не нужны, а вот твоему бачку с маслом, судя по ТВОЕМУ коду, они необходимы!
Я вот тут взял и быстренько написал кодик, чтобы оценить влияние твоего костылька
if (integral_err‹(EE_PID_TIME*2000)) integral_err += PID_curr_err;
Цитата:
|
int EE_FUEL_TARGET_TEMP = 75;// заданное значение уставки
int PID_curr_err = 0; // текущая ошибка рассогласования при нагреве
float temp = 20; // начальная температура нагрева бачка с маслом
float Speed_heating = 0.5; // скорость нагревания бачка с маслом
int integral_err = 0; // накопленная интегральная ошибка
int count = 0; // счетчик времени нагрева бачка с маслом
do{
PID_curr_err = EE_FUEL_TARGET_TEMP - temp;
integral_err += PID_curr_err;
temp = temp + Speed_heating;
count = count + 1;
Serial.print("temp = "); Serial.print(temp);
Serial.print(" integral_err = "); Serial.print(integral_err);
Serial.print(" count = "); Serial.println(count);
}
while (PID_curr_err›0);
|
Пропустил этот кодик через бедную ардуину, и узнал удивительную но вполне ожидаемую, вещь об этом костыльке!!!
Оказалось, что если твой бачок с маслом будет нагреваться со скоростью 0.5 градусов в секунду (что вполне реально для бачка), то этот костыль твоего кода уже на 46 секунде нагрева, то есть всего на 43 градусах, достигает своего предельного значения (см красный квадратик на приложенной картинке) и с этого момента ТВОЙ ПИД регулятор превращается во что угодно, но только не в ПИД регулятор!!!
Вот незадача, так незадача! Такой правильный и хорошо обдуманный код ПИД регулятора! А мужики не знают, что нагрев их бачка с маслом контролируется простеньким П регулятором!
|
|
|
|
13.12.2017, 02:13
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.03.2010
Сообщений: 2,897
Сказал спасибо: 498
Сказали Спасибо 3,061 раз(а) в 1,425 сообщении(ях)
|
Re: Мои ответы на вопросы [b]AR_Favorit[/b]
Сообщение от ALEGYR
|
Конечно замечаю!
Мы же тут вроде код ТВОЕГО правильного ПИДа обсуждаем, и о ТВОЕЙ правильной настройке говорим! А оно у тебя вдруг(!), с ТВОИХ же слов, вырождается из ПИДа в ПИ!!!
см свою цитату
|
Так если "замечаешь", то какого же черта ты перепутал ПИ алгоритм (который успешно управляет простыми и сильно инерционными системами) с ПД алгоритмом (который в твоем больном воображении получился в моем коде)? Ты дурак или как? Очевидно, дурак.
Сообщение от ALEGYR
|
Дурашка! У тебя же в твоем коде стоит условие
if (integral_err‹(EE_PID_TIME*2000)) integral_err += PID_curr_err;
и EE_PID_TIME = 1
см свою же цитату
С чего же вдруг у тебя интегральная составляющая накопит 13530?
У тебя интегральная составляющая, секунд за 50 нагрева (!), накопит масксимально допустимое значение 2000, и с этого момента перестанет как либо влиять на управляющий сигнал ПИДа!!!
И что интересно, это чУдное превращение ПИДа в П произойдет даже раньше того как бачок с маслом нагреется до уставки в 75 градусов!!!
Вот беда-то, так беда!!!
|
Придурок ты обоссанный, при чем тут мой бачок с маслом?!
Идиотина ты упоротая, ты просил уставки для того, чтоб управлять твоим феном с помощью моего алгоритма. Я тебе их дал. Каким больным местом ты их начал примерять к бачку с маслом? Это совершенно другая система. Эти кефы к ней не пригодны от слова "совсем".
Более того, ты, пень тупой, не увидел, что при адаптации моего кода ПИД алгоритма под твою скорострельную систему, в которой интегральная составляющая в точке уставки ввваливает на порядок больше мощности в нагреватель, я ясно написал - для твоего случая, скотина ты больная, 2000 в этой строке меняются на 20000.
Это моя личная проприетарная строка, и она требует адаптации под конкретную разновидность системы, которой управляет. Для моей системы, у которой нормальный вклад интегральной составляющей не превышает нескольких сотых от максимальной мощности, там должен быть кеф 2000. Для твоей, где вклад этой составляющей достигает 60% от максимальной мощности, ограничение совсем другое.
Как ты не увидел написанного тебе русским по белому, дятел?
Последний раз редактировалось AR_Favorit; 13.12.2017 в 02:56.
|
|
|
|
13.12.2017, 02:49
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.03.2010
Сообщений: 2,897
Сказал спасибо: 498
Сказали Спасибо 3,061 раз(а) в 1,425 сообщении(ях)
|
Re: Мои ответы на вопросы [b]AR_Favorit[/b]
Сообщение от ALEGYR
|
Спасибо!
|
Да подавись, мне не жалко.
Сообщение от ALEGYR
|
я понимаю что с твоим костыльком придется повозиться!
Беда только в том, что мне твои костыльки не нужны, а вот твоему бачку с маслом, судя по ТВОЕМУ коду, они необходимы!
|
Костыльки нужны твоему бачку с говном, который ты по недоразумению называешь своей головой. А к меня "костыльков" нет. У меня продуманная и просчитанная система сигнализации нештатной работы нагревателя. Оттого, что твоя тупость не позволяет это тебе понять, ничего не меняется.
Сообщение от ALEGYR
|
Я вот тут взял и быстренько написал кодик
|
Впервые на арене циркап! Клоун-додик пишет кодик!
Сообщение от ALEGYR
|
if (integral_err‹(EE_PID_TIME*2000)) integral_err += PID_curr_err;
...
Пропустил этот кодик через бедную ардуину
...
Оказалось, что если твой бачок с маслом будет нагреваться со скоростью 0.5 градусов в секунду (что вполне реально для бачка), то этот костыль твоего кода уже на 46 секунде нагрева, то есть всего на 43 градусах, достигает своего предельного значения (см красный квадратик на приложенной картинке) и с этого момента ТВОЙ ПИД регулятор превращается во что угодно, но только не в ПИД регулятор!!!
|
А теперь как на самом деле. Во-первых, бачок с маслом на полградуса в секунду греться не может. Весь цикл прогрева - аж до 10 минут, тебе об этом было сказано, но ты, тупорылый баран, разумеется, отбросил реальность, высосал из своего корюзлого пальца идиотское предположение и с визгами ринулся его воплощать.
Мало того, даже воплощая его, ты посчитал какую-то херь.
А вот как на самом деле. Стандартный период регулирования для системы, которая прогревает бачок с маслом за 10 минут - 4 секунды. Это не твой скорострельный фен, Саньбо! Это медленно прогревающийся очень теплоемкий бачок с маслом. Твоему фену нужно быстрое регулирование. Бачку оно нафик не нужно.
За время нагрева проходит соответственно 150 итераций регулирования. В каждой итерации ошибка может быть от нуля до 70 градусов, в среднем она составляет градусов 40-45. Возьмем для пущего блезиру 50. 50*150 = 7500 - вот примерно сколько может накопиться в интегральном значении ошибки в этом кейсе пр нормальной работе.
А EE_PID_TIME*2000 у нас 4*2000=8000 единиц. Не дорастает интегральная составляющая до этого значения. И не мешает оно ей работать, если ТЭНы в порядке, и масло во внешней емкости не слишком холодное. А если что-то не так, то мешает, как и задумано, накапливается больше заданного предела, лочится в таком положении, и в контроле за состоянием установки этот факт заданным образом обрабатывается.
А если вместо теплоемкого масла настроить горелку на более легкое топливо (горелка и даже и на солярке работать будет), то период снижается до минимального, но тут температура, до которой надо топливо подогревать, уже совсем небольшая, потому время нагрева небольшое, и опять же, накопленная интегральная ошибка не достигает и 1*2000.
Сообщение от ALEGYR
|
Вот незадача, так незадача! Такой правильный и хорошо обдуманный код ПИД регулятора! А мужики не знают, что нагрев их бачка с маслом контролируется простеньким П регулятором!
|
Вот тебе и незадача. У "мужиков"-то таки именно ПИД работает (они, несмотря на мои рекомендации, все же задействуют и диф. составляющую, им, по их словам, так привычно настраивать) - температура плавно доходит до заданных 70 и поддерживает эту температуру безо всяких колебаний, чего П-регулятор в этой системе делать не может принципиально. А вот визгливая баба по прозвищу саньбо, как всегда, обосралась.
Последний раз редактировалось AR_Favorit; 13.12.2017 в 02:55.
|
|
|
|
13.12.2017, 03:39
|
|
Вид на жительство
Регистрация: 10.06.2005
Сообщений: 325
Сказал спасибо: 43
Сказали Спасибо 360 раз(а) в 194 сообщении(ях)
|
Re: Мои ответы на вопросы [b]AR_Favorit[/b]
Сообщение от AR_Favorit
|
Так если "замечаешь", то какого же черта ты перепутал ПИ алгоритм (который успешно управляет простыми и сильно инерционными системами) с ПД алгоритмом (который в твоем больном воображении получился в моем коде)? Ты дурак или как? Очевидно, дурак.
|
Не очевидно!
Я писал о ПД алгоритме когда еще надеялся, что ты, как крутой кодер и спец по правильному нагреву бачков с маслом, не станешь пренебрегать влиянием дифференциальной составляющей, и не станешь принимать Kd равным нулю! Ну а уж коли ты все-таки похерил дифференциальную составляющую, то о ПД алгоритме можно забыть, и говорить только о простом П алгоритме!
Сообщение от AR_Favorit
|
Придурок ты обоссанный, при чем тут мой бачок с маслом?!
Идиотина ты упоротая, ты просил кефы для того, чтоб управлять твоим феном с помощью моего алгоритма. Я тебе их дал. Каким больным местом ты их начал примерять к бачку с маслом?
|
А зачем мне просить ТВОИ коэффициенты для СВОЕГО фена?! У меня есть СВОИ и они мне очень хорошо подходят!
Мне нужны ТВОИ коэффициенты, и нужны для анализа ТВОЕГО кода! Уж больно они у тебя загадочные, но правильные!
Так что если ты попутал мое со своим, и считаешь что указанные тобой коэффициенты к твоему коду для контроля нагрева бачка с маслом не подходят, я все-таки готов еще подождать, и узнать значения коэффициентов для ТВОЕГО кода! Ты же все-таки писал свой код на что-то опираясь, и даже циферьки 2000 и 1000 поставил в своем коде не спроста, а по умному разумению о том, как каждая из составляющих ПИДа влияет не процесс регулирования!!!
Я понимаю, что ты свой код писал под конкретный бачок с маслом и сегодня перед тобой его уже нет, но ты же можешь вспомнить о том с какой скоростью нагревался бачок с маслом, вот и исходи из этого! Тем более что ты хорошо можешь абстрагироваться!
Последний раз редактировалось ALEGYR; 13.12.2017 в 04:25.
|
|
|
|
13.12.2017, 04:01
|
|
Вид на жительство
Регистрация: 10.06.2005
Сообщений: 325
Сказал спасибо: 43
Сказали Спасибо 360 раз(а) в 194 сообщении(ях)
|
Re: Мои ответы на вопросы [b]AR_Favorit[/b]
Сообщение от AR_Favorit
|
А теперь как на самом деле. Во-первых, бачок с маслом на полградуса в секунду греться не может. Весь цикл прогрева - аж до 10 минут, тебе об этом было сказано, но ты, тупорылый баран, разумеется, отбросил реальность, высосал из своего корюзлого пальца идиотское предположение и с визгами ринулся его воплощать.
|
Я свои полградуса в секунду брал в некотором допущении и приближении! А если теперь весь цикл прогрева твоего бачка с маслом составляет аж до 10 минут, то это совсем беда будет! Ведь теперь скорость нагрева будет около 0.1 градус в секунду, и твой ПИД регулятор перестанет пидить не на 46 секунде, а гораздо раньше (точнее на 39 !!! И не на 43 градусах, а на 24!!!
Вот ведь какая закавыка получается! Думаем что греем хоть минуту по ПИД регулятору! А оказывается и минуты нет!!!
Последний раз редактировалось ALEGYR; 13.12.2017 в 04:03.
|
|
|
|
13.12.2017, 04:15
|
|
Вид на жительство
Регистрация: 10.06.2005
Сообщений: 325
Сказал спасибо: 43
Сказали Спасибо 360 раз(а) в 194 сообщении(ях)
|
Re: Мои ответы на вопросы [b]AR_Favorit[/b]
Сообщение от AR_Favorit
|
Мало того, даже воплощая его, ты посчитал какую-то херь.
|
Так эта херь написана на первой странице темы,
Цитата:
|
Код:
if (pid_counter‹(EE_PID_TIME*1000)) pid_counter++;
else
{
pid_counter = 0;
PID_curr_err = EE_FUEL_TARGET_TEMP - temp;//Начало
if (integral_err‹(EE_PID_TIME*2000)) integral_err += PID_curr_err;
control = (int32_t)EE_PID_P*PID_curr_err;
control += (integral_err*(int32_t)EE_PID_I)/1000;
control -= (PID_prev_err - PID_curr_err)*(int32_t)EE_PID_D;
PID_prev_err = PID_curr_err;//конец
}
if (control›heat_counter) HEAT_ON; else HEAT_OFF;
heat_counter++;
if (heat_counter›(EE_PID_TIME*1000)) heat_counter=0;
|
и эту, как ты сказал херь, писал не я а ТЫ!!!
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 20:45.
|
|