обогащение смеси при нажатии газа
обогащение смеси при нажатии газа
у нас нет алгоритма обогощения смеси при нажатии на газ
алгоритм написать не проблема .
а вот как мы хотим это параметризовать ?
я думаю что либо от скорости набора оборотов либо от скорости нажатия газа
алгоритм написать не проблема .
а вот как мы хотим это параметризовать ?
я думаю что либо от скорости набора оборотов либо от скорости нажатия газа
Re: обогащение смеси при нажатии газа
ты про электронный газ или про то, чтобы дать мозгам понять, что ты газ нажал до конца и хочешь резко ускориться?
Re: обогащение смеси при нажатии газа
это чтото типа ускорительного насоса на карбюраторе
Re: обогащение смеси при нажатии газа
http://rusefi.com/forum/viewtopic.php?p=324#p324 вот в этом посте я выложил несколько ссылок на тему топливной плёнки. суть заключается в предотвращении обеднения/обогащения смеси на переходных режимах.
Re: обогащение смеси при нажатии газа
обьясни плз в двух словах?
Re: обогащение смеси при нажатии газа
ну то есть вроде проблема какая-то есть, у меня даже в карбовом впуске предусмотрены дыры для пропуска ож, чтобы подогревать впуск (хотя я думал смесь лучше нсоборот холодная - больше влезет). но что это именно в переходные периоды (кстати какие такие именно?), и как это связано с педалью газа?
- AndreyB
- Site Admin
- Posts: 14328
- 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
Re: обогащение смеси при нажатии газа
Да, к стати машинка без ускорительного насоса подтупливает, но при 4-х форсунках около клапанов это не сильно заметно, а вот на моноижекторе даже тронутся нормально нельзя)).
Ускорительный насос делается на базе ДПДЗ или ДАД, или оба сразу. Я себе делал под датчику дросселя, измерял раз в 0,1 секунды положение педали и смотрел на сколько сместилась. Чем больше сместилась за это время тем больше добавлял бензина, но чем больше была открыта педаль до резкого нажатия тем меньше аддитивный коэффициент.
Ускорительный насос делается на базе ДПДЗ или ДАД, или оба сразу. Я себе делал под датчику дросселя, измерял раз в 0,1 секунды положение педали и смотрел на сколько сместилась. Чем больше сместилась за это время тем больше добавлял бензина, но чем больше была открыта педаль до резкого нажатия тем меньше аддитивный коэффициент.
Re: обогащение смеси при нажатии газа
Всем привет.
Про это я уже писал гдето тут, надо интегрировать дельу наполнения, если по простому то берем между текущим наполнением и предыдущим (дельту обозначим Dcurr), потом усредняем ее с предыдущей дельтой (Dold) с зависимостью например в одну четверть (3*Dcurr+Dold)/4, таким образом у нас есть поправка которая интегрирует в себе всю предыдущую динамику изменения наполнения со степенью влияния обратно пропорциональной устареванию значений. В итоге имея интегрированную дельту мы можем втупую юзать ее как аддитивную поправку в расчете массы топлива, это даст и обогащение по дросселю, и обогащение по скачку давления либо скачку расхода воздуха (в зависимости от используемых алгоритмов и датчиков), так же т.к. дельта может быть и отрицательной (резко газ сбросили) алгоритм будет обеднять смесь дабы небыло переобогащения в этот момент.
Рекомендую почитать статью MaxiRPD, там это достаточо понятно описанно и есть подобная реализация (правда без интегрирования а просто с хранением значений четырех предыдущих циклов).
Про это я уже писал гдето тут, надо интегрировать дельу наполнения, если по простому то берем между текущим наполнением и предыдущим (дельту обозначим Dcurr), потом усредняем ее с предыдущей дельтой (Dold) с зависимостью например в одну четверть (3*Dcurr+Dold)/4, таким образом у нас есть поправка которая интегрирует в себе всю предыдущую динамику изменения наполнения со степенью влияния обратно пропорциональной устареванию значений. В итоге имея интегрированную дельту мы можем втупую юзать ее как аддитивную поправку в расчете массы топлива, это даст и обогащение по дросселю, и обогащение по скачку давления либо скачку расхода воздуха (в зависимости от используемых алгоритмов и датчиков), так же т.к. дельта может быть и отрицательной (резко газ сбросили) алгоритм будет обеднять смесь дабы небыло переобогащения в этот момент.
Рекомендую почитать статью MaxiRPD, там это достаточо понятно описанно и есть подобная реализация (правда без интегрирования а просто с хранением значений четырех предыдущих циклов).
читать всем: http://rusefi.com/forum/viewtopic.php?t=213#p336
Re: обогащение смеси при нажатии газа
можно измерять каждый цикл вычисления требуемого количества топлива?
- AndreyB
- Site Admin
- Posts: 14328
- Joined: Wed Aug 28, 2013 1:28 am
- Location: Jersey City
- Github Username: rusefillc
- Slack: Andrey B
Re: обогащение смеси при нажатии газа
А можно для особо одарённых ссылку на статью MaxiRPD?
Вот Дима предлагает код
в моём понимании это как раз имплементация озвученного @
Мнения? Замечания?
Вот Дима предлагает код
Code: Select all
float DiffEnrichment(float engineLoad) {
for (int i = 0 ; i == 4 ; i++) {
engineLoadD[i] = engineLoadD[i+1] ;
}
engineLoadD[0] = engineLoad ;
float Dcurr = engineLoadD[1] - engineLoadD[0];
float Dold = engineLoadD[3] - engineLoadD[2];
float diffEnrichment = ((3*Dcurr+Dold)/4)*(engineConfiguration->diffLoadEnrichmentCoef);
return diffEnrichment;
}
Мнения? Замечания?
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: обогащение смеси при нажатии газа
Ты про эту статью http://rotorman.dtt-motorsport.ru/j5-sport/dad_model2.htm
Читать Топливоподача в нестационарных режимах.
Читать Топливоподача в нестационарных режимах.
Re: обогащение смеси при нажатии газа
Code: Select all
for (int i = 0 ; i == 4 ; i++) {
engineLoadD[i] = engineLoadD[i+1] ;
}
engineLoadD[0] = engineLoad ;
float k3 = engineLoadD[0] - engineLoadD[1];
float k2 = engineLoadD[1] - engineLoadD[2];
float k1 = engineLoadD[2] - engineLoadD[3];
future_engineLoad = engineLoadD[0] + ( k3 + ( k2 - k1 ) );
Re: обогащение смеси при нажатии газа
еще у меня есть такой вариант
тут коэфицент i хочу сделать настраиваемым
я пока пытаюсь перевести это в класс c++ , вроде перевел , но как вызывать метод неразобрался
Code: Select all
float DiffEnrichment(float engineLoad) {
float DiffEnrichment = 0;
for (int i = 0 ; i == 9 ; i++) {
engineLoadD[i] = engineLoadD[i+1];
}
engineLoadD[0] = engineLoad ;
for (int i = 0 ; i == 4 ; i++) {
Darea[i] = engineLoadD[2*i+1] - engineLoadD[2*i] ;
DiffEnrichment = DiffEnrichment + Darea[i]/((i+1)^2);
}
return DiffEnrichment*(engineConfiguration->diffLoadEnrichmentCoef);
}
я пока пытаюсь перевести это в класс c++ , вроде перевел , но как вызывать метод неразобрался
Re: обогащение смеси при нажатии газа
В основе алгоритма лежит тот факт, что часть топлива при каждом впрыскивании выпадает в топливную плёнку (по сути оседает на элементах впуска) и получается так, что в камеру сгорания попадает не всё топливо. В свою очередь из плёнки топливо никуда не исчезает, а со временем испаряется и всё таки попадает в камеру сгорания.russian wrote:Сергей, а можно тебя попросить кратко и тезисно нам всё-таки разжевать и предложить первую версию имплементации?
Алгоритм описывается парой строк:
fi - сколько нужно влить топлива через форсунку, чтобы компенсировать топливную плёнку;http://www.megamanual.com/ms2/xtau.htm wrote:fi = [ mi - (Mi / (tau / dltau)) ] / (1 - X)
Mi+1 = Mi + X * fi - (Mi / (tau / dltau))
mi - сколько мы хотим влить топлива в камеру сгорания (это то топливо которое мы посчитали по одному из алгоритмов, например speed density);
Mi - сколько топлива в плёнке;
x - кол-во топлива, которое выпадает в плёнку (относительно общего кол-ва, которое влили через форсунку);
tau - постоянная времени испарения топлива из плёнки;
dltau - время между импульсами впрыска.
Вот что получается при моделировании:
синий - сколько хотим налить топлива в камеру сгорания;
красный - сколько топлива в плёнке;
серый - сколько топлива надо налить, чтобы в камеру сгорания попало желаемое кол-во.
Константы:
x = 0.3
t = 0.4 с
dt = 0.2 с
В течении времени, которое определяется t наступит баланс, когда топливо которое испаряется компенсируется новой порцией топлива, которое попадает в плёнку и соответственно порция топлива, которая попадёт в цилиндр будет равна порции топлива, которую подали через форсунку (на графике это видно по слиянию серого и синего).
x и tau определяются из заранее заданных таблиц в зависимости от температуры ОЖ, оборотов, давления и каких-то других факторов, которые влияют на процесс формирования и испарения плёнки.
Re: обогащение смеси при нажатии газа
Ну как бы так и есть только зачем массив? Можно интегрировать в одну переменную все ) сча накидаю псеводкодrussian wrote:А можно для особо одарённых ссылку на статью MaxiRPD?
Вот Дима предлагает кодв моём понимании это как раз имплементация озвученного @Code: Select all
float DiffEnrichment(float engineLoad) { for (int i = 0 ; i == 4 ; i++) { engineLoadD[i] = engineLoadD[i+1] ; } engineLoadD[0] = engineLoad ; float Dcurr = engineLoadD[1] - engineLoadD[0]; float Dold = engineLoadD[3] - engineLoadD[2]; float diffEnrichment = ((3*Dcurr+Dold)/4)*(engineConfiguration->diffLoadEnrichmentCoef); return diffEnrichment; }
Мнения? Замечания?
Code: Select all
/*
вся суть в том чтобы использовать предыдущее значение в виде поправки к текущему — это и есть простейший интегратор
RESULT = CUR + (RESULT — CUR) / COFF
где:
CUR — показатель с датчика
RESULT — интегрированное значение
COFF — коэффициент интегрирования
*/
float engineLoadOld;
float engineLoadCoff = 0.25; // по сути замена умножению на три и делению на четыре, подбирать значение по вкусу
float DiffEnrichment(float engineLoad) {
engineLoadOld = engineLoad + (engineLoadOld - engineLoad) / engineLoadCoff;
return engineLoadOld * (engineConfiguration->diffLoadEnrichmentCoef);
}
читать всем: http://rusefi.com/forum/viewtopic.php?t=213#p336
Re: обогащение смеси при нажатии газа
Code: Select all
CUR + (RESULT — CUR) / COFF
Re: обогащение смеси при нажатии газа
Для начала - что такое нагрузка? Ускорилка не оперирует понятием нагрузка.nikll wrote: Ну как бы так и есть только зачем массив? Можно интегрировать в одну переменную все ) сча накидаю псеводкод
Потом описанный метод не эквивалентен фильтру.
Re: обогащение смеси при нажатии газа
Вполне согласен, не подумал как то про оптимизацию )Sergey89 wrote:деление нужно заменить на умножениеCode: Select all
CUR + (RESULT — CUR) / COFF
читать всем: http://rusefi.com/forum/viewtopic.php?t=213#p336
Re: обогащение смеси при нажатии газа
Пробовать надо оба варианта, просто мне кажется что ограничение на четыре цикла неверным т.к. пленка убывает-прибывает не за четыре цикла а пропорционально количеству циклов.Maxi wrote:Для начала - что такое нагрузка? Ускорилка не оперирует понятием нагрузка.nikll wrote: Ну как бы так и есть только зачем массив? Можно интегрировать в одну переменную все ) сча накидаю псеводкод
Потом описанный метод не эквивалентен фильтру.
В общем тесты на реальном железе гораздо лучше покаждут что будет оптималней нежели переливание воды в форуме.
читать всем: http://rusefi.com/forum/viewtopic.php?t=213#p336
Re: обогащение смеси при нажатии газа
Есть ещё вариант на тему топливной плёнки от Toyota. Вводится два коэффициента. Первый это передача топлива в плёнку на каждом цикле и второй это передача топлива из плёнки в камеру сгорания на каждом цикле.
Реализация тоже простая:
AWC - коэффициент передачи топлива в плёнку;
SOC - коэффициент передачи топлива из плёнки;
DFC - сколько топлива нужно влить в камеру сгорания (целевое значение);
SQF - сколько топлива нужно влить, чтобы в камеру сгорания попало целевое значение;
AWA - сколько топлива передаётся в плёнку;
SOA - сколько топлива передаётся из плёнки в камеру сгорания;
WF - сколько всего топлива в плёнке;
Для примера:
AWC = 0.2
SOC = 0.05
Вот графики из патента, которые определяют коэффициенты AWC и SOC в зависимости от разных факторов:
AWC = BAWC * AWW * AWN * AWF
SOC = BSOC * SOW * SON * SOF
Реализация тоже простая:
Code: Select all
SOA = SOC * WF
SQF = (DFC - SOA) / (1 - AWC)
AWA = SQF * AWC
WF = WF + AWA - SOA
SOC - коэффициент передачи топлива из плёнки;
DFC - сколько топлива нужно влить в камеру сгорания (целевое значение);
SQF - сколько топлива нужно влить, чтобы в камеру сгорания попало целевое значение;
AWA - сколько топлива передаётся в плёнку;
SOA - сколько топлива передаётся из плёнки в камеру сгорания;
WF - сколько всего топлива в плёнке;
Для примера:
AWC = 0.2
SOC = 0.05
Вот графики из патента, которые определяют коэффициенты AWC и SOC в зависимости от разных факторов:
AWC = BAWC * AWW * AWN * AWF
SOC = BSOC * SOW * SON * SOF
Re: обогащение смеси при нажатии газа
Попробуйте - кто мешает.nikll wrote:Пробовать надо оба варианта, просто мне кажется что ограничение на четыре цикла неверным т.к. пленка убывает-прибывает не за четыре цикла а пропорционально количеству циклов.
В общем тесты на реальном железе гораздо лучше покаждут что будет оптималней нежели переливание воды в форуме.
Быструю лямбду уже завели себе для этого?
Re: обогащение смеси при нажатии газа
Вообще пленка это пленка - ускорилка это ускорилка.Sergey89 wrote:Есть ещё вариант на тему топливной плёнки от Toyota.
разные задачи и цели.
Пленка считается с общим топливом. Я как то рассчитывал веса по реальным логам - пленка сущие копейки в подаче при нормально установленных форсунках.
Re: обогащение смеси при нажатии газа
А какая цель у "ускорилки"?
Расчёт плёнки у тойоты применяется для того, чтобы компенсировать изменение состава смеси в переходных режимах.
Расчёт плёнки у тойоты применяется для того, чтобы компенсировать изменение состава смеси в переходных режимах.
Re: обогащение смеси при нажатии газа
driveability.Sergey89 wrote:А какая цель у "ускорилки"?
Re: обогащение смеси при нажатии газа
а в мегасквиртах тоже пленку считают?
Re: обогащение смеси при нажатии газа
на аудях механический впрыск меняют на элетронный - забыл как называается их специфический (просто так иторически сложилось) модуль - там по концевику на акселераторе они просто на лету меняют карту на очень злую - это и есть driveability?
Re: обогащение смеси при нажатии газа
Считают. По плёнке реализованы x-tau и toyota. И отдельно реализован алгоритм обогащения по скорости открытия дросселя либо по скорости изменения давления. При этом авторы мегасквирта утверждаются, что расчёт по плёнке может работать в качестве основного алгоритма обогащения при резком открытии дросселя.puff wrote:а в мегасквиртах тоже пленку считают?
Re: обогащение смеси при нажатии газа
Там асинхронный впрыск то вообще есть? Очень похоже что нет - потому что если есть такое уже нельзя утверждать.Sergey89 wrote:Считают. По плёнке реализованы x-tau и toyota. И отдельно реализован алгоритм обогащения по скорости открытия дросселя либо по скорости изменения давления. При этом авторы мегасквирта утверждаются, что расчёт по плёнке может работать в качестве основного алгоритма обогащения при резком открытии дросселя.puff wrote:а в мегасквиртах тоже пленку считают?
Re: обогащение смеси при нажатии газа
Нет. Driveability это реакция автомобиля на tip-in tip-out циклические тесты. оценочным параметром является ускорение.puff wrote:на аудях механический впрыск меняют на элетронный - забыл как называается их специфический (просто так иторически сложилось) модуль - там по концевику на акселераторе они просто на лету меняют карту на очень злую - это и есть driveability?
какая при этом смесь - не имеет значения. Имеет значение что автомобиль (система) А в этих тестах побеждает автомобиль (систему) Б.