mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-22 19:49:19 +02:00
Poprawione ładowanie hamulców
This commit is contained in:
@@ -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());
|
||||||
|
|||||||
@@ -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))
|
||||||
@@ -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
|
||||||
@@ -331,12 +330,12 @@ void TNESt3::Init(double PP, double HPP, double LPP, double BP, int BDF)
|
|||||||
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;
|
||||||
@@ -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) * 1.0 / (LoadM - TareM)) * 1.0 / MaxBP -
|
((TareBP + (MaxBP - TareBP) * (mass - TareM) / (LoadM - TareM)) / MaxBP - 1);
|
||||||
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,14 +650,10 @@ 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]->BrakeRes = BrakeRes;
|
||||||
@@ -672,7 +664,6 @@ void TNESt3::SetSize(int size, std::string params) // ustawianie dysz (rozmiaru
|
|||||||
else
|
else
|
||||||
Przekladniki[i]->Next = BrakeCyl;
|
Przekladniki[i]->Next = BrakeCyl;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// END
|
// END
|
||||||
|
|||||||
@@ -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)
|
||||||
{
|
{
|
||||||
@@ -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));
|
||||||
@@ -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
|
||||||
@@ -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();
|
||||||
}
|
}
|
||||||
@@ -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 -
|
((TareBP + (MaxBP - TareBP) * (mass - TareM) / (LoadM - TareM)) / MaxBP - 1);
|
||||||
1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TWest::SetLP(double TM, double LM, double TBP)
|
void TWest::SetLP(double TM, double LM, double TBP)
|
||||||
@@ -757,7 +759,7 @@ void TESt::Init(double PP, double HPP, double LPP, double BP, int BDF)
|
|||||||
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;
|
||||||
}
|
}
|
||||||
@@ -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 -
|
((TareBP + (MaxBP - TareBP) * (mass - TareM) / (LoadM - TareM)) / MaxBP - 1);
|
||||||
1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TEStEP2::SetEPS(double nEPS)
|
void TEStEP2::SetEPS(double nEPS)
|
||||||
@@ -960,7 +960,8 @@ 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,
|
||||||
|
0.017 * (1 + int((BCP < 0.58) && (BrakeDelayFlag == bdelay_G))) *
|
||||||
(1.13 - int((BCP > 0.6) && (BrakeDelayFlag == bdelay_G))) * SizeBC) *
|
(1.13 - int((BCP > 0.6) && (BrakeDelayFlag == bdelay_G))) * SizeBC) *
|
||||||
dt;
|
dt;
|
||||||
else
|
else
|
||||||
@@ -1133,7 +1134,8 @@ 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,
|
||||||
|
0.0008 * (1 + int((BCP < 0.58) && (BrakeDelayFlag == bdelay_G))) *
|
||||||
(1.13 - int((BCP > 0.6) && (BrakeDelayFlag == bdelay_G)))) *
|
(1.13 - int((BCP > 0.6) && (BrakeDelayFlag == bdelay_G)))) *
|
||||||
dt;
|
dt;
|
||||||
else
|
else
|
||||||
@@ -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 -
|
((TareBP + (MaxBP - TareBP) * (mass - TareM) / (LoadM - TareM)) / MaxBP - 1);
|
||||||
1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TESt3AL2::SetLP(double TM, double LM, double TBP)
|
void TESt3AL2::SetLP(double TM, double LM, double TBP)
|
||||||
@@ -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
|
||||||
@@ -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-);
|
||||||
@@ -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 -
|
((TareBP + (MaxBP - TareBP) * (mass - TareM) / (LoadM - TareM)) / MaxBP - 1);
|
||||||
1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TEStED::SetLP(double TM, double LM, double TBP)
|
void TEStED::SetLP(double TM, double LM, double TBP)
|
||||||
@@ -1602,11 +1599,10 @@ void TCV1::CheckState(double BCP, double &dV1)
|
|||||||
// 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
|
||||||
;
|
;
|
||||||
@@ -1685,7 +1681,8 @@ 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,
|
||||||
|
0.017 * (1 + int((BCP < 0.58) && (BrakeDelayFlag == bdelay_G))) *
|
||||||
(1.13 - int((BCP > 0.6) && (BrakeDelayFlag == bdelay_G))) * SizeBC) *
|
(1.13 - int((BCP > 0.6) && (BrakeDelayFlag == bdelay_G))) * SizeBC) *
|
||||||
dt;
|
dt;
|
||||||
else
|
else
|
||||||
@@ -1795,7 +1792,8 @@ 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,
|
||||||
|
0.002 * (1 + int((BCP < 0.58) && (BrakeDelayFlag == bdelay_G))) *
|
||||||
(1.13 - int((BCP > 0.6) && (BrakeDelayFlag == bdelay_G)))) *
|
(1.13 - int((BCP > 0.6) && (BrakeDelayFlag == bdelay_G)))) *
|
||||||
dt;
|
dt;
|
||||||
else
|
else
|
||||||
@@ -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
|
||||||
@@ -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 -
|
((TareBP + (MaxBP - TareBP) * (mass - TareM) / (LoadM - TareM)) / MaxBP - 1);
|
||||||
1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TKE::SetLP(double TM, double LM, double TBP)
|
void TKE::SetLP(double TM, double LM, double TBP)
|
||||||
@@ -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;
|
||||||
@@ -2327,7 +2324,8 @@ double TFV4aM::GetPF(double i_bcp, double PP, double HP, double dt, double ep)
|
|||||||
// 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
|
||||||
|
|
||||||
@@ -2391,8 +2389,8 @@ double TFV4aM::LPP_RP(double pos) // cisnienie z zaokraglonej pozycji;
|
|||||||
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)
|
||||||
@@ -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))
|
||||||
@@ -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
|
||||||
|
|
||||||
@@ -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;
|
||||||
}
|
}
|
||||||
@@ -2935,4 +2932,4 @@ void TFVel6::Init(double Press)
|
|||||||
EPS = 0.0;
|
EPS = 0.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
//END
|
// END
|
||||||
|
|||||||
Reference in New Issue
Block a user