From 4bf900cbab30466cee2d3c93c9470467635e5c34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kr=C3=B3lik=20Uszasty?= Date: Sat, 14 Sep 2019 23:26:37 +0200 Subject: [PATCH] Modified overpressure for MHZ_K5P --- McZapkie/hamulce.cpp | 14 +++++++++++--- McZapkie/hamulce.h | 1 + 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/McZapkie/hamulce.cpp b/McZapkie/hamulce.cpp index 618ed5ff..4bea070e 100644 --- a/McZapkie/hamulce.cpp +++ b/McZapkie/hamulce.cpp @@ -2771,14 +2771,19 @@ double TMHZ_K5P::GetPF(double i_bcp, double PP, double HP, double dt, double ep) else CP = CP + 9 * Min0R(abs(LimCP - CP), 0.05) * PR(CP, LimCP) * dt; // zbiornik sterujacy - dpPipe = Min0R(HP, CP + TP + RedAdj); + double uop = UnbrakeOverPressure; //unbrake over pressure in actual state + ManualOvrldActive = (UniversalFlag & TUniversalBrake::ub_HighPressure); //button is pressed + if (ManualOvrld && !ManualOvrldActive) //no overpressure for not pressed button if it does not exists + uop = 0; + + dpPipe = Min0R(HP, CP + TP + RedAdj); if (dpPipe > PP) dpMainValve = -PFVa(HP, PP, ActFlowSpeed / LBDelay, dpPipe, 0.4); else dpMainValve = PFVd(PP, 0, ActFlowSpeed / LBDelay, dpPipe, 0.4); - if ((EQ(i_bcp, -1)&&(AutoOvrld))||(i_bcp<0.5 && ManualOvrldActive )) + if ((EQ(i_bcp, -1) && (AutoOvrld)) || ((i_bcp<0.5) && (UniversalFlag & TUniversalBrake::ub_Overload))) { if ((TP < 1)) TP = TP + 0.03 * dt; @@ -2834,10 +2839,13 @@ double TMHZ_K5P::GetCP() return CP; } -void TMHZ_K5P::SetParams(bool AO, bool MO, double, double) +void TMHZ_K5P::SetParams(bool AO, bool MO, double OverP, double) { AutoOvrld = AO; ManualOvrld = MO; + UnbrakeOverPressure = std::max(0.0, OverP); + Fala = (OverP > 0.01); + } bool TMHZ_K5P::EQ(double pos, double i_pos) diff --git a/McZapkie/hamulce.h b/McZapkie/hamulce.h index 15263b88..12f43950 100644 --- a/McZapkie/hamulce.h +++ b/McZapkie/hamulce.h @@ -630,6 +630,7 @@ private: double RP = 0.0; //zbiornik redukcyjny double RedAdj = 0.0; //dostosowanie reduktora cisnienia (krecenie kapturkiem) bool Fala = false; //czy jest napelnianie uderzeniowe + double UnbrakeOverPressure = 0.0; static double const pos_table[11]; //= { -2, 10, -1, 0, 0, 2, 9, 10, 0, 0, 0 }; bool EQ(double pos, double i_pos);