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

Manual and automatic sanding working independently in EIM vehicles

This commit is contained in:
Królik Uszasty
2019-09-09 22:39:45 +02:00
committed by tmj-fstate
parent 3153ffc499
commit b6ca21d280
3 changed files with 66 additions and 4 deletions

View File

@@ -1197,6 +1197,9 @@ public:
double UnitBrakeForce = 0.0; /*!s siła hamowania przypadająca na jeden element*/ double UnitBrakeForce = 0.0; /*!s siła hamowania przypadająca na jeden element*/
double Ntotal = 0.0; /*!s siła nacisku klockow*/ double Ntotal = 0.0; /*!s siła nacisku klockow*/
bool SlippingWheels = false; bool SandDose = false; /*! poslizg kol, sypanie piasku*/ bool SlippingWheels = false; bool SandDose = false; /*! poslizg kol, sypanie piasku*/
bool SandDoseManual = false; /*piaskowanie reczne*/
bool SandDoseAuto = false; /*piaskowanie automatyczne*/
bool SandDoseAutoAllow = true; /*zezwolenie na automatyczne piaskowanie*/
double Sand = 0.0; /*ilosc piasku*/ double Sand = 0.0; /*ilosc piasku*/
double BrakeSlippingTimer = 0.0; /*pomocnicza zmienna do wylaczania przeciwposlizgu*/ double BrakeSlippingTimer = 0.0; /*pomocnicza zmienna do wylaczania przeciwposlizgu*/
double dpBrake = 0.0; double dpPipe = 0.0; double dpMainValve = 0.0; double dpLocalValve = 0.0; double dpBrake = 0.0; double dpPipe = 0.0; double dpMainValve = 0.0; double dpLocalValve = 0.0;
@@ -1488,6 +1491,8 @@ public:
bool AddPulseForce(int Multipler);/*dla drezyny*/ bool AddPulseForce(int Multipler);/*dla drezyny*/
bool SandboxManual( bool const State, range_t const Notify = range_t::consist );/*wlacza/wylacza sypanie piasku*/
bool SandboxAuto( bool const State, range_t const Notify = range_t::consist );/*wlacza/wylacza sypanie piasku*/
bool Sandbox( bool const State, range_t const Notify = range_t::consist );/*wlacza/wylacza sypanie piasku*/ bool Sandbox( bool const State, range_t const Notify = range_t::consist );/*wlacza/wylacza sypanie piasku*/
/*! zbijanie czuwaka/SHP*/ /*! zbijanie czuwaka/SHP*/

View File

@@ -2341,6 +2341,63 @@ bool TMoverParameters::AddPulseForce(int Multipler)
return APF; return APF;
} }
// *************************************************************************************************
// yB: 20190909
// sypanie piasku reczne
// *************************************************************************************************
bool TMoverParameters::SandboxManual(bool const State, range_t const Notify)
{
bool result{ false };
if (SandDoseManual != State) {
if (SandDoseManual == false) {
// switch on
if (Sand > 0) {
SandDoseManual = true;
result = true;
}
}
else {
// switch off
SandDoseManual = false;
result = true;
}
}
Sandbox(SandDoseManual || SandDoseAuto, Notify);
return result;
}
// *************************************************************************************************
// yB: 20190909
// sypanie piasku automatyczne
// *************************************************************************************************
bool TMoverParameters::SandboxAuto(bool const State, range_t const Notify)
{
bool result{ false };
bool NewState = State && SandDoseAutoAllow;
if (SandDoseAuto != NewState) {
if (SandDoseAuto == false) {
// switch on
if (Sand > 0) {
SandDoseAuto = true;
result = true;
}
}
else {
// switch off
SandDoseAuto = false;
result = true;
}
}
Sandbox(SandDoseManual || SandDoseAuto, Notify);
return result;
}
// ************************************************************************************************* // *************************************************************************************************
// Q: 20160713 // Q: 20160713
// sypanie piasku // sypanie piasku
@@ -5507,11 +5564,11 @@ double TMoverParameters::TractionForce( double dt ) {
if( ( SlippingWheels ) ) { if( ( SlippingWheels ) ) {
PosRatio = 0; PosRatio = 0;
tmp = 10; tmp = 10;
Sandbox( true, range_t::unit ); SandboxAuto( true, range_t::unit );
} // przeciwposlizg } // przeciwposlizg
else { else {
// switch sandbox off // switch sandbox off
Sandbox( false, range_t::unit ); SandboxAuto( false, range_t::unit );
} }
eimv_pr += Max0R(Min0R(PosRatio - eimv_pr, 0.02), -0.02) * 12 * eimv_pr += Max0R(Min0R(PosRatio - eimv_pr, 0.02), -0.02) * 12 *

View File

@@ -1437,13 +1437,13 @@ void TTrain::OnCommand_sandboxactivate( TTrain *Train, command_data const &Comma
// visual feedback // visual feedback
Train->ggSandButton.UpdateValue( 1.0, Train->dsbSwitch ); Train->ggSandButton.UpdateValue( 1.0, Train->dsbSwitch );
Train->mvControlled->Sandbox( true ); Train->mvControlled->SandboxManual( true );
} }
else if( Command.action == GLFW_RELEASE) { else if( Command.action == GLFW_RELEASE) {
// visual feedback // visual feedback
Train->ggSandButton.UpdateValue( 0.0 ); Train->ggSandButton.UpdateValue( 0.0 );
Train->mvControlled->Sandbox( false ); Train->mvControlled->SandboxManual( false );
} }
} }