Регулятор ХХ
Регулятор ХХ
Итак, настало время обсудить реализацию нового регулятора ХХ более предметно!
Сейчас в прошивке есть PID-регулятор для воздуха (который, по словам @Russian, неидеален). Но нужен ещё аналогичный регулятор УОЗ. И нужно, чтобы они работали вместе.
В частности, для совсем небольших отклонений RPM регулятор не будет работать вообще (нужен параметр "dead range" RPM). Для умеренных отклонений RPM работает только регулятор УОЗ (нужны параметры максимального допустимого отклонения по УОЗ - отдельно в плюс и минус). И для больших - начинает работать нынешний регулятор Idle valve. Также, возможно, нужен параметр порога включения регулятора УОЗ по температуре (когда ХХ более-менее стабилизируется).
Наконец, нужна новая таблица target_RPM(temp) для желаемых оборотов холостого хода в зав-ти от температуры (хотя бы на 3-4 точки) вместо нынешнего параметра "Auto target(RPM)", т.к. далеко не все непрогретые двигатели могут держать низкие обороты.
Я не знаю, какие идеи на этот счёт у Андрея (его активность последние дни подозрительно низкая ), поэтому прежде чем приниматься за работу над PR, нужно сверить наши планы и написать TODO. Некоторые вещи, такие как добавление соответствующих новых параметров в настройки, желательно чтобы сделал сам Андрей. Остальное могу попробовать написать я.
P.S. Некоторые мои предложения были, к сожалению, проигнорированы и "повисли в воздухе", такие как необходимость добавления параметра нижнего порога для гистерезиса cranking_rpm или детекция сигнала с триггеров для предстартового впрыска "prime pulse". В таких условиях трудно проявлять инициативу. Поэтому я пока не детализировал задумки по реализации регуляторов, надеясь, что сперва завяжется хоть какое-то обсуждение...
Сейчас в прошивке есть PID-регулятор для воздуха (который, по словам @Russian, неидеален). Но нужен ещё аналогичный регулятор УОЗ. И нужно, чтобы они работали вместе.
В частности, для совсем небольших отклонений RPM регулятор не будет работать вообще (нужен параметр "dead range" RPM). Для умеренных отклонений RPM работает только регулятор УОЗ (нужны параметры максимального допустимого отклонения по УОЗ - отдельно в плюс и минус). И для больших - начинает работать нынешний регулятор Idle valve. Также, возможно, нужен параметр порога включения регулятора УОЗ по температуре (когда ХХ более-менее стабилизируется).
Наконец, нужна новая таблица target_RPM(temp) для желаемых оборотов холостого хода в зав-ти от температуры (хотя бы на 3-4 точки) вместо нынешнего параметра "Auto target(RPM)", т.к. далеко не все непрогретые двигатели могут держать низкие обороты.
Я не знаю, какие идеи на этот счёт у Андрея (его активность последние дни подозрительно низкая ), поэтому прежде чем приниматься за работу над PR, нужно сверить наши планы и написать TODO. Некоторые вещи, такие как добавление соответствующих новых параметров в настройки, желательно чтобы сделал сам Андрей. Остальное могу попробовать написать я.
P.S. Некоторые мои предложения были, к сожалению, проигнорированы и "повисли в воздухе", такие как необходимость добавления параметра нижнего порога для гистерезиса cranking_rpm или детекция сигнала с триггеров для предстартового впрыска "prime pulse". В таких условиях трудно проявлять инициативу. Поэтому я пока не детализировал задумки по реализации регуляторов, надеясь, что сперва завяжется хоть какое-то обсуждение...
- AndreyB
- Site Admin
- Posts: 14373
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: Регулятор ХХ
PID-регулятор для воздуха не до конца доделан - самое слабое место там логика выключения PID-регулятора, когда режим работы совсем не холостой.
Если у тебя есть понимание алгоритма, которых ты хочешь сделать - то как я могу помочь? Только что добавил настройку iacRPMErrorThreshold.
Во-первых хочу оправдаться принципом KISS
Аналогично для гистерезиса cranking_rpm - насколько мы уверены, что там нужен параметр порога? Достигнем ли мы 95% удобства без введения дополнительного параметра?
Во-вторых я да, последнее время ленюсь - это отдельный разговор.
PS: а еще добавил startOfCrankingPrimingPulse - или нужно больше параметров? Это лучше продолжить в другой теме, просто чтоб темы разделять.
Если у тебя есть понимание алгоритма, которых ты хочешь сделать - то как я могу помочь? Только что добавил настройку iacRPMErrorThreshold.
Во-первых хочу оправдаться принципом KISS
В контексте iacRPMErrorThreshold - насколько мы уверены, что "отдельно в плюс и минус" - может быть нам хватит одного отклонения вместо двух?Принцип KISS утверждает, что большинство систем работают лучше всего, если они остаются простыми, а не усложняются. Поэтому в области проектирования простота должна быть одной из ключевых целей, и следует избегать ненужной сложности.
Аналогично для гистерезиса cranking_rpm - насколько мы уверены, что там нужен параметр порога? Достигнем ли мы 95% удобства без введения дополнительного параметра?
Во-вторых я да, последнее время ленюсь - это отдельный разговор.
PS: а еще добавил startOfCrankingPrimingPulse - или нужно больше параметров? Это лучше продолжить в другой теме, просто чтоб темы разделять.
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Re: Регулятор ХХ
Итак, начнем. Во время запуска нам необходимо одно количество воздуха, значит idle valve должен стоять в определенном положении, при этом в зависимости от температуры. Во вторых, хх. Во время прогрева рдв тоже должен сдвигаться, что бы обечпечить повышенные обороты прогрева, опять же в зависимости от температуры ож. В третьих, рдв может сам регулировать хх, но с погрешностью +-100об/мин, что много для гражданского автомобиля. Поэтому так же нужен регулятор УОЗ, который бы поддерживал обороты в зоне +-25 оборотов. Вся эта багадельня должна работать сразу после запуска и регулятор и поддержка оборотов прогрева. Иначе при трогрании с места обороты просядут и авто заглохгет
Re: Регулятор ХХ
Про регулятор УОЗ, что и почему у меня сейчас выглядит именно так, почему +- итд.russian wrote:KISS
Начнем по порядку.
Самая верхняя строчка Regulator's Factors
Отвечает за скорость изменения УОЗ, необходимость в двух коэфициентах следующая. Рассказываю о своем автомобиле. Представим что у нас есть некие пониженные обороты холостого хода, регулятор пытается их поднять, и это нужно сделать быстро, что бы пользователь практически не заметил падения оборотов, для этого используется большой коэфициент, позволяющий прыжком выровнять обороты. Если же у нас пользователь скажем переключился на нейтралку с повышенных оборотов, обороты должны падать плавно, что бы не случилось перерегулирования, которое вызовет дисбаланс. Представим, обороты резко упали и регулятор имеющий инертность не успел их подхватить, тогда он переходит в режим поднятия оборотов, и тоже резко их поднимает, промахиваясь мимо положения равновесия, и начинаются автоколебания. У себя проходил такой случай, поэтому коэфициент на понижение стоит несколько меньше.
Вторая строчка Максимальный угол изменения УОЗ, в принципе достаточно было задать одним числом, но я просто ради удобства задал разные числа, опять же чисто из практических изысканий.
Остальные строчки возможно понятны, если нет, прошу конкретно спрашивать что и как.
P.S по поводу KISS, обратите внимание на количество настроек ХХ в Январь 5.1 Таким образом регулятор нужен совместный.
Логика простая, РВД регулирует обороты в пределах +-70-150, УОЗ регулирует обороты в пределах +-20-70, получаем полноценный ПИД регулятор. Логика выключения простая, когда мы выходим за холостой ход, нажатием дросселя, мы приоткрываем РВД для поступления большего количества воздуха в двигатель, ну или наоборот, в зависимости от потребностей. Открытие\закрытие после хх происходит на жестко заданную контстанту или по таблице, так же можно сделать открытие РВД вместе с дросселем в режимах максимальной мощности.
- AndreyB
- Site Admin
- Posts: 14373
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: Регулятор ХХ
Предлагаю начать с самого простого - с ХХ прогретого автомобиля. Есть возражения? Режим прогрева безусловно важен, но начать всё-таки можно для простоты с более важного - режима прогретого автомобиля.
Вторая мысль - нужно как-то соблюсти баланс между KISS с одной стороны, и Январь 5.1 - с другой стороны. Предлагаю постепенно улучшать реализацию ХХ и предлагаю фокусировать усилия на самых выгодных в каждый момент времени улучшениях.
Будет полезно всё-таки для начала большему количеству участников попробовать текущую PID реализацию, чтоб рассуждать о вкусе устриц владея материалом?
Предлагаю для ознакомления логи https://svn.code.sf.net/p/rusefi/code/misc/logs/2003_mazda_miata/20170522_pid_idle.7z и https://svn.code.sf.net/p/rusefi/code/misc/logs/2003_mazda_miata/20170604_idle_pid.7z - в первом файле видимо всё хуже и без выключения, во втором файле вероятно есть выключение ХХ логики.
Вторая мысль - нужно как-то соблюсти баланс между KISS с одной стороны, и Январь 5.1 - с другой стороны. Предлагаю постепенно улучшать реализацию ХХ и предлагаю фокусировать усилия на самых выгодных в каждый момент времени улучшениях.
Будет полезно всё-таки для начала большему количеству участников попробовать текущую PID реализацию, чтоб рассуждать о вкусе устриц владея материалом?
Предлагаю для ознакомления логи https://svn.code.sf.net/p/rusefi/code/misc/logs/2003_mazda_miata/20170522_pid_idle.7z и https://svn.code.sf.net/p/rusefi/code/misc/logs/2003_mazda_miata/20170604_idle_pid.7z - в первом файле видимо всё хуже и без выключения, во втором файле вероятно есть выключение ХХ логики.
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Re: Регулятор ХХ
Это звучит примерно как "а давайте будем сидеть, ждать и не делать ничего нового, пока нам хорошенько не протестируют то что уже есть"russian wrote:Будет полезно всё-таки для начала большему количеству участников попробовать текущую PID реализацию, чтоб рассуждать о вкусе устриц владея материалом?
А если серьёзно, то я не вижу тут большую проблему. Если будет реализован PID для УОЗ и предлагаемые более глубокие настройки, то никто не помешает "большому количеству участников" их не использовать в случае ненадобности. Да и по умолчанию они могут быть отключены - пусть и дальше пробуют только текущий PID-РХХ, не проблема. Так что обсуждаемые вещи никак не сломают текущую реализацию. Мы уже так делали, и никто пока не пострадал. В конце концов, можно весь новый код и новые настройки спрятать под выключенную по дефолту опцию "Advanced Idle control" (или вовсе спрятанную), которая никому не будет мешать...
Улучшать, конечно, можно постепенно и итерационно (особенно учитывая скорость процессинга PR ). Только вначале неплохо бы составить детальный план работ и понять, куда мы движемся. Ведь только видя общую картину целиком, можно будет понять, какие вещи можно реализовать сразу, почти бесплатно, а какие лучше выделить отдельно, на потом. Да и комплексные оптимизации workflow никто не отменял - когда все хотелки подробно расписаны, то легче формализовать имплементацию.russian wrote:Предлагаю постепенно улучшать реализацию ХХ и предлагаю фокусировать усилия на самых выгодных в каждый момент времени улучшениях.
Кроме того, "постепенное улучшение" может касаться функционала, но не обязательно настроек. К примеру, можно вначале сделать единый параметр на "+" и "-" УОЗ, а потом переделать его на два отдельных параметра. Но что это даст? Трудозатраты на добавление параметра минимальны, насколько я понимаю. Мы ведь изначально видим, к чему придёт реализация, и некоторые моменты можем предусмотреть изначально (на то это и проектирование).
Что касается "фокусирования усилий", то лично мне гораздо проще "влезть" в это дело один раз, загрузить в мозг, написать всё сразу и комплексно оттестировать. А не возвращаться каждый раз с мелкими допиливаниями, мучительно вспоминая, что уже работает, а что не очень. Это связано с фрагментарной спецификой моей вовлечённости в проект на любительском уровне, когда нет возможности планировать выделяемые квоты времени и нет возможности держать всё загруженным в "оперативку" головы.
Можно написать побольше сразу (пока есть желание) и хранить соответствующий код внутри проекта, а потом внедрять его постепенно, по капельке, открывая юзерам всё новые и новые фичи.
Вообще, я не очень понимаю, какого рода ещё мотивирующие аргументы нужны...
- Известны ограничения/недостатки текущей реализации? Да.
- Известны пути решения в других прошивках? Да.
- Эти пути решения опробованы на реальных машинах? Да.
- Есть свои мысли по реализации? Да.
- Есть желающие приступить к реализации? Да!
- Обсудим детали?..
- AndreyB
- Site Admin
- Posts: 14373
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: Регулятор ХХ
Я переживаю, что тут кажется есть ошибки в вопросах. Я переживаю, что есть недооценка трудозатрат и реальной сложности настройки. Я безусловно могу быть не правandreika wrote:- Известны ограничения/недостатки текущей реализации? Да.
- Известны пути решения в других прошивках? Да.
- Эти пути решения опробованы на реальных машинах? Да.
- Есть свои мысли по реализации? Да.
Ход моей мысли такой:
Мы хотим усложнить режимом прогрева. А что, у нас уже работает на тёплом двигателе? Нет.
Мы ввели параметр iacRPMErrorThreshold и хотим добавить timing PID idle regulator. А что, у нас уже работает хорощо с точностью до 150 оборотов? Нет.
Я буду рад любому PR. Ошибочно сравнивать скорость обработки PR пока я в отпуске и когда я не в отпуске. Но я всё же предлагаю увидеть работающий PID idle air valve с точностью в 150 оборотов. Я пока не видел идей по улучшению переходов между режимами управления ХХ и не управления ХХ, а проблемы сейчас именно в переходе между режимами, мне кажется.
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Re: Регулятор ХХ
Я бы мог оттестировать все что угодно, но проблема в том что машина на каждый день, и как оно будет работать не известно. И вот если оно не заработает, это будет очень печальноrussian wrote:Я переживаю, что тут кажется есть ошибки в вопросах. Я переживаю, что есть недооценка трудозатрат и реальной сложности настройки. Я безусловно могу быть не правandreika wrote:- Известны ограничения/недостатки текущей реализации? Да.
- Известны пути решения в других прошивках? Да.
- Эти пути решения опробованы на реальных машинах? Да.
- Есть свои мысли по реализации? Да.
Ход моей мысли такой:
Мы хотим усложнить режимом прогрева. А что, у нас уже работает на тёплом двигателе? Нет.
Мы ввели параметр iacRPMErrorThreshold и хотим добавить timing PID idle regulator. А что, у нас уже работает хорощо с точностью до 150 оборотов? Нет.
Я буду рад любому PR. Ошибочно сравнивать скорость обработки PR пока я в отпуске и когда я не в отпуске. Но я всё же предлагаю увидеть работающий PID idle air valve с точностью в 150 оборотов. Я пока не видел идей по улучшению переходов между режимами управления ХХ и не управления ХХ, а проблемы сейчас именно в переходе между режимами, мне кажется.
- AndreyB
- Site Admin
- Posts: 14373
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: Регулятор ХХ
А ты топик про свою машину заводи и мы тебя спросим, почему нельзя менять блоки туда-сюда?darxfame wrote: Я бы мог оттестировать все что угодно, но проблема в том что машина на каждый день, и как оно будет работать не известно. И вот если оно не заработает, это будет очень печально
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
- AndreyB
- Site Admin
- Posts: 14373
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: Регулятор ХХ
Что-то я совсем не могу найти видео от 4ого июня - я тогда на красной машине (автоматическая коробка) дрыгался три метра вперёд-нейтраль-три метра назад. По логам видно, что с одной стороны оно как-то работало и не глохло, но с другой стороны - это всё очень, ОЧЕНЬ далеко от идеала. Это я к тому, что даже грубой реализации ХХ через только клапан воздуха, даже на прогретой машине сейчас пока нет. Возможно, что дело просто в неумении коэффициенты настроить - но даже если и это так, то это всё равно большая проблема.russian wrote:https://svn.code.sf.net/p/rusefi/code/misc/logs/2003_mazda_miata/20170604_idle_pid.7z - вероятно есть выключение ХХ логики.
- Attachments
-
- screenshot.png (158.01 KiB) Viewed 61903 times
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Re: Регулятор ХХ
Потому как под новый блок надо переделать проводку и вынуть из старого блока дад, на ходу я дад не перепаяю. Топик заводить рано. Как буду что то делать,так заведуrussian wrote:А ты топик про свою машину заводи и мы тебя спросим, почему нельзя менять блоки туда-сюда?darxfame wrote: Я бы мог оттестировать все что угодно, но проблема в том что машина на каждый день, и как оно будет работать не известно. И вот если оно не заработает, это будет очень печально
Re: Регулятор ХХ
Мы с darxfame обязательно потестируем текущую реализацию PID-РХХ, и работы по доработке наших машин идут.
А пока, чтобы не терять время, есть предложение попробовать протестировать на "красной машине" вот какой экспериментальный вариант: https://github.com/rusefi/rusefi/pull/462
В нём сидят три задумки:
1) При открывании дросселя, РХХ будет переходить из автомата в мануальную позицию, которая детерминирована и [вероятно] может уменьшить флуктуации на переходных режимах.
2) Есть также возможность задания дополнительного приоткрытия РХХ (по умолчанию additionalAir = 0), чтобы смягчить скачок давления при отпускании педали газа. Надо поиграться с ним, и если так будет лучше, можно будет потом вывести его в настраиваемый параметр (а также эта добавка позволит давать ещё больше воздуха на "педали в пол", как писал darxfame про реализацию у "взрослых" прошивок - но это уже задел на будущее, конечно).
3) Сделана линейная интерполяция для переходного режима совсем малых дросселей; а также теперь можно попробовать поднять порог tps_threshold больше 2% без боязни "обострения" переходных процессов.
P.S. Где бы взять более robust-версию функции interpolate(), которая не сломается при x1 == x2 и со встроенным клампом (контролем out of range)...
А пока, чтобы не терять время, есть предложение попробовать протестировать на "красной машине" вот какой экспериментальный вариант: https://github.com/rusefi/rusefi/pull/462
В нём сидят три задумки:
1) При открывании дросселя, РХХ будет переходить из автомата в мануальную позицию, которая детерминирована и [вероятно] может уменьшить флуктуации на переходных режимах.
2) Есть также возможность задания дополнительного приоткрытия РХХ (по умолчанию additionalAir = 0), чтобы смягчить скачок давления при отпускании педали газа. Надо поиграться с ним, и если так будет лучше, можно будет потом вывести его в настраиваемый параметр (а также эта добавка позволит давать ещё больше воздуха на "педали в пол", как писал darxfame про реализацию у "взрослых" прошивок - но это уже задел на будущее, конечно).
3) Сделана линейная интерполяция для переходного режима совсем малых дросселей; а также теперь можно попробовать поднять порог tps_threshold больше 2% без боязни "обострения" переходных процессов.
P.S. Где бы взять более robust-версию функции interpolate(), которая не сломается при x1 == x2 и со встроенным клампом (контролем out of range)...
Re: Регулятор ХХ
а что умножение на 0 стало вдруг давать в результате, что то отличное от 0? в чем неробастность?andreika wrote: P.S. Где бы взять более robust-версию функции interpolate(), которая не сломается при x1 == x2 и со встроенным клампом (контролем out of range)...
Re: Регулятор ХХ
Там как раз при x1==x2 деление на ноль:Maxi wrote:а что умножение на 0 стало вдруг давать в результате, что то отличное от 0? в чем неробастность?andreika wrote: P.S. Где бы взять более robust-версию функции interpolate(), которая не сломается при x1 == x2 и со встроенным клампом (контролем out of range)...
Code: Select all
#define INTERPOLATION_A(x1, y1, x2, y2) ((y1 - y2) / (x1 - x2))
Code: Select all
if (x1 == x2) {
/* we could end up here for example while resetting bins while changing engine type */
warning(CUSTOM_OBD_12, "interpolate%s: Same x1 and x2 in interpolate: %f/%f", msg, x1, x2);
return NAN;
}
Code: Select all
if (x <= x1) return y1;
if (x >= x2) return y2;
Re: Регулятор ХХ
а еще если рхх шаговик, то рулить им правильнее примерно так:
иначе на больших пробежках - либо будет медленно (насколько это для нас критично), либо мотор будет срываться и пропускать шаги.
понятно, что такая картинка - на обеих обмотках. иначе на больших пробежках - либо будет медленно (насколько это для нас критично), либо мотор будет срываться и пропускать шаги.
- AndreyB
- Site Admin
- Posts: 14373
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: Регулятор ХХ
Я надеюсь в выходные попробовать этот вариант - на пару дней в мини-отпуск опять я, радуюсь летуandreika wrote:А пока, чтобы не терять время, есть предложение попробовать протестировать на "красной машине" вот какой экспериментальный вариант...
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
- AndreyB
- Site Admin
- Posts: 14373
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: Регулятор ХХ
Я даже не знаю, что мы сейчас обсуждаем - interpolate как-то внезапно вылез Пока встроенное ограничение диапазона кажется не было нужно, вот его и нет. Пока x1==x2 не нужно было, вот его и нет Будет нужно - слава богу мы тут программисты, напишем
Аппаратные приколы шаговика лучше выделить в тему "Аппаратные приколы шаговика"
https://github.com/rusefi/rusefi/pull/462/files это эвристика для TPS между нулём и idlePidDeactivationTpsThreshold? Идея интересная, но у нас сейчас страдает случай TPS == 0, т.е. до этой эвристики нам ещё тоже рано
Вот свежие лог, картинка и видео. Спаял новую проводку Завтра буду пробовать лучше настроить ПИД.
https://svn.code.sf.net/p/rusefi/code/misc/logs/2003_mazda_miata/20170722_idle_pid_p_0_7.7z
[video]https://www.youtube.com/watch?v=c8enThbIdtI[/video]
Аппаратные приколы шаговика лучше выделить в тему "Аппаратные приколы шаговика"
https://github.com/rusefi/rusefi/pull/462/files это эвристика для TPS между нулём и idlePidDeactivationTpsThreshold? Идея интересная, но у нас сейчас страдает случай TPS == 0, т.е. до этой эвристики нам ещё тоже рано
Вот свежие лог, картинка и видео. Спаял новую проводку Завтра буду пробовать лучше настроить ПИД.
https://svn.code.sf.net/p/rusefi/code/misc/logs/2003_mazda_miata/20170722_idle_pid_p_0_7.7z
[video]https://www.youtube.com/watch?v=c8enThbIdtI[/video]
- Attachments
-
- screenshot.png (105.41 KiB) Viewed 61774 times
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Re: Регулятор ХХ
Разве внезапно? А я помню, как ты говорил о другом, цитирую:russian wrote:interpolate как-то внезапно вылез Идея интересная, но у нас сейчас страдает случай TPS == 0, т.е. до этой эвристики нам ещё тоже рано
Поэтому я и выложил PR для решения этих проблем.russian wrote:Я пока не видел идей по улучшению переходов между режимами управления ХХ и не управления ХХ, а проблемы сейчас именно в переходе между режимами, мне кажется.
Судя по видео и логам, ПИД действительно не настроен. Похоже на перерегулирование по P из-за большой инерции системы.russian wrote:Вот свежие лог, картинка и видео. Спаял новую проводку Завтра буду пробовать лучше настроить ПИД.
Я бы попробовал настроить ПИД с начала. Вот как я это вижу.
1) Настраивать пока только на единичном мгновенном одинаковом воздействии (включени/выключении фар). Все коэффициенты убрать в ноль;
2) Вначале попрошу снять и выложить переходные характеристики системы, как её реакцию на единичный скачок:
a) [без включения регулятора!] график падения/увеличения оборотов по времени при включении/выключения фар;
b) [без включения регулятора!] график падения/увеличения оборотов по времени при мгновенном однократном изменении положения РХХ (некая фиксированная дельта);
c) а также график падения оборотов (a), но уже с П-регулятором: с заведомо небольшим P, без малейших осцилляций, с простым асимптотическим приближением к таргету за конечное время (<10 sec);
3) Использовать известные табличные эмпирические методики:
a) простейший метод Зигеля-Никольса (Ziegler-Nichols): увеличиваем P, пока осцилляции не станут устойчивыми с неким периодом, и вычисляем по формулам коэффициенты. Если не будет получаться, значит система слишком инерционна и см. п.(б). А если получится, то подумаем над алгоритмизацией автонастройки.
b) метод Коэна-Куна (Cohen-Coon), без перерегулирования, тоже несложный;
c) метод Чина-Хронса-Ресвика (Chien-Hrones-Reswick) и др.;
d) метод andreika, на глазок
- Идея в том, что вначале коэффициент P нужно выбрать таким, чтобы обороты устанавливались в таргет за минимальное время (при осцилляции меньше заданного порогового значения). Это типичная задача оптимизации, и можно будет потом подумать, как решать её численными методами (метод Фибоначчи? Нужно подобрать по сходимости)...
- Затем добавлять I (P не трогаем), чтобы ещё ускорить выход в таргет - осцилляции появятся (это нормально), но они должны быть затухающими строго по асимптоте таргета.
- И затем уже с помощью D пытаться уменьшить эти осцилляции. Если не получается - немного уменьшаем P и по новой...
Все графики/логи процесса настройки с описанием параметров/методик попрошу опубликовать здесь, для анализа.
- AndreyB
- Site Admin
- Posts: 14373
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: Регулятор ХХ
о! очень интересные слова, пошёл читать умные слова!
да, ты прав - я сам говорил про переход. спасибо за терпение про внезапность - это было про внезапность interpolate
да, ты прав - я сам говорил про переход. спасибо за терпение про внезапность - это было про внезапность interpolate
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Re: Регулятор ХХ
Проверил сегодня настройку ПИ регулятора методом andreika, выставил коэфициенты П и И в 0, начал регулировку, тестировал на нажатие газа и сброс, перво напрерво настраивал П компоненту, пока обороты стали более или менее возвращаться к указанным без особо сильной раскачки значение стало 0,078, потом подобрал пороги входа и выхода из режима регулирования 2ед, максимальные положения регулятора выставил 12% и 50% минимальное и максимальное соответственно, потом подобрал число добавки после выхода из режима регулирования для плавного опускания оборотов 13% т.е при нажатии на газ, если на хх 10-12% открытия, на ходу 23-25%, затем подобрал И компоненту 0,065 и добавка к оборотам на ходу(если датчик скорости заметил скорость) 50об\мин, так же выставил обороты ограничения интегратора 100об\мин (ограничение максимальной ошибки). Помогает исключать перерегулирование при входе в режим РХХ.russian wrote:о! очень интересные слова, пошёл читать умные слова!
да, ты прав - я сам говорил про переход. спасибо за терпение про внезапность - это было про внезапность interpolate
На этом получилась довольно стабильная картинка. Плюс приятный подхват при нажатии на газ, открывается дроссель и рхх и обороты быстрее поднимаются, при этом при сбросе газа плавно опускаются.
- AndreyB
- Site Admin
- Posts: 14373
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: Регулятор ХХ
Это на SECU? А видео обучающее ты записал? А логи?
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Re: Регулятор ХХ
Видео не писал, логи есть) тебе скриншоты работы?russian wrote:Это на SECU? А видео обучающее ты записал? А логи?
- AndreyB
- Site Admin
- Posts: 14373
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: Регулятор ХХ
Мне и логи и картинки? А можешь записать обучающее видео с комментариями?
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
- AndreyB
- Site Admin
- Posts: 14373
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: Регулятор ХХ
А еще самая первая проблема вероятно мои текущие 100Гц. У тебя какая частота?
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Re: Регулятор ХХ
Видео врятли получится) графики работы внизу P.S На графике красное обороты, черное УОЗ, зеленое внизу ДАД, масштаб разный для разных величин.russian wrote:Мне и логи и картинки? А можешь записать обучающее видео с комментариями?
Слева график падения оборотов без добавки после выхода, а справа с добавкой, у оборотов появляется некая ступенька, и обороты более не падают резко, что позволяет уменьшить влияние регулятора, не делать резких изменений положения и поддерживать обороты точнее без перерегулирования
Last edited by darxfame on Sun Jul 23, 2017 3:46 pm, edited 1 time in total.
Re: Регулятор ХХ
у меня шаговый РХХ, так что по частоте не смогу подсказать, поидее для вашего рх должна быть документация где должно быть указано что и какrussian wrote:А еще самая первая проблема вероятно мои текущие 100Гц. У тебя какая частота?
- AndreyB
- Site Admin
- Posts: 14373
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: Регулятор ХХ
почему? камера в телефоне есть?darxfame wrote: Видео врятли получится)
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Re: Регулятор ХХ
Есть) Вопрос что именно снимать? как я коэфициенты подбираю? Ну я попробую, если времечко позволитrussian wrote:почему? камера в телефоне есть?darxfame wrote: Видео врятли получится)
- AndreyB
- Site Admin
- Posts: 14373
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: Регулятор ХХ
Ну да, именно это - просто вот сесть и с самого начала всё заснять, с чего начинаем и как настраиваем, с комментариямиdarxfame wrote:Есть) Вопрос что именно снимать? как я коэфициенты подбираю?
Very limited telepathic abilities - please post logs & tunes where appropriate - http://rusefi.com/s/questions
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Always looking for C/C++/Java/PHP developers! Please help us see https://rusefi.com/s/howtocontribute
Re: Регулятор ХХ
Сделаем)) Но ждем и Вашу попытку настроитьrussian wrote:Ну да, именно это - просто вот сесть и с самого начала всё заснять, с чего начинаем и как настраиваем, с комментариямиdarxfame wrote:Есть) Вопрос что именно снимать? как я коэфициенты подбираю?