From 92b483cded5831a2d07f4a1fe2d5f6b707d46864 Mon Sep 17 00:00:00 2001 From: firleju Date: Wed, 23 Nov 2016 13:10:18 +0100 Subject: [PATCH] Hamulce przestawione na map -2..10. Sprawdzanie movera Mover sprawdzony do IncMainCtrl. --- McZapkie/MOVER.h | 4 +- McZapkie/Mover.cpp | 197 +++++++++++++++++++++---------------------- McZapkie/hamulce.cpp | 42 ++++----- McZapkie/hamulce.h | 15 ++-- 4 files changed, 128 insertions(+), 130 deletions(-) diff --git a/McZapkie/MOVER.h b/McZapkie/MOVER.h index ac0242ad..2a2a94b6 100644 --- a/McZapkie/MOVER.h +++ b/McZapkie/MOVER.h @@ -15,7 +15,7 @@ http://mozilla.org/MPL/2.0/. #include "hamulce.h" #include #include - +#include /* MaSzyna EU07 locomotive simulator @@ -321,7 +321,7 @@ struct TBrakePressure TBrakeSystem BrakeType; }; -typedef TBrakePressure TBrakePressureTable[MainBrakeMaxPos]; +typedef std::map TBrakePressureTable; /*typy napedow*/ diff --git a/McZapkie/Mover.cpp b/McZapkie/Mover.cpp index b7e133e1..3acc5a8f 100644 --- a/McZapkie/Mover.cpp +++ b/McZapkie/Mover.cpp @@ -23,7 +23,7 @@ http://mozilla.org/MPL/2.0/. #include "Mover.h" #include "../globals.h" //#include "../qutils.h" -#include +#include "mctools.h" #include "../logs.h" #include "hamulce.h" #include "Oerlikon_ESt.h" @@ -37,22 +37,22 @@ http://mozilla.org/MPL/2.0/. const double dEpsilon = 0.01; // 1cm (zależy od typu sprzęgu...) const double CouplerTune = 0.1; // skalowanie tlumiennosci -long Trunc(float f) +inline long Trunc(float f) { return (long)f; } -long ROUND(float f) +inline long ROUND(float f) { return Trunc(f + 0.5); } -double sqr(double val) // SQR() zle liczylo w current() ... +inline double sqr(double val) // SQR() zle liczylo w current() ... { return val * val; } -double ComputeCollision(double v1, double v2, double m1, double m2, double beta, bool vc) +double ComputeCollision(double &v1, double &v2, double m1, double m2, double beta, bool vc) { // oblicza zmiane predkosci i przyrost pedu wskutek kolizji if (v1 < v2 && vc) return 0; @@ -68,7 +68,7 @@ double ComputeCollision(double v1, double v2, double m1, double m2, double beta, } int DirPatch(int Coupler1, int Coupler2) -{ +{ // poprawka dla liczenia sil przy ustawieniu przeciwnym obiektow return (Coupler1 != Coupler2 ? 1 : -1); } @@ -317,12 +317,12 @@ TMoverParameters::TMoverParameters(double VelInitial, std::string TypeNameInit, BrakeCtrlPosNo = 0; LightsPosNo = 0; LightsDefPos = 1; - for (k = -1; k < MainBrakeMaxPos; k++) - { - BrakePressureTable[k].PipePressureVal = 0; - BrakePressureTable[k].BrakePressureVal = 0; - BrakePressureTable[k].FlowSpeedVal = 0; - } + //for (k = -1; k < MainBrakeMaxPos; k++) + //{ + // BrakePressureTable[k].PipePressureVal = 0; + // BrakePressureTable[k].BrakePressureVal = 0; + // BrakePressureTable[k].FlowSpeedVal = 0; + //} // with BrakePressureTable[-2] do {pozycja odciecia} { @@ -1043,11 +1043,18 @@ ZN //masa double TMoverParameters::LocalBrakeRatio(void) { double LBR; - - if (LocalBrakePosNo > 0) - LBR = LocalBrakePos / LocalBrakePosNo; - else - LBR = 0; + if (BrakeHandle == MHZ_EN57) + if ((BrakeOpModeFlag >= bom_EP)) + LBR = Handle->GetEP(BrakeCtrlPosR); + else + LBR = 0; + else + { + if (LocalBrakePosNo > 0) + LBR = LocalBrakePos / LocalBrakePosNo; + else + LBR = 0; + } // if (TestFlag(BrakeStatus, b_antislip)) // LBR = Max0R(LBR, PipeRatio) + 0.4; return LBR; @@ -1101,7 +1108,7 @@ double TMoverParameters::PipeRatio(void) double pr; if (DeltaPipePress > 0) - if (false) // SPKS!! + if (false) // SPKS!! no to jak nie wchodzimy to po co branch? { if ((3 * PipePress) > (HighPipePress + LowPipePress + LowPipePress)) pr = (HighPipePress - Min0R(HighPipePress, PipePress)) / @@ -1109,11 +1116,11 @@ double TMoverParameters::PipeRatio(void) else pr = (HighPipePress - 1.0 / 3.0 * DeltaPipePress - Max0R(LowPipePress, PipePress)) / (DeltaPipePress * 2.0 / 3.0); - // if (not TestFlag(BrakeStatus,b_Ractive)) and (BrakeMethod and 1 = 0) and - // TestFlag(BrakeDelays,bdelay_R) and (Power<1) and (BrakeCtrlPos<1) then - // pr:=Min0R(0.5,pr); - // if (Compressor>0.5) then - // pr:=pr*1.333; //dziwny rapid wywalamy + //if (not TestFlag(BrakeStatus, b_Ractive)) + // and(BrakeMethod and 1 = 0) and TestFlag(BrakeDelays, bdelay_R) and (Power < 1) and + // (BrakeCtrlPos < 1) then pr : = Min0R(0.5, pr); + //if (Compressor > 0.5) + // then pr : = pr * 1.333; // dziwny rapid wywalamy } else pr = (HighPipePress - Max0R(LowPipePress, Min0R(HighPipePress, PipePress))) / @@ -1591,6 +1598,7 @@ int TMoverParameters::ShowCurrent(int AmpN) // ************************************************************************************************* // Q: 20160710 +// zwiększenie nastawinika // ************************************************************************************************* bool TMoverParameters::IncMainCtrl(int CtrlSpeed) @@ -1621,7 +1629,7 @@ bool TMoverParameters::IncMainCtrl(int CtrlSpeed) ((CtrlSpeed > 1) && (TrainType == dt_EZT) && (ActiveDir != 0))) OK = (IncMainCtrl(1) && IncMainCtrl(CtrlSpeed - 1)); break; - }; + } case ElectricSeriesMotor: { @@ -1672,12 +1680,12 @@ bool TMoverParameters::IncMainCtrl(int CtrlSpeed) { // szybkie przejście na bezoporową while ((RList[MainCtrlPos].R > 0) && IncMainCtrl(1)) - - // OK:=true ; {takie chamskie, potem poprawie} <-Ra: kto miał to - // poprawić i po co? - if (ActiveDir == -1) - while ((RList[MainCtrlPos].Bn > 1) && IncMainCtrl(1)) - MainCtrlPos--; + ; // tutaj ma być pętla na "pusto" + // OK:=true ; {takie chamskie, potem poprawie} <-Ra: kto miał to + // poprawić i po co? + if (ActiveDir == -1) + while ((RList[MainCtrlPos].Bn > 1) && IncMainCtrl(1)) + MainCtrlPos--; OK = false; // if (TrainType=dt_ET40) then // while Abs (Im)>IminHi do @@ -1693,7 +1701,7 @@ bool TMoverParameters::IncMainCtrl(int CtrlSpeed) // return OK; break; - }; + } case DieselEngine: { @@ -1713,13 +1721,13 @@ bool TMoverParameters::IncMainCtrl(int CtrlSpeed) OK = true; } break; - }; + } case WheelsDriven: { OK = AddPulseForce(CtrlSpeed); break; - }; + } } // switch EngineType of } @@ -1764,6 +1772,7 @@ bool TMoverParameters::IncMainCtrl(int CtrlSpeed) // ***************************************************************************** // Q: 20160710 +// zmniejszenie nastawnika // ***************************************************************************** bool TMoverParameters::DecMainCtrl(int CtrlSpeed) { @@ -1969,8 +1978,9 @@ bool TMoverParameters::DecScndCtrl(int CtrlSpeed) // ************************************************************************************************* // Q: 20160710 +// załączenie rozrządu // ************************************************************************************************* -bool TMoverParameters::CabActivisation(void) // załączenie rozrządu +bool TMoverParameters::CabActivisation(void) { bool OK = false; @@ -1986,8 +1996,9 @@ bool TMoverParameters::CabActivisation(void) // za // ************************************************************************************************* // Q: 20160710 +// wyłączenie rozrządu // ************************************************************************************************* -bool TMoverParameters::CabDeactivisation(void) // wyłączenie rozrządu +bool TMoverParameters::CabDeactivisation(void) { bool OK = false; @@ -2612,20 +2623,20 @@ bool TMoverParameters::DecManualBrakeLevel(int CtrlSpeed) // ************************************************************************************************* // Q: 20160713 +// reczne przelaczanie hamulca elektrodynamicznego // ************************************************************************************************* bool TMoverParameters::DynamicBrakeSwitch(bool Switch) { - int b; bool DBS; if ((DynamicBrakeType == dbrake_switch) && (MainCtrlPos == 0)) { DynamicBrakeFlag = Switch; DBS = true; - for (b = 0; b < 1; b++) + for (int b = 0; b < 2; b++) // with Couplers[b] do if (TestFlag(Couplers[b].CouplingFlag, ctrain_controll)) - Couplers[b].Connected->DynamicBrakeFlag = DynamicBrakeFlag; + Couplers[b].Connected->DynamicBrakeFlag = Switch; // end; // if (DynamicBrakeType=dbrake_passive) and (TrainType=dt_ET42) then // begin @@ -5305,29 +5316,8 @@ std::string TMoverParameters::EngineDescription(int what) // Q: 20160709 // ************************************************************************************************* double TMoverParameters::GetTrainsetVoltage(void) -{ - double volt; - - volt = 0.0; - if (Couplers[1].Connected != NULL) - if (TestFlag(Couplers[1].CouplingFlag, ctrain_power)) // czy jest sprzęg WN - { // najczęściej silnikowy jest z tyłu - if (Couplers[1].Connected->PantFrontVolt != 0.0) - volt = Couplers[1].Connected->PantFrontVolt; - else if (Couplers[1].Connected->PantRearVolt != 0.0) - volt = Couplers[1].Connected->PantRearVolt; - } - if (volt == 0.0) - if (Couplers[0].Connected != NULL) - if (TestFlag(Couplers[0].CouplingFlag, ctrain_power)) // czy jest sprzęg WN - { - if (Couplers[0].Connected->PantFrontVolt != 0.0) - volt = Couplers[0].Connected->PantFrontVolt; - else if (Couplers[0].Connected->PantRearVolt != 0.0) - volt = Couplers[0].Connected->PantRearVolt; - } - // WriteLog("GTV"); - return volt; +{//ABu: funkcja zwracajaca napiecie dla calego skladu, przydatna dla EZT + return Max0R(HVCouplers[1][1], HVCouplers[0][1]); } // ************************************************************************************************* @@ -5641,12 +5631,12 @@ bool TMoverParameters::readBPT(int ln, std::string line) startBPT = true; int k; - if (ln > 0) // 0 to nazwa sekcji - Cntrl. - po niej jest tablica hamulcow - { - // WriteLog("BPT: " + xline); - line = Tab2Sp(line); - xxx = TrimAndReduceSpaces(line.c_str()); - x = Split(xxx); + if (ln > 0) // 0 to nazwa sekcji - Cntrl. - po niej jest tablica hamulcow + { + // WriteLog("BPT: " + xline); + line = Tab2Sp(line); + xxx = TrimAndReduceSpaces(line.c_str()); + x = Split(xxx); if (x.size() != 5) { @@ -5655,25 +5645,27 @@ bool TMoverParameters::readBPT(int ln, std::string line) return false; } - p0 = TrimSpace(x[0]); - p1 = TrimSpace(x[1]); - p2 = TrimSpace(x[2]); - p3 = TrimSpace(x[3]); - p4 = TrimSpace(x[4]); + p0 = TrimSpace(x[0]); + p1 = TrimSpace(x[1]); + p2 = TrimSpace(x[2]); + p3 = TrimSpace(x[3]); + p4 = TrimSpace(x[4]); - k = atoi(p0.c_str()); - BrakePressureTable[k].PipePressureVal = atof(p1.c_str()); - BrakePressureTable[k].BrakePressureVal = atof(p2.c_str()); - BrakePressureTable[k].FlowSpeedVal = atof(p3.c_str()); - if (p4 == "Pneumatic") - BrakePressureTable[k].BrakeType = Pneumatic; - else if (p4 == "ElectroPneumatic") - BrakePressureTable[k].BrakeType = ElectroPneumatic; - else - BrakePressureTable[k].BrakeType = Individual; + k = atoi(p0.c_str()); + BrakePressureTable[k].PipePressureVal = atof(p1.c_str()); + BrakePressureTable[k].BrakePressureVal = atof(p2.c_str()); + BrakePressureTable[k].FlowSpeedVal = atof(p3.c_str()); + if (p4 == "Pneumatic") + BrakePressureTable[k].BrakeType = Pneumatic; + else if (p4 == "ElectroPneumatic") + BrakePressureTable[k].BrakeType = ElectroPneumatic; + else + BrakePressureTable[k].BrakeType = Individual; - //-- WriteLog("BPT: " + p0 + "," + p1 + "," + p2 + "," + p3 + "," + p4); - } + //-- WriteLog("BPT: " + p0 + "," + p1 + "," + p2 + "," + p3 + "," + p4); + if (k == gBCPN) + startBPT = false; + } delete[] xxx; BPTLINE++; return true; @@ -6210,8 +6202,7 @@ bool TMoverParameters::LoadFIZ(std::string chkpath) if (issection("Cntrl.") || startBPT) { secBPT = true; - BrakeCtrlPosNo = gBCPN; - if (BrakeCtrlPosNo > 0) + if (gBCPN > 0) readBPT(BPTLINE, xline); // np wagony nie maja BPT } @@ -7484,6 +7475,8 @@ double TMoverParameters::GetExternalCommand(std::string &Command) // ************************************************************************************************* // Q: 20160714 +// GF: 20161117 +// rozsyłanie komend do całego składu // ************************************************************************************************* bool TMoverParameters::SendCtrlBroadcast(std::string CtrlCommand, double ctrlvalue) { @@ -7491,11 +7484,11 @@ bool TMoverParameters::SendCtrlBroadcast(std::string CtrlCommand, double ctrlval bool OK; OK = ((CtrlCommand != CommandIn.Command) && (ctrlvalue != CommandIn.Value1)); - // if (OK) - // for (b=0; b<1; b++ ) - // if (TestFlag(Couplers[b].CouplingFlag, ctrain_controll)) - // if (Couplers[b].Connected->SetInternalCommand(CtrlCommand, ctrlvalue, DirF(b))) - // OK = (Couplers[b].Connected->RunInternalCommand() || OK); + if (OK) + for (b = 0; b < 2; b++) + if (TestFlag(Couplers[b].CouplingFlag, ctrain_controll)) + if (Couplers[b].Connected->SetInternalCommand(CtrlCommand, ctrlvalue, DirF(b))) + OK = (Couplers[b].Connected->RunInternalCommand() || OK); return OK; } @@ -7524,6 +7517,7 @@ bool TMoverParameters::SetInternalCommand(std::string NewCommand, double NewValu // ************************************************************************************************* // Q: 20160714 +// wysyłanie komendy w kierunku dir (1=przód, -1=tył) do kolejnego pojazdu (jednego) // ************************************************************************************************* bool TMoverParameters::SendCtrlToNext(std::string CtrlCommand, double ctrlvalue, double dir) { @@ -7534,17 +7528,16 @@ bool TMoverParameters::SendCtrlToNext(std::string CtrlCommand, double ctrlvalue, // Ra: problem jest również, jeśli AI będzie na końcu składu OK = (dir != 0); // and Mains; d = (1 + Sign(dir)) / 2; // dir=-1=>d=0, dir=1=>d=1 - wysyłanie tylko w tył - //- if (OK) //musi być wybrana niezerowa kabina - // with Couplers[d] do //własny sprzęg od strony (d) - //- if (TestFlag(Couplers[d].CouplingFlag, ctrain_controll)) - //- if (Couplers[d].ConnectedNr != d) //jeśli ten nastpęny jest zgodny z aktualnym - //- { - //- if (Couplers[d].Connected->SetInternalCommand(CtrlCommand, ctrlvalue, dir)) - //- OK = (Couplers[d].Connected->RunInternalCommand() && OK); //tu jest rekurencja - //- } - //- else //jeśli następny jest ustawiony przeciwnie, zmieniamy kierunek - //- if (Couplers[d].Connected->SetInternalCommand(CtrlCommand, ctrlvalue, -dir)) - //- OK = (Couplers[d].Connected->RunInternalCommand() && OK); //tu jest rekurencja + if (OK) // musi być wybrana niezerowa kabina + if (TestFlag(Couplers[d].CouplingFlag, ctrain_controll)) + if (Couplers[d].ConnectedNr != d) // jeśli ten nastpęny jest zgodny z aktualnym + { + if (Couplers[d].Connected->SetInternalCommand(CtrlCommand, ctrlvalue, dir)) + OK = (Couplers[d].Connected->RunInternalCommand() && OK); // tu jest rekurencja + } + else // jeśli następny jest ustawiony przeciwnie, zmieniamy kierunek + if (Couplers[d].Connected->SetInternalCommand(CtrlCommand, ctrlvalue, -dir)) + OK = (Couplers[d].Connected->RunInternalCommand() && OK); // tu jest rekurencja return OK; } diff --git a/McZapkie/hamulce.cpp b/McZapkie/hamulce.cpp index 5043f4a0..e22949fc 100644 --- a/McZapkie/hamulce.cpp +++ b/McZapkie/hamulce.cpp @@ -20,16 +20,16 @@ Copyright (C) 2007-2014 Maciej Cierniak //---FUNKCJE OGOLNE--- static double const DPL = 0.25; -double TFV4aM::pos_table[11] = { 0, 8, 1, 2, 0, 3, 6, 8, 2, 2, 2 }; -double TMHZ_EN57::pos_table[11] = { 0, 12, 1, 2, 2, 4, 11, 12, 2, 2, 2 }; -double TM394::pos_table[11] = { 0, 6, 0, 1, 2, 3, 5, 6, 1, 1, 1 }; +double TFV4aM::pos_table[11] = { -2, 6, -1, 0, -2, 1, 4, 6, 0, 0, 0 }; +double TMHZ_EN57::pos_table[11] = { -2, 10, -1, 0, 0, 2, 9, 10, 0, 0, 0 }; +double TM394::pos_table[11] = { -1, 5, -1, 0, 1, 2, 4, 5, 0, 0, 0 }; double TH14K1::BPT_K[6][2] = { (10, 0), (4, 1), (0, 1), (4, 0), (4, -1), (15, -1) }; -double TH14K1::pos_table[11] = { 0, 5, 0, 1, 2, 3, 4, 5, 1, 1, 1 }; +double TH14K1::pos_table[11] = { -1, 4, -1, 0, 1, 2, 3, 4, 0, 0, 0 }; double TSt113::BPT_K[6][2] = { (10, 0), (4, 1), (0, 1), (4, 0), (4, -1), (15, -1) }; double TSt113::BEP_K[7] = { 0, -1, 1, 0, 0, 0, 0 }; -double TSt113::pos_table[11] = { 0, 6, 0, 1, 3, 4, 5, 6, 1, 1, 2 }; +double TSt113::pos_table[11] = { -1, 5, -1, 0, 2, 3, 4, 5, 0, 0, 1 }; double TFVel6::pos_table[11] = { -1, 6, -1, 0, 6, 4, 4.7, 5, -1, 0, 1 }; @@ -2121,6 +2121,10 @@ double TDriverHandle::GetPos(int i) return 0; } +double TDriverHandle::GetEP(double pos) +{ + return 0; +} //---FV4a--- double TFV4a::GetPF(double i_bcp, double PP, double HP, double dt, double ep) @@ -2133,8 +2137,8 @@ double TFV4a::GetPF(double i_bcp, double PP, double HP, double dt, double ep) double ActFlowSpeed; ep = PP; // SPKS!! - LimPP = Min0R(BPT[lround(i_bcp)][1], HP); - ActFlowSpeed = BPT[lround(i_bcp)][0]; + LimPP = Min0R(BPT[lround(i_bcp) + 2][1], HP); + ActFlowSpeed = BPT[lround(i_bcp) + 2][0]; if ((i_bcp == i_bcpno)) LimPP = 2.9; @@ -2254,7 +2258,7 @@ double TFV4aM::GetPF(double i_bcp, double PP, double HP, double dt, double ep) XP = 0; // jak pusty, to pusty LimPP = Min0R(LPP_RP(i_bcp) + TP * 0.08 + RedAdj, HP); // pozycja + czasowy lub zasilanie - ActFlowSpeed = BPT[lround(i_bcp)][0]; + ActFlowSpeed = BPT[lround(i_bcp) + 2][0]; if ((EQ(i_bcp, -1))) pom = Min0R(HP, 5.4 + RedAdj); @@ -2311,7 +2315,7 @@ double TFV4aM::GetPF(double i_bcp, double PP, double HP, double dt, double ep) // jednak trzeba wydluzyc, bo // obecnie zle dziala if ((RP < ep) && - (RP < BPT[lround(i_bcpno)][1])) // jesli jestesmy ponizej cisnienia w sterujacym (2.9 bar) + (RP < BPT[lround(i_bcpno) + 2][1])) // jesli jestesmy ponizej cisnienia w sterujacym (2.9 bar) RP = RP + PF(RP, CP, 0.005) * dt; // przypisz cisnienie w PG - wydluzanie napelniania o czas // potrzebny do napelnienia PG @@ -2367,9 +2371,9 @@ double TFV4aM::LPP_RP(double pos) // cisnienie z zaokraglonej pozycji; { int i_pos; - i_pos = lround(pos - 0.5); // zaokraglone w dol + i_pos = lround(pos - 0.5) + 2; // zaokraglone w dol return - BPT[i_pos][1] + (BPT[i_pos + 1][1] - BPT[i_pos][1]) * (pos - i_pos); // interpolacja liniowa + BPT[i_pos][1] + (BPT[i_pos + 1][1] - BPT[i_pos][1]) * (pos + 2 - i_pos); // interpolacja liniowa } bool TFV4aM::EQ(double pos, double i_pos) { @@ -2539,8 +2543,8 @@ double TM394::GetPF(double i_bcp, double PP, double HP, double dt, double ep) if (BCP < -1) BCP = 1; - LimPP = Min0R(BPT_394[BCP][1], HP); - ActFlowSpeed = BPT_394[BCP][0]; + LimPP = Min0R(BPT_394[BCP+1][1], HP); + ActFlowSpeed = BPT_394[BCP+1][0]; if ((BCP == 1) || (BCP == i_bcpno)) LimPP = PP; if ((BCP == 0)) @@ -2615,14 +2619,14 @@ double TH14K1::GetPF(double i_bcp, double PP, double HP, double dt, double ep) BCP = lround(i_bcp); if (i_bcp < -1) BCP = 1; - LimPP = BPT_K[BCP][1]; + LimPP = BPT_K[BCP+1][1]; if (LimPP < 0) LimPP = 0.5 * PP; else if (LimPP > 0) LimPP = PP; else LimPP = CP; - ActFlowSpeed = BPT_K[BCP][0]; + ActFlowSpeed = BPT_K[BCP+1][0]; CP = CP + 6 * Min0R(abs(LimPP - CP), 0.05) * PR(CP, LimPP) * dt; // zbiornik sterujacy @@ -2685,14 +2689,14 @@ double TSt113::GetPF(double i_bcp, double PP, double HP, double dt, double ep) if (BCP < -1) BCP = 1; - LimPP = BPT_K[BCP][1]; + LimPP = BPT_K[BCP+1][1]; if (LimPP < 0) LimPP = 0.5 * PP; else if (LimPP > 0) LimPP = PP; else LimPP = CP; - ActFlowSpeed = BPT_K[BCP][0]; + ActFlowSpeed = BPT_K[BCP+1][0]; CP = CP + 6 * Min0R(abs(LimPP - CP), 0.05) * PR(CP, LimPP) * dt; // zbiornik sterujacy @@ -2738,8 +2742,8 @@ double Ttest::GetPF(double i_bcp, double PP, double HP, double dt, double ep) double dpMainValve; double ActFlowSpeed; - LimPP = BPT[lround(i_bcp)][1]; - ActFlowSpeed = BPT[lround(i_bcp)][0]; + LimPP = BPT[lround(i_bcp)+2][1]; + ActFlowSpeed = BPT[lround(i_bcp)+2][0]; if ((i_bcp == i_bcpno)) LimPP = 0.0; diff --git a/McZapkie/hamulce.h b/McZapkie/hamulce.h index 9818a9c3..d7833f74 100644 --- a/McZapkie/hamulce.h +++ b/McZapkie/hamulce.h @@ -585,7 +585,8 @@ Knorr/West EP - virtual double GetCP(); virtual void SetReductor(double nAdj); virtual double GetSound(int i); - virtual double GetPos(int i); + static double GetPos(int i); + double GetEP(double pos); }; @@ -625,7 +626,7 @@ Knorr/West EP - void Init(double Press)/*override*/; void SetReductor(double nAdj)/*override*/; double GetSound(int i)/*override*/; - double GetPos(int i)/*override*/; + static double GetPos(int i)/*override*/; inline TFV4aM(void) : TDriverHandle() { } }; @@ -649,7 +650,7 @@ Knorr/West EP - void Init(double Press)/*override*/; void SetReductor(double nAdj)/*override*/; double GetSound(int i)/*override*/; - double GetPos(int i)/*override*/; + static double GetPos(int i)/*override*/; double GetCP()/*override*/; double GetEP(double pos); @@ -703,7 +704,7 @@ Knorr/West EP - void Init(double Press)/*override*/; void SetReductor(double nAdj)/*override*/; double GetCP()/*override*/; - double GetPos(int i)/*override*/; + static double GetPos(int i)/*override*/; inline TM394(void) : TDriverHandle() { } }; @@ -726,7 +727,7 @@ Knorr/West EP - void Init(double Press)/*override*/; void SetReductor(double nAdj)/*override*/; double GetCP()/*override*/; - double GetPos(int i)/*override*/; + static double GetPos(int i)/*override*/; inline TH14K1(void) : TDriverHandle() { } }; @@ -746,7 +747,7 @@ Knorr/West EP - public: double GetPF(double i_bcp, double PP, double HP, double dt, double ep)/*override*/; double GetCP()/*override*/; - double GetPos(int i)/*override*/; + static double GetPos(int i)/*override*/; void Init(double Press)/*override*/; inline TSt113(void) : TH14K1() { } @@ -819,7 +820,7 @@ Knorr/West EP - public: double GetPF(double i_bcp, double PP, double HP, double dt, double ep)/*override*/; double GetCP()/*override*/; - double GetPos(int i)/*override*/; + static double GetPos(int i)/*override*/; double GetSound(int i)/*override*/; void Init(double Press)/*override*/;