mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-22 16:19:19 +02:00
Some additional functions for diesel engine regulator for hydrodiesel vehicles
This commit is contained in:
committed by
tmj-fstate
parent
83743fe99b
commit
7fbc864852
@@ -1041,6 +1041,7 @@ public:
|
|||||||
double dizel_nmin = 0.0; /*najmniejsza dopuszczalna predkosc obrotowa*/
|
double dizel_nmin = 0.0; /*najmniejsza dopuszczalna predkosc obrotowa*/
|
||||||
double dizel_nmin_hdrive = 0.0; /*najmniejsza dopuszczalna predkosc obrotowa w czasie jazdy na hydro */
|
double dizel_nmin_hdrive = 0.0; /*najmniejsza dopuszczalna predkosc obrotowa w czasie jazdy na hydro */
|
||||||
double dizel_nmin_hdrive_factor = 0.0; /*wspolczynnik wzrostu obrotow minimalnych hydro zaleznosci od zadanego procentu*/
|
double dizel_nmin_hdrive_factor = 0.0; /*wspolczynnik wzrostu obrotow minimalnych hydro zaleznosci od zadanego procentu*/
|
||||||
|
double dizel_nmin_retarder = 0.0; /*obroty pracy podczas hamowania retarderem*/
|
||||||
double dizel_minVelfullengage = 0.0; /*najmniejsza predkosc przy jezdzie ze sprzeglem bez poslizgu*/
|
double dizel_minVelfullengage = 0.0; /*najmniejsza predkosc przy jezdzie ze sprzeglem bez poslizgu*/
|
||||||
double dizel_maxVelANS = 3.0; /*predkosc progowa rozlaczenia przetwornika momentu*/
|
double dizel_maxVelANS = 3.0; /*predkosc progowa rozlaczenia przetwornika momentu*/
|
||||||
double dizel_AIM = 1.0; /*moment bezwladnosci walu itp*/
|
double dizel_AIM = 1.0; /*moment bezwladnosci walu itp*/
|
||||||
@@ -1070,6 +1071,7 @@ public:
|
|||||||
double hydro_R_FillRateInc = 1.0; /*szybkosc napelniania sprzegla*/
|
double hydro_R_FillRateInc = 1.0; /*szybkosc napelniania sprzegla*/
|
||||||
double hydro_R_FillRateDec = 1.0; /*szybkosc oprozniania sprzegla*/
|
double hydro_R_FillRateDec = 1.0; /*szybkosc oprozniania sprzegla*/
|
||||||
double hydro_R_MinVel = 1.0; /*minimalna predkosc, przy ktorej retarder dziala*/
|
double hydro_R_MinVel = 1.0; /*minimalna predkosc, przy ktorej retarder dziala*/
|
||||||
|
double hydro_R_EngageVel = 1.0; /*minimalna predkosc hamowania, przy ktorej sprzeglo jest wciaz wlaczone*/
|
||||||
/*- dla lokomotyw spalinowo-elektrycznych -*/
|
/*- dla lokomotyw spalinowo-elektrycznych -*/
|
||||||
double AnPos = 0.0; // pozycja sterowania dokladnego (analogowego)
|
double AnPos = 0.0; // pozycja sterowania dokladnego (analogowego)
|
||||||
bool AnalogCtrl = false; //
|
bool AnalogCtrl = false; //
|
||||||
@@ -1310,6 +1312,7 @@ public:
|
|||||||
double dizel_engagedeltaomega = 0.0; /*roznica predkosci katowych tarcz sprzegla*/
|
double dizel_engagedeltaomega = 0.0; /*roznica predkosci katowych tarcz sprzegla*/
|
||||||
double dizel_n_old = 0.0; /*poredkosc na potrzeby obliczen sprzegiel*/
|
double dizel_n_old = 0.0; /*poredkosc na potrzeby obliczen sprzegiel*/
|
||||||
double dizel_Torque = 0.0; /*poredkosc na potrzeby obliczen sprzegiel*/
|
double dizel_Torque = 0.0; /*poredkosc na potrzeby obliczen sprzegiel*/
|
||||||
|
double dizel_nreg_min = 0.0; /*predkosc regulatora minimalna, zmienna w hydro*/
|
||||||
|
|
||||||
/* - zmienne dla przetowrnika momentu */
|
/* - zmienne dla przetowrnika momentu */
|
||||||
double hydro_TC_Fill = 0.0; /*napelnienie*/
|
double hydro_TC_Fill = 0.0; /*napelnienie*/
|
||||||
@@ -1565,7 +1568,7 @@ public:
|
|||||||
bool dizel_EngageSwitch(double state);
|
bool dizel_EngageSwitch(double state);
|
||||||
bool dizel_EngageChange(double dt);
|
bool dizel_EngageChange(double dt);
|
||||||
bool dizel_AutoGearCheck(void);
|
bool dizel_AutoGearCheck(void);
|
||||||
double dizel_fillcheck(int mcp);
|
double dizel_fillcheck(int mcp, double dt);
|
||||||
double dizel_Momentum(double dizel_fill, double n, double dt);
|
double dizel_Momentum(double dizel_fill, double n, double dt);
|
||||||
double dizel_MomentumRetarder(double n, double dt); // moment hamowania retardera
|
double dizel_MomentumRetarder(double n, double dt); // moment hamowania retardera
|
||||||
void dizel_HeatSet( float const Value );
|
void dizel_HeatSet( float const Value );
|
||||||
|
|||||||
@@ -6359,10 +6359,15 @@ bool TMoverParameters::dizel_AutoGearCheck(void)
|
|||||||
if (EIMCtrlType > 0) //sterowanie komputerowe
|
if (EIMCtrlType > 0) //sterowanie komputerowe
|
||||||
{
|
{
|
||||||
if (dizel_automaticgearstatus == 0)
|
if (dizel_automaticgearstatus == 0)
|
||||||
|
{
|
||||||
if ((hydro_TC && hydro_TC_Fill > 0.01) || (eimic_real > 0.0))
|
if ((hydro_TC && hydro_TC_Fill > 0.01) || (eimic_real > 0.0))
|
||||||
dizel_EngageSwitch(1.0);
|
dizel_EngageSwitch(1.0);
|
||||||
|
else
|
||||||
|
if (Vel > hydro_R_EngageVel && hydro_R && hydro_R_Fill > 0.01)
|
||||||
|
dizel_EngageSwitch(0.5);
|
||||||
else
|
else
|
||||||
dizel_EngageSwitch(0.0);
|
dizel_EngageSwitch(0.0);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
dizel_EngageSwitch(0.0);
|
dizel_EngageSwitch(0.0);
|
||||||
}
|
}
|
||||||
@@ -6498,7 +6503,7 @@ bool TMoverParameters::dizel_Update(double dt) {
|
|||||||
dizel_EngageChange( dt );
|
dizel_EngageChange( dt );
|
||||||
DU = dizel_AutoGearCheck();
|
DU = dizel_AutoGearCheck();
|
||||||
double const fillspeed { 2 };
|
double const fillspeed { 2 };
|
||||||
dizel_fill = dizel_fill + fillspeed * dt * ( dizel_fillcheck( MainCtrlPos ) - dizel_fill );
|
dizel_fill = dizel_fill + fillspeed * dt * ( dizel_fillcheck( MainCtrlPos , dt ) - dizel_fill );
|
||||||
}
|
}
|
||||||
|
|
||||||
dizel_Heat( dt );
|
dizel_Heat( dt );
|
||||||
@@ -6510,10 +6515,9 @@ bool TMoverParameters::dizel_Update(double dt) {
|
|||||||
// Q: 20160715
|
// Q: 20160715
|
||||||
// oblicza napelnienie, uzwglednia regulator obrotow
|
// oblicza napelnienie, uzwglednia regulator obrotow
|
||||||
// *************************************************************************************************
|
// *************************************************************************************************
|
||||||
double TMoverParameters::dizel_fillcheck(int mcp)
|
double TMoverParameters::dizel_fillcheck(int mcp, double dt)
|
||||||
{
|
{
|
||||||
auto realfill { 0.0 };
|
auto realfill { 0.0 };
|
||||||
auto nreg_min { dizel_nmin * 0.98 };
|
|
||||||
|
|
||||||
if( ( true == Mains )
|
if( ( true == Mains )
|
||||||
&& ( MainCtrlPosNo > 0 )
|
&& ( MainCtrlPosNo > 0 )
|
||||||
@@ -6533,11 +6537,14 @@ double TMoverParameters::dizel_fillcheck(int mcp)
|
|||||||
realfill = std::max(0.0, eimic_real);
|
realfill = std::max(0.0, eimic_real);
|
||||||
if (eimic_real>0 && !hydro_TC_Lockup)
|
if (eimic_real>0 && !hydro_TC_Lockup)
|
||||||
{
|
{
|
||||||
nreg_min = dizel_nmin_hdrive + eimic_real * dizel_nmin_hdrive_factor;
|
dizel_nreg_min = std::min(dizel_nreg_min + 2.5 * dt, dizel_nmin_hdrive + eimic_real * dizel_nmin_hdrive_factor);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
nreg_min = dizel_nmin;
|
if (Vel < hydro_R_EngageVel && hydro_R && hydro_R_Fill > 0.01)
|
||||||
|
dizel_nreg_min = std::min(dizel_nreg_min + 5.0 * dt, dizel_nmin_retarder);
|
||||||
|
else
|
||||||
|
dizel_nreg_min = dizel_nmin;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -6587,7 +6594,7 @@ double TMoverParameters::dizel_fillcheck(int mcp)
|
|||||||
realfill = 0;
|
realfill = 0;
|
||||||
if (enrot < nreg) //pod predkoscia regulatora dawka zadana
|
if (enrot < nreg) //pod predkoscia regulatora dawka zadana
|
||||||
realfill = realfill;
|
realfill = realfill;
|
||||||
if ((enrot < nreg_min)&&(RList[mcp].R>0.001)) //jesli ponizej biegu jalowego i niezerowa dawka, to dawaj pelna
|
if ((enrot < dizel_nreg_min)&&(RList[mcp].R>0.001)) //jesli ponizej biegu jalowego i niezerowa dawka, to dawaj pelna
|
||||||
realfill = 1;
|
realfill = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -9151,6 +9158,7 @@ void TMoverParameters::LoadFIZ_Engine( std::string const &Input ) {
|
|||||||
|
|
||||||
extract_value( dizel_nmin, "nmin", Input, "" );
|
extract_value( dizel_nmin, "nmin", Input, "" );
|
||||||
dizel_nmin /= 60.0;
|
dizel_nmin /= 60.0;
|
||||||
|
dizel_nreg_min = dizel_nmin * 0.98;
|
||||||
extract_value(dizel_nmin_hdrive, "nmin_hdrive", Input, "");
|
extract_value(dizel_nmin_hdrive, "nmin_hdrive", Input, "");
|
||||||
dizel_nmin_hdrive /= 60.0;
|
dizel_nmin_hdrive /= 60.0;
|
||||||
if (dizel_nmin_hdrive == 0.0) {
|
if (dizel_nmin_hdrive == 0.0) {
|
||||||
@@ -9158,6 +9166,11 @@ void TMoverParameters::LoadFIZ_Engine( std::string const &Input ) {
|
|||||||
}
|
}
|
||||||
extract_value(dizel_nmin_hdrive_factor, "nmin_hdrive_factor", Input, "");
|
extract_value(dizel_nmin_hdrive_factor, "nmin_hdrive_factor", Input, "");
|
||||||
dizel_nmin_hdrive_factor /= 60.0;
|
dizel_nmin_hdrive_factor /= 60.0;
|
||||||
|
extract_value(dizel_nmin_retarder, "nmin_retarder", Input, "");
|
||||||
|
dizel_nmin_retarder /= 60.0;
|
||||||
|
if (dizel_nmin_retarder == 0.0) {
|
||||||
|
dizel_nmin_retarder = dizel_nmin;
|
||||||
|
}
|
||||||
// TODO: unify naming scheme and sort out which diesel engine params are used where and how
|
// TODO: unify naming scheme and sort out which diesel engine params are used where and how
|
||||||
extract_value( nmax, "nmax", Input, "" );
|
extract_value( nmax, "nmax", Input, "" );
|
||||||
nmax /= 60.0;
|
nmax /= 60.0;
|
||||||
@@ -9203,6 +9216,7 @@ void TMoverParameters::LoadFIZ_Engine( std::string const &Input ) {
|
|||||||
extract_value(hydro_R_FillRateInc, "R_FRI", Input, "");
|
extract_value(hydro_R_FillRateInc, "R_FRI", Input, "");
|
||||||
extract_value(hydro_R_FillRateDec, "R_FRD", Input, "");
|
extract_value(hydro_R_FillRateDec, "R_FRD", Input, "");
|
||||||
extract_value(hydro_R_MinVel, "R_MinVel", Input, "");
|
extract_value(hydro_R_MinVel, "R_MinVel", Input, "");
|
||||||
|
extract_value(hydro_R_EngageVel, "R_EngageVel", Input, "");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|||||||
Reference in New Issue
Block a user