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

Issue465 multizone office simple hydronic #469

Closed
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
71 commits
Select commit Hold shift + click to select a range
c232729
Added resource .csv files and weather .mos file
Aug 7, 2022
2dda932
Added library versions file
Aug 7, 2022
c658a5f
Added 1st version of model. WARNING: still subject to changes
Aug 8, 2022
5366d04
Added days generation script + results
Aug 8, 2022
f98680b
Added data generation script (only weather is necessary)
Aug 8, 2022
6188a35
Added html I/O script
Aug 8, 2022
c9ff132
renamed testcase for consistency
Aug 8, 2022
9798814
added config file
Aug 8, 2022
fb44c73
Run pre-commit
Aug 8, 2022
0d4ea6b
Created and run tests
Aug 8, 2022
29eb812
Added wrapped models, FMU and compile_fmu.py (WARNING: the latter scr…
Aug 8, 2022
f2c738b
Merge branch 'master' into issue465_multizone_office_simple_hydronic
icupeiro Aug 8, 2022
5f851d5
Run pre-commit
Aug 8, 2022
cdbb101
Merge branch 'issue465_multizone_office_simple_hydronic' of github.co…
Aug 8, 2022
0ce1318
Corrected makefile
Aug 8, 2022
90a05f2
Added missing kpis.json
Aug 8, 2022
b565d68
Updated tests after last merge with master
Aug 9, 2022
5bf1318
Merge branch 'master' of github.com:ibpsa/project1-boptest into issue…
Aug 9, 2022
6a969e9
Run pre-commit
Aug 9, 2022
0cc4b31
updated library versions
Aug 24, 2022
6997524
Merge branch 'master' of github.com:ibpsa/project1-boptest into issue…
Aug 24, 2022
b0b62a4
Updated models and FMUs
Aug 24, 2022
676d7c5
Updated KPIs json
Aug 24, 2022
b6cc818
Updated get_html_IO based on new resapi
Aug 24, 2022
acf500a
updated .csv files
Aug 24, 2022
933f9c1
updated scenarios json
Aug 24, 2022
63aa06f
added model documentation
Aug 24, 2022
e17e6cc
updated reference results
Aug 24, 2022
2550020
run pre-commit
Aug 24, 2022
6d5adfe
corrected emissions.csv EOF
Aug 25, 2022
f425b4a
updated model with percentiles
Aug 25, 2022
d88f8c8
updated emissions EOF (now consistent)
Aug 25, 2022
0a47885
updated documentation with percentiles
Aug 25, 2022
5f64c40
run pre-commit
Aug 25, 2022
af3b1fe
added resources to FMU
Aug 25, 2022
eedea13
Changed reference year to 2021
Aug 26, 2022
4813cb8
updated references + pre-commit
Aug 26, 2022
348f36b
Changed reference from protected variable to allow simulation in OM
Sep 13, 2022
baa6a8c
Solve typo
javiarrobas Sep 21, 2022
29e9370
Solve typo
javiarrobas Sep 21, 2022
a4a49d6
Add clarification for the overall heating and cooling production capa…
javiarrobas Sep 26, 2022
e96b5c2
Solve typo.
javiarrobas Sep 26, 2022
692fe93
Solve typo.
javiarrobas Sep 26, 2022
9e1a7cb
Solve typo.
javiarrobas Sep 26, 2022
134f848
Solve typo.
javiarrobas Sep 26, 2022
6cb59ae
Solve typo.
javiarrobas Sep 27, 2022
088b425
Correct set-points for consistency.
javiarrobas Sep 27, 2022
b2f6f1b
Add review document.
javiarrobas Sep 27, 2022
f8f46e1
Merge pull request #1 from JavierArroyoBastida/issue465_multizone_off…
icupeiro Sep 29, 2022
35242fb
removed obsolete file
Sep 29, 2022
021c267
added documentation to model + images
Sep 29, 2022
6f6f8fe
Merge branch 'master' of github.com:ibpsa/project1-boptest into issue…
Sep 29, 2022
572c0c4
added set of relevant variables to compare_references
Sep 29, 2022
2f45e84
recomputed reference results
Sep 29, 2022
7e29bfa
removed obsolete file
Sep 29, 2022
2c41bcc
run pre-commit
Sep 29, 2022
2f846bf
Unit test fixes and add new results
dhblum Oct 7, 2022
54e0e44
Correct typo in travis,yml
icupeiro Oct 11, 2022
59b9888
fix steerability fcu airside and heating cooling coil ahu
bmerema Dec 5, 2022
7b76da8
fix: FanCoilUnitsKPI.mo
bmerema Jul 12, 2023
ac99c6a
fix: south zone and north zone ahu text fixed
bmerema Jul 12, 2023
242744f
Merge pull request #2 from bmerema/issue465_multizone_office_simple_h…
icupeiro Aug 1, 2023
ce922e3
Merge branch 'master' of https://github.com/ibpsa/project1-boptest in…
Nov 27, 2023
23b2cae
Added model with heat pump
Dec 6, 2023
0d5d583
Corrected heat pump coefficients
Dec 6, 2023
e211ade
Updated documentation
Dec 6, 2023
3c38996
Updated documentation
Dec 7, 2023
81decbb
Updated documentation
Dec 7, 2023
5c47043
Refactored conditional input statement
Jan 3, 2024
b900152
Changes in BMS to comply with HP max supply temperatures and refactor…
Jan 4, 2024
fea7a9d
Refactored conditional input connector and added initial parameter in…
Jan 4, 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
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
8,293 changes: 8,293 additions & 0 deletions testcases/multizone_office_simple_hydronic/doc/images/schematic.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1,073 changes: 1,073 additions & 0 deletions testcases/multizone_office_simple_hydronic/doc/index.html

Large diffs are not rendered by default.

Binary file not shown.

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
within BuildingEmulators.Components;

model AhuInternalControl


.IDEAS.Controls.Continuous.LimPID pidAhuHea(k = 0.1,Ti = 600,reset = IDEAS.Types.Reset.Parameter) annotation(Placement(transformation(extent = {{-45.340067323178786,-33.11784510095655},{-31.993266010154557,-19.77104378793232}},origin = {0.0,0.0},rotation = 0.0)));
.IDEAS.Controls.Continuous.LimPID pidAhuCoo(k = 0.2,Ti = 900,reverseActing = false,reset = IDEAS.Types.Reset.Parameter,controllerType = Modelica.Blocks.Types.SimpleController.PI) annotation(Placement(transformation(extent = {{-44.433269153984476,-62.433269153984476},{-31.566730846015524,-49.566730846015524}},origin = {0.0,0.0},rotation = 0.0)));
.Modelica.Blocks.Interfaces.RealInput TSupAhu annotation(Placement(transformation(extent = {{-111.39778880753413,-91.50889991864526},{-89.93554452579922,-70.04665563691034}},origin = {0.0,0.0},rotation = 0.0)));
.Modelica.Blocks.Interfaces.RealOutput valPosAhuHea annotation(Placement(transformation(extent = {{99.33333333333333,-36.444444444444436},{119.33333333333333,-16.444444444444436}},origin = {0.0,0.0},rotation = 0.0)));
.Modelica.Blocks.Interfaces.RealOutput valPosAhuCoo annotation(Placement(transformation(extent = {{99.33333333333333,-66.7777777777778},{119.33333333333333,-46.77777777777779}},origin = {0.0,0.0},rotation = 0.0)));
.Modelica.Blocks.Interfaces.RealInput TSupAhuSet annotation(Placement(transformation(extent = {{-111.39778880753413,-27.508899918645234},{-89.93554452579922,-6.046655636910323}},origin = {0.0,0.0},rotation = 0.0)));
.Modelica.Blocks.Interfaces.BooleanOutput valPosRec annotation(Placement(transformation(extent = {{100.0,70.0},{120.0,90.0}},origin = {0.0,0.0},rotation = 0.0)));
.Modelica.Blocks.Interfaces.RealInput TRetAhu annotation(Placement(transformation(extent = {{-110.73112214086746,29.268877859132544},{-89.26887785913254,50.731122140867456}},origin = {0.0,0.0},rotation = 0.0)));
.Modelica.Blocks.Interfaces.RealInput TInAhu annotation(Placement(transformation(extent = {{-111.26445547420079,69.51332230357698},{-89.80221119246588,90.9755665853119}},origin = {0.0,0.0},rotation = 0.0)));
.Modelica.Blocks.Logical.Greater greaterSet annotation(Placement(transformation(extent = {{-43.95589380078418,52.04410619921582},{-28.04410619921582,67.95589380078418}},origin = {0.0,0.0},rotation = 0.0)));
.Modelica.Blocks.Logical.Less lessSet annotation(Placement(transformation(extent = {{-44.06850924225885,-2.0685092422588482},{-27.93149075774115,14.068509242258848}},origin = {0.0,0.0},rotation = 0.0)));
.Modelica.Blocks.Logical.And andRecCoo annotation(Placement(transformation(extent = {{-7.059244146799895,64.9407558532001},{7.059244146799895,79.0592441467999}},origin = {0.0,0.0},rotation = 0.0)));
.Modelica.Blocks.Logical.And andRecHea annotation(Placement(transformation(extent = {{-7.0592441467998945,10.940755853200102},{7.0592441467998945,25.059244146799898}},origin = {0.0,0.0},rotation = 0.0)));
.Modelica.Blocks.Logical.Nor byPass annotation(Placement(transformation(extent = {{28,36},{48,56}},origin = {0,0},rotation = 0)));
.Modelica.Blocks.Logical.Hysteresis hystCoo(uLow = -0.75,uHigh = 0.5) annotation(Placement(transformation(extent = {{-18.998648648600845,-80.99864864860085},{-5.001351351399155,-67.00135135139915}},origin = {0.0,0.0},rotation = 0.0)));
.Modelica.Blocks.Math.Feedback feedback annotation(Placement(transformation(extent = {{-89.04635911183502,-38.95364088816498},{-74.95364088816498,-53.04635911183502}},origin = {0.0,0.0},rotation = 0.0)));
.Modelica.Blocks.Logical.Hysteresis hystHea(uHigh = 0.5,uLow = -0.25) annotation(Placement(transformation(extent = {{-18.998648648600845,-52.99864864860085},{-5.001351351399155,-39.00135135139915}},origin = {0.0,0.0},rotation = 0.0)));
.Modelica.Blocks.Math.Product proCoo annotation(Placement(transformation(extent = {{43.63704934105082,-76.36295065894917},{56.36295065894918,-63.637049341050826}},origin = {0.0,0.0},rotation = 0.0)));
.Modelica.Blocks.Math.BooleanToReal booToReaCoo annotation(Placement(transformation(extent = {{8.299371056482087,-79.70062894351791},{19.700628943517913,-68.29937105648209}},origin = {0.0,0.0},rotation = 0.0)));
.Modelica.Blocks.Logical.Not not1 annotation(Placement(transformation(extent = {{5.671880037107968,-50.32811996289203},{14.328119962892032,-41.67188003710797}},origin = {0.0,0.0},rotation = 0.0)));
.Modelica.Blocks.Math.Product proHea annotation(Placement(transformation(extent = {{61.63704934105081,-44.362950658949174},{74.36295065894919,-31.637049341050826}},origin = {0.0,0.0},rotation = 0.0)));
.Modelica.Blocks.Math.BooleanToReal booToReaHea annotation(Placement(transformation(extent = {{22.299371056482087,-51.70062894351791},{33.70062894351791,-40.29937105648209}},origin = {0.0,0.0},rotation = 0.0)));
.Modelica.Blocks.Interfaces.RealInput prfAhu annotation(Placement(transformation(extent = {{-110.73112214086746,-46.731122140867456},{-89.26887785913254,-25.268877859132544}},origin = {0.0,0.0},rotation = 0.0)));
.Modelica.Blocks.Logical.GreaterThreshold greaterThreshold(threshold = 0.01) annotation(Placement(transformation(extent = {{-70.89653022759906,-40.89653022759906},{-61.10346977240094,-31.103469772400945}},origin = {0.0,0.0},rotation = 0.0)));
.Modelica.Blocks.Logical.Or orOveWrite annotation(Placement(transformation(extent = {{60.0,44.0},{80.0,64.0}},origin = {0.0,0.0},rotation = 0.0)));
.Modelica.Blocks.Interfaces.BooleanInput oveByPass annotation(Placement(transformation(extent = {{-13.189503928312071,-13.189503928312064},{13.189503928312071,13.189503928312064}},origin = {50.0,100.0},rotation = -90.0)));
.Modelica.Blocks.Math.Feedback feedbackBypass annotation(Placement(transformation(extent = {{-65.04635911183502,39.04635911183502},{-50.95364088816498,24.953640888164983}},origin = {0.0,0.0},rotation = 0.0)));
.Modelica.Blocks.Logical.Hysteresis hystBypassHea(uHigh = -0.5,uLow = -2) annotation(Placement(transformation(extent = {{-42.99864864860085,25.00135135139915},{-29.00135135139915,38.99864864860085}},origin = {0.0,0.0},rotation = 0.0)));
.Modelica.Blocks.Logical.Not not2 annotation(Placement(transformation(extent = {{-24.328119962892032,29.671880037107968},{-15.671880037107968,38.32811996289203}},origin = {0.0,0.0},rotation = 0.0)));
.Modelica.Blocks.Logical.Hysteresis hystBypassCoo(uLow = 0.5,uHigh = 2) annotation(Placement(transformation(extent = {{-42.99864864860085,83.00135135139915},{-29.00135135139915,96.99864864860085}},origin = {0.0,0.0},rotation = 0.0)));
equation
connect(pidAhuHea.u_s,TSupAhuSet) annotation(Line(points = {{-46.67474745448122,-26.44444444444445},{-73.67070706057396,-26.44444444444445},{-73.67070706057396,-16.77777777777778},{-100.66666666666669,-16.77777777777778}},color = {0,0,127}));
connect(pidAhuCoo.u_s,TSupAhuSet) annotation(Line(points = {{-45.71992298478137,-56},{-73.52662815905737,-56},{-73.52662815905737,-16.77777777777778},{-100.66666666666669,-16.77777777777778}},color = {0,0,127}));
connect(pidAhuHea.u_m,TSupAhu) annotation(Line(points = {{-38.666666666666686,-34.452525232258985},{-38.666666666666686,-42.777777777777786},{-60.666666666666686,-42.777777777777786},{-60.666666666666686,-80.77777777777779},{-100.66666666666669,-80.77777777777779}},color = {0,0,127}));
connect(pidAhuCoo.u_m,TSupAhu) annotation(Line(points = {{-38,-63.71992298478137},{-38,-80.77777777777779},{-100.66666666666669,-80.77777777777779}},color = {0,0,127}));
connect(TSupAhuSet,greaterSet.u2) annotation(Line(points = {{-100.66666666666667,-16.77777777777778},{-82,-16.77777777777778},{-82,53.635284959372655},{-45.54707256094102,53.635284959372655}},color = {0,0,127}));
connect(greaterSet.u1,TInAhu) annotation(Line(points = {{-45.54707256094102,60},{-74,60},{-74,80.24444444444444},{-100.53333333333333,80.24444444444444}},color = {0,0,127}));
connect(TInAhu,lessSet.u1) annotation(Line(points = {{-100.53333333333333,80.24444444444444},{-74,80.24444444444444},{-74,6},{-45.68221109071062,6}},color = {0,0,127}));
connect(TSupAhuSet,lessSet.u2) annotation(Line(points = {{-100.66666666666667,-16.77777777777778},{-82,-16.77777777777778},{-82,-0.45480739380707824},{-45.68221109071062,-0.45480739380707824}},color = {0,0,127}));
connect(greaterSet.y,andRecCoo.u2) annotation(Line(points = {{-27.2485168191374,60},{-18,60},{-18,66.35260468256008},{-8.471092976159875,66.35260468256008}},color = {255,0,255}));
connect(lessSet.y,andRecHea.u2) annotation(Line(points = {{-27.124639833515268,6},{-17.79786640483757,6},{-17.79786640483757,12.35260468256008},{-8.471092976159873,12.35260468256008}},color = {255,0,255}));
connect(andRecCoo.y,byPass.u1) annotation(Line(points = {{7.765168561479886,72},{16.88258428073994,72},{16.88258428073994,46},{26,46}},color = {255,0,255}));
connect(andRecHea.y,byPass.u2) annotation(Line(points = {{7.765168561479884,18},{18,18},{18,38},{26,38}},color = {255,0,255}));
connect(TSupAhuSet,feedback.u2) annotation(Line(points = {{-100.66666666666667,-16.77777777777778},{-82,-16.77777777777778},{-82,-40.36291271053199}},color = {0,0,127}));
connect(feedback.u1,TSupAhu) annotation(Line(points = {{-87.63708728946801,-46},{-94.15187697806735,-46},{-94.15187697806735,-80.7777777777778},{-100.66666666666667,-80.7777777777778}},color = {0,0,127}));
connect(feedback.y,hystCoo.u) annotation(Line(points = {{-75.65827679934849,-46},{-75.65827679934849,-74},{-20.398378378321013,-74}},color = {0,0,127}));
connect(proCoo.u1,pidAhuCoo.y) annotation(Line(points = {{42.364459209260986,-66.18222960463049},{28,-66.18222960463049},{28,-56},{-30.923403930617077,-56}},color = {0,0,127}));
connect(booToReaCoo.u,hystCoo.y) annotation(Line(points = {{7.1592452677785055,-74},{-4.30148648653907,-74}},color = {255,0,255}));
connect(booToReaCoo.y,proCoo.u2) annotation(Line(points = {{20.270691837869705,-74},{31.317575523565345,-74},{31.317575523565345,-73.81777039536951},{42.364459209260986,-73.81777039536951}},color = {0,0,127}));
connect(proCoo.y,valPosAhuCoo) annotation(Line(points = {{56.9992457248441,-70},{83.16628952908871,-70},{83.16628952908871,-56.7777777777778},{109.33333333333333,-56.7777777777778}},color = {0,0,127}));
connect(not1.u,hystHea.y) annotation(Line(points = {{4.806256044529562,-46},{-4.30148648653907,-46}},color = {255,0,255}));
connect(booToReaHea.y,proHea.u2) annotation(Line(points = {{34.270691837869705,-46},{47.317575523565345,-46},{47.317575523565345,-41.81777039536951},{60.36445920926097,-41.81777039536951}},color = {0,0,127}));
connect(valPosAhuHea,proHea.y) annotation(Line(points = {{109.33333333333333,-26.444444444444436},{90.16628952908871,-26.444444444444436},{90.16628952908871,-38},{74.99924572484412,-38}},color = {0,0,127}));
connect(booToReaHea.u,not1.y) annotation(Line(points = {{21.159245267778505,-46},{14.760931959181235,-46}},color = {255,0,255}));
connect(proHea.u1,pidAhuHea.y) annotation(Line(points = {{60.36445920926097,-34.18222960463049},{14.519266632378812,-34.18222960463049},{14.519266632378812,-26.444444444444436},{-31.325925944503346,-26.444444444444436}},color = {0,0,127}));
connect(hystHea.u,feedback.y) annotation(Line(points = {{-20.398378378321013,-46},{-75.65827679934849,-46}},color = {0,0,127}));
connect(greaterThreshold.u,prfAhu) annotation(Line(points = {{-71.87583627311886,-36},{-100,-36}},color = {0,0,127}));
connect(greaterThreshold.y,pidAhuHea.trigger) annotation(Line(points = {{-60.61381674964104,-36},{-44.005387191876366,-36},{-44.005387191876366,-34.45252523225897}},color = {255,0,255}));
connect(greaterThreshold.y,pidAhuCoo.trigger) annotation(Line(points = {{-60.61381674964104,-36},{-55.10346977240094,-36},{-55.10346977240094,-69.71992298478136},{-43.14661532318758,-69.71992298478136},{-43.14661532318758,-63.71992298478137}},color = {255,0,255}));
connect(orOveWrite.y,valPosRec) annotation(Line(points = {{81,54},{95.5,54},{95.5,80},{110,80}},color = {255,0,255}));
connect(orOveWrite.u2,byPass.y) annotation(Line(points = {{58,46},{49,46}},color = {255,0,255}));
connect(orOveWrite.u1,oveByPass) annotation(Line(points = {{58,54},{50,54},{50,100}},color = {255,0,255}));
connect(TInAhu,feedbackBypass.u1) annotation(Line(points = {{-100.53333333333333,80.24444444444444},{-86,80.24444444444444},{-86,32},{-63.63708728946801,32}},color = {0,0,127}));
connect(TRetAhu,feedbackBypass.u2) annotation(Line(points = {{-100,40},{-58,40},{-58,37.63708728946801}},color = {0,0,127}));
connect(not2.u,hystBypassHea.y) annotation(Line(points = {{-25.19374395547044,34},{-28.301486486539062,34},{-28.301486486539062,32}},color = {255,0,255}));
connect(andRecHea.u1,not2.y) annotation(Line(points = {{-8.471092976159873,18},{-11.85508050848932,18},{-11.85508050848932,34},{-15.239068040818765,34}},color = {255,0,255}));
connect(feedbackBypass.y,hystBypassHea.u) annotation(Line(points = {{-51.658276799348485,32},{-44.39837837832102,32}},color = {0,0,127}));
connect(hystBypassCoo.y,andRecCoo.u1) annotation(Line(points = {{-28.301486486539066,90},{-18.38628973134947,90},{-18.38628973134947,72},{-8.471092976159873,72}},color = {255,0,255}));
connect(feedbackBypass.y,hystBypassCoo.u) annotation(Line(points = {{-51.658276799348485,32},{-51.658276799348485,90},{-44.39837837832102,90}},color = {0,0,127}));
annotation(Icon(coordinateSystem(preserveAspectRatio = false,extent = {{-100.0,-100.0},{100.0,100.0}}),graphics={Text(lineColor={0,0,255},extent={{-150,150},{150,110}},textString="%name"),Text(lineColor={0,0,255},extent={{-150,150},{150,110}},textString="",origin={214,2}),Ellipse(origin={-56,86},extent={{-10,10},{10,-10}}),Ellipse(origin={-16,16},extent={{-10,10},{10,-10}}),Ellipse(origin={24,66},extent={{-10,10},{10,-10}}),Ellipse(origin={64,-14},extent={{-10,10},{10,-10}}),Line(origin={-56,-2},points={{0.00012126970964487782,90.08584540026541},{-0.00012126970964487782,-90.08584540026541}}),Line(origin={-16,-2},points={{0.00012126970964487782,90.08584540026541},{-0.00012126970964487782,-90.08584540026541}}),Line(origin={24,-2},points={{0.00012126970964487782,90.08584540026541},{-0.00012126970964487782,-90.08584540026541}}),Line(origin={64,0},points={{0.00012126970964487782,90.08584540026541},{-0.00012126970964487782,-90.08584540026541}}),Rectangle(extent={{-100,100},{100,-100}})}), uses(
Modelica(version="4.0.0")));
end AhuInternalControl;
Loading