Name | Version | License | Source | Languages | Author | Description |
---|---|---|---|---|---|---|
Library of models of the technological apparatuses | 2.0 | GPLv2 | OscadaLibs.db (SQL, GZip) > DAQ.JavaLikeCalc.techApp | en, uk, ru | Roman Savochenko Maxim Lysenko (2007,2010), Ksenia Yashina (2007) |
Library of models of the technological apparatuses for creating complex simulators of the technological processes of block-schemes of the module DAQ.BlockCalc.
|
The library is created to provide models of devices of the technological processes. The library is not static, but based on the module JavaLikeCalc, allowing to create calculations on the Java-like language. The functions' names and its parameters are available in languages: English, Ukrainian and mRussian.
To address the library functions you can use the static call address DAQ.JavaLikeCalc.lib_techApp.{Func}() or dynamic SYS.DAQ.JavaLikeCalc["lib_techApp"]["{Func}"].call(), SYS.DAQ.JavaLikeCalc["lib_techApp"].{Func}()". Where {Func} — function identifier in the library.
For connection the library to a project of the OpenSCADA station you can obtain the database file as:
wget http://oscada.org/svn/trunk/OpenSCADA/data/LibsDB/OscadaLibs.sql
sqlite3 -init OscadaLibs.sql OscadaLibs.db .exit
This obtained file next you can place into the project directory of the station and create the database object for the DB module "SQLite", registering the database file in the configuration.
The basis of the model of each apparatus is the calculation of the input flow and output pressure, based on the input pressure and output flow. In general, models of the technological devices are described by difference equations for discrete machines.
Basing on the functions of this library you can easily and quickly build models of technological processes in the module BlockCalc, combining the blocks in accordance with the technological scheme. Example of combination of several devices of the technological scheme is shown in Figure 1.
The basis of any model of the technological device are two basic formulas, that is the formula of flow and pressure. The canonical formula for flow of the environment for the intersection of the pipe or passageway of the narrowing has the form (1).
Where:
The actual density is calculated by the formula (2).
Where:
Each pipe makes the dynamic resistance to the flow, associated with the friction of the pipe walls and that depends on the flow speed. The dynamic resistance of the pipe is represented by (3). The total flow of the environment, taking into account the dynamic resistance is calculated by the formula (4).
Where:
The equation (1) describes the laminar flow of the environment up to the critical speeds. In the case of exceeding the critical flow speed, the calculation is made by the formula (5). A universal formula for calculating the flow at all speeds will have the view (6).
Where:
Where:
In the dynamical systems the change of the flow at the pipe ending does not change instantaneously, but lags behind the time travel of the environment part from the pipe beginning to its ending. The time depends on the length of the pipe and speed of the environment in the pipe. Delay of the flow changing at the pipe ending can be described by the formula (7). The resulting formula for calculating of the the flow in the pipe, taking into account the above features, is written in the view (8).
Where:
The environment pressure in the volume is usually calculated identically for all cases, by the formula (9).
The library contains about two dozen of models of the often needed devices of the technological processes and the additional elements. The functions' names and their parameters are available in three languages: English, Ukrainian and mRussian.
Lag model. Can be used for lag imitation of the sensor variables.
Parameters
Identifier | Parameter | Type | Mode | Hidden | Default |
---|---|---|---|---|---|
out | Output | Real | Return | false | 0 |
in | Input | Real | Input | false | 0 |
t_lg | Lag time, seconds | Real | Input | false | 10 |
f_frq | Calculation frequency, Hz | Real | Input | true | 100 |
Program
out -= (out-in)/(t_lg*f_frq);
Noise model. Contains three parts:
Parameters
Identifier | Parameter | Type | Mode | Hidden | Default |
---|---|---|---|---|---|
out | Output | Real | Return | false | 0 |
off | Main offset | Real | Input | false | 1 |
a_g1 | Amplitude of the harmonic 1 | Real | Input | false | 10 |
per_g1 | Period of the harmonic part 1, seconds | Real | Input | false | 10 |
a_g2 | Amplitude of the harmonic 2 | Real | Input | false | 5 |
per_g2 | Period of the harmonic part 2, seconds | Real | Input | false | 0.1 |
a_rnd | Amplitude of the random numbers | Real | Input | false | 1 |
f_frq | Calculation frequency, Hz | Real | Input | true | 100 |
tmp_g1 | Counter of the harmonic 1 | Real | Input | true | 0 |
tmp_g2 | Counter of the harmonic 2 | Real | Input | true | 0 |
Program
tmp_g1 = (tmp_g1 > 6.28) ? 0 : tmp_g1+6.28/(per_g1*f_frq);
tmp_g2 = (tmp_g2 > 6.28) ? 0 : tmp_g2+6.28/(per_g2*f_frq);
out = off + a_g1*sin(tmp_g1) + a_g2*sin(tmp_g2) + a_rnd*(rand(2)-1);
Model of the ball crane. Includes for the going and estrangement time.
Parameters
Identifier | Parameter | Type | Mode | Hidden | Default |
---|---|---|---|---|---|
pos | Position, % | Real | Output | false | 0 |
com | Command | Boolean | Input | false | 0 |
st_open | State "Opened" | Boolean | Output | false | 0 |
st_close | State "Closed" | Boolean | Output | false | 1 |
t_full | Going time, seconds | Real | Input | false | 5 |
t_up | Estrangement time, seconds | Real | Input | false | 0.5 |
f_frq | Calculation frequency, Hz | Real | Input | true | 100 |
tmp_up | Estrangement counter | Real | Input | true | 0 |
lst_com | Last command | Boolean | Input | true | 0 |
Program
if(!(st_close && !com) && !(st_open && com)) {
tmp_up = (pos > 0 && pos < 100) ? 0 : (tmp_up>0&&lst_com==com)?tmp_up-1/f_frq:t_up;
pos += (tmp_up > 0) ? 0 : (100*(com?1:-1))/(t_full*f_frq);
pos = (pos > 100) ? 100 : (pos<0)?0:pos;
st_open = (pos >= 100) ? true : false;
st_close = (pos <= 0) ? true : false;
lst_com = com;
}
Separator model with two phases, liquid and gas.
Parameters
Identifier | Parameter | Type | Mode | Hidden | Default |
---|---|---|---|---|---|
Fi | Input flow, ton/h | Real | Output | false | 0 |
Pi | Input pressure, at | Real | Input | false | 1 |
Si | Input cutset, m2 | Real | Input | false | 0.2 |
Fo | Output flow, ton/h | Real | Input | false | 0 |
Po | Output pressure, at | Real | Output | false | 1 |
So | Output cutset, m2 | Real | Input | false | 0.2 |
lo | Output length, m | Real | Input | false | 10 |
Fo_lq | Output liquid flow, ton/h | Real | Input | false | 0 |
Po_lq | Output liquid pressure, at | Real | Output | false | 1 |
Llq | Liquid level, % | Real | Output | false | 0 |
PercLq | % liquid | Real | Input | false | 0.01 |
Vap | Device capacity, m3 | Real | Input | false | 10 |
Q0 | Norm density of the environment, kg/m3 | Real | Input | false | 1 |
Qlq | Liquid density, kg/m3 | Real | Input | false | 1000 |
f_frq | Calculation frequency, Hz | Real | Input | true | 200 |
Program
Flq = max(0, Fi*PercLq);
DAQ.JavaLikeCalc.lib_techApp.pipeBase(Fi, Pi, 293, Si, Fo+Flq, Po, 293, So, lo, Q0, 0.95, 0.01, f_frq);
Llq = max(0, min(100,Llq+0.27*(Flq-Fo_lq)/(Vap*Qlq*f_frq)));
Po_lq = Po + Llq*Vap/Qlq;
Valve model, include:
Parameters
Identifier | Parameter | Type | Mode | Hidden | Default |
---|---|---|---|---|---|
Fi | Input flow, ton/h | Real | Output | false | 0 |
Pi | Input pressure, at | Real | Input | false | 1 |
Ti | Input temperature, K | Real | Input | false | 273 |
Fo | Output flow, ton/h | Real | Input | false | 0 |
Po | Output pressure, at | Real | Output | false | 1 |
To | Output temperature, K | Real | Output | false | 273 |
So | Output pipe cutset, m2 | Real | Input | false | 0.2 |
lo | Output pipe length, m | Real | Input | false | 10 |
S_v1 | Valve 1 cutset, m2 | Real | Input | false | 0.1 |
l_v1 | Valve 1 position, % | Real | Input | false | 0 |
t_v1 | Valve 1 opening time, seconds | Real | Input | false | 10 |
S_v2 | Valve 2 cutset, m2 | Real | Input | false | 0.05 |
l_v2 | Valve 2 position, % | Real | Input | false | 0 |
t_v2 | Valve 2 opening time, seconds | Real | Input | false | 5 |
Q0 | Norm density of the environment, kg/m3 | Real | Input | false | 1 |
Kln | Coefficient of the linearity | Real | Input | false | 1 |
Kpr | Coefficient of the compressibility [0...1] | Real | Input | false | 0.95 |
Ct | Heat capacity of the environment | Real | Input | false | 20 |
Riz | Heat resistance of the isolation | Real | Input | false | 20 |
noBack | Back valve | Boolean | Input | false | 0 |
Fwind | Air speed | Real | Input | false | 1 |
Twind | Air temperature, K | Real | Input | false | 273 |
f_frq | Calculation frequency, Hz | Real | Input | true | 200 |
tmp_l1 | Lag of the position 1 | Real | Output | true | 0 |
tmp_l2 | Lag of the position 2 | Real | Output | true | 0 |
Program
Qr = Q0+Q0*Kpr*(Pi-1);
tmp_l1 += (abs(l_kl1-tmp_l1) > 5) ? 100*sign(l_kl1-tmp_l1)/(t_kl1*f_frq) : (l_kl1-tmp_l1)/(t_kl1*f_frq);
tmp_l2 += (abs(l_kl2-tmp_l2) > 5) ? 100*sign(l_kl2-tmp_l2)/(t_kl2*f_frq) : (l_kl2-tmp_l2)/(t_kl2*f_frq);
Sr = (S_kl1*pow(tmp_l1,Kln)+S_kl2*pow(tmp_l2,Kln))/pow(100,Kln);
DAQ.JavaLikeCalc.lib_techApp.pipeBase(Fi, Pi, Ti, Sr, EVAL_REAL, Po, 293, So, lo, Q0, Kpr, 0.01, f_frq);
if(noBack) Fi = max(0, Fi);
Po = max(0, min(100,Po+0.27*(Fi-Fo)/(Q0*Kpr*So*lo*f_frq)));
To = max(0, min(2e3,To+(abs(Fi)*(Ti*pow(Po/Pi,0.02)-To)+(Fwind+1)*(Twind-To)/Riz)/(Ct*So*lo*Qr*f_frq)));
Model of clean(transportable) lag. Realizes by incorporating several links of a simple delay. Appointed for lags into long pipes.
Parameters
Identifier | Parameter | Type | Mode | Hidden | Default |
---|---|---|---|---|---|
out | Output | Real | Return | false | 0 |
in | Input | Real | Input | false | 0 |
t_lg | Lag time, seconds | Real | Input | false | 10 |
f_frq | Calculation frequency, Hz | Real | Input | true | 100 |
cl1 | Link 1 | Real | Input | true | 0 |
cl2 | Link 2 | Real | Input | true | 0 |
cl3 | Link 3 | Real | Input | true | 0 |
Program
cl1 -= (cl1-in)/(t_lg*f_frq/4);
cl2 -= (cl2-cl1)/(t_lg*f_frq/4);
cl3 -= (cl3-cl2)/(t_lg*f_frq/4);
out -= (out-cl3)/(t_lg*f_frq/4);
The model of the boiler's barrel.
Parameters
Identifier | Parameter | Type | Mode | Hidden | Default |
---|---|---|---|---|---|
Fi1 | Input water flow, ton/h | Real | Output | false | 22 |
Pi1 | Input water pressure, at | Real | Input | false | 43 |
Ti1 | Input water temperature, K | Real | Input | false | 523 |
Si1 | Input water pipes cutset, m2 | Real | Input | false | 0.6 |
Fi2 | Input smoke gas flow, ton/h | Real | Output | false | |
Pi2 | Input smoke gas pressure, at | Real | Input | false | 1.3 |
Ti2 | Input smoke gas temperature, K | Real | Input | false | 1700 |
Si2 | Input smoke gas pipes cutset, m2 | Real | Input | false | 10 |
Vi1 | Barrel volume, m3 | Real | Input | false | 3 |
Lo | Barrel level, % | Real | Output | false | 10 |
S | Heating surface, m2 | Real | Input | false | 15 |
k | Heat transfer coefficient | Real | Input | false | 0.8 |
Fo | Output steam flow, ton/h | Real | Input | false | 20 |
Po1 | Output steam pressure, at | Real | Output | false | 41.68 |
To1 | Output steam temperature, K | Real | Output | false | 10 |
So1 | Output steam pipe cutset, m2 | Real | Input | false | 0.5 |
lo1 | Output steam pipe length, m | Real | Input | false | 5 |
Fo2 | Output smoke gas flow, ton/h | Real | Input | false | 180 |
Po2 | Output smoke gas pressure, at | Real | Output | false | 1 |
To2 | Output smoke gas temperature, K | Real | Input | false | 0 |
Fstm | Inner barrel steam flow, ton/h | Real | Output | false | 0 |
Tv | Inner water temperature, K | Real | Output | false | 0 |
f_frq | Calculation frequency, Hz | Real | Input | false | 200 |
Program
// Water
DAQ.JavaLikeCalc.lib_techApp.pipeBase(Fi1, Pi1, 293, Si1, EVAL_REAL, Po1, 293, So1, lo1, 1e3, 0.001, 0.01, f_frq);
Fi1 = max(0, Fi1);
// Steam
Lo = max(0, min(100,Lo+(Fi1-Fstm)*100/(Vi1*1000*f_frq)));
To1 = (100*pow(Po1,0.241)+5) + 273;
if(Tv < To1) {
Tv += (k*S*(Ti2-Tv)-Fi1*0.00418*(Tv-Ti1))/f_frq;
Fstm = 0;
}
if(Tv >= To1) {
Tv = To1;
Lambda = 2750-0.00418*(Tv-273);
Fstm = (5*S*Fi2*(Ti2-Tv)-Fi1*0.00418*(Tv-Ti1))/(Po1*Lambda);
}
To2 = Ti2-Tv/k;
Po1 = max(0, min(100,Po1+0.27*(Fstm-Fo)/(1.2*0.98*((1-Lo/100)*Vi1+So1*lo1)*f_frq)));
// Smoke gas
DAQ.JavaLikeCalc.lib_techApp.pipeBase(Fi2, Pi2, 293, Si2, Fo2, Po2, 293, Si2, 30, 1.2, 0.98, 0.01, f_frq);
The fire-chamber model of the boiler unit, which operates on three types of fuel, initially is: blast-furnace, coke and natural gases.
Parameters
Identifier | Parameter | Type | Mode | Hidden | Default |
---|---|---|---|---|---|
Fi1 | Input blast furnace gas flow, ton/h | Real | Output | false | |
Pi1 | Input blast furnace gas pressure, at | Real | Input | false | |
Ti1 | Input blast furnace gas temperature, K | Real | Input | false | 40 |
Si1 | Input blast furnace gas pipe cutset, m2 | Real | Input | false | |
Fi2 | Input natural gas flow, ton/h | Real | Output | false | |
Pi2 | Input natural gas pressure, at | Real | Input | false | |
Ti2 | Input natural gas temperature, K | Real | Input | false | 20 |
Si2 | Input natural gas pipe cutset, m2 | Real | Input | false | |
Fi3 | Input coke oven gas flow, ton/h | Real | Output | false | |
Pi3 | Input coke oven gas pressure, at | Real | Input | false | |
Ti3 | Input coke oven gas temperature, K | Real | Input | false | 0 |
Si3 | Input coke oven gas pipe cutset, m2 | Real | Input | false | |
Fi4 | Input air flow, ton/h | Real | Output | false | |
Pi4 | Input air pressure, at | Real | Input | false | |
Ti4 | Input air temperature, K | Real | Input | false | 20 |
Si4 | Input air pipe cutset, m2 | Real | Input | false | |
Fo | Output smoke gas flow, ton/h | Real | Input | false | |
Po | Output smoke gas pressure, at | Real | Output | false | |
To | Output smoke gas temperature, K | Real | Output | false | |
So | Output smoke gas pipe cutset, m2 | Real | Input | false | 90 |
lo | Output smoke gas pipe length, m | Real | Input | false | |
V | Burner volume, m3 | Real | Input | false | 830 |
CO | Percentage of CO in the flue stack gases, % | Real | Output | false | |
O2 | Percentage of O2 in the flue stack gases, % | Real | Output | false | |
f_frq | Calculation frequency, Hz | Real | Input | false | 200 |
Program
using DAQ.JavaLikeCalc.lib_techApp;
pipeBase(Fi1, Pi1, Ti1, Si1, EVAL_REAL, Po, 293, So, lo, 1.2, 0.95, 0.01, f_frq); Fi1 = max(0, Fi1);
pipeBase(Fi2, Pi2, Ti2, Si2, EVAL_REAL, Po, 293, So, lo, 0.7, 0.95, 0.01, f_frq); Fi2 = max(0, Fi2);
pipeBase(Fi3, Pi3, Ti3, Si3, EVAL_REAL, Po, 293, So, lo, 1.33, 0.95, 0.01, f_frq); Fi3 = max(0, Fi3);
pipeBase(Fi4, Pi4, Ti4, Si4, EVAL_REAL, Po, 293, So, lo, 1.293, 0.95, 0.01, f_frq); Fi4 = max(0, Fi4);
Neobhod_vzd = Fi1 + 10*Fi2 + 4*Fi3;
F_DG = Fi1 + Fi2 + Fi3 + Fi4;
O2 = max(0, min(100,(Fi4-Neobhod_vzd)*100/F_DG));
CO = min(100, (O2<1) ? (1.2*abs(O2)) : 0);
koef = min(1, Fi4/Neobhod_vzd);
Q = koef*(8050*Fi2+3900*Fi3+930*Fi1);
delta_t = Q/(F_DG*1.047);
To = max(0, min(2000,(delta_t+(Ti4-273)+(Ti3-273)*(Fi3/Fi1)+(Ti2-273)*(Fi2/Fi1)+(Ti1-273)*(Fi1/Fi4))+273));
Po = max(0, min(10,Po+0.27*(F_DG-Fo)/(1.2*0.95*(So*lo+V)*f_frq)));
Loading with constant pressure on the network. Contains a parameter for connection the noise.
Parameters
Identifier | Parameter | Type | Mode | Hidden | Default |
---|---|---|---|---|---|
Fi | Input flow, ton/h | Real | Output | false | 10 |
Pi | Input pressure, at | Real | Input | false | 1 |
Po | Output pressure setpoint, at | Real | Input | false | 1 |
So | Output pipe cutset, m2 | Real | Input | false | 0.1 |
Kpr | Coefficient of the compressibility [0...1] | Real | Input | false | 0.95 |
Noise | Input flow's noise | Real | Input | false | 1 |
Q0 | Norm density of the environment, kg/m3 | Real | Input | false | 1 |
f_frq | Calculation frequency, Hz | Real | Input | true | 200 |
Program
DAQ.JavaLikeCalc.lib_techApp.pipeBase(Fi, Pi, 293, So, EVAL_REAL, Po, 293, So, 10, Q0, Kpr, 0.01, f_frq);
Source of the constant pressure. Contains a parameter for connection the noise.
Parameters
Identifier | Parameter | Type | Mode | Hidden | Default |
---|---|---|---|---|---|
Pi | Input pressure setpoint, at | Real | Input | false | 10 |
Fo | Output flow, ton/h | Real | Input | false | 0 |
Po | Output pressure, at | Real | Output | false | 1 |
So | Output pipe cutset, m2 | Real | Input | false | 0.1 |
lo | Output pipe length, m | Real | Input | false | 100 |
Noise | Input flow's noise | Real | Input | false | 1 |
Q0 | Norm density of the environment, kg/m3 | Real | Input | false | 1 |
Kpr | Coefficient of the compressibility [0...1] | Real | Input | false | 0.95 |
f_frq | Calculation frequency, Hz | Real | Input | true | 200 |
Fit | Input flow, lagged | Real | Output | true | 0 |
Program
DAQ.JavaLikeCalc.lib_techApp.pipeBase(Fit, Pi*Noise, 293, So, Fo, Po, 293, So, lo, Q0, Kpr, 0.01, f_frq);
Model of the air cooler for gas flow.
Parameters
Identifier | Parameter | Type | Mode | Hidden | Default |
---|---|---|---|---|---|
Fi | Input flow, ton/h | Real | Output | false | 0 |
Pi | Input pressure, at | Real | Input | false | 1 |
Ti | Input temperature, K | Real | Input | false | 273 |
Si | Cooler's pipes cutset, m2 | Real | Input | false | 0.05 |
li | Full cooler's pipes length, m | Real | Input | false | 10 |
Fo | Output flow, ton/h | Real | Input | false | 0 |
Po | Output pressure, at | Real | Output | false | 1 |
To | Output temperature, K | Real | Output | false | 273 |
So | Output pipe cutset, m2 | Real | Input | false | 0.2 |
lo | Output pipe length, m | Real | Input | false | 10 |
Tair | Cooling air temperature, К | Real | Input | false | 283 |
Wc | Cooler performance | Real | Input | false | 200 |
Q0 | Norm density of the environment, kg/m3 | Real | Input | false | 1 |
Ct | Heat capacity of the environment | Real | Input | false | 100 |
Rt | Heat resistance | Real | Input | false | 1 |
f_frq | Calculation frequency, Hz | Real | Input | true | 200 |
Program
DAQ.JavaLikeCalc.lib_techApp.pipeBase(Fi, Pi, 293, Si, Fo, Po, 293, So, lo, Q0, 0.95, 0.01, f_frq);
Qr = Q0 + Q0*0.95*(Pi-1);
To += (Fi*(Ti-To)+Wc*(Tair-To)/Rt)/(Ct*(Si*li+So*lo)*Qr*f_frq);
Model of the gas compressor. Implements the surge effect. The surge counts from the dynamic-gas curve, and next there counts the surge margin coefficient.
Parameters
Identifier | Parameter | Type | Mode | Hidden | Default |
---|---|---|---|---|---|
Fi | Input flow, ton/h | Real | Output | false | 0 |
Pi | Input pressure, at | Real | Input | false | 1 |
Ti | Input temperature, K | Real | Input | false | 273 |
Fo | Output flow, ton/h | Real | Input | false | 0 |
Po | Output pressure, at | Real | Output | false | 1 |
To | Output temperature, K | Real | Output | false | 273 |
So | Output pipe cutset, m2 | Real | Input | false | 0.2 |
lo | Output pipe length, m | Real | Input | false | 2 |
Kmrg | Surge protect margin coefficient | Real | Output | false | 0.1 |
N | Turnovers, 1000 x turn/min | Real | Input | false | 0 |
V | Capacity, m3 | Real | Input | false | 7 |
Kpmp | Surge coefficient, surge point | Real | Input | false | 0.066 |
Kslp | Slope coefficient of the surge curve | Real | Input | false | 0.08 |
Q0 | Norm density of the environment, kg/m3 | Real | Input | false | 1 |
Kpr | Coefficient of the compressibility [0...1] | Real | Input | false | 0.95 |
Ct | Heat capacity of the environment | Real | Input | false | 100 |
Riz | Heat resistance of the isolation | Real | Input | false | 100 |
Fwind | Air speed | Real | Input | false | 1 |
Twind | Air temperature, K | Real | Input | false | 273 |
f_frq | Calculation frequency, Hz | Real | Input | true | 200 |
Fit | Input flow, lagged | Real | Output | true | 0 |
Program
Pmax = max(Pi, Po);
Pmin = min(Pi, Po);
Qr = Q0 + Q0*Kpr*(Pi-1);
Qrf = Q0 + Q0*Kpr*(Pmax-1);
Ftmp = (N > 0.1) ? (1-10*(Po-Pi)/(Qr*(pow(N,3)+0.1)*Kpmp)) : 1;
Kmrg = 1-Ftmp; //The margin coefficient
Fi = V*N*Qr*sign(Ftmp)*pow(abs(Ftmp),Kslp)+
0.3*(4*So*Qrf/(0.01*lo*1.7724+4*Qrf))*sign(Pi-Po)*pow(Qrf*(Pmax-max(Pmax*0.528,Pmin)),0.5);
Fit -= (Fit-Fi)/max(1,(lo*f_frq)/max(1e-4,abs(Fi/(Qrf*So))));
Po = max(0, min(100,Po+0.27*(Fi-Fo)/(Q0*Kpr*So*lo*f_frq)));
To += (abs(Fi)*(Ti*pow(Po/Pi,0.3)-To)+(Fwind+1)*(Twind-To)/Riz)/(Ct*(V+So*lo)*Qr*f_frq);
Source of the constant flow. Contains a parameter for connection the noise.
Parameters
Identifier | Parameter | Type | Mode | Hidden | Default |
---|---|---|---|---|---|
Fi | Input flow setpoint, ton/h | Real | Input | false | 10 |
Fo | Output flow, ton/h | Real | Input | false | 10 |
Po | Output pressure, at | Real | Output | false | 1 |
So | Output pipe cutset, m2 | Real | Input | false | 0.1 |
lo | Output pipe length, m | Real | Input | false | 100 |
Noise | Input flow's noise | Real | Input | false | 1 |
Q0 | Norm density of the environment, kg/m3 | Real | Input | false | 1 |
Kpr | Coefficient of the compressibility [0...1] | Real | Input | false | 0.95 |
f_frq | Calculation frequency, Hz | Real | Input | true | 100 |
Program
Po = max(0, min(100,Po+0.27*(Noise*Fi-Fo)/(Q0*Kpr*So*lo*f_frq)));
Implementation of the basic foundations of the pipe model:
Parameters
Identifier | Parameter | Type | Mode | Hidden | Default |
---|---|---|---|---|---|
Fi | Input flow, ton/h | Real | Output | false | 0 |
Pi | Input pressure, at | Real | Input | false | 1 |
Ti | Input temperature, K | Real | Input | false | 293 |
Si | Input cutset, m2 | Real | Input | false | 0.2 |
Fo | Output flow, ton/h | Real | Input | false | 0 |
Po | Output pressure, at | Real | Output | false | 1 |
To | Output temperature, K | Real | Output | false | 293 |
So | Output cutset, m2 | Real | Input | false | 0.2 |
lo | Output length, m | Real | Input | false | 10 |
Q0 | Norm density of the environment, kg/m3 | Real | Input | false | 1 |
Kpr | Coefficient of the compressibility [0...1] | Real | Input | false | 0.98 |
Ktr | Coefficient of friction | Real | Input | false | 0.01 |
f_frq | Calculation frequency, Hz | Real | Input | false | 100 |
Program
Pmax = max(Pi, Po);
Pmin = min(Pi, Po);
Qr = Q0 + Q0*Kpr*(Pmax-1);
Fit = 630*(4*Si*So*Qr/(Ktr*lo*1.7724*Si+4*So*Qr))*sign(Pi-Po)*pow(Qr*(Pmax-max(Pmax*0.528,Pmin)),0.5);
Fi -= (Fi-Fit)/max(1,(lo*f_frq)/max(1,abs(Fit/(Qr*So))));
if(!Fo.isEVal()) Po = max(0, min(100,Po+0.27*(Fi-Fo)/(Q0*Kpr*So*lo*f_frq)));
Model of the pipe by the scheme "1 -> 1".
Parameters
Identifier | Parameter | Type | Mode | Hidden | Default |
---|---|---|---|---|---|
Fi | Input flow, ton/h | Real | Output | false | 0 |
Pi | Input pressure, at | Real | Input | false | 1 |
Fo | Output flow, ton/h | Real | Input | false | 0 |
Po | Output pressure, at | Real | Output | false | 1 |
So | Output cutset, m2 | Real | Input | false | 0.2 |
lo | Output length, m | Real | Input | false | 10 |
Q0 | Norm density of the environment, kg/m3 | Real | Input | false | 1 |
Kpr | Coefficient of the compressibility [0...1] | Real | Input | false | 0.95 |
f_frq | Calculation frequency, Hz | Real | Input | true | 200 |
Pti | Pti | Real | Output | true | 1 |
Fto | Fto | Real | Output | true | 0 |
Pt1 | Pt1 | Real | Output | true | 1 |
Ft1 | Ft1 | Real | Output | true | 0 |
Program
DAQ.JavaLikeCalc.lib_techApp.pipeBase(Fi, Pi, 293, So, Ft1, Pti, 293, So, 0.33*lo, Q0, Kpr, 0.01, f_frq);
DAQ.JavaLikeCalc.lib_techApp.pipeBase(Ft1, Pti, 293, So, Fto, Pt1, 293, So, 0.33*lo, Q0, Kpr, 0.01, f_frq);
DAQ.JavaLikeCalc.lib_techApp.pipeBase(Fto, Pt1, 293, So, Fo, Po, 293, So, 0.33*lo, Q0, Kpr, 0.01, f_frq);
Model of the pipe by the scheme "2 -> 1".
Parameters
Identifier | Parameter | Type | Mode | Hidden | Default |
---|---|---|---|---|---|
Fi1 | Input 1 flow, ton/h | Real | Output | false | 0 |
Pi1 | Input 1 pressure, at | Real | Input | false | 1 |
Ti1 | Input 1 temperature, K | Real | Input | false | 273 |
Si1 | Input 1 cutset, m2 | Real | Input | false | 0.2 |
Fi2 | Input 2 flow, ton/h | Real | Output | false | 0 |
Pi2 | Input 2 pressure, at | Real | Input | false | 1 |
Ti2 | Input 2 temperature, K | Real | Input | false | 273 |
Si2 | Input 2 cutset, m2 | Real | Input | false | 0.2 |
Fo | Output flow, ton/h | Real | Input | false | 0 |
Po | Output pressure, at | Real | Output | false | 1 |
To | Output temperature, K | Real | Output | false | 273 |
So | Output cutset, m2 | Real | Input | false | 0.2 |
lo | Output length, m | Real | Input | false | 10 |
Q0 | Norm density of the environment, kg/m3 | Real | Input | false | 1 |
Kpr | Coefficient of the compressibility [0...1] | Real | Input | false | 0.95 |
Ct | Heat capacity of the environment | Real | Input | false | 20 |
Riz | Heat resistance of the isolation | Real | Input | false | 20 |
Fwind | Air speed | Real | Input | false | 1 |
Twind | Air temperature, К | Real | Input | false | 273 |
f_frq | Calculation frequency, Hz | Real | Input | true | 100 |
Program
DAQ.JavaLikeCalc.lib_techApp.pipeBase(Fi1, Pi1, 293, Si1, EVAL_REAL, Po, 293, So, lo, Q0, Kpr, 0.01, f_frq);
DAQ.JavaLikeCalc.lib_techApp.pipeBase(Fi2, Pi2, 293, Si2, EVAL_REAL, Po, 293, So, lo, Q0, Kpr, 0.01, f_frq);
Po = max(0, min(100,Po+0.27*(Fi1+Fi2-Fo)/(Q0*Kpr*So*lo*f_frq)));
To = max(0, To+(Fi1*(Ti1-To)+Fi2*(Ti2-To)+(Fwind+1)*(Twind-To)/Riz)/(Ct*So*lo*Q0*f_frq));
Model of the pipe by the scheme "3 -> 1".
Parameters
Identifier | Parameter | Type | Mode | Hidden | Default |
---|---|---|---|---|---|
Fi1 | Input 1 flow, ton/h | Real | Output | false | 0 |
Pi1 | Input 1 pressure, at | Real | Input | false | 1 |
Ti1 | Input 1 temperature, K | Real | Input | false | 273 |
Si1 | Input 1 cutset, m2 | Real | Input | false | 0.2 |
Fi2 | Input 2 flow, ton/h | Real | Output | false | 0 |
Pi2 | Input 2 pressure, at | Real | Input | false | 1 |
Ti2 | Input 2 temperature, K | Real | Input | false | 273 |
Si2 | Input 2 cutset, m2 | Real | Input | false | 0.2 |
Fi3 | Input 3 flow, ton/h | Real | Output | false | 0 |
Pi3 | Input 3 pressure, at | Real | Input | false | 1 |
Ti3 | Input 3 temperature, K | Real | Input | false | 273 |
Si3 | Input 3 cutset, m2 | Real | Input | false | 0.2 |
Fo | Output flow, ton/h | Real | Input | false | 0 |
Po | Output pressure, at | Real | Output | false | 1 |
To | Output temperature, K | Real | Output | false | 273 |
So | Output cutset, m2 | Real | Input | false | 0.2 |
lo | Output length, m | Real | Input | false | 10 |
Q0 | Norm density of the environment, kg/m3 | Real | Input | false | 1 |
Kpr | Coefficient of the compressibility [0...1] | Real | Input | false | 0.95 |
Ct | Heat capacity of the environment | Real | Input | false | 20 |
Riz | Heat resistance of the isolation | Real | Input | false | 20 |
Fwind | Air speed | Real | Input | false | 1 |
Twind | Air temperature, К | Real | Input | false | 273 |
f_frq | Calculation frequency, Hz | Real | Input | true | 100 |
Program
DAQ.JavaLikeCalc.lib_techApp.pipeBase(Fi1, Pi1, 293, Si1, EVAL_REAL, Po, 293, So, lo, Q0, Kpr, 0.01, f_frq);
DAQ.JavaLikeCalc.lib_techApp.pipeBase(Fi2, Pi2, 293, Si2, EVAL_REAL, Po, 293, So, lo, Q0, Kpr, 0.01, f_frq);
DAQ.JavaLikeCalc.lib_techApp.pipeBase(Fi3, Pi3, 293, Si3, EVAL_REAL, Po, 293, So, lo, Q0, Kpr, 0.01, f_frq);
Po = max(0, min(100,Po+0.27*(Fi1+Fi2+Fi3-Fo)/(Q0*Kpr*So*lo*f_frq)));
To = max(0, To+(Fi1*(Ti1-To)+Fi2*(Ti2-To)+Fi3*(Ti3-To)+(Fwind+1)*(Twind-To)/Riz)/(Ct*So*lo*Q0*f_frq));
Model of the pipe by the scheme "1 -> 2".
Parameters
Identifier | Parameter | Type | Mode | Hidden | Default |
---|---|---|---|---|---|
Fi | Input flow, ton/h | Real | Output | false | 0 |
Pi | Input pressure, at | Real | Input | false | 1 |
Fo1 | Output 1 flow, ton/h | Real | Input | false | 0 |
Po1 | Output 1 pressure, at | Real | Output | false | 1 |
So1 | Output 1 cutset, m2 | Real | Input | false | 0.2 |
lo1 | Output 1 length, m | Real | Input | false | 10 |
Fo2 | Output 2 flow, ton/h | Real | Input | false | 0 |
Po2 | Output 2 pressure, at | Real | Output | false | 1 |
So2 | Output 2 cutset, m2 | Real | Input | false | 0.2 |
lo2 | Output 2 length, m | Real | Input | false | 10 |
Q0 | Norm density of the environment, kg/m3 | Real | Input | false | 1 |
Kpr | Coefficient of the compressibility [0...1] | Real | Input | false | 0.95 |
f_frq | Calculation frequency, Hz | Real | Input | true | 100 |
F1tmp | Temporary flow 1 | Real | Output | true | 0 |
F2tmp | Temporary flow 2 | Real | Output | true | 0 |
Pot1 | Temporary pressure 1 | Real | Output | true | 1 |
Pot2 | Temporary pressure 2 | Real | Output | true | 1 |
Program
DAQ.JavaLikeCalc.lib_techApp.pipeBase(F1tmp, Pi, 293, So1, Fo1, Po1, 293, So1, lo1, Q0, Kpr, 0.01, f_frq);
DAQ.JavaLikeCalc.lib_techApp.pipeBase(F2tmp, Pi, 293, So2, Fo2, Po2, 293, So2, lo2, Q0, Kpr, 0.01, f_frq);
Fi = F1tmp + F2tmp;
Model of the pipe by the scheme "1 -> 3".
Parameters
Identifier | Parameter | Type | Mode | Hidden | Default |
---|---|---|---|---|---|
Fi | Input flow, ton/h | Real | Output | false | 0 |
Pi | Input pressure, at | Real | Input | false | 1 |
Fo1 | Output 1 flow, ton/h | Real | Input | false | 0 |
Po1 | Output 1 pressure, at | Real | Output | false | 1 |
So1 | Output 1 cutset, m2 | Real | Input | false | 0.2 |
lo1 | Output 1 length, m | Real | Input | false | 10 |
Fo2 | Output 2 flow, ton/h | Real | Input | false | 0 |
Po2 | Output 2 pressure, at | Real | Output | false | 1 |
So2 | Output 2 cutset, m2 | Real | Input | false | 0.2 |
lo2 | Output 2 length, m | Real | Input | false | 10 |
Fo3 | Output 3 flow, ton/h | Real | Input | false | 0 |
Po3 | Output 3 pressure, at | Real | Output | false | 1 |
So3 | Output 3 cutset, m2 | Real | Input | false | 0.2 |
lo3 | Output 3 length, m | Real | Input | false | 10 |
Q0 | Norm density of the environment, kg/m3 | Real | Input | false | 1 |
Kpr | Coefficient of the compressibility [0...1] | Real | Input | false | 0.95 |
f_frq | Calculation frequency, Hz | Real | Input | true | 100 |
F1tmp | Temporary flow 1 | Real | Output | true | 0 |
F2tmp | Temporary flow 2 | Real | Output | true | 0 |
F3tmp | Temporary flow 3 | Real | Output | true | 0 |
Pot1 | Temporary pressure 1 | Real | Output | true | 1 |
Pot2 | Temporary pressure 2 | Real | Output | true | 1 |
Pot3 | Temporary pressure 3 | Real | Output | true | 1 |
Program
DAQ.JavaLikeCalc.lib_techApp.pipeBase(F1tmp, Pi, 293, So1, Fo1, Po1, 293, So1, lo1, Q0, Kpr, 0.01, f_frq);
DAQ.JavaLikeCalc.lib_techApp.pipeBase(F2tmp, Pi, 293, So2, Fo2, Po2, 293, So2, lo2, Q0, Kpr, 0.01, f_frq);
DAQ.JavaLikeCalc.lib_techApp.pipeBase(F3tmp, Pi, 293, So3, Fo3, Po3, 293, So3, lo3, Q0, Kpr, 0.01, f_frq);
Fi = F1tmp + F2tmp + F3tmp;
Model of the pipe by the scheme "1 -> 4".
Parameters
Identifier | Parameter | Type | Mode | Hidden | Default |
---|---|---|---|---|---|
Fi | Input flow, ton/h | Real | Output | false | 0 |
Pi | Input pressure, at | Real | Input | false | 1 |
Fo1 | Output 1 flow, ton/h | Real | Input | false | 0 |
Po1 | Output 1 pressure, at | Real | Output | false | 1 |
So1 | Output 1 cutset, m2 | Real | Input | false | 0.2 |
lo1 | Output 1 length, m | Real | Input | false | 10 |
Fo2 | Output 2 flow, ton/h | Real | Input | false | 0 |
Po2 | Output 2 pressure, at | Real | Output | false | 1 |
So2 | Output 2 cutset, m2 | Real | Input | false | 0.2 |
lo2 | Output 2 length, m | Real | Input | false | 10 |
Fo3 | Output 3 flow, ton/h | Real | Input | false | 0 |
Po3 | Output 3 pressure, at | Real | Output | false | 1 |
So3 | Output 3 cutset, m2 | Real | Input | false | 0.2 |
lo3 | Output 3 length, m | Real | Input | false | 10 |
Fo4 | Output 4 flow, ton/h | Real | Input | false | 0 |
Po4 | Output 4 pressure, at | Real | Output | false | 1 |
So4 | Output 4 cutset, m2 | Real | Input | false | 0.2 |
lo4 | Output 4 length, m | Real | Input | false | 10 |
Q0 | Norm density of the environment, kg/m3 | Real | Input | false | 1 |
Kpr | Coefficient of the compressibility [0...1] | Real | Input | false | 0.95 |
f_frq | Calculation frequency, Hz | Real | Input | true | 100 |
F1tmp | Temporary flow 1 | Real | Output | true | 0 |
F2tmp | Temporary flow 2 | Real | Output | true | 0 |
F3tmp | Temporary flow 3 | Real | Output | true | 0 |
F4tmp | Temporary flow 4 | Real | Output | true | 0 |
Pot1 | Temporary pressure 1 | Real | Output | true | 1 |
Pot2 | Temporary pressure 2 | Real | Output | true | 1 |
Pot3 | Temporary pressure 3 | Real | Output | true | 1 |
Pot4 | Temporary pressure 4 | Real | Output | true | 1 |
Program
DAQ.JavaLikeCalc.lib_techApp.pipeBase(F1tmp, Pi, 293, So1, Fo1, Po1, 293, So1, lo1, Q0, Kpr, 0.01, f_frq);
DAQ.JavaLikeCalc.lib_techApp.pipeBase(F2tmp, Pi, 293, So2, Fo2, Po2, 293, So2, lo2, Q0, Kpr, 0.01, f_frq);
DAQ.JavaLikeCalc.lib_techApp.pipeBase(F3tmp, Pi, 293, So3, Fo3, Po3, 293, So3, lo3, Q0, Kpr, 0.01, f_frq);
DAQ.JavaLikeCalc.lib_techApp.pipeBase(F4tmp, Pi, 293, So4, Fo4, Po4, 293, So4, lo4, Q0, Kpr, 0.01, f_frq);
Fi = F1tmp + F2tmp + F3tmp + F4tmp;
Model of the valve processing mechanism. Includes the going and estrangement time.
Parameters
Identifier | Parameter | Type | Mode | Hidden | Default |
---|---|---|---|---|---|
pos | Position, % | Real | Output | false | 0 |
pos_sensor | Position by the sensor, % | Real | Output | false | 0 |
com | Command | Real | Input | false | 0 |
st_open | State "Opened" | Boolean | Output | false | 0 |
st_close | State "Closed" | Boolean | Output | false | 1 |
t_full | Going time, seconds | Real | Input | false | 3 |
t_up | Estrangement time, seconds | Real | Input | false | 1 |
t_sensor | Sensor lag time, seconds | Real | Input | false | 1 |
f_frq | Calculation frequency, Hz | Real | Input | true | 100 |
tmp_up | Estrangement count | Real | Output | false | 0 |
lst_com | Last command | Real | Output | false | 0 |
Program
if((pos >= 99 && com >= 99) || (pos <= 1 && com <= 1)) {
tmp_up = t_up;
if(pos >= 99) { pos = 100; st_open = true; }
else { pos = 0; st_close = true; }
}
else if(tmp_up > 0) tmp_up -= 1/f_frq;
else {
st_open = st_close = false;
lst_com += (com-lst_com)/(0.5*t_full*f_frq);
pos += (lst_com-pos)/(0.5*t_full*f_frq);
}
pos_sensor += (pos-pos_sensor)/(t_sensor*f_frq);
Diaphragm model.
Parameters
Identifier | Parameter | Type | Mode | Hidden | Default |
---|---|---|---|---|---|
Fi | Input flow, ton/h | Real | Output | false | 0 |
Pi | Input pressure, at | Real | Input | false | 1 |
Fo | Output flow, ton/h | Real | Input | false | 0 |
Po | Output pressure, at | Real | Output | false | 1 |
dP | Pressure differential, kPa | Real | Output | false | 0 |
Sdf | Diaphragm cutset, m2 | Real | Input | false | 0.1 |
So | Output pipe cutset, m2 | Real | Input | false | 0.2 |
lo | Output pipe length, m | Real | Input | false | 10 |
Q0 | Norm density of the environment, kg/m3 | Real | Input | false | 1 |
Kpr | Coefficient of the compressibility [0...1] | Real | Input | false | 0.95 |
f_frq | Calculation frequency, Hz | Real | Input | true | 100 |
Program
DAQ.JavaLikeCalc.lib_techApp.pipeBase(Fi, Pi, 293, Sdf, Fo, Po, 293, So, lo, Q0, Kpr, 0.01, f_frq);
dP -= (dP-100*(Pi-Po))/f_frq;
Model of the heat exchanger, calculating the heat exchange of the two streams.
Parameters
Identifier | Parameter | Type | Mode | Hidden | Default |
---|---|---|---|---|---|
Fi1 | Input 1 flow, ton/h | Real | Input | false | 20 |
Pi1 | Input 1 pressure, at | Real | Input | false | 1 |
Ti1 | Input 1 temperature, K | Real | Input | false | 20 |
Si1 | Input 1 cutset, m2 | Real | Input | false | 1 |
li1 | Input 1 length, m | Real | Input | false | 10 |
Q0i1 | Input 1 norm density, kg/m3 | Real | Input | false | 1 |
Kpr1 | Input 1 coefficient of the compressibility [0...1] | Real | Input | false | 0.9 |
Ci1 | Input 1 heat capacity | Real | Input | false | 1 |
Fi2 | Input 2 flow, ton/h | Real | Input | false | 20 |
Pi2 | Input 2 pressure, at | Real | Input | false | 1 |
Ti2 | Input 2 temperature, K | Real | Input | false | 40 |
Si2 | Input 2 cutset, m2 | Real | Input | false | 1 |
li2 | Input 2 length, m | Real | Input | false | 10 |
Q0i2 | Input 2 norm density, kg/m3 | Real | Input | false | 1 |
Kpr2 | Input 2 coefficient of the compressibility [0...1] | Real | Input | false | 0.9 |
Ci2 | Input 2 heat capacity | Real | Input | false | 1 |
ki | Heat transfer coefficient | Real | Input | false | 0.9 |
Fo1 | Output 1 flow, ton/h | Real | Input | false | 0 |
Po1 | Output 1 pressure, at | Real | Output | false | 1 |
To1 | Output 1 temperature, K | Real | Output | false | 273 |
So1 | Output 1 cutset, m2 | Real | Output | false | 1 |
lo1 | Output 1 length, m | Real | Output | false | 10 |
Fo2 | Output 2 flow, ton/h | Real | Input | false | 0 |
Po2 | Output 2 pressure, at | Real | Output | false | 1 |
To2 | Output 2 temperature, K | Real | Output | false | 273 |
So2 | Output 2 cutset, m2 | Real | Output | false | 1 |
lo2 | Output 2 length, m | Real | Output | false | 10 |
f_frq | Calculation frequency, Hz | Real | Input | false | 200 |
Program
DAQ.JavaLikeCalc.lib_techApp.pipeBase(Fi1, Pi1, Ti1, Si1, Fo1, Po1, 293, So1, lo1, Q0i1, Kpr1, 0.01, f_frq);
DAQ.JavaLikeCalc.lib_techApp.pipeBase(Fi2, Pi2, Ti2, Si2, Fo2, Po2, 293, So2, lo2, Q0i2, Kpr2, 0.01, f_frq);
To1 = max(0, min(1e4,(Fi1*Ti1*Ci1+ki*Fi2*Ti2*Ci2)/(Fi1*Ci1+ki*Fi2*Ci2)));
To2 = max(0, min(1e4,(ki*Fi1*Ti1*Ci1+Fi2*Ti2*Ci2)/(ki*Fi1*Ci1+Fi2*Ci2)));
Libs/Technological_apparatuses/en - GFDL | March 2024 | OpenSCADA 0.9.7 |