mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-22 19:49:19 +02:00
merge remote-tracking branch 'refs/remotes/youby/mover_in_c++'
This commit is contained in:
23
Driver.cpp
23
Driver.cpp
@@ -2684,7 +2684,15 @@ bool TController::IncSpeed()
|
|||||||
if (!mvControlling->FuseFlag)
|
if (!mvControlling->FuseFlag)
|
||||||
if (Ready || (iDrivigFlags & movePress) || (mvOccupied->ShuntMode)) //{(BrakePress<=0.01*MaxBrakePress)}
|
if (Ready || (iDrivigFlags & movePress) || (mvOccupied->ShuntMode)) //{(BrakePress<=0.01*MaxBrakePress)}
|
||||||
{
|
{
|
||||||
OK = mvControlling->IncMainCtrl(1);
|
OK = mvControlling->IncMainCtrl(std::max(1,mvOccupied->MainCtrlPosNo/10));
|
||||||
|
//tutaj jeszcze powinien być tempomat
|
||||||
|
mvControlling->IncScndCtrl(1);
|
||||||
|
double SpeedCntrl = VelDesired;
|
||||||
|
if (fProximityDist < 50)
|
||||||
|
{
|
||||||
|
SpeedCntrl = std::min(SpeedCntrl, VelNext);
|
||||||
|
}
|
||||||
|
mvControlling->RunCommand("SpeedCntrl", VelDesired, mvControlling->CabNo);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case WheelsDriven:
|
case WheelsDriven:
|
||||||
@@ -2737,11 +2745,22 @@ bool TController::DecSpeed(bool force)
|
|||||||
break;
|
break;
|
||||||
case Dumb:
|
case Dumb:
|
||||||
case DieselElectric:
|
case DieselElectric:
|
||||||
case ElectricInductionMotor:
|
|
||||||
OK = mvControlling->DecScndCtrl(2);
|
OK = mvControlling->DecScndCtrl(2);
|
||||||
if (!OK)
|
if (!OK)
|
||||||
OK = mvControlling->DecMainCtrl(2 + (mvControlling->MainCtrlPos / 2));
|
OK = mvControlling->DecMainCtrl(2 + (mvControlling->MainCtrlPos / 2));
|
||||||
break;
|
break;
|
||||||
|
case ElectricInductionMotor:
|
||||||
|
OK = mvControlling->DecMainCtrl(1);
|
||||||
|
if ((mvControlling->ScndCtrlPosNo > 0)&&(mvControlling->Mains)) //jeżeli tempomat
|
||||||
|
{
|
||||||
|
mvControlling->IncScndCtrl(1);
|
||||||
|
mvControlling->RunCommand("SpeedCntrl", VelDesired, mvControlling->CabNo);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mvControlling->DecScndCtrl(2);
|
||||||
|
}
|
||||||
|
break;
|
||||||
case WheelsDriven:
|
case WheelsDriven:
|
||||||
if (!mvControlling->CabNo)
|
if (!mvControlling->CabNo)
|
||||||
mvControlling->CabActivisation();
|
mvControlling->CabActivisation();
|
||||||
|
|||||||
@@ -1954,6 +1954,7 @@ bool TMoverParameters::IncScndCtrl(int CtrlSpeed)
|
|||||||
{
|
{
|
||||||
/*OK:=*/SendCtrlToNext("MainCtrl", MainCtrlPos, CabNo); //???
|
/*OK:=*/SendCtrlToNext("MainCtrl", MainCtrlPos, CabNo); //???
|
||||||
/*OK:=*/SendCtrlToNext("ScndCtrl", ScndCtrlPos, CabNo);
|
/*OK:=*/SendCtrlToNext("ScndCtrl", ScndCtrlPos, CabNo);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else // nie ma sterowania
|
else // nie ma sterowania
|
||||||
@@ -1965,11 +1966,14 @@ bool TMoverParameters::IncScndCtrl(int CtrlSpeed)
|
|||||||
LastRelayTime = 0;
|
LastRelayTime = 0;
|
||||||
|
|
||||||
if ((OK) && (EngineType == ElectricInductionMotor))
|
if ((OK) && (EngineType == ElectricInductionMotor))
|
||||||
|
{
|
||||||
// NOTE: round() already adds 0.5, are the ones added here as well correct?
|
// NOTE: round() already adds 0.5, are the ones added here as well correct?
|
||||||
if ((Vmax < 250))
|
if ((Vmax < 250))
|
||||||
ScndCtrlActualPos = Round(Vel + 0.5);
|
ScndCtrlActualPos = Round(Vel);
|
||||||
else
|
else
|
||||||
ScndCtrlActualPos = Round(Vel * 1.0 / 2 + 0.5);
|
ScndCtrlActualPos = Round(Vel * 0.5);
|
||||||
|
SendCtrlToNext("SpeedCntrl", ScndCtrlActualPos, CabNo);
|
||||||
|
}
|
||||||
|
|
||||||
return OK;
|
return OK;
|
||||||
}
|
}
|
||||||
@@ -2020,7 +2024,10 @@ bool TMoverParameters::DecScndCtrl(int CtrlSpeed)
|
|||||||
LastRelayTime = 0;
|
LastRelayTime = 0;
|
||||||
|
|
||||||
if ((OK) && (EngineType == ElectricInductionMotor))
|
if ((OK) && (EngineType == ElectricInductionMotor))
|
||||||
|
{
|
||||||
ScndCtrlActualPos = 0;
|
ScndCtrlActualPos = 0;
|
||||||
|
SendCtrlToNext("SpeedCntrl", ScndCtrlActualPos, CabNo);
|
||||||
|
}
|
||||||
|
|
||||||
return OK;
|
return OK;
|
||||||
}
|
}
|
||||||
@@ -2371,7 +2378,7 @@ bool TMoverParameters::MainSwitch( bool const State, int const Notify )
|
|||||||
if ((Mains != State) && (MainCtrlPosNo > 0))
|
if ((Mains != State) && (MainCtrlPosNo > 0))
|
||||||
{
|
{
|
||||||
if ((State == false) ||
|
if ((State == false) ||
|
||||||
((ScndCtrlPos == 0) && ((ConvOvldFlag == false) || (TrainType == dt_EZT)) &&
|
(((ScndCtrlPos == 0)||(EngineType == ElectricInductionMotor)) && ((ConvOvldFlag == false) || (TrainType == dt_EZT)) &&
|
||||||
(LastSwitchingTime > CtrlDelay) && !TestFlag(DamageFlag, dtrain_out) &&
|
(LastSwitchingTime > CtrlDelay) && !TestFlag(DamageFlag, dtrain_out) &&
|
||||||
!TestFlag(EngDmgFlag, 1)))
|
!TestFlag(EngDmgFlag, 1)))
|
||||||
{
|
{
|
||||||
@@ -8059,14 +8066,6 @@ bool TMoverParameters::RunCommand( std::string Command, double CValue1, double C
|
|||||||
}
|
}
|
||||||
else if (Command == "ScndCtrl")
|
else if (Command == "ScndCtrl")
|
||||||
{
|
{
|
||||||
if ((EngineType == ElectricInductionMotor))
|
|
||||||
if ((ScndCtrlPos == 0) && (floor(CValue1) > 0))
|
|
||||||
if ((Vmax < 250))
|
|
||||||
ScndCtrlActualPos = Round(Vel + 0.5);
|
|
||||||
else
|
|
||||||
ScndCtrlActualPos = Round(Vel / 2 + 0.5);
|
|
||||||
else if ((floor(CValue1) == 0))
|
|
||||||
ScndCtrlActualPos = 0;
|
|
||||||
if (ScndCtrlPosNo >= floor(CValue1))
|
if (ScndCtrlPosNo >= floor(CValue1))
|
||||||
ScndCtrlPos = static_cast<int>(floor(CValue1));
|
ScndCtrlPos = static_cast<int>(floor(CValue1));
|
||||||
OK = SendCtrlToNext( Command, CValue1, CValue2, Couplertype );
|
OK = SendCtrlToNext( Command, CValue1, CValue2, Couplertype );
|
||||||
@@ -8389,6 +8388,12 @@ bool TMoverParameters::RunCommand( std::string Command, double CValue1, double C
|
|||||||
}
|
}
|
||||||
// if OK then LoadStatus:=0;
|
// if OK then LoadStatus:=0;
|
||||||
}
|
}
|
||||||
|
else if (Command == "SpeedCntrl")
|
||||||
|
{
|
||||||
|
if ((EngineType == ElectricInductionMotor))
|
||||||
|
ScndCtrlActualPos = static_cast<int>(round(CValue1));
|
||||||
|
OK = SendCtrlToNext(Command, CValue1, CValue2, Couplertype);
|
||||||
|
}
|
||||||
|
|
||||||
return OK; // dla true komenda będzie usunięta, dla false wykonana ponownie
|
return OK; // dla true komenda będzie usunięta, dla false wykonana ponownie
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user