Page 45 of 107
Re: Добавл. в прошивку возможностей одновременного/моно впры
Posted: 16 Nov 2014, 02:31
by кумыч
для малоцилиндровых моторов - да, до 4. на вэ8 бывают "сдвоеные моноинжекторы", по одной форсунке на голову, в таких случаях надо лить 8 раз за цикл, но по 4 раза каждой форсункой и по очереди.
хотя вроде бы по логике в попарный вписывается.
Re: Добавл. в прошивку возможностей одновременного/моно впры
Posted: 16 Nov 2014, 12:21
by AlxSh
STC wrote:Теперь вопрос по теме (для обсуждения). Я сейчас делаю редактирование параметров впрыска из менеджера и хотел бы уточнить вопрос связанный с конфигурированием форсунок. Если я правильно понимаю то:
форсунок может быть либо 1 (моновпрыск), либо равное числу цилиндров (одновременный, попарно-параллельный, фазированный). Только 2 варианта, правильно?
Я читая форумы про Январь, видел схемы когда выходов для форсунок 4, а вешают на них 5, но это извращение от безысходности видимо.
STC wrote:Теперь количество впрысков каждой форсунки на цикл.
С моновпрыском вроде бы понятно - 1,2,4
Одновременный тоже - 1,2,4
Попарно-параллельный - 2
Фазированный - 1
Правильно?
Я сделал все 3 режима.
Если двигатель стоит, то взводится флаг PrimePulse и ставится режим одновременного впрыска. Как только начинается вращение, сразу ассинхронно все форсунки впрыскивают топливо PrimePulseTime в зависимости от температуры ОЖ. Затем переходим на синхронный впрыск. После сброса условия crank_state переходим на фазированный или ПП режим. В режиме ускорительного насоса режем переключается в одновременный.
Code: Select all
// Управление режимом впрыска
if (d->crank_state || d->corr.enrich_accel > 0) d->inj.mode = INJ_MODE_ALL;
else {
d->inj.mode = (d->phase_sync) ? INJ_MODE_SEQ : INJ_MODE_DOUBLE;
}
STC wrote:
Планирую в менеджере сделать 2 выпадающих списка.
В первом списке выбирается тип впрыска: моно, одновременный, попарно-параллельный,
фазированный.
Во втором списке выбирается число впрысков на цикл (в зависимости от того что выбрано в первом списке): 1,2,4
Увеличение количества впрысков приводит к увеличению ошибки дозирования! Не надо делать больше чем это необходимо! Планирую переключаться в более плохой режим, если не успеваю осуществить впрыск в текущем режиме.
Сразу имеет смысл задуматься о фазе впрыска. Я эту неделю ломал башку над тем как это сделать и получил такое решение.
Вот как обрабатываются режимы: Вызывается на каждом зубе. Часть вычислений касаемо интерполяции оборотов вынес в отдельную функцию, чтобы не считать одно и тоже в разных кусках кода.
Code: Select all
void inj_cog(ecudata_t *d, uint32_t cog){
uint32_t inj_mask;
if (d->inj.prime_pulse){
d->inj.prime_pulse = 0;
inj_start(d, INJ_OUT_CIL_ALL, inj_prime_pulse(d));
return;
}
if (!d->inj.squirt_time) return;
/* Получаем диаппазон NUM_COGS ... (NUM_COGS*2) для второго оборота */
if (d->revolution % 2) cog += NUM_COGS;
for (uint32_t i=0; i<d->params.cilinder_num; i++){
if (cog == d->cil[i].inj_begin_cog){
switch (d->inj.mode){
case INJ_MODE_SEQ:
switch (i){
case 0: inj_mask = INJ_OUT_CIL_1; break;
case 1: inj_mask = INJ_OUT_CIL_3; break;
case 2: inj_mask = INJ_OUT_CIL_4; break;
case 3: inj_mask = INJ_OUT_CIL_2; break;
}
break;
case INJ_MODE_DOUBLE:
inj_mask = (i & 0x1) ? INJ_OUT_CIL_2|INJ_OUT_CIL_3 : INJ_OUT_CIL_1|INJ_OUT_CIL_4;
break;
default:
inj_mask = INJ_OUT_CIL_ALL;
}
inj_start(d, inj_mask, d->inj.squirt_time);
}
}
}
void inj_phase(ecudata_t *d){
uint32_t i = d->precalc.rpm.tbl_idx;
d->inj.phase_cogs = simple_interpolation(d->precalc.rpm.limited_rpm, efi.ttbl.inj_phase[i], efi.ttbl.inj_phase[i+1],
efi.ttbl.rpm_grid_points[i], efi.rpm_grid_sizes[i], 16)>>4;
uint32_t cog_pos = GET_COG();
int32_t inj_cogs = (((uint32_t)d->inj.squirt_time + d->inj.lag_corr_time) * INJ_TIME_TO_COG) / ckps_CogTime();
int32_t inj_begin_cog = (int32_t)d->inj.phase_cogs - inj_cogs;
while (inj_begin_cog < 0) inj_begin_cog += NUM_COGS * 2;
for (uint32_t i=0; i < d->params.cilinder_num; i++){
int32_t cog = (int32_t)d->cil[i].cog_pos + inj_begin_cog;
while (cog >= NUM_COGS*2) cog -= NUM_COGS * 2;
// Обновляем фазу только если не произойдет пропуска впрыска
if ((cog_pos < d->cil[i].inj_begin_cog && cog_pos < cog)
|| (cog_pos >= d->cil[i].inj_begin_cog && cog_pos >= cog))
{
d->cil[i].inj_begin_cog = cog;
}
}
}
Удалось создать такое решение. Форсунка не привязана в коде к динамически меняющемуся номеру рабочего цилиндра. Только к угловому положению цилиндра. Это позволит в дальнейшем написать алгоритм фазировки форсунок.
Re: Добавл. в прошивку возможностей одновременного/моно впры
Posted: 16 Nov 2014, 21:37
by STC
Я пока не боду вникать в особенности распределенного фазированного впрыска. До релиза планирую сделать максимум попарно-параллельный.
Re: Добавл. в прошивку возможностей одновременного/моно впры
Posted: 17 Nov 2014, 08:01
by izolyator
я выбрал попарно-параллельный, фазированный для моей не спешной езды и не нужен наверно. А в блоке я паять ничего не хочу, я буду новый покупать. Жду блок управления форсунками, они у меня 18 ом.
Re: Добавл. в прошивку возможностей одновременного/моно впры
Posted: 17 Nov 2014, 09:52
by strelok22
Залил в блок прошивку из директории map_reorg, менеджер тоже map_reorg, таблицы впрыска редактируются только на вкладке данные прошивки, я так понял только оттуда можно пока настраиваться, и зажигание и впрыск, где можно посмотреть показания лз и дтв?
Re: Добавл. в прошивку возможностей одновременного/моно впры
Posted: 17 Nov 2014, 13:18
by AlxSh
izolyator wrote:я выбрал попарно-параллельный, фазированный для моей не спешной езды и не нужен наверно. А в блоке я паять ничего не хочу, я буду новый покупать. Жду блок управления форсунками, они у меня 18 ом.
А это никак не связано с неспешностью езды! Фазированный впрыск должен повышать точность дозирования в режимах с низким расходом топлива. И главное, что для реализации этого режима, если не использовать режим с ШИМ, нужно добавить еще два силовых ключа и все.
Re: Добавл. в прошивку возможностей одновременного/моно впры
Posted: 17 Nov 2014, 14:10
by izolyator
так для фазированного впрыска надо управление индивидуально каждой форсункой т.е. блок на 4 канала или 2х2 и дружить их между мобой
Re: Добавл. в прошивку возможностей одновременного/моно впры
Posted: 17 Nov 2014, 14:19
by STC
ДК можно смотреть на пенели приборов менеджера или в логе, ДТВ пока только в логе.
Таблицы уже можно редактировать и в онлайне, но там могут быть мелкие глюка, потому что еще не было полноценного тестирования.
Re: Добавл. в прошивку возможностей одновременного/моно впры
Posted: 17 Nov 2014, 14:24
by STC
Разница между фазированным, поарно-паралльельным и одновременным только на ХХ, в лошадях разницы нет. Вы слишком преуеличиваете пользу от фазированного впрыска.
Для фазированного я вам хоть сейчас могу сделать 4 канала, просто для управления этими 4 каналами нужно еще и алгоритм в прошивке реализовать, а там всего 2 таймера - нужно ставить запросы на обработку в очередь. Я не хочу пока связываться с этим геморроем.
Re: Добавл. в прошивку возможностей одновременного/моно впры
Posted: 17 Nov 2014, 14:31
by кумыч
лучше сразу делать на каждую форсунку - свой ключ. пока нету поддержки последовательного впрыска - управлять ключами одновременно либо попарно. потом по мере доделывания прошивки - перекинуть ключи на свои выходы.