Page 1 of 1
ограничение стартовых оборотов
Posted: Tue Feb 18, 2014 2:07 pm
by rus084
как насчет такого : если тормоз нажат или открыта дверь , не давать подниматься оборотам больше определенных ?
допустим у нас автомат , зачем мотор на старте крутить больше чем обороты максимального крутящего момента?
после езды на мотоциклах ездильщики постоянно поджимают тормоз и жмут газ , так мало того что стираются тормоза , так еще и обгонная муфта (центробежное сцепление) стирается .
Re: ограничение стартовых оборотов
Posted: Tue Feb 18, 2014 2:13 pm
by AndreyB
Какую задачу решает эта фича? Это защита от дурака?
Или это уже в сторону
launch control?
Re: ограничение стартовых оборотов
Posted: Tue Feb 18, 2014 2:40 pm
by rus084
ну можно еще и стабилизировать стартовые обороты на уровне максимального крутящего момента
Re: ограничение стартовых оборотов
Posted: Tue Feb 18, 2014 3:32 pm
by meXanicus
У БМВ начала 2000-х если натянут ручник, то мотор не развивает обороты, вот защита, причем иногда нужная всем ))
Re: ограничение стартовых оборотов
Posted: Tue Apr 22, 2014 6:30 am
by rus084
вот набросал патчик
Code: Select all
Index: controllers/math/engine_math.cpp
===================================================================
--- controllers/math/engine_math.cpp (revision 2629)
+++ controllers/math/engine_math.cpp (working copy)
@@ -27,6 +27,7 @@
#include "io_pins.h"
#include "OutputSignalList.h"
#include "trigger_decoder.h"
+#include "rpm_calculator.h"
/*
* default Volumetric Efficiency
@@ -241,7 +242,7 @@
return getOneDegreeTimeMs(rpm) * angle;
}
- if (rpm > engineConfiguration->rpmHardLimit) {
+ if (engineNeedSkipStoke()) {
// technically this could be implemented via interpolate2d by setting everything above rpmHardLimit to zero
warning(OBD_PCM_Processor_Fault, "skipping spark due to rpm=%d", rpm);
return 0;
@@ -347,3 +348,14 @@
void setTimingLoadBin(engine_configuration_s *engineConfiguration, float l, float r) {
setTableBin(engineConfiguration->ignitionLoadBins, IGN_LOAD_COUNT, l, r);
}
+
+
+int engineNeedSkipStokeT(engine_configuration_s *engineConfiguration) {
+ if (getRpm() > engineConfiguration->rpmHardLimit) {
+ return 1;
+ }
+ // todo: add damageVoltage
+ // todo: probably add brakeRpmLimit
+ // todo: add sportMode to turn off this function (or part of function)
+ return 0;
+}
Index: controllers/math/engine_math.h
===================================================================
--- controllers/math/engine_math.h (revision 2629)
+++ controllers/math/engine_math.h (working copy)
@@ -56,6 +56,9 @@
void setSingleCoilDwell(engine_configuration_s *engineConfiguration);
+int engineNeedSkipStokeT(engine_configuration_s *engineConfiguration);
+#define engineNeedSkipStoke() engineNeedSkipStokeT(engineConfiguration)
+
#ifdef __cplusplus
}
#endif /* __cplusplus */
Index: controllers/trigger/main_trigger_callback.cpp
===================================================================
--- controllers/trigger/main_trigger_callback.cpp (revision 2629)
+++ controllers/trigger/main_trigger_callback.cpp (working copy)
@@ -43,6 +43,7 @@
#include "histogram.h"
#include "rfiutil.h"
#include "LocalVersionHolder.h"
+#include "engine_math.h"
static LocalVersionHolder localVersion;
@@ -87,6 +88,10 @@
if (isCranking())
scheduleMsg(&logger, "crankingFuel=%f for CLT=%fC", fuelMs, getCoolantTemperature());
+ if (engineNeedSkipStoke()) {
+ fuelMs = 0;
+ }
+
scheduleOutput(event->actuator, delay * TICKS_IN_MS, fuelMs * TICKS_IN_MS, chTimeNow());
}
замечания?
Re: ограничение стартовых оборотов
Posted: Tue Apr 22, 2014 1:26 pm
by AndreyB
Re: ограничение стартовых оборотов
Posted: Sun Apr 27, 2014 7:00 pm
by rus084
Это мелочь , ведь true=1?
а функция очень полезна будет , еще в Todo забыл добавить damageCLT - у вас чтобы при отказе термостата или вентилятора не закипело .
Re: ограничение стартовых оборотов
Posted: Sun Apr 27, 2014 7:10 pm
by AndreyB
нет, это не мелочь - код должен быть хорошим. ты же не считаешь, что ты можешь писать халтурно, а другие за тобой улучшат?
кстати
Code: Select all
if (engineNeedSkipStoke()) {
fuelMs = 0;
}
это просто неверно - потому что если пропускать, то нужно делать return - а не планироать сигнал нулевой длинны.
если посмотреть на то, какие методы откуда вызываются - то кажется должно хватать проверки один в правильном месте, тогда ни зажигания не топлива не будет просто потому что метод не будет вызван
Re: ограничение стартовых оборотов
Posted: Sun Apr 27, 2014 7:35 pm
by rus084
Переписать под класс с++ ?
Или в отдельном файле это разместить?
Re: ограничение стартовых оборотов
Posted: Sun Apr 27, 2014 7:38 pm
by AndreyB
Ээээ, неожиданный поворот.
Давай попробуем завтра голосом по скайпу разобраться?