|
| 1 | +within Buildings.Fluid.Chillers.ModularReversible.BaseClasses; |
| 2 | +model RefrigerantCycleHeatRecovery |
| 3 | + "Refrigerant cycle model for cooling-only or heat recovery chiller models" |
| 4 | + extends Buildings.Fluid.HeatPumps.ModularReversible.BaseClasses.PartialModularRefrigerantCycle( |
| 5 | + use_rev=false); |
| 6 | + parameter Boolean have_switchover=false |
| 7 | + "Set to true for heat recovery chiller with built-in switchover" |
| 8 | + annotation (Evaluate=true); |
| 9 | + replaceable model RefrigerantCycleChillerCooling=Buildings.Fluid.Chillers.ModularReversible.RefrigerantCycle.BaseClasses.NoCooling( |
| 10 | + useInChi=true) |
| 11 | + constrainedby Buildings.Fluid.Chillers.ModularReversible.RefrigerantCycle.BaseClasses.PartialChillerCycle |
| 12 | + "Replaceable model for refrigerant cycle of a chiller in main operation mode"; |
| 13 | + final model RefrigerantCycleChillerHeating=Buildings.Fluid.HeatPumps.ModularReversible.RefrigerantCycle.BaseClasses.NoHeating( |
| 14 | + useInHeaPum=false) |
| 15 | + "Model for refrigerant cycle of a chiller in reversed operation mode"; |
| 16 | + RefrigerantCycleChillerCooling refCycChiCoo |
| 17 | + "Refrigerant cycle instance for cooling" |
| 18 | + annotation (Placement(transformation(extent={{20,40},{60,80}},rotation=0))); |
| 19 | +protected |
| 20 | + parameter String devIde=refCycChiCoo.devIde |
| 21 | + "Data source for refrigerant cycle"; |
| 22 | + Buildings.Controls.OBC.CDL.Logical.Sources.Constant tru( |
| 23 | + k=true) |
| 24 | + "Placeholder signal to allow using coo variable with use_rev=false"; |
| 25 | +equation |
| 26 | + connect(pasTrhModSet.u, tru.y); |
| 27 | + connect(sigBus, refCycChiCoo.sigBus) |
| 28 | + annotation (Line(points={{0,100},{0,92},{40.1667,92},{40.1667,80}},color={255,204,51},thickness=0.5)); |
| 29 | + connect(swiPEle.u2, sigBus.coo) |
| 30 | + annotation (Line(points={{2.22045e-15,-58},{2.22045e-15,-2},{0,-2},{0,100}}, |
| 31 | + color={255,0,255}),Text(string="%second",index=1,extent={{-3,6},{-3,6}}, |
| 32 | + horizontalAlignment=TextAlignment.Right)); |
| 33 | + connect(swiQEva.u2, sigBus.coo) |
| 34 | + annotation (Line(points={{-58,0},{0,0},{0,100}},color={255,0,255}),Text(string= |
| 35 | + "%second",index=1,extent={{6,3},{6,3}},horizontalAlignment=TextAlignment.Left)); |
| 36 | + connect(swiQCon.u2, sigBus.coo) |
| 37 | + annotation (Line(points={{58,0},{0,0},{0,100}},color={255,0,255}),Text(string= |
| 38 | + "%second",index=1,extent={{-6,3},{-6,3}},horizontalAlignment=TextAlignment.Right)); |
| 39 | + connect(refCycChiCoo.QEva_flow, swiQEva.u1) |
| 40 | + annotation (Line(points={{53.3333,38.3333},{53.3333,24},{-10,24},{-10,8},{ |
| 41 | + -58,8}}, |
| 42 | + color={0,0,127})); |
| 43 | + connect(refCycChiCoo.QCon_flow, swiQCon.u1) |
| 44 | + annotation (Line(points={{26.6667,38.3333},{26.6667,8},{58,8}},color={0,0,127})); |
| 45 | + connect(refCycChiCoo.PEle, swiPEle.u1) |
| 46 | + annotation (Line(points={{40,38.3333},{40,-48},{8,-48},{8,-58}},color={0,0,127})); |
| 47 | + connect(refCycChiCoo.QCon_flow, swiQCon.u3) |
| 48 | + annotation (Line(points={{26.6667,38.3333},{26.6667,-8},{58,-8}},color={0,0,127})); |
| 49 | + connect(refCycChiCoo.QEva_flow, swiQEva.u3) |
| 50 | + annotation (Line(points={{53.3333,38.3333},{54,38.3333},{54,24},{-10,24},{ |
| 51 | + -10,-8},{-58,-8}}, |
| 52 | + color={0,0,127})); |
| 53 | + connect(refCycChiCoo.PEle, swiPEle.u3) |
| 54 | + annotation (Line(points={{40,38.3333},{40,-48},{-8,-48},{-8,-58}},color={0,0,127})); |
| 55 | + annotation ( |
| 56 | + Icon( |
| 57 | + coordinateSystem( |
| 58 | + preserveAspectRatio=false), |
| 59 | + graphics={ |
| 60 | + Rectangle( |
| 61 | + extent={{-100,100},{100,-100}}, |
| 62 | + lineColor={238,46,47}, |
| 63 | + fillColor={0,0,0}, |
| 64 | + fillPattern=FillPattern.Solid), |
| 65 | + Ellipse( |
| 66 | + extent={{-24,88},{22,44}}, |
| 67 | + lineColor={28,108,200}, |
| 68 | + lineThickness=0.5), |
| 69 | + Line( |
| 70 | + points={{-16,82},{20,74}}, |
| 71 | + color={28,108,200}, |
| 72 | + thickness=0.5), |
| 73 | + Line( |
| 74 | + points={{-18,52},{20,58}}, |
| 75 | + color={28,108,200}, |
| 76 | + thickness=0.5), |
| 77 | + Rectangle( |
| 78 | + extent={{-98,40},{-60,-28}}, |
| 79 | + lineColor={28,108,200}, |
| 80 | + lineThickness=0.5), |
| 81 | + Line( |
| 82 | + points={{-20,-60},{-20,-70},{-20,-80},{20,-60},{20,-80},{-20,-60}}, |
| 83 | + color={28,108,200}, |
| 84 | + thickness=0.5), |
| 85 | + Line( |
| 86 | + points={{-122,34},{-66,34},{-82,10},{-66,-22},{-120,-22}}, |
| 87 | + color={28,108,200}, |
| 88 | + thickness=0.5), |
| 89 | + Rectangle( |
| 90 | + extent={{60,40},{98,-28}}, |
| 91 | + lineColor={28,108,200}, |
| 92 | + lineThickness=0.5), |
| 93 | + Line( |
| 94 | + points={{120,34},{64,34},{80,10},{64,-22},{118,-22}}, |
| 95 | + color={28,108,200}, |
| 96 | + thickness=0.5), |
| 97 | + Line( |
| 98 | + points={{-80,40},{-80,68},{-24,68}}, |
| 99 | + color={28,108,200}, |
| 100 | + thickness=0.5), |
| 101 | + Line( |
| 102 | + points={{22,66},{80,66},{80,40}}, |
| 103 | + color={28,108,200}, |
| 104 | + thickness=0.5), |
| 105 | + Line( |
| 106 | + points={{78,-28},{78,-70}}, |
| 107 | + color={28,108,200}, |
| 108 | + thickness=0.5), |
| 109 | + Line( |
| 110 | + points={{78,-70},{62,-70},{20,-70}}, |
| 111 | + color={28,108,200}, |
| 112 | + thickness=0.5), |
| 113 | + Line( |
| 114 | + points={{-80,-26},{-80,-68},{-20,-68}}, |
| 115 | + color={28,108,200}, |
| 116 | + thickness=0.5), |
| 117 | + Text( |
| 118 | + extent={{-151,147},{149,107}}, |
| 119 | + textColor={0,0,255}, |
| 120 | + fillPattern=FillPattern.HorizontalCylinder, |
| 121 | + fillColor={0,127,255}, |
| 122 | + textString="%name")}), |
| 123 | + Diagram( |
| 124 | + coordinateSystem( |
| 125 | + preserveAspectRatio=false)), |
| 126 | + Documentation( |
| 127 | + revisions="<html> |
| 128 | +<ul> |
| 129 | +<li> |
| 130 | +March 21, 2025, by Antoine Gautier:<br/> |
| 131 | +First implementation. |
| 132 | +</li> |
| 133 | +</ul> |
| 134 | +</html>", |
| 135 | + info="<html> |
| 136 | +<p> |
| 137 | +This is the refrigerant cycle model used in |
| 138 | +<a href=\"modelica://Buildings.Fluid.Chillers.ModularReversible.TableData2DLoadDep\"> |
| 139 | +Buildings.Fluid.Chillers.ModularReversible.TableData2DLoadDep</a>. |
| 140 | +</p> |
| 141 | +<p> |
| 142 | +In contrast to |
| 143 | +<a href=\"modelica://Buildings.Fluid.Chillers.ModularReversible.BaseClasses.RefrigerantCycle\"> |
| 144 | +Buildings.Fluid.Chillers.ModularReversible.BaseClasses.RefrigerantCycle</a>, |
| 145 | +this model includes a unique component that can be configured to |
| 146 | +either represent a cooling-only chiller (<code>have_switchover=false</code>) |
| 147 | +or a heat recovery chiller (<code>have_switchover=true</code>). |
| 148 | +A unique performance data file is required, providing |
| 149 | +the maximum <i>cooling</i> heat flow rate and power, regardless of the setting |
| 150 | +for <code>have_switchover</code>. |
| 151 | +</p> |
| 152 | +</html>")); |
| 153 | +end RefrigerantCycleHeatRecovery; |
0 commit comments