| Name | Description |
|---|---|
| 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 |
| Type | Name | Default | Description |
|---|---|---|---|
| Boolean | isState[6] |
| Type | Name | Description |
|---|---|---|
| InPort | Iparam | |
| InPort | Istate | |
| OutPort | O |
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;
| Type | Name | Default | Description |
|---|---|---|---|
| Boolean | isState[6] |
| Type | Name | Description |
|---|---|---|
| InPort | Iparam | |
| InPort | Istate | |
| OutPort | O |
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;
| Type | Name | Default | Description |
|---|---|---|---|
| Boolean | isState[6] |
| Type | Name | Description |
|---|---|---|
| InPort | Iparam | |
| InPort | Istate | |
| OutPort | O |
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;
| Type | Name | Default | Description |
|---|---|---|---|
| Boolean | isState[6] |
| Type | Name | Description |
|---|---|---|
| InPort | Iparam | |
| InPort | Istate | |
| OutPort | O |
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;
| Type | Name | Description |
|---|---|---|
| InPort | Iparam | |
| InPort | Istate | |
| InPort | CK | |
| InPort | Enabled | |
| OutPort | O | |
| OutPort | Release |
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;