Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Issue1926 actuator travel #1933

Merged
merged 33 commits into from
Oct 8, 2024
Merged
Show file tree
Hide file tree
Changes from 15 commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
0cf9ba3
Moved changed from Buildings
mwetter Aug 28, 2024
a1121d6
Updated comments
mwetter Aug 28, 2024
6030bf8
Reverted change in obsolete file
mwetter Aug 28, 2024
11def03
Merge branch 'master' into issue1926_actuatorTravel
mwetter Sep 10, 2024
73d5379
Changed parameter names [ci skip]
mwetter Sep 10, 2024
fcc7fbf
Deleted old connections [ci skip]
mwetter Sep 10, 2024
2a9b2a8
Updated parameter names [ci skip]
mwetter Sep 10, 2024
d65df88
Added scaling for movers with prescribed head or flow [ci skip]
mwetter Sep 10, 2024
74ea37e
Updated parameter names [ci skip]
mwetter Sep 10, 2024
a1d2289
Updated user guide
mwetter Sep 11, 2024
fbf217c
Updated reference results
mwetter Sep 11, 2024
6a3d7e9
Updated figure for user guide
mwetter Sep 11, 2024
b37561c
Corrected comment
mwetter Sep 11, 2024
fe55b1b
Merge branch 'issue1930_dymola2025x' into issue1926_actuatorTravel
mwetter Sep 12, 2024
b327cda
Updated conversion script
mwetter Sep 12, 2024
1ac4b55
Corrected assignment of time constant for SlewRateLimiter
mwetter Sep 19, 2024
6f50477
Updated reference results for new parameterization of SlewRateLimiter
mwetter Sep 19, 2024
fb0e27e
Merge branch 'master' into issue1926_actuatorTravel
mwetter Sep 20, 2024
a1aeb95
Updated link in revision notes
mwetter Sep 20, 2024
843fa95
Changed formatting
mwetter Sep 20, 2024
007cd61
Corrected white space
mwetter Sep 20, 2024
4930cf9
Changed comment
mwetter Sep 20, 2024
27c8c85
Remove abundant whitespace in revision history
jelgerjansen Sep 23, 2024
a92473e
Corrected documentation and reversed wrong replacement in revision notes
mwetter Sep 23, 2024
46254a9
Corrected formatting
mwetter Sep 23, 2024
6a9e6e6
Updated comment
mwetter Sep 23, 2024
4c75ac8
Removed empty line
mwetter Sep 23, 2024
a37341d
Corrected format
mwetter Sep 23, 2024
15014a5
Corrected format
mwetter Sep 23, 2024
5cd1ac6
Corrected formatting
mwetter Sep 23, 2024
2ffe01c
Corrected formatting
mwetter Sep 23, 2024
8cc71e9
Changed formatting
mwetter Sep 23, 2024
7916773
Changed sensor name in examples and validations
mwetter Sep 23, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions IBPSA/Examples/SimpleHouse.mo
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ model SimpleHouse

Fluid.Movers.FlowControlled_m_flow pum(
redeclare package Medium = MediumWater,
use_inputFilter=false,
use_riseTime=false,
m_flow_nominal=mWat_flow_nominal,
energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState,
allowFlowReversal=allowFlowReversal,
Expand All @@ -109,7 +109,7 @@ model SimpleHouse
Fluid.Movers.FlowControlled_dp fan(
redeclare package Medium = MediumAir,
dp_nominal=dpAir_nominal,
use_inputFilter=false,
use_riseTime=false,
energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState,
nominalValuesDefineDefaultPressureCurve=true,
m_flow_nominal=mAir_flow_nominal,
Expand Down
2 changes: 1 addition & 1 deletion IBPSA/Examples/Tutorial/SimpleHouse/SimpleHouse4.mo
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ model SimpleHouse4 "Heating model"

Fluid.Movers.Preconfigured.FlowControlled_m_flow pum(
redeclare package Medium = MediumWater,
use_inputFilter=false,
use_riseTime=false,
m_flow_nominal=mWat_flow_nominal,
energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState,
allowFlowReversal=false) "Pump"
Expand Down
8 changes: 3 additions & 5 deletions IBPSA/Examples/Tutorial/SimpleHouse/SimpleHouse6.mo
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,10 @@ model SimpleHouse6 "Free cooling model"
redeclare package Medium = MediumAir,
show_T=true,
dp_nominal=dpAir_nominal,
use_inputFilter=false,
use_riseTime=false,
energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState,
m_flow_nominal=mAir_flow_nominal)
"Constant head fan" annotation (Placement(transformation(
extent={{-10,10},{10,-10}},
origin={0,130})));
m_flow_nominal=mAir_flow_nominal) "Constant head fan" annotation (Placement(
transformation(extent={{-10,10},{10,-10}}, origin={0,130})));

IBPSA.Fluid.HeatExchangers.ConstantEffectiveness hexRec(
redeclare package Medium1 = MediumAir,
Expand Down
74 changes: 40 additions & 34 deletions IBPSA/Fluid/Actuators/BaseClasses/ActuatorSignal.mo
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,23 @@ within IBPSA.Fluid.Actuators.BaseClasses;
model ActuatorSignal
"Partial model that implements the filtered opening for valves and dampers"

constant Integer order(min=1) = 2 "Order of filter";
parameter Boolean use_strokeTime=true
"Set to true to continuously open and close valve using strokeTime"
annotation(Dialog(tab="Dynamics", group="Actuator position"));

parameter Boolean use_inputFilter=true
"= true, if opening is filtered with a 2nd order CriticalDamping filter"
annotation(Dialog(tab="Dynamics", group="Filtered opening"));
parameter Modelica.Units.SI.Time riseTime=120
"Rise time of the filter (time to reach 99.6 % of an opening step)"
parameter Modelica.Units.SI.Time strokeTime=120
"Time needed to open or close valve"
jelgerjansen marked this conversation as resolved.
Show resolved Hide resolved
annotation (Dialog(
tab="Dynamics",
group="Filtered opening",
enable=use_inputFilter));
group="Actuator position",
enable=use_strokeTime));
parameter Modelica.Blocks.Types.Init init=Modelica.Blocks.Types.Init.InitialOutput
"Type of initialization (no init/steady state/initial state/initial output)"
annotation(Dialog(tab="Dynamics", group="Filtered opening",enable=use_inputFilter));
annotation(Dialog(tab="Dynamics", group="Actuator position",
enable=use_strokeTime));
parameter Real y_start=1 "Initial position of actuator"
annotation(Dialog(tab="Dynamics", group="Filtered opening",enable=use_inputFilter));
annotation(Dialog(tab="Dynamics", group="Actuator position",
enable=use_strokeTime));

Modelica.Blocks.Interfaces.RealInput y(min=0, max=1)
"Actuator position (0: closed, 1: open)"
Expand All @@ -33,37 +34,36 @@ model ActuatorSignal
annotation (Placement(transformation(extent={{40,60},{60,80}})));

// Classes used to implement the filtered opening
protected
final parameter Modelica.Units.SI.Frequency fCut=5/(2*Modelica.Constants.pi*
riseTime) "Cut-off frequency of filter";

protected
parameter Boolean casePreInd = false
"In case of PressureIndependent the model I/O is modified"
annotation(Evaluate=true);
Modelica.Blocks.Interfaces.RealOutput y_internal(unit="1")
"Output connector for internal use (= y_actual if not casePreInd)";
Modelica.Blocks.Interfaces.RealOutput y_filtered if use_inputFilter
Modelica.Blocks.Interfaces.RealOutput y_filtered if use_strokeTime
"Filtered valve position in the range 0..1"
annotation (Placement(transformation(extent={{40,78},{60,98}}),
iconTransformation(extent={{60,50},{80,70}})));

IBPSA.Fluid.BaseClasses.ActuatorFilter filter(
jelgerjansen marked this conversation as resolved.
Show resolved Hide resolved
final n=order,
final f=fCut,
final normalized=true,
final initType=init,
final y_start=y_start) if use_inputFilter
"Second order filter to approximate actuator opening time, and to improve numerics"
annotation (Placement(transformation(extent={{6,81},{20,95}})));

Modelica.Blocks.Nonlinear.SlewRateLimiter actPos(
Rising=1/strokeTime,
Falling=-1/strokeTime,
Td=10/strokeTime,
jelgerjansen marked this conversation as resolved.
Show resolved Hide resolved
initType=init,
y_start=y_start,
strict=true) if use_strokeTime "Actuator position"
annotation (Placement(transformation(extent={{14,82},{26,94}})));
equation
connect(filter.y, y_filtered)
annotation (Line(points={{20.7,88},{50,88}}, color={0,0,127}));
if use_inputFilter then
connect(y, filter.u) annotation (Line(points={{1.11022e-15,120},{1.11022e-15,
88},{4.6,88}}, color={0,0,127}));
connect(filter.y, y_internal) annotation (Line(points={{20.7,88},{30,88},{30,
70},{50,70}}, color={0,0,127}));
connect(actPos.y, y_filtered)
annotation (Line(points={{26.6,88},{50,88}},
color={0,0,127}));

if use_strokeTime then
connect(actPos.u, y)
annotation (Line(points={{12.8,88},{0,88},{0,120}}, color={0,0,127}));

connect(y_filtered, y_internal);
else
connect(y, y_internal) annotation (Line(
points={{1.11022e-15,120},{0,120},{0,70},{50,70}},
Expand All @@ -72,26 +72,27 @@ equation
if not casePreInd then
connect(y_internal, y_actual);
end if;

annotation (Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,
-100},{100,100}}), graphics={
Line(
points={{0,48},{0,108}}),
Line(
points={{0,70},{40,70}}),
Rectangle(
visible=use_inputFilter,
visible=use_strokeTime,
extent={{-32,40},{34,100}},
lineColor={0,0,0},
fillColor={135,135,135},
fillPattern=FillPattern.Solid),
Ellipse(
visible=use_inputFilter,
visible=use_strokeTime,
extent={{-32,100},{34,40}},
lineColor={0,0,0},
fillColor={135,135,135},
fillPattern=FillPattern.Solid),
Text(
visible=use_inputFilter,
visible=use_strokeTime,
extent={{-20,94},{22,48}},
textColor={0,0,0},
fillColor={135,135,135},
Expand Down Expand Up @@ -119,6 +120,11 @@ for a description of the filter.
</html>", revisions="<html>
<ul>
<li>
August 26, 2024, by Michael Wetter:<br/>
Implemented linear actuator travel dynamics.<br/>
This is for <a href=\"https://github.com/lbl-srg/modelica-buildings/issues/3965\">Buildings, #3965</a>.
jelgerjansen marked this conversation as resolved.
Show resolved Hide resolved
</li>
<li>
June 10, 2021, by Michael Wetter:<br/>
Changed implementation of the filter and changed the parameter <code>order</code> to a constant
as most users need not change this value.<br/>
Expand Down Expand Up @@ -157,7 +163,7 @@ This is for
</li>
<li>
March 24, 2017, by Michael Wetter:<br/>
Renamed <code>filteredInput</code> to <code>use_inputFilter</code>.<br/>
Renamed <code>filteredInput</code> to <code>use_strokeTime</code>.<br/>
jelgerjansen marked this conversation as resolved.
Show resolved Hide resolved
This is for
<a href=\"https://github.com/ibpsa/modelica-ibpsa/issues/665\">#665</a>.
</li>
Expand Down
65 changes: 31 additions & 34 deletions IBPSA/Fluid/Actuators/BaseClasses/PartialThreeWayValve.mo
Original file line number Diff line number Diff line change
@@ -1,36 +1,33 @@
within IBPSA.Fluid.Actuators.BaseClasses;
partial model PartialThreeWayValve "Partial three way valve"
extends IBPSA.Fluid.BaseClasses.PartialThreeWayResistance(
m_flow_small = m_flow_nominal*1e-4,
final mDyn_flow_nominal = m_flow_nominal,
redeclare replaceable
IBPSA.Fluid.Actuators.BaseClasses.PartialTwoWayValve res1
constrainedby IBPSA.Fluid.Actuators.BaseClasses.PartialTwoWayValve(
deltaM=deltaM,
from_dp=from_dp,
final linearized=linearized[1],
final homotopyInitialization=homotopyInitialization,
final CvData=IBPSA.Fluid.Types.CvTypes.OpPoint,
final m_flow_nominal=m_flow_nominal,
final dpValve_nominal=dpValve_nominal,
final dpFixed_nominal=dpFixed_nominal[1],
final use_inputFilter=false,
final riseTime=riseTime),
redeclare FixedResistances.LosslessPipe res2(
m_flow_nominal=m_flow_nominal),
redeclare replaceable
IBPSA.Fluid.Actuators.BaseClasses.PartialTwoWayValve res3
constrainedby IBPSA.Fluid.Actuators.BaseClasses.PartialTwoWayValve(
deltaM=deltaM,
from_dp=from_dp,
final linearized=linearized[2],
final homotopyInitialization=homotopyInitialization,
final CvData=IBPSA.Fluid.Types.CvTypes.OpPoint,
final m_flow_nominal=m_flow_nominal,
final dpValve_nominal=dpValve_nominal/fraK^2,
final dpFixed_nominal=dpFixed_nominal[2],
final use_inputFilter=false,
final riseTime=riseTime));
m_flow_small=m_flow_nominal*1e-4,
final mDyn_flow_nominal=m_flow_nominal,
redeclare replaceable IBPSA.Fluid.Actuators.BaseClasses.PartialTwoWayValve
res1 constrainedby IBPSA.Fluid.Actuators.BaseClasses.PartialTwoWayValve(
jelgerjansen marked this conversation as resolved.
Show resolved Hide resolved
deltaM=deltaM,
from_dp=from_dp,
final linearized=linearized[1],
final homotopyInitialization=homotopyInitialization,
final CvData=IBPSA.Fluid.Types.CvTypes.OpPoint,
final m_flow_nominal=m_flow_nominal,
final dpValve_nominal=dpValve_nominal,
final dpFixed_nominal=dpFixed_nominal[1],
final use_strokeTime=false,
final strokeTime=strokeTime),
redeclare FixedResistances.LosslessPipe res2(m_flow_nominal=m_flow_nominal),
redeclare replaceable IBPSA.Fluid.Actuators.BaseClasses.PartialTwoWayValve
res3 constrainedby IBPSA.Fluid.Actuators.BaseClasses.PartialTwoWayValve(
jelgerjansen marked this conversation as resolved.
Show resolved Hide resolved
deltaM=deltaM,
from_dp=from_dp,
final linearized=linearized[2],
final homotopyInitialization=homotopyInitialization,
final CvData=IBPSA.Fluid.Types.CvTypes.OpPoint,
final m_flow_nominal=m_flow_nominal,
final dpValve_nominal=dpValve_nominal/fraK^2,
final dpFixed_nominal=dpFixed_nominal[2],
final use_strokeTime=false,
final strokeTime=strokeTime));
extends IBPSA.Fluid.Actuators.BaseClasses.ActuatorSignal;
extends IBPSA.Fluid.Actuators.BaseClasses.ValveParameters(
rhoStd=Medium.density_pTX(101325, 273.15+4, Medium.X_default));
Expand Down Expand Up @@ -115,12 +112,12 @@ equation
fillColor=DynamicSelect({0,0,0}, (1-y)*{255,255,255}),
fillPattern=FillPattern.Solid),
Line(
visible=use_inputFilter,
visible=use_strokeTime,
points={{-30,40},{30,40}}),
Line(
points={{0,40},{0,0}}),
Line(
visible=not use_inputFilter,
visible=not use_strokeTime,
points={{0,100},{0,40}})}),
Documentation(info="<html>
<p>
Expand Down Expand Up @@ -159,7 +156,7 @@ This is for
</li>
<li>
November 16, 2022, by Michael Wetter:<br/>
Propagated parameter <code>riseTime</code> to valves. The value is not used as the filter is disabled,
Propagated parameter <code>strokeTime</code> to valves. The value is not used as the filter is disabled,
jelgerjansen marked this conversation as resolved.
Show resolved Hide resolved
but it will show in the result file. Having a consistent value for all these parameters in the result filter
helps during debugging.
</li>
Expand All @@ -184,7 +181,7 @@ Improved icon graphics annotation. This is for
</li>
<li>
March 24, 2017, by Michael Wetter:<br/>
Renamed <code>filteredInput</code> to <code>use_inputFilter</code>.<br/>
Renamed <code>filteredInput</code> to <code>use_strokeTime</code>.<br/>
jelgerjansen marked this conversation as resolved.
Show resolved Hide resolved
This is for
<a href=\"https://github.com/ibpsa/modelica-ibpsa/issues/665\">#665</a>.
</li>
Expand Down
6 changes: 3 additions & 3 deletions IBPSA/Fluid/Actuators/BaseClasses/PartialTwoWayValve.mo
Original file line number Diff line number Diff line change
Expand Up @@ -47,12 +47,12 @@ initial equation
fillColor={255,255,255},
fillPattern=FillPattern.Solid),
Line(
visible=use_inputFilter,
visible=use_strokeTime,
points={{-30,40},{30,40}}),
Line(
points={{0,40},{0,0}}),
Line(
visible=not use_inputFilter,
visible=not use_strokeTime,
points={{0,100},{0,40}})}),
Documentation(info="<html>
<p>
Expand Down Expand Up @@ -124,7 +124,7 @@ Improved icon graphics annotation. This is for
</li>
<li>
March 24, 2017, by Michael Wetter:<br/>
Renamed <code>filteredInput</code> to <code>use_inputFilter</code>.<br/>
Renamed <code>filteredInput</code> to <code>use_strokeTime</code>.<br/>
jelgerjansen marked this conversation as resolved.
Show resolved Hide resolved
This is for
<a href=\"https://github.com/ibpsa/modelica-ibpsa/issues/665\">#665</a>.
</li>
Expand Down
2 changes: 1 addition & 1 deletion IBPSA/Fluid/Actuators/BaseClasses/PartialTwoWayValveKv.mo
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ Removed icon graphics annotation. This is for
</li>
<li>
March 24, 2017, by Michael Wetter:<br/>
Renamed <code>filteredInput</code> to <code>use_inputFilter</code>.<br/>
Renamed <code>filteredInput</code> to <code>use_strokeTime</code>.<br/>
jelgerjansen marked this conversation as resolved.
Show resolved Hide resolved
This is for
<a href=\"https://github.com/ibpsa/modelica-ibpsa/issues/665\">#665</a>.
</li>
Expand Down
8 changes: 4 additions & 4 deletions IBPSA/Fluid/Actuators/Dampers/Examples/Damper.mo
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ model Damper

IBPSA.Fluid.Actuators.Dampers.Exponential res(
redeclare package Medium = Medium,
use_inputFilter=false,
use_strokeTime=false,
dpDamper_nominal=10,
m_flow_nominal=1,
k1=0.45) "A damper with quadratic relationship between m_flow and dp"
Expand All @@ -33,7 +33,7 @@ model Damper
transformation(extent={{94,-10},{74,10}})));

IBPSA.Fluid.Actuators.Dampers.PressureIndependent preIndDpFixed_nominal(
use_inputFilter=false,
use_strokeTime=false,
redeclare package Medium = Medium,
m_flow_nominal=1,
dpFixed_nominal=5,
Expand All @@ -42,7 +42,7 @@ model Damper
annotation (Placement(transformation(extent={{0,-90},{20,-70}})));

IBPSA.Fluid.Actuators.Dampers.PressureIndependent preIndFrom_dp(
use_inputFilter=false,
use_strokeTime=false,
redeclare package Medium = Medium,
m_flow_nominal=1,
dpFixed_nominal=0,
Expand All @@ -55,7 +55,7 @@ model Damper
redeclare package Medium = Medium,
m_flow_nominal=1,
dpDamper_nominal=10,
use_inputFilter=false)
use_strokeTime=false)
"A damper with a mass flow proportional to the input signal"
annotation (Placement(transformation(extent={{0,-10},{20,10}})));

Expand Down
8 changes: 4 additions & 4 deletions IBPSA/Fluid/Actuators/Dampers/MixingBox.mo
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ model MixingBox "Outside air mixing box with interlocked air dampers"
final k1=k1,
final use_constant_density=use_constant_density,
final allowFlowReversal=allowFlowReversal,
final use_inputFilter=false)
final use_strokeTime=false)
"Outdoor air damper"
annotation (Placement(transformation(extent={{-40,20},{-20,40}})));
IBPSA.Fluid.Actuators.Dampers.Exponential damExh(
Expand All @@ -143,7 +143,7 @@ model MixingBox "Outside air mixing box with interlocked air dampers"
final k1=k1,
final use_constant_density=use_constant_density,
final allowFlowReversal=allowFlowReversal,
final use_inputFilter=false)
final use_strokeTime=false)
"Exhaust air damper"
annotation (Placement(transformation(extent={{-20,-70},{-40,-50}})));
IBPSA.Fluid.Actuators.Dampers.Exponential damRec(
Expand All @@ -165,7 +165,7 @@ model MixingBox "Outside air mixing box with interlocked air dampers"
final k1=k1,
final use_constant_density=use_constant_density,
final allowFlowReversal=allowFlowReversal,
final use_inputFilter=false)
final use_strokeTime=false)
"Recirculation air damper"
annotation (
Placement(transformation(
Expand Down Expand Up @@ -325,7 +325,7 @@ See <a href=\"https://github.com/ibpsa/modelica-ibpsa/issues/1050\">#1050</a>.
</li>
<li>
March 24, 2017, by Michael Wetter:<br/>
Renamed <code>filteredInput</code> to <code>use_inputFilter</code>.<br/>
Renamed <code>filteredInput</code> to <code>use_strokeTime</code>.<br/>
jelgerjansen marked this conversation as resolved.
Show resolved Hide resolved
This is for
<a href=\"https://github.com/ibpsa/modelica-ibpsa/issues/665\">#665</a>.
</li>
Expand Down
Loading
Loading