diff --git a/McZapkie/MOVER.h b/McZapkie/MOVER.h index cc95aa54..ddd3b5ea 100644 --- a/McZapkie/MOVER.h +++ b/McZapkie/MOVER.h @@ -1077,10 +1077,12 @@ public: double P2FTrans = 0.0; double TrackBrakeForce = 0.0; /*sila nacisku hamulca szynowego*/ int BrakeMethod = 0; /*flaga rodzaju hamulca*/ - bool Handle_AutomaticOverload = false; - bool Handle_ManualOverload = false; + bool Handle_AutomaticOverload = false; //automatyczna asymilacja na pozycji napelniania + bool Handle_ManualOverload = false; //reczna asymilacja na guzik double Handle_GenericDoubleParameter1 = 0.0; double Handle_GenericDoubleParameter2 = 0.0; + double Handle_OverloadMaxPressure = 1.0; //maksymalne zwiekszenie cisnienia przy asymilacji + double Handle_OverloadPressureDecrease = 0.002; //predkosc spadku cisnienia przy asymilacji /*max. cisnienie w cyl. ham., stala proporcjonalnosci p-K*/ double HighPipePress = 0.0; double LowPipePress = 0.0; diff --git a/McZapkie/Mover.cpp b/McZapkie/Mover.cpp index d7e973eb..5bfcf9b3 100644 --- a/McZapkie/Mover.cpp +++ b/McZapkie/Mover.cpp @@ -10017,6 +10017,8 @@ void TMoverParameters::LoadFIZ_Cntrl( std::string const &line ) { extract_value( Handle_ManualOverload, "HMO", line, "" ); extract_value( Handle_GenericDoubleParameter1, "HGDP1", line, "" ); extract_value( Handle_GenericDoubleParameter2, "HGDP2", line, "" ); + extract_value( Handle_OverloadMaxPressure, "OMP", line, "" ); + extract_value( Handle_OverloadPressureDecrease, "OPD", line, "" ); // brakelochandle { std::map locbrakehandles{ @@ -11072,7 +11074,7 @@ bool TMoverParameters::CheckLocomotiveParameters(bool ReadyFlag, int Dir) default: Handle = std::make_shared(); } - Handle->SetParams(Handle_AutomaticOverload, Handle_ManualOverload, Handle_GenericDoubleParameter1, Handle_GenericDoubleParameter2); + Handle->SetParams(Handle_AutomaticOverload, Handle_ManualOverload, Handle_GenericDoubleParameter1, Handle_GenericDoubleParameter2, Handle_OverloadMaxPressure, Handle_OverloadPressureDecrease); switch( BrakeLocHandle ) { case TBrakeHandle::FD1: diff --git a/McZapkie/hamulce.cpp b/McZapkie/hamulce.cpp index 2e43eaba..dc7fcfb8 100644 --- a/McZapkie/hamulce.cpp +++ b/McZapkie/hamulce.cpp @@ -2592,7 +2592,7 @@ double TMHZ_EN57::GetPF( double i_bcp, double PP, double HP, double dt, double e if ((TP > 0)&&(CP > 4.9)) { - DP = 0.045; + DP = OverloadPressureDecrease; if (EQ(i_bcp, 0)) TP = TP - DP * dt; Sounds[s_fv4a_t] = DP; @@ -2636,7 +2636,7 @@ double TMHZ_EN57::GetPF( double i_bcp, double PP, double HP, double dt, double e { if ((TP < 5)) TP = TP + dt; // 5/10 - if ((TP < 1)) + if ((TP < OverloadMaxPressure)) TP = TP - 0.5 * dt; // 5/10 } @@ -2711,12 +2711,14 @@ double TMHZ_EN57::LPP_RP(double pos) // cisnienie z zaokraglonej pozycji; return 5.0; } -void TMHZ_EN57::SetParams(bool AO, bool MO, double OverP, double) +void TMHZ_EN57::SetParams(bool AO, bool MO, double OverP, double, double OMP, double OPD) { AutoOvrld = AO; ManualOvrld = MO; UnbrakeOverPressure = std::max(0.0, OverP); Fala = (OverP > 0.01); + OverloadMaxPressure = OMP; + OverloadPressureDecrease = OPD; } @@ -2747,7 +2749,7 @@ double TMHZ_K5P::GetPF(double i_bcp, double PP, double HP, double dt, double ep) if ((TP > 0)&&(CP>4.9)) { - DP = 0.004; + DP = OverloadPressureDecrease; TP = TP - DP * dt; Sounds[s_fv4a_t] = DP; } @@ -2785,7 +2787,7 @@ double TMHZ_K5P::GetPF(double i_bcp, double PP, double HP, double dt, double ep) if ((EQ(i_bcp, -1) && (AutoOvrld)) || ((i_bcp<0.5) && (UniversalFlag & TUniversalBrake::ub_Overload))) { - if ((TP < 1)) + if ((TP < OverloadMaxPressure)) TP = TP + 0.03 * dt; } @@ -2839,13 +2841,15 @@ double TMHZ_K5P::GetCP() return CP; } -void TMHZ_K5P::SetParams(bool AO, bool MO, double OverP, double) +void TMHZ_K5P::SetParams(bool AO, bool MO, double OverP, double, double OMP, double OPD) { AutoOvrld = AO; ManualOvrld = MO; UnbrakeOverPressure = std::max(0.0, OverP); Fala = (OverP > 0.01); - + OverloadMaxPressure = OMP; + OverloadPressureDecrease = OPD; + } bool TMHZ_K5P::EQ(double pos, double i_pos) @@ -2875,7 +2879,7 @@ double TMHZ_6P::GetPF(double i_bcp, double PP, double HP, double dt, double ep) if ((TP > 0)&&(CP>4.9)) { - DP = 0.004; + DP = OverloadPressureDecrease; TP = TP - DP * dt; Sounds[s_fv4a_t] = DP; } @@ -2919,7 +2923,7 @@ double TMHZ_6P::GetPF(double i_bcp, double PP, double HP, double dt, double ep) if ((EQ(i_bcp, -1) && (AutoOvrld)) || ((i_bcp<0.5) && (UniversalFlag & TUniversalBrake::ub_Overload))) { - if ((TP < 1)) + if ((TP < OverloadMaxPressure)) TP = TP + 0.03 * dt; } @@ -2973,12 +2977,14 @@ double TMHZ_6P::GetCP() return CP; } -void TMHZ_6P::SetParams(bool AO, bool MO, double OverP, double) +void TMHZ_6P::SetParams(bool AO, bool MO, double OverP, double, double OMP, double OPD) { AutoOvrld = AO; ManualOvrld = MO; UnbrakeOverPressure = std::max(0.0, OverP); Fala = (OverP > 0.01); + OverloadMaxPressure = OMP; + OverloadPressureDecrease = OPD; } diff --git a/McZapkie/hamulce.h b/McZapkie/hamulce.h index 17ae713d..851c1fb0 100644 --- a/McZapkie/hamulce.h +++ b/McZapkie/hamulce.h @@ -545,7 +545,7 @@ class TDriverHandle { virtual double GetSound(int i); //pobranie glosnosci wybranego dzwieku virtual double GetPos(int i); //pobranie numeru pozycji o zadanym kodzie (funkcji) virtual double GetEP(double pos); //pobranie sily hamulca ep - virtual void SetParams(bool AO, bool MO, double, double) {}; //ustawianie jakichs parametrów dla zaworu + virtual void SetParams(bool AO, bool MO, double, double, double OMP, double OPD) {}; //ustawianie jakichs parametrow dla zaworu virtual void OvrldButton(bool Active); //przycisk recznego przeladowania/asymilacji virtual void SetUniversalFlag(int flag); //przycisk uniwersalny inline TDriverHandle() { memset( Sounds, 0, sizeof( Sounds ) ); } @@ -603,6 +603,8 @@ class TMHZ_EN57 : public TDriverHandle { double RedAdj = 0.0; //dostosowanie reduktora cisnienia (krecenie kapturkiem) bool Fala = false; double UnbrakeOverPressure = 0.0; + double OverloadMaxPressure = 1.0; //maksymalne zwiekszenie cisnienia przy asymilacji + double OverloadPressureDecrease = 0.045; //predkosc spadku cisnienia przy asymilacji static double const pos_table[11]; //= { -2, 10, -1, 0, 0, 2, 9, 10, 0, 0, 0 }; double LPP_RP(double pos); @@ -616,7 +618,7 @@ class TMHZ_EN57 : public TDriverHandle { double GetPos(int i)/*override*/; double GetCP()/*override*/; double GetEP(double pos); - void SetParams(bool AO, bool MO, double OverP, double); + void SetParams(bool AO, bool MO, double OverP, double, double OMP, double OPD); inline TMHZ_EN57(void) : TDriverHandle() {} @@ -631,6 +633,8 @@ private: double RedAdj = 0.0; //dostosowanie reduktora cisnienia (krecenie kapturkiem) bool Fala = false; //czy jest napelnianie uderzeniowe double UnbrakeOverPressure = 0.0; + double OverloadMaxPressure = 1.0; //maksymalne zwiekszenie cisnienia przy asymilacji + double OverloadPressureDecrease = 0.002; //predkosc spadku cisnienia przy asymilacji static double const pos_table[11]; //= { -2, 10, -1, 0, 0, 2, 9, 10, 0, 0, 0 }; bool EQ(double pos, double i_pos); @@ -642,7 +646,7 @@ public: double GetSound(int i)/*override*/; double GetPos(int i)/*override*/; double GetCP()/*override*/; - void SetParams(bool AO, bool MO, double, double); /*ovveride*/ + void SetParams(bool AO, bool MO, double, double, double OMP, double OPD); /*ovveride*/ inline TMHZ_K5P(void) : TDriverHandle() @@ -658,6 +662,8 @@ private: double RedAdj = 0.0; //dostosowanie reduktora cisnienia (krecenie kapturkiem) bool Fala = false; //czy jest napelnianie uderzeniowe double UnbrakeOverPressure = 0.0; //wartosc napelniania uderzeniowego + double OverloadMaxPressure = 1.0; //maksymalne zwiekszenie cisnienia przy asymilacji + double OverloadPressureDecrease = 0.002; //predkosc spadku cisnienia przy asymilacji static double const pos_table[11]; //= { -2, 10, -1, 0, 0, 2, 9, 10, 0, 0, 0 }; bool EQ(double pos, double i_pos); @@ -669,7 +675,7 @@ public: double GetSound(int i)/*override*/; double GetPos(int i)/*override*/; double GetCP()/*override*/; - void SetParams(bool AO, bool MO, double, double); /*ovveride*/ + void SetParams(bool AO, bool MO, double, double, double OMP, double OPD); /*ovveride*/ inline TMHZ_6P(void) : TDriverHandle()