From 1234780576b424fa173839a6f4ecab307aa99bf4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kr=C3=B3lik=20Uszasty?= Date: Mon, 10 Jun 2019 19:44:23 +0200 Subject: [PATCH] UniversalControl is connected with BrakeCtrl --- Driver.cpp | 11 +++++++---- McZapkie/Mover.cpp | 15 ++++++++++++++- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/Driver.cpp b/Driver.cpp index dec7cc3b..867dff12 100644 --- a/Driver.cpp +++ b/Driver.cpp @@ -3633,10 +3633,13 @@ void TController::CheckTimeControllers() NeutralPos = i; break; } - if ((DizelActualPercentage >= DizelPercentage_Speed) && (mvControlling->MainCtrlPos > NeutralPos)) - while (mvControlling->MainCtrlPos > NeutralPos) mvControlling->DecMainCtrl(1); - if ((DizelActualPercentage <= DizelPercentage_Speed) && (mvControlling->MainCtrlPos < NeutralPos)) - while (mvControlling->MainCtrlPos < NeutralPos) mvControlling->IncMainCtrl(1); + if (BrakeCtrlPosition < 0.1) //jesli nie hamuje + { + if ((DizelActualPercentage >= DizelPercentage_Speed) && (mvControlling->MainCtrlPos > NeutralPos)) + while (mvControlling->MainCtrlPos > NeutralPos) mvControlling->DecMainCtrl(1); + if ((DizelActualPercentage <= DizelPercentage_Speed) && (mvControlling->MainCtrlPos < NeutralPos)) + while (mvControlling->MainCtrlPos < NeutralPos) mvControlling->IncMainCtrl(1); + } } }; diff --git a/McZapkie/Mover.cpp b/McZapkie/Mover.cpp index f10bf5e2..73899650 100644 --- a/McZapkie/Mover.cpp +++ b/McZapkie/Mover.cpp @@ -6116,6 +6116,19 @@ void TMoverParameters::CheckEIMIC(double dt) } break; case 3: + + if ((UniCtrlList[MainCtrlPos].mode != BrakeCtrlPos) && (MainCtrlActualPos == MainCtrlPos)) //nie było ruszane nastawnikiem tylko hamulcem + { + if (BrakeCtrlPos < UniCtrlList[MainCtrlPosNo].mode) + BrakeLevelSet(UniCtrlList[MainCtrlPosNo].mode); //przytnij z dołu + if (BrakeCtrlPos > UniCtrlList[0].mode) + BrakeLevelSet(UniCtrlList[0].mode); //przytnij z góry + while (BrakeCtrlPos > UniCtrlList[MainCtrlPos].mode) DecMainCtrl(1); //znajdź najbliższą pozycję + while (BrakeCtrlPos < UniCtrlList[MainCtrlPos].mode) IncMainCtrl(1); //znajdź najbliższą pozycję + } + else //było ruszane nastawnikiem + BrakeLevelSet(UniCtrlList[MainCtrlPos].mode); + if ((MainCtrlActualPos != MainCtrlPos) || (LastRelayTime>InitialCtrlDelay)) { eimic -= clamp(-UniCtrlList[MainCtrlPos].SetCtrlVal + eimic, 0.0, (MainCtrlActualPos == MainCtrlPos ? dt * UniCtrlList[MainCtrlPos].SpeedDown : sign(UniCtrlList[MainCtrlPos].SpeedDown) * 0.01)); //odejmuj do X @@ -6129,7 +6142,7 @@ void TMoverParameters::CheckEIMIC(double dt) LastRelayTime = 0; MainCtrlActualPos = MainCtrlPos; } - //BrakeLevelSet(UniCtrlList[MainCtrlPos].mode); + } auto const eimicpowerenabled { ( ( true == Mains ) || ( Power == 0.0 ) )