JARA2i.CaseStudies.Boiler.Ejs

Modelica model of the industrial boiler to be used in a virtual lab implemented in combination with Ejs and Matlab/Simulink

Information


 

Modelica model of the industrial boiler to be used in a virtual lab implemented in combination with Ejs and Matlab/Simulink

The implementation of the boiler virtual-lab by combining Ejs, Matlab/Simulink and Modelica/Dymola is discussed in (Martin, Urquia and Dormido 2004), (Martin, Urquia and Dormido 2005) and (Martin, Urquia and Dormido 2005b).

References

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).


Package Content

NameDescription
steamPowerBoilerInteractive Industrial boiler interactive model


JARA2i.CaseStudies.Boiler.Ejs.steamPowerBoilerInteractive

Industrial boiler interactive model

JARA2i.CaseStudies.Boiler.Ejs.steamPowerBoilerInteractive

Parameters

TypeNameDefaultDescription
BooleanEjstrueGlobal variable - Runtime interactiviy
BooleanSysquakefalseGlobal variable - Batch interactivity
RealperfGasConst8.31Constant of the perfect gases [J/(mol*K)]
RealCpCoefML[1, 7][4.18E3, 0, 0, 0, 0, 0, 0]Heat capacity per mass unit of the liquid. [Cp]: J/(Kg*K)
RealCpCoefNG[1, 7][55.486, 54.24E-3, 0, 0, 0, ...Molar heat capacity, at constant pressure, of the vapor. [Cp]:J/(mol*K)
RealmolecWeigth[:]{18E-3}Molecular weigth of the water [Kg/mol]
Realdensity[:]{1E3}Density of liquid water [Kg/m3]
RealmolEnthalpyGRef[:]{-241.8322E3}Reference molar enthalpy of the vapor [J/mol]
RealmassEnthalpyLRef[:]{-15.88E6}Reference enthalpy per mass unit of the liquid [J/Kg]
RealtempRef298Enthalpy reference temperature [K]
RealKprop10Parameter of the boiling model [Kg/(s*K)]
RealKvalve(1.1E-7/molecWeigth[1])Valve coefficient [mol/(s*N/m**2)]
RealpressDownStreamInitial1.14E6Output pressure [N/m**2]
RealtempDownStreamInitial294Output temperature [K]
RealsectionInitial1Boiler cross-section [m2]
RealvesselVolumeInitial5.66Boiler volume [m3]
RealmolVaporInitial[:]{1200}[mol]
RealtempVaporInitial700[K]
RealmassWaterInitial[:]{2840}[Kg]
RealtempWaterInitial294[K]

Modelica definition

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;

HTML-documentation generated by Dymola Tue Jul 24 19:07:58 2007.