From 387f396ecb6c2d0abe616dedbf5cca2202fdca19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kr=C3=B3lik=20Uszasty?= Date: Mon, 16 Jul 2018 18:46:07 +0200 Subject: [PATCH] Fix for EP/MED brake after LBP changes --- DynObj.cpp | 10 +++++----- McZapkie/MOVER.h | 3 ++- McZapkie/Mover.cpp | 6 ++++-- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/DynObj.cpp b/DynObj.cpp index 053c7943..ee5920b6 100644 --- a/DynObj.cpp +++ b/DynObj.cpp @@ -3206,20 +3206,20 @@ bool TDynamicObject::Update(double dt, double dt1) p->MoverParameters->Hamulec->GetFC( Nmax / (p->MoverParameters->NAxles * p->MoverParameters->NBpA), VelC) * 1000; // sila hamowania pn - p->MoverParameters->LocalBrakePosA = (p->MoverParameters->SlippingWheels ? 0 : FzEP[i] / FmaxPoj); - if (p->MoverParameters->LocalBrakePosA>0.009) + p->MoverParameters->LocalBrakePosAEIM = (p->MoverParameters->SlippingWheels ? 0 : FzEP[i] / FmaxPoj); + if (p->MoverParameters->LocalBrakePosAEIM>0.009) if (p->MoverParameters->P2FTrans * p->MoverParameters->BrakeCylMult[0] * p->MoverParameters->MaxBrakePress[0] != 0) { float x = (p->MoverParameters->BrakeSlckAdj / p->MoverParameters->BrakeCylMult[0] + p->MoverParameters->BrakeCylSpring) / (p->MoverParameters->P2FTrans * p->MoverParameters->MaxBrakePress[0]); - p->MoverParameters->LocalBrakePosA = x + (1 - x) * p->MoverParameters->LocalBrakePosA; + p->MoverParameters->LocalBrakePosAEIM = x + (1 - x) * p->MoverParameters->LocalBrakePosAEIM; } else - p->MoverParameters->LocalBrakePosA = p->MoverParameters->LocalBrakePosA; + p->MoverParameters->LocalBrakePosAEIM = p->MoverParameters->LocalBrakePosAEIM; else - p->MoverParameters->LocalBrakePosA = 0; + p->MoverParameters->LocalBrakePosAEIM = 0; ++i; } diff --git a/McZapkie/MOVER.h b/McZapkie/MOVER.h index 426d3f6f..69801a14 100644 --- a/McZapkie/MOVER.h +++ b/McZapkie/MOVER.h @@ -1025,7 +1025,8 @@ public: double BrakeCtrlPosR = 0.0; /*nastawa hamulca zespolonego - plynna dla FV4a*/ double BrakeCtrlPos2 = 0.0; /*nastawa hamulca zespolonego - kapturek dla FV4a*/ int ManualBrakePos = 0; /*nastawa hamulca recznego*/ - double LocalBrakePosA = 0.0; + double LocalBrakePosA = 0.0; /*nastawa hamulca pomocniczego*/ + double LocalBrakePosAEIM = 0.0; /*pozycja hamulca pomocniczego ep dla asynchronicznych ezt*/ /* int BrakeStatus = b_off; //0 - odham, 1 - ham., 2 - uszk., 4 - odluzniacz, 8 - antyposlizg, 16 - uzyte EP, 32 - pozycja R, 64 - powrot z R */ diff --git a/McZapkie/Mover.cpp b/McZapkie/Mover.cpp index 72b32c95..8b1b5c17 100644 --- a/McZapkie/Mover.cpp +++ b/McZapkie/Mover.cpp @@ -3462,8 +3462,10 @@ void TMoverParameters::UpdatePipePressure(double dt) if ((BrakeCtrlPosNo > 1) /*&& (ActiveCab != 0)*/) // with BrakePressureTable[BrakeCtrlPos] do { - dpLocalValve = LocHandle->GetPF(LocalBrakePosA, Hamulec->GetBCP(), ScndPipePress, dt, 0); - + if ((EngineType != TEngineType::ElectricInductionMotor)) + dpLocalValve = LocHandle->GetPF(std::max(LocalBrakePosA, LocalBrakePosAEIM), Hamulec->GetBCP(), ScndPipePress, dt, 0); + else + dpLocalValve = LocHandle->GetPF(LocalBrakePosAEIM, Hamulec->GetBCP(), ScndPipePress, dt, 0); if( ( BrakeHandle == TBrakeHandle::FV4a ) && ( ( PipePress < 2.75 ) && ( ( Hamulec->GetStatus() & b_rls ) == 0 ) )