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

Poprawione ładowanie hamulców

This commit is contained in:
firleju
2017-01-05 22:56:12 +01:00
parent 3926133db7
commit 819de3cb6a
3 changed files with 178 additions and 190 deletions

View File

@@ -6484,7 +6484,7 @@ bool TMoverParameters::LoadFIZ(std::string chkpath)
eMaxCP = atof(getkeyval(3, "MaxCP").c_str()); eMaxCP = atof(getkeyval(3, "MaxCP").c_str());
eBCS = atof(getkeyval(3, "BCS").c_str()); eBCS = atof(getkeyval(3, "BCS").c_str());
eBSA = atof(getkeyval(3, "BSA").c_str()); eBSA = atof(getkeyval(3, "BSA").c_str());
eBM = atof(getkeyval(1, "BM").c_str()); eBM = (getkeyval(1, "BM"));
eBVV = atoi(getkeyval(2, "BVV").c_str()); eBVV = atoi(getkeyval(2, "BVV").c_str());
eBRE = atof(getkeyval(3, "BRE").c_str()); eBRE = atof(getkeyval(3, "BRE").c_str());
eHiPP = atof(getkeyval(3, "HiPP").c_str()); eHiPP = atof(getkeyval(3, "HiPP").c_str());

View File

@@ -230,7 +230,7 @@ double TNESt3::GetPF(double PP, double dt, double Vel) // przeplyw miedzy komora
MPP = Miedzypoj->P(); MPP = Miedzypoj->P();
dV1 = 0; dV1 = 0;
nastG = (BrakeDelayFlag & bdelay_G); nastG = static_cast<double>(BrakeDelayFlag & bdelay_G);
// sprawdzanie stanu // sprawdzanie stanu
CheckState(BCP, dV1); CheckState(BCP, dV1);
@@ -245,8 +245,8 @@ double TNESt3::GetPF(double PP, double dt, double Vel) // przeplyw miedzy komora
// BrakeCyl.Flow(-dV); // BrakeCyl.Flow(-dV);
Przekladniki[1]->Flow(-dV); Przekladniki[1]->Flow(-dV);
if (((BrakeStatus & b_on) == b_on) && (Przekladniki[1]->P() * HBG300 < MaxBP)) if (((BrakeStatus & b_on) == b_on) && (Przekladniki[1]->P() * HBG300 < MaxBP))
dV = PF(BVP, BCP, Nozzles[dTN] * (nastG + 2 * short(BCP < Podskok)) + dV = PF(BVP, BCP,
Nozzles[dON] * (1 - nastG)) * Nozzles[dTN] * (nastG + 2 * short(BCP < Podskok)) + Nozzles[dON] * (1 - nastG)) *
dt * (0.1 + 4.9 * Min0R(0.2, (CVP - 0.05 - VVP) * BVM - BCP)); dt * (0.1 + 4.9 * Min0R(0.2, (CVP - 0.05 - VVP) * BVM - BCP));
else else
dV = 0; dV = 0;
@@ -255,8 +255,7 @@ double TNESt3::GetPF(double PP, double dt, double Vel) // przeplyw miedzy komora
BrakeRes->Flow(dV); BrakeRes->Flow(dV);
{ {
short i_end = 4; for (i = 1; i < 4; ++i)
for (i = 1; i < i_end; ++i)
{ {
Przekladniki[i]->Update(dt); Przekladniki[i]->Update(dt);
if (typeid(*Przekladniki[i]) == typeid(TRapid)) if (typeid(*Przekladniki[i]) == typeid(TRapid))
@@ -272,7 +271,7 @@ double TNESt3::GetPF(double PP, double dt, double Vel) // przeplyw miedzy komora
if ((Vel < -15)) if ((Vel < -15))
Przekladniki[i]->SetP(0); Przekladniki[i]->SetP(0);
else else
Przekladniki[i]->SetP(MaxBP * 3); Przekladniki[i]->SetP(MaxBP * 3);
else if (typeid(*Przekladniki[i]) == typeid(TPrzekCiagly)) else if (typeid(*Przekladniki[i]) == typeid(TPrzekCiagly))
Przekladniki[i]->SetMult(LoadC); Przekladniki[i]->SetMult(LoadC);
else if (typeid(*Przekladniki[i]) == typeid(TPrzek_PZZ)) else if (typeid(*Przekladniki[i]) == typeid(TPrzek_PZZ))
@@ -283,9 +282,9 @@ double TNESt3::GetPF(double PP, double dt, double Vel) // przeplyw miedzy komora
// przeplyw testowy miedzypojemnosci // przeplyw testowy miedzypojemnosci
dV = PF(MPP, VVP, BVs(BCP)) + PF(MPP, CVP, CVs(BCP)); dV = PF(MPP, VVP, BVs(BCP)) + PF(MPP, CVP, CVs(BCP));
if ((MPP - 0.05 > BVP)) if ((MPP - 0.05 > BVP))
dV = dV + PF(MPP - 0.05, BVP, Nozzles[dPT] * nastG + (1 - nastG) * Nozzles[dPO]); dV += PF(MPP - 0.05, BVP, Nozzles[dPT] * nastG + (1 - nastG) * Nozzles[dPO]);
if (MPP > VVP) if (MPP > VVP)
dV = dV + PF(MPP, VVP, d2A(5)); dV += PF(MPP, VVP, d2A(5));
Miedzypoj->Flow(dV * dt * 0.15); Miedzypoj->Flow(dV * dt * 0.15);
// przeplyw ZS <-> PG // przeplyw ZS <-> PG
@@ -293,7 +292,7 @@ double TNESt3::GetPF(double PP, double dt, double Vel) // przeplyw miedzy komora
dV = PF(CVP, MPP, temp) * dt; dV = PF(CVP, MPP, temp) * dt;
CntrlRes->Flow(+dV); CntrlRes->Flow(+dV);
ValveRes->Flow(-0.02 * dV); ValveRes->Flow(-0.02 * dV);
dV1 = dV1 + 0.98 * dV; dV1 += 0.98 * dV;
// przeplyw ZP <-> MPJ // przeplyw ZP <-> MPJ
if ((MPP - 0.05 > BVP)) if ((MPP - 0.05 > BVP))
@@ -301,7 +300,7 @@ double TNESt3::GetPF(double PP, double dt, double Vel) // przeplyw miedzy komora
else else
dV = 0; dV = 0;
BrakeRes->Flow(dV); BrakeRes->Flow(dV);
dV1 = dV1 + dV * 0.98; dV1 += dV * 0.98;
ValveRes->Flow(-0.02 * dV); ValveRes->Flow(-0.02 * dV);
// przeplyw PG <-> rozdzielacz // przeplyw PG <-> rozdzielacz
dV = PF(PP, VVP, 0.005) * dt; // 0.01 dV = PF(PP, VVP, 0.005) * dt; // 0.01
@@ -324,23 +323,23 @@ void TNESt3::EStParams(double i_crc) // parametry charakterystyczne dla ESt
void TNESt3::Init(double PP, double HPP, double LPP, double BP, int BDF) void TNESt3::Init(double PP, double HPP, double LPP, double BP, int BDF)
{ {
TBrake::Init(PP, HPP, LPP, BP, BDF); TBrake::Init(PP, HPP, LPP, BP, BDF);
ValveRes->CreatePress(PP); ValveRes->CreatePress(PP);
BrakeCyl->CreatePress(BP); BrakeCyl->CreatePress(BP);
BrakeRes->CreatePress(PP); BrakeRes->CreatePress(PP);
CntrlRes = new TReservoir(); CntrlRes = new TReservoir();
CntrlRes->CreateCap(15); CntrlRes->CreateCap(15);
CntrlRes->CreatePress(HPP); CntrlRes->CreatePress(HPP);
BrakeStatus = int(BP > 1); BrakeStatus = static_cast<int>(BP > 1.0);
Miedzypoj = new TReservoir(); Miedzypoj = new TReservoir();
Miedzypoj->CreateCap(5); Miedzypoj->CreateCap(5);
Miedzypoj->CreatePress(PP); Miedzypoj->CreatePress(PP);
BVM = 1 / (HPP - 0.05 - LPP) * MaxBP; BVM = 1.0 / (HPP - 0.05 - LPP) * MaxBP;
BrakeDelayFlag = BDF; BrakeDelayFlag = BDF;
RapidStatus = false; RapidStatus = false;
LoadC, LoadM, TareBP, TareM, Podskok, LBP = 0.0; LoadC, LoadM, TareBP, TareM, Podskok, LBP = 0.0;
Zamykajacy, Przys_blok = false; Zamykajacy, Przys_blok = false;
@@ -375,23 +374,22 @@ void TNESt3::CheckState(double BCP, double &dV1) // glowny przyrzad rozrzadczy
// sprawdzanie stanu // sprawdzanie stanu
// if ((BrakeStatus and 1)=1)and(BCP>0.25)then // if ((BrakeStatus and 1)=1)and(BCP>0.25)then
if ((VVP + 0.01 + BCP * 1.0 / BVM < CVP - 0.05) && (Przys_blok)) if ((VVP + 0.01 + BCP * 1.0 / BVM < CVP - 0.05) && (Przys_blok))
BrakeStatus = BrakeStatus |= 3; // hamowanie stopniowe;
(BrakeStatus | else if ((VVP - 0.01 + (BCP - 0.1) * 1.0 / BVM > CVP - 0.05))
3); // hamowanie stopniowe;else if( ( VVP-0.01+( BCP-0.1 )*1.0/BVM>CVP-0.05 ) ) BrakeStatus &= 252; // luzowanie;
BrakeStatus = (BrakeStatus & 252); // luzowanie;else if( ( VVP+BCP*1.0/BVM>CVP-0.05 ) ) else if ((VVP + BCP * 1.0 / BVM > CVP - 0.05))
BrakeStatus = BrakeStatus &= 253; // zatrzymanie napelaniania;
(BrakeStatus & 253); // zatrzymanie napelaniania;else if( ( VVP+( BCP-0.1 else if ((VVP + (BCP - 0.1) * 1.0 / BVM < CVP - 0.05) && (BCP > 0.25)) // zatrzymanie luzowania
// )*1.0/BVM<CVP-0.05 )&&( BCP>0.25 ) ) //zatrzymanie luzowania BrakeStatus |= 1;
BrakeStatus = (BrakeStatus | 1);
if ((BrakeStatus & 1) == 0) if ((BrakeStatus & 1) == 0)
SoundFlag = SoundFlag | sf_CylU; SoundFlag |= sf_CylU;
if ((VVP + 0.10 < CVP) && (BCP < 0.25)) // poczatek hamowania if ((VVP + 0.10 < CVP) && (BCP < 0.25)) // poczatek hamowania
if ((!Przys_blok)) if ((!Przys_blok))
{ {
ValveRes->CreatePress(0.1 * VVP); ValveRes->CreatePress(0.1 * VVP);
SoundFlag = SoundFlag | sf_Acc; SoundFlag |= sf_Acc;
ValveRes->Act(); ValveRes->Act();
Przys_blok = true; Przys_blok = true;
} }
@@ -415,7 +413,7 @@ void TNESt3::CheckReleaser(double dt) // odluzniacz
{ {
CntrlRes->Flow(+PF(CVP, 0, 0.02) * dt); CntrlRes->Flow(+PF(CVP, 0, 0.02) * dt);
if ((CVP < VVP + 0.3) || (!autom)) if ((CVP < VVP + 0.3) || (!autom))
BrakeStatus = BrakeStatus & 247; BrakeStatus &= 247;
} }
} }
@@ -458,11 +456,9 @@ double TNESt3::BVs(double BCP) // napelniacz pomocniczego
void TNESt3::PLC(double mass) void TNESt3::PLC(double mass)
{ {
LoadC = LoadC = 1 +
1 + double(mass < LoadM) *
double(mass < LoadM) * ((TareBP + (MaxBP - TareBP) * (mass - TareM) / (LoadM - TareM)) / MaxBP - 1);
((TareBP + (MaxBP - TareBP) * (mass - TareM) * 1.0 / (LoadM - TareM)) * 1.0 / MaxBP -
1);
} }
void TNESt3::ForceEmptiness() void TNESt3::ForceEmptiness()
@@ -518,7 +514,7 @@ void TNESt3::SetSize(int size, std::string params) // ustawianie dysz (rozmiaru
Przekladniki[3] = new TPrzeciwposlizg(); Przekladniki[3] = new TPrzeciwposlizg();
if (params.find("-ED") != std::string::npos) if (params.find("-ED") != std::string::npos)
{ {
delete Przekladniki[3]; //tutaj ma byæ destruktor delete Przekladniki[3]; // tutaj ma byæ destruktor
Przekladniki[1]->SetRapidParams(2, 18); Przekladniki[1]->SetRapidParams(2, 18);
Przekladniki[3] = new TPrzekED(); Przekladniki[3] = new TPrzekED();
} }
@@ -654,24 +650,19 @@ void TNESt3::SetSize(int size, std::string params) // ustawianie dysz (rozmiaru
Nozzles[dSm] = 0.9; Nozzles[dSm] = 0.9;
// przeliczanie z mm^2 na l/m // przeliczanie z mm^2 na l/m
for (i = 0; i < dMAX; ++i)
{ {
for (i = 0; i < dMAX; ++i) Nozzles[i] = d2A(Nozzles[i]); //(/1000^2*pi/4*1000)
{
Nozzles[i] = d2A(Nozzles[i]); //(/1000^2*pi/4*1000)
}
} }
for (i = 1; i < 4; ++i)
{ {
for (i = 1; i < 4; ++i) Przekladniki[i]->BrakeRes = BrakeRes;
{ Przekladniki[i]->CreateCap(i);
Przekladniki[i]->BrakeRes = BrakeRes; Przekladniki[i]->CreatePress(BrakeCyl->P());
Przekladniki[i]->CreateCap(i); if (i < 3)
Przekladniki[i]->CreatePress(BrakeCyl->P()); Przekladniki[i]->Next = Przekladniki[i + 1];
if (i < 3) else
Przekladniki[i]->Next = Przekladniki[i + 1]; Przekladniki[i]->Next = BrakeCyl;
else
Przekladniki[i]->Next = BrakeCyl;
}
} }
} }

View File

@@ -14,24 +14,21 @@ Copyright (C) 2007-2014 Maciej Cierniak
#include "hamulce.h" #include "hamulce.h"
#include "Mover.h" #include "Mover.h"
#include <typeinfo>
#include <cmath> #include <cmath>
#include <typeinfo>
//---FUNKCJE OGOLNE--- //---FUNKCJE OGOLNE---
static double const DPL = 0.25; static double const DPL = 0.25;
double TFV4aM::pos_table[11] = { -2, 6, -1, 0, -2, 1, 4, 6, 0, 0, 0 }; 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 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 TM394::pos_table[11] = {-1, 5, -1, 0, 1, 2, 4, 5, 0, 0, 0};
double TH14K1::BPT_K[6][2] = double TH14K1::BPT_K[6][2] = {{10, 0}, {4, 1}, {0, 1}, {4, 0}, {4, -1}, {15, -1}};
{ {10, 0}, {4, 1}, {0, 1}, {4, 0}, {4, -1}, {15, -1} }; double TH14K1::pos_table[11] = {-1, 4, -1, 0, 1, 2, 3, 4, 0, 0, 0};
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::BPT_K[6][2] = double TSt113::BEP_K[7] = {0, -1, 1, 0, 0, 0, 0};
{ {10, 0}, {4, 1}, {0, 1}, {4, 0}, {4, -1}, {15, -1} }; double TSt113::pos_table[11] = {-1, 5, -1, 0, 2, 3, 4, 5, 0, 0, 1};
double TSt113::BEP_K[7] = { 0, -1, 1, 0, 0, 0, 0 }; double TFVel6::pos_table[11] = {-1, 6, -1, 0, 6, 4, 4.7, 5, -1, 0, 1};
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 };
double PR(double P1, double P2) double PR(double P1, double P2)
{ {
@@ -87,7 +84,7 @@ double PF1(double P1, double P2, double S)
long lround(double value) long lround(double value)
{ {
return floorl(value + 0.5); return floorl(value + 0.5);
} }
double PFVa(double PH, double PL, double S, double LIM, double PFVa(double PH, double PL, double S, double LIM,
@@ -101,8 +98,7 @@ double PFVa(double PH, double PL, double S, double LIM,
double sg = PL / PH; // bezwymiarowy stosunek cisnien double sg = PL / PH; // bezwymiarowy stosunek cisnien
double FM = PH * 197 * S; // najwyzszy mozliwy przeplyw, wraz z kierunkiem double FM = PH * 197 * S; // najwyzszy mozliwy przeplyw, wraz z kierunkiem
if ((LIM - PL) < DP) if ((LIM - PL) < DP)
FM = FM * (LIM - PL) / FM = FM * (LIM - PL) / DP; // jesli jestesmy przy nastawieniu, to zawor sie przymyka
DP; // jesli jestesmy przy nastawieniu, to zawor sie przymyka
if ((sg > 0.5)) // jesli ponizej stosunku krytycznego if ((sg > 0.5)) // jesli ponizej stosunku krytycznego
if ((PH - PL) < DPL) // niewielka roznica cisnien if ((PH - PL) < DPL) // niewielka roznica cisnien
return (PH - PL) / DPL * FM * 2 * sqrt((sg) * (1 - sg)); return (PH - PL) / DPL * FM * 2 * sqrt((sg) * (1 - sg));
@@ -126,8 +122,7 @@ double PFVd(double PH, double PL, double S, double LIM,
double sg = PL / PH; // bezwymiarowy stosunek cisnien double sg = PL / PH; // bezwymiarowy stosunek cisnien
double FM = PH * 197 * S; // najwyzszy mozliwy przeplyw, wraz z kierunkiem double FM = PH * 197 * S; // najwyzszy mozliwy przeplyw, wraz z kierunkiem
if ((PH - LIM) < 0.1) if ((PH - LIM) < 0.1)
FM = FM * (PH - LIM) / FM = FM * (PH - LIM) / DP; // jesli jestesmy przy nastawieniu, to zawor sie przymyka
DP; // jesli jestesmy przy nastawieniu, to zawor sie przymyka
if ((sg > 0.5)) // jesli ponizej stosunku krytycznego if ((sg > 0.5)) // jesli ponizej stosunku krytycznego
if ((PH - PL) < DPL) // niewielka roznica cisnien if ((PH - PL) < DPL) // niewielka roznica cisnien
return (PH - PL) / DPL * FM * 2 * sqrt((sg) * (1 - sg)); return (PH - PL) / DPL * FM * 2 * sqrt((sg) * (1 - sg));
@@ -162,7 +157,7 @@ TReservoir::TReservoir()
// inherited:: Create; // inherited:: Create;
Cap = 1; Cap = 1;
Vol = 0; Vol = 0;
dVol = 0; dVol = 0;
} }
void TReservoir::Act() void TReservoir::Act()
@@ -214,7 +209,7 @@ double TBrakeCyl::P()
double VtoC = Vol / Cap; // stosunek cisnienia do objetosci double VtoC = Vol / Cap; // stosunek cisnienia do objetosci
// P:=VtoC; // P:=VtoC;
if (VtoC < VS) if (VtoC < VS)
return VtoC *pS / VS; // objetosc szkodliwa return VtoC * pS / VS; // objetosc szkodliwa
else if (VtoC > VD) else if (VtoC > VD)
return VtoC - cD; // caly silownik; return VtoC - cD; // caly silownik;
else else
@@ -256,16 +251,16 @@ TBrake::TBrake(double i_mbp, double i_bcr, double i_bcd, double i_brc, int i_bcn
// inherited:: Create; // inherited:: Create;
MaxBP = i_mbp; MaxBP = i_mbp;
BCN = i_bcn; BCN = i_bcn;
BCM = 1; BCM = 1;
BCA = i_bcn * i_bcr * i_bcr * pi; BCA = i_bcn * i_bcr * i_bcr * pi;
BA = i_ba; BA = i_ba;
NBpA = i_nbpa; NBpA = i_nbpa;
BrakeDelays = i_BD; BrakeDelays = i_BD;
BrakeDelayFlag = bdelay_P; BrakeDelayFlag = bdelay_P;
DCV = false; DCV = false;
ASBP = 0.0; ASBP = 0.0;
BrakeStatus = b_hld; BrakeStatus = b_hld;
SoundFlag = 0; SoundFlag = 0;
// 210.88 // 210.88
// SizeBR:=i_bcn*i_bcr*i_bcr*i_bcd*40.17*MaxBP/(5-MaxBP); //objetosc ZP w stosunku do cylindra // SizeBR:=i_bcn*i_bcr*i_bcr*i_bcd*40.17*MaxBP/(5-MaxBP); //objetosc ZP w stosunku do cylindra
// 14" i cisnienia 4.2 atm // 14" i cisnienia 4.2 atm
@@ -285,27 +280,36 @@ TBrake::TBrake(double i_mbp, double i_bcr, double i_bcd, double i_brc, int i_bcn
// FM.Free; // FM.Free;
// materialy cierne // materialy cierne
i_mat = i_mat && (255 - bp_MHS); i_mat = i_mat & (255 - bp_MHS);
switch (i_mat) switch (i_mat)
{ {
case bp_P10Bg: case bp_P10Bg:
FM = new TP10Bg(); FM = new TP10Bg();
break;
case bp_P10Bgu: case bp_P10Bgu:
FM = new TP10Bgu(); FM = new TP10Bgu();
break;
case bp_FR513: case bp_FR513:
FM = new TFR513(); FM = new TFR513();
break;
case bp_FR510: case bp_FR510:
FM = new TFR510(); FM = new TFR510();
break;
case bp_Cosid: case bp_Cosid:
FM = new TCosid(); FM = new TCosid();
break;
case bp_P10yBg: case bp_P10yBg:
FM = new TP10yBg(); FM = new TP10yBg();
break;
case bp_P10yBgu: case bp_P10yBgu:
FM = new TP10yBgu(); FM = new TP10yBgu();
break;
case bp_D1: case bp_D1:
FM = new TDisk1(); FM = new TDisk1();
break;
case bp_D2: case bp_D2:
FM = new TDisk2(); FM = new TDisk2();
break;
default: // domyslnie default: // domyslnie
FM = new TP10(); FM = new TP10();
} }
@@ -314,7 +318,7 @@ TBrake::TBrake(double i_mbp, double i_bcr, double i_bcd, double i_brc, int i_bcn
// inicjalizacja hamulca (stan poczatkowy) // inicjalizacja hamulca (stan poczatkowy)
void TBrake::Init(double PP, double HPP, double LPP, double BP, int BDF) void TBrake::Init(double PP, double HPP, double LPP, double BP, int BDF)
{ {
BrakeDelayFlag = BDF; BrakeDelayFlag = BDF;
} }
// pobranie wspolczynnika tarcia materialu // pobranie wspolczynnika tarcia materialu
@@ -333,7 +337,7 @@ double TBrake::GetBCP()
// ciśnienie sterujące hamowaniem elektro-dynamicznym // ciśnienie sterujące hamowaniem elektro-dynamicznym
double TBrake::GetEDBCP() double TBrake::GetEDBCP()
{ {
return 0; return 0;
} }
// cisnienie zbiornika pomocniczego // cisnienie zbiornika pomocniczego
@@ -429,8 +433,8 @@ void TBrake::ForceEmptiness()
void TWest::Init(double PP, double HPP, double LPP, double BP, int BDF) void TWest::Init(double PP, double HPP, double LPP, double BP, int BDF)
{ {
TBrake::Init(PP, HPP, LPP, BP, BDF); TBrake::Init(PP, HPP, LPP, BP, BDF);
ValveRes->CreatePress(PP); ValveRes->CreatePress(PP);
BrakeCyl->CreatePress(BP); BrakeCyl->CreatePress(BP);
BrakeRes->CreatePress(PP / 2 + HPP / 2); BrakeRes->CreatePress(PP / 2 + HPP / 2);
// BrakeStatus:=3*int(BP>0.1); // BrakeStatus:=3*int(BP>0.1);
@@ -557,11 +561,9 @@ void TWest::SetEPS(double nEPS)
void TWest::PLC(double mass) void TWest::PLC(double mass)
{ {
LoadC = LoadC = 1 +
1 + int(mass < LoadM) *
int(mass < LoadM) * ((TareBP + (MaxBP - TareBP) * (mass - TareM) / (LoadM - TareM)) / MaxBP - 1);
((TareBP + (MaxBP - TareBP) * (mass - TareM) / (LoadM - TareM)) / MaxBP -
1);
} }
void TWest::SetLP(double TM, double LM, double TBP) void TWest::SetLP(double TM, double LM, double TBP)
@@ -749,15 +751,15 @@ double TESt::GetPF(double PP, double dt, double Vel)
void TESt::Init(double PP, double HPP, double LPP, double BP, int BDF) void TESt::Init(double PP, double HPP, double LPP, double BP, int BDF)
{ {
TBrake::Init(PP, HPP, LPP, BP, BDF); TBrake::Init(PP, HPP, LPP, BP, BDF);
ValveRes->CreatePress(PP); ValveRes->CreatePress(PP);
BrakeCyl->CreatePress(BP); BrakeCyl->CreatePress(BP);
BrakeRes->CreatePress(PP); BrakeRes->CreatePress(PP);
CntrlRes->CreateCap(15); CntrlRes->CreateCap(15);
CntrlRes->CreatePress(HPP); CntrlRes->CreatePress(HPP);
BrakeStatus = 0; BrakeStatus = 0;
BVM = 1 / (HPP - LPP) * MaxBP; BVM = 1.0 / (HPP - LPP) * MaxBP;
BrakeDelayFlag = BDF; BrakeDelayFlag = BDF;
} }
@@ -775,8 +777,8 @@ double TESt::GetCRP()
void TEStEP2::Init(double PP, double HPP, double LPP, double BP, int BDF) void TEStEP2::Init(double PP, double HPP, double LPP, double BP, int BDF)
{ {
TLSt::Init(PP, HPP, LPP, BP, BDF); TLSt::Init(PP, HPP, LPP, BP, BDF);
ImplsRes->CreateCap(1); ImplsRes->CreateCap(1);
ImplsRes->CreatePress(BP); ImplsRes->CreatePress(BP);
BrakeRes->CreatePress(PP); BrakeRes->CreatePress(PP);
@@ -898,11 +900,9 @@ double TEStEP2::GetPF(double PP, double dt, double Vel)
void TEStEP2::PLC(double mass) void TEStEP2::PLC(double mass)
{ {
LoadC = LoadC = 1 +
1 + int(mass < LoadM) *
int(mass < LoadM) * ((TareBP + (MaxBP - TareBP) * (mass - TareM) / (LoadM - TareM)) / MaxBP - 1);
((TareBP + (MaxBP - TareBP) * (mass - TareM) / (LoadM - TareM)) / MaxBP -
1);
} }
void TEStEP2::SetEPS(double nEPS) void TEStEP2::SetEPS(double nEPS)
@@ -960,8 +960,9 @@ double TESt3::GetPF(double PP, double dt, double Vel)
BrakeCyl->Flow(-dv); BrakeCyl->Flow(-dv);
// przeplyw ZP <-> silowniki // przeplyw ZP <-> silowniki
if ((BrakeStatus & b_on) == b_on) if ((BrakeStatus & b_on) == b_on)
dv = PF(BVP, BCP, 0.017 * (1 + int((BCP < 0.58) && (BrakeDelayFlag == bdelay_G))) * dv = PF(BVP, BCP,
(1.13 - int((BCP > 0.6) && (BrakeDelayFlag == bdelay_G))) * SizeBC) * 0.017 * (1 + int((BCP < 0.58) && (BrakeDelayFlag == bdelay_G))) *
(1.13 - int((BCP > 0.6) && (BrakeDelayFlag == bdelay_G))) * SizeBC) *
dt; dt;
else else
dv = 0; dv = 0;
@@ -1085,7 +1086,7 @@ double TESt4R::GetPF(double PP, double dt, double Vel)
void TESt4R::Init(double PP, double HPP, double LPP, double BP, int BDF) void TESt4R::Init(double PP, double HPP, double LPP, double BP, int BDF)
{ {
TESt::Init(PP, HPP, LPP, BP, BDF); TESt::Init(PP, HPP, LPP, BP, BDF);
ImplsRes->CreateCap(1); ImplsRes->CreateCap(1);
ImplsRes->CreatePress(BP); ImplsRes->CreatePress(BP);
@@ -1133,8 +1134,9 @@ double TESt3AL2::GetPF(double PP, double dt, double Vel)
ImplsRes->Flow(-dv); ImplsRes->Flow(-dv);
// przeplyw ZP <-> KI // przeplyw ZP <-> KI
if (((BrakeStatus & b_on) == b_on) && (BCP < MaxBP)) if (((BrakeStatus & b_on) == b_on) && (BCP < MaxBP))
dv = PF(BVP, BCP, 0.0008 * (1 + int((BCP < 0.58) && (BrakeDelayFlag == bdelay_G))) * dv = PF(BVP, BCP,
(1.13 - int((BCP > 0.6) && (BrakeDelayFlag == bdelay_G)))) * 0.0008 * (1 + int((BCP < 0.58) && (BrakeDelayFlag == bdelay_G))) *
(1.13 - int((BCP > 0.6) && (BrakeDelayFlag == bdelay_G)))) *
dt; dt;
else else
dv = 0; dv = 0;
@@ -1179,11 +1181,9 @@ double TESt3AL2::GetPF(double PP, double dt, double Vel)
void TESt3AL2::PLC(double mass) void TESt3AL2::PLC(double mass)
{ {
LoadC = LoadC = 1 +
1 + int(mass < LoadM) *
int(mass < LoadM) * ((TareBP + (MaxBP - TareBP) * (mass - TareM) / (LoadM - TareM)) / MaxBP - 1);
((TareBP + (MaxBP - TareBP) * (mass - TareM) / (LoadM - TareM)) / MaxBP -
1);
} }
void TESt3AL2::SetLP(double TM, double LM, double TBP) void TESt3AL2::SetLP(double TM, double LM, double TBP)
@@ -1195,8 +1195,8 @@ void TESt3AL2::SetLP(double TM, double LM, double TBP)
void TESt3AL2::Init(double PP, double HPP, double LPP, double BP, int BDF) void TESt3AL2::Init(double PP, double HPP, double LPP, double BP, int BDF)
{ {
TESt::Init(PP, HPP, LPP, BP, BDF); TESt::Init(PP, HPP, LPP, BP, BDF);
ImplsRes->CreateCap(1); ImplsRes->CreateCap(1);
ImplsRes->CreatePress(BP); ImplsRes->CreatePress(BP);
} }
@@ -1281,15 +1281,14 @@ double TLSt::GetPF(double PP, double dt, double Vel)
// if Vel>55 then temp:=0.72 else // if Vel>55 then temp:=0.72 else
// temp:=1;{R} // temp:=1;{R}
// cisnienie PP // cisnienie PP
RapidTemp = RapidTemp + RapidTemp =
(RM * int((Vel > 55) && (BrakeDelayFlag == bdelay_R)) - RapidTemp) * dt / 2; RapidTemp + (RM * int((Vel > 55) && (BrakeDelayFlag == bdelay_R)) - RapidTemp) * dt / 2;
temp = 1 - RapidTemp; temp = 1 - RapidTemp;
if (EDFlag > 0.2) if (EDFlag > 0.2)
temp = 10000; temp = 10000;
// powtarzacz — podwojny zawor zwrotny // powtarzacz — podwojny zawor zwrotny
temp = temp = Max0R(((CVP - BCP) * BVM + ASBP * int((BrakeStatus & b_asb) == b_asb)) / temp, LBP);
Max0R(((CVP - BCP) * BVM + ASBP * int((BrakeStatus & b_asb) == b_asb)) / temp, LBP);
// luzowanie CH // luzowanie CH
if ((BrakeCyl->P() > temp + 0.005) || (temp < 0.28)) if ((BrakeCyl->P() > temp + 0.005) || (temp < 0.28))
// dV:=PF(0,BrakeCyl->P(),0.0015*3*sizeBC)*dt // dV:=PF(0,BrakeCyl->P(),0.0015*3*sizeBC)*dt
@@ -1319,7 +1318,7 @@ double TLSt::GetPF(double PP, double dt, double Vel)
void TLSt::Init(double PP, double HPP, double LPP, double BP, int BDF) void TLSt::Init(double PP, double HPP, double LPP, double BP, int BDF)
{ {
TESt4R::Init(PP, HPP, LPP, BP, BDF); TESt4R::Init(PP, HPP, LPP, BP, BDF);
ValveRes->CreateCap(1); ValveRes->CreateCap(1);
ImplsRes->CreateCap(8); ImplsRes->CreateCap(8);
ImplsRes->CreatePress(PP); ImplsRes->CreatePress(PP);
@@ -1430,8 +1429,8 @@ double TEStED::GetPF(double PP, double dt, double Vel)
dv = 0; dv = 0;
ImplsRes->Flow(-dv); ImplsRes->Flow(-dv);
if (((BrakeStatus & b_on) == b_on) && (BCP < MaxBP)) if (((BrakeStatus & b_on) == b_on) && (BCP < MaxBP))
dv = PF(BVP, BCP, Nozzles[2] * (nastG + 2 * int(BCP < 0.8)) + Nozzles[0] * (1 - nastG)) * dv =
dt; PF(BVP, BCP, Nozzles[2] * (nastG + 2 * int(BCP < 0.8)) + Nozzles[0] * (1 - nastG)) * dt;
else else
dv = 0; dv = 0;
ImplsRes->Flow(-dv); ImplsRes->Flow(-dv);
@@ -1463,8 +1462,8 @@ double TEStED::GetPF(double PP, double dt, double Vel)
dv = dv + PF(MPP, VVP, 0.02); dv = dv + PF(MPP, VVP, 0.02);
Miedzypoj->Flow(dv * dt * 0.15); Miedzypoj->Flow(dv * dt * 0.15);
RapidTemp = RapidTemp + RapidTemp =
(RM * int((Vel > 55) && (BrakeDelayFlag == bdelay_R)) - RapidTemp) * dt / 2; RapidTemp + (RM * int((Vel > 55) && (BrakeDelayFlag == bdelay_R)) - RapidTemp) * dt / 2;
temp = Max0R(1 - RapidTemp, 0.001); temp = Max0R(1 - RapidTemp, 0.001);
// if EDFlag then temp:=1000; // if EDFlag then temp:=1000;
// temp:=temp/(1-); // temp:=temp/(1-);
@@ -1518,8 +1517,8 @@ double TEStED::GetPF(double PP, double dt, double Vel)
void TEStED::Init(double PP, double HPP, double LPP, double BP, int BDF) void TEStED::Init(double PP, double HPP, double LPP, double BP, int BDF)
{ {
TLSt::Init(PP, HPP, LPP, BP, BDF); TLSt::Init(PP, HPP, LPP, BP, BDF);
int i; int i;
ValveRes->CreatePress(1 * PP); ValveRes->CreatePress(1 * PP);
BrakeCyl->CreatePress(1 * BP); BrakeCyl->CreatePress(1 * BP);
@@ -1569,11 +1568,9 @@ double TEStED::GetEDBCP()
void TEStED::PLC(double mass) void TEStED::PLC(double mass)
{ {
LoadC = LoadC = 1 +
1 + int(mass < LoadM) *
int(mass < LoadM) * ((TareBP + (MaxBP - TareBP) * (mass - TareM) / (LoadM - TareM)) / MaxBP - 1);
((TareBP + (MaxBP - TareBP) * (mass - TareM) / (LoadM - TareM)) / MaxBP -
1);
} }
void TEStED::SetLP(double TM, double LM, double TBP) void TEStED::SetLP(double TM, double LM, double TBP)
@@ -1600,23 +1597,22 @@ void TCV1::CheckState(double BCP, double &dV1)
BrakeStatus = BrakeStatus & 247; BrakeStatus = BrakeStatus & 247;
// sprawdzanie stanu // sprawdzanie stanu
if ((BrakeStatus & b_hld) == b_hld) if ((BrakeStatus & b_hld) == b_hld)
if ((VVP + 0.003 + BCP / BVM < CVP)) if ((VVP + 0.003 + BCP / BVM < CVP))
BrakeStatus = BrakeStatus = (BrakeStatus | 2); // hamowanie stopniowe;
(BrakeStatus | 2); // hamowanie stopniowe; else if ((VVP - 0.003 + BCP * 1.0 / BVM > CVP))
else if ((VVP - 0.003 + BCP*1.0 / BVM>CVP)) BrakeStatus = (BrakeStatus & 252); // luzowanie;
BrakeStatus = (BrakeStatus & 252); // luzowanie; else if ((VVP + BCP * 1.0 / BVM > CVP))
else if ((VVP + BCP*1.0 / BVM > CVP)) BrakeStatus = (BrakeStatus & 253); // zatrzymanie napelaniania;
BrakeStatus = (BrakeStatus & 253); // zatrzymanie napelaniania; else
else ;
; else if ((VVP + 0.10 < CVP) && (BCP < 0.1)) // poczatek hamowania
else if ((VVP + 0.10 < CVP) && (BCP < 0.1)) // poczatek hamowania {
{ BrakeStatus = (BrakeStatus | 3);
BrakeStatus = (BrakeStatus | 3); dV1 = 1.25;
dV1 = 1.25; }
} else if ((VVP + BCP / BVM < CVP) && (BCP > 0.25)) // zatrzymanie luzowanie
else if ((VVP + BCP / BVM < CVP) && (BCP > 0.25)) // zatrzymanie luzowanie BrakeStatus = (BrakeStatus | 1);
BrakeStatus = (BrakeStatus | 1);
} }
double TCV1::CVs(double BP) double TCV1::CVs(double BP)
@@ -1685,8 +1681,9 @@ double TCV1::GetPF(double PP, double dt, double Vel)
// przeplyw ZP <-> silowniki // przeplyw ZP <-> silowniki
if ((BrakeStatus & b_on) == b_on) if ((BrakeStatus & b_on) == b_on)
dv = PF(BVP, BCP, 0.017 * (1 + int((BCP < 0.58) && (BrakeDelayFlag == bdelay_G))) * dv = PF(BVP, BCP,
(1.13 - int((BCP > 0.6) && (BrakeDelayFlag == bdelay_G))) * SizeBC) * 0.017 * (1 + int((BCP < 0.58) && (BrakeDelayFlag == bdelay_G))) *
(1.13 - int((BCP > 0.6) && (BrakeDelayFlag == bdelay_G))) * SizeBC) *
dt; dt;
else else
dv = 0; dv = 0;
@@ -1715,8 +1712,8 @@ double TCV1::GetPF(double PP, double dt, double Vel)
void TCV1::Init(double PP, double HPP, double LPP, double BP, int BDF) void TCV1::Init(double PP, double HPP, double LPP, double BP, int BDF)
{ {
TBrake::Init(PP, HPP, LPP, BP, BDF); TBrake::Init(PP, HPP, LPP, BP, BDF);
ValveRes->CreatePress(PP); ValveRes->CreatePress(PP);
BrakeCyl->CreatePress(BP); BrakeCyl->CreatePress(BP);
BrakeRes->CreatePress(PP); BrakeRes->CreatePress(PP);
CntrlRes->CreateCap(15); CntrlRes->CreateCap(15);
@@ -1752,8 +1749,8 @@ double TCV1L_TR::GetHPFlow(double HP, double dt)
void TCV1L_TR::Init(double PP, double HPP, double LPP, double BP, int BDF) void TCV1L_TR::Init(double PP, double HPP, double LPP, double BP, int BDF)
{ {
TCV1::Init(PP, HPP, LPP, BP, BDF); TCV1::Init(PP, HPP, LPP, BP, BDF);
ImplsRes->CreateCap(2.5); ImplsRes->CreateCap(2.5);
ImplsRes->CreatePress(BP); ImplsRes->CreatePress(BP);
} }
@@ -1795,8 +1792,9 @@ double TCV1L_TR::GetPF(double PP, double dt, double Vel)
ImplsRes->Flow(-dv); ImplsRes->Flow(-dv);
// przeplyw ZP <-> KI // przeplyw ZP <-> KI
if (((BrakeStatus & b_on) == b_on) && (BCP < MaxBP)) if (((BrakeStatus & b_on) == b_on) && (BCP < MaxBP))
dv = PF(BVP, BCP, 0.002 * (1 + int((BCP < 0.58) && (BrakeDelayFlag == bdelay_G))) * dv = PF(BVP, BCP,
(1.13 - int((BCP > 0.6) && (BrakeDelayFlag == bdelay_G)))) * 0.002 * (1 + int((BCP < 0.58) && (BrakeDelayFlag == bdelay_G))) *
(1.13 - int((BCP > 0.6) && (BrakeDelayFlag == bdelay_G)))) *
dt; dt;
else else
dv = 0; dv = 0;
@@ -1988,7 +1986,8 @@ double TKE::GetPF(double PP, double dt, double Vel)
ImplsRes->Flow(-dv); ImplsRes->Flow(-dv);
// rapid // rapid
if (!((typeid(FM) == typeid(TDisk1)) || (typeid(FM) == typeid(TDisk2)))) // jesli zeliwo to schodz if (!((typeid(FM) == typeid(TDisk1)) ||
(typeid(FM) == typeid(TDisk2)))) // jesli zeliwo to schodz
RapidStatus = ((BrakeDelayFlag & bdelay_R) == bdelay_R) && RapidStatus = ((BrakeDelayFlag & bdelay_R) == bdelay_R) &&
(((Vel > 50) && (RapidStatus)) || (Vel > 70)); (((Vel > 50) && (RapidStatus)) || (Vel > 70));
else // jesli tarczowki, to zostan else // jesli tarczowki, to zostan
@@ -2045,8 +2044,8 @@ double TKE::GetPF(double PP, double dt, double Vel)
void TKE::Init(double PP, double HPP, double LPP, double BP, int BDF) void TKE::Init(double PP, double HPP, double LPP, double BP, int BDF)
{ {
TBrake::Init(PP, HPP, LPP, BP, BDF); TBrake::Init(PP, HPP, LPP, BP, BDF);
ValveRes->CreatePress(PP); ValveRes->CreatePress(PP);
BrakeCyl->CreatePress(BP); BrakeCyl->CreatePress(BP);
BrakeRes->CreatePress(PP); BrakeRes->CreatePress(PP);
@@ -2080,11 +2079,9 @@ double TKE::GetHPFlow(double HP, double dt)
void TKE::PLC(double mass) void TKE::PLC(double mass)
{ {
LoadC = LoadC = 1 +
1 + int(mass < LoadM) *
int(mass < LoadM) * ((TareBP + (MaxBP - TareBP) * (mass - TareM) / (LoadM - TareM)) / MaxBP - 1);
((TareBP + (MaxBP - TareBP) * (mass - TareM) / (LoadM - TareM)) / MaxBP -
1);
} }
void TKE::SetLP(double TM, double LM, double TBP) void TKE::SetLP(double TM, double LM, double TBP)
@@ -2138,7 +2135,7 @@ double TDriverHandle::GetPos(int i)
double TDriverHandle::GetEP(double pos) double TDriverHandle::GetEP(double pos)
{ {
return 0; return 0;
} }
//---FV4a--- //---FV4a---
@@ -2308,7 +2305,7 @@ double TFV4aM::GetPF(double i_bcp, double PP, double HP, double dt, double ep)
if ((TP < 1)) if ((TP < 1))
TP = TP - 0.5 * dt; // 5/10 TP = TP - 0.5 * dt; // 5/10
// dpMainValve:=dpMainValve*2; // dpMainValve:=dpMainValve*2;
//+1*PF(dpPipe,pp,(ActFlowSpeed)/(LBDelay))//coby //+1*PF(dpPipe,pp,(ActFlowSpeed)/(LBDelay))//coby
// nie przeszkadzal przy ladowaniu z zaworu obok // nie przeszkadzal przy ladowaniu z zaworu obok
} }
@@ -2316,7 +2313,7 @@ double TFV4aM::GetPF(double i_bcp, double PP, double HP, double dt, double ep)
{ {
if ((TP > 2)) if ((TP > 2))
dpMainValve = dpMainValve * 1.5; //+0.5*PF(dpPipe,pp,(ActFlowSpeed)/(LBDelay))//coby nie dpMainValve = dpMainValve * 1.5; //+0.5*PF(dpPipe,pp,(ActFlowSpeed)/(LBDelay))//coby nie
//przeszkadzal przy ladowaniu z zaworu obok // przeszkadzal przy ladowaniu z zaworu obok
} }
ep = dpPipe; ep = dpPipe;
@@ -2324,12 +2321,13 @@ double TFV4aM::GetPF(double i_bcp, double PP, double HP, double dt, double ep)
RP = RP + PF(RP, ep, 0.0007) * dt; // powolne wzrastanie, ale szybsze na jezdzie; RP = RP + PF(RP, ep, 0.0007) * dt; // powolne wzrastanie, ale szybsze na jezdzie;
else else
RP = RP + PF(RP, ep, 0.000093 / 2 * 2) * dt; // powolne wzrastanie i to bardzo RP = RP + PF(RP, ep, 0.000093 / 2 * 2) * dt; // powolne wzrastanie i to bardzo
// jednak trzeba wydluzyc, bo // jednak trzeba wydluzyc, bo
// obecnie zle dziala // obecnie zle dziala
if ((RP < ep) && if ((RP < ep) &&
(RP < BPT[lround(i_bcpno) + 2][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 RP = RP + PF(RP, CP, 0.005) * dt; // przypisz cisnienie w PG - wydluzanie napelniania o czas
// potrzebny do napelnienia PG // potrzebny do napelnienia PG
if ((EQ(i_bcp, i_bcpno)) || (EQ(i_bcp, -2))) if ((EQ(i_bcp, i_bcpno)) || (EQ(i_bcp, -2)))
{ {
@@ -2359,8 +2357,8 @@ void TFV4aM::Init(double Press)
XP = 0.0; XP = 0.0;
Time = false; Time = false;
TimeEP = false; TimeEP = false;
RedAdj = 0.0; RedAdj = 0.0;
Fala = false; Fala = false;
} }
void TFV4aM::SetReductor(double nAdj) void TFV4aM::SetReductor(double nAdj)
@@ -2386,14 +2384,14 @@ double TFV4aM::LPP_RP(double pos) // cisnienie z zaokraglonej pozycji;
int i_pos; int i_pos;
i_pos = lround(pos - 0.5) + 2; // zaokraglone w dol i_pos = lround(pos - 0.5) + 2; // zaokraglone w dol
double i, j, k, l; double i, j, k, l;
i = BPT[i_pos][1]; i = BPT[i_pos][1];
j = BPT[i_pos + 1][1]; j = BPT[i_pos + 1][1];
k = pos + 2 - i_pos; k = pos + 2 - i_pos;
l = i + (j - i) * k; l = i + (j - i) * k;
double r = double r = BPT[i_pos][1] +
BPT[i_pos][1] + (BPT[i_pos + 1][1] - BPT[i_pos][1]) * (pos + 2 - i_pos); // interpolacja liniowa (BPT[i_pos + 1][1] - BPT[i_pos][1]) * (pos + 2 - i_pos); // interpolacja liniowa
return r; return r;
} }
bool TFV4aM::EQ(double pos, double i_pos) bool TFV4aM::EQ(double pos, double i_pos)
{ {
@@ -2499,8 +2497,8 @@ void TMHZ_EN57::Init(double Press)
RP = 0.0; RP = 0.0;
Time = false; Time = false;
TimeEP = false; TimeEP = false;
RedAdj = 0.0; RedAdj = 0.0;
Fala = false; Fala = false;
} }
void TMHZ_EN57::SetReductor(double nAdj) void TMHZ_EN57::SetReductor(double nAdj)
@@ -2565,8 +2563,8 @@ double TM394::GetPF(double i_bcp, double PP, double HP, double dt, double ep)
if (BCP < -1) if (BCP < -1)
BCP = 1; BCP = 1;
LimPP = Min0R(BPT_394[BCP+1][1], HP); LimPP = Min0R(BPT_394[BCP + 1][1], HP);
ActFlowSpeed = BPT_394[BCP+1][0]; ActFlowSpeed = BPT_394[BCP + 1][0];
if ((BCP == 1) || (BCP == i_bcpno)) if ((BCP == 1) || (BCP == i_bcpno))
LimPP = PP; LimPP = PP;
if ((BCP == 0)) if ((BCP == 0))
@@ -2628,8 +2626,8 @@ double TM394::GetPos(int i)
double TH14K1::GetPF(double i_bcp, double PP, double HP, double dt, double ep) double TH14K1::GetPF(double i_bcp, double PP, double HP, double dt, double ep)
{ {
static int const LBDelay = 100; // szybkosc + zasilanie sterujacego static int const LBDelay = 100; // szybkosc + zasilanie sterujacego
// static double const BPT_K[/*?*/ /*-1..4*/ (4) - (-1) + 1][2] = // static double const BPT_K[/*?*/ /*-1..4*/ (4) - (-1) + 1][2] =
//{ (10, 0), (4, 1), (0, 1), (4, 0), (4, -1), (15, -1) }; //{ (10, 0), (4, 1), (0, 1), (4, 0), (4, -1), (15, -1) };
static double const NomPress = 5.0; static double const NomPress = 5.0;
double LimPP; double LimPP;
@@ -2641,14 +2639,14 @@ double TH14K1::GetPF(double i_bcp, double PP, double HP, double dt, double ep)
BCP = lround(i_bcp); BCP = lround(i_bcp);
if (i_bcp < -1) if (i_bcp < -1)
BCP = 1; BCP = 1;
LimPP = BPT_K[BCP+1][1]; LimPP = BPT_K[BCP + 1][1];
if (LimPP < 0) if (LimPP < 0)
LimPP = 0.5 * PP; LimPP = 0.5 * PP;
else if (LimPP > 0) else if (LimPP > 0)
LimPP = PP; LimPP = PP;
else else
LimPP = CP; LimPP = CP;
ActFlowSpeed = BPT_K[BCP+1][0]; ActFlowSpeed = BPT_K[BCP + 1][0];
CP = CP + 6 * Min0R(abs(LimPP - CP), 0.05) * PR(CP, LimPP) * dt; // zbiornik sterujacy CP = CP + 6 * Min0R(abs(LimPP - CP), 0.05) * PR(CP, LimPP) * dt; // zbiornik sterujacy
@@ -2711,14 +2709,14 @@ double TSt113::GetPF(double i_bcp, double PP, double HP, double dt, double ep)
if (BCP < -1) if (BCP < -1)
BCP = 1; BCP = 1;
LimPP = BPT_K[BCP+1][1]; LimPP = BPT_K[BCP + 1][1];
if (LimPP < 0) if (LimPP < 0)
LimPP = 0.5 * PP; LimPP = 0.5 * PP;
else if (LimPP > 0) else if (LimPP > 0)
LimPP = PP; LimPP = PP;
else else
LimPP = CP; LimPP = CP;
ActFlowSpeed = BPT_K[BCP+1][0]; ActFlowSpeed = BPT_K[BCP + 1][0];
CP = CP + 6 * Min0R(abs(LimPP - CP), 0.05) * PR(CP, LimPP) * dt; // zbiornik sterujacy CP = CP + 6 * Min0R(abs(LimPP - CP), 0.05) * PR(CP, LimPP) * dt; // zbiornik sterujacy
@@ -2750,7 +2748,7 @@ void TSt113::Init(double Press)
{ {
Time = true; Time = true;
TimeEP = true; TimeEP = true;
EPS = 0.0; EPS = 0.0;
} }
//--- test --- //--- test ---
@@ -2765,8 +2763,8 @@ double Ttest::GetPF(double i_bcp, double PP, double HP, double dt, double ep)
double dpMainValve; double dpMainValve;
double ActFlowSpeed; double ActFlowSpeed;
LimPP = BPT[lround(i_bcp)+2][1]; LimPP = BPT[lround(i_bcp) + 2][1];
ActFlowSpeed = BPT[lround(i_bcp)+2][0]; ActFlowSpeed = BPT[lround(i_bcp) + 2][0];
if ((i_bcp == i_bcpno)) if ((i_bcp == i_bcpno))
LimPP = 0.0; LimPP = 0.0;
@@ -2804,8 +2802,7 @@ double TFD1::GetPF(double i_bcp, double PP, double HP, double dt, double ep)
// MaxBP:=4; // MaxBP:=4;
// temp:=Min0R(i_bcp*MaxBP,Min0R(5.0,HP)); // temp:=Min0R(i_bcp*MaxBP,Min0R(5.0,HP));
temp = Min0R(i_bcp * MaxBP, HP); // 0011 temp = Min0R(i_bcp * MaxBP, HP); // 0011
DP = DP = 10 * Min0R(abs(temp - BP), 0.1) * PF(temp, BP, 0.0006 * (2 + int(temp > BP))) * dt * Speed;
10 * Min0R(abs(temp - BP), 0.1) * PF(temp, BP, 0.0006 * (2 + int(temp > BP))) * dt * Speed;
BP = BP - DP; BP = BP - DP;
return -DP; return -DP;
} }
@@ -2932,7 +2929,7 @@ void TFVel6::Init(double Press)
{ {
Time = true; Time = true;
TimeEP = true; TimeEP = true;
EPS = 0.0; EPS = 0.0;
} }
//END // END