mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-22 17:29:18 +02:00
Manual and automatic sanding working independently in EIM vehicles
This commit is contained in:
@@ -1194,6 +1194,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;
|
||||||
@@ -1481,6 +1484,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*/
|
||||||
|
|||||||
@@ -2228,6 +2228,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
|
||||||
@@ -5372,11 +5429,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 *
|
||||||
|
|||||||
@@ -1431,13 +1431,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 );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user