From 450b60d7bd05535a8c74b7b48c4b0e1296d60559 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kr=C3=B3lik=20Uszasty?= Date: Mon, 10 Sep 2018 21:27:12 +0200 Subject: [PATCH] Variable fAccThreshold for dt_EZT and dt_DMU --- Driver.cpp | 14 ++++++++++---- Driver.h | 3 ++- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/Driver.cpp b/Driver.cpp index 2aa98b08..c180ea66 100644 --- a/Driver.cpp +++ b/Driver.cpp @@ -1932,21 +1932,22 @@ void TController::AutoRewident() 0.25 ); if( mvOccupied->TrainType == dt_EZT ) { - fAccThreshold = std::max( -0.55, -fBrake_a0[ BrakeAccTableSize ] - 8 * fBrake_a1[ BrakeAccTableSize ] ); + fNominalAccThreshold = std::max( -0.75, -fBrake_a0[ BrakeAccTableSize ] - 8 * fBrake_a1[ BrakeAccTableSize ] ); fBrakeReaction = 0.25; } else if( mvOccupied->TrainType == dt_DMU ) { - fAccThreshold = std::max( -0.45, -fBrake_a0[ BrakeAccTableSize ] - 8 * fBrake_a1[ BrakeAccTableSize ] ); + fNominalAccThreshold = std::max( -0.45, -fBrake_a0[ BrakeAccTableSize ] - 8 * fBrake_a1[ BrakeAccTableSize ] ); fBrakeReaction = 0.25; } else if (ustaw > 16) { - fAccThreshold = -fBrake_a0[ BrakeAccTableSize ] - 4 * fBrake_a1[ BrakeAccTableSize ]; + fNominalAccThreshold = -fBrake_a0[ BrakeAccTableSize ] - 4 * fBrake_a1[ BrakeAccTableSize ]; fBrakeReaction = 1.00 + fLength*0.004; } else { - fAccThreshold = -fBrake_a0[ BrakeAccTableSize ] - 1 * fBrake_a1[ BrakeAccTableSize ]; + fNominalAccThreshold = -fBrake_a0[ BrakeAccTableSize ] - 1 * fBrake_a1[ BrakeAccTableSize ]; fBrakeReaction = 1.00 + fLength*0.005; } + fAccThreshold = fNominalAccThreshold; /* if( IsHeavyCargoTrain ) { // HACK: heavy cargo trains don't activate brakes early enough @@ -3783,6 +3784,11 @@ TController::UpdateSituation(double dt) { fBrake_a0[0] = fBrake_a0[index]; fBrake_a1[0] = fBrake_a1[index]; + if ((mvOccupied->TrainType == dt_EZT) || (mvOccupied->TrainType == dt_DMU)) { + auto Coeff = clamp( mvOccupied->Vel*0.015 , 0.5 , 1.0); + fAccThreshold = fNominalAccThreshold * Coeff - fBrake_a0[BrakeAccTableSize] * (1.0 - Coeff); + } + Ready = true; // wstępnie gotowy fReady = 0.0; // założenie, że odhamowany fAccGravity = 0.0; // przyspieszenie wynikające z pochylenia diff --git a/Driver.h b/Driver.h index e508b747..1956f0cc 100644 --- a/Driver.h +++ b/Driver.h @@ -210,7 +210,8 @@ public: double fBrakeDist = 0.0; // przybliżona droga hamowania double BrakeAccFactor() const; double fBrakeReaction = 1.0; //opóźnienie zadziałania hamulca - czas w s / (km/h) - double fAccThreshold = 0.0; // próg opóźnienia dla zadziałania hamulca + double fNominalAccThreshold = 0.0; // nominalny próg opóźnienia dla zadziałania hamulca + double fAccThreshold = 0.0; // aktualny próg opóźnienia dla zadziałania hamulca double AbsAccS_pub = 0.0; // próg opóźnienia dla zadziałania hamulca // dla fBrake_aX: // indeks [0] - wartości odpowiednie dla aktualnej prędkości