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;