Page 1 of 8
Алгоритмы РХХ и не только (Algorithms of idling regulators)
Posted: Sun Aug 21, 2011 12:12 pm
by STC
Обсуждаем алгоритмы РХХ как отдельно для зажигания, так и для впрыска и совместно.
РХХ - Регулятор Холостого Хода. Регулирование ХХ божет производиться как одним УОЗ, так и одним только регулированием подачи топлива. Ну и конечно одновременно и при помощи первого и второго.
УОЗ позволяет быстро менять обороты, но в большинстве случаев только в меленьких пределах.
Регулирование подачи топлива позволяет менять обороты в широких пределах, но является достаточно медленным.
Re: Алгоритмы РХХ и не только
Posted: Sun Aug 21, 2011 1:00 pm
by Stranger21
думаю что именно подачей топлива не регулируется , так как я не видел чтобы импульсы на форсе менялись . правильнее сказать регулировкой подачи воздуха , и как следствие повышение подачи топлива.
в моновпрыске это делает механический РХХ , просто електромотор колекторный ,он двигает сам дросель , открывая и закрывая его. например в ВАЗ это делается путем дополнительного воздушного канала регулируемым путем шагового двигателя , двух обмоточного.
Re: Алгоритмы РХХ и не только
Posted: Sun Aug 21, 2011 3:22 pm
by Stranger21
сижу и думаю , что всеже быстрее - подвинуть заслонку , или УОЗ ... хм...
Re: Алгоритмы РХХ и не только
Posted: Tue Aug 23, 2011 8:42 am
by stealth
Известные мне варианты:
1. Шаговый двигатель - наиболее распространенный вариант и видимо самый оптимальный
2. Дискретный клапан(по типу форсунки) - спорный вариант, но на каких-то авто он применялся
3. УОЗ - наиболее надежный и простой вариант, многие(кто на альтернативные мозги переходит) выкидывают капризный 1 вариант и рулят углами. Кстате, большинство тюнячих дроссилей не имеют доп каналов для РХХ
Re: Алгоритмы РХХ и не только
Posted: Tue Aug 23, 2011 9:59 am
by Stranger21
ну одним УОЗ мне кажется не верно , на полновпрысках и один из вариантов механо РХХ и уоз
я вот сам пробовал уже один уоз регулировать , угол уже 30 град а обороты падают ( а рхх в довесок и все 800 встало
в моновпрыске ВАГ стоит просто до нельзя рхх , кратко суть - простой колекторный моторчик , через червяк передает врашение в поступательное движение штока , шток двигает собствено саму заслонку . на конце штока микро концевик - выключатель ХХ
управление моторчиком на принципе ШИМ и смены полярности импульсами 12 вольт
но в моем ММ1.2.3 он не только ХХ стабилизирует , поэтому я не хочу его оттуда убрать , он еще служит демпфером при сбросе газа , подлавливает дросель и плавно спускает , тем самым обороты падают плавно.
к томуже при первом включении (после обнуления мозга) он "ищет" начальное положение ДПДЗ , двигаясь в упор.
пока езжу на П регуляторе в секу3 , даже не сделал еще определение хх . некогда с машиной возиться , только на работе есть вот время по форумам лазить )
вроде ниче так отстроил . но эфектом не особо доволен , чуть лучше чем без УОЗ вообще .. но все равно както не так )
работает у меня он по такому алгоритму
каждый раз как считается УОЗ , смотрим на ошибку оборотов хх от установленых , и в зависимости от знака ошибки через коеэфициенты прибавляем или вычитаем к уоз поправочный коэфициент. при попадании в зону не чувствительности - выход с нулевым коэфициентом .
такое чувство что все равно мало скорости (((
или всеж верно мое предположение о том что мой моновпрыск , нацелившись двигать РХХ , двигает его независимо от ситауции в промежутке между нацеливаением и выставлением . тоесть пока моник двигает рхх я уже секу3 поправил хх , но моник еще не закончил двигать и двигает дальше , тем самым растраивая уже верные хх ... замкнутый круг (((
Re: Алгоритмы РХХ и не только
Posted: Tue Aug 23, 2011 12:31 pm
by STC
каждый раз как считается УОЗ , смотрим на ошибку оборотов хх от установленых , и в зависимости от знака ошибки через коеэфициенты прибавляем или вычитаем к уоз поправочный коэфициент. при попадании в зону не чувствительности - выход с нулевым коэфициентом .
Поправлю. Говорить "прибавление/вычитание поправочного коэффициента" некорректно. КоЭфФициент это множитель.
Если это П-регулятор, то нужно говорить "Прибавление к УОЗ ошибки умноженной на коэффициент".
Re: Алгоритмы РХХ и не только
Posted: Tue Aug 23, 2011 1:54 pm
by Stranger21
да верно , спасибо
Re: Алгоритмы РХХ и не только
Posted: Fri Sep 02, 2011 3:10 pm
by Stranger21
П - регулятор , тоже как то не очень мне нравится как стыкуется с моновпрыском . наверное идеальный вариант ,это отобрать у моновпрска еще и РХХ . и ввести его в секу3 . по сути нужно будет только две ножки вроде и усилитель мостовой на TDA , выкидывать подобие ШИМ . только придеться еще и ДПДЗ завести , так как нужна еще функция Демпфера ДЗ от рхх.
или !!! во идея !!! ввести просто дпдз в секу3 !!!! и по нему смотреть Что делает моновпрыск и принимать решение Как подвинуть УОЗ ... тогда по идее должна появиться синхронность действий
Re: Алгоритмы РХХ и не только
Posted: Sat Sep 03, 2011 1:11 pm
by Stranger21
Вобщем . повозился сегодня еще раз .с делал регулятор вот так
Code: Select all
int16_t idling_pregulator(struct ecudata_t* d, volatile s_timer8_t* io_timer)
{
int16_t error,factor;
//зона "подхвата" регулятора при возвращени двигателя из рабочего режима в ХХ
uint16_t capture_range = 50;
//если PXX отключен или обороты значительно выше от нормальных холостых оборотов
// или двигатель не прогрет то выходим с нулевой корректировкой
if (!d->param.idl_regul || (d->sens.frequen >(d->param.idling_rpm + capture_range))
|| (d->sens.temperat < TEMPERATURE_MAGNITUDE(75) && d->param.tmp_use))
return 0;
//вычисляем значение ошибки, ограничиваем ошибку (если нужно), а также, если мы в зоне
//нечувствительности, то используем расчитанную ранее коррекцию.
error = d->param.idling_rpm - d->sens.frequen;
restrict_value_to(&error, -200, 100);
if (abs(error) <= d->param.MINEFR)
return idl_prstate.output_state;
//выбираем необходимый коэффициент регулятора, в зависимости от знака ошибки
if (error > 0)
factor = d->param.ifac1;
else
factor = d->param.ifac2;
//изменяем значение коррекции только по таймеру idle_period_time_counter
//if (s_timer_is_action(*io_timer))
{
//s_timer_set(*io_timer,IDLE_PERIOD_TIME_VALUE);
idl_prstate.output_state = (error * factor) / 4;
}
//ограничиваем коррекцию нижним и верхним пределами регулирования
restrict_value_to(&idl_prstate.output_state, d->param.idlreg_min_angle, d->param.idlreg_max_angle);
return idl_prstate.output_state;
}
идя о том что нужно выходит с 0 при попадании в зону не чувствительности - провалилась.
отличите только в том что регулятор стал П -регулятором .
результат понравился и мне , и моновпрыску . так как моновпрыск действительно очень мало двигает РХХ. вся регулиовка на УОЗ имено малых воздействий. если мотреть диагностику моновпрыска то там есть параметр - УОЗ . так вот если выключить мой регулятор в секу 3 , то скачки этого УОЗ досточно большие . при включении регулятора - скачки уменьшаються = моновпрыск не хочет регулировать обороты = цель достигнута.
правильной работы регулятора пришлось добиваться еще одним способом - так как он теперь работает хорошо . видно в какую сторону он больше всего двигает Угол . = в уменьшение или в увеличение от заданного таблицей УОЗ на хх.
путем подбора угла в этой таблице . было получено значние угла на хх , при котором , РХХ и в + и в - делал примерно одинаковое поправление .
ну витоге я настроил работу двигателя на хх , оптимальным образом , чтобы угол соответсвовал оборотам 800 , и все стало боле менее удовлетворительно .... теперь осталась прогревочная карта ....
Re: Алгоритмы РХХ и не только
Posted: Sat Sep 03, 2011 2:11 pm
by Stranger21
Есть одна идея . так как мне не нравяться прогревочные обороты .
попробую ввести следующий алгоритм
РХХ не отключать по температуре . НО
задать некую формулу , зависимость , целевых оборотов РХХ (н то что мы ставим в менеджере) , от температуры!!! . и тогда по мере прогрева , целевые обороты рхх будут меняться . но само регулирование угла будет работать , и не позволит оборотам плавать -- так сделано в моновпрыске. регулировка хх УОЗ там работает всегда . только целевые обороты меняються .
можно попробовать привызать форумулу к таблице УОЗ от температуры . ...
вот такая вот мысль .
так как я еще очень плохо понимаю Си то
Code: Select all
if (d->sens.temperat < TEMPERATURE_MAGNITUDE(75) && d->param.tmp_use)
d->param.idling_rpm =(90 - d->sens.temperat)*2+100;
else
d->param.idling_rpm = 800;
if ((d->sens.frequen >(d->param.idling_rpm + 10)) && !idl_enable.output_state)
return 0;
else
idl_enable.output_state = 1;
if (!d->param.idl_regul || (d->sens.frequen >(d->param.idling_rpm + capture_range)))
return 0;
1 что значит в этом месте символ -> ? я так понял что в переменную d передалась структура с параметрами . этот символ указатель чтоли получается или что?
2 это будет отображать в менеджере там где заданные обороты рхх расчитаные значения ? или нет?
3 и еще sens.temperat в чем получает температуру ? в градусах ? или в какойто своей величине?
что то ничего не вышло с температурой . менеджер вроде и чето поптался отобразить но явно не в реальном времени ( . и формула не заработала ( ... думаю....
но зато функция idl_enable заработала как часы!!! отлично работает !!! . никакого провала оборотов резкого нету . обороты с рабочего режима на демпфере плавно спускаються к 800 и лиш потом рхх не заметно начинает работать ) .. я доволен ))