tankProcessLAB.caseStudies.threeTanks

Three-tank Process

Information



Three-tank Process



Package Content

NameDescription
physicalModel Physical model
setParams Model including the when required to change the value of the interactive parameters and input variables
StateSelection1 State variables: liquid level
StateSelection2 State variables: liquid volume
interactiveModel Interactive model


tankProcessLAB.caseStudies.threeTanks.physicalModel

Physical model

tankProcessLAB.caseStudies.threeTanks.physicalModel

Parameters

TypeNameDefaultDescription
BooleanisState[6]  

Connectors

TypeNameDescription
InPortIparam 
InPortIstate 
OutPortO 

Modelica definition

model physicalModel "Physical model" 
  
  Boolean triggerInter=CK > 0.5;
  Real CK;
  
  Modelica.Blocks.Interfaces.InPort Iparam(n=22);
  Modelica.Blocks.Interfaces.InPort Istate(n=6);
  Modelica.Blocks.Interfaces.OutPort O(n=13);
  parameter Boolean[6] isState;
  
  componentsLIB.tank2Ouputs tank1( hIsState=isState[1], volumeIsState=isState[4]);
  componentsLIB.tank2Ouputs tank3( hIsState=isState[3], volumeIsState=isState[6]);
  componentsLIB.tank2Ouputs tank2( hIsState=isState[2], volumeIsState=isState[5]);
  
  componentsLIB.valve valve13;
  componentsLIB.valve valve23;
  
  componentsLIB.valve valve2;
  componentsLIB.valve valve1;
  
  componentsLIB.flowSource flowSource1;
  componentsLIB.flowSource flowSource2;
  
  componentsLIB.valve valveL1;
  componentsLIB.valve valveN3;
  componentsLIB.valve valveN2;
  
  componentsLIB.sink sink1;
  
equation 
  connect(flowSource1.port, tank1.portTop);
  connect(tank1.portBottom, valveL1.portP);
  connect(valveL1.portN, valveN3.portN);
  connect(valveN2.portN, valveN3.portN);
  connect(valveN3.portN, sink1.port);
  connect(tank2.portBottom, valveN2.portP);
  connect(tank3.portBottom, valveN3.portP);
  connect(valve23.portN, tank3.portBottom);
  connect(tank2.portBottom, valve23.portP);
  connect(valve13.portN, tank3.portBottom);
  connect(tank1.portBottom, valve13.portP);
  connect(flowSource2.port, tank2.portTop);
  connect(valve2.portP, tank2.portMiddle);
  connect(tank3.portMiddle, valve2.portN);
  connect(tank1.portMiddle, valve1.portP);
  connect(valve1.portN, tank3.portMiddle);
  
  O.signal = {tank1.h,tank2.h,tank3.h,
              tank1.volume,tank2.volume,tank3.volume,
              valve1.F,valve2.F,valve13.F,valve23.F,valveL1.F,valveN3.F,valveN2.F};
  
end physicalModel;

tankProcessLAB.caseStudies.threeTanks.setParams

Model including the when required to change the value of the interactive parameters and input variables

tankProcessLAB.caseStudies.threeTanks.setParams

Parameters

TypeNameDefaultDescription
BooleanisState[6]  

Connectors

TypeNameDescription
InPortIparam 
InPortIstate 
OutPortO 

Modelica definition

model setParams 
  "Model including the when required to change the value of the interactive parameters and input variables" 
  extends physicalModel;
equation 
  when triggerInter then
    reinit(flowSource1.flowSetPoint, Iparam.signal[1]);
    reinit(flowSource2.flowSetPoint, Iparam.signal[2]);
    
    reinit(tank1.tankSection, Iparam.signal[3]);
    reinit(tank2.tankSection, Iparam.signal[4]);
    reinit(tank3.tankSection, Iparam.signal[5]);
    
    reinit(tank1.hPortMiddle, Iparam.signal[6]);
    reinit(tank2.hPortMiddle, Iparam.signal[7]);
    reinit(tank3.hPortMiddle, Iparam.signal[8]);
    
    reinit(valve1.K, Iparam.signal[9]);
    reinit(valve1.S, Iparam.signal[10]);
    
    reinit(valve2.K, Iparam.signal[11]);
    reinit(valve2.S, Iparam.signal[12]);
    
    reinit(valve13.K, Iparam.signal[13]);
    reinit(valve13.S, Iparam.signal[14]);
    
    reinit(valve23.K, Iparam.signal[15]);
    reinit(valve23.S, Iparam.signal[16]);
    
    reinit(valveL1.K, Iparam.signal[17]);
    reinit(valveL1.S, Iparam.signal[18]);
    
    reinit(valveN2.K, Iparam.signal[19]);
    reinit(valveN2.S, Iparam.signal[20]);
    
    reinit(valveN3.K, Iparam.signal[21]);
    reinit(valveN3.S, Iparam.signal[22]);
  end when;
end setParams;

tankProcessLAB.caseStudies.threeTanks.StateSelection1

State variables: liquid level

tankProcessLAB.caseStudies.threeTanks.StateSelection1

Parameters

TypeNameDefaultDescription
BooleanisState[6]  

Connectors

TypeNameDescription
InPortIparam 
InPortIstate 
OutPortO 

Modelica definition

model StateSelection1 "State variables: liquid level" 
  extends setParams(isState={true,true,true,false,false,false});
equation 
  when triggerInter then
    reinit(tank1.h, Istate.signal[1]);
    reinit(tank2.h, Istate.signal[2]);
    reinit(tank3.h, Istate.signal[3]);
  end when;
end StateSelection1;

tankProcessLAB.caseStudies.threeTanks.StateSelection2

State variables: liquid volume

tankProcessLAB.caseStudies.threeTanks.StateSelection2

Parameters

TypeNameDefaultDescription
BooleanisState[6]  

Connectors

TypeNameDescription
InPortIparam 
InPortIstate 
OutPortO 

Modelica definition

model StateSelection2 "State variables: liquid volume" 
  extends setParams(isState={false,false,false,true,true,true});
equation 
  when triggerInter then
    reinit(tank1.volume, Istate.signal[4]);
    reinit(tank2.volume, Istate.signal[5]);
    reinit(tank3.volume, Istate.signal[6]);
  end when;
end StateSelection2;

tankProcessLAB.caseStudies.threeTanks.interactiveModel

Interactive model

Connectors

TypeNameDescription
InPortIparam 
InPortIstate 
InPortCK 
InPortEnabled 
OutPortO 
OutPortRelease 

Modelica definition

model interactiveModel "Interactive model" 
  Modelica.Blocks.Interfaces.InPort Iparam(n=22);
  Modelica.Blocks.Interfaces.InPort Istate(n=6);
  Modelica.Blocks.Interfaces.InPort CK(n=2);
  Modelica.Blocks.Interfaces.InPort Enabled(n=2);
  Modelica.Blocks.Interfaces.OutPort O(n=13);
  Modelica.Blocks.Interfaces.OutPort Release(n=1);
  
  StateSelection1 SS1(CK=CK.signal[1]);
  StateSelection2 SS2(CK=CK.signal[2]);
equation 
  connect(Iparam, SS1.Iparam);
  connect(Istate, SS1.Istate);
  connect(Iparam, SS2.Iparam);
  connect(Istate, SS2.Istate);
  
  Release.signal = { 1.0};
  
  O.signal = if Enabled.signal[1] > 0.5 then 
                  SS1.O.signal else 
                  if Enabled.signal[2] > 0.5 then 
                       SS2.O.signal else 
                       zeros(size(O.signal, 1));
  
end interactiveModel;

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