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

Issue2885 fan coil unit controls #2946

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
81 commits
Select commit Hold shift + click to select a range
a432926
Merge pull request #20 from lbl-srg/master
karthikeyad-pnnl Sep 1, 2020
3b2b6ca
Merge remote-tracking branch 'upstream/master'
karthikeyad-pnnl Jun 7, 2021
7f9c083
Merge remote-tracking branch 'upstream/master'
karthikeyad-pnnl Sep 15, 2021
b8b08fe
Merge remote-tracking branch 'upstream_local/master'
karthikeyad-pnnl Oct 6, 2021
53454bf
Merge branch 'lbl-srg:master' into master
karthikeyad-pnnl Oct 25, 2021
45d798b
Merge branch 'lbl-srg:master' into master
karthikeyad-pnnl Nov 9, 2021
ec99cc6
Merge branch 'lbl-srg:master' into master
karthikeyad-pnnl Jan 26, 2022
b5ae2ff
Merge branch 'lbl-srg:master' into master
karthikeyad-pnnl Feb 14, 2022
0709671
Added packages for fan coil unit control sequences
karthikeyad-pnnl Feb 15, 2022
2fd6809
Backing up files
karthikeyad-pnnl Mar 8, 2022
d680a40
Backing up files
karthikeyad-pnnl Mar 15, 2022
0eb59d0
Updated formatting
karthikeyad-pnnl Mar 17, 2022
d14ded5
Added documentation sections and updated formatting
karthikeyad-pnnl Mar 19, 2022
f7aae21
Updated documentation and validation model for main controller
karthikeyad-pnnl Mar 22, 2022
9e1c512
Added control logic diagrams to information sections
karthikeyad-pnnl Mar 27, 2022
aced90f
Updated package.order files
karthikeyad-pnnl Mar 27, 2022
242f261
Added simulation settings to validation models
karthikeyad-pnnl Mar 28, 2022
3636340
Fixed newlines at end of mos file
karthikeyad-pnnl Mar 30, 2022
b573ce1
Adding unit test results for main FCU controller
karthikeyad-pnnl Mar 31, 2022
60c97db
Removed example icon file extension from Modelica Standard Library
karthikeyad-pnnl Mar 31, 2022
d344a80
Added unit test results for subsequences
karthikeyad-pnnl Mar 31, 2022
ec27366
Updated file spacing
karthikeyad-pnnl Mar 31, 2022
477025d
Updated stop time in validation model settings to correspond to stop …
karthikeyad-pnnl Apr 4, 2022
2732a20
Updated models based on feedback during presentation
karthikeyad-pnnl Apr 15, 2022
6d090a6
Removed redubndant pre blocks
karthikeyad-pnnl Apr 15, 2022
bd59301
Added model for plant requests from G36 package on lbl-srg/modelica-b…
karthikeyad-pnnl Apr 30, 2022
aea0310
Added request generation block to fan coil unit controls package
karthikeyad-pnnl May 3, 2022
188e5b7
Updated controller with plant request module
karthikeyad-pnnl May 7, 2022
cb7e9eb
Updated formatting
karthikeyad-pnnl May 7, 2022
d4ac322
Updated unit test results
karthikeyad-pnnl May 9, 2022
3a6d90b
Updated package order files
karthikeyad-pnnl May 9, 2022
bb39593
Removed unused files for G36 single-zone AHU plant requests
karthikeyad-pnnl May 9, 2022
f842463
Merge remote-tracking branch 'upstream/issue2885_FanCoilUnitControls'…
karthikeyad-pnnl Sep 12, 2022
8921f6a
Updated have_coolingCoil to have_cooCoi
karthikeyad-pnnl Sep 12, 2022
6d6176e
Fixed validation models with have_cooCoi
karthikeyad-pnnl Sep 12, 2022
ee6f300
Replaced user-defined parameter for have_heatingCoil with two paramet…
karthikeyad-pnnl Sep 12, 2022
9362122
Updated parameter comments
karthikeyad-pnnl Sep 12, 2022
1eeb084
Addeed information sections to packages. Removed non-required paramet…
karthikeyad-pnnl Sep 13, 2022
58c41f2
Added protected statement to reduce output variables in results file
karthikeyad-pnnl Sep 13, 2022
11cc01e
Updated text display settings for all control blocks
karthikeyad-pnnl Sep 13, 2022
a95e635
Merge branch 'issue2885_FanCoilUnitControls' into modelica-buildings/…
terrancelu92 Nov 16, 2022
9fc8535
Renamed the parameter heaSpeMin, heaSpeMax to heaSpe_min, heaSpe_max
terrancelu92 Nov 16, 2022
2c7d8ea
Renamed the group name parameters
terrancelu92 Nov 16, 2022
8a355ba
Renamed the comments of the heaDea
terrancelu92 Nov 16, 2022
8ab9778
Changed the instance name isOcc to notUno.
terrancelu92 Nov 16, 2022
fcbbb7c
Changed surfix _min, _max to lower cases
terrancelu92 Nov 16, 2022
3362fa6
Changed the parameter name heaPerMin, heaPerMax to uHea_min, uHea_max…
terrancelu92 Nov 16, 2022
4c101af
Changed the variable name in the intro figure
terrancelu92 Nov 17, 2022
34ae94a
Changed the min/max parameter names
terrancelu92 Nov 17, 2022
792e189
Add spaces in the info
terrancelu92 Nov 17, 2022
9a01585
Changed the naming from TZonSetHea to TZonHeaSet
terrancelu92 Nov 17, 2022
e762a9e
Changed the naming from TZonSetHea to TZonHeaSet in the example file
terrancelu92 Nov 17, 2022
5b4fffe
Changed the name of cooPerMax/heaPerMax to uCoo_max/uHea_max
terrancelu92 Nov 17, 2022
097a782
Change the naming of min/max parameters
terrancelu92 Nov 17, 2022
d3ddb2b
Correct the documentation error
terrancelu92 Nov 17, 2022
8b30c8c
Translate the variable name to detailed value
terrancelu92 Nov 17, 2022
35902ae
Update SupplyAirTemperature.png
terrancelu92 Nov 17, 2022
e74839d
Merge remote-tracking branch 'upstream/issue2885_FanCoilUnitControls'…
karthikeyad-pnnl Nov 21, 2022
ca54aac
Merge remote-tracking branch 'upstream/master' into issue2885_FanCoil…
karthikeyad-pnnl Nov 21, 2022
f6fa1bc
Merge branch 'master' into issue2885_FanCoilUnitControls
terrancelu92 Nov 21, 2022
dba6ea8
Merge branch 'issue2885_FanCoilUnitControls' of github.com:terrancelu…
karthikeyad-pnnl Nov 21, 2022
ab5f460
Merge branch 'terrancelu92-issue2885_FanCoilUnitControls' into issue2…
karthikeyad-pnnl Nov 21, 2022
534d3c5
Updated instance names for min and max parameters. Added input interf…
karthikeyad-pnnl Nov 28, 2022
f6540ab
Updated instance names in validation scripts. Removed non-required ze…
karthikeyad-pnnl Nov 28, 2022
7edd0e7
Updated unit test results
karthikeyad-pnnl Nov 28, 2022
08b449f
Changed annotation and comments for parameters
karthikeyad-pnnl Nov 30, 2022
285ab15
Updated fan speed logic to switch to deadband speed once the fan is e…
karthikeyad-pnnl Nov 30, 2022
9c2cc04
Updated unit test results
karthikeyad-pnnl Nov 30, 2022
41aa8cb
Updated text in documentation sections
karthikeyad-pnnl Nov 30, 2022
8273a1c
Updated interface instance names
karthikeyad-pnnl Nov 30, 2022
3212320
Updated unit test results
karthikeyad-pnnl Nov 30, 2022
fdee3c4
Updated documentation and images so that parameter names match across…
karthikeyad-pnnl Nov 30, 2022
c40af7d
Updated names and comments of connections in FanCoilUnit folder
junkewang001 Oct 4, 2023
8b45252
Merge pull request #96 from junkewang001/issue2885_FanCoilUnitControls
karthikeyad-pnnl Oct 12, 2023
d6631b0
Updated names of the connections in validation models
junkewang001 Oct 12, 2023
1d3ac0e
Merge pull request #100 from junkewang001/issue2885_FanCoilUnitControls
karthikeyad-pnnl Oct 12, 2023
7470e82
Propagated the naming changes to the validation scripts
junkewang001 Oct 12, 2023
f03e16c
Merge pull request #101 from junkewang001/issue2885_FanCoilUnitControls
karthikeyad-pnnl Oct 12, 2023
0d0bb42
Updated unit test logs
junkewang001 Oct 12, 2023
4cbc0f2
Merge pull request #102 from junkewang001/issue2885_FanCoilUnitControls
karthikeyad-pnnl Oct 16, 2023
982fdb9
Updated interface names in the documentation sections. Added addition…
karthikeyad-pnnl Oct 17, 2023
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
1,217 changes: 1,217 additions & 0 deletions Buildings/Controls/OBC/ASHRAE/FanCoilUnit/Controller.mo

Large diffs are not rendered by default.

423 changes: 423 additions & 0 deletions Buildings/Controls/OBC/ASHRAE/FanCoilUnit/Subsequences/FanSpeed.mo

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,320 @@
within Buildings.Controls.OBC.ASHRAE.FanCoilUnit.Subsequences.Validation;
block FanSpeed
"Validation model for fan speed subsequence"

Buildings.Controls.OBC.ASHRAE.FanCoilUnit.Subsequences.FanSpeed fanSpe(
final have_cooCoi=true,
final have_heaCoi=true)
"Instance demonstrating variation of heating loop signal"
annotation (Placement(transformation(extent={{-40,120},{-20,140}})));

Buildings.Controls.OBC.ASHRAE.FanCoilUnit.Subsequences.FanSpeed fanSpe2(
final have_cooCoi=true,
final have_heaCoi=true)
"Instance demonstrating variation of operating mode"
annotation (Placement(transformation(extent={{80,120},{100,140}})));

Buildings.Controls.OBC.ASHRAE.FanCoilUnit.Subsequences.FanSpeed fanSpe1(
final have_cooCoi=true,
final have_heaCoi=true)
"Instance demonstrating variation of cooling loop signal"
annotation (Placement(transformation(extent={{-40,-10},{-20,10}})));

Buildings.Controls.OBC.ASHRAE.FanCoilUnit.Subsequences.FanSpeed fanSpe3(
final have_cooCoi=true,
final have_heaCoi=false)
"Instance demonstrating variation of cooling loop signal with no heating coil"
annotation (Placement(transformation(extent={{80,-10},{100,10}})));

Buildings.Controls.OBC.ASHRAE.FanCoilUnit.Subsequences.FanSpeed fanSpe4(
final have_cooCoi=false,
final have_heaCoi=true)
"Instance demonstrating variation of heating loop signal with no cooling coil"
annotation (Placement(transformation(extent={{-40,-140},{-20,-120}})));

Buildings.Controls.OBC.ASHRAE.FanCoilUnit.Subsequences.FanSpeed fanSpe5(
final have_cooCoi=false,
final have_heaCoi=false)
"Instance demonstrating variation of operating mode with no heating and cooling coils"
annotation (Placement(transformation(extent={{80,-140},{100,-120}})));

protected
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp ram(
final height=6,
final duration=70,
final offset=1)
"Operating mode signal"
annotation (Placement(transformation(extent={{20,160},{40,180}})));

Buildings.Controls.OBC.CDL.Conversions.RealToInteger reaToInt
"Real to Integer conversion"
annotation (Placement(transformation(extent={{-70,160},{-50,180}})));

Buildings.Controls.OBC.CDL.Logical.Sources.Pulse booPul(
final period=100)
"Fan proven on signal"
annotation (Placement(transformation(extent={{-100,130},{-80,150}})));

Buildings.Controls.OBC.CDL.Continuous.Sources.Sine sin(
final freqHz=1/50)
"Heating loop signal"
annotation (Placement(transformation(extent={{-100,100},{-80,120}})));

Buildings.Controls.OBC.CDL.Continuous.Abs abs
"Convert negative loop signal to positive"
annotation (Placement(transformation(extent={{-70,100},{-50,120}})));

Buildings.Controls.OBC.CDL.Continuous.Sources.Constant con(
final k=0)
"Cooling loop signal"
annotation (Placement(transformation(extent={{-100,70},{-80,90}})));

Buildings.Controls.OBC.CDL.Continuous.Sources.Constant con1(
final k=1)
"Operating mode signal"
annotation (Placement(transformation(extent={{-100,160},{-80,180}})));

Buildings.Controls.OBC.CDL.Conversions.RealToInteger reaToInt1
"Real to Integer conversion"
annotation (Placement(transformation(extent={{50,160},{70,180}})));

Buildings.Controls.OBC.CDL.Logical.Sources.Pulse booPul1(
final period=100)
"Fan proven on signal"
annotation (Placement(transformation(extent={{20,130},{40,150}})));

Buildings.Controls.OBC.CDL.Continuous.Sources.Constant con2(
final k=0)
"Cooling loop signal"
annotation (Placement(transformation(extent={{20,70},{40,90}})));

Buildings.Controls.OBC.CDL.Conversions.RealToInteger reaToInt2
"Real to Integer conversion"
annotation (Placement(transformation(extent={{-70,30},{-50,50}})));

Buildings.Controls.OBC.CDL.Logical.Sources.Pulse booPul2(
final period=100)
"Fan proven on signal"
annotation (Placement(transformation(extent={{-100,0},{-80,20}})));

Buildings.Controls.OBC.CDL.Continuous.Sources.Sine sin2(
final freqHz=1/50)
"Cooling loop signal"
annotation (Placement(transformation(extent={{-100,-60},{-80,-40}})));

Buildings.Controls.OBC.CDL.Continuous.Abs abs2
"Convert negative loop signal to positive"
annotation (Placement(transformation(extent={{-70,-60},{-50,-40}})));

Buildings.Controls.OBC.CDL.Continuous.Sources.Constant con3(
final k=0)
"Heating loop signal"
annotation (Placement(transformation(extent={{-100,-30},{-80,-10}})));

Buildings.Controls.OBC.CDL.Continuous.Sources.Constant con4(
final k=1)
"Operating mode signal"
annotation (Placement(transformation(extent={{-100,30},{-80,50}})));

Buildings.Controls.OBC.CDL.Continuous.Sources.Constant con5(
final k=0.75)
"Heating loop signal"
annotation (Placement(transformation(extent={{20,100},{40,120}})));

Buildings.Controls.OBC.CDL.Conversions.RealToInteger reaToInt3
"Real to Integer conversion"
annotation (Placement(transformation(extent={{50,30},{70,50}})));

Buildings.Controls.OBC.CDL.Logical.Sources.Pulse booPul3(
final period=100)
"Fan proven on signal"
annotation (Placement(transformation(extent={{20,0},{40,20}})));

Buildings.Controls.OBC.CDL.Continuous.Sources.Sine sin1(
final freqHz=1/50)
"Cooling loop signal"
annotation (Placement(transformation(extent={{20,-30},{40,-10}})));

Buildings.Controls.OBC.CDL.Continuous.Abs abs1
"Convert negative loop signal to positive"
annotation (Placement(transformation(extent={{50,-30},{70,-10}})));

Buildings.Controls.OBC.CDL.Continuous.Sources.Constant con7(
final k=1)
"Operating mode signal"
annotation (Placement(transformation(extent={{20,30},{40,50}})));

Buildings.Controls.OBC.CDL.Conversions.RealToInteger reaToInt4
"Real to Integer conversion"
annotation (Placement(transformation(extent={{-70,-100},{-50,-80}})));

Buildings.Controls.OBC.CDL.Logical.Sources.Pulse booPul4(
final period=100)
"Fan proven on signal"
annotation (Placement(transformation(extent={{-100,-130},{-80,-110}})));

Buildings.Controls.OBC.CDL.Continuous.Sources.Sine sin3(
final freqHz=1/50)
"Heating loop signal"
annotation (Placement(transformation(extent={{-100,-160},{-80,-140}})));

Buildings.Controls.OBC.CDL.Continuous.Abs abs3
"Convert negative loop signal to positive"
annotation (Placement(transformation(extent={{-70,-160},{-50,-140}})));

Buildings.Controls.OBC.CDL.Continuous.Sources.Constant con8(
final k=1)
"Operating mode signal"
annotation (Placement(transformation(extent={{-100,-100},{-80,-80}})));

Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp ram1(
final height=6,
final duration=70,
final offset=1)
"Operating mode signal"
annotation (Placement(transformation(extent={{20,-100},{40,-80}})));

Buildings.Controls.OBC.CDL.Conversions.RealToInteger reaToInt5
"Real to Integer conversion"
annotation (Placement(transformation(extent={{50,-100},{70,-80}})));

Buildings.Controls.OBC.CDL.Logical.Sources.Pulse booPul5(
final period=100)
"Fan proven on signal"
annotation (Placement(transformation(extent={{20,-130},{40,-110}})));

equation
connect(reaToInt.y, fanSpe.opeMod) annotation (Line(points={{-48,170},{-46,170},
{-46,136},{-42,136}},
color={255,127,0}));

connect(booPul.y, fanSpe.u1FanPro) annotation (Line(points={{-78,140},{-50,140},
{-50,132},{-42,132}},
color={255,0,255}));

connect(sin.y, abs.u)
annotation (Line(points={{-78,110},{-72,110}},
color={0,0,127}));

connect(abs.y, fanSpe.uHea) annotation (Line(points={{-48,110},{-46,110},{-46,
128},{-42,128}},
color={0,0,127}));

connect(con.y, fanSpe.uCoo) annotation (Line(points={{-78,80},{-44,80},{-44,124},
{-42,124}},color={0,0,127}));

connect(con1.y, reaToInt.u)
annotation (Line(points={{-78,170},{-72,170}}, color={0,0,127}));

connect(reaToInt1.y, fanSpe2.opeMod) annotation (Line(points={{72,170},{74,170},
{74,136},{78,136}}, color={255,127,0}));

connect(booPul1.y, fanSpe2.u1FanPro) annotation (Line(points={{42,140},{70,140},
{70,132},{78,132}}, color={255,0,255}));

connect(con2.y, fanSpe2.uCoo) annotation (Line(points={{42,80},{76,80},{76,
124},{78,124}}, color={0,0,127}));

connect(ram.y, reaToInt1.u)
annotation (Line(points={{42,170},{48,170}}, color={0,0,127}));

connect(reaToInt2.y,fanSpe1. opeMod) annotation (Line(points={{-48,40},{-46,40},
{-46,6},{-42,6}}, color={255,127,0}));

connect(booPul2.y,fanSpe1. u1FanPro) annotation (Line(points={{-78,10},{-50,10},
{-50,2},{-42,2}}, color={255,0,255}));

connect(sin2.y, abs2.u)
annotation (Line(points={{-78,-50},{-72,-50}}, color={0,0,127}));

connect(con4.y, reaToInt2.u)
annotation (Line(points={{-78,40},{-72,40}}, color={0,0,127}));

connect(con3.y,fanSpe1. uHea) annotation (Line(points={{-78,-20},{-56,-20},{-56,
-2},{-42,-2}}, color={0,0,127}));

connect(abs2.y,fanSpe1. uCoo) annotation (Line(points={{-48,-50},{-46,-50},{-46,
-6},{-42,-6}}, color={0,0,127}));

connect(con5.y, fanSpe2.uHea) annotation (Line(points={{42,110},{60,110},{60,
128},{78,128}}, color={0,0,127}));

connect(reaToInt3.y,fanSpe3. opeMod) annotation (Line(points={{72,40},{74,40},
{74,6},{78,6}}, color={255,127,0}));

connect(booPul3.y,fanSpe3. u1FanPro) annotation (Line(points={{42,10},{70,10},{
70,2},{78,2}}, color={255,0,255}));

connect(sin1.y,abs1. u)
annotation (Line(points={{42,-20},{48,-20}}, color={0,0,127}));

connect(con7.y,reaToInt3. u)
annotation (Line(points={{42,40},{48,40}}, color={0,0,127}));

connect(abs1.y,fanSpe3. uCoo) annotation (Line(points={{72,-20},{74,-20},{74,-6},
{78,-6}}, color={0,0,127}));

connect(reaToInt4.y, fanSpe4.opeMod) annotation (Line(points={{-48,-90},{-46,-90},
{-46,-124},{-42,-124}},
color={255,127,0}));

connect(booPul4.y, fanSpe4.u1FanPro) annotation (Line(points={{-78,-120},{-50,-120},
{-50,-128},{-42,-128}},
color={255,0,255}));

connect(sin3.y, abs3.u)
annotation (Line(points={{-78,-150},{-72,-150}}, color={0,0,127}));

connect(abs3.y, fanSpe4.uHea) annotation (Line(points={{-48,-150},{-46,-150},
{-46,-132},{-42,-132}},
color={0,0,127}));

connect(con8.y, reaToInt4.u)
annotation (Line(points={{-78,-90},{-72,-90}}, color={0,0,127}));

connect(reaToInt5.y, fanSpe5.opeMod) annotation (Line(points={{72,-90},{74,-90},
{74,-124},{78,-124}}, color={255,127,0}));

connect(booPul5.y, fanSpe5.u1FanPro) annotation (Line(points={{42,-120},{70,-120},
{70,-128},{78,-128}}, color={255,0,255}));

connect(ram1.y, reaToInt5.u)
annotation (Line(points={{42,-90},{48,-90}}, color={0,0,127}));

annotation (Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},
{100,100}}), graphics={
Ellipse(lineColor = {75,138,73},
fillColor={255,255,255},
fillPattern = FillPattern.Solid,
extent={{-100,-100},{100,100}}),
Polygon(lineColor = {0,0,255},
fillColor = {75,138,73},
pattern = LinePattern.None,
fillPattern = FillPattern.Solid,
points={{-36,60},{64,0},{-36,-60},{-36,60}})}), Diagram(
coordinateSystem(preserveAspectRatio=false, extent={{-120,-200},{120,200}})),
experiment(
StopTime=100,
Tolerance=1e-06),
__Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/ASHRAE/FanCoilUnit/Subsequences/Validation/FanSpeed.mos"
"Simulate and plot"),
Documentation(info="<html>
<p>
This example validates
<a href=\"modelica://Buildings.Controls.OBC.ASHRAE.FanCoilUnit.Subsequences.FanSpeed\">
Buildings.Controls.OBC.ASHRAE.FanCoilUnit.Subsequences.FanSpeed</a>.
Each of the six instances of the controller represents operation with different
inputs for heating and cooling loop signals, as well as the operating mode
and fan proven on signal, and different configuration
parameters of fan coil unit with presence or absence of heating and cooling
coils, as described by the comment for each instance.
</p>
</html>", revisions="<html>
<ul>
<li>
March 18, 2022, by Karthik Devaprasad:<br/>
First implementation.
</li>
</ul>
</html>"));
end FanSpeed;
Loading