mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-22 19:49:19 +02:00
Poprawione do końca pliku.
This commit is contained in:
@@ -2366,512 +2366,546 @@ bool TFV4aM::EQ(double pos, double i_pos)
|
|||||||
|
|
||||||
//---FV4a/M--- nowonapisany kran bez poprawki IC
|
//---FV4a/M--- nowonapisany kran bez poprawki IC
|
||||||
|
|
||||||
double TMHZ_EN57::GetPF(double i_bcp, double PP, double HP, double dt, double ep)
|
double TMHZ_EN57::GetPF(double i_bcp, double PP, double HP, double dt, double ep)
|
||||||
{ double result;/*?*//*SUB-FUNCTION TO BE EXTRACTED*/double LPP_RP(double pos) //cisnienie z zaokraglonej pozycji;
|
{
|
||||||
{ double result;
|
static int const LBDelay = 100;
|
||||||
if( pos>8.5 )
|
|
||||||
LPP_RP =5.0-0.15*pos-0.35;else if( pos>0.5 )
|
|
||||||
LPP_RP =5.0-0.15*pos-0.1;else
|
|
||||||
LPP_RP =5.0;return result;
|
|
||||||
}
|
|
||||||
/*?*//*SUB-FUNCTION TO BE EXTRACTED*/bool EQ(double pos, double i_pos)
|
|
||||||
{ bool result;
|
|
||||||
EQ =( pos<=i_pos+0.5 )&&( pos>i_pos-0.5 );
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
static double/*?*/ const LBDelay = 100;
|
double LimPP;
|
||||||
|
double dpPipe;
|
||||||
|
double dpMainValve;
|
||||||
|
double ActFlowSpeed;
|
||||||
|
double DP;
|
||||||
|
double pom;
|
||||||
|
Byte i;
|
||||||
|
|
||||||
double LimPP; double dpPipe; double dpMainValve; double ActFlowSpeed; double DP;
|
{
|
||||||
double pom;
|
long i_end = 5;
|
||||||
Byte i;
|
for (i = 0; i < i_end; ++i)
|
||||||
|
Sounds[i] = 0;
|
||||||
|
}
|
||||||
|
DP = 0;
|
||||||
|
|
||||||
|
i_bcp = Max0R(Min0R(i_bcp, 9.999), -0.999); // na wszelki wypadek, zeby nie wyszlo poza zakres
|
||||||
|
|
||||||
{ long i_end = 5 ; for( i = 0 ; i < i_end ; ++i )
|
if ((TP > 0))
|
||||||
Sounds[ i ] =0;}
|
{
|
||||||
DP =0;
|
DP = 0.045;
|
||||||
|
if (EQ(i_bcp, 0))
|
||||||
|
TP = TP - DP * dt;
|
||||||
|
Sounds[s_fv4a_t] = DP;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TP = 0;
|
||||||
|
}
|
||||||
|
|
||||||
i_bcp =Max0R( Min0R( i_bcp, 9.999 ), -0.999 ); //na wszelki wypadek, zeby nie wyszlo poza zakres
|
LimPP = Min0R(LPP_RP(i_bcp) + TP * 0.08 + RedAdj, HP); // pozycja + czasowy lub zasilanie
|
||||||
|
ActFlowSpeed = 4;
|
||||||
|
|
||||||
if( ( TP>0 ) )
|
if ((EQ(i_bcp, -1)))
|
||||||
{
|
pom = Min0R(HP, 5.4 + RedAdj);
|
||||||
DP =0.045;
|
else
|
||||||
if( EQ( i_bcp, 0 ) )
|
pom = Min0R(CP, HP);
|
||||||
TP =TP-DP*dt;
|
|
||||||
Sounds[ s_fv4a_t ] =DP;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
TP =0;
|
|
||||||
}
|
|
||||||
|
|
||||||
LimPP =Min0R( LPP_RP( i_bcp )+TP*0.08+RedAdj, HP ); //pozycja + czasowy lub zasilanie
|
if ((LimPP > CP)) // podwyzszanie szybkie
|
||||||
ActFlowSpeed =4;
|
CP = CP + 60 * Min0R(abs(LimPP - CP), 0.05) * PR(CP, LimPP) * dt; // zbiornik sterujacy;
|
||||||
|
else
|
||||||
|
CP = CP + 13 * Min0R(abs(LimPP - CP), 0.05) * PR(CP, LimPP) * dt; // zbiornik sterujacy
|
||||||
|
|
||||||
if( ( EQ( i_bcp, -1 ) ) ) pom =Min0R( HP, 5.4+RedAdj );else pom =Min0R( CP, HP );
|
LimPP = pom; // cp
|
||||||
|
if (EQ(i_bcp, -1))
|
||||||
|
dpPipe = HP;
|
||||||
|
else
|
||||||
|
dpPipe = Min0R(HP, LimPP);
|
||||||
|
|
||||||
if( ( LimPP>CP ) ) //podwyzszanie szybkie
|
if (dpPipe > PP)
|
||||||
CP =CP+60*Min0R( abs( LimPP-CP ), 0.05 )*PR( CP, LimPP )*dt //zbiornik sterujacy;else
|
dpMainValve = -PFVa(HP, PP, ActFlowSpeed * 1.0 / (LBDelay), dpPipe, 0.4);
|
||||||
CP =CP+13*Min0R( abs( LimPP-CP ), 0.05 )*PR( CP, LimPP )*dt; //zbiornik sterujacy
|
else
|
||||||
|
dpMainValve = PFVd(PP, 0, ActFlowSpeed * 1.0 / (LBDelay), dpPipe, 0.4);
|
||||||
|
|
||||||
LimPP =pom; //cp
|
if (EQ(i_bcp, -1))
|
||||||
if( EQ( i_bcp, -1 ) )
|
{
|
||||||
dpPipe =HP;else
|
if ((TP < 5))
|
||||||
dpPipe =Min0R( HP, LimPP );
|
TP = TP + dt; // 5/10
|
||||||
|
if ((TP < 1))
|
||||||
|
TP = TP - 0.5 * dt; // 5/10
|
||||||
|
}
|
||||||
|
|
||||||
if( dpPipe>PP )
|
if ((EQ(i_bcp, 10)) || (EQ(i_bcp, -2)))
|
||||||
dpMainValve =-PFVa( HP, PP, ActFlowSpeed*1.0/( LBDelay ), dpPipe, 0.4 );else
|
{
|
||||||
dpMainValve =PFVd( PP, 0, ActFlowSpeed*1.0/( LBDelay ), dpPipe, 0.4 );
|
DP = PF(0, PP, 2 * (ActFlowSpeed)*1.0 / (LBDelay));
|
||||||
|
dpMainValve = DP;
|
||||||
|
Sounds[s_fv4a_e] = DP;
|
||||||
|
Sounds[s_fv4a_u] = 0;
|
||||||
|
Sounds[s_fv4a_b] = 0;
|
||||||
|
Sounds[s_fv4a_x] = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (dpMainValve > 0)
|
||||||
|
Sounds[s_fv4a_b] = dpMainValve;
|
||||||
|
else
|
||||||
|
Sounds[s_fv4a_u] = -dpMainValve;
|
||||||
|
}
|
||||||
|
|
||||||
if( EQ( i_bcp, -1 ) )
|
if ((i_bcp < 1.5))
|
||||||
{
|
RP = Max0R(0, 0.125 * i_bcp);
|
||||||
if( ( TP<5 ) ) TP =TP+dt; //5/10
|
else
|
||||||
if( ( TP<1 ) ) TP =TP-0.5*dt; //5/10
|
RP = Min0R(1, 0.125 * i_bcp - 0.125);
|
||||||
}
|
|
||||||
|
|
||||||
if( ( EQ( i_bcp, 10 ) )||( EQ( i_bcp, -2 ) ) )
|
return dpMainValve * dt;
|
||||||
{
|
|
||||||
DP =PF( 0, PP, 2*( ActFlowSpeed )*1.0/( LBDelay ) );
|
|
||||||
dpMainValve =DP;
|
|
||||||
Sounds[ s_fv4a_e ] =DP;
|
|
||||||
Sounds[ s_fv4a_u ] =0;
|
|
||||||
Sounds[ s_fv4a_b ] =0;
|
|
||||||
Sounds[ s_fv4a_x ] =0;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if( dpMainValve>0 )
|
|
||||||
Sounds[ s_fv4a_b ] =dpMainValve;else
|
|
||||||
Sounds[ s_fv4a_u ] =-dpMainValve;
|
|
||||||
}
|
|
||||||
|
|
||||||
if( ( i_bcp<1.5 ) )
|
|
||||||
RP =Max0R( 0, 0.125*i_bcp );else
|
|
||||||
RP =Min0R( 1, 0.125*i_bcp-0.125 );
|
|
||||||
|
|
||||||
GetPF =dpMainValve*dt;
|
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TMHZ_EN57::Init(double Press)
|
void TMHZ_EN57::Init(double Press)
|
||||||
{
|
{
|
||||||
CP = Press;
|
CP = Press;
|
||||||
TP = 0;
|
TP = 0;
|
||||||
RP = 0;
|
RP = 0;
|
||||||
Time =false;
|
Time = false;
|
||||||
TimeEP =false;
|
TimeEP = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TMHZ_EN57::SetReductor(double nAdj)
|
void TMHZ_EN57::SetReductor(double nAdj)
|
||||||
{
|
{
|
||||||
RedAdj = nAdj;
|
RedAdj = nAdj;
|
||||||
}
|
}
|
||||||
|
|
||||||
double TMHZ_EN57::GetSound(Byte i)
|
double TMHZ_EN57::GetSound(Byte i)
|
||||||
{ double result;
|
{
|
||||||
if( i>4 )
|
if (i > 4)
|
||||||
GetSound =0;else
|
return 0;
|
||||||
GetSound =Sounds[ i ];
|
else
|
||||||
return result;
|
return Sounds[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
double TMHZ_EN57::GetPos(Byte i)
|
double TMHZ_EN57::GetPos(Byte i)
|
||||||
{ double result;
|
{
|
||||||
static double const table[11] = ( -2, 10, -1, 0, 0, 2, 9, 10, 0, 0, 0 );
|
static double const table[11] = { -2, 10, -1, 0, 0, 2, 9, 10, 0, 0, 0 };
|
||||||
|
|
||||||
GetPos =table[ i ];
|
return table[i];
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
double TMHZ_EN57::GetCP()
|
double TMHZ_EN57::GetCP()
|
||||||
{ double result;
|
{
|
||||||
GetCP =RP;
|
return RP;
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
double TMHZ_EN57::GetEP(double pos)
|
double TMHZ_EN57::GetEP(double pos)
|
||||||
{ double result;
|
{
|
||||||
if( pos<9.5 )
|
if (pos < 9.5)
|
||||||
GetEP =Min0R( Max0R( 0, 0.125*pos ), 1 );else
|
return Min0R(Max0R(0, 0.125 * pos), 1);
|
||||||
GetEP =0;
|
else
|
||||||
return result;
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
double TMHZ_EN57::LPP_RP(double pos) // cisnienie z zaokraglonej pozycji;
|
||||||
|
{
|
||||||
|
if (pos > 8.5)
|
||||||
|
return 5.0 - 0.15 * pos - 0.35;
|
||||||
|
else if (pos > 0.5)
|
||||||
|
return 5.0 - 0.15 * pos - 0.1;
|
||||||
|
else
|
||||||
|
return 5.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TMHZ_EN57::EQ(double pos, double i_pos)
|
||||||
|
{
|
||||||
|
return (pos <= i_pos + 0.5) && (pos > i_pos - 0.5);
|
||||||
}
|
}
|
||||||
|
|
||||||
//---M394--- Matrosow
|
//---M394--- Matrosow
|
||||||
|
|
||||||
double TM394::GetPF(double i_bcp, double PP, double HP, double dt, double ep)
|
double TM394::GetPF(double i_bcp, double PP, double HP, double dt, double ep)
|
||||||
{ double result;
|
{
|
||||||
static double/*?*/ const LBDelay = 65;
|
static int const LBDelay = 65;
|
||||||
|
|
||||||
double LimPP; double dpPipe; double dpMainValve; double ActFlowSpeed;
|
double LimPP;
|
||||||
int BCP;
|
double dpPipe;
|
||||||
|
double dpMainValve;
|
||||||
|
double ActFlowSpeed;
|
||||||
|
int BCP;
|
||||||
|
|
||||||
BCP =Round( i_bcp );
|
BCP = lround(i_bcp);
|
||||||
if( BCP<-1 ) BCP =1;
|
if (BCP < -1)
|
||||||
|
BCP = 1;
|
||||||
|
|
||||||
LimPP =Min0R( BPT_394[ BCP ][ 1 ], HP );
|
LimPP = Min0R(BPT_394[BCP][1], HP);
|
||||||
ActFlowSpeed =BPT_394[ BCP ][ 0 ];
|
ActFlowSpeed = BPT_394[BCP][0];
|
||||||
if( ( BCP==1 )||( BCP==i_bcpno ) )
|
if ((BCP == 1) || (BCP == i_bcpno))
|
||||||
LimPP =PP;
|
LimPP = PP;
|
||||||
if( ( BCP==0 ) )
|
if ((BCP == 0))
|
||||||
LimPP =LimPP+RedAdj;
|
LimPP = LimPP + RedAdj;
|
||||||
if( ( BCP!=2 ) )
|
if ((BCP != 2))
|
||||||
if( CP<LimPP )
|
if (CP < LimPP)
|
||||||
CP =CP+4*Min0R( abs( LimPP-CP ), 0.05 )*PR( CP, LimPP )*dt //zbiornik sterujacy
|
CP = CP + 4 * Min0R(abs(LimPP - CP), 0.05) * PR(CP, LimPP) * dt; // zbiornik sterujacy
|
||||||
// cp:=cp+6*(2+Byte(bcp<0))*Min0R(abs(Limpp-cp),0.05)*PR(cp,Limpp)*dt //zbiornik sterujacy;else
|
// cp:=cp+6*(2+Byte(bcp<0))*Min0R(abs(Limpp-cp),0.05)*PR(cp,Limpp)*dt //zbiornik
|
||||||
if( BCP==0 )
|
// sterujacy;
|
||||||
CP =CP-0.2*dt*1.0/100;else
|
else if (BCP == 0)
|
||||||
CP =CP+4*( 1+Byte( BCP!=3 )+Byte( BCP>4 ) )*Min0R( abs( LimPP-CP ), 0.05 )*PR( CP, LimPP )*dt; //zbiornik sterujacy
|
CP = CP - 0.2 * dt * 1.0 / 100;
|
||||||
|
else
|
||||||
|
CP = CP +
|
||||||
|
4 * (1 + Byte(BCP != 3) + Byte(BCP > 4)) * Min0R(abs(LimPP - CP), 0.05) *
|
||||||
|
PR(CP, LimPP) * dt; // zbiornik sterujacy
|
||||||
|
|
||||||
LimPP =CP;
|
LimPP = CP;
|
||||||
dpPipe =Min0R( HP, LimPP );
|
dpPipe = Min0R(HP, LimPP);
|
||||||
|
|
||||||
// if(dpPipe>pp)then //napelnianie
|
// if(dpPipe>pp)then //napelnianie
|
||||||
// dpMainValve:=PF(dpPipe,pp,ActFlowSpeed/(LBDelay))*dt
|
// dpMainValve:=PF(dpPipe,pp,ActFlowSpeed/(LBDelay))*dt
|
||||||
// else //spuszczanie
|
// else //spuszczanie
|
||||||
dpMainValve =PF( dpPipe, PP, ActFlowSpeed*1.0/( LBDelay ) )*dt;
|
dpMainValve = PF(dpPipe, PP, ActFlowSpeed * 1.0 / (LBDelay)) * dt;
|
||||||
|
|
||||||
if( BCP==-1 )
|
if (BCP == -1)
|
||||||
// begin
|
dpMainValve = PF(HP, PP, (ActFlowSpeed)*1.0 / (LBDelay)) * dt;
|
||||||
dpMainValve =PF( HP, PP, ( ActFlowSpeed )*1.0/( LBDelay ) )*dt;
|
|
||||||
// end;
|
|
||||||
|
|
||||||
if( BCP==i_bcpno )
|
if (BCP == i_bcpno)
|
||||||
// begin
|
dpMainValve = PF(0, PP, (ActFlowSpeed)*1.0 / (LBDelay)) * dt;
|
||||||
dpMainValve =PF( 0, PP, ( ActFlowSpeed )*1.0/( LBDelay ) )*dt;
|
|
||||||
// end;
|
|
||||||
|
|
||||||
GetPF =dpMainValve;
|
return dpMainValve;
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TM394::Init(double Press)
|
void TM394::Init(double Press)
|
||||||
{
|
{
|
||||||
CP = Press;
|
CP = Press;
|
||||||
RedAdj = 0;
|
RedAdj = 0;
|
||||||
Time =true;
|
Time = true;
|
||||||
TimeEP =false;
|
TimeEP = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TM394::SetReductor(double nAdj)
|
void TM394::SetReductor(double nAdj)
|
||||||
{
|
{
|
||||||
RedAdj = nAdj;
|
RedAdj = nAdj;
|
||||||
}
|
}
|
||||||
|
|
||||||
double TM394::GetCP()
|
double TM394::GetCP()
|
||||||
{ double result;
|
{
|
||||||
GetCP = CP;
|
return CP;
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
double TM394::GetPos(Byte i)
|
double TM394::GetPos(Byte i)
|
||||||
{ double result;
|
{
|
||||||
static double const table[11] = ( -1, 5, -1, 0, 1, 2, 4, 5, 0, 0, 0 );
|
static double const table[11] = { -1, 5, -1, 0, 1, 2, 4, 5, 0, 0, 0 };
|
||||||
|
|
||||||
GetPos =table[ i ];
|
return table[i];
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//---H14K1-- Knorr
|
//---H14K1-- Knorr
|
||||||
|
|
||||||
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)
|
||||||
{ double result;
|
{
|
||||||
static double/*?*/ 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] = ( ( 10 , 0 ) , ( 4 , 1 ) , ( 0 , 1 ) , ( 4 , 0 ) , ( 4 , -1 ) , ( 15 , -1 ) );
|
static double const BPT_K[/*?*/ /*-1..4*/ (4) - (-1) + 1][2] =
|
||||||
static double/*?*/ const NomPress = 5.0;
|
{ (10, 0), (4, 1), (0, 1), (4, 0), (4, -1), (15, -1) };
|
||||||
|
static double const NomPress = 5.0;
|
||||||
|
|
||||||
double LimPP; double dpPipe; double dpMainValve; double ActFlowSpeed;
|
double LimPP;
|
||||||
int BCP;
|
double dpPipe;
|
||||||
|
double dpMainValve;
|
||||||
|
double ActFlowSpeed;
|
||||||
|
int BCP;
|
||||||
|
|
||||||
BCP =Round( i_bcp );
|
BCP = lround(i_bcp);
|
||||||
if( i_bcp<-1 ) BCP =1;
|
if (i_bcp < -1)
|
||||||
LimPP =BPT_K[ BCP ][ 1 ];
|
BCP = 1;
|
||||||
if( LimPP<0 )
|
LimPP = BPT_K[BCP][1];
|
||||||
LimPP =0.5*PP;else if( LimPP>0 )
|
if (LimPP < 0)
|
||||||
LimPP =PP;else
|
LimPP = 0.5 * PP;
|
||||||
LimPP =CP;
|
else if (LimPP > 0)
|
||||||
ActFlowSpeed =BPT_K[ BCP ][ 0 ];
|
LimPP = PP;
|
||||||
|
else
|
||||||
|
LimPP = CP;
|
||||||
|
ActFlowSpeed = BPT_K[BCP][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
|
||||||
|
|
||||||
dpMainValve =0;
|
dpMainValve = 0;
|
||||||
|
|
||||||
if( BCP==-1 )
|
if (BCP == -1)
|
||||||
dpMainValve =PF( HP, PP, ( ActFlowSpeed )*1.0/( LBDelay ) )*dt;
|
dpMainValve = PF(HP, PP, (ActFlowSpeed)*1.0 / (LBDelay)) * dt;
|
||||||
if( ( BCP==0 ) )
|
if ((BCP == 0))
|
||||||
dpMainValve =-PFVa( HP, PP, ( ActFlowSpeed )*1.0/( LBDelay ), NomPress+RedAdj )*dt;
|
dpMainValve = -PFVa(HP, PP, (ActFlowSpeed)*1.0 / (LBDelay), NomPress + RedAdj) * dt;
|
||||||
if( ( BCP>1 )&&( PP>CP ) )
|
if ((BCP > 1) && (PP > CP))
|
||||||
dpMainValve =PFVd( PP, 0, ( ActFlowSpeed )*1.0/( LBDelay ), CP )*dt;
|
dpMainValve = PFVd(PP, 0, (ActFlowSpeed)*1.0 / (LBDelay), CP) * dt;
|
||||||
if( BCP==i_bcpno )
|
if (BCP == i_bcpno)
|
||||||
dpMainValve =PF( 0, PP, ( ActFlowSpeed )*1.0/( LBDelay ) )*dt;
|
dpMainValve = PF(0, PP, (ActFlowSpeed)*1.0 / (LBDelay)) * dt;
|
||||||
|
|
||||||
GetPF =dpMainValve;
|
return dpMainValve;
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TH14K1::Init(double Press)
|
void TH14K1::Init(double Press)
|
||||||
{
|
{
|
||||||
CP = Press;
|
CP = Press;
|
||||||
RedAdj = 0;
|
RedAdj = 0;
|
||||||
Time =true;
|
Time = true;
|
||||||
TimeEP =true;
|
TimeEP = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TH14K1::SetReductor(double nAdj)
|
void TH14K1::SetReductor(double nAdj)
|
||||||
{
|
{
|
||||||
RedAdj = nAdj;
|
RedAdj = nAdj;
|
||||||
}
|
}
|
||||||
|
|
||||||
double TH14K1::GetCP()
|
double TH14K1::GetCP()
|
||||||
{ double result;
|
{
|
||||||
GetCP = CP;
|
return CP;
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
double TH14K1::GetPos(Byte i)
|
double TH14K1::GetPos(Byte i)
|
||||||
{ double result;
|
{
|
||||||
static double const table[11] = ( -1, 4, -1, 0, 1, 2, 3, 4, 0, 0, 0 );
|
static double const table[11] = { -1, 4, -1, 0, 1, 2, 3, 4, 0, 0, 0 };
|
||||||
|
|
||||||
GetPos =table[ i ];
|
return table[i];
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//---St113-- Knorr EP
|
//---St113-- Knorr EP
|
||||||
|
|
||||||
double TSt113::GetPF(double i_bcp, double PP, double HP, double dt, double ep)
|
double TSt113::GetPF(double i_bcp, double PP, double HP, double dt, double ep)
|
||||||
{ double result;
|
{
|
||||||
static double/*?*/ 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] = ( ( 10 , 0 ) , ( 4 , 1 ) , ( 0 , 1 ) , ( 4 , 0 ) , ( 4 , -1 ) , ( 15 , -1 ) );
|
static double const BPT_K[/*?*/ /*-1..4*/ (4) - (-1) + 1][2] =
|
||||||
static double const BEP_K[ /*?*//*-1..5*/ (5)-(-1)+1 ] = ( 0 , -1 , 1 , 0 , 0 , 0 , 0 );
|
{ (10, 0), (4, 1), (0, 1), (4, 0), (4, -1), (15, -1) };
|
||||||
static double/*?*/ const NomPress = 5.0;
|
static double const BEP_K[/*?*/ /*-1..5*/ (5) - (-1) + 1] = { 0, -1, 1, 0, 0, 0, 0 };
|
||||||
|
static double const NomPress = 5.0;
|
||||||
|
|
||||||
double LimPP; double dpPipe; double dpMainValve; double ActFlowSpeed;
|
double LimPP;
|
||||||
int BCP;
|
double dpPipe;
|
||||||
|
double dpMainValve;
|
||||||
|
double ActFlowSpeed;
|
||||||
|
int BCP;
|
||||||
|
|
||||||
BCP =Round( i_bcp );
|
BCP = lround(i_bcp);
|
||||||
|
|
||||||
EPS =BEP_K[ BCP ];
|
EPS = BEP_K[BCP];
|
||||||
|
|
||||||
if( BCP>0 ) BCP =BCP-1;
|
if (BCP > 0)
|
||||||
|
BCP = BCP - 1;
|
||||||
|
|
||||||
if( BCP<-1 ) BCP =1;
|
if (BCP < -1)
|
||||||
LimPP =BPT_K[ BCP ][ 1 ];
|
BCP = 1;
|
||||||
if( LimPP<0 )
|
LimPP = BPT_K[BCP][1];
|
||||||
LimPP =0.5*PP;else if( LimPP>0 )
|
if (LimPP < 0)
|
||||||
LimPP =PP;else
|
LimPP = 0.5 * PP;
|
||||||
LimPP =CP;
|
else if (LimPP > 0)
|
||||||
ActFlowSpeed =BPT_K[ BCP ][ 0 ];
|
LimPP = PP;
|
||||||
|
else
|
||||||
|
LimPP = CP;
|
||||||
|
ActFlowSpeed = BPT_K[BCP][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
|
||||||
|
|
||||||
dpMainValve =0;
|
dpMainValve = 0;
|
||||||
|
|
||||||
if( BCP==-1 )
|
if (BCP == -1)
|
||||||
dpMainValve =PF( HP, PP, ( ActFlowSpeed )*1.0/( LBDelay ) )*dt;
|
dpMainValve = PF(HP, PP, (ActFlowSpeed)*1.0 / (LBDelay)) * dt;
|
||||||
if( ( BCP==0 ) )
|
if ((BCP == 0))
|
||||||
dpMainValve =-PFVa( HP, PP, ( ActFlowSpeed )*1.0/( LBDelay ), NomPress+RedAdj )*dt;
|
dpMainValve = -PFVa(HP, PP, (ActFlowSpeed)*1.0 / (LBDelay), NomPress + RedAdj) * dt;
|
||||||
if( ( BCP>1 )&&( PP>CP ) )
|
if ((BCP > 1) && (PP > CP))
|
||||||
dpMainValve =PFVd( PP, 0, ( ActFlowSpeed )*1.0/( LBDelay ), CP )*dt;
|
dpMainValve = PFVd(PP, 0, (ActFlowSpeed)*1.0 / (LBDelay), CP) * dt;
|
||||||
if( BCP==i_bcpno )
|
if (BCP == i_bcpno)
|
||||||
dpMainValve =PF( 0, PP, ( ActFlowSpeed )*1.0/( LBDelay ) )*dt;
|
dpMainValve = PF(0, PP, (ActFlowSpeed)*1.0 / (LBDelay)) * dt;
|
||||||
|
|
||||||
GetPF =dpMainValve;
|
return dpMainValve;
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
double TSt113::GetCP()
|
double TSt113::GetCP()
|
||||||
{ double result;
|
{
|
||||||
GetCP =EPS;
|
return EPS;
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
double TSt113::GetPos(Byte i)
|
double TSt113::GetPos(Byte i)
|
||||||
{ double result;
|
{
|
||||||
static double const table[11] = ( -1, 5, -1, 0, 2, 3, 4, 5, 0, 0, 1 );
|
static double const table[11] = { -1, 5, -1, 0, 2, 3, 4, 5, 0, 0, 1 };
|
||||||
|
|
||||||
GetPos =table[ i ];
|
return table[i];
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TSt113::Init(double Press)
|
void TSt113::Init(double Press)
|
||||||
{
|
{
|
||||||
Time =true;
|
Time = true;
|
||||||
TimeEP =true;
|
TimeEP = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
//--- test ---
|
//--- test ---
|
||||||
|
|
||||||
double Ttest::GetPF(double i_bcp, double PP, double HP, double dt, double ep)
|
double Ttest::GetPF(double i_bcp, double PP, double HP, double dt, double ep)
|
||||||
{ double result;
|
{
|
||||||
static double/*?*/ const LBDelay = 100;
|
double result;
|
||||||
|
static int const LBDelay = 100;
|
||||||
|
|
||||||
double LimPP; double dpPipe; double dpMainValve; double ActFlowSpeed;
|
double LimPP;
|
||||||
|
double dpPipe;
|
||||||
|
double dpMainValve;
|
||||||
|
double ActFlowSpeed;
|
||||||
|
|
||||||
|
LimPP = BPT[lround(i_bcp)][1];
|
||||||
|
ActFlowSpeed = BPT[lround(i_bcp)][0];
|
||||||
|
|
||||||
LimPP =BPT[ Round( i_bcp ) ][ 1 ];
|
if ((i_bcp == i_bcpno))
|
||||||
ActFlowSpeed =BPT[ Round( i_bcp ) ][ 0 ];
|
LimPP = 0.0;
|
||||||
|
|
||||||
if( ( i_bcp==i_bcpno ) ) LimPP =0.0;
|
if ((i_bcp == -1))
|
||||||
|
LimPP = 7;
|
||||||
|
|
||||||
if( ( i_bcp==-1 ) ) LimPP =7;
|
CP = CP + 20 * Min0R(abs(LimPP - CP), 0.05) * PR(CP, LimPP) * dt * 1.0 / 1;
|
||||||
|
|
||||||
CP =CP+20*Min0R( abs( LimPP-CP ), 0.05 )*PR( CP, LimPP )*dt*1.0/1;
|
LimPP = CP;
|
||||||
|
dpPipe = Min0R(HP, LimPP);
|
||||||
|
|
||||||
LimPP =CP;
|
dpMainValve = PF(dpPipe, PP, ActFlowSpeed * 1.0 / (LBDelay)) * dt;
|
||||||
dpPipe =Min0R( HP, LimPP );
|
|
||||||
|
|
||||||
dpMainValve =PF( dpPipe, PP, ActFlowSpeed*1.0/( LBDelay ) )*dt;
|
if ((lround(i_bcp) == i_bcpno))
|
||||||
|
{
|
||||||
|
dpMainValve = PF(0, PP, (ActFlowSpeed)*1.0 / (LBDelay)) * dt;
|
||||||
|
}
|
||||||
|
|
||||||
if( ( Round( i_bcp )==i_bcpno ) )
|
return dpMainValve;
|
||||||
{
|
|
||||||
dpMainValve =PF( 0, PP, ( ActFlowSpeed )*1.0/( LBDelay ) )*dt;
|
|
||||||
}
|
|
||||||
|
|
||||||
GetPF =dpMainValve;
|
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Ttest::Init(double Press)
|
void Ttest::Init(double Press)
|
||||||
{
|
{
|
||||||
CP = Press;
|
CP = Press;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//---FD1---
|
//---FD1---
|
||||||
|
|
||||||
double TFD1::GetPF(double i_bcp, double PP, double HP, double dt, double ep)
|
double TFD1::GetPF(double i_bcp, double PP, double HP, double dt, double ep)
|
||||||
{ double result; double DP; double temp;
|
{
|
||||||
|
double DP;
|
||||||
|
double temp;
|
||||||
|
|
||||||
// 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 =10*Min0R( abs( temp-BP ), 0.1 )*PF( temp, BP, 0.0006*( 2+Byte( temp>BP ) ) )*dt*Speed;
|
DP =
|
||||||
BP =BP-DP;
|
10 * Min0R(abs(temp - BP), 0.1) * PF(temp, BP, 0.0006 * (2 + Byte(temp > BP))) * dt * Speed;
|
||||||
GetPF =-DP;
|
BP = BP - DP;
|
||||||
return result;
|
return -DP;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TFD1::Init(double Press)
|
void TFD1::Init(double Press)
|
||||||
{
|
{
|
||||||
BP =0;
|
BP = 0;
|
||||||
MaxBP =Press;
|
MaxBP = Press;
|
||||||
Time =false;
|
Time = false;
|
||||||
TimeEP =false;
|
TimeEP = false;
|
||||||
Speed =1;
|
Speed = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
double TFD1::GetCP()
|
double TFD1::GetCP()
|
||||||
{ double result;
|
{
|
||||||
GetCP =BP;
|
return BP;
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TFD1::SetSpeed(double nSpeed)
|
void TFD1::SetSpeed(double nSpeed)
|
||||||
{
|
{
|
||||||
Speed =nSpeed;
|
Speed = nSpeed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//---KNORR---
|
//---KNORR---
|
||||||
|
|
||||||
double TH1405::GetPF(double i_bcp, double PP, double HP, double dt, double ep)
|
double TH1405::GetPF(double i_bcp, double PP, double HP, double dt, double ep)
|
||||||
{ double result; double DP; double temp; double A;
|
{
|
||||||
|
double DP;
|
||||||
|
double temp;
|
||||||
|
double A;
|
||||||
|
|
||||||
PP =Min0R( PP, MaxBP );
|
PP = Min0R(PP, MaxBP);
|
||||||
if( i_bcp>0.5 )
|
if (i_bcp > 0.5)
|
||||||
{
|
{
|
||||||
temp =Min0R( MaxBP, HP );
|
temp = Min0R(MaxBP, HP);
|
||||||
A =2*( i_bcp-0.5 )*0.0011;
|
A = 2 * (i_bcp - 0.5) * 0.0011;
|
||||||
BP =Max0R( BP, PP );
|
BP = Max0R(BP, PP);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
temp =0;
|
temp = 0;
|
||||||
A =0.2*( 0.5-i_bcp )*0.0033;
|
A = 0.2 * (0.5 - i_bcp) * 0.0033;
|
||||||
BP =Min0R( BP, PP );
|
BP = Min0R(BP, PP);
|
||||||
}
|
}
|
||||||
DP =PF( temp, BP, A )*dt;
|
DP = PF(temp, BP, A) * dt;
|
||||||
BP =BP-DP;
|
BP = BP - DP;
|
||||||
GetPF =-DP;
|
return -DP;
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TH1405::Init(double Press)
|
void TH1405::Init(double Press)
|
||||||
{
|
{
|
||||||
BP =0;
|
BP = 0;
|
||||||
MaxBP =Press;
|
MaxBP = Press;
|
||||||
Time =true;
|
Time = true;
|
||||||
TimeEP =false;
|
TimeEP = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
double TH1405::GetCP()
|
double TH1405::GetCP()
|
||||||
{ double result;
|
{
|
||||||
GetCP =BP;
|
return BP;
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//---FVel6---
|
//---FVel6---
|
||||||
|
|
||||||
double TFVel6::GetPF(double i_bcp, double PP, double HP, double dt, double ep)
|
double TFVel6::GetPF(double i_bcp, double PP, double HP, double dt, double ep)
|
||||||
{ double result;
|
{
|
||||||
static double/*?*/ const LBDelay = 100;
|
static int const LBDelay = 100;
|
||||||
|
|
||||||
double LimPP; double dpPipe; double dpMainValve; double ActFlowSpeed;
|
double LimPP;
|
||||||
|
double dpPipe;
|
||||||
|
double dpMainValve;
|
||||||
|
double ActFlowSpeed;
|
||||||
|
|
||||||
LimPP =Min0R( 5*Byte( i_bcp<3.5 ), HP );
|
LimPP = Min0R(5 * Byte(i_bcp < 3.5), HP);
|
||||||
if( ( i_bcp>=3.5 ) && ( ( i_bcp<4.3 )||( i_bcp>5.5 ) ) )
|
if ((i_bcp >= 3.5) && ((i_bcp < 4.3) || (i_bcp > 5.5)))
|
||||||
ActFlowSpeed =0;else if( ( i_bcp>4.3 ) && ( i_bcp<4.8 ) )
|
ActFlowSpeed = 0;
|
||||||
ActFlowSpeed =4*( i_bcp-4.3 ) //konsultacje wawa1 - bylo 8;else if( ( i_bcp<4 ) )
|
else if ((i_bcp > 4.3) && (i_bcp < 4.8))
|
||||||
ActFlowSpeed =2;else
|
ActFlowSpeed = 4 * (i_bcp - 4.3); // konsultacje wawa1 - bylo 8;
|
||||||
ActFlowSpeed =4;
|
else if ((i_bcp < 4))
|
||||||
dpMainValve =PF( LimPP, PP, ActFlowSpeed*1.0/( LBDelay ) )*dt;
|
ActFlowSpeed = 2;
|
||||||
|
else
|
||||||
|
ActFlowSpeed = 4;
|
||||||
|
dpMainValve = PF(LimPP, PP, ActFlowSpeed * 1.0 / (LBDelay)) * dt;
|
||||||
|
|
||||||
|
Sounds[s_fv4a_e] = 0;
|
||||||
|
Sounds[s_fv4a_u] = 0;
|
||||||
|
Sounds[s_fv4a_b] = 0;
|
||||||
|
if ((i_bcp < 3.5))
|
||||||
|
Sounds[s_fv4a_u] = -dpMainValve;
|
||||||
|
else if ((i_bcp < 4.8))
|
||||||
|
Sounds[s_fv4a_b] = dpMainValve;
|
||||||
|
else if ((i_bcp < 5.5))
|
||||||
|
Sounds[s_fv4a_e] = dpMainValve;
|
||||||
|
|
||||||
Sounds[ s_fv4a_e ] =0;
|
if ((i_bcp < -0.5))
|
||||||
Sounds[ s_fv4a_u ] =0;
|
EPS = -1;
|
||||||
Sounds[ s_fv4a_b ] =0;
|
else if ((i_bcp > 0.5) && (i_bcp < 4.7))
|
||||||
if( ( i_bcp<3.5 ) ) Sounds[ s_fv4a_u ] =-dpMainValve;else
|
EPS = 1;
|
||||||
if( ( i_bcp<4.8 ) ) Sounds[ s_fv4a_b ] =dpMainValve;else
|
else
|
||||||
if( ( i_bcp<5.5 ) ) Sounds[ s_fv4a_e ] =dpMainValve;
|
EPS = 0;
|
||||||
|
// EPS:=i_bcp*Byte(i_bcp<2)
|
||||||
GetPF =dpMainValve;
|
return dpMainValve;
|
||||||
if( ( i_bcp<-0.5 ) )
|
|
||||||
EPS =-1;else if( ( i_bcp>0.5 )&&( i_bcp<4.7 ) )
|
|
||||||
EPS =1;else
|
|
||||||
EPS =0;
|
|
||||||
// EPS:=i_bcp*Byte(i_bcp<2)
|
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
double TFVel6::GetCP()
|
double TFVel6::GetCP()
|
||||||
{ double result;
|
{
|
||||||
GetCP =EPS;
|
return EPS;
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
double TFVel6::GetPos(Byte i)
|
double TFVel6::GetPos(Byte i)
|
||||||
{ double result;
|
{
|
||||||
static double const table[11] = ( -1, 6, -1, 0, 6, 4, 4.7, 5, -1, 0, 1 );
|
static double const table[11] = { -1, 6, -1, 0, 6, 4, 4.7, 5, -1, 0, 1 };
|
||||||
|
|
||||||
GetPos =table[ i ];
|
return table[i];
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
double TFVel6::GetSound(Byte i)
|
double TFVel6::GetSound(Byte i)
|
||||||
{ double result;
|
{
|
||||||
if( i>2 )
|
if (i > 2)
|
||||||
GetSound =0;else
|
return 0;
|
||||||
GetSound =Sounds[ i ];
|
else
|
||||||
return result;
|
return Sounds[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
void TFVel6::Init(double Press)
|
void TFVel6::Init(double Press)
|
||||||
{
|
{
|
||||||
Time =true;
|
Time = true;
|
||||||
TimeEP =true;
|
TimeEP = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//END
|
//END
|
||||||
|
|||||||
@@ -541,6 +541,7 @@ private:
|
|||||||
double CP; double TP; double RP; //zbiornik steruj¹cy, czasowy, redukcyjny
|
double CP; double TP; double RP; //zbiornik steruj¹cy, czasowy, redukcyjny
|
||||||
double RedAdj; //dostosowanie reduktora cisnienia (krecenie kapturkiem)
|
double RedAdj; //dostosowanie reduktora cisnienia (krecenie kapturkiem)
|
||||||
bool Fala;
|
bool Fala;
|
||||||
|
double LPP_RP(double pos);
|
||||||
bool EQ(double pos, double i_pos);
|
bool EQ(double pos, double i_pos);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@@ -608,7 +609,7 @@ public:
|
|||||||
class TH14K1: public HANDLE
|
class TH14K1: public HANDLE
|
||||||
|
|
||||||
{
|
{
|
||||||
private:
|
protected:
|
||||||
double CP; //zbiornik steruj¹cy, czasowy, redukcyjny
|
double CP; //zbiornik steruj¹cy, czasowy, redukcyjny
|
||||||
double RedAdj; //dostosowanie reduktora cisnienia (krecenie kapturkiem)
|
double RedAdj; //dostosowanie reduktora cisnienia (krecenie kapturkiem)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user