ограничение стартовых оборотов

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

ограничение стартовых оборотов

Post by rus084 »

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

Re: ограничение стартовых оборотов

Post by AndreyB »

Какую задачу решает эта фича? Это защита от дурака?

Или это уже в сторону launch control?
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
User avatar
rus084
contributor
contributor
Posts: 678
Joined: Sun Dec 01, 2013 1:40 pm
Location: Russia , Stavropol

Re: ограничение стартовых оборотов

Post by rus084 »

ну можно еще и стабилизировать стартовые обороты на уровне максимального крутящего момента
meXanicus
contributor
contributor
Posts: 314
Joined: Sat Dec 21, 2013 2:42 pm
Location: Russia, Rostov-na-Donu

Re: ограничение стартовых оборотов

Post by meXanicus »

У БМВ начала 2000-х если натянут ручник, то мотор не развивает обороты, вот защита, причем иногда нужная всем ))
Я на Drive2 Alfa Romeo 156 SW
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

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());
 }
 
замечания?
User avatar
AndreyB
Site Admin
Posts: 14325
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Github Username: rusefillc
Slack: Andrey B

Re: ограничение стартовых оборотов

Post by AndreyB »

Ну для начала не

Code: Select all

return 1;
а

Code: Select all

return TRUE;
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
User avatar
rus084
contributor
contributor
Posts: 678
Joined: Sun Dec 01, 2013 1:40 pm
Location: Russia , Stavropol

Re: ограничение стартовых оборотов

Post by rus084 »

Это мелочь , ведь true=1?
а функция очень полезна будет , еще в Todo забыл добавить damageCLT - у вас чтобы при отказе термостата или вентилятора не закипело .
User avatar
AndreyB
Site Admin
Posts: 14325
Joined: Wed Aug 28, 2013 1:28 am
Location: Jersey City
Github Username: rusefillc
Slack: Andrey B

Re: ограничение стартовых оборотов

Post by AndreyB »

нет, это не мелочь - код должен быть хорошим. ты же не считаешь, что ты можешь писать халтурно, а другие за тобой улучшат?

кстати

Code: Select all

if (engineNeedSkipStoke()) {
      fuelMs = 0;
  }
это просто неверно - потому что если пропускать, то нужно делать return - а не планироать сигнал нулевой длинны.

если посмотреть на то, какие методы откуда вызываются - то кажется должно хватать проверки один в правильном месте, тогда ни зажигания не топлива не будет просто потому что метод не будет вызван
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
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: 14325
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
Post Reply