обогащение смеси при нажатии газа

Про байтики и логику ЭБУ
User avatar
rus084
contributor
contributor
Posts: 678
Joined: Sun Dec 01, 2013 1:40 pm
Location: Russia , Stavropol

обогащение смеси при нажатии газа

Post by rus084 »

у нас нет алгоритма обогощения смеси при нажатии на газ
алгоритм написать не проблема .
а вот как мы хотим это параметризовать ?

я думаю что либо от скорости набора оборотов либо от скорости нажатия газа
puff
contributor
contributor
Posts: 2961
Joined: Mon Nov 11, 2013 11:28 am
Location: Moskau

Re: обогащение смеси при нажатии газа

Post by puff »

ты про электронный газ или про то, чтобы дать мозгам понять, что ты газ нажал до конца и хочешь резко ускориться?
User avatar
rus084
contributor
contributor
Posts: 678
Joined: Sun Dec 01, 2013 1:40 pm
Location: Russia , Stavropol

Re: обогащение смеси при нажатии газа

Post by rus084 »

это чтото типа ускорительного насоса на карбюраторе
User avatar
Sergey89
contributor
contributor
Posts: 839
Joined: Wed Sep 25, 2013 5:30 pm
Location: Russia, Velikiy Novgorod

Re: обогащение смеси при нажатии газа

Post by Sergey89 »

http://rusefi.com/forum/viewtopic.php?p=324#p324 вот в этом посте я выложил несколько ссылок на тему топливной плёнки. суть заключается в предотвращении обеднения/обогащения смеси на переходных режимах.
puff
contributor
contributor
Posts: 2961
Joined: Mon Nov 11, 2013 11:28 am
Location: Moskau

Re: обогащение смеси при нажатии газа

Post by puff »

обьясни плз в двух словах?
puff
contributor
contributor
Posts: 2961
Joined: Mon Nov 11, 2013 11:28 am
Location: Moskau

Re: обогащение смеси при нажатии газа

Post by puff »

ну то есть вроде проблема какая-то есть, у меня даже в карбовом впуске предусмотрены дыры для пропуска ож, чтобы подогревать впуск (хотя я думал смесь лучше нсоборот холодная - больше влезет). но что это именно в переходные периоды (кстати какие такие именно?), и как это связано с педалью газа?
User avatar
AndreyB
Site Admin
Posts: 14292
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Github Username: rusefillc
Slack: Andrey B

Re: обогащение смеси при нажатии газа

Post by AndreyB »

Прогрев впуска кажется всё-таки про другое - прогрев впуска чтоб впуск не забился льдом при температурах в районе нуля кажется.

Сергей, а можно тебя попросить кратко и тезисно нам всё-таки разжевать и предложить первую версию имплементации?
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
KOT
Posts: 291
Joined: Sun Nov 17, 2013 8:15 am
Location: Ukraine, Zaporizhia

Re: обогащение смеси при нажатии газа

Post by KOT »

Да, к стати машинка без ускорительного насоса подтупливает, но при 4-х форсунках около клапанов это не сильно заметно, а вот на моноижекторе даже тронутся нормально нельзя)).
Ускорительный насос делается на базе ДПДЗ или ДАД, или оба сразу. Я себе делал под датчику дросселя, измерял раз в 0,1 секунды положение педали и смотрел на сколько сместилась. Чем больше сместилась за это время тем больше добавлял бензина, но чем больше была открыта педаль до резкого нажатия тем меньше аддитивный коэффициент.
nikll
Posts: 186
Joined: Tue Oct 15, 2013 5:45 am

Re: обогащение смеси при нажатии газа

Post by nikll »

Всем привет.
Про это я уже писал гдето тут, надо интегрировать дельу наполнения, если по простому то берем между текущим наполнением и предыдущим (дельту обозначим Dcurr), потом усредняем ее с предыдущей дельтой (Dold) с зависимостью например в одну четверть (3*Dcurr+Dold)/4, таким образом у нас есть поправка которая интегрирует в себе всю предыдущую динамику изменения наполнения со степенью влияния обратно пропорциональной устареванию значений. В итоге имея интегрированную дельту мы можем втупую юзать ее как аддитивную поправку в расчете массы топлива, это даст и обогащение по дросселю, и обогащение по скачку давления либо скачку расхода воздуха (в зависимости от используемых алгоритмов и датчиков), так же т.к. дельта может быть и отрицательной (резко газ сбросили) алгоритм будет обеднять смесь дабы небыло переобогащения в этот момент.

Рекомендую почитать статью MaxiRPD, там это достаточо понятно описанно и есть подобная реализация (правда без интегрирования а просто с хранением значений четырех предыдущих циклов).
User avatar
rus084
contributor
contributor
Posts: 678
Joined: Sun Dec 01, 2013 1:40 pm
Location: Russia , Stavropol

Re: обогащение смеси при нажатии газа

Post by rus084 »

можно измерять каждый цикл вычисления требуемого количества топлива?
User avatar
AndreyB
Site Admin
Posts: 14292
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Github Username: rusefillc
Slack: Andrey B

Re: обогащение смеси при нажатии газа

Post by AndreyB »

А можно для особо одарённых ссылку на статью 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
mivaol
Posts: 260
Joined: Thu Jan 30, 2014 6:00 pm

Re: обогащение смеси при нажатии газа

Post by mivaol »

Ты про эту статью http://rotorman.dtt-motorsport.ru/j5-sport/dad_model2.htm
Читать Топливоподача в нестационарных режимах.
mivaol
Posts: 260
Joined: Thu Jan 30, 2014 6:00 pm

Re: обогащение смеси при нажатии газа

Post by mivaol »

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 ) );

	
Я себе так представил чему будет равен параметр engineLoadD в следующем цикле
User avatar
rus084
contributor
contributor
Posts: 678
Joined: Sun Dec 01, 2013 1:40 pm
Location: Russia , Stavropol

Re: обогащение смеси при нажатии газа

Post by rus084 »

еще у меня есть такой вариант

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);

}

тут коэфицент i хочу сделать настраиваемым
я пока пытаюсь перевести это в класс c++ , вроде перевел , но как вызывать метод неразобрался
User avatar
Sergey89
contributor
contributor
Posts: 839
Joined: Wed Sep 25, 2013 5:30 pm
Location: Russia, Velikiy Novgorod

Re: обогащение смеси при нажатии газа

Post by Sergey89 »

russian wrote:Сергей, а можно тебя попросить кратко и тезисно нам всё-таки разжевать и предложить первую версию имплементации?
В основе алгоритма лежит тот факт, что часть топлива при каждом впрыскивании выпадает в топливную плёнку (по сути оседает на элементах впуска) и получается так, что в камеру сгорания попадает не всё топливо. В свою очередь из плёнки топливо никуда не исчезает, а со временем испаряется и всё таки попадает в камеру сгорания.

Алгоритм описывается парой строк:
http://www.megamanual.com/ms2/xtau.htm wrote:fi = [ mi - (Mi / (tau / dltau)) ] / (1 - X)
Mi+1 = Mi + X * fi - (Mi / (tau / dltau))
fi - сколько нужно влить топлива через форсунку, чтобы компенсировать топливную плёнку;
mi - сколько мы хотим влить топлива в камеру сгорания (это то топливо которое мы посчитали по одному из алгоритмов, например speed density);
Mi - сколько топлива в плёнке;
x - кол-во топлива, которое выпадает в плёнку (относительно общего кол-ва, которое влили через форсунку);
tau - постоянная времени испарения топлива из плёнки;
dltau - время между импульсами впрыска.

Вот что получается при моделировании:
x-tau1.png
x-tau1.png (13.5 KiB) Viewed 24954 times
синий - сколько хотим налить топлива в камеру сгорания;
красный - сколько топлива в плёнке;
серый - сколько топлива надо налить, чтобы в камеру сгорания попало желаемое кол-во.

Константы:
x = 0.3
t = 0.4 с
dt = 0.2 с

В течении времени, которое определяется t наступит баланс, когда топливо которое испаряется компенсируется новой порцией топлива, которое попадает в плёнку и соответственно порция топлива, которая попадёт в цилиндр будет равна порции топлива, которую подали через форсунку (на графике это видно по слиянию серого и синего).

x и tau определяются из заранее заданных таблиц в зависимости от температуры ОЖ, оборотов, давления и каких-то других факторов, которые влияют на процесс формирования и испарения плёнки.
nikll
Posts: 186
Joined: Tue Oct 15, 2013 5:45 am

Re: обогащение смеси при нажатии газа

Post by nikll »

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);
}
User avatar
Sergey89
contributor
contributor
Posts: 839
Joined: Wed Sep 25, 2013 5:30 pm
Location: Russia, Velikiy Novgorod

Re: обогащение смеси при нажатии газа

Post by Sergey89 »

Code: Select all

CUR + (RESULT — CUR) / COFF
деление нужно заменить на умножение
User avatar
Maxi
Sr Consultant
Sr Consultant
Posts: 786
Joined: Wed Oct 23, 2013 4:25 pm

Re: обогащение смеси при нажатии газа

Post by Maxi »

nikll wrote: Ну как бы так и есть только зачем массив? Можно интегрировать в одну переменную все ) сча накидаю псеводкод
Для начала - что такое нагрузка? Ускорилка не оперирует понятием нагрузка.

Потом описанный метод не эквивалентен фильтру.
nikll
Posts: 186
Joined: Tue Oct 15, 2013 5:45 am

Re: обогащение смеси при нажатии газа

Post by nikll »

Sergey89 wrote:

Code: Select all

CUR + (RESULT — CUR) / COFF
деление нужно заменить на умножение
Вполне согласен, не подумал как то про оптимизацию )
nikll
Posts: 186
Joined: Tue Oct 15, 2013 5:45 am

Re: обогащение смеси при нажатии газа

Post by nikll »

Maxi wrote:
nikll wrote: Ну как бы так и есть только зачем массив? Можно интегрировать в одну переменную все ) сча накидаю псеводкод
Для начала - что такое нагрузка? Ускорилка не оперирует понятием нагрузка.

Потом описанный метод не эквивалентен фильтру.
Пробовать надо оба варианта, просто мне кажется что ограничение на четыре цикла неверным т.к. пленка убывает-прибывает не за четыре цикла а пропорционально количеству циклов.
В общем тесты на реальном железе гораздо лучше покаждут что будет оптималней нежели переливание воды в форуме.
User avatar
Sergey89
contributor
contributor
Posts: 839
Joined: Wed Sep 25, 2013 5:30 pm
Location: Russia, Velikiy Novgorod

Re: обогащение смеси при нажатии газа

Post by Sergey89 »

Есть ещё вариант на тему топливной плёнки от Toyota. Вводится два коэффициента. Первый это передача топлива в плёнку на каждом цикле и второй это передача топлива из плёнки в камеру сгорания на каждом цикле.

Реализация тоже простая:

Code: Select all

SOA = SOC * WF
SQF = (DFC - SOA) / (1 - AWC)
AWA = SQF * AWC
WF = WF + AWA - SOA
AWC - коэффициент передачи топлива в плёнку;
SOC - коэффициент передачи топлива из плёнки;
DFC - сколько топлива нужно влить в камеру сгорания (целевое значение);
SQF - сколько топлива нужно влить, чтобы в камеру сгорания попало целевое значение;
AWA - сколько топлива передаётся в плёнку;
SOA - сколько топлива передаётся из плёнки в камеру сгорания;
WF - сколько всего топлива в плёнке;

Для примера:

AWC = 0.2
SOC = 0.05
x-tau2.png
x-tau2.png (23.63 KiB) Viewed 25370 times
Вот графики из патента, которые определяют коэффициенты AWC и SOC в зависимости от разных факторов:
x-tau3.png
x-tau3.png (88.86 KiB) Viewed 25374 times
AWC = BAWC * AWW * AWN * AWF
SOC = BSOC * SOW * SON * SOF
User avatar
Maxi
Sr Consultant
Sr Consultant
Posts: 786
Joined: Wed Oct 23, 2013 4:25 pm

Re: обогащение смеси при нажатии газа

Post by Maxi »

nikll wrote:Пробовать надо оба варианта, просто мне кажется что ограничение на четыре цикла неверным т.к. пленка убывает-прибывает не за четыре цикла а пропорционально количеству циклов.
В общем тесты на реальном железе гораздо лучше покаждут что будет оптималней нежели переливание воды в форуме.
Попробуйте - кто мешает.
Быструю лямбду уже завели себе для этого?
User avatar
Maxi
Sr Consultant
Sr Consultant
Posts: 786
Joined: Wed Oct 23, 2013 4:25 pm

Re: обогащение смеси при нажатии газа

Post by Maxi »

Sergey89 wrote:Есть ещё вариант на тему топливной плёнки от Toyota.
Вообще пленка это пленка - ускорилка это ускорилка.
разные задачи и цели.
Пленка считается с общим топливом. Я как то рассчитывал веса по реальным логам - пленка сущие копейки в подаче при нормально установленных форсунках.
User avatar
Sergey89
contributor
contributor
Posts: 839
Joined: Wed Sep 25, 2013 5:30 pm
Location: Russia, Velikiy Novgorod

Re: обогащение смеси при нажатии газа

Post by Sergey89 »

А какая цель у "ускорилки"?

Расчёт плёнки у тойоты применяется для того, чтобы компенсировать изменение состава смеси в переходных режимах.
x-tau4.png
x-tau4.png (41.6 KiB) Viewed 25360 times
User avatar
Maxi
Sr Consultant
Sr Consultant
Posts: 786
Joined: Wed Oct 23, 2013 4:25 pm

Re: обогащение смеси при нажатии газа

Post by Maxi »

Sergey89 wrote:А какая цель у "ускорилки"?
driveability.
puff
contributor
contributor
Posts: 2961
Joined: Mon Nov 11, 2013 11:28 am
Location: Moskau

Re: обогащение смеси при нажатии газа

Post by puff »

а в мегасквиртах тоже пленку считают?
puff
contributor
contributor
Posts: 2961
Joined: Mon Nov 11, 2013 11:28 am
Location: Moskau

Re: обогащение смеси при нажатии газа

Post by puff »

на аудях механический впрыск меняют на элетронный - забыл как называается их специфический (просто так иторически сложилось) модуль - там по концевику на акселераторе они просто на лету меняют карту на очень злую - это и есть driveability?
User avatar
Sergey89
contributor
contributor
Posts: 839
Joined: Wed Sep 25, 2013 5:30 pm
Location: Russia, Velikiy Novgorod

Re: обогащение смеси при нажатии газа

Post by Sergey89 »

puff wrote:а в мегасквиртах тоже пленку считают?
Считают. По плёнке реализованы x-tau и toyota. И отдельно реализован алгоритм обогащения по скорости открытия дросселя либо по скорости изменения давления. При этом авторы мегасквирта утверждаются, что расчёт по плёнке может работать в качестве основного алгоритма обогащения при резком открытии дросселя.
User avatar
Maxi
Sr Consultant
Sr Consultant
Posts: 786
Joined: Wed Oct 23, 2013 4:25 pm

Re: обогащение смеси при нажатии газа

Post by Maxi »

Sergey89 wrote:
puff wrote:а в мегасквиртах тоже пленку считают?
Считают. По плёнке реализованы x-tau и toyota. И отдельно реализован алгоритм обогащения по скорости открытия дросселя либо по скорости изменения давления. При этом авторы мегасквирта утверждаются, что расчёт по плёнке может работать в качестве основного алгоритма обогащения при резком открытии дросселя.
Там асинхронный впрыск то вообще есть? Очень похоже что нет - потому что если есть такое уже нельзя утверждать.
User avatar
Maxi
Sr Consultant
Sr Consultant
Posts: 786
Joined: Wed Oct 23, 2013 4:25 pm

Re: обогащение смеси при нажатии газа

Post by Maxi »

puff wrote:на аудях механический впрыск меняют на элетронный - забыл как называается их специфический (просто так иторически сложилось) модуль - там по концевику на акселераторе они просто на лету меняют карту на очень злую - это и есть driveability?
Нет. Driveability это реакция автомобиля на tip-in tip-out циклические тесты. оценочным параметром является ускорение.
какая при этом смесь - не имеет значения. Имеет значение что автомобиль (система) А в этих тестах побеждает автомобиль (систему) Б.
Post Reply