16
0
mirror of https://github.com/MaSzyna-EU07/maszyna.git synced 2026-07-22 13:59:19 +02:00

Reworked main brake handle usage by AI - it can use time-dependent handles now.

This commit is contained in:
Królik Uszasty
2019-03-21 17:25:05 +01:00
committed by tmj-fstate
parent 019a0c2cf6
commit a3af2453a0
3 changed files with 74 additions and 44 deletions

View File

@@ -1776,6 +1776,7 @@ void TController::Activation()
// zaworze maszynisty, FVel6 po drugiej stronie nie luzuje // zaworze maszynisty, FVel6 po drugiej stronie nie luzuje
mvOccupied->BrakeLevelSet( mvOccupied->BrakeLevelSet(
mvOccupied->Handle->GetPos(bh_NP)); // odcięcie na zaworze maszynisty mvOccupied->Handle->GetPos(bh_NP)); // odcięcie na zaworze maszynisty
BrakeLevelSet(gbh_NP); //ustawienie zmiennej GBH
} }
mvOccupied->ActiveCab = mvOccupied->CabNo; // użytkownik moze zmienić ActiveCab wychodząc mvOccupied->ActiveCab = mvOccupied->CabNo; // użytkownik moze zmienić ActiveCab wychodząc
mvOccupied->CabDeactivisation(); // tak jest w Train.cpp mvOccupied->CabDeactivisation(); // tak jest w Train.cpp
@@ -2354,7 +2355,7 @@ double TController::BrakeAccFactor() const
double Factor = 1.0; double Factor = 1.0;
if( ( ActualProximityDist > fMinProximityDist ) if( ( ActualProximityDist > fMinProximityDist )
|| ( mvOccupied->Vel > VelDesired + fVelPlus ) ) { || ( mvOccupied->Vel > VelDesired + fVelPlus ) ) {
Factor += ( fBrakeReaction * ( mvOccupied->BrakeCtrlPosR < 0.5 ? 1.5 : 1 ) ) * mvOccupied->Vel / ( std::max( 0.0, ActualProximityDist ) + 1 ) * ( ( AccDesired - AbsAccS_pub ) / fAccThreshold ); Factor += ( fBrakeReaction * ( /*mvOccupied->BrakeCtrlPosR*/BrakeCtrlPosition < 0.5 ? 1.5 : 1 ) ) * mvOccupied->Vel / ( std::max( 0.0, ActualProximityDist ) + 1 ) * ( ( AccDesired - AbsAccS_pub ) / fAccThreshold );
} }
return Factor; return Factor;
} }
@@ -2393,7 +2394,7 @@ void TController::SetDriverPsyche()
{ // with Controlling do { // with Controlling do
if (mvControlling->MainCtrlPowerPos() < 3) if (mvControlling->MainCtrlPowerPos() < 3)
ReactionTime = mvControlling->InitialCtrlDelay + ReactionTime; ReactionTime = mvControlling->InitialCtrlDelay + ReactionTime;
if (mvOccupied->BrakeCtrlPos > 1) if (/* GBH mvOccupied->BrakeCtrlPos*/BrakeCtrlPosition > 1)
ReactionTime = 0.5 * ReactionTime; ReactionTime = 0.5 * ReactionTime;
} }
}; };
@@ -2518,6 +2519,7 @@ bool TController::PrepareEngine()
// enable train brake if it's off // enable train brake if it's off
if( mvOccupied->fBrakeCtrlPos == mvOccupied->Handle->GetPos( bh_NP ) ) { if( mvOccupied->fBrakeCtrlPos == mvOccupied->Handle->GetPos( bh_NP ) ) {
mvOccupied->BrakeLevelSet( mvOccupied->Handle->GetPos( bh_RP ) ); mvOccupied->BrakeLevelSet( mvOccupied->Handle->GetPos( bh_RP ) );
BrakeLevelSet(gbh_RP); // GBH
} }
} }
} }
@@ -2719,9 +2721,9 @@ bool TController::IncBrake()
} }
} }
else { else {
if( mvOccupied->BrakeCtrlPos + 1 == mvOccupied->BrakeCtrlPosNo ) { if( /*GBH mvOccupied->BrakeCtrlPos*/ BrakeCtrlPosition + 1 == mvOccupied->BrakeCtrlPosNo ) {
if (AccDesired < -1.5) // hamowanie nagle if (AccDesired < -1.5) // hamowanie nagle
OK = mvOccupied->BrakeLevelAdd(1.0); OK = /*mvOccupied->*/BrakeLevelAdd(1.0); //GBH
else else
OK = false; OK = false;
} }
@@ -2745,12 +2747,12 @@ bool TController::IncBrake()
pos_corr += mvOccupied->Handle->GetCP()*0.2; pos_corr += mvOccupied->Handle->GetCP()*0.2;
} }
double deltaAcc = -AccDesired*BrakeAccFactor() - (fBrake_a0[0] + 4.0 * (mvOccupied->BrakeCtrlPosR - 1 - pos_corr)*fBrake_a1[0]); double deltaAcc = -AccDesired*BrakeAccFactor() - (fBrake_a0[0] + 4.0 * (/*GBH mvOccupied->BrakeCtrlPosR*/BrakeCtrlPosition - 1 - pos_corr)*fBrake_a1[0]);
if( deltaAcc > fBrake_a1[0]) if( deltaAcc > fBrake_a1[0])
{ {
if( mvOccupied->BrakeCtrlPosR < 0.1 ) { if( /*GBH mvOccupied->BrakeCtrlPosR*/BrakeCtrlPosition < 0.1 ) {
OK = mvOccupied->BrakeLevelAdd( BrakingInitialLevel ); OK = /*mvOccupied->*/BrakeLevelAdd( BrakingInitialLevel ); //GBH
/* /*
// HACK: stronger braking to overcome SA134 engine behaviour // HACK: stronger braking to overcome SA134 engine behaviour
if( ( mvOccupied->TrainType == dt_DMU ) if( ( mvOccupied->TrainType == dt_DMU )
@@ -2765,11 +2767,15 @@ bool TController::IncBrake()
} }
else else
{ {
OK = mvOccupied->BrakeLevelAdd( BrakingLevelIncrease ); OK = /*mvOccupied->*/BrakeLevelAdd( BrakingLevelIncrease ); //GBH
// brake harder if the acceleration is much higher than desired // brake harder if the acceleration is much higher than desired
if( ( deltaAcc > 2 * fBrake_a1[ 0 ] ) /*if( ( deltaAcc > 2 * fBrake_a1[ 0 ] )
&& ( mvOccupied->BrakeCtrlPosR + BrakingLevelIncrease <= 5.0 ) ) { && ( mvOccupied->BrakeCtrlPosR + BrakingLevelIncrease <= 5.0 ) ) {
mvOccupied->BrakeLevelAdd( BrakingLevelIncrease ); mvOccupied->BrakeLevelAdd( BrakingLevelIncrease );
} GBH */
if ((deltaAcc > 2 * fBrake_a1[0])
&& (BrakeCtrlPosition + BrakingLevelIncrease <= 5.0)) {
/*mvOccupied->*/BrakeLevelAdd(BrakingLevelIncrease);
} }
} }
} }
@@ -2777,7 +2783,7 @@ bool TController::IncBrake()
OK = false; OK = false;
} }
} }
if( mvOccupied->BrakeCtrlPos > 0 ) { if( /*GBH mvOccupied->BrakeCtrlPos*/BrakeCtrlPosition > 0 ) {
mvOccupied->BrakeReleaser( 0 ); mvOccupied->BrakeReleaser( 0 );
} }
break; break;
@@ -2842,16 +2848,17 @@ bool TController::DecBrake()
OK = mvOccupied->DecLocalBrakeLevel(1 + floor(0.5 + fabs(AccDesired))); OK = mvOccupied->DecLocalBrakeLevel(1 + floor(0.5 + fabs(AccDesired)));
break; break;
case TBrakeSystem::Pneumatic: case TBrakeSystem::Pneumatic:
deltaAcc = -AccDesired*BrakeAccFactor() - (fBrake_a0[0] + 4 * (mvOccupied->BrakeCtrlPosR-1.0)*fBrake_a1[0]); deltaAcc = -AccDesired*BrakeAccFactor() - (fBrake_a0[0] + 4 * (/*GBH mvOccupied->BrakeCtrlPosR*/BrakeCtrlPosition -1.0)*fBrake_a1[0]);
if (deltaAcc < 0) if (deltaAcc < 0)
{ {
if (mvOccupied->BrakeCtrlPosR > 0) if (/*GBH mvOccupied->BrakeCtrlPosR*/BrakeCtrlPosition > 0)
{ {
OK = mvOccupied->BrakeLevelAdd(-0.25); OK = /*mvOccupied->*/BrakeLevelAdd(-0.25);
//if ((deltaAcc < 5 * fBrake_a1[0]) && (mvOccupied->BrakeCtrlPosR >= 1.2)) //if ((deltaAcc < 5 * fBrake_a1[0]) && (mvOccupied->BrakeCtrlPosR >= 1.2))
// mvOccupied->BrakeLevelAdd(-1.0); // mvOccupied->BrakeLevelAdd(-1.0);
if (mvOccupied->BrakeCtrlPosR < 0.74) /* if (mvOccupied->BrakeCtrlPosR < 0.74) GBH */
mvOccupied->BrakeLevelSet(0.0); if (BrakeCtrlPosition < 0.74)
/*mvOccupied->*/BrakeLevelSet(0.0);
} }
} }
if( !OK ) { if( !OK ) {
@@ -3181,14 +3188,20 @@ bool TController::DecSpeedEIM()
return OK; return OK;
} }
bool TController::BrakeLevelSet(double b) void TController::BrakeLevelSet(double b)
{ { // ustawienie pozycji hamulca na wartość (b) w zakresie od -2 do BrakeCtrlPosNo
return false; // jedyny dopuszczalny sposób przestawienia hamulca zasadniczego
if (BrakeCtrlPosition == b)
return; // nie przeliczać, jak nie ma zmiany
BrakeCtrlPosition = clamp(b, (double)gbh_MIN, (double)gbh_MAX);
} }
bool TController::BrakeLevelAdd(double b) bool TController::BrakeLevelAdd(double b)
{ { // dodanie wartości (b) do pozycji hamulca (w tym ujemnej)
return false; // zwraca false, gdy po dodaniu było by poza zakresem
BrakeLevelSet(BrakeCtrlPosition + b);
return b > 0.0 ? (BrakeCtrlPosition < gbh_MAX) :
(BrakeCtrlPosition > -1.0); // true, jeśli można kontynuować
} }
void TController::SpeedSet() void TController::SpeedSet()
@@ -3371,14 +3384,16 @@ void TController::SetTimeControllers()
{ {
if (mvOccupied->Handle->Time) if (mvOccupied->Handle->Time)
{ {
if ((BrakeCtrlPosition > 0) && (mvOccupied->PipePress - 0.05 > mvOccupied->HighPipePress - BrakeCtrlPosition*0.25*mvOccupied->DeltaPipePress)) if ((BrakeCtrlPosition > 0) && (mvOccupied->Handle->GetCP() - 0.05 > mvOccupied->HighPipePress - BrakeCtrlPosition*0.25*mvOccupied->DeltaPipePress))
mvOccupied->BrakeLevelSet(mvOccupied->Handle->GetPos(bh_MB)); mvOccupied->BrakeLevelSet(mvOccupied->Handle->GetPos(bh_FB));
else if ((BrakeCtrlPosition > 0) && (mvOccupied->PipePress + 0.05 < mvOccupied->HighPipePress - BrakeCtrlPosition*0.25*mvOccupied->DeltaPipePress)) else if ((BrakeCtrlPosition > 0) && (mvOccupied->Handle->GetCP() + 0.05 < mvOccupied->HighPipePress - BrakeCtrlPosition*0.25*mvOccupied->DeltaPipePress))
mvOccupied->BrakeLevelSet(mvOccupied->Handle->GetPos(bh_RP)); mvOccupied->BrakeLevelSet(mvOccupied->Handle->GetPos(bh_RP));
else if (BrakeCtrlPosition == 0) else if (BrakeCtrlPosition == 0)
mvOccupied->BrakeLevelSet(mvOccupied->Handle->GetPos(bh_RP)); mvOccupied->BrakeLevelSet(mvOccupied->Handle->GetPos(bh_RP));
else if (BrakeCtrlPosition == -1) else if (BrakeCtrlPosition == -1)
mvOccupied->BrakeLevelSet(mvOccupied->Handle->GetPos(bh_FS)); mvOccupied->BrakeLevelSet(mvOccupied->Handle->GetPos(bh_FS));
else if (BrakeCtrlPosition == -2)
mvOccupied->BrakeLevelSet(mvOccupied->Handle->GetPos(bh_NP));
} }
if (mvOccupied->BrakeHandle == TBrakeHandle::FV4a) mvOccupied->BrakeLevelSet(BrakeCtrlPosition); if (mvOccupied->BrakeHandle == TBrakeHandle::FV4a) mvOccupied->BrakeLevelSet(BrakeCtrlPosition);
} }
@@ -3389,11 +3404,11 @@ void TController::SetTimeControllers()
{ {
if (mvOccupied->EIMCtrlType == 1) //traxx if (mvOccupied->EIMCtrlType == 1) //traxx
{ {
if (mvOccupied->LocalBrakePosA > 0.95 * LocalBrakePosNo) mvOccupied->MainCtrlPos = 0; if (mvOccupied->LocalBrakePosA > 0.95) mvOccupied->MainCtrlPos = 0;
} }
else if (mvOccupied->EIMCtrlType == 2) //elf else if (mvOccupied->EIMCtrlType == 2) //elf
{ {
if (mvOccupied->LocalBrakePosA > 0.95 * LocalBrakePosNo) mvOccupied->MainCtrlPos = 1; if (mvOccupied->LocalBrakePosA > 0.95) mvOccupied->MainCtrlPos = 1;
} }
} }
}; };
@@ -4103,7 +4118,7 @@ TController::UpdateSituation(double dt) {
// Ra: odluźnianie przeładowanych lokomotyw, ciągniętych na zimno - prowizorka... // Ra: odluźnianie przeładowanych lokomotyw, ciągniętych na zimno - prowizorka...
if (AIControllFlag) // skład jak dotąd był wyluzowany if (AIControllFlag) // skład jak dotąd był wyluzowany
{ {
if( ( mvOccupied->BrakeCtrlPos == 0 ) // jest pozycja jazdy if( ( /*GBH mvOccupied->BrakeCtrlPos*/BrakeCtrlPosition == 0 ) // jest pozycja jazdy
&& ( ( vehicle->Hamulec->GetBrakeStatus() & b_dmg ) == 0 ) // brake isn't broken && ( ( vehicle->Hamulec->GetBrakeStatus() & b_dmg ) == 0 ) // brake isn't broken
&& ( vehicle->PipePress - 5.0 > -0.1 ) // jeśli ciśnienie jak dla jazdy && ( vehicle->PipePress - 5.0 > -0.1 ) // jeśli ciśnienie jak dla jazdy
&& ( vehicle->Hamulec->GetCRP() > vehicle->PipePress + 0.12 ) ) { // za dużo w zbiorniku && ( vehicle->Hamulec->GetCRP() > vehicle->PipePress + 0.12 ) ) { // za dużo w zbiorniku
@@ -4490,12 +4505,13 @@ TController::UpdateSituation(double dt) {
if( mvOccupied->SecuritySystem.Status > 1 ) { if( mvOccupied->SecuritySystem.Status > 1 ) {
// jak zadziałało CA/SHP // jak zadziałało CA/SHP
if( !mvOccupied->SecuritySystemReset() ) { // to skasuj if( !mvOccupied->SecuritySystemReset() ) { // to skasuj
if( ( mvOccupied->BrakeCtrlPos == 0 ) if( ( /*mvOccupied->BrakeCtrlPos*/BrakeCtrlPosition == 0 )
&& ( AccDesired > 0.0 ) && ( AccDesired > 0.0 )
&& ( ( TestFlag( mvOccupied->SecuritySystem.Status, s_SHPebrake ) ) && ( ( TestFlag( mvOccupied->SecuritySystem.Status, s_SHPebrake ) )
|| ( TestFlag( mvOccupied->SecuritySystem.Status, s_CAebrake ) ) ) ) { || ( TestFlag( mvOccupied->SecuritySystem.Status, s_CAebrake ) ) ) ) {
//!!! hm, może po prostu normalnie sterować hamulcem? //!!! hm, może po prostu normalnie sterować hamulcem?
mvOccupied->BrakeLevelSet( 0 ); //mvOccupied->BrakeLevelSet( 0 ); GBH
BrakeLevelSet(gbh_RP);
} }
} }
} }
@@ -4897,7 +4913,8 @@ TController::UpdateSituation(double dt) {
// (ustalić po czym poznać taki tor) // (ustalić po czym poznać taki tor)
++n; // to liczymy człony jako jeden ++n; // to liczymy człony jako jeden
p->MoverParameters->BrakeReleaser(1); // wyluzuj pojazd, aby dało się dopychać p->MoverParameters->BrakeReleaser(1); // wyluzuj pojazd, aby dało się dopychać
p->MoverParameters->BrakeLevelSet(0); // hamulec na zero, aby nie hamował // GBH p->MoverParameters->BrakeLevelSet(0); // hamulec na zero, aby nie hamował
BrakeLevelSet(gbh_RP);
if (n) if (n)
{ // jeśli jeszcze nie koniec { // jeśli jeszcze nie koniec
p = p->Prev(); // kolejny w stronę czoła składu (licząc od tyłu), bo dociskamy p = p->Prev(); // kolejny w stronę czoła składu (licząc od tyłu), bo dociskamy
@@ -5589,17 +5606,18 @@ TController::UpdateSituation(double dt) {
} }
} }
if (mvOccupied->BrakeSystem == TBrakeSystem::Pneumatic) // napełnianie uderzeniowe if (mvOccupied->BrakeSystem == TBrakeSystem::Pneumatic) // napełnianie uderzeniowe
if (mvOccupied->BrakeHandle == TBrakeHandle::FV4a || mvOccupied->BrakeHandle == TBrakeHandle::MHZ_6P) if (mvOccupied->BrakeHandle == TBrakeHandle::FV4a || mvOccupied->BrakeHandle == TBrakeHandle::MHZ_6P
|| mvOccupied->BrakeHandle == TBrakeHandle::M394)
{ {
if( mvOccupied->BrakeCtrlPos == -2 ) { if( /*GBH mvOccupied->BrakeCtrlPos*/BrakeCtrlPosition == -2 ) {
mvOccupied->BrakeLevelSet( 0 ); /*mvOccupied->*/BrakeLevelSet( gbh_RP );
} }
if( ( mvOccupied->PipePress < 3.0 ) if( ( mvOccupied->PipePress < 3.0 )
&& ( AccDesired > -0.03 ) ) { && ( AccDesired > -0.03 ) ) {
mvOccupied->BrakeReleaser( 1 ); mvOccupied->BrakeReleaser( 1 );
} }
if( ( mvOccupied->BrakeCtrlPos == 0 ) if( ( /*GBH mvOccupied->BrakeCtrlPos*/BrakeCtrlPosition == 0 )
&& ( AbsAccS < 0.03 ) && ( AbsAccS < 0.03 )
&& ( AccDesired > -0.03 ) && ( AccDesired > -0.03 )
&& ( VelDesired - mvOccupied->Vel > 2.0 ) ) { && ( VelDesired - mvOccupied->Vel > 2.0 ) ) {
@@ -5611,7 +5629,8 @@ TController::UpdateSituation(double dt) {
if( ( iDrivigFlags & moveOerlikons ) if( ( iDrivigFlags & moveOerlikons )
|| ( true == IsCargoTrain ) ) { || ( true == IsCargoTrain ) ) {
// napełnianie w Oerlikonie // napełnianie w Oerlikonie
mvOccupied->BrakeLevelSet( mvOccupied->Handle->GetPos( bh_FS ) ); /* mvOccupied->BrakeLevelSet( mvOccupied->Handle->GetPos( bh_FS ) ); GBH */
BrakeLevelSet(gbh_FS);
// don't charge the brakes too often, or we risk overcharging // don't charge the brakes too often, or we risk overcharging
BrakeChargingCooldown = -120.0; BrakeChargingCooldown = -120.0;
} }
@@ -5622,9 +5641,10 @@ TController::UpdateSituation(double dt) {
} }
} }
if( ( mvOccupied->BrakeCtrlPos < 0 ) if( ( /*GBH mvOccupied->BrakeCtrlPos*/BrakeCtrlPosition < 0 )
&& ( mvOccupied->EqvtPipePress > ( fReady < 0.25 ? 5.1 : 5.2 ) ) ) { && ( mvOccupied->EqvtPipePress > ( fReady < 0.25 ? 5.1 : 5.2 ) ) ) {
mvOccupied->BrakeLevelSet( mvOccupied->Handle->GetPos( bh_RP ) ); /* GBH mvOccupied->BrakeLevelSet( mvOccupied->Handle->GetPos( bh_RP ) ); */
BrakeLevelSet(gbh_RP);
} }
} }
#if LOGVELOCITY #if LOGVELOCITY
@@ -5727,7 +5747,7 @@ TController::UpdateSituation(double dt) {
std::max( -0.2, fAccThreshold ) ) }; std::max( -0.2, fAccThreshold ) ) };
if( ( AccDesired <= accthreshold ) // jeśli hamować - u góry ustawia się hamowanie na fAccThreshold if( ( AccDesired <= accthreshold ) // jeśli hamować - u góry ustawia się hamowanie na fAccThreshold
&& ( ( AbsAccS > AccDesired ) && ( ( AbsAccS > AccDesired )
|| ( mvOccupied->BrakeCtrlPos < 0 ) ) ) { || ( /*GBH mvOccupied->BrakeCtrlPos*/BrakeCtrlPosition < 0 ) ) ) {
// hamować bardziej, gdy aktualne opóźnienie hamowania mniejsze niż (AccDesired) // hamować bardziej, gdy aktualne opóźnienie hamowania mniejsze niż (AccDesired)
IncBrake(); IncBrake();
} }
@@ -5735,7 +5755,7 @@ TController::UpdateSituation(double dt) {
// przy odłączaniu nie zwalniamy tu hamulca // przy odłączaniu nie zwalniamy tu hamulca
if( AbsAccS < AccDesired - 0.05 ) { if( AbsAccS < AccDesired - 0.05 ) {
// jeśli opóźnienie większe od wymaganego (z histerezą) luzowanie, gdy za dużo // jeśli opóźnienie większe od wymaganego (z histerezą) luzowanie, gdy za dużo
if( mvOccupied->BrakeCtrlPos >= 0 ) { if( /*GBH mvOccupied->BrakeCtrlPos*/BrakeCtrlPosition >= 0 ) {
DecBrake(); // tutaj zmniejszało o 1 przy odczepianiu DecBrake(); // tutaj zmniejszało o 1 przy odczepianiu
} }
} }
@@ -5758,7 +5778,7 @@ TController::UpdateSituation(double dt) {
// u góry ustawia się hamowanie na fAccThreshold // u góry ustawia się hamowanie na fAccThreshold
if( ( fBrakeTime < 0.0 ) if( ( fBrakeTime < 0.0 )
|| ( AccDesired < fAccGravity - 0.5 ) || ( AccDesired < fAccGravity - 0.5 )
|| ( mvOccupied->BrakeCtrlPos <= 0 ) ) { || ( /*GBH mvOccupied->BrakeCtrlPos*/BrakeCtrlPosition <= 0 ) ) {
// jeśli upłynął czas reakcji hamulca, chyba że nagłe albo luzował // jeśli upłynął czas reakcji hamulca, chyba że nagłe albo luzował
if( true == IncBrake() ) { if( true == IncBrake() ) {
fBrakeTime = fBrakeTime =
@@ -5831,13 +5851,15 @@ TController::UpdateSituation(double dt) {
mvOccupied->IncLocalBrakeLevel( 1 ); mvOccupied->IncLocalBrakeLevel( 1 );
} }
else { else {
mvOccupied->BrakeLevelSet( mvOccupied->Handle->GetPos( bh_RP ) ); mvOccupied->BrakeLevelSet( mvOccupied->Handle->GetPos( bh_RP ) ); //GBH
BrakeLevelSet(gbh_RP);
} }
} }
} }
} }
break; // rzeczy robione przy jezdzie break; // rzeczy robione przy jezdzie
} // switch (OrderList[OrderPos]) } // switch (OrderList[OrderPos])
if (AIControllFlag) SetTimeControllers();
} }
// configures vehicle heating given current situation; returns: true if vehicle can be operated normally, false otherwise // configures vehicle heating given current situation; returns: true if vehicle can be operated normally, false otherwise

View File

@@ -169,6 +169,12 @@ static const int maxorders = 64; // ilość rozkazów w tabelce
static const int maxdriverfails = 4; // ile błędów może zrobić AI zanim zmieni nastawienie static const int maxdriverfails = 4; // ile błędów może zrobić AI zanim zmieni nastawienie
extern bool WriteLogFlag; // logowanie parametrów fizycznych extern bool WriteLogFlag; // logowanie parametrów fizycznych
static const int BrakeAccTableSize = 20; static const int BrakeAccTableSize = 20;
static const int gbh_NP = -2; //odciecie w hamulcu ogolnym
static const int gbh_RP = 0; //jazda w hamulcu ogolnym
static const int gbh_FS = -1; //napelnianie uderzeniowe w hamulcu ogolnym
static const int gbh_MIN = -2; //minimalna pozycja w hamulcu ogolnym
static const int gbh_MAX = 6; //maksymalna pozycja w hamulcu ogolnym
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
class TController { class TController {
@@ -216,7 +222,7 @@ private:
bool DecBrakeEIM(); bool DecBrakeEIM();
bool IncSpeedEIM(); bool IncSpeedEIM();
bool DecSpeedEIM(); bool DecSpeedEIM();
bool BrakeLevelSet(double b); void BrakeLevelSet(double b);
bool BrakeLevelAdd(double b); bool BrakeLevelAdd(double b);
void SpeedSet(); void SpeedSet();
void SpeedCntrl(double DesiredSpeed); void SpeedCntrl(double DesiredSpeed);

View File

@@ -2788,7 +2788,7 @@ double TMHZ_K5P::GetPos(int i)
double TMHZ_K5P::GetCP() double TMHZ_K5P::GetCP()
{ {
return RP; return CP;
} }
void TMHZ_K5P::SetParams(bool AO, bool MO, double, double) void TMHZ_K5P::SetParams(bool AO, bool MO, double, double)
@@ -2890,6 +2890,8 @@ double TMHZ_6P::GetPF(double i_bcp, double PP, double HP, double dt, double ep)
void TMHZ_6P::Init(double Press) void TMHZ_6P::Init(double Press)
{ {
CP = Press; CP = Press;
Time = true;
TimeEP = true;
} }
void TMHZ_6P::SetReductor(double nAdj) void TMHZ_6P::SetReductor(double nAdj)
@@ -2912,7 +2914,7 @@ double TMHZ_6P::GetPos(int i)
double TMHZ_6P::GetCP() double TMHZ_6P::GetCP()
{ {
return RP; return CP;
} }
void TMHZ_6P::SetParams(bool AO, bool MO, double OverP, double) void TMHZ_6P::SetParams(bool AO, bool MO, double OverP, double)