Martin, C. and A. Urquia and S. Dormido (2004): JARA 2i - A Modelica Library for Interactive Simulation of Physical-Chemical Processes Proceedings of the 18th European Simulation and Modelling Conference, 128-132.
Martin, C. and A. Urquia and S. Dormido (2005): Object-Oriented Modeling of Virtual Laboratories for Control Education. Proceedings of the 16th IFAC World Congress, paper code: Th-A22-TO/2.
Martin, C. and A. Urquia and S. Dormido (2005b): Modelado Orientado a Objetos de Laboratorios Virtuales con Aplicación a la Enseñanza de Control de Procesos Químicos. Proceedings of the 1st Congreso Español de Informática (CEDI-EIWISA).
| Name | Description |
|---|---|
| steamPowerBoilerInteractive | Industrial boiler interactive model |
| Type | Name | Default | Description |
|---|---|---|---|
| Boolean | Ejs | true | Global variable - Runtime interactiviy |
| Boolean | Sysquake | false | Global variable - Batch interactivity |
| Real | perfGasConst | 8.31 | Constant of the perfect gases [J/(mol*K)] |
| Real | CpCoefML[1, 7] | [4.18E3, 0, 0, 0, 0, 0, 0] | Heat capacity per mass unit of the liquid. [Cp]: J/(Kg*K) |
| Real | CpCoefNG[1, 7] | [55.486, 54.24E-3, 0, 0, 0, ... | Molar heat capacity, at constant pressure, of the vapor. [Cp]:J/(mol*K) |
| Real | molecWeigth[:] | {18E-3} | Molecular weigth of the water [Kg/mol] |
| Real | density[:] | {1E3} | Density of liquid water [Kg/m3] |
| Real | molEnthalpyGRef[:] | {-241.8322E3} | Reference molar enthalpy of the vapor [J/mol] |
| Real | massEnthalpyLRef[:] | {-15.88E6} | Reference enthalpy per mass unit of the liquid [J/Kg] |
| Real | tempRef | 298 | Enthalpy reference temperature [K] |
| Real | Kprop | 10 | Parameter of the boiling model [Kg/(s*K)] |
| Real | Kvalve | (1.1E-7/molecWeigth[1]) | Valve coefficient [mol/(s*N/m**2)] |
| Real | pressDownStreamInitial | 1.14E6 | Output pressure [N/m**2] |
| Real | tempDownStreamInitial | 294 | Output temperature [K] |
| Real | sectionInitial | 1 | Boiler cross-section [m2] |
| Real | vesselVolumeInitial | 5.66 | Boiler volume [m3] |
| Real | molVaporInitial[:] | {1200} | [mol] |
| Real | tempVaporInitial | 700 | [K] |
| Real | massWaterInitial[:] | {2840} | [Kg] |
| Real | tempWaterInitial | 294 | [K] |
model steamPowerBoilerInteractive
"Industrial boiler interactive model"
// Physical model
extends PhysicalModel.steamPowerBoiler;
// Interactivity
inner parameter Boolean Ejs = true;
inner parameter Boolean Sysquake = false;
// Interface
input Real Iparam;
input Real Ivar[6];
input Real Istate[4];
input Real CKparam;
input Real CKvar;
input Real CKstate;
output Real O[25];
output Real Release;
protected
Boolean CKparamIs0( start = true, fixed=true);
Boolean CKvarIs0( start = true, fixed=true);
Boolean CKstateIs0( start = true, fixed=true);
equation
// Model release
// -------------
{Release} = {9.0};
// Interactive change of the parameters
// ------------------------------------
when CKparam > 0.5 and pre(CKparamIs0) or CKparam
< 0.5 and not pre(CKparamIs0) then
CKparamIs0 =CKparam < 0.5;
reinit(vessel.vesselVolume,Iparam);
end when;
// Interactive change of the input variables
// -----------------------------------------
when CKvar > 0.5 and pre(CKvarIs0) or CKvar
< 0.5 and not pre(CKvarIs0) then
CKvarIs0 =CKvar < 0.5;
reinit(outValvePress.pressG,Ivar[1]);
reinit(outValvePress.tempG,Ivar[2]);
reinit(sourceLiqCtrl.flowVSP, -Ivar[3]); // Possitive: liquid flow into the boiler
reinit(sourceLiqCtrl.tempSP,Ivar[4]);
reinit(heatSourceCntrl.heatFlowSP, Ivar[5]); // Possitive: heat flow into the boiler
reinit(valveG.valveOpening,Ivar[6]);
end when;
// Interactive change of the state variables
// -----------------------------------------
when CKstate > 0.5 and pre(CKstateIs0) or CKstate
< 0.5 and not pre(CKstateIs0) then
CKstateIs0 =CKstate < 0.5;
reinit(vapor.molG[1],Istate[1]);
reinit(vapor.tempG,Istate[2]);
reinit(water.massL[1],Istate[3]);
reinit(water.tempL,Istate[4]);
end when;
// Output variables
// ----------------
O = {
vapor.molG[1], vapor.tempG, vapor.inMol.pressG, vapor.fluidV,
water.massL[1], water.tempL, water.inMassBot.pressL, water.fluidV,
vessel.vesselVolume,
boil.tempBoiling, boil.totalMassF, boil.totalMolF, boil.tempF, boil.massHeatPhaseChg,
-heatSource.inHeat.heatF,
-heatSourceCntrl.heatFlowSP,
valveG.totalMolF, valveG.inHeat.tempF,
outValvePress.pressG,outValvePress.tempG,
-liqSource.totalMassF,-liqSource.totalMassFSP,liqSource.tempF,
-sourceLiqCtrl.flowVSP,sourceLiqCtrl.tempSP};
end steamPowerBoilerInteractive;