From d368292e80344eafd9d15718a637cf78f95fe98a Mon Sep 17 00:00:00 2001 From: huan875 Date: Sun, 20 Mar 2022 18:58:50 -0700 Subject: [PATCH 001/214] add relay --- .../OBC/CDL/Discrete/Examples/Relay.mo | 21 +++++++ .../OBC/CDL/Discrete/Examples/package.order | 1 + Buildings/Controls/OBC/CDL/Discrete/Relay.mo | 61 +++++++++++++++++++ .../Controls/OBC/CDL/Discrete/package.order | 1 + .../OBC/CDL/Discrete/Examples/Relay.mos | 8 +++ 5 files changed, 92 insertions(+) create mode 100644 Buildings/Controls/OBC/CDL/Discrete/Examples/Relay.mo create mode 100644 Buildings/Controls/OBC/CDL/Discrete/Relay.mo create mode 100644 Buildings/Resources/Scripts/Dymola/Controls/OBC/CDL/Discrete/Examples/Relay.mos diff --git a/Buildings/Controls/OBC/CDL/Discrete/Examples/Relay.mo b/Buildings/Controls/OBC/CDL/Discrete/Examples/Relay.mo new file mode 100644 index 00000000000..3972ab65626 --- /dev/null +++ b/Buildings/Controls/OBC/CDL/Discrete/Examples/Relay.mo @@ -0,0 +1,21 @@ +within Buildings.Controls.OBC.CDL.Discrete.Examples; +model Relay "Example model for block that outputs a relay signal" + extends Modelica.Icons.Example; + Buildings.Controls.OBC.CDL.Discrete.Relay relay( + yUpperLimit=1, + yLowerLimit=-0.5, + deadBand=1) annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + Modelica.Blocks.Sources.Sine sine( + amplitude=1.2, + f=1/60, + startTime=0.025) "Sine source" + annotation (Placement(transformation(extent={{-60,12},{-40,32}}))); + Modelica.Blocks.Sources.Constant const(k=0) annotation (Placement(transformation(extent={{-60,-30},{-40,-10}}))); +equation + connect(sine.y, relay.u1) annotation (Line(points={{-39,22},{-20,22},{-20,4},{-11,4}}, color={0,0,127})); + connect(const.y, relay.u2) annotation (Line(points={{-39,-20},{-20,-20},{-20,-4.4},{-11,-4.4}}, color={0,0,127})); + annotation (experiment(Tolerance=1e-6, StopTime=1.0), +__Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/CDL/Discrete/Examples/Relay.mos" + "Simulate and plot"),Icon(coordinateSystem(preserveAspectRatio=false)), Diagram(coordinateSystem(preserveAspectRatio=false)), + experiment(StopTime=120, __Dymola_Algorithm="Dassl")); +end Relay; diff --git a/Buildings/Controls/OBC/CDL/Discrete/Examples/package.order b/Buildings/Controls/OBC/CDL/Discrete/Examples/package.order index 202f8ba5eca..5598ef91c1f 100644 --- a/Buildings/Controls/OBC/CDL/Discrete/Examples/package.order +++ b/Buildings/Controls/OBC/CDL/Discrete/Examples/package.order @@ -5,3 +5,4 @@ TriggeredMovingMean TriggeredSampler UnitDelay ZeroOrderHold +Relay diff --git a/Buildings/Controls/OBC/CDL/Discrete/Relay.mo b/Buildings/Controls/OBC/CDL/Discrete/Relay.mo new file mode 100644 index 00000000000..9b4bbe3bc14 --- /dev/null +++ b/Buildings/Controls/OBC/CDL/Discrete/Relay.mo @@ -0,0 +1,61 @@ +within Buildings.Controls.OBC.CDL.Discrete; +block Relay "Outputs a relay signal for model identification" + parameter Real yUpperLimit = 1 "Upper limit for y"; + parameter Real yLowerLimit = 0 "Lower limit for y"; + parameter Real deadBand = 0.5 "Deadband for holding the output value"; + Modelica.Blocks.Interfaces.RealInput u1 "Input 2" annotation (Placement(transformation(extent={{-120,30},{-100,50}}), iconTransformation(extent={{-120,30}, + {-100,50}}))); + Modelica.Blocks.Interfaces.RealInput u2 "Input 1" annotation (Placement(transformation(extent={{-120,-54},{-100,-34}}), iconTransformation(extent={{-120,-54}, + {-100,-34}}))); + Modelica.Blocks.Interfaces.RealOutput y(start=yLowerLimit) + "Relay signal" + annotation (Placement(transformation(extent={{100,-10},{120,10}}))); + Modelica.Units.SI.Time tON_start(start=0); + Modelica.Units.SI.Time tOFF_start(start=0); + Modelica.Units.SI.Duration dtON(start=0); + Modelica.Units.SI.Duration dtOFF(start=0); + + +algorithm + when u1-u2>deadBand then + y :=yUpperLimit; + tON_start:=time; + if tOFF_start>0 then + dtOFF:=time - tOFF_start; + end if; + end when; + when u1-u2<-deadBand then + y :=yLowerLimit; + tOFF_start:=time; + if tON_start>0 then + dtON:=time - tON_start; + end if; + end when; + + annotation (Placement(transformation(extent={{-140,20},{-100,60}}), iconTransformation(extent={{-140,20},{-100,60}})), + Placement(transformation(extent={{-140,20},{-100,60}}), iconTransformation(extent={{-140,20},{-100,60}})), + Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Text( + extent={{-148,160},{152,120}}, + textString="%name", + textColor={0,0,255}), Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={223,211,169}, + lineThickness=5.0, + borderPattern=BorderPattern.Raised, + fillPattern=FillPattern.Solid), + Line(points={{-40,-6},{16,38}}, color={28,108,200}), + Ellipse( + extent={{-50,0},{-38,-12}}, + lineColor={28,108,200}, + fillColor={28,108,200}, + fillPattern=FillPattern.Solid), + Ellipse( + extent={{32,0},{44,-12}}, + lineColor={28,108,200}, + fillColor={28,108,200}, + fillPattern=FillPattern.Solid), + Line(points={{-48,-6},{-84,-6}}, color={28,108,200}), + Line(points={{78,-6},{42,-6}}, color={28,108,200})}), Diagram(coordinateSystem(preserveAspectRatio=false))); +end Relay; diff --git a/Buildings/Controls/OBC/CDL/Discrete/package.order b/Buildings/Controls/OBC/CDL/Discrete/package.order index ccdda1a5936..0fd75f888f4 100644 --- a/Buildings/Controls/OBC/CDL/Discrete/package.order +++ b/Buildings/Controls/OBC/CDL/Discrete/package.order @@ -5,4 +5,5 @@ TriggeredMovingMean TriggeredSampler UnitDelay ZeroOrderHold +Relay Examples diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/CDL/Discrete/Examples/Relay.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/CDL/Discrete/Examples/Relay.mos new file mode 100644 index 00000000000..30a85d04bfb --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/CDL/Discrete/Examples/Relay.mos @@ -0,0 +1,8 @@ +simulateModel("Buildings.Controls.OBC.CDL.Discrete.Examples.Relay", stopTime=120, resultFile="Relay"); +removePlots(false); +createPlot(id=1, position={15, 15, 1484, 920}, y=fill("", 0), range={0.0, 120.0, -1.5, 1.5}, grid=true); +plotExpression(apply(Relay[end].sine.y-Relay[end].const.y), false, "u1-u2", 1); +plotExpression(apply(Relay[end].relay.deadBand), false, "deadBand", 1); +plotExpression(apply( -Relay[end].relay.deadBand), false, " -deadband", 1); +createPlot(id=1, position={15, 15, 1484, 920}, y={"relay.y"}, range={0.0, 120.0, -1.0, 1.5}, grid=true, subPlot=102, colors={{28,108,200}}); + From ea328d56e1a385424e610b2e8673f12daf53051a Mon Sep 17 00:00:00 2001 From: huan875 Date: Wed, 23 Mar 2022 01:29:41 -0700 Subject: [PATCH 002/214] add the tuning module --- .../OBC/CDL/Continuous/AMIGOWithFOTD.mo | 128 +++ .../Controls/OBC/CDL/Continuous/Average.mo | 6 +- .../OBC/CDL/Continuous/NormalizedDelay.mo | 65 ++ Buildings/Controls/OBC/CDL/Continuous/PID.mo | 4 +- .../OBC/CDL/Continuous/PIDWithAutoTuning.mo | 755 ++++++++++++++++++ .../OBC/CDL/Continuous/Validation/FOTD.mo | 72 ++ .../Continuous/Validation/NormalizedDelay.mo | 59 ++ .../OBC/CDL/Continuous/Validation/PIDScale.mo | 6 +- .../Validation/PIDWithAutoTuning.mo | 124 +++ .../OBC/CDL/Continuous/Validation/Sin.mo | 2 +- .../OBC/CDL/Continuous/Validation/Sqrt.mo | 2 +- .../OBC/CDL/Continuous/Validation/Tan.mo | 2 +- .../CDL/Continuous/Validation/package.order | 3 + .../Controls/OBC/CDL/Continuous/package.order | 3 + .../OBC/CDL/Discrete/Examples/Relay.mo | 1 + Buildings/Controls/OBC/CDL/Discrete/Relay.mo | 83 +- .../OBC/CDL/Types/PIDAutoTuneModel.mo | 20 + .../Controls/OBC/CDL/Types/PIDAutoTuner.mo | 22 + .../Controls/OBC/CDL/Types/package.order | 2 + .../OBC/CDL/Continuous/Validation/FOTD.mos | 9 + .../Continuous/Validation/NormalizedDelay.mos | 7 + .../OBC/CDL/Discrete/Examples/Relay.mos | 6 +- 22 files changed, 1343 insertions(+), 38 deletions(-) create mode 100644 Buildings/Controls/OBC/CDL/Continuous/AMIGOWithFOTD.mo create mode 100644 Buildings/Controls/OBC/CDL/Continuous/NormalizedDelay.mo create mode 100644 Buildings/Controls/OBC/CDL/Continuous/PIDWithAutoTuning.mo create mode 100644 Buildings/Controls/OBC/CDL/Continuous/Validation/FOTD.mo create mode 100644 Buildings/Controls/OBC/CDL/Continuous/Validation/NormalizedDelay.mo create mode 100644 Buildings/Controls/OBC/CDL/Continuous/Validation/PIDWithAutoTuning.mo create mode 100644 Buildings/Controls/OBC/CDL/Types/PIDAutoTuneModel.mo create mode 100644 Buildings/Controls/OBC/CDL/Types/PIDAutoTuner.mo create mode 100644 Buildings/Resources/Scripts/Dymola/Controls/OBC/CDL/Continuous/Validation/FOTD.mos create mode 100644 Buildings/Resources/Scripts/Dymola/Controls/OBC/CDL/Continuous/Validation/NormalizedDelay.mos diff --git a/Buildings/Controls/OBC/CDL/Continuous/AMIGOWithFOTD.mo b/Buildings/Controls/OBC/CDL/Continuous/AMIGOWithFOTD.mo new file mode 100644 index 00000000000..80cf71e1960 --- /dev/null +++ b/Buildings/Controls/OBC/CDL/Continuous/AMIGOWithFOTD.mo @@ -0,0 +1,128 @@ +within Buildings.Controls.OBC.CDL.Continuous; +block AMIGOWithFOTD "AMIGO tuning method with a first order model with time delay" + parameter Real yUpperLimit = 1 "Upper limit for y"; + parameter Real yLowerLimit = 0 "Lower limit for y"; + parameter Real deadBand = 0.5 "Deadband for holding the output value"; + parameter Buildings.Controls.OBC.CDL.Types.SimpleController controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PI + "Type of controller"; + Real y0 "Initial value of the process output"; + Real u0 "Initial value of the process input"; + Interfaces.RealInput tau "Normalized time delay" + annotation (Placement(transformation(extent={{-140,80},{-100,120}}), iconTransformation(extent={{-140,80},{-100,120}}))); + Interfaces.RealInput dtOFF "Half-period length of a relay tuner" + annotation (Placement(transformation(extent={{-140,-120},{-100,-80}}),iconTransformation(extent={{-140,-120},{-100,-80}}))); + + Interfaces.RealInput dtON "Half-period length of a relay tuner" + annotation (Placement(transformation(extent={{-140,-72},{-100,-32}}), + iconTransformation(extent={{-140,-78},{-100,-38}}))); + Real Kp "Static gain"; + Real T "Time constant"; + Real L "Time delay"; + Real k + "Gain of controller"; + Real Ti + "Time constant of integrator block"; + Real Td + "Time constant of derivative block"; + Interfaces.RealInput ProcessOutput "Half-period length of a relay tuner" + annotation (Placement(transformation(extent={{-140,28},{-100,68}}), iconTransformation(extent={{-140,28},{-100,68}}))); + Interfaces.RealInput RelayOutput "Half-period length of a relay tuner" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}), iconTransformation(extent={{-140,-20},{-100,20}}))); + IntegratorWithReset Iy annotation (Placement(transformation(extent={{-2,40},{18,60}}))); + IntegratorWithReset Iu annotation (Placement(transformation(extent={{-2,-10},{18,10}}))); + Modelica.Blocks.Sources.RealExpression yDiff(y=ProcessOutput - y0) annotation (Placement(transformation(extent={{-40,40},{-20,60}}))); + Modelica.Blocks.Sources.RealExpression uDiff(y=RelayOutput - u0) annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); + Divide kpCalculator "Static gain of the process" annotation (Placement(transformation(extent={{40,30},{60,10}}))); + Modelica.Blocks.Sources.RealExpression checkZero(y=noEvent(if Iy.y > 0 then Iy.y else 1)) annotation (Placement(transformation(extent={{58,44},{38,64}}))); + Interfaces.BooleanInput experimentStart "If the relay experiment startes" annotation (Placement(transformation( + extent={{-20,-20},{20,20}}, + rotation=-90, + origin={-40,120}), iconTransformation(extent={{-20,-20},{20,20}}, + rotation=-90, + origin={-56,120}))); + + Interfaces.BooleanInput experimentEnd "If the relay experiment ends" annotation (Placement(transformation( + extent={{-20,-20},{20,20}}, + rotation=-90, + origin={40,120}), iconTransformation( + extent={{-20,-20},{20,20}}, + rotation=-90, + origin={54,120}))); +protected + Modelica.Blocks.Sources.BooleanExpression + noReset(y=experimentStart) + "Constant false" annotation (Placement(transformation(extent={{-40,10},{-20,30}}))); + Sources.Constant con(final k=0) "Constant zero" annotation (Placement(transformation(extent={{-80,-26},{-60,-6}}))); + +equation + when experimentStart then + y0 = RelayOutput; + u0 = ProcessOutput; + end when; + when experimentEnd then + Kp = kpCalculator.y; + T = dtON/Modelica.Math.log10((deadBand/abs(Kp)+yLowerLimit+Modelica.Math.exp(tau/(1-tau))*(yUpperLimit - + yLowerLimit))/(yUpperLimit - deadBand/abs(Kp))); + L = T*(tau/(1-tau)); + if controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PI then + k = 1/Kp*(0.15+0.35*T/L-T^2/(T+L)^2); + Ti = (0.35+13*T^2/(T^2+12*T*L+7*L^2))*L; + Td = 0; + else + k = 1/Kp*(0.2+0.45*T/L); + Ti = (0.4*L+0.8*T)/(L+0.1*T)*L; + Td = 0.5*T*L/(0.3*L+T); + end if; + end when; + connect(noReset.y, Iy.trigger) annotation (Line(points={{-19,20},{8,20},{8,38}}, color={255,0,255})); + connect(Iu.trigger, Iy.trigger) annotation (Line(points={{8,-12},{8,-20},{-16,-20},{-16,20},{8,20},{8,38}}, color={255,0,255})); + connect(uDiff.y, Iu.u) annotation (Line(points={{-19,0},{-4,0}}, color={0,0,127})); + connect(yDiff.y, Iy.u) annotation (Line(points={{-19,50},{-4,50}}, color={0,0,127})); + connect(con.y, Iy.y_reset_in) annotation (Line(points={{-58,-16},{-46,-16},{-46,36},{-4,36},{-4,42}}, + color={0,0,127})); + connect(Iu.y_reset_in, Iy.y_reset_in) annotation (Line(points={{-4,-8},{-46,-8},{-46,36},{-4,36},{-4,42}}, + color={0,0,127})); + connect(Iu.y, kpCalculator.u1) annotation (Line(points={{20,0},{32,0},{32,14},{38,14}}, color={0,0,127})); + connect(checkZero.y, kpCalculator.u2) annotation (Line(points={{37,54},{32,54},{32,26},{38,26}}, color={0,0,127})); + annotation ( + defaultComponentName="ave", + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Text( + textColor={0,0,255}, + extent={{-150,110},{150,150}}, + textString="%name"), + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Line( + points={{-8,16}}, + color={0,0,0}), + Line( + points={{-100,60}}, + color={0,0,0}, + thickness=1), + Text( + extent={{226,60},{106,10}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(y, + leftJustified=false, + significantDigits=3)))}), + Documentation( + info=" +

Block that generates the PID parameters with the AMIGO method and a first-order model with time delay.

+", + revisions=" + +")); +end AMIGOWithFOTD; diff --git a/Buildings/Controls/OBC/CDL/Continuous/Average.mo b/Buildings/Controls/OBC/CDL/Continuous/Average.mo index 643c403b66c..b49683af13c 100644 --- a/Buildings/Controls/OBC/CDL/Continuous/Average.mo +++ b/Buildings/Controls/OBC/CDL/Continuous/Average.mo @@ -1,11 +1,9 @@ within Buildings.Controls.OBC.CDL.Continuous; block Average "Output the average of its two inputs" - Interfaces.RealInput u1 - "Connector of Real input signal 1" + Interfaces.RealInput u1 "Connector of Real input signal 1" annotation (Placement(transformation(extent={{-140,40},{-100,80}}),iconTransformation(extent={{-140,40},{-100,80}}))); - Interfaces.RealInput u2 - "Connector of Real input signal 2" + Interfaces.RealInput u2 "Connector of Real input signal 2" annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}),iconTransformation(extent={{-140,-80},{-100,-40}}))); Interfaces.RealOutput y "Connector of Real output signal" diff --git a/Buildings/Controls/OBC/CDL/Continuous/NormalizedDelay.mo b/Buildings/Controls/OBC/CDL/Continuous/NormalizedDelay.mo new file mode 100644 index 00000000000..9f5d4d8fc41 --- /dev/null +++ b/Buildings/Controls/OBC/CDL/Continuous/NormalizedDelay.mo @@ -0,0 +1,65 @@ +within Buildings.Controls.OBC.CDL.Continuous; +block NormalizedDelay "Calculate a time delay based on a relay experiment" + parameter Real gamma(min=1+Constants.eps)=3 "Asymmetry level of a relay tuner"; + Interfaces.RealInput dtON "Half-period length for the upper limit" + annotation (Placement(transformation(extent={{-140,40},{-100,80}}), iconTransformation(extent={{-140,40},{-100,80}}))); + Interfaces.RealInput dtOFF "Half-period length of the lower limit" + annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); + Interfaces.RealOutput y "Half-period ratio" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + + Max max annotation (Placement(transformation(extent={{-62,40},{-42,60}}))); + Min min annotation (Placement(transformation(extent={{-60,-64},{-40,-44}}))); + Divide rho annotation (Placement(transformation(extent={{-16,-10},{4,10}}))); + Modelica.Blocks.Sources.RealExpression zeroCheck(y=noEvent(if min.y > 0 then min.y else 1)) + annotation (Placement(transformation(extent={{-58,-30},{-38,-10}}))); +equation + y=(gamma-rho.y)/(gamma-1)/(0.35*rho.y+0.65); + connect(max.u1, dtON) annotation (Line(points={{-64,56},{-80,56},{-80,60},{-120,60}}, color={0,0,127})); + connect(max.u2, dtOFF) annotation (Line(points={{-64,44},{-82,44},{-82,-60},{-120,-60}}, color={0,0,127})); + connect(min.u1, dtON) annotation (Line(points={{-62,-48},{-92,-48},{-92,60},{-120,60}}, color={0,0,127})); + connect(min.u2, dtOFF) annotation (Line(points={{-62,-60},{-120,-60}}, color={0,0,127})); + connect(rho.u1, max.y) annotation (Line(points={{-18,6},{-30,6},{-30,50},{-40,50}}, color={0,0,127})); + connect(zeroCheck.y, rho.u2) annotation (Line(points={{-37,-20},{-30,-20},{-30,-6},{-18,-6}}, color={0,0,127})); + annotation ( + defaultComponentName="ave", + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100,-100},{100,100}}), + graphics={ + Text( + textColor={0,0,255}, + extent={{-150,110},{150,150}}, + textString="%name"), + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Line( + points={{-8,16}}, + color={0,0,0}), + Line( + points={{-100,60}}, + color={0,0,0}, + thickness=1), + Text( + extent={{226,60},{106,10}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(y, + leftJustified=false, + significantDigits=3)))}), + Documentation( + info=" +

Block that calculates the normalized time delay based on results of a relay experiment for PID tuning

+", + revisions=" + +")); +end NormalizedDelay; diff --git a/Buildings/Controls/OBC/CDL/Continuous/PID.mo b/Buildings/Controls/OBC/CDL/Continuous/PID.mo index 876bc9f38b8..778579092b0 100644 --- a/Buildings/Controls/OBC/CDL/Continuous/PID.mo +++ b/Buildings/Controls/OBC/CDL/Continuous/PID.mo @@ -119,8 +119,8 @@ protected Buildings.Controls.OBC.CDL.Continuous.Subtract antWinErr if with_I "Error for anti-windup compensation" annotation (Placement(transformation(extent={{160,50},{180,70}}))); - Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter antWinGai(k=1/(k*Ni)) - if with_I "Gain for anti-windup compensation" + Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter antWinGai(k=1/(k*Ni)) if + with_I "Gain for anti-windup compensation" annotation (Placement(transformation(extent={{180,-30},{160,-10}}))); Buildings.Controls.OBC.CDL.Logical.Sources.Constant cheYMinMax( final k=yMin < yMax) diff --git a/Buildings/Controls/OBC/CDL/Continuous/PIDWithAutoTuning.mo b/Buildings/Controls/OBC/CDL/Continuous/PIDWithAutoTuning.mo new file mode 100644 index 00000000000..59d3e620258 --- /dev/null +++ b/Buildings/Controls/OBC/CDL/Continuous/PIDWithAutoTuning.mo @@ -0,0 +1,755 @@ +within Buildings.Controls.OBC.CDL.Continuous; +block PIDWithAutoTuning "P, PI, PD, and PID controller with an auto tuning component" + parameter Buildings.Controls.OBC.CDL.Types.SimpleController controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PI + "Type of controller"; + parameter Buildings.Controls.OBC.CDL.Types.PIDAutoTuner tuningMethodType=Buildings.Controls.OBC.CDL.Types.PIDAutoTuner.tau "Type of controller"; + parameter Buildings.Controls.OBC.CDL.Types.PIDAutoTuneModel tuningModeType=Buildings.Controls.OBC.CDL.Types.PIDAutoTuneModel.FOTD "Type of tune model" + annotation (Dialog(enable=tuningMethodType == Buildings.Controls.OBC.CDL.Types.PIDAutoTuner.tau)); + parameter Real k_start( + min=100*Constants.eps)=1 + "Start value of the Gain of controller" + annotation (Dialog(group="Control gains")); + parameter Real Ti_start( + final quantity="Time", + final unit="s", + min=100*Constants.eps)=0.5 + "Start value of the Time constant of integrator block" + annotation (Dialog(group="Control gains",enable=controllerType == CDL.Types.SimpleController.PI or controllerType == CDL.Types.SimpleController.PID)); + parameter Real Td_start( + final quantity="Time", + final unit="s", + min=100*Constants.eps)=0.1 + "Start value of the Time constant of derivative block" + annotation (Dialog(group="Control gains",enable=controllerType == CDL.Types.SimpleController.PD or controllerType == CDL.Types.SimpleController.PID)); + parameter Real yUpperLimit = 1 "Upper limit for y"; + parameter Real yLowerLimit = 0 "Lower limit for y"; + parameter Real deadBand = 0.5 "Deadband for holding the relay output value"; + Real k( + min=100*Constants.eps, + start=k_start) + "Gain of controller"; + Real Ti( + min=100*Constants.eps, + start=Ti_start) + "Time constant of integrator block"; + Real Td( + min=100*Constants.eps, + start=Td_start) + "Time constant of derivative block"; + parameter Real r( + min=100*Constants.eps)=1 + "Typical range of control error, used for scaling the control error"; + parameter Real yMax=1 + "Upper limit of output" + annotation (Dialog(group="Limits")); + parameter Real yMin=0 + "Lower limit of output" + annotation (Dialog(group="Limits")); + parameter Real Ni( + min=100*Constants.eps)=0.9 + "Ni*Ti is time constant of anti-windup compensation" + annotation (Dialog(tab="Advanced",group="Integrator anti-windup",enable=controllerType == CDL.Types.SimpleController.PI or controllerType == CDL.Types.SimpleController.PID)); + parameter Real Nd( + min=100*Constants.eps)=10 + "The higher Nd, the more ideal the derivative block" + annotation (Dialog(tab="Advanced",group="Derivative block",enable=controllerType == CDL.Types.SimpleController.PD or controllerType == CDL.Types.SimpleController.PID)); + parameter Real xi_start=0 + "Initial value of integrator state" + annotation (Dialog(tab="Advanced",group="Initialization",enable=controllerType == CDL.Types.SimpleController.PI or controllerType == CDL.Types.SimpleController.PID)); + parameter Real yd_start=0 + "Initial value of derivative output" + annotation (Dialog(tab="Advanced",group="Initialization",enable=controllerType == CDL.Types.SimpleController.PD or controllerType == CDL.Types.SimpleController.PID)); + parameter Boolean reverseActing=true + "Set to true for reverse acting, or false for direct acting control action"; + Buildings.Controls.OBC.CDL.Interfaces.RealInput u_s + "Connector of setpoint input signal" + annotation (Placement(transformation(extent={{-260,-20},{-220,20}}),iconTransformation(extent={{-140,-20},{-100,20}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealInput u_m + "Connector of measurement input signal" + annotation (Placement(transformation(origin={0,-220},extent={{20,-20},{-20,20}},rotation=270),iconTransformation(extent={{20,-20},{-20,20}},rotation=270,origin={0,-120}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput y + "Connector of actuator output signal" + annotation (Placement(transformation(extent={{220,-20},{260,20}}),iconTransformation(extent={{100,-20},{140,20}}))); + Buildings.Controls.OBC.CDL.Continuous.Subtract controlError "Control error (set point - measurement)" + annotation (Placement(transformation(extent={{-200,-10},{-180,10}}))); + Buildings.Controls.OBC.CDL.Continuous.IntegratorWithReset I(final k=1, + final y_start=xi_start) if with_I + "Integral term" + annotation (Placement(transformation(extent={{-50,-10},{-30,10}}))); + Derivative D( + final k=1, + final T=Td_start/Nd, + final y_start=yd_start) if with_D + "Derivative term" + annotation (Placement(transformation(extent={{-50,60},{-30,80}}))); + Buildings.Controls.OBC.CDL.Continuous.Subtract errP + "P error" + annotation (Placement(transformation(extent={{-140,130},{-120,150}}))); + Buildings.Controls.OBC.CDL.Continuous.Subtract errD if with_D + "D error" + annotation (Placement(transformation(extent={{-140,60},{-120,80}}))); + Buildings.Controls.OBC.CDL.Continuous.Subtract errI1 if with_I + "I error (before anti-windup compensation)" + annotation (Placement(transformation(extent={{-140,-10},{-120,10}}))); + Buildings.Controls.OBC.CDL.Continuous.Subtract errI2 if with_I + "I error (after anti-windup compensation)" + annotation (Placement(transformation(extent={{-90,-10},{-70,10}}))); + Buildings.Controls.OBC.CDL.Continuous.Limiter lim( + final uMax=yMax, + final uMin=yMin) + "Limiter" + annotation (Placement(transformation(extent={{120,80},{140,100}}))); + + Modelica.Blocks.Sources.RealExpression P(y=errP.y*k) annotation (Placement(transformation(extent={{-50,130},{-30,150}}))); + Modelica.Blocks.Sources.RealExpression gainD(y=Td*k*errD.y) if + with_D annotation (Placement(transformation(extent={{-106,60},{-86,80}}))); + Modelica.Blocks.Sources.RealExpression gainI(y=errI2.y*k/Ti) if + with_I + annotation (Placement(transformation(extent={{-106,22},{-86,42}}))); + Modelica.Blocks.Sources.RealExpression antWinGai(y=antWinErr.y/(k*Ni)) if + with_I annotation (Placement(transformation(extent={{178,-34},{158,-14}}))); + Buildings.Controls.OBC.CDL.Discrete.Relay + relay( + yUpperLimit=yUpperLimit, + yLowerLimit=yLowerLimit, + deadBand=deadBand) + annotation (Placement(transformation(extent={{92,154},{112,174}}))); + Buildings.Controls.OBC.CDL.Continuous.Switch switch annotation (Placement(transformation(extent={{138,142},{158,122}}))); + Modelica.Blocks.Sources.BooleanExpression tunePeriodEnd(y=relay.dtON > 0 and relay.dtOFF > 0) annotation (Placement(transformation(extent={{98,122},{118,142}}))); + +protected + final parameter Real revAct= + if reverseActing then + 1 + else + -1 + "Switch for sign for reverse or direct acting controller"; + final parameter Boolean with_I=controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PI or controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PID + "Boolean flag to enable integral action" + annotation (Evaluate=true,HideResult=true); + final parameter Boolean with_D=controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PD or controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PID + "Boolean flag to enable derivative action" + annotation (Evaluate=true,HideResult=true); + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant Dzero( + final k=0) if not with_D + "Zero input signal" + annotation (Evaluate=true,HideResult=true,Placement(transformation(extent={{-20,110},{0,130}}))); + Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter uS_revAct( + final k=revAct/r) "Set point multiplied by reverse action sign" + annotation (Placement(transformation(extent={{-200,30},{-180,50}}))); + Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter uMea_revAct( + final k=revAct/r) "Set point multiplied by reverse action sign" + annotation (Placement(transformation(extent={{-180,-50},{-160,-30}}))); + Buildings.Controls.OBC.CDL.Continuous.Add addPD + "Outputs P and D gains added" + annotation (Placement(transformation(extent={{20,116},{40,136}}))); + Buildings.Controls.OBC.CDL.Continuous.Add addPID + "Outputs P, I and D gains added" + annotation (Placement(transformation(extent={{80,80},{100,100}}))); + Buildings.Controls.OBC.CDL.Continuous.Subtract antWinErr if with_I + "Error for anti-windup compensation" + annotation (Placement(transformation(extent={{160,50},{180,70}}))); + Buildings.Controls.OBC.CDL.Logical.Sources.Constant cheYMinMax( + final k=yMin < yMax) + "Check for values of yMin and yMax" + annotation (Placement(transformation(extent={{120,-160},{140,-140}}))); + Buildings.Controls.OBC.CDL.Utilities.Assert assMesYMinMax( + message="LimPID: Limits must be yMin < yMax") + "Assertion on yMin and yMax" + annotation (Placement(transformation(extent={{160,-160},{180,-140}}))); + + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant Izero( + final k=0) if not with_I + "Zero input signal" + annotation (Placement(transformation(extent={{40,74},{60,94}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant con( + final k=0) if with_I + "Constant zero" + annotation (Placement(transformation(extent={{-100,-50},{-80,-30}}))); + Buildings.Controls.OBC.CDL.Logical.Sources.Constant con1( + final k=false) if with_I + "Constant false" + annotation (Placement(transformation(extent={{-100,-90},{-80,-70}}))); + + block Derivative + "Block that approximates the derivative of the input" + parameter Real k( + unit="1")=1 + "Gains"; + parameter Real T( + final quantity="Time", + final unit="s", + min=1E-60)=0.01 + "Time constant (T>0 required)"; + parameter Real y_start=0 + "Initial value of output (= state)" + annotation (Dialog(group="Initialization")); + Interfaces.RealInput u + "Connector of Real input signal" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); + Interfaces.RealOutput y + "Connector of Real output signal" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + output Real x + "State of block"; + + protected + parameter Boolean zeroGain=abs(k) < 1E-17 + "= true, if gain equals to zero"; + + initial equation + if zeroGain then + x=u; + else + x=u-T*y_start/k; + end if; + + equation + der(x)= + if zeroGain then + 0 + else + (u-x)/T; + y=if zeroGain then + 0 + else + (k/T)*(u-x); + annotation ( + defaultComponentName="der", + Documentation( + info=" +

+This blocks defines the transfer function between the +input u and the output y +as approximated derivative: +

+
+             k * s
+     y = ------------ * u
+            T * s + 1
+
+

+If k=0, the block reduces to y=0. +

+", + revisions=" + +"), + Icon( + coordinateSystem( + preserveAspectRatio=true, + extent={{-100.0,-100.0},{100.0,100.0}}), + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Line( + points={{-80.0,78.0},{-80.0,-90.0}}, + color={192,192,192}), + Polygon( + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid, + points={{-80.0,90.0},{-88.0,68.0},{-72.0,68.0},{-80.0,90.0}}), + Line( + points={{-90.0,-80.0},{82.0,-80.0}}, + color={192,192,192}), + Polygon( + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid, + points={{90.0,-80.0},{68.0,-72.0},{68.0,-88.0},{90.0,-80.0}}), + Line( + origin={-24.667,-27.333}, + points={{-55.333,87.333},{-19.333,-40.667},{86.667,-52.667}}, + color={0,0,127}, + smooth=Smooth.Bezier), + Text( + extent={{-150.0,-150.0},{150.0,-110.0}}, + textString="k=%k"), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Text( + extent={{226,60},{106,10}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(y, + leftJustified=false, + significantDigits=3)))})); + end Derivative; + +equation + when tunePeriodEnd.y then + if tuningMethodType == Buildings.Controls.OBC.CDL.Types.PIDAutoTuner.tau then + k=1; + Td=1; + Ti=1; + end if; + end when; + connect(u_s,uS_revAct.u) + annotation (Line(points={{-240,0},{-212,0},{-212,40},{-202,40}},color={0,0,127})); + connect(u_m,uMea_revAct.u) + annotation (Line(points={{0,-220},{0,-160},{-190,-160},{-190,-40},{-182,-40}},color={0,0,127})); + connect(errI1.u1,uS_revAct.y) + annotation (Line(points={{-142,6},{-170,6},{-170,40},{-178,40}},color={0,0,127})); + connect(addPID.u1,addPD.y) + annotation (Line(points={{78,96},{70,96},{70,126},{42,126}},color={0,0,127})); + connect(addPD.u2,Dzero.y) + annotation (Line(points={{18,120},{2,120}}, color={0,0,127})); + connect(D.y,addPD.u2) + annotation (Line(points={{-28,70},{10,70},{10,120},{18,120}}, color={0,0,127})); + connect(addPID.u2,I.y) + annotation (Line(points={{78,84},{72,84},{72,0},{-28,0}},color={0,0,127})); + connect(antWinErr.u2,lim.y) + annotation (Line(points={{158,54},{150,54},{150,90},{142,90}}, color={0,0,127})); + connect(errI1.y,errI2.u1) + annotation (Line(points={{-118,0},{-100,0},{-100,6},{-92,6}}, + color={0,0,127})); + connect(cheYMinMax.y,assMesYMinMax.u) + annotation (Line(points={{142,-150},{158,-150}},color={255,0,255})); + connect(Izero.y,addPID.u2) + annotation (Line(points={{62,84},{78,84}}, color={0,0,127})); + connect(con.y,I.y_reset_in) + annotation (Line(points={{-78,-40},{-60,-40},{-60,-8},{-52,-8}},color={0,0,127})); + connect(con1.y,I.trigger) + annotation (Line(points={{-78,-80},{-40,-80},{-40,-12}},color={255,0,255})); + connect(uS_revAct.y,errP.u1) + annotation (Line(points={{-178,40},{-170,40},{-170,146},{-142,146}},color={0,0,127})); + connect(errD.u1,uS_revAct.y) + annotation (Line(points={{-142,76},{-170,76},{-170,40},{-178,40}},color={0,0,127})); + connect(addPID.y, lim.u) + annotation (Line(points={{102,90},{118,90}},color={0,0,127})); + connect(addPID.y, antWinErr.u1) annotation (Line(points={{102,90},{110,90},{ + 110,66},{158,66}}, + color={0,0,127})); + connect(u_s, controlError.u1) annotation (Line(points={{-240,0},{-212,0},{ + -212,6},{-202,6}}, color={0,0,127})); + connect(u_m, controlError.u2) annotation (Line(points={{0,-220},{0,-160},{ + -212,-160},{-212,-6},{-202,-6}}, color={0,0,127})); + connect(uMea_revAct.y, errP.u2) annotation (Line(points={{-158,-40},{-150,-40}, + {-150,134},{-142,134}}, color={0,0,127})); + connect(uMea_revAct.y, errD.u2) annotation (Line(points={{-158,-40},{-150,-40}, + {-150,64},{-142,64}}, color={0,0,127})); + connect(uMea_revAct.y, errI1.u2) annotation (Line(points={{-158,-40},{-150, + -40},{-150,-6},{-142,-6}}, color={0,0,127})); + connect(P.y, addPD.u1) annotation (Line(points={{-29,140},{10,140},{10,132},{18,132}}, color={0,0,127})); + connect(gainD.y, D.u) annotation (Line(points={{-85,70},{-52,70}}, color={0,0,127})); + connect(gainI.y, I.u) annotation (Line(points={{-85,32},{-60,32},{-60,0},{-52,0}}, color={0,0,127})); + connect(antWinGai.y, errI2.u2) annotation (Line(points={{157,-24},{-102,-24},{-102,-6},{-92,-6}}, color={0,0,127})); + connect(tunePeriodEnd.y,switch. u2) annotation (Line(points={{119,132},{136,132}}, + color={255,0,255})); + connect(relay.u1, errP.u1) annotation (Line(points={{91,168},{0,168},{0,192},{-170,192},{-170,146},{-142,146}}, color={0,0,127})); + connect(relay.u2, errP.u2) annotation (Line(points={{91,159.6},{-12,159.6},{-12,186},{-150,186},{-150,134},{-142,134}}, color={0,0,127})); + connect(switch.y, y) annotation (Line(points={{160,132},{200,132},{200,0},{240,0}}, color={0,0,127})); + connect(relay.y, switch.u3) annotation (Line(points={{113,162},{130,162},{130,140},{136,140}}, color={0,0,127})); + connect(switch.u1, antWinErr.y) annotation (Line(points={{136,124},{134,124},{134,126},{130,126},{130,110},{190,110},{190,60},{182,60}}, color={0,0,127})); + annotation ( + defaultComponentName="conPID", + Icon( + coordinateSystem( + extent={{-100,-100},{100,100}}), + graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Rectangle( + extent={{-6,-20},{66,-66}}, + lineColor={255,255,255}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + visible=(controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.P), + extent={{-32,-22},{68,-62}}, + lineColor={0,0,0}, + textString="P", + fillPattern=FillPattern.Solid, + fillColor={175,175,175}), + Text( + visible=(controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PI), + extent={{-26,-22},{74,-62}}, + lineColor={0,0,0}, + textString="PI", + fillPattern=FillPattern.Solid, + fillColor={175,175,175}), + Text( + visible=(controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PD), + extent={{-16,-22},{88,-62}}, + lineColor={0,0,0}, + fillPattern=FillPattern.Solid, + fillColor={175,175,175}, + textString="P D"), + Text( + visible=(controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PID), + extent={{-14,-22},{86,-62}}, + lineColor={0,0,0}, + textString="PID", + fillPattern=FillPattern.Solid, + fillColor={175,175,175}), + Polygon( + points={{-80,82},{-88,60},{-72,60},{-80,82}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Line( + points={{-80,68},{-80,-100}}, + color={192,192,192}), + Line( + points={{-90,-80},{70,-80}}, + color={192,192,192}), + Polygon( + points={{74,-80},{52,-72},{52,-88},{74,-80}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Text( + extent={{-150,150},{150,110}}, + textString="%name", + textColor={0,0,255}), + Line( + points={{-80,-80},{-80,-22}}, + color={0,0,0}), + Line( + points={{-80,-22},{6,56}}, + color={0,0,0}), + Line( + points={{6,56},{68,56}}, + color={0,0,0}), + Rectangle( + extent=DynamicSelect({{100,-100},{84,-100}},{{100,-100},{84,-100+(y-yMin)/(yMax-yMin)*200}}), + fillColor={175,175,175}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None, + lineColor={0,0,0})}), + Diagram( + coordinateSystem( + extent={{-220,-200},{220,200}}), graphics={Rectangle( + extent={{-56,180},{-24,-16}}, + fillColor={215,215,215}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None), Text( + extent={{-52,184},{-28,156}}, + pattern=LinePattern.None, + fillColor={215,215,215}, + fillPattern=FillPattern.Solid, + lineColor={0,0,0}, + textString="PID")}), + Documentation( + info=" +

+PID controller in the standard form +

+

+yu = k/r   (e(t) + 1 ⁄ Ti   ∫ e(τ) dτ + Td d⁄dt e(t)), +

+

+where +yu is the control signal before output limitation, +e(t) = us(t) - um(t) is the control error, +with us being the set point and um being +the measured quantity, +k is the gain, +Ti is the time constant of the integral term, +Td is the time constant of the derivative term, +and +r is a scaling factor, with default r=1. +The scaling factor should be set to the typical order of magnitude of the range of the error e. +For example, you may set r=100 to r=1000 +if the control input is a pressure of a heating water circulation pump in units of Pascal, or +leave r=1 if the control input is a room temperature. +

+

+Note that the units of k are the inverse of the units of the control error, +while the units of Ti and Td are seconds. +

+

+The actual control output is +

+

+y = min( ymax, max( ymin, y)), +

+

+where ymin and ymax are limits for the control signal. +

+

P, PI, PD, or PID action

+

+Through the parameter controllerType, the controller can be configured +as P, PI, PD or PID controller. The default configuration is PI. +

+

Reverse or direct action

+

+Through the parameter reverseActing, the controller can be configured to +be reverse or direct acting. +The above standard form is reverse acting, which is the default configuration. +For a reverse acting controller, for a constant set point, +an increase in measurement signal u_m decreases the control output signal y +(Montgomery and McDowall, 2008). +Thus, +

+ +

+If reverseAction=false, then the error e above is multiplied by -1. +

+

Anti-windup compensation

+

+The controller anti-windup compensation is as follows: +Instead of the above basic control law, the implementation is +

+

+yu = k   (e(t) ⁄ r + 1 ⁄ Ti   ∫ (-Δy + e(τ) ⁄ r) dτ + Td ⁄ r d⁄dt e(t)), +

+

+where the anti-windup compensation Δy is +

+

+Δy = (yu - y) ⁄ (k Ni), +

+

+where +Ni > 0 is the time constant for the anti-windup compensation. +To accelerate the anti-windup, decrease Ni. +

+

+Note that the anti-windup term (-Δy + e(τ) ⁄ r) shows that the range of +the typical control error r should be set to a reasonable value so that +

+

+e(τ) ⁄ r = (us(τ) - um(τ)) ⁄ r +

+

+has order of magnitude one, and hence the anti-windup compensation should work well. +

+

Reset of the controller output

+

+Note that this controller implements an integrator anti-windup. Therefore, +for most applications, the controller output does not need to be reset. +However, if the controller is used in conjuction with equipment that is being +switched on, better control performance may be achieved by resetting the controller +output when the equipment is switched on. This is in particular the case in situations +where the equipment control input should continuously increase as the equipment is +switched on, such as a light dimmer that may slowly increase the luminance, or +a variable speed drive of a motor that should continuously increase the speed. In +this case, the controller + +Buildings.Controls.OBC.CDL.Continuous.PIDWithReset +that can reset the output should be used. +

+

Approximation of the derivative term

+

+The derivative of the control error d ⁄ dt e(t) is approximated using +

+

+d⁄dt x(t) = (e(t)-x(t)) Td ⁄ Nd, +

+

+and +

+

+d⁄dt e(t) ≈ Nd (e(t)-x(t)), +

+

+where x(t) is an internal state. +

+

Guidance for tuning the control gains

+

+The parameters of the controller can be manually adjusted by performing +closed loop tests (= controller + plant connected +together) and using the following strategy: +

+
    +
  1. Set very large limits, e.g., set ymax = 1000. +
  2. +
  3. +Select a P-controller and manually enlarge the parameter k +(the total gain of the controller) until the closed-loop response +cannot be improved any more. +
  4. +
  5. +Select a PI-controller and manually adjust the parameters +k and Ti (the time constant of the integrator). +The first value of Ti can be selected such that it is in the +order of the time constant of the oscillations occurring with +the P-controller. If, e.g., oscillations in the order of 100 seconds +occur in the previous step, start with Ti=1/100 seconds. +
  6. +
  7. +If you want to make the reaction of the control loop faster +(but probably less robust against disturbances and measurement noise) +select a PID-controller and manually adjust parameters +k, Ti, Td (time constant of derivative block). +
  8. +
  9. +Set the limits yMax and yMin according to your specification. +
  10. +
  11. +Perform simulations such that the output of the PID controller +goes in its limits. Tune Ni (Ni Ti is the time constant of +the anti-windup compensation) such that the input to the limiter +block (= lim.u) goes quickly enough back to its limits. +If Ni is decreased, this happens faster. If Ni is very large, the +anti-windup compensation is not effective and the controller works bad. +
  12. +
+

References

+

+R. Montgomery and R. McDowall (2008). +\"Fundamentals of HVAC Control Systems.\" +American Society of Heating Refrigerating and Air-Conditioning Engineers Inc. Atlanta, GA. +

+", + revisions=" + +")); +end PIDWithAutoTuning; diff --git a/Buildings/Controls/OBC/CDL/Continuous/Validation/FOTD.mo b/Buildings/Controls/OBC/CDL/Continuous/Validation/FOTD.mo new file mode 100644 index 00000000000..fe5e053690b --- /dev/null +++ b/Buildings/Controls/OBC/CDL/Continuous/Validation/FOTD.mo @@ -0,0 +1,72 @@ +within Buildings.Controls.OBC.CDL.Continuous.Validation; +model FOTD "Validation model for the AMIGOWithFOTD block" + + Buildings.Controls.OBC.CDL.Continuous.AMIGOWithFOTD FOTD(controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PID) + annotation (Placement(transformation(extent={{20,-10},{40,10}}))); + Modelica.Blocks.Sources.Sine sine( + amplitude=1.2, + f=1/60, + offset=0.3, + startTime=0.025) "Sine source" + annotation (Placement(transformation(extent={{-82,30},{-62,50}}))); + Modelica.Blocks.Sources.Constant const(k=0) annotation (Placement(transformation(extent={{-82,-10},{-62,10}}))); + Buildings.Controls.OBC.CDL.Continuous.NormalizedDelay NormalizedDelay(gamma=3) annotation (Placement(transformation(extent={{-40,-60},{-20,-40}}))); + Discrete.Relay relay( + yUpperLimit=4, + yLowerLimit=-0.5, + deadBand=0.5) + annotation (Placement(transformation(extent={{-40,20},{-20,40}}))); +equation + connect(sine.y, relay.u1) annotation (Line(points={{-61,40},{-52,40},{-52,34},{-41,34}}, color={0,0,127})); + connect(relay.u2, const.y) annotation (Line(points={{-41,25.6},{-52,25.6},{-52,0},{-61,0}}, color={0,0,127})); + connect(FOTD.tau, NormalizedDelay.y) annotation (Line(points={{18,10},{-8,10},{-8,-50},{-18,-50}}, color={0,0,127})); + connect(relay.dtON, FOTD.dtON) annotation (Line(points={{-19,32},{10,32},{10,-5.8},{18,-5.8}}, color={0,0,127})); + connect(NormalizedDelay.dtON, FOTD.dtON) + annotation (Line(points={{-42,-44},{-48,-44},{-48,18},{-8,18},{-8,34},{10,34},{10,-5.8},{18,-5.8}}, color={0,0,127})); + connect(relay.dtOFF, FOTD.dtOFF) annotation (Line(points={{-19,24},{-4,24},{-4,-10},{18,-10}}, color={0,0,127})); + connect(NormalizedDelay.dtOFF, FOTD.dtOFF) + annotation (Line(points={{-42,-56},{-58,-56},{-58,-16},{-12,-16},{-12,25.6},{-4,25.6},{-4,-10},{18,-10}}, color={0,0,127})); + connect(relay.uDiff, FOTD.ProcessOutput) annotation (Line(points={{-19,20},{2,20},{2,4.8},{18,4.8}}, color={0,0,127})); + connect(FOTD.RelayOutput, relay.y) annotation (Line(points={{18,0},{6,0},{6,28},{-19,28}}, color={0,0,127})); + connect(relay.experimentStart, FOTD.experimentStart) annotation (Line(points={{-19,36},{24.4,36},{24.4,12}}, color={255,0,255})); + connect(relay.experimentEnd, FOTD.experimentEnd) annotation (Line(points={{-19,40},{35.4,40},{35.4,12}}, color={255,0,255})); + annotation ( + experiment( + StopTime=120, + Tolerance=1e-06, + __Dymola_Algorithm="Dassl"), + __Dymola_Commands( + file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/CDL/Continuous/Validation/FOTD.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +Buildings.Controls.OBC.CDL.Continuous.Tan. +

+

+The input u varies from -1.5 to +1.5. +

+", + revisions=" + +"), + Icon( + 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}})})); +end FOTD; diff --git a/Buildings/Controls/OBC/CDL/Continuous/Validation/NormalizedDelay.mo b/Buildings/Controls/OBC/CDL/Continuous/Validation/NormalizedDelay.mo new file mode 100644 index 00000000000..782f8d61091 --- /dev/null +++ b/Buildings/Controls/OBC/CDL/Continuous/Validation/NormalizedDelay.mo @@ -0,0 +1,59 @@ +within Buildings.Controls.OBC.CDL.Continuous.Validation; +model NormalizedDelay "Validation model for the NormalizedDelay block" + + Modelica.Blocks.Sources.Sine sine( + amplitude=1.2, + f=1/60, + offset=0.3, + startTime=0.025) "Sine source" + annotation (Placement(transformation(extent={{-82,28},{-62,48}}))); + Modelica.Blocks.Sources.Constant const(k=0) annotation (Placement(transformation(extent={{-82,-42},{-62,-22}}))); + Buildings.Controls.OBC.CDL.Continuous.NormalizedDelay NormalizedDelay(gamma=3) annotation (Placement(transformation(extent={{20,-10},{40,10}}))); + Discrete.Relay relay( + yUpperLimit=4, + yLowerLimit=-0.5, + deadBand=0.5) + annotation (Placement(transformation(extent={{-40,-8},{-20,12}}))); +equation + connect(sine.y, relay.u1) annotation (Line(points={{-61,38},{-54,38},{-54,6},{-41,6}}, color={0,0,127})); + connect(relay.u2, const.y) annotation (Line(points={{-41,-2.4},{-54,-2.4},{-54,-32},{-61,-32}}, + color={0,0,127})); + connect(relay.dtON, NormalizedDelay.dtON) annotation (Line(points={{-19,4},{-12,4},{-12,6},{18,6}}, color={0,0,127})); + connect(relay.dtOFF, NormalizedDelay.dtOFF) annotation (Line(points={{-19,-4},{-12,-4},{-12,-6},{18,-6}}, color={0,0,127})); + annotation ( + experiment( + StopTime=120, + Tolerance=1e-06, + __Dymola_Algorithm="Dassl"), + __Dymola_Commands( + file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/CDL/Continuous/Validation/NormalizedDelay.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +Buildings.Controls.OBC.CDL.Continuous.NormalizedDelay. +

+", + revisions=" + +"), + Icon( + 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}})})); +end NormalizedDelay; diff --git a/Buildings/Controls/OBC/CDL/Continuous/Validation/PIDScale.mo b/Buildings/Controls/OBC/CDL/Continuous/Validation/PIDScale.mo index 35cb4586fe1..2ed14785e18 100644 --- a/Buildings/Controls/OBC/CDL/Continuous/Validation/PIDScale.mo +++ b/Buildings/Controls/OBC/CDL/Continuous/Validation/PIDScale.mo @@ -60,15 +60,15 @@ equation connect(gai.y,pidNoSca.u_s) annotation (Line(points={{-18,-50},{-2,-50}},color={0,0,127})); connect(gai.u,pulse.y) - annotation (Line(points={{-42,-50},{-50,-50},{-50,50},{-60,50}},color={0,0,127})); + annotation (Line(points={{-42,-50},{-50,-50},{-50,50},{-58,50}},color={0,0,127})); connect(pidNoSca.y,pla2.u) annotation (Line(points={{22,-50},{38,-50}},color={0,0,127})); connect(pla2.y,gai1.u) annotation (Line(points={{62,-50},{70,-50},{70,-80},{54,-80}},color={0,0,127})); connect(gai1.y,pidNoSca.u_m) - annotation (Line(points={{30,-80},{10,-80},{10,-60}},color={0,0,127})); + annotation (Line(points={{30,-80},{10,-80},{10,-62}},color={0,0,127})); connect(pla2.y_reset_in,resVal.y) - annotation (Line(points={{38,-58},{30,-58},{30,10},{-60,10}},color={0,0,127})); + annotation (Line(points={{38,-58},{30,-58},{30,10},{-58,10}},color={0,0,127})); connect(resSig.y,pla2.trigger) annotation (Line(points={{-58,-30},{26,-30},{26,-64},{50,-64},{50,-62}},color={255,0,255})); annotation ( diff --git a/Buildings/Controls/OBC/CDL/Continuous/Validation/PIDWithAutoTuning.mo b/Buildings/Controls/OBC/CDL/Continuous/Validation/PIDWithAutoTuning.mo new file mode 100644 index 00000000000..536fa8519ab --- /dev/null +++ b/Buildings/Controls/OBC/CDL/Continuous/Validation/PIDWithAutoTuning.mo @@ -0,0 +1,124 @@ +within Buildings.Controls.OBC.CDL.Continuous.Validation; +model PIDWithAutoTuning "Test model for PID controller" + Buildings.Controls.OBC.CDL.Continuous.Sources.Pulse pulse( + period=0.25) "Setpoint" + annotation (Placement(transformation(extent={{-90,14},{-70,34}}))); + Buildings.Controls.OBC.CDL.Continuous.PIDWithAutoTuning limPID( + controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PID, + Ti_start=1, + Td_start=1, + yUpperLimit=10, + yLowerLimit=-8, + deadBand=0.3, + yMin=-1) + "PID controller" + annotation (Placement(transformation(extent={{-30,40},{-10,60}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant const( + k=0.5) + "Measurement data" + annotation (Placement(transformation(extent={{-90,-22},{-70,-2}}))); + Buildings.Controls.OBC.CDL.Continuous.PID limPI( + Ti=1, + Td=1, + yMin=-1, + controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PI) + "PI controller" + annotation (Placement(transformation(extent={{-30,2},{-10,22}}))); + Buildings.Controls.OBC.CDL.Continuous.PID limPD( + Ti=1, + Td=1, + yMin=-1, + controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PD) + "PD controller" + annotation (Placement(transformation(extent={{-30,-30},{-10,-10}}))); + Buildings.Controls.OBC.CDL.Continuous.PID limP( + Ti=1, + Td=1, + yMin=-1, + controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.P) + "P controller" + annotation (Placement(transformation(extent={{-30,-60},{-10,-40}}))); + Buildings.Controls.OBC.CDL.Continuous.PID noLimPID( + Ti=1, + Td=1, + yMax=1e15, + yMin=-1e15, + controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PID) + "PID controller with no output limit" + annotation (Placement(transformation(extent={{-30,-90},{-10,-70}}))); + +equation + connect(pulse.y,limPID.u_s) + annotation (Line(points={{-68,24},{-54,24},{-54,50},{-32,50}},color={0,0,127})); + connect(const.y,limPID.u_m) + annotation (Line(points={{-68,-12},{-62,-12},{-62,30},{-20,30},{-20,38}},color={0,0,127})); + connect(const.y,limPI.u_m) + annotation (Line(points={{-68,-12},{-62,-12},{-62,-2},{-20,-2},{-20,0}},color={0,0,127})); + connect(const.y,limPD.u_m) + annotation (Line(points={{-68,-12},{-62,-12},{-62,-34},{-20,-34},{-20,-32}},color={0,0,127})); + connect(pulse.y,limPI.u_s) + annotation (Line(points={{-68,24},{-54,24},{-54,12},{-32,12}},color={0,0,127})); + connect(pulse.y,limPD.u_s) + annotation (Line(points={{-68,24},{-54,24},{-54,-20},{-32,-20}},color={0,0,127})); + connect(pulse.y,limP.u_s) + annotation (Line(points={{-68,24},{-54,24},{-54,-50},{-32,-50}},color={0,0,127})); + connect(pulse.y,noLimPID.u_s) + annotation (Line(points={{-68,24},{-54,24},{-54,-80},{-32,-80}},color={0,0,127})); + connect(const.y,limP.u_m) + annotation (Line(points={{-68,-12},{-62,-12},{-62,-64},{-20,-64},{-20,-62}},color={0,0,127})); + connect(const.y,noLimPID.u_m) + annotation (Line(points={{-68,-12},{-62,-12},{-62,-96},{-20,-96},{-20,-92}},color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/CDL/Continuous/Validation/PID.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +Buildings.Controls.OBC.CDL.Continuous.PID. +This tests the different settings for the controller types. +

+", + revisions=" + +"), + Icon( + 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}})})); +end PIDWithAutoTuning; diff --git a/Buildings/Controls/OBC/CDL/Continuous/Validation/Sin.mo b/Buildings/Controls/OBC/CDL/Continuous/Validation/Sin.mo index 01b5b35f1ef..b0d8e647a81 100644 --- a/Buildings/Controls/OBC/CDL/Continuous/Validation/Sin.mo +++ b/Buildings/Controls/OBC/CDL/Continuous/Validation/Sin.mo @@ -13,7 +13,7 @@ model Sin equation connect(ramp1.y,sin1.u) - annotation (Line(points={{-39,0},{-12,0}},color={0,0,127})); + annotation (Line(points={{-38,0},{-12,0}},color={0,0,127})); annotation ( experiment( StopTime=1.0, diff --git a/Buildings/Controls/OBC/CDL/Continuous/Validation/Sqrt.mo b/Buildings/Controls/OBC/CDL/Continuous/Validation/Sqrt.mo index 252e32356fa..2919c443ae1 100644 --- a/Buildings/Controls/OBC/CDL/Continuous/Validation/Sqrt.mo +++ b/Buildings/Controls/OBC/CDL/Continuous/Validation/Sqrt.mo @@ -13,7 +13,7 @@ model Sqrt equation connect(ramp1.y,sqrt1.u) - annotation (Line(points={{-39,0},{-12,0}},color={0,0,127})); + annotation (Line(points={{-38,0},{-12,0}},color={0,0,127})); annotation ( experiment( StopTime=1.0, diff --git a/Buildings/Controls/OBC/CDL/Continuous/Validation/Tan.mo b/Buildings/Controls/OBC/CDL/Continuous/Validation/Tan.mo index fe1e4c88d4b..392aa6d8e31 100644 --- a/Buildings/Controls/OBC/CDL/Continuous/Validation/Tan.mo +++ b/Buildings/Controls/OBC/CDL/Continuous/Validation/Tan.mo @@ -13,7 +13,7 @@ model Tan equation connect(ramp1.y,tan1.u) - annotation (Line(points={{-39,0},{-12,0}},color={0,0,127})); + annotation (Line(points={{-38,0},{-12,0}},color={0,0,127})); annotation ( experiment( StopTime=1.0, diff --git a/Buildings/Controls/OBC/CDL/Continuous/Validation/package.order b/Buildings/Controls/OBC/CDL/Continuous/Validation/package.order index 7125fbad6af..f66d1938bd2 100644 --- a/Buildings/Controls/OBC/CDL/Continuous/Validation/package.order +++ b/Buildings/Controls/OBC/CDL/Continuous/Validation/package.order @@ -39,6 +39,7 @@ PIDInitialState PIDScale PIDWithReset PIDWithResetScale +PIDWithAutoTuning Round Sin Sort @@ -46,3 +47,5 @@ Sqrt Subtract Switch Tan +NormalizedDelay +FOTD diff --git a/Buildings/Controls/OBC/CDL/Continuous/package.order b/Buildings/Controls/OBC/CDL/Continuous/package.order index 1e7094411df..b990fbce0c1 100644 --- a/Buildings/Controls/OBC/CDL/Continuous/package.order +++ b/Buildings/Controls/OBC/CDL/Continuous/package.order @@ -34,6 +34,7 @@ Multiply MultiplyByParameter PID PIDWithReset +PIDWithAutoTuning Round Sin Sort @@ -41,5 +42,7 @@ Sqrt Subtract Switch Tan +NormalizedDelay +AMIGOWithFOTD Sources Validation diff --git a/Buildings/Controls/OBC/CDL/Discrete/Examples/Relay.mo b/Buildings/Controls/OBC/CDL/Discrete/Examples/Relay.mo index 3972ab65626..13b95f5fc5a 100644 --- a/Buildings/Controls/OBC/CDL/Discrete/Examples/Relay.mo +++ b/Buildings/Controls/OBC/CDL/Discrete/Examples/Relay.mo @@ -8,6 +8,7 @@ model Relay "Example model for block that outputs a relay signal" Modelica.Blocks.Sources.Sine sine( amplitude=1.2, f=1/60, + offset=0, startTime=0.025) "Sine source" annotation (Placement(transformation(extent={{-60,12},{-40,32}}))); Modelica.Blocks.Sources.Constant const(k=0) annotation (Placement(transformation(extent={{-60,-30},{-40,-10}}))); diff --git a/Buildings/Controls/OBC/CDL/Discrete/Relay.mo b/Buildings/Controls/OBC/CDL/Discrete/Relay.mo index 9b4bbe3bc14..402e9d04673 100644 --- a/Buildings/Controls/OBC/CDL/Discrete/Relay.mo +++ b/Buildings/Controls/OBC/CDL/Discrete/Relay.mo @@ -1,37 +1,59 @@ within Buildings.Controls.OBC.CDL.Discrete; -block Relay "Outputs a relay signal for model identification" - parameter Real yUpperLimit = 1 "Upper limit for y"; - parameter Real yLowerLimit = 0 "Lower limit for y"; +block Relay "Outputs a relay signal for PID tuning experiment" + parameter Buildings.Controls.OBC.CDL.Types.PIDAutoTuner tuningMethodType=Buildings.Controls.OBC.CDL.Types.PIDAutoTuner.tau "Type of autotuner"; + parameter Buildings.Controls.OBC.CDL.Types.PIDAutoTuneModel tuningModeType=Buildings.Controls.OBC.CDL.Types.PIDAutoTuneModel.FOTD "Type of the tune model" + annotation (Dialog(enable=tuningMethodType == Buildings.Controls.OBC.CDL.Types.PIDAutoTuner.tau)); + parameter Real yUpperLimit = 1 "Upper limit of the output"; + parameter Real yLowerLimit = 0 "Lower limit of output"; parameter Real deadBand = 0.5 "Deadband for holding the output value"; - Modelica.Blocks.Interfaces.RealInput u1 "Input 2" annotation (Placement(transformation(extent={{-120,30},{-100,50}}), iconTransformation(extent={{-120,30}, + Interfaces.RealInput u1 "Input 1" annotation (Placement(transformation(extent={{-120,30},{-100,50}}), iconTransformation(extent={{-120,30}, {-100,50}}))); - Modelica.Blocks.Interfaces.RealInput u2 "Input 1" annotation (Placement(transformation(extent={{-120,-54},{-100,-34}}), iconTransformation(extent={{-120,-54}, + Interfaces.RealInput u2 "Input 2" annotation (Placement(transformation(extent={{-120,-54},{-100,-34}}), iconTransformation(extent={{-120,-54}, {-100,-34}}))); - Modelica.Blocks.Interfaces.RealOutput y(start=yLowerLimit) - "Relay signal" - annotation (Placement(transformation(extent={{100,-10},{120,10}}))); - Modelica.Units.SI.Time tON_start(start=0); - Modelica.Units.SI.Time tOFF_start(start=0); - Modelica.Units.SI.Duration dtON(start=0); - Modelica.Units.SI.Duration dtOFF(start=0); + Interfaces.RealOutput y "Ouput" annotation (Placement(transformation(extent={{100,-30},{120,-10}}))); + Interfaces.RealOutput dtON "Half-period length for the upper limit" annotation (Placement(transformation(extent={{100,10},{120,30}}))); + Interfaces.RealOutput dtOFF "Half-period length for the lower limit" annotation (Placement(transformation(extent={{100,-70},{120,-50}}))); + Interfaces.RealOutput uDiff "Difference between u1 and u2" annotation (Placement(transformation(extent={{100,-110},{120,-90}}))); + Interfaces.BooleanOutput experimentStart(start=false) "If the relay experiment starts" annotation (Placement(transformation(extent={{100,50},{120,70}}))); + Interfaces.BooleanOutput experimentEnd(start=false) "If the relay experiment ends" annotation (Placement(transformation(extent={{100,90},{120,110}}))); + Modelica.Units.SI.Time tON_start(start=0) "Time when the output is the upper limit"; + Modelica.Units.SI.Time tOFF_start(start=0) "Time when the output is the lower limit"; - -algorithm - when u1-u2>deadBand then - y :=yUpperLimit; - tON_start:=time; +equation + uDiff=u1-u2; + when uDiff>deadBand then + tON_start = time; if tOFF_start>0 then - dtOFF:=time - tOFF_start; + dtOFF = time - tOFF_start; + else + dtOFF = 0; end if; end when; - when u1-u2<-deadBand then - y :=yLowerLimit; - tOFF_start:=time; + when uDiff<-deadBand then + tOFF_start = time; if tON_start>0 then - dtON:=time - tON_start; + dtON = time - tON_start; + else + dtON = 0; end if; end when; - + when tON_start>0 or tOFF_start>0 then + experimentStart = true; + end when; + when dtON>0 and dtOFF>0 then + experimentEnd = true; + end when; + if uDiff>deadBand then + y = yUpperLimit; + elseif uDiff<-deadBand then + y = yLowerLimit; + elseif tOFF_start>tON_start then + y = yLowerLimit; + elseif tON_start>tOFF_start then + y = yUpperLimit; + else + y = yLowerLimit; + end if; annotation (Placement(transformation(extent={{-140,20},{-100,60}}), iconTransformation(extent={{-140,20},{-100,60}})), Placement(transformation(extent={{-140,20},{-100,60}}), iconTransformation(extent={{-140,20},{-100,60}})), Icon(coordinateSystem(preserveAspectRatio=false), graphics={ @@ -57,5 +79,18 @@ algorithm fillColor={28,108,200}, fillPattern=FillPattern.Solid), Line(points={{-48,-6},{-84,-6}}, color={28,108,200}), - Line(points={{78,-6},{42,-6}}, color={28,108,200})}), Diagram(coordinateSystem(preserveAspectRatio=false))); + Line(points={{78,-6},{42,-6}}, color={28,108,200})}), Diagram(coordinateSystem(preserveAspectRatio=false)), + Documentation(revisions=" + +", info=" +

+Block that outputs the relay signal switches between two discrete values every time the process output +leaves the hysteresis band. +

+")); end Relay; diff --git a/Buildings/Controls/OBC/CDL/Types/PIDAutoTuneModel.mo b/Buildings/Controls/OBC/CDL/Types/PIDAutoTuneModel.mo new file mode 100644 index 00000000000..4426b98efa4 --- /dev/null +++ b/Buildings/Controls/OBC/CDL/Types/PIDAutoTuneModel.mo @@ -0,0 +1,20 @@ +within Buildings.Controls.OBC.CDL.Types; +type PIDAutoTuneModel = enumeration( + FOTD + "First-order models with time delay") "Enumeration to set the reduced order model for PID tuning" + annotation (Documentation(info=" +

+Enumeration for the type of reduced model that is used when tuning a PID controller. +The possible values are: +

+ + + + + + + +
EnumerationDescription
FOTD +First order model with time delay +
+")); diff --git a/Buildings/Controls/OBC/CDL/Types/PIDAutoTuner.mo b/Buildings/Controls/OBC/CDL/Types/PIDAutoTuner.mo new file mode 100644 index 00000000000..6b05ed5f5d2 --- /dev/null +++ b/Buildings/Controls/OBC/CDL/Types/PIDAutoTuner.mo @@ -0,0 +1,22 @@ +within Buildings.Controls.OBC.CDL.Types; +type PIDAutoTuner = enumeration( + tau + "tau") + "Enumeration to set the tuner for PID tuning" + annotation (Documentation(info=" +

+Enumeration for the type of tuner that is used when tuning a PID controller. +The possible values are: +

+ + + + + + + + +
EnumerationDescription
tau +An autotuner for single-input-single-ouput systems that uses asymmetric relay feedback to create limit cycle oscillations +
+")); diff --git a/Buildings/Controls/OBC/CDL/Types/package.order b/Buildings/Controls/OBC/CDL/Types/package.order index 5b39c196659..4970d035f98 100644 --- a/Buildings/Controls/OBC/CDL/Types/package.order +++ b/Buildings/Controls/OBC/CDL/Types/package.order @@ -2,3 +2,5 @@ Extrapolation SimpleController Smoothness ZeroTime +PIDAutoTuner +PIDAutoTuneModel diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/CDL/Continuous/Validation/FOTD.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/CDL/Continuous/Validation/FOTD.mos new file mode 100644 index 00000000000..c50b8862885 --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/CDL/Continuous/Validation/FOTD.mos @@ -0,0 +1,9 @@ +simulateModel("Buildings.Controls.OBC.CDL.Continuous.Validation.FOTD", stopTime=120, tolerance=1e-06, resultFile="FOTD"); +removePlots(false); +createPlot(id=1, position={0, 0, 2841, 1894}, y={"FOTD.experimentStart", "FOTD.experimentEnd"}, range={0.0, 120.0, -1.0, 2.0}, grid=true, colors={{28,108,200}, {28,108,200}}); +createPlot(id=1, position={0, 0, 2841, 1894}, y={"relay.y", "relay.uDiff"}, range={0.0, 120.0, -5.0, 10.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={0, 0, 2841, 1894}, y={"relay.dtON", "relay.dtOFF"}, range={0.0, 120.0, -20.0, 40.0}, grid=true, subPlot=103, colors={{28,108,200}, {238,46,47}}, displayUnits={"s", "s"}); +createPlot(id=1, position={0, 0, 2841, 1894}, y={"FOTD.k"}, range={0.0, 120.0, -0.002, 0.006}, grid=true, subPlot=104, colors={{28,108,200}}); +createPlot(id=1, position={0, 0, 2841, 1894}, y={"FOTD.Ti"}, range={0.0, 120.0, -50.0, 100.0}, grid=true, subPlot=105, colors={{28,108,200}}); +createPlot(id=1, position={0, 0, 2841, 1894}, y={"FOTD.Td"}, range={0.0, 120.0, -20.0, 40.0}, grid=true, subPlot=106, colors={{28,108,200}}); + diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/CDL/Continuous/Validation/NormalizedDelay.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/CDL/Continuous/Validation/NormalizedDelay.mos new file mode 100644 index 00000000000..a57e9013f9c --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/CDL/Continuous/Validation/NormalizedDelay.mos @@ -0,0 +1,7 @@ +simulateModel("Buildings.Controls.OBC.CDL.Continuous.Validation.NormalizedDelay", stopTime=120, tolerance=1e-06, resultFile="NormalizedDelay"); +removePlots(false); +createPlot(id=1, position={0, 0, 2467, 1894}, y={"relay.uDiff", "relay.deadBand"}, range={0.0, 120.0, -1.0, 2.0}, grid=true, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={0, 0, 2467, 1894}, y={"relay.y"}, range={0.0, 120.0, -1.0, 5.0}, grid=true, subPlot=102, colors={{28,108,200}}); +createPlot(id=1, position={0, 0, 2467, 1894}, y={"NormalizedDelay.dtON", "NormalizedDelay.dtOFF"}, range={0.0, 120.0, -10.0, 40.0}, grid=true, subPlot=103, colors={{28,108,200}, {238,46,47}}, displayUnits={"s", "s"}); +createPlot(id=1, position={0, 0, 2467, 1894}, y={"NormalizedDelay.y"}, range={0.0, 120.0, -2.0, 3.0}, grid=true, subPlot=104, colors={{28,108,200}}); + diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/CDL/Discrete/Examples/Relay.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/CDL/Discrete/Examples/Relay.mos index 30a85d04bfb..d2974326ceb 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/CDL/Discrete/Examples/Relay.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/CDL/Discrete/Examples/Relay.mos @@ -1,8 +1,10 @@ simulateModel("Buildings.Controls.OBC.CDL.Discrete.Examples.Relay", stopTime=120, resultFile="Relay"); removePlots(false); -createPlot(id=1, position={15, 15, 1484, 920}, y=fill("", 0), range={0.0, 120.0, -1.5, 1.5}, grid=true); +createPlot(id=1, position={15, 15, 2400, 1668}, y=fill("", 0), range={0.0, 120.0, -1.5, 1.5}, grid=true); plotExpression(apply(Relay[end].sine.y-Relay[end].const.y), false, "u1-u2", 1); plotExpression(apply(Relay[end].relay.deadBand), false, "deadBand", 1); plotExpression(apply( -Relay[end].relay.deadBand), false, " -deadband", 1); -createPlot(id=1, position={15, 15, 1484, 920}, y={"relay.y"}, range={0.0, 120.0, -1.0, 1.5}, grid=true, subPlot=102, colors={{28,108,200}}); +createPlot(id=1, position={15, 15, 2400, 1668}, y={"relay.y"}, range={0.0, 120.0, -1.0, 1.5}, grid=true, subPlot=102, colors={{28,108,200}}); +createPlot(id=1, position={15, 15, 2400, 1668}, y={"relay.dtON", "relay.dtOFF"}, range={0.0, 120.0, -10.0, 40.0}, grid=true, subPlot=103, colors={{28,108,200}, {238,46,47}}, displayUnits={"s", "s"}); +createPlot(id=1, position={15, 15, 2400, 1668}, y={"relay.tON_start", "relay.tOFF_start"}, range={0.0, 120.0, -50.0, 150.0}, grid=true, subPlot=104, colors={{28,108,200}, {238,46,47}}, displayUnits={"s", "s"}); From 747af859471dd21b99cab0c3eb6bed3573055fb8 Mon Sep 17 00:00:00 2001 From: huan875 Date: Thu, 31 Mar 2022 08:39:50 -0700 Subject: [PATCH 003/214] major updates --- .../OBC/CDL/Continuous/AMIGOWithFOTD.mo | 19 +- .../OBC/CDL/Continuous/NormalizedDelay.mo | 15 +- .../OBC/CDL/Continuous/PIDWithAutoTuning.mo | 318 +++--------------- .../Validation/{FOTD.mo => AMIGOWithFOTD.mo} | 20 +- .../Continuous/Validation/NormalizedDelay.mo | 5 +- .../Validation/PIDWithAutoTuning.mo | 104 ++---- .../CDL/Continuous/Validation/package.order | 2 +- .../OBC/CDL/Discrete/Examples/Relay.mo | 5 +- Buildings/Controls/OBC/CDL/Discrete/Relay.mo | 16 +- .../{FOTD.mos => AMIGOWithFOTD.mos} | 2 +- .../Validation/PIDWithAutoTuning.mos | 14 + 11 files changed, 111 insertions(+), 409 deletions(-) rename Buildings/Controls/OBC/CDL/Continuous/Validation/{FOTD.mo => AMIGOWithFOTD.mo} (87%) rename Buildings/Resources/Scripts/Dymola/Controls/OBC/CDL/Continuous/Validation/{FOTD.mos => AMIGOWithFOTD.mos} (93%) create mode 100644 Buildings/Resources/Scripts/Dymola/Controls/OBC/CDL/Continuous/Validation/PIDWithAutoTuning.mos diff --git a/Buildings/Controls/OBC/CDL/Continuous/AMIGOWithFOTD.mo b/Buildings/Controls/OBC/CDL/Continuous/AMIGOWithFOTD.mo index 80cf71e1960..117d3924857 100644 --- a/Buildings/Controls/OBC/CDL/Continuous/AMIGOWithFOTD.mo +++ b/Buildings/Controls/OBC/CDL/Continuous/AMIGOWithFOTD.mo @@ -1,10 +1,11 @@ within Buildings.Controls.OBC.CDL.Continuous; -block AMIGOWithFOTD "AMIGO tuning method with a first order model with time delay" +block AMIGOWithFOTD "AMIGO tuning method for a first order model with time delay" + parameter Buildings.Controls.OBC.CDL.Types.SimpleController controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PI + "Type of controller"; parameter Real yUpperLimit = 1 "Upper limit for y"; parameter Real yLowerLimit = 0 "Lower limit for y"; parameter Real deadBand = 0.5 "Deadband for holding the output value"; - parameter Buildings.Controls.OBC.CDL.Types.SimpleController controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PI - "Type of controller"; + Real y0 "Initial value of the process output"; Real u0 "Initial value of the process input"; Interfaces.RealInput tau "Normalized time delay" @@ -55,15 +56,16 @@ protected Sources.Constant con(final k=0) "Constant zero" annotation (Placement(transformation(extent={{-80,-26},{-60,-6}}))); equation + assert(controllerType==Buildings.Controls.OBC.CDL.Types.SimpleController.PI or controllerType==Buildings.Controls.OBC.CDL.Types.SimpleController.PID, "Either PI or PID should be selected"); when experimentStart then y0 = RelayOutput; u0 = ProcessOutput; end when; when experimentEnd then Kp = kpCalculator.y; - T = dtON/Modelica.Math.log10((deadBand/abs(Kp)+yLowerLimit+Modelica.Math.exp(tau/(1-tau))*(yUpperLimit - + T = dtON/Modelica.Math.log10((deadBand/abs(Kp)+yLowerLimit+Modelica.Math.exp(tau/(1-tau+Constants.eps))*(yUpperLimit - yLowerLimit))/(yUpperLimit - deadBand/abs(Kp))); - L = T*(tau/(1-tau)); + L = T*(tau/(1-tau+Constants.eps)); if controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PI then k = 1/Kp*(0.15+0.35*T/L-T^2/(T+L)^2); Ti = (0.35+13*T^2/(T^2+12*T*L+7*L^2))*L; @@ -116,13 +118,12 @@ equation Documentation( info="

Block that generates the PID parameters with the AMIGO method and a first-order model with time delay.

+

References

+

Åström, K. J. and T. Hägglund (2006). Advanced PID Control. eng. ISA - The Instrumentation, Systems, and Automation Society; Research Triangle Park, NC 27709. isbn: 978-1-55617-942

", revisions="
    -
  • -March 3, 2022, by Sen Huang:
    -First implementation. -
  • +
  • March 30, 2022, by Sen Huang:
    First implementation.
")); end AMIGOWithFOTD; diff --git a/Buildings/Controls/OBC/CDL/Continuous/NormalizedDelay.mo b/Buildings/Controls/OBC/CDL/Continuous/NormalizedDelay.mo index 9f5d4d8fc41..8d4905e36bd 100644 --- a/Buildings/Controls/OBC/CDL/Continuous/NormalizedDelay.mo +++ b/Buildings/Controls/OBC/CDL/Continuous/NormalizedDelay.mo @@ -1,19 +1,21 @@ within Buildings.Controls.OBC.CDL.Continuous; block NormalizedDelay "Calculate a time delay based on a relay experiment" - parameter Real gamma(min=1+Constants.eps)=3 "Asymmetry level of a relay tuner"; + parameter Real gamma=3 "Asymmetry level of a relay tuner"; Interfaces.RealInput dtON "Half-period length for the upper limit" annotation (Placement(transformation(extent={{-140,40},{-100,80}}), iconTransformation(extent={{-140,40},{-100,80}}))); Interfaces.RealInput dtOFF "Half-period length of the lower limit" annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); - Interfaces.RealOutput y "Half-period ratio" + Interfaces.RealOutput y "Normalized time delay" annotation (Placement(transformation(extent={{100,-20},{140,20}}))); - Max max annotation (Placement(transformation(extent={{-62,40},{-42,60}}))); Min min annotation (Placement(transformation(extent={{-60,-64},{-40,-44}}))); - Divide rho annotation (Placement(transformation(extent={{-16,-10},{4,10}}))); + Divide rho "Half-period ratio" annotation (Placement(transformation(extent={{-16,-10},{4,10}}))); Modelica.Blocks.Sources.RealExpression zeroCheck(y=noEvent(if min.y > 0 then min.y else 1)) annotation (Placement(transformation(extent={{-58,-30},{-38,-10}}))); equation + assert(abs(gamma-1)>0.01, "The relay signal should be asymmetric"); +// assert(rho.y>1, "The half-period ratio should be larger than 1"); +// assert(y>1 or y<0, "Invalid value for the normalized time delay"); y=(gamma-rho.y)/(gamma-1)/(0.35*rho.y+0.65); connect(max.u1, dtON) annotation (Line(points={{-64,56},{-80,56},{-80,60},{-120,60}}, color={0,0,127})); connect(max.u2, dtOFF) annotation (Line(points={{-64,44},{-82,44},{-82,-60},{-120,-60}}, color={0,0,127})); @@ -56,10 +58,7 @@ equation ", revisions="
    -
  • -March 3, 2022, by Sen Huang:
    -First implementation. -
  • +
  • March 30, 2022, by Sen Huang:
    First implementation.
")); end NormalizedDelay; diff --git a/Buildings/Controls/OBC/CDL/Continuous/PIDWithAutoTuning.mo b/Buildings/Controls/OBC/CDL/Continuous/PIDWithAutoTuning.mo index 59d3e620258..9dae5b76cad 100644 --- a/Buildings/Controls/OBC/CDL/Continuous/PIDWithAutoTuning.mo +++ b/Buildings/Controls/OBC/CDL/Continuous/PIDWithAutoTuning.mo @@ -21,9 +21,10 @@ block PIDWithAutoTuning "P, PI, PD, and PID controller with an auto tuning compo min=100*Constants.eps)=0.1 "Start value of the Time constant of derivative block" annotation (Dialog(group="Control gains",enable=controllerType == CDL.Types.SimpleController.PD or controllerType == CDL.Types.SimpleController.PID)); - parameter Real yUpperLimit = 1 "Upper limit for y"; - parameter Real yLowerLimit = 0 "Lower limit for y"; - parameter Real deadBand = 0.5 "Deadband for holding the relay output value"; + parameter Real yUpperLimit = 1 "Upper limit of the output"; + parameter Real yLowerLimit = -0.5 "Lower limit of the output"; + parameter Real deadBand = 0.5 "Deadband for holding the relay output value in the relay tuner"; + Real k( min=100*Constants.eps, start=k_start) @@ -117,6 +118,14 @@ block PIDWithAutoTuning "P, PI, PD, and PID controller with an auto tuning compo Buildings.Controls.OBC.CDL.Continuous.Switch switch annotation (Placement(transformation(extent={{138,142},{158,122}}))); Modelica.Blocks.Sources.BooleanExpression tunePeriodEnd(y=relay.dtON > 0 and relay.dtOFF > 0) annotation (Placement(transformation(extent={{98,122},{118,142}}))); + Buildings.Controls.OBC.CDL.Continuous.AMIGOWithFOTD FOTDTuneModel( + yUpperLimit=yUpperLimit, + yLowerLimit=yLowerLimit, + deadBand=deadBand, + controllerType=controllerType) if tuningModeType==Buildings.Controls.OBC.CDL.Types.PIDAutoTuneModel.FOTD + annotation (Placement(transformation(extent={{120,-100},{100,-80}}))); + Buildings.Controls.OBC.CDL.Continuous.NormalizedDelay tauTuner(gamma=max(yUpperLimit, abs(yLowerLimit))/min(yUpperLimit, abs(yLowerLimit))) if tuningMethodType == Buildings.Controls.OBC.CDL.Types.PIDAutoTuner.tau + annotation (Placement(transformation(extent={{170,-100},{150,-80}}))); protected final parameter Real revAct= if reverseActing then @@ -319,10 +328,10 @@ Modelica Standard Library. equation when tunePeriodEnd.y then - if tuningMethodType == Buildings.Controls.OBC.CDL.Types.PIDAutoTuner.tau then - k=1; - Td=1; - Ti=1; + if tuningMethodType == Buildings.Controls.OBC.CDL.Types.PIDAutoTuner.tau and tuningModeType==Buildings.Controls.OBC.CDL.Types.PIDAutoTuneModel.FOTD then + k=FOTDTuneModel.k; + Td=FOTDTuneModel.Td; + Ti=FOTDTuneModel.Ti; end if; end when; connect(u_s,uS_revAct.u) @@ -381,7 +390,23 @@ equation connect(relay.u2, errP.u2) annotation (Line(points={{91,159.6},{-12,159.6},{-12,186},{-150,186},{-150,134},{-142,134}}, color={0,0,127})); connect(switch.y, y) annotation (Line(points={{160,132},{200,132},{200,0},{240,0}}, color={0,0,127})); connect(relay.y, switch.u3) annotation (Line(points={{113,162},{130,162},{130,140},{136,140}}, color={0,0,127})); - connect(switch.u1, antWinErr.y) annotation (Line(points={{136,124},{134,124},{134,126},{130,126},{130,110},{190,110},{190,60},{182,60}}, color={0,0,127})); + if tuningMethodType == Buildings.Controls.OBC.CDL.Types.PIDAutoTuner.tau then + connect(tauTuner.dtON, relay.dtON) annotation (Line(points={{172,-84},{212,-84},{212,166},{113,166}}, color={0,0,127})); + connect(tauTuner.dtOFF, relay.dtOFF) annotation (Line(points={{172,-96},{208,-96},{208,158},{113,158}}, color={0,0,127})); + end if; + if tuningModeType==Buildings.Controls.OBC.CDL.Types.PIDAutoTuneModel.FOTD then + connect(FOTDTuneModel.RelayOutput, switch.u3) + annotation (Line(points={{122,-90},{134,-90},{134,56},{60,56},{60,148},{130,148},{130,140},{136,140}}, color={0,0,127})); + connect(FOTDTuneModel.dtON, relay.dtON) + annotation (Line(points={{122,-95.8},{134,-95.8},{134,-96},{144,-96},{144,-106},{188,-106},{188,-84},{212,-84},{212,166},{113,166}}, color={0,0,127})); + connect(FOTDTuneModel.dtOFF, relay.dtOFF) + annotation (Line(points={{122,-100},{134,-100},{134,-114},{200,-114},{200,-96},{208,-96},{208,158},{113,158}}, color={0,0,127})); + connect(relay.experimentStart, FOTDTuneModel.experimentStart) annotation (Line(points={{113,170},{194,170},{194,-46},{115.6,-46},{115.6,-78}}, color={255,0,255})); + connect(relay.experimentEnd, FOTDTuneModel.experimentEnd) annotation (Line(points={{113,174},{204,174},{204,-54},{104.6,-54},{104.6,-78}}, color={255,0,255})); + connect(relay.uDiff, FOTDTuneModel.ProcessOutput) annotation (Line(points={{113,154},{186,154},{186,-64},{128,-64},{128,-85.2},{122,-85.2}}, color={0,0,127})); + connect(tauTuner.y, FOTDTuneModel.tau) annotation (Line(points={{148,-90},{138,-90},{138,-80},{122,-80}}, color={0,0,127})); + end if; + connect(lim.y, switch.u1) annotation (Line(points={{142,90},{172,90},{172,110},{130,110},{130,124},{136,124}}, color={0,0,127})); annotation ( defaultComponentName="conPID", Icon( @@ -476,280 +501,15 @@ equation textString="PID")}), Documentation( info=" -

-PID controller in the standard form -

-

-yu = k/r   (e(t) + 1 ⁄ Ti   ∫ e(τ) dτ + Td d⁄dt e(t)), -

-

-where -yu is the control signal before output limitation, -e(t) = us(t) - um(t) is the control error, -with us being the set point and um being -the measured quantity, -k is the gain, -Ti is the time constant of the integral term, -Td is the time constant of the derivative term, -and -r is a scaling factor, with default r=1. -The scaling factor should be set to the typical order of magnitude of the range of the error e. -For example, you may set r=100 to r=1000 -if the control input is a pressure of a heating water circulation pump in units of Pascal, or -leave r=1 if the control input is a room temperature. -

-

-Note that the units of k are the inverse of the units of the control error, -while the units of Ti and Td are seconds. -

-

-The actual control output is -

-

-y = min( ymax, max( ymin, y)), -

-

-where ymin and ymax are limits for the control signal. -

-

P, PI, PD, or PID action

-

-Through the parameter controllerType, the controller can be configured -as P, PI, PD or PID controller. The default configuration is PI. -

-

Reverse or direct action

-

-Through the parameter reverseActing, the controller can be configured to -be reverse or direct acting. -The above standard form is reverse acting, which is the default configuration. -For a reverse acting controller, for a constant set point, -an increase in measurement signal u_m decreases the control output signal y -(Montgomery and McDowall, 2008). -Thus, -

-
    -
  • - for a heating coil with a two-way valve, leave reverseActing = true, but -
  • -
  • - for a cooling coil with a two-way valve, set reverseActing = false. -
  • -
-

-If reverseAction=false, then the error e above is multiplied by -1. -

-

Anti-windup compensation

-

-The controller anti-windup compensation is as follows: -Instead of the above basic control law, the implementation is -

-

-yu = k   (e(t) ⁄ r + 1 ⁄ Ti   ∫ (-Δy + e(τ) ⁄ r) dτ + Td ⁄ r d⁄dt e(t)), -

-

-where the anti-windup compensation Δy is -

-

-Δy = (yu - y) ⁄ (k Ni), -

-

-where -Ni > 0 is the time constant for the anti-windup compensation. -To accelerate the anti-windup, decrease Ni. -

-

-Note that the anti-windup term (-Δy + e(τ) ⁄ r) shows that the range of -the typical control error r should be set to a reasonable value so that -

-

-e(τ) ⁄ r = (us(τ) - um(τ)) ⁄ r -

-

-has order of magnitude one, and hence the anti-windup compensation should work well. -

-

Reset of the controller output

-

-Note that this controller implements an integrator anti-windup. Therefore, -for most applications, the controller output does not need to be reset. -However, if the controller is used in conjuction with equipment that is being -switched on, better control performance may be achieved by resetting the controller -output when the equipment is switched on. This is in particular the case in situations -where the equipment control input should continuously increase as the equipment is -switched on, such as a light dimmer that may slowly increase the luminance, or -a variable speed drive of a motor that should continuously increase the speed. In -this case, the controller - -Buildings.Controls.OBC.CDL.Continuous.PIDWithReset -that can reset the output should be used. -

-

Approximation of the derivative term

-

-The derivative of the control error d ⁄ dt e(t) is approximated using -

-

-d⁄dt x(t) = (e(t)-x(t)) Td ⁄ Nd, -

-

-and -

-

-d⁄dt e(t) ≈ Nd (e(t)-x(t)), -

-

-where x(t) is an internal state. -

-

Guidance for tuning the control gains

-

-The parameters of the controller can be manually adjusted by performing -closed loop tests (= controller + plant connected -together) and using the following strategy: -

-
    -
  1. Set very large limits, e.g., set ymax = 1000. -
  2. -
  3. -Select a P-controller and manually enlarge the parameter k -(the total gain of the controller) until the closed-loop response -cannot be improved any more. -
  4. -
  5. -Select a PI-controller and manually adjust the parameters -k and Ti (the time constant of the integrator). -The first value of Ti can be selected such that it is in the -order of the time constant of the oscillations occurring with -the P-controller. If, e.g., oscillations in the order of 100 seconds -occur in the previous step, start with Ti=1/100 seconds. -
  6. -
  7. -If you want to make the reaction of the control loop faster -(but probably less robust against disturbances and measurement noise) -select a PID-controller and manually adjust parameters -k, Ti, Td (time constant of derivative block). -
  8. -
  9. -Set the limits yMax and yMin according to your specification. -
  10. -
  11. -Perform simulations such that the output of the PID controller -goes in its limits. Tune Ni (Ni Ti is the time constant of -the anti-windup compensation) such that the input to the limiter -block (= lim.u) goes quickly enough back to its limits. -If Ni is decreased, this happens faster. If Ni is very large, the -anti-windup compensation is not effective and the controller works bad. -
  12. -
-

References

-

-R. Montgomery and R. McDowall (2008). -\"Fundamentals of HVAC Control Systems.\" -American Society of Heating Refrigerating and Air-Conditioning Engineers Inc. Atlanta, GA. -

+

PID controller with an autotuning feature.

+


This module is modified based on Buildings.Controls.OBC.CDL.Continuous.PID. We added the automatic controller tuning using relay-based model identification.

+

It allows users to select the tuning methods and the corrsponding model for PID tuning.

+


References

+

R. Montgomery and R. McDowall (2008). "Fundamentals of HVAC Control Systems." American Society of Heating Refrigerating and Air-Conditioning Engineers Inc. Atlanta, GA.

", revisions="
    -
  • -November 12, 2020, by Michael Wetter:
    -Reformulated to remove dependency to Modelica.Units.SI.
    -This is for -issue 2243. -
  • -
  • -October 15, 2020, by Michael Wetter:
    -Added scaling factor r, removed set point weights wp and wd. -Revised documentation.
    -This is for issue 2182. -
  • -
  • -August 4, 2020, by Jianjun Hu:
    -Removed the conditional inputs trigger and y_rest_in. -Refactored to internally implement the derivative block.
    -This is for issue 2056. -
  • -
  • -June 1, 2020, by Michael Wetter:
    -Corrected wrong convention of reverse and direct action.
    -This is for issue 1365. -
  • -
  • -April 23, 2020, by Michael Wetter:
    -Changed default parameters for limits yMax from unspecified to 1 -and yMin from -yMax to 0.
    -This is for -issue 1888. -
  • -
  • -April 7, 2020, by Michael Wetter:
    -Reimplemented block using only CDL constructs. -This refactoring removes the no longer use parameters xd_start that was -used to initialize the state of the derivative term. This state is now initialized -based on the requested initial output yd_start which is a new parameter -with a default of 0. -Also, removed the parameters y_start and initType because -the initial output of the controller can be set by using xi_start -and yd_start. -This is a non-backward compatible change, made to simplify the controller through -the removal of options that can be realized differently and are hardly ever used. -This refactoring also removes the parameter strict that -was used in the output limiter. The new implementation enforces a strict check by default.
    -This is for -issue 1878. -
  • -
  • -March 9, 2020, by Michael Wetter:
    -Corrected unit declaration for gain k.
    -See issue 1821. -
  • -
  • -March 2, 2020, by Michael Wetter:
    -Changed icon to display dynamically the output value. -
  • -
  • -February 25, 2020, by Michael Wetter:
    -Changed icon to display the output value. -
  • -
  • -October 19, 2019, by Michael Wetter:
    -Disabled homotopy to ensure bounded outputs -by copying the implementation from MSL 3.2.3 and by -hardcoding the implementation for homotopyType=NoHomotopy.
    -See issue 1221. -
  • -
  • -November 13, 2017, by Michael Wetter:
    -Changed default controller type from PID to PI. -
  • -
  • -November 6, 2017, by Michael Wetter:
    -Explicitly declared types and used integrator with reset from CDL. -
  • -
  • -October 22, 2017, by Michael Wetter:
    -Added to CDL to have a PI controller with integrator reset. -
  • -
  • -September 29, 2016, by Michael Wetter:
    -Refactored model. -
  • -
  • -August 25, 2016, by Michael Wetter:
    -Removed parameter limitsAtInit because it was only propagated to -the instance limiter, but this block no longer makes use of this parameter. -This is a non-backward compatible change.
    -Revised implemenentation, added comments, made some parameter in the instances final. -
  • -
  • July 18, 2016, by Philipp Mehrfeld:
    -Added integrator reset. -This is for issue 494. -
  • -
  • -March 15, 2016, by Michael Wetter:
    -Changed the default value to strict=true in order to avoid events -when the controller saturates. -This is for issue 433. -
  • -
  • -February 24, 2010, by Michael Wetter:
    -First implementation. -
  • +
  • March 30, 2022, by Sen Huang:
    First implementation.
")); end PIDWithAutoTuning; diff --git a/Buildings/Controls/OBC/CDL/Continuous/Validation/FOTD.mo b/Buildings/Controls/OBC/CDL/Continuous/Validation/AMIGOWithFOTD.mo similarity index 87% rename from Buildings/Controls/OBC/CDL/Continuous/Validation/FOTD.mo rename to Buildings/Controls/OBC/CDL/Continuous/Validation/AMIGOWithFOTD.mo index fe5e053690b..546d5d63a4b 100644 --- a/Buildings/Controls/OBC/CDL/Continuous/Validation/FOTD.mo +++ b/Buildings/Controls/OBC/CDL/Continuous/Validation/AMIGOWithFOTD.mo @@ -1,7 +1,7 @@ within Buildings.Controls.OBC.CDL.Continuous.Validation; -model FOTD "Validation model for the AMIGOWithFOTD block" +model AMIGOWithFOTD "Validation model for the AMIGOWithFOTD block" - Buildings.Controls.OBC.CDL.Continuous.AMIGOWithFOTD FOTD(controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PID) + Buildings.Controls.OBC.CDL.Continuous.AMIGOWithFOTD FOTD(controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PI) annotation (Placement(transformation(extent={{20,-10},{40,10}}))); Modelica.Blocks.Sources.Sine sine( amplitude=1.2, @@ -36,24 +36,18 @@ equation Tolerance=1e-06, __Dymola_Algorithm="Dassl"), __Dymola_Commands( - file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/CDL/Continuous/Validation/FOTD.mos" "Simulate and plot"), + file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/CDL/Continuous/Validation/AMIGOWithFOTD.mos" "Simulate and plot"), Documentation( info="

Validation test for the block - -Buildings.Controls.OBC.CDL.Continuous.Tan. -

-

-The input u varies from -1.5 to +1.5. + +Buildings.Controls.OBC.CDL.Continuous.AMIGOWithFOTD.

", revisions="
    -
  • -March 22, 2017, by Jianjun Hu:
    -First implementation. -
  • +
  • March 30, 2022, by Sen Huang:
    First implementation.
"), Icon( @@ -69,4 +63,4 @@ First implementation. pattern=LinePattern.None, fillPattern=FillPattern.Solid, points={{-36,60},{64,0},{-36,-60},{-36,60}})})); -end FOTD; +end AMIGOWithFOTD; diff --git a/Buildings/Controls/OBC/CDL/Continuous/Validation/NormalizedDelay.mo b/Buildings/Controls/OBC/CDL/Continuous/Validation/NormalizedDelay.mo index 782f8d61091..1ff1cebbb27 100644 --- a/Buildings/Controls/OBC/CDL/Continuous/Validation/NormalizedDelay.mo +++ b/Buildings/Controls/OBC/CDL/Continuous/Validation/NormalizedDelay.mo @@ -37,10 +37,7 @@ Buildings.Controls.OBC.CDL.Continuous.NormalizedDelay. ", revisions="
    -
  • -March 3, 2022, by Sen Huang:
    -First implementation. -
  • +
  • March 30, 2022, by Sen Huang:
    First implementation.
"), Icon( diff --git a/Buildings/Controls/OBC/CDL/Continuous/Validation/PIDWithAutoTuning.mo b/Buildings/Controls/OBC/CDL/Continuous/Validation/PIDWithAutoTuning.mo index 536fa8519ab..e21e00b3eb5 100644 --- a/Buildings/Controls/OBC/CDL/Continuous/Validation/PIDWithAutoTuning.mo +++ b/Buildings/Controls/OBC/CDL/Continuous/Validation/PIDWithAutoTuning.mo @@ -1,111 +1,49 @@ within Buildings.Controls.OBC.CDL.Continuous.Validation; model PIDWithAutoTuning "Test model for PID controller" - Buildings.Controls.OBC.CDL.Continuous.Sources.Pulse pulse( - period=0.25) "Setpoint" + Sources.Sine sin1(freqHz=1/60, offset=0.3, + startTime=0.025) + "Setpoint" annotation (Placement(transformation(extent={{-90,14},{-70,34}}))); - Buildings.Controls.OBC.CDL.Continuous.PIDWithAutoTuning limPID( + Buildings.Controls.OBC.CDL.Continuous.PIDWithAutoTuning limPIDwithAutoTuning( controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PID, Ti_start=1, Td_start=1, - yUpperLimit=10, - yLowerLimit=-8, + yUpperLimit=4, + yLowerLimit=-0.5, deadBand=0.3, - yMin=-1) - "PID controller" - annotation (Placement(transformation(extent={{-30,40},{-10,60}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.Constant const( - k=0.5) + yMin=-1) "PID controller" annotation (Placement(transformation(extent={{-30,40},{-10,60}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant const(k=0) "Measurement data" annotation (Placement(transformation(extent={{-90,-22},{-70,-2}}))); - Buildings.Controls.OBC.CDL.Continuous.PID limPI( + Buildings.Controls.OBC.CDL.Continuous.PID limPID( Ti=1, Td=1, yMin=-1, - controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PI) - "PI controller" - annotation (Placement(transformation(extent={{-30,2},{-10,22}}))); - Buildings.Controls.OBC.CDL.Continuous.PID limPD( - Ti=1, - Td=1, - yMin=-1, - controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PD) - "PD controller" - annotation (Placement(transformation(extent={{-30,-30},{-10,-10}}))); - Buildings.Controls.OBC.CDL.Continuous.PID limP( - Ti=1, - Td=1, - yMin=-1, - controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.P) - "P controller" - annotation (Placement(transformation(extent={{-30,-60},{-10,-40}}))); - Buildings.Controls.OBC.CDL.Continuous.PID noLimPID( - Ti=1, - Td=1, - yMax=1e15, - yMin=-1e15, - controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PID) - "PID controller with no output limit" - annotation (Placement(transformation(extent={{-30,-90},{-10,-70}}))); + controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PID) "PID controller" annotation (Placement(transformation(extent={{-28,-10},{-8,10}}))); equation - connect(pulse.y,limPID.u_s) - annotation (Line(points={{-68,24},{-54,24},{-54,50},{-32,50}},color={0,0,127})); - connect(const.y,limPID.u_m) - annotation (Line(points={{-68,-12},{-62,-12},{-62,30},{-20,30},{-20,38}},color={0,0,127})); - connect(const.y,limPI.u_m) - annotation (Line(points={{-68,-12},{-62,-12},{-62,-2},{-20,-2},{-20,0}},color={0,0,127})); - connect(const.y,limPD.u_m) - annotation (Line(points={{-68,-12},{-62,-12},{-62,-34},{-20,-34},{-20,-32}},color={0,0,127})); - connect(pulse.y,limPI.u_s) - annotation (Line(points={{-68,24},{-54,24},{-54,12},{-32,12}},color={0,0,127})); - connect(pulse.y,limPD.u_s) - annotation (Line(points={{-68,24},{-54,24},{-54,-20},{-32,-20}},color={0,0,127})); - connect(pulse.y,limP.u_s) - annotation (Line(points={{-68,24},{-54,24},{-54,-50},{-32,-50}},color={0,0,127})); - connect(pulse.y,noLimPID.u_s) - annotation (Line(points={{-68,24},{-54,24},{-54,-80},{-32,-80}},color={0,0,127})); - connect(const.y,limP.u_m) - annotation (Line(points={{-68,-12},{-62,-12},{-62,-64},{-20,-64},{-20,-62}},color={0,0,127})); - connect(const.y,noLimPID.u_m) - annotation (Line(points={{-68,-12},{-62,-12},{-62,-96},{-20,-96},{-20,-92}},color={0,0,127})); + connect(sin1.y, limPIDwithAutoTuning.u_s) annotation (Line(points={{-68,24},{-54,24},{-54,50},{-32,50}}, color={0,0,127})); + connect(const.y, limPIDwithAutoTuning.u_m) annotation (Line(points={{-68,-12},{-62,-12},{-62,30},{-20,30},{-20,38}}, color={0,0,127})); + connect(const.y, limPID.u_m) annotation (Line(points={{-68,-12},{-62,-12},{-62,30},{2,30},{2,-18},{-18,-18},{-18,-12}}, color={0,0,127})); + connect(sin1.y, limPID.u_s) annotation (Line(points={{-68,24},{-54,24},{-54,0},{-30,0}}, color={0,0,127})); annotation ( experiment( - StopTime=1.0, - Tolerance=1e-06), + StopTime=120, + Tolerance=1e-06, + __Dymola_Algorithm="Dassl"), __Dymola_Commands( - file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/CDL/Continuous/Validation/PID.mos" "Simulate and plot"), + file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/CDL/Continuous/Validation/PIDWithAutoTuning.mos" "Simulate and plot"), Documentation( info="

Validation test for the block - -Buildings.Controls.OBC.CDL.Continuous.PID. -This tests the different settings for the controller types. + +Buildings.Controls.OBC.CDL.Continuous.PIDWithAutoTuning.

", revisions="
    -
  • -October 15, 2020, by Michael Wetter:
    -Removed instance limPIDOri which was identical to limPID. -
  • -
  • -March 24, 2017, by Jianjun Hu:
    -Added into CDL, simplified the validation model. -
  • -
  • -April 26, 2016, by Michael Wetter:
    -Relaxed tolerance of assertions from 1E-10 -to 1E-3 as the default relative tolerance in JModelica -is 1E-4. -This is for - -Buildings, issue 510. -
  • -
  • -November 21, 2011, by Michael Wetter:
    -Added documentation. -
  • +
  • March 30, 2022, by Sen Huang:
    First implementation.
"), Icon( diff --git a/Buildings/Controls/OBC/CDL/Continuous/Validation/package.order b/Buildings/Controls/OBC/CDL/Continuous/Validation/package.order index f66d1938bd2..1ca4b0b16ae 100644 --- a/Buildings/Controls/OBC/CDL/Continuous/Validation/package.order +++ b/Buildings/Controls/OBC/CDL/Continuous/Validation/package.order @@ -48,4 +48,4 @@ Subtract Switch Tan NormalizedDelay -FOTD +AMIGOWithFOTD diff --git a/Buildings/Controls/OBC/CDL/Discrete/Examples/Relay.mo b/Buildings/Controls/OBC/CDL/Discrete/Examples/Relay.mo index 13b95f5fc5a..a3d2b3b2b9f 100644 --- a/Buildings/Controls/OBC/CDL/Discrete/Examples/Relay.mo +++ b/Buildings/Controls/OBC/CDL/Discrete/Examples/Relay.mo @@ -3,8 +3,9 @@ model Relay "Example model for block that outputs a relay signal" extends Modelica.Icons.Example; Buildings.Controls.OBC.CDL.Discrete.Relay relay( yUpperLimit=1, - yLowerLimit=-0.5, - deadBand=1) annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + yLowerLimit=-0.1, + deadBand=0.5) + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Modelica.Blocks.Sources.Sine sine( amplitude=1.2, f=1/60, diff --git a/Buildings/Controls/OBC/CDL/Discrete/Relay.mo b/Buildings/Controls/OBC/CDL/Discrete/Relay.mo index 402e9d04673..21dff56f9f2 100644 --- a/Buildings/Controls/OBC/CDL/Discrete/Relay.mo +++ b/Buildings/Controls/OBC/CDL/Discrete/Relay.mo @@ -4,7 +4,7 @@ block Relay "Outputs a relay signal for PID tuning experiment" parameter Buildings.Controls.OBC.CDL.Types.PIDAutoTuneModel tuningModeType=Buildings.Controls.OBC.CDL.Types.PIDAutoTuneModel.FOTD "Type of the tune model" annotation (Dialog(enable=tuningMethodType == Buildings.Controls.OBC.CDL.Types.PIDAutoTuner.tau)); parameter Real yUpperLimit = 1 "Upper limit of the output"; - parameter Real yLowerLimit = 0 "Lower limit of output"; + parameter Real yLowerLimit = -0.5 "Lower limit of the output"; parameter Real deadBand = 0.5 "Deadband for holding the output value"; Interfaces.RealInput u1 "Input 1" annotation (Placement(transformation(extent={{-120,30},{-100,50}}), iconTransformation(extent={{-120,30}, {-100,50}}))); @@ -14,14 +14,14 @@ block Relay "Outputs a relay signal for PID tuning experiment" Interfaces.RealOutput dtON "Half-period length for the upper limit" annotation (Placement(transformation(extent={{100,10},{120,30}}))); Interfaces.RealOutput dtOFF "Half-period length for the lower limit" annotation (Placement(transformation(extent={{100,-70},{120,-50}}))); Interfaces.RealOutput uDiff "Difference between u1 and u2" annotation (Placement(transformation(extent={{100,-110},{120,-90}}))); - Interfaces.BooleanOutput experimentStart(start=false) "If the relay experiment starts" annotation (Placement(transformation(extent={{100,50},{120,70}}))); - Interfaces.BooleanOutput experimentEnd(start=false) "If the relay experiment ends" annotation (Placement(transformation(extent={{100,90},{120,110}}))); + Interfaces.BooleanOutput experimentStart(start=false) "Set to true when the relay experiment starts" annotation (Placement(transformation(extent={{100,50},{120,70}}))); + Interfaces.BooleanOutput experimentEnd(start=false) "Set to true when the relay experiment ends" annotation (Placement(transformation(extent={{100,90},{120,110}}))); Modelica.Units.SI.Time tON_start(start=0) "Time when the output is the upper limit"; Modelica.Units.SI.Time tOFF_start(start=0) "Time when the output is the lower limit"; equation uDiff=u1-u2; - when uDiff>deadBand then + when uDiff>+deadBand then tON_start = time; if tOFF_start>0 then dtOFF = time - tOFF_start; @@ -54,6 +54,7 @@ equation else y = yLowerLimit; end if; + annotation (Placement(transformation(extent={{-140,20},{-100,60}}), iconTransformation(extent={{-140,20},{-100,60}})), Placement(transformation(extent={{-140,20},{-100,60}}), iconTransformation(extent={{-140,20},{-100,60}})), Icon(coordinateSystem(preserveAspectRatio=false), graphics={ @@ -83,14 +84,11 @@ equation Documentation(revisions="
  • -March 3, 2022, by Sen Huang:
    +March 30, 2022, by Sen Huang:
    First implementation.
", info=" -

-Block that outputs the relay signal switches between two discrete values every time the process output -leaves the hysteresis band. -

+

Block that outputs a relay signal which switches between two discrete values every time the process output leaves the hysteresis band.

")); end Relay; diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/CDL/Continuous/Validation/FOTD.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/CDL/Continuous/Validation/AMIGOWithFOTD.mos similarity index 93% rename from Buildings/Resources/Scripts/Dymola/Controls/OBC/CDL/Continuous/Validation/FOTD.mos rename to Buildings/Resources/Scripts/Dymola/Controls/OBC/CDL/Continuous/Validation/AMIGOWithFOTD.mos index c50b8862885..69a81b58196 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/CDL/Continuous/Validation/FOTD.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/CDL/Continuous/Validation/AMIGOWithFOTD.mos @@ -1,4 +1,4 @@ -simulateModel("Buildings.Controls.OBC.CDL.Continuous.Validation.FOTD", stopTime=120, tolerance=1e-06, resultFile="FOTD"); +simulateModel("Buildings.Controls.OBC.CDL.Continuous.Validation.AMIGOWithFOTD", stopTime=120, tolerance=1e-06, resultFile="AMIGOWithFOTD"); removePlots(false); createPlot(id=1, position={0, 0, 2841, 1894}, y={"FOTD.experimentStart", "FOTD.experimentEnd"}, range={0.0, 120.0, -1.0, 2.0}, grid=true, colors={{28,108,200}, {28,108,200}}); createPlot(id=1, position={0, 0, 2841, 1894}, y={"relay.y", "relay.uDiff"}, range={0.0, 120.0, -5.0, 10.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/CDL/Continuous/Validation/PIDWithAutoTuning.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/CDL/Continuous/Validation/PIDWithAutoTuning.mos new file mode 100644 index 00000000000..715a56bcf3b --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/CDL/Continuous/Validation/PIDWithAutoTuning.mos @@ -0,0 +1,14 @@ +simulateModel("Buildings.Controls.OBC.CDL.Continuous.Validation.PIDWithAutoTuning", stopTime=120, tolerance=1e-06, resultFile="PIDWithAutoTuning"); +removePlots(false); +createPlot(id=1, position={15, 10, 900, 700}, y={"limPID.u_s", "limPID.u_m"}, range={0.0, 120.0, -5.0, 5.0}, grid=true, colors={{238,46,47}, {0,140,72}}); +createPlot(id=1, position={15, 10, 900, 700}, y={"limPID.u_s", "limPID.y"}, range={0.0, 120.0, -5.0, 5.0}, grid=true, subPlot=102, colors={{238,46,47}, {0,140,72}}); +createPlot(id=1, position={15, 10, 900, 700}, y={"limPID.k"}, range={0.0, 120.0, 0.5, 1.5}, grid=true, subPlot=103, colors={{28,108,200}}, displayUnits={"s-1"}); +createPlot(id=1, position={15, 10, 900, 700}, y=fill("", 0), range={0.0, 1.0, 0.0, 1.0}, grid=true, subPlot=104); +createPlot(id=1, position={15, 10, 900, 700}, y=fill("", 0), range={0.0, 1.0, 0.0, 1.0}, grid=true, subPlot=105); +createPlot(id=1, position={15, 10, 900, 700}, y=fill("", 0), range={0.0, 1.0, 0.0, 1.0}, grid=true, subPlot=106); +createPlot(id=1, position={15, 10, 900, 700}, y=fill("", 0), range={0.0, 120.0, -2.0, 62.0}, grid=true, subPlot=107); +createPlot(id=2, position={1068, 80, 1484, 920}, y={"limPID.y", "limPIDwithAutoTuning.y"}, range={0.0, 120.0, -5.0, 5.0}, grid=true, colors={{28,108,200}, {238,46,47}}); +createPlot(id=2, position={1068, 80, 1484, 920}, y={"limPIDwithAutoTuning.k"}, range={0.0, 120.0, -1.0, 2.0}, grid=true, subPlot=102, colors={{28,108,200}}); +createPlot(id=2, position={1068, 80, 1484, 920}, y={"limPIDwithAutoTuning.Ti"}, range={0.0, 120.0, 0.0, 100.0}, grid=true, subPlot=103, colors={{28,108,200}}, displayUnits={"s"}); +createPlot(id=2, position={1068, 80, 1484, 920}, y={"limPIDwithAutoTuning.Td"}, range={0.0, 120.0, 0.0, 20.0}, grid=true, subPlot=104, colors={{28,108,200}}, displayUnits={"s"}); +createPlot(id=2, position={1068, 80, 1484, 920}, y={"limPIDwithAutoTuning.tunePeriodEnd.y"}, range={0.0, 120.0, -5.0, 5.0}, grid=true, subPlot=105, colors={{28,108,200}}); \ No newline at end of file From f5a4dce8bb44c9e4249edd4b3e90ae04ebf23022 Mon Sep 17 00:00:00 2001 From: huan875 Date: Thu, 31 Mar 2022 19:29:57 -0700 Subject: [PATCH 004/214] update the names for two parameters --- .../OBC/CDL/Continuous/AMIGOWithFOTD.mo | 8 +++---- .../OBC/CDL/Continuous/NormalizedDelay.mo | 4 ++-- .../OBC/CDL/Continuous/PIDWithAutoTuning.mo | 14 ++++++------ .../Continuous/Validation/AMIGOWithFOTD.mo | 4 ++-- .../Continuous/Validation/NormalizedDelay.mo | 4 ++-- .../OBC/CDL/Continuous/Validation/PID.mo | 5 +++-- .../Validation/PIDWithAutoTuning.mo | 4 ++-- .../OBC/CDL/Discrete/Examples/Relay.mo | 4 ++-- Buildings/Controls/OBC/CDL/Discrete/Relay.mo | 22 +++++++++---------- 9 files changed, 35 insertions(+), 34 deletions(-) diff --git a/Buildings/Controls/OBC/CDL/Continuous/AMIGOWithFOTD.mo b/Buildings/Controls/OBC/CDL/Continuous/AMIGOWithFOTD.mo index 117d3924857..654286268ec 100644 --- a/Buildings/Controls/OBC/CDL/Continuous/AMIGOWithFOTD.mo +++ b/Buildings/Controls/OBC/CDL/Continuous/AMIGOWithFOTD.mo @@ -2,8 +2,8 @@ within Buildings.Controls.OBC.CDL.Continuous; block AMIGOWithFOTD "AMIGO tuning method for a first order model with time delay" parameter Buildings.Controls.OBC.CDL.Types.SimpleController controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PI "Type of controller"; - parameter Real yUpperLimit = 1 "Upper limit for y"; - parameter Real yLowerLimit = 0 "Lower limit for y"; + parameter Real yHigher = 1 "Higher value for y"; + parameter Real yLower = 0 "Lower value for y"; parameter Real deadBand = 0.5 "Deadband for holding the output value"; Real y0 "Initial value of the process output"; @@ -63,8 +63,8 @@ equation end when; when experimentEnd then Kp = kpCalculator.y; - T = dtON/Modelica.Math.log10((deadBand/abs(Kp)+yLowerLimit+Modelica.Math.exp(tau/(1-tau+Constants.eps))*(yUpperLimit - - yLowerLimit))/(yUpperLimit - deadBand/abs(Kp))); + T = dtON/Modelica.Math.log10((deadBand/abs(Kp)+yLower+Modelica.Math.exp(tau/(1-tau+Constants.eps))*(yHigher - + yLower))/(yHigher - deadBand/abs(Kp))); L = T*(tau/(1-tau+Constants.eps)); if controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PI then k = 1/Kp*(0.15+0.35*T/L-T^2/(T+L)^2); diff --git a/Buildings/Controls/OBC/CDL/Continuous/NormalizedDelay.mo b/Buildings/Controls/OBC/CDL/Continuous/NormalizedDelay.mo index 8d4905e36bd..e9cd29c2f3e 100644 --- a/Buildings/Controls/OBC/CDL/Continuous/NormalizedDelay.mo +++ b/Buildings/Controls/OBC/CDL/Continuous/NormalizedDelay.mo @@ -1,9 +1,9 @@ within Buildings.Controls.OBC.CDL.Continuous; block NormalizedDelay "Calculate a time delay based on a relay experiment" parameter Real gamma=3 "Asymmetry level of a relay tuner"; - Interfaces.RealInput dtON "Half-period length for the upper limit" + Interfaces.RealInput dtON "Half-period length for the higher value" annotation (Placement(transformation(extent={{-140,40},{-100,80}}), iconTransformation(extent={{-140,40},{-100,80}}))); - Interfaces.RealInput dtOFF "Half-period length of the lower limit" + Interfaces.RealInput dtOFF "Half-period length of the lower value" annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); Interfaces.RealOutput y "Normalized time delay" annotation (Placement(transformation(extent={{100,-20},{140,20}}))); diff --git a/Buildings/Controls/OBC/CDL/Continuous/PIDWithAutoTuning.mo b/Buildings/Controls/OBC/CDL/Continuous/PIDWithAutoTuning.mo index 9dae5b76cad..ec43aaa094c 100644 --- a/Buildings/Controls/OBC/CDL/Continuous/PIDWithAutoTuning.mo +++ b/Buildings/Controls/OBC/CDL/Continuous/PIDWithAutoTuning.mo @@ -21,8 +21,8 @@ block PIDWithAutoTuning "P, PI, PD, and PID controller with an auto tuning compo min=100*Constants.eps)=0.1 "Start value of the Time constant of derivative block" annotation (Dialog(group="Control gains",enable=controllerType == CDL.Types.SimpleController.PD or controllerType == CDL.Types.SimpleController.PID)); - parameter Real yUpperLimit = 1 "Upper limit of the output"; - parameter Real yLowerLimit = -0.5 "Lower limit of the output"; + parameter Real yHigher = 1 "Higher value of the output"; + parameter Real yLower = -0.5 "Lower value of the output"; parameter Real deadBand = 0.5 "Deadband for holding the relay output value in the relay tuner"; Real k( @@ -111,20 +111,20 @@ block PIDWithAutoTuning "P, PI, PD, and PID controller with an auto tuning compo with_I annotation (Placement(transformation(extent={{178,-34},{158,-14}}))); Buildings.Controls.OBC.CDL.Discrete.Relay relay( - yUpperLimit=yUpperLimit, - yLowerLimit=yLowerLimit, + yHigher=yHigher, + yLower=yLower, deadBand=deadBand) annotation (Placement(transformation(extent={{92,154},{112,174}}))); Buildings.Controls.OBC.CDL.Continuous.Switch switch annotation (Placement(transformation(extent={{138,142},{158,122}}))); Modelica.Blocks.Sources.BooleanExpression tunePeriodEnd(y=relay.dtON > 0 and relay.dtOFF > 0) annotation (Placement(transformation(extent={{98,122},{118,142}}))); Buildings.Controls.OBC.CDL.Continuous.AMIGOWithFOTD FOTDTuneModel( - yUpperLimit=yUpperLimit, - yLowerLimit=yLowerLimit, + yHigher=yHigher, + yLower=yLower, deadBand=deadBand, controllerType=controllerType) if tuningModeType==Buildings.Controls.OBC.CDL.Types.PIDAutoTuneModel.FOTD annotation (Placement(transformation(extent={{120,-100},{100,-80}}))); - Buildings.Controls.OBC.CDL.Continuous.NormalizedDelay tauTuner(gamma=max(yUpperLimit, abs(yLowerLimit))/min(yUpperLimit, abs(yLowerLimit))) if tuningMethodType == Buildings.Controls.OBC.CDL.Types.PIDAutoTuner.tau + Buildings.Controls.OBC.CDL.Continuous.NormalizedDelay tauTuner(gamma=max(yHigher, abs(yLower))/min(yHigher, abs(yLower))) if tuningMethodType == Buildings.Controls.OBC.CDL.Types.PIDAutoTuner.tau annotation (Placement(transformation(extent={{170,-100},{150,-80}}))); protected final parameter Real revAct= diff --git a/Buildings/Controls/OBC/CDL/Continuous/Validation/AMIGOWithFOTD.mo b/Buildings/Controls/OBC/CDL/Continuous/Validation/AMIGOWithFOTD.mo index 546d5d63a4b..d23644f2c94 100644 --- a/Buildings/Controls/OBC/CDL/Continuous/Validation/AMIGOWithFOTD.mo +++ b/Buildings/Controls/OBC/CDL/Continuous/Validation/AMIGOWithFOTD.mo @@ -12,8 +12,8 @@ model AMIGOWithFOTD "Validation model for the AMIGOWithFOTD block" Modelica.Blocks.Sources.Constant const(k=0) annotation (Placement(transformation(extent={{-82,-10},{-62,10}}))); Buildings.Controls.OBC.CDL.Continuous.NormalizedDelay NormalizedDelay(gamma=3) annotation (Placement(transformation(extent={{-40,-60},{-20,-40}}))); Discrete.Relay relay( - yUpperLimit=4, - yLowerLimit=-0.5, + yHigher=4, + yLower=-0.5, deadBand=0.5) annotation (Placement(transformation(extent={{-40,20},{-20,40}}))); equation diff --git a/Buildings/Controls/OBC/CDL/Continuous/Validation/NormalizedDelay.mo b/Buildings/Controls/OBC/CDL/Continuous/Validation/NormalizedDelay.mo index 1ff1cebbb27..1722ee5a234 100644 --- a/Buildings/Controls/OBC/CDL/Continuous/Validation/NormalizedDelay.mo +++ b/Buildings/Controls/OBC/CDL/Continuous/Validation/NormalizedDelay.mo @@ -10,8 +10,8 @@ model NormalizedDelay "Validation model for the NormalizedDelay block" Modelica.Blocks.Sources.Constant const(k=0) annotation (Placement(transformation(extent={{-82,-42},{-62,-22}}))); Buildings.Controls.OBC.CDL.Continuous.NormalizedDelay NormalizedDelay(gamma=3) annotation (Placement(transformation(extent={{20,-10},{40,10}}))); Discrete.Relay relay( - yUpperLimit=4, - yLowerLimit=-0.5, + yHigher=4, + yLower=-0.5, deadBand=0.5) annotation (Placement(transformation(extent={{-40,-8},{-20,12}}))); equation diff --git a/Buildings/Controls/OBC/CDL/Continuous/Validation/PID.mo b/Buildings/Controls/OBC/CDL/Continuous/Validation/PID.mo index 05944ed26a7..6bdfc78ea34 100644 --- a/Buildings/Controls/OBC/CDL/Continuous/Validation/PID.mo +++ b/Buildings/Controls/OBC/CDL/Continuous/Validation/PID.mo @@ -69,8 +69,9 @@ equation annotation (Line(points={{-68,-12},{-62,-12},{-62,-96},{-20,-96},{-20,-92}},color={0,0,127})); annotation ( experiment( - StopTime=1.0, - Tolerance=1e-06), + StopTime=240, + Tolerance=1e-06, + __Dymola_Algorithm="Cvode"), __Dymola_Commands( file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/CDL/Continuous/Validation/PID.mos" "Simulate and plot"), Documentation( diff --git a/Buildings/Controls/OBC/CDL/Continuous/Validation/PIDWithAutoTuning.mo b/Buildings/Controls/OBC/CDL/Continuous/Validation/PIDWithAutoTuning.mo index e21e00b3eb5..65d2d1fc124 100644 --- a/Buildings/Controls/OBC/CDL/Continuous/Validation/PIDWithAutoTuning.mo +++ b/Buildings/Controls/OBC/CDL/Continuous/Validation/PIDWithAutoTuning.mo @@ -8,8 +8,8 @@ model PIDWithAutoTuning "Test model for PID controller" controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PID, Ti_start=1, Td_start=1, - yUpperLimit=4, - yLowerLimit=-0.5, + yHigher=4, + yLower=-0.5, deadBand=0.3, yMin=-1) "PID controller" annotation (Placement(transformation(extent={{-30,40},{-10,60}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.Constant const(k=0) diff --git a/Buildings/Controls/OBC/CDL/Discrete/Examples/Relay.mo b/Buildings/Controls/OBC/CDL/Discrete/Examples/Relay.mo index a3d2b3b2b9f..5626f9609ee 100644 --- a/Buildings/Controls/OBC/CDL/Discrete/Examples/Relay.mo +++ b/Buildings/Controls/OBC/CDL/Discrete/Examples/Relay.mo @@ -2,8 +2,8 @@ within Buildings.Controls.OBC.CDL.Discrete.Examples; model Relay "Example model for block that outputs a relay signal" extends Modelica.Icons.Example; Buildings.Controls.OBC.CDL.Discrete.Relay relay( - yUpperLimit=1, - yLowerLimit=-0.1, + yHigher=1, + yLower=-0.1, deadBand=0.5) annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Modelica.Blocks.Sources.Sine sine( diff --git a/Buildings/Controls/OBC/CDL/Discrete/Relay.mo b/Buildings/Controls/OBC/CDL/Discrete/Relay.mo index 21dff56f9f2..46267c88911 100644 --- a/Buildings/Controls/OBC/CDL/Discrete/Relay.mo +++ b/Buildings/Controls/OBC/CDL/Discrete/Relay.mo @@ -3,21 +3,21 @@ block Relay "Outputs a relay signal for PID tuning experiment" parameter Buildings.Controls.OBC.CDL.Types.PIDAutoTuner tuningMethodType=Buildings.Controls.OBC.CDL.Types.PIDAutoTuner.tau "Type of autotuner"; parameter Buildings.Controls.OBC.CDL.Types.PIDAutoTuneModel tuningModeType=Buildings.Controls.OBC.CDL.Types.PIDAutoTuneModel.FOTD "Type of the tune model" annotation (Dialog(enable=tuningMethodType == Buildings.Controls.OBC.CDL.Types.PIDAutoTuner.tau)); - parameter Real yUpperLimit = 1 "Upper limit of the output"; - parameter Real yLowerLimit = -0.5 "Lower limit of the output"; + parameter Real yHigher = 1 "Higher value of the output"; + parameter Real yLower = -0.5 "Lower value of the output"; parameter Real deadBand = 0.5 "Deadband for holding the output value"; Interfaces.RealInput u1 "Input 1" annotation (Placement(transformation(extent={{-120,30},{-100,50}}), iconTransformation(extent={{-120,30}, {-100,50}}))); Interfaces.RealInput u2 "Input 2" annotation (Placement(transformation(extent={{-120,-54},{-100,-34}}), iconTransformation(extent={{-120,-54}, {-100,-34}}))); Interfaces.RealOutput y "Ouput" annotation (Placement(transformation(extent={{100,-30},{120,-10}}))); - Interfaces.RealOutput dtON "Half-period length for the upper limit" annotation (Placement(transformation(extent={{100,10},{120,30}}))); - Interfaces.RealOutput dtOFF "Half-period length for the lower limit" annotation (Placement(transformation(extent={{100,-70},{120,-50}}))); + Interfaces.RealOutput dtON "Half-period length for the higher value" annotation (Placement(transformation(extent={{100,10},{120,30}}))); + Interfaces.RealOutput dtOFF "Half-period length for the lower value" annotation (Placement(transformation(extent={{100,-70},{120,-50}}))); Interfaces.RealOutput uDiff "Difference between u1 and u2" annotation (Placement(transformation(extent={{100,-110},{120,-90}}))); Interfaces.BooleanOutput experimentStart(start=false) "Set to true when the relay experiment starts" annotation (Placement(transformation(extent={{100,50},{120,70}}))); Interfaces.BooleanOutput experimentEnd(start=false) "Set to true when the relay experiment ends" annotation (Placement(transformation(extent={{100,90},{120,110}}))); - Modelica.Units.SI.Time tON_start(start=0) "Time when the output is the upper limit"; - Modelica.Units.SI.Time tOFF_start(start=0) "Time when the output is the lower limit"; + Modelica.Units.SI.Time tON_start(start=0) "Time when the output is the higher value"; + Modelica.Units.SI.Time tOFF_start(start=0) "Time when the output is the lower value"; equation uDiff=u1-u2; @@ -44,15 +44,15 @@ equation experimentEnd = true; end when; if uDiff>deadBand then - y = yUpperLimit; + y = yHigher; elseif uDiff<-deadBand then - y = yLowerLimit; + y = yLower; elseif tOFF_start>tON_start then - y = yLowerLimit; + y = yLower; elseif tON_start>tOFF_start then - y = yUpperLimit; + y = yHigher; else - y = yLowerLimit; + y = yLower; end if; annotation (Placement(transformation(extent={{-140,20},{-100,60}}), iconTransformation(extent={{-140,20},{-100,60}})), From c5ff520a69c87faf0bb0d9fd6a84a162ce906e28 Mon Sep 17 00:00:00 2001 From: huan875 Date: Wed, 6 Apr 2022 09:11:21 -0700 Subject: [PATCH 005/214] remove the changes that are not needed --- Buildings/Controls/OBC/CDL/Continuous/Average.mo | 6 ++++-- .../Controls/OBC/CDL/Continuous/Validation/PIDScale.mo | 6 +++--- Buildings/Controls/OBC/CDL/Continuous/Validation/Sin.mo | 2 +- Buildings/Controls/OBC/CDL/Continuous/Validation/Sqrt.mo | 2 +- Buildings/Controls/OBC/CDL/Continuous/Validation/Tan.mo | 2 +- 5 files changed, 10 insertions(+), 8 deletions(-) diff --git a/Buildings/Controls/OBC/CDL/Continuous/Average.mo b/Buildings/Controls/OBC/CDL/Continuous/Average.mo index b49683af13c..643c403b66c 100644 --- a/Buildings/Controls/OBC/CDL/Continuous/Average.mo +++ b/Buildings/Controls/OBC/CDL/Continuous/Average.mo @@ -1,9 +1,11 @@ within Buildings.Controls.OBC.CDL.Continuous; block Average "Output the average of its two inputs" - Interfaces.RealInput u1 "Connector of Real input signal 1" + Interfaces.RealInput u1 + "Connector of Real input signal 1" annotation (Placement(transformation(extent={{-140,40},{-100,80}}),iconTransformation(extent={{-140,40},{-100,80}}))); - Interfaces.RealInput u2 "Connector of Real input signal 2" + Interfaces.RealInput u2 + "Connector of Real input signal 2" annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}),iconTransformation(extent={{-140,-80},{-100,-40}}))); Interfaces.RealOutput y "Connector of Real output signal" diff --git a/Buildings/Controls/OBC/CDL/Continuous/Validation/PIDScale.mo b/Buildings/Controls/OBC/CDL/Continuous/Validation/PIDScale.mo index 2ed14785e18..35cb4586fe1 100644 --- a/Buildings/Controls/OBC/CDL/Continuous/Validation/PIDScale.mo +++ b/Buildings/Controls/OBC/CDL/Continuous/Validation/PIDScale.mo @@ -60,15 +60,15 @@ equation connect(gai.y,pidNoSca.u_s) annotation (Line(points={{-18,-50},{-2,-50}},color={0,0,127})); connect(gai.u,pulse.y) - annotation (Line(points={{-42,-50},{-50,-50},{-50,50},{-58,50}},color={0,0,127})); + annotation (Line(points={{-42,-50},{-50,-50},{-50,50},{-60,50}},color={0,0,127})); connect(pidNoSca.y,pla2.u) annotation (Line(points={{22,-50},{38,-50}},color={0,0,127})); connect(pla2.y,gai1.u) annotation (Line(points={{62,-50},{70,-50},{70,-80},{54,-80}},color={0,0,127})); connect(gai1.y,pidNoSca.u_m) - annotation (Line(points={{30,-80},{10,-80},{10,-62}},color={0,0,127})); + annotation (Line(points={{30,-80},{10,-80},{10,-60}},color={0,0,127})); connect(pla2.y_reset_in,resVal.y) - annotation (Line(points={{38,-58},{30,-58},{30,10},{-58,10}},color={0,0,127})); + annotation (Line(points={{38,-58},{30,-58},{30,10},{-60,10}},color={0,0,127})); connect(resSig.y,pla2.trigger) annotation (Line(points={{-58,-30},{26,-30},{26,-64},{50,-64},{50,-62}},color={255,0,255})); annotation ( diff --git a/Buildings/Controls/OBC/CDL/Continuous/Validation/Sin.mo b/Buildings/Controls/OBC/CDL/Continuous/Validation/Sin.mo index b0d8e647a81..01b5b35f1ef 100644 --- a/Buildings/Controls/OBC/CDL/Continuous/Validation/Sin.mo +++ b/Buildings/Controls/OBC/CDL/Continuous/Validation/Sin.mo @@ -13,7 +13,7 @@ model Sin equation connect(ramp1.y,sin1.u) - annotation (Line(points={{-38,0},{-12,0}},color={0,0,127})); + annotation (Line(points={{-39,0},{-12,0}},color={0,0,127})); annotation ( experiment( StopTime=1.0, diff --git a/Buildings/Controls/OBC/CDL/Continuous/Validation/Sqrt.mo b/Buildings/Controls/OBC/CDL/Continuous/Validation/Sqrt.mo index 2919c443ae1..252e32356fa 100644 --- a/Buildings/Controls/OBC/CDL/Continuous/Validation/Sqrt.mo +++ b/Buildings/Controls/OBC/CDL/Continuous/Validation/Sqrt.mo @@ -13,7 +13,7 @@ model Sqrt equation connect(ramp1.y,sqrt1.u) - annotation (Line(points={{-38,0},{-12,0}},color={0,0,127})); + annotation (Line(points={{-39,0},{-12,0}},color={0,0,127})); annotation ( experiment( StopTime=1.0, diff --git a/Buildings/Controls/OBC/CDL/Continuous/Validation/Tan.mo b/Buildings/Controls/OBC/CDL/Continuous/Validation/Tan.mo index 392aa6d8e31..fe1e4c88d4b 100644 --- a/Buildings/Controls/OBC/CDL/Continuous/Validation/Tan.mo +++ b/Buildings/Controls/OBC/CDL/Continuous/Validation/Tan.mo @@ -13,7 +13,7 @@ model Tan equation connect(ramp1.y,tan1.u) - annotation (Line(points={{-38,0},{-12,0}},color={0,0,127})); + annotation (Line(points={{-39,0},{-12,0}},color={0,0,127})); annotation ( experiment( StopTime=1.0, From 2c50bc551a3c671e9dd14d72f458e70828d9cf08 Mon Sep 17 00:00:00 2001 From: Michael Wetter Date: Mon, 11 Apr 2022 06:15:52 -0700 Subject: [PATCH 006/214] Reverted to version from master (only changes in format --- Buildings/Controls/OBC/CDL/Continuous/PID.mo | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Buildings/Controls/OBC/CDL/Continuous/PID.mo b/Buildings/Controls/OBC/CDL/Continuous/PID.mo index 778579092b0..876bc9f38b8 100644 --- a/Buildings/Controls/OBC/CDL/Continuous/PID.mo +++ b/Buildings/Controls/OBC/CDL/Continuous/PID.mo @@ -119,8 +119,8 @@ protected Buildings.Controls.OBC.CDL.Continuous.Subtract antWinErr if with_I "Error for anti-windup compensation" annotation (Placement(transformation(extent={{160,50},{180,70}}))); - Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter antWinGai(k=1/(k*Ni)) if - with_I "Gain for anti-windup compensation" + Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter antWinGai(k=1/(k*Ni)) + if with_I "Gain for anti-windup compensation" annotation (Placement(transformation(extent={{180,-30},{160,-10}}))); Buildings.Controls.OBC.CDL.Logical.Sources.Constant cheYMinMax( final k=yMin < yMax) From 96d1174ab418dc20a61402bddd09a98be8105e18 Mon Sep 17 00:00:00 2001 From: Huang Date: Fri, 3 Jun 2022 11:02:16 -0700 Subject: [PATCH 007/214] remove the new modules from CDL package and add those modules to the OBC.Utilities package --- .../OBC/CDL/Continuous/AMIGOWithFOTD.mo | 129 ----- .../OBC/CDL/Continuous/NormalizedDelay.mo | 64 --- .../OBC/CDL/Continuous/PIDWithAutoTuning.mo | 515 ------------------ .../Continuous/Validation/AMIGOWithFOTD.mo | 66 --- .../Continuous/Validation/NormalizedDelay.mo | 56 -- .../Validation/PIDWithAutoTuning.mo | 62 --- .../CDL/Continuous/Validation/package.order | 3 - .../Controls/OBC/CDL/Continuous/package.order | 3 - .../OBC/CDL/Discrete/Examples/Relay.mo | 23 - .../OBC/CDL/Discrete/Examples/package.order | 1 - Buildings/Controls/OBC/CDL/Discrete/Relay.mo | 94 ---- .../Controls/OBC/CDL/Discrete/package.order | 1 - .../OBC/Utilities/BaseClasses/Relay.mo | 92 ++++ .../BaseClasses/RelayHalfPeriodRatio.mo | 103 ++++ .../OBC/Utilities/BaseClasses/RelayProcess.mo | 115 ++++ .../Utilities/BaseClasses/Validation/Relay.mo | 39 ++ .../Validation/RelayHalfPeriodRatio.mo | 48 ++ .../BaseClasses/Validation/RelayProcess.mo | 42 ++ .../BaseClasses/Validation/package.mo | 5 + .../BaseClasses/Validation/package.order | 3 + .../OBC/Utilities/BaseClasses/package.order | 4 + .../BaseClasses/Validation/Relay.mos | 6 + .../Validation/RelayHalfPeriodRatio.mos | 4 + .../BaseClasses/Validation/RelayProcess.mos | 4 + 24 files changed, 465 insertions(+), 1017 deletions(-) delete mode 100644 Buildings/Controls/OBC/CDL/Continuous/AMIGOWithFOTD.mo delete mode 100644 Buildings/Controls/OBC/CDL/Continuous/NormalizedDelay.mo delete mode 100644 Buildings/Controls/OBC/CDL/Continuous/PIDWithAutoTuning.mo delete mode 100644 Buildings/Controls/OBC/CDL/Continuous/Validation/AMIGOWithFOTD.mo delete mode 100644 Buildings/Controls/OBC/CDL/Continuous/Validation/NormalizedDelay.mo delete mode 100644 Buildings/Controls/OBC/CDL/Continuous/Validation/PIDWithAutoTuning.mo delete mode 100644 Buildings/Controls/OBC/CDL/Discrete/Examples/Relay.mo delete mode 100644 Buildings/Controls/OBC/CDL/Discrete/Relay.mo create mode 100644 Buildings/Controls/OBC/Utilities/BaseClasses/Relay.mo create mode 100644 Buildings/Controls/OBC/Utilities/BaseClasses/RelayHalfPeriodRatio.mo create mode 100644 Buildings/Controls/OBC/Utilities/BaseClasses/RelayProcess.mo create mode 100644 Buildings/Controls/OBC/Utilities/BaseClasses/Validation/Relay.mo create mode 100644 Buildings/Controls/OBC/Utilities/BaseClasses/Validation/RelayHalfPeriodRatio.mo create mode 100644 Buildings/Controls/OBC/Utilities/BaseClasses/Validation/RelayProcess.mo create mode 100644 Buildings/Controls/OBC/Utilities/BaseClasses/Validation/package.mo create mode 100644 Buildings/Controls/OBC/Utilities/BaseClasses/Validation/package.order create mode 100644 Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/BaseClasses/Validation/Relay.mos create mode 100644 Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/BaseClasses/Validation/RelayHalfPeriodRatio.mos create mode 100644 Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/BaseClasses/Validation/RelayProcess.mos diff --git a/Buildings/Controls/OBC/CDL/Continuous/AMIGOWithFOTD.mo b/Buildings/Controls/OBC/CDL/Continuous/AMIGOWithFOTD.mo deleted file mode 100644 index 654286268ec..00000000000 --- a/Buildings/Controls/OBC/CDL/Continuous/AMIGOWithFOTD.mo +++ /dev/null @@ -1,129 +0,0 @@ -within Buildings.Controls.OBC.CDL.Continuous; -block AMIGOWithFOTD "AMIGO tuning method for a first order model with time delay" - parameter Buildings.Controls.OBC.CDL.Types.SimpleController controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PI - "Type of controller"; - parameter Real yHigher = 1 "Higher value for y"; - parameter Real yLower = 0 "Lower value for y"; - parameter Real deadBand = 0.5 "Deadband for holding the output value"; - - Real y0 "Initial value of the process output"; - Real u0 "Initial value of the process input"; - Interfaces.RealInput tau "Normalized time delay" - annotation (Placement(transformation(extent={{-140,80},{-100,120}}), iconTransformation(extent={{-140,80},{-100,120}}))); - Interfaces.RealInput dtOFF "Half-period length of a relay tuner" - annotation (Placement(transformation(extent={{-140,-120},{-100,-80}}),iconTransformation(extent={{-140,-120},{-100,-80}}))); - - Interfaces.RealInput dtON "Half-period length of a relay tuner" - annotation (Placement(transformation(extent={{-140,-72},{-100,-32}}), - iconTransformation(extent={{-140,-78},{-100,-38}}))); - Real Kp "Static gain"; - Real T "Time constant"; - Real L "Time delay"; - Real k - "Gain of controller"; - Real Ti - "Time constant of integrator block"; - Real Td - "Time constant of derivative block"; - Interfaces.RealInput ProcessOutput "Half-period length of a relay tuner" - annotation (Placement(transformation(extent={{-140,28},{-100,68}}), iconTransformation(extent={{-140,28},{-100,68}}))); - Interfaces.RealInput RelayOutput "Half-period length of a relay tuner" - annotation (Placement(transformation(extent={{-140,-20},{-100,20}}), iconTransformation(extent={{-140,-20},{-100,20}}))); - IntegratorWithReset Iy annotation (Placement(transformation(extent={{-2,40},{18,60}}))); - IntegratorWithReset Iu annotation (Placement(transformation(extent={{-2,-10},{18,10}}))); - Modelica.Blocks.Sources.RealExpression yDiff(y=ProcessOutput - y0) annotation (Placement(transformation(extent={{-40,40},{-20,60}}))); - Modelica.Blocks.Sources.RealExpression uDiff(y=RelayOutput - u0) annotation (Placement(transformation(extent={{-40,-10},{-20,10}}))); - Divide kpCalculator "Static gain of the process" annotation (Placement(transformation(extent={{40,30},{60,10}}))); - Modelica.Blocks.Sources.RealExpression checkZero(y=noEvent(if Iy.y > 0 then Iy.y else 1)) annotation (Placement(transformation(extent={{58,44},{38,64}}))); - Interfaces.BooleanInput experimentStart "If the relay experiment startes" annotation (Placement(transformation( - extent={{-20,-20},{20,20}}, - rotation=-90, - origin={-40,120}), iconTransformation(extent={{-20,-20},{20,20}}, - rotation=-90, - origin={-56,120}))); - - Interfaces.BooleanInput experimentEnd "If the relay experiment ends" annotation (Placement(transformation( - extent={{-20,-20},{20,20}}, - rotation=-90, - origin={40,120}), iconTransformation( - extent={{-20,-20},{20,20}}, - rotation=-90, - origin={54,120}))); -protected - Modelica.Blocks.Sources.BooleanExpression - noReset(y=experimentStart) - "Constant false" annotation (Placement(transformation(extent={{-40,10},{-20,30}}))); - Sources.Constant con(final k=0) "Constant zero" annotation (Placement(transformation(extent={{-80,-26},{-60,-6}}))); - -equation - assert(controllerType==Buildings.Controls.OBC.CDL.Types.SimpleController.PI or controllerType==Buildings.Controls.OBC.CDL.Types.SimpleController.PID, "Either PI or PID should be selected"); - when experimentStart then - y0 = RelayOutput; - u0 = ProcessOutput; - end when; - when experimentEnd then - Kp = kpCalculator.y; - T = dtON/Modelica.Math.log10((deadBand/abs(Kp)+yLower+Modelica.Math.exp(tau/(1-tau+Constants.eps))*(yHigher - - yLower))/(yHigher - deadBand/abs(Kp))); - L = T*(tau/(1-tau+Constants.eps)); - if controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PI then - k = 1/Kp*(0.15+0.35*T/L-T^2/(T+L)^2); - Ti = (0.35+13*T^2/(T^2+12*T*L+7*L^2))*L; - Td = 0; - else - k = 1/Kp*(0.2+0.45*T/L); - Ti = (0.4*L+0.8*T)/(L+0.1*T)*L; - Td = 0.5*T*L/(0.3*L+T); - end if; - end when; - connect(noReset.y, Iy.trigger) annotation (Line(points={{-19,20},{8,20},{8,38}}, color={255,0,255})); - connect(Iu.trigger, Iy.trigger) annotation (Line(points={{8,-12},{8,-20},{-16,-20},{-16,20},{8,20},{8,38}}, color={255,0,255})); - connect(uDiff.y, Iu.u) annotation (Line(points={{-19,0},{-4,0}}, color={0,0,127})); - connect(yDiff.y, Iy.u) annotation (Line(points={{-19,50},{-4,50}}, color={0,0,127})); - connect(con.y, Iy.y_reset_in) annotation (Line(points={{-58,-16},{-46,-16},{-46,36},{-4,36},{-4,42}}, - color={0,0,127})); - connect(Iu.y_reset_in, Iy.y_reset_in) annotation (Line(points={{-4,-8},{-46,-8},{-46,36},{-4,36},{-4,42}}, - color={0,0,127})); - connect(Iu.y, kpCalculator.u1) annotation (Line(points={{20,0},{32,0},{32,14},{38,14}}, color={0,0,127})); - connect(checkZero.y, kpCalculator.u2) annotation (Line(points={{37,54},{32,54},{32,26},{38,26}}, color={0,0,127})); - annotation ( - defaultComponentName="ave", - Icon( - coordinateSystem( - preserveAspectRatio=true, - extent={{-100,-100},{100,100}}), - graphics={ - Text( - textColor={0,0,255}, - extent={{-150,110},{150,150}}, - textString="%name"), - Rectangle( - extent={{-100,-100},{100,100}}, - lineColor={0,0,127}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid), - Line( - points={{-8,16}}, - color={0,0,0}), - Line( - points={{-100,60}}, - color={0,0,0}, - thickness=1), - Text( - extent={{226,60},{106,10}}, - textColor={0,0,0}, - textString=DynamicSelect("",String(y, - leftJustified=false, - significantDigits=3)))}), - Documentation( - info=" -

Block that generates the PID parameters with the AMIGO method and a first-order model with time delay.

-

References

-

Åström, K. J. and T. Hägglund (2006). Advanced PID Control. eng. ISA - The Instrumentation, Systems, and Automation Society; Research Triangle Park, NC 27709. isbn: 978-1-55617-942

-", - revisions=" -
    -
  • March 30, 2022, by Sen Huang:
    First implementation.
  • -
-")); -end AMIGOWithFOTD; diff --git a/Buildings/Controls/OBC/CDL/Continuous/NormalizedDelay.mo b/Buildings/Controls/OBC/CDL/Continuous/NormalizedDelay.mo deleted file mode 100644 index e9cd29c2f3e..00000000000 --- a/Buildings/Controls/OBC/CDL/Continuous/NormalizedDelay.mo +++ /dev/null @@ -1,64 +0,0 @@ -within Buildings.Controls.OBC.CDL.Continuous; -block NormalizedDelay "Calculate a time delay based on a relay experiment" - parameter Real gamma=3 "Asymmetry level of a relay tuner"; - Interfaces.RealInput dtON "Half-period length for the higher value" - annotation (Placement(transformation(extent={{-140,40},{-100,80}}), iconTransformation(extent={{-140,40},{-100,80}}))); - Interfaces.RealInput dtOFF "Half-period length of the lower value" - annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); - Interfaces.RealOutput y "Normalized time delay" - annotation (Placement(transformation(extent={{100,-20},{140,20}}))); - Max max annotation (Placement(transformation(extent={{-62,40},{-42,60}}))); - Min min annotation (Placement(transformation(extent={{-60,-64},{-40,-44}}))); - Divide rho "Half-period ratio" annotation (Placement(transformation(extent={{-16,-10},{4,10}}))); - Modelica.Blocks.Sources.RealExpression zeroCheck(y=noEvent(if min.y > 0 then min.y else 1)) - annotation (Placement(transformation(extent={{-58,-30},{-38,-10}}))); -equation - assert(abs(gamma-1)>0.01, "The relay signal should be asymmetric"); -// assert(rho.y>1, "The half-period ratio should be larger than 1"); -// assert(y>1 or y<0, "Invalid value for the normalized time delay"); - y=(gamma-rho.y)/(gamma-1)/(0.35*rho.y+0.65); - connect(max.u1, dtON) annotation (Line(points={{-64,56},{-80,56},{-80,60},{-120,60}}, color={0,0,127})); - connect(max.u2, dtOFF) annotation (Line(points={{-64,44},{-82,44},{-82,-60},{-120,-60}}, color={0,0,127})); - connect(min.u1, dtON) annotation (Line(points={{-62,-48},{-92,-48},{-92,60},{-120,60}}, color={0,0,127})); - connect(min.u2, dtOFF) annotation (Line(points={{-62,-60},{-120,-60}}, color={0,0,127})); - connect(rho.u1, max.y) annotation (Line(points={{-18,6},{-30,6},{-30,50},{-40,50}}, color={0,0,127})); - connect(zeroCheck.y, rho.u2) annotation (Line(points={{-37,-20},{-30,-20},{-30,-6},{-18,-6}}, color={0,0,127})); - annotation ( - defaultComponentName="ave", - Icon( - coordinateSystem( - preserveAspectRatio=true, - extent={{-100,-100},{100,100}}), - graphics={ - Text( - textColor={0,0,255}, - extent={{-150,110},{150,150}}, - textString="%name"), - Rectangle( - extent={{-100,-100},{100,100}}, - lineColor={0,0,127}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid), - Line( - points={{-8,16}}, - color={0,0,0}), - Line( - points={{-100,60}}, - color={0,0,0}, - thickness=1), - Text( - extent={{226,60},{106,10}}, - textColor={0,0,0}, - textString=DynamicSelect("",String(y, - leftJustified=false, - significantDigits=3)))}), - Documentation( - info=" -

Block that calculates the normalized time delay based on results of a relay experiment for PID tuning

-", - revisions=" -
    -
  • March 30, 2022, by Sen Huang:
    First implementation.
  • -
-")); -end NormalizedDelay; diff --git a/Buildings/Controls/OBC/CDL/Continuous/PIDWithAutoTuning.mo b/Buildings/Controls/OBC/CDL/Continuous/PIDWithAutoTuning.mo deleted file mode 100644 index ec43aaa094c..00000000000 --- a/Buildings/Controls/OBC/CDL/Continuous/PIDWithAutoTuning.mo +++ /dev/null @@ -1,515 +0,0 @@ -within Buildings.Controls.OBC.CDL.Continuous; -block PIDWithAutoTuning "P, PI, PD, and PID controller with an auto tuning component" - parameter Buildings.Controls.OBC.CDL.Types.SimpleController controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PI - "Type of controller"; - parameter Buildings.Controls.OBC.CDL.Types.PIDAutoTuner tuningMethodType=Buildings.Controls.OBC.CDL.Types.PIDAutoTuner.tau "Type of controller"; - parameter Buildings.Controls.OBC.CDL.Types.PIDAutoTuneModel tuningModeType=Buildings.Controls.OBC.CDL.Types.PIDAutoTuneModel.FOTD "Type of tune model" - annotation (Dialog(enable=tuningMethodType == Buildings.Controls.OBC.CDL.Types.PIDAutoTuner.tau)); - parameter Real k_start( - min=100*Constants.eps)=1 - "Start value of the Gain of controller" - annotation (Dialog(group="Control gains")); - parameter Real Ti_start( - final quantity="Time", - final unit="s", - min=100*Constants.eps)=0.5 - "Start value of the Time constant of integrator block" - annotation (Dialog(group="Control gains",enable=controllerType == CDL.Types.SimpleController.PI or controllerType == CDL.Types.SimpleController.PID)); - parameter Real Td_start( - final quantity="Time", - final unit="s", - min=100*Constants.eps)=0.1 - "Start value of the Time constant of derivative block" - annotation (Dialog(group="Control gains",enable=controllerType == CDL.Types.SimpleController.PD or controllerType == CDL.Types.SimpleController.PID)); - parameter Real yHigher = 1 "Higher value of the output"; - parameter Real yLower = -0.5 "Lower value of the output"; - parameter Real deadBand = 0.5 "Deadband for holding the relay output value in the relay tuner"; - - Real k( - min=100*Constants.eps, - start=k_start) - "Gain of controller"; - Real Ti( - min=100*Constants.eps, - start=Ti_start) - "Time constant of integrator block"; - Real Td( - min=100*Constants.eps, - start=Td_start) - "Time constant of derivative block"; - parameter Real r( - min=100*Constants.eps)=1 - "Typical range of control error, used for scaling the control error"; - parameter Real yMax=1 - "Upper limit of output" - annotation (Dialog(group="Limits")); - parameter Real yMin=0 - "Lower limit of output" - annotation (Dialog(group="Limits")); - parameter Real Ni( - min=100*Constants.eps)=0.9 - "Ni*Ti is time constant of anti-windup compensation" - annotation (Dialog(tab="Advanced",group="Integrator anti-windup",enable=controllerType == CDL.Types.SimpleController.PI or controllerType == CDL.Types.SimpleController.PID)); - parameter Real Nd( - min=100*Constants.eps)=10 - "The higher Nd, the more ideal the derivative block" - annotation (Dialog(tab="Advanced",group="Derivative block",enable=controllerType == CDL.Types.SimpleController.PD or controllerType == CDL.Types.SimpleController.PID)); - parameter Real xi_start=0 - "Initial value of integrator state" - annotation (Dialog(tab="Advanced",group="Initialization",enable=controllerType == CDL.Types.SimpleController.PI or controllerType == CDL.Types.SimpleController.PID)); - parameter Real yd_start=0 - "Initial value of derivative output" - annotation (Dialog(tab="Advanced",group="Initialization",enable=controllerType == CDL.Types.SimpleController.PD or controllerType == CDL.Types.SimpleController.PID)); - parameter Boolean reverseActing=true - "Set to true for reverse acting, or false for direct acting control action"; - Buildings.Controls.OBC.CDL.Interfaces.RealInput u_s - "Connector of setpoint input signal" - annotation (Placement(transformation(extent={{-260,-20},{-220,20}}),iconTransformation(extent={{-140,-20},{-100,20}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput u_m - "Connector of measurement input signal" - annotation (Placement(transformation(origin={0,-220},extent={{20,-20},{-20,20}},rotation=270),iconTransformation(extent={{20,-20},{-20,20}},rotation=270,origin={0,-120}))); - Buildings.Controls.OBC.CDL.Interfaces.RealOutput y - "Connector of actuator output signal" - annotation (Placement(transformation(extent={{220,-20},{260,20}}),iconTransformation(extent={{100,-20},{140,20}}))); - Buildings.Controls.OBC.CDL.Continuous.Subtract controlError "Control error (set point - measurement)" - annotation (Placement(transformation(extent={{-200,-10},{-180,10}}))); - Buildings.Controls.OBC.CDL.Continuous.IntegratorWithReset I(final k=1, - final y_start=xi_start) if with_I - "Integral term" - annotation (Placement(transformation(extent={{-50,-10},{-30,10}}))); - Derivative D( - final k=1, - final T=Td_start/Nd, - final y_start=yd_start) if with_D - "Derivative term" - annotation (Placement(transformation(extent={{-50,60},{-30,80}}))); - Buildings.Controls.OBC.CDL.Continuous.Subtract errP - "P error" - annotation (Placement(transformation(extent={{-140,130},{-120,150}}))); - Buildings.Controls.OBC.CDL.Continuous.Subtract errD if with_D - "D error" - annotation (Placement(transformation(extent={{-140,60},{-120,80}}))); - Buildings.Controls.OBC.CDL.Continuous.Subtract errI1 if with_I - "I error (before anti-windup compensation)" - annotation (Placement(transformation(extent={{-140,-10},{-120,10}}))); - Buildings.Controls.OBC.CDL.Continuous.Subtract errI2 if with_I - "I error (after anti-windup compensation)" - annotation (Placement(transformation(extent={{-90,-10},{-70,10}}))); - Buildings.Controls.OBC.CDL.Continuous.Limiter lim( - final uMax=yMax, - final uMin=yMin) - "Limiter" - annotation (Placement(transformation(extent={{120,80},{140,100}}))); - - Modelica.Blocks.Sources.RealExpression P(y=errP.y*k) annotation (Placement(transformation(extent={{-50,130},{-30,150}}))); - Modelica.Blocks.Sources.RealExpression gainD(y=Td*k*errD.y) if - with_D annotation (Placement(transformation(extent={{-106,60},{-86,80}}))); - Modelica.Blocks.Sources.RealExpression gainI(y=errI2.y*k/Ti) if - with_I - annotation (Placement(transformation(extent={{-106,22},{-86,42}}))); - Modelica.Blocks.Sources.RealExpression antWinGai(y=antWinErr.y/(k*Ni)) if - with_I annotation (Placement(transformation(extent={{178,-34},{158,-14}}))); - Buildings.Controls.OBC.CDL.Discrete.Relay - relay( - yHigher=yHigher, - yLower=yLower, - deadBand=deadBand) - annotation (Placement(transformation(extent={{92,154},{112,174}}))); - Buildings.Controls.OBC.CDL.Continuous.Switch switch annotation (Placement(transformation(extent={{138,142},{158,122}}))); - Modelica.Blocks.Sources.BooleanExpression tunePeriodEnd(y=relay.dtON > 0 and relay.dtOFF > 0) annotation (Placement(transformation(extent={{98,122},{118,142}}))); - - Buildings.Controls.OBC.CDL.Continuous.AMIGOWithFOTD FOTDTuneModel( - yHigher=yHigher, - yLower=yLower, - deadBand=deadBand, - controllerType=controllerType) if tuningModeType==Buildings.Controls.OBC.CDL.Types.PIDAutoTuneModel.FOTD - annotation (Placement(transformation(extent={{120,-100},{100,-80}}))); - Buildings.Controls.OBC.CDL.Continuous.NormalizedDelay tauTuner(gamma=max(yHigher, abs(yLower))/min(yHigher, abs(yLower))) if tuningMethodType == Buildings.Controls.OBC.CDL.Types.PIDAutoTuner.tau - annotation (Placement(transformation(extent={{170,-100},{150,-80}}))); -protected - final parameter Real revAct= - if reverseActing then - 1 - else - -1 - "Switch for sign for reverse or direct acting controller"; - final parameter Boolean with_I=controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PI or controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PID - "Boolean flag to enable integral action" - annotation (Evaluate=true,HideResult=true); - final parameter Boolean with_D=controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PD or controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PID - "Boolean flag to enable derivative action" - annotation (Evaluate=true,HideResult=true); - Buildings.Controls.OBC.CDL.Continuous.Sources.Constant Dzero( - final k=0) if not with_D - "Zero input signal" - annotation (Evaluate=true,HideResult=true,Placement(transformation(extent={{-20,110},{0,130}}))); - Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter uS_revAct( - final k=revAct/r) "Set point multiplied by reverse action sign" - annotation (Placement(transformation(extent={{-200,30},{-180,50}}))); - Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter uMea_revAct( - final k=revAct/r) "Set point multiplied by reverse action sign" - annotation (Placement(transformation(extent={{-180,-50},{-160,-30}}))); - Buildings.Controls.OBC.CDL.Continuous.Add addPD - "Outputs P and D gains added" - annotation (Placement(transformation(extent={{20,116},{40,136}}))); - Buildings.Controls.OBC.CDL.Continuous.Add addPID - "Outputs P, I and D gains added" - annotation (Placement(transformation(extent={{80,80},{100,100}}))); - Buildings.Controls.OBC.CDL.Continuous.Subtract antWinErr if with_I - "Error for anti-windup compensation" - annotation (Placement(transformation(extent={{160,50},{180,70}}))); - Buildings.Controls.OBC.CDL.Logical.Sources.Constant cheYMinMax( - final k=yMin < yMax) - "Check for values of yMin and yMax" - annotation (Placement(transformation(extent={{120,-160},{140,-140}}))); - Buildings.Controls.OBC.CDL.Utilities.Assert assMesYMinMax( - message="LimPID: Limits must be yMin < yMax") - "Assertion on yMin and yMax" - annotation (Placement(transformation(extent={{160,-160},{180,-140}}))); - - Buildings.Controls.OBC.CDL.Continuous.Sources.Constant Izero( - final k=0) if not with_I - "Zero input signal" - annotation (Placement(transformation(extent={{40,74},{60,94}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.Constant con( - final k=0) if with_I - "Constant zero" - annotation (Placement(transformation(extent={{-100,-50},{-80,-30}}))); - Buildings.Controls.OBC.CDL.Logical.Sources.Constant con1( - final k=false) if with_I - "Constant false" - annotation (Placement(transformation(extent={{-100,-90},{-80,-70}}))); - - block Derivative - "Block that approximates the derivative of the input" - parameter Real k( - unit="1")=1 - "Gains"; - parameter Real T( - final quantity="Time", - final unit="s", - min=1E-60)=0.01 - "Time constant (T>0 required)"; - parameter Real y_start=0 - "Initial value of output (= state)" - annotation (Dialog(group="Initialization")); - Interfaces.RealInput u - "Connector of Real input signal" - annotation (Placement(transformation(extent={{-140,-20},{-100,20}}))); - Interfaces.RealOutput y - "Connector of Real output signal" - annotation (Placement(transformation(extent={{100,-20},{140,20}}))); - output Real x - "State of block"; - - protected - parameter Boolean zeroGain=abs(k) < 1E-17 - "= true, if gain equals to zero"; - - initial equation - if zeroGain then - x=u; - else - x=u-T*y_start/k; - end if; - - equation - der(x)= - if zeroGain then - 0 - else - (u-x)/T; - y=if zeroGain then - 0 - else - (k/T)*(u-x); - annotation ( - defaultComponentName="der", - Documentation( - info=" -

-This blocks defines the transfer function between the -input u and the output y -as approximated derivative: -

-
-             k * s
-     y = ------------ * u
-            T * s + 1
-
-

-If k=0, the block reduces to y=0. -

-", - revisions=" -
    -
  • -April 30, 2021, by Michael Wetter:
    -Refactored implementation to have separate blocks that show the P, I and D contribution, -each with the control gain applied.
    -This is for -issue 2475. -
  • -
  • -November 12, 2020, by Michael Wetter:
    -Reformulated to remove dependency to Modelica.Units.SI.
    -This is for -issue 2243. -
  • -
  • -August 7, 2020, by Michael Wetter:
    -Moved to protected block in PID controller because the derivative block is no longer part of CDL. -
  • -
  • -April 21, 2020, by Michael Wetter:
    -Removed option to not set the initialization method or to set the initial state. -The new implementation only allows to set the initial output, from which -the initial state is computed. -
    -This is for -issue 1887. -
  • -
  • -March 2, 2020, by Michael Wetter:
    -Changed icon to display dynamically the output value. -
  • -
  • -March 24, 2017, by Jianjun Hu:
    -First implementation, based on the implementation of the -Modelica Standard Library. -
  • -
-"), - Icon( - coordinateSystem( - preserveAspectRatio=true, - extent={{-100.0,-100.0},{100.0,100.0}}), - graphics={ - Rectangle( - extent={{-100,-100},{100,100}}, - lineColor={0,0,127}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid), - Line( - points={{-80.0,78.0},{-80.0,-90.0}}, - color={192,192,192}), - Polygon( - lineColor={192,192,192}, - fillColor={192,192,192}, - fillPattern=FillPattern.Solid, - points={{-80.0,90.0},{-88.0,68.0},{-72.0,68.0},{-80.0,90.0}}), - Line( - points={{-90.0,-80.0},{82.0,-80.0}}, - color={192,192,192}), - Polygon( - lineColor={192,192,192}, - fillColor={192,192,192}, - fillPattern=FillPattern.Solid, - points={{90.0,-80.0},{68.0,-72.0},{68.0,-88.0},{90.0,-80.0}}), - Line( - origin={-24.667,-27.333}, - points={{-55.333,87.333},{-19.333,-40.667},{86.667,-52.667}}, - color={0,0,127}, - smooth=Smooth.Bezier), - Text( - extent={{-150.0,-150.0},{150.0,-110.0}}, - textString="k=%k"), - Text( - extent={{-150,150},{150,110}}, - textString="%name", - textColor={0,0,255}), - Text( - extent={{226,60},{106,10}}, - textColor={0,0,0}, - textString=DynamicSelect("",String(y, - leftJustified=false, - significantDigits=3)))})); - end Derivative; - -equation - when tunePeriodEnd.y then - if tuningMethodType == Buildings.Controls.OBC.CDL.Types.PIDAutoTuner.tau and tuningModeType==Buildings.Controls.OBC.CDL.Types.PIDAutoTuneModel.FOTD then - k=FOTDTuneModel.k; - Td=FOTDTuneModel.Td; - Ti=FOTDTuneModel.Ti; - end if; - end when; - connect(u_s,uS_revAct.u) - annotation (Line(points={{-240,0},{-212,0},{-212,40},{-202,40}},color={0,0,127})); - connect(u_m,uMea_revAct.u) - annotation (Line(points={{0,-220},{0,-160},{-190,-160},{-190,-40},{-182,-40}},color={0,0,127})); - connect(errI1.u1,uS_revAct.y) - annotation (Line(points={{-142,6},{-170,6},{-170,40},{-178,40}},color={0,0,127})); - connect(addPID.u1,addPD.y) - annotation (Line(points={{78,96},{70,96},{70,126},{42,126}},color={0,0,127})); - connect(addPD.u2,Dzero.y) - annotation (Line(points={{18,120},{2,120}}, color={0,0,127})); - connect(D.y,addPD.u2) - annotation (Line(points={{-28,70},{10,70},{10,120},{18,120}}, color={0,0,127})); - connect(addPID.u2,I.y) - annotation (Line(points={{78,84},{72,84},{72,0},{-28,0}},color={0,0,127})); - connect(antWinErr.u2,lim.y) - annotation (Line(points={{158,54},{150,54},{150,90},{142,90}}, color={0,0,127})); - connect(errI1.y,errI2.u1) - annotation (Line(points={{-118,0},{-100,0},{-100,6},{-92,6}}, - color={0,0,127})); - connect(cheYMinMax.y,assMesYMinMax.u) - annotation (Line(points={{142,-150},{158,-150}},color={255,0,255})); - connect(Izero.y,addPID.u2) - annotation (Line(points={{62,84},{78,84}}, color={0,0,127})); - connect(con.y,I.y_reset_in) - annotation (Line(points={{-78,-40},{-60,-40},{-60,-8},{-52,-8}},color={0,0,127})); - connect(con1.y,I.trigger) - annotation (Line(points={{-78,-80},{-40,-80},{-40,-12}},color={255,0,255})); - connect(uS_revAct.y,errP.u1) - annotation (Line(points={{-178,40},{-170,40},{-170,146},{-142,146}},color={0,0,127})); - connect(errD.u1,uS_revAct.y) - annotation (Line(points={{-142,76},{-170,76},{-170,40},{-178,40}},color={0,0,127})); - connect(addPID.y, lim.u) - annotation (Line(points={{102,90},{118,90}},color={0,0,127})); - connect(addPID.y, antWinErr.u1) annotation (Line(points={{102,90},{110,90},{ - 110,66},{158,66}}, - color={0,0,127})); - connect(u_s, controlError.u1) annotation (Line(points={{-240,0},{-212,0},{ - -212,6},{-202,6}}, color={0,0,127})); - connect(u_m, controlError.u2) annotation (Line(points={{0,-220},{0,-160},{ - -212,-160},{-212,-6},{-202,-6}}, color={0,0,127})); - connect(uMea_revAct.y, errP.u2) annotation (Line(points={{-158,-40},{-150,-40}, - {-150,134},{-142,134}}, color={0,0,127})); - connect(uMea_revAct.y, errD.u2) annotation (Line(points={{-158,-40},{-150,-40}, - {-150,64},{-142,64}}, color={0,0,127})); - connect(uMea_revAct.y, errI1.u2) annotation (Line(points={{-158,-40},{-150, - -40},{-150,-6},{-142,-6}}, color={0,0,127})); - connect(P.y, addPD.u1) annotation (Line(points={{-29,140},{10,140},{10,132},{18,132}}, color={0,0,127})); - connect(gainD.y, D.u) annotation (Line(points={{-85,70},{-52,70}}, color={0,0,127})); - connect(gainI.y, I.u) annotation (Line(points={{-85,32},{-60,32},{-60,0},{-52,0}}, color={0,0,127})); - connect(antWinGai.y, errI2.u2) annotation (Line(points={{157,-24},{-102,-24},{-102,-6},{-92,-6}}, color={0,0,127})); - connect(tunePeriodEnd.y,switch. u2) annotation (Line(points={{119,132},{136,132}}, - color={255,0,255})); - connect(relay.u1, errP.u1) annotation (Line(points={{91,168},{0,168},{0,192},{-170,192},{-170,146},{-142,146}}, color={0,0,127})); - connect(relay.u2, errP.u2) annotation (Line(points={{91,159.6},{-12,159.6},{-12,186},{-150,186},{-150,134},{-142,134}}, color={0,0,127})); - connect(switch.y, y) annotation (Line(points={{160,132},{200,132},{200,0},{240,0}}, color={0,0,127})); - connect(relay.y, switch.u3) annotation (Line(points={{113,162},{130,162},{130,140},{136,140}}, color={0,0,127})); - if tuningMethodType == Buildings.Controls.OBC.CDL.Types.PIDAutoTuner.tau then - connect(tauTuner.dtON, relay.dtON) annotation (Line(points={{172,-84},{212,-84},{212,166},{113,166}}, color={0,0,127})); - connect(tauTuner.dtOFF, relay.dtOFF) annotation (Line(points={{172,-96},{208,-96},{208,158},{113,158}}, color={0,0,127})); - end if; - if tuningModeType==Buildings.Controls.OBC.CDL.Types.PIDAutoTuneModel.FOTD then - connect(FOTDTuneModel.RelayOutput, switch.u3) - annotation (Line(points={{122,-90},{134,-90},{134,56},{60,56},{60,148},{130,148},{130,140},{136,140}}, color={0,0,127})); - connect(FOTDTuneModel.dtON, relay.dtON) - annotation (Line(points={{122,-95.8},{134,-95.8},{134,-96},{144,-96},{144,-106},{188,-106},{188,-84},{212,-84},{212,166},{113,166}}, color={0,0,127})); - connect(FOTDTuneModel.dtOFF, relay.dtOFF) - annotation (Line(points={{122,-100},{134,-100},{134,-114},{200,-114},{200,-96},{208,-96},{208,158},{113,158}}, color={0,0,127})); - connect(relay.experimentStart, FOTDTuneModel.experimentStart) annotation (Line(points={{113,170},{194,170},{194,-46},{115.6,-46},{115.6,-78}}, color={255,0,255})); - connect(relay.experimentEnd, FOTDTuneModel.experimentEnd) annotation (Line(points={{113,174},{204,174},{204,-54},{104.6,-54},{104.6,-78}}, color={255,0,255})); - connect(relay.uDiff, FOTDTuneModel.ProcessOutput) annotation (Line(points={{113,154},{186,154},{186,-64},{128,-64},{128,-85.2},{122,-85.2}}, color={0,0,127})); - connect(tauTuner.y, FOTDTuneModel.tau) annotation (Line(points={{148,-90},{138,-90},{138,-80},{122,-80}}, color={0,0,127})); - end if; - connect(lim.y, switch.u1) annotation (Line(points={{142,90},{172,90},{172,110},{130,110},{130,124},{136,124}}, color={0,0,127})); - annotation ( - defaultComponentName="conPID", - Icon( - coordinateSystem( - extent={{-100,-100},{100,100}}), - graphics={ - Rectangle( - extent={{-100,-100},{100,100}}, - lineColor={0,0,127}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid), - Rectangle( - extent={{-6,-20},{66,-66}}, - lineColor={255,255,255}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid), - Text( - visible=(controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.P), - extent={{-32,-22},{68,-62}}, - lineColor={0,0,0}, - textString="P", - fillPattern=FillPattern.Solid, - fillColor={175,175,175}), - Text( - visible=(controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PI), - extent={{-26,-22},{74,-62}}, - lineColor={0,0,0}, - textString="PI", - fillPattern=FillPattern.Solid, - fillColor={175,175,175}), - Text( - visible=(controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PD), - extent={{-16,-22},{88,-62}}, - lineColor={0,0,0}, - fillPattern=FillPattern.Solid, - fillColor={175,175,175}, - textString="P D"), - Text( - visible=(controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PID), - extent={{-14,-22},{86,-62}}, - lineColor={0,0,0}, - textString="PID", - fillPattern=FillPattern.Solid, - fillColor={175,175,175}), - Polygon( - points={{-80,82},{-88,60},{-72,60},{-80,82}}, - lineColor={192,192,192}, - fillColor={192,192,192}, - fillPattern=FillPattern.Solid), - Line( - points={{-80,68},{-80,-100}}, - color={192,192,192}), - Line( - points={{-90,-80},{70,-80}}, - color={192,192,192}), - Polygon( - points={{74,-80},{52,-72},{52,-88},{74,-80}}, - lineColor={192,192,192}, - fillColor={192,192,192}, - fillPattern=FillPattern.Solid), - Text( - extent={{-150,150},{150,110}}, - textString="%name", - textColor={0,0,255}), - Line( - points={{-80,-80},{-80,-22}}, - color={0,0,0}), - Line( - points={{-80,-22},{6,56}}, - color={0,0,0}), - Line( - points={{6,56},{68,56}}, - color={0,0,0}), - Rectangle( - extent=DynamicSelect({{100,-100},{84,-100}},{{100,-100},{84,-100+(y-yMin)/(yMax-yMin)*200}}), - fillColor={175,175,175}, - fillPattern=FillPattern.Solid, - pattern=LinePattern.None, - lineColor={0,0,0})}), - Diagram( - coordinateSystem( - extent={{-220,-200},{220,200}}), graphics={Rectangle( - extent={{-56,180},{-24,-16}}, - fillColor={215,215,215}, - fillPattern=FillPattern.Solid, - pattern=LinePattern.None), Text( - extent={{-52,184},{-28,156}}, - pattern=LinePattern.None, - fillColor={215,215,215}, - fillPattern=FillPattern.Solid, - lineColor={0,0,0}, - textString="PID")}), - Documentation( - info=" -

PID controller with an autotuning feature.

-


This module is modified based on Buildings.Controls.OBC.CDL.Continuous.PID. We added the automatic controller tuning using relay-based model identification.

-

It allows users to select the tuning methods and the corrsponding model for PID tuning.

-


References

-

R. Montgomery and R. McDowall (2008). "Fundamentals of HVAC Control Systems." American Society of Heating Refrigerating and Air-Conditioning Engineers Inc. Atlanta, GA.

-", - revisions=" -
    -
  • March 30, 2022, by Sen Huang:
    First implementation.
  • -
-")); -end PIDWithAutoTuning; diff --git a/Buildings/Controls/OBC/CDL/Continuous/Validation/AMIGOWithFOTD.mo b/Buildings/Controls/OBC/CDL/Continuous/Validation/AMIGOWithFOTD.mo deleted file mode 100644 index d23644f2c94..00000000000 --- a/Buildings/Controls/OBC/CDL/Continuous/Validation/AMIGOWithFOTD.mo +++ /dev/null @@ -1,66 +0,0 @@ -within Buildings.Controls.OBC.CDL.Continuous.Validation; -model AMIGOWithFOTD "Validation model for the AMIGOWithFOTD block" - - Buildings.Controls.OBC.CDL.Continuous.AMIGOWithFOTD FOTD(controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PI) - annotation (Placement(transformation(extent={{20,-10},{40,10}}))); - Modelica.Blocks.Sources.Sine sine( - amplitude=1.2, - f=1/60, - offset=0.3, - startTime=0.025) "Sine source" - annotation (Placement(transformation(extent={{-82,30},{-62,50}}))); - Modelica.Blocks.Sources.Constant const(k=0) annotation (Placement(transformation(extent={{-82,-10},{-62,10}}))); - Buildings.Controls.OBC.CDL.Continuous.NormalizedDelay NormalizedDelay(gamma=3) annotation (Placement(transformation(extent={{-40,-60},{-20,-40}}))); - Discrete.Relay relay( - yHigher=4, - yLower=-0.5, - deadBand=0.5) - annotation (Placement(transformation(extent={{-40,20},{-20,40}}))); -equation - connect(sine.y, relay.u1) annotation (Line(points={{-61,40},{-52,40},{-52,34},{-41,34}}, color={0,0,127})); - connect(relay.u2, const.y) annotation (Line(points={{-41,25.6},{-52,25.6},{-52,0},{-61,0}}, color={0,0,127})); - connect(FOTD.tau, NormalizedDelay.y) annotation (Line(points={{18,10},{-8,10},{-8,-50},{-18,-50}}, color={0,0,127})); - connect(relay.dtON, FOTD.dtON) annotation (Line(points={{-19,32},{10,32},{10,-5.8},{18,-5.8}}, color={0,0,127})); - connect(NormalizedDelay.dtON, FOTD.dtON) - annotation (Line(points={{-42,-44},{-48,-44},{-48,18},{-8,18},{-8,34},{10,34},{10,-5.8},{18,-5.8}}, color={0,0,127})); - connect(relay.dtOFF, FOTD.dtOFF) annotation (Line(points={{-19,24},{-4,24},{-4,-10},{18,-10}}, color={0,0,127})); - connect(NormalizedDelay.dtOFF, FOTD.dtOFF) - annotation (Line(points={{-42,-56},{-58,-56},{-58,-16},{-12,-16},{-12,25.6},{-4,25.6},{-4,-10},{18,-10}}, color={0,0,127})); - connect(relay.uDiff, FOTD.ProcessOutput) annotation (Line(points={{-19,20},{2,20},{2,4.8},{18,4.8}}, color={0,0,127})); - connect(FOTD.RelayOutput, relay.y) annotation (Line(points={{18,0},{6,0},{6,28},{-19,28}}, color={0,0,127})); - connect(relay.experimentStart, FOTD.experimentStart) annotation (Line(points={{-19,36},{24.4,36},{24.4,12}}, color={255,0,255})); - connect(relay.experimentEnd, FOTD.experimentEnd) annotation (Line(points={{-19,40},{35.4,40},{35.4,12}}, color={255,0,255})); - annotation ( - experiment( - StopTime=120, - Tolerance=1e-06, - __Dymola_Algorithm="Dassl"), - __Dymola_Commands( - file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/CDL/Continuous/Validation/AMIGOWithFOTD.mos" "Simulate and plot"), - Documentation( - info=" -

-Validation test for the block - -Buildings.Controls.OBC.CDL.Continuous.AMIGOWithFOTD. -

-", - revisions=" -
    -
  • March 30, 2022, by Sen Huang:
    First implementation.
  • -
-"), - Icon( - 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}})})); -end AMIGOWithFOTD; diff --git a/Buildings/Controls/OBC/CDL/Continuous/Validation/NormalizedDelay.mo b/Buildings/Controls/OBC/CDL/Continuous/Validation/NormalizedDelay.mo deleted file mode 100644 index 1722ee5a234..00000000000 --- a/Buildings/Controls/OBC/CDL/Continuous/Validation/NormalizedDelay.mo +++ /dev/null @@ -1,56 +0,0 @@ -within Buildings.Controls.OBC.CDL.Continuous.Validation; -model NormalizedDelay "Validation model for the NormalizedDelay block" - - Modelica.Blocks.Sources.Sine sine( - amplitude=1.2, - f=1/60, - offset=0.3, - startTime=0.025) "Sine source" - annotation (Placement(transformation(extent={{-82,28},{-62,48}}))); - Modelica.Blocks.Sources.Constant const(k=0) annotation (Placement(transformation(extent={{-82,-42},{-62,-22}}))); - Buildings.Controls.OBC.CDL.Continuous.NormalizedDelay NormalizedDelay(gamma=3) annotation (Placement(transformation(extent={{20,-10},{40,10}}))); - Discrete.Relay relay( - yHigher=4, - yLower=-0.5, - deadBand=0.5) - annotation (Placement(transformation(extent={{-40,-8},{-20,12}}))); -equation - connect(sine.y, relay.u1) annotation (Line(points={{-61,38},{-54,38},{-54,6},{-41,6}}, color={0,0,127})); - connect(relay.u2, const.y) annotation (Line(points={{-41,-2.4},{-54,-2.4},{-54,-32},{-61,-32}}, - color={0,0,127})); - connect(relay.dtON, NormalizedDelay.dtON) annotation (Line(points={{-19,4},{-12,4},{-12,6},{18,6}}, color={0,0,127})); - connect(relay.dtOFF, NormalizedDelay.dtOFF) annotation (Line(points={{-19,-4},{-12,-4},{-12,-6},{18,-6}}, color={0,0,127})); - annotation ( - experiment( - StopTime=120, - Tolerance=1e-06, - __Dymola_Algorithm="Dassl"), - __Dymola_Commands( - file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/CDL/Continuous/Validation/NormalizedDelay.mos" "Simulate and plot"), - Documentation( - info=" -

-Validation test for the block - -Buildings.Controls.OBC.CDL.Continuous.NormalizedDelay. -

-", - revisions=" -
    -
  • March 30, 2022, by Sen Huang:
    First implementation.
  • -
-"), - Icon( - 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}})})); -end NormalizedDelay; diff --git a/Buildings/Controls/OBC/CDL/Continuous/Validation/PIDWithAutoTuning.mo b/Buildings/Controls/OBC/CDL/Continuous/Validation/PIDWithAutoTuning.mo deleted file mode 100644 index 65d2d1fc124..00000000000 --- a/Buildings/Controls/OBC/CDL/Continuous/Validation/PIDWithAutoTuning.mo +++ /dev/null @@ -1,62 +0,0 @@ -within Buildings.Controls.OBC.CDL.Continuous.Validation; -model PIDWithAutoTuning "Test model for PID controller" - Sources.Sine sin1(freqHz=1/60, offset=0.3, - startTime=0.025) - "Setpoint" - annotation (Placement(transformation(extent={{-90,14},{-70,34}}))); - Buildings.Controls.OBC.CDL.Continuous.PIDWithAutoTuning limPIDwithAutoTuning( - controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PID, - Ti_start=1, - Td_start=1, - yHigher=4, - yLower=-0.5, - deadBand=0.3, - yMin=-1) "PID controller" annotation (Placement(transformation(extent={{-30,40},{-10,60}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.Constant const(k=0) - "Measurement data" - annotation (Placement(transformation(extent={{-90,-22},{-70,-2}}))); - Buildings.Controls.OBC.CDL.Continuous.PID limPID( - Ti=1, - Td=1, - yMin=-1, - controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PID) "PID controller" annotation (Placement(transformation(extent={{-28,-10},{-8,10}}))); - -equation - connect(sin1.y, limPIDwithAutoTuning.u_s) annotation (Line(points={{-68,24},{-54,24},{-54,50},{-32,50}}, color={0,0,127})); - connect(const.y, limPIDwithAutoTuning.u_m) annotation (Line(points={{-68,-12},{-62,-12},{-62,30},{-20,30},{-20,38}}, color={0,0,127})); - connect(const.y, limPID.u_m) annotation (Line(points={{-68,-12},{-62,-12},{-62,30},{2,30},{2,-18},{-18,-18},{-18,-12}}, color={0,0,127})); - connect(sin1.y, limPID.u_s) annotation (Line(points={{-68,24},{-54,24},{-54,0},{-30,0}}, color={0,0,127})); - annotation ( - experiment( - StopTime=120, - Tolerance=1e-06, - __Dymola_Algorithm="Dassl"), - __Dymola_Commands( - file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/CDL/Continuous/Validation/PIDWithAutoTuning.mos" "Simulate and plot"), - Documentation( - info=" -

-Validation test for the block - -Buildings.Controls.OBC.CDL.Continuous.PIDWithAutoTuning. -

-", - revisions=" -
    -
  • March 30, 2022, by Sen Huang:
    First implementation.
  • -
-"), - Icon( - 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}})})); -end PIDWithAutoTuning; diff --git a/Buildings/Controls/OBC/CDL/Continuous/Validation/package.order b/Buildings/Controls/OBC/CDL/Continuous/Validation/package.order index 0a0a5aaea39..e6c61b3a278 100644 --- a/Buildings/Controls/OBC/CDL/Continuous/Validation/package.order +++ b/Buildings/Controls/OBC/CDL/Continuous/Validation/package.order @@ -40,7 +40,6 @@ PIDInitialState PIDScale PIDWithReset PIDWithResetScale -PIDWithAutoTuning Round Sin Sort @@ -48,5 +47,3 @@ Sqrt Subtract Switch Tan -NormalizedDelay -AMIGOWithFOTD diff --git a/Buildings/Controls/OBC/CDL/Continuous/package.order b/Buildings/Controls/OBC/CDL/Continuous/package.order index 0d20d7f39b5..f649f4b5046 100644 --- a/Buildings/Controls/OBC/CDL/Continuous/package.order +++ b/Buildings/Controls/OBC/CDL/Continuous/package.order @@ -35,7 +35,6 @@ Multiply MultiplyByParameter PID PIDWithReset -PIDWithAutoTuning Round Sin Sort @@ -43,7 +42,5 @@ Sqrt Subtract Switch Tan -NormalizedDelay -AMIGOWithFOTD Sources Validation diff --git a/Buildings/Controls/OBC/CDL/Discrete/Examples/Relay.mo b/Buildings/Controls/OBC/CDL/Discrete/Examples/Relay.mo deleted file mode 100644 index 5626f9609ee..00000000000 --- a/Buildings/Controls/OBC/CDL/Discrete/Examples/Relay.mo +++ /dev/null @@ -1,23 +0,0 @@ -within Buildings.Controls.OBC.CDL.Discrete.Examples; -model Relay "Example model for block that outputs a relay signal" - extends Modelica.Icons.Example; - Buildings.Controls.OBC.CDL.Discrete.Relay relay( - yHigher=1, - yLower=-0.1, - deadBand=0.5) - annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - Modelica.Blocks.Sources.Sine sine( - amplitude=1.2, - f=1/60, - offset=0, - startTime=0.025) "Sine source" - annotation (Placement(transformation(extent={{-60,12},{-40,32}}))); - Modelica.Blocks.Sources.Constant const(k=0) annotation (Placement(transformation(extent={{-60,-30},{-40,-10}}))); -equation - connect(sine.y, relay.u1) annotation (Line(points={{-39,22},{-20,22},{-20,4},{-11,4}}, color={0,0,127})); - connect(const.y, relay.u2) annotation (Line(points={{-39,-20},{-20,-20},{-20,-4.4},{-11,-4.4}}, color={0,0,127})); - annotation (experiment(Tolerance=1e-6, StopTime=1.0), -__Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/CDL/Discrete/Examples/Relay.mos" - "Simulate and plot"),Icon(coordinateSystem(preserveAspectRatio=false)), Diagram(coordinateSystem(preserveAspectRatio=false)), - experiment(StopTime=120, __Dymola_Algorithm="Dassl")); -end Relay; diff --git a/Buildings/Controls/OBC/CDL/Discrete/Examples/package.order b/Buildings/Controls/OBC/CDL/Discrete/Examples/package.order index 5598ef91c1f..202f8ba5eca 100644 --- a/Buildings/Controls/OBC/CDL/Discrete/Examples/package.order +++ b/Buildings/Controls/OBC/CDL/Discrete/Examples/package.order @@ -5,4 +5,3 @@ TriggeredMovingMean TriggeredSampler UnitDelay ZeroOrderHold -Relay diff --git a/Buildings/Controls/OBC/CDL/Discrete/Relay.mo b/Buildings/Controls/OBC/CDL/Discrete/Relay.mo deleted file mode 100644 index 46267c88911..00000000000 --- a/Buildings/Controls/OBC/CDL/Discrete/Relay.mo +++ /dev/null @@ -1,94 +0,0 @@ -within Buildings.Controls.OBC.CDL.Discrete; -block Relay "Outputs a relay signal for PID tuning experiment" - parameter Buildings.Controls.OBC.CDL.Types.PIDAutoTuner tuningMethodType=Buildings.Controls.OBC.CDL.Types.PIDAutoTuner.tau "Type of autotuner"; - parameter Buildings.Controls.OBC.CDL.Types.PIDAutoTuneModel tuningModeType=Buildings.Controls.OBC.CDL.Types.PIDAutoTuneModel.FOTD "Type of the tune model" - annotation (Dialog(enable=tuningMethodType == Buildings.Controls.OBC.CDL.Types.PIDAutoTuner.tau)); - parameter Real yHigher = 1 "Higher value of the output"; - parameter Real yLower = -0.5 "Lower value of the output"; - parameter Real deadBand = 0.5 "Deadband for holding the output value"; - Interfaces.RealInput u1 "Input 1" annotation (Placement(transformation(extent={{-120,30},{-100,50}}), iconTransformation(extent={{-120,30}, - {-100,50}}))); - Interfaces.RealInput u2 "Input 2" annotation (Placement(transformation(extent={{-120,-54},{-100,-34}}), iconTransformation(extent={{-120,-54}, - {-100,-34}}))); - Interfaces.RealOutput y "Ouput" annotation (Placement(transformation(extent={{100,-30},{120,-10}}))); - Interfaces.RealOutput dtON "Half-period length for the higher value" annotation (Placement(transformation(extent={{100,10},{120,30}}))); - Interfaces.RealOutput dtOFF "Half-period length for the lower value" annotation (Placement(transformation(extent={{100,-70},{120,-50}}))); - Interfaces.RealOutput uDiff "Difference between u1 and u2" annotation (Placement(transformation(extent={{100,-110},{120,-90}}))); - Interfaces.BooleanOutput experimentStart(start=false) "Set to true when the relay experiment starts" annotation (Placement(transformation(extent={{100,50},{120,70}}))); - Interfaces.BooleanOutput experimentEnd(start=false) "Set to true when the relay experiment ends" annotation (Placement(transformation(extent={{100,90},{120,110}}))); - Modelica.Units.SI.Time tON_start(start=0) "Time when the output is the higher value"; - Modelica.Units.SI.Time tOFF_start(start=0) "Time when the output is the lower value"; - -equation - uDiff=u1-u2; - when uDiff>+deadBand then - tON_start = time; - if tOFF_start>0 then - dtOFF = time - tOFF_start; - else - dtOFF = 0; - end if; - end when; - when uDiff<-deadBand then - tOFF_start = time; - if tON_start>0 then - dtON = time - tON_start; - else - dtON = 0; - end if; - end when; - when tON_start>0 or tOFF_start>0 then - experimentStart = true; - end when; - when dtON>0 and dtOFF>0 then - experimentEnd = true; - end when; - if uDiff>deadBand then - y = yHigher; - elseif uDiff<-deadBand then - y = yLower; - elseif tOFF_start>tON_start then - y = yLower; - elseif tON_start>tOFF_start then - y = yHigher; - else - y = yLower; - end if; - - annotation (Placement(transformation(extent={{-140,20},{-100,60}}), iconTransformation(extent={{-140,20},{-100,60}})), - Placement(transformation(extent={{-140,20},{-100,60}}), iconTransformation(extent={{-140,20},{-100,60}})), - Icon(coordinateSystem(preserveAspectRatio=false), graphics={ - Text( - extent={{-148,160},{152,120}}, - textString="%name", - textColor={0,0,255}), Rectangle( - extent={{-100,-100},{100,100}}, - lineColor={0,0,127}, - fillColor={223,211,169}, - lineThickness=5.0, - borderPattern=BorderPattern.Raised, - fillPattern=FillPattern.Solid), - Line(points={{-40,-6},{16,38}}, color={28,108,200}), - Ellipse( - extent={{-50,0},{-38,-12}}, - lineColor={28,108,200}, - fillColor={28,108,200}, - fillPattern=FillPattern.Solid), - Ellipse( - extent={{32,0},{44,-12}}, - lineColor={28,108,200}, - fillColor={28,108,200}, - fillPattern=FillPattern.Solid), - Line(points={{-48,-6},{-84,-6}}, color={28,108,200}), - Line(points={{78,-6},{42,-6}}, color={28,108,200})}), Diagram(coordinateSystem(preserveAspectRatio=false)), - Documentation(revisions=" -
    -
  • -March 30, 2022, by Sen Huang:
    -First implementation. -
  • -
-", info=" -

Block that outputs a relay signal which switches between two discrete values every time the process output leaves the hysteresis band.

-")); -end Relay; diff --git a/Buildings/Controls/OBC/CDL/Discrete/package.order b/Buildings/Controls/OBC/CDL/Discrete/package.order index 0fd75f888f4..ccdda1a5936 100644 --- a/Buildings/Controls/OBC/CDL/Discrete/package.order +++ b/Buildings/Controls/OBC/CDL/Discrete/package.order @@ -5,5 +5,4 @@ TriggeredMovingMean TriggeredSampler UnitDelay ZeroOrderHold -Relay Examples diff --git a/Buildings/Controls/OBC/Utilities/BaseClasses/Relay.mo b/Buildings/Controls/OBC/Utilities/BaseClasses/Relay.mo new file mode 100644 index 00000000000..dd7c3b30f34 --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/BaseClasses/Relay.mo @@ -0,0 +1,92 @@ +within Buildings.Controls.OBC.Utilities.BaseClasses; +block Relay + "Outputs a relay signal for PID tuning purposes" + parameter Real yHig(min=0) = 1 + "Higher value for the output"; + parameter Real yLow(max=0) = -0.5 + "Lower value for the output"; + parameter Real deaBan(min=0) = 0.5 + "Deadband for holding the output value"; + Buildings.Controls.OBC.CDL.Interfaces.RealInput u_s + "Connector for the setpoint input signal" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}), + iconTransformation(extent={{-140,-20},{-100,20}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealInput u_m + "Connector for the measurement input signal" + annotation (Placement(transformation(origin={0,-120},extent={{20,-20},{-20,20}},rotation=270), + iconTransformation(extent={{20,-20},{-20,20}},rotation=270,origin={0,-120}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput y "Relay output signal" + annotation (Placement(transformation(extent={{100,-10},{120,10}}))); + Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput On "Relay switch signal" + annotation (Placement(transformation(extent={{100,-40},{120,-20}}))); + Buildings.Controls.OBC.CDL.Logical.OnOffController greMeaSet(bandwidth=deaBan*2, pre_y_start=true) + "check if the measured value is larger than the reference" + annotation (Placement(transformation(extent={{-20,-10},{0,10}}))); + Buildings.Controls.OBC.CDL.Continuous.Switch swi + "Switch between a higher value and a lower value" + annotation (Placement(transformation(extent={{60,-10},{80,10}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant yHigSig(final k=yHig) + "Higher value for the output" + annotation (Placement(transformation(extent={{-40,40},{-20,60}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant yLowSig(final k=yLow) + "Default temperature slope in case of zero division" + annotation (Placement(transformation(extent={{-40,-50},{-20,-30}}))); + Buildings.Controls.OBC.CDL.Logical.Not notCon + "reverse the swtich signal" + annotation (Placement(transformation(extent={{12,-10},{32,10}}))); + +initial equation + assert( + abs(abs(yHig) - abs(yLow))>1E-6, + "the absulte values of yHig should be different from that of yLow. Check parameters."); + +equation + connect(swi.y, y) + annotation (Line(points={{82,0},{90,0},{90,0},{110,0}}, color={0,0,127})); + connect(greMeaSet.reference, u_s) + annotation (Line(points={{-22,6},{-94,6},{-94,0},{-120,0}}, + color={0,0,127})); + connect(greMeaSet.u, u_m) + annotation (Line(points={{-22,-6},{-64,-6},{-64,-94}, + {0,-94},{0,-120}}, color={0,0,127})); + connect(greMeaSet.y, notCon.u) + annotation (Line(points={{2,0},{10,0}}, color={255,0,255})); + connect(notCon.y, swi.u2) + annotation (Line(points={{34,0},{58,0}}, color={255,0,255})); + connect(yHigSig.y, swi.u1) + annotation (Line(points={{-18,50},{50,50},{50,8},{58, + 8}}, color={0,0,127})); + connect(yLowSig.y, swi.u3) + annotation (Line(points={{-18,-40},{50,-40},{50,-8}, + {58,-8}}, color={0,0,127})); + connect(On, swi.u2) + annotation (Line(points={{110,-30},{40,-30},{40,0},{58,0}}, + color={255,0,255})); + annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-148,154},{152,114}}, + textString="%name", + textColor={0,0,255})}), Diagram( + coordinateSystem(preserveAspectRatio=false)), + Documentation(info=" +

This block grenerates a relay feedback signal, as described below:

+

if e(t) > δ, then y(t) = yhig,

+

if e(t) < δ, then y(t) = ylow,

+

otherwise, y(t) = y(t-Δt).

+

where e(t) = us(t) - um(t) is the control error, yhig and ylow are the higher value and the lower value of the output y, respectively.

+

y(t-Δt) is the output at the previous time step.

+

Note that this block generates a asymmetric signal, meaning |yhig| ≠ |ylow|

+", revisions=" +
    +
  • +June 1, 2022, by Sen Huang:
    +First implementation
    +
  • +
+")); +end Relay; diff --git a/Buildings/Controls/OBC/Utilities/BaseClasses/RelayHalfPeriodRatio.mo b/Buildings/Controls/OBC/Utilities/BaseClasses/RelayHalfPeriodRatio.mo new file mode 100644 index 00000000000..b7c936cf878 --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/BaseClasses/RelayHalfPeriodRatio.mo @@ -0,0 +1,103 @@ +within Buildings.Controls.OBC.Utilities.BaseClasses; +block RelayHalfPeriodRatio + "Calculates the half period ratio of a response from a relay controller" + + Buildings.Controls.OBC.CDL.Interfaces.RealInput tOn + "Connector for setpoint input signal" + annotation (Placement(transformation(extent={{-140,40},{-100,80}}), + iconTransformation(extent={{-140,40},{-100,80}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealInput tOff + "Connector for setpoint input signal" + annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), + iconTransformation(extent={{-140,-80},{-100,-40}}))); + Buildings.Controls.OBC.CDL.Continuous.Min tmin "The minimum value of tOn and tOff" + annotation (Placement(transformation(extent={{-80,20},{-60,40}}))); + Buildings.Controls.OBC.CDL.Continuous.Greater gretmin + "Check if both tOn and tOff are both larger than 0" + annotation (Placement(transformation(extent={{-40,20},{-20,40}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant minLen(final k=0) + "Minimum value for the horizon length" + annotation (Placement(transformation(extent={{-80,-20},{-60,0}}))); + Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler tOnSample(y_start=Buildings.Controls.OBC.CDL.Constants.eps) + "Sampling tOn when the tuning period ends" + annotation (Placement(transformation(extent={{0,50},{20,70}}))); + Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler tOffSample(y_start=Buildings.Controls.OBC.CDL.Constants.eps) + "Sampling tOff when the tuning period ends" + annotation (Placement(transformation(extent={{0,-60},{20,-80}}))); + Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler tminSample + "Sampling the tmin when tmin is larger than 0" + annotation (Placement(transformation(extent={{0,-10},{20,10}}))); + Buildings.Controls.OBC.CDL.Continuous.Greater gretminChange + "Checking if either tOn or tOff changes after they both becomes positive" + annotation (Placement(transformation(extent={{-40,-50},{-20,-30}}))); + Buildings.Controls.OBC.CDL.Continuous.Min mintOntOff "The smaller one between tOn and tOff" + annotation (Placement(transformation(extent={{40,-80},{60,-60}}))); + Buildings.Controls.OBC.CDL.Continuous.Max maxtOntOff "The larger one between tOn and tOff" + annotation (Placement(transformation(extent={{40,50},{60,70}}))); + Buildings.Controls.OBC.CDL.Continuous.Divide halfPeriodRatioCal "Calculating the half period ratio" + annotation (Placement(transformation(extent={{60,-10},{80,10}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput halfPeriodRatio + "Connector for a output signal of the half period ratio" + annotation (Placement(transformation(extent={{100,-10},{120,10}}))); +equation + connect(tmin.u1, tOn) annotation (Line(points={{-82,36},{-92,36},{-92,60},{-120, + 60}}, color={0,0,127})); + connect(tmin.u2, tOff) annotation (Line(points={{-82,24},{-94,24},{-94,-60},{-120, + -60}}, color={0,0,127})); + connect(tmin.y, gretmin.u1) + annotation (Line(points={{-58,30},{-42,30}}, color={0,0,127})); + connect(minLen.y, gretmin.u2) annotation (Line(points={{-58,-10},{-48,-10},{-48, + 22},{-42,22}}, color={0,0,127})); + connect(tOnSample.u, tOn) + annotation (Line(points={{-2,60},{-120,60}}, color={0,0,127})); + connect(tOffSample.u, tOff) annotation (Line(points={{-2,-70},{-94,-70},{-94,-60}, + {-120,-60}}, color={0,0,127})); + connect(tOnSample.trigger, tOffSample.trigger) annotation (Line(points={{10,48}, + {10,26},{-12,26},{-12,-40},{10,-40},{10,-58}}, color={255,0,255})); + connect(tminSample.u, gretmin.u1) annotation (Line(points={{-2,0},{-8,0},{-8,52}, + {-48,52},{-48,30},{-42,30}}, color={0,0,127})); + connect(gretminChange.u1, gretmin.u1) annotation (Line(points={{-42,-40},{-86, + -40},{-86,16},{-52,16},{-52,30},{-42,30}}, color={0,0,127})); + connect(tminSample.y, gretminChange.u2) annotation (Line(points={{22,0},{22,-56}, + {-42,-56},{-42,-48}}, color={0,0,127})); + connect(gretmin.y, tminSample.trigger) annotation (Line(points={{-18,30},{-10, + 30},{-10,-18},{10,-18},{10,-12}}, color={255,0,255})); + connect(gretminChange.y, tOffSample.trigger) + annotation (Line(points={{-18,-40},{10,-40},{10,-58}}, color={255,0,255})); + connect(tOnSample.y, maxtOntOff.u1) annotation (Line(points={{22,60},{30,60},{ + 30,66},{38,66}}, color={0,0,127})); + connect(maxtOntOff.u2, tOffSample.y) annotation (Line(points={{38,54},{28,54}, + {28,-70},{22,-70}}, color={0,0,127})); + connect(mintOntOff.u2, tOffSample.y) annotation (Line(points={{38,-76},{28,-76}, + {28,-70},{22,-70}}, color={0,0,127})); + connect(mintOntOff.u1, maxtOntOff.u1) annotation (Line(points={{38,-64},{30,-64}, + {30,66},{38,66}}, color={0,0,127})); + connect(maxtOntOff.y, halfPeriodRatioCal.u1) annotation (Line(points={{62,60}, + {72,60},{72,20},{52,20},{52,6},{58,6}}, color={0,0,127})); + connect(halfPeriodRatioCal.u2, mintOntOff.y) annotation (Line(points={{58,-6}, + {52,-6},{52,-50},{70,-50},{70,-70},{62,-70}}, color={0,0,127})); + connect(halfPeriodRatioCal.y, halfPeriodRatio) + annotation (Line(points={{82,0},{110,0}}, color={0,0,127})); + annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-154,148},{146,108}}, + textString="%name", + textColor={0,0,255})}), Diagram(coordinateSystem(preserveAspectRatio=false)), + Documentation(revisions=" +
    +
  • +June 1, 2022, by Sen Huang:
    +First implementation
    +
  • +
+", info=" +

This block calculates the half-period ratio of the responses from a relay controller, ρ, by

+

ρ = max(ton,toff)/ min(ton,toff)

+

where ton and ton are the length of the On period and the Off period, respectively.

+")); +end RelayHalfPeriodRatio; diff --git a/Buildings/Controls/OBC/Utilities/BaseClasses/RelayProcess.mo b/Buildings/Controls/OBC/Utilities/BaseClasses/RelayProcess.mo new file mode 100644 index 00000000000..8850b177097 --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/BaseClasses/RelayProcess.mo @@ -0,0 +1,115 @@ +within Buildings.Controls.OBC.Utilities.BaseClasses; +block RelayProcess + "Processes a relay signal to calculate the lengths of the On period and the Off period" + Buildings.Controls.OBC.CDL.Interfaces.BooleanInput On + "Connector for input signal" + annotation ( + Placement(transformation(extent={{-140,-80},{-100,-40}}), + iconTransformation(extent={{-140,-80},{-100,-40}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput tOff + "Connector for a Real output signal of the length for the Off period" + annotation (Placement(transformation(extent={{100,-50},{120,-30}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput tOn + "Connector for a output signal of the length for the On period" + annotation (Placement(transformation(extent={{100,30},{120,50}}))); + Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler timOn + "Simulation time when the input signal becomes On (True)" + annotation (Placement(transformation(extent={{-30,30},{-10,50}}))); + Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler timOff + "Simulation time when the input signal becomes Off (False)" + annotation (Placement(transformation(extent={{-30,-40},{-10,-20}}))); + Buildings.Controls.OBC.CDL.Logical.Not Off "Relay switch off" + annotation (Placement(transformation(extent={{-80,-80},{-60,-60}}))); + Buildings.Controls.OBC.CDL.Continuous.Subtract lenOffCal + "Calculating the horizon length for the Off period" + annotation (Placement(transformation(extent={{20,-40},{40,-20}}))); + Buildings.Controls.OBC.CDL.Continuous.Subtract lenOnCal + "Calculating the horizon length for the On period" + annotation (Placement(transformation(extent={{20,30},{40,50}}))); + Buildings.Controls.OBC.CDL.Continuous.Greater greTimOff + "Triggering the action to record the horizon length for the Off period" + annotation (Placement(transformation(extent={{40,-80},{60,-60}}))); + Buildings.Controls.OBC.CDL.Continuous.Greater greTimOn + "Triggering the action to record the horizon length for the On period" + annotation (Placement(transformation(extent={{40,60},{60,80}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant minLen(final k=0) + "Minimum value for the horizon length" + annotation (Placement(transformation(extent={{-80,60},{-60,80}}))); + Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler timOffRecord + "Recording the horizon length for the Off period" + annotation (Placement(transformation(extent={{60,-50},{80,-30}}))); + Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler timOnRecord + "Recording the horizon length for the On period" + annotation (Placement(transformation(extent={{60,50},{80,30}}))); + + CDL.Interfaces.RealInput tim + "Connector for the input signal of the simulation time" annotation ( + Placement(transformation(extent={{-140,40},{-100,80}}), + iconTransformation(extent={{-140,40},{-100,80}}))); +equation + connect(Off.u, On) annotation (Line(points={{-82,-70},{-94,-70},{-94,-60},{ + -120,-60}}, + color={255,0,255})); + connect(Off.y, timOff.trigger) annotation (Line(points={{-58,-70},{-20,-70},{-20, + -42}}, color={255,0,255})); + connect(timOn.trigger, On) annotation (Line(points={{-20,28},{-20,20},{-92,20}, + {-92,-60},{-120,-60}}, + color={255,0,255})); + connect(lenOffCal.u1, timOn.y) annotation (Line(points={{18,-24},{8,-24},{8, + 34},{4,34},{4,40},{-8,40}}, + color={0,0,127})); + connect(lenOnCal.u2, timOn.y) + annotation (Line(points={{18,34},{4,34},{4,40},{-8,40}}, color={0,0,127})); + connect(lenOnCal.u1, timOff.y) annotation (Line(points={{18,46},{0,46},{0,-30}, + {-8,-30}}, color={0,0,127})); + connect(lenOffCal.u2, timOff.y) annotation (Line(points={{18,-36},{0,-36},{0,-30}, + {-8,-30}}, color={0,0,127})); + connect(minLen.y, greTimOn.u2) + annotation (Line(points={{-58,70},{-52,70},{-52,62},{38,62}}, + color={0,0,127})); + connect(lenOnCal.y, greTimOn.u1) annotation (Line(points={{42,40},{50,40},{50, + 56},{20,56},{20,70},{38,70}}, color={0,0,127})); + connect(greTimOff.u2, greTimOn.u2) annotation (Line(points={{38,-78},{-52,-78}, + {-52,62},{38,62}}, color={0,0,127})); + connect(lenOffCal.y, greTimOff.u1) annotation (Line(points={{42,-30},{48,-30}, + {48,-48},{20,-48},{20,-70},{38,-70}}, color={0,0,127})); + connect(greTimOff.y, timOffRecord.trigger) + annotation (Line(points={{62,-70},{70,-70},{70,-52}}, color={255,0,255})); + connect(timOffRecord.u, greTimOff.u1) annotation (Line(points={{58,-40},{54, + -40},{54,-48},{20,-48},{20,-70},{38,-70}}, + color={0,0,127})); + connect(greTimOn.y, timOnRecord.trigger) + annotation (Line(points={{62,70},{70,70},{70,52}}, color={255,0,255})); + connect(timOnRecord.u, greTimOn.u1) annotation (Line(points={{58,40},{50,40}, + {50,56},{20,56},{20,70},{38,70}},color={0,0,127})); + connect(timOffRecord.y, tOff) + annotation (Line(points={{82,-40},{110,-40}}, color={0,0,127})); + connect(timOnRecord.y, tOn) + annotation (Line(points={{82,40},{110,40}}, color={0,0,127})); + connect(timOn.u, tim) annotation (Line(points={{-32,40},{-92,40},{-92,60},{ + -120,60}}, color={0,0,127})); + connect(timOff.u, tim) annotation (Line(points={{-32,-30},{-94,-30},{-94,60}, + {-120,60}}, color={0,0,127})); + annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-154,148},{146,108}}, + textString="%name", + textColor={0,0,255})}), Diagram(coordinateSystem(preserveAspectRatio=false)), + Documentation(revisions=" +
    +
  • +June 1, 2022, by Sen Huang:
    +First implementation
    +
  • +
+", info=" +

This block processes a relay feedback signal and calculates

+

1) the length of the On period (when the relay switch signal becomes True);

+

2) the length of the Off period (when the relay switch signal becomes False).

+")); +end RelayProcess; diff --git a/Buildings/Controls/OBC/Utilities/BaseClasses/Validation/Relay.mo b/Buildings/Controls/OBC/Utilities/BaseClasses/Validation/Relay.mo new file mode 100644 index 00000000000..835fbf3456c --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/BaseClasses/Validation/Relay.mo @@ -0,0 +1,39 @@ +within Buildings.Controls.OBC.Utilities.BaseClasses.Validation; +model Relay + "Test model for Relay" + extends Modelica.Icons.Example; + Buildings.Controls.OBC.Utilities.BaseClasses.Relay relay(yLow=-0.5, deaBan=0.4) + "A relay controller" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + CDL.Continuous.Sources.Sine sin(freqHz=2) "Measured value" + annotation (Placement(transformation(extent={{-60,-60},{-40,-40}}))); + CDL.Continuous.Sources.Constant const(k=0) "Setpoint" + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); +equation + connect(const.y, relay.u_s) + annotation (Line(points={{-38,0},{-12,0}}, color={0,0,127})); + connect(sin.y, relay.u_m) + annotation (Line(points={{-38,-50},{0,-50},{0,-12}}, color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/BaseClasses/Validation/Relay.mos" "Simulate and plot"), + Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + coordinateSystem(preserveAspectRatio=false)), + Documentation(revisions=" +
    +
  • +June 1, 2022, by Sen Huang:
    +First implementation
    +
  • +
+", info=" +

+Validation test for the block + +Buildings.Controls.OBC.Utilities.BaseClasses.Relay. +

+")); +end Relay; diff --git a/Buildings/Controls/OBC/Utilities/BaseClasses/Validation/RelayHalfPeriodRatio.mo b/Buildings/Controls/OBC/Utilities/BaseClasses/Validation/RelayHalfPeriodRatio.mo new file mode 100644 index 00000000000..dc2010ccaaf --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/BaseClasses/Validation/RelayHalfPeriodRatio.mo @@ -0,0 +1,48 @@ +within Buildings.Controls.OBC.Utilities.BaseClasses.Validation; +model RelayHalfPeriodRatio + "Test model for RelayHalfPeriodRatio" + extends Modelica.Icons.Example; + .Buildings.Controls.OBC.Utilities.BaseClasses.RelayHalfPeriodRatio + relayHalfPeriodRatio + "Calculating the half period ratio" + annotation (Placement(transformation(extent={{-8,-10},{12,10}}))); + CDL.Continuous.Sources.TimeTable tOn( + table=[0,0; 0.1,1; 0.3,1; 0.7,1; 0.83,1; 0.85,2], + smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, + extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) + "The length of the On period" + annotation (Placement(transformation(extent={{-60,20},{-40,40}}))); + CDL.Continuous.Sources.TimeTable tOff( + table=[0,0; 0.1,0; 0.3,0; 0.7,3; 0.83,3; 0.85,3], + smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, + extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) + "The length of the Off period" + annotation (Placement(transformation(extent={{-60,-40},{-40,-20}}))); +equation + connect(tOn.y[1], relayHalfPeriodRatio.tOn) annotation (Line(points={{-38,30}, + {-20,30},{-20,6},{-10,6}}, color={0,0,127})); + connect(tOff.y[1], relayHalfPeriodRatio.tOff) annotation (Line(points={{-38,-30}, + {-20,-30},{-20,-6},{-10,-6}}, color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/BaseClasses/Validation/RelayHalfPeriodRatio.mos" "Simulate and plot"), + Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + coordinateSystem(preserveAspectRatio=false)), + Documentation(revisions=" +
    +
  • +June 1, 2022, by Sen Huang:
    +First implementation
    +
  • +
+", info=" +

+Validation test for the block + +Buildings.Controls.OBC.Utilities.BaseClasses.RelayFeedbackCalculation. +

+")); +end RelayHalfPeriodRatio; diff --git a/Buildings/Controls/OBC/Utilities/BaseClasses/Validation/RelayProcess.mo b/Buildings/Controls/OBC/Utilities/BaseClasses/Validation/RelayProcess.mo new file mode 100644 index 00000000000..eb5e88e682c --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/BaseClasses/Validation/RelayProcess.mo @@ -0,0 +1,42 @@ +within Buildings.Controls.OBC.Utilities.BaseClasses.Validation; +model RelayProcess + "Test model for RelayProcess" + extends Modelica.Icons.Example; + Buildings.Controls.OBC.Utilities.BaseClasses.RelayProcess relayPrcoess + "Calculating the length of the On period and the Off period" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + Buildings.Controls.OBC.CDL.Logical.Sources.TimeTable relayResponse( + table=[0,1;0.1,0; 0.3,0; 0.7,1; 0.83,0; 0.85,1], period=2) + "Mimicking the response for a relay controller" + annotation (Placement(transformation(extent={{-60,-20},{-40,0}}))); + CDL.Continuous.Sources.ModelTime modTim + "Simulation time" + annotation (Placement(transformation(extent={{-60,10},{-40,30}}))); +equation + connect(relayPrcoess.On, relayResponse.y[1]) annotation (Line(points={{-12,-6}, + {-20,-6},{-20,-10},{-38,-10}}, color={255,0,255})); + connect(modTim.y, relayPrcoess.tim) annotation (Line(points={{-38,20},{-20,20}, + {-20,6},{-12,6}}, color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/BaseClasses/Validation/RelayProcess.mos" "Simulate and plot"), + Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + coordinateSystem(preserveAspectRatio=false)), + Documentation(revisions=" +
    +
  • +June 1, 2022, by Sen Huang:
    +First implementation
    +
  • +
+", info=" +

+Validation test for the block + +Buildings.Controls.OBC.Utilities.BaseClasses.RelayProcess. +

+")); +end RelayProcess; diff --git a/Buildings/Controls/OBC/Utilities/BaseClasses/Validation/package.mo b/Buildings/Controls/OBC/Utilities/BaseClasses/Validation/package.mo new file mode 100644 index 00000000000..20b9a0358ed --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/BaseClasses/Validation/package.mo @@ -0,0 +1,5 @@ +within Buildings.Controls.OBC.Utilities.BaseClasses; +package Validation + extends Modelica.Icons.ExamplesPackage; + +end Validation; diff --git a/Buildings/Controls/OBC/Utilities/BaseClasses/Validation/package.order b/Buildings/Controls/OBC/Utilities/BaseClasses/Validation/package.order new file mode 100644 index 00000000000..acd80045569 --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/BaseClasses/Validation/package.order @@ -0,0 +1,3 @@ +Relay +RelayProcess +RelayHalfPeriodRatio diff --git a/Buildings/Controls/OBC/Utilities/BaseClasses/package.order b/Buildings/Controls/OBC/Utilities/BaseClasses/package.order index 8b68ab4181b..3891759640c 100644 --- a/Buildings/Controls/OBC/Utilities/BaseClasses/package.order +++ b/Buildings/Controls/OBC/Utilities/BaseClasses/package.order @@ -1 +1,5 @@ OptimalStartCalculation +Relay +RelayProcess +RelayHalfPeriodRatio +Validation diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/BaseClasses/Validation/Relay.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/BaseClasses/Validation/Relay.mos new file mode 100644 index 00000000000..17e19c95c2a --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/BaseClasses/Validation/Relay.mos @@ -0,0 +1,6 @@ +simulateModel("Buildings.Controls.OBC.Utilities.BaseClasses.Validation.Relay", method="Cvode", tolerance=1e-06, stopTime=1.0, resultFile="Relay"); +createPlot(id=1, position={75, 75, 1484, 920}, y={"relay.u_m"}, range={0.0, 1.0, -1.5, 1.5}, grid=true, subPlot=101, colors={{28,108,200}}); +plotExpression(apply(Relay[end].relay.u_s-0.4), false, "Relay[end].relay.u_s-deaBan", 1); +plotExpression(apply(Relay[end].relay.u_s+0.4), false, "Relay[end].relay.u_s+deaBan", 1); +createPlot(id=1, position={75, 75, 1484, 920}, y={"relay.y"}, range={0.0, 1.0, -1.0, 1.5}, grid=true, subPlot=102, colors={{28,108,200}}); + diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/BaseClasses/Validation/RelayHalfPeriodRatio.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/BaseClasses/Validation/RelayHalfPeriodRatio.mos new file mode 100644 index 00000000000..08352d5c6a7 --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/BaseClasses/Validation/RelayHalfPeriodRatio.mos @@ -0,0 +1,4 @@ +simulateModel("Buildings.Controls.OBC.Utilities.BaseClasses.Validation.RelayHalfPeriodRatio", method="Cvode", tolerance=1e-06, resultFile="RelayHalfPeriodRatio"); +createPlot(id=1, position={15, 15, 1742, 1559}, y={"relayHalfPeriodRatio.tOn", "relayHalfPeriodRatio.tOff"}, range={0.0, 1.0, -0.5, 3.5}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={15, 15, 1742, 1559}, y={"relayHalfPeriodRatio.halfPeriodRatio"}, range={0.0, 1.0, 0.9500000000000001, 1.5500000000000003}, grid=true, subPlot=102, colors={{28,108,200}}); + diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/BaseClasses/Validation/RelayProcess.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/BaseClasses/Validation/RelayProcess.mos new file mode 100644 index 00000000000..9ead7296ead --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/BaseClasses/Validation/RelayProcess.mos @@ -0,0 +1,4 @@ +simulateModel("Buildings.Controls.OBC.Utilities.BaseClasses.Validation.RelayProcess", method="Cvode", tolerance=1e-06, resultFile="RelayProcess"); +createPlot(id=1, position={35, 35, 1688, 1527}, y={"relayPrcoess.On"}, range={0.0, 1.0, -0.1, 1.1}, grid=true, subPlot=101, colors={{28,108,200}}); +createPlot(id=1, position={35, 35, 1688, 1527}, y={"relayPrcoess.tOn", "relayPrcoess.tOff"}, range={0.0, 1.0, -0.1, 0.7000000000000001}, grid=true, subPlot=102, colors={{238,46,47}, {28,108,200}}); + From 54846c72a7d0f3a93009ab66f6f87976ebf1ae59 Mon Sep 17 00:00:00 2001 From: Huang Date: Thu, 9 Jun 2022 12:18:42 -0700 Subject: [PATCH 008/214] restructure the PIDAutotuning package --- .../Validation/NormalizedTimeDelay.mo | 38 ++++ .../Utilities/BaseClasses/Validation/Relay.mo | 4 +- .../BaseClasses/Validation/package.mo | 5 - .../BaseClasses/Validation/package.order | 1 + .../OBC/Utilities/BaseClasses/package.order | 4 - .../PIDWithAutotuning/AutoTuner/AMIGO/PI.mo | 68 +++++++ .../PIDWithAutotuning/AutoTuner/AMIGO/PID.mo | 81 ++++++++ .../AutoTuner/AMIGO/PIDDerivativeTime.mo | 68 +++++++ .../AutoTuner/AMIGO/PIDGain.mo | 75 ++++++++ .../AutoTuner/AMIGO/PIDIntegralTime.mo | 78 ++++++++ .../AutoTuner/AMIGO/PIGain.mo | 111 +++++++++++ .../AutoTuner/AMIGO/PIIntegralTime.mo | 110 +++++++++++ .../AutoTuner/AMIGO/Validation/PI.mo | 56 ++++++ .../AutoTuner/AMIGO/Validation/PID.mo | 59 ++++++ .../AMIGO/Validation/PIDDerivativeTime.mo | 47 +++++ .../AutoTuner/AMIGO/Validation/PIDGain.mo | 52 +++++ .../AMIGO/Validation/PIDIntegralTime.mo | 48 +++++ .../AutoTuner/AMIGO/Validation/PIGain.mo | 52 +++++ .../AMIGO/Validation/PIIntegralTime.mo | 48 +++++ .../AutoTuner/AMIGO/Validation/package.mo | 32 ++++ .../AutoTuner/AMIGO/Validation/package.order | 7 + .../AutoTuner/AMIGO/package.mo | 6 + .../AutoTuner/AMIGO/package.order | 8 + .../AutoTuner/FirstOrderTimedelayed/Gain.mo | 119 ++++++++++++ .../TimeConstantDelay.mo | 153 +++++++++++++++ .../FirstOrderTimedelayed/Validation/Gain.mo | 58 ++++++ .../Validation/TimeConstantDelay.mo | 59 ++++++ .../Validation/package.mo | 32 ++++ .../Validation/package.order | 2 + .../FirstOrderTimedelayed/package.order | 3 + .../PIDWithAutotuning/AutoTuner/package.mo | 6 + .../PIDWithAutotuning/AutoTuner/package.order | 1 + .../BaseClasses/PIDWithRelay.mo | 113 +++++++++++ .../PIDWithAutotuning/BaseClasses/package.mo | 29 +++ .../BaseClasses/package.order | 1 + .../ModelIdentification/Control.mo} | 13 +- .../ModelIdentification/HalfPeriodRatio.mo} | 32 ++-- .../ModelIdentification/ResponseProcess.mo} | 8 +- .../ModelIdentification/Validation/Control.mo | 41 ++++ .../Validation/HalfPeriodRatio.mo | 46 +++++ .../Validation/ResponseProcess.mo | 41 ++++ .../ModelIdentification/Validation/package.mo | 32 ++++ .../Validation/package.order | 3 + .../ModelIdentification/package.order | 4 + .../PIDWithAutotuningAmigoFOTD.mo | 75 ++++++++ .../PIDWithAutotuning/Relay/Control.mo | 106 +++++++++++ .../Relay/HalfPeriodRatio.mo | 177 ++++++++++++++++++ .../Relay/NormalizedTimeDelay.mo | 85 +++++++++ .../PIDWithAutotuning/Relay/OnOffPeriod.mo | 118 ++++++++++++ .../Relay/ResponseProcess.mo | 93 +++++++++ .../Relay/Validation/Control.mo | 40 ++++ .../Relay/Validation/HalfPeriodRatio.mo | 48 +++++ .../Relay/Validation/NormalizedTimeDelay.mo | 41 ++++ .../Relay/Validation/OnOffPeriod.mo | 41 ++++ .../Relay/Validation/ResponseProcess.mo | 42 +++++ .../Relay/Validation/package.mo | 32 ++++ .../Relay/Validation/package.order | 5 + .../PIDWithAutotuning/Relay/package.mo | 6 + .../PIDWithAutotuning/Relay/package.order | 6 + .../ControlProcessModel.mo | 145 ++++++++++++++ .../FirstOrderTimedelayed/Gain.mo | 115 ++++++++++++ .../TimeConstantDelay.mo | 158 ++++++++++++++++ .../Validation/ControlProcessModel.mo | 83 ++++++++ .../FirstOrderTimedelayed/Validation/Gain.mo | 65 +++++++ .../Validation/TimeConstantDelay.mo | 62 ++++++ .../Validation/package.mo | 32 ++++ .../Validation/package.order | 3 + .../FirstOrderTimedelayed/package.mo | 6 + .../FirstOrderTimedelayed/package.order | 4 + .../Validation/package.order | 0 .../SystemIdentification/package.mo | 6 + .../SystemIdentification/package.order | 1 + .../Validation/PIDWithAutotuningAmigoFOTD.mo | 101 ++++++++++ .../PIDWithAutotuning/Validation/package.mo | 37 ++++ .../Validation/package.order | 1 + .../Utilities/PIDWithAutotuning/package.mo | 44 +++++ .../Utilities/PIDWithAutotuning/package.order | 6 + .../Controls/OBC/Utilities/package.order | 1 + .../BaseClasses/Validation/Relay.mos | 6 - .../Validation/RelayHalfPeriodRatio.mos | 4 - .../BaseClasses/Validation/RelayProcess.mos | 4 - .../AutoTuner/Amigo/Validation/PI.mos | 4 + .../AutoTuner/Amigo/Validation/PID.mos | 5 + .../Amigo/Validation/PIDDerivativeTime.mos | 4 + .../AutoTuner/Amigo/Validation/PIDGain.mos | 4 + .../Amigo/Validation/PIDIntegralTime.mos | 4 + .../AutoTuner/Amigo/Validation/PIGain.mos | 4 + .../Amigo/Validation/PIIntegralTime.mos | 4 + .../Relay/Validation/Control.mos | 6 + .../Relay/Validation/HalfPeriodRatio.mos | 4 + .../Relay/Validation/NormalizedTimeDelay.mos | 5 + .../Relay/Validation/OnOffPeriod.mos | 4 + .../Relay/Validation/ResponseProcess.mos | 6 + .../Validation/ControlProcessModel.mos | 4 + .../FirstOrderTimedelayed/Validation/Gain.mos | 5 + .../Validation/TimeConstantDelay.mos | 4 + 96 files changed, 3672 insertions(+), 48 deletions(-) create mode 100644 Buildings/Controls/OBC/Utilities/BaseClasses/Validation/NormalizedTimeDelay.mo delete mode 100644 Buildings/Controls/OBC/Utilities/BaseClasses/Validation/package.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PI.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/package.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/package.order create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.order create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/FirstOrderTimedelayed/Gain.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/FirstOrderTimedelayed/TimeConstantDelay.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/FirstOrderTimedelayed/Validation/Gain.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/FirstOrderTimedelayed/Validation/TimeConstantDelay.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/FirstOrderTimedelayed/Validation/package.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/FirstOrderTimedelayed/Validation/package.order create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/FirstOrderTimedelayed/package.order create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/package.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/package.order create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/BaseClasses/PIDWithRelay.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/BaseClasses/package.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/BaseClasses/package.order rename Buildings/Controls/OBC/Utilities/{BaseClasses/Relay.mo => PIDWithAutotuning/ModelIdentification/Control.mo} (94%) rename Buildings/Controls/OBC/Utilities/{BaseClasses/RelayHalfPeriodRatio.mo => PIDWithAutotuning/ModelIdentification/HalfPeriodRatio.mo} (84%) rename Buildings/Controls/OBC/Utilities/{BaseClasses/RelayProcess.mo => PIDWithAutotuning/ModelIdentification/ResponseProcess.mo} (97%) create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/Validation/Control.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/Validation/HalfPeriodRatio.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/Validation/ResponseProcess.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/Validation/package.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/Validation/package.order create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/package.order create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/PIDWithAutotuningAmigoFOTD.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Control.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/NormalizedTimeDelay.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Control.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/package.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/package.order create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/package.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/package.order create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Gain.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/TimeConstantDelay.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/package.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/package.order create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/package.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/package.order create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/Validation/package.order create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/package.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/package.order create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithAutotuningAmigoFOTD.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/package.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/package.order create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/package.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/package.order delete mode 100644 Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/BaseClasses/Validation/Relay.mos delete mode 100644 Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/BaseClasses/Validation/RelayHalfPeriodRatio.mos delete mode 100644 Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/BaseClasses/Validation/RelayProcess.mos create mode 100644 Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PI.mos create mode 100644 Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PID.mos create mode 100644 Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIDDerivativeTime.mos create mode 100644 Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIDGain.mos create mode 100644 Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIDIntegralTime.mos create mode 100644 Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIGain.mos create mode 100644 Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIIntegralTime.mos create mode 100644 Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Control.mos create mode 100644 Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mos create mode 100644 Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mos create mode 100644 Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mos create mode 100644 Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mos create mode 100644 Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mos create mode 100644 Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mos create mode 100644 Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mos diff --git a/Buildings/Controls/OBC/Utilities/BaseClasses/Validation/NormalizedTimeDelay.mo b/Buildings/Controls/OBC/Utilities/BaseClasses/Validation/NormalizedTimeDelay.mo new file mode 100644 index 00000000000..13b572cf2e4 --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/BaseClasses/Validation/NormalizedTimeDelay.mo @@ -0,0 +1,38 @@ +within Buildings.Controls.OBC.Utilities.BaseClasses.Validation; +model NormalizedTimeDelay "Test model for NormalizedTimeDelay" + extends Modelica.Icons.Example; + Buildings.Controls.OBC.Utilities.BaseClasses.NormalizedTimeDelay + normalizedTimeDelay(gamma=3) + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + CDL.Continuous.Sources.TimeTable rho( + table=[0,0; 0.1,0; 0.3,1; 0.7,1.5; 0.83,1.5; 0.85,2], + smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, + extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) + "The half period ratio" + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); +equation + connect(rho.y[1], normalizedTimeDelay.rho) + annotation (Line(points={{-38,0},{-12,0}}, color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/BaseClasses/Validation/NormalizedTimeDelay.mos" "Simulate and plot"), + Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + coordinateSystem(preserveAspectRatio=false)), + Documentation(revisions=" +
    +
  • +June 1, 2022, by Sen Huang:
    +First implementation
    +
  • +
+", info=" +

+Validation test for the block + +Buildings.Controls.OBC.Utilities.BaseClasses.NormalizedTimeDelay. +

+")); +end NormalizedTimeDelay; diff --git a/Buildings/Controls/OBC/Utilities/BaseClasses/Validation/Relay.mo b/Buildings/Controls/OBC/Utilities/BaseClasses/Validation/Relay.mo index 835fbf3456c..a9f527c3c1c 100644 --- a/Buildings/Controls/OBC/Utilities/BaseClasses/Validation/Relay.mo +++ b/Buildings/Controls/OBC/Utilities/BaseClasses/Validation/Relay.mo @@ -2,7 +2,9 @@ within Buildings.Controls.OBC.Utilities.BaseClasses.Validation; model Relay "Test model for Relay" extends Modelica.Icons.Example; - Buildings.Controls.OBC.Utilities.BaseClasses.Relay relay(yLow=-0.5, deaBan=0.4) + Buildings.Controls.OBC.Utilities.BaseClasses.Relay relay( + yHig=1, + yLow=0.5, deaBan=0.4) "A relay controller" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); CDL.Continuous.Sources.Sine sin(freqHz=2) "Measured value" diff --git a/Buildings/Controls/OBC/Utilities/BaseClasses/Validation/package.mo b/Buildings/Controls/OBC/Utilities/BaseClasses/Validation/package.mo deleted file mode 100644 index 20b9a0358ed..00000000000 --- a/Buildings/Controls/OBC/Utilities/BaseClasses/Validation/package.mo +++ /dev/null @@ -1,5 +0,0 @@ -within Buildings.Controls.OBC.Utilities.BaseClasses; -package Validation - extends Modelica.Icons.ExamplesPackage; - -end Validation; diff --git a/Buildings/Controls/OBC/Utilities/BaseClasses/Validation/package.order b/Buildings/Controls/OBC/Utilities/BaseClasses/Validation/package.order index acd80045569..e5f451e5a40 100644 --- a/Buildings/Controls/OBC/Utilities/BaseClasses/Validation/package.order +++ b/Buildings/Controls/OBC/Utilities/BaseClasses/Validation/package.order @@ -1,3 +1,4 @@ +NormalizedTimeDelay Relay RelayProcess RelayHalfPeriodRatio diff --git a/Buildings/Controls/OBC/Utilities/BaseClasses/package.order b/Buildings/Controls/OBC/Utilities/BaseClasses/package.order index 3891759640c..8b68ab4181b 100644 --- a/Buildings/Controls/OBC/Utilities/BaseClasses/package.order +++ b/Buildings/Controls/OBC/Utilities/BaseClasses/package.order @@ -1,5 +1 @@ OptimalStartCalculation -Relay -RelayProcess -RelayHalfPeriodRatio -Validation diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PI.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PI.mo new file mode 100644 index 00000000000..51372fa256d --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PI.mo @@ -0,0 +1,68 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo; +block PI "Identifies the parameters of a PI controller" + Buildings.Controls.OBC.CDL.Interfaces.RealInput kp(min=1E-6) + "Connector for the signal of the gain of a first order time-delayed model" + annotation (Placement(transformation(extent={{-140,40},{-100,80}}), + iconTransformation(extent={{-140,40},{-100,80}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealInput T(min=0) + "Connector for the signal of the time constant of a first order time-delayed model" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}), + iconTransformation(extent={{-140,-20},{-100,20}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealInput L(min=1E-6) + "Connector for the signal of the time delay of a first order time-delayed model" + annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), + iconTransformation(extent={{-140,-80},{-100,-40}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput k + "Connector for control gain signal" + annotation (Placement(transformation(extent={{100,50},{120,70}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput Ti + "Connector for time constant signal for the integral term" + annotation (Placement(transformation(extent={{100,-50},{120,-30}}))); + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PIGain gain + "Calculates the control gain" + annotation (Placement(transformation(extent={{-10,20},{10,40}}))); + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PIIntegralTime + integralTime "Calculates the integral time" + annotation (Placement(transformation(extent={{-10,-40},{10,-20}}))); + +equation + connect(gain.k, k) annotation (Line(points={{11,30},{96,30},{96,60},{110,60}}, + color={0,0,127})); + connect(integralTime.Ti, Ti) annotation (Line(points={{11,-30},{94,-30},{94,-40}, + {110,-40}}, color={0,0,127})); + connect(integralTime.T, gain.T) annotation (Line(points={{-12,-24},{-40,-24}, + {-40,30},{-12,30}}, color={0,0,127})); + connect(integralTime.L, gain.L) annotation (Line(points={{-12,-36},{-20,-36}, + {-20,24},{-12,24}}, color={0,0,127})); + connect(T, gain.T) annotation (Line(points={{-120,0},{-40,0},{-40,30},{-12,30}}, + color={0,0,127})); + connect(L, gain.L) annotation (Line(points={{-120,-60},{-20,-60},{-20,24},{ + -12,24}}, color={0,0,127})); + connect(gain.kp, kp) annotation (Line(points={{-12,36},{-40,36},{-40,60},{ + -120,60}}, color={0,0,127})); + annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-154,148},{146,108}}, + textString="%name", + textColor={0,0,255})}), Diagram(coordinateSystem(preserveAspectRatio=false)), + Documentation(revisions=" +
    +
  • +June 1, 2022, by Sen Huang:
    +First implementation
    +
  • +
+", info=" +

This block calculates the control gain and the integral time of a PI model.

+

Please refer to the following block for detailed information:

+

+Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.AutoTuner.AMIGO.PIGain

+

+Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.AutoTuner.AMIGO.PIIntergralTime

+")); +end PI; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo new file mode 100644 index 00000000000..739e09c6e5a --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo @@ -0,0 +1,81 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo; +block PID "Identifies the parameters of a PID controller" + Buildings.Controls.OBC.CDL.Interfaces.RealInput kp(min=1E-6) + "Connector for the signal of the gain of a first order time-delayed model" + annotation (Placement(transformation(extent={{-140,40},{-100,80}}), + iconTransformation(extent={{-140,40},{-100,80}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealInput T(min=0) + "Connector for the signal of the time constant of a first order time-delayed model" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}), + iconTransformation(extent={{-140,-20},{-100,20}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealInput L(min=1E-6) + "Connector for the signal of the time delay of a first order time-delayed model" + annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), + iconTransformation(extent={{-140,-80},{-100,-40}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput k + "Connector for control gain signal" + annotation (Placement(transformation(extent={{100,50},{120,70}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput Ti + "Connector for time constant signal for the integral term" + annotation (Placement(transformation(extent={{100,-10},{120,10}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput Td + "Connector for time constant signal for the derivative term" + annotation (Placement(transformation(extent={{100,-70},{120,-50}}))); + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PIDGain gain + "Calculates the control gain" + annotation (Placement(transformation(extent={{-10,40},{10,60}}))); + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PIDIntegralTime + integralTime "Calculates the integral time" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PIDDerivativeTime + derivativeTime "Calculates the derivative time" + annotation (Placement(transformation(extent={{-10,-70},{10,-50}}))); +equation + connect(derivativeTime.Td, Td) + annotation (Line(points={{11,-60},{110,-60}}, color={0,0,127})); + connect(integralTime.Ti, Ti) + annotation (Line(points={{11,0},{110,0}}, color={0,0,127})); + connect(gain.k, k) annotation (Line(points={{11,50},{94,50},{94,60},{110,60}}, + color={0,0,127})); + connect(integralTime.T, gain.T) annotation (Line(points={{-12,6},{-40,6},{-40, + 50},{-12,50}}, color={0,0,127})); + connect(derivativeTime.T, gain.T) annotation (Line(points={{-12,-54},{-40,-54}, + {-40,50},{-12,50}}, color={0,0,127})); + connect(integralTime.L, gain.L) annotation (Line(points={{-12,-6},{-26,-6},{ + -26,44},{-12,44}}, color={0,0,127})); + connect(derivativeTime.L, gain.L) annotation (Line(points={{-12,-66},{-26,-66}, + {-26,44},{-12,44}}, color={0,0,127})); + connect(kp, gain.kp) annotation (Line(points={{-120,60},{-20,60},{-20,56},{ + -12,56}}, color={0,0,127})); + connect(T, gain.T) annotation (Line(points={{-120,0},{-80,0},{-80,6},{-40,6}, + {-40,50},{-12,50}}, color={0,0,127})); + connect(L, gain.L) annotation (Line(points={{-120,-60},{-26,-60},{-26,44},{ + -12,44}}, color={0,0,127})); + annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-154,148},{146,108}}, + textString="%name", + textColor={0,0,255})}), Diagram(coordinateSystem(preserveAspectRatio=false)), + Documentation(revisions=" +
    +
  • +June 1, 2022, by Sen Huang:
    +First implementation
    +
  • +
+", info=" +

This block calculates the control gain, the integral time, and the derivative time of a PI model.

+

Please refer to the following block for detailed information:

+

+Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.AutoTuner.AMIGO.PIDGain

+

+Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.AutoTuner.AMIGO.PIDIntergralTime

+

+Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.AutoTuner.AMIGO.PIDDerivativeTime

+")); +end PID; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo new file mode 100644 index 00000000000..e3b3879e712 --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo @@ -0,0 +1,68 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo; +block PIDDerivativeTime "Identifies the derivative time of a PID controller" + Buildings.Controls.OBC.CDL.Interfaces.RealInput T(min=0) + "Connector for the signal of the time constant of a first order time-delayed model" + annotation (Placement(transformation(extent={{-140,40},{-100,80}}), + iconTransformation(extent={{-140,40},{-100,80}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealInput L(min=1E-6) + "Connector for the signal of the time delay of a first order time-delayed model" + annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), + iconTransformation(extent={{-140,-80},{-100,-40}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput Td + "Connector for time constant signal for the derivative term" + annotation (Placement(transformation(extent={{100,-10},{120,10}}))); + CDL.Continuous.MultiplyByParameter gai1(k=0.3) "0.3L" + annotation (Placement(transformation(extent={{-80,-50},{-60,-30}}))); + CDL.Continuous.MultiplyByParameter gai2(k=0.5) "0.5T" + annotation (Placement(transformation(extent={{-80,30},{-60,50}}))); + CDL.Continuous.Multiply mul "0.5LT" + annotation (Placement(transformation(extent={{-40,0},{-20,20}}))); + CDL.Continuous.Add add "0.3L+T" + annotation (Placement(transformation(extent={{-40,-60},{-20,-40}}))); + CDL.Continuous.Divide div "0.5LT/(0.3L+T)" + annotation (Placement(transformation(extent={{20,-10},{40,10}}))); +equation + connect(div.y, Td) + annotation (Line(points={{42,0},{110,0}}, color={0,0,127})); + connect(gai1.u, L) annotation (Line(points={{-82,-40},{-96,-40},{-96,-60},{ + -120,-60}}, color={0,0,127})); + connect(gai1.y, add.u2) annotation (Line(points={{-58,-40},{-50,-40},{-50,-56}, + {-42,-56}}, color={0,0,127})); + connect(add.u1, T) annotation (Line(points={{-42,-44},{-48,-44},{-48,60},{ + -120,60}}, color={0,0,127})); + connect(gai2.u, T) annotation (Line(points={{-82,40},{-90,40},{-90,60},{-120, + 60}}, color={0,0,127})); + connect(mul.u2, L) annotation (Line(points={{-42,4},{-96,4},{-96,-60},{-120, + -60}}, color={0,0,127})); + connect(gai2.y, mul.u1) annotation (Line(points={{-58,40},{-52,40},{-52,16},{ + -42,16}}, color={0,0,127})); + connect(mul.y, div.u1) annotation (Line(points={{-18,10},{10,10},{10,6},{18,6}}, + color={0,0,127})); + connect(div.u2, add.y) annotation (Line(points={{18,-6},{12,-6},{12,-50},{-18, + -50}}, color={0,0,127})); + annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-154,148},{146,108}}, + textString="%name", + textColor={0,0,255})}), Diagram(coordinateSystem(preserveAspectRatio=false)), + Documentation(revisions=" +
    +
  • +June 1, 2022, by Sen Huang:
    +First implementation
    +
  • +
+", info=" +

This block calculates the derivative time of a PID model, Td, by

+

Td = 0.5LT/(0.3L+T)

+

where T is the time constant of the first-order time-delayed model;

+

L is the time delay of the first-order time-delayed model.

+

References

+

Åström, Karl Johan, and Tore Hägglund. "Revisiting the Ziegler–Nichols step response method for PID control." Journal of process control 14.6 (2004): 635-650.

+")); +end PIDDerivativeTime; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo new file mode 100644 index 00000000000..7533631cc39 --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo @@ -0,0 +1,75 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo; +block PIDGain "Identifies the control gain of a PID controller" + Buildings.Controls.OBC.CDL.Interfaces.RealInput kp(min=1E-6) + "Connector for the signal of the gain of a first order time-delayed model" + annotation (Placement(transformation(extent={{-140,40},{-100,80}}), + iconTransformation(extent={{-140,40},{-100,80}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealInput T(min=0) + "Connector for the signal of the time constant of a first order time-delayed model" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}), + iconTransformation(extent={{-140,-20},{-100,20}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealInput L(min=1E-6) + "Connector for the signal of the time delay of a first order time-delayed model" + annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), + iconTransformation(extent={{-140,-80},{-100,-40}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput k + "Connector for control gain signal" + annotation (Placement(transformation(extent={{100,-10},{120,10}}))); + CDL.Continuous.Divide div1 "1/kp" + annotation (Placement(transformation(extent={{-38,40},{-18,60}}))); + CDL.Continuous.Sources.Constant const(k=1) "Constant parameter" + annotation (Placement(transformation(extent={{-80,70},{-60,90}}))); + CDL.Continuous.Divide div2 "T/L" + annotation (Placement(transformation(extent={{-60,-40},{-40,-20}}))); + CDL.Continuous.MultiplyByParameter gai1(k=0.45) "0.45T/L" + annotation (Placement(transformation(extent={{-20,-40},{0,-20}}))); + CDL.Continuous.AddParameter + addPar(p=0.2) "0.2+0.45T/L" + annotation (Placement(transformation(extent={{20,-40},{40,-20}}))); + CDL.Continuous.Multiply mul "1/kp+(0.2+0.45T/L)" + annotation (Placement(transformation(extent={{60,-10},{80,10}}))); +equation + connect(div1.u2, kp) annotation (Line(points={{-40,44},{-94,44},{-94,60},{ + -120,60}}, color={0,0,127})); + connect(const.y, div1.u1) annotation (Line(points={{-58,80},{-50,80},{-50,56}, + {-40,56}}, color={0,0,127})); + connect(div2.u2, L) annotation (Line(points={{-62,-36},{-80,-36},{-80,-60},{ + -120,-60}}, color={0,0,127})); + connect(div2.u1, T) annotation (Line(points={{-62,-24},{-80,-24},{-80,0},{ + -120,0}}, color={0,0,127})); + connect(gai1.u, div2.y) + annotation (Line(points={{-22,-30},{-38,-30}}, color={0,0,127})); + connect(gai1.y, addPar.u) + annotation (Line(points={{2,-30},{18,-30}}, color={0,0,127})); + connect(mul.y, k) annotation (Line(points={{82,0},{110,0}}, color={0,0,127})); + connect(div1.y, mul.u1) annotation (Line(points={{-16,50},{42,50},{42,6},{58, + 6}}, color={0,0,127})); + connect(mul.u2, addPar.y) annotation (Line(points={{58,-6},{48,-6},{48,-30},{ + 42,-30}}, color={0,0,127})); + annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-154,148},{146,108}}, + textString="%name", + textColor={0,0,255})}), Diagram(coordinateSystem(preserveAspectRatio=false)), + Documentation(revisions=" +
    +
  • +June 1, 2022, by Sen Huang:
    +First implementation
    +
  • +
+", info=" +

This block calculates the control gain of a PID model, k, by

+

k = 1/kp + (0.2 + 0.45T/L)

+

where kp is the gain of the first-order time-delayed model;

+

T is the time constant of the first-order time-delayed model;

+

L is the time delay of the first-order time-delayed model.

+

References

+

Åström, Karl Johan, and Tore Hägglund. "Revisiting the Ziegler–Nichols step response method for PID control." Journal of process control 14.6 (2004): 635-650.

+")); +end PIDGain; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo new file mode 100644 index 00000000000..9d220354801 --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo @@ -0,0 +1,78 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo; +block PIDIntegralTime "Identifies the integral time of a PID controller" + Buildings.Controls.OBC.CDL.Interfaces.RealInput T(min=0) + "Connector for the signal of the time constant of a first order time-delayed model" + annotation (Placement(transformation(extent={{-140,40},{-100,80}}), + iconTransformation(extent={{-140,40},{-100,80}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealInput L(min=1E-6) + "Connector for the signal of the time delay of a first order time-delayed model" + annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), + iconTransformation(extent={{-140,-80},{-100,-40}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput Ti + "Connector for time constant signal for the integral term" + annotation (Placement(transformation(extent={{100,-10},{120,10}}))); + CDL.Continuous.MultiplyByParameter gai1(k=0.4) "0.4L" + annotation (Placement(transformation(extent={{-80,-50},{-60,-30}}))); + CDL.Continuous.MultiplyByParameter gai2(k=0.8) "0.8T" + annotation (Placement(transformation(extent={{-80,30},{-60,50}}))); + CDL.Continuous.MultiplyByParameter gai3(k=0.1) "0.1T" + annotation (Placement(transformation(extent={{-80,68},{-60,88}}))); + CDL.Continuous.Add add1 "L+0.1T" + annotation (Placement(transformation(extent={{-40,10},{-20,30}}))); + CDL.Continuous.Add add2 "0.4L+0.8T" + annotation (Placement(transformation(extent={{-40,-30},{-20,-10}}))); + CDL.Continuous.Divide div3 "(0.4L+0.8T)/(L+0.1T)" + annotation (Placement(transformation(extent={{0,10},{20,-10}}))); + CDL.Continuous.Multiply mul1 "(0.4L+0.8T)/(L+0.1T)L" + annotation (Placement(transformation(extent={{40,-10},{60,10}}))); +equation + connect(gai1.u, L) annotation (Line(points={{-82,-40},{-90,-40},{-90,-60},{ + -120,-60}}, color={0,0,127})); + connect(gai3.u, T) annotation (Line(points={{-82,78},{-90,78},{-90,60},{-120, + 60}}, color={0,0,127})); + connect(gai2.u, T) annotation (Line(points={{-82,40},{-90,40},{-90,60},{-120, + 60}}, color={0,0,127})); + connect(gai1.y, add2.u2) annotation (Line(points={{-58,-40},{-48,-40},{-48, + -26},{-42,-26}}, color={0,0,127})); + connect(add2.u1, gai2.y) annotation (Line(points={{-42,-14},{-48,-14},{-48,40}, + {-58,40}}, color={0,0,127})); + connect(add1.u2, L) annotation (Line(points={{-42,14},{-54,14},{-54,-60},{ + -120,-60}}, color={0,0,127})); + connect(add1.u1, gai3.y) annotation (Line(points={{-42,26},{-54,26},{-54,78}, + {-58,78}}, color={0,0,127})); + connect(div3.y, mul1.u1) + annotation (Line(points={{22,0},{30,0},{30,6},{38,6}}, color={0,0,127})); + connect(mul1.u2, L) annotation (Line(points={{38,-6},{24,-6},{24,-60},{-120, + -60}}, color={0,0,127})); + connect(mul1.y, Ti) + annotation (Line(points={{62,0},{110,0}}, color={0,0,127})); + connect(div3.u2, add1.y) annotation (Line(points={{-2,6},{-10,6},{-10,20},{ + -18,20}}, color={0,0,127})); + connect(div3.u1, add2.y) annotation (Line(points={{-2,-6},{-10,-6},{-10,-20}, + {-18,-20}}, color={0,0,127})); + annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-154,148},{146,108}}, + textString="%name", + textColor={0,0,255})}), Diagram(coordinateSystem(preserveAspectRatio=false)), + Documentation(revisions=" +
    +
  • +June 1, 2022, by Sen Huang:
    +First implementation
    +
  • +
+", info=" +

This block calculates the integral time of a PID model, Ti, by

+

Ti = (0.4L + 0.8T)/(L + 0.1T)L

+

where T is the time constant of the first-order time-delayed model;

+

L is the time delay of the first-order time-delayed model.

+

References

+

Åström, Karl Johan, and Tore Hägglund. "Revisiting the Ziegler–Nichols step response method for PID control." Journal of process control 14.6 (2004): 635-650.

+")); +end PIDIntegralTime; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo new file mode 100644 index 00000000000..116f08f6ea3 --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo @@ -0,0 +1,111 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo; +block PIGain "Identifies the control gain of a PI controller" + Buildings.Controls.OBC.CDL.Interfaces.RealInput kp(min=1E-6) + "Connector for the signal of the gain of a first order time-delayed model" + annotation (Placement(transformation(extent={{-140,40},{-100,80}}), + iconTransformation(extent={{-140,40},{-100,80}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealInput T(min=0) + "Connector for the signal of the time constant of a first order time-delayed model" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}), + iconTransformation(extent={{-140,-20},{-100,20}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealInput L(min=1E-6) + "Connector for the signal of the time delay of a first order time-delayed model" + annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), + iconTransformation(extent={{-140,-80},{-100,-40}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput k + "Connector for control gain signal" + annotation (Placement(transformation(extent={{100,-10},{120,10}}))); + CDL.Continuous.Divide div1 "0.15/kp" + annotation (Placement(transformation(extent={{-60,40},{-40,60}}))); + CDL.Continuous.Add add2 "0.15/KP+(0.35-LT/(L+T)^2)*(T/kp/L)" + annotation (Placement(transformation(extent={{20,20},{40,40}}))); + CDL.Continuous.Add add1 "T^2" + annotation (Placement(transformation(extent={{-60,-40},{-40,-20}}))); + CDL.Continuous.Multiply mul "T*L" + annotation (Placement(transformation(extent={{-60,-80},{-40,-60}}))); + CDL.Continuous.Multiply mul1 "(L+T)^2" + annotation (Placement(transformation(extent={{-20,-40},{0,-20}}))); + CDL.Continuous.Divide div2 "LT/(L+T)^2" + annotation (Placement(transformation(extent={{20,-40},{40,-60}}))); + CDL.Continuous.Multiply mul2 "kp*L" + annotation (Placement(transformation(extent={{-60,10},{-40,30}}))); + CDL.Continuous.Divide div3 "T/kp/L" + annotation (Placement(transformation(extent={{-20,20},{0,0}}))); + CDL.Continuous.Multiply mul3 "(0.35-LT/(L+T)^2)*(T/kp/L)" + annotation (Placement(transformation(extent={{20,-10},{40,10}}))); + CDL.Continuous.Sources.Constant const2(k=0.15) "Constant parameter 1" + annotation (Placement(transformation(extent={{-82,72},{-62,92}}))); + CDL.Continuous.Subtract sub "0.35-LT/(L+T)^2" + annotation (Placement(transformation(extent={{50,-60},{70,-40}}))); + CDL.Continuous.Sources.Constant const1(k=0.35) "Constant parameter 1" + annotation (Placement(transformation(extent={{-10,-90},{10,-70}}))); +equation + connect(div1.u2, kp) annotation (Line(points={{-62,44},{-80,44},{-80,60},{ + -120,60}}, color={0,0,127})); + connect(add2.u1, div1.y) annotation (Line(points={{18,36},{-20,36},{-20,50},{ + -38,50}}, color={0,0,127})); + connect(add1.u1, T) annotation (Line(points={{-62,-24},{-80,-24},{-80,0},{ + -120,0}}, color={0,0,127})); + connect(add1.u2, L) annotation (Line(points={{-62,-36},{-80,-36},{-80,-60},{ + -120,-60}}, color={0,0,127})); + connect(mul.u1, T) annotation (Line(points={{-62,-64},{-90,-64},{-90,0},{-120, + 0}}, color={0,0,127})); + connect(mul.u2, L) annotation (Line(points={{-62,-76},{-94,-76},{-94,-60},{ + -120,-60}}, color={0,0,127})); + connect(mul1.u1, add1.y) annotation (Line(points={{-22,-24},{-32,-24},{-32, + -30},{-38,-30}}, color={0,0,127})); + connect(mul1.u2, add1.y) annotation (Line(points={{-22,-36},{-32,-36},{-32, + -30},{-38,-30}}, color={0,0,127})); + connect(div2.u2, mul1.y) annotation (Line(points={{18,-44},{8,-44},{8,-30},{2, + -30}}, color={0,0,127})); + connect(div2.u1, mul.y) annotation (Line(points={{18,-56},{-20,-56},{-20,-70}, + {-38,-70}}, color={0,0,127})); + connect(mul2.u1, kp) annotation (Line(points={{-62,26},{-72,26},{-72,44},{-80, + 44},{-80,60},{-120,60}}, color={0,0,127})); + connect(mul2.u2, L) annotation (Line(points={{-62,14},{-72,14},{-72,-36},{-80, + -36},{-80,-60},{-120,-60}}, color={0,0,127})); + connect(div3.u2, mul2.y) annotation (Line(points={{-22,16},{-30,16},{-30,20}, + {-38,20}}, color={0,0,127})); + connect(div3.u1, T) annotation (Line(points={{-22,4},{-52,4},{-52,0},{-120,0}}, + color={0,0,127})); + connect(mul3.u1, div3.y) + annotation (Line(points={{18,6},{10,6},{10,10},{2,10}}, color={0,0,127})); + connect(const2.y, div1.u1) annotation (Line(points={{-60,82},{-54,82},{-54,64}, + {-68,64},{-68,56},{-62,56}}, color={0,0,127})); + connect(add2.u2, mul3.y) annotation (Line(points={{18,24},{10,24},{10,16},{48, + 16},{48,0},{42,0}}, color={0,0,127})); + connect(add2.y, k) annotation (Line(points={{42,30},{60,30},{60,0},{110,0}}, + color={0,0,127})); + connect(div2.y, sub.u2) annotation (Line(points={{42,-50},{44,-50},{44,-56},{ + 48,-56}}, color={0,0,127})); + connect(const1.y, sub.u1) annotation (Line(points={{12,-80},{46,-80},{46,-44}, + {48,-44}}, color={0,0,127})); + connect(sub.y, mul3.u2) annotation (Line(points={{72,-50},{80,-50},{80,-22},{ + 10,-22},{10,-6},{18,-6}}, color={0,0,127})); + annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-154,148},{146,108}}, + textString="%name", + textColor={0,0,255})}), Diagram(coordinateSystem(preserveAspectRatio=false)), + Documentation(revisions=" +
    +
  • +June 1, 2022, by Sen Huang:
    +First implementation
    +
  • +
+", info=" +

This block calculates the control gain of a PI model, k, by

+

k = 0.15/kp + (0.35-LT/(L+T)2)(T/kp/L)

+

where kp is the gain of the first-order time-delayed model;

+

T is the time constant of the first-order time-delayed model;

+

L is the time delay of the first-order time-delayed model.

+

References

+

Garpinger, Olof, Tore Hägglund, and Karl Johan Åström (2014) "Performance and robustness trade-offs in PID control." Journal of Process Control 24.5 (2014): 568-577.

+")); +end PIGain; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo new file mode 100644 index 00000000000..e8f9589a013 --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo @@ -0,0 +1,110 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo; +block PIIntegralTime "Identifies the integral time of a PI controller" + Buildings.Controls.OBC.CDL.Interfaces.RealInput T(min=0) + "Connector for the signal of the time constant of a first order time-delayed model" + annotation (Placement(transformation(extent={{-140,40},{-100,80}}), + iconTransformation(extent={{-140,40},{-100,80}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealInput L(min=1E-6) + "Connector for the signal of the time delay of a first order time-delayed model" + annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), + iconTransformation(extent={{-140,-80},{-100,-40}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput Ti + "Connector for time constant signal for the integral term" + annotation (Placement(transformation(extent={{100,-10},{120,10}}))); + CDL.Continuous.MultiplyByParameter gai4(k=0.35) "0.35L" + annotation (Placement(transformation(extent={{-80,-30},{-60,-10}}))); + CDL.Continuous.Add add2 "0.35+13LT^2/(T^2+12LT+7L^2)" + annotation (Placement(transformation(extent={{60,-10},{80,10}}))); + CDL.Continuous.Multiply mul3 "T^2" + annotation (Placement(transformation(extent={{-60,50},{-40,70}}))); + CDL.Continuous.Multiply mul1 "12LT" + annotation (Placement(transformation(extent={{-40,18},{-20,38}}))); + CDL.Continuous.MultiplyByParameter gai1(k=12) "12L" + annotation (Placement(transformation(extent={{-40,-70},{-20,-50}}))); + CDL.Continuous.Multiply mul2 "7L^2" + annotation (Placement(transformation(extent={{0,-60},{20,-40}}))); + CDL.Continuous.MultiplyByParameter gai2(k=7) "7L" + annotation (Placement(transformation(extent={{-80,-90},{-60,-70}}))); + CDL.Continuous.MultiplyByParameter gai3(k=13) "13T^2" + annotation (Placement(transformation(extent={{-20,70},{-40,90}}))); + CDL.Continuous.Divide div1 "13LT^2/(T^2+12LT+7L^2)" + annotation (Placement(transformation(extent={{20,60},{40,80}}))); + CDL.Continuous.Add add1 "T^2+12LT" + annotation (Placement(transformation(extent={{0,20},{20,40}}))); + CDL.Continuous.Add add3 "T^2+12LT+7L^2" + annotation (Placement(transformation(extent={{40,-80},{60,-60}}))); + CDL.Continuous.Multiply mul4 "13LT^2" + annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); +equation + connect(add2.y, Ti) + annotation (Line(points={{82,0},{110,0}}, color={0,0,127})); + connect(gai4.u, L) annotation (Line(points={{-82,-20},{-88,-20},{-88,-60},{ + -120,-60}}, color={0,0,127})); + connect(mul3.u1, T) annotation (Line(points={{-62,66},{-90,66},{-90,60},{-120, + 60}}, color={0,0,127})); + connect(mul3.u2, T) annotation (Line(points={{-62,54},{-90,54},{-90,60},{-120, + 60}}, color={0,0,127})); + connect(gai1.u, L) + annotation (Line(points={{-42,-60},{-120,-60}}, color={0,0,127})); + connect(gai1.y, mul1.u2) annotation (Line(points={{-18,-60},{-12,-60},{-12,14}, + {-48,14},{-48,22},{-42,22}}, color={0,0,127})); + connect(mul1.u1, T) annotation (Line(points={{-42,34},{-90,34},{-90,60},{-120, + 60}}, color={0,0,127})); + connect(gai2.u, L) annotation (Line(points={{-82,-80},{-92,-80},{-92,-60},{ + -120,-60}}, color={0,0,127})); + connect(gai2.y, mul2.u2) annotation (Line(points={{-58,-80},{-6,-80},{-6,-56}, + {-2,-56}}, color={0,0,127})); + connect(mul2.u1, L) annotation (Line(points={{-2,-44},{-10,-44},{-10,-74},{ + -50,-74},{-50,-60},{-120,-60}}, color={0,0,127})); + connect(gai3.u, mul3.y) annotation (Line(points={{-18,80},{-12,80},{-12,60},{ + -38,60}}, color={0,0,127})); + connect(add1.u1, mul3.y) annotation (Line(points={{-2,36},{-12,36},{-12,60},{ + -38,60}}, color={0,0,127})); + connect(mul1.y, add1.u2) annotation (Line(points={{-18,28},{-12,28},{-12,24}, + {-2,24}}, color={0,0,127})); + connect(mul2.y, add3.u2) annotation (Line(points={{22,-50},{30,-50},{30,-76}, + {38,-76}}, color={0,0,127})); + connect(add3.u1, add1.y) annotation (Line(points={{38,-64},{32,-64},{32,30},{ + 22,30}}, color={0,0,127})); + connect(add3.y, div1.u2) annotation (Line(points={{62,-70},{80,-70},{80,-24}, + {-8,-24},{-8,64},{18,64}}, color={0,0,127})); + connect(div1.y, add2.u1) + annotation (Line(points={{42,70},{50,70},{50,6},{58,6}}, color={0,0,127})); + connect(add2.u2, gai4.y) annotation (Line(points={{58,-6},{48,-6},{48,-20},{ + -58,-20}}, color={0,0,127})); + connect(mul4.u2, L) annotation (Line(points={{-82,4},{-88,4},{-88,-60},{-120, + -60}}, color={0,0,127})); + connect(gai3.y, mul4.u1) annotation (Line(points={{-42,80},{-76,80},{-76,24}, + {-88,24},{-88,16},{-82,16}}, color={0,0,127})); + connect(mul4.y, div1.u1) annotation (Line(points={{-58,10},{-52,10},{-52,44}, + {6,44},{6,76},{18,76}}, color={0,0,127})); + annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-154,148},{146,108}}, + textString="%name", + textColor={0,0,255})}), Diagram(coordinateSystem(preserveAspectRatio=false)), + Documentation(revisions=" +
    +
  • +June 1, 2022, by Sen Huang:
    +First implementation
    +
  • +
+", info=" +

This block calculates the integral time of a PI model, Ti, by

+

Ti = 0.35L + 13LT2/(T2 + 12LT + 7L2)

+

where T is the time constant of the first-order time-delayed model;

+

L is the time delay of the first-order time-delayed model.

+

References

+

+Garpinger, Olof, Tore Hägglund, and Karl Johan Åström (2014) +\"Performance and robustness trade-offs in PID control.\" +Journal of Process Control 24.5 (2014): 568-577. +

+")); +end PIIntegralTime; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo new file mode 100644 index 00000000000..9dbd6830d3b --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo @@ -0,0 +1,56 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Validation; +model PI "Test model for PI" + extends Modelica.Icons.Example; + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PI pI + "Calculates the parameters for a PI controller" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp kp(duration=1, offset=1) + "Gain of the first order time-delayed model" + annotation (Placement(transformation(extent={{-60,30},{-40,50}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp T( + height=0.5, + duration=1, + offset=0.5) "Time constant of the first order time-delayed model" + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp L( + height=0.3, + duration=1, + offset=0.3) "Time delay of the first order time-delayed model" + annotation (Placement(transformation(extent={{-60,-50},{-40,-30}}))); + Modelica.Blocks.Sources.RealExpression referencek(y=0.15/kp.y + (0.35 - L.y*T.y + /(L.y + T.y)/(L.y + T.y))*T.y/kp.y/L.y) "Reference value for the gain" + annotation (Placement(transformation(extent={{-10,50},{10,70}}))); + Modelica.Blocks.Sources.RealExpression referenceTi(y=0.35*L.y + 13*L.y*T.y*T.y + /(T.y*T.y + 12*L.y*T.y + 7*L.y*L.y)) + "Reference value for the integral time" + annotation (Placement(transformation(extent={{-10,30},{10,50}}))); +equation + connect(L.y, pI.L) annotation (Line(points={{-38,-40},{-20,-40},{-20,-6},{-12, + -6}}, color={0,0,127})); + connect(T.y, pI.T) + annotation (Line(points={{-38,0},{-12,0}}, color={0,0,127})); + connect(pI.kp, kp.y) annotation (Line(points={{-12,6},{-20,6},{-20,40},{-38,40}}, + color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mos" "Simulate and plot"), + Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + coordinateSystem(preserveAspectRatio=false)), + Documentation(revisions=" +
    +
  • +June 1, 2022, by Sen Huang:
    +First implementation
    +
  • +
+", info=" +

+Validation test for the block + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PI. +

+")); +end PI; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo new file mode 100644 index 00000000000..c8f883f747e --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo @@ -0,0 +1,59 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Validation; +model PID "Test model for PID" + extends Modelica.Icons.Example; + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PID pID + "Calculates the parameters for a PI controller" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp kp(duration=1, offset=1) + "Gain of the first order time-delayed model" + annotation (Placement(transformation(extent={{-60,30},{-40,50}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp T( + height=0.5, + duration=1, + offset=0.5) "Time constant of the first order time-delayed model" + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp L( + height=0.3, + duration=1, + offset=0.3) "Time delay of the first order time-delayed model" + annotation (Placement(transformation(extent={{-60,-50},{-40,-30}}))); + Modelica.Blocks.Sources.RealExpression referencek(y=1/kp.y*(0.2 + 0.45*T.y/L.y)) + "Reference value for the gain" + annotation (Placement(transformation(extent={{-10,50},{10,70}}))); + Modelica.Blocks.Sources.RealExpression referenceTi(y=(0.4*L.y + 0.8*T.y)/(L.y + + 0.1*T.y)*L.y) + "Reference value for the integral time" + annotation (Placement(transformation(extent={{-10,32},{10,52}}))); + Modelica.Blocks.Sources.RealExpression referenceTd(y=0.5*L.y*T.y/(0.3*L.y + T.y)) + "Reference value for the derivative time" + annotation (Placement(transformation(extent={{-10,12},{10,32}}))); +equation + connect(L.y, pID.L) annotation (Line(points={{-38,-40},{-20,-40},{-20,-6},{-12, + -6}}, color={0,0,127})); + connect(T.y, pID.T) + annotation (Line(points={{-38,0},{-12,0}}, color={0,0,127})); + connect(pID.kp, kp.y) annotation (Line(points={{-12,6},{-20,6},{-20,40},{-38,40}}, + color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mos" "Simulate and plot"), + Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + coordinateSystem(preserveAspectRatio=false)), + Documentation(revisions=" +
    +
  • +June 1, 2022, by Sen Huang:
    +First implementation
    +
  • +
+", info=" +

+Validation test for the block + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PID. +

+")); +end PID; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mo new file mode 100644 index 00000000000..f875ca5c686 --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mo @@ -0,0 +1,47 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Validation; +model PIDDerivativeTime "Test model for PIDDerivativeTime" + extends Modelica.Icons.Example; + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PIDDerivativeTime + pIDDerivativeTime "Calculates the integral time for a PI controller" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + CDL.Continuous.Sources.Ramp T( + height=0.5, + duration=1, + offset=0.5) "Time constant of the first order time-delayed model" + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + CDL.Continuous.Sources.Ramp L( + height=0.3, + duration=1, + offset=0.3) "Time delay of the first order time-delayed model" + annotation (Placement(transformation(extent={{-60,-50},{-40,-30}}))); + Modelica.Blocks.Sources.RealExpression referenceTd(y=0.5*L.y*T.y/(0.3*L.y + T.y)) + "Reference value for the derivative time" + annotation (Placement(transformation(extent={{-10,50},{10,70}}))); +equation + connect(L.y, pIDDerivativeTime.L) annotation (Line(points={{-38,-40},{-20,-40}, + {-20,-6},{-12,-6}}, color={0,0,127})); + connect(T.y, pIDDerivativeTime.T) annotation (Line(points={{-38,0},{-26,0},{-26, + 6},{-12,6}}, color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mos" "Simulate and plot"), + Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + coordinateSystem(preserveAspectRatio=false)), + Documentation(revisions=" +
    +
  • +June 1, 2022, by Sen Huang:
    +First implementation
    +
  • +
+", info=" +

+Validation test for the block + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.AutoTuner.AMIGO.PIDerivativeTime. +

+")); +end PIDDerivativeTime; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mo new file mode 100644 index 00000000000..9c821ebe488 --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mo @@ -0,0 +1,52 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Validation; +model PIDGain "Test model for PIDGain" + extends Modelica.Icons.Example; + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PIDGain pIDGain + "Calculates the control gain for a PI controller" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp kp(duration=1, offset=1) + "Gain of the first order time-delayed model" + annotation (Placement(transformation(extent={{-60,30},{-40,50}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp T( + height=0.5, + duration=1, + offset=0.5) "Time constant of the first order time-delayed model" + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp L( + height=0.3, + duration=1, + offset=0.3) "Time delay of the first order time-delayed model" + annotation (Placement(transformation(extent={{-60,-50},{-40,-30}}))); + Modelica.Blocks.Sources.RealExpression referencek(y=1/kp.y*(0.2 + 0.45*T.y/L.y)) + "Reference value for the gain" + annotation (Placement(transformation(extent={{-10,50},{10,70}}))); +equation + connect(L.y, pIDGain.L) annotation (Line(points={{-38,-40},{-20,-40},{-20,-6}, + {-12,-6}}, color={0,0,127})); + connect(T.y, pIDGain.T) + annotation (Line(points={{-38,0},{-12,0}}, color={0,0,127})); + connect(pIDGain.kp, kp.y) annotation (Line(points={{-12,6},{-20,6},{-20,40},{-38, + 40}}, color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mos" "Simulate and plot"), + Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + coordinateSystem(preserveAspectRatio=false)), + Documentation(revisions=" +
    +
  • +June 1, 2022, by Sen Huang:
    +First implementation
    +
  • +
+", info=" +

+Validation test for the block + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIDGain. +

+")); +end PIDGain; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mo new file mode 100644 index 00000000000..ea817c04477 --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mo @@ -0,0 +1,48 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Validation; +model PIDIntegralTime "Test model for PIDIntergralTime" + extends Modelica.Icons.Example; + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PIDIntegralTime + pIDIntegralTime "Calculates the integral time for a PI controller" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + CDL.Continuous.Sources.Ramp T( + height=0.5, + duration=1, + offset=0.5) "Time constant of the first order time-delayed model" + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + CDL.Continuous.Sources.Ramp L( + height=0.3, + duration=1, + offset=0.3) "Time delay of the first order time-delayed model" + annotation (Placement(transformation(extent={{-60,-50},{-40,-30}}))); + Modelica.Blocks.Sources.RealExpression referenceTi(y=(0.4*L.y + 0.8*T.y)/(L.y + + 0.1*T.y)*L.y) + "Reference value for the integral time" + annotation (Placement(transformation(extent={{-12,50},{8,70}}))); +equation + connect(L.y, pIDIntegralTime.L) annotation (Line(points={{-38,-40},{-20,-40},{ + -20,-6},{-12,-6}}, color={0,0,127})); + connect(T.y, pIDIntegralTime.T) annotation (Line(points={{-38,0},{-26,0},{-26, + 6},{-12,6}}, color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mos" "Simulate and plot"), + Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + coordinateSystem(preserveAspectRatio=false)), + Documentation(revisions=" +
    +
  • +June 1, 2022, by Sen Huang:
    +First implementation
    +
  • +
+", info=" +

+Validation test for the block + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.AutoTuner.AMIGO.PIDIntergralTime. +

+")); +end PIDIntegralTime; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mo new file mode 100644 index 00000000000..591a7aacb16 --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mo @@ -0,0 +1,52 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Validation; +model PIGain "Test model for PIGain" + extends Modelica.Icons.Example; + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PIGain pIGain + "Calculates the control gain for a PI controller" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp kp(duration=1, offset=1) + "Gain of the first order time-delayed model" + annotation (Placement(transformation(extent={{-60,30},{-40,50}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp T( + height=0.5, + duration=1, + offset=0.5) "Time constant of the first order time-delayed model" + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp L( + height=0.3, + duration=1, + offset=0.3) "Time delay of the first order time-delayed model" + annotation (Placement(transformation(extent={{-60,-50},{-40,-30}}))); + Modelica.Blocks.Sources.RealExpression referencek(y=0.15/kp.y + (0.35 - L.y*T.y + /(L.y + T.y)/(L.y + T.y))*T.y/kp.y/L.y) "Reference value for the gain" + annotation (Placement(transformation(extent={{-10,50},{10,70}}))); +equation + connect(L.y, pIGain.L) annotation (Line(points={{-38,-40},{-20,-40},{-20,-6},{ + -12,-6}}, color={0,0,127})); + connect(T.y, pIGain.T) + annotation (Line(points={{-38,0},{-12,0}}, color={0,0,127})); + connect(pIGain.kp, kp.y) annotation (Line(points={{-12,6},{-20,6},{-20,40},{-38, + 40}}, color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mos" "Simulate and plot"), + Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + coordinateSystem(preserveAspectRatio=false)), + Documentation(revisions=" +
    +
  • +June 1, 2022, by Sen Huang:
    +First implementation
    +
  • +
+", info=" +

+Validation test for the block + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIGain. +

+")); +end PIGain; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mo new file mode 100644 index 00000000000..9aea9f39f6e --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mo @@ -0,0 +1,48 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Validation; +model PIIntegralTime "Test model for PIIntergralTime" + extends Modelica.Icons.Example; + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PIIntegralTime + pIIntegralTime "Calculates the integral time for a PI controller" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp T( + height=0.5, + duration=1, + offset=0.5) "Time constant of the first order time-delayed model" + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp L( + height=0.3, + duration=1, + offset=0.3) "Time delay of the first order time-delayed model" + annotation (Placement(transformation(extent={{-60,-50},{-40,-30}}))); + Modelica.Blocks.Sources.RealExpression referenceTi(y=0.35*L.y + 13*L.y*T.y*T.y + /(T.y*T.y + 12*L.y*T.y + 7*L.y*L.y)) + "Reference value for the integral time" + annotation (Placement(transformation(extent={{-10,50},{10,70}}))); +equation + connect(L.y, pIIntegralTime.L) annotation (Line(points={{-38,-40},{-20,-40},{-20, + -6},{-12,-6}}, color={0,0,127})); + connect(T.y, pIIntegralTime.T) annotation (Line(points={{-38,0},{-26,0},{-26,6}, + {-12,6}}, color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mos" "Simulate and plot"), + Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + coordinateSystem(preserveAspectRatio=false)), + Documentation(revisions=" +
    +
  • +June 1, 2022, by Sen Huang:
    +First implementation
    +
  • +
+", info=" +

+Validation test for the block + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.AutoTuner.AMIGO.PIIntergralTime. +

+")); +end PIIntegralTime; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/package.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/package.mo new file mode 100644 index 00000000000..ef76c633b75 --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/package.mo @@ -0,0 +1,32 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo; +package Validation "Collection of models that validate the blocks in the FirstOrderTimedelayed" + annotation ( + preferredView="info", + Documentation( + info=" +

+This package contains models that validate the blocks in + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO. +

+"), + Icon( + graphics={ + Rectangle( + lineColor={200,200,200}, + fillColor={248,248,248}, + fillPattern=FillPattern.HorizontalCylinder, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Rectangle( + lineColor={128,128,128}, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Polygon( + origin={8.0,14.0}, + lineColor={78,138,73}, + fillColor={78,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-58.0,46.0},{42.0,-14.0},{-58.0,-74.0},{-58.0,46.0}})})); +end Validation; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/package.order new file mode 100644 index 00000000000..931bd8a9623 --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/package.order @@ -0,0 +1,7 @@ +PIGain +PIIntegralTime +PI +PIDGain +PIDIntegralTime +PIDDerivativeTime +PID diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.mo new file mode 100644 index 00000000000..27165d3166d --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.mo @@ -0,0 +1,6 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner; +package Amigo "Package with components related to AMIGO tuner" +annotation (Documentation(info=" +

This package contains the blocks to implement the AMIGO tuner.

+")); +end Amigo; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.order new file mode 100644 index 00000000000..ad3bc9d6f47 --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.order @@ -0,0 +1,8 @@ +PIGain +PIIntegralTime +PI +PIDGain +PIDIntegralTime +PIDDerivativeTime +PID +Validation diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/FirstOrderTimedelayed/Gain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/FirstOrderTimedelayed/Gain.mo new file mode 100644 index 00000000000..852cf507f8e --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/FirstOrderTimedelayed/Gain.mo @@ -0,0 +1,119 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.FirstOrderTimedelayed; +block Gain "Identifies the gain of a first order time delayed model" + parameter Real yHig(min=0) = 1 + "Higher value for the output"; + parameter Real yLow(min=0) = 0.5 + "Lower value for the output"; + Buildings.Controls.OBC.CDL.Interfaces.RealInput u + "Connector for the response signal of a relay controller" + annotation (Placement(transformation(extent={{-140,60},{-100,100}}), + iconTransformation(extent={{-140,60},{-100,100}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealInput tOn + "Connector for a signal of the length for the On period" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}), + iconTransformation(extent={{-140,-20},{-100,20}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealInput tOff + "Connector for a signal of the length for the Off period" + annotation (Placement(transformation(extent={{-140,-100},{-100,-60}}), + iconTransformation(extent={{-140,-100},{-100,-60}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput k + "Connector for a output signal of the gain" + annotation (Placement(transformation(extent={{100,-10},{120,10}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant highRealyOuput(k=yHig) + "Higher value for the output" + annotation (Placement(transformation(extent={{-80,20},{-60,40}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant lowRealyOuput(k=yLow) + "Lower value for the output" + annotation (Placement(transformation(extent={{-80,-40},{-60,-20}}))); + Buildings.Controls.OBC.CDL.Continuous.Multiply mul2 "product of tOn and yHig" + annotation (Placement(transformation(extent={{-40,10},{-20,30}}))); + Buildings.Controls.OBC.CDL.Continuous.Multiply mul1 + "product of tOff and yLow" + annotation (Placement(transformation(extent={{-40,-60},{-20,-40}}))); + Buildings.Controls.OBC.CDL.Continuous.Add Iu + "the integral of the relay output" + annotation (Placement(transformation(extent={{10,-40},{30,-20}}))); + Buildings.Controls.OBC.CDL.Continuous.IntegratorWithReset Iy + "the integral of the process output" + annotation (Placement(transformation(extent={{-42,70},{-22,90}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant referenceRelayOutpit(k=0) + "reference value of the relay control output" + annotation (Placement(transformation(extent={{-80,50},{-60,70}}))); + Buildings.Controls.OBC.CDL.Continuous.Divide divIyIu "calculates the gain" + annotation (Placement(transformation(extent={{60,-10},{80,10}}))); + Buildings.Controls.OBC.CDL.Logical.Sources.Constant noReset(k=false) + "disable the reset of Iy" + annotation (Placement(transformation(extent={{28,40},{8,60}}))); + Buildings.Controls.OBC.CDL.Interfaces.BooleanInput trigger + "Connector for trigger signal" + annotation (Placement(transformation( + extent={{20,-20},{-20,20}}, + rotation=-90, + origin={0,-120}), iconTransformation( + extent={{20,-20},{-20,20}}, + rotation=-90, + origin={0,-120}))); + Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler sampIu(y_start=1) + "sampling Iu when the tuning period ends" + annotation (Placement(transformation(extent={{40,-40},{60,-20}}))); +equation + connect(mul2.y, Iu.u1) annotation (Line(points={{-18,20},{0,20},{0,-24},{8,-24}}, + color={0,0,127})); + connect(mul1.y, Iu.u2) annotation (Line(points={{-18,-50},{0,-50},{0,-36},{8,-36}}, + color={0,0,127})); + connect(Iy.u, u) annotation (Line(points={{-44,80},{-120,80}}, + color={0,0,127})); + connect(referenceRelayOutpit.y, Iy.y_reset_in) annotation (Line(points={{-58,60}, + {-52,60},{-52,72},{-44,72}}, color={0,0,127})); + connect(divIyIu.u1, Iy.y) annotation (Line(points={{58,6},{40,6},{40,80},{-20, + 80}}, color={0,0,127})); + connect(divIyIu.y, k) annotation (Line(points={{82,0},{110,0}}, color={0,0,127})); + connect(noReset.y, Iy.trigger) annotation (Line(points={{6,50},{-32,50},{-32,68}}, color={255,0,255})); + connect(mul1.u2, tOff) annotation (Line(points={{-42,-56},{-80,-56},{-80,-80}, + {-120,-80}}, color={0,0,127})); + connect(mul1.u1, lowRealyOuput.y) annotation (Line(points={{-42,-44},{-52,-44}, + {-52,-30},{-58,-30}}, color={0,0,127})); + connect(highRealyOuput.y, mul2.u1) annotation (Line(points={{-58,30},{-52,30}, + {-52,26},{-42,26}}, color={0,0,127})); + connect(mul2.u2, tOn) annotation (Line(points={{-42,14},{-52,14},{-52,0},{-120,0}}, color={0,0,127})); + connect(sampIu.u, Iu.y) annotation (Line(points={{38,-30},{32,-30}}, color={0,0,127})); + connect(sampIu.y, divIyIu.u2) annotation (Line(points={{62,-30},{70,-30},{70,-14}, + {40,-14},{40,-6},{58,-6}}, color={0,0,127})); + connect(sampIu.trigger, trigger) annotation (Line(points={{50,-42},{50,-80},{0, + -80},{0,-120}}, color={255,0,255})); + annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-154,148},{146,108}}, + textString="%name", + textColor={0,0,255})}), Diagram(coordinateSystem(preserveAspectRatio=false)), + Documentation(revisions=" +
    +
  • +June 1, 2022, by Sen Huang:
    +First implementation
    +
  • +
+", info=" +

This block calculates the gain of a first-order time-delayed model, k, by

+

k = Iy/Iu

+

where Iy and Iu are the integral of the process output and the integral of the relay output, respectively.

+

Iy is calculated by

+

Iy = ∫ u(t) dt;

+

where u is the process output.

+

Iu is calculated by

+

Iu = ton yhig + toff ylow;

+

where yhig and ylow are the higher value and the lower value of the relay control output, respectively.

+

ton and toff are the length of the On period and the Off period, respectively.

+

References

+

+Josefin Berner (2017). +\"Automatic Controller Tuning using Relay-based Model Identification.\" +Department of Automatic Control, Lund Institute of Technology, Lund University. +

+")); +end Gain; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/FirstOrderTimedelayed/TimeConstantDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/FirstOrderTimedelayed/TimeConstantDelay.mo new file mode 100644 index 00000000000..023a6b4c0d5 --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/FirstOrderTimedelayed/TimeConstantDelay.mo @@ -0,0 +1,153 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.FirstOrderTimedelayed; +block TimeConstantDelay + "Calculates the time constant and time delay of a first order time delayed model" + parameter Real yHig(min=0,max=1) = 1 + "Higher value for the output"; + parameter Real yLow(min=0,max=1) = 0.5 + "Lower value for the output"; + parameter Real deaBan(min=0) = 0.5 + "Deadband for holding the output value"; + Buildings.Controls.OBC.CDL.Interfaces.RealInput tOn + "Connector for a signal of the length for the On period" + annotation (Placement(transformation(extent={{-140,40},{-100,80}}), + iconTransformation(extent={{-140,40},{-100,80}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealInput k + "Connector for the signal of the gain" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}), + iconTransformation(extent={{-140,-20},{-100,20}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealInput ratioLT + "Connector for the signal of the ratio between the time constant and the time delay of a first order time delay model" + annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), + iconTransformation(extent={{-140,-80},{-100,-40}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput T + "Connector for a output signal of the time constant" + annotation (Placement(transformation(extent={{100,60},{120,80}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput L + "Connector for a output signal of the time constant" + annotation (Placement(transformation(extent={{100,-70},{120,-50}}))); + Buildings.Controls.OBC.CDL.Continuous.Abs absk "Absoulte value of the gain" + annotation (Placement(transformation(extent={{-80,-10},{-60,10}}))); + Buildings.Controls.OBC.CDL.Continuous.Exp exp + "exponential value of the ratio between time constant and the time delay" + annotation (Placement(transformation(extent={{-80,-70},{-60,-50}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant yHigSig(k=yHig) + "Higher value for the output" + annotation (Placement(transformation(extent={{-80,30},{-60,50}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant yLowSig(k=yLow) + "Lower value for the output" + annotation (Placement(transformation(extent={{-40,30},{-20,50}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant relayDeaBan(k=deaBan) + "Dead band of the relay controller" + annotation (Placement(transformation(extent={{0,30},{20,50}}))); + Buildings.Controls.OBC.CDL.Continuous.Divide div1 + "Quotient of dead band Divided by the absolute value of k" + annotation (Placement(transformation(extent={{0,-30},{20,-10}}))); + Buildings.Controls.OBC.CDL.Continuous.Subtract sub2 + "Quotient of dead band Divided by the absolute value of k minus yLow" + annotation (Placement(transformation(extent={{30,-50},{50,-30}}))); + Buildings.Controls.OBC.CDL.Continuous.Add add2 "Sum of yHig and yLow" + annotation (Placement(transformation(extent={{40,0},{60,20}}))); + Buildings.Controls.OBC.CDL.Continuous.Multiply mul1 + "exp(L/T)(yHig + yLow)" + annotation (Placement(transformation(extent={{60,30},{80,50}}))); + Buildings.Controls.OBC.CDL.Continuous.Add add1 + "h/|k|-yLow+exp(L/T)(yHig + yLow)" + annotation (Placement(transformation(extent={{60,-40},{80,-20}}))); + Buildings.Controls.OBC.CDL.Continuous.Subtract sub1 "yHig - deaBan/exp(L/T)" + annotation (Placement(transformation(extent={{18,-80},{38,-60}}))); + Buildings.Controls.OBC.CDL.Continuous.Divide div2 + "(h/|k|-yLow+exp(L/T)(yHig + yLow))/(yHig-h/|k|)" + annotation (Placement(transformation(extent={{60,-78},{80,-58}}))); + Buildings.Controls.OBC.CDL.Continuous.Log log + "the natural logarithm of (h/|k|-yLow+exp(L/T)(yHig + yLow))/(yHig-h/|k|)" + annotation (Placement(transformation(extent={{-20,-100},{-40,-80}}))); + Buildings.Controls.OBC.CDL.Continuous.Divide div3 + "Calculates the time constant" + annotation (Placement(transformation(extent={{-40,60},{-20,80}}))); + + Buildings.Controls.OBC.CDL.Continuous.Multiply mul2 + "Calculates the time delay" + annotation (Placement(transformation(extent={{0,74},{20,94}}))); +equation + assert( + abs(k)>1E-6, + "the absulte values of k should be larger than 0. Check inputs."); + connect(absk.u, k) + annotation (Line(points={{-82,0},{-120,0}}, color={0,0,127})); + connect(ratioLT, exp.u) + annotation (Line(points={{-120,-60},{-82,-60}}, color={0,0,127})); + connect(relayDeaBan.y, div1.u1) annotation (Line(points={{22,40},{28,40},{28,0}, + {-20,0},{-20,-14},{-2,-14}}, color={0,0,127})); + connect(div1.u2, absk.y) annotation (Line(points={{-2,-26},{-40,-26},{-40,0},{ + -58,0}}, color={0,0,127})); + connect(sub2.u1, div1.y) annotation (Line(points={{28,-34},{26,-34},{26,-20},{ + 22,-20}}, color={0,0,127})); + connect(sub2.u2, yLowSig.y) annotation (Line(points={{28,-46},{-12,-46},{-12,40}, + {-18,40}}, color={0,0,127})); + connect(yHigSig.y, add2.u1) annotation (Line(points={{-58,40},{-52,40},{-52,16}, + {38,16}}, color={0,0,127})); + connect(add2.u2, yLowSig.y) annotation (Line(points={{38,4},{-12,4},{-12,40},{ + -18,40}}, color={0,0,127})); + connect(add2.y, mul1.u2) annotation (Line(points={{62,10},{72,10},{72,24},{54, + 24},{54,34},{58,34}}, color={0,0,127})); + connect(exp.y, mul1.u1) annotation (Line(points={{-58,-60},{-6,-60},{-6,60},{ + 54,60},{54,46},{58,46}}, color={0,0,127})); + connect(sub2.y, add1.u2) annotation (Line(points={{52,-40},{54,-40},{54,-36},{ + 58,-36}}, color={0,0,127})); + connect(add1.u1, mul1.y) annotation (Line(points={{58,-24},{52,-24},{52,-6},{86, + -6},{86,40},{82,40}}, color={0,0,127})); + connect(sub1.u1, add2.u1) annotation (Line(points={{16,-64},{-52,-64},{-52,16}, + {38,16}}, color={0,0,127})); + connect(sub1.y, div2.u2) annotation (Line(points={{40,-70},{48,-70},{48,-74},{ + 58,-74}}, color={0,0,127})); + connect(div2.u1, add1.y) annotation (Line(points={{58,-62},{54,-62},{54,-48},{ + 84,-48},{84,-30},{82,-30}}, color={0,0,127})); + connect(div2.y, log.u) annotation (Line(points={{82,-68},{84,-68},{84,-90},{ + -18,-90}}, color={0,0,127})); + connect(tOn, div3.u1) annotation (Line(points={{-120,60},{-80,60},{-80,76},{ + -42,76}}, color={0,0,127})); + connect(div3.u2, log.y) annotation (Line(points={{-42,64},{-46,64},{-46,-90}, + {-42,-90}}, color={0,0,127})); + connect(div3.y, T) annotation (Line(points={{-18,70},{110,70}}, + color={0,0,127})); + connect(mul2.u2, T) annotation (Line(points={{-2,78},{-12,78},{-12,70},{110,70}}, + color={0,0,127})); + connect(mul2.u1, exp.u) annotation (Line(points={{-2,90},{-90,90},{-90,-60},{-82, + -60}}, color={0,0,127})); + connect(mul2.y, L) annotation (Line(points={{22,84},{90,84},{90,-60},{110,-60}}, + color={0,0,127})); + connect(sub1.u2, div1.y) annotation (Line(points={{16,-76},{10,-76},{10,-34},{ + 26,-34},{26,-20},{22,-20}}, color={0,0,127})); + annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-154,148},{146,108}}, + textString="%name", + textColor={0,0,255})}), Diagram(coordinateSystem(preserveAspectRatio=false)), + Documentation(revisions=" +
    +
  • +June 1, 2022, by Sen Huang:
    +First implementation
    +
  • +
+", info=" +

This block calculates the time constant and the time delay of a first-order time-delayed model

+

The time constant, T, is calculated by

+

T = ton/(ln((δ/|k|-yLow+exp(L/T)(yHig + yLow))/(yHig-δ/|k|)))

+

where yhig and ylow are the higher value and the lower value of the relay control output, respectively,

+

ton is the length of the On period,

+

δ is the dead band of a relay controller,

+

k is the gain of the first-order time-delayed model.

+

References

+

+Josefin Berner (2015). +\"Automatic Tuning of PID Controllers based on Asymmetric Relay Feedback.\" +Department of Automatic Control, Lund Institute of Technology, Lund University. +

+")); +end TimeConstantDelay; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/FirstOrderTimedelayed/Validation/Gain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/FirstOrderTimedelayed/Validation/Gain.mo new file mode 100644 index 00000000000..e9b071db8a7 --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/FirstOrderTimedelayed/Validation/Gain.mo @@ -0,0 +1,58 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.FirstOrderTimedelayed.Validation; +model Gain "Test model for Gain" + extends Modelica.Icons.Example; + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.FirstOrderTimedelayed.Gain + gain annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + CDL.Continuous.Sources.TimeTable tOn( + table=[0,0; 0.1,1; 0.3,1; 0.7,1; 0.83,1; 0.85,2], + smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, + extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) + "The length of the On period" + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + CDL.Continuous.Sources.TimeTable tOff( + table=[0,0; 0.1,0; 0.3,0; 0.7,3; 0.83,3; 0.85,3], + smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, + extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) + "The length of the Off period" + annotation (Placement(transformation(extent={{-60,-50},{-40,-30}}))); + CDL.Continuous.Sources.TimeTable u( + table=[0,1; 0.1,0.5; 0.3,0.5; 0.7,0.5; 0.83,1; 0.85,1], + smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, + extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) + "The response of a relay controller" + annotation (Placement(transformation(extent={{-60,30},{-40,50}}))); + CDL.Logical.Sources.TimeTable trigger(table=[0,0; 0.1,0; 0.3,0; 0.7,0; 0.83,1; + 0.85,1], period=2) "Trigger the calculation of the gain" + annotation (Placement(transformation(extent={{-58,-90},{-38,-70}}))); +equation + connect(tOn.y[1], gain.tOn) + annotation (Line(points={{-38,0},{-12,0}}, color={0,0,127})); + connect(gain.tOff, tOff.y[1]) annotation (Line(points={{-12,-8},{-20,-8},{-20, + -40},{-38,-40}}, color={0,0,127})); + connect(u.y[1], gain.u) annotation (Line(points={{-38,40},{-20,40},{-20,8},{-12, + 8}}, color={0,0,127})); + connect(trigger.y[1], gain.trigger) + annotation (Line(points={{-36,-80},{0,-80},{0,-12}}, color={255,0,255})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mos" "Simulate and plot"), + Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + coordinateSystem(preserveAspectRatio=false)), + Documentation(revisions=" +
    +
  • +June 1, 2022, by Sen Huang:
    +First implementation
    +
  • +
+", info=" +

+Validation test for the block + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Gain. +

+")); +end Gain; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/FirstOrderTimedelayed/Validation/TimeConstantDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/FirstOrderTimedelayed/Validation/TimeConstantDelay.mo new file mode 100644 index 00000000000..c1398a42241 --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/FirstOrderTimedelayed/Validation/TimeConstantDelay.mo @@ -0,0 +1,59 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.FirstOrderTimedelayed.Validation; +model TimeConstantDelay "Test model for TimeConstantDelay" + extends Modelica.Icons.Example; + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.FirstOrderTimedelayed.TimeConstantDelay + timeConstantDelay(yLow=0.1) + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + CDL.Continuous.Sources.TimeTable tOn( + table=[0,1; 0.1,1; 0.3,1; 0.7,1; 0.83,1; 0.85,2], + smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, + extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) + "The length of the On period" + annotation (Placement(transformation(extent={{-60,20},{-40,40}}))); + CDL.Continuous.Sources.TimeTable k( + table=[0,1; 0.1,1; 0.3,1; 0.7,1; 0.83,1], + smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, + extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) + "Gain of a first order time delay model" + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + CDL.Continuous.Sources.TimeTable ratioLT( + table=[0,0.3; 0.1,0.5; 0.3,0.1; 0.7,0.5; 0.83,0.8; 0.85,0.5], + smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, + extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) + "The ratio between the time constant and the time delay of a first order time delay model" + annotation (Placement(transformation(extent={{-60,-40},{-40,-20}}))); + Modelica.Blocks.Sources.RealExpression referenceT(y=tOn.y[1]/log((0.5/abs(k.y[ + 1]) - 0.1 + exp(ratioLT.y[1])*(1 + 0.1))/(1 - 0.5/abs(k.y[1])))) + annotation (Placement(transformation(extent={{-10,48},{10,68}}))); + Modelica.Blocks.Sources.RealExpression referenceL(y=ratioLT.y[1]*referenceT.y) + annotation (Placement(transformation(extent={{-10,30},{10,50}}))); +equation + connect(tOn.y[1], timeConstantDelay.tOn) annotation (Line(points={{-38,30},{-20, + 30},{-20,6},{-12,6}}, color={0,0,127})); + connect(k.y[1], timeConstantDelay.k) + annotation (Line(points={{-38,0},{-12,0}}, color={0,0,127})); + connect(ratioLT.y[1], timeConstantDelay.ratioLT) annotation (Line(points={{-38, + -30},{-20,-30},{-20,-6},{-12,-6}}, color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mos" "Simulate and plot"), + Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + coordinateSystem(preserveAspectRatio=false)), + Documentation(revisions=" +
    +
  • +June 1, 2022, by Sen Huang:
    +First implementation
    +
  • +
+", info=" +

+Validation test for the block + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.TimeConstantDelay. +

+")); +end TimeConstantDelay; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/FirstOrderTimedelayed/Validation/package.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/FirstOrderTimedelayed/Validation/package.mo new file mode 100644 index 00000000000..dd57fa31f50 --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/FirstOrderTimedelayed/Validation/package.mo @@ -0,0 +1,32 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.FirstOrderTimedelayed; +package Validation "Collection of models that validate the blocks in the FirstOrderTimedelayed" + annotation ( + preferredView="info", + Documentation( + info=" +

+This package contains models that validate the blocks in + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning. +

+"), + Icon( + graphics={ + Rectangle( + lineColor={200,200,200}, + fillColor={248,248,248}, + fillPattern=FillPattern.HorizontalCylinder, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Rectangle( + lineColor={128,128,128}, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Polygon( + origin={8.0,14.0}, + lineColor={78,138,73}, + fillColor={78,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-58.0,46.0},{42.0,-14.0},{-58.0,-74.0},{-58.0,46.0}})})); +end Validation; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/FirstOrderTimedelayed/Validation/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/FirstOrderTimedelayed/Validation/package.order new file mode 100644 index 00000000000..5154064169d --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/FirstOrderTimedelayed/Validation/package.order @@ -0,0 +1,2 @@ +Gain +TimeConstantDelay diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/FirstOrderTimedelayed/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/FirstOrderTimedelayed/package.order new file mode 100644 index 00000000000..0fb2c6ea90f --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/FirstOrderTimedelayed/package.order @@ -0,0 +1,3 @@ +Gain +TimeConstantDelay +Validation diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/package.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/package.mo new file mode 100644 index 00000000000..27db01f309c --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/package.mo @@ -0,0 +1,6 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning; +package AutoTuner "Package with blocks for tuning the PID parameters based on identified system models for the control process" +annotation (Documentation(info=" +

This package contains components related to system identification for the control process.

+")); +end AutoTuner; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/package.order new file mode 100644 index 00000000000..74fd0880c0f --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/package.order @@ -0,0 +1 @@ +Amigo diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/BaseClasses/PIDWithRelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/BaseClasses/PIDWithRelay.mo new file mode 100644 index 00000000000..ede974bf1c9 --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/BaseClasses/PIDWithRelay.mo @@ -0,0 +1,113 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.BaseClasses; +partial block PIDWithRelay + "A PID controller that is coupled with a Relay controller for automatic parameter tuning" + parameter Buildings.Controls.OBC.CDL.Types.SimpleController controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PI + "Type of controller"; + parameter Real k_start( + min=100*Buildings.Controls.OBC.CDL.Constants.eps)=1 + "Start value of the gain of controller" + annotation (Dialog(group="Control gains")); + parameter Real Ti_start( + final quantity="Time", + final unit="s", + min=100*Buildings.Controls.OBC.CDL.Constants.eps)=0.5 + "Start value of the time constant of integrator block" + annotation (Dialog(group="Control gains",enable=controllerType == CDL.Types.SimpleController.PI or controllerType == CDL.Types.SimpleController.PID)); + parameter Real Td_start( + final quantity="Time", + final unit="s", + min=100*Buildings.Controls.OBC.CDL.Constants.eps)=0.1 + "Start value of the time constant of derivative block" + annotation (Dialog(group="Control gains",enable=controllerType == CDL.Types.SimpleController.PD or controllerType == CDL.Types.SimpleController.PID)); + Buildings.Controls.OBC.CDL.Interfaces.RealInput u_s + "Connector for setpoint input signal" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}),iconTransformation(extent={{-140,-20},{-100,20}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealInput u_m + "Connector for measurement input signal" + annotation (Placement(transformation(origin={0,-120},extent={{20,-20},{-20,20}},rotation=270),iconTransformation(extent={{20,-20},{-20,20}},rotation=270,origin={0,-120}))); + Buildings.Controls.OBC.CDL.Interfaces.BooleanInput trigger + "Resets the controller output when trigger becomes true" + annotation (Placement(transformation(extent={{-20,-20},{20,20}},rotation=90,origin={-60,-120}), iconTransformation(extent={{-20,-20},{20,20}},rotation=90,origin={-60,-120}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput y + "Connector for actuator output signal" + annotation (Placement(transformation(extent={{100,-20},{140,20}}),iconTransformation(extent={{100,-20},{140,20}}))); + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Control relay( + yHig=1, + yLow=0.1, + deaBan=0.2) + "A relay controller" + annotation (Placement(transformation(extent={{22,20},{42,40}}))); + Buildings.Controls.OBC.Utilities.PIDWithInputGains pid( + controllerType=controllerType) + annotation (Placement(transformation(extent={{22,-40},{42,-20}}))); + Buildings.Controls.OBC.CDL.Continuous.Switch swi + "Switch between a PID controller and a relay controller" + annotation (Placement(transformation(extent={{62,10},{82,-10}}))); + Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samk(y_start=k_start) + "Recording the control gain" + annotation (Placement(transformation(extent={{-40,-10},{-20,-30}}))); + Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samTi(y_start=Ti_start) if with_I + "Recording the integral time" + annotation (Placement(transformation(extent={{-80,-38},{-60,-58}}))); + Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samTd(y_start=Td_start) if with_D + "Recording the derivative time" + annotation (Placement(transformation(extent={{-40,-60},{-20,-80}}))); + +protected + final parameter Boolean with_I=controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PI or controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PID + "Boolean flag to enable integral action" + annotation (Evaluate=true,HideResult=true); + final parameter Boolean with_D=controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PD or controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PID + "Boolean flag to enable derivative action" + annotation (Evaluate=true,HideResult=true); + +equation + connect(pid.u_s, u_s) annotation (Line(points={{20,-30},{8,-30},{8,0},{-120,0}}, + color={0,0,127})); + connect(relay.u_s, u_s) annotation (Line(points={{20,30},{-80,30},{-80,0},{-120, + 0}}, color={0,0,127})); + connect(pid.trigger, trigger) annotation (Line(points={{26,-42},{26,-92},{-60, + -92},{-60,-120}}, color={255,0,255})); + connect(swi.y, y) annotation (Line(points={{84,0},{96,0},{96,0},{120,0}}, + color={0,0,127})); + connect(samk.y,pid. k) annotation (Line(points={{-18,-20},{-16,-20},{-16,-22}, + {20,-22}}, color={0,0,127})); + connect(pid.Ti, samTi.y) annotation (Line(points={{20,-26},{-14,-26},{-14,-48}, + {-58,-48}}, color={0,0,127})); + connect(samTd.y,pid. Td) annotation (Line(points={{-18,-70},{14,-70},{14,-34}, + {20,-34}}, color={0,0,127})); + connect(relay.u_m, u_m) annotation (Line(points={{32,18},{32,6},{46,6},{46,-80}, + {0,-80},{0,-120}}, color={0,0,127})); + connect(pid.u_m, u_m) annotation (Line(points={{32,-42},{32,-80},{0,-80},{0,-120}}, + color={0,0,127})); + connect(swi.u3, relay.y) + annotation (Line(points={{60,8},{52,8},{52,36},{43,36}}, color={0,0,127})); + connect(swi.u1, pid.y) annotation (Line(points={{60,-8},{54,-8},{54,-30},{44, + -30}}, color={0,0,127})); + annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-152,144},{148,104}}, + textString="%name", + textColor={0,0,255})}), Diagram( + coordinateSystem(preserveAspectRatio=false)), + Documentation(revisions=" +
    +
  • +June 1, 2022, by Sen Huang:
    +First implementation
    +
  • +
+", info=" +

+This blocks is designed as a generic form for implementing automatic tuning methods for PID controllers, +

+

+based on response from a relay controller. +

+")); +end PIDWithRelay; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/BaseClasses/package.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/BaseClasses/package.mo new file mode 100644 index 00000000000..7df4fc260c6 --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/BaseClasses/package.mo @@ -0,0 +1,29 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning; +package BaseClasses "Package with base classes" + annotation ( + preferredView="info", + Documentation( + info=" +

+This package contains base classes to construct blocks in +Buildings.Controls.OBC.Utilities.PIDWithAutotuning. +

+"), + Icon( + graphics={ + Rectangle( + lineColor={200,200,200}, + fillColor={248,248,248}, + fillPattern=FillPattern.HorizontalCylinder, + extent={{-100,-100},{100,100}}, + radius=25.0), + Rectangle( + lineColor={128,128,128}, + extent={{-100,-100},{100,100}}, + radius=25.0), + Ellipse( + extent={{-30,-30},{30,30}}, + lineColor={128,128,128}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid)})); +end BaseClasses; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/BaseClasses/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/BaseClasses/package.order new file mode 100644 index 00000000000..91298f04157 --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/BaseClasses/package.order @@ -0,0 +1 @@ +PIDWithRelay diff --git a/Buildings/Controls/OBC/Utilities/BaseClasses/Relay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/Control.mo similarity index 94% rename from Buildings/Controls/OBC/Utilities/BaseClasses/Relay.mo rename to Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/Control.mo index dd7c3b30f34..d27398a54e0 100644 --- a/Buildings/Controls/OBC/Utilities/BaseClasses/Relay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/Control.mo @@ -1,9 +1,8 @@ -within Buildings.Controls.OBC.Utilities.BaseClasses; -block Relay - "Outputs a relay signal for PID tuning purposes" - parameter Real yHig(min=0) = 1 +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.ModelIdentification; +block Control "Outputs a relay signal for PID tuning purposes" + parameter Real yHig(min=0,max=1) = 1 "Higher value for the output"; - parameter Real yLow(max=0) = -0.5 + parameter Real yLow(min=0,max=1) = 0.5 "Lower value for the output"; parameter Real deaBan(min=0) = 0.5 "Deadband for holding the output value"; @@ -37,7 +36,7 @@ block Relay initial equation assert( - abs(abs(yHig) - abs(yLow))>1E-6, + yHig-yLow>1E-6, "the absulte values of yHig should be different from that of yLow. Check parameters."); equation @@ -89,4 +88,4 @@ First implementation
")); -end Relay; +end Control; diff --git a/Buildings/Controls/OBC/Utilities/BaseClasses/RelayHalfPeriodRatio.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/HalfPeriodRatio.mo similarity index 84% rename from Buildings/Controls/OBC/Utilities/BaseClasses/RelayHalfPeriodRatio.mo rename to Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/HalfPeriodRatio.mo index b7c936cf878..d15e62b8269 100644 --- a/Buildings/Controls/OBC/Utilities/BaseClasses/RelayHalfPeriodRatio.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/HalfPeriodRatio.mo @@ -1,21 +1,27 @@ -within Buildings.Controls.OBC.Utilities.BaseClasses; -block RelayHalfPeriodRatio +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.ModelIdentification; +block HalfPeriodRatio "Calculates the half period ratio of a response from a relay controller" - Buildings.Controls.OBC.CDL.Interfaces.RealInput tOn + Buildings.Controls.OBC.CDL.Interfaces.RealInput tOn "Connector for setpoint input signal" annotation (Placement(transformation(extent={{-140,40},{-100,80}}), iconTransformation(extent={{-140,40},{-100,80}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput tOff + Buildings.Controls.OBC.CDL.Interfaces.RealInput tOff "Connector for setpoint input signal" annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput rho + "Connector for a output signal of the half period ratio" + annotation (Placement(transformation(extent={{100,50},{120,70}}))); + CDL.Interfaces.BooleanOutput trigger + "Relay tuning status, true if the tuning completes" + annotation (Placement(transformation(extent={{100,-70},{120,-50}}))); Buildings.Controls.OBC.CDL.Continuous.Min tmin "The minimum value of tOn and tOff" annotation (Placement(transformation(extent={{-80,20},{-60,40}}))); Buildings.Controls.OBC.CDL.Continuous.Greater gretmin "Check if both tOn and tOff are both larger than 0" annotation (Placement(transformation(extent={{-40,20},{-20,40}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.Constant minLen(final k=0) + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant minLen(final k=0) "Minimum value for the horizon length" annotation (Placement(transformation(extent={{-80,-20},{-60,0}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler tOnSample(y_start=Buildings.Controls.OBC.CDL.Constants.eps) @@ -36,9 +42,6 @@ block RelayHalfPeriodRatio annotation (Placement(transformation(extent={{40,50},{60,70}}))); Buildings.Controls.OBC.CDL.Continuous.Divide halfPeriodRatioCal "Calculating the half period ratio" annotation (Placement(transformation(extent={{60,-10},{80,10}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealOutput halfPeriodRatio - "Connector for a output signal of the half period ratio" - annotation (Placement(transformation(extent={{100,-10},{120,10}}))); equation connect(tmin.u1, tOn) annotation (Line(points={{-82,36},{-92,36},{-92,60},{-120, 60}}, color={0,0,127})); @@ -58,8 +61,9 @@ equation {-48,52},{-48,30},{-42,30}}, color={0,0,127})); connect(gretminChange.u1, gretmin.u1) annotation (Line(points={{-42,-40},{-86, -40},{-86,16},{-52,16},{-52,30},{-42,30}}, color={0,0,127})); - connect(tminSample.y, gretminChange.u2) annotation (Line(points={{22,0},{22,-56}, - {-42,-56},{-42,-48}}, color={0,0,127})); + connect(tminSample.y, gretminChange.u2) annotation (Line(points={{22,0},{22, + -56},{-60,-56},{-60,-48},{-42,-48}}, + color={0,0,127})); connect(gretmin.y, tminSample.trigger) annotation (Line(points={{-18,30},{-10, 30},{-10,-18},{10,-18},{10,-12}}, color={255,0,255})); connect(gretminChange.y, tOffSample.trigger) @@ -76,8 +80,10 @@ equation {72,60},{72,20},{52,20},{52,6},{58,6}}, color={0,0,127})); connect(halfPeriodRatioCal.u2, mintOntOff.y) annotation (Line(points={{58,-6}, {52,-6},{52,-50},{70,-50},{70,-70},{62,-70}}, color={0,0,127})); - connect(halfPeriodRatioCal.y, halfPeriodRatio) - annotation (Line(points={{82,0},{110,0}}, color={0,0,127})); + connect(halfPeriodRatioCal.y, rho) annotation (Line(points={{82,0},{96,0},{96, + 60},{110,60}}, color={0,0,127})); + connect(trigger, tOffSample.trigger) annotation (Line(points={{110,-60},{80,-60}, + {80,-40},{10,-40},{10,-58}}, color={255,0,255})); annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-100,-100},{100,100}}, @@ -100,4 +106,4 @@ First implementation

ρ = max(ton,toff)/ min(ton,toff)

where ton and ton are the length of the On period and the Off period, respectively.

")); -end RelayHalfPeriodRatio; +end HalfPeriodRatio; diff --git a/Buildings/Controls/OBC/Utilities/BaseClasses/RelayProcess.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/ResponseProcess.mo similarity index 97% rename from Buildings/Controls/OBC/Utilities/BaseClasses/RelayProcess.mo rename to Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/ResponseProcess.mo index 8850b177097..4eeb98bfaac 100644 --- a/Buildings/Controls/OBC/Utilities/BaseClasses/RelayProcess.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/ResponseProcess.mo @@ -1,5 +1,5 @@ -within Buildings.Controls.OBC.Utilities.BaseClasses; -block RelayProcess +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.ModelIdentification; +block ResponseProcess "Processes a relay signal to calculate the lengths of the On period and the Off period" Buildings.Controls.OBC.CDL.Interfaces.BooleanInput On "Connector for input signal" @@ -42,7 +42,7 @@ block RelayProcess "Recording the horizon length for the On period" annotation (Placement(transformation(extent={{60,50},{80,30}}))); - CDL.Interfaces.RealInput tim + Buildings.Controls.OBC.CDL.Interfaces.RealInput tim "Connector for the input signal of the simulation time" annotation ( Placement(transformation(extent={{-140,40},{-100,80}}), iconTransformation(extent={{-140,40},{-100,80}}))); @@ -112,4 +112,4 @@ First implementation

1) the length of the On period (when the relay switch signal becomes True);

2) the length of the Off period (when the relay switch signal becomes False).

")); -end RelayProcess; +end ResponseProcess; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/Validation/Control.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/Validation/Control.mo new file mode 100644 index 00000000000..3b4d0e99942 --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/Validation/Control.mo @@ -0,0 +1,41 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.ModelIdentification.Validation; +model Control "Test model for Control" + extends Modelica.Icons.Example; + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.ModelIdentification.Control + control( + yHig=1, + yLow=0.5, + deaBan=0.4) "A relay controller" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + CDL.Continuous.Sources.Sine sin(freqHz=2) "Measured value" + annotation (Placement(transformation(extent={{-60,-60},{-40,-40}}))); + CDL.Continuous.Sources.Constant const(k=0) "Setpoint" + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); +equation + connect(const.y, control.u_s) + annotation (Line(points={{-38,0},{-12,0}}, color={0,0,127})); + connect(sin.y, control.u_m) + annotation (Line(points={{-38,-50},{0,-50},{0,-12}}, color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/BaseClasses/Validation/Relay.mos" "Simulate and plot"), + Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + coordinateSystem(preserveAspectRatio=false)), + Documentation(revisions=" +
    +
  • +June 1, 2022, by Sen Huang:
    +First implementation
    +
  • +
+", info=" +

+Validation test for the block + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Control. +

+")); +end Control; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/Validation/HalfPeriodRatio.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/Validation/HalfPeriodRatio.mo new file mode 100644 index 00000000000..74b3b6cea18 --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/Validation/HalfPeriodRatio.mo @@ -0,0 +1,46 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.ModelIdentification.Validation; +model HalfPeriodRatio "Test model for HalfPeriodRatio" + extends Modelica.Icons.Example; + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.ModelIdentification.HalfPeriodRatio + relayHalfPeriodRatio "Calculating the half period ratio" + annotation (Placement(transformation(extent={{-8,-10},{12,10}}))); + CDL.Continuous.Sources.TimeTable tOn( + table=[0,0; 0.1,1; 0.3,1; 0.7,1; 0.83,1; 0.85,2], + smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, + extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) + "The length of the On period" + annotation (Placement(transformation(extent={{-60,20},{-40,40}}))); + CDL.Continuous.Sources.TimeTable tOff( + table=[0,0; 0.1,0; 0.3,0; 0.7,3; 0.83,3; 0.85,3], + smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, + extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) + "The length of the Off period" + annotation (Placement(transformation(extent={{-60,-40},{-40,-20}}))); +equation + connect(tOn.y[1], relayHalfPeriodRatio.tOn) annotation (Line(points={{-38,30}, + {-20,30},{-20,6},{-10,6}}, color={0,0,127})); + connect(tOff.y[1], relayHalfPeriodRatio.tOff) annotation (Line(points={{-38,-30}, + {-20,-30},{-20,-6},{-10,-6}}, color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/BaseClasses/Validation/RelayHalfPeriodRatio.mos" "Simulate and plot"), + Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + coordinateSystem(preserveAspectRatio=false)), + Documentation(revisions=" +
    +
  • +June 1, 2022, by Sen Huang:
    +First implementation
    +
  • +
+", info=" +

+Validation test for the block + +Buildings.Controls.OBC.Utilities.ResponseProcess.HalfPeriodRatio. +

+")); +end HalfPeriodRatio; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/Validation/ResponseProcess.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/Validation/ResponseProcess.mo new file mode 100644 index 00000000000..919c6e0a605 --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/Validation/ResponseProcess.mo @@ -0,0 +1,41 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.ModelIdentification.Validation; +model ResponseProcess "Test model for ResponeProcess" + extends Modelica.Icons.Example; + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.ModelIdentification.ResponseProcess + relayPrcoess "Calculating the length of the On period and the Off period" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + Buildings.Controls.OBC.CDL.Logical.Sources.TimeTable relayResponse( + table=[0,1;0.1,0; 0.3,0; 0.7,1; 0.83,0; 0.85,1], period=2) + "Mimicking the response for a relay controller" + annotation (Placement(transformation(extent={{-60,-20},{-40,0}}))); + CDL.Continuous.Sources.ModelTime modTim + "Simulation time" + annotation (Placement(transformation(extent={{-60,10},{-40,30}}))); +equation + connect(relayPrcoess.On, relayResponse.y[1]) annotation (Line(points={{-12,-6}, + {-20,-6},{-20,-10},{-38,-10}}, color={255,0,255})); + connect(modTim.y, relayPrcoess.tim) annotation (Line(points={{-38,20},{-20,20}, + {-20,6},{-12,6}}, color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/BaseClasses/Validation/RelayProcess.mos" "Simulate and plot"), + Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + coordinateSystem(preserveAspectRatio=false)), + Documentation(revisions=" +
    +
  • +June 1, 2022, by Sen Huang:
    +First implementation
    +
  • +
+", info=" +

+Validation test for the block + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.ResponseProcess. +

+")); +end ResponseProcess; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/Validation/package.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/Validation/package.mo new file mode 100644 index 00000000000..09078dc49cb --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/Validation/package.mo @@ -0,0 +1,32 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.ModelIdentification; +package Validation "Collection of models that validate the SetPoints blocks of the CDL" + annotation ( + preferredView="info", + Documentation( + info=" +

+This package contains models that validate the blocks in + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning. +

+"), + Icon( + graphics={ + Rectangle( + lineColor={200,200,200}, + fillColor={248,248,248}, + fillPattern=FillPattern.HorizontalCylinder, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Rectangle( + lineColor={128,128,128}, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Polygon( + origin={8.0,14.0}, + lineColor={78,138,73}, + fillColor={78,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-58.0,46.0},{42.0,-14.0},{-58.0,-74.0},{-58.0,46.0}})})); +end Validation; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/Validation/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/Validation/package.order new file mode 100644 index 00000000000..7080006efb1 --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/Validation/package.order @@ -0,0 +1,3 @@ +Control +ResponseProcess +HalfPeriodRatio diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/package.order new file mode 100644 index 00000000000..2c79c7c148d --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/package.order @@ -0,0 +1,4 @@ +Control +ResponseProcess +HalfPeriodRatio +Validation diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/PIDWithAutotuningAmigoFOTD.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/PIDWithAutotuningAmigoFOTD.mo new file mode 100644 index 00000000000..b08dca63f99 --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/PIDWithAutotuningAmigoFOTD.mo @@ -0,0 +1,75 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning; +block PIDWithAutotuningAmigoFOTD + "A autotuning PID controller with an Amigo tuner and a first order time delayed system model" + extends + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.BaseClasses.PIDWithRelay( + relay( + yHig=1, + yLow=0.1, deaBan=0.1)); + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.ControlProcessModel + controlProcessModel( + yHig=0.2, + yLow=0.9, + deaBan=0.1) + annotation (Placement(transformation(extent={{-20,40},{-40,60}}))); + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PI piParameters + if not with_D + annotation (Placement(transformation(extent={{-60,70},{-80,90}}))); + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PID pidParameters + if with_D annotation (Placement(transformation(extent={{-60,40},{-80,60}}))); + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.ResponseProcess responseProcess(yHig=0.2, + yLow=0.9) + annotation (Placement(transformation(extent={{20,40},{0,60}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.ModelTime modTim + "Simulation time" + annotation (Placement(transformation(extent={{80,60},{60,80}}))); +equation + connect(responseProcess.triggerEnd, swi.u2) annotation (Line(points={{-1,42},{-1, + 10},{48,10},{48,0},{60,0}}, color={255,0,255})); + connect(samk.trigger, swi.u2) annotation (Line(points={{-30,-8},{-30,10},{48,10}, + {48,0},{60,0}}, color={255,0,255})); + connect(samTi.trigger, swi.u2) annotation (Line(points={{-70,-36},{-70,10},{48, + 10},{48,0},{60,0}}, color={255,0,255})); + connect(samTd.trigger, swi.u2) annotation (Line(points={{-30,-58},{-30,-42},{-56, + -42},{-56,10},{48,10},{48,0},{60,0}}, color={255,0,255})); + connect(responseProcess.On, relay.On) annotation (Line(points={{22,44},{26,44}, + {26,52},{58,52},{58,22},{43,22}}, color={255,0,255})); + connect(modTim.y, responseProcess.tim) annotation (Line(points={{58,70},{28,70}, + {28,56},{22,56}}, color={0,0,127})); + connect(responseProcess.tau, controlProcessModel.tau) annotation (Line( + points={{-1,50},{-12,50},{-12,42},{-18,42}}, color={0,0,127})); + connect(controlProcessModel.tOff, responseProcess.tOff) annotation (Line( + points={{-18,46},{-14,46},{-14,54},{-1,54}}, color={0,0,127})); + connect(responseProcess.tOn, controlProcessModel.tOn) annotation (Line(points= + {{-1,58},{-8,58},{-8,56},{-16,56},{-16,54},{-18,54}}, color={0,0,127})); + connect(relay.yErr, controlProcessModel.u) annotation (Line(points={{43,30},{50, + 30},{50,72},{-10,72},{-10,58},{-18,58}}, color={0,0,127})); + connect(pidParameters.kp, controlProcessModel.k) + annotation (Line(points={{-58,56},{-41,56}}, color={0,0,127})); + connect(pidParameters.T, controlProcessModel.T) + annotation (Line(points={{-58,50},{-41,50}}, color={0,0,127})); + connect(pidParameters.L, controlProcessModel.L) annotation (Line(points={{-58, + 44},{-44,44},{-44,42},{-41,42}}, color={0,0,127})); + connect(pidParameters.k, samk.u) annotation (Line(points={{-81,56},{-94,56},{-94, + -20},{-42,-20}}, color={0,0,127})); + connect(pidParameters.Ti, samTi.u) annotation (Line(points={{-81,50},{-88,50}, + {-88,-48},{-82,-48}}, color={0,0,127})); + connect(samTd.u, pidParameters.Td) annotation (Line(points={{-42,-70},{-48,-70}, + {-48,34},{-82,34},{-82,44},{-81,44}}, color={0,0,127})); + connect(piParameters.kp, controlProcessModel.k) annotation (Line(points={{-58, + 86},{-50,86},{-50,56},{-41,56}}, color={0,0,127})); + connect(piParameters.T, controlProcessModel.T) annotation (Line(points={{-58,80}, + {-52,80},{-52,50},{-41,50}}, color={0,0,127})); + connect(piParameters.L, controlProcessModel.L) annotation (Line(points={{-58,74}, + {-54,74},{-54,44},{-44,44},{-44,42},{-41,42}}, color={0,0,127})); + connect(piParameters.k, samk.u) annotation (Line(points={{-81,86},{-94,86},{-94, + -20},{-42,-20}}, color={0,0,127})); + connect(piParameters.Ti, samTi.u) annotation (Line(points={{-81,76},{-88,76},{ + -88,-48},{-82,-48}}, color={0,0,127})); + connect(responseProcess.triggerEnd, controlProcessModel.triggerEnd) + annotation (Line(points={{-1,42},{-8,42},{-8,32},{-36,32},{-36,38}}, color={ + 255,0,255})); + connect(responseProcess.triggerStart, controlProcessModel.triggerStart) + annotation (Line(points={{-1,46},{-10,46},{-10,34},{-24,34},{-24,38}}, + color={255,0,255})); +end PIDWithAutotuningAmigoFOTD; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Control.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Control.mo new file mode 100644 index 00000000000..8b0e3c46957 --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Control.mo @@ -0,0 +1,106 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay; +block Control + "Outputs a relay signal for tuning PID controllers" + parameter Real yHig(min=1E-6) = 1 + "Higher value for the output"; + parameter Real yLow(min=1E-6) = 0.5 + "Lower value for the output"; + parameter Real deaBan(min=1E-6) = 0.5 + "Deadband for holding the output value"; + Buildings.Controls.OBC.CDL.Interfaces.RealInput u_s + "Connector for the setpoint input signal" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}), + iconTransformation(extent={{-140,-20},{-100,20}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealInput u_m + "Connector for the measurement input signal" + annotation (Placement(transformation(origin={0,-120},extent={{20,-20},{-20,20}},rotation=270), + iconTransformation(extent={{20,-20},{-20,20}},rotation=270,origin={0,-120}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput y + "Relay control output signal" + annotation (Placement(transformation(extent={{100,50},{120,70}}))); + Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput On + "Relay switch signal" + annotation (Placement(transformation(extent={{100,-90},{120,-70}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput yErr "Control error signal" + annotation (Placement(transformation(extent={{100,-10},{120,10}}))); + Buildings.Controls.OBC.CDL.Logical.OnOffController greMeaSet(bandwidth=deaBan*2, pre_y_start=true) + "check if the measured value is larger than the reference" + annotation (Placement(transformation(extent={{-20,-10},{0,10}}))); + Buildings.Controls.OBC.CDL.Continuous.Switch swi + "Switch between a higher value and a lower value" + annotation (Placement(transformation(extent={{60,-10},{80,10}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant yHigSig(final k=yHig) + "Higher value for the output" + annotation (Placement(transformation(extent={{-40,40},{-20,60}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant yLowSig(final k=-yLow) + "Default temperature slope in case of zero division" + annotation (Placement(transformation(extent={{-40,-50},{-20,-30}}))); + + Buildings.Controls.OBC.CDL.Continuous.Subtract controlError + "Control error (set point - measurement)" + annotation (Placement(transformation(extent={{-76,10},{-56,30}}))); + +initial equation + assert( + yHig-yLow>1E-6, + "the absulte values of yHig should be different from that of yLow. Check parameters."); + +equation + connect(swi.y, y) + annotation (Line(points={{82,0},{88,0},{88,60},{110,60}}, + color={0,0,127})); + connect(greMeaSet.reference, u_s) + annotation (Line(points={{-22,6},{-40,6},{-40,0},{-120,0}}, + color={0,0,127})); + connect(greMeaSet.u, u_m) + annotation (Line(points={{-22,-6},{-64,-6},{-64,-94}, + {0,-94},{0,-120}}, color={0,0,127})); + connect(yHigSig.y, swi.u1) + annotation (Line(points={{-18,50},{50,50},{50,8},{58, + 8}}, color={0,0,127})); + connect(yLowSig.y, swi.u3) + annotation (Line(points={{-18,-40},{50,-40},{50,-8}, + {58,-8}}, color={0,0,127})); + connect(On, swi.u2) + annotation (Line(points={{110,-80},{52,-80},{52,0},{58,0}}, + color={255,0,255})); + connect(controlError.y, yErr) annotation (Line(points={{-54,20},{94,20},{94,0}, + {110,0}}, color={0,0,127})); + connect(greMeaSet.y, swi.u2) + annotation (Line(points={{2,0},{58,0}}, color={255,0,255})); + connect(controlError.u1, u_m) + annotation (Line(points={{-78,26},{-90,26},{-90, + -6},{-64,-6},{-64,-94},{0,-94},{0,-120}}, color={0,0,127})); + connect(controlError.u2, u_s) + annotation (Line(points={{-78,14},{-80,14},{-80, + 0},{-120,0}}, color={0,0,127})); + annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-148,154},{152,114}}, + textString="%name", + textColor={0,0,255})}), Diagram( + coordinateSystem(preserveAspectRatio=false)), + Documentation(info=" +

This block grenerates a relay feedback signal, as described below:

+

if e(t) > δ, then y(t) = yhig,

+

if e(t) < δ, then y(t) = -ylow,

+

otherwise, y(t) = y(t-Δt).

+

where e(t) = us(t) - um(t) is the control error, yhig and ylow are the higher value and the lower value of the output y, respectively.

+

y(t-Δt) is the output at the previous time step.

+

Note that this block generates a asymmetric signal, meaning yhig ≠ ylow

+

References

+

Josefin Berner (2017). "Automatic Controller Tuning using Relay-based Model Identification." Department of Automatic Control, Lund Institute of Technology, Lund University.

+", revisions=" +
    +
  • +June 1, 2022, by Sen Huang:
    +First implementation
    +
  • +
+")); +end Control; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo new file mode 100644 index 00000000000..615d36c383a --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo @@ -0,0 +1,177 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay; +block HalfPeriodRatio + "Calculates the half period ratio of a response from a relay controller" + Buildings.Controls.OBC.CDL.Interfaces.RealInput tOn + "Connector for a signal of the length for the On period" + annotation (Placement(transformation(extent={{-140,40},{-100,80}}), + iconTransformation(extent={{-140,40},{-100,80}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealInput tOff + "Connector for a signal of the length for the Off period" + annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), + iconTransformation(extent={{-140,-80},{-100,-40}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput rho + "Connector for a output signal of the half period ratio" + annotation (Placement(transformation(extent={{100,50},{120,70}}), + iconTransformation(extent={{100,50},{120,70}}))); + Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput triggerStart + "Relay tuning status, true if the tuning starts" annotation (Placement( + transformation(extent={{100,-10},{120,10}}), iconTransformation(extent={ + {100,-10},{120,10}}))); + Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput triggerEnd + "Relay tuning status, true if the tuning completes" annotation (Placement( + transformation(extent={{100,-70},{120,-50}}), iconTransformation(extent= + {{100,-70},{120,-50}}))); + Buildings.Controls.OBC.CDL.Continuous.Min tmin + "The minimum value of tOn and tOff" + annotation (Placement(transformation(extent={{-80,20},{-60,40}}))); + Buildings.Controls.OBC.CDL.Continuous.Greater gretOntOff + "Check if tOn*tOff*min(tOn*tOff) is larger than 0" + annotation (Placement(transformation(extent={{0,40},{20,20}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant minLen(final k=0) + "Minimum value for the horizon length" + annotation (Placement(transformation(extent={{-40,20},{-20,40}}))); + Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler tOnSample(y_start=Buildings.Controls.OBC.CDL.Constants.eps) + "Sampling tOn when the tuning period ends" + annotation (Placement(transformation(extent={{-80,60},{-60,80}}))); + Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler tOffSample(y_start=Buildings.Controls.OBC.CDL.Constants.eps) + "Sampling tOff when the tuning period ends" + annotation (Placement(transformation(extent={{-80,-60},{-60,-80}}))); + Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samAddtOntOff + "Sampling the tmin when tmin is larger than 0" + annotation (Placement(transformation(extent={{40,40},{60,20}}))); + Buildings.Controls.OBC.CDL.Continuous.Greater tIncrease + "Checking if either tOn or tOff increases after they both becomes positive" + annotation (Placement(transformation(extent={{40,-40},{60,-20}}))); + Buildings.Controls.OBC.CDL.Continuous.Min mintOntOff + "The smaller one between tOn and tOff" + annotation (Placement(transformation(extent={{-20,-80},{0,-60}}))); + Buildings.Controls.OBC.CDL.Continuous.Max maxtOntOff + "The larger one between tOn and tOff" + annotation (Placement(transformation(extent={{-20,60},{0,80}}))); + Buildings.Controls.OBC.CDL.Continuous.Divide halfPeriodRatioCal + "Calculating the half period ratio" + annotation (Placement(transformation(extent={{60,60},{80,80}}))); + Buildings.Controls.OBC.CDL.Continuous.Add AddtOntOff + "The sum of tOn and tOff" + annotation (Placement(transformation(extent={{-80,-40},{-60,-20}}))); + Buildings.Controls.OBC.CDL.Continuous.Multiply mul + "Detects if the tOn or tOff changes after both of them are larger than 0" + annotation (Placement(transformation(extent={{-40,-40},{-20,-20}}))); + Buildings.Controls.OBC.CDL.Continuous.Greater gretmaxtOntOff + "Check if either tOn or tOff is larger than 0" + annotation (Placement(transformation(extent={{0,10},{20,-10}}))); + Buildings.Controls.OBC.CDL.Continuous.Less tDecrease + "Checking if either tOn or tOff decreases after they both becomes positive" + annotation (Placement(transformation(extent={{40,-90},{60,-70}}))); + Buildings.Controls.OBC.CDL.Logical.Or tChanges + "Checks if tOn or tOff changes" + annotation (Placement(transformation(extent={{70,-40},{90,-20}}))); +equation + connect(tmin.u1, tOn) annotation (Line(points={{-82,36},{-94,36},{-94,60},{-120, + 60}}, color={0,0,127})); + connect(tmin.u2, tOff) annotation (Line(points={{-82,24},{-88,24},{-88,-46},{-94, + -46},{-94,-60},{-120,-60}}, + color={0,0,127})); + connect(minLen.y, gretOntOff.u2) annotation (Line(points={{-18,30},{-10,30},{ + -10,38},{-2,38}}, color={0,0,127})); + connect(tOnSample.u, tOn) + annotation (Line(points={{-82,70},{-94,70},{-94,60},{-120,60}}, + color={0,0,127})); + connect(tOffSample.u, tOff) annotation (Line(points={{-82,-70},{-92,-70},{-92, + -60},{-120,-60}}, + color={0,0,127})); + connect(tOnSample.trigger, tOffSample.trigger) annotation (Line(points={{-70,58}, + {-70,46},{-90,46},{-90,-52},{-70,-52},{-70,-58}}, + color={255,0,255})); + connect(samAddtOntOff.y, tIncrease.u2) annotation (Line(points={{62,30},{64, + 30},{64,-48},{28,-48},{28,-38},{38,-38}}, color={0,0,127})); + connect(gretOntOff.y, samAddtOntOff.trigger) annotation (Line(points={{22,30}, + {24,30},{24,46},{50,46},{50,42}}, color={255,0,255})); + connect(tOnSample.y, maxtOntOff.u1) annotation (Line(points={{-58,70},{-30,70}, + {-30,76},{-22,76}}, + color={0,0,127})); + connect(maxtOntOff.u2, tOffSample.y) annotation (Line(points={{-22,64},{-46,64}, + {-46,-70},{-58,-70}}, + color={0,0,127})); + connect(mintOntOff.u2, tOffSample.y) annotation (Line(points={{-22,-76},{-46,-76}, + {-46,-70},{-58,-70}}, + color={0,0,127})); + connect(mintOntOff.u1, maxtOntOff.u1) annotation (Line(points={{-22,-64},{-54, + -64},{-54,70},{-30,70},{-30,76},{-22,76}}, + color={0,0,127})); + connect(maxtOntOff.y, halfPeriodRatioCal.u1) annotation (Line(points={{2,70},{ + 52,70},{52,76},{58,76}}, color={0,0,127})); + connect(halfPeriodRatioCal.u2, mintOntOff.y) annotation (Line(points={{58,64}, + {32,64},{32,-34},{24,-34},{24,-70},{2,-70}}, color={0,0,127})); + connect(halfPeriodRatioCal.y, rho) annotation (Line(points={{82,70},{94,70},{94, + 60},{110,60}}, color={0,0,127})); + connect(triggerEnd, tOffSample.trigger) annotation (Line(points={{110,-60},{26, + -60},{26,-52},{-70,-52},{-70,-58}}, color={255,0,255})); + connect(AddtOntOff.u2, tOff) annotation (Line(points={{-82,-36},{-94,-36},{-94, + -60},{-120,-60}}, color={0,0,127})); + connect(samAddtOntOff.u, tIncrease.u1) annotation (Line(points={{38,30},{28, + 30},{28,-30},{38,-30}}, color={0,0,127})); + connect(tmin.y, mul.u1) annotation (Line(points={{-58,30},{-52,30},{-52,-24},{ + -42,-24}}, color={0,0,127})); + connect(AddtOntOff.u1, tOn) annotation (Line(points={{-82,-24},{-94,-24},{-94, + 60},{-120,60}}, color={0,0,127})); + connect(AddtOntOff.y, mul.u2) annotation (Line(points={{-58,-30},{-50,-30},{-50, + -36},{-42,-36}}, color={0,0,127})); + connect(mul.y, gretOntOff.u1) annotation (Line(points={{-18,-30},{-8,-30},{-8, + 30},{-2,30}}, color={0,0,127})); + connect(mul.y, tIncrease.u1) + annotation (Line(points={{-18,-30},{38,-30}}, color={0,0,127})); + connect(gretmaxtOntOff.y, triggerStart) + annotation (Line(points={{22,0},{110,0}}, color={255,0,255})); + connect(gretmaxtOntOff.u2, gretOntOff.u2) annotation (Line(points={{-2,8},{ + -16,8},{-16,30},{-10,30},{-10,38},{-2,38}}, color={0,0,127})); + connect(gretmaxtOntOff.u1, mul.u2) annotation (Line(points={{-2,0},{-50,0},{ + -50,-36},{-42,-36}}, color={0,0,127})); + connect(tDecrease.u1, tIncrease.u1) annotation (Line(points={{38,-80},{34,-80}, + {34,-30},{38,-30}}, color={0,0,127})); + connect(tDecrease.u2, tIncrease.u2) annotation (Line(points={{38,-88},{28,-88}, + {28,-38},{38,-38}}, color={0,0,127})); + connect(tChanges.u1, tIncrease.y) + annotation (Line(points={{68,-30},{62,-30}}, color={255,0,255})); + connect(tChanges.u2, tDecrease.y) + annotation (Line(points={{68,-38},{68,-80},{62,-80}}, color={255,0,255})); + connect(tChanges.y, tOffSample.trigger) annotation (Line(points={{92,-30},{92, + -60},{26,-60},{26,-52},{-70,-52},{-70,-58}}, color={255,0,255})); + annotation ( + Diagram( + coordinateSystem( + extent={{-100,-100},{100,100}})), + Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{80, + 100}}), graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-154,148},{146,108}}, + textString="%name", + textColor={0,0,255})}), + Documentation(revisions=" +
    +
  • +June 1, 2022, by Sen Huang:
    +First implementation
    +
  • +
+", info=" +

This block calculates the half-period ratio of the output from a relay controller, ρ, by

+

ρ = max(ton,toff)/ min(ton,toff)

+

where ton and ton are the length of the On period and the Off period, respectively.

+

During an On period, the relay output is at the higher value;

+

During an Off period, the relay output is at the lower value.

+

Note that only the first On period and the first Off period are considered.

+

References

+

+Josefin Berner (2017). +\"Automatic Controller Tuning using Relay-based Model Identification.\" +Department of Automatic Control, Lund Institute of Technology, Lund University. +

+"), + Diagram(coordinateSystem(extent={{-100,-100},{240,100}}))); +end HalfPeriodRatio; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/NormalizedTimeDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/NormalizedTimeDelay.mo new file mode 100644 index 00000000000..6562f783a61 --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/NormalizedTimeDelay.mo @@ -0,0 +1,85 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay; +block NormalizedTimeDelay + "Calculates the normalized time delay of a response from a relay controller" + parameter Real gamma(min=1+1E-6) = 4 + "Asymmetry level of the relay controller"; + Buildings.Controls.OBC.CDL.Interfaces.RealInput rho + "Connector for the half period ratio signal" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}), + iconTransformation(extent={{-140,-20},{-100,20}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput tau + "Connector for a output signal of the normalized time delay" + annotation (Placement(transformation(extent={{100,-10},{120,10}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant asymmetryLevel(k=gamma) + "Asymmetry level of the relay" + annotation (Placement(transformation(extent={{-80,40},{-60,60}}))); + Buildings.Controls.OBC.CDL.Continuous.Subtract subGammaRho "gamma-rho" + annotation (Placement(transformation(extent={{0,12},{20,32}}))); + Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai(k=0.35) + "gain for rho" + annotation (Placement(transformation(extent={{-80,-70},{-60,-50}}))); + Buildings.Controls.OBC.CDL.Continuous.Multiply mul + "(r-1)*(0.35*roh+0.65)" + annotation (Placement(transformation(extent={{0,-48},{20,-28}}))); + Buildings.Controls.OBC.CDL.Continuous.Divide div + "calculates tau" + annotation (Placement(transformation(extent={{40,-10},{60,10}}))); + Buildings.Controls.OBC.CDL.Continuous.AddParameter addPar2(p=0.65) + "rho*0.35+0.65" + annotation (Placement(transformation(extent={{-40,-70},{-20,-50}}))); + Buildings.Controls.OBC.CDL.Continuous.AddParameter addPar1(p=-1) + "gamma-1" + annotation (Placement(transformation(extent={{-40,-20},{-20,0}}))); +equation + assert( + gamma-rho>1E-6, + "the asymmetry level should be larger than the half period ratio. Check parameters."); + connect(subGammaRho.u1, asymmetryLevel.y) annotation (Line(points={{-2,28},{-20, + 28},{-20,50},{-58,50}}, color={0,0,127})); + connect(subGammaRho.u2, rho) annotation (Line(points={{-2,16},{-42,16},{-42, + 20},{-94,20},{-94,0},{-120,0}}, color={0,0,127})); + connect(gai.u, rho) annotation (Line(points={{-82,-60},{-94,-60},{-94,0},{-120, + 0}}, color={0,0,127})); + connect(div.u1, subGammaRho.y) + annotation (Line(points={{38,6},{30,6},{30,22},{22,22}}, color={0,0,127})); + connect(div.u2, mul.y) annotation (Line(points={{38,-6},{30,-6},{30,-38},{22,-38}}, + color={0,0,127})); + connect(div.y, tau) + annotation (Line(points={{62,0},{110,0}}, color={0,0,127})); + connect(gai.y, addPar2.u) + annotation (Line(points={{-58,-60},{-42,-60}}, color={0,0,127})); + connect(addPar2.y, mul.u2) annotation (Line(points={{-18,-60},{-10,-60},{-10,-44}, + {-2,-44}}, color={0,0,127})); + connect(addPar1.u, asymmetryLevel.y) annotation (Line(points={{-42,-10},{-52,-10}, + {-52,50},{-58,50}}, color={0,0,127})); + connect(addPar1.y, mul.u1) annotation (Line(points={{-18,-10},{-10,-10},{-10,-32}, + {-2,-32}}, color={0,0,127})); + annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-154,148},{146,108}}, + textString="%name", + textColor={0,0,255})}), Diagram(coordinateSystem(preserveAspectRatio=false)), + Documentation(revisions=" +
    +
  • +June 1, 2022, by Sen Huang:
    +First implementation
    +
  • +
+", info=" +

This block calculates the normalized time delay of the responses from a relay controller, τ, by

+

τ = (γ - ρ)/(γ - 1)/(ρ*0.35+0.65)

+

where γ and ρ are the asymmetry level of the relay controller and the half-period ratio, respectively.

+

References

+

+Josefin Berner (2017). +\"Automatic Controller Tuning using Relay-based Model Identification.\" +Department of Automatic Control, Lund Institute of Technology, Lund University. +

+")); +end NormalizedTimeDelay; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo new file mode 100644 index 00000000000..ef7956aa929 --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo @@ -0,0 +1,118 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay; +block OnOffPeriod + "Processes a relay signal to calculate the lengths of the On period and the Off period" + Buildings.Controls.OBC.CDL.Interfaces.BooleanInput On + "Connector for relay switch signal" annotation (Placement(transformation( + extent={{-140,-80},{-100,-40}}), iconTransformation(extent={{-140,-80}, + {-100,-40}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput tOff + "Connector for a Real output signal of the length for the Off period" + annotation (Placement(transformation(extent={{100,-50},{120,-30}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput tOn + "Connector for a output signal of the length for the On period" + annotation (Placement(transformation(extent={{100,30},{120,50}}))); + Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler timOn + "Simulation time when the input signal becomes On (True)" + annotation (Placement(transformation(extent={{-30,30},{-10,50}}))); + Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler timOff + "Simulation time when the input signal becomes Off (False)" + annotation (Placement(transformation(extent={{-30,-40},{-10,-20}}))); + Buildings.Controls.OBC.CDL.Logical.Not Off "Relay switch off" + annotation (Placement(transformation(extent={{-80,-80},{-60,-60}}))); + Buildings.Controls.OBC.CDL.Continuous.Subtract lenOffCal + "Calculating the horizon length for the Off period" + annotation (Placement(transformation(extent={{20,-40},{40,-20}}))); + Buildings.Controls.OBC.CDL.Continuous.Subtract lenOnCal + "Calculating the horizon length for the On period" + annotation (Placement(transformation(extent={{20,30},{40,50}}))); + Buildings.Controls.OBC.CDL.Continuous.Greater greTimOff + "Triggering the action to record the horizon length for the Off period" + annotation (Placement(transformation(extent={{40,-80},{60,-60}}))); + Buildings.Controls.OBC.CDL.Continuous.Greater greTimOn + "Triggering the action to record the horizon length for the On period" + annotation (Placement(transformation(extent={{40,60},{60,80}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant minLen(final k=0) + "Minimum value for the horizon length" + annotation (Placement(transformation(extent={{-80,60},{-60,80}}))); + Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler timOffRecord + "Recording the horizon length for the Off period" + annotation (Placement(transformation(extent={{60,-50},{80,-30}}))); + Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler timOnRecord + "Recording the horizon length for the On period" + annotation (Placement(transformation(extent={{60,50},{80,30}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealInput tim + "Connector for the input signal of the simulation time" + annotation (Placement(transformation(extent={{-140,40},{-100,80}}), + iconTransformation(extent={{-140,40},{-100,80}}))); + +equation + connect(Off.u, On) annotation (Line(points={{-82,-70},{-92,-70},{-92,-60},{ + -120,-60}}, color={255,0,255})); + connect(Off.y, timOff.trigger) annotation (Line(points={{-58,-70},{-20,-70},{-20, + -42}}, color={255,0,255})); + connect(timOn.trigger, On) annotation (Line(points={{-20,28},{-20,20},{-92,20}, + {-92,-60},{-120,-60}}, color={255,0,255})); + connect(lenOffCal.u1, timOn.y) annotation (Line(points={{18,-24},{8,-24},{8, + 34},{4,34},{4,40},{-8,40}}, + color={0,0,127})); + connect(lenOnCal.u2, timOn.y) + annotation (Line(points={{18,34},{4,34},{4,40},{-8,40}}, color={0,0,127})); + connect(lenOnCal.u1, timOff.y) annotation (Line(points={{18,46},{0,46},{0,-30}, + {-8,-30}}, color={0,0,127})); + connect(lenOffCal.u2, timOff.y) annotation (Line(points={{18,-36},{0,-36},{0,-30}, + {-8,-30}}, color={0,0,127})); + connect(minLen.y, greTimOn.u2) + annotation (Line(points={{-58,70},{-52,70},{-52,62},{38,62}}, + color={0,0,127})); + connect(lenOnCal.y, greTimOn.u1) annotation (Line(points={{42,40},{50,40},{50, + 56},{20,56},{20,70},{38,70}}, color={0,0,127})); + connect(greTimOff.u2, greTimOn.u2) annotation (Line(points={{38,-78},{-52,-78}, + {-52,62},{38,62}}, color={0,0,127})); + connect(lenOffCal.y, greTimOff.u1) annotation (Line(points={{42,-30},{48,-30}, + {48,-48},{20,-48},{20,-70},{38,-70}}, color={0,0,127})); + connect(greTimOff.y, timOffRecord.trigger) + annotation (Line(points={{62,-70},{70,-70},{70,-52}}, color={255,0,255})); + connect(timOffRecord.u, greTimOff.u1) annotation (Line(points={{58,-40},{54, + -40},{54,-48},{20,-48},{20,-70},{38,-70}}, + color={0,0,127})); + connect(greTimOn.y, timOnRecord.trigger) + annotation (Line(points={{62,70},{70,70},{70,52}}, color={255,0,255})); + connect(timOnRecord.u, greTimOn.u1) annotation (Line(points={{58,40},{50,40}, + {50,56},{20,56},{20,70},{38,70}},color={0,0,127})); + connect(timOn.u, tim) annotation (Line(points={{-32,40},{-92,40},{-92,60},{ + -120,60}}, color={0,0,127})); + connect(timOff.u, tim) annotation (Line(points={{-32,-30},{-94,-30},{-94,60}, + {-120,60}}, color={0,0,127})); + connect(timOnRecord.y, tOn) + annotation (Line(points={{82,40},{110,40}}, color={0,0,127})); + connect(timOffRecord.y, tOff) + annotation (Line(points={{82,-40},{110,-40}}, color={0,0,127})); + annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-154,148},{146,108}}, + textString="%name", + textColor={0,0,255})}), Diagram(coordinateSystem(preserveAspectRatio=false)), + Documentation(revisions=" +
    +
  • +June 1, 2022, by Sen Huang:
    +First implementation
    +
  • +
+", info=" +

This block processes a relay feedback signal and calculates

+

1) the length of the On period (when the relay switch signal becomes True);

+

2) the length of the Off period (when the relay switch signal becomes False).

+

References

+

+Josefin Berner (2017). +\"Automatic Controller Tuning using Relay-based Model Identification.\" +Department of Automatic Control, Lund Institute of Technology, Lund University. +

+")); +end OnOffPeriod; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo new file mode 100644 index 00000000000..99465cd852b --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo @@ -0,0 +1,93 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay; +block ResponseProcess + "Processes a relay signal to calculate the lengths of the On period and the Off period as well as the half period ratio" + parameter Real yHig = 1 + "Higher value for the output"; + parameter Real yLow = 0.5 + "Lower value for the output"; + Buildings.Controls.OBC.CDL.Interfaces.BooleanInput On + "Connector for relay switch signal" annotation (Placement(transformation( + extent={{-140,-80},{-100,-40}}), iconTransformation(extent={{-140,-80}, + {-100,-40}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealInput tim + "Connector for the input signal of the simulation time" + annotation (Placement(transformation(extent={{-140,40},{-100,80}}), + iconTransformation(extent={{-140,40},{-100,80}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput tOn + "Connector for a output signal of the length for the On period" + annotation (Placement(transformation(extent={{100,70},{120,90}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput tOff + "Connector for a Real output signal of the length for the Off period" + annotation (Placement(transformation(extent={{100,30},{120,50}}))); + Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput triggerStart + "Relay tuning status, true if the tuning starts" + annotation (Placement(transformation(extent={{100,-50},{120,-30}}))); + Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput triggerEnd + "Relay tuning status, true if the tuning ends" + annotation (Placement(transformation(extent={{100,-90},{120,-70}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput tau + "Connector for a output signal of the normalized time delay" + annotation (Placement(transformation(extent={{100,-10},{120,10}}))); + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.OnOffPeriod onOffPeriod + "Calculates the length of the On period and the Off period" + annotation (Placement(transformation(extent={{-60,0},{-40,20}}))); + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.HalfPeriodRatio halfPeriodRatio "Calculates the half period ratio" + annotation (Placement(transformation(extent={{0,0},{20,20}}))); + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.NormalizedTimeDelay normalizedTimeDelay(gamma=max( + yHig, yLow)/min(yLow, yHig)) + "calculates the normalized time delay" + annotation (Placement(transformation(extent={{40,0},{60,20}}))); + +equation + connect(onOffPeriod.On, On) annotation (Line(points={{-62,4},{-94,4},{-94,-60}, + {-120,-60}}, color={255,0,255})); + connect(onOffPeriod.tim, tim) annotation (Line(points={{-62,16},{-94,16},{-94, + 60},{-120,60}}, color={0,0,127})); + connect(onOffPeriod.tOn, halfPeriodRatio.tOn) + annotation (Line(points={{-39,14},{-20,14},{-20,16},{-2.22222,16}}, + color={0,0,127})); + connect(onOffPeriod.tOff, halfPeriodRatio.tOff) + annotation (Line(points={{-39,6},{-8,6},{-8,4},{-2.22222,4}}, + color={0,0,127})); + connect(halfPeriodRatio.rho, normalizedTimeDelay.rho) annotation (Line(points={{23.3333, + 16},{36,16},{36,10},{38,10}}, color={0,0,127})); + connect(tOn, halfPeriodRatio.tOn) annotation (Line(points={{110,80},{-20,80},{ + -20,16},{-2.22222,16}}, + color={0,0,127})); + connect(tOff, halfPeriodRatio.tOff) annotation (Line(points={{110,40},{-8,40}, + {-8,4},{-2.22222,4}}, + color={0,0,127})); + connect(normalizedTimeDelay.tau, tau) annotation (Line(points={{61,10},{94,10}, + {94,0},{110,0}}, color={0,0,127})); + connect(triggerEnd, halfPeriodRatio.triggerEnd) annotation (Line(points={{110,-80}, + {26,-80},{26,4},{23.3333,4}}, color={255,0,255})); + connect(triggerStart, halfPeriodRatio.triggerStart) annotation (Line(points={{110,-40}, + {34,-40},{34,10},{23.3333,10}}, color={255,0,255})); + annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-154,148},{146,108}}, + textString="%name", + textColor={0,0,255})}), Diagram(coordinateSystem(preserveAspectRatio=false)), + Documentation(revisions=" +
    +
  • +June 1, 2022, by Sen Huang:
    +First implementation
    +
  • +
+", info=" +

This block processes a relay feedback signal and calculates

+

1) the length of the On period (when the relay switch signal becomes True);

+

2) the length of the Off period (when the relay switch signal becomes False);

+

3) the normalized time delay of the responses;

+

4) the flag which indicates if the tuning completes.

+

For more details, please refer to Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.HalfPeriodRatio,

+

Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.NormalizedTimeDelay,

+

Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.OnOffPeriod.

+")); +end ResponseProcess; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Control.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Control.mo new file mode 100644 index 00000000000..e8cad158128 --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Control.mo @@ -0,0 +1,40 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation; +model Control "Test model for Control" + extends Modelica.Icons.Example; + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Control control( + yHig=1, + yLow=0.5, + deaBan=0.4) "A relay controller" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Sine sin(freqHz=2) "Measured value" + annotation (Placement(transformation(extent={{-60,-60},{-40,-40}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant const(k=0) "Setpoint" + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); +equation + connect(const.y, control.u_s) + annotation (Line(points={{-38,0},{-12,0}}, color={0,0,127})); + connect(sin.y, control.u_m) + annotation (Line(points={{-38,-50},{0,-50},{0,-12}}, color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Control.mos" "Simulate and plot"), + Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + coordinateSystem(preserveAspectRatio=false)), + Documentation(revisions=" +
    +
  • +June 1, 2022, by Sen Huang:
    +First implementation
    +
  • +
+", info=" +

+Validation test for the block + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Control. +

+")); +end Control; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mo new file mode 100644 index 00000000000..060d8e9a5d0 --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mo @@ -0,0 +1,48 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation; +model HalfPeriodRatio "Test model for HalfPeriodRatio" + extends Modelica.Icons.Example; + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.HalfPeriodRatio + halfPeriodRatio "Calculating the half period ratio" + annotation (Placement(transformation(extent={{-8,-10},{12,10}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable tOn( + table=[0,0; 0.1,1; 0.3,1; 0.7,1; 0.83,2; 0.85,6], + smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, + extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) + "The length of the On period" + annotation (Placement(transformation(extent={{-60,20},{-40,40}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable tOff( + table=[0,0; 0.1,0; 0.3,0; 0.7,3; 0.83,3; 0.85,3], + smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, + extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) + "The length of the Off period" + annotation (Placement(transformation(extent={{-60,-40},{-40,-20}}))); +equation + connect(tOn.y[1],halfPeriodRatio. tOn) annotation (Line(points={{-38,30},{-20, + 30},{-20,6},{-10.2222,6}}, + color={0,0,127})); + connect(tOff.y[1],halfPeriodRatio. tOff) annotation (Line(points={{-38,-30},{ + -20,-30},{-20,-6},{-10.2222,-6}}, + color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mos" "Simulate and plot"), + Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + coordinateSystem(preserveAspectRatio=false)), + Documentation(revisions=" +
    +
  • +June 1, 2022, by Sen Huang:
    +First implementation
    +
  • +
+", info=" +

+Validation test for the block + +Buildings.Controls.OBC.Utilities.ResponseProcess.Relay.HalfPeriodRatio. +

+")); +end HalfPeriodRatio; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mo new file mode 100644 index 00000000000..40e131bdf2b --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mo @@ -0,0 +1,41 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation; +model NormalizedTimeDelay "Test model for NormalizedTimeDelay" + extends Modelica.Icons.Example; + Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable rho( + table=[0,0; 0.1,0; 0.3,1; 0.7,1.5; 0.83,1.5; 0.85,2], + smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, + extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) + "The half period ratio" + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.NormalizedTimeDelay + normalizedTimeDelay(gamma=4) + annotation (Placement(transformation(extent={{-8,-10},{12,10}}))); + Modelica.Blocks.Sources.RealExpression reference(y=(normalizedTimeDelay.gamma + - rho.y[1])/(normalizedTimeDelay.gamma - 1)/(0.35*rho.y[1] + 0.65)) + annotation (Placement(transformation(extent={{-8,26},{12,46}}))); +equation + connect(rho.y[1], normalizedTimeDelay.rho) + annotation (Line(points={{-38,0},{-10,0}}, color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mos" "Simulate and plot"), + Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + coordinateSystem(preserveAspectRatio=false)), + Documentation(revisions=" +
    +
  • +June 1, 2022, by Sen Huang:
    +First implementation
    +
  • +
+", info=" +

+Validation test for the block + +Buildings.Controls.OBC.Utilities.BaseClasses.Relay.NormalizedTimeDelay. +

+")); +end NormalizedTimeDelay; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mo new file mode 100644 index 00000000000..2ef84635c3a --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mo @@ -0,0 +1,41 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation; +model OnOffPeriod "Test model for OnOffPeriod" + extends Modelica.Icons.Example; + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.OnOffPeriod + onOffPeriod "Calculating the length of the On period and the Off period" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + Buildings.Controls.OBC.CDL.Logical.Sources.TimeTable relayResponse( + table=[0,1;0.1,0; 0.3,0; 0.7,1; 0.83,0; 0.85,1], period=2) + "Mimicking the response for a relay controller" + annotation (Placement(transformation(extent={{-60,-20},{-40,0}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.ModelTime modTim + "Simulation time" + annotation (Placement(transformation(extent={{-60,10},{-40,30}}))); +equation + connect(onOffPeriod.On, relayResponse.y[1]) annotation (Line(points={{-12,-6}, + {-20,-6},{-20,-10},{-38,-10}}, color={255,0,255})); + connect(modTim.y, onOffPeriod.tim) annotation (Line(points={{-38,20},{-20,20}, + {-20,6},{-12,6}}, color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mos" "Simulate and plot"), + Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + coordinateSystem(preserveAspectRatio=false)), + Documentation(revisions=" +
    +
  • +June 1, 2022, by Sen Huang:
    +First implementation
    +
  • +
+", info=" +

+Validation test for the block + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.OnOffPeriod. +

+")); +end OnOffPeriod; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mo new file mode 100644 index 00000000000..42a0f4b3d9b --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mo @@ -0,0 +1,42 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation; +model ResponseProcess "Test model for ResponseProcess" + extends Modelica.Icons.Example; + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.ResponseProcess + responseProcess(yHig=1, yLow=0.2) + "Calculating the length of the On period and the Off period" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + Buildings.Controls.OBC.CDL.Logical.Sources.TimeTable relayResponse( + table=[0,1;0.1,0; 0.3,0; 0.7,1; 0.83,0; 0.85,1], period=2) + "Mimicking the response for a relay controller" + annotation (Placement(transformation(extent={{-60,-20},{-40,0}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.ModelTime modTim + "Simulation time" + annotation (Placement(transformation(extent={{-60,10},{-40,30}}))); +equation + connect(responseProcess.On, relayResponse.y[1]) annotation (Line(points={{-12, + -6},{-20,-6},{-20,-10},{-38,-10}}, color={255,0,255})); + connect(modTim.y, responseProcess.tim) annotation (Line(points={{-38,20},{-20, + 20},{-20,6},{-12,6}}, color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mos" "Simulate and plot"), + Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + coordinateSystem(preserveAspectRatio=false)), + Documentation(revisions=" +
    +
  • +June 1, 2022, by Sen Huang:
    +First implementation
    +
  • +
+", info=" +

+Validation test for the block + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.ResponseProcess. +

+")); +end ResponseProcess; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/package.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/package.mo new file mode 100644 index 00000000000..ef39b824875 --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/package.mo @@ -0,0 +1,32 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay; +package Validation "Collection of models that validate the blocks of the Relay" + annotation ( + preferredView="info", + Documentation( + info=" +

+This package contains models that validate the blocks in + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay. +

+"), + Icon( + graphics={ + Rectangle( + lineColor={200,200,200}, + fillColor={248,248,248}, + fillPattern=FillPattern.HorizontalCylinder, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Rectangle( + lineColor={128,128,128}, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Polygon( + origin={8.0,14.0}, + lineColor={78,138,73}, + fillColor={78,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-58.0,46.0},{42.0,-14.0},{-58.0,-74.0},{-58.0,46.0}})})); +end Validation; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/package.order new file mode 100644 index 00000000000..df20bbb9f85 --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/package.order @@ -0,0 +1,5 @@ +Control +HalfPeriodRatio +NormalizedTimeDelay +OnOffPeriod +ResponseProcess diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/package.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/package.mo new file mode 100644 index 00000000000..3cf264018eb --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/package.mo @@ -0,0 +1,6 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning; +package Relay "Package with blocks for a relay controller" +annotation (Documentation(info=" +

This package contains components related to a relay controller.

+")); +end Relay; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/package.order new file mode 100644 index 00000000000..988e3203b46 --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/package.order @@ -0,0 +1,6 @@ +Control +HalfPeriodRatio +NormalizedTimeDelay +OnOffPeriod +ResponseProcess +Validation diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo new file mode 100644 index 00000000000..9313b399328 --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo @@ -0,0 +1,145 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed; +block ControlProcessModel + "Identifies the parameters of a first order time delayed model for the control process" + parameter Real yHig= 1 + "Higher value for the output"; + parameter Real yLow= 0.5 + "Lower value for the output"; + parameter Real deaBan(min=0) = 0.5 + "Deadband for holding the output value"; + Buildings.Controls.OBC.CDL.Interfaces.RealInput u + "Connector for the response signal of a relay controller" + annotation (Placement(transformation(extent={{-140,60},{-100,100}}), + iconTransformation(extent={{-140,60},{-100,100}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealInput tOn + "Connector for a signal of the length for the On period" + annotation (Placement(transformation(extent={{-140,20},{-100,60}}), + iconTransformation(extent={{-140,20},{-100,60}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealInput tOff + "Connector for a signal of the length for the Off period" + annotation (Placement(transformation(extent={{-140,-60},{-100,-20}}), + iconTransformation(extent={{-140,-60},{-100,-20}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealInput tau + "Connector for the signal of normalized time delay" annotation (Placement( + transformation(extent={{-140,-100},{-100,-60}}), iconTransformation( + extent={{-140,-100},{-100,-60}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput k + "Connector for a output signal of the gain" + annotation (Placement(transformation(extent={{100,50},{120,70}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput T + "Connector for a output signal of the time constant" + annotation (Placement(transformation(extent={{100,-10},{120,10}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput L + "Connector for a output signal of the time constant" + annotation (Placement(transformation(extent={{100,-90},{120,-70}}))); + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Gain gain(yHig=yHig, yLow=yLow) "Calculates the gain" + annotation (Placement(transformation(extent={{-84,-10},{-64,10}}))); + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.TimeConstantDelay timeConstantDelay(yHig=yHig, yLow=yLow, + deaBan=deaBan) "Calculates the time constant and the time delay" + annotation (Placement(transformation(extent={{0,-10},{20,10}}))); + + CDL.Interfaces.BooleanInput triggerStart + "Relay tuning status, true if the tuning starts" annotation (Placement( + transformation( + extent={{-20,-20},{20,20}}, + rotation=90, + origin={-60,-120}))); + CDL.Interfaces.BooleanInput triggerEnd + "Relay tuning status, true if the tuning ends" annotation (Placement( + transformation( + extent={{-20,-20},{20,20}}, + rotation=90, + origin={60,-120}))); + CDL.Discrete.TriggeredSampler samT(y_start=1) + "Sampling k when the tuning period ends" + annotation (Placement(transformation(extent={{70,-10},{90,10}}))); + CDL.Discrete.TriggeredSampler samL(y_start=1) + "Sampling L when the tuning period ends" + annotation (Placement(transformation(extent={{44,-90},{64,-70}}))); + CDL.Discrete.TriggeredSampler samk(y_start=1) + "Sampling k when the tuning period ends" + annotation (Placement(transformation(extent={{-54,-10},{-34,10}}))); + CDL.Discrete.TriggeredSampler samtOn(y_start=1) + "Sampling tOn when the tuning period ends" + annotation (Placement(transformation(extent={{-70,30},{-50,50}}))); + CDL.Discrete.TriggeredSampler samtau(y_start=0.5) + "Sampling the normalized time delay" + annotation (Placement(transformation(extent={{-70,-70},{-50,-90}}))); + CDL.Continuous.MultiplyByParameter gai(k=-1) + annotation (Placement(transformation(extent={{-36,-90},{-16,-70}}))); + CDL.Continuous.AddParameter addPar(p=1) + annotation (Placement(transformation(extent={{-8,-90},{12,-70}}))); + CDL.Continuous.Divide div1 + annotation (Placement(transformation(extent={{12,-60},{32,-40}}))); +equation + connect(gain.u, u) annotation (Line(points={{-86,8},{-88,8},{-88,80},{-120,80}}, + color={0,0,127})); + connect(gain.tOn, tOn) annotation (Line(points={{-86,0},{-94,0},{-94,40},{ + -120,40}}, color={0,0,127})); + connect(gain.tOff, tOff) annotation (Line(points={{-86,-8},{-94,-8},{-94,-40}, + {-120,-40}}, color={0,0,127})); + connect(gain.triggerStart, triggerStart) annotation (Line(points={{-78,-12},{ + -78,-96},{-60,-96},{-60,-120}}, color={255,0,255})); + connect(timeConstantDelay.T, samT.u) + annotation (Line(points={{21,7},{60,7},{60,0},{68,0}}, color={0,0,127})); + connect(samT.y, T) + annotation (Line(points={{92,0},{110,0}}, color={0,0,127})); + connect(samT.trigger, triggerEnd) annotation (Line(points={{80,-12},{80,-92}, + {60,-92},{60,-120}}, color={255,0,255})); + connect(L, samL.y) + annotation (Line(points={{110,-80},{66,-80}}, color={0,0,127})); + connect(samL.u, timeConstantDelay.L) annotation (Line(points={{42,-80},{40, + -80},{40,-6},{21,-6}}, color={0,0,127})); + connect(samL.trigger, triggerEnd) annotation (Line(points={{54,-92},{54,-96}, + {60,-96},{60,-120}}, color={255,0,255})); + connect(samk.y, timeConstantDelay.k) + annotation (Line(points={{-32,0},{-2,0}}, color={0,0,127})); + connect(samk.trigger, triggerEnd) annotation (Line(points={{-44,-12},{-44,-96}, + {60,-96},{60,-120}}, color={255,0,255})); + connect(gain.k, samk.u) + annotation (Line(points={{-63,0},{-56,0}}, color={0,0,127})); + connect(samk.y, k) annotation (Line(points={{-32,0},{-20,0},{-20,60},{110,60}}, + color={0,0,127})); + connect(timeConstantDelay.tOn, samtOn.y) annotation (Line(points={{-2,6},{-28, + 6},{-28,40},{-48,40}}, color={0,0,127})); + connect(samtOn.u, tOn) + annotation (Line(points={{-72,40},{-120,40}}, color={0,0,127})); + connect(samtOn.trigger, triggerEnd) annotation (Line(points={{-60,28},{-60, + -34},{-44,-34},{-44,-96},{60,-96},{60,-120}}, color={255,0,255})); + connect(samtau.u, tau) + annotation (Line(points={{-72,-80},{-120,-80}}, color={0,0,127})); + connect(samtau.trigger, triggerEnd) annotation (Line(points={{-60,-68},{-60,-34}, + {-44,-34},{-44,-96},{60,-96},{60,-120}}, color={255,0,255})); + connect(gai.u, samtau.y) + annotation (Line(points={{-38,-80},{-48,-80}}, color={0,0,127})); + connect(gai.y, addPar.u) + annotation (Line(points={{-14,-80},{-10,-80}}, color={0,0,127})); + connect(addPar.y, div1.u2) annotation (Line(points={{14,-80},{20,-80},{20,-62}, + {4,-62},{4,-56},{10,-56}}, color={0,0,127})); + connect(div1.y, timeConstantDelay.ratioLT) annotation (Line(points={{34,-50}, + {34,-24},{-6,-24},{-6,-6},{-2,-6}}, color={0,0,127})); + connect(div1.u1, samtau.y) annotation (Line(points={{10,-44},{-40,-44},{-40, + -80},{-48,-80}}, color={0,0,127})); + annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-154,148},{146,108}}, + textString="%name", + textColor={0,0,255})}), Diagram(coordinateSystem(preserveAspectRatio=false)), + Documentation(revisions=" +
    +
  • +June 1, 2022, by Sen Huang:
    +First implementation
    +
  • +
+", info=" +

This block calculates the parameters of a first-order time-delayed model.

+

For more details, please refer to Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Gain,

+

Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.TimeConstantDelay.

+")); +end ControlProcessModel; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Gain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Gain.mo new file mode 100644 index 00000000000..bd3e37575ed --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Gain.mo @@ -0,0 +1,115 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed; +block Gain "Identifies the gain of a first order time delayed model" + parameter Real yHig(min=1E-6,max=1) = 1 + "Higher value for the output"; + parameter Real yLow(min=1E-6,max=1) = 0.5 + "Lower value for the output"; + Buildings.Controls.OBC.CDL.Interfaces.RealInput u + "Connector for the response signal of a relay controller" + annotation (Placement(transformation(extent={{-140,60},{-100,100}}), + iconTransformation(extent={{-140,60},{-100,100}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealInput tOn + "Connector for a signal of the length for the On period" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}), + iconTransformation(extent={{-140,-20},{-100,20}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealInput tOff + "Connector for a signal of the length for the Off period" + annotation (Placement(transformation(extent={{-140,-100},{-100,-60}}), + iconTransformation(extent={{-140,-100},{-100,-60}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput k + "Connector for a output signal of the gain" + annotation (Placement(transformation(extent={{100,-10},{120,10}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant highRealyOuput(k=yHig) + "Higher value for the output" + annotation (Placement(transformation(extent={{-80,20},{-60,40}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant lowRealyOuput(k=-yLow) + "Lower value for the output" + annotation (Placement(transformation(extent={{-80,-40},{-60,-20}}))); + Buildings.Controls.OBC.CDL.Continuous.Multiply mul2 "product of tOn and yHig" + annotation (Placement(transformation(extent={{-40,10},{-20,30}}))); + Buildings.Controls.OBC.CDL.Continuous.Multiply mul1 + "product of tOff and yLow" + annotation (Placement(transformation(extent={{-40,-60},{-20,-40}}))); + Buildings.Controls.OBC.CDL.Continuous.Add Iu + "the integral of the relay output" + annotation (Placement(transformation(extent={{6,-50},{26,-30}}))); + Buildings.Controls.OBC.CDL.Continuous.IntegratorWithReset Iy(k=1, + y_start=1E-11) + "the integral of the process output" + annotation (Placement(transformation(extent={{-40,70},{-20,90}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant referenceRelayOutpit(k=0) + "reference value of the relay control output" + annotation (Placement(transformation(extent={{-80,50},{-60,70}}))); + Buildings.Controls.OBC.CDL.Continuous.Divide divIyIu "calculates the gain" + annotation (Placement(transformation(extent={{32,-10},{52,10}}))); + CDL.Interfaces.BooleanInput triggerStart + "Relay tuning status, true if the tuning starts" annotation (Placement( + transformation( + extent={{-20,-20},{20,20}}, + rotation=90, + origin={-40,-120}))); + CDL.Continuous.AddParameter addPar(p=1E-11) + annotation (Placement(transformation(extent={{32,-50},{52,-30}}))); +equation + connect(mul2.y, Iu.u1) annotation (Line(points={{-18,20},{-8,20},{-8,-34},{4,-34}}, + color={0,0,127})); + connect(mul1.y, Iu.u2) annotation (Line(points={{-18,-50},{-8,-50},{-8,-46},{4, + -46}}, color={0,0,127})); + connect(Iy.u, u) annotation (Line(points={{-42,80},{-120,80}}, + color={0,0,127})); + connect(referenceRelayOutpit.y, Iy.y_reset_in) annotation (Line(points={{-58,60}, + {-52,60},{-52,72},{-42,72}}, color={0,0,127})); + connect(mul1.u2, tOff) annotation (Line(points={{-42,-56},{-80,-56},{-80,-80}, + {-120,-80}}, color={0,0,127})); + connect(mul1.u1, lowRealyOuput.y) annotation (Line(points={{-42,-44},{-52,-44}, + {-52,-30},{-58,-30}}, color={0,0,127})); + connect(highRealyOuput.y, mul2.u1) annotation (Line(points={{-58,30},{-52,30}, + {-52,26},{-42,26}}, color={0,0,127})); + connect(mul2.u2, tOn) annotation (Line(points={{-42,14},{-52,14},{-52,0},{-120,0}}, color={0,0,127})); + connect(Iy.trigger, triggerStart) annotation (Line(points={{-30,68},{-30,60},{ + -4,60},{-4,-96},{-40,-96},{-40,-120}}, color={255,0,255})); + connect(divIyIu.u1, Iy.y) annotation (Line(points={{30,6},{-2,6},{-2,80},{-18, + 80}}, color={0,0,127})); + connect(Iu.y, addPar.u) + annotation (Line(points={{28,-40},{30,-40}}, color={0,0,127})); + connect(addPar.y, divIyIu.u2) annotation (Line(points={{54,-40},{58,-40},{58,-20}, + {22,-20},{22,-6},{30,-6}}, color={0,0,127})); + connect(divIyIu.y, k) + annotation (Line(points={{54,0},{110,0}}, color={0,0,127})); + annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-154,148},{146,108}}, + textString="%name", + textColor={0,0,255})}), Diagram(coordinateSystem(preserveAspectRatio=false)), + Documentation(revisions=" +
    +
  • +June 1, 2022, by Sen Huang:
    +First implementation
    +
  • +
+", info=" +

This block calculates the gain of a first-order time-delayed model, k, by

+

k = Iy/Iu

+

where Iy and Iu are the integral of the process output and the integral of the relay output, respectively.

+

Iy is calculated by

+

Iy = ∫ u(t) dt;

+

where u is the process output.

+

Iu is calculated by

+

Iu = ton yhig + toff ylow;

+

where yhig and ylow are the higher value and the lower value of the relay control output, respectively.

+

ton and toff are the length of the On period and the Off period, respectively.

+

References

+

+Josefin Berner (2017). +\"Automatic Controller Tuning using Relay-based Model Identification.\" +Department of Automatic Control, Lund Institute of Technology, Lund University. +

+"), + __Dymola_Commands(file="../../123.mos" "123")); +end Gain; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/TimeConstantDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/TimeConstantDelay.mo new file mode 100644 index 00000000000..eb1febcb4ef --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/TimeConstantDelay.mo @@ -0,0 +1,158 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed; +block TimeConstantDelay + "Calculates the time constant and the time delay of a first order time delayed model" + parameter Real yHig(min=0,max=1) = 1 + "Higher value for the output"; + parameter Real yLow(min=0,max=1) = 0.5 + "Lower value for the output"; + parameter Real deaBan(min=0) = 0.5 + "Deadband for holding the output value"; + Buildings.Controls.OBC.CDL.Interfaces.RealInput tOn + "Connector for a signal of the length for the On period" + annotation (Placement(transformation(extent={{-140,40},{-100,80}}), + iconTransformation(extent={{-140,40},{-100,80}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealInput k + "Connector for the signal of the gain" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}), + iconTransformation(extent={{-140,-20},{-100,20}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealInput ratioLT + "Connector for the signal of the ratio between the time constant and the time delay of a first order time delay model" + annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), + iconTransformation(extent={{-140,-80},{-100,-40}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput T + "Connector for a output signal of the time constant" + annotation (Placement(transformation(extent={{100,60},{120,80}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput L + "Connector for a output signal of the time constant" + annotation (Placement(transformation(extent={{100,-70},{120,-50}}))); + Buildings.Controls.OBC.CDL.Continuous.Abs absk "Absoulte value of the gain" + annotation (Placement(transformation(extent={{-80,-20},{-60,0}}))); + Buildings.Controls.OBC.CDL.Continuous.Exp exp + "exponential value of the ratio between time constant and the time delay" + annotation (Placement(transformation(extent={{-80,-60},{-60,-40}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant yHigSig(k=yHig) + "Higher value for the output" + annotation (Placement(transformation(extent={{-80,30},{-60,50}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant yLowSig(k=yLow) + "Lower value for the output" + annotation (Placement(transformation(extent={{-40,30},{-20,50}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant relayDeaBan(k=deaBan) + "Dead band of the relay controller" + annotation (Placement(transformation(extent={{0,30},{20,50}}))); + Buildings.Controls.OBC.CDL.Continuous.Divide div1 + "Quotient of dead band Divided by the absolute value of k" + annotation (Placement(transformation(extent={{0,-30},{20,-10}}))); + Buildings.Controls.OBC.CDL.Continuous.Subtract sub2 + "Quotient of dead band Divided by the absolute value of k minus yLow" + annotation (Placement(transformation(extent={{30,-50},{50,-30}}))); + Buildings.Controls.OBC.CDL.Continuous.Add add2 "Sum of yHig and yLow" + annotation (Placement(transformation(extent={{40,0},{60,20}}))); + Buildings.Controls.OBC.CDL.Continuous.Multiply mul1 + "exp(L/T)(yHig + yLow)" + annotation (Placement(transformation(extent={{60,30},{80,50}}))); + Buildings.Controls.OBC.CDL.Continuous.Add add1 + "h/|k|-yLow+exp(L/T)(yHig + yLow)" + annotation (Placement(transformation(extent={{60,-40},{80,-20}}))); + Buildings.Controls.OBC.CDL.Continuous.Subtract sub1 "yHig - deaBan/exp(L/T)" + annotation (Placement(transformation(extent={{20,-80},{40,-60}}))); + Buildings.Controls.OBC.CDL.Continuous.Divide div2 + "(h/|k|-yLow+exp(L/T)(yHig + yLow))/(yHig-h/|k|)" + annotation (Placement(transformation(extent={{60,-78},{80,-58}}))); + Buildings.Controls.OBC.CDL.Continuous.Log log + "the natural logarithm of (h/|k|-yLow+exp(L/T)(yHig + yLow))/(yHig-h/|k|)" + annotation (Placement(transformation(extent={{-20,-100},{-40,-80}}))); + Buildings.Controls.OBC.CDL.Continuous.Divide div3 + "Calculates the time constant" + annotation (Placement(transformation(extent={{-40,60},{-20,80}}))); + + Buildings.Controls.OBC.CDL.Continuous.Multiply mul2 + "Calculates the time delay" + annotation (Placement(transformation(extent={{0,74},{20,94}}))); +equation +// assert( +// abs(k)>1E-12, +// "the absulte values of k should be larger than 0. Check inputs."); + connect(absk.u, k) + annotation (Line(points={{-82,-10},{-92,-10},{-92,0},{-120,0}}, + color={0,0,127})); + connect(ratioLT, exp.u) + annotation (Line(points={{-120,-60},{-90,-60},{-90,-50},{-82,-50}}, + color={0,0,127})); + connect(relayDeaBan.y, div1.u1) annotation (Line(points={{22,40},{28,40},{28,2}, + {-4,2},{-4,-14},{-2,-14}}, color={0,0,127})); + connect(sub2.u1, div1.y) annotation (Line(points={{28,-34},{26,-34},{26,-20},{ + 22,-20}}, color={0,0,127})); + connect(sub2.u2, yLowSig.y) annotation (Line(points={{28,-46},{-12,-46},{-12,40}, + {-18,40}}, color={0,0,127})); + connect(yHigSig.y, add2.u1) annotation (Line(points={{-58,40},{-52,40},{-52,16}, + {38,16}}, color={0,0,127})); + connect(add2.u2, yLowSig.y) annotation (Line(points={{38,4},{-12,4},{-12,40},{ + -18,40}}, color={0,0,127})); + connect(add2.y, mul1.u2) annotation (Line(points={{62,10},{72,10},{72,24},{54, + 24},{54,34},{58,34}}, color={0,0,127})); + connect(exp.y, mul1.u1) annotation (Line(points={{-58,-50},{-6,-50},{-6,60},{54, + 60},{54,46},{58,46}}, color={0,0,127})); + connect(sub2.y, add1.u2) annotation (Line(points={{52,-40},{54,-40},{54,-36},{ + 58,-36}}, color={0,0,127})); + connect(add1.u1, mul1.y) annotation (Line(points={{58,-24},{52,-24},{52,-6},{86, + -6},{86,40},{82,40}}, color={0,0,127})); + connect(sub1.u1, add2.u1) annotation (Line(points={{18,-64},{-52,-64},{-52,16}, + {38,16}}, color={0,0,127})); + connect(sub1.y, div2.u2) annotation (Line(points={{42,-70},{48,-70},{48,-74}, + {58,-74}}, color={0,0,127})); + connect(div2.u1, add1.y) annotation (Line(points={{58,-62},{54,-62},{54,-48},{ + 84,-48},{84,-30},{82,-30}}, color={0,0,127})); + connect(tOn, div3.u1) annotation (Line(points={{-120,60},{-80,60},{-80,76},{ + -42,76}}, color={0,0,127})); + connect(div3.u2, log.y) annotation (Line(points={{-42,64},{-46,64},{-46,-90},{ + -42,-90}}, color={0,0,127})); + connect(div3.y, T) annotation (Line(points={{-18,70},{110,70}}, + color={0,0,127})); + connect(mul2.u2, T) annotation (Line(points={{-2,78},{-12,78},{-12,70},{110,70}}, + color={0,0,127})); + connect(mul2.u1, exp.u) annotation (Line(points={{-2,90},{-90,90},{-90,-50},{-82, + -50}}, color={0,0,127})); + connect(mul2.y, L) annotation (Line(points={{22,84},{90,84},{90,-60},{110,-60}}, + color={0,0,127})); + connect(sub1.u2, div1.y) annotation (Line(points={{18,-76},{10,-76},{10,-34}, + {26,-34},{26,-20},{22,-20}},color={0,0,127})); + connect(log.u, div2.y) annotation (Line(points={{-18,-90},{86,-90},{86,-68},{ + 82,-68}}, color={0,0,127})); + connect(absk.y, div1.u2) annotation (Line(points={{-58,-10},{-20,-10},{-20, + -26},{-2,-26}}, color={0,0,127})); + annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-154,148},{146,108}}, + textString="%name", + textColor={0,0,255})}), Diagram(coordinateSystem(preserveAspectRatio=false)), + Documentation(revisions=" +
    +
  • +June 1, 2022, by Sen Huang:
    +First implementation
    +
  • +
+", info=" +

This block calculates the time constant and the time delay of a first-order time-delayed model

+

The time constant, T, is calculated by

+

T = ton/(ln((δ/|k|-yLow+exp(τ)(yHig + yLow))/(yHig-δ/|k|)))

+

where yhig and ylow are the higher value and the lower value of the relay control output, respectively,

+

ton is the length of the On period,

+

δ is the dead band of a relay controller,

+

k is the gain of the first-order time-delayed model.

+

τ is the normalized time delay.

+

The time delay, L, is calculated by

+

L = T τ

+

References

+

+Josefin Berner (2015). +\"Automatic Tuning of PID Controllers based on Asymmetric Relay Feedback.\" +Department of Automatic Control, Lund Institute of Technology, Lund University. +

+")); +end TimeConstantDelay; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo new file mode 100644 index 00000000000..db05212301c --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo @@ -0,0 +1,83 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation; +model ControlProcessModel "Test model for ControlProcessModel" + extends Modelica.Icons.Example; + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.ControlProcessModel + controlProcessModel(yLow=0.1) + "Calculates the parameters of the system model for the control process" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + CDL.Continuous.Sources.TimeTable tOn( + table=[0,1; 0.1,1; 0.3,1; 0.7,1; 0.83,1; 0.85,2], + smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, + extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) + "The length of the On period" + annotation (Placement(transformation(extent={{-60,20},{-40,40}}))); + CDL.Continuous.Sources.TimeTable ratioLT( + table=[0,0.3; 0.1,0.5; 0.3,0.1; 0.7,0.5; 0.83,0.8; 0.85,0.5], + smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, + extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) + "The ratio between the time constant and the time delay of a first order time delay model" + annotation (Placement(transformation(extent={{-60,-40},{-40,-20}}))); + Modelica.Blocks.Sources.RealExpression referenceT(y=tOn.y[1]/log(max((0.5/max( + abs(controlProcessModel.k), 1E-11) - 0.1 + exp(ratioLT.y[1])*(1 + 0.1)) + /(1 - 0.5/max(abs(controlProcessModel.k), 1E-11)), 1E-11))) + "Reference value for the time constant" + annotation (Placement(transformation(extent={{-10,48},{10,68}}))); + Modelica.Blocks.Sources.RealExpression referenceL(y=ratioLT.y[1]*referenceT.y) + "Reference value for the time delay" + annotation (Placement(transformation(extent={{-10,30},{10,50}}))); + CDL.Continuous.Sources.TimeTable u( + table=[0,1; 0.1,0.5; 0.3,0.5; 0.7,0.5; 0.83,1; 0.85,1], + smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, + extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) + "The response of a relay controller" + annotation (Placement(transformation(extent={{-60,50},{-40,70}}))); + CDL.Continuous.Sources.TimeTable tOff( + table=[0,1; 0.1,1; 0.3,1; 0.7,3; 0.83,3; 0.85,3], + smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, + extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) + "The length of the Off period" + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + CDL.Logical.Sources.TimeTable tuningStart(table=[0,0; 0.1,0; 0.3,1; 0.7,1; + 0.83,1; 0.85,1], period=2) + "Mimicking the signal for the tuning period start" + annotation (Placement(transformation(extent={{-60,-80},{-40,-60}}))); + CDL.Logical.Sources.TimeTable tuningEnd(table=[0,0; 0.1,0; 0.3,0; 0.7,1; 0.83, + 1; 0.85,1], period=2) "Mimicking the signal for the tuning period end" + annotation (Placement(transformation(extent={{-20,-80},{0,-60}}))); +equation + connect(tOn.y[1], controlProcessModel.tOn) annotation (Line(points={{-38,30},{ + -20,30},{-20,4},{-12,4}}, color={0,0,127})); + connect(ratioLT.y[1], controlProcessModel.ratioLT) annotation (Line(points={{-38, + -30},{-20,-30},{-20,-8},{-12,-8}}, color={0,0,127})); + connect(u.y[1], controlProcessModel.u) annotation (Line(points={{-38,60},{-16, + 60},{-16,8},{-12,8}}, color={0,0,127})); + connect(tOff.y[1], controlProcessModel.tOff) annotation (Line(points={{-38,0}, + {-20,0},{-20,-4},{-12,-4}}, color={0,0,127})); + connect(tuningStart.y[1], controlProcessModel.triggerStart) annotation (Line( + points={{-38,-70},{-30,-70},{-30,-38},{-6,-38},{-6,-12}}, color={255,0, + 255})); + connect(controlProcessModel.triggerEnd, tuningEnd.y[1]) + annotation (Line(points={{6,-12},{6,-70},{2,-70}}, color={255,0,255})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mos" "Simulate and plot"), + Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + coordinateSystem(preserveAspectRatio=false)), + Documentation(revisions=" +
    +
  • +June 1, 2022, by Sen Huang:
    +First implementation
    +
  • +
+", info=" +

+Validation test for the block + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.ControlProcessModel. +

+")); +end ControlProcessModel; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mo new file mode 100644 index 00000000000..f040fe2048b --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mo @@ -0,0 +1,65 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation; +model Gain "Test model for Gain" + extends Modelica.Icons.Example; + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Gain + gain "Calculates the gain" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable tOn( + table=[0,0; 0.1,0.1; 0.3,0.1; 0.7,0.1; 0.83,0.1; 0.9,0.07], + smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, + extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) + "The length of the On period" + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable tOff( + table=[0,0; 0.1,0; 0.3,0; 0.7,0; 0.83,0.73; 0.85,0.73], + smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, + extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) + "The length of the Off period" + annotation (Placement(transformation(extent={{-60,-50},{-40,-30}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable u( + table=[0,1; 0.1,0.5; 0.3,0.5; 0.7,0.5; 0.83,1; 0.9,0.5], + smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, + extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) + "The response of a relay controller" + annotation (Placement(transformation(extent={{-60,30},{-40,50}}))); + CDL.Logical.Sources.TimeTable tuningStart(table=[0,0; 0.1,1; 0.3,1; 0.7,1; + 0.83,1; 0.85,1], period=2) + "Mimicking the signal for the tuning period start" + annotation (Placement(transformation(extent={{-60,-80},{-40,-60}}))); + CDL.Logical.Sources.TimeTable tuningEnd(table=[0,0; 0.1,0; 0.3,0; 0.7,0; 0.83, + 0; 0.9,1], period=2) "Mimicking the signal for the tuning period end" + annotation (Placement(transformation(extent={{-20,-80},{0,-60}}))); +equation + connect(tOn.y[1], gain.tOn) + annotation (Line(points={{-38,0},{-12,0}}, color={0,0,127})); + connect(gain.tOff, tOff.y[1]) annotation (Line(points={{-12,-8},{-20,-8},{-20, + -40},{-38,-40}}, color={0,0,127})); + connect(u.y[1], gain.u) annotation (Line(points={{-38,40},{-20,40},{-20,8},{-12, + 8}}, color={0,0,127})); + connect(tuningEnd.y[1], gain.triggerEnds) annotation (Line(points={{2,-70},{ + 20,-70},{20,-20},{4,-20},{4,-12}}, color={255,0,255})); + connect(gain.triggerStart, tuningStart.y[1]) annotation (Line(points={{-4,-12}, + {-6,-12},{-6,-48},{-36,-48},{-36,-70},{-38,-70}}, color={255,0,255})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mos" "Simulate and plot"), + Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + coordinateSystem(preserveAspectRatio=false)), + Documentation(revisions=" +
    +
  • +June 1, 2022, by Sen Huang:
    +First implementation
    +
  • +
+", info=" +

+Validation test for the block + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Gain. +

+")); +end Gain; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mo new file mode 100644 index 00000000000..8fb6ba2ab55 --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mo @@ -0,0 +1,62 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation; +model TimeConstantDelay "Test model for TimeConstantDelay" + extends Modelica.Icons.Example; + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.TimeConstantDelay + timeConstantDelay(yLow=0.1) + "Calculates the time constant and the time delay" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + CDL.Continuous.Sources.TimeTable tOn( + table=[0,1; 0.1,1; 0.3,1; 0.7,1; 0.83,1; 0.85,2], + smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, + extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) + "The length of the On period" + annotation (Placement(transformation(extent={{-60,20},{-40,40}}))); + CDL.Continuous.Sources.TimeTable k( + table=[0,1; 0.1,1; 0.3,1; 0.7,1; 0.83,1], + smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, + extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) + "Gain of a first order time delay model" + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + CDL.Continuous.Sources.TimeTable ratioLT( + table=[0,0.3; 0.1,0.5; 0.3,0.1; 0.7,0.5; 0.83,0.8; 0.85,0.5], + smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, + extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) + "The ratio between the time constant and the time delay of a first order time delay model" + annotation (Placement(transformation(extent={{-60,-40},{-40,-20}}))); + Modelica.Blocks.Sources.RealExpression referenceT(y=tOn.y[1]/log((0.5/abs(k.y[ + 1]) - 0.1 + exp(ratioLT.y[1])*(1 + 0.1))/(1 - 0.5/abs(k.y[1])))) + "Reference value for the time constant" + annotation (Placement(transformation(extent={{-10,48},{10,68}}))); + Modelica.Blocks.Sources.RealExpression referenceL(y=ratioLT.y[1]*referenceT.y) + "Reference value for the time delay" + annotation (Placement(transformation(extent={{-10,30},{10,50}}))); +equation + connect(tOn.y[1], timeConstantDelay.tOn) annotation (Line(points={{-38,30},{-20, + 30},{-20,6},{-12,6}}, color={0,0,127})); + connect(k.y[1], timeConstantDelay.k) + annotation (Line(points={{-38,0},{-12,0}}, color={0,0,127})); + connect(ratioLT.y[1], timeConstantDelay.ratioLT) annotation (Line(points={{-38, + -30},{-20,-30},{-20,-6},{-12,-6}}, color={0,0,127})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mos" "Simulate and plot"), + Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + coordinateSystem(preserveAspectRatio=false)), + Documentation(revisions=" +
    +
  • +June 1, 2022, by Sen Huang:
    +First implementation
    +
  • +
+", info=" +

+Validation test for the block + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.TimeConstantDelay. +

+")); +end TimeConstantDelay; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/package.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/package.mo new file mode 100644 index 00000000000..dba3b46c501 --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/package.mo @@ -0,0 +1,32 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed; +package Validation "Collection of models that validate the blocks in the FirstOrderTimedelayed" + annotation ( + preferredView="info", + Documentation( + info=" +

+This package contains models that validate the blocks in + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning. +

+"), + Icon( + graphics={ + Rectangle( + lineColor={200,200,200}, + fillColor={248,248,248}, + fillPattern=FillPattern.HorizontalCylinder, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Rectangle( + lineColor={128,128,128}, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Polygon( + origin={8.0,14.0}, + lineColor={78,138,73}, + fillColor={78,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-58.0,46.0},{42.0,-14.0},{-58.0,-74.0},{-58.0,46.0}})})); +end Validation; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/package.order new file mode 100644 index 00000000000..154973c2ec2 --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/package.order @@ -0,0 +1,3 @@ +Gain +TimeConstantDelay +ControlProcessModel diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/package.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/package.mo new file mode 100644 index 00000000000..c944b1881c4 --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/package.mo @@ -0,0 +1,6 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification; +package FirstOrderTimedelayed "Package with components related to a first-order time-delayed model" +annotation (Documentation(info=" +

This package contains the blocks to identify the parameters of a first-order time-delayed model.

+")); +end FirstOrderTimedelayed; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/package.order new file mode 100644 index 00000000000..8b38a2a56a5 --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/package.order @@ -0,0 +1,4 @@ +Gain +TimeConstantDelay +ControlProcessModel +Validation diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/Validation/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/Validation/package.order new file mode 100644 index 00000000000..e69de29bb2d diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/package.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/package.mo new file mode 100644 index 00000000000..afb305262e1 --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/package.mo @@ -0,0 +1,6 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning; +package SystemIdentification "Package with blocks for identifying a system model of control process" +annotation (Documentation(info=" +

This package contains components related to system identification for the control process.

+")); +end SystemIdentification; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/package.order new file mode 100644 index 00000000000..c39c5a24b14 --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/package.order @@ -0,0 +1 @@ +FirstOrderTimedelayed diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithAutotuningAmigoFOTD.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithAutotuningAmigoFOTD.mo new file mode 100644 index 00000000000..824ce7fcbed --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithAutotuningAmigoFOTD.mo @@ -0,0 +1,101 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation; +model PIDWithAutotuningAmigoFOTD "Test model for PIDWithAutotuning" + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant Setpoint(k=0.8) + "Setpoint value" + annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); + .Buildings.Controls.OBC.Utilities.PIDWithAutotuning.PIDWithAutotuningAmigoFOTD + PIDWitAutotuning(controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PI) + "PID controller with an autotuning feature" + annotation (Placement(transformation(extent={{-20,-30},{0,-10}}))); + Buildings.Controls.OBC.CDL.Continuous.PIDWithReset PID( + controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PI, + k=1, + Ti=0.5, + Td=0.1) + "PID controller with constant gains" + annotation (Placement(transformation(extent={{0,20},{20,40}}))); + CDL.Logical.Sources.Constant resSig(k=false) + "Reset signal" + annotation (Placement(transformation(extent={{-80,40},{-60,60}}))); + + Modelica.Blocks.Continuous.FirstOrder ControlProcess2(T=10, initType=Modelica.Blocks.Types.Init.InitialOutput) + "Control Process 2" + annotation (Placement(transformation(extent={{60,-30},{80,-10}}))); + Modelica.Blocks.Continuous.FirstOrder ControlProcess1( + k=1, + T=10, + initType=Modelica.Blocks.Types.Init.InitialOutput, + y_start=0) "Control process 1" + annotation (Placement(transformation(extent={{60,20},{80,40}}))); + Modelica.Blocks.Discrete.UnitDelay unitDelay(samplePeriod=240) + annotation (Placement(transformation(extent={{20,-30},{40,-10}}))); + Modelica.Blocks.Discrete.UnitDelay unitDelay1(samplePeriod=240) + annotation (Placement(transformation(extent={{32,20},{52,40}}))); +equation + connect(resSig.y, PID.trigger) annotation (Line(points={{-58,50},{-20,50},{ + -20,12},{4,12},{4,18}}, + color={255,0,255})); + connect(PIDWitAutotuning.trigger, PID.trigger) annotation (Line(points={{-16,-32}, + {-16,-38},{-40,-38},{-40,6},{4,6},{4,18}},color={255,0,255})); + connect(PIDWitAutotuning.u_s, PID.u_s) annotation (Line(points={{-22,-20},{-32, + -20},{-32,10},{-14,10},{-14,30},{-2,30}}, + color={0,0,127})); + connect(Setpoint.y, PID.u_s) annotation (Line(points={{-58,10},{-14,10},{-14,30}, + {-2,30}}, color={0,0,127})); + connect(ControlProcess2.y, PIDWitAutotuning.u_m) annotation (Line(points={{81,-20}, + {86,-20},{86,-38},{-10,-38},{-10,-32}}, color={0,0,127})); + connect(PID.u_m, ControlProcess1.y) annotation (Line(points={{10,18},{10,0},{86, + 0},{86,30},{81,30}}, color={0,0,127})); + connect(PIDWitAutotuning.y, unitDelay.u) + annotation (Line(points={{2,-20},{18,-20}}, color={0,0,127})); + connect(unitDelay.y, ControlProcess2.u) + annotation (Line(points={{41,-20},{58,-20}}, color={0,0,127})); + connect(ControlProcess1.u, unitDelay1.y) + annotation (Line(points={{58,30},{53,30}}, color={0,0,127})); + connect(unitDelay1.u, PID.y) + annotation (Line(points={{30,30},{22,30}}, color={0,0,127})); + annotation ( + experiment( + StopTime=10000, + Tolerance=1e-06, + __Dymola_Algorithm="Cvode"), + __Dymola_Commands( + file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/Validation/PIDWithInputGains.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +Buildings.Controls.OBC.Utilities.PIDWithInputGains. +

+

+For t ∈ [0, 0.6] both PID controllers have the same gains. +During this time, they generate the same output. +Afterwards, the gains, and hence also their outputs, differ. + +Buildings.Controls.OBC.CDL.Continuous.PIDWithReset. +

+", + revisions=" +
    +
  • +May 17, 2022, by Sen Huang:
    +First implementation. +
  • +
+"), + Icon(coordinateSystem(extent={{-100,-80},{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(extent={{-100,-80},{100,100}}))); +end PIDWithAutotuningAmigoFOTD; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/package.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/package.mo new file mode 100644 index 00000000000..5273d429079 --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/package.mo @@ -0,0 +1,37 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning; +package Validation "Collection of models that validate the SetPoints blocks of the CDL" + annotation ( + preferredView="info", + Documentation( + info=" +

+This package contains models that validate the blocks in + +Buildings.Controls.OBC.Utilities.SetPoints. +

+

+The examples plot various outputs, which have been verified against +analytical solutions. These model outputs are stored as reference data to +allow continuous validation whenever models in the library change. +

+"), + Icon( + graphics={ + Rectangle( + lineColor={200,200,200}, + fillColor={248,248,248}, + fillPattern=FillPattern.HorizontalCylinder, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Rectangle( + lineColor={128,128,128}, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Polygon( + origin={8.0,14.0}, + lineColor={78,138,73}, + fillColor={78,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-58.0,46.0},{42.0,-14.0},{-58.0,-74.0},{-58.0,46.0}})})); +end Validation; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/package.order new file mode 100644 index 00000000000..81216eca4de --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/package.order @@ -0,0 +1 @@ +PIDWithAutotuningAmigoFOTD diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/package.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/package.mo new file mode 100644 index 00000000000..5fc990777e7 --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/package.mo @@ -0,0 +1,44 @@ +within Buildings.Controls.OBC.Utilities; +package PIDWithAutotuning "Package with blocks for PID autotuning" + annotation ( + preferredView="info", + Documentation( + info=" +

This package contains components models to perform automatic tunnings on PID controllers.

+"), + Icon( + graphics={ + Rectangle( + lineColor={200,200,200}, + fillColor={248,248,248}, + fillPattern=FillPattern.HorizontalCylinder, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Rectangle( + lineColor={128,128,128}, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Ellipse( + origin={10.0,10.0}, + fillColor={76,76,76}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + extent={{-80.0,-80.0},{-20.0,-20.0}}), + Ellipse( + origin={10.0,10.0}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + extent={{0.0,-80.0},{60.0,-20.0}}), + Ellipse( + origin={10.0,10.0}, + fillColor={128,128,128}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + extent={{0.0,0.0},{60.0,60.0}}), + Ellipse( + origin={10.0,10.0}, + lineColor={128,128,128}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-80.0,0.0},{-20.0,60.0}})})); +end PIDWithAutotuning; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/package.order new file mode 100644 index 00000000000..a6ea399cdf5 --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/package.order @@ -0,0 +1,6 @@ +Relay +SystemIdentification +AutoTuner +Validation +BaseClasses +PIDWithAutotuningAmigoFOTD diff --git a/Buildings/Controls/OBC/Utilities/package.order b/Buildings/Controls/OBC/Utilities/package.order index b77eda14782..1eccc346d78 100644 --- a/Buildings/Controls/OBC/Utilities/package.order +++ b/Buildings/Controls/OBC/Utilities/package.order @@ -1,5 +1,6 @@ OptimalStart PIDWithInputGains SetPoints +PIDWithAutotuning Validation BaseClasses diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/BaseClasses/Validation/Relay.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/BaseClasses/Validation/Relay.mos deleted file mode 100644 index 17e19c95c2a..00000000000 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/BaseClasses/Validation/Relay.mos +++ /dev/null @@ -1,6 +0,0 @@ -simulateModel("Buildings.Controls.OBC.Utilities.BaseClasses.Validation.Relay", method="Cvode", tolerance=1e-06, stopTime=1.0, resultFile="Relay"); -createPlot(id=1, position={75, 75, 1484, 920}, y={"relay.u_m"}, range={0.0, 1.0, -1.5, 1.5}, grid=true, subPlot=101, colors={{28,108,200}}); -plotExpression(apply(Relay[end].relay.u_s-0.4), false, "Relay[end].relay.u_s-deaBan", 1); -plotExpression(apply(Relay[end].relay.u_s+0.4), false, "Relay[end].relay.u_s+deaBan", 1); -createPlot(id=1, position={75, 75, 1484, 920}, y={"relay.y"}, range={0.0, 1.0, -1.0, 1.5}, grid=true, subPlot=102, colors={{28,108,200}}); - diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/BaseClasses/Validation/RelayHalfPeriodRatio.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/BaseClasses/Validation/RelayHalfPeriodRatio.mos deleted file mode 100644 index 08352d5c6a7..00000000000 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/BaseClasses/Validation/RelayHalfPeriodRatio.mos +++ /dev/null @@ -1,4 +0,0 @@ -simulateModel("Buildings.Controls.OBC.Utilities.BaseClasses.Validation.RelayHalfPeriodRatio", method="Cvode", tolerance=1e-06, resultFile="RelayHalfPeriodRatio"); -createPlot(id=1, position={15, 15, 1742, 1559}, y={"relayHalfPeriodRatio.tOn", "relayHalfPeriodRatio.tOff"}, range={0.0, 1.0, -0.5, 3.5}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={15, 15, 1742, 1559}, y={"relayHalfPeriodRatio.halfPeriodRatio"}, range={0.0, 1.0, 0.9500000000000001, 1.5500000000000003}, grid=true, subPlot=102, colors={{28,108,200}}); - diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/BaseClasses/Validation/RelayProcess.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/BaseClasses/Validation/RelayProcess.mos deleted file mode 100644 index 9ead7296ead..00000000000 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/BaseClasses/Validation/RelayProcess.mos +++ /dev/null @@ -1,4 +0,0 @@ -simulateModel("Buildings.Controls.OBC.Utilities.BaseClasses.Validation.RelayProcess", method="Cvode", tolerance=1e-06, resultFile="RelayProcess"); -createPlot(id=1, position={35, 35, 1688, 1527}, y={"relayPrcoess.On"}, range={0.0, 1.0, -0.1, 1.1}, grid=true, subPlot=101, colors={{28,108,200}}); -createPlot(id=1, position={35, 35, 1688, 1527}, y={"relayPrcoess.tOn", "relayPrcoess.tOff"}, range={0.0, 1.0, -0.1, 0.7000000000000001}, grid=true, subPlot=102, colors={{238,46,47}, {28,108,200}}); - diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PI.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PI.mos new file mode 100644 index 00000000000..b6d2c523719 --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PI.mos @@ -0,0 +1,4 @@ +simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Validation.PI", method="Cvode", tolerance=1e-06, resultFile="PI"); +createPlot(id=1, position={95, 95, 1484, 920}, y={"pI.k", "referencek.y"}, range={0.0, 1.0, 0.15000000000000002, 0.4}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={95, 95, 1484, 920}, y={"pI.Ti", "referenceTi.y"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); + diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PID.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PID.mos new file mode 100644 index 00000000000..0fe4f5adfd0 --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PID.mos @@ -0,0 +1,5 @@ +simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Validation.PID", method="Cvode", tolerance=1e-06, resultFile="PID"); +createPlot(id=1, position={75, 75, 1488, 1095}, y={"pID.k", "referencek.y"}, range={0.0, 1.0, 0.4, 1.2000000000000002}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={75, 75, 1488, 1095}, y={"pID.Ti", "referenceTi.y"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={75, 75, 1488, 1095}, y={"pID.Td", "referenceTd.y"}, range={0.0, 1.0, 0.1, 0.30000000000000004}, grid=true, subPlot=103, colors={{28,108,200}, {238,46,47}}); + diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIDDerivativeTime.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIDDerivativeTime.mos new file mode 100644 index 00000000000..00a05597977 --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIDDerivativeTime.mos @@ -0,0 +1,4 @@ +simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Validation.PIDDerivativeTime", method="Cvode", tolerance=1e-06, resultFile="PIDDerivativeTime"); +createPlot(id=1, position={35, 35, 1484, 920}, y={"T.y", "L.y"}, range={0.0, 1.0, 0.2, 1.2}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={35, 35, 1484, 920}, y={"pIDDerivativeTime.Td"}, range={0.0, 1.0, 0.10000000000000002, 0.30000000000000004}, grid=true, subPlot=102, colors={{238,46,47}}); + diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIDGain.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIDGain.mos new file mode 100644 index 00000000000..8778361aa17 --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIDGain.mos @@ -0,0 +1,4 @@ +simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Validation.PIDGain", method="Cvode", tolerance=1e-06, resultFile="PIDGain"); +createPlot(id=1, position={15, 15, 1484, 920}, y={"kp.y", "T.y", "L.y"}, range={0.0, 1.0, 0.0, 2.5}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}, {0,140,72}}); +createPlot(id=1, position={15, 15, 1484, 920}, y={"pIDGain.k", "referencek.y"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); + diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIDIntegralTime.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIDIntegralTime.mos new file mode 100644 index 00000000000..28ab18a119c --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIDIntegralTime.mos @@ -0,0 +1,4 @@ +simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Validation.PIDIntegralTime", method="Cvode", tolerance=1e-06, resultFile="PIDIntegralTime"); +createPlot(id=1, position={75, 75, 1484, 920}, y={"T.y", "L.y"}, range={0.0, 1.0, 0.2, 1.2}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={75, 75, 1484, 920}, y={"pIDIntegralTime.Ti", "referenceTi.y"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); + diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIGain.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIGain.mos new file mode 100644 index 00000000000..8d4cf68eddd --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIGain.mos @@ -0,0 +1,4 @@ +simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Validation.PIGain", method="Cvode", tolerance=1e-06, resultFile="PIGain"); +createPlot(id=1, position={35, 35, 1484, 920}, y={"pIGain.kp", "pIGain.T", "pIGain.L"}, range={0.0, 1.0, 0.0, 2.5}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}, {0,140,72}}); +createPlot(id=1, position={35, 35, 1484, 920}, y={"pIGain.k", "referencek.y"}, range={0.0, 1.0, 0.15000000000000002, 0.35000000000000003}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); + diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIIntegralTime.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIIntegralTime.mos new file mode 100644 index 00000000000..54eaee74a2a --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIIntegralTime.mos @@ -0,0 +1,4 @@ +simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Validation.PIIntegralTime", method="Cvode", tolerance=1e-06, resultFile="PIIntegralTime"); +createPlot(id=1, position={95, 95, 1484, 920}, y={"T.y", "L.y"}, range={0.0, 1.0, 0.2, 1.2}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={95, 95, 1484, 920}, y={"pIIntegralTime.Ti", "referenceTi.y"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); + diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Control.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Control.mos new file mode 100644 index 00000000000..144b1c2a7a3 --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Control.mos @@ -0,0 +1,6 @@ +simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.Control", method="Cvode", tolerance=1e-06, stopTime=1.0, resultFile="Control"); +createPlot(id=1, position={75, 75, 1484, 920}, y={"control.u_m"}, range={0.0, 1.0, -1.5, 1.5}, grid=true, subPlot=101, colors={{28,108,200}}); +plotExpression(apply(Control[end].control.u_s-0.4), false, "Control[end].control.u_s-deaBan", 1); +plotExpression(apply(Control[end].control.u_s+0.4), false, "Control[end].control.u_s+deaBan", 1); +createPlot(id=1, position={75, 75, 1484, 920}, y={"control.y"}, range={0.0, 1.0, -1.0, 1.5}, grid=true, subPlot=102, colors={{28,108,200}}); + diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mos new file mode 100644 index 00000000000..19b66e3fa08 --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mos @@ -0,0 +1,4 @@ +simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.HalfPeriodRatio", method="Cvode", tolerance=1e-06, resultFile="HalfPeriodRatio"); +createPlot(id=1, position={15, 15, 1742, 1559}, y={"halfPeriodRatio.tOn", "halfPeriodRatio.tOff"}, range={0.0, 1.0, -0.5, 3.5}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={15, 15, 1742, 1559}, y={"halfPeriodRatio.rho"}, range={0.0, 1.0, 0.9500000000000001, 1.5500000000000003}, grid=true, subPlot=102, colors={{28,108,200}}); + diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mos new file mode 100644 index 00000000000..eebfa7a75bd --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mos @@ -0,0 +1,5 @@ +simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.NormalizedTimeDelay", method="Cvode", tolerance=1e-06, resultFile="NormalizedTimeDelay"); +createPlot(id=1, position={75, 75, 1484, 920}, y={"rho.y[1]"}, range={0.0, 1.0, -0.5, 2.5}, grid=true, subPlot=101, colors={{28,108,200}}); +createPlot(id=1, position={95, 95, 1484, 920}, y={"normalizedTimeDelay.tau", "reference.y"}, range={0.0, 1.0, 0.0, 2.5}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); + + diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mos new file mode 100644 index 00000000000..c3da8001103 --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mos @@ -0,0 +1,4 @@ +simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.OnOffPeriod", method="Cvode", tolerance=1e-06, resultFile="OnOffPeriod"); +createPlot(id=1, position={35, 35, 1688, 1527}, y={"onOffPeriod.On"}, range={0.0, 1.0, -0.1, 1.1}, grid=true, subPlot=101, colors={{28,108,200}}); +createPlot(id=1, position={35, 35, 1688, 1527}, y={"onOffPeriod.tOn", "onOffPeriod.tOff"}, range={0.0, 1.0, -0.1, 0.7000000000000001}, grid=true, subPlot=102, colors={{238,46,47}, {28,108,200}}); + diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mos new file mode 100644 index 00000000000..20210a713d7 --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mos @@ -0,0 +1,6 @@ +simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.ResponseProcess", method="Cvode", tolerance=1e-06, resultFile="ResponseProcess"); +createPlot(id=1, position={75, 75, 1869, 1435}, y={"relayResponse.y[1]"}, range={0.0, 1.0, -0.5, 1.5}, grid=true, subPlot=101, colors={{28,108,200}}); +createPlot(id=1, position={75, 75, 1869, 1435}, y={"responseProcess.tOn", "responseProcess.tOff"}, range={0.0, 1.0, -0.5, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={75, 75, 1869, 1435}, y={"responseProcess.triggerEnd","responseProcess.triggerStart"}, range={0.0, 1.0, -0.5, 1.5}, grid=true, subPlot=103, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={75, 75, 1869, 1435}, y={"responseProcess.tau"}, range={0.0, 1.0, 0.0, 1.5}, grid=true, subPlot=104, colors={{28,108,200}}); + diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mos new file mode 100644 index 00000000000..d392458cf97 --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mos @@ -0,0 +1,4 @@ +simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation.ControlProcessModel", method="Cvode", tolerance=1e-06, resultFile="ControlProcessModel"); +createPlot(id=1, position={95, 95, 1484, 920}, y={"controlProcessModel.T", "referenceT.y"}, range={0.0, 1.0, 0.6000000000000001, 1.2000000000000002}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={95, 95, 1484, 920}, y={"controlProcessModel.L", "referenceL.y"}, range={0.0, 1.0, 0.0, 0.6000000000000001}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); + diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mos new file mode 100644 index 00000000000..25e10bc6dff --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mos @@ -0,0 +1,5 @@ +simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation.Gain", method="Cvode", tolerance=1e-06, resultFile="Gain"); +createPlot(id=1, position={55, 55, 1753, 1433}, y={"u.y[1]"}, range={0.0, 1.0, 0.4, 1.2000000000000002}, grid=true, subPlot=101, colors={{28,108,200}}); +createPlot(id=1, position={55, 55, 1753, 1433}, y={"tOn.y[1]", "tOff.y[1]"}, range={0.0, 1.0, -0.5, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={55, 55, 1753, 1433}, y={"tuningStart.y[1]", "tuningEnd.y[1]"}, range={0.0, 1.0, -0.5, 1.5}, grid=true, subPlot=103, colors={{28,108,200}, {28,108,200}}); +createPlot(id=1, position={55, 55, 1753, 1433}, y={"gain.k"}, range={0.0, 1.0, -0.5, 1.5}, grid=true, subPlot=104, colors={{28,108,200}}); diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mos new file mode 100644 index 00000000000..e27f388ff68 --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mos @@ -0,0 +1,4 @@ +simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation.TimeConstantDelay", method="Cvode", tolerance=1e-06, resultFile="TimeConstantDelay"); +createPlot(id=1, position={35, 35, 1484, 920}, y={"timeConstantDelay.T", "referenceT.y"}, range={0.0, 1.0, 0.4, 1.6}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={35, 35, 1484, 920}, y={"timeConstantDelay.L", "referenceL.y"}, range={0.0, 1.0, 0.0, 0.8}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); + From af3a06edfbd2ecd6901a1dbddd65e2230ea320ec Mon Sep 17 00:00:00 2001 From: Huang Date: Fri, 10 Jun 2022 11:10:42 -0700 Subject: [PATCH 009/214] clean up and add documentation --- .../BaseClasses/PIDWithRelay.mo | 39 ++++++- .../PIDWithAutotuningAmigoFOTD.mo | 34 ++++-- .../PIDWithAutotuning/Relay/Control.mo | 4 +- .../PIDWithAutotuning/Relay/OnOffPeriod.mo | 4 +- .../ControlProcessModel.mo | 24 ++-- .../FirstOrderTimedelayed/Gain.mo | 10 +- .../TimeConstantDelay.mo | 18 ++- .../Validation/ControlProcessModel.mo | 28 ++--- .../FirstOrderTimedelayed/Validation/Gain.mo | 9 +- .../Validation/PIDWithAutotuningAmigoFOTD.mo | 83 +++++++------- .../Validation/PIWithAutotuningAmigoFOTD.mo | 105 ++++++++++++++++++ .../Validation/package.order | 1 + .../Validation/ControlProcessModel.mos | 6 +- .../Validation/PIDWithAutotuningAmigoFOTD.mos | 5 + .../PIWithAutotuningAmigoFOTD - Copy.mos | 5 + 15 files changed, 264 insertions(+), 111 deletions(-) create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD.mo create mode 100644 Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithAutotuningAmigoFOTD.mos create mode 100644 Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD - Copy.mos diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/BaseClasses/PIDWithRelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/BaseClasses/PIDWithRelay.mo index ede974bf1c9..39924f927ef 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/BaseClasses/PIDWithRelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/BaseClasses/PIDWithRelay.mo @@ -19,6 +19,12 @@ partial block PIDWithRelay min=100*Buildings.Controls.OBC.CDL.Constants.eps)=0.1 "Start value of the time constant of derivative block" annotation (Dialog(group="Control gains",enable=controllerType == CDL.Types.SimpleController.PD or controllerType == CDL.Types.SimpleController.PID)); + parameter Real yHig(min=1E-6) = 1 + "Higher value for the output"; + parameter Real yLow(min=1E-6) = 0.5 + "Lower value for the output"; + parameter Real deaBan(min=1E-6) = 0.5 + "Deadband for holding the output value"; Buildings.Controls.OBC.CDL.Interfaces.RealInput u_s "Connector for setpoint input signal" annotation (Placement(transformation(extent={{-140,-20},{-100,20}}),iconTransformation(extent={{-140,-20},{-100,20}}))); @@ -32,13 +38,13 @@ partial block PIDWithRelay "Connector for actuator output signal" annotation (Placement(transformation(extent={{100,-20},{140,20}}),iconTransformation(extent={{100,-20},{140,20}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Control relay( - yHig=1, - yLow=0.1, - deaBan=0.2) + yHig=yHig, + yLow=yLow, + deaBan=deaBan) "A relay controller" annotation (Placement(transformation(extent={{22,20},{42,40}}))); Buildings.Controls.OBC.Utilities.PIDWithInputGains pid( - controllerType=controllerType) + controllerType=controllerType) "A pid controller" annotation (Placement(transformation(extent={{22,-40},{42,-20}}))); Buildings.Controls.OBC.CDL.Continuous.Switch swi "Switch between a PID controller and a relay controller" @@ -104,10 +110,31 @@ First implementation
", info="

-This blocks is designed as a generic form for implementing automatic tuning methods for PID controllers, +This blocks is designed as a generic form for implementing automatic tuning methods for PID controllers.

-based on response from a relay controller. +It consists of a PID controller and a relay controller. +

+

+There is also a switcher that determines the output of which controller is used as the output signal. +

+

+When the simulation starts, the output from the relay contoller is used to excite the system. +

+

+When the output of the relay controllers switches from On to Off or from Off to On, +

+

+the tuning process begins. +

+

+Then after the output of the relay controllers switches twice, +

+

+the tuning process ends. +

+

+When the tuning process ends, the parameters of the PID control change and its output becomes the output signal.

")); end PIDWithRelay; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/PIDWithAutotuningAmigoFOTD.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/PIDWithAutotuningAmigoFOTD.mo index b08dca63f99..08a6b714c32 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/PIDWithAutotuningAmigoFOTD.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/PIDWithAutotuningAmigoFOTD.mo @@ -2,23 +2,29 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning; block PIDWithAutotuningAmigoFOTD "A autotuning PID controller with an Amigo tuner and a first order time delayed system model" extends - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.BaseClasses.PIDWithRelay( + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.BaseClasses.PIDWithRelay( relay( - yHig=1, - yLow=0.1, deaBan=0.1)); + yHig=yHig, + yLow=yLow, + deaBan=deaBan)); + parameter Real setPoint(min=1E-6) = 0.8 + "Setpoint used for PID tuning"; Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.ControlProcessModel controlProcessModel( - yHig=0.2, - yLow=0.9, - deaBan=0.1) + yHig=yHig - setPoint, + yLow=setPoint + yLow, + deaBan=deaBan) + "A block to approximate the control process" annotation (Placement(transformation(extent={{-20,40},{-40,60}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PI piParameters - if not with_D + if not with_D "A block to calculates the parameters of a PI controller" annotation (Placement(transformation(extent={{-60,70},{-80,90}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PID pidParameters - if with_D annotation (Placement(transformation(extent={{-60,40},{-80,60}}))); - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.ResponseProcess responseProcess(yHig=0.2, - yLow=0.9) + if with_D "A block to calculates the parameters of a PID controller" + annotation (Placement(transformation(extent={{-60,40},{-80,60}}))); + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.ResponseProcess responseProcess(yHig=yHig + - setPoint, yLow=setPoint + yLow) + "A block to process the response from the relay controller" annotation (Placement(transformation(extent={{20,40},{0,60}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.ModelTime modTim "Simulation time" @@ -72,4 +78,12 @@ equation connect(responseProcess.triggerStart, controlProcessModel.triggerStart) annotation (Line(points={{-1,46},{-10,46},{-10,34},{-24,34},{-24,38}}, color={255,0,255})); + annotation (Documentation(info=" +

+This blocks implements a AMIGO PID tuning method and the control process is approximated with a first order delay process. +

+

+Noted that this block can only support a PI controller or a PID controller. +

+")); end PIDWithAutotuningAmigoFOTD; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Control.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Control.mo index 8b0e3c46957..0088321f5f1 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Control.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Control.mo @@ -21,7 +21,8 @@ block Control Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput On "Relay switch signal" annotation (Placement(transformation(extent={{100,-90},{120,-70}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealOutput yErr "Control error signal" + Buildings.Controls.OBC.CDL.Interfaces.RealOutput yErr + "Control error signal" annotation (Placement(transformation(extent={{100,-10},{120,10}}))); Buildings.Controls.OBC.CDL.Logical.OnOffController greMeaSet(bandwidth=deaBan*2, pre_y_start=true) "check if the measured value is larger than the reference" @@ -35,7 +36,6 @@ block Control Buildings.Controls.OBC.CDL.Continuous.Sources.Constant yLowSig(final k=-yLow) "Default temperature slope in case of zero division" annotation (Placement(transformation(extent={{-40,-50},{-20,-30}}))); - Buildings.Controls.OBC.CDL.Continuous.Subtract controlError "Control error (set point - measurement)" annotation (Placement(transformation(extent={{-76,10},{-56,30}}))); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo index ef7956aa929..9fb2500db1f 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo @@ -81,8 +81,8 @@ equation {50,56},{20,56},{20,70},{38,70}},color={0,0,127})); connect(timOn.u, tim) annotation (Line(points={{-32,40},{-92,40},{-92,60},{ -120,60}}, color={0,0,127})); - connect(timOff.u, tim) annotation (Line(points={{-32,-30},{-94,-30},{-94,60}, - {-120,60}}, color={0,0,127})); + connect(timOff.u, tim) annotation (Line(points={{-32,-30},{-76,-30},{-76,40}, + {-92,40},{-92,60},{-120,60}}, color={0,0,127})); connect(timOnRecord.y, tOn) annotation (Line(points={{82,40},{110,40}}, color={0,0,127})); connect(timOffRecord.y, tOff) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo index 9313b399328..f85e77ac836 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo @@ -1,9 +1,9 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed; block ControlProcessModel "Identifies the parameters of a first order time delayed model for the control process" - parameter Real yHig= 1 + parameter Real yHig(min=1E-6) = 1 "Higher value for the output"; - parameter Real yLow= 0.5 + parameter Real yLow(min=1E-6) = 0.5 "Lower value for the output"; parameter Real deaBan(min=0) = 0.5 "Deadband for holding the output value"; @@ -65,11 +65,11 @@ block ControlProcessModel CDL.Discrete.TriggeredSampler samtau(y_start=0.5) "Sampling the normalized time delay" annotation (Placement(transformation(extent={{-70,-70},{-50,-90}}))); - CDL.Continuous.MultiplyByParameter gai(k=-1) + CDL.Continuous.MultiplyByParameter gai(k=-1) "Product of tau and -1" annotation (Placement(transformation(extent={{-36,-90},{-16,-70}}))); - CDL.Continuous.AddParameter addPar(p=1) + CDL.Continuous.AddParameter addPar(p=1) "1- tau" annotation (Placement(transformation(extent={{-8,-90},{12,-70}}))); - CDL.Continuous.Divide div1 + CDL.Continuous.Divide div "tau/(1- tau)" annotation (Placement(transformation(extent={{12,-60},{32,-40}}))); equation connect(gain.u, u) annotation (Line(points={{-86,8},{-88,8},{-88,80},{-120,80}}, @@ -78,8 +78,8 @@ equation -120,40}}, color={0,0,127})); connect(gain.tOff, tOff) annotation (Line(points={{-86,-8},{-94,-8},{-94,-40}, {-120,-40}}, color={0,0,127})); - connect(gain.triggerStart, triggerStart) annotation (Line(points={{-78,-12},{ - -78,-96},{-60,-96},{-60,-120}}, color={255,0,255})); + connect(gain.triggerStart, triggerStart) annotation (Line(points={{-74,-12},{-74, + -96},{-60,-96},{-60,-120}}, color={255,0,255})); connect(timeConstantDelay.T, samT.u) annotation (Line(points={{21,7},{60,7},{60,0},{68,0}}, color={0,0,127})); connect(samT.y, T) @@ -114,12 +114,12 @@ equation annotation (Line(points={{-38,-80},{-48,-80}}, color={0,0,127})); connect(gai.y, addPar.u) annotation (Line(points={{-14,-80},{-10,-80}}, color={0,0,127})); - connect(addPar.y, div1.u2) annotation (Line(points={{14,-80},{20,-80},{20,-62}, + connect(addPar.y, div.u2) annotation (Line(points={{14,-80},{20,-80},{20,-62}, {4,-62},{4,-56},{10,-56}}, color={0,0,127})); - connect(div1.y, timeConstantDelay.ratioLT) annotation (Line(points={{34,-50}, - {34,-24},{-6,-24},{-6,-6},{-2,-6}}, color={0,0,127})); - connect(div1.u1, samtau.y) annotation (Line(points={{10,-44},{-40,-44},{-40, - -80},{-48,-80}}, color={0,0,127})); + connect(div.y, timeConstantDelay.ratioLT) annotation (Line(points={{34,-50},{ + 34,-24},{-6,-24},{-6,-6},{-2,-6}}, color={0,0,127})); + connect(div.u1, samtau.y) annotation (Line(points={{10,-44},{-40,-44},{-40,-80}, + {-48,-80}}, color={0,0,127})); annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-100,-100},{100,100}}, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Gain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Gain.mo index bd3e37575ed..afe07e1cee0 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Gain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Gain.mo @@ -1,8 +1,8 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed; block Gain "Identifies the gain of a first order time delayed model" - parameter Real yHig(min=1E-6,max=1) = 1 + parameter Real yHig(min=1E-6) = 1 "Higher value for the output"; - parameter Real yLow(min=1E-6,max=1) = 0.5 + parameter Real yLow(min=1E-6) = 0.5 "Lower value for the output"; Buildings.Controls.OBC.CDL.Interfaces.RealInput u "Connector for the response signal of a relay controller" @@ -47,7 +47,7 @@ block Gain "Identifies the gain of a first order time delayed model" transformation( extent={{-20,-20},{20,20}}, rotation=90, - origin={-40,-120}))); + origin={0,-120}))); CDL.Continuous.AddParameter addPar(p=1E-11) annotation (Placement(transformation(extent={{32,-50},{52,-30}}))); equation @@ -66,8 +66,8 @@ equation connect(highRealyOuput.y, mul2.u1) annotation (Line(points={{-58,30},{-52,30}, {-52,26},{-42,26}}, color={0,0,127})); connect(mul2.u2, tOn) annotation (Line(points={{-42,14},{-52,14},{-52,0},{-120,0}}, color={0,0,127})); - connect(Iy.trigger, triggerStart) annotation (Line(points={{-30,68},{-30,60},{ - -4,60},{-4,-96},{-40,-96},{-40,-120}}, color={255,0,255})); + connect(Iy.trigger, triggerStart) annotation (Line(points={{-30,68},{-30,50},{ + -4,50},{-4,-80},{0,-80},{0,-120}}, color={255,0,255})); connect(divIyIu.u1, Iy.y) annotation (Line(points={{30,6},{-2,6},{-2,80},{-18, 80}}, color={0,0,127})); connect(Iu.y, addPar.u) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/TimeConstantDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/TimeConstantDelay.mo index eb1febcb4ef..4da24c30a2a 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/TimeConstantDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/TimeConstantDelay.mo @@ -1,9 +1,9 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed; block TimeConstantDelay "Calculates the time constant and the time delay of a first order time delayed model" - parameter Real yHig(min=0,max=1) = 1 + parameter Real yHig(min=1E-6) = 1 "Higher value for the output"; - parameter Real yLow(min=0,max=1) = 0.5 + parameter Real yLow(min=1E-6) = 0.5 "Lower value for the output"; parameter Real deaBan(min=0) = 0.5 "Deadband for holding the output value"; @@ -51,27 +51,23 @@ block TimeConstantDelay "exp(L/T)(yHig + yLow)" annotation (Placement(transformation(extent={{60,30},{80,50}}))); Buildings.Controls.OBC.CDL.Continuous.Add add1 - "h/|k|-yLow+exp(L/T)(yHig + yLow)" + "Calculates the result of h/|k|-yLow+exp(L/T)(yHig + yLow)" annotation (Placement(transformation(extent={{60,-40},{80,-20}}))); Buildings.Controls.OBC.CDL.Continuous.Subtract sub1 "yHig - deaBan/exp(L/T)" annotation (Placement(transformation(extent={{20,-80},{40,-60}}))); Buildings.Controls.OBC.CDL.Continuous.Divide div2 - "(h/|k|-yLow+exp(L/T)(yHig + yLow))/(yHig-h/|k|)" + "Calculates the result of (h/|k|-yLow+exp(L/T)(yHig + yLow))/(yHig-h/|k|)" annotation (Placement(transformation(extent={{60,-78},{80,-58}}))); Buildings.Controls.OBC.CDL.Continuous.Log log - "the natural logarithm of (h/|k|-yLow+exp(L/T)(yHig + yLow))/(yHig-h/|k|)" + "Natural logarithm of (h/|k|-yLow+exp(L/T)(yHig + yLow))/(yHig-h/|k|)" annotation (Placement(transformation(extent={{-20,-100},{-40,-80}}))); Buildings.Controls.OBC.CDL.Continuous.Divide div3 "Calculates the time constant" annotation (Placement(transformation(extent={{-40,60},{-20,80}}))); - Buildings.Controls.OBC.CDL.Continuous.Multiply mul2 "Calculates the time delay" annotation (Placement(transformation(extent={{0,74},{20,94}}))); equation -// assert( -// abs(k)>1E-12, -// "the absulte values of k should be larger than 0. Check inputs."); connect(absk.u, k) annotation (Line(points={{-82,-10},{-92,-10},{-92,0},{-120,0}}, color={0,0,127})); @@ -140,14 +136,14 @@ First implementation
", info="

This block calculates the time constant and the time delay of a first-order time-delayed model

The time constant, T, is calculated by

-

T = ton/(ln((δ/|k|-yLow+exp(τ)(yHig + yLow))/(yHig-δ/|k|)))

+

T = ton/(ln((δ/|k|-yhig+exp(τ/(1 - τ))(yhig + ylow))/(yhig-δ/|k|)))

where yhig and ylow are the higher value and the lower value of the relay control output, respectively,

ton is the length of the On period,

δ is the dead band of a relay controller,

k is the gain of the first-order time-delayed model.

τ is the normalized time delay.

The time delay, L, is calculated by

-

L = T τ

+

L = T τ/(1 - τ);

References

Josefin Berner (2015). diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo index db05212301c..1235a525286 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo @@ -2,7 +2,7 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.F model ControlProcessModel "Test model for ControlProcessModel" extends Modelica.Icons.Example; Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.ControlProcessModel - controlProcessModel(yLow=0.1) + controlProcessModel(yLow=0.1, deaBan=0.05) "Calculates the parameters of the system model for the control process" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); CDL.Continuous.Sources.TimeTable tOn( @@ -11,19 +11,19 @@ model ControlProcessModel "Test model for ControlProcessModel" extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) "The length of the On period" annotation (Placement(transformation(extent={{-60,20},{-40,40}}))); - CDL.Continuous.Sources.TimeTable ratioLT( + CDL.Continuous.Sources.TimeTable tau( table=[0,0.3; 0.1,0.5; 0.3,0.1; 0.7,0.5; 0.83,0.8; 0.85,0.5], smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) - "The ratio between the time constant and the time delay of a first order time delay model" + "The normalized time delay" annotation (Placement(transformation(extent={{-60,-40},{-40,-20}}))); - Modelica.Blocks.Sources.RealExpression referenceT(y=tOn.y[1]/log(max((0.5/max( - abs(controlProcessModel.k), 1E-11) - 0.1 + exp(ratioLT.y[1])*(1 + 0.1)) - /(1 - 0.5/max(abs(controlProcessModel.k), 1E-11)), 1E-11))) + Modelica.Blocks.Sources.RealExpression referenceT(y=tOn.y[1]/log((0.05/ + controlProcessModel.k - 0.1 + exp(tau.y[1]/(1 - tau.y[1]))*(1 + 0.1))/( + 1 - 0.05/abs(controlProcessModel.k)))) "Reference value for the time constant" annotation (Placement(transformation(extent={{-10,48},{10,68}}))); - Modelica.Blocks.Sources.RealExpression referenceL(y=ratioLT.y[1]*referenceT.y) - "Reference value for the time delay" + Modelica.Blocks.Sources.RealExpression referenceL(y=tau.y[1]/(1 - tau.y[1])* + referenceT.y) "Reference value for the time delay" annotation (Placement(transformation(extent={{-10,30},{10,50}}))); CDL.Continuous.Sources.TimeTable u( table=[0,1; 0.1,0.5; 0.3,0.5; 0.7,0.5; 0.83,1; 0.85,1], @@ -45,12 +45,12 @@ model ControlProcessModel "Test model for ControlProcessModel" 1; 0.85,1], period=2) "Mimicking the signal for the tuning period end" annotation (Placement(transformation(extent={{-20,-80},{0,-60}}))); equation - connect(tOn.y[1], controlProcessModel.tOn) annotation (Line(points={{-38,30},{ - -20,30},{-20,4},{-12,4}}, color={0,0,127})); - connect(ratioLT.y[1], controlProcessModel.ratioLT) annotation (Line(points={{-38, - -30},{-20,-30},{-20,-8},{-12,-8}}, color={0,0,127})); - connect(u.y[1], controlProcessModel.u) annotation (Line(points={{-38,60},{-16, - 60},{-16,8},{-12,8}}, color={0,0,127})); + connect(tOn.y[1], controlProcessModel.tOn) annotation (Line(points={{-38,30}, + {-24,30},{-24,4},{-12,4}},color={0,0,127})); + connect(tau.y[1], controlProcessModel.tau) annotation (Line(points={{-38,-30}, + {-20,-30},{-20,-8},{-12,-8}}, color={0,0,127})); + connect(u.y[1], controlProcessModel.u) annotation (Line(points={{-38,60},{-20, + 60},{-20,8},{-12,8}}, color={0,0,127})); connect(tOff.y[1], controlProcessModel.tOff) annotation (Line(points={{-38,0}, {-20,0},{-20,-4},{-12,-4}}, color={0,0,127})); connect(tuningStart.y[1], controlProcessModel.triggerStart) annotation (Line( diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mo index f040fe2048b..ea85ace752e 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mo @@ -26,9 +26,6 @@ model Gain "Test model for Gain" 0.83,1; 0.85,1], period=2) "Mimicking the signal for the tuning period start" annotation (Placement(transformation(extent={{-60,-80},{-40,-60}}))); - CDL.Logical.Sources.TimeTable tuningEnd(table=[0,0; 0.1,0; 0.3,0; 0.7,0; 0.83, - 0; 0.9,1], period=2) "Mimicking the signal for the tuning period end" - annotation (Placement(transformation(extent={{-20,-80},{0,-60}}))); equation connect(tOn.y[1], gain.tOn) annotation (Line(points={{-38,0},{-12,0}}, color={0,0,127})); @@ -36,10 +33,8 @@ equation -40},{-38,-40}}, color={0,0,127})); connect(u.y[1], gain.u) annotation (Line(points={{-38,40},{-20,40},{-20,8},{-12, 8}}, color={0,0,127})); - connect(tuningEnd.y[1], gain.triggerEnds) annotation (Line(points={{2,-70},{ - 20,-70},{20,-20},{4,-20},{4,-12}}, color={255,0,255})); - connect(gain.triggerStart, tuningStart.y[1]) annotation (Line(points={{-4,-12}, - {-6,-12},{-6,-48},{-36,-48},{-36,-70},{-38,-70}}, color={255,0,255})); + connect(tuningStart.y[1], gain.triggerStart) + annotation (Line(points={{-38,-70},{0,-70},{0,-12}}, color={255,0,255})); annotation ( experiment( StopTime=1.0, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithAutotuningAmigoFOTD.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithAutotuningAmigoFOTD.mo index 824ce7fcbed..870346626a0 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithAutotuningAmigoFOTD.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithAutotuningAmigoFOTD.mo @@ -1,86 +1,91 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation; model PIDWithAutotuningAmigoFOTD "Test model for PIDWithAutotuning" - Buildings.Controls.OBC.CDL.Continuous.Sources.Constant Setpoint(k=0.8) + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant SetPoint(k=0.8) "Setpoint value" annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); - .Buildings.Controls.OBC.Utilities.PIDWithAutotuning.PIDWithAutotuningAmigoFOTD - PIDWitAutotuning(controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PI) + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.PIDWithAutotuningAmigoFOTD + PIDWitAutotuning( + controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PID, + yHig=1, + yLow=0.1, + deaBan=0.1, + setPoint=0.8) "PID controller with an autotuning feature" annotation (Placement(transformation(extent={{-20,-30},{0,-10}}))); Buildings.Controls.OBC.CDL.Continuous.PIDWithReset PID( - controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PI, + controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PID, k=1, Ti=0.5, Td=0.1) "PID controller with constant gains" - annotation (Placement(transformation(extent={{0,20},{20,40}}))); - CDL.Logical.Sources.Constant resSig(k=false) + annotation (Placement(transformation(extent={{-20,20},{0,40}}))); + Buildings.Controls.OBC.CDL.Logical.Sources.Constant resSig(k=false) "Reset signal" - annotation (Placement(transformation(extent={{-80,40},{-60,60}}))); + annotation (Placement(transformation(extent={{-80,60},{-60,80}}))); - Modelica.Blocks.Continuous.FirstOrder ControlProcess2(T=10, initType=Modelica.Blocks.Types.Init.InitialOutput) - "Control Process 2" + Modelica.Blocks.Continuous.FirstOrder FirstOrderProcess2(T=10, initType= + Modelica.Blocks.Types.Init.InitialOutput) + "A first-order process for control process 2" annotation (Placement(transformation(extent={{60,-30},{80,-10}}))); - Modelica.Blocks.Continuous.FirstOrder ControlProcess1( + Modelica.Blocks.Continuous.FirstOrder FirstOrderProcess1( k=1, T=10, initType=Modelica.Blocks.Types.Init.InitialOutput, - y_start=0) "Control process 1" + y_start=0) "A first-order process for control process 1" annotation (Placement(transformation(extent={{60,20},{80,40}}))); - Modelica.Blocks.Discrete.UnitDelay unitDelay(samplePeriod=240) + Modelica.Blocks.Discrete.UnitDelay unitDelay2(samplePeriod=240) + "A dealy process for control process 2" annotation (Placement(transformation(extent={{20,-30},{40,-10}}))); Modelica.Blocks.Discrete.UnitDelay unitDelay1(samplePeriod=240) - annotation (Placement(transformation(extent={{32,20},{52,40}}))); + "A dealy process for control process 1" + annotation (Placement(transformation(extent={{20,20},{40,40}}))); equation - connect(resSig.y, PID.trigger) annotation (Line(points={{-58,50},{-20,50},{ - -20,12},{4,12},{4,18}}, + connect(resSig.y, PID.trigger) annotation (Line(points={{-58,70},{-48,70},{-48, + 12},{-16,12},{-16,18}}, color={255,0,255})); connect(PIDWitAutotuning.trigger, PID.trigger) annotation (Line(points={{-16,-32}, - {-16,-38},{-40,-38},{-40,6},{4,6},{4,18}},color={255,0,255})); - connect(PIDWitAutotuning.u_s, PID.u_s) annotation (Line(points={{-22,-20},{-32, - -20},{-32,10},{-14,10},{-14,30},{-2,30}}, + {-16,-38},{-30,-38},{-30,12},{-16,12},{-16,18}}, + color={255,0,255})); + connect(PIDWitAutotuning.u_s, PID.u_s) annotation (Line(points={{-22,-20},{-50, + -20},{-50,30},{-22,30}}, color={0,0,127})); - connect(Setpoint.y, PID.u_s) annotation (Line(points={{-58,10},{-14,10},{-14,30}, - {-2,30}}, color={0,0,127})); - connect(ControlProcess2.y, PIDWitAutotuning.u_m) annotation (Line(points={{81,-20}, - {86,-20},{86,-38},{-10,-38},{-10,-32}}, color={0,0,127})); - connect(PID.u_m, ControlProcess1.y) annotation (Line(points={{10,18},{10,0},{86, - 0},{86,30},{81,30}}, color={0,0,127})); - connect(PIDWitAutotuning.y, unitDelay.u) + connect(SetPoint.y, PID.u_s) annotation (Line(points={{-58,10},{-50,10},{-50,30}, + {-22,30}}, color={0,0,127})); + connect(FirstOrderProcess2.y, PIDWitAutotuning.u_m) annotation (Line(points={{ + 81,-20},{86,-20},{86,-38},{-10,-38},{-10,-32}}, color={0,0,127})); + connect(PID.u_m, FirstOrderProcess1.y) annotation (Line(points={{-10,18},{-10, + 12},{86,12},{86,30},{81,30}}, color={0,0,127})); + connect(PIDWitAutotuning.y, unitDelay2.u) annotation (Line(points={{2,-20},{18,-20}}, color={0,0,127})); - connect(unitDelay.y, ControlProcess2.u) + connect(unitDelay2.y, FirstOrderProcess2.u) annotation (Line(points={{41,-20},{58,-20}}, color={0,0,127})); - connect(ControlProcess1.u, unitDelay1.y) - annotation (Line(points={{58,30},{53,30}}, color={0,0,127})); + connect(FirstOrderProcess1.u, unitDelay1.y) + annotation (Line(points={{58,30},{41,30}}, color={0,0,127})); connect(unitDelay1.u, PID.y) - annotation (Line(points={{30,30},{22,30}}, color={0,0,127})); + annotation (Line(points={{18,30},{2,30}}, color={0,0,127})); annotation ( experiment( StopTime=10000, Tolerance=1e-06, __Dymola_Algorithm="Cvode"), __Dymola_Commands( - file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/Validation/PIDWithInputGains.mos" "Simulate and plot"), + file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithAutotuningAmigoFOTD.mos" "Simulate and plot"), Documentation( info="

Validation test for the block - -Buildings.Controls.OBC.Utilities.PIDWithInputGains. + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.PIDWithAutotuningAmigoFOTD.

-For t ∈ [0, 0.6] both PID controllers have the same gains. -During this time, they generate the same output. -Afterwards, the gains, and hence also their outputs, differ. - -Buildings.Controls.OBC.CDL.Continuous.PIDWithReset. +This example is to compare the output of a PID controller with an autotuning feature to that of another PID controller with arbitary gains

", revisions="
  • -May 17, 2022, by Sen Huang:
    -First implementation. +June 1, 2022, by Sen Huang:
    +First implementation
"), diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD.mo new file mode 100644 index 00000000000..48cf9e9aacf --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD.mo @@ -0,0 +1,105 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation; +model PIWithAutotuningAmigoFOTD "Test model for PIDWithAutotuning" + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant SetPoint(k=0.8) + "Setpoint value" + annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); + .Buildings.Controls.OBC.Utilities.PIDWithAutotuning.PIDWithAutotuningAmigoFOTD + PIDWitAutotuning(controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PI, + yHig=1, + yLow=0.1, + deaBan=0.1, + setPoint=0.8) + "PID controller with an autotuning feature" + annotation (Placement(transformation(extent={{-20,-30},{0,-10}}))); + Buildings.Controls.OBC.CDL.Continuous.PIDWithReset PID( + controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PI, + k=1, + Ti=0.5, + Td=0.1) + "PID controller with constant gains" + annotation (Placement(transformation(extent={{-20,20},{0,40}}))); + CDL.Logical.Sources.Constant resSig(k=false) + "Reset signal" + annotation (Placement(transformation(extent={{-80,60},{-60,80}}))); + + Modelica.Blocks.Continuous.FirstOrder FirstOrderProcess2(T=10, initType= + Modelica.Blocks.Types.Init.InitialOutput) + "A first-order process for control process 2" + annotation (Placement(transformation(extent={{60,-30},{80,-10}}))); + Modelica.Blocks.Continuous.FirstOrder FirstOrderProcess1( + k=1, + T=10, + initType=Modelica.Blocks.Types.Init.InitialOutput, + y_start=0) "A first-order process for control process 1" + annotation (Placement(transformation(extent={{60,20},{80,40}}))); + Modelica.Blocks.Discrete.UnitDelay unitDelay2(samplePeriod=240) + "A dealy process for control process 2" + annotation (Placement(transformation(extent={{20,-30},{40,-10}}))); + Modelica.Blocks.Discrete.UnitDelay unitDelay1(samplePeriod=240) + "A dealy process for control process 1" + annotation (Placement(transformation(extent={{20,20},{40,40}}))); +equation + connect(resSig.y, PID.trigger) annotation (Line(points={{-58,70},{-48,70},{-48, + 12},{-16,12},{-16,18}}, + color={255,0,255})); + connect(PIDWitAutotuning.trigger, PID.trigger) annotation (Line(points={{-16,-32}, + {-16,-38},{-30,-38},{-30,12},{-16,12},{-16,18}}, + color={255,0,255})); + connect(PIDWitAutotuning.u_s, PID.u_s) annotation (Line(points={{-22,-20},{-50, + -20},{-50,30},{-22,30}}, + color={0,0,127})); + connect(SetPoint.y, PID.u_s) annotation (Line(points={{-58,10},{-50,10},{-50,30}, + {-22,30}}, color={0,0,127})); + connect(FirstOrderProcess2.y, PIDWitAutotuning.u_m) annotation (Line(points={{ + 81,-20},{86,-20},{86,-38},{-10,-38},{-10,-32}}, color={0,0,127})); + connect(PID.u_m, FirstOrderProcess1.y) annotation (Line(points={{-10,18},{-10, + 12},{86,12},{86,30},{81,30}}, color={0,0,127})); + connect(PIDWitAutotuning.y, unitDelay2.u) + annotation (Line(points={{2,-20},{18,-20}}, color={0,0,127})); + connect(unitDelay2.y, FirstOrderProcess2.u) + annotation (Line(points={{41,-20},{58,-20}}, color={0,0,127})); + connect(FirstOrderProcess1.u, unitDelay1.y) + annotation (Line(points={{58,30},{41,30}}, color={0,0,127})); + connect(unitDelay1.u, PID.y) + annotation (Line(points={{18,30},{2,30}}, color={0,0,127})); + annotation ( + experiment( + StopTime=10000, + Tolerance=1e-06, + __Dymola_Algorithm="Cvode"), + __Dymola_Commands( + file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD.mos" "Simulate and plot"), + Documentation( + info=" +

+Validation test for the block + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.PIDWithAutotuningAmigoFOTD. +

+

+This example is to compare the output of a PI controller with an autotuning feature to that of another PI controller with arbitary gains +

+", + revisions=" +
    +
  • +June 1, 2022, by Sen Huang:
    +First implementation
    +
  • +
+"), + Icon(coordinateSystem(extent={{-100,-80},{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(extent={{-100,-80},{100,100}}))); +end PIWithAutotuningAmigoFOTD; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/package.order index 81216eca4de..d2568a91f3c 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/package.order +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/package.order @@ -1 +1,2 @@ +PIWithAutotuningAmigoFOTD PIDWithAutotuningAmigoFOTD diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mos index d392458cf97..ade5f807242 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mos @@ -1,4 +1,4 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation.ControlProcessModel", method="Cvode", tolerance=1e-06, resultFile="ControlProcessModel"); -createPlot(id=1, position={95, 95, 1484, 920}, y={"controlProcessModel.T", "referenceT.y"}, range={0.0, 1.0, 0.6000000000000001, 1.2000000000000002}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={95, 95, 1484, 920}, y={"controlProcessModel.L", "referenceL.y"}, range={0.0, 1.0, 0.0, 0.6000000000000001}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); - +createPlot(id=1, position={75, 75, 1761, 1431}, y={"controlProcessModel.T", "referenceT.y"}, range={0.0, 1.0, 0.0, 5.0}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={75, 75, 1761, 1431}, y={"controlProcessModel.L", "referenceL.y"}, range={0.0, 1.0, 0.4, 1.8000000000000003}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={75, 75, 1761, 1431}, y={"tuningStart.y[1]", "tuningEnd.y[1]"}, range={0.0, 1.0, -0.2, 1.2000000000000002}, grid=true, subPlot=103, colors={{28,108,200}, {28,108,200}}); diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithAutotuningAmigoFOTD.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithAutotuningAmigoFOTD.mos new file mode 100644 index 00000000000..51b07934aff --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithAutotuningAmigoFOTD.mos @@ -0,0 +1,5 @@ +simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIDWithAutotuningAmigoFOTD", stopTime=10000, method="Cvode", tolerance=1e-06, resultFile="PIDWithAutotuningAmigoFOTD"); +createPlot(id=1, position={95, 95, 1494, 1014}, y={"PID.u_s", "PID.u_m"}, range={0.0, 10000.0, -0.5, 1.5}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={95, 95, 1494, 1014}, y={"PIDWitAutotuning.u_s", "PIDWitAutotuning.u_m"}, range={0.0, 10000.0, -0.5, 1.5}, autoscale=false, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={95, 95, 1494, 1014}, y={"resSig.y"}, range={0.0, 10000.0, -0.5, 1.5}, autoscale=false, grid=true, subPlot=103, colors={{28,108,200}}); + diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD - Copy.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD - Copy.mos new file mode 100644 index 00000000000..63fa9e0ecb0 --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD - Copy.mos @@ -0,0 +1,5 @@ +simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIWithAutotuningAmigoFOTD", stopTime=10000, method="Cvode", tolerance=1e-06, resultFile="PIWithAutotuningAmigoFOTD"); +createPlot(id=1, position={95, 95, 1494, 1014}, y={"PID.u_s", "PID.u_m"}, range={0.0, 10000.0, -0.5, 1.5}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={95, 95, 1494, 1014}, y={"PIDWitAutotuning.u_s", "PIDWitAutotuning.u_m"}, range={0.0, 10000.0, -0.5, 1.5}, autoscale=false, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={95, 95, 1494, 1014}, y={"resSig.y"}, range={0.0, 10000.0, -0.5, 1.5}, autoscale=false, grid=true, subPlot=103, colors={{28,108,200}}); + From 998f78e233416757b3bb6845fd562abc7115d378 Mon Sep 17 00:00:00 2001 From: Huang Date: Sun, 12 Jun 2022 14:37:47 -0700 Subject: [PATCH 010/214] clean the relay package --- .../PIDWithAutotuning/Relay/Control.mo | 22 +++++++++--------- .../Relay/HalfPeriodRatio.mo | 8 ++++--- .../Relay/NormalizedTimeDelay.mo | 14 +++++------ .../PIDWithAutotuning/Relay/OnOffPeriod.mo | 8 +++---- .../Relay/ResponseProcess.mo | 23 ++++++++++--------- .../Relay/Validation/HalfPeriodRatio.mo | 4 ++-- .../Relay/Validation/NormalizedTimeDelay.mo | 4 ++-- .../PIDWithAutotuning/Validation/package.mo | 11 +-------- .../Utilities/PIDWithAutotuning/package.mo | 2 +- 9 files changed, 45 insertions(+), 51 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Control.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Control.mo index 0088321f5f1..89276f73455 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Control.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Control.mo @@ -1,6 +1,6 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay; block Control - "Outputs a relay signal for tuning PID controllers" + "Outputs relay signals for tuning PID controllers" parameter Real yHig(min=1E-6) = 1 "Higher value for the output"; parameter Real yLow(min=1E-6) = 0.5 @@ -16,16 +16,16 @@ block Control annotation (Placement(transformation(origin={0,-120},extent={{20,-20},{-20,20}},rotation=270), iconTransformation(extent={{20,-20},{-20,20}},rotation=270,origin={0,-120}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput y - "Relay control output signal" + "Control output signal" annotation (Placement(transformation(extent={{100,50},{120,70}}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput On - "Relay switch signal" + "Control switch signal" annotation (Placement(transformation(extent={{100,-90},{120,-70}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput yErr "Control error signal" annotation (Placement(transformation(extent={{100,-10},{120,10}}))); Buildings.Controls.OBC.CDL.Logical.OnOffController greMeaSet(bandwidth=deaBan*2, pre_y_start=true) - "check if the measured value is larger than the reference" + "check if the measured value is larger than the reference, by default the relay control is On" annotation (Placement(transformation(extent={{-20,-10},{0,10}}))); Buildings.Controls.OBC.CDL.Continuous.Switch swi "Switch between a higher value and a lower value" @@ -43,7 +43,7 @@ block Control initial equation assert( yHig-yLow>1E-6, - "the absulte values of yHig should be different from that of yLow. Check parameters."); + "The absulte values of yHig should be different from that of yLow. Check parameters."); equation connect(swi.y, y) @@ -86,12 +86,12 @@ equation textColor={0,0,255})}), Diagram( coordinateSystem(preserveAspectRatio=false)), Documentation(info=" -

This block grenerates a relay feedback signal, as described below:

-

if e(t) > δ, then y(t) = yhig,

-

if e(t) < δ, then y(t) = -ylow,

-

otherwise, y(t) = y(t-Δt).

-

where e(t) = us(t) - um(t) is the control error, yhig and ylow are the higher value and the lower value of the output y, respectively.

-

y(t-Δt) is the output at the previous time step.

+

This block grenerates a real control output signal, y, and a boolean control switch signal, yOn, as described below:

+

if e(t) < - δ, then y(t) = yhig, yOn(t) = true

+

if e(t) > δ, then y(t) = -ylow, yOn(t) = false

+

otherwise, y(t) = y(t-Δt), yOn(t) = yOn(t-Δt)

+

where δ is a dead band, e(t) = us(t) - um(t) is the control error, yhig and ylow are the higher value and the lower value of the output y, respectively.

+

t-Δt is the previous time step.

Note that this block generates a asymmetric signal, meaning yhig ≠ ylow

References

Josefin Berner (2017). "Automatic Controller Tuning using Relay-based Model Identification." Department of Automatic Control, Lund Institute of Technology, Lund University.

diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo index 615d36c383a..2a433d07ee1 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo @@ -10,15 +10,17 @@ block HalfPeriodRatio annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput rho - "Connector for a output signal of the half period ratio" + "Connector for a real signal of the half period ratio" annotation (Placement(transformation(extent={{100,50},{120,70}}), iconTransformation(extent={{100,50},{120,70}}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput triggerStart - "Relay tuning status, true if the tuning starts" annotation (Placement( + "Connector for a boolean signal, true if the tuning starts" + annotation (Placement( transformation(extent={{100,-10},{120,10}}), iconTransformation(extent={ {100,-10},{120,10}}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput triggerEnd - "Relay tuning status, true if the tuning completes" annotation (Placement( + "Connector for a boolean signal, true if the tuning completes" + annotation (Placement( transformation(extent={{100,-70},{120,-50}}), iconTransformation(extent= {{100,-70},{120,-50}}))); Buildings.Controls.OBC.CDL.Continuous.Min tmin diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/NormalizedTimeDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/NormalizedTimeDelay.mo index 6562f783a61..1f7dfc99d2c 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/NormalizedTimeDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/NormalizedTimeDelay.mo @@ -2,16 +2,16 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay; block NormalizedTimeDelay "Calculates the normalized time delay of a response from a relay controller" parameter Real gamma(min=1+1E-6) = 4 - "Asymmetry level of the relay controller"; + "Asymmetry level of the relay controller"; Buildings.Controls.OBC.CDL.Interfaces.RealInput rho - "Connector for the half period ratio signal" + "Connector for a real signal of the half period ratio signal" annotation (Placement(transformation(extent={{-140,-20},{-100,20}}), iconTransformation(extent={{-140,-20},{-100,20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput tau - "Connector for a output signal of the normalized time delay" + "Connector for a real signal of the normalized time delay" annotation (Placement(transformation(extent={{100,-10},{120,10}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.Constant asymmetryLevel(k=gamma) - "Asymmetry level of the relay" + "Asymmetry level of the relay controller" annotation (Placement(transformation(extent={{-80,40},{-60,60}}))); Buildings.Controls.OBC.CDL.Continuous.Subtract subGammaRho "gamma-rho" annotation (Placement(transformation(extent={{0,12},{20,32}}))); @@ -25,15 +25,15 @@ block NormalizedTimeDelay "calculates tau" annotation (Placement(transformation(extent={{40,-10},{60,10}}))); Buildings.Controls.OBC.CDL.Continuous.AddParameter addPar2(p=0.65) - "rho*0.35+0.65" + "calculates rho*0.35+0.65" annotation (Placement(transformation(extent={{-40,-70},{-20,-50}}))); Buildings.Controls.OBC.CDL.Continuous.AddParameter addPar1(p=-1) - "gamma-1" + "calculates gamma-1" annotation (Placement(transformation(extent={{-40,-20},{-20,0}}))); equation assert( gamma-rho>1E-6, - "the asymmetry level should be larger than the half period ratio. Check parameters."); + "The asymmetry level should be larger than the half period ratio. Check parameters."); connect(subGammaRho.u1, asymmetryLevel.y) annotation (Line(points={{-2,28},{-20, 28},{-20,50},{-58,50}}, color={0,0,127})); connect(subGammaRho.u2, rho) annotation (Line(points={{-2,16},{-42,16},{-42, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo index 9fb2500db1f..6fc88f67ee6 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo @@ -1,15 +1,15 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay; block OnOffPeriod - "Processes a relay signal to calculate the lengths of the On period and the Off period" + "Calculates the lengths of the On period and the Off period" Buildings.Controls.OBC.CDL.Interfaces.BooleanInput On "Connector for relay switch signal" annotation (Placement(transformation( extent={{-140,-80},{-100,-40}}), iconTransformation(extent={{-140,-80}, {-100,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput tOff - "Connector for a Real output signal of the length for the Off period" + "Connector for a real output signal of the length for the Off period" annotation (Placement(transformation(extent={{100,-50},{120,-30}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput tOn - "Connector for a output signal of the length for the On period" + "Connector for a real output signal of the length for the On period" annotation (Placement(transformation(extent={{100,30},{120,50}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler timOn "Simulation time when the input signal becomes On (True)" @@ -105,7 +105,7 @@ First implementation
", info=" -

This block processes a relay feedback signal and calculates

+

This block processes a relay swtich output signal and calculates

1) the length of the On period (when the relay switch signal becomes True);

2) the length of the Off period (when the relay switch signal becomes False).

References

diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo index 99465cd852b..5da1cbeb6ea 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo @@ -1,9 +1,9 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay; block ResponseProcess - "Processes a relay signal to calculate the lengths of the On period and the Off period as well as the half period ratio" - parameter Real yHig = 1 + "Calculates the lengths of the On period and the Off period, the half period ratio, as well as the times when the tuning starts and ends" + parameter Real yHig(min=1E-6) = 1 "Higher value for the output"; - parameter Real yLow = 0.5 + parameter Real yLow(min=1E-6) = 0.5 "Lower value for the output"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput On "Connector for relay switch signal" annotation (Placement(transformation( @@ -14,24 +14,25 @@ block ResponseProcess annotation (Placement(transformation(extent={{-140,40},{-100,80}}), iconTransformation(extent={{-140,40},{-100,80}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput tOn - "Connector for a output signal of the length for the On period" + "Connector for a real signal of the length for the On period" annotation (Placement(transformation(extent={{100,70},{120,90}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput tOff - "Connector for a Real output signal of the length for the Off period" + "Connector for a real output signal of the length for the Off period" annotation (Placement(transformation(extent={{100,30},{120,50}}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput triggerStart - "Relay tuning status, true if the tuning starts" + "Connector for a boolean signal, true if the tuning starts" annotation (Placement(transformation(extent={{100,-50},{120,-30}}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput triggerEnd - "Relay tuning status, true if the tuning ends" + "Connector for a boolean signal, true if the tuning ends" annotation (Placement(transformation(extent={{100,-90},{120,-70}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput tau - "Connector for a output signal of the normalized time delay" + "Connector for a real signal of the normalized time delay" annotation (Placement(transformation(extent={{100,-10},{120,10}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.OnOffPeriod onOffPeriod "Calculates the length of the On period and the Off period" annotation (Placement(transformation(extent={{-60,0},{-40,20}}))); - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.HalfPeriodRatio halfPeriodRatio "Calculates the half period ratio" + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.HalfPeriodRatio halfPeriodRatio + "Calculates the half period ratio" annotation (Placement(transformation(extent={{0,0},{20,20}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.NormalizedTimeDelay normalizedTimeDelay(gamma=max( yHig, yLow)/min(yLow, yHig)) @@ -81,11 +82,11 @@ First implementation
", info=" -

This block processes a relay feedback signal and calculates

+

This block processes a relay swtich output signall and calculates

1) the length of the On period (when the relay switch signal becomes True);

2) the length of the Off period (when the relay switch signal becomes False);

3) the normalized time delay of the responses;

-

4) the flag which indicates if the tuning completes.

+

4) the flags which indicates if the tuning starts and completes, respectively.

For more details, please refer to Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.HalfPeriodRatio,

Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.NormalizedTimeDelay,

Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.OnOffPeriod.

diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mo index 060d8e9a5d0..6b66229581b 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mo @@ -41,8 +41,8 @@ First implementation
", info="

Validation test for the block - -Buildings.Controls.OBC.Utilities.ResponseProcess.Relay.HalfPeriodRatio. + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.HalfPeriodRatio.

")); end HalfPeriodRatio; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mo index 40e131bdf2b..41144614859 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mo @@ -34,8 +34,8 @@ First implementation
", info="

Validation test for the block - -Buildings.Controls.OBC.Utilities.BaseClasses.Relay.NormalizedTimeDelay. + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.NormalizedTimeDelay.

")); end NormalizedTimeDelay; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/package.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/package.mo index 5273d429079..6205a02a2d5 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/package.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/package.mo @@ -4,16 +4,7 @@ package Validation "Collection of models that validate the SetPoints blocks of t preferredView="info", Documentation( info=" -

-This package contains models that validate the blocks in - -Buildings.Controls.OBC.Utilities.SetPoints. -

-

-The examples plot various outputs, which have been verified against -analytical solutions. These model outputs are stored as reference data to -allow continuous validation whenever models in the library change. -

+

This package contains models that validate the blocks in Buildings.Controls.OBC.Utilities.PIDWIthAutotuning.

"), Icon( graphics={ diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/package.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/package.mo index 5fc990777e7..c8838df0b21 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/package.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/package.mo @@ -4,7 +4,7 @@ package PIDWithAutotuning "Package with blocks for PID autotuning" preferredView="info", Documentation( info=" -

This package contains components models to perform automatic tunnings on PID controllers.

+

This package contains components models to perform automatic tunning on PID controllers.

"), Icon( graphics={ From 0c9ca3ce9ce77870cfa0a6869b1dc5c035b26435 Mon Sep 17 00:00:00 2001 From: Huang Date: Sun, 12 Jun 2022 14:42:50 -0700 Subject: [PATCH 011/214] fix typos in the validation examples for the relay package --- .../PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mo | 7 ++++--- .../Relay/Validation/NormalizedTimeDelay.mo | 1 + .../PIDWithAutotuning/Relay/Validation/OnOffPeriod.mo | 5 +++-- .../PIDWithAutotuning/Relay/Validation/ResponseProcess.mo | 4 ++-- 4 files changed, 10 insertions(+), 7 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mo index 6b66229581b..36006af1d1b 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mo @@ -2,19 +2,20 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation; model HalfPeriodRatio "Test model for HalfPeriodRatio" extends Modelica.Icons.Example; Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.HalfPeriodRatio - halfPeriodRatio "Calculating the half period ratio" + halfPeriodRatio + "Calculates the half period ratio" annotation (Placement(transformation(extent={{-8,-10},{12,10}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable tOn( table=[0,0; 0.1,1; 0.3,1; 0.7,1; 0.83,2; 0.85,6], smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) - "The length of the On period" + "Signal for the length of the On period" annotation (Placement(transformation(extent={{-60,20},{-40,40}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable tOff( table=[0,0; 0.1,0; 0.3,0; 0.7,3; 0.83,3; 0.85,3], smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) - "The length of the Off period" + "Signal for the length of the Off period" annotation (Placement(transformation(extent={{-60,-40},{-40,-20}}))); equation connect(tOn.y[1],halfPeriodRatio. tOn) annotation (Line(points={{-38,30},{-20, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mo index 41144614859..b65b9ed5b37 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mo @@ -9,6 +9,7 @@ model NormalizedTimeDelay "Test model for NormalizedTimeDelay" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.NormalizedTimeDelay normalizedTimeDelay(gamma=4) + "calculates the normalized time delay" annotation (Placement(transformation(extent={{-8,-10},{12,10}}))); Modelica.Blocks.Sources.RealExpression reference(y=(normalizedTimeDelay.gamma - rho.y[1])/(normalizedTimeDelay.gamma - 1)/(0.35*rho.y[1] + 0.65)) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mo index 2ef84635c3a..72c6ce0b24a 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mo @@ -2,11 +2,12 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation; model OnOffPeriod "Test model for OnOffPeriod" extends Modelica.Icons.Example; Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.OnOffPeriod - onOffPeriod "Calculating the length of the On period and the Off period" + onOffPeriod + "Calculates the length of the On period and the Off period" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Buildings.Controls.OBC.CDL.Logical.Sources.TimeTable relayResponse( table=[0,1;0.1,0; 0.3,0; 0.7,1; 0.83,0; 0.85,1], period=2) - "Mimicking the response for a relay controller" + "Mimicks the response for a relay controller" annotation (Placement(transformation(extent={{-60,-20},{-40,0}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.ModelTime modTim "Simulation time" diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mo index 42a0f4b3d9b..ffa6589040f 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mo @@ -3,11 +3,11 @@ model ResponseProcess "Test model for ResponseProcess" extends Modelica.Icons.Example; Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.ResponseProcess responseProcess(yHig=1, yLow=0.2) - "Calculating the length of the On period and the Off period" + "Calculates the length of the On period and the Off period" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Buildings.Controls.OBC.CDL.Logical.Sources.TimeTable relayResponse( table=[0,1;0.1,0; 0.3,0; 0.7,1; 0.83,0; 0.85,1], period=2) - "Mimicking the response for a relay controller" + "Mimicks the response for a relay controller" annotation (Placement(transformation(extent={{-60,-20},{-40,0}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.ModelTime modTim "Simulation time" From 9c58b5ca3fc1e18e1535488905a8dae5c0c93332 Mon Sep 17 00:00:00 2001 From: Huang Date: Mon, 13 Jun 2022 09:23:14 -0700 Subject: [PATCH 012/214] fix some issues in the SystemIdentification package --- .../Relay/HalfPeriodRatio.mo | 12 +- .../ControlProcessModel.mo | 30 +++-- .../FirstOrderTimedelayed/Gain.mo | 120 ++++++++---------- .../TimeConstantDelay.mo | 12 +- .../Validation/ControlProcessModel.mo | 12 +- .../FirstOrderTimedelayed/Validation/Gain.mo | 7 +- .../Validation/TimeConstantDelay.mo | 8 +- .../Utilities/PIDWithAutotuning/package.order | 2 +- 8 files changed, 99 insertions(+), 104 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo index 2a433d07ee1..475d46cf4d9 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo @@ -164,16 +164,12 @@ First implementation
", info="

This block calculates the half-period ratio of the output from a relay controller, ρ, by

ρ = max(ton,toff)/ min(ton,toff)

-

where ton and ton are the length of the On period and the Off period, respectively.

-

During an On period, the relay output is at the higher value;

-

During an Off period, the relay output is at the lower value.

+

where ton and ton are the length of the On period and the Off period, respectively.

+

During an On period, the relay switch signal becomes True;

+

During an Off period, the relay switch signal becomes False.

Note that only the first On period and the first Off period are considered.

References

-

-Josefin Berner (2017). -\"Automatic Controller Tuning using Relay-based Model Identification.\" -Department of Automatic Control, Lund Institute of Technology, Lund University. -

+

Josefin Berner (2017). "Automatic Controller Tuning using Relay-based Model Identification." Department of Automatic Control, Lund Institute of Technology, Lund University.

"), Diagram(coordinateSystem(extent={{-100,-100},{240,100}}))); end HalfPeriodRatio; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo index f85e77ac836..1b9d101ce35 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo @@ -32,44 +32,48 @@ block ControlProcessModel Buildings.Controls.OBC.CDL.Interfaces.RealOutput L "Connector for a output signal of the time constant" annotation (Placement(transformation(extent={{100,-90},{120,-70}}))); - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Gain gain(yHig=yHig, yLow=yLow) "Calculates the gain" + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Gain gain(yHig=yHig, yLow=yLow) + "Calculates the gain" annotation (Placement(transformation(extent={{-84,-10},{-64,10}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.TimeConstantDelay timeConstantDelay(yHig=yHig, yLow=yLow, - deaBan=deaBan) "Calculates the time constant and the time delay" + deaBan=deaBan) + "Calculates the time constant and the time delay" annotation (Placement(transformation(extent={{0,-10},{20,10}}))); - - CDL.Interfaces.BooleanInput triggerStart + Buildings.Controls.OBC.CDL.Interfaces.BooleanInput triggerStart "Relay tuning status, true if the tuning starts" annotation (Placement( transformation( extent={{-20,-20},{20,20}}, rotation=90, origin={-60,-120}))); - CDL.Interfaces.BooleanInput triggerEnd + Buildings.Controls.OBC.CDL.Interfaces.BooleanInput triggerEnd "Relay tuning status, true if the tuning ends" annotation (Placement( transformation( extent={{-20,-20},{20,20}}, rotation=90, origin={60,-120}))); - CDL.Discrete.TriggeredSampler samT(y_start=1) + Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samT(y_start=1) "Sampling k when the tuning period ends" annotation (Placement(transformation(extent={{70,-10},{90,10}}))); - CDL.Discrete.TriggeredSampler samL(y_start=1) + Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samL(y_start=1) "Sampling L when the tuning period ends" annotation (Placement(transformation(extent={{44,-90},{64,-70}}))); - CDL.Discrete.TriggeredSampler samk(y_start=1) + Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samk(y_start=1) "Sampling k when the tuning period ends" annotation (Placement(transformation(extent={{-54,-10},{-34,10}}))); - CDL.Discrete.TriggeredSampler samtOn(y_start=1) + Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samtOn(y_start=1) "Sampling tOn when the tuning period ends" annotation (Placement(transformation(extent={{-70,30},{-50,50}}))); - CDL.Discrete.TriggeredSampler samtau(y_start=0.5) + Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samtau(y_start=0.5) "Sampling the normalized time delay" annotation (Placement(transformation(extent={{-70,-70},{-50,-90}}))); - CDL.Continuous.MultiplyByParameter gai(k=-1) "Product of tau and -1" + Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai(k=-1) + "Product of tau and -1" annotation (Placement(transformation(extent={{-36,-90},{-16,-70}}))); - CDL.Continuous.AddParameter addPar(p=1) "1- tau" + Buildings.Controls.OBC.CDL.Continuous.AddParameter addPar(p=1) + "1- tau" annotation (Placement(transformation(extent={{-8,-90},{12,-70}}))); - CDL.Continuous.Divide div "tau/(1- tau)" + Buildings.Controls.OBC.CDL.Continuous.Divide div + "tau/(1- tau)" annotation (Placement(transformation(extent={{12,-60},{32,-40}}))); equation connect(gain.u, u) annotation (Line(points={{-86,8},{-88,8},{-88,80},{-120,80}}, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Gain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Gain.mo index afe07e1cee0..8bd6de3d3a2 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Gain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Gain.mo @@ -1,11 +1,11 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed; block Gain "Identifies the gain of a first order time delayed model" parameter Real yHig(min=1E-6) = 1 - "Higher value for the output"; + "Higher value for the output (assuming the reference output is 0)"; parameter Real yLow(min=1E-6) = 0.5 - "Lower value for the output"; + "Lower value for the output (assuming the reference output is 0)"; Buildings.Controls.OBC.CDL.Interfaces.RealInput u - "Connector for the response signal of a relay controller" + "Connector for a signal of a relay controller output" annotation (Placement(transformation(extent={{-140,60},{-100,100}}), iconTransformation(extent={{-140,60},{-100,100}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput tOn @@ -16,66 +16,59 @@ block Gain "Identifies the gain of a first order time delayed model" "Connector for a signal of the length for the Off period" annotation (Placement(transformation(extent={{-140,-100},{-100,-60}}), iconTransformation(extent={{-140,-100},{-100,-60}}))); + Buildings.Controls.OBC.CDL.Interfaces.BooleanInput triggerStart + "Relay tuning status, true if the tuning starts" + annotation (Placement( + transformation( + extent={{-20,-20},{20,20}}, + rotation=90, + origin={0,-120}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput k - "Connector for a output signal of the gain" + "Connector for a real signal of the gain" annotation (Placement(transformation(extent={{100,-10},{120,10}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.Constant highRealyOuput(k=yHig) - "Higher value for the output" - annotation (Placement(transformation(extent={{-80,20},{-60,40}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.Constant lowRealyOuput(k=-yLow) - "Lower value for the output" - annotation (Placement(transformation(extent={{-80,-40},{-60,-20}}))); - Buildings.Controls.OBC.CDL.Continuous.Multiply mul2 "product of tOn and yHig" - annotation (Placement(transformation(extent={{-40,10},{-20,30}}))); - Buildings.Controls.OBC.CDL.Continuous.Multiply mul1 - "product of tOff and yLow" - annotation (Placement(transformation(extent={{-40,-60},{-20,-40}}))); Buildings.Controls.OBC.CDL.Continuous.Add Iu - "the integral of the relay output" - annotation (Placement(transformation(extent={{6,-50},{26,-30}}))); - Buildings.Controls.OBC.CDL.Continuous.IntegratorWithReset Iy(k=1, - y_start=1E-11) - "the integral of the process output" - annotation (Placement(transformation(extent={{-40,70},{-20,90}}))); + "Integral of the relay output" + annotation (Placement(transformation(extent={{-40,-50},{-20,-30}}))); + Buildings.Controls.OBC.CDL.Continuous.IntegratorWithReset Iy( + k=1,y_start=1E-11) + "Integral of the process output" + annotation (Placement(transformation(extent={{-40,30},{-20,50}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.Constant referenceRelayOutpit(k=0) - "reference value of the relay control output" - annotation (Placement(transformation(extent={{-80,50},{-60,70}}))); - Buildings.Controls.OBC.CDL.Continuous.Divide divIyIu "calculates the gain" + "Reference value of the relay control output" + annotation (Placement(transformation(extent={{-80,10},{-60,30}}))); + Buildings.Controls.OBC.CDL.Continuous.Divide divIyIu + "Calculates the gain" annotation (Placement(transformation(extent={{32,-10},{52,10}}))); - CDL.Interfaces.BooleanInput triggerStart - "Relay tuning status, true if the tuning starts" annotation (Placement( - transformation( - extent={{-20,-20},{20,20}}, - rotation=90, - origin={0,-120}))); - CDL.Continuous.AddParameter addPar(p=1E-11) - annotation (Placement(transformation(extent={{32,-50},{52,-30}}))); + Buildings.Controls.OBC.CDL.Continuous.AddParameter addPar(p=1E-11) + "Avoid divide-by-zero errors" + annotation (Placement(transformation(extent={{0,-50},{20,-30}}))); + Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gaitOnyHig(k=yHig) + "Product of tOn and yHig" + annotation (Placement(transformation(extent={{-80,-30},{-60,-10}}))); + Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gaitOffyLow(k=-yLow) + "Product of tOff and yLow" + annotation (Placement(transformation(extent={{-80,-90},{-60,-70}}))); equation - connect(mul2.y, Iu.u1) annotation (Line(points={{-18,20},{-8,20},{-8,-34},{4,-34}}, - color={0,0,127})); - connect(mul1.y, Iu.u2) annotation (Line(points={{-18,-50},{-8,-50},{-8,-46},{4, - -46}}, color={0,0,127})); - connect(Iy.u, u) annotation (Line(points={{-42,80},{-120,80}}, + connect(Iy.u, u) annotation (Line(points={{-42,40},{-90,40},{-90,80},{-120,80}}, color={0,0,127})); - connect(referenceRelayOutpit.y, Iy.y_reset_in) annotation (Line(points={{-58,60}, - {-52,60},{-52,72},{-42,72}}, color={0,0,127})); - connect(mul1.u2, tOff) annotation (Line(points={{-42,-56},{-80,-56},{-80,-80}, - {-120,-80}}, color={0,0,127})); - connect(mul1.u1, lowRealyOuput.y) annotation (Line(points={{-42,-44},{-52,-44}, - {-52,-30},{-58,-30}}, color={0,0,127})); - connect(highRealyOuput.y, mul2.u1) annotation (Line(points={{-58,30},{-52,30}, - {-52,26},{-42,26}}, color={0,0,127})); - connect(mul2.u2, tOn) annotation (Line(points={{-42,14},{-52,14},{-52,0},{-120,0}}, color={0,0,127})); - connect(Iy.trigger, triggerStart) annotation (Line(points={{-30,68},{-30,50},{ - -4,50},{-4,-80},{0,-80},{0,-120}}, color={255,0,255})); - connect(divIyIu.u1, Iy.y) annotation (Line(points={{30,6},{-2,6},{-2,80},{-18, - 80}}, color={0,0,127})); - connect(Iu.y, addPar.u) - annotation (Line(points={{28,-40},{30,-40}}, color={0,0,127})); - connect(addPar.y, divIyIu.u2) annotation (Line(points={{54,-40},{58,-40},{58,-20}, - {22,-20},{22,-6},{30,-6}}, color={0,0,127})); - connect(divIyIu.y, k) - annotation (Line(points={{54,0},{110,0}}, color={0,0,127})); + connect(referenceRelayOutpit.y, Iy.y_reset_in) annotation (Line(points={{-58,20}, + {-50,20},{-50,32},{-42,32}}, color={0,0,127})); + connect(Iy.trigger, triggerStart) annotation (Line(points={{-30,28},{-30,-20}, + {-10,-20},{-10,-96},{0,-96},{0,-120}}, color={255,0,255})); + connect(divIyIu.u1, Iy.y) annotation (Line(points={{30,6},{0,6},{0,40},{-18,40}}, + color={0,0,127})); + connect(Iu.y, addPar.u) annotation (Line(points={{-18,-40},{-2,-40}},color={0,0,127})); + connect(addPar.y, divIyIu.u2) annotation (Line(points={{22,-40},{26,-40},{26,-6}, + {30,-6}}, color={0,0,127})); + connect(divIyIu.y, k) annotation (Line(points={{54,0},{110,0}}, color={0,0,127})); + connect(gaitOnyHig.u, tOn) annotation (Line(points={{-82,-20},{-90,-20},{-90,0}, + {-120,0}}, color={0,0,127})); + connect(gaitOnyHig.y, Iu.u1) annotation (Line(points={{-58,-20},{-50,-20},{-50, + -34},{-42,-34}}, color={0,0,127})); + connect(gaitOffyLow.u, tOff) + annotation (Line(points={{-82,-80},{-120,-80}}, color={0,0,127})); + connect(gaitOffyLow.y, Iu.u2) annotation (Line(points={{-58,-80},{-50,-80},{-50, + -46},{-42,-46}}, color={0,0,127})); annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-100,-100},{100,100}}, @@ -101,15 +94,14 @@ First implementation

Iy = ∫ u(t) dt;

where u is the process output.

Iu is calculated by

-

Iu = ton yhig + toff ylow;

-

where yhig and ylow are the higher value and the lower value of the relay control output, respectively.

-

ton and toff are the length of the On period and the Off period, respectively.

+

Iu = ton (yhig - yref)+ toff(-ylow - yref);

+

where yhig and ylow are the higher value and the lower value of the relay control output, respectively.

+

yref is the reference value of the relay output.

+

ton and toff are the length of the On period and the Off period, respectively.

+

During an On period, the relay switch signal becomes True;

+

During an Off period, the relay switch signal becomes False.

References

-

-Josefin Berner (2017). -\"Automatic Controller Tuning using Relay-based Model Identification.\" -Department of Automatic Control, Lund Institute of Technology, Lund University. -

+

Josefin Berner (2017). "Automatic Controller Tuning using Relay-based Model Identification." Department of Automatic Control, Lund Institute of Technology, Lund University.

"), __Dymola_Commands(file="../../123.mos" "123")); end Gain; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/TimeConstantDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/TimeConstantDelay.mo index 4da24c30a2a..add06e14eef 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/TimeConstantDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/TimeConstantDelay.mo @@ -2,9 +2,9 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.F block TimeConstantDelay "Calculates the time constant and the time delay of a first order time delayed model" parameter Real yHig(min=1E-6) = 1 - "Higher value for the output"; + "Higher value for the output (assuming the reference output is 0)"; parameter Real yLow(min=1E-6) = 0.5 - "Lower value for the output"; + "Lower value for the output (assuming the reference output is 0)"; parameter Real deaBan(min=0) = 0.5 "Deadband for holding the output value"; Buildings.Controls.OBC.CDL.Interfaces.RealInput tOn @@ -25,10 +25,11 @@ block TimeConstantDelay Buildings.Controls.OBC.CDL.Interfaces.RealOutput L "Connector for a output signal of the time constant" annotation (Placement(transformation(extent={{100,-70},{120,-50}}))); - Buildings.Controls.OBC.CDL.Continuous.Abs absk "Absoulte value of the gain" + Buildings.Controls.OBC.CDL.Continuous.Abs absk + "Absoulte value of the gain" annotation (Placement(transformation(extent={{-80,-20},{-60,0}}))); Buildings.Controls.OBC.CDL.Continuous.Exp exp - "exponential value of the ratio between time constant and the time delay" + "Exponential value of the ratio between time constant and the time delay" annotation (Placement(transformation(extent={{-80,-60},{-60,-40}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.Constant yHigSig(k=yHig) "Higher value for the output" @@ -45,7 +46,8 @@ block TimeConstantDelay Buildings.Controls.OBC.CDL.Continuous.Subtract sub2 "Quotient of dead band Divided by the absolute value of k minus yLow" annotation (Placement(transformation(extent={{30,-50},{50,-30}}))); - Buildings.Controls.OBC.CDL.Continuous.Add add2 "Sum of yHig and yLow" + Buildings.Controls.OBC.CDL.Continuous.Add add2 + "Sum of yHig and yLow" annotation (Placement(transformation(extent={{40,0},{60,20}}))); Buildings.Controls.OBC.CDL.Continuous.Multiply mul1 "exp(L/T)(yHig + yLow)" diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo index 1235a525286..65b9e2a4c4a 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo @@ -5,13 +5,13 @@ model ControlProcessModel "Test model for ControlProcessModel" controlProcessModel(yLow=0.1, deaBan=0.05) "Calculates the parameters of the system model for the control process" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - CDL.Continuous.Sources.TimeTable tOn( + Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable tOn( table=[0,1; 0.1,1; 0.3,1; 0.7,1; 0.83,1; 0.85,2], smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) "The length of the On period" annotation (Placement(transformation(extent={{-60,20},{-40,40}}))); - CDL.Continuous.Sources.TimeTable tau( + Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable tau( table=[0,0.3; 0.1,0.5; 0.3,0.1; 0.7,0.5; 0.83,0.8; 0.85,0.5], smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) @@ -25,23 +25,23 @@ model ControlProcessModel "Test model for ControlProcessModel" Modelica.Blocks.Sources.RealExpression referenceL(y=tau.y[1]/(1 - tau.y[1])* referenceT.y) "Reference value for the time delay" annotation (Placement(transformation(extent={{-10,30},{10,50}}))); - CDL.Continuous.Sources.TimeTable u( + Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable u( table=[0,1; 0.1,0.5; 0.3,0.5; 0.7,0.5; 0.83,1; 0.85,1], smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) "The response of a relay controller" annotation (Placement(transformation(extent={{-60,50},{-40,70}}))); - CDL.Continuous.Sources.TimeTable tOff( + Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable tOff( table=[0,1; 0.1,1; 0.3,1; 0.7,3; 0.83,3; 0.85,3], smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) "The length of the Off period" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); - CDL.Logical.Sources.TimeTable tuningStart(table=[0,0; 0.1,0; 0.3,1; 0.7,1; + Buildings.Controls.OBC.CDL.Logical.Sources.TimeTable tuningStart(table=[0,0; 0.1,0; 0.3,1; 0.7,1; 0.83,1; 0.85,1], period=2) "Mimicking the signal for the tuning period start" annotation (Placement(transformation(extent={{-60,-80},{-40,-60}}))); - CDL.Logical.Sources.TimeTable tuningEnd(table=[0,0; 0.1,0; 0.3,0; 0.7,1; 0.83, + Buildings.Controls.OBC.CDL.Logical.Sources.TimeTable tuningEnd(table=[0,0; 0.1,0; 0.3,0; 0.7,1; 0.83, 1; 0.85,1], period=2) "Mimicking the signal for the tuning period end" annotation (Placement(transformation(extent={{-20,-80},{0,-60}}))); equation diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mo index ea85ace752e..f274f31fd07 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mo @@ -2,8 +2,9 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.F model Gain "Test model for Gain" extends Modelica.Icons.Example; Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Gain - gain "Calculates the gain" - annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + gain + "Calculates the gain" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable tOn( table=[0,0; 0.1,0.1; 0.3,0.1; 0.7,0.1; 0.83,0.1; 0.9,0.07], smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, @@ -22,7 +23,7 @@ model Gain "Test model for Gain" extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) "The response of a relay controller" annotation (Placement(transformation(extent={{-60,30},{-40,50}}))); - CDL.Logical.Sources.TimeTable tuningStart(table=[0,0; 0.1,1; 0.3,1; 0.7,1; + Buildings.Controls.OBC.CDL.Logical.Sources.TimeTable tuningStart(table=[0,0; 0.1,1; 0.3,1; 0.7,1; 0.83,1; 0.85,1], period=2) "Mimicking the signal for the tuning period start" annotation (Placement(transformation(extent={{-60,-80},{-40,-60}}))); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mo index 8fb6ba2ab55..632bbb89c39 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mo @@ -5,19 +5,19 @@ model TimeConstantDelay "Test model for TimeConstantDelay" timeConstantDelay(yLow=0.1) "Calculates the time constant and the time delay" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - CDL.Continuous.Sources.TimeTable tOn( + Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable tOn( table=[0,1; 0.1,1; 0.3,1; 0.7,1; 0.83,1; 0.85,2], smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) - "The length of the On period" + "Length of the On period" annotation (Placement(transformation(extent={{-60,20},{-40,40}}))); - CDL.Continuous.Sources.TimeTable k( + Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable k( table=[0,1; 0.1,1; 0.3,1; 0.7,1; 0.83,1], smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) "Gain of a first order time delay model" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); - CDL.Continuous.Sources.TimeTable ratioLT( + Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable ratioLT( table=[0,0.3; 0.1,0.5; 0.3,0.1; 0.7,0.5; 0.83,0.8; 0.85,0.5], smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/package.order index a6ea399cdf5..db47b547c82 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/package.order +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/package.order @@ -1,6 +1,6 @@ +AutoTuner Relay SystemIdentification -AutoTuner Validation BaseClasses PIDWithAutotuningAmigoFOTD From 147fa41156efeb4868f9d8e8fed455e5fa4cf21b Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 7 Aug 2022 21:02:08 -0400 Subject: [PATCH 013/214] remove the model inheritance and update the doc --- .../AutoTuner/AMIGO/PIDDerivativeTime.mo | 13 +- .../AutoTuner/AMIGO/PIDGain.mo | 13 +- .../AutoTuner/AMIGO/PIDIntegralTime.mo | 13 +- .../AutoTuner/AMIGO/PIGain.mo | 17 +- .../AutoTuner/AMIGO/PIIntegralTime.mo | 13 +- .../AutoTuner/AMIGO/Validation/PI.mo | 299 +++++++++++++-- .../AutoTuner/AMIGO/Validation/PID.mo | 343 ++++++++++++++++-- .../AMIGO/Validation/PIDDerivativeTime.mo | 329 ++++++++++++++++- .../AutoTuner/AMIGO/Validation/PIDGain.mo | 338 +++++++++++++++-- .../AMIGO/Validation/PIDIntegralTime.mo | 332 ++++++++++++++++- .../AutoTuner/AMIGO/Validation/PIGain.mo | 294 +++++++++++++-- .../AMIGO/Validation/PIIntegralTime.mo | 271 +++++++++++++- .../PIDWithAutotuning/BaseClasses/package.mo | 29 -- .../PIDWithAutotuningAmigoFOTD.mo | 117 +++++- .../PIDWithAutotuning/Relay/Control.mo | 2 +- .../Relay/HalfPeriodRatio.mo | 7 +- .../Relay/NormalizedTimeDelay.mo | 13 +- .../Relay/Validation/NormalizedTimeDelay.mo | 114 +++++- .../FirstOrderTimedelayed/Gain.mo | 11 +- .../TimeConstantDelay.mo | 19 +- .../Validation/ControlProcessModel.mo | 330 ++++++++++++++--- .../Validation/TimeConstantDelay.mo | 238 ++++++++++-- .../Validation/PIDWithAutotuningAmigoFOTD.mo | 57 +-- .../Validation/PIWithAutotuningAmigoFOTD.mo | 56 +-- .../Utilities/PIDWithAutotuning/package.order | 3 +- .../AutoTuner/Amigo/Validation/PI.mos | 4 +- .../AutoTuner/Amigo/Validation/PID.mos | 6 +- .../Amigo/Validation/PIDDerivativeTime.mos | 5 +- .../AutoTuner/Amigo/Validation/PIDGain.mos | 4 +- .../Amigo/Validation/PIDIntegralTime.mos | 4 +- .../AutoTuner/Amigo/Validation/PIGain.mos | 2 +- .../Amigo/Validation/PIIntegralTime.mos | 4 +- .../Relay/Validation/NormalizedTimeDelay.mos | 4 +- .../Validation/ControlProcessModel.mos | 5 +- .../Validation/TimeConstantDelay.mos | 4 +- ...Copy.mos => PIWithAutotuningAmigoFOTD.mos} | 0 36 files changed, 2940 insertions(+), 373 deletions(-) delete mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/BaseClasses/package.mo rename Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/{PIWithAutotuningAmigoFOTD - Copy.mos => PIWithAutotuningAmigoFOTD.mos} (100%) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo index e3b3879e712..5c7b8f315cf 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo @@ -58,10 +58,19 @@ First implementation
", info=" -

This block calculates the derivative time of a PID model, Td, by

-

Td = 0.5LT/(0.3L+T)

+

This block calculates the derivative time of a PID model.

+

Main equations

+

+Td = 0.5LT/(0.3L+T), +

where T is the time constant of the first-order time-delayed model;

L is the time delay of the first-order time-delayed model.

+

Validation

+

+This block was validated analytically, see + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Validation.PIDDerivativeTime. +

References

Åström, Karl Johan, and Tore Hägglund. "Revisiting the Ziegler–Nichols step response method for PID control." Journal of process control 14.6 (2004): 635-650.

")); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo index 7533631cc39..ee5a7a5f8f4 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo @@ -64,11 +64,20 @@ First implementation
", info=" -

This block calculates the control gain of a PID model, k, by

-

k = 1/kp + (0.2 + 0.45T/L)

+

This block calculates the control gain of a PID model.

+

Main equations

+

+k = 1/kp + (0.2 + 0.45T/L), +

where kp is the gain of the first-order time-delayed model;

T is the time constant of the first-order time-delayed model;

L is the time delay of the first-order time-delayed model.

+

Validation

+

+This block was validated analytically, see + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Validation.PIDGain. +

References

Åström, Karl Johan, and Tore Hägglund. "Revisiting the Ziegler–Nichols step response method for PID control." Journal of process control 14.6 (2004): 635-650.

")); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo index 9d220354801..0cc3430e0b4 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo @@ -68,10 +68,19 @@ First implementation
", info=" -

This block calculates the integral time of a PID model, Ti, by

-

Ti = (0.4L + 0.8T)/(L + 0.1T)L

+

This block calculates the integral time of a PID model.

+

Main equations

+

+Ti = (0.4L + 0.8T)/(L + 0.1T)L, +

where T is the time constant of the first-order time-delayed model;

L is the time delay of the first-order time-delayed model.

+

Validation

+

+This block was validated analytically, see + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Validation.PIDIntegralTime. +

References

Åström, Karl Johan, and Tore Hägglund. "Revisiting the Ziegler–Nichols step response method for PID control." Journal of process control 14.6 (2004): 635-650.

")); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo index 116f08f6ea3..80d6efce866 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo @@ -100,11 +100,22 @@ First implementation
", info=" -

This block calculates the control gain of a PI model, k, by

-

k = 0.15/kp + (0.35-LT/(L+T)2)(T/kp/L)

-

where kp is the gain of the first-order time-delayed model;

+

This block calculates the control gain of a PI model, k

+

Main equations

+

+k = 0.15/kp + (0.35-LT/(L+T)2)(T/kp/L), +

+

+where kp is the gain of the first-order time-delayed model; +

T is the time constant of the first-order time-delayed model;

L is the time delay of the first-order time-delayed model.

+

Validation

+

+This block was validated analytically, see + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Validation.PIGain. +

References

Garpinger, Olof, Tore Hägglund, and Karl Johan Åström (2014) "Performance and robustness trade-offs in PID control." Journal of Process Control 24.5 (2014): 568-577.

")); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo index e8f9589a013..bb095432c6e 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo @@ -96,10 +96,19 @@ First implementation
", info=" -

This block calculates the integral time of a PI model, Ti, by

-

Ti = 0.35L + 13LT2/(T2 + 12LT + 7L2)

+

This block calculates the integral time of a PI model

+

Main equations

+

+Ti = 0.35L + 13LT2/(T2 + 12LT + 7L2), +

where T is the time constant of the first-order time-delayed model;

L is the time delay of the first-order time-delayed model.

+

Validation

+

+This block was validated analytically, see + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Validation.PIIntegralTime. +

References

Garpinger, Olof, Tore Hägglund, and Karl Johan Åström (2014) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo index 9dbd6830d3b..35df6ee3f2b 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo @@ -4,33 +4,277 @@ model PI "Test model for PI" Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PI pI "Calculates the parameters for a PI controller" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp kp(duration=1, offset=1) - "Gain of the first order time-delayed model" - annotation (Placement(transformation(extent={{-60,30},{-40,50}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp T( - height=0.5, - duration=1, - offset=0.5) "Time constant of the first order time-delayed model" - annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp L( - height=0.3, - duration=1, - offset=0.3) "Time delay of the first order time-delayed model" - annotation (Placement(transformation(extent={{-60,-50},{-40,-30}}))); - Modelica.Blocks.Sources.RealExpression referencek(y=0.15/kp.y + (0.35 - L.y*T.y - /(L.y + T.y)/(L.y + T.y))*T.y/kp.y/L.y) "Reference value for the gain" - annotation (Placement(transformation(extent={{-10,50},{10,70}}))); - Modelica.Blocks.Sources.RealExpression referenceTi(y=0.35*L.y + 13*L.y*T.y*T.y - /(T.y*T.y + 12*L.y*T.y + 7*L.y*L.y)) - "Reference value for the integral time" - annotation (Placement(transformation(extent={{-10,30},{10,50}}))); + CDL.Continuous.Sources.TimeTable ReferenceData(table=[0,1,0.5,0.3,0.343,0.469; + 0.002,1.002,0.501,0.301,0.342,0.47; 0.004,1.004,0.502,0.301,0.341,0.471; + 0.006,1.006,0.503,0.302,0.341,0.472; 0.008,1.008,0.504,0.302,0.34,0.473; + 0.01,1.01,0.505,0.303,0.339,0.473; 0.012,1.012,0.506,0.304,0.339,0.474; + 0.014,1.014,0.507,0.304,0.338,0.475; 0.016,1.016,0.508,0.305,0.337, + 0.476; 0.018,1.018,0.509,0.305,0.337,0.477; 0.02,1.02,0.51,0.306,0.336, + 0.478; 0.022,1.022,0.511,0.307,0.335,0.479; 0.024,1.024,0.512,0.307, + 0.335,0.48; 0.026,1.026,0.513,0.308,0.334,0.481; 0.028,1.028,0.514, + 0.308,0.333,0.482; 0.03,1.03,0.515,0.309,0.333,0.483; 0.032,1.032,0.516, + 0.31,0.332,0.484; 0.034,1.034,0.517,0.31,0.331,0.485; 0.036,1.036,0.518, + 0.311,0.331,0.486; 0.038,1.038,0.519,0.311,0.33,0.487; 0.04,1.04,0.52, + 0.312,0.33,0.488; 0.042,1.042,0.521,0.313,0.329,0.488; 0.044,1.044, + 0.522,0.313,0.328,0.489; 0.046,1.046,0.523,0.314,0.328,0.49; 0.048, + 1.048,0.524,0.314,0.327,0.491; 0.05,1.05,0.525,0.315,0.326,0.492; 0.052, + 1.052,0.526,0.316,0.326,0.493; 0.054,1.054,0.527,0.316,0.325,0.494; + 0.056,1.056,0.528,0.317,0.325,0.495; 0.058,1.058,0.529,0.317,0.324, + 0.496; 0.06,1.06,0.53,0.318,0.323,0.497; 0.062,1.062,0.531,0.319,0.323, + 0.498; 0.064,1.064,0.532,0.319,0.322,0.499; 0.066,1.066,0.533,0.32, + 0.321,0.5; 0.068,1.068,0.534,0.32,0.321,0.501; 0.07,1.07,0.535,0.321, + 0.32,0.502; 0.072,1.072,0.536,0.322,0.32,0.503; 0.074,1.074,0.537,0.322, + 0.319,0.503; 0.076,1.076,0.538,0.323,0.319,0.504; 0.078,1.078,0.539, + 0.323,0.318,0.505; 0.08,1.08,0.54,0.324,0.317,0.506; 0.082,1.082,0.541, + 0.325,0.317,0.507; 0.084,1.084,0.542,0.325,0.316,0.508; 0.086,1.086, + 0.543,0.326,0.316,0.509; 0.088,1.088,0.544,0.326,0.315,0.51; 0.09,1.09, + 0.545,0.327,0.314,0.511; 0.092,1.092,0.546,0.328,0.314,0.512; 0.094, + 1.094,0.547,0.328,0.313,0.513; 0.096,1.096,0.548,0.329,0.313,0.514; + 0.098,1.098,0.549,0.329,0.312,0.515; 0.1,1.1,0.55,0.33,0.312,0.516; + 0.102,1.102,0.551,0.331,0.311,0.517; 0.104,1.104,0.552,0.331,0.31,0.518; + 0.106,1.106,0.553,0.332,0.31,0.518; 0.108,1.108,0.554,0.332,0.309,0.519; + 0.11,1.11,0.555,0.333,0.309,0.52; 0.112,1.112,0.556,0.334,0.308,0.521; + 0.114,1.114,0.557,0.334,0.308,0.522; 0.116,1.116,0.558,0.335,0.307, + 0.523; 0.118,1.118,0.559,0.335,0.307,0.524; 0.12,1.12,0.56,0.336,0.306, + 0.525; 0.122,1.122,0.561,0.337,0.305,0.526; 0.124,1.124,0.562,0.337, + 0.305,0.527; 0.126,1.126,0.563,0.338,0.304,0.528; 0.128,1.128,0.564, + 0.338,0.304,0.529; 0.13,1.13,0.565,0.339,0.303,0.53; 0.132,1.132,0.566, + 0.34,0.303,0.531; 0.134,1.134,0.567,0.34,0.302,0.532; 0.136,1.136,0.568, + 0.341,0.302,0.533; 0.138,1.138,0.569,0.341,0.301,0.534; 0.14,1.14,0.57, + 0.342,0.301,0.534; 0.142,1.142,0.571,0.343,0.3,0.535; 0.144,1.144,0.572, + 0.343,0.3,0.536; 0.146,1.146,0.573,0.344,0.299,0.537; 0.148,1.148,0.574, + 0.344,0.299,0.538; 0.15,1.15,0.575,0.345,0.298,0.539; 0.152,1.152,0.576, + 0.346,0.297,0.54; 0.154,1.154,0.577,0.346,0.297,0.541; 0.156,1.156, + 0.578,0.347,0.296,0.542; 0.158,1.158,0.579,0.347,0.296,0.543; 0.16,1.16, + 0.58,0.348,0.295,0.544; 0.162,1.162,0.581,0.349,0.295,0.545; 0.164, + 1.164,0.582,0.349,0.294,0.546; 0.166,1.166,0.583,0.35,0.294,0.547; + 0.168,1.168,0.584,0.35,0.293,0.548; 0.17,1.17,0.585,0.351,0.293,0.549; + 0.172,1.172,0.586,0.352,0.292,0.549; 0.174,1.174,0.587,0.352,0.292,0.55; + 0.176,1.176,0.588,0.353,0.291,0.551; 0.178,1.178,0.589,0.353,0.291, + 0.552; 0.18,1.18,0.59,0.354,0.29,0.553; 0.182,1.182,0.591,0.355,0.29, + 0.554; 0.184,1.184,0.592,0.355,0.289,0.555; 0.186,1.186,0.593,0.356, + 0.289,0.556; 0.188,1.188,0.594,0.356,0.288,0.557; 0.19,1.19,0.595,0.357, + 0.288,0.558; 0.192,1.192,0.596,0.358,0.288,0.559; 0.194,1.194,0.597, + 0.358,0.287,0.56; 0.196,1.196,0.598,0.359,0.287,0.561; 0.198,1.198, + 0.599,0.359,0.286,0.562; 0.2,1.2,0.6,0.36,0.286,0.563; 0.202,1.202, + 0.601,0.361,0.285,0.564; 0.204,1.204,0.602,0.361,0.285,0.564; 0.206, + 1.206,0.603,0.362,0.284,0.565; 0.208,1.208,0.604,0.362,0.284,0.566; + 0.21,1.21,0.605,0.363,0.283,0.567; 0.212,1.212,0.606,0.364,0.283,0.568; + 0.214,1.214,0.607,0.364,0.282,0.569; 0.216,1.216,0.608,0.365,0.282,0.57; + 0.218,1.218,0.609,0.365,0.281,0.571; 0.22,1.22,0.61,0.366,0.281,0.572; + 0.222,1.222,0.611,0.367,0.28,0.573; 0.224,1.224,0.612,0.367,0.28,0.574; + 0.226,1.226,0.613,0.368,0.28,0.575; 0.228,1.228,0.614,0.368,0.279,0.576; + 0.23,1.23,0.615,0.369,0.279,0.577; 0.232,1.232,0.616,0.37,0.278,0.578; + 0.234,1.234,0.617,0.37,0.278,0.579; 0.236,1.236,0.618,0.371,0.277,0.579; + 0.238,1.238,0.619,0.371,0.277,0.58; 0.24,1.24,0.62,0.372,0.276,0.581; + 0.242,1.242,0.621,0.373,0.276,0.582; 0.244,1.244,0.622,0.373,0.275, + 0.583; 0.246,1.246,0.623,0.374,0.275,0.584; 0.248,1.248,0.624,0.374, + 0.275,0.585; 0.25,1.25,0.625,0.375,0.274,0.586; 0.252,1.252,0.626,0.376, + 0.274,0.587; 0.254,1.254,0.627,0.376,0.273,0.588; 0.256,1.256,0.628, + 0.377,0.273,0.589; 0.258,1.258,0.629,0.377,0.272,0.59; 0.26,1.26,0.63, + 0.378,0.272,0.591; 0.262,1.262,0.631,0.379,0.272,0.592; 0.264,1.264, + 0.632,0.379,0.271,0.593; 0.266,1.266,0.633,0.38,0.271,0.594; 0.268, + 1.268,0.634,0.38,0.27,0.594; 0.27,1.27,0.635,0.381,0.27,0.595; 0.272, + 1.272,0.636,0.382,0.269,0.596; 0.274,1.274,0.637,0.382,0.269,0.597; + 0.276,1.276,0.638,0.383,0.269,0.598; 0.278,1.278,0.639,0.383,0.268, + 0.599; 0.28,1.28,0.64,0.384,0.268,0.6; 0.282,1.282,0.641,0.385,0.267, + 0.601; 0.284,1.284,0.642,0.385,0.267,0.602; 0.286,1.286,0.643,0.386, + 0.266,0.603; 0.288,1.288,0.644,0.386,0.266,0.604; 0.29,1.29,0.645,0.387, + 0.266,0.605; 0.292,1.292,0.646,0.388,0.265,0.606; 0.294,1.294,0.647, + 0.388,0.265,0.607; 0.296,1.296,0.648,0.389,0.264,0.608; 0.298,1.298, + 0.649,0.389,0.264,0.609; 0.3,1.3,0.65,0.39,0.264,0.609; 0.302,1.302, + 0.651,0.391,0.263,0.61; 0.304,1.304,0.652,0.391,0.263,0.611; 0.306, + 1.306,0.653,0.392,0.262,0.612; 0.308,1.308,0.654,0.392,0.262,0.613; + 0.31,1.31,0.655,0.393,0.262,0.614; 0.312,1.312,0.656,0.394,0.261,0.615; + 0.314,1.314,0.657,0.394,0.261,0.616; 0.316,1.316,0.658,0.395,0.26,0.617; + 0.318,1.318,0.659,0.395,0.26,0.618; 0.32,1.32,0.66,0.396,0.26,0.619; + 0.322,1.322,0.661,0.397,0.259,0.62; 0.324,1.324,0.662,0.397,0.259,0.621; + 0.326,1.326,0.663,0.398,0.258,0.622; 0.328,1.328,0.664,0.398,0.258, + 0.623; 0.33,1.33,0.665,0.399,0.258,0.624; 0.332,1.332,0.666,0.4,0.257, + 0.624; 0.334,1.334,0.667,0.4,0.257,0.625; 0.336,1.336,0.668,0.401,0.257, + 0.626; 0.338,1.338,0.669,0.401,0.256,0.627; 0.34,1.34,0.67,0.402,0.256, + 0.628; 0.342,1.342,0.671,0.403,0.255,0.629; 0.344,1.344,0.672,0.403, + 0.255,0.63; 0.346,1.346,0.673,0.404,0.255,0.631; 0.348,1.348,0.674, + 0.404,0.254,0.632; 0.35,1.35,0.675,0.405,0.254,0.633; 0.352,1.352,0.676, + 0.406,0.253,0.634; 0.354,1.354,0.677,0.406,0.253,0.635; 0.356,1.356, + 0.678,0.407,0.253,0.636; 0.358,1.358,0.679,0.407,0.252,0.637; 0.36,1.36, + 0.68,0.408,0.252,0.638; 0.362,1.362,0.681,0.409,0.252,0.639; 0.364, + 1.364,0.682,0.409,0.251,0.639; 0.366,1.366,0.683,0.41,0.251,0.64; 0.368, + 1.368,0.684,0.41,0.251,0.641; 0.37,1.37,0.685,0.411,0.25,0.642; 0.372, + 1.372,0.686,0.412,0.25,0.643; 0.374,1.374,0.687,0.412,0.249,0.644; + 0.376,1.376,0.688,0.413,0.249,0.645; 0.378,1.378,0.689,0.413,0.249, + 0.646; 0.38,1.38,0.69,0.414,0.248,0.647; 0.382,1.382,0.691,0.415,0.248, + 0.648; 0.384,1.384,0.692,0.415,0.248,0.649; 0.386,1.386,0.693,0.416, + 0.247,0.65; 0.388,1.388,0.694,0.416,0.247,0.651; 0.39,1.39,0.695,0.417, + 0.247,0.652; 0.392,1.392,0.696,0.418,0.246,0.653; 0.394,1.394,0.697, + 0.418,0.246,0.654; 0.396,1.396,0.698,0.419,0.245,0.654; 0.398,1.398, + 0.699,0.419,0.245,0.655; 0.4,1.4,0.7,0.42,0.245,0.656; 0.402,1.402, + 0.701,0.421,0.244,0.657; 0.404,1.404,0.702,0.421,0.244,0.658; 0.406, + 1.406,0.703,0.422,0.244,0.659; 0.408,1.408,0.704,0.422,0.243,0.66; 0.41, + 1.41,0.705,0.423,0.243,0.661; 0.412,1.412,0.706,0.424,0.243,0.662; + 0.414,1.414,0.707,0.424,0.242,0.663; 0.416,1.416,0.708,0.425,0.242, + 0.664; 0.418,1.418,0.709,0.425,0.242,0.665; 0.42,1.42,0.71,0.426,0.241, + 0.666; 0.422,1.422,0.711,0.427,0.241,0.667; 0.424,1.424,0.712,0.427, + 0.241,0.668; 0.426,1.426,0.713,0.428,0.24,0.669; 0.428,1.428,0.714, + 0.428,0.24,0.669; 0.43,1.43,0.715,0.429,0.24,0.67; 0.432,1.432,0.716, + 0.43,0.239,0.671; 0.434,1.434,0.717,0.43,0.239,0.672; 0.436,1.436,0.718, + 0.431,0.239,0.673; 0.438,1.438,0.719,0.431,0.238,0.674; 0.44,1.44,0.72, + 0.432,0.238,0.675; 0.442,1.442,0.721,0.433,0.238,0.676; 0.444,1.444, + 0.722,0.433,0.237,0.677; 0.446,1.446,0.723,0.434,0.237,0.678; 0.448, + 1.448,0.724,0.434,0.237,0.679; 0.45,1.45,0.725,0.435,0.236,0.68; 0.452, + 1.452,0.726,0.436,0.236,0.681; 0.454,1.454,0.727,0.436,0.236,0.682; + 0.456,1.456,0.728,0.437,0.235,0.683; 0.458,1.458,0.729,0.437,0.235, + 0.684; 0.46,1.46,0.73,0.438,0.235,0.684; 0.462,1.462,0.731,0.439,0.234, + 0.685; 0.464,1.464,0.732,0.439,0.234,0.686; 0.466,1.466,0.733,0.44, + 0.234,0.687; 0.468,1.468,0.734,0.44,0.233,0.688; 0.47,1.47,0.735,0.441, + 0.233,0.689; 0.472,1.472,0.736,0.442,0.233,0.69; 0.474,1.474,0.737, + 0.442,0.233,0.691; 0.476,1.476,0.738,0.443,0.232,0.692; 0.478,1.478, + 0.739,0.443,0.232,0.693; 0.48,1.48,0.74,0.444,0.232,0.694; 0.482,1.482, + 0.741,0.445,0.231,0.695; 0.484,1.484,0.742,0.445,0.231,0.696; 0.486, + 1.486,0.743,0.446,0.231,0.697; 0.488,1.488,0.744,0.446,0.23,0.698; 0.49, + 1.49,0.745,0.447,0.23,0.699; 0.492,1.492,0.746,0.448,0.23,0.699; 0.494, + 1.494,0.747,0.448,0.229,0.7; 0.496,1.496,0.748,0.449,0.229,0.701; 0.498, + 1.498,0.749,0.449,0.229,0.702; 0.5,1.5,0.75,0.45,0.228,0.703; 0.502, + 1.502,0.751,0.451,0.228,0.704; 0.504,1.504,0.752,0.451,0.228,0.705; + 0.506,1.506,0.753,0.452,0.228,0.706; 0.508,1.508,0.754,0.452,0.227, + 0.707; 0.51,1.51,0.755,0.453,0.227,0.708; 0.512,1.512,0.756,0.454,0.227, + 0.709; 0.514,1.514,0.757,0.454,0.226,0.71; 0.516,1.516,0.758,0.455, + 0.226,0.711; 0.518,1.518,0.759,0.455,0.226,0.712; 0.52,1.52,0.76,0.456, + 0.225,0.713; 0.522,1.522,0.761,0.457,0.225,0.714; 0.524,1.524,0.762, + 0.457,0.225,0.714; 0.526,1.526,0.763,0.458,0.225,0.715; 0.528,1.528, + 0.764,0.458,0.224,0.716; 0.53,1.53,0.765,0.459,0.224,0.717; 0.532,1.532, + 0.766,0.46,0.224,0.718; 0.534,1.534,0.767,0.46,0.223,0.719; 0.536,1.536, + 0.768,0.461,0.223,0.72; 0.538,1.538,0.769,0.461,0.223,0.721; 0.54,1.54, + 0.77,0.462,0.223,0.722; 0.542,1.542,0.771,0.463,0.222,0.723; 0.544, + 1.544,0.772,0.463,0.222,0.724; 0.546,1.546,0.773,0.464,0.222,0.725; + 0.548,1.548,0.774,0.464,0.221,0.726; 0.55,1.55,0.775,0.465,0.221,0.727; + 0.552,1.552,0.776,0.466,0.221,0.728; 0.554,1.554,0.777,0.466,0.221, + 0.729; 0.556,1.556,0.778,0.467,0.22,0.729; 0.558,1.558,0.779,0.467,0.22, + 0.73; 0.56,1.56,0.78,0.468,0.22,0.731; 0.562,1.562,0.781,0.469,0.219, + 0.732; 0.564,1.564,0.782,0.469,0.219,0.733; 0.566,1.566,0.783,0.47, + 0.219,0.734; 0.568,1.568,0.784,0.47,0.219,0.735; 0.57,1.57,0.785,0.471, + 0.218,0.736; 0.572,1.572,0.786,0.472,0.218,0.737; 0.574,1.574,0.787, + 0.472,0.218,0.738; 0.576,1.576,0.788,0.473,0.217,0.739; 0.578,1.578, + 0.789,0.473,0.217,0.74; 0.58,1.58,0.79,0.474,0.217,0.741; 0.582,1.582, + 0.791,0.475,0.217,0.742; 0.584,1.584,0.792,0.475,0.216,0.743; 0.586, + 1.586,0.793,0.476,0.216,0.744; 0.588,1.588,0.794,0.476,0.216,0.744; + 0.59,1.59,0.795,0.477,0.216,0.745; 0.592,1.592,0.796,0.478,0.215,0.746; + 0.594,1.594,0.797,0.478,0.215,0.747; 0.596,1.596,0.798,0.479,0.215, + 0.748; 0.598,1.598,0.799,0.479,0.214,0.749; 0.6,1.6,0.8,0.48,0.214,0.75; + 0.602,1.602,0.801,0.481,0.214,0.751; 0.604,1.604,0.802,0.481,0.214, + 0.752; 0.606,1.606,0.803,0.482,0.213,0.753; 0.608,1.608,0.804,0.482, + 0.213,0.754; 0.61,1.61,0.805,0.483,0.213,0.755; 0.612,1.612,0.806,0.484, + 0.213,0.756; 0.614,1.614,0.807,0.484,0.212,0.757; 0.616,1.616,0.808, + 0.485,0.212,0.758; 0.618,1.618,0.809,0.485,0.212,0.759; 0.62,1.62,0.81, + 0.486,0.212,0.759; 0.622,1.622,0.811,0.487,0.211,0.76; 0.624,1.624, + 0.812,0.487,0.211,0.761; 0.626,1.626,0.813,0.488,0.211,0.762; 0.628, + 1.628,0.814,0.488,0.211,0.763; 0.63,1.63,0.815,0.489,0.21,0.764; 0.632, + 1.632,0.816,0.49,0.21,0.765; 0.634,1.634,0.817,0.49,0.21,0.766; 0.636, + 1.636,0.818,0.491,0.209,0.767; 0.638,1.638,0.819,0.491,0.209,0.768; + 0.64,1.64,0.82,0.492,0.209,0.769; 0.642,1.642,0.821,0.493,0.209,0.77; + 0.644,1.644,0.822,0.493,0.208,0.771; 0.646,1.646,0.823,0.494,0.208, + 0.772; 0.648,1.648,0.824,0.494,0.208,0.773; 0.65,1.65,0.825,0.495,0.208, + 0.774; 0.652,1.652,0.826,0.496,0.207,0.774; 0.654,1.654,0.827,0.496, + 0.207,0.775; 0.656,1.656,0.828,0.497,0.207,0.776; 0.658,1.658,0.829, + 0.497,0.207,0.777; 0.66,1.66,0.83,0.498,0.206,0.778; 0.662,1.662,0.831, + 0.499,0.206,0.779; 0.664,1.664,0.832,0.499,0.206,0.78; 0.666,1.666, + 0.833,0.5,0.206,0.781; 0.668,1.668,0.834,0.5,0.205,0.782; 0.67,1.67, + 0.835,0.501,0.205,0.783; 0.672,1.672,0.836,0.502,0.205,0.784; 0.674, + 1.674,0.837,0.502,0.205,0.785; 0.676,1.676,0.838,0.503,0.204,0.786; + 0.678,1.678,0.839,0.503,0.204,0.787; 0.68,1.68,0.84,0.504,0.204,0.788; + 0.682,1.682,0.841,0.505,0.204,0.789; 0.684,1.684,0.842,0.505,0.204, + 0.789; 0.686,1.686,0.843,0.506,0.203,0.79; 0.688,1.688,0.844,0.506, + 0.203,0.791; 0.69,1.69,0.845,0.507,0.203,0.792; 0.692,1.692,0.846,0.508, + 0.203,0.793; 0.694,1.694,0.847,0.508,0.202,0.794; 0.696,1.696,0.848, + 0.509,0.202,0.795; 0.698,1.698,0.849,0.509,0.202,0.796; 0.7,1.7,0.85, + 0.51,0.202,0.797; 0.702,1.702,0.851,0.511,0.201,0.798; 0.704,1.704, + 0.852,0.511,0.201,0.799; 0.706,1.706,0.853,0.512,0.201,0.8; 0.708,1.708, + 0.854,0.512,0.201,0.801; 0.71,1.71,0.855,0.513,0.2,0.802; 0.712,1.712, + 0.856,0.514,0.2,0.803; 0.714,1.714,0.857,0.514,0.2,0.804; 0.716,1.716, + 0.858,0.515,0.2,0.804; 0.718,1.718,0.859,0.515,0.199,0.805; 0.72,1.72, + 0.86,0.516,0.199,0.806; 0.722,1.722,0.861,0.517,0.199,0.807; 0.724, + 1.724,0.862,0.517,0.199,0.808; 0.726,1.726,0.863,0.518,0.199,0.809; + 0.728,1.728,0.864,0.518,0.198,0.81; 0.73,1.73,0.865,0.519,0.198,0.811; + 0.732,1.732,0.866,0.52,0.198,0.812; 0.734,1.734,0.867,0.52,0.198,0.813; + 0.736,1.736,0.868,0.521,0.197,0.814; 0.738,1.738,0.869,0.521,0.197, + 0.815; 0.74,1.74,0.87,0.522,0.197,0.816; 0.742,1.742,0.871,0.523,0.197, + 0.817; 0.744,1.744,0.872,0.523,0.197,0.818; 0.746,1.746,0.873,0.524, + 0.196,0.819; 0.748,1.748,0.874,0.524,0.196,0.819; 0.75,1.75,0.875,0.525, + 0.196,0.82; 0.752,1.752,0.876,0.526,0.196,0.821; 0.754,1.754,0.877, + 0.526,0.195,0.822; 0.756,1.756,0.878,0.527,0.195,0.823; 0.758,1.758, + 0.879,0.527,0.195,0.824; 0.76,1.76,0.88,0.528,0.195,0.825; 0.762,1.762, + 0.881,0.529,0.194,0.826; 0.764,1.764,0.882,0.529,0.194,0.827; 0.766, + 1.766,0.883,0.53,0.194,0.828; 0.768,1.768,0.884,0.53,0.194,0.829; 0.77, + 1.77,0.885,0.531,0.194,0.83; 0.772,1.772,0.886,0.532,0.193,0.831; 0.774, + 1.774,0.887,0.532,0.193,0.832; 0.776,1.776,0.888,0.533,0.193,0.833; + 0.778,1.778,0.889,0.533,0.193,0.834; 0.78,1.78,0.89,0.534,0.193,0.834; + 0.782,1.782,0.891,0.535,0.192,0.835; 0.784,1.784,0.892,0.535,0.192, + 0.836; 0.786,1.786,0.893,0.536,0.192,0.837; 0.788,1.788,0.894,0.536, + 0.192,0.838; 0.79,1.79,0.895,0.537,0.191,0.839; 0.792,1.792,0.896,0.538, + 0.191,0.84; 0.794,1.794,0.897,0.538,0.191,0.841; 0.796,1.796,0.898, + 0.539,0.191,0.842; 0.798,1.798,0.899,0.539,0.191,0.843; 0.8,1.8,0.9, + 0.54,0.19,0.844; 0.802,1.802,0.901,0.541,0.19,0.845; 0.804,1.804,0.902, + 0.541,0.19,0.846; 0.806,1.806,0.903,0.542,0.19,0.847; 0.808,1.808,0.904, + 0.542,0.19,0.848; 0.81,1.81,0.905,0.543,0.189,0.849; 0.812,1.812,0.906, + 0.544,0.189,0.849; 0.814,1.814,0.907,0.544,0.189,0.85; 0.816,1.816, + 0.908,0.545,0.189,0.851; 0.818,1.818,0.909,0.545,0.189,0.852; 0.82,1.82, + 0.91,0.546,0.188,0.853; 0.822,1.822,0.911,0.547,0.188,0.854; 0.824, + 1.824,0.912,0.547,0.188,0.855; 0.826,1.826,0.913,0.548,0.188,0.856; + 0.828,1.828,0.914,0.548,0.187,0.857; 0.83,1.83,0.915,0.549,0.187,0.858; + 0.832,1.832,0.916,0.55,0.187,0.859; 0.834,1.834,0.917,0.55,0.187,0.86; + 0.836,1.836,0.918,0.551,0.187,0.861; 0.838,1.838,0.919,0.551,0.186, + 0.862; 0.84,1.84,0.92,0.552,0.186,0.863; 0.842,1.842,0.921,0.553,0.186, + 0.864; 0.844,1.844,0.922,0.553,0.186,0.864; 0.846,1.846,0.923,0.554, + 0.186,0.865; 0.848,1.848,0.924,0.554,0.185,0.866; 0.85,1.85,0.925,0.555, + 0.185,0.867; 0.852,1.852,0.926,0.556,0.185,0.868; 0.854,1.854,0.927, + 0.556,0.185,0.869; 0.856,1.856,0.928,0.557,0.185,0.87; 0.858,1.858, + 0.929,0.557,0.184,0.871; 0.86,1.86,0.93,0.558,0.184,0.872; 0.862,1.862, + 0.931,0.559,0.184,0.873; 0.864,1.864,0.932,0.559,0.184,0.874; 0.866, + 1.866,0.933,0.56,0.184,0.875; 0.868,1.868,0.934,0.56,0.183,0.876; 0.87, + 1.87,0.935,0.561,0.183,0.877; 0.872,1.872,0.936,0.562,0.183,0.878; + 0.874,1.874,0.937,0.562,0.183,0.879; 0.876,1.876,0.938,0.563,0.183, + 0.879; 0.878,1.878,0.939,0.563,0.182,0.88; 0.88,1.88,0.94,0.564,0.182, + 0.881; 0.882,1.882,0.941,0.565,0.182,0.882; 0.884,1.884,0.942,0.565, + 0.182,0.883; 0.886,1.886,0.943,0.566,0.182,0.884; 0.888,1.888,0.944, + 0.566,0.182,0.885; 0.89,1.89,0.945,0.567,0.181,0.886; 0.892,1.892,0.946, + 0.568,0.181,0.887; 0.894,1.894,0.947,0.568,0.181,0.888; 0.896,1.896, + 0.948,0.569,0.181,0.889; 0.898,1.898,0.949,0.569,0.181,0.89; 0.9,1.9, + 0.95,0.57,0.18,0.891; 0.902,1.902,0.951,0.571,0.18,0.892; 0.904,1.904, + 0.952,0.571,0.18,0.893; 0.906,1.906,0.953,0.572,0.18,0.894; 0.908,1.908, + 0.954,0.572,0.18,0.894; 0.91,1.91,0.955,0.573,0.179,0.895; 0.912,1.912, + 0.956,0.574,0.179,0.896; 0.914,1.914,0.957,0.574,0.179,0.897; 0.916, + 1.916,0.958,0.575,0.179,0.898; 0.918,1.918,0.959,0.575,0.179,0.899; + 0.92,1.92,0.96,0.576,0.178,0.9; 0.922,1.922,0.961,0.577,0.178,0.901; + 0.924,1.924,0.962,0.577,0.178,0.902; 0.926,1.926,0.963,0.578,0.178, + 0.903; 0.928,1.928,0.964,0.578,0.178,0.904; 0.93,1.93,0.965,0.579,0.178, + 0.905; 0.932,1.932,0.966,0.58,0.177,0.906; 0.934,1.934,0.967,0.58,0.177, + 0.907; 0.936,1.936,0.968,0.581,0.177,0.908; 0.938,1.938,0.969,0.581, + 0.177,0.909; 0.94,1.94,0.97,0.582,0.177,0.909; 0.942,1.942,0.971,0.583, + 0.176,0.91; 0.944,1.944,0.972,0.583,0.176,0.911; 0.946,1.946,0.973, + 0.584,0.176,0.912; 0.948,1.948,0.974,0.584,0.176,0.913; 0.95,1.95,0.975, + 0.585,0.176,0.914; 0.952,1.952,0.976,0.586,0.176,0.915; 0.954,1.954, + 0.977,0.586,0.175,0.916; 0.956,1.956,0.978,0.587,0.175,0.917; 0.958, + 1.958,0.979,0.587,0.175,0.918; 0.96,1.96,0.98,0.588,0.175,0.919; 0.962, + 1.962,0.981,0.589,0.175,0.92; 0.964,1.964,0.982,0.589,0.174,0.921; + 0.966,1.966,0.983,0.59,0.174,0.922; 0.968,1.968,0.984,0.59,0.174,0.923; + 0.97,1.97,0.985,0.591,0.174,0.924; 0.972,1.972,0.986,0.592,0.174,0.924; + 0.974,1.974,0.987,0.592,0.174,0.925; 0.976,1.976,0.988,0.593,0.173, + 0.926; 0.978,1.978,0.989,0.593,0.173,0.927; 0.98,1.98,0.99,0.594,0.173, + 0.928; 0.982,1.982,0.991,0.595,0.173,0.929; 0.984,1.984,0.992,0.595, + 0.173,0.93; 0.986,1.986,0.993,0.596,0.173,0.931; 0.988,1.988,0.994, + 0.596,0.172,0.932; 0.99,1.99,0.995,0.597,0.172,0.933; 0.992,1.992,0.996, + 0.598,0.172,0.934; 0.994,1.994,0.997,0.598,0.172,0.935; 0.996,1.996, + 0.998,0.599,0.172,0.936; 0.998,1.998,0.999,0.599,0.172,0.937; 1,2,1,0.6, + 0.171,0.938; 1,2,1,0.6,0.171,0.938], extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) + "Data for validating the PI block" + annotation (Placement(transformation(extent={{-58,-10},{-38,10}}))); equation - connect(L.y, pI.L) annotation (Line(points={{-38,-40},{-20,-40},{-20,-6},{-12, - -6}}, color={0,0,127})); - connect(T.y, pI.T) - annotation (Line(points={{-38,0},{-12,0}}, color={0,0,127})); - connect(pI.kp, kp.y) annotation (Line(points={{-12,6},{-20,6},{-20,40},{-38,40}}, - color={0,0,127})); + connect(ReferenceData.y[1], pI.kp) annotation (Line(points={{-36,0},{-20,0},{ + -20,6},{-12,6}}, color={0,0,127})); + connect(pI.T, ReferenceData.y[2]) + annotation (Line(points={{-12,0},{-36,0}}, color={0,0,127})); + connect(pI.L, ReferenceData.y[3]) annotation (Line(points={{-12,-6},{-20,-6}, + {-20,0},{-36,0}}, color={0,0,127})); annotation ( experiment( StopTime=1.0, @@ -52,5 +296,8 @@ Validation test for the block Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PI.

+

+The reference data is imported from a raw data that is generated with a Python implementation of this block. +

")); end PI; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo index c8f883f747e..ea3fa9d87bf 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo @@ -4,36 +4,320 @@ model PID "Test model for PID" Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PID pID "Calculates the parameters for a PI controller" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp kp(duration=1, offset=1) - "Gain of the first order time-delayed model" - annotation (Placement(transformation(extent={{-60,30},{-40,50}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp T( - height=0.5, - duration=1, - offset=0.5) "Time constant of the first order time-delayed model" + CDL.Continuous.Sources.TimeTable ReferenceData(table=[0,1,0.5,0.3,0.95,0.446, + 0.127; 0.002,1.002,0.501,0.301,0.948,0.447,0.127; 0.004,1.004,0.502, + 0.301,0.946,0.447,0.128; 0.006,1.006,0.503,0.302,0.944,0.448,0.128; + 0.008,1.008,0.504,0.302,0.942,0.449,0.128; 0.01,1.01,0.505,0.303,0.941, + 0.45,0.128; 0.012,1.012,0.506,0.304,0.939,0.451,0.129; 0.014,1.014, + 0.507,0.304,0.937,0.452,0.129; 0.016,1.016,0.508,0.305,0.935,0.453, + 0.129; 0.018,1.018,0.509,0.305,0.933,0.454,0.129; 0.02,1.02,0.51,0.306, + 0.931,0.455,0.13; 0.022,1.022,0.511,0.307,0.93,0.456,0.13; 0.024,1.024, + 0.512,0.307,0.928,0.456,0.13; 0.026,1.026,0.513,0.308,0.926,0.457,0.13; + 0.028,1.028,0.514,0.308,0.924,0.458,0.131; 0.03,1.03,0.515,0.309,0.922, + 0.459,0.131; 0.032,1.032,0.516,0.31,0.921,0.46,0.131; 0.034,1.034,0.517, + 0.31,0.919,0.461,0.131; 0.036,1.036,0.518,0.311,0.917,0.462,0.132; + 0.038,1.038,0.519,0.311,0.915,0.463,0.132; 0.04,1.04,0.52,0.312,0.913, + 0.464,0.132; 0.042,1.042,0.521,0.313,0.912,0.464,0.132; 0.044,1.044, + 0.522,0.313,0.91,0.465,0.133; 0.046,1.046,0.523,0.314,0.908,0.466,0.133; + 0.048,1.048,0.524,0.314,0.906,0.467,0.133; 0.05,1.05,0.525,0.315,0.905, + 0.468,0.133; 0.052,1.052,0.526,0.316,0.903,0.469,0.134; 0.054,1.054, + 0.527,0.316,0.901,0.47,0.134; 0.056,1.056,0.528,0.317,0.9,0.471,0.134; + 0.058,1.058,0.529,0.317,0.898,0.472,0.134; 0.06,1.06,0.53,0.318,0.896, + 0.472,0.135; 0.062,1.062,0.531,0.319,0.895,0.473,0.135; 0.064,1.064, + 0.532,0.319,0.893,0.474,0.135; 0.066,1.066,0.533,0.32,0.891,0.475,0.136; + 0.068,1.068,0.534,0.32,0.89,0.476,0.136; 0.07,1.07,0.535,0.321,0.888, + 0.477,0.136; 0.072,1.072,0.536,0.322,0.886,0.478,0.136; 0.074,1.074, + 0.537,0.322,0.885,0.479,0.137; 0.076,1.076,0.538,0.323,0.883,0.48,0.137; + 0.078,1.078,0.539,0.323,0.881,0.48,0.137; 0.08,1.08,0.54,0.324,0.88, + 0.481,0.137; 0.082,1.082,0.541,0.325,0.878,0.482,0.138; 0.084,1.084, + 0.542,0.325,0.876,0.483,0.138; 0.086,1.086,0.543,0.326,0.875,0.484, + 0.138; 0.088,1.088,0.544,0.326,0.873,0.485,0.138; 0.09,1.09,0.545,0.327, + 0.872,0.486,0.139; 0.092,1.092,0.546,0.328,0.87,0.487,0.139; 0.094, + 1.094,0.547,0.328,0.868,0.488,0.139; 0.096,1.096,0.548,0.329,0.867, + 0.489,0.139; 0.098,1.098,0.549,0.329,0.865,0.489,0.14; 0.1,1.1,0.55, + 0.33,0.864,0.49,0.14; 0.102,1.102,0.551,0.331,0.862,0.491,0.14; 0.104, + 1.104,0.552,0.331,0.861,0.492,0.14; 0.106,1.106,0.553,0.332,0.859,0.493, + 0.141; 0.108,1.108,0.554,0.332,0.857,0.494,0.141; 0.11,1.11,0.555,0.333, + 0.856,0.495,0.141; 0.112,1.112,0.556,0.334,0.854,0.496,0.141; 0.114, + 1.114,0.557,0.334,0.853,0.497,0.142; 0.116,1.116,0.558,0.335,0.851, + 0.497,0.142; 0.118,1.118,0.559,0.335,0.85,0.498,0.142; 0.12,1.12,0.56, + 0.336,0.848,0.499,0.142; 0.122,1.122,0.561,0.337,0.847,0.5,0.143; 0.124, + 1.124,0.562,0.337,0.845,0.501,0.143; 0.126,1.126,0.563,0.338,0.844, + 0.502,0.143; 0.128,1.128,0.564,0.338,0.842,0.503,0.143; 0.13,1.13,0.565, + 0.339,0.841,0.504,0.144; 0.132,1.132,0.566,0.34,0.839,0.505,0.144; + 0.134,1.134,0.567,0.34,0.838,0.505,0.144; 0.136,1.136,0.568,0.341,0.836, + 0.506,0.144; 0.138,1.138,0.569,0.341,0.835,0.507,0.145; 0.14,1.14,0.57, + 0.342,0.833,0.508,0.145; 0.142,1.142,0.571,0.343,0.832,0.509,0.145; + 0.144,1.144,0.572,0.343,0.83,0.51,0.145; 0.146,1.146,0.573,0.344,0.829, + 0.511,0.146; 0.148,1.148,0.574,0.344,0.828,0.512,0.146; 0.15,1.15,0.575, + 0.345,0.826,0.513,0.146; 0.152,1.152,0.576,0.346,0.825,0.513,0.146; + 0.154,1.154,0.577,0.346,0.823,0.514,0.147; 0.156,1.156,0.578,0.347, + 0.822,0.515,0.147; 0.158,1.158,0.579,0.347,0.82,0.516,0.147; 0.16,1.16, + 0.58,0.348,0.819,0.517,0.147; 0.162,1.162,0.581,0.349,0.818,0.518,0.148; + 0.164,1.164,0.582,0.349,0.816,0.519,0.148; 0.166,1.166,0.583,0.35,0.815, + 0.52,0.148; 0.168,1.168,0.584,0.35,0.813,0.521,0.148; 0.17,1.17,0.585, + 0.351,0.812,0.521,0.149; 0.172,1.172,0.586,0.352,0.811,0.522,0.149; + 0.174,1.174,0.587,0.352,0.809,0.523,0.149; 0.176,1.176,0.588,0.353, + 0.808,0.524,0.149; 0.178,1.178,0.589,0.353,0.806,0.525,0.15; 0.18,1.18, + 0.59,0.354,0.805,0.526,0.15; 0.182,1.182,0.591,0.355,0.804,0.527,0.15; + 0.184,1.184,0.592,0.355,0.802,0.528,0.151; 0.186,1.186,0.593,0.356, + 0.801,0.529,0.151; 0.188,1.188,0.594,0.356,0.8,0.53,0.151; 0.19,1.19, + 0.595,0.357,0.798,0.53,0.151; 0.192,1.192,0.596,0.358,0.797,0.531,0.152; + 0.194,1.194,0.597,0.358,0.796,0.532,0.152; 0.196,1.196,0.598,0.359, + 0.794,0.533,0.152; 0.198,1.198,0.599,0.359,0.793,0.534,0.152; 0.2,1.2, + 0.6,0.36,0.792,0.535,0.153; 0.202,1.202,0.601,0.361,0.79,0.536,0.153; + 0.204,1.204,0.602,0.361,0.789,0.537,0.153; 0.206,1.206,0.603,0.362, + 0.788,0.538,0.153; 0.208,1.208,0.604,0.362,0.786,0.538,0.154; 0.21,1.21, + 0.605,0.363,0.785,0.539,0.154; 0.212,1.212,0.606,0.364,0.784,0.54,0.154; + 0.214,1.214,0.607,0.364,0.783,0.541,0.154; 0.216,1.216,0.608,0.365, + 0.781,0.542,0.155; 0.218,1.218,0.609,0.365,0.78,0.543,0.155; 0.22,1.22, + 0.61,0.366,0.779,0.544,0.155; 0.222,1.222,0.611,0.367,0.777,0.545,0.155; + 0.224,1.224,0.612,0.367,0.776,0.546,0.156; 0.226,1.226,0.613,0.368, + 0.775,0.546,0.156; 0.228,1.228,0.614,0.368,0.774,0.547,0.156; 0.23,1.23, + 0.615,0.369,0.772,0.548,0.156; 0.232,1.232,0.616,0.37,0.771,0.549,0.157; + 0.234,1.234,0.617,0.37,0.77,0.55,0.157; 0.236,1.236,0.618,0.371,0.769, + 0.551,0.157; 0.238,1.238,0.619,0.371,0.767,0.552,0.157; 0.24,1.24,0.62, + 0.372,0.766,0.553,0.158; 0.242,1.242,0.621,0.373,0.765,0.554,0.158; + 0.244,1.244,0.622,0.373,0.764,0.554,0.158; 0.246,1.246,0.623,0.374, + 0.762,0.555,0.158; 0.248,1.248,0.624,0.374,0.761,0.556,0.159; 0.25,1.25, + 0.625,0.375,0.76,0.557,0.159; 0.252,1.252,0.626,0.376,0.759,0.558,0.159; + 0.254,1.254,0.627,0.376,0.758,0.559,0.159; 0.256,1.256,0.628,0.377, + 0.756,0.56,0.16; 0.258,1.258,0.629,0.377,0.755,0.561,0.16; 0.26,1.26, + 0.63,0.378,0.754,0.562,0.16; 0.262,1.262,0.631,0.379,0.753,0.562,0.16; + 0.264,1.264,0.632,0.379,0.752,0.563,0.161; 0.266,1.266,0.633,0.38,0.75, + 0.564,0.161; 0.268,1.268,0.634,0.38,0.749,0.565,0.161; 0.27,1.27,0.635, + 0.381,0.748,0.566,0.161; 0.272,1.272,0.636,0.382,0.747,0.567,0.162; + 0.274,1.274,0.637,0.382,0.746,0.568,0.162; 0.276,1.276,0.638,0.383, + 0.745,0.569,0.162; 0.278,1.278,0.639,0.383,0.743,0.57,0.162; 0.28,1.28, + 0.64,0.384,0.742,0.571,0.163; 0.282,1.282,0.641,0.385,0.741,0.571,0.163; + 0.284,1.284,0.642,0.385,0.74,0.572,0.163; 0.286,1.286,0.643,0.386,0.739, + 0.573,0.163; 0.288,1.288,0.644,0.386,0.738,0.574,0.164; 0.29,1.29,0.645, + 0.387,0.736,0.575,0.164; 0.292,1.292,0.646,0.388,0.735,0.576,0.164; + 0.294,1.294,0.647,0.388,0.734,0.577,0.164; 0.296,1.296,0.648,0.389, + 0.733,0.578,0.165; 0.298,1.298,0.649,0.389,0.732,0.579,0.165; 0.3,1.3, + 0.65,0.39,0.731,0.579,0.165; 0.302,1.302,0.651,0.391,0.73,0.58,0.166; + 0.304,1.304,0.652,0.391,0.729,0.581,0.166; 0.306,1.306,0.653,0.392, + 0.727,0.582,0.166; 0.308,1.308,0.654,0.392,0.726,0.583,0.166; 0.31,1.31, + 0.655,0.393,0.725,0.584,0.167; 0.312,1.312,0.656,0.394,0.724,0.585, + 0.167; 0.314,1.314,0.657,0.394,0.723,0.586,0.167; 0.316,1.316,0.658, + 0.395,0.722,0.587,0.167; 0.318,1.318,0.659,0.395,0.721,0.587,0.168; + 0.32,1.32,0.66,0.396,0.72,0.588,0.168; 0.322,1.322,0.661,0.397,0.719, + 0.589,0.168; 0.324,1.324,0.662,0.397,0.718,0.59,0.168; 0.326,1.326, + 0.663,0.398,0.716,0.591,0.169; 0.328,1.328,0.664,0.398,0.715,0.592, + 0.169; 0.33,1.33,0.665,0.399,0.714,0.593,0.169; 0.332,1.332,0.666,0.4, + 0.713,0.594,0.169; 0.334,1.334,0.667,0.4,0.712,0.595,0.17; 0.336,1.336, + 0.668,0.401,0.711,0.595,0.17; 0.338,1.338,0.669,0.401,0.71,0.596,0.17; + 0.34,1.34,0.67,0.402,0.709,0.597,0.17; 0.342,1.342,0.671,0.403,0.708, + 0.598,0.171; 0.344,1.344,0.672,0.403,0.707,0.599,0.171; 0.346,1.346, + 0.673,0.404,0.706,0.6,0.171; 0.348,1.348,0.674,0.404,0.705,0.601,0.171; + 0.35,1.35,0.675,0.405,0.704,0.602,0.172; 0.352,1.352,0.676,0.406,0.703, + 0.603,0.172; 0.354,1.354,0.677,0.406,0.702,0.603,0.172; 0.356,1.356, + 0.678,0.407,0.701,0.604,0.172; 0.358,1.358,0.679,0.407,0.7,0.605,0.173; + 0.36,1.36,0.68,0.408,0.699,0.606,0.173; 0.362,1.362,0.681,0.409,0.698, + 0.607,0.173; 0.364,1.364,0.682,0.409,0.696,0.608,0.173; 0.366,1.366, + 0.683,0.41,0.695,0.609,0.174; 0.368,1.368,0.684,0.41,0.694,0.61,0.174; + 0.37,1.37,0.685,0.411,0.693,0.611,0.174; 0.372,1.372,0.686,0.412,0.692, + 0.612,0.174; 0.374,1.374,0.687,0.412,0.691,0.612,0.175; 0.376,1.376, + 0.688,0.413,0.69,0.613,0.175; 0.378,1.378,0.689,0.413,0.689,0.614,0.175; + 0.38,1.38,0.69,0.414,0.688,0.615,0.175; 0.382,1.382,0.691,0.415,0.687, + 0.616,0.176; 0.384,1.384,0.692,0.415,0.686,0.617,0.176; 0.386,1.386, + 0.693,0.416,0.685,0.618,0.176; 0.388,1.388,0.694,0.416,0.684,0.619, + 0.176; 0.39,1.39,0.695,0.417,0.683,0.62,0.177; 0.392,1.392,0.696,0.418, + 0.682,0.62,0.177; 0.394,1.394,0.697,0.418,0.681,0.621,0.177; 0.396, + 1.396,0.698,0.419,0.681,0.622,0.177; 0.398,1.398,0.699,0.419,0.68,0.623, + 0.178; 0.4,1.4,0.7,0.42,0.679,0.624,0.178; 0.402,1.402,0.701,0.421, + 0.678,0.625,0.178; 0.404,1.404,0.702,0.421,0.677,0.626,0.178; 0.406, + 1.406,0.703,0.422,0.676,0.627,0.179; 0.408,1.408,0.704,0.422,0.675, + 0.628,0.179; 0.41,1.41,0.705,0.423,0.674,0.628,0.179; 0.412,1.412,0.706, + 0.424,0.673,0.629,0.179; 0.414,1.414,0.707,0.424,0.672,0.63,0.18; 0.416, + 1.416,0.708,0.425,0.671,0.631,0.18; 0.418,1.418,0.709,0.425,0.67,0.632, + 0.18; 0.42,1.42,0.71,0.426,0.669,0.633,0.181; 0.422,1.422,0.711,0.427, + 0.668,0.634,0.181; 0.424,1.424,0.712,0.427,0.667,0.635,0.181; 0.426, + 1.426,0.713,0.428,0.666,0.636,0.181; 0.428,1.428,0.714,0.428,0.665, + 0.636,0.182; 0.43,1.43,0.715,0.429,0.664,0.637,0.182; 0.432,1.432,0.716, + 0.43,0.663,0.638,0.182; 0.434,1.434,0.717,0.43,0.662,0.639,0.182; 0.436, + 1.436,0.718,0.431,0.662,0.64,0.183; 0.438,1.438,0.719,0.431,0.661,0.641, + 0.183; 0.44,1.44,0.72,0.432,0.66,0.642,0.183; 0.442,1.442,0.721,0.433, + 0.659,0.643,0.183; 0.444,1.444,0.722,0.433,0.658,0.644,0.184; 0.446, + 1.446,0.723,0.434,0.657,0.645,0.184; 0.448,1.448,0.724,0.434,0.656, + 0.645,0.184; 0.45,1.45,0.725,0.435,0.655,0.646,0.184; 0.452,1.452,0.726, + 0.436,0.654,0.647,0.185; 0.454,1.454,0.727,0.436,0.653,0.648,0.185; + 0.456,1.456,0.728,0.437,0.652,0.649,0.185; 0.458,1.458,0.729,0.437, + 0.652,0.65,0.185; 0.46,1.46,0.73,0.438,0.651,0.651,0.186; 0.462,1.462, + 0.731,0.439,0.65,0.652,0.186; 0.464,1.464,0.732,0.439,0.649,0.653,0.186; + 0.466,1.466,0.733,0.44,0.648,0.653,0.186; 0.468,1.468,0.734,0.44,0.647, + 0.654,0.187; 0.47,1.47,0.735,0.441,0.646,0.655,0.187; 0.472,1.472,0.736, + 0.442,0.645,0.656,0.187; 0.474,1.474,0.737,0.442,0.645,0.657,0.187; + 0.476,1.476,0.738,0.443,0.644,0.658,0.188; 0.478,1.478,0.739,0.443, + 0.643,0.659,0.188; 0.48,1.48,0.74,0.444,0.642,0.66,0.188; 0.482,1.482, + 0.741,0.445,0.641,0.661,0.188; 0.484,1.484,0.742,0.445,0.64,0.661,0.189; + 0.486,1.486,0.743,0.446,0.639,0.662,0.189; 0.488,1.488,0.744,0.446, + 0.638,0.663,0.189; 0.49,1.49,0.745,0.447,0.638,0.664,0.189; 0.492,1.492, + 0.746,0.448,0.637,0.665,0.19; 0.494,1.494,0.747,0.448,0.636,0.666,0.19; + 0.496,1.496,0.748,0.449,0.635,0.667,0.19; 0.498,1.498,0.749,0.449,0.634, + 0.668,0.19; 0.5,1.5,0.75,0.45,0.633,0.669,0.191; 0.502,1.502,0.751, + 0.451,0.632,0.669,0.191; 0.504,1.504,0.752,0.451,0.632,0.67,0.191; + 0.506,1.506,0.753,0.452,0.631,0.671,0.191; 0.508,1.508,0.754,0.452,0.63, + 0.672,0.192; 0.51,1.51,0.755,0.453,0.629,0.673,0.192; 0.512,1.512,0.756, + 0.454,0.628,0.674,0.192; 0.514,1.514,0.757,0.454,0.627,0.675,0.192; + 0.516,1.516,0.758,0.455,0.627,0.676,0.193; 0.518,1.518,0.759,0.455, + 0.626,0.677,0.193; 0.52,1.52,0.76,0.456,0.625,0.677,0.193; 0.522,1.522, + 0.761,0.457,0.624,0.678,0.193; 0.524,1.524,0.762,0.457,0.623,0.679, + 0.194; 0.526,1.526,0.763,0.458,0.623,0.68,0.194; 0.528,1.528,0.764, + 0.458,0.622,0.681,0.194; 0.53,1.53,0.765,0.459,0.621,0.682,0.194; 0.532, + 1.532,0.766,0.46,0.62,0.683,0.195; 0.534,1.534,0.767,0.46,0.619,0.684, + 0.195; 0.536,1.536,0.768,0.461,0.618,0.685,0.195; 0.538,1.538,0.769, + 0.461,0.618,0.686,0.196; 0.54,1.54,0.77,0.462,0.617,0.686,0.196; 0.542, + 1.542,0.771,0.463,0.616,0.687,0.196; 0.544,1.544,0.772,0.463,0.615, + 0.688,0.196; 0.546,1.546,0.773,0.464,0.614,0.689,0.197; 0.548,1.548, + 0.774,0.464,0.614,0.69,0.197; 0.55,1.55,0.775,0.465,0.613,0.691,0.197; + 0.552,1.552,0.776,0.466,0.612,0.692,0.197; 0.554,1.554,0.777,0.466, + 0.611,0.693,0.198; 0.556,1.556,0.778,0.467,0.611,0.694,0.198; 0.558, + 1.558,0.779,0.467,0.61,0.694,0.198; 0.56,1.56,0.78,0.468,0.609,0.695, + 0.198; 0.562,1.562,0.781,0.469,0.608,0.696,0.199; 0.564,1.564,0.782, + 0.469,0.607,0.697,0.199; 0.566,1.566,0.783,0.47,0.607,0.698,0.199; + 0.568,1.568,0.784,0.47,0.606,0.699,0.199; 0.57,1.57,0.785,0.471,0.605, + 0.7,0.2; 0.572,1.572,0.786,0.472,0.604,0.701,0.2; 0.574,1.574,0.787, + 0.472,0.604,0.702,0.2; 0.576,1.576,0.788,0.473,0.603,0.702,0.2; 0.578, + 1.578,0.789,0.473,0.602,0.703,0.201; 0.58,1.58,0.79,0.474,0.601,0.704, + 0.201; 0.582,1.582,0.791,0.475,0.601,0.705,0.201; 0.584,1.584,0.792, + 0.475,0.6,0.706,0.201; 0.586,1.586,0.793,0.476,0.599,0.707,0.202; 0.588, + 1.588,0.794,0.476,0.598,0.708,0.202; 0.59,1.59,0.795,0.477,0.597,0.709, + 0.202; 0.592,1.592,0.796,0.478,0.597,0.71,0.202; 0.594,1.594,0.797, + 0.478,0.596,0.71,0.203; 0.596,1.596,0.798,0.479,0.595,0.711,0.203; + 0.598,1.598,0.799,0.479,0.594,0.712,0.203; 0.6,1.6,0.8,0.48,0.594,0.713, + 0.203; 0.602,1.602,0.801,0.481,0.593,0.714,0.204; 0.604,1.604,0.802, + 0.481,0.592,0.715,0.204; 0.606,1.606,0.803,0.482,0.592,0.716,0.204; + 0.608,1.608,0.804,0.482,0.591,0.717,0.204; 0.61,1.61,0.805,0.483,0.59, + 0.718,0.205; 0.612,1.612,0.806,0.484,0.589,0.718,0.205; 0.614,1.614, + 0.807,0.484,0.589,0.719,0.205; 0.616,1.616,0.808,0.485,0.588,0.72,0.205; + 0.618,1.618,0.809,0.485,0.587,0.721,0.206; 0.62,1.62,0.81,0.486,0.586, + 0.722,0.206; 0.622,1.622,0.811,0.487,0.586,0.723,0.206; 0.624,1.624, + 0.812,0.487,0.585,0.724,0.206; 0.626,1.626,0.813,0.488,0.584,0.725, + 0.207; 0.628,1.628,0.814,0.488,0.584,0.726,0.207; 0.63,1.63,0.815,0.489, + 0.583,0.727,0.207; 0.632,1.632,0.816,0.49,0.582,0.727,0.207; 0.634, + 1.634,0.817,0.49,0.581,0.728,0.208; 0.636,1.636,0.818,0.491,0.581,0.729, + 0.208; 0.638,1.638,0.819,0.491,0.58,0.73,0.208; 0.64,1.64,0.82,0.492, + 0.579,0.731,0.208; 0.642,1.642,0.821,0.493,0.579,0.732,0.209; 0.644, + 1.644,0.822,0.493,0.578,0.733,0.209; 0.646,1.646,0.823,0.494,0.577, + 0.734,0.209; 0.648,1.648,0.824,0.494,0.576,0.735,0.209; 0.65,1.65,0.825, + 0.495,0.576,0.735,0.21; 0.652,1.652,0.826,0.496,0.575,0.736,0.21; 0.654, + 1.654,0.827,0.496,0.574,0.737,0.21; 0.656,1.656,0.828,0.497,0.574,0.738, + 0.211; 0.658,1.658,0.829,0.497,0.573,0.739,0.211; 0.66,1.66,0.83,0.498, + 0.572,0.74,0.211; 0.662,1.662,0.831,0.499,0.572,0.741,0.211; 0.664, + 1.664,0.832,0.499,0.571,0.742,0.212; 0.666,1.666,0.833,0.5,0.57,0.743, + 0.212; 0.668,1.668,0.834,0.5,0.57,0.743,0.212; 0.67,1.67,0.835,0.501, + 0.569,0.744,0.212; 0.672,1.672,0.836,0.502,0.568,0.745,0.213; 0.674, + 1.674,0.837,0.502,0.568,0.746,0.213; 0.676,1.676,0.838,0.503,0.567, + 0.747,0.213; 0.678,1.678,0.839,0.503,0.566,0.748,0.213; 0.68,1.68,0.84, + 0.504,0.565,0.749,0.214; 0.682,1.682,0.841,0.505,0.565,0.75,0.214; + 0.684,1.684,0.842,0.505,0.564,0.751,0.214; 0.686,1.686,0.843,0.506, + 0.563,0.751,0.214; 0.688,1.688,0.844,0.506,0.563,0.752,0.215; 0.69,1.69, + 0.845,0.507,0.562,0.753,0.215; 0.692,1.692,0.846,0.508,0.561,0.754, + 0.215; 0.694,1.694,0.847,0.508,0.561,0.755,0.215; 0.696,1.696,0.848, + 0.509,0.56,0.756,0.216; 0.698,1.698,0.849,0.509,0.559,0.757,0.216; 0.7, + 1.7,0.85,0.51,0.559,0.758,0.216; 0.702,1.702,0.851,0.511,0.558,0.759, + 0.216; 0.704,1.704,0.852,0.511,0.558,0.759,0.217; 0.706,1.706,0.853, + 0.512,0.557,0.76,0.217; 0.708,1.708,0.854,0.512,0.556,0.761,0.217; 0.71, + 1.71,0.855,0.513,0.556,0.762,0.217; 0.712,1.712,0.856,0.514,0.555,0.763, + 0.218; 0.714,1.714,0.857,0.514,0.554,0.764,0.218; 0.716,1.716,0.858, + 0.515,0.554,0.765,0.218; 0.718,1.718,0.859,0.515,0.553,0.766,0.218; + 0.72,1.72,0.86,0.516,0.552,0.767,0.219; 0.722,1.722,0.861,0.517,0.552, + 0.768,0.219; 0.724,1.724,0.862,0.517,0.551,0.768,0.219; 0.726,1.726, + 0.863,0.518,0.55,0.769,0.219; 0.728,1.728,0.864,0.518,0.55,0.77,0.22; + 0.73,1.73,0.865,0.519,0.549,0.771,0.22; 0.732,1.732,0.866,0.52,0.548, + 0.772,0.22; 0.734,1.734,0.867,0.52,0.548,0.773,0.22; 0.736,1.736,0.868, + 0.521,0.547,0.774,0.221; 0.738,1.738,0.869,0.521,0.547,0.775,0.221; + 0.74,1.74,0.87,0.522,0.546,0.776,0.221; 0.742,1.742,0.871,0.523,0.545, + 0.776,0.221; 0.744,1.744,0.872,0.523,0.545,0.777,0.222; 0.746,1.746, + 0.873,0.524,0.544,0.778,0.222; 0.748,1.748,0.874,0.524,0.543,0.779, + 0.222; 0.75,1.75,0.875,0.525,0.543,0.78,0.222; 0.752,1.752,0.876,0.526, + 0.542,0.781,0.223; 0.754,1.754,0.877,0.526,0.542,0.782,0.223; 0.756, + 1.756,0.878,0.527,0.541,0.783,0.223; 0.758,1.758,0.879,0.527,0.54,0.784, + 0.223; 0.76,1.76,0.88,0.528,0.54,0.784,0.224; 0.762,1.762,0.881,0.529, + 0.539,0.785,0.224; 0.764,1.764,0.882,0.529,0.539,0.786,0.224; 0.766, + 1.766,0.883,0.53,0.538,0.787,0.224; 0.768,1.768,0.884,0.53,0.537,0.788, + 0.225; 0.77,1.77,0.885,0.531,0.537,0.789,0.225; 0.772,1.772,0.886,0.532, + 0.536,0.79,0.225; 0.774,1.774,0.887,0.532,0.536,0.791,0.226; 0.776, + 1.776,0.888,0.533,0.535,0.792,0.226; 0.778,1.778,0.889,0.533,0.534, + 0.792,0.226; 0.78,1.78,0.89,0.534,0.534,0.793,0.226; 0.782,1.782,0.891, + 0.535,0.533,0.794,0.227; 0.784,1.784,0.892,0.535,0.533,0.795,0.227; + 0.786,1.786,0.893,0.536,0.532,0.796,0.227; 0.788,1.788,0.894,0.536, + 0.531,0.797,0.227; 0.79,1.79,0.895,0.537,0.531,0.798,0.228; 0.792,1.792, + 0.896,0.538,0.53,0.799,0.228; 0.794,1.794,0.897,0.538,0.53,0.8,0.228; + 0.796,1.796,0.898,0.539,0.529,0.801,0.228; 0.798,1.798,0.899,0.539, + 0.528,0.801,0.229; 0.8,1.8,0.9,0.54,0.528,0.802,0.229; 0.802,1.802, + 0.901,0.541,0.527,0.803,0.229; 0.804,1.804,0.902,0.541,0.527,0.804, + 0.229; 0.806,1.806,0.903,0.542,0.526,0.805,0.23; 0.808,1.808,0.904, + 0.542,0.525,0.806,0.23; 0.81,1.81,0.905,0.543,0.525,0.807,0.23; 0.812, + 1.812,0.906,0.544,0.524,0.808,0.23; 0.814,1.814,0.907,0.544,0.524,0.809, + 0.231; 0.816,1.816,0.908,0.545,0.523,0.809,0.231; 0.818,1.818,0.909, + 0.545,0.523,0.81,0.231; 0.82,1.82,0.91,0.546,0.522,0.811,0.231; 0.822, + 1.822,0.911,0.547,0.521,0.812,0.232; 0.824,1.824,0.912,0.547,0.521, + 0.813,0.232; 0.826,1.826,0.913,0.548,0.52,0.814,0.232; 0.828,1.828, + 0.914,0.548,0.52,0.815,0.232; 0.83,1.83,0.915,0.549,0.519,0.816,0.233; + 0.832,1.832,0.916,0.55,0.519,0.817,0.233; 0.834,1.834,0.917,0.55,0.518, + 0.817,0.233; 0.836,1.836,0.918,0.551,0.517,0.818,0.233; 0.838,1.838, + 0.919,0.551,0.517,0.819,0.234; 0.84,1.84,0.92,0.552,0.516,0.82,0.234; + 0.842,1.842,0.921,0.553,0.516,0.821,0.234; 0.844,1.844,0.922,0.553, + 0.515,0.822,0.234; 0.846,1.846,0.923,0.554,0.515,0.823,0.235; 0.848, + 1.848,0.924,0.554,0.514,0.824,0.235; 0.85,1.85,0.925,0.555,0.514,0.825, + 0.235; 0.852,1.852,0.926,0.556,0.513,0.825,0.235; 0.854,1.854,0.927, + 0.556,0.512,0.826,0.236; 0.856,1.856,0.928,0.557,0.512,0.827,0.236; + 0.858,1.858,0.929,0.557,0.511,0.828,0.236; 0.86,1.86,0.93,0.558,0.511, + 0.829,0.236; 0.862,1.862,0.931,0.559,0.51,0.83,0.237; 0.864,1.864,0.932, + 0.559,0.51,0.831,0.237; 0.866,1.866,0.933,0.56,0.509,0.832,0.237; 0.868, + 1.868,0.934,0.56,0.509,0.833,0.237; 0.87,1.87,0.935,0.561,0.508,0.833, + 0.238; 0.872,1.872,0.936,0.562,0.507,0.834,0.238; 0.874,1.874,0.937, + 0.562,0.507,0.835,0.238; 0.876,1.876,0.938,0.563,0.506,0.836,0.238; + 0.878,1.878,0.939,0.563,0.506,0.837,0.239; 0.88,1.88,0.94,0.564,0.505, + 0.838,0.239; 0.882,1.882,0.941,0.565,0.505,0.839,0.239; 0.884,1.884, + 0.942,0.565,0.504,0.84,0.239; 0.886,1.886,0.943,0.566,0.504,0.841,0.24; + 0.888,1.888,0.944,0.566,0.503,0.842,0.24; 0.89,1.89,0.945,0.567,0.503, + 0.842,0.24; 0.892,1.892,0.946,0.568,0.502,0.843,0.241; 0.894,1.894, + 0.947,0.568,0.502,0.844,0.241; 0.896,1.896,0.948,0.569,0.501,0.845, + 0.241; 0.898,1.898,0.949,0.569,0.501,0.846,0.241; 0.9,1.9,0.95,0.57,0.5, + 0.847,0.242; 0.902,1.902,0.951,0.571,0.499,0.848,0.242; 0.904,1.904, + 0.952,0.571,0.499,0.849,0.242; 0.906,1.906,0.953,0.572,0.498,0.85,0.242; + 0.908,1.908,0.954,0.572,0.498,0.85,0.243; 0.91,1.91,0.955,0.573,0.497, + 0.851,0.243; 0.912,1.912,0.956,0.574,0.497,0.852,0.243; 0.914,1.914, + 0.957,0.574,0.496,0.853,0.243; 0.916,1.916,0.958,0.575,0.496,0.854, + 0.244; 0.918,1.918,0.959,0.575,0.495,0.855,0.244; 0.92,1.92,0.96,0.576, + 0.495,0.856,0.244; 0.922,1.922,0.961,0.577,0.494,0.857,0.244; 0.924, + 1.924,0.962,0.577,0.494,0.858,0.245; 0.926,1.926,0.963,0.578,0.493, + 0.858,0.245; 0.928,1.928,0.964,0.578,0.493,0.859,0.245; 0.93,1.93,0.965, + 0.579,0.492,0.86,0.245; 0.932,1.932,0.966,0.58,0.492,0.861,0.246; 0.934, + 1.934,0.967,0.58,0.491,0.862,0.246; 0.936,1.936,0.968,0.581,0.491,0.863, + 0.246; 0.938,1.938,0.969,0.581,0.49,0.864,0.246; 0.94,1.94,0.97,0.582, + 0.49,0.865,0.247; 0.942,1.942,0.971,0.583,0.489,0.866,0.247; 0.944, + 1.944,0.972,0.583,0.489,0.866,0.247; 0.946,1.946,0.973,0.584,0.488, + 0.867,0.247; 0.948,1.948,0.974,0.584,0.488,0.868,0.248; 0.95,1.95,0.975, + 0.585,0.487,0.869,0.248; 0.952,1.952,0.976,0.586,0.487,0.87,0.248; + 0.954,1.954,0.977,0.586,0.486,0.871,0.248; 0.956,1.956,0.978,0.587, + 0.486,0.872,0.249; 0.958,1.958,0.979,0.587,0.485,0.873,0.249; 0.96,1.96, + 0.98,0.588,0.485,0.874,0.249; 0.962,1.962,0.981,0.589,0.484,0.874,0.249; + 0.964,1.964,0.982,0.589,0.484,0.875,0.25; 0.966,1.966,0.983,0.59,0.483, + 0.876,0.25; 0.968,1.968,0.984,0.59,0.483,0.877,0.25; 0.97,1.97,0.985, + 0.591,0.482,0.878,0.25; 0.972,1.972,0.986,0.592,0.482,0.879,0.251; + 0.974,1.974,0.987,0.592,0.481,0.88,0.251; 0.976,1.976,0.988,0.593,0.481, + 0.881,0.251; 0.978,1.978,0.989,0.593,0.48,0.882,0.251; 0.98,1.98,0.99, + 0.594,0.48,0.883,0.252; 0.982,1.982,0.991,0.595,0.479,0.883,0.252; + 0.984,1.984,0.992,0.595,0.479,0.884,0.252; 0.986,1.986,0.993,0.596, + 0.478,0.885,0.252; 0.988,1.988,0.994,0.596,0.478,0.886,0.253; 0.99,1.99, + 0.995,0.597,0.477,0.887,0.253; 0.992,1.992,0.996,0.598,0.477,0.888, + 0.253; 0.994,1.994,0.997,0.598,0.476,0.889,0.253; 0.996,1.996,0.998, + 0.599,0.476,0.89,0.254; 0.998,1.998,0.999,0.599,0.475,0.891,0.254; 1,2, + 1,0.6,0.475,0.891,0.254; 1,2,1,0.6,0.475,0.891,0.254], extrapolation= + Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) + "Data for validating the PIDDerivativeTime block" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp L( - height=0.3, - duration=1, - offset=0.3) "Time delay of the first order time-delayed model" - annotation (Placement(transformation(extent={{-60,-50},{-40,-30}}))); - Modelica.Blocks.Sources.RealExpression referencek(y=1/kp.y*(0.2 + 0.45*T.y/L.y)) - "Reference value for the gain" - annotation (Placement(transformation(extent={{-10,50},{10,70}}))); - Modelica.Blocks.Sources.RealExpression referenceTi(y=(0.4*L.y + 0.8*T.y)/(L.y + - 0.1*T.y)*L.y) - "Reference value for the integral time" - annotation (Placement(transformation(extent={{-10,32},{10,52}}))); - Modelica.Blocks.Sources.RealExpression referenceTd(y=0.5*L.y*T.y/(0.3*L.y + T.y)) - "Reference value for the derivative time" - annotation (Placement(transformation(extent={{-10,12},{10,32}}))); equation - connect(L.y, pID.L) annotation (Line(points={{-38,-40},{-20,-40},{-20,-6},{-12, - -6}}, color={0,0,127})); - connect(T.y, pID.T) - annotation (Line(points={{-38,0},{-12,0}}, color={0,0,127})); - connect(pID.kp, kp.y) annotation (Line(points={{-12,6},{-20,6},{-20,40},{-38,40}}, - color={0,0,127})); + connect(pID.kp, ReferenceData.y[1]) annotation (Line(points={{-12,6},{-20,6}, + {-20,0},{-38,0}}, color={0,0,127})); + connect(pID.T, ReferenceData.y[2]) + annotation (Line(points={{-12,0},{-38,0}}, color={0,0,127})); + connect(pID.L, ReferenceData.y[3]) annotation (Line(points={{-12,-6},{-20,-6}, + {-20,0},{-38,0}}, color={0,0,127})); annotation ( experiment( StopTime=1.0, @@ -55,5 +339,8 @@ Validation test for the block Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PID.

+

+The reference data is imported from a raw data that is generated with a Python implementation of this block. +

")); end PID; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mo index f875ca5c686..5be74f3801f 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mo @@ -4,24 +4,318 @@ model PIDDerivativeTime "Test model for PIDDerivativeTime" Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PIDDerivativeTime pIDDerivativeTime "Calculates the integral time for a PI controller" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - CDL.Continuous.Sources.Ramp T( - height=0.5, - duration=1, - offset=0.5) "Time constant of the first order time-delayed model" + CDL.Continuous.Sources.TimeTable ReferenceData(table=[0,1,0.5,0.3,0.95,0.446, + 0.127; 0.002,1.002,0.501,0.301,0.948,0.447,0.127; 0.004,1.004,0.502, + 0.301,0.946,0.447,0.128; 0.006,1.006,0.503,0.302,0.944,0.448,0.128; + 0.008,1.008,0.504,0.302,0.942,0.449,0.128; 0.01,1.01,0.505,0.303,0.941, + 0.45,0.128; 0.012,1.012,0.506,0.304,0.939,0.451,0.129; 0.014,1.014, + 0.507,0.304,0.937,0.452,0.129; 0.016,1.016,0.508,0.305,0.935,0.453, + 0.129; 0.018,1.018,0.509,0.305,0.933,0.454,0.129; 0.02,1.02,0.51,0.306, + 0.931,0.455,0.13; 0.022,1.022,0.511,0.307,0.93,0.456,0.13; 0.024,1.024, + 0.512,0.307,0.928,0.456,0.13; 0.026,1.026,0.513,0.308,0.926,0.457,0.13; + 0.028,1.028,0.514,0.308,0.924,0.458,0.131; 0.03,1.03,0.515,0.309,0.922, + 0.459,0.131; 0.032,1.032,0.516,0.31,0.921,0.46,0.131; 0.034,1.034,0.517, + 0.31,0.919,0.461,0.131; 0.036,1.036,0.518,0.311,0.917,0.462,0.132; + 0.038,1.038,0.519,0.311,0.915,0.463,0.132; 0.04,1.04,0.52,0.312,0.913, + 0.464,0.132; 0.042,1.042,0.521,0.313,0.912,0.464,0.132; 0.044,1.044, + 0.522,0.313,0.91,0.465,0.133; 0.046,1.046,0.523,0.314,0.908,0.466,0.133; + 0.048,1.048,0.524,0.314,0.906,0.467,0.133; 0.05,1.05,0.525,0.315,0.905, + 0.468,0.133; 0.052,1.052,0.526,0.316,0.903,0.469,0.134; 0.054,1.054, + 0.527,0.316,0.901,0.47,0.134; 0.056,1.056,0.528,0.317,0.9,0.471,0.134; + 0.058,1.058,0.529,0.317,0.898,0.472,0.134; 0.06,1.06,0.53,0.318,0.896, + 0.472,0.135; 0.062,1.062,0.531,0.319,0.895,0.473,0.135; 0.064,1.064, + 0.532,0.319,0.893,0.474,0.135; 0.066,1.066,0.533,0.32,0.891,0.475,0.136; + 0.068,1.068,0.534,0.32,0.89,0.476,0.136; 0.07,1.07,0.535,0.321,0.888, + 0.477,0.136; 0.072,1.072,0.536,0.322,0.886,0.478,0.136; 0.074,1.074, + 0.537,0.322,0.885,0.479,0.137; 0.076,1.076,0.538,0.323,0.883,0.48,0.137; + 0.078,1.078,0.539,0.323,0.881,0.48,0.137; 0.08,1.08,0.54,0.324,0.88, + 0.481,0.137; 0.082,1.082,0.541,0.325,0.878,0.482,0.138; 0.084,1.084, + 0.542,0.325,0.876,0.483,0.138; 0.086,1.086,0.543,0.326,0.875,0.484, + 0.138; 0.088,1.088,0.544,0.326,0.873,0.485,0.138; 0.09,1.09,0.545,0.327, + 0.872,0.486,0.139; 0.092,1.092,0.546,0.328,0.87,0.487,0.139; 0.094, + 1.094,0.547,0.328,0.868,0.488,0.139; 0.096,1.096,0.548,0.329,0.867, + 0.489,0.139; 0.098,1.098,0.549,0.329,0.865,0.489,0.14; 0.1,1.1,0.55, + 0.33,0.864,0.49,0.14; 0.102,1.102,0.551,0.331,0.862,0.491,0.14; 0.104, + 1.104,0.552,0.331,0.861,0.492,0.14; 0.106,1.106,0.553,0.332,0.859,0.493, + 0.141; 0.108,1.108,0.554,0.332,0.857,0.494,0.141; 0.11,1.11,0.555,0.333, + 0.856,0.495,0.141; 0.112,1.112,0.556,0.334,0.854,0.496,0.141; 0.114, + 1.114,0.557,0.334,0.853,0.497,0.142; 0.116,1.116,0.558,0.335,0.851, + 0.497,0.142; 0.118,1.118,0.559,0.335,0.85,0.498,0.142; 0.12,1.12,0.56, + 0.336,0.848,0.499,0.142; 0.122,1.122,0.561,0.337,0.847,0.5,0.143; 0.124, + 1.124,0.562,0.337,0.845,0.501,0.143; 0.126,1.126,0.563,0.338,0.844, + 0.502,0.143; 0.128,1.128,0.564,0.338,0.842,0.503,0.143; 0.13,1.13,0.565, + 0.339,0.841,0.504,0.144; 0.132,1.132,0.566,0.34,0.839,0.505,0.144; + 0.134,1.134,0.567,0.34,0.838,0.505,0.144; 0.136,1.136,0.568,0.341,0.836, + 0.506,0.144; 0.138,1.138,0.569,0.341,0.835,0.507,0.145; 0.14,1.14,0.57, + 0.342,0.833,0.508,0.145; 0.142,1.142,0.571,0.343,0.832,0.509,0.145; + 0.144,1.144,0.572,0.343,0.83,0.51,0.145; 0.146,1.146,0.573,0.344,0.829, + 0.511,0.146; 0.148,1.148,0.574,0.344,0.828,0.512,0.146; 0.15,1.15,0.575, + 0.345,0.826,0.513,0.146; 0.152,1.152,0.576,0.346,0.825,0.513,0.146; + 0.154,1.154,0.577,0.346,0.823,0.514,0.147; 0.156,1.156,0.578,0.347, + 0.822,0.515,0.147; 0.158,1.158,0.579,0.347,0.82,0.516,0.147; 0.16,1.16, + 0.58,0.348,0.819,0.517,0.147; 0.162,1.162,0.581,0.349,0.818,0.518,0.148; + 0.164,1.164,0.582,0.349,0.816,0.519,0.148; 0.166,1.166,0.583,0.35,0.815, + 0.52,0.148; 0.168,1.168,0.584,0.35,0.813,0.521,0.148; 0.17,1.17,0.585, + 0.351,0.812,0.521,0.149; 0.172,1.172,0.586,0.352,0.811,0.522,0.149; + 0.174,1.174,0.587,0.352,0.809,0.523,0.149; 0.176,1.176,0.588,0.353, + 0.808,0.524,0.149; 0.178,1.178,0.589,0.353,0.806,0.525,0.15; 0.18,1.18, + 0.59,0.354,0.805,0.526,0.15; 0.182,1.182,0.591,0.355,0.804,0.527,0.15; + 0.184,1.184,0.592,0.355,0.802,0.528,0.151; 0.186,1.186,0.593,0.356, + 0.801,0.529,0.151; 0.188,1.188,0.594,0.356,0.8,0.53,0.151; 0.19,1.19, + 0.595,0.357,0.798,0.53,0.151; 0.192,1.192,0.596,0.358,0.797,0.531,0.152; + 0.194,1.194,0.597,0.358,0.796,0.532,0.152; 0.196,1.196,0.598,0.359, + 0.794,0.533,0.152; 0.198,1.198,0.599,0.359,0.793,0.534,0.152; 0.2,1.2, + 0.6,0.36,0.792,0.535,0.153; 0.202,1.202,0.601,0.361,0.79,0.536,0.153; + 0.204,1.204,0.602,0.361,0.789,0.537,0.153; 0.206,1.206,0.603,0.362, + 0.788,0.538,0.153; 0.208,1.208,0.604,0.362,0.786,0.538,0.154; 0.21,1.21, + 0.605,0.363,0.785,0.539,0.154; 0.212,1.212,0.606,0.364,0.784,0.54,0.154; + 0.214,1.214,0.607,0.364,0.783,0.541,0.154; 0.216,1.216,0.608,0.365, + 0.781,0.542,0.155; 0.218,1.218,0.609,0.365,0.78,0.543,0.155; 0.22,1.22, + 0.61,0.366,0.779,0.544,0.155; 0.222,1.222,0.611,0.367,0.777,0.545,0.155; + 0.224,1.224,0.612,0.367,0.776,0.546,0.156; 0.226,1.226,0.613,0.368, + 0.775,0.546,0.156; 0.228,1.228,0.614,0.368,0.774,0.547,0.156; 0.23,1.23, + 0.615,0.369,0.772,0.548,0.156; 0.232,1.232,0.616,0.37,0.771,0.549,0.157; + 0.234,1.234,0.617,0.37,0.77,0.55,0.157; 0.236,1.236,0.618,0.371,0.769, + 0.551,0.157; 0.238,1.238,0.619,0.371,0.767,0.552,0.157; 0.24,1.24,0.62, + 0.372,0.766,0.553,0.158; 0.242,1.242,0.621,0.373,0.765,0.554,0.158; + 0.244,1.244,0.622,0.373,0.764,0.554,0.158; 0.246,1.246,0.623,0.374, + 0.762,0.555,0.158; 0.248,1.248,0.624,0.374,0.761,0.556,0.159; 0.25,1.25, + 0.625,0.375,0.76,0.557,0.159; 0.252,1.252,0.626,0.376,0.759,0.558,0.159; + 0.254,1.254,0.627,0.376,0.758,0.559,0.159; 0.256,1.256,0.628,0.377, + 0.756,0.56,0.16; 0.258,1.258,0.629,0.377,0.755,0.561,0.16; 0.26,1.26, + 0.63,0.378,0.754,0.562,0.16; 0.262,1.262,0.631,0.379,0.753,0.562,0.16; + 0.264,1.264,0.632,0.379,0.752,0.563,0.161; 0.266,1.266,0.633,0.38,0.75, + 0.564,0.161; 0.268,1.268,0.634,0.38,0.749,0.565,0.161; 0.27,1.27,0.635, + 0.381,0.748,0.566,0.161; 0.272,1.272,0.636,0.382,0.747,0.567,0.162; + 0.274,1.274,0.637,0.382,0.746,0.568,0.162; 0.276,1.276,0.638,0.383, + 0.745,0.569,0.162; 0.278,1.278,0.639,0.383,0.743,0.57,0.162; 0.28,1.28, + 0.64,0.384,0.742,0.571,0.163; 0.282,1.282,0.641,0.385,0.741,0.571,0.163; + 0.284,1.284,0.642,0.385,0.74,0.572,0.163; 0.286,1.286,0.643,0.386,0.739, + 0.573,0.163; 0.288,1.288,0.644,0.386,0.738,0.574,0.164; 0.29,1.29,0.645, + 0.387,0.736,0.575,0.164; 0.292,1.292,0.646,0.388,0.735,0.576,0.164; + 0.294,1.294,0.647,0.388,0.734,0.577,0.164; 0.296,1.296,0.648,0.389, + 0.733,0.578,0.165; 0.298,1.298,0.649,0.389,0.732,0.579,0.165; 0.3,1.3, + 0.65,0.39,0.731,0.579,0.165; 0.302,1.302,0.651,0.391,0.73,0.58,0.166; + 0.304,1.304,0.652,0.391,0.729,0.581,0.166; 0.306,1.306,0.653,0.392, + 0.727,0.582,0.166; 0.308,1.308,0.654,0.392,0.726,0.583,0.166; 0.31,1.31, + 0.655,0.393,0.725,0.584,0.167; 0.312,1.312,0.656,0.394,0.724,0.585, + 0.167; 0.314,1.314,0.657,0.394,0.723,0.586,0.167; 0.316,1.316,0.658, + 0.395,0.722,0.587,0.167; 0.318,1.318,0.659,0.395,0.721,0.587,0.168; + 0.32,1.32,0.66,0.396,0.72,0.588,0.168; 0.322,1.322,0.661,0.397,0.719, + 0.589,0.168; 0.324,1.324,0.662,0.397,0.718,0.59,0.168; 0.326,1.326, + 0.663,0.398,0.716,0.591,0.169; 0.328,1.328,0.664,0.398,0.715,0.592, + 0.169; 0.33,1.33,0.665,0.399,0.714,0.593,0.169; 0.332,1.332,0.666,0.4, + 0.713,0.594,0.169; 0.334,1.334,0.667,0.4,0.712,0.595,0.17; 0.336,1.336, + 0.668,0.401,0.711,0.595,0.17; 0.338,1.338,0.669,0.401,0.71,0.596,0.17; + 0.34,1.34,0.67,0.402,0.709,0.597,0.17; 0.342,1.342,0.671,0.403,0.708, + 0.598,0.171; 0.344,1.344,0.672,0.403,0.707,0.599,0.171; 0.346,1.346, + 0.673,0.404,0.706,0.6,0.171; 0.348,1.348,0.674,0.404,0.705,0.601,0.171; + 0.35,1.35,0.675,0.405,0.704,0.602,0.172; 0.352,1.352,0.676,0.406,0.703, + 0.603,0.172; 0.354,1.354,0.677,0.406,0.702,0.603,0.172; 0.356,1.356, + 0.678,0.407,0.701,0.604,0.172; 0.358,1.358,0.679,0.407,0.7,0.605,0.173; + 0.36,1.36,0.68,0.408,0.699,0.606,0.173; 0.362,1.362,0.681,0.409,0.698, + 0.607,0.173; 0.364,1.364,0.682,0.409,0.696,0.608,0.173; 0.366,1.366, + 0.683,0.41,0.695,0.609,0.174; 0.368,1.368,0.684,0.41,0.694,0.61,0.174; + 0.37,1.37,0.685,0.411,0.693,0.611,0.174; 0.372,1.372,0.686,0.412,0.692, + 0.612,0.174; 0.374,1.374,0.687,0.412,0.691,0.612,0.175; 0.376,1.376, + 0.688,0.413,0.69,0.613,0.175; 0.378,1.378,0.689,0.413,0.689,0.614,0.175; + 0.38,1.38,0.69,0.414,0.688,0.615,0.175; 0.382,1.382,0.691,0.415,0.687, + 0.616,0.176; 0.384,1.384,0.692,0.415,0.686,0.617,0.176; 0.386,1.386, + 0.693,0.416,0.685,0.618,0.176; 0.388,1.388,0.694,0.416,0.684,0.619, + 0.176; 0.39,1.39,0.695,0.417,0.683,0.62,0.177; 0.392,1.392,0.696,0.418, + 0.682,0.62,0.177; 0.394,1.394,0.697,0.418,0.681,0.621,0.177; 0.396, + 1.396,0.698,0.419,0.681,0.622,0.177; 0.398,1.398,0.699,0.419,0.68,0.623, + 0.178; 0.4,1.4,0.7,0.42,0.679,0.624,0.178; 0.402,1.402,0.701,0.421, + 0.678,0.625,0.178; 0.404,1.404,0.702,0.421,0.677,0.626,0.178; 0.406, + 1.406,0.703,0.422,0.676,0.627,0.179; 0.408,1.408,0.704,0.422,0.675, + 0.628,0.179; 0.41,1.41,0.705,0.423,0.674,0.628,0.179; 0.412,1.412,0.706, + 0.424,0.673,0.629,0.179; 0.414,1.414,0.707,0.424,0.672,0.63,0.18; 0.416, + 1.416,0.708,0.425,0.671,0.631,0.18; 0.418,1.418,0.709,0.425,0.67,0.632, + 0.18; 0.42,1.42,0.71,0.426,0.669,0.633,0.181; 0.422,1.422,0.711,0.427, + 0.668,0.634,0.181; 0.424,1.424,0.712,0.427,0.667,0.635,0.181; 0.426, + 1.426,0.713,0.428,0.666,0.636,0.181; 0.428,1.428,0.714,0.428,0.665, + 0.636,0.182; 0.43,1.43,0.715,0.429,0.664,0.637,0.182; 0.432,1.432,0.716, + 0.43,0.663,0.638,0.182; 0.434,1.434,0.717,0.43,0.662,0.639,0.182; 0.436, + 1.436,0.718,0.431,0.662,0.64,0.183; 0.438,1.438,0.719,0.431,0.661,0.641, + 0.183; 0.44,1.44,0.72,0.432,0.66,0.642,0.183; 0.442,1.442,0.721,0.433, + 0.659,0.643,0.183; 0.444,1.444,0.722,0.433,0.658,0.644,0.184; 0.446, + 1.446,0.723,0.434,0.657,0.645,0.184; 0.448,1.448,0.724,0.434,0.656, + 0.645,0.184; 0.45,1.45,0.725,0.435,0.655,0.646,0.184; 0.452,1.452,0.726, + 0.436,0.654,0.647,0.185; 0.454,1.454,0.727,0.436,0.653,0.648,0.185; + 0.456,1.456,0.728,0.437,0.652,0.649,0.185; 0.458,1.458,0.729,0.437, + 0.652,0.65,0.185; 0.46,1.46,0.73,0.438,0.651,0.651,0.186; 0.462,1.462, + 0.731,0.439,0.65,0.652,0.186; 0.464,1.464,0.732,0.439,0.649,0.653,0.186; + 0.466,1.466,0.733,0.44,0.648,0.653,0.186; 0.468,1.468,0.734,0.44,0.647, + 0.654,0.187; 0.47,1.47,0.735,0.441,0.646,0.655,0.187; 0.472,1.472,0.736, + 0.442,0.645,0.656,0.187; 0.474,1.474,0.737,0.442,0.645,0.657,0.187; + 0.476,1.476,0.738,0.443,0.644,0.658,0.188; 0.478,1.478,0.739,0.443, + 0.643,0.659,0.188; 0.48,1.48,0.74,0.444,0.642,0.66,0.188; 0.482,1.482, + 0.741,0.445,0.641,0.661,0.188; 0.484,1.484,0.742,0.445,0.64,0.661,0.189; + 0.486,1.486,0.743,0.446,0.639,0.662,0.189; 0.488,1.488,0.744,0.446, + 0.638,0.663,0.189; 0.49,1.49,0.745,0.447,0.638,0.664,0.189; 0.492,1.492, + 0.746,0.448,0.637,0.665,0.19; 0.494,1.494,0.747,0.448,0.636,0.666,0.19; + 0.496,1.496,0.748,0.449,0.635,0.667,0.19; 0.498,1.498,0.749,0.449,0.634, + 0.668,0.19; 0.5,1.5,0.75,0.45,0.633,0.669,0.191; 0.502,1.502,0.751, + 0.451,0.632,0.669,0.191; 0.504,1.504,0.752,0.451,0.632,0.67,0.191; + 0.506,1.506,0.753,0.452,0.631,0.671,0.191; 0.508,1.508,0.754,0.452,0.63, + 0.672,0.192; 0.51,1.51,0.755,0.453,0.629,0.673,0.192; 0.512,1.512,0.756, + 0.454,0.628,0.674,0.192; 0.514,1.514,0.757,0.454,0.627,0.675,0.192; + 0.516,1.516,0.758,0.455,0.627,0.676,0.193; 0.518,1.518,0.759,0.455, + 0.626,0.677,0.193; 0.52,1.52,0.76,0.456,0.625,0.677,0.193; 0.522,1.522, + 0.761,0.457,0.624,0.678,0.193; 0.524,1.524,0.762,0.457,0.623,0.679, + 0.194; 0.526,1.526,0.763,0.458,0.623,0.68,0.194; 0.528,1.528,0.764, + 0.458,0.622,0.681,0.194; 0.53,1.53,0.765,0.459,0.621,0.682,0.194; 0.532, + 1.532,0.766,0.46,0.62,0.683,0.195; 0.534,1.534,0.767,0.46,0.619,0.684, + 0.195; 0.536,1.536,0.768,0.461,0.618,0.685,0.195; 0.538,1.538,0.769, + 0.461,0.618,0.686,0.196; 0.54,1.54,0.77,0.462,0.617,0.686,0.196; 0.542, + 1.542,0.771,0.463,0.616,0.687,0.196; 0.544,1.544,0.772,0.463,0.615, + 0.688,0.196; 0.546,1.546,0.773,0.464,0.614,0.689,0.197; 0.548,1.548, + 0.774,0.464,0.614,0.69,0.197; 0.55,1.55,0.775,0.465,0.613,0.691,0.197; + 0.552,1.552,0.776,0.466,0.612,0.692,0.197; 0.554,1.554,0.777,0.466, + 0.611,0.693,0.198; 0.556,1.556,0.778,0.467,0.611,0.694,0.198; 0.558, + 1.558,0.779,0.467,0.61,0.694,0.198; 0.56,1.56,0.78,0.468,0.609,0.695, + 0.198; 0.562,1.562,0.781,0.469,0.608,0.696,0.199; 0.564,1.564,0.782, + 0.469,0.607,0.697,0.199; 0.566,1.566,0.783,0.47,0.607,0.698,0.199; + 0.568,1.568,0.784,0.47,0.606,0.699,0.199; 0.57,1.57,0.785,0.471,0.605, + 0.7,0.2; 0.572,1.572,0.786,0.472,0.604,0.701,0.2; 0.574,1.574,0.787, + 0.472,0.604,0.702,0.2; 0.576,1.576,0.788,0.473,0.603,0.702,0.2; 0.578, + 1.578,0.789,0.473,0.602,0.703,0.201; 0.58,1.58,0.79,0.474,0.601,0.704, + 0.201; 0.582,1.582,0.791,0.475,0.601,0.705,0.201; 0.584,1.584,0.792, + 0.475,0.6,0.706,0.201; 0.586,1.586,0.793,0.476,0.599,0.707,0.202; 0.588, + 1.588,0.794,0.476,0.598,0.708,0.202; 0.59,1.59,0.795,0.477,0.597,0.709, + 0.202; 0.592,1.592,0.796,0.478,0.597,0.71,0.202; 0.594,1.594,0.797, + 0.478,0.596,0.71,0.203; 0.596,1.596,0.798,0.479,0.595,0.711,0.203; + 0.598,1.598,0.799,0.479,0.594,0.712,0.203; 0.6,1.6,0.8,0.48,0.594,0.713, + 0.203; 0.602,1.602,0.801,0.481,0.593,0.714,0.204; 0.604,1.604,0.802, + 0.481,0.592,0.715,0.204; 0.606,1.606,0.803,0.482,0.592,0.716,0.204; + 0.608,1.608,0.804,0.482,0.591,0.717,0.204; 0.61,1.61,0.805,0.483,0.59, + 0.718,0.205; 0.612,1.612,0.806,0.484,0.589,0.718,0.205; 0.614,1.614, + 0.807,0.484,0.589,0.719,0.205; 0.616,1.616,0.808,0.485,0.588,0.72,0.205; + 0.618,1.618,0.809,0.485,0.587,0.721,0.206; 0.62,1.62,0.81,0.486,0.586, + 0.722,0.206; 0.622,1.622,0.811,0.487,0.586,0.723,0.206; 0.624,1.624, + 0.812,0.487,0.585,0.724,0.206; 0.626,1.626,0.813,0.488,0.584,0.725, + 0.207; 0.628,1.628,0.814,0.488,0.584,0.726,0.207; 0.63,1.63,0.815,0.489, + 0.583,0.727,0.207; 0.632,1.632,0.816,0.49,0.582,0.727,0.207; 0.634, + 1.634,0.817,0.49,0.581,0.728,0.208; 0.636,1.636,0.818,0.491,0.581,0.729, + 0.208; 0.638,1.638,0.819,0.491,0.58,0.73,0.208; 0.64,1.64,0.82,0.492, + 0.579,0.731,0.208; 0.642,1.642,0.821,0.493,0.579,0.732,0.209; 0.644, + 1.644,0.822,0.493,0.578,0.733,0.209; 0.646,1.646,0.823,0.494,0.577, + 0.734,0.209; 0.648,1.648,0.824,0.494,0.576,0.735,0.209; 0.65,1.65,0.825, + 0.495,0.576,0.735,0.21; 0.652,1.652,0.826,0.496,0.575,0.736,0.21; 0.654, + 1.654,0.827,0.496,0.574,0.737,0.21; 0.656,1.656,0.828,0.497,0.574,0.738, + 0.211; 0.658,1.658,0.829,0.497,0.573,0.739,0.211; 0.66,1.66,0.83,0.498, + 0.572,0.74,0.211; 0.662,1.662,0.831,0.499,0.572,0.741,0.211; 0.664, + 1.664,0.832,0.499,0.571,0.742,0.212; 0.666,1.666,0.833,0.5,0.57,0.743, + 0.212; 0.668,1.668,0.834,0.5,0.57,0.743,0.212; 0.67,1.67,0.835,0.501, + 0.569,0.744,0.212; 0.672,1.672,0.836,0.502,0.568,0.745,0.213; 0.674, + 1.674,0.837,0.502,0.568,0.746,0.213; 0.676,1.676,0.838,0.503,0.567, + 0.747,0.213; 0.678,1.678,0.839,0.503,0.566,0.748,0.213; 0.68,1.68,0.84, + 0.504,0.565,0.749,0.214; 0.682,1.682,0.841,0.505,0.565,0.75,0.214; + 0.684,1.684,0.842,0.505,0.564,0.751,0.214; 0.686,1.686,0.843,0.506, + 0.563,0.751,0.214; 0.688,1.688,0.844,0.506,0.563,0.752,0.215; 0.69,1.69, + 0.845,0.507,0.562,0.753,0.215; 0.692,1.692,0.846,0.508,0.561,0.754, + 0.215; 0.694,1.694,0.847,0.508,0.561,0.755,0.215; 0.696,1.696,0.848, + 0.509,0.56,0.756,0.216; 0.698,1.698,0.849,0.509,0.559,0.757,0.216; 0.7, + 1.7,0.85,0.51,0.559,0.758,0.216; 0.702,1.702,0.851,0.511,0.558,0.759, + 0.216; 0.704,1.704,0.852,0.511,0.558,0.759,0.217; 0.706,1.706,0.853, + 0.512,0.557,0.76,0.217; 0.708,1.708,0.854,0.512,0.556,0.761,0.217; 0.71, + 1.71,0.855,0.513,0.556,0.762,0.217; 0.712,1.712,0.856,0.514,0.555,0.763, + 0.218; 0.714,1.714,0.857,0.514,0.554,0.764,0.218; 0.716,1.716,0.858, + 0.515,0.554,0.765,0.218; 0.718,1.718,0.859,0.515,0.553,0.766,0.218; + 0.72,1.72,0.86,0.516,0.552,0.767,0.219; 0.722,1.722,0.861,0.517,0.552, + 0.768,0.219; 0.724,1.724,0.862,0.517,0.551,0.768,0.219; 0.726,1.726, + 0.863,0.518,0.55,0.769,0.219; 0.728,1.728,0.864,0.518,0.55,0.77,0.22; + 0.73,1.73,0.865,0.519,0.549,0.771,0.22; 0.732,1.732,0.866,0.52,0.548, + 0.772,0.22; 0.734,1.734,0.867,0.52,0.548,0.773,0.22; 0.736,1.736,0.868, + 0.521,0.547,0.774,0.221; 0.738,1.738,0.869,0.521,0.547,0.775,0.221; + 0.74,1.74,0.87,0.522,0.546,0.776,0.221; 0.742,1.742,0.871,0.523,0.545, + 0.776,0.221; 0.744,1.744,0.872,0.523,0.545,0.777,0.222; 0.746,1.746, + 0.873,0.524,0.544,0.778,0.222; 0.748,1.748,0.874,0.524,0.543,0.779, + 0.222; 0.75,1.75,0.875,0.525,0.543,0.78,0.222; 0.752,1.752,0.876,0.526, + 0.542,0.781,0.223; 0.754,1.754,0.877,0.526,0.542,0.782,0.223; 0.756, + 1.756,0.878,0.527,0.541,0.783,0.223; 0.758,1.758,0.879,0.527,0.54,0.784, + 0.223; 0.76,1.76,0.88,0.528,0.54,0.784,0.224; 0.762,1.762,0.881,0.529, + 0.539,0.785,0.224; 0.764,1.764,0.882,0.529,0.539,0.786,0.224; 0.766, + 1.766,0.883,0.53,0.538,0.787,0.224; 0.768,1.768,0.884,0.53,0.537,0.788, + 0.225; 0.77,1.77,0.885,0.531,0.537,0.789,0.225; 0.772,1.772,0.886,0.532, + 0.536,0.79,0.225; 0.774,1.774,0.887,0.532,0.536,0.791,0.226; 0.776, + 1.776,0.888,0.533,0.535,0.792,0.226; 0.778,1.778,0.889,0.533,0.534, + 0.792,0.226; 0.78,1.78,0.89,0.534,0.534,0.793,0.226; 0.782,1.782,0.891, + 0.535,0.533,0.794,0.227; 0.784,1.784,0.892,0.535,0.533,0.795,0.227; + 0.786,1.786,0.893,0.536,0.532,0.796,0.227; 0.788,1.788,0.894,0.536, + 0.531,0.797,0.227; 0.79,1.79,0.895,0.537,0.531,0.798,0.228; 0.792,1.792, + 0.896,0.538,0.53,0.799,0.228; 0.794,1.794,0.897,0.538,0.53,0.8,0.228; + 0.796,1.796,0.898,0.539,0.529,0.801,0.228; 0.798,1.798,0.899,0.539, + 0.528,0.801,0.229; 0.8,1.8,0.9,0.54,0.528,0.802,0.229; 0.802,1.802, + 0.901,0.541,0.527,0.803,0.229; 0.804,1.804,0.902,0.541,0.527,0.804, + 0.229; 0.806,1.806,0.903,0.542,0.526,0.805,0.23; 0.808,1.808,0.904, + 0.542,0.525,0.806,0.23; 0.81,1.81,0.905,0.543,0.525,0.807,0.23; 0.812, + 1.812,0.906,0.544,0.524,0.808,0.23; 0.814,1.814,0.907,0.544,0.524,0.809, + 0.231; 0.816,1.816,0.908,0.545,0.523,0.809,0.231; 0.818,1.818,0.909, + 0.545,0.523,0.81,0.231; 0.82,1.82,0.91,0.546,0.522,0.811,0.231; 0.822, + 1.822,0.911,0.547,0.521,0.812,0.232; 0.824,1.824,0.912,0.547,0.521, + 0.813,0.232; 0.826,1.826,0.913,0.548,0.52,0.814,0.232; 0.828,1.828, + 0.914,0.548,0.52,0.815,0.232; 0.83,1.83,0.915,0.549,0.519,0.816,0.233; + 0.832,1.832,0.916,0.55,0.519,0.817,0.233; 0.834,1.834,0.917,0.55,0.518, + 0.817,0.233; 0.836,1.836,0.918,0.551,0.517,0.818,0.233; 0.838,1.838, + 0.919,0.551,0.517,0.819,0.234; 0.84,1.84,0.92,0.552,0.516,0.82,0.234; + 0.842,1.842,0.921,0.553,0.516,0.821,0.234; 0.844,1.844,0.922,0.553, + 0.515,0.822,0.234; 0.846,1.846,0.923,0.554,0.515,0.823,0.235; 0.848, + 1.848,0.924,0.554,0.514,0.824,0.235; 0.85,1.85,0.925,0.555,0.514,0.825, + 0.235; 0.852,1.852,0.926,0.556,0.513,0.825,0.235; 0.854,1.854,0.927, + 0.556,0.512,0.826,0.236; 0.856,1.856,0.928,0.557,0.512,0.827,0.236; + 0.858,1.858,0.929,0.557,0.511,0.828,0.236; 0.86,1.86,0.93,0.558,0.511, + 0.829,0.236; 0.862,1.862,0.931,0.559,0.51,0.83,0.237; 0.864,1.864,0.932, + 0.559,0.51,0.831,0.237; 0.866,1.866,0.933,0.56,0.509,0.832,0.237; 0.868, + 1.868,0.934,0.56,0.509,0.833,0.237; 0.87,1.87,0.935,0.561,0.508,0.833, + 0.238; 0.872,1.872,0.936,0.562,0.507,0.834,0.238; 0.874,1.874,0.937, + 0.562,0.507,0.835,0.238; 0.876,1.876,0.938,0.563,0.506,0.836,0.238; + 0.878,1.878,0.939,0.563,0.506,0.837,0.239; 0.88,1.88,0.94,0.564,0.505, + 0.838,0.239; 0.882,1.882,0.941,0.565,0.505,0.839,0.239; 0.884,1.884, + 0.942,0.565,0.504,0.84,0.239; 0.886,1.886,0.943,0.566,0.504,0.841,0.24; + 0.888,1.888,0.944,0.566,0.503,0.842,0.24; 0.89,1.89,0.945,0.567,0.503, + 0.842,0.24; 0.892,1.892,0.946,0.568,0.502,0.843,0.241; 0.894,1.894, + 0.947,0.568,0.502,0.844,0.241; 0.896,1.896,0.948,0.569,0.501,0.845, + 0.241; 0.898,1.898,0.949,0.569,0.501,0.846,0.241; 0.9,1.9,0.95,0.57,0.5, + 0.847,0.242; 0.902,1.902,0.951,0.571,0.499,0.848,0.242; 0.904,1.904, + 0.952,0.571,0.499,0.849,0.242; 0.906,1.906,0.953,0.572,0.498,0.85,0.242; + 0.908,1.908,0.954,0.572,0.498,0.85,0.243; 0.91,1.91,0.955,0.573,0.497, + 0.851,0.243; 0.912,1.912,0.956,0.574,0.497,0.852,0.243; 0.914,1.914, + 0.957,0.574,0.496,0.853,0.243; 0.916,1.916,0.958,0.575,0.496,0.854, + 0.244; 0.918,1.918,0.959,0.575,0.495,0.855,0.244; 0.92,1.92,0.96,0.576, + 0.495,0.856,0.244; 0.922,1.922,0.961,0.577,0.494,0.857,0.244; 0.924, + 1.924,0.962,0.577,0.494,0.858,0.245; 0.926,1.926,0.963,0.578,0.493, + 0.858,0.245; 0.928,1.928,0.964,0.578,0.493,0.859,0.245; 0.93,1.93,0.965, + 0.579,0.492,0.86,0.245; 0.932,1.932,0.966,0.58,0.492,0.861,0.246; 0.934, + 1.934,0.967,0.58,0.491,0.862,0.246; 0.936,1.936,0.968,0.581,0.491,0.863, + 0.246; 0.938,1.938,0.969,0.581,0.49,0.864,0.246; 0.94,1.94,0.97,0.582, + 0.49,0.865,0.247; 0.942,1.942,0.971,0.583,0.489,0.866,0.247; 0.944, + 1.944,0.972,0.583,0.489,0.866,0.247; 0.946,1.946,0.973,0.584,0.488, + 0.867,0.247; 0.948,1.948,0.974,0.584,0.488,0.868,0.248; 0.95,1.95,0.975, + 0.585,0.487,0.869,0.248; 0.952,1.952,0.976,0.586,0.487,0.87,0.248; + 0.954,1.954,0.977,0.586,0.486,0.871,0.248; 0.956,1.956,0.978,0.587, + 0.486,0.872,0.249; 0.958,1.958,0.979,0.587,0.485,0.873,0.249; 0.96,1.96, + 0.98,0.588,0.485,0.874,0.249; 0.962,1.962,0.981,0.589,0.484,0.874,0.249; + 0.964,1.964,0.982,0.589,0.484,0.875,0.25; 0.966,1.966,0.983,0.59,0.483, + 0.876,0.25; 0.968,1.968,0.984,0.59,0.483,0.877,0.25; 0.97,1.97,0.985, + 0.591,0.482,0.878,0.25; 0.972,1.972,0.986,0.592,0.482,0.879,0.251; + 0.974,1.974,0.987,0.592,0.481,0.88,0.251; 0.976,1.976,0.988,0.593,0.481, + 0.881,0.251; 0.978,1.978,0.989,0.593,0.48,0.882,0.251; 0.98,1.98,0.99, + 0.594,0.48,0.883,0.252; 0.982,1.982,0.991,0.595,0.479,0.883,0.252; + 0.984,1.984,0.992,0.595,0.479,0.884,0.252; 0.986,1.986,0.993,0.596, + 0.478,0.885,0.252; 0.988,1.988,0.994,0.596,0.478,0.886,0.253; 0.99,1.99, + 0.995,0.597,0.477,0.887,0.253; 0.992,1.992,0.996,0.598,0.477,0.888, + 0.253; 0.994,1.994,0.997,0.598,0.476,0.889,0.253; 0.996,1.996,0.998, + 0.599,0.476,0.89,0.254; 0.998,1.998,0.999,0.599,0.475,0.891,0.254; 1,2, + 1,0.6,0.475,0.891,0.254; 1,2,1,0.6,0.475,0.891,0.254], extrapolation= + Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) + "Data for validating the PIDDerivativeTime block" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); - CDL.Continuous.Sources.Ramp L( - height=0.3, - duration=1, - offset=0.3) "Time delay of the first order time-delayed model" - annotation (Placement(transformation(extent={{-60,-50},{-40,-30}}))); - Modelica.Blocks.Sources.RealExpression referenceTd(y=0.5*L.y*T.y/(0.3*L.y + T.y)) - "Reference value for the derivative time" - annotation (Placement(transformation(extent={{-10,50},{10,70}}))); equation - connect(L.y, pIDDerivativeTime.L) annotation (Line(points={{-38,-40},{-20,-40}, - {-20,-6},{-12,-6}}, color={0,0,127})); - connect(T.y, pIDDerivativeTime.T) annotation (Line(points={{-38,0},{-26,0},{-26, - 6},{-12,6}}, color={0,0,127})); + connect(pIDDerivativeTime.T, ReferenceData.y[2]) annotation (Line(points={{ + -12,6},{-20,6},{-20,0},{-38,0}}, color={0,0,127})); + connect(pIDDerivativeTime.L, ReferenceData.y[3]) annotation (Line(points={{ + -12,-6},{-20,-6},{-20,0},{-38,0}}, color={0,0,127})); annotation ( experiment( StopTime=1.0, @@ -43,5 +337,8 @@ Validation test for the block Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.AutoTuner.AMIGO.PIDerivativeTime.

+

+The reference data is imported from a raw data that is generated with a Python implementation of this block. +

")); end PIDDerivativeTime; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mo index 9c821ebe488..e6110582c7b 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mo @@ -2,31 +2,322 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Valida model PIDGain "Test model for PIDGain" extends Modelica.Icons.Example; Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PIDGain pIDGain - "Calculates the control gain for a PI controller" + "Calculates the control gain for a PID controller" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp kp(duration=1, offset=1) - "Gain of the first order time-delayed model" - annotation (Placement(transformation(extent={{-60,30},{-40,50}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp T( - height=0.5, - duration=1, - offset=0.5) "Time constant of the first order time-delayed model" + CDL.Continuous.Sources.TimeTable ReferenceData(table=[0,1,0.5,0.3,0.95,0.446, + 0.127; 0.002,1.002,0.501,0.301,0.948,0.447,0.127; 0.004,1.004,0.502, + 0.301,0.946,0.447,0.128; 0.006,1.006,0.503,0.302,0.944,0.448,0.128; + 0.008,1.008,0.504,0.302,0.942,0.449,0.128; 0.01,1.01,0.505,0.303,0.941, + 0.45,0.128; 0.012,1.012,0.506,0.304,0.939,0.451,0.129; 0.014,1.014, + 0.507,0.304,0.937,0.452,0.129; 0.016,1.016,0.508,0.305,0.935,0.453, + 0.129; 0.018,1.018,0.509,0.305,0.933,0.454,0.129; 0.02,1.02,0.51,0.306, + 0.931,0.455,0.13; 0.022,1.022,0.511,0.307,0.93,0.456,0.13; 0.024,1.024, + 0.512,0.307,0.928,0.456,0.13; 0.026,1.026,0.513,0.308,0.926,0.457,0.13; + 0.028,1.028,0.514,0.308,0.924,0.458,0.131; 0.03,1.03,0.515,0.309,0.922, + 0.459,0.131; 0.032,1.032,0.516,0.31,0.921,0.46,0.131; 0.034,1.034,0.517, + 0.31,0.919,0.461,0.131; 0.036,1.036,0.518,0.311,0.917,0.462,0.132; + 0.038,1.038,0.519,0.311,0.915,0.463,0.132; 0.04,1.04,0.52,0.312,0.913, + 0.464,0.132; 0.042,1.042,0.521,0.313,0.912,0.464,0.132; 0.044,1.044, + 0.522,0.313,0.91,0.465,0.133; 0.046,1.046,0.523,0.314,0.908,0.466,0.133; + 0.048,1.048,0.524,0.314,0.906,0.467,0.133; 0.05,1.05,0.525,0.315,0.905, + 0.468,0.133; 0.052,1.052,0.526,0.316,0.903,0.469,0.134; 0.054,1.054, + 0.527,0.316,0.901,0.47,0.134; 0.056,1.056,0.528,0.317,0.9,0.471,0.134; + 0.058,1.058,0.529,0.317,0.898,0.472,0.134; 0.06,1.06,0.53,0.318,0.896, + 0.472,0.135; 0.062,1.062,0.531,0.319,0.895,0.473,0.135; 0.064,1.064, + 0.532,0.319,0.893,0.474,0.135; 0.066,1.066,0.533,0.32,0.891,0.475,0.136; + 0.068,1.068,0.534,0.32,0.89,0.476,0.136; 0.07,1.07,0.535,0.321,0.888, + 0.477,0.136; 0.072,1.072,0.536,0.322,0.886,0.478,0.136; 0.074,1.074, + 0.537,0.322,0.885,0.479,0.137; 0.076,1.076,0.538,0.323,0.883,0.48,0.137; + 0.078,1.078,0.539,0.323,0.881,0.48,0.137; 0.08,1.08,0.54,0.324,0.88, + 0.481,0.137; 0.082,1.082,0.541,0.325,0.878,0.482,0.138; 0.084,1.084, + 0.542,0.325,0.876,0.483,0.138; 0.086,1.086,0.543,0.326,0.875,0.484, + 0.138; 0.088,1.088,0.544,0.326,0.873,0.485,0.138; 0.09,1.09,0.545,0.327, + 0.872,0.486,0.139; 0.092,1.092,0.546,0.328,0.87,0.487,0.139; 0.094, + 1.094,0.547,0.328,0.868,0.488,0.139; 0.096,1.096,0.548,0.329,0.867, + 0.489,0.139; 0.098,1.098,0.549,0.329,0.865,0.489,0.14; 0.1,1.1,0.55, + 0.33,0.864,0.49,0.14; 0.102,1.102,0.551,0.331,0.862,0.491,0.14; 0.104, + 1.104,0.552,0.331,0.861,0.492,0.14; 0.106,1.106,0.553,0.332,0.859,0.493, + 0.141; 0.108,1.108,0.554,0.332,0.857,0.494,0.141; 0.11,1.11,0.555,0.333, + 0.856,0.495,0.141; 0.112,1.112,0.556,0.334,0.854,0.496,0.141; 0.114, + 1.114,0.557,0.334,0.853,0.497,0.142; 0.116,1.116,0.558,0.335,0.851, + 0.497,0.142; 0.118,1.118,0.559,0.335,0.85,0.498,0.142; 0.12,1.12,0.56, + 0.336,0.848,0.499,0.142; 0.122,1.122,0.561,0.337,0.847,0.5,0.143; 0.124, + 1.124,0.562,0.337,0.845,0.501,0.143; 0.126,1.126,0.563,0.338,0.844, + 0.502,0.143; 0.128,1.128,0.564,0.338,0.842,0.503,0.143; 0.13,1.13,0.565, + 0.339,0.841,0.504,0.144; 0.132,1.132,0.566,0.34,0.839,0.505,0.144; + 0.134,1.134,0.567,0.34,0.838,0.505,0.144; 0.136,1.136,0.568,0.341,0.836, + 0.506,0.144; 0.138,1.138,0.569,0.341,0.835,0.507,0.145; 0.14,1.14,0.57, + 0.342,0.833,0.508,0.145; 0.142,1.142,0.571,0.343,0.832,0.509,0.145; + 0.144,1.144,0.572,0.343,0.83,0.51,0.145; 0.146,1.146,0.573,0.344,0.829, + 0.511,0.146; 0.148,1.148,0.574,0.344,0.828,0.512,0.146; 0.15,1.15,0.575, + 0.345,0.826,0.513,0.146; 0.152,1.152,0.576,0.346,0.825,0.513,0.146; + 0.154,1.154,0.577,0.346,0.823,0.514,0.147; 0.156,1.156,0.578,0.347, + 0.822,0.515,0.147; 0.158,1.158,0.579,0.347,0.82,0.516,0.147; 0.16,1.16, + 0.58,0.348,0.819,0.517,0.147; 0.162,1.162,0.581,0.349,0.818,0.518,0.148; + 0.164,1.164,0.582,0.349,0.816,0.519,0.148; 0.166,1.166,0.583,0.35,0.815, + 0.52,0.148; 0.168,1.168,0.584,0.35,0.813,0.521,0.148; 0.17,1.17,0.585, + 0.351,0.812,0.521,0.149; 0.172,1.172,0.586,0.352,0.811,0.522,0.149; + 0.174,1.174,0.587,0.352,0.809,0.523,0.149; 0.176,1.176,0.588,0.353, + 0.808,0.524,0.149; 0.178,1.178,0.589,0.353,0.806,0.525,0.15; 0.18,1.18, + 0.59,0.354,0.805,0.526,0.15; 0.182,1.182,0.591,0.355,0.804,0.527,0.15; + 0.184,1.184,0.592,0.355,0.802,0.528,0.151; 0.186,1.186,0.593,0.356, + 0.801,0.529,0.151; 0.188,1.188,0.594,0.356,0.8,0.53,0.151; 0.19,1.19, + 0.595,0.357,0.798,0.53,0.151; 0.192,1.192,0.596,0.358,0.797,0.531,0.152; + 0.194,1.194,0.597,0.358,0.796,0.532,0.152; 0.196,1.196,0.598,0.359, + 0.794,0.533,0.152; 0.198,1.198,0.599,0.359,0.793,0.534,0.152; 0.2,1.2, + 0.6,0.36,0.792,0.535,0.153; 0.202,1.202,0.601,0.361,0.79,0.536,0.153; + 0.204,1.204,0.602,0.361,0.789,0.537,0.153; 0.206,1.206,0.603,0.362, + 0.788,0.538,0.153; 0.208,1.208,0.604,0.362,0.786,0.538,0.154; 0.21,1.21, + 0.605,0.363,0.785,0.539,0.154; 0.212,1.212,0.606,0.364,0.784,0.54,0.154; + 0.214,1.214,0.607,0.364,0.783,0.541,0.154; 0.216,1.216,0.608,0.365, + 0.781,0.542,0.155; 0.218,1.218,0.609,0.365,0.78,0.543,0.155; 0.22,1.22, + 0.61,0.366,0.779,0.544,0.155; 0.222,1.222,0.611,0.367,0.777,0.545,0.155; + 0.224,1.224,0.612,0.367,0.776,0.546,0.156; 0.226,1.226,0.613,0.368, + 0.775,0.546,0.156; 0.228,1.228,0.614,0.368,0.774,0.547,0.156; 0.23,1.23, + 0.615,0.369,0.772,0.548,0.156; 0.232,1.232,0.616,0.37,0.771,0.549,0.157; + 0.234,1.234,0.617,0.37,0.77,0.55,0.157; 0.236,1.236,0.618,0.371,0.769, + 0.551,0.157; 0.238,1.238,0.619,0.371,0.767,0.552,0.157; 0.24,1.24,0.62, + 0.372,0.766,0.553,0.158; 0.242,1.242,0.621,0.373,0.765,0.554,0.158; + 0.244,1.244,0.622,0.373,0.764,0.554,0.158; 0.246,1.246,0.623,0.374, + 0.762,0.555,0.158; 0.248,1.248,0.624,0.374,0.761,0.556,0.159; 0.25,1.25, + 0.625,0.375,0.76,0.557,0.159; 0.252,1.252,0.626,0.376,0.759,0.558,0.159; + 0.254,1.254,0.627,0.376,0.758,0.559,0.159; 0.256,1.256,0.628,0.377, + 0.756,0.56,0.16; 0.258,1.258,0.629,0.377,0.755,0.561,0.16; 0.26,1.26, + 0.63,0.378,0.754,0.562,0.16; 0.262,1.262,0.631,0.379,0.753,0.562,0.16; + 0.264,1.264,0.632,0.379,0.752,0.563,0.161; 0.266,1.266,0.633,0.38,0.75, + 0.564,0.161; 0.268,1.268,0.634,0.38,0.749,0.565,0.161; 0.27,1.27,0.635, + 0.381,0.748,0.566,0.161; 0.272,1.272,0.636,0.382,0.747,0.567,0.162; + 0.274,1.274,0.637,0.382,0.746,0.568,0.162; 0.276,1.276,0.638,0.383, + 0.745,0.569,0.162; 0.278,1.278,0.639,0.383,0.743,0.57,0.162; 0.28,1.28, + 0.64,0.384,0.742,0.571,0.163; 0.282,1.282,0.641,0.385,0.741,0.571,0.163; + 0.284,1.284,0.642,0.385,0.74,0.572,0.163; 0.286,1.286,0.643,0.386,0.739, + 0.573,0.163; 0.288,1.288,0.644,0.386,0.738,0.574,0.164; 0.29,1.29,0.645, + 0.387,0.736,0.575,0.164; 0.292,1.292,0.646,0.388,0.735,0.576,0.164; + 0.294,1.294,0.647,0.388,0.734,0.577,0.164; 0.296,1.296,0.648,0.389, + 0.733,0.578,0.165; 0.298,1.298,0.649,0.389,0.732,0.579,0.165; 0.3,1.3, + 0.65,0.39,0.731,0.579,0.165; 0.302,1.302,0.651,0.391,0.73,0.58,0.166; + 0.304,1.304,0.652,0.391,0.729,0.581,0.166; 0.306,1.306,0.653,0.392, + 0.727,0.582,0.166; 0.308,1.308,0.654,0.392,0.726,0.583,0.166; 0.31,1.31, + 0.655,0.393,0.725,0.584,0.167; 0.312,1.312,0.656,0.394,0.724,0.585, + 0.167; 0.314,1.314,0.657,0.394,0.723,0.586,0.167; 0.316,1.316,0.658, + 0.395,0.722,0.587,0.167; 0.318,1.318,0.659,0.395,0.721,0.587,0.168; + 0.32,1.32,0.66,0.396,0.72,0.588,0.168; 0.322,1.322,0.661,0.397,0.719, + 0.589,0.168; 0.324,1.324,0.662,0.397,0.718,0.59,0.168; 0.326,1.326, + 0.663,0.398,0.716,0.591,0.169; 0.328,1.328,0.664,0.398,0.715,0.592, + 0.169; 0.33,1.33,0.665,0.399,0.714,0.593,0.169; 0.332,1.332,0.666,0.4, + 0.713,0.594,0.169; 0.334,1.334,0.667,0.4,0.712,0.595,0.17; 0.336,1.336, + 0.668,0.401,0.711,0.595,0.17; 0.338,1.338,0.669,0.401,0.71,0.596,0.17; + 0.34,1.34,0.67,0.402,0.709,0.597,0.17; 0.342,1.342,0.671,0.403,0.708, + 0.598,0.171; 0.344,1.344,0.672,0.403,0.707,0.599,0.171; 0.346,1.346, + 0.673,0.404,0.706,0.6,0.171; 0.348,1.348,0.674,0.404,0.705,0.601,0.171; + 0.35,1.35,0.675,0.405,0.704,0.602,0.172; 0.352,1.352,0.676,0.406,0.703, + 0.603,0.172; 0.354,1.354,0.677,0.406,0.702,0.603,0.172; 0.356,1.356, + 0.678,0.407,0.701,0.604,0.172; 0.358,1.358,0.679,0.407,0.7,0.605,0.173; + 0.36,1.36,0.68,0.408,0.699,0.606,0.173; 0.362,1.362,0.681,0.409,0.698, + 0.607,0.173; 0.364,1.364,0.682,0.409,0.696,0.608,0.173; 0.366,1.366, + 0.683,0.41,0.695,0.609,0.174; 0.368,1.368,0.684,0.41,0.694,0.61,0.174; + 0.37,1.37,0.685,0.411,0.693,0.611,0.174; 0.372,1.372,0.686,0.412,0.692, + 0.612,0.174; 0.374,1.374,0.687,0.412,0.691,0.612,0.175; 0.376,1.376, + 0.688,0.413,0.69,0.613,0.175; 0.378,1.378,0.689,0.413,0.689,0.614,0.175; + 0.38,1.38,0.69,0.414,0.688,0.615,0.175; 0.382,1.382,0.691,0.415,0.687, + 0.616,0.176; 0.384,1.384,0.692,0.415,0.686,0.617,0.176; 0.386,1.386, + 0.693,0.416,0.685,0.618,0.176; 0.388,1.388,0.694,0.416,0.684,0.619, + 0.176; 0.39,1.39,0.695,0.417,0.683,0.62,0.177; 0.392,1.392,0.696,0.418, + 0.682,0.62,0.177; 0.394,1.394,0.697,0.418,0.681,0.621,0.177; 0.396, + 1.396,0.698,0.419,0.681,0.622,0.177; 0.398,1.398,0.699,0.419,0.68,0.623, + 0.178; 0.4,1.4,0.7,0.42,0.679,0.624,0.178; 0.402,1.402,0.701,0.421, + 0.678,0.625,0.178; 0.404,1.404,0.702,0.421,0.677,0.626,0.178; 0.406, + 1.406,0.703,0.422,0.676,0.627,0.179; 0.408,1.408,0.704,0.422,0.675, + 0.628,0.179; 0.41,1.41,0.705,0.423,0.674,0.628,0.179; 0.412,1.412,0.706, + 0.424,0.673,0.629,0.179; 0.414,1.414,0.707,0.424,0.672,0.63,0.18; 0.416, + 1.416,0.708,0.425,0.671,0.631,0.18; 0.418,1.418,0.709,0.425,0.67,0.632, + 0.18; 0.42,1.42,0.71,0.426,0.669,0.633,0.181; 0.422,1.422,0.711,0.427, + 0.668,0.634,0.181; 0.424,1.424,0.712,0.427,0.667,0.635,0.181; 0.426, + 1.426,0.713,0.428,0.666,0.636,0.181; 0.428,1.428,0.714,0.428,0.665, + 0.636,0.182; 0.43,1.43,0.715,0.429,0.664,0.637,0.182; 0.432,1.432,0.716, + 0.43,0.663,0.638,0.182; 0.434,1.434,0.717,0.43,0.662,0.639,0.182; 0.436, + 1.436,0.718,0.431,0.662,0.64,0.183; 0.438,1.438,0.719,0.431,0.661,0.641, + 0.183; 0.44,1.44,0.72,0.432,0.66,0.642,0.183; 0.442,1.442,0.721,0.433, + 0.659,0.643,0.183; 0.444,1.444,0.722,0.433,0.658,0.644,0.184; 0.446, + 1.446,0.723,0.434,0.657,0.645,0.184; 0.448,1.448,0.724,0.434,0.656, + 0.645,0.184; 0.45,1.45,0.725,0.435,0.655,0.646,0.184; 0.452,1.452,0.726, + 0.436,0.654,0.647,0.185; 0.454,1.454,0.727,0.436,0.653,0.648,0.185; + 0.456,1.456,0.728,0.437,0.652,0.649,0.185; 0.458,1.458,0.729,0.437, + 0.652,0.65,0.185; 0.46,1.46,0.73,0.438,0.651,0.651,0.186; 0.462,1.462, + 0.731,0.439,0.65,0.652,0.186; 0.464,1.464,0.732,0.439,0.649,0.653,0.186; + 0.466,1.466,0.733,0.44,0.648,0.653,0.186; 0.468,1.468,0.734,0.44,0.647, + 0.654,0.187; 0.47,1.47,0.735,0.441,0.646,0.655,0.187; 0.472,1.472,0.736, + 0.442,0.645,0.656,0.187; 0.474,1.474,0.737,0.442,0.645,0.657,0.187; + 0.476,1.476,0.738,0.443,0.644,0.658,0.188; 0.478,1.478,0.739,0.443, + 0.643,0.659,0.188; 0.48,1.48,0.74,0.444,0.642,0.66,0.188; 0.482,1.482, + 0.741,0.445,0.641,0.661,0.188; 0.484,1.484,0.742,0.445,0.64,0.661,0.189; + 0.486,1.486,0.743,0.446,0.639,0.662,0.189; 0.488,1.488,0.744,0.446, + 0.638,0.663,0.189; 0.49,1.49,0.745,0.447,0.638,0.664,0.189; 0.492,1.492, + 0.746,0.448,0.637,0.665,0.19; 0.494,1.494,0.747,0.448,0.636,0.666,0.19; + 0.496,1.496,0.748,0.449,0.635,0.667,0.19; 0.498,1.498,0.749,0.449,0.634, + 0.668,0.19; 0.5,1.5,0.75,0.45,0.633,0.669,0.191; 0.502,1.502,0.751, + 0.451,0.632,0.669,0.191; 0.504,1.504,0.752,0.451,0.632,0.67,0.191; + 0.506,1.506,0.753,0.452,0.631,0.671,0.191; 0.508,1.508,0.754,0.452,0.63, + 0.672,0.192; 0.51,1.51,0.755,0.453,0.629,0.673,0.192; 0.512,1.512,0.756, + 0.454,0.628,0.674,0.192; 0.514,1.514,0.757,0.454,0.627,0.675,0.192; + 0.516,1.516,0.758,0.455,0.627,0.676,0.193; 0.518,1.518,0.759,0.455, + 0.626,0.677,0.193; 0.52,1.52,0.76,0.456,0.625,0.677,0.193; 0.522,1.522, + 0.761,0.457,0.624,0.678,0.193; 0.524,1.524,0.762,0.457,0.623,0.679, + 0.194; 0.526,1.526,0.763,0.458,0.623,0.68,0.194; 0.528,1.528,0.764, + 0.458,0.622,0.681,0.194; 0.53,1.53,0.765,0.459,0.621,0.682,0.194; 0.532, + 1.532,0.766,0.46,0.62,0.683,0.195; 0.534,1.534,0.767,0.46,0.619,0.684, + 0.195; 0.536,1.536,0.768,0.461,0.618,0.685,0.195; 0.538,1.538,0.769, + 0.461,0.618,0.686,0.196; 0.54,1.54,0.77,0.462,0.617,0.686,0.196; 0.542, + 1.542,0.771,0.463,0.616,0.687,0.196; 0.544,1.544,0.772,0.463,0.615, + 0.688,0.196; 0.546,1.546,0.773,0.464,0.614,0.689,0.197; 0.548,1.548, + 0.774,0.464,0.614,0.69,0.197; 0.55,1.55,0.775,0.465,0.613,0.691,0.197; + 0.552,1.552,0.776,0.466,0.612,0.692,0.197; 0.554,1.554,0.777,0.466, + 0.611,0.693,0.198; 0.556,1.556,0.778,0.467,0.611,0.694,0.198; 0.558, + 1.558,0.779,0.467,0.61,0.694,0.198; 0.56,1.56,0.78,0.468,0.609,0.695, + 0.198; 0.562,1.562,0.781,0.469,0.608,0.696,0.199; 0.564,1.564,0.782, + 0.469,0.607,0.697,0.199; 0.566,1.566,0.783,0.47,0.607,0.698,0.199; + 0.568,1.568,0.784,0.47,0.606,0.699,0.199; 0.57,1.57,0.785,0.471,0.605, + 0.7,0.2; 0.572,1.572,0.786,0.472,0.604,0.701,0.2; 0.574,1.574,0.787, + 0.472,0.604,0.702,0.2; 0.576,1.576,0.788,0.473,0.603,0.702,0.2; 0.578, + 1.578,0.789,0.473,0.602,0.703,0.201; 0.58,1.58,0.79,0.474,0.601,0.704, + 0.201; 0.582,1.582,0.791,0.475,0.601,0.705,0.201; 0.584,1.584,0.792, + 0.475,0.6,0.706,0.201; 0.586,1.586,0.793,0.476,0.599,0.707,0.202; 0.588, + 1.588,0.794,0.476,0.598,0.708,0.202; 0.59,1.59,0.795,0.477,0.597,0.709, + 0.202; 0.592,1.592,0.796,0.478,0.597,0.71,0.202; 0.594,1.594,0.797, + 0.478,0.596,0.71,0.203; 0.596,1.596,0.798,0.479,0.595,0.711,0.203; + 0.598,1.598,0.799,0.479,0.594,0.712,0.203; 0.6,1.6,0.8,0.48,0.594,0.713, + 0.203; 0.602,1.602,0.801,0.481,0.593,0.714,0.204; 0.604,1.604,0.802, + 0.481,0.592,0.715,0.204; 0.606,1.606,0.803,0.482,0.592,0.716,0.204; + 0.608,1.608,0.804,0.482,0.591,0.717,0.204; 0.61,1.61,0.805,0.483,0.59, + 0.718,0.205; 0.612,1.612,0.806,0.484,0.589,0.718,0.205; 0.614,1.614, + 0.807,0.484,0.589,0.719,0.205; 0.616,1.616,0.808,0.485,0.588,0.72,0.205; + 0.618,1.618,0.809,0.485,0.587,0.721,0.206; 0.62,1.62,0.81,0.486,0.586, + 0.722,0.206; 0.622,1.622,0.811,0.487,0.586,0.723,0.206; 0.624,1.624, + 0.812,0.487,0.585,0.724,0.206; 0.626,1.626,0.813,0.488,0.584,0.725, + 0.207; 0.628,1.628,0.814,0.488,0.584,0.726,0.207; 0.63,1.63,0.815,0.489, + 0.583,0.727,0.207; 0.632,1.632,0.816,0.49,0.582,0.727,0.207; 0.634, + 1.634,0.817,0.49,0.581,0.728,0.208; 0.636,1.636,0.818,0.491,0.581,0.729, + 0.208; 0.638,1.638,0.819,0.491,0.58,0.73,0.208; 0.64,1.64,0.82,0.492, + 0.579,0.731,0.208; 0.642,1.642,0.821,0.493,0.579,0.732,0.209; 0.644, + 1.644,0.822,0.493,0.578,0.733,0.209; 0.646,1.646,0.823,0.494,0.577, + 0.734,0.209; 0.648,1.648,0.824,0.494,0.576,0.735,0.209; 0.65,1.65,0.825, + 0.495,0.576,0.735,0.21; 0.652,1.652,0.826,0.496,0.575,0.736,0.21; 0.654, + 1.654,0.827,0.496,0.574,0.737,0.21; 0.656,1.656,0.828,0.497,0.574,0.738, + 0.211; 0.658,1.658,0.829,0.497,0.573,0.739,0.211; 0.66,1.66,0.83,0.498, + 0.572,0.74,0.211; 0.662,1.662,0.831,0.499,0.572,0.741,0.211; 0.664, + 1.664,0.832,0.499,0.571,0.742,0.212; 0.666,1.666,0.833,0.5,0.57,0.743, + 0.212; 0.668,1.668,0.834,0.5,0.57,0.743,0.212; 0.67,1.67,0.835,0.501, + 0.569,0.744,0.212; 0.672,1.672,0.836,0.502,0.568,0.745,0.213; 0.674, + 1.674,0.837,0.502,0.568,0.746,0.213; 0.676,1.676,0.838,0.503,0.567, + 0.747,0.213; 0.678,1.678,0.839,0.503,0.566,0.748,0.213; 0.68,1.68,0.84, + 0.504,0.565,0.749,0.214; 0.682,1.682,0.841,0.505,0.565,0.75,0.214; + 0.684,1.684,0.842,0.505,0.564,0.751,0.214; 0.686,1.686,0.843,0.506, + 0.563,0.751,0.214; 0.688,1.688,0.844,0.506,0.563,0.752,0.215; 0.69,1.69, + 0.845,0.507,0.562,0.753,0.215; 0.692,1.692,0.846,0.508,0.561,0.754, + 0.215; 0.694,1.694,0.847,0.508,0.561,0.755,0.215; 0.696,1.696,0.848, + 0.509,0.56,0.756,0.216; 0.698,1.698,0.849,0.509,0.559,0.757,0.216; 0.7, + 1.7,0.85,0.51,0.559,0.758,0.216; 0.702,1.702,0.851,0.511,0.558,0.759, + 0.216; 0.704,1.704,0.852,0.511,0.558,0.759,0.217; 0.706,1.706,0.853, + 0.512,0.557,0.76,0.217; 0.708,1.708,0.854,0.512,0.556,0.761,0.217; 0.71, + 1.71,0.855,0.513,0.556,0.762,0.217; 0.712,1.712,0.856,0.514,0.555,0.763, + 0.218; 0.714,1.714,0.857,0.514,0.554,0.764,0.218; 0.716,1.716,0.858, + 0.515,0.554,0.765,0.218; 0.718,1.718,0.859,0.515,0.553,0.766,0.218; + 0.72,1.72,0.86,0.516,0.552,0.767,0.219; 0.722,1.722,0.861,0.517,0.552, + 0.768,0.219; 0.724,1.724,0.862,0.517,0.551,0.768,0.219; 0.726,1.726, + 0.863,0.518,0.55,0.769,0.219; 0.728,1.728,0.864,0.518,0.55,0.77,0.22; + 0.73,1.73,0.865,0.519,0.549,0.771,0.22; 0.732,1.732,0.866,0.52,0.548, + 0.772,0.22; 0.734,1.734,0.867,0.52,0.548,0.773,0.22; 0.736,1.736,0.868, + 0.521,0.547,0.774,0.221; 0.738,1.738,0.869,0.521,0.547,0.775,0.221; + 0.74,1.74,0.87,0.522,0.546,0.776,0.221; 0.742,1.742,0.871,0.523,0.545, + 0.776,0.221; 0.744,1.744,0.872,0.523,0.545,0.777,0.222; 0.746,1.746, + 0.873,0.524,0.544,0.778,0.222; 0.748,1.748,0.874,0.524,0.543,0.779, + 0.222; 0.75,1.75,0.875,0.525,0.543,0.78,0.222; 0.752,1.752,0.876,0.526, + 0.542,0.781,0.223; 0.754,1.754,0.877,0.526,0.542,0.782,0.223; 0.756, + 1.756,0.878,0.527,0.541,0.783,0.223; 0.758,1.758,0.879,0.527,0.54,0.784, + 0.223; 0.76,1.76,0.88,0.528,0.54,0.784,0.224; 0.762,1.762,0.881,0.529, + 0.539,0.785,0.224; 0.764,1.764,0.882,0.529,0.539,0.786,0.224; 0.766, + 1.766,0.883,0.53,0.538,0.787,0.224; 0.768,1.768,0.884,0.53,0.537,0.788, + 0.225; 0.77,1.77,0.885,0.531,0.537,0.789,0.225; 0.772,1.772,0.886,0.532, + 0.536,0.79,0.225; 0.774,1.774,0.887,0.532,0.536,0.791,0.226; 0.776, + 1.776,0.888,0.533,0.535,0.792,0.226; 0.778,1.778,0.889,0.533,0.534, + 0.792,0.226; 0.78,1.78,0.89,0.534,0.534,0.793,0.226; 0.782,1.782,0.891, + 0.535,0.533,0.794,0.227; 0.784,1.784,0.892,0.535,0.533,0.795,0.227; + 0.786,1.786,0.893,0.536,0.532,0.796,0.227; 0.788,1.788,0.894,0.536, + 0.531,0.797,0.227; 0.79,1.79,0.895,0.537,0.531,0.798,0.228; 0.792,1.792, + 0.896,0.538,0.53,0.799,0.228; 0.794,1.794,0.897,0.538,0.53,0.8,0.228; + 0.796,1.796,0.898,0.539,0.529,0.801,0.228; 0.798,1.798,0.899,0.539, + 0.528,0.801,0.229; 0.8,1.8,0.9,0.54,0.528,0.802,0.229; 0.802,1.802, + 0.901,0.541,0.527,0.803,0.229; 0.804,1.804,0.902,0.541,0.527,0.804, + 0.229; 0.806,1.806,0.903,0.542,0.526,0.805,0.23; 0.808,1.808,0.904, + 0.542,0.525,0.806,0.23; 0.81,1.81,0.905,0.543,0.525,0.807,0.23; 0.812, + 1.812,0.906,0.544,0.524,0.808,0.23; 0.814,1.814,0.907,0.544,0.524,0.809, + 0.231; 0.816,1.816,0.908,0.545,0.523,0.809,0.231; 0.818,1.818,0.909, + 0.545,0.523,0.81,0.231; 0.82,1.82,0.91,0.546,0.522,0.811,0.231; 0.822, + 1.822,0.911,0.547,0.521,0.812,0.232; 0.824,1.824,0.912,0.547,0.521, + 0.813,0.232; 0.826,1.826,0.913,0.548,0.52,0.814,0.232; 0.828,1.828, + 0.914,0.548,0.52,0.815,0.232; 0.83,1.83,0.915,0.549,0.519,0.816,0.233; + 0.832,1.832,0.916,0.55,0.519,0.817,0.233; 0.834,1.834,0.917,0.55,0.518, + 0.817,0.233; 0.836,1.836,0.918,0.551,0.517,0.818,0.233; 0.838,1.838, + 0.919,0.551,0.517,0.819,0.234; 0.84,1.84,0.92,0.552,0.516,0.82,0.234; + 0.842,1.842,0.921,0.553,0.516,0.821,0.234; 0.844,1.844,0.922,0.553, + 0.515,0.822,0.234; 0.846,1.846,0.923,0.554,0.515,0.823,0.235; 0.848, + 1.848,0.924,0.554,0.514,0.824,0.235; 0.85,1.85,0.925,0.555,0.514,0.825, + 0.235; 0.852,1.852,0.926,0.556,0.513,0.825,0.235; 0.854,1.854,0.927, + 0.556,0.512,0.826,0.236; 0.856,1.856,0.928,0.557,0.512,0.827,0.236; + 0.858,1.858,0.929,0.557,0.511,0.828,0.236; 0.86,1.86,0.93,0.558,0.511, + 0.829,0.236; 0.862,1.862,0.931,0.559,0.51,0.83,0.237; 0.864,1.864,0.932, + 0.559,0.51,0.831,0.237; 0.866,1.866,0.933,0.56,0.509,0.832,0.237; 0.868, + 1.868,0.934,0.56,0.509,0.833,0.237; 0.87,1.87,0.935,0.561,0.508,0.833, + 0.238; 0.872,1.872,0.936,0.562,0.507,0.834,0.238; 0.874,1.874,0.937, + 0.562,0.507,0.835,0.238; 0.876,1.876,0.938,0.563,0.506,0.836,0.238; + 0.878,1.878,0.939,0.563,0.506,0.837,0.239; 0.88,1.88,0.94,0.564,0.505, + 0.838,0.239; 0.882,1.882,0.941,0.565,0.505,0.839,0.239; 0.884,1.884, + 0.942,0.565,0.504,0.84,0.239; 0.886,1.886,0.943,0.566,0.504,0.841,0.24; + 0.888,1.888,0.944,0.566,0.503,0.842,0.24; 0.89,1.89,0.945,0.567,0.503, + 0.842,0.24; 0.892,1.892,0.946,0.568,0.502,0.843,0.241; 0.894,1.894, + 0.947,0.568,0.502,0.844,0.241; 0.896,1.896,0.948,0.569,0.501,0.845, + 0.241; 0.898,1.898,0.949,0.569,0.501,0.846,0.241; 0.9,1.9,0.95,0.57,0.5, + 0.847,0.242; 0.902,1.902,0.951,0.571,0.499,0.848,0.242; 0.904,1.904, + 0.952,0.571,0.499,0.849,0.242; 0.906,1.906,0.953,0.572,0.498,0.85,0.242; + 0.908,1.908,0.954,0.572,0.498,0.85,0.243; 0.91,1.91,0.955,0.573,0.497, + 0.851,0.243; 0.912,1.912,0.956,0.574,0.497,0.852,0.243; 0.914,1.914, + 0.957,0.574,0.496,0.853,0.243; 0.916,1.916,0.958,0.575,0.496,0.854, + 0.244; 0.918,1.918,0.959,0.575,0.495,0.855,0.244; 0.92,1.92,0.96,0.576, + 0.495,0.856,0.244; 0.922,1.922,0.961,0.577,0.494,0.857,0.244; 0.924, + 1.924,0.962,0.577,0.494,0.858,0.245; 0.926,1.926,0.963,0.578,0.493, + 0.858,0.245; 0.928,1.928,0.964,0.578,0.493,0.859,0.245; 0.93,1.93,0.965, + 0.579,0.492,0.86,0.245; 0.932,1.932,0.966,0.58,0.492,0.861,0.246; 0.934, + 1.934,0.967,0.58,0.491,0.862,0.246; 0.936,1.936,0.968,0.581,0.491,0.863, + 0.246; 0.938,1.938,0.969,0.581,0.49,0.864,0.246; 0.94,1.94,0.97,0.582, + 0.49,0.865,0.247; 0.942,1.942,0.971,0.583,0.489,0.866,0.247; 0.944, + 1.944,0.972,0.583,0.489,0.866,0.247; 0.946,1.946,0.973,0.584,0.488, + 0.867,0.247; 0.948,1.948,0.974,0.584,0.488,0.868,0.248; 0.95,1.95,0.975, + 0.585,0.487,0.869,0.248; 0.952,1.952,0.976,0.586,0.487,0.87,0.248; + 0.954,1.954,0.977,0.586,0.486,0.871,0.248; 0.956,1.956,0.978,0.587, + 0.486,0.872,0.249; 0.958,1.958,0.979,0.587,0.485,0.873,0.249; 0.96,1.96, + 0.98,0.588,0.485,0.874,0.249; 0.962,1.962,0.981,0.589,0.484,0.874,0.249; + 0.964,1.964,0.982,0.589,0.484,0.875,0.25; 0.966,1.966,0.983,0.59,0.483, + 0.876,0.25; 0.968,1.968,0.984,0.59,0.483,0.877,0.25; 0.97,1.97,0.985, + 0.591,0.482,0.878,0.25; 0.972,1.972,0.986,0.592,0.482,0.879,0.251; + 0.974,1.974,0.987,0.592,0.481,0.88,0.251; 0.976,1.976,0.988,0.593,0.481, + 0.881,0.251; 0.978,1.978,0.989,0.593,0.48,0.882,0.251; 0.98,1.98,0.99, + 0.594,0.48,0.883,0.252; 0.982,1.982,0.991,0.595,0.479,0.883,0.252; + 0.984,1.984,0.992,0.595,0.479,0.884,0.252; 0.986,1.986,0.993,0.596, + 0.478,0.885,0.252; 0.988,1.988,0.994,0.596,0.478,0.886,0.253; 0.99,1.99, + 0.995,0.597,0.477,0.887,0.253; 0.992,1.992,0.996,0.598,0.477,0.888, + 0.253; 0.994,1.994,0.997,0.598,0.476,0.889,0.253; 0.996,1.996,0.998, + 0.599,0.476,0.89,0.254; 0.998,1.998,0.999,0.599,0.475,0.891,0.254; 1,2, + 1,0.6,0.475,0.891,0.254; 1,2,1,0.6,0.475,0.891,0.254], extrapolation= + Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) + "Data for validating the PIDGain block" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp L( - height=0.3, - duration=1, - offset=0.3) "Time delay of the first order time-delayed model" - annotation (Placement(transformation(extent={{-60,-50},{-40,-30}}))); - Modelica.Blocks.Sources.RealExpression referencek(y=1/kp.y*(0.2 + 0.45*T.y/L.y)) - "Reference value for the gain" - annotation (Placement(transformation(extent={{-10,50},{10,70}}))); equation - connect(L.y, pIDGain.L) annotation (Line(points={{-38,-40},{-20,-40},{-20,-6}, - {-12,-6}}, color={0,0,127})); - connect(T.y, pIDGain.T) - annotation (Line(points={{-38,0},{-12,0}}, color={0,0,127})); - connect(pIDGain.kp, kp.y) annotation (Line(points={{-12,6},{-20,6},{-20,40},{-38, - 40}}, color={0,0,127})); + connect(ReferenceData.y[1], pIDGain.kp) annotation (Line(points={{-38,0},{-20, + 0},{-20,6},{-12,6}}, color={0,0,127})); + connect(pIDGain.T, ReferenceData.y[2]) + annotation (Line(points={{-12,0},{-38,0}}, color={0,0,127})); + connect(pIDGain.L, ReferenceData.y[3]) annotation (Line(points={{-12,-6},{-20, + -6},{-20,0},{-38,0}}, color={0,0,127})); annotation ( experiment( StopTime=1.0, @@ -48,5 +339,8 @@ Validation test for the block Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIDGain.

+

+The reference data is imported from a raw data that is generated with a Python implementation of this block. +

")); end PIDGain; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mo index ea817c04477..b8384a028fb 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mo @@ -2,27 +2,320 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Valida model PIDIntegralTime "Test model for PIDIntergralTime" extends Modelica.Icons.Example; Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PIDIntegralTime - pIDIntegralTime "Calculates the integral time for a PI controller" + pIDIntegralTime "Calculates the integral time for a PID controller" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - CDL.Continuous.Sources.Ramp T( - height=0.5, - duration=1, - offset=0.5) "Time constant of the first order time-delayed model" + CDL.Continuous.Sources.TimeTable ReferenceData(table=[0,1,0.5,0.3,0.95,0.446, + 0.127; 0.002,1.002,0.501,0.301,0.948,0.447,0.127; 0.004,1.004,0.502, + 0.301,0.946,0.447,0.128; 0.006,1.006,0.503,0.302,0.944,0.448,0.128; + 0.008,1.008,0.504,0.302,0.942,0.449,0.128; 0.01,1.01,0.505,0.303,0.941, + 0.45,0.128; 0.012,1.012,0.506,0.304,0.939,0.451,0.129; 0.014,1.014, + 0.507,0.304,0.937,0.452,0.129; 0.016,1.016,0.508,0.305,0.935,0.453, + 0.129; 0.018,1.018,0.509,0.305,0.933,0.454,0.129; 0.02,1.02,0.51,0.306, + 0.931,0.455,0.13; 0.022,1.022,0.511,0.307,0.93,0.456,0.13; 0.024,1.024, + 0.512,0.307,0.928,0.456,0.13; 0.026,1.026,0.513,0.308,0.926,0.457,0.13; + 0.028,1.028,0.514,0.308,0.924,0.458,0.131; 0.03,1.03,0.515,0.309,0.922, + 0.459,0.131; 0.032,1.032,0.516,0.31,0.921,0.46,0.131; 0.034,1.034,0.517, + 0.31,0.919,0.461,0.131; 0.036,1.036,0.518,0.311,0.917,0.462,0.132; + 0.038,1.038,0.519,0.311,0.915,0.463,0.132; 0.04,1.04,0.52,0.312,0.913, + 0.464,0.132; 0.042,1.042,0.521,0.313,0.912,0.464,0.132; 0.044,1.044, + 0.522,0.313,0.91,0.465,0.133; 0.046,1.046,0.523,0.314,0.908,0.466,0.133; + 0.048,1.048,0.524,0.314,0.906,0.467,0.133; 0.05,1.05,0.525,0.315,0.905, + 0.468,0.133; 0.052,1.052,0.526,0.316,0.903,0.469,0.134; 0.054,1.054, + 0.527,0.316,0.901,0.47,0.134; 0.056,1.056,0.528,0.317,0.9,0.471,0.134; + 0.058,1.058,0.529,0.317,0.898,0.472,0.134; 0.06,1.06,0.53,0.318,0.896, + 0.472,0.135; 0.062,1.062,0.531,0.319,0.895,0.473,0.135; 0.064,1.064, + 0.532,0.319,0.893,0.474,0.135; 0.066,1.066,0.533,0.32,0.891,0.475,0.136; + 0.068,1.068,0.534,0.32,0.89,0.476,0.136; 0.07,1.07,0.535,0.321,0.888, + 0.477,0.136; 0.072,1.072,0.536,0.322,0.886,0.478,0.136; 0.074,1.074, + 0.537,0.322,0.885,0.479,0.137; 0.076,1.076,0.538,0.323,0.883,0.48,0.137; + 0.078,1.078,0.539,0.323,0.881,0.48,0.137; 0.08,1.08,0.54,0.324,0.88, + 0.481,0.137; 0.082,1.082,0.541,0.325,0.878,0.482,0.138; 0.084,1.084, + 0.542,0.325,0.876,0.483,0.138; 0.086,1.086,0.543,0.326,0.875,0.484, + 0.138; 0.088,1.088,0.544,0.326,0.873,0.485,0.138; 0.09,1.09,0.545,0.327, + 0.872,0.486,0.139; 0.092,1.092,0.546,0.328,0.87,0.487,0.139; 0.094, + 1.094,0.547,0.328,0.868,0.488,0.139; 0.096,1.096,0.548,0.329,0.867, + 0.489,0.139; 0.098,1.098,0.549,0.329,0.865,0.489,0.14; 0.1,1.1,0.55, + 0.33,0.864,0.49,0.14; 0.102,1.102,0.551,0.331,0.862,0.491,0.14; 0.104, + 1.104,0.552,0.331,0.861,0.492,0.14; 0.106,1.106,0.553,0.332,0.859,0.493, + 0.141; 0.108,1.108,0.554,0.332,0.857,0.494,0.141; 0.11,1.11,0.555,0.333, + 0.856,0.495,0.141; 0.112,1.112,0.556,0.334,0.854,0.496,0.141; 0.114, + 1.114,0.557,0.334,0.853,0.497,0.142; 0.116,1.116,0.558,0.335,0.851, + 0.497,0.142; 0.118,1.118,0.559,0.335,0.85,0.498,0.142; 0.12,1.12,0.56, + 0.336,0.848,0.499,0.142; 0.122,1.122,0.561,0.337,0.847,0.5,0.143; 0.124, + 1.124,0.562,0.337,0.845,0.501,0.143; 0.126,1.126,0.563,0.338,0.844, + 0.502,0.143; 0.128,1.128,0.564,0.338,0.842,0.503,0.143; 0.13,1.13,0.565, + 0.339,0.841,0.504,0.144; 0.132,1.132,0.566,0.34,0.839,0.505,0.144; + 0.134,1.134,0.567,0.34,0.838,0.505,0.144; 0.136,1.136,0.568,0.341,0.836, + 0.506,0.144; 0.138,1.138,0.569,0.341,0.835,0.507,0.145; 0.14,1.14,0.57, + 0.342,0.833,0.508,0.145; 0.142,1.142,0.571,0.343,0.832,0.509,0.145; + 0.144,1.144,0.572,0.343,0.83,0.51,0.145; 0.146,1.146,0.573,0.344,0.829, + 0.511,0.146; 0.148,1.148,0.574,0.344,0.828,0.512,0.146; 0.15,1.15,0.575, + 0.345,0.826,0.513,0.146; 0.152,1.152,0.576,0.346,0.825,0.513,0.146; + 0.154,1.154,0.577,0.346,0.823,0.514,0.147; 0.156,1.156,0.578,0.347, + 0.822,0.515,0.147; 0.158,1.158,0.579,0.347,0.82,0.516,0.147; 0.16,1.16, + 0.58,0.348,0.819,0.517,0.147; 0.162,1.162,0.581,0.349,0.818,0.518,0.148; + 0.164,1.164,0.582,0.349,0.816,0.519,0.148; 0.166,1.166,0.583,0.35,0.815, + 0.52,0.148; 0.168,1.168,0.584,0.35,0.813,0.521,0.148; 0.17,1.17,0.585, + 0.351,0.812,0.521,0.149; 0.172,1.172,0.586,0.352,0.811,0.522,0.149; + 0.174,1.174,0.587,0.352,0.809,0.523,0.149; 0.176,1.176,0.588,0.353, + 0.808,0.524,0.149; 0.178,1.178,0.589,0.353,0.806,0.525,0.15; 0.18,1.18, + 0.59,0.354,0.805,0.526,0.15; 0.182,1.182,0.591,0.355,0.804,0.527,0.15; + 0.184,1.184,0.592,0.355,0.802,0.528,0.151; 0.186,1.186,0.593,0.356, + 0.801,0.529,0.151; 0.188,1.188,0.594,0.356,0.8,0.53,0.151; 0.19,1.19, + 0.595,0.357,0.798,0.53,0.151; 0.192,1.192,0.596,0.358,0.797,0.531,0.152; + 0.194,1.194,0.597,0.358,0.796,0.532,0.152; 0.196,1.196,0.598,0.359, + 0.794,0.533,0.152; 0.198,1.198,0.599,0.359,0.793,0.534,0.152; 0.2,1.2, + 0.6,0.36,0.792,0.535,0.153; 0.202,1.202,0.601,0.361,0.79,0.536,0.153; + 0.204,1.204,0.602,0.361,0.789,0.537,0.153; 0.206,1.206,0.603,0.362, + 0.788,0.538,0.153; 0.208,1.208,0.604,0.362,0.786,0.538,0.154; 0.21,1.21, + 0.605,0.363,0.785,0.539,0.154; 0.212,1.212,0.606,0.364,0.784,0.54,0.154; + 0.214,1.214,0.607,0.364,0.783,0.541,0.154; 0.216,1.216,0.608,0.365, + 0.781,0.542,0.155; 0.218,1.218,0.609,0.365,0.78,0.543,0.155; 0.22,1.22, + 0.61,0.366,0.779,0.544,0.155; 0.222,1.222,0.611,0.367,0.777,0.545,0.155; + 0.224,1.224,0.612,0.367,0.776,0.546,0.156; 0.226,1.226,0.613,0.368, + 0.775,0.546,0.156; 0.228,1.228,0.614,0.368,0.774,0.547,0.156; 0.23,1.23, + 0.615,0.369,0.772,0.548,0.156; 0.232,1.232,0.616,0.37,0.771,0.549,0.157; + 0.234,1.234,0.617,0.37,0.77,0.55,0.157; 0.236,1.236,0.618,0.371,0.769, + 0.551,0.157; 0.238,1.238,0.619,0.371,0.767,0.552,0.157; 0.24,1.24,0.62, + 0.372,0.766,0.553,0.158; 0.242,1.242,0.621,0.373,0.765,0.554,0.158; + 0.244,1.244,0.622,0.373,0.764,0.554,0.158; 0.246,1.246,0.623,0.374, + 0.762,0.555,0.158; 0.248,1.248,0.624,0.374,0.761,0.556,0.159; 0.25,1.25, + 0.625,0.375,0.76,0.557,0.159; 0.252,1.252,0.626,0.376,0.759,0.558,0.159; + 0.254,1.254,0.627,0.376,0.758,0.559,0.159; 0.256,1.256,0.628,0.377, + 0.756,0.56,0.16; 0.258,1.258,0.629,0.377,0.755,0.561,0.16; 0.26,1.26, + 0.63,0.378,0.754,0.562,0.16; 0.262,1.262,0.631,0.379,0.753,0.562,0.16; + 0.264,1.264,0.632,0.379,0.752,0.563,0.161; 0.266,1.266,0.633,0.38,0.75, + 0.564,0.161; 0.268,1.268,0.634,0.38,0.749,0.565,0.161; 0.27,1.27,0.635, + 0.381,0.748,0.566,0.161; 0.272,1.272,0.636,0.382,0.747,0.567,0.162; + 0.274,1.274,0.637,0.382,0.746,0.568,0.162; 0.276,1.276,0.638,0.383, + 0.745,0.569,0.162; 0.278,1.278,0.639,0.383,0.743,0.57,0.162; 0.28,1.28, + 0.64,0.384,0.742,0.571,0.163; 0.282,1.282,0.641,0.385,0.741,0.571,0.163; + 0.284,1.284,0.642,0.385,0.74,0.572,0.163; 0.286,1.286,0.643,0.386,0.739, + 0.573,0.163; 0.288,1.288,0.644,0.386,0.738,0.574,0.164; 0.29,1.29,0.645, + 0.387,0.736,0.575,0.164; 0.292,1.292,0.646,0.388,0.735,0.576,0.164; + 0.294,1.294,0.647,0.388,0.734,0.577,0.164; 0.296,1.296,0.648,0.389, + 0.733,0.578,0.165; 0.298,1.298,0.649,0.389,0.732,0.579,0.165; 0.3,1.3, + 0.65,0.39,0.731,0.579,0.165; 0.302,1.302,0.651,0.391,0.73,0.58,0.166; + 0.304,1.304,0.652,0.391,0.729,0.581,0.166; 0.306,1.306,0.653,0.392, + 0.727,0.582,0.166; 0.308,1.308,0.654,0.392,0.726,0.583,0.166; 0.31,1.31, + 0.655,0.393,0.725,0.584,0.167; 0.312,1.312,0.656,0.394,0.724,0.585, + 0.167; 0.314,1.314,0.657,0.394,0.723,0.586,0.167; 0.316,1.316,0.658, + 0.395,0.722,0.587,0.167; 0.318,1.318,0.659,0.395,0.721,0.587,0.168; + 0.32,1.32,0.66,0.396,0.72,0.588,0.168; 0.322,1.322,0.661,0.397,0.719, + 0.589,0.168; 0.324,1.324,0.662,0.397,0.718,0.59,0.168; 0.326,1.326, + 0.663,0.398,0.716,0.591,0.169; 0.328,1.328,0.664,0.398,0.715,0.592, + 0.169; 0.33,1.33,0.665,0.399,0.714,0.593,0.169; 0.332,1.332,0.666,0.4, + 0.713,0.594,0.169; 0.334,1.334,0.667,0.4,0.712,0.595,0.17; 0.336,1.336, + 0.668,0.401,0.711,0.595,0.17; 0.338,1.338,0.669,0.401,0.71,0.596,0.17; + 0.34,1.34,0.67,0.402,0.709,0.597,0.17; 0.342,1.342,0.671,0.403,0.708, + 0.598,0.171; 0.344,1.344,0.672,0.403,0.707,0.599,0.171; 0.346,1.346, + 0.673,0.404,0.706,0.6,0.171; 0.348,1.348,0.674,0.404,0.705,0.601,0.171; + 0.35,1.35,0.675,0.405,0.704,0.602,0.172; 0.352,1.352,0.676,0.406,0.703, + 0.603,0.172; 0.354,1.354,0.677,0.406,0.702,0.603,0.172; 0.356,1.356, + 0.678,0.407,0.701,0.604,0.172; 0.358,1.358,0.679,0.407,0.7,0.605,0.173; + 0.36,1.36,0.68,0.408,0.699,0.606,0.173; 0.362,1.362,0.681,0.409,0.698, + 0.607,0.173; 0.364,1.364,0.682,0.409,0.696,0.608,0.173; 0.366,1.366, + 0.683,0.41,0.695,0.609,0.174; 0.368,1.368,0.684,0.41,0.694,0.61,0.174; + 0.37,1.37,0.685,0.411,0.693,0.611,0.174; 0.372,1.372,0.686,0.412,0.692, + 0.612,0.174; 0.374,1.374,0.687,0.412,0.691,0.612,0.175; 0.376,1.376, + 0.688,0.413,0.69,0.613,0.175; 0.378,1.378,0.689,0.413,0.689,0.614,0.175; + 0.38,1.38,0.69,0.414,0.688,0.615,0.175; 0.382,1.382,0.691,0.415,0.687, + 0.616,0.176; 0.384,1.384,0.692,0.415,0.686,0.617,0.176; 0.386,1.386, + 0.693,0.416,0.685,0.618,0.176; 0.388,1.388,0.694,0.416,0.684,0.619, + 0.176; 0.39,1.39,0.695,0.417,0.683,0.62,0.177; 0.392,1.392,0.696,0.418, + 0.682,0.62,0.177; 0.394,1.394,0.697,0.418,0.681,0.621,0.177; 0.396, + 1.396,0.698,0.419,0.681,0.622,0.177; 0.398,1.398,0.699,0.419,0.68,0.623, + 0.178; 0.4,1.4,0.7,0.42,0.679,0.624,0.178; 0.402,1.402,0.701,0.421, + 0.678,0.625,0.178; 0.404,1.404,0.702,0.421,0.677,0.626,0.178; 0.406, + 1.406,0.703,0.422,0.676,0.627,0.179; 0.408,1.408,0.704,0.422,0.675, + 0.628,0.179; 0.41,1.41,0.705,0.423,0.674,0.628,0.179; 0.412,1.412,0.706, + 0.424,0.673,0.629,0.179; 0.414,1.414,0.707,0.424,0.672,0.63,0.18; 0.416, + 1.416,0.708,0.425,0.671,0.631,0.18; 0.418,1.418,0.709,0.425,0.67,0.632, + 0.18; 0.42,1.42,0.71,0.426,0.669,0.633,0.181; 0.422,1.422,0.711,0.427, + 0.668,0.634,0.181; 0.424,1.424,0.712,0.427,0.667,0.635,0.181; 0.426, + 1.426,0.713,0.428,0.666,0.636,0.181; 0.428,1.428,0.714,0.428,0.665, + 0.636,0.182; 0.43,1.43,0.715,0.429,0.664,0.637,0.182; 0.432,1.432,0.716, + 0.43,0.663,0.638,0.182; 0.434,1.434,0.717,0.43,0.662,0.639,0.182; 0.436, + 1.436,0.718,0.431,0.662,0.64,0.183; 0.438,1.438,0.719,0.431,0.661,0.641, + 0.183; 0.44,1.44,0.72,0.432,0.66,0.642,0.183; 0.442,1.442,0.721,0.433, + 0.659,0.643,0.183; 0.444,1.444,0.722,0.433,0.658,0.644,0.184; 0.446, + 1.446,0.723,0.434,0.657,0.645,0.184; 0.448,1.448,0.724,0.434,0.656, + 0.645,0.184; 0.45,1.45,0.725,0.435,0.655,0.646,0.184; 0.452,1.452,0.726, + 0.436,0.654,0.647,0.185; 0.454,1.454,0.727,0.436,0.653,0.648,0.185; + 0.456,1.456,0.728,0.437,0.652,0.649,0.185; 0.458,1.458,0.729,0.437, + 0.652,0.65,0.185; 0.46,1.46,0.73,0.438,0.651,0.651,0.186; 0.462,1.462, + 0.731,0.439,0.65,0.652,0.186; 0.464,1.464,0.732,0.439,0.649,0.653,0.186; + 0.466,1.466,0.733,0.44,0.648,0.653,0.186; 0.468,1.468,0.734,0.44,0.647, + 0.654,0.187; 0.47,1.47,0.735,0.441,0.646,0.655,0.187; 0.472,1.472,0.736, + 0.442,0.645,0.656,0.187; 0.474,1.474,0.737,0.442,0.645,0.657,0.187; + 0.476,1.476,0.738,0.443,0.644,0.658,0.188; 0.478,1.478,0.739,0.443, + 0.643,0.659,0.188; 0.48,1.48,0.74,0.444,0.642,0.66,0.188; 0.482,1.482, + 0.741,0.445,0.641,0.661,0.188; 0.484,1.484,0.742,0.445,0.64,0.661,0.189; + 0.486,1.486,0.743,0.446,0.639,0.662,0.189; 0.488,1.488,0.744,0.446, + 0.638,0.663,0.189; 0.49,1.49,0.745,0.447,0.638,0.664,0.189; 0.492,1.492, + 0.746,0.448,0.637,0.665,0.19; 0.494,1.494,0.747,0.448,0.636,0.666,0.19; + 0.496,1.496,0.748,0.449,0.635,0.667,0.19; 0.498,1.498,0.749,0.449,0.634, + 0.668,0.19; 0.5,1.5,0.75,0.45,0.633,0.669,0.191; 0.502,1.502,0.751, + 0.451,0.632,0.669,0.191; 0.504,1.504,0.752,0.451,0.632,0.67,0.191; + 0.506,1.506,0.753,0.452,0.631,0.671,0.191; 0.508,1.508,0.754,0.452,0.63, + 0.672,0.192; 0.51,1.51,0.755,0.453,0.629,0.673,0.192; 0.512,1.512,0.756, + 0.454,0.628,0.674,0.192; 0.514,1.514,0.757,0.454,0.627,0.675,0.192; + 0.516,1.516,0.758,0.455,0.627,0.676,0.193; 0.518,1.518,0.759,0.455, + 0.626,0.677,0.193; 0.52,1.52,0.76,0.456,0.625,0.677,0.193; 0.522,1.522, + 0.761,0.457,0.624,0.678,0.193; 0.524,1.524,0.762,0.457,0.623,0.679, + 0.194; 0.526,1.526,0.763,0.458,0.623,0.68,0.194; 0.528,1.528,0.764, + 0.458,0.622,0.681,0.194; 0.53,1.53,0.765,0.459,0.621,0.682,0.194; 0.532, + 1.532,0.766,0.46,0.62,0.683,0.195; 0.534,1.534,0.767,0.46,0.619,0.684, + 0.195; 0.536,1.536,0.768,0.461,0.618,0.685,0.195; 0.538,1.538,0.769, + 0.461,0.618,0.686,0.196; 0.54,1.54,0.77,0.462,0.617,0.686,0.196; 0.542, + 1.542,0.771,0.463,0.616,0.687,0.196; 0.544,1.544,0.772,0.463,0.615, + 0.688,0.196; 0.546,1.546,0.773,0.464,0.614,0.689,0.197; 0.548,1.548, + 0.774,0.464,0.614,0.69,0.197; 0.55,1.55,0.775,0.465,0.613,0.691,0.197; + 0.552,1.552,0.776,0.466,0.612,0.692,0.197; 0.554,1.554,0.777,0.466, + 0.611,0.693,0.198; 0.556,1.556,0.778,0.467,0.611,0.694,0.198; 0.558, + 1.558,0.779,0.467,0.61,0.694,0.198; 0.56,1.56,0.78,0.468,0.609,0.695, + 0.198; 0.562,1.562,0.781,0.469,0.608,0.696,0.199; 0.564,1.564,0.782, + 0.469,0.607,0.697,0.199; 0.566,1.566,0.783,0.47,0.607,0.698,0.199; + 0.568,1.568,0.784,0.47,0.606,0.699,0.199; 0.57,1.57,0.785,0.471,0.605, + 0.7,0.2; 0.572,1.572,0.786,0.472,0.604,0.701,0.2; 0.574,1.574,0.787, + 0.472,0.604,0.702,0.2; 0.576,1.576,0.788,0.473,0.603,0.702,0.2; 0.578, + 1.578,0.789,0.473,0.602,0.703,0.201; 0.58,1.58,0.79,0.474,0.601,0.704, + 0.201; 0.582,1.582,0.791,0.475,0.601,0.705,0.201; 0.584,1.584,0.792, + 0.475,0.6,0.706,0.201; 0.586,1.586,0.793,0.476,0.599,0.707,0.202; 0.588, + 1.588,0.794,0.476,0.598,0.708,0.202; 0.59,1.59,0.795,0.477,0.597,0.709, + 0.202; 0.592,1.592,0.796,0.478,0.597,0.71,0.202; 0.594,1.594,0.797, + 0.478,0.596,0.71,0.203; 0.596,1.596,0.798,0.479,0.595,0.711,0.203; + 0.598,1.598,0.799,0.479,0.594,0.712,0.203; 0.6,1.6,0.8,0.48,0.594,0.713, + 0.203; 0.602,1.602,0.801,0.481,0.593,0.714,0.204; 0.604,1.604,0.802, + 0.481,0.592,0.715,0.204; 0.606,1.606,0.803,0.482,0.592,0.716,0.204; + 0.608,1.608,0.804,0.482,0.591,0.717,0.204; 0.61,1.61,0.805,0.483,0.59, + 0.718,0.205; 0.612,1.612,0.806,0.484,0.589,0.718,0.205; 0.614,1.614, + 0.807,0.484,0.589,0.719,0.205; 0.616,1.616,0.808,0.485,0.588,0.72,0.205; + 0.618,1.618,0.809,0.485,0.587,0.721,0.206; 0.62,1.62,0.81,0.486,0.586, + 0.722,0.206; 0.622,1.622,0.811,0.487,0.586,0.723,0.206; 0.624,1.624, + 0.812,0.487,0.585,0.724,0.206; 0.626,1.626,0.813,0.488,0.584,0.725, + 0.207; 0.628,1.628,0.814,0.488,0.584,0.726,0.207; 0.63,1.63,0.815,0.489, + 0.583,0.727,0.207; 0.632,1.632,0.816,0.49,0.582,0.727,0.207; 0.634, + 1.634,0.817,0.49,0.581,0.728,0.208; 0.636,1.636,0.818,0.491,0.581,0.729, + 0.208; 0.638,1.638,0.819,0.491,0.58,0.73,0.208; 0.64,1.64,0.82,0.492, + 0.579,0.731,0.208; 0.642,1.642,0.821,0.493,0.579,0.732,0.209; 0.644, + 1.644,0.822,0.493,0.578,0.733,0.209; 0.646,1.646,0.823,0.494,0.577, + 0.734,0.209; 0.648,1.648,0.824,0.494,0.576,0.735,0.209; 0.65,1.65,0.825, + 0.495,0.576,0.735,0.21; 0.652,1.652,0.826,0.496,0.575,0.736,0.21; 0.654, + 1.654,0.827,0.496,0.574,0.737,0.21; 0.656,1.656,0.828,0.497,0.574,0.738, + 0.211; 0.658,1.658,0.829,0.497,0.573,0.739,0.211; 0.66,1.66,0.83,0.498, + 0.572,0.74,0.211; 0.662,1.662,0.831,0.499,0.572,0.741,0.211; 0.664, + 1.664,0.832,0.499,0.571,0.742,0.212; 0.666,1.666,0.833,0.5,0.57,0.743, + 0.212; 0.668,1.668,0.834,0.5,0.57,0.743,0.212; 0.67,1.67,0.835,0.501, + 0.569,0.744,0.212; 0.672,1.672,0.836,0.502,0.568,0.745,0.213; 0.674, + 1.674,0.837,0.502,0.568,0.746,0.213; 0.676,1.676,0.838,0.503,0.567, + 0.747,0.213; 0.678,1.678,0.839,0.503,0.566,0.748,0.213; 0.68,1.68,0.84, + 0.504,0.565,0.749,0.214; 0.682,1.682,0.841,0.505,0.565,0.75,0.214; + 0.684,1.684,0.842,0.505,0.564,0.751,0.214; 0.686,1.686,0.843,0.506, + 0.563,0.751,0.214; 0.688,1.688,0.844,0.506,0.563,0.752,0.215; 0.69,1.69, + 0.845,0.507,0.562,0.753,0.215; 0.692,1.692,0.846,0.508,0.561,0.754, + 0.215; 0.694,1.694,0.847,0.508,0.561,0.755,0.215; 0.696,1.696,0.848, + 0.509,0.56,0.756,0.216; 0.698,1.698,0.849,0.509,0.559,0.757,0.216; 0.7, + 1.7,0.85,0.51,0.559,0.758,0.216; 0.702,1.702,0.851,0.511,0.558,0.759, + 0.216; 0.704,1.704,0.852,0.511,0.558,0.759,0.217; 0.706,1.706,0.853, + 0.512,0.557,0.76,0.217; 0.708,1.708,0.854,0.512,0.556,0.761,0.217; 0.71, + 1.71,0.855,0.513,0.556,0.762,0.217; 0.712,1.712,0.856,0.514,0.555,0.763, + 0.218; 0.714,1.714,0.857,0.514,0.554,0.764,0.218; 0.716,1.716,0.858, + 0.515,0.554,0.765,0.218; 0.718,1.718,0.859,0.515,0.553,0.766,0.218; + 0.72,1.72,0.86,0.516,0.552,0.767,0.219; 0.722,1.722,0.861,0.517,0.552, + 0.768,0.219; 0.724,1.724,0.862,0.517,0.551,0.768,0.219; 0.726,1.726, + 0.863,0.518,0.55,0.769,0.219; 0.728,1.728,0.864,0.518,0.55,0.77,0.22; + 0.73,1.73,0.865,0.519,0.549,0.771,0.22; 0.732,1.732,0.866,0.52,0.548, + 0.772,0.22; 0.734,1.734,0.867,0.52,0.548,0.773,0.22; 0.736,1.736,0.868, + 0.521,0.547,0.774,0.221; 0.738,1.738,0.869,0.521,0.547,0.775,0.221; + 0.74,1.74,0.87,0.522,0.546,0.776,0.221; 0.742,1.742,0.871,0.523,0.545, + 0.776,0.221; 0.744,1.744,0.872,0.523,0.545,0.777,0.222; 0.746,1.746, + 0.873,0.524,0.544,0.778,0.222; 0.748,1.748,0.874,0.524,0.543,0.779, + 0.222; 0.75,1.75,0.875,0.525,0.543,0.78,0.222; 0.752,1.752,0.876,0.526, + 0.542,0.781,0.223; 0.754,1.754,0.877,0.526,0.542,0.782,0.223; 0.756, + 1.756,0.878,0.527,0.541,0.783,0.223; 0.758,1.758,0.879,0.527,0.54,0.784, + 0.223; 0.76,1.76,0.88,0.528,0.54,0.784,0.224; 0.762,1.762,0.881,0.529, + 0.539,0.785,0.224; 0.764,1.764,0.882,0.529,0.539,0.786,0.224; 0.766, + 1.766,0.883,0.53,0.538,0.787,0.224; 0.768,1.768,0.884,0.53,0.537,0.788, + 0.225; 0.77,1.77,0.885,0.531,0.537,0.789,0.225; 0.772,1.772,0.886,0.532, + 0.536,0.79,0.225; 0.774,1.774,0.887,0.532,0.536,0.791,0.226; 0.776, + 1.776,0.888,0.533,0.535,0.792,0.226; 0.778,1.778,0.889,0.533,0.534, + 0.792,0.226; 0.78,1.78,0.89,0.534,0.534,0.793,0.226; 0.782,1.782,0.891, + 0.535,0.533,0.794,0.227; 0.784,1.784,0.892,0.535,0.533,0.795,0.227; + 0.786,1.786,0.893,0.536,0.532,0.796,0.227; 0.788,1.788,0.894,0.536, + 0.531,0.797,0.227; 0.79,1.79,0.895,0.537,0.531,0.798,0.228; 0.792,1.792, + 0.896,0.538,0.53,0.799,0.228; 0.794,1.794,0.897,0.538,0.53,0.8,0.228; + 0.796,1.796,0.898,0.539,0.529,0.801,0.228; 0.798,1.798,0.899,0.539, + 0.528,0.801,0.229; 0.8,1.8,0.9,0.54,0.528,0.802,0.229; 0.802,1.802, + 0.901,0.541,0.527,0.803,0.229; 0.804,1.804,0.902,0.541,0.527,0.804, + 0.229; 0.806,1.806,0.903,0.542,0.526,0.805,0.23; 0.808,1.808,0.904, + 0.542,0.525,0.806,0.23; 0.81,1.81,0.905,0.543,0.525,0.807,0.23; 0.812, + 1.812,0.906,0.544,0.524,0.808,0.23; 0.814,1.814,0.907,0.544,0.524,0.809, + 0.231; 0.816,1.816,0.908,0.545,0.523,0.809,0.231; 0.818,1.818,0.909, + 0.545,0.523,0.81,0.231; 0.82,1.82,0.91,0.546,0.522,0.811,0.231; 0.822, + 1.822,0.911,0.547,0.521,0.812,0.232; 0.824,1.824,0.912,0.547,0.521, + 0.813,0.232; 0.826,1.826,0.913,0.548,0.52,0.814,0.232; 0.828,1.828, + 0.914,0.548,0.52,0.815,0.232; 0.83,1.83,0.915,0.549,0.519,0.816,0.233; + 0.832,1.832,0.916,0.55,0.519,0.817,0.233; 0.834,1.834,0.917,0.55,0.518, + 0.817,0.233; 0.836,1.836,0.918,0.551,0.517,0.818,0.233; 0.838,1.838, + 0.919,0.551,0.517,0.819,0.234; 0.84,1.84,0.92,0.552,0.516,0.82,0.234; + 0.842,1.842,0.921,0.553,0.516,0.821,0.234; 0.844,1.844,0.922,0.553, + 0.515,0.822,0.234; 0.846,1.846,0.923,0.554,0.515,0.823,0.235; 0.848, + 1.848,0.924,0.554,0.514,0.824,0.235; 0.85,1.85,0.925,0.555,0.514,0.825, + 0.235; 0.852,1.852,0.926,0.556,0.513,0.825,0.235; 0.854,1.854,0.927, + 0.556,0.512,0.826,0.236; 0.856,1.856,0.928,0.557,0.512,0.827,0.236; + 0.858,1.858,0.929,0.557,0.511,0.828,0.236; 0.86,1.86,0.93,0.558,0.511, + 0.829,0.236; 0.862,1.862,0.931,0.559,0.51,0.83,0.237; 0.864,1.864,0.932, + 0.559,0.51,0.831,0.237; 0.866,1.866,0.933,0.56,0.509,0.832,0.237; 0.868, + 1.868,0.934,0.56,0.509,0.833,0.237; 0.87,1.87,0.935,0.561,0.508,0.833, + 0.238; 0.872,1.872,0.936,0.562,0.507,0.834,0.238; 0.874,1.874,0.937, + 0.562,0.507,0.835,0.238; 0.876,1.876,0.938,0.563,0.506,0.836,0.238; + 0.878,1.878,0.939,0.563,0.506,0.837,0.239; 0.88,1.88,0.94,0.564,0.505, + 0.838,0.239; 0.882,1.882,0.941,0.565,0.505,0.839,0.239; 0.884,1.884, + 0.942,0.565,0.504,0.84,0.239; 0.886,1.886,0.943,0.566,0.504,0.841,0.24; + 0.888,1.888,0.944,0.566,0.503,0.842,0.24; 0.89,1.89,0.945,0.567,0.503, + 0.842,0.24; 0.892,1.892,0.946,0.568,0.502,0.843,0.241; 0.894,1.894, + 0.947,0.568,0.502,0.844,0.241; 0.896,1.896,0.948,0.569,0.501,0.845, + 0.241; 0.898,1.898,0.949,0.569,0.501,0.846,0.241; 0.9,1.9,0.95,0.57,0.5, + 0.847,0.242; 0.902,1.902,0.951,0.571,0.499,0.848,0.242; 0.904,1.904, + 0.952,0.571,0.499,0.849,0.242; 0.906,1.906,0.953,0.572,0.498,0.85,0.242; + 0.908,1.908,0.954,0.572,0.498,0.85,0.243; 0.91,1.91,0.955,0.573,0.497, + 0.851,0.243; 0.912,1.912,0.956,0.574,0.497,0.852,0.243; 0.914,1.914, + 0.957,0.574,0.496,0.853,0.243; 0.916,1.916,0.958,0.575,0.496,0.854, + 0.244; 0.918,1.918,0.959,0.575,0.495,0.855,0.244; 0.92,1.92,0.96,0.576, + 0.495,0.856,0.244; 0.922,1.922,0.961,0.577,0.494,0.857,0.244; 0.924, + 1.924,0.962,0.577,0.494,0.858,0.245; 0.926,1.926,0.963,0.578,0.493, + 0.858,0.245; 0.928,1.928,0.964,0.578,0.493,0.859,0.245; 0.93,1.93,0.965, + 0.579,0.492,0.86,0.245; 0.932,1.932,0.966,0.58,0.492,0.861,0.246; 0.934, + 1.934,0.967,0.58,0.491,0.862,0.246; 0.936,1.936,0.968,0.581,0.491,0.863, + 0.246; 0.938,1.938,0.969,0.581,0.49,0.864,0.246; 0.94,1.94,0.97,0.582, + 0.49,0.865,0.247; 0.942,1.942,0.971,0.583,0.489,0.866,0.247; 0.944, + 1.944,0.972,0.583,0.489,0.866,0.247; 0.946,1.946,0.973,0.584,0.488, + 0.867,0.247; 0.948,1.948,0.974,0.584,0.488,0.868,0.248; 0.95,1.95,0.975, + 0.585,0.487,0.869,0.248; 0.952,1.952,0.976,0.586,0.487,0.87,0.248; + 0.954,1.954,0.977,0.586,0.486,0.871,0.248; 0.956,1.956,0.978,0.587, + 0.486,0.872,0.249; 0.958,1.958,0.979,0.587,0.485,0.873,0.249; 0.96,1.96, + 0.98,0.588,0.485,0.874,0.249; 0.962,1.962,0.981,0.589,0.484,0.874,0.249; + 0.964,1.964,0.982,0.589,0.484,0.875,0.25; 0.966,1.966,0.983,0.59,0.483, + 0.876,0.25; 0.968,1.968,0.984,0.59,0.483,0.877,0.25; 0.97,1.97,0.985, + 0.591,0.482,0.878,0.25; 0.972,1.972,0.986,0.592,0.482,0.879,0.251; + 0.974,1.974,0.987,0.592,0.481,0.88,0.251; 0.976,1.976,0.988,0.593,0.481, + 0.881,0.251; 0.978,1.978,0.989,0.593,0.48,0.882,0.251; 0.98,1.98,0.99, + 0.594,0.48,0.883,0.252; 0.982,1.982,0.991,0.595,0.479,0.883,0.252; + 0.984,1.984,0.992,0.595,0.479,0.884,0.252; 0.986,1.986,0.993,0.596, + 0.478,0.885,0.252; 0.988,1.988,0.994,0.596,0.478,0.886,0.253; 0.99,1.99, + 0.995,0.597,0.477,0.887,0.253; 0.992,1.992,0.996,0.598,0.477,0.888, + 0.253; 0.994,1.994,0.997,0.598,0.476,0.889,0.253; 0.996,1.996,0.998, + 0.599,0.476,0.89,0.254; 0.998,1.998,0.999,0.599,0.475,0.891,0.254; 1,2, + 1,0.6,0.475,0.891,0.254; 1,2,1,0.6,0.475,0.891,0.254], extrapolation= + Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) + "Data for validating the PIDIntegralTime block" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); - CDL.Continuous.Sources.Ramp L( - height=0.3, - duration=1, - offset=0.3) "Time delay of the first order time-delayed model" - annotation (Placement(transformation(extent={{-60,-50},{-40,-30}}))); - Modelica.Blocks.Sources.RealExpression referenceTi(y=(0.4*L.y + 0.8*T.y)/(L.y + - 0.1*T.y)*L.y) - "Reference value for the integral time" - annotation (Placement(transformation(extent={{-12,50},{8,70}}))); equation - connect(L.y, pIDIntegralTime.L) annotation (Line(points={{-38,-40},{-20,-40},{ - -20,-6},{-12,-6}}, color={0,0,127})); - connect(T.y, pIDIntegralTime.T) annotation (Line(points={{-38,0},{-26,0},{-26, - 6},{-12,6}}, color={0,0,127})); + connect(ReferenceData.y[2], pIDIntegralTime.T) annotation (Line(points={{-38, + 0},{-20,0},{-20,6},{-12,6}}, color={0,0,127})); + connect(pIDIntegralTime.L, ReferenceData.y[3]) annotation (Line(points={{-12, + -6},{-20,-6},{-20,0},{-38,0}}, color={0,0,127})); annotation ( experiment( StopTime=1.0, @@ -44,5 +337,8 @@ Validation test for the block Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.AutoTuner.AMIGO.PIDIntergralTime.

+

+The reference data is imported from a raw data that is generated with a Python implementation of this block. +

")); end PIDIntegralTime; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mo index 591a7aacb16..4300700a96f 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mo @@ -4,29 +4,278 @@ model PIGain "Test model for PIGain" Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PIGain pIGain "Calculates the control gain for a PI controller" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp kp(duration=1, offset=1) - "Gain of the first order time-delayed model" - annotation (Placement(transformation(extent={{-60,30},{-40,50}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp T( - height=0.5, - duration=1, - offset=0.5) "Time constant of the first order time-delayed model" + Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable ReferenceData(table=[0, + 1,0.5,0.3,0.343,0.469; 0.002,1.002,0.501,0.301,0.342,0.47; 0.004,1.004, + 0.502,0.301,0.341,0.471; 0.006,1.006,0.503,0.302,0.341,0.472; 0.008, + 1.008,0.504,0.302,0.34,0.473; 0.01,1.01,0.505,0.303,0.339,0.473; 0.012, + 1.012,0.506,0.304,0.339,0.474; 0.014,1.014,0.507,0.304,0.338,0.475; + 0.016,1.016,0.508,0.305,0.337,0.476; 0.018,1.018,0.509,0.305,0.337, + 0.477; 0.02,1.02,0.51,0.306,0.336,0.478; 0.022,1.022,0.511,0.307,0.335, + 0.479; 0.024,1.024,0.512,0.307,0.335,0.48; 0.026,1.026,0.513,0.308, + 0.334,0.481; 0.028,1.028,0.514,0.308,0.333,0.482; 0.03,1.03,0.515,0.309, + 0.333,0.483; 0.032,1.032,0.516,0.31,0.332,0.484; 0.034,1.034,0.517,0.31, + 0.331,0.485; 0.036,1.036,0.518,0.311,0.331,0.486; 0.038,1.038,0.519, + 0.311,0.33,0.487; 0.04,1.04,0.52,0.312,0.33,0.488; 0.042,1.042,0.521, + 0.313,0.329,0.488; 0.044,1.044,0.522,0.313,0.328,0.489; 0.046,1.046, + 0.523,0.314,0.328,0.49; 0.048,1.048,0.524,0.314,0.327,0.491; 0.05,1.05, + 0.525,0.315,0.326,0.492; 0.052,1.052,0.526,0.316,0.326,0.493; 0.054, + 1.054,0.527,0.316,0.325,0.494; 0.056,1.056,0.528,0.317,0.325,0.495; + 0.058,1.058,0.529,0.317,0.324,0.496; 0.06,1.06,0.53,0.318,0.323,0.497; + 0.062,1.062,0.531,0.319,0.323,0.498; 0.064,1.064,0.532,0.319,0.322, + 0.499; 0.066,1.066,0.533,0.32,0.321,0.5; 0.068,1.068,0.534,0.32,0.321, + 0.501; 0.07,1.07,0.535,0.321,0.32,0.502; 0.072,1.072,0.536,0.322,0.32, + 0.503; 0.074,1.074,0.537,0.322,0.319,0.503; 0.076,1.076,0.538,0.323, + 0.319,0.504; 0.078,1.078,0.539,0.323,0.318,0.505; 0.08,1.08,0.54,0.324, + 0.317,0.506; 0.082,1.082,0.541,0.325,0.317,0.507; 0.084,1.084,0.542, + 0.325,0.316,0.508; 0.086,1.086,0.543,0.326,0.316,0.509; 0.088,1.088, + 0.544,0.326,0.315,0.51; 0.09,1.09,0.545,0.327,0.314,0.511; 0.092,1.092, + 0.546,0.328,0.314,0.512; 0.094,1.094,0.547,0.328,0.313,0.513; 0.096, + 1.096,0.548,0.329,0.313,0.514; 0.098,1.098,0.549,0.329,0.312,0.515; 0.1, + 1.1,0.55,0.33,0.312,0.516; 0.102,1.102,0.551,0.331,0.311,0.517; 0.104, + 1.104,0.552,0.331,0.31,0.518; 0.106,1.106,0.553,0.332,0.31,0.518; 0.108, + 1.108,0.554,0.332,0.309,0.519; 0.11,1.11,0.555,0.333,0.309,0.52; 0.112, + 1.112,0.556,0.334,0.308,0.521; 0.114,1.114,0.557,0.334,0.308,0.522; + 0.116,1.116,0.558,0.335,0.307,0.523; 0.118,1.118,0.559,0.335,0.307, + 0.524; 0.12,1.12,0.56,0.336,0.306,0.525; 0.122,1.122,0.561,0.337,0.305, + 0.526; 0.124,1.124,0.562,0.337,0.305,0.527; 0.126,1.126,0.563,0.338, + 0.304,0.528; 0.128,1.128,0.564,0.338,0.304,0.529; 0.13,1.13,0.565,0.339, + 0.303,0.53; 0.132,1.132,0.566,0.34,0.303,0.531; 0.134,1.134,0.567,0.34, + 0.302,0.532; 0.136,1.136,0.568,0.341,0.302,0.533; 0.138,1.138,0.569, + 0.341,0.301,0.534; 0.14,1.14,0.57,0.342,0.301,0.534; 0.142,1.142,0.571, + 0.343,0.3,0.535; 0.144,1.144,0.572,0.343,0.3,0.536; 0.146,1.146,0.573, + 0.344,0.299,0.537; 0.148,1.148,0.574,0.344,0.299,0.538; 0.15,1.15,0.575, + 0.345,0.298,0.539; 0.152,1.152,0.576,0.346,0.297,0.54; 0.154,1.154, + 0.577,0.346,0.297,0.541; 0.156,1.156,0.578,0.347,0.296,0.542; 0.158, + 1.158,0.579,0.347,0.296,0.543; 0.16,1.16,0.58,0.348,0.295,0.544; 0.162, + 1.162,0.581,0.349,0.295,0.545; 0.164,1.164,0.582,0.349,0.294,0.546; + 0.166,1.166,0.583,0.35,0.294,0.547; 0.168,1.168,0.584,0.35,0.293,0.548; + 0.17,1.17,0.585,0.351,0.293,0.549; 0.172,1.172,0.586,0.352,0.292,0.549; + 0.174,1.174,0.587,0.352,0.292,0.55; 0.176,1.176,0.588,0.353,0.291,0.551; + 0.178,1.178,0.589,0.353,0.291,0.552; 0.18,1.18,0.59,0.354,0.29,0.553; + 0.182,1.182,0.591,0.355,0.29,0.554; 0.184,1.184,0.592,0.355,0.289,0.555; + 0.186,1.186,0.593,0.356,0.289,0.556; 0.188,1.188,0.594,0.356,0.288, + 0.557; 0.19,1.19,0.595,0.357,0.288,0.558; 0.192,1.192,0.596,0.358,0.288, + 0.559; 0.194,1.194,0.597,0.358,0.287,0.56; 0.196,1.196,0.598,0.359, + 0.287,0.561; 0.198,1.198,0.599,0.359,0.286,0.562; 0.2,1.2,0.6,0.36, + 0.286,0.563; 0.202,1.202,0.601,0.361,0.285,0.564; 0.204,1.204,0.602, + 0.361,0.285,0.564; 0.206,1.206,0.603,0.362,0.284,0.565; 0.208,1.208, + 0.604,0.362,0.284,0.566; 0.21,1.21,0.605,0.363,0.283,0.567; 0.212,1.212, + 0.606,0.364,0.283,0.568; 0.214,1.214,0.607,0.364,0.282,0.569; 0.216, + 1.216,0.608,0.365,0.282,0.57; 0.218,1.218,0.609,0.365,0.281,0.571; 0.22, + 1.22,0.61,0.366,0.281,0.572; 0.222,1.222,0.611,0.367,0.28,0.573; 0.224, + 1.224,0.612,0.367,0.28,0.574; 0.226,1.226,0.613,0.368,0.28,0.575; 0.228, + 1.228,0.614,0.368,0.279,0.576; 0.23,1.23,0.615,0.369,0.279,0.577; 0.232, + 1.232,0.616,0.37,0.278,0.578; 0.234,1.234,0.617,0.37,0.278,0.579; 0.236, + 1.236,0.618,0.371,0.277,0.579; 0.238,1.238,0.619,0.371,0.277,0.58; 0.24, + 1.24,0.62,0.372,0.276,0.581; 0.242,1.242,0.621,0.373,0.276,0.582; 0.244, + 1.244,0.622,0.373,0.275,0.583; 0.246,1.246,0.623,0.374,0.275,0.584; + 0.248,1.248,0.624,0.374,0.275,0.585; 0.25,1.25,0.625,0.375,0.274,0.586; + 0.252,1.252,0.626,0.376,0.274,0.587; 0.254,1.254,0.627,0.376,0.273, + 0.588; 0.256,1.256,0.628,0.377,0.273,0.589; 0.258,1.258,0.629,0.377, + 0.272,0.59; 0.26,1.26,0.63,0.378,0.272,0.591; 0.262,1.262,0.631,0.379, + 0.272,0.592; 0.264,1.264,0.632,0.379,0.271,0.593; 0.266,1.266,0.633, + 0.38,0.271,0.594; 0.268,1.268,0.634,0.38,0.27,0.594; 0.27,1.27,0.635, + 0.381,0.27,0.595; 0.272,1.272,0.636,0.382,0.269,0.596; 0.274,1.274, + 0.637,0.382,0.269,0.597; 0.276,1.276,0.638,0.383,0.269,0.598; 0.278, + 1.278,0.639,0.383,0.268,0.599; 0.28,1.28,0.64,0.384,0.268,0.6; 0.282, + 1.282,0.641,0.385,0.267,0.601; 0.284,1.284,0.642,0.385,0.267,0.602; + 0.286,1.286,0.643,0.386,0.266,0.603; 0.288,1.288,0.644,0.386,0.266, + 0.604; 0.29,1.29,0.645,0.387,0.266,0.605; 0.292,1.292,0.646,0.388,0.265, + 0.606; 0.294,1.294,0.647,0.388,0.265,0.607; 0.296,1.296,0.648,0.389, + 0.264,0.608; 0.298,1.298,0.649,0.389,0.264,0.609; 0.3,1.3,0.65,0.39, + 0.264,0.609; 0.302,1.302,0.651,0.391,0.263,0.61; 0.304,1.304,0.652, + 0.391,0.263,0.611; 0.306,1.306,0.653,0.392,0.262,0.612; 0.308,1.308, + 0.654,0.392,0.262,0.613; 0.31,1.31,0.655,0.393,0.262,0.614; 0.312,1.312, + 0.656,0.394,0.261,0.615; 0.314,1.314,0.657,0.394,0.261,0.616; 0.316, + 1.316,0.658,0.395,0.26,0.617; 0.318,1.318,0.659,0.395,0.26,0.618; 0.32, + 1.32,0.66,0.396,0.26,0.619; 0.322,1.322,0.661,0.397,0.259,0.62; 0.324, + 1.324,0.662,0.397,0.259,0.621; 0.326,1.326,0.663,0.398,0.258,0.622; + 0.328,1.328,0.664,0.398,0.258,0.623; 0.33,1.33,0.665,0.399,0.258,0.624; + 0.332,1.332,0.666,0.4,0.257,0.624; 0.334,1.334,0.667,0.4,0.257,0.625; + 0.336,1.336,0.668,0.401,0.257,0.626; 0.338,1.338,0.669,0.401,0.256, + 0.627; 0.34,1.34,0.67,0.402,0.256,0.628; 0.342,1.342,0.671,0.403,0.255, + 0.629; 0.344,1.344,0.672,0.403,0.255,0.63; 0.346,1.346,0.673,0.404, + 0.255,0.631; 0.348,1.348,0.674,0.404,0.254,0.632; 0.35,1.35,0.675,0.405, + 0.254,0.633; 0.352,1.352,0.676,0.406,0.253,0.634; 0.354,1.354,0.677, + 0.406,0.253,0.635; 0.356,1.356,0.678,0.407,0.253,0.636; 0.358,1.358, + 0.679,0.407,0.252,0.637; 0.36,1.36,0.68,0.408,0.252,0.638; 0.362,1.362, + 0.681,0.409,0.252,0.639; 0.364,1.364,0.682,0.409,0.251,0.639; 0.366, + 1.366,0.683,0.41,0.251,0.64; 0.368,1.368,0.684,0.41,0.251,0.641; 0.37, + 1.37,0.685,0.411,0.25,0.642; 0.372,1.372,0.686,0.412,0.25,0.643; 0.374, + 1.374,0.687,0.412,0.249,0.644; 0.376,1.376,0.688,0.413,0.249,0.645; + 0.378,1.378,0.689,0.413,0.249,0.646; 0.38,1.38,0.69,0.414,0.248,0.647; + 0.382,1.382,0.691,0.415,0.248,0.648; 0.384,1.384,0.692,0.415,0.248, + 0.649; 0.386,1.386,0.693,0.416,0.247,0.65; 0.388,1.388,0.694,0.416, + 0.247,0.651; 0.39,1.39,0.695,0.417,0.247,0.652; 0.392,1.392,0.696,0.418, + 0.246,0.653; 0.394,1.394,0.697,0.418,0.246,0.654; 0.396,1.396,0.698, + 0.419,0.245,0.654; 0.398,1.398,0.699,0.419,0.245,0.655; 0.4,1.4,0.7, + 0.42,0.245,0.656; 0.402,1.402,0.701,0.421,0.244,0.657; 0.404,1.404, + 0.702,0.421,0.244,0.658; 0.406,1.406,0.703,0.422,0.244,0.659; 0.408, + 1.408,0.704,0.422,0.243,0.66; 0.41,1.41,0.705,0.423,0.243,0.661; 0.412, + 1.412,0.706,0.424,0.243,0.662; 0.414,1.414,0.707,0.424,0.242,0.663; + 0.416,1.416,0.708,0.425,0.242,0.664; 0.418,1.418,0.709,0.425,0.242, + 0.665; 0.42,1.42,0.71,0.426,0.241,0.666; 0.422,1.422,0.711,0.427,0.241, + 0.667; 0.424,1.424,0.712,0.427,0.241,0.668; 0.426,1.426,0.713,0.428, + 0.24,0.669; 0.428,1.428,0.714,0.428,0.24,0.669; 0.43,1.43,0.715,0.429, + 0.24,0.67; 0.432,1.432,0.716,0.43,0.239,0.671; 0.434,1.434,0.717,0.43, + 0.239,0.672; 0.436,1.436,0.718,0.431,0.239,0.673; 0.438,1.438,0.719, + 0.431,0.238,0.674; 0.44,1.44,0.72,0.432,0.238,0.675; 0.442,1.442,0.721, + 0.433,0.238,0.676; 0.444,1.444,0.722,0.433,0.237,0.677; 0.446,1.446, + 0.723,0.434,0.237,0.678; 0.448,1.448,0.724,0.434,0.237,0.679; 0.45,1.45, + 0.725,0.435,0.236,0.68; 0.452,1.452,0.726,0.436,0.236,0.681; 0.454, + 1.454,0.727,0.436,0.236,0.682; 0.456,1.456,0.728,0.437,0.235,0.683; + 0.458,1.458,0.729,0.437,0.235,0.684; 0.46,1.46,0.73,0.438,0.235,0.684; + 0.462,1.462,0.731,0.439,0.234,0.685; 0.464,1.464,0.732,0.439,0.234, + 0.686; 0.466,1.466,0.733,0.44,0.234,0.687; 0.468,1.468,0.734,0.44,0.233, + 0.688; 0.47,1.47,0.735,0.441,0.233,0.689; 0.472,1.472,0.736,0.442,0.233, + 0.69; 0.474,1.474,0.737,0.442,0.233,0.691; 0.476,1.476,0.738,0.443, + 0.232,0.692; 0.478,1.478,0.739,0.443,0.232,0.693; 0.48,1.48,0.74,0.444, + 0.232,0.694; 0.482,1.482,0.741,0.445,0.231,0.695; 0.484,1.484,0.742, + 0.445,0.231,0.696; 0.486,1.486,0.743,0.446,0.231,0.697; 0.488,1.488, + 0.744,0.446,0.23,0.698; 0.49,1.49,0.745,0.447,0.23,0.699; 0.492,1.492, + 0.746,0.448,0.23,0.699; 0.494,1.494,0.747,0.448,0.229,0.7; 0.496,1.496, + 0.748,0.449,0.229,0.701; 0.498,1.498,0.749,0.449,0.229,0.702; 0.5,1.5, + 0.75,0.45,0.228,0.703; 0.502,1.502,0.751,0.451,0.228,0.704; 0.504,1.504, + 0.752,0.451,0.228,0.705; 0.506,1.506,0.753,0.452,0.228,0.706; 0.508, + 1.508,0.754,0.452,0.227,0.707; 0.51,1.51,0.755,0.453,0.227,0.708; 0.512, + 1.512,0.756,0.454,0.227,0.709; 0.514,1.514,0.757,0.454,0.226,0.71; + 0.516,1.516,0.758,0.455,0.226,0.711; 0.518,1.518,0.759,0.455,0.226, + 0.712; 0.52,1.52,0.76,0.456,0.225,0.713; 0.522,1.522,0.761,0.457,0.225, + 0.714; 0.524,1.524,0.762,0.457,0.225,0.714; 0.526,1.526,0.763,0.458, + 0.225,0.715; 0.528,1.528,0.764,0.458,0.224,0.716; 0.53,1.53,0.765,0.459, + 0.224,0.717; 0.532,1.532,0.766,0.46,0.224,0.718; 0.534,1.534,0.767,0.46, + 0.223,0.719; 0.536,1.536,0.768,0.461,0.223,0.72; 0.538,1.538,0.769, + 0.461,0.223,0.721; 0.54,1.54,0.77,0.462,0.223,0.722; 0.542,1.542,0.771, + 0.463,0.222,0.723; 0.544,1.544,0.772,0.463,0.222,0.724; 0.546,1.546, + 0.773,0.464,0.222,0.725; 0.548,1.548,0.774,0.464,0.221,0.726; 0.55,1.55, + 0.775,0.465,0.221,0.727; 0.552,1.552,0.776,0.466,0.221,0.728; 0.554, + 1.554,0.777,0.466,0.221,0.729; 0.556,1.556,0.778,0.467,0.22,0.729; + 0.558,1.558,0.779,0.467,0.22,0.73; 0.56,1.56,0.78,0.468,0.22,0.731; + 0.562,1.562,0.781,0.469,0.219,0.732; 0.564,1.564,0.782,0.469,0.219, + 0.733; 0.566,1.566,0.783,0.47,0.219,0.734; 0.568,1.568,0.784,0.47,0.219, + 0.735; 0.57,1.57,0.785,0.471,0.218,0.736; 0.572,1.572,0.786,0.472,0.218, + 0.737; 0.574,1.574,0.787,0.472,0.218,0.738; 0.576,1.576,0.788,0.473, + 0.217,0.739; 0.578,1.578,0.789,0.473,0.217,0.74; 0.58,1.58,0.79,0.474, + 0.217,0.741; 0.582,1.582,0.791,0.475,0.217,0.742; 0.584,1.584,0.792, + 0.475,0.216,0.743; 0.586,1.586,0.793,0.476,0.216,0.744; 0.588,1.588, + 0.794,0.476,0.216,0.744; 0.59,1.59,0.795,0.477,0.216,0.745; 0.592,1.592, + 0.796,0.478,0.215,0.746; 0.594,1.594,0.797,0.478,0.215,0.747; 0.596, + 1.596,0.798,0.479,0.215,0.748; 0.598,1.598,0.799,0.479,0.214,0.749; 0.6, + 1.6,0.8,0.48,0.214,0.75; 0.602,1.602,0.801,0.481,0.214,0.751; 0.604, + 1.604,0.802,0.481,0.214,0.752; 0.606,1.606,0.803,0.482,0.213,0.753; + 0.608,1.608,0.804,0.482,0.213,0.754; 0.61,1.61,0.805,0.483,0.213,0.755; + 0.612,1.612,0.806,0.484,0.213,0.756; 0.614,1.614,0.807,0.484,0.212, + 0.757; 0.616,1.616,0.808,0.485,0.212,0.758; 0.618,1.618,0.809,0.485, + 0.212,0.759; 0.62,1.62,0.81,0.486,0.212,0.759; 0.622,1.622,0.811,0.487, + 0.211,0.76; 0.624,1.624,0.812,0.487,0.211,0.761; 0.626,1.626,0.813, + 0.488,0.211,0.762; 0.628,1.628,0.814,0.488,0.211,0.763; 0.63,1.63,0.815, + 0.489,0.21,0.764; 0.632,1.632,0.816,0.49,0.21,0.765; 0.634,1.634,0.817, + 0.49,0.21,0.766; 0.636,1.636,0.818,0.491,0.209,0.767; 0.638,1.638,0.819, + 0.491,0.209,0.768; 0.64,1.64,0.82,0.492,0.209,0.769; 0.642,1.642,0.821, + 0.493,0.209,0.77; 0.644,1.644,0.822,0.493,0.208,0.771; 0.646,1.646, + 0.823,0.494,0.208,0.772; 0.648,1.648,0.824,0.494,0.208,0.773; 0.65,1.65, + 0.825,0.495,0.208,0.774; 0.652,1.652,0.826,0.496,0.207,0.774; 0.654, + 1.654,0.827,0.496,0.207,0.775; 0.656,1.656,0.828,0.497,0.207,0.776; + 0.658,1.658,0.829,0.497,0.207,0.777; 0.66,1.66,0.83,0.498,0.206,0.778; + 0.662,1.662,0.831,0.499,0.206,0.779; 0.664,1.664,0.832,0.499,0.206,0.78; + 0.666,1.666,0.833,0.5,0.206,0.781; 0.668,1.668,0.834,0.5,0.205,0.782; + 0.67,1.67,0.835,0.501,0.205,0.783; 0.672,1.672,0.836,0.502,0.205,0.784; + 0.674,1.674,0.837,0.502,0.205,0.785; 0.676,1.676,0.838,0.503,0.204, + 0.786; 0.678,1.678,0.839,0.503,0.204,0.787; 0.68,1.68,0.84,0.504,0.204, + 0.788; 0.682,1.682,0.841,0.505,0.204,0.789; 0.684,1.684,0.842,0.505, + 0.204,0.789; 0.686,1.686,0.843,0.506,0.203,0.79; 0.688,1.688,0.844, + 0.506,0.203,0.791; 0.69,1.69,0.845,0.507,0.203,0.792; 0.692,1.692,0.846, + 0.508,0.203,0.793; 0.694,1.694,0.847,0.508,0.202,0.794; 0.696,1.696, + 0.848,0.509,0.202,0.795; 0.698,1.698,0.849,0.509,0.202,0.796; 0.7,1.7, + 0.85,0.51,0.202,0.797; 0.702,1.702,0.851,0.511,0.201,0.798; 0.704,1.704, + 0.852,0.511,0.201,0.799; 0.706,1.706,0.853,0.512,0.201,0.8; 0.708,1.708, + 0.854,0.512,0.201,0.801; 0.71,1.71,0.855,0.513,0.2,0.802; 0.712,1.712, + 0.856,0.514,0.2,0.803; 0.714,1.714,0.857,0.514,0.2,0.804; 0.716,1.716, + 0.858,0.515,0.2,0.804; 0.718,1.718,0.859,0.515,0.199,0.805; 0.72,1.72, + 0.86,0.516,0.199,0.806; 0.722,1.722,0.861,0.517,0.199,0.807; 0.724, + 1.724,0.862,0.517,0.199,0.808; 0.726,1.726,0.863,0.518,0.199,0.809; + 0.728,1.728,0.864,0.518,0.198,0.81; 0.73,1.73,0.865,0.519,0.198,0.811; + 0.732,1.732,0.866,0.52,0.198,0.812; 0.734,1.734,0.867,0.52,0.198,0.813; + 0.736,1.736,0.868,0.521,0.197,0.814; 0.738,1.738,0.869,0.521,0.197, + 0.815; 0.74,1.74,0.87,0.522,0.197,0.816; 0.742,1.742,0.871,0.523,0.197, + 0.817; 0.744,1.744,0.872,0.523,0.197,0.818; 0.746,1.746,0.873,0.524, + 0.196,0.819; 0.748,1.748,0.874,0.524,0.196,0.819; 0.75,1.75,0.875,0.525, + 0.196,0.82; 0.752,1.752,0.876,0.526,0.196,0.821; 0.754,1.754,0.877, + 0.526,0.195,0.822; 0.756,1.756,0.878,0.527,0.195,0.823; 0.758,1.758, + 0.879,0.527,0.195,0.824; 0.76,1.76,0.88,0.528,0.195,0.825; 0.762,1.762, + 0.881,0.529,0.194,0.826; 0.764,1.764,0.882,0.529,0.194,0.827; 0.766, + 1.766,0.883,0.53,0.194,0.828; 0.768,1.768,0.884,0.53,0.194,0.829; 0.77, + 1.77,0.885,0.531,0.194,0.83; 0.772,1.772,0.886,0.532,0.193,0.831; 0.774, + 1.774,0.887,0.532,0.193,0.832; 0.776,1.776,0.888,0.533,0.193,0.833; + 0.778,1.778,0.889,0.533,0.193,0.834; 0.78,1.78,0.89,0.534,0.193,0.834; + 0.782,1.782,0.891,0.535,0.192,0.835; 0.784,1.784,0.892,0.535,0.192, + 0.836; 0.786,1.786,0.893,0.536,0.192,0.837; 0.788,1.788,0.894,0.536, + 0.192,0.838; 0.79,1.79,0.895,0.537,0.191,0.839; 0.792,1.792,0.896,0.538, + 0.191,0.84; 0.794,1.794,0.897,0.538,0.191,0.841; 0.796,1.796,0.898, + 0.539,0.191,0.842; 0.798,1.798,0.899,0.539,0.191,0.843; 0.8,1.8,0.9, + 0.54,0.19,0.844; 0.802,1.802,0.901,0.541,0.19,0.845; 0.804,1.804,0.902, + 0.541,0.19,0.846; 0.806,1.806,0.903,0.542,0.19,0.847; 0.808,1.808,0.904, + 0.542,0.19,0.848; 0.81,1.81,0.905,0.543,0.189,0.849; 0.812,1.812,0.906, + 0.544,0.189,0.849; 0.814,1.814,0.907,0.544,0.189,0.85; 0.816,1.816, + 0.908,0.545,0.189,0.851; 0.818,1.818,0.909,0.545,0.189,0.852; 0.82,1.82, + 0.91,0.546,0.188,0.853; 0.822,1.822,0.911,0.547,0.188,0.854; 0.824, + 1.824,0.912,0.547,0.188,0.855; 0.826,1.826,0.913,0.548,0.188,0.856; + 0.828,1.828,0.914,0.548,0.187,0.857; 0.83,1.83,0.915,0.549,0.187,0.858; + 0.832,1.832,0.916,0.55,0.187,0.859; 0.834,1.834,0.917,0.55,0.187,0.86; + 0.836,1.836,0.918,0.551,0.187,0.861; 0.838,1.838,0.919,0.551,0.186, + 0.862; 0.84,1.84,0.92,0.552,0.186,0.863; 0.842,1.842,0.921,0.553,0.186, + 0.864; 0.844,1.844,0.922,0.553,0.186,0.864; 0.846,1.846,0.923,0.554, + 0.186,0.865; 0.848,1.848,0.924,0.554,0.185,0.866; 0.85,1.85,0.925,0.555, + 0.185,0.867; 0.852,1.852,0.926,0.556,0.185,0.868; 0.854,1.854,0.927, + 0.556,0.185,0.869; 0.856,1.856,0.928,0.557,0.185,0.87; 0.858,1.858, + 0.929,0.557,0.184,0.871; 0.86,1.86,0.93,0.558,0.184,0.872; 0.862,1.862, + 0.931,0.559,0.184,0.873; 0.864,1.864,0.932,0.559,0.184,0.874; 0.866, + 1.866,0.933,0.56,0.184,0.875; 0.868,1.868,0.934,0.56,0.183,0.876; 0.87, + 1.87,0.935,0.561,0.183,0.877; 0.872,1.872,0.936,0.562,0.183,0.878; + 0.874,1.874,0.937,0.562,0.183,0.879; 0.876,1.876,0.938,0.563,0.183, + 0.879; 0.878,1.878,0.939,0.563,0.182,0.88; 0.88,1.88,0.94,0.564,0.182, + 0.881; 0.882,1.882,0.941,0.565,0.182,0.882; 0.884,1.884,0.942,0.565, + 0.182,0.883; 0.886,1.886,0.943,0.566,0.182,0.884; 0.888,1.888,0.944, + 0.566,0.182,0.885; 0.89,1.89,0.945,0.567,0.181,0.886; 0.892,1.892,0.946, + 0.568,0.181,0.887; 0.894,1.894,0.947,0.568,0.181,0.888; 0.896,1.896, + 0.948,0.569,0.181,0.889; 0.898,1.898,0.949,0.569,0.181,0.89; 0.9,1.9, + 0.95,0.57,0.18,0.891; 0.902,1.902,0.951,0.571,0.18,0.892; 0.904,1.904, + 0.952,0.571,0.18,0.893; 0.906,1.906,0.953,0.572,0.18,0.894; 0.908,1.908, + 0.954,0.572,0.18,0.894; 0.91,1.91,0.955,0.573,0.179,0.895; 0.912,1.912, + 0.956,0.574,0.179,0.896; 0.914,1.914,0.957,0.574,0.179,0.897; 0.916, + 1.916,0.958,0.575,0.179,0.898; 0.918,1.918,0.959,0.575,0.179,0.899; + 0.92,1.92,0.96,0.576,0.178,0.9; 0.922,1.922,0.961,0.577,0.178,0.901; + 0.924,1.924,0.962,0.577,0.178,0.902; 0.926,1.926,0.963,0.578,0.178, + 0.903; 0.928,1.928,0.964,0.578,0.178,0.904; 0.93,1.93,0.965,0.579,0.178, + 0.905; 0.932,1.932,0.966,0.58,0.177,0.906; 0.934,1.934,0.967,0.58,0.177, + 0.907; 0.936,1.936,0.968,0.581,0.177,0.908; 0.938,1.938,0.969,0.581, + 0.177,0.909; 0.94,1.94,0.97,0.582,0.177,0.909; 0.942,1.942,0.971,0.583, + 0.176,0.91; 0.944,1.944,0.972,0.583,0.176,0.911; 0.946,1.946,0.973, + 0.584,0.176,0.912; 0.948,1.948,0.974,0.584,0.176,0.913; 0.95,1.95,0.975, + 0.585,0.176,0.914; 0.952,1.952,0.976,0.586,0.176,0.915; 0.954,1.954, + 0.977,0.586,0.175,0.916; 0.956,1.956,0.978,0.587,0.175,0.917; 0.958, + 1.958,0.979,0.587,0.175,0.918; 0.96,1.96,0.98,0.588,0.175,0.919; 0.962, + 1.962,0.981,0.589,0.175,0.92; 0.964,1.964,0.982,0.589,0.174,0.921; + 0.966,1.966,0.983,0.59,0.174,0.922; 0.968,1.968,0.984,0.59,0.174,0.923; + 0.97,1.97,0.985,0.591,0.174,0.924; 0.972,1.972,0.986,0.592,0.174,0.924; + 0.974,1.974,0.987,0.592,0.174,0.925; 0.976,1.976,0.988,0.593,0.173, + 0.926; 0.978,1.978,0.989,0.593,0.173,0.927; 0.98,1.98,0.99,0.594,0.173, + 0.928; 0.982,1.982,0.991,0.595,0.173,0.929; 0.984,1.984,0.992,0.595, + 0.173,0.93; 0.986,1.986,0.993,0.596,0.173,0.931; 0.988,1.988,0.994, + 0.596,0.172,0.932; 0.99,1.99,0.995,0.597,0.172,0.933; 0.992,1.992,0.996, + 0.598,0.172,0.934; 0.994,1.994,0.997,0.598,0.172,0.935; 0.996,1.996, + 0.998,0.599,0.172,0.936; 0.998,1.998,0.999,0.599,0.172,0.937; 1,2,1,0.6, + 0.171,0.938; 1,2,1,0.6,0.171,0.938], extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) + "Data for validating the PIgain block" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp L( - height=0.3, - duration=1, - offset=0.3) "Time delay of the first order time-delayed model" - annotation (Placement(transformation(extent={{-60,-50},{-40,-30}}))); - Modelica.Blocks.Sources.RealExpression referencek(y=0.15/kp.y + (0.35 - L.y*T.y - /(L.y + T.y)/(L.y + T.y))*T.y/kp.y/L.y) "Reference value for the gain" - annotation (Placement(transformation(extent={{-10,50},{10,70}}))); + equation - connect(L.y, pIGain.L) annotation (Line(points={{-38,-40},{-20,-40},{-20,-6},{ - -12,-6}}, color={0,0,127})); - connect(T.y, pIGain.T) - annotation (Line(points={{-38,0},{-12,0}}, color={0,0,127})); - connect(pIGain.kp, kp.y) annotation (Line(points={{-12,6},{-20,6},{-20,40},{-38, - 40}}, color={0,0,127})); + connect(pIGain.kp, ReferenceData.y[1]) annotation (Line(points={{-12,6},{-22, + 6},{-22,0},{-38,0}}, color={0,0,127})); + connect(pIGain.T, ReferenceData.y[2]) + annotation (Line(points={{-12,0},{-38,0}}, color={0,0,127})); + connect(pIGain.L, ReferenceData.y[3]) annotation (Line(points={{-12,-6},{-22, + -6},{-22,0},{-38,0}}, color={0,0,127})); annotation ( experiment( StopTime=1.0, @@ -48,5 +297,8 @@ Validation test for the block Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIGain.

+

+The reference data is imported from a raw data that is generated with a Python implementation of this block. +

")); end PIGain; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mo index 9aea9f39f6e..999348ad131 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mo @@ -4,25 +4,259 @@ model PIIntegralTime "Test model for PIIntergralTime" Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PIIntegralTime pIIntegralTime "Calculates the integral time for a PI controller" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp T( - height=0.5, - duration=1, - offset=0.5) "Time constant of the first order time-delayed model" + CDL.Continuous.Sources.TimeTable ReferenceData(table=[0,1,0.5,0.3,0.343,0.469; + 0.002,1.002,0.501,0.301,0.342,0.47; 0.004,1.004,0.502,0.301,0.341,0.471; + 0.006,1.006,0.503,0.302,0.341,0.472; 0.008,1.008,0.504,0.302,0.34,0.473; + 0.01,1.01,0.505,0.303,0.339,0.473; 0.012,1.012,0.506,0.304,0.339,0.474; + 0.014,1.014,0.507,0.304,0.338,0.475; 0.016,1.016,0.508,0.305,0.337,0.476; + 0.018,1.018,0.509,0.305,0.337,0.477; 0.02,1.02,0.51,0.306,0.336,0.478; 0.022, + 1.022,0.511,0.307,0.335,0.479; 0.024,1.024,0.512,0.307,0.335,0.48; 0.026, + 1.026,0.513,0.308,0.334,0.481; 0.028,1.028,0.514,0.308,0.333,0.482; 0.03, + 1.03,0.515,0.309,0.333,0.483; 0.032,1.032,0.516,0.31,0.332,0.484; 0.034, + 1.034,0.517,0.31,0.331,0.485; 0.036,1.036,0.518,0.311,0.331,0.486; 0.038, + 1.038,0.519,0.311,0.33,0.487; 0.04,1.04,0.52,0.312,0.33,0.488; 0.042,1.042, + 0.521,0.313,0.329,0.488; 0.044,1.044,0.522,0.313,0.328,0.489; 0.046,1.046, + 0.523,0.314,0.328,0.49; 0.048,1.048,0.524,0.314,0.327,0.491; 0.05,1.05,0.525, + 0.315,0.326,0.492; 0.052,1.052,0.526,0.316,0.326,0.493; 0.054,1.054,0.527, + 0.316,0.325,0.494; 0.056,1.056,0.528,0.317,0.325,0.495; 0.058,1.058,0.529, + 0.317,0.324,0.496; 0.06,1.06,0.53,0.318,0.323,0.497; 0.062,1.062,0.531,0.319, + 0.323,0.498; 0.064,1.064,0.532,0.319,0.322,0.499; 0.066,1.066,0.533,0.32, + 0.321,0.5; 0.068,1.068,0.534,0.32,0.321,0.501; 0.07,1.07,0.535,0.321,0.32, + 0.502; 0.072,1.072,0.536,0.322,0.32,0.503; 0.074,1.074,0.537,0.322,0.319, + 0.503; 0.076,1.076,0.538,0.323,0.319,0.504; 0.078,1.078,0.539,0.323,0.318, + 0.505; 0.08,1.08,0.54,0.324,0.317,0.506; 0.082,1.082,0.541,0.325,0.317,0.507; + 0.084,1.084,0.542,0.325,0.316,0.508; 0.086,1.086,0.543,0.326,0.316,0.509; + 0.088,1.088,0.544,0.326,0.315,0.51; 0.09,1.09,0.545,0.327,0.314,0.511; 0.092, + 1.092,0.546,0.328,0.314,0.512; 0.094,1.094,0.547,0.328,0.313,0.513; 0.096, + 1.096,0.548,0.329,0.313,0.514; 0.098,1.098,0.549,0.329,0.312,0.515; 0.1, + 1.1,0.55,0.33,0.312,0.516; 0.102,1.102,0.551,0.331,0.311,0.517; 0.104,1.104, + 0.552,0.331,0.31,0.518; 0.106,1.106,0.553,0.332,0.31,0.518; 0.108,1.108, + 0.554,0.332,0.309,0.519; 0.11,1.11,0.555,0.333,0.309,0.52; 0.112,1.112,0.556, + 0.334,0.308,0.521; 0.114,1.114,0.557,0.334,0.308,0.522; 0.116,1.116,0.558, + 0.335,0.307,0.523; 0.118,1.118,0.559,0.335,0.307,0.524; 0.12,1.12,0.56,0.336, + 0.306,0.525; 0.122,1.122,0.561,0.337,0.305,0.526; 0.124,1.124,0.562,0.337, + 0.305,0.527; 0.126,1.126,0.563,0.338,0.304,0.528; 0.128,1.128,0.564,0.338, + 0.304,0.529; 0.13,1.13,0.565,0.339,0.303,0.53; 0.132,1.132,0.566,0.34,0.303, + 0.531; 0.134,1.134,0.567,0.34,0.302,0.532; 0.136,1.136,0.568,0.341,0.302, + 0.533; 0.138,1.138,0.569,0.341,0.301,0.534; 0.14,1.14,0.57,0.342,0.301,0.534; + 0.142,1.142,0.571,0.343,0.3,0.535; 0.144,1.144,0.572,0.343,0.3,0.536; 0.146, + 1.146,0.573,0.344,0.299,0.537; 0.148,1.148,0.574,0.344,0.299,0.538; 0.15, + 1.15,0.575,0.345,0.298,0.539; 0.152,1.152,0.576,0.346,0.297,0.54; 0.154, + 1.154,0.577,0.346,0.297,0.541; 0.156,1.156,0.578,0.347,0.296,0.542; 0.158, + 1.158,0.579,0.347,0.296,0.543; 0.16,1.16,0.58,0.348,0.295,0.544; 0.162,1.162, + 0.581,0.349,0.295,0.545; 0.164,1.164,0.582,0.349,0.294,0.546; 0.166,1.166, + 0.583,0.35,0.294,0.547; 0.168,1.168,0.584,0.35,0.293,0.548; 0.17,1.17,0.585, + 0.351,0.293,0.549; 0.172,1.172,0.586,0.352,0.292,0.549; 0.174,1.174,0.587, + 0.352,0.292,0.55; 0.176,1.176,0.588,0.353,0.291,0.551; 0.178,1.178,0.589, + 0.353,0.291,0.552; 0.18,1.18,0.59,0.354,0.29,0.553; 0.182,1.182,0.591,0.355, + 0.29,0.554; 0.184,1.184,0.592,0.355,0.289,0.555; 0.186,1.186,0.593,0.356, + 0.289,0.556; 0.188,1.188,0.594,0.356,0.288,0.557; 0.19,1.19,0.595,0.357, + 0.288,0.558; 0.192,1.192,0.596,0.358,0.288,0.559; 0.194,1.194,0.597,0.358, + 0.287,0.56; 0.196,1.196,0.598,0.359,0.287,0.561; 0.198,1.198,0.599,0.359, + 0.286,0.562; 0.2,1.2,0.6,0.36,0.286,0.563; 0.202,1.202,0.601,0.361,0.285, + 0.564; 0.204,1.204,0.602,0.361,0.285,0.564; 0.206,1.206,0.603,0.362,0.284, + 0.565; 0.208,1.208,0.604,0.362,0.284,0.566; 0.21,1.21,0.605,0.363,0.283, + 0.567; 0.212,1.212,0.606,0.364,0.283,0.568; 0.214,1.214,0.607,0.364,0.282, + 0.569; 0.216,1.216,0.608,0.365,0.282,0.57; 0.218,1.218,0.609,0.365,0.281, + 0.571; 0.22,1.22,0.61,0.366,0.281,0.572; 0.222,1.222,0.611,0.367,0.28,0.573; + 0.224,1.224,0.612,0.367,0.28,0.574; 0.226,1.226,0.613,0.368,0.28,0.575; + 0.228,1.228,0.614,0.368,0.279,0.576; 0.23,1.23,0.615,0.369,0.279,0.577; + 0.232,1.232,0.616,0.37,0.278,0.578; 0.234,1.234,0.617,0.37,0.278,0.579; + 0.236,1.236,0.618,0.371,0.277,0.579; 0.238,1.238,0.619,0.371,0.277,0.58; + 0.24,1.24,0.62,0.372,0.276,0.581; 0.242,1.242,0.621,0.373,0.276,0.582; 0.244, + 1.244,0.622,0.373,0.275,0.583; 0.246,1.246,0.623,0.374,0.275,0.584; 0.248, + 1.248,0.624,0.374,0.275,0.585; 0.25,1.25,0.625,0.375,0.274,0.586; 0.252, + 1.252,0.626,0.376,0.274,0.587; 0.254,1.254,0.627,0.376,0.273,0.588; 0.256, + 1.256,0.628,0.377,0.273,0.589; 0.258,1.258,0.629,0.377,0.272,0.59; 0.26, + 1.26,0.63,0.378,0.272,0.591; 0.262,1.262,0.631,0.379,0.272,0.592; 0.264, + 1.264,0.632,0.379,0.271,0.593; 0.266,1.266,0.633,0.38,0.271,0.594; 0.268, + 1.268,0.634,0.38,0.27,0.594; 0.27,1.27,0.635,0.381,0.27,0.595; 0.272,1.272, + 0.636,0.382,0.269,0.596; 0.274,1.274,0.637,0.382,0.269,0.597; 0.276,1.276, + 0.638,0.383,0.269,0.598; 0.278,1.278,0.639,0.383,0.268,0.599; 0.28,1.28, + 0.64,0.384,0.268,0.6; 0.282,1.282,0.641,0.385,0.267,0.601; 0.284,1.284,0.642, + 0.385,0.267,0.602; 0.286,1.286,0.643,0.386,0.266,0.603; 0.288,1.288,0.644, + 0.386,0.266,0.604; 0.29,1.29,0.645,0.387,0.266,0.605; 0.292,1.292,0.646, + 0.388,0.265,0.606; 0.294,1.294,0.647,0.388,0.265,0.607; 0.296,1.296,0.648, + 0.389,0.264,0.608; 0.298,1.298,0.649,0.389,0.264,0.609; 0.3,1.3,0.65,0.39, + 0.264,0.609; 0.302,1.302,0.651,0.391,0.263,0.61; 0.304,1.304,0.652,0.391, + 0.263,0.611; 0.306,1.306,0.653,0.392,0.262,0.612; 0.308,1.308,0.654,0.392, + 0.262,0.613; 0.31,1.31,0.655,0.393,0.262,0.614; 0.312,1.312,0.656,0.394, + 0.261,0.615; 0.314,1.314,0.657,0.394,0.261,0.616; 0.316,1.316,0.658,0.395, + 0.26,0.617; 0.318,1.318,0.659,0.395,0.26,0.618; 0.32,1.32,0.66,0.396,0.26, + 0.619; 0.322,1.322,0.661,0.397,0.259,0.62; 0.324,1.324,0.662,0.397,0.259, + 0.621; 0.326,1.326,0.663,0.398,0.258,0.622; 0.328,1.328,0.664,0.398,0.258, + 0.623; 0.33,1.33,0.665,0.399,0.258,0.624; 0.332,1.332,0.666,0.4,0.257,0.624; + 0.334,1.334,0.667,0.4,0.257,0.625; 0.336,1.336,0.668,0.401,0.257,0.626; + 0.338,1.338,0.669,0.401,0.256,0.627; 0.34,1.34,0.67,0.402,0.256,0.628; 0.342, + 1.342,0.671,0.403,0.255,0.629; 0.344,1.344,0.672,0.403,0.255,0.63; 0.346, + 1.346,0.673,0.404,0.255,0.631; 0.348,1.348,0.674,0.404,0.254,0.632; 0.35, + 1.35,0.675,0.405,0.254,0.633; 0.352,1.352,0.676,0.406,0.253,0.634; 0.354, + 1.354,0.677,0.406,0.253,0.635; 0.356,1.356,0.678,0.407,0.253,0.636; 0.358, + 1.358,0.679,0.407,0.252,0.637; 0.36,1.36,0.68,0.408,0.252,0.638; 0.362,1.362, + 0.681,0.409,0.252,0.639; 0.364,1.364,0.682,0.409,0.251,0.639; 0.366,1.366, + 0.683,0.41,0.251,0.64; 0.368,1.368,0.684,0.41,0.251,0.641; 0.37,1.37,0.685, + 0.411,0.25,0.642; 0.372,1.372,0.686,0.412,0.25,0.643; 0.374,1.374,0.687, + 0.412,0.249,0.644; 0.376,1.376,0.688,0.413,0.249,0.645; 0.378,1.378,0.689, + 0.413,0.249,0.646; 0.38,1.38,0.69,0.414,0.248,0.647; 0.382,1.382,0.691,0.415, + 0.248,0.648; 0.384,1.384,0.692,0.415,0.248,0.649; 0.386,1.386,0.693,0.416, + 0.247,0.65; 0.388,1.388,0.694,0.416,0.247,0.651; 0.39,1.39,0.695,0.417,0.247, + 0.652; 0.392,1.392,0.696,0.418,0.246,0.653; 0.394,1.394,0.697,0.418,0.246, + 0.654; 0.396,1.396,0.698,0.419,0.245,0.654; 0.398,1.398,0.699,0.419,0.245, + 0.655; 0.4,1.4,0.7,0.42,0.245,0.656; 0.402,1.402,0.701,0.421,0.244,0.657; + 0.404,1.404,0.702,0.421,0.244,0.658; 0.406,1.406,0.703,0.422,0.244,0.659; + 0.408,1.408,0.704,0.422,0.243,0.66; 0.41,1.41,0.705,0.423,0.243,0.661; 0.412, + 1.412,0.706,0.424,0.243,0.662; 0.414,1.414,0.707,0.424,0.242,0.663; 0.416, + 1.416,0.708,0.425,0.242,0.664; 0.418,1.418,0.709,0.425,0.242,0.665; 0.42, + 1.42,0.71,0.426,0.241,0.666; 0.422,1.422,0.711,0.427,0.241,0.667; 0.424, + 1.424,0.712,0.427,0.241,0.668; 0.426,1.426,0.713,0.428,0.24,0.669; 0.428, + 1.428,0.714,0.428,0.24,0.669; 0.43,1.43,0.715,0.429,0.24,0.67; 0.432,1.432, + 0.716,0.43,0.239,0.671; 0.434,1.434,0.717,0.43,0.239,0.672; 0.436,1.436, + 0.718,0.431,0.239,0.673; 0.438,1.438,0.719,0.431,0.238,0.674; 0.44,1.44, + 0.72,0.432,0.238,0.675; 0.442,1.442,0.721,0.433,0.238,0.676; 0.444,1.444, + 0.722,0.433,0.237,0.677; 0.446,1.446,0.723,0.434,0.237,0.678; 0.448,1.448, + 0.724,0.434,0.237,0.679; 0.45,1.45,0.725,0.435,0.236,0.68; 0.452,1.452,0.726, + 0.436,0.236,0.681; 0.454,1.454,0.727,0.436,0.236,0.682; 0.456,1.456,0.728, + 0.437,0.235,0.683; 0.458,1.458,0.729,0.437,0.235,0.684; 0.46,1.46,0.73,0.438, + 0.235,0.684; 0.462,1.462,0.731,0.439,0.234,0.685; 0.464,1.464,0.732,0.439, + 0.234,0.686; 0.466,1.466,0.733,0.44,0.234,0.687; 0.468,1.468,0.734,0.44, + 0.233,0.688; 0.47,1.47,0.735,0.441,0.233,0.689; 0.472,1.472,0.736,0.442, + 0.233,0.69; 0.474,1.474,0.737,0.442,0.233,0.691; 0.476,1.476,0.738,0.443, + 0.232,0.692; 0.478,1.478,0.739,0.443,0.232,0.693; 0.48,1.48,0.74,0.444,0.232, + 0.694; 0.482,1.482,0.741,0.445,0.231,0.695; 0.484,1.484,0.742,0.445,0.231, + 0.696; 0.486,1.486,0.743,0.446,0.231,0.697; 0.488,1.488,0.744,0.446,0.23, + 0.698; 0.49,1.49,0.745,0.447,0.23,0.699; 0.492,1.492,0.746,0.448,0.23,0.699; + 0.494,1.494,0.747,0.448,0.229,0.7; 0.496,1.496,0.748,0.449,0.229,0.701; + 0.498,1.498,0.749,0.449,0.229,0.702; 0.5,1.5,0.75,0.45,0.228,0.703; 0.502, + 1.502,0.751,0.451,0.228,0.704; 0.504,1.504,0.752,0.451,0.228,0.705; 0.506, + 1.506,0.753,0.452,0.228,0.706; 0.508,1.508,0.754,0.452,0.227,0.707; 0.51, + 1.51,0.755,0.453,0.227,0.708; 0.512,1.512,0.756,0.454,0.227,0.709; 0.514, + 1.514,0.757,0.454,0.226,0.71; 0.516,1.516,0.758,0.455,0.226,0.711; 0.518, + 1.518,0.759,0.455,0.226,0.712; 0.52,1.52,0.76,0.456,0.225,0.713; 0.522,1.522, + 0.761,0.457,0.225,0.714; 0.524,1.524,0.762,0.457,0.225,0.714; 0.526,1.526, + 0.763,0.458,0.225,0.715; 0.528,1.528,0.764,0.458,0.224,0.716; 0.53,1.53, + 0.765,0.459,0.224,0.717; 0.532,1.532,0.766,0.46,0.224,0.718; 0.534,1.534, + 0.767,0.46,0.223,0.719; 0.536,1.536,0.768,0.461,0.223,0.72; 0.538,1.538, + 0.769,0.461,0.223,0.721; 0.54,1.54,0.77,0.462,0.223,0.722; 0.542,1.542,0.771, + 0.463,0.222,0.723; 0.544,1.544,0.772,0.463,0.222,0.724; 0.546,1.546,0.773, + 0.464,0.222,0.725; 0.548,1.548,0.774,0.464,0.221,0.726; 0.55,1.55,0.775, + 0.465,0.221,0.727; 0.552,1.552,0.776,0.466,0.221,0.728; 0.554,1.554,0.777, + 0.466,0.221,0.729; 0.556,1.556,0.778,0.467,0.22,0.729; 0.558,1.558,0.779, + 0.467,0.22,0.73; 0.56,1.56,0.78,0.468,0.22,0.731; 0.562,1.562,0.781,0.469, + 0.219,0.732; 0.564,1.564,0.782,0.469,0.219,0.733; 0.566,1.566,0.783,0.47, + 0.219,0.734; 0.568,1.568,0.784,0.47,0.219,0.735; 0.57,1.57,0.785,0.471,0.218, + 0.736; 0.572,1.572,0.786,0.472,0.218,0.737; 0.574,1.574,0.787,0.472,0.218, + 0.738; 0.576,1.576,0.788,0.473,0.217,0.739; 0.578,1.578,0.789,0.473,0.217, + 0.74; 0.58,1.58,0.79,0.474,0.217,0.741; 0.582,1.582,0.791,0.475,0.217,0.742; + 0.584,1.584,0.792,0.475,0.216,0.743; 0.586,1.586,0.793,0.476,0.216,0.744; + 0.588,1.588,0.794,0.476,0.216,0.744; 0.59,1.59,0.795,0.477,0.216,0.745; + 0.592,1.592,0.796,0.478,0.215,0.746; 0.594,1.594,0.797,0.478,0.215,0.747; + 0.596,1.596,0.798,0.479,0.215,0.748; 0.598,1.598,0.799,0.479,0.214,0.749; + 0.6,1.6,0.8,0.48,0.214,0.75; 0.602,1.602,0.801,0.481,0.214,0.751; 0.604, + 1.604,0.802,0.481,0.214,0.752; 0.606,1.606,0.803,0.482,0.213,0.753; 0.608, + 1.608,0.804,0.482,0.213,0.754; 0.61,1.61,0.805,0.483,0.213,0.755; 0.612, + 1.612,0.806,0.484,0.213,0.756; 0.614,1.614,0.807,0.484,0.212,0.757; 0.616, + 1.616,0.808,0.485,0.212,0.758; 0.618,1.618,0.809,0.485,0.212,0.759; 0.62, + 1.62,0.81,0.486,0.212,0.759; 0.622,1.622,0.811,0.487,0.211,0.76; 0.624,1.624, + 0.812,0.487,0.211,0.761; 0.626,1.626,0.813,0.488,0.211,0.762; 0.628,1.628, + 0.814,0.488,0.211,0.763; 0.63,1.63,0.815,0.489,0.21,0.764; 0.632,1.632,0.816, + 0.49,0.21,0.765; 0.634,1.634,0.817,0.49,0.21,0.766; 0.636,1.636,0.818,0.491, + 0.209,0.767; 0.638,1.638,0.819,0.491,0.209,0.768; 0.64,1.64,0.82,0.492,0.209, + 0.769; 0.642,1.642,0.821,0.493,0.209,0.77; 0.644,1.644,0.822,0.493,0.208, + 0.771; 0.646,1.646,0.823,0.494,0.208,0.772; 0.648,1.648,0.824,0.494,0.208, + 0.773; 0.65,1.65,0.825,0.495,0.208,0.774; 0.652,1.652,0.826,0.496,0.207, + 0.774; 0.654,1.654,0.827,0.496,0.207,0.775; 0.656,1.656,0.828,0.497,0.207, + 0.776; 0.658,1.658,0.829,0.497,0.207,0.777; 0.66,1.66,0.83,0.498,0.206,0.778; + 0.662,1.662,0.831,0.499,0.206,0.779; 0.664,1.664,0.832,0.499,0.206,0.78; + 0.666,1.666,0.833,0.5,0.206,0.781; 0.668,1.668,0.834,0.5,0.205,0.782; 0.67, + 1.67,0.835,0.501,0.205,0.783; 0.672,1.672,0.836,0.502,0.205,0.784; 0.674, + 1.674,0.837,0.502,0.205,0.785; 0.676,1.676,0.838,0.503,0.204,0.786; 0.678, + 1.678,0.839,0.503,0.204,0.787; 0.68,1.68,0.84,0.504,0.204,0.788; 0.682,1.682, + 0.841,0.505,0.204,0.789; 0.684,1.684,0.842,0.505,0.204,0.789; 0.686,1.686, + 0.843,0.506,0.203,0.79; 0.688,1.688,0.844,0.506,0.203,0.791; 0.69,1.69,0.845, + 0.507,0.203,0.792; 0.692,1.692,0.846,0.508,0.203,0.793; 0.694,1.694,0.847, + 0.508,0.202,0.794; 0.696,1.696,0.848,0.509,0.202,0.795; 0.698,1.698,0.849, + 0.509,0.202,0.796; 0.7,1.7,0.85,0.51,0.202,0.797; 0.702,1.702,0.851,0.511, + 0.201,0.798; 0.704,1.704,0.852,0.511,0.201,0.799; 0.706,1.706,0.853,0.512, + 0.201,0.8; 0.708,1.708,0.854,0.512,0.201,0.801; 0.71,1.71,0.855,0.513,0.2, + 0.802; 0.712,1.712,0.856,0.514,0.2,0.803; 0.714,1.714,0.857,0.514,0.2,0.804; + 0.716,1.716,0.858,0.515,0.2,0.804; 0.718,1.718,0.859,0.515,0.199,0.805; + 0.72,1.72,0.86,0.516,0.199,0.806; 0.722,1.722,0.861,0.517,0.199,0.807; 0.724, + 1.724,0.862,0.517,0.199,0.808; 0.726,1.726,0.863,0.518,0.199,0.809; 0.728, + 1.728,0.864,0.518,0.198,0.81; 0.73,1.73,0.865,0.519,0.198,0.811; 0.732,1.732, + 0.866,0.52,0.198,0.812; 0.734,1.734,0.867,0.52,0.198,0.813; 0.736,1.736, + 0.868,0.521,0.197,0.814; 0.738,1.738,0.869,0.521,0.197,0.815; 0.74,1.74, + 0.87,0.522,0.197,0.816; 0.742,1.742,0.871,0.523,0.197,0.817; 0.744,1.744, + 0.872,0.523,0.197,0.818; 0.746,1.746,0.873,0.524,0.196,0.819; 0.748,1.748, + 0.874,0.524,0.196,0.819; 0.75,1.75,0.875,0.525,0.196,0.82; 0.752,1.752,0.876, + 0.526,0.196,0.821; 0.754,1.754,0.877,0.526,0.195,0.822; 0.756,1.756,0.878, + 0.527,0.195,0.823; 0.758,1.758,0.879,0.527,0.195,0.824; 0.76,1.76,0.88,0.528, + 0.195,0.825; 0.762,1.762,0.881,0.529,0.194,0.826; 0.764,1.764,0.882,0.529, + 0.194,0.827; 0.766,1.766,0.883,0.53,0.194,0.828; 0.768,1.768,0.884,0.53, + 0.194,0.829; 0.77,1.77,0.885,0.531,0.194,0.83; 0.772,1.772,0.886,0.532,0.193, + 0.831; 0.774,1.774,0.887,0.532,0.193,0.832; 0.776,1.776,0.888,0.533,0.193, + 0.833; 0.778,1.778,0.889,0.533,0.193,0.834; 0.78,1.78,0.89,0.534,0.193,0.834; + 0.782,1.782,0.891,0.535,0.192,0.835; 0.784,1.784,0.892,0.535,0.192,0.836; + 0.786,1.786,0.893,0.536,0.192,0.837; 0.788,1.788,0.894,0.536,0.192,0.838; + 0.79,1.79,0.895,0.537,0.191,0.839; 0.792,1.792,0.896,0.538,0.191,0.84; 0.794, + 1.794,0.897,0.538,0.191,0.841; 0.796,1.796,0.898,0.539,0.191,0.842; 0.798, + 1.798,0.899,0.539,0.191,0.843; 0.8,1.8,0.9,0.54,0.19,0.844; 0.802,1.802, + 0.901,0.541,0.19,0.845; 0.804,1.804,0.902,0.541,0.19,0.846; 0.806,1.806, + 0.903,0.542,0.19,0.847; 0.808,1.808,0.904,0.542,0.19,0.848; 0.81,1.81,0.905, + 0.543,0.189,0.849; 0.812,1.812,0.906,0.544,0.189,0.849; 0.814,1.814,0.907, + 0.544,0.189,0.85; 0.816,1.816,0.908,0.545,0.189,0.851; 0.818,1.818,0.909, + 0.545,0.189,0.852; 0.82,1.82,0.91,0.546,0.188,0.853; 0.822,1.822,0.911,0.547, + 0.188,0.854; 0.824,1.824,0.912,0.547,0.188,0.855; 0.826,1.826,0.913,0.548, + 0.188,0.856; 0.828,1.828,0.914,0.548,0.187,0.857; 0.83,1.83,0.915,0.549, + 0.187,0.858; 0.832,1.832,0.916,0.55,0.187,0.859; 0.834,1.834,0.917,0.55, + 0.187,0.86; 0.836,1.836,0.918,0.551,0.187,0.861; 0.838,1.838,0.919,0.551, + 0.186,0.862; 0.84,1.84,0.92,0.552,0.186,0.863; 0.842,1.842,0.921,0.553,0.186, + 0.864; 0.844,1.844,0.922,0.553,0.186,0.864; 0.846,1.846,0.923,0.554,0.186, + 0.865; 0.848,1.848,0.924,0.554,0.185,0.866; 0.85,1.85,0.925,0.555,0.185, + 0.867; 0.852,1.852,0.926,0.556,0.185,0.868; 0.854,1.854,0.927,0.556,0.185, + 0.869; 0.856,1.856,0.928,0.557,0.185,0.87; 0.858,1.858,0.929,0.557,0.184, + 0.871; 0.86,1.86,0.93,0.558,0.184,0.872; 0.862,1.862,0.931,0.559,0.184,0.873; + 0.864,1.864,0.932,0.559,0.184,0.874; 0.866,1.866,0.933,0.56,0.184,0.875; + 0.868,1.868,0.934,0.56,0.183,0.876; 0.87,1.87,0.935,0.561,0.183,0.877; 0.872, + 1.872,0.936,0.562,0.183,0.878; 0.874,1.874,0.937,0.562,0.183,0.879; 0.876, + 1.876,0.938,0.563,0.183,0.879; 0.878,1.878,0.939,0.563,0.182,0.88; 0.88, + 1.88,0.94,0.564,0.182,0.881; 0.882,1.882,0.941,0.565,0.182,0.882; 0.884, + 1.884,0.942,0.565,0.182,0.883; 0.886,1.886,0.943,0.566,0.182,0.884; 0.888, + 1.888,0.944,0.566,0.182,0.885; 0.89,1.89,0.945,0.567,0.181,0.886; 0.892, + 1.892,0.946,0.568,0.181,0.887; 0.894,1.894,0.947,0.568,0.181,0.888; 0.896, + 1.896,0.948,0.569,0.181,0.889; 0.898,1.898,0.949,0.569,0.181,0.89; 0.9,1.9, + 0.95,0.57,0.18,0.891; 0.902,1.902,0.951,0.571,0.18,0.892; 0.904,1.904,0.952, + 0.571,0.18,0.893; 0.906,1.906,0.953,0.572,0.18,0.894; 0.908,1.908,0.954, + 0.572,0.18,0.894; 0.91,1.91,0.955,0.573,0.179,0.895; 0.912,1.912,0.956,0.574, + 0.179,0.896; 0.914,1.914,0.957,0.574,0.179,0.897; 0.916,1.916,0.958,0.575, + 0.179,0.898; 0.918,1.918,0.959,0.575,0.179,0.899; 0.92,1.92,0.96,0.576,0.178, + 0.9; 0.922,1.922,0.961,0.577,0.178,0.901; 0.924,1.924,0.962,0.577,0.178, + 0.902; 0.926,1.926,0.963,0.578,0.178,0.903; 0.928,1.928,0.964,0.578,0.178, + 0.904; 0.93,1.93,0.965,0.579,0.178,0.905; 0.932,1.932,0.966,0.58,0.177,0.906; + 0.934,1.934,0.967,0.58,0.177,0.907; 0.936,1.936,0.968,0.581,0.177,0.908; + 0.938,1.938,0.969,0.581,0.177,0.909; 0.94,1.94,0.97,0.582,0.177,0.909; 0.942, + 1.942,0.971,0.583,0.176,0.91; 0.944,1.944,0.972,0.583,0.176,0.911; 0.946, + 1.946,0.973,0.584,0.176,0.912; 0.948,1.948,0.974,0.584,0.176,0.913; 0.95, + 1.95,0.975,0.585,0.176,0.914; 0.952,1.952,0.976,0.586,0.176,0.915; 0.954, + 1.954,0.977,0.586,0.175,0.916; 0.956,1.956,0.978,0.587,0.175,0.917; 0.958, + 1.958,0.979,0.587,0.175,0.918; 0.96,1.96,0.98,0.588,0.175,0.919; 0.962,1.962, + 0.981,0.589,0.175,0.92; 0.964,1.964,0.982,0.589,0.174,0.921; 0.966,1.966, + 0.983,0.59,0.174,0.922; 0.968,1.968,0.984,0.59,0.174,0.923; 0.97,1.97,0.985, + 0.591,0.174,0.924; 0.972,1.972,0.986,0.592,0.174,0.924; 0.974,1.974,0.987, + 0.592,0.174,0.925; 0.976,1.976,0.988,0.593,0.173,0.926; 0.978,1.978,0.989, + 0.593,0.173,0.927; 0.98,1.98,0.99,0.594,0.173,0.928; 0.982,1.982,0.991,0.595, + 0.173,0.929; 0.984,1.984,0.992,0.595,0.173,0.93; 0.986,1.986,0.993,0.596, + 0.173,0.931; 0.988,1.988,0.994,0.596,0.172,0.932; 0.99,1.99,0.995,0.597, + 0.172,0.933; 0.992,1.992,0.996,0.598,0.172,0.934; 0.994,1.994,0.997,0.598, + 0.172,0.935; 0.996,1.996,0.998,0.599,0.172,0.936; 0.998,1.998,0.999,0.599, + 0.172,0.937; 1,2,1,0.6,0.171,0.938; 1,2,1,0.6,0.171,0.938], + extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) + "Data for validating the pIIntegralTime block" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp L( - height=0.3, - duration=1, - offset=0.3) "Time delay of the first order time-delayed model" - annotation (Placement(transformation(extent={{-60,-50},{-40,-30}}))); - Modelica.Blocks.Sources.RealExpression referenceTi(y=0.35*L.y + 13*L.y*T.y*T.y - /(T.y*T.y + 12*L.y*T.y + 7*L.y*L.y)) - "Reference value for the integral time" - annotation (Placement(transformation(extent={{-10,50},{10,70}}))); equation - connect(L.y, pIIntegralTime.L) annotation (Line(points={{-38,-40},{-20,-40},{-20, - -6},{-12,-6}}, color={0,0,127})); - connect(T.y, pIIntegralTime.T) annotation (Line(points={{-38,0},{-26,0},{-26,6}, - {-12,6}}, color={0,0,127})); + connect(ReferenceData.y[2], pIIntegralTime.T) annotation (Line(points={{-38,0}, + {-20,0},{-20,6},{-12,6}}, color={0,0,127})); + connect(pIIntegralTime.L, ReferenceData.y[3]) annotation (Line(points={{-12,-6}, + {-20,-6},{-20,0},{-38,0}}, color={0,0,127})); annotation ( experiment( StopTime=1.0, @@ -44,5 +278,8 @@ Validation test for the block Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.AutoTuner.AMIGO.PIIntergralTime.

+

+The reference data is imported from a raw data that is generated with a Python implementation of this block. +

")); end PIIntegralTime; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/BaseClasses/package.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/BaseClasses/package.mo deleted file mode 100644 index 7df4fc260c6..00000000000 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/BaseClasses/package.mo +++ /dev/null @@ -1,29 +0,0 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning; -package BaseClasses "Package with base classes" - annotation ( - preferredView="info", - Documentation( - info=" -

-This package contains base classes to construct blocks in -Buildings.Controls.OBC.Utilities.PIDWithAutotuning. -

-"), - Icon( - graphics={ - Rectangle( - lineColor={200,200,200}, - fillColor={248,248,248}, - fillPattern=FillPattern.HorizontalCylinder, - extent={{-100,-100},{100,100}}, - radius=25.0), - Rectangle( - lineColor={128,128,128}, - extent={{-100,-100},{100,100}}, - radius=25.0), - Ellipse( - extent={{-30,-30},{30,30}}, - lineColor={128,128,128}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid)})); -end BaseClasses; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/PIDWithAutotuningAmigoFOTD.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/PIDWithAutotuningAmigoFOTD.mo index 08a6b714c32..980cae32368 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/PIDWithAutotuningAmigoFOTD.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/PIDWithAutotuningAmigoFOTD.mo @@ -1,14 +1,66 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning; block PIDWithAutotuningAmigoFOTD "A autotuning PID controller with an Amigo tuner and a first order time delayed system model" - extends - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.BaseClasses.PIDWithRelay( - relay( - yHig=yHig, - yLow=yLow, - deaBan=deaBan)); parameter Real setPoint(min=1E-6) = 0.8 - "Setpoint used for PID tuning"; + "Setpoint for the tuning process"; + parameter Buildings.Controls.OBC.CDL.Types.SimpleController controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PI + "Type of controller"; + parameter Real k_start( + min=100*Buildings.Controls.OBC.CDL.Constants.eps)=1 + "Start value of the gain of controller" + annotation (Dialog(group="Control gains")); + parameter Real Ti_start( + final quantity="Time", + final unit="s", + min=100*Buildings.Controls.OBC.CDL.Constants.eps)=0.5 + "Start value of the time constant of integrator block" + annotation (Dialog(group="Control gains",enable=controllerType == CDL.Types.SimpleController.PI or controllerType == CDL.Types.SimpleController.PID)); + parameter Real Td_start( + final quantity="Time", + final unit="s", + min=100*Buildings.Controls.OBC.CDL.Constants.eps)=0.1 + "Start value of the time constant of derivative block" + annotation (Dialog(group="Control gains",enable=controllerType == CDL.Types.SimpleController.PD or controllerType == CDL.Types.SimpleController.PID)); + parameter Real yHig(min=1E-6) = 1 + "Higher value for the output"; + parameter Real yLow(min=1E-6) = 0.5 + "Lower value for the output"; + parameter Real deaBan(min=1E-6) = 0.5 + "Deadband for holding the output value"; + Buildings.Controls.OBC.CDL.Interfaces.RealInput u_s + "Connector for setpoint input signal" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}),iconTransformation(extent={{-140,-20},{-100,20}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealInput u_m + "Connector for measurement input signal" + annotation (Placement(transformation(origin={0,-120},extent={{20,-20},{-20,20}},rotation=270),iconTransformation(extent={{20,-20},{-20,20}},rotation=270,origin={0,-120}))); + Buildings.Controls.OBC.CDL.Interfaces.BooleanInput trigger + "Resets the controller output when trigger becomes true" + annotation (Placement(transformation(extent={{-20,-20},{20,20}},rotation=90,origin={-60,-120}), iconTransformation(extent={{-20,-20},{20,20}},rotation=90,origin={-60,-120}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput y + "Connector for actuator output signal" + annotation (Placement(transformation(extent={{100,-20},{140,20}}),iconTransformation(extent={{100,-20},{140,20}}))); + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Control relay( + yHig=yHig, + yLow=yLow, + deaBan=deaBan) + "A relay controller" + annotation (Placement(transformation(extent={{22,20},{42,40}}))); + Buildings.Controls.OBC.Utilities.PIDWithInputGains pid( + controllerType=controllerType) "A pid controller" + annotation (Placement(transformation(extent={{22,-40},{42,-20}}))); + Buildings.Controls.OBC.CDL.Continuous.Switch swi + "Switch between a PID controller and a relay controller" + annotation (Placement(transformation(extent={{62,10},{82,-10}}))); + Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samk(y_start=k_start) + "Recording the control gain" + annotation (Placement(transformation(extent={{-40,-10},{-20,-30}}))); + Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samTi(y_start=Ti_start) if with_I + "Recording the integral time" + annotation (Placement(transformation(extent={{-80,-38},{-60,-58}}))); + Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samTd(y_start=Td_start) if with_D + "Recording the derivative time" + annotation (Placement(transformation(extent={{-40,-60},{-20,-80}}))); + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.ControlProcessModel controlProcessModel( yHig=yHig - setPoint, @@ -29,7 +81,40 @@ block PIDWithAutotuningAmigoFOTD Buildings.Controls.OBC.CDL.Continuous.Sources.ModelTime modTim "Simulation time" annotation (Placement(transformation(extent={{80,60},{60,80}}))); + +protected + final parameter Boolean with_I=controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PI or controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PID + "Boolean flag to enable integral action" + annotation (Evaluate=true,HideResult=true); + final parameter Boolean with_D=controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PD or controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PID + "Boolean flag to enable derivative action" + annotation (Evaluate=true,HideResult=true); + equation + connect(pid.u_s, u_s) annotation (Line(points={{20,-30},{8,-30},{8,0},{-120,0}}, + color={0,0,127})); + connect(relay.u_s, u_s) annotation (Line(points={{20,30},{-80,30},{-80,0},{-120, + 0}}, color={0,0,127})); + connect(pid.trigger, trigger) annotation (Line(points={{26,-42},{26,-92},{-60, + -92},{-60,-120}}, color={255,0,255})); + connect(swi.y, y) annotation (Line(points={{84,0},{96,0},{96,0},{120,0}}, + color={0,0,127})); + connect(samk.y,pid. k) annotation (Line(points={{-18,-20},{-16,-20},{-16,-22}, + {20,-22}}, color={0,0,127})); + connect(pid.Ti, samTi.y) annotation (Line(points={{20,-26},{-14,-26},{-14,-48}, + {-58,-48}}, color={0,0,127})); + connect(samTd.y,pid. Td) annotation (Line(points={{-18,-70},{14,-70},{14,-34}, + {20,-34}}, color={0,0,127})); + connect(relay.u_m, u_m) annotation (Line(points={{32,18},{32,6},{46,6},{46,-80}, + {0,-80},{0,-120}}, color={0,0,127})); + connect(pid.u_m, u_m) annotation (Line(points={{32,-42},{32,-80},{0,-80},{0,-120}}, + color={0,0,127})); + connect(swi.u3, relay.y) + annotation (Line(points={{60,8},{52,8},{52,36},{43,36}}, color={0,0,127})); + connect(swi.u1, pid.y) annotation (Line(points={{60,-8},{54,-8},{54,-30},{44, + -30}}, color={0,0,127})); + + connect(responseProcess.triggerEnd, swi.u2) annotation (Line(points={{-1,42},{-1, 10},{48,10},{48,0},{60,0}}, color={255,0,255})); connect(samk.trigger, swi.u2) annotation (Line(points={{-30,-8},{-30,10},{48,10}, @@ -85,5 +170,21 @@ This blocks implements a AMIGO PID tuning method and the control process is appr

Noted that this block can only support a PI controller or a PID controller.

-")); +", revisions=" +
    +
  • +June 1, 2022, by Sen Huang:
    +First implementation
    +
  • +
+"), Icon(graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-158,144},{142,104}}, + textString="%name", + textColor={0,0,255})})); end PIDWithAutotuningAmigoFOTD; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Control.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Control.mo index 89276f73455..1f2c3b88798 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Control.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Control.mo @@ -92,7 +92,7 @@ equation

otherwise, y(t) = y(t-Δt), yOn(t) = yOn(t-Δt)

where δ is a dead band, e(t) = us(t) - um(t) is the control error, yhig and ylow are the higher value and the lower value of the output y, respectively.

t-Δt is the previous time step.

-

Note that this block generates a asymmetric signal, meaning yhig ≠ ylow

+

Note that this block generates an asymmetric signal, meaning yhig ≠ ylow

References

Josefin Berner (2017). "Automatic Controller Tuning using Relay-based Model Identification." Department of Automatic Control, Lund Institute of Technology, Lund University.

", revisions=" diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo index 475d46cf4d9..e91b3733054 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo @@ -162,8 +162,11 @@ First implementation
", info=" -

This block calculates the half-period ratio of the output from a relay controller, ρ, by

-

ρ = max(ton,toff)/ min(ton,toff)

+

This block calculates the half-period ratio of the output from a relay controller.

+

Main equations

+

+ρ = max(ton,toff)/ min(ton,toff), +

where ton and ton are the length of the On period and the Off period, respectively.

During an On period, the relay switch signal becomes True;

During an Off period, the relay switch signal becomes False.

diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/NormalizedTimeDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/NormalizedTimeDelay.mo index 1f7dfc99d2c..e994039075c 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/NormalizedTimeDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/NormalizedTimeDelay.mo @@ -72,9 +72,18 @@ First implementation
", info=" -

This block calculates the normalized time delay of the responses from a relay controller, τ, by

-

τ = (γ - ρ)/(γ - 1)/(ρ*0.35+0.65)

+

This block calculates the normalized time delay of the responses from a relay controller.

+

Main equations

+

+τ = (γ - ρ)/(γ - 1)/(ρ*0.35+0.65), +

where γ and ρ are the asymmetry level of the relay controller and the half-period ratio, respectively.

+

Validation

+

+This block was validated analytically, see + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.NormalizedTimeDelay. +

References

Josefin Berner (2017). diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mo index b65b9ed5b37..c4447845518 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mo @@ -1,21 +1,115 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation; model NormalizedTimeDelay "Test model for NormalizedTimeDelay" extends Modelica.Icons.Example; - Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable rho( - table=[0,0; 0.1,0; 0.3,1; 0.7,1.5; 0.83,1.5; 0.85,2], - smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, - extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) - "The half period ratio" - annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.NormalizedTimeDelay normalizedTimeDelay(gamma=4) "calculates the normalized time delay" annotation (Placement(transformation(extent={{-8,-10},{12,10}}))); - Modelica.Blocks.Sources.RealExpression reference(y=(normalizedTimeDelay.gamma - - rho.y[1])/(normalizedTimeDelay.gamma - 1)/(0.35*rho.y[1] + 0.65)) - annotation (Placement(transformation(extent={{-8,26},{12,46}}))); + CDL.Continuous.Sources.TimeTable ReferenceData(table=[0,0,2.051; 0.002,0, + 2.051; 0.004,0,2.051; 0.006,0,2.051; 0.008,0,2.051; 0.01,0,2.051; 0.012, + 0,2.051; 0.014,0,2.051; 0.016,0,2.051; 0.018,0,2.051; 0.02,0,2.051; + 0.022,0,2.051; 0.024,0,2.051; 0.026,0,2.051; 0.028,0,2.051; 0.03,0, + 2.051; 0.032,0,2.051; 0.034,0,2.051; 0.036,0,2.051; 0.038,0,2.051; 0.04, + 0,2.051; 0.042,0,2.051; 0.044,0,2.051; 0.046,0,2.051; 0.048,0,2.051; + 0.05,0,2.051; 0.052,0,2.051; 0.054,0,2.051; 0.056,0,2.051; 0.058,0, + 2.051; 0.06,0,2.051; 0.062,0,2.051; 0.064,0,2.051; 0.066,0,2.051; 0.068, + 0,2.051; 0.07,0,2.051; 0.072,0,2.051; 0.074,0,2.051; 0.076,0,2.051; + 0.078,0,2.051; 0.08,0,2.051; 0.082,0,2.051; 0.084,0,2.051; 0.086,0, + 2.051; 0.088,0,2.051; 0.09,0,2.051; 0.092,0,2.051; 0.094,0,2.051; 0.096, + 0,2.051; 0.098,0,2.051; 0.1,0,2.051; 0.1,0,2.051; 0.1,0,2.051; 0.102,0, + 2.051; 0.104,0,2.051; 0.106,0,2.051; 0.108,0,2.051; 0.11,0,2.051; 0.112, + 0,2.051; 0.114,0,2.051; 0.116,0,2.051; 0.118,0,2.051; 0.12,0,2.051; + 0.122,0,2.051; 0.124,0,2.051; 0.126,0,2.051; 0.128,0,2.051; 0.13,0, + 2.051; 0.132,0,2.051; 0.134,0,2.051; 0.136,0,2.051; 0.138,0,2.051; 0.14, + 0,2.051; 0.142,0,2.051; 0.144,0,2.051; 0.146,0,2.051; 0.148,0,2.051; + 0.15,0,2.051; 0.152,0,2.051; 0.154,0,2.051; 0.156,0,2.051; 0.158,0, + 2.051; 0.16,0,2.051; 0.162,0,2.051; 0.164,0,2.051; 0.166,0,2.051; 0.168, + 0,2.051; 0.17,0,2.051; 0.172,0,2.051; 0.174,0,2.051; 0.176,0,2.051; + 0.178,0,2.051; 0.18,0,2.051; 0.182,0,2.051; 0.184,0,2.051; 0.186,0, + 2.051; 0.188,0,2.051; 0.19,0,2.051; 0.192,0,2.051; 0.194,0,2.051; 0.196, + 0,2.051; 0.198,0,2.051; 0.2,0,2.051; 0.202,0,2.051; 0.204,0,2.051; + 0.206,0,2.051; 0.208,0,2.051; 0.21,0,2.051; 0.212,0,2.051; 0.214,0, + 2.051; 0.216,0,2.051; 0.218,0,2.051; 0.22,0,2.051; 0.222,0,2.051; 0.224, + 0,2.051; 0.226,0,2.051; 0.228,0,2.051; 0.23,0,2.051; 0.232,0,2.051; + 0.234,0,2.051; 0.236,0,2.051; 0.238,0,2.051; 0.24,0,2.051; 0.242,0, + 2.051; 0.244,0,2.051; 0.246,0,2.051; 0.248,0,2.051; 0.25,0,2.051; 0.252, + 0,2.051; 0.254,0,2.051; 0.256,0,2.051; 0.258,0,2.051; 0.26,0,2.051; + 0.262,0,2.051; 0.264,0,2.051; 0.266,0,2.051; 0.268,0,2.051; 0.27,0, + 2.051; 0.272,0,2.051; 0.274,0,2.051; 0.276,0,2.051; 0.278,0,2.051; 0.28, + 0,2.051; 0.282,0,2.051; 0.284,0,2.051; 0.286,0,2.051; 0.288,0,2.051; + 0.29,0,2.051; 0.292,0,2.051; 0.294,0,2.051; 0.296,0,2.051; 0.298,0, + 2.051; 0.3,0,2.051; 0.3,1,1; 0.3,1,1; 0.302,1,1; 0.304,1,1; 0.306,1,1; + 0.308,1,1; 0.31,1,1; 0.312,1,1; 0.314,1,1; 0.316,1,1; 0.318,1,1; 0.32,1, + 1; 0.322,1,1; 0.324,1,1; 0.326,1,1; 0.328,1,1; 0.33,1,1; 0.332,1,1; + 0.334,1,1; 0.336,1,1; 0.338,1,1; 0.34,1,1; 0.342,1,1; 0.344,1,1; 0.346, + 1,1; 0.348,1,1; 0.35,1,1; 0.352,1,1; 0.354,1,1; 0.356,1,1; 0.358,1,1; + 0.36,1,1; 0.362,1,1; 0.364,1,1; 0.366,1,1; 0.368,1,1; 0.37,1,1; 0.372,1, + 1; 0.374,1,1; 0.376,1,1; 0.378,1,1; 0.38,1,1; 0.382,1,1; 0.384,1,1; + 0.386,1,1; 0.388,1,1; 0.39,1,1; 0.392,1,1; 0.394,1,1; 0.396,1,1; 0.398, + 1,1; 0.4,1,1; 0.402,1,1; 0.404,1,1; 0.406,1,1; 0.408,1,1; 0.41,1,1; + 0.412,1,1; 0.414,1,1; 0.416,1,1; 0.418,1,1; 0.42,1,1; 0.422,1,1; 0.424, + 1,1; 0.426,1,1; 0.428,1,1; 0.43,1,1; 0.432,1,1; 0.434,1,1; 0.436,1,1; + 0.438,1,1; 0.44,1,1; 0.442,1,1; 0.444,1,1; 0.446,1,1; 0.448,1,1; 0.45,1, + 1; 0.452,1,1; 0.454,1,1; 0.456,1,1; 0.458,1,1; 0.46,1,1; 0.462,1,1; + 0.464,1,1; 0.466,1,1; 0.468,1,1; 0.47,1,1; 0.472,1,1; 0.474,1,1; 0.476, + 1,1; 0.478,1,1; 0.48,1,1; 0.482,1,1; 0.484,1,1; 0.486,1,1; 0.488,1,1; + 0.49,1,1; 0.492,1,1; 0.494,1,1; 0.496,1,1; 0.498,1,1; 0.5,1,1; 0.502,1, + 1; 0.504,1,1; 0.506,1,1; 0.508,1,1; 0.51,1,1; 0.512,1,1; 0.514,1,1; + 0.516,1,1; 0.518,1,1; 0.52,1,1; 0.522,1,1; 0.524,1,1; 0.526,1,1; 0.528, + 1,1; 0.53,1,1; 0.532,1,1; 0.534,1,1; 0.536,1,1; 0.538,1,1; 0.54,1,1; + 0.542,1,1; 0.544,1,1; 0.546,1,1; 0.548,1,1; 0.55,1,1; 0.552,1,1; 0.554, + 1,1; 0.556,1,1; 0.558,1,1; 0.56,1,1; 0.562,1,1; 0.564,1,1; 0.566,1,1; + 0.568,1,1; 0.57,1,1; 0.572,1,1; 0.574,1,1; 0.576,1,1; 0.578,1,1; 0.58,1, + 1; 0.582,1,1; 0.584,1,1; 0.586,1,1; 0.588,1,1; 0.59,1,1; 0.592,1,1; + 0.594,1,1; 0.596,1,1; 0.598,1,1; 0.6,1,1; 0.602,1,1; 0.604,1,1; 0.606,1, + 1; 0.608,1,1; 0.61,1,1; 0.612,1,1; 0.614,1,1; 0.616,1,1; 0.618,1,1; + 0.62,1,1; 0.622,1,1; 0.624,1,1; 0.626,1,1; 0.628,1,1; 0.63,1,1; 0.632,1, + 1; 0.634,1,1; 0.636,1,1; 0.638,1,1; 0.64,1,1; 0.642,1,1; 0.644,1,1; + 0.646,1,1; 0.648,1,1; 0.65,1,1; 0.652,1,1; 0.654,1,1; 0.656,1,1; 0.658, + 1,1; 0.66,1,1; 0.662,1,1; 0.664,1,1; 0.666,1,1; 0.668,1,1; 0.67,1,1; + 0.672,1,1; 0.674,1,1; 0.676,1,1; 0.678,1,1; 0.68,1,1; 0.682,1,1; 0.684, + 1,1; 0.686,1,1; 0.688,1,1; 0.69,1,1; 0.692,1,1; 0.694,1,1; 0.696,1,1; + 0.698,1,1; 0.7,1,1; 0.7,1.5,0.709; 0.7,1.5,0.709; 0.702,1.5,0.709; + 0.704,1.5,0.709; 0.706,1.5,0.709; 0.708,1.5,0.709; 0.71,1.5,0.709; + 0.712,1.5,0.709; 0.714,1.5,0.709; 0.716,1.5,0.709; 0.718,1.5,0.709; + 0.72,1.5,0.709; 0.722,1.5,0.709; 0.724,1.5,0.709; 0.726,1.5,0.709; + 0.728,1.5,0.709; 0.73,1.5,0.709; 0.732,1.5,0.709; 0.734,1.5,0.709; + 0.736,1.5,0.709; 0.738,1.5,0.709; 0.74,1.5,0.709; 0.742,1.5,0.709; + 0.744,1.5,0.709; 0.746,1.5,0.709; 0.748,1.5,0.709; 0.75,1.5,0.709; + 0.752,1.5,0.709; 0.754,1.5,0.709; 0.756,1.5,0.709; 0.758,1.5,0.709; + 0.76,1.5,0.709; 0.762,1.5,0.709; 0.764,1.5,0.709; 0.766,1.5,0.709; + 0.768,1.5,0.709; 0.77,1.5,0.709; 0.772,1.5,0.709; 0.774,1.5,0.709; + 0.776,1.5,0.709; 0.778,1.5,0.709; 0.78,1.5,0.709; 0.782,1.5,0.709; + 0.784,1.5,0.709; 0.786,1.5,0.709; 0.788,1.5,0.709; 0.79,1.5,0.709; + 0.792,1.5,0.709; 0.794,1.5,0.709; 0.796,1.5,0.709; 0.798,1.5,0.709; 0.8, + 1.5,0.709; 0.802,1.5,0.709; 0.804,1.5,0.709; 0.806,1.5,0.709; 0.808,1.5, + 0.709; 0.81,1.5,0.709; 0.812,1.5,0.709; 0.814,1.5,0.709; 0.816,1.5, + 0.709; 0.818,1.5,0.709; 0.82,1.5,0.709; 0.822,1.5,0.709; 0.824,1.5, + 0.709; 0.826,1.5,0.709; 0.828,1.5,0.709; 0.83,1.5,0.709; 0.83,1.5,0.709; + 0.83,1.5,0.709; 0.832,1.5,0.709; 0.834,1.5,0.709; 0.836,1.5,0.709; + 0.838,1.5,0.709; 0.84,1.5,0.709; 0.842,1.5,0.709; 0.844,1.5,0.709; + 0.846,1.5,0.709; 0.848,1.5,0.709; 0.85,1.5,0.709; 0.85,2,0.494; 0.85,2, + 0.494; 0.852,2,0.494; 0.854,2,0.494; 0.856,2,0.494; 0.858,2,0.494; 0.86, + 2,0.494; 0.862,2,0.494; 0.864,2,0.494; 0.866,2,0.494; 0.868,2,0.494; + 0.87,2,0.494; 0.872,2,0.494; 0.874,2,0.494; 0.876,2,0.494; 0.878,2, + 0.494; 0.88,2,0.494; 0.882,2,0.494; 0.884,2,0.494; 0.886,2,0.494; 0.888, + 2,0.494; 0.89,2,0.494; 0.892,2,0.494; 0.894,2,0.494; 0.896,2,0.494; + 0.898,2,0.494; 0.9,2,0.494; 0.902,2,0.494; 0.904,2,0.494; 0.906,2,0.494; + 0.908,2,0.494; 0.91,2,0.494; 0.912,2,0.494; 0.914,2,0.494; 0.916,2, + 0.494; 0.918,2,0.494; 0.92,2,0.494; 0.922,2,0.494; 0.924,2,0.494; 0.926, + 2,0.494; 0.928,2,0.494; 0.93,2,0.494; 0.932,2,0.494; 0.934,2,0.494; + 0.936,2,0.494; 0.938,2,0.494; 0.94,2,0.494; 0.942,2,0.494; 0.944,2, + 0.494; 0.946,2,0.494; 0.948,2,0.494; 0.95,2,0.494; 0.952,2,0.494; 0.954, + 2,0.494; 0.956,2,0.494; 0.958,2,0.494; 0.96,2,0.494; 0.962,2,0.494; + 0.964,2,0.494; 0.966,2,0.494; 0.968,2,0.494; 0.97,2,0.494; 0.972,2, + 0.494; 0.974,2,0.494; 0.976,2,0.494; 0.978,2,0.494; 0.98,2,0.494; 0.982, + 2,0.494; 0.984,2,0.494; 0.986,2,0.494; 0.988,2,0.494; 0.99,2,0.494; + 0.992,2,0.494; 0.994,2,0.494; 0.996,2,0.494; 0.998,2,0.494; 1,2,0.494], + extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) + "Data for validating the normalizedTimeDelay block" + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); equation - connect(rho.y[1], normalizedTimeDelay.rho) + connect(ReferenceData.y[1], normalizedTimeDelay.rho) annotation (Line(points={{-38,0},{-10,0}}, color={0,0,127})); annotation ( experiment( diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Gain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Gain.mo index 8bd6de3d3a2..a3d79e364bb 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Gain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Gain.mo @@ -87,14 +87,19 @@ First implementation
", info=" -

This block calculates the gain of a first-order time-delayed model, k, by

-

k = Iy/Iu

+

This block calculates the gain of a first-order time-delayed model.

+

Main equations

+

+k = Iy/Iu, +

where Iy and Iu are the integral of the process output and the integral of the relay output, respectively.

Iy is calculated by

Iy = ∫ u(t) dt;

where u is the process output.

Iu is calculated by

-

Iu = ton (yhig - yref)+ toff(-ylow - yref);

+

+Iu = ton (yhig - yref)+ toff(-ylow - yref), +

where yhig and ylow are the higher value and the lower value of the relay control output, respectively.

yref is the reference value of the relay output.

ton and toff are the length of the On period and the Off period, respectively.

diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/TimeConstantDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/TimeConstantDelay.mo index add06e14eef..fe6c959c3a1 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/TimeConstantDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/TimeConstantDelay.mo @@ -16,14 +16,14 @@ block TimeConstantDelay annotation (Placement(transformation(extent={{-140,-20},{-100,20}}), iconTransformation(extent={{-140,-20},{-100,20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput ratioLT - "Connector for the signal of the ratio between the time constant and the time delay of a first order time delay model" + "Connector for the signal of the ratio between the time constant and the time delay" annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput T "Connector for a output signal of the time constant" annotation (Placement(transformation(extent={{100,60},{120,80}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput L - "Connector for a output signal of the time constant" + "Connector for a output signal of the time delay" annotation (Placement(transformation(extent={{100,-70},{120,-50}}))); Buildings.Controls.OBC.CDL.Continuous.Abs absk "Absoulte value of the gain" @@ -137,15 +137,26 @@ First implementation
", info="

This block calculates the time constant and the time delay of a first-order time-delayed model

+

Main equations

The time constant, T, is calculated by

-

T = ton/(ln((δ/|k|-yhig+exp(τ/(1 - τ))(yhig + ylow))/(yhig-δ/|k|)))

+

+T = ton/(ln((δ/|k|-yhig+exp(τ/(1 - τ))(yhig + ylow))/(yhig-δ/|k|))), +

where yhig and ylow are the higher value and the lower value of the relay control output, respectively,

ton is the length of the On period,

δ is the dead band of a relay controller,

k is the gain of the first-order time-delayed model.

τ is the normalized time delay.

The time delay, L, is calculated by

-

L = T τ/(1 - τ);

+

+L = T τ/(1 - τ), +

+

Validation

+

+This block was validated analytically, see + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation.TimeConstantDela. +

References

Josefin Berner (2015). diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo index 65b9e2a4c4a..3ea94cdebe1 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo @@ -5,59 +5,285 @@ model ControlProcessModel "Test model for ControlProcessModel" controlProcessModel(yLow=0.1, deaBan=0.05) "Calculates the parameters of the system model for the control process" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable tOn( - table=[0,1; 0.1,1; 0.3,1; 0.7,1; 0.83,1; 0.85,2], - smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, - extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) - "The length of the On period" - annotation (Placement(transformation(extent={{-60,20},{-40,40}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable tau( - table=[0,0.3; 0.1,0.5; 0.3,0.1; 0.7,0.5; 0.83,0.8; 0.85,0.5], - smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, - extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) - "The normalized time delay" - annotation (Placement(transformation(extent={{-60,-40},{-40,-20}}))); - Modelica.Blocks.Sources.RealExpression referenceT(y=tOn.y[1]/log((0.05/ - controlProcessModel.k - 0.1 + exp(tau.y[1]/(1 - tau.y[1]))*(1 + 0.1))/( - 1 - 0.05/abs(controlProcessModel.k)))) - "Reference value for the time constant" - annotation (Placement(transformation(extent={{-10,48},{10,68}}))); - Modelica.Blocks.Sources.RealExpression referenceL(y=tau.y[1]/(1 - tau.y[1])* - referenceT.y) "Reference value for the time delay" - annotation (Placement(transformation(extent={{-10,30},{10,50}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable u( - table=[0,1; 0.1,0.5; 0.3,0.5; 0.7,0.5; 0.83,1; 0.85,1], - smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, - extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) - "The response of a relay controller" - annotation (Placement(transformation(extent={{-60,50},{-40,70}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable tOff( - table=[0,1; 0.1,1; 0.3,1; 0.7,3; 0.83,3; 0.85,3], - smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, - extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) - "The length of the Off period" - annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); - Buildings.Controls.OBC.CDL.Logical.Sources.TimeTable tuningStart(table=[0,0; 0.1,0; 0.3,1; 0.7,1; - 0.83,1; 0.85,1], period=2) - "Mimicking the signal for the tuning period start" - annotation (Placement(transformation(extent={{-60,-80},{-40,-60}}))); - Buildings.Controls.OBC.CDL.Logical.Sources.TimeTable tuningEnd(table=[0,0; 0.1,0; 0.3,0; 0.7,1; 0.83, - 1; 0.85,1], period=2) "Mimicking the signal for the tuning period end" - annotation (Placement(transformation(extent={{-20,-80},{0,-60}}))); + CDL.Continuous.Sources.TimeTable ReferenceData(table=[0,1,1,1,0.3,1,1; 0.002, + 1,1,1,0.3,1,1; 0.004,1,1,1,0.3,1,1; 0.006,1,1,1,0.3,1,1; 0.008,1,1,1, + 0.3,1,1; 0.01,1,1,1,0.3,1,1; 0.012,1,1,1,0.3,1,1; 0.014,1,1,1,0.3,1,1; + 0.016,1,1,1,0.3,1,1; 0.018,1,1,1,0.3,1,1; 0.02,1,1,1,0.3,1,1; 0.022,1,1, + 1,0.3,1,1; 0.024,1,1,1,0.3,1,1; 0.026,1,1,1,0.3,1,1; 0.028,1,1,1,0.3,1, + 1; 0.03,1,1,1,0.3,1,1; 0.032,1,1,1,0.3,1,1; 0.034,1,1,1,0.3,1,1; 0.036, + 1,1,1,0.3,1,1; 0.038,1,1,1,0.3,1,1; 0.04,1,1,1,0.3,1,1; 0.042,1,1,1,0.3, + 1,1; 0.044,1,1,1,0.3,1,1; 0.046,1,1,1,0.3,1,1; 0.048,1,1,1,0.3,1,1; + 0.05,1,1,1,0.3,1,1; 0.052,1,1,1,0.3,1,1; 0.054,1,1,1,0.3,1,1; 0.056,1,1, + 1,0.3,1,1; 0.058,1,1,1,0.3,1,1; 0.06,1,1,1,0.3,1,1; 0.062,1,1,1,0.3,1,1; + 0.064,1,1,1,0.3,1,1; 0.066,1,1,1,0.3,1,1; 0.068,1,1,1,0.3,1,1; 0.07,1,1, + 1,0.3,1,1; 0.072,1,1,1,0.3,1,1; 0.074,1,1,1,0.3,1,1; 0.076,1,1,1,0.3,1, + 1; 0.078,1,1,1,0.3,1,1; 0.08,1,1,1,0.3,1,1; 0.082,1,1,1,0.3,1,1; 0.084, + 1,1,1,0.3,1,1; 0.086,1,1,1,0.3,1,1; 0.088,1,1,1,0.3,1,1; 0.09,1,1,1,0.3, + 1,1; 0.092,1,1,1,0.3,1,1; 0.094,1,1,1,0.3,1,1; 0.096,1,1,1,0.3,1,1; + 0.098,1,1,1,0.3,1,1; 0.1,1,1,1,0.3,1,1; 0.1,0.5,1,1,0.5,1,1; 0.1,0.5,1, + 1,0.5,1,1; 0.102,0.5,1,1,0.5,1,1; 0.104,0.5,1,1,0.5,1,1; 0.106,0.5,1,1, + 0.5,1,1; 0.108,0.5,1,1,0.5,1,1; 0.11,0.5,1,1,0.5,1,1; 0.112,0.5,1,1,0.5, + 1,1; 0.114,0.5,1,1,0.5,1,1; 0.116,0.5,1,1,0.5,1,1; 0.118,0.5,1,1,0.5,1, + 1; 0.12,0.5,1,1,0.5,1,1; 0.122,0.5,1,1,0.5,1,1; 0.124,0.5,1,1,0.5,1,1; + 0.126,0.5,1,1,0.5,1,1; 0.128,0.5,1,1,0.5,1,1; 0.13,0.5,1,1,0.5,1,1; + 0.132,0.5,1,1,0.5,1,1; 0.134,0.5,1,1,0.5,1,1; 0.136,0.5,1,1,0.5,1,1; + 0.138,0.5,1,1,0.5,1,1; 0.14,0.5,1,1,0.5,1,1; 0.142,0.5,1,1,0.5,1,1; + 0.144,0.5,1,1,0.5,1,1; 0.146,0.5,1,1,0.5,1,1; 0.148,0.5,1,1,0.5,1,1; + 0.15,0.5,1,1,0.5,1,1; 0.152,0.5,1,1,0.5,1,1; 0.154,0.5,1,1,0.5,1,1; + 0.156,0.5,1,1,0.5,1,1; 0.158,0.5,1,1,0.5,1,1; 0.16,0.5,1,1,0.5,1,1; + 0.162,0.5,1,1,0.5,1,1; 0.164,0.5,1,1,0.5,1,1; 0.166,0.5,1,1,0.5,1,1; + 0.168,0.5,1,1,0.5,1,1; 0.17,0.5,1,1,0.5,1,1; 0.172,0.5,1,1,0.5,1,1; + 0.174,0.5,1,1,0.5,1,1; 0.176,0.5,1,1,0.5,1,1; 0.178,0.5,1,1,0.5,1,1; + 0.18,0.5,1,1,0.5,1,1; 0.182,0.5,1,1,0.5,1,1; 0.184,0.5,1,1,0.5,1,1; + 0.186,0.5,1,1,0.5,1,1; 0.188,0.5,1,1,0.5,1,1; 0.19,0.5,1,1,0.5,1,1; + 0.192,0.5,1,1,0.5,1,1; 0.194,0.5,1,1,0.5,1,1; 0.196,0.5,1,1,0.5,1,1; + 0.198,0.5,1,1,0.5,1,1; 0.2,0.5,1,1,0.5,1,1; 0.202,0.5,1,1,0.5,1,1; + 0.204,0.5,1,1,0.5,1,1; 0.206,0.5,1,1,0.5,1,1; 0.208,0.5,1,1,0.5,1,1; + 0.21,0.5,1,1,0.5,1,1; 0.212,0.5,1,1,0.5,1,1; 0.214,0.5,1,1,0.5,1,1; + 0.216,0.5,1,1,0.5,1,1; 0.218,0.5,1,1,0.5,1,1; 0.22,0.5,1,1,0.5,1,1; + 0.222,0.5,1,1,0.5,1,1; 0.224,0.5,1,1,0.5,1,1; 0.226,0.5,1,1,0.5,1,1; + 0.228,0.5,1,1,0.5,1,1; 0.23,0.5,1,1,0.5,1,1; 0.232,0.5,1,1,0.5,1,1; + 0.234,0.5,1,1,0.5,1,1; 0.236,0.5,1,1,0.5,1,1; 0.238,0.5,1,1,0.5,1,1; + 0.24,0.5,1,1,0.5,1,1; 0.242,0.5,1,1,0.5,1,1; 0.244,0.5,1,1,0.5,1,1; + 0.246,0.5,1,1,0.5,1,1; 0.248,0.5,1,1,0.5,1,1; 0.25,0.5,1,1,0.5,1,1; + 0.252,0.5,1,1,0.5,1,1; 0.254,0.5,1,1,0.5,1,1; 0.256,0.5,1,1,0.5,1,1; + 0.258,0.5,1,1,0.5,1,1; 0.26,0.5,1,1,0.5,1,1; 0.262,0.5,1,1,0.5,1,1; + 0.264,0.5,1,1,0.5,1,1; 0.266,0.5,1,1,0.5,1,1; 0.268,0.5,1,1,0.5,1,1; + 0.27,0.5,1,1,0.5,1,1; 0.272,0.5,1,1,0.5,1,1; 0.274,0.5,1,1,0.5,1,1; + 0.276,0.5,1,1,0.5,1,1; 0.278,0.5,1,1,0.5,1,1; 0.28,0.5,1,1,0.5,1,1; + 0.282,0.5,1,1,0.5,1,1; 0.284,0.5,1,1,0.5,1,1; 0.286,0.5,1,1,0.5,1,1; + 0.288,0.5,1,1,0.5,1,1; 0.29,0.5,1,1,0.5,1,1; 0.292,0.5,1,1,0.5,1,1; + 0.294,0.5,1,1,0.5,1,1; 0.296,0.5,1,1,0.5,1,1; 0.298,0.5,1,1,0.5,1,1; + 0.3,0.5,1,1,0.5,1,1; 0.3,0.5,1,1,0.1,1,1; 0.3,0.5,1,1,0.1,1,1; 0.302, + 0.5,1,1,0.1,1,1; 0.304,0.5,1,1,0.1,1,1; 0.306,0.5,1,1,0.1,1,1; 0.308, + 0.5,1,1,0.1,1,1; 0.31,0.5,1,1,0.1,1,1; 0.312,0.5,1,1,0.1,1,1; 0.314,0.5, + 1,1,0.1,1,1; 0.316,0.5,1,1,0.1,1,1; 0.318,0.5,1,1,0.1,1,1; 0.32,0.5,1,1, + 0.1,1,1; 0.322,0.5,1,1,0.1,1,1; 0.324,0.5,1,1,0.1,1,1; 0.326,0.5,1,1, + 0.1,1,1; 0.328,0.5,1,1,0.1,1,1; 0.33,0.5,1,1,0.1,1,1; 0.332,0.5,1,1,0.1, + 1,1; 0.334,0.5,1,1,0.1,1,1; 0.336,0.5,1,1,0.1,1,1; 0.338,0.5,1,1,0.1,1, + 1; 0.34,0.5,1,1,0.1,1,1; 0.342,0.5,1,1,0.1,1,1; 0.344,0.5,1,1,0.1,1,1; + 0.346,0.5,1,1,0.1,1,1; 0.348,0.5,1,1,0.1,1,1; 0.35,0.5,1,1,0.1,1,1; + 0.352,0.5,1,1,0.1,1,1; 0.354,0.5,1,1,0.1,1,1; 0.356,0.5,1,1,0.1,1,1; + 0.358,0.5,1,1,0.1,1,1; 0.36,0.5,1,1,0.1,1,1; 0.362,0.5,1,1,0.1,1,1; + 0.364,0.5,1,1,0.1,1,1; 0.366,0.5,1,1,0.1,1,1; 0.368,0.5,1,1,0.1,1,1; + 0.37,0.5,1,1,0.1,1,1; 0.372,0.5,1,1,0.1,1,1; 0.374,0.5,1,1,0.1,1,1; + 0.376,0.5,1,1,0.1,1,1; 0.378,0.5,1,1,0.1,1,1; 0.38,0.5,1,1,0.1,1,1; + 0.382,0.5,1,1,0.1,1,1; 0.384,0.5,1,1,0.1,1,1; 0.386,0.5,1,1,0.1,1,1; + 0.388,0.5,1,1,0.1,1,1; 0.39,0.5,1,1,0.1,1,1; 0.392,0.5,1,1,0.1,1,1; + 0.394,0.5,1,1,0.1,1,1; 0.396,0.5,1,1,0.1,1,1; 0.398,0.5,1,1,0.1,1,1; + 0.4,0.5,1,1,0.1,1,1; 0.402,0.5,1,1,0.1,1,1; 0.404,0.5,1,1,0.1,1,1; + 0.406,0.5,1,1,0.1,1,1; 0.408,0.5,1,1,0.1,1,1; 0.41,0.5,1,1,0.1,1,1; + 0.412,0.5,1,1,0.1,1,1; 0.414,0.5,1,1,0.1,1,1; 0.416,0.5,1,1,0.1,1,1; + 0.418,0.5,1,1,0.1,1,1; 0.42,0.5,1,1,0.1,1,1; 0.422,0.5,1,1,0.1,1,1; + 0.424,0.5,1,1,0.1,1,1; 0.426,0.5,1,1,0.1,1,1; 0.428,0.5,1,1,0.1,1,1; + 0.43,0.5,1,1,0.1,1,1; 0.432,0.5,1,1,0.1,1,1; 0.434,0.5,1,1,0.1,1,1; + 0.436,0.5,1,1,0.1,1,1; 0.438,0.5,1,1,0.1,1,1; 0.44,0.5,1,1,0.1,1,1; + 0.442,0.5,1,1,0.1,1,1; 0.444,0.5,1,1,0.1,1,1; 0.446,0.5,1,1,0.1,1,1; + 0.448,0.5,1,1,0.1,1,1; 0.45,0.5,1,1,0.1,1,1; 0.452,0.5,1,1,0.1,1,1; + 0.454,0.5,1,1,0.1,1,1; 0.456,0.5,1,1,0.1,1,1; 0.458,0.5,1,1,0.1,1,1; + 0.46,0.5,1,1,0.1,1,1; 0.462,0.5,1,1,0.1,1,1; 0.464,0.5,1,1,0.1,1,1; + 0.466,0.5,1,1,0.1,1,1; 0.468,0.5,1,1,0.1,1,1; 0.47,0.5,1,1,0.1,1,1; + 0.472,0.5,1,1,0.1,1,1; 0.474,0.5,1,1,0.1,1,1; 0.476,0.5,1,1,0.1,1,1; + 0.478,0.5,1,1,0.1,1,1; 0.48,0.5,1,1,0.1,1,1; 0.482,0.5,1,1,0.1,1,1; + 0.484,0.5,1,1,0.1,1,1; 0.486,0.5,1,1,0.1,1,1; 0.488,0.5,1,1,0.1,1,1; + 0.49,0.5,1,1,0.1,1,1; 0.492,0.5,1,1,0.1,1,1; 0.494,0.5,1,1,0.1,1,1; + 0.496,0.5,1,1,0.1,1,1; 0.498,0.5,1,1,0.1,1,1; 0.5,0.5,1,1,0.1,1,1; + 0.502,0.5,1,1,0.1,1,1; 0.504,0.5,1,1,0.1,1,1; 0.506,0.5,1,1,0.1,1,1; + 0.508,0.5,1,1,0.1,1,1; 0.51,0.5,1,1,0.1,1,1; 0.512,0.5,1,1,0.1,1,1; + 0.514,0.5,1,1,0.1,1,1; 0.516,0.5,1,1,0.1,1,1; 0.518,0.5,1,1,0.1,1,1; + 0.52,0.5,1,1,0.1,1,1; 0.522,0.5,1,1,0.1,1,1; 0.524,0.5,1,1,0.1,1,1; + 0.526,0.5,1,1,0.1,1,1; 0.528,0.5,1,1,0.1,1,1; 0.53,0.5,1,1,0.1,1,1; + 0.532,0.5,1,1,0.1,1,1; 0.534,0.5,1,1,0.1,1,1; 0.536,0.5,1,1,0.1,1,1; + 0.538,0.5,1,1,0.1,1,1; 0.54,0.5,1,1,0.1,1,1; 0.542,0.5,1,1,0.1,1,1; + 0.544,0.5,1,1,0.1,1,1; 0.546,0.5,1,1,0.1,1,1; 0.548,0.5,1,1,0.1,1,1; + 0.55,0.5,1,1,0.1,1,1; 0.552,0.5,1,1,0.1,1,1; 0.554,0.5,1,1,0.1,1,1; + 0.556,0.5,1,1,0.1,1,1; 0.558,0.5,1,1,0.1,1,1; 0.56,0.5,1,1,0.1,1,1; + 0.562,0.5,1,1,0.1,1,1; 0.564,0.5,1,1,0.1,1,1; 0.566,0.5,1,1,0.1,1,1; + 0.568,0.5,1,1,0.1,1,1; 0.57,0.5,1,1,0.1,1,1; 0.572,0.5,1,1,0.1,1,1; + 0.574,0.5,1,1,0.1,1,1; 0.576,0.5,1,1,0.1,1,1; 0.578,0.5,1,1,0.1,1,1; + 0.58,0.5,1,1,0.1,1,1; 0.582,0.5,1,1,0.1,1,1; 0.584,0.5,1,1,0.1,1,1; + 0.586,0.5,1,1,0.1,1,1; 0.588,0.5,1,1,0.1,1,1; 0.59,0.5,1,1,0.1,1,1; + 0.592,0.5,1,1,0.1,1,1; 0.594,0.5,1,1,0.1,1,1; 0.596,0.5,1,1,0.1,1,1; + 0.598,0.5,1,1,0.1,1,1; 0.6,0.5,1,1,0.1,1,1; 0.602,0.5,1,1,0.1,1,1; + 0.604,0.5,1,1,0.1,1,1; 0.606,0.5,1,1,0.1,1,1; 0.608,0.5,1,1,0.1,1,1; + 0.61,0.5,1,1,0.1,1,1; 0.612,0.5,1,1,0.1,1,1; 0.614,0.5,1,1,0.1,1,1; + 0.616,0.5,1,1,0.1,1,1; 0.618,0.5,1,1,0.1,1,1; 0.62,0.5,1,1,0.1,1,1; + 0.622,0.5,1,1,0.1,1,1; 0.624,0.5,1,1,0.1,1,1; 0.626,0.5,1,1,0.1,1,1; + 0.628,0.5,1,1,0.1,1,1; 0.63,0.5,1,1,0.1,1,1; 0.632,0.5,1,1,0.1,1,1; + 0.634,0.5,1,1,0.1,1,1; 0.636,0.5,1,1,0.1,1,1; 0.638,0.5,1,1,0.1,1,1; + 0.64,0.5,1,1,0.1,1,1; 0.642,0.5,1,1,0.1,1,1; 0.644,0.5,1,1,0.1,1,1; + 0.646,0.5,1,1,0.1,1,1; 0.648,0.5,1,1,0.1,1,1; 0.65,0.5,1,1,0.1,1,1; + 0.652,0.5,1,1,0.1,1,1; 0.654,0.5,1,1,0.1,1,1; 0.656,0.5,1,1,0.1,1,1; + 0.658,0.5,1,1,0.1,1,1; 0.66,0.5,1,1,0.1,1,1; 0.662,0.5,1,1,0.1,1,1; + 0.664,0.5,1,1,0.1,1,1; 0.666,0.5,1,1,0.1,1,1; 0.668,0.5,1,1,0.1,1,1; + 0.67,0.5,1,1,0.1,1,1; 0.672,0.5,1,1,0.1,1,1; 0.674,0.5,1,1,0.1,1,1; + 0.676,0.5,1,1,0.1,1,1; 0.678,0.5,1,1,0.1,1,1; 0.68,0.5,1,1,0.1,1,1; + 0.682,0.5,1,1,0.1,1,1; 0.684,0.5,1,1,0.1,1,1; 0.686,0.5,1,1,0.1,1,1; + 0.688,0.5,1,1,0.1,1,1; 0.69,0.5,1,1,0.1,1,1; 0.692,0.5,1,1,0.1,1,1; + 0.694,0.5,1,1,0.1,1,1; 0.696,0.5,1,1,0.1,1,1; 0.698,0.5,1,1,0.1,1,1; + 0.7,0.5,1,1,0.1,1,1; 0.7,0.5,1,3,0.5,0.762,0.762; 0.7,0.5,1,3,0.5,0.762, + 0.762; 0.702,0.5,1,3,0.5,0.762,0.762; 0.704,0.5,1,3,0.5,0.762,0.762; + 0.706,0.5,1,3,0.5,0.762,0.762; 0.708,0.5,1,3,0.5,0.762,0.762; 0.71,0.5, + 1,3,0.5,0.762,0.762; 0.712,0.5,1,3,0.5,0.762,0.762; 0.714,0.5,1,3,0.5, + 0.762,0.762; 0.716,0.5,1,3,0.5,0.762,0.762; 0.718,0.5,1,3,0.5,0.762, + 0.762; 0.72,0.5,1,3,0.5,0.762,0.762; 0.722,0.5,1,3,0.5,0.762,0.762; + 0.724,0.5,1,3,0.5,0.762,0.762; 0.726,0.5,1,3,0.5,0.762,0.762; 0.728,0.5, + 1,3,0.5,0.762,0.762; 0.73,0.5,1,3,0.5,0.762,0.762; 0.732,0.5,1,3,0.5, + 0.762,0.762; 0.734,0.5,1,3,0.5,0.762,0.762; 0.736,0.5,1,3,0.5,0.762, + 0.762; 0.738,0.5,1,3,0.5,0.762,0.762; 0.74,0.5,1,3,0.5,0.762,0.762; + 0.742,0.5,1,3,0.5,0.762,0.762; 0.744,0.5,1,3,0.5,0.762,0.762; 0.746,0.5, + 1,3,0.5,0.762,0.762; 0.748,0.5,1,3,0.5,0.762,0.762; 0.75,0.5,1,3,0.5, + 0.762,0.762; 0.752,0.5,1,3,0.5,0.762,0.762; 0.754,0.5,1,3,0.5,0.762, + 0.762; 0.756,0.5,1,3,0.5,0.762,0.762; 0.758,0.5,1,3,0.5,0.762,0.762; + 0.76,0.5,1,3,0.5,0.762,0.762; 0.762,0.5,1,3,0.5,0.762,0.762; 0.764,0.5, + 1,3,0.5,0.762,0.762; 0.766,0.5,1,3,0.5,0.762,0.762; 0.768,0.5,1,3,0.5, + 0.762,0.762; 0.77,0.5,1,3,0.5,0.762,0.762; 0.772,0.5,1,3,0.5,0.762, + 0.762; 0.774,0.5,1,3,0.5,0.762,0.762; 0.776,0.5,1,3,0.5,0.762,0.762; + 0.778,0.5,1,3,0.5,0.762,0.762; 0.78,0.5,1,3,0.5,0.762,0.762; 0.782,0.5, + 1,3,0.5,0.762,0.762; 0.784,0.5,1,3,0.5,0.762,0.762; 0.786,0.5,1,3,0.5, + 0.762,0.762; 0.788,0.5,1,3,0.5,0.762,0.762; 0.79,0.5,1,3,0.5,0.762, + 0.762; 0.792,0.5,1,3,0.5,0.762,0.762; 0.794,0.5,1,3,0.5,0.762,0.762; + 0.796,0.5,1,3,0.5,0.762,0.762; 0.798,0.5,1,3,0.5,0.762,0.762; 0.8,0.5,1, + 3,0.5,0.762,0.762; 0.802,0.5,1,3,0.5,0.762,0.762; 0.804,0.5,1,3,0.5, + 0.762,0.762; 0.806,0.5,1,3,0.5,0.762,0.762; 0.808,0.5,1,3,0.5,0.762, + 0.762; 0.81,0.5,1,3,0.5,0.762,0.762; 0.812,0.5,1,3,0.5,0.762,0.762; + 0.814,0.5,1,3,0.5,0.762,0.762; 0.816,0.5,1,3,0.5,0.762,0.762; 0.818,0.5, + 1,3,0.5,0.762,0.762; 0.82,0.5,1,3,0.5,0.762,0.762; 0.822,0.5,1,3,0.5, + 0.762,0.762; 0.824,0.5,1,3,0.5,0.762,0.762; 0.826,0.5,1,3,0.5,0.762, + 0.762; 0.828,0.5,1,3,0.5,0.762,0.762; 0.83,0.5,1,3,0.5,0.762,0.762; + 0.83,1,1,3,0.8,0.762,0.762; 0.83,1,1,3,0.8,0.762,0.762; 0.832,1,1,3,0.8, + 0.762,0.762; 0.834,1,1,3,0.8,0.762,0.762; 0.836,1,1,3,0.8,0.762,0.762; + 0.838,1,1,3,0.8,0.762,0.762; 0.84,1,1,3,0.8,0.762,0.762; 0.842,1,1,3, + 0.8,0.762,0.762; 0.844,1,1,3,0.8,0.762,0.762; 0.846,1,1,3,0.8,0.762, + 0.762; 0.848,1,1,3,0.8,0.762,0.762; 0.85,1,1,3,0.8,0.762,0.762; 0.85,1, + 2,3,0.5,0.762,0.762; 0.85,1,2,3,0.5,0.762,0.762; 0.852,1,2,3,0.5,0.762, + 0.762; 0.854,1,2,3,0.5,0.762,0.762; 0.856,1,2,3,0.5,0.762,0.762; 0.858, + 1,2,3,0.5,0.762,0.762; 0.86,1,2,3,0.5,0.762,0.762; 0.862,1,2,3,0.5, + 0.762,0.762; 0.864,1,2,3,0.5,0.762,0.762; 0.866,1,2,3,0.5,0.762,0.762; + 0.868,1,2,3,0.5,0.762,0.762; 0.87,1,2,3,0.5,0.762,0.762; 0.872,1,2,3, + 0.5,0.762,0.762; 0.874,1,2,3,0.5,0.762,0.762; 0.876,1,2,3,0.5,0.762, + 0.762; 0.878,1,2,3,0.5,0.762,0.762; 0.88,1,2,3,0.5,0.762,0.762; 0.882,1, + 2,3,0.5,0.762,0.762; 0.884,1,2,3,0.5,0.762,0.762; 0.886,1,2,3,0.5,0.762, + 0.762; 0.888,1,2,3,0.5,0.762,0.762; 0.89,1,2,3,0.5,0.762,0.762; 0.892,1, + 2,3,0.5,0.762,0.762; 0.894,1,2,3,0.5,0.762,0.762; 0.896,1,2,3,0.5,0.762, + 0.762; 0.898,1,2,3,0.5,0.762,0.762; 0.9,1,2,3,0.5,0.762,0.762; 0.902,1, + 2,3,0.5,0.762,0.762; 0.904,1,2,3,0.5,0.762,0.762; 0.906,1,2,3,0.5,0.762, + 0.762; 0.908,1,2,3,0.5,0.762,0.762; 0.91,1,2,3,0.5,0.762,0.762; 0.912,1, + 2,3,0.5,0.762,0.762; 0.914,1,2,3,0.5,0.762,0.762; 0.916,1,2,3,0.5,0.762, + 0.762; 0.918,1,2,3,0.5,0.762,0.762; 0.92,1,2,3,0.5,0.762,0.762; 0.922,1, + 2,3,0.5,0.762,0.762; 0.924,1,2,3,0.5,0.762,0.762; 0.926,1,2,3,0.5,0.762, + 0.762; 0.928,1,2,3,0.5,0.762,0.762; 0.93,1,2,3,0.5,0.762,0.762; 0.932,1, + 2,3,0.5,0.762,0.762; 0.934,1,2,3,0.5,0.762,0.762; 0.936,1,2,3,0.5,0.762, + 0.762; 0.938,1,2,3,0.5,0.762,0.762; 0.94,1,2,3,0.5,0.762,0.762; 0.942,1, + 2,3,0.5,0.762,0.762; 0.944,1,2,3,0.5,0.762,0.762; 0.946,1,2,3,0.5,0.762, + 0.762; 0.948,1,2,3,0.5,0.762,0.762; 0.95,1,2,3,0.5,0.762,0.762; 0.952,1, + 2,3,0.5,0.762,0.762; 0.954,1,2,3,0.5,0.762,0.762; 0.956,1,2,3,0.5,0.762, + 0.762; 0.958,1,2,3,0.5,0.762,0.762; 0.96,1,2,3,0.5,0.762,0.762; 0.962,1, + 2,3,0.5,0.762,0.762; 0.964,1,2,3,0.5,0.762,0.762; 0.966,1,2,3,0.5,0.762, + 0.762; 0.968,1,2,3,0.5,0.762,0.762; 0.97,1,2,3,0.5,0.762,0.762; 0.972,1, + 2,3,0.5,0.762,0.762; 0.974,1,2,3,0.5,0.762,0.762; 0.976,1,2,3,0.5,0.762, + 0.762; 0.978,1,2,3,0.5,0.762,0.762; 0.98,1,2,3,0.5,0.762,0.762; 0.982,1, + 2,3,0.5,0.762,0.762; 0.984,1,2,3,0.5,0.762,0.762; 0.986,1,2,3,0.5,0.762, + 0.762; 0.988,1,2,3,0.5,0.762,0.762; 0.99,1,2,3,0.5,0.762,0.762; 0.992,1, + 2,3,0.5,0.762,0.762; 0.994,1,2,3,0.5,0.762,0.762; 0.996,1,2,3,0.5,0.762, + 0.762; 0.998,1,2,3,0.5,0.762,0.762; 1,1,2,3,0.5,0.762,0.762], + extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) + "Data for validating the controlProcessModel block" + annotation (Placement(transformation(extent={{-80,-10},{-60,10}}))); + CDL.Logical.Sources.TimeTable ReferenceBoolData(table=[0,0,0; 0.002,0,0; + 0.004,0,0; 0.006,0,0; 0.008,0,0; 0.01,0,0; 0.012,0,0; 0.014,0,0; 0.016, + 0,0; 0.018,0,0; 0.02,0,0; 0.022,0,0; 0.024,0,0; 0.026,0,0; 0.028,0,0; + 0.03,0,0; 0.032,0,0; 0.034,0,0; 0.036,0,0; 0.038,0,0; 0.04,0,0; 0.042,0, + 0; 0.044,0,0; 0.046,0,0; 0.048,0,0; 0.05,0,0; 0.052,0,0; 0.054,0,0; + 0.056,0,0; 0.058,0,0; 0.06,0,0; 0.062,0,0; 0.064,0,0; 0.066,0,0; 0.068, + 0,0; 0.07,0,0; 0.072,0,0; 0.074,0,0; 0.076,0,0; 0.078,0,0; 0.08,0,0; + 0.082,0,0; 0.084,0,0; 0.086,0,0; 0.088,0,0; 0.09,0,0; 0.092,0,0; 0.094, + 0,0; 0.096,0,0; 0.098,0,0; 0.1,0,0; 0.1,0,0; 0.1,0,0; 0.102,0,0; 0.104, + 0,0; 0.106,0,0; 0.108,0,0; 0.11,0,0; 0.112,0,0; 0.114,0,0; 0.116,0,0; + 0.118,0,0; 0.12,0,0; 0.122,0,0; 0.124,0,0; 0.126,0,0; 0.128,0,0; 0.13,0, + 0; 0.132,0,0; 0.134,0,0; 0.136,0,0; 0.138,0,0; 0.14,0,0; 0.142,0,0; + 0.144,0,0; 0.146,0,0; 0.148,0,0; 0.15,0,0; 0.152,0,0; 0.154,0,0; 0.156, + 0,0; 0.158,0,0; 0.16,0,0; 0.162,0,0; 0.164,0,0; 0.166,0,0; 0.168,0,0; + 0.17,0,0; 0.172,0,0; 0.174,0,0; 0.176,0,0; 0.178,0,0; 0.18,0,0; 0.182,0, + 0; 0.184,0,0; 0.186,0,0; 0.188,0,0; 0.19,0,0; 0.192,0,0; 0.194,0,0; + 0.196,0,0; 0.198,0,0; 0.2,0,0; 0.202,0,0; 0.204,0,0; 0.206,0,0; 0.208,0, + 0; 0.21,0,0; 0.212,0,0; 0.214,0,0; 0.216,0,0; 0.218,0,0; 0.22,0,0; + 0.222,0,0; 0.224,0,0; 0.226,0,0; 0.228,0,0; 0.23,0,0; 0.232,0,0; 0.234, + 0,0; 0.236,0,0; 0.238,0,0; 0.24,0,0; 0.242,0,0; 0.244,0,0; 0.246,0,0; + 0.248,0,0; 0.25,0,0; 0.252,0,0; 0.254,0,0; 0.256,0,0; 0.258,0,0; 0.26,0, + 0; 0.262,0,0; 0.264,0,0; 0.266,0,0; 0.268,0,0; 0.27,0,0; 0.272,0,0; + 0.274,0,0; 0.276,0,0; 0.278,0,0; 0.28,0,0; 0.282,0,0; 0.284,0,0; 0.286, + 0,0; 0.288,0,0; 0.29,0,0; 0.292,0,0; 0.294,0,0; 0.296,0,0; 0.298,0,0; + 0.3,0,0; 0.3,1,0; 0.3,1,0; 0.302,1,0; 0.304,1,0; 0.306,1,0; 0.308,1,0; + 0.31,1,0; 0.312,1,0; 0.314,1,0; 0.316,1,0; 0.318,1,0; 0.32,1,0; 0.322,1, + 0; 0.324,1,0; 0.326,1,0; 0.328,1,0; 0.33,1,0; 0.332,1,0; 0.334,1,0; + 0.336,1,0; 0.338,1,0; 0.34,1,0; 0.342,1,0; 0.344,1,0; 0.346,1,0; 0.348, + 1,0; 0.35,1,0; 0.352,1,0; 0.354,1,0; 0.356,1,0; 0.358,1,0; 0.36,1,0; + 0.362,1,0; 0.364,1,0; 0.366,1,0; 0.368,1,0; 0.37,1,0; 0.372,1,0; 0.374, + 1,0; 0.376,1,0; 0.378,1,0; 0.38,1,0; 0.382,1,0; 0.384,1,0; 0.386,1,0; + 0.388,1,0; 0.39,1,0; 0.392,1,0; 0.394,1,0; 0.396,1,0; 0.398,1,0; 0.4,1, + 0; 0.402,1,0; 0.404,1,0; 0.406,1,0; 0.408,1,0; 0.41,1,0; 0.412,1,0; + 0.414,1,0; 0.416,1,0; 0.418,1,0; 0.42,1,0; 0.422,1,0; 0.424,1,0; 0.426, + 1,0; 0.428,1,0; 0.43,1,0; 0.432,1,0; 0.434,1,0; 0.436,1,0; 0.438,1,0; + 0.44,1,0; 0.442,1,0; 0.444,1,0; 0.446,1,0; 0.448,1,0; 0.45,1,0; 0.452,1, + 0; 0.454,1,0; 0.456,1,0; 0.458,1,0; 0.46,1,0; 0.462,1,0; 0.464,1,0; + 0.466,1,0; 0.468,1,0; 0.47,1,0; 0.472,1,0; 0.474,1,0; 0.476,1,0; 0.478, + 1,0; 0.48,1,0; 0.482,1,0; 0.484,1,0; 0.486,1,0; 0.488,1,0; 0.49,1,0; + 0.492,1,0; 0.494,1,0; 0.496,1,0; 0.498,1,0; 0.5,1,0; 0.502,1,0; 0.504,1, + 0; 0.506,1,0; 0.508,1,0; 0.51,1,0; 0.512,1,0; 0.514,1,0; 0.516,1,0; + 0.518,1,0; 0.52,1,0; 0.522,1,0; 0.524,1,0; 0.526,1,0; 0.528,1,0; 0.53,1, + 0; 0.532,1,0; 0.534,1,0; 0.536,1,0; 0.538,1,0; 0.54,1,0; 0.542,1,0; + 0.544,1,0; 0.546,1,0; 0.548,1,0; 0.55,1,0; 0.552,1,0; 0.554,1,0; 0.556, + 1,0; 0.558,1,0; 0.56,1,0; 0.562,1,0; 0.564,1,0; 0.566,1,0; 0.568,1,0; + 0.57,1,0; 0.572,1,0; 0.574,1,0; 0.576,1,0; 0.578,1,0; 0.58,1,0; 0.582,1, + 0; 0.584,1,0; 0.586,1,0; 0.588,1,0; 0.59,1,0; 0.592,1,0; 0.594,1,0; + 0.596,1,0; 0.598,1,0; 0.6,1,0; 0.602,1,0; 0.604,1,0; 0.606,1,0; 0.608,1, + 0; 0.61,1,0; 0.612,1,0; 0.614,1,0; 0.616,1,0; 0.618,1,0; 0.62,1,0; + 0.622,1,0; 0.624,1,0; 0.626,1,0; 0.628,1,0; 0.63,1,0; 0.632,1,0; 0.634, + 1,0; 0.636,1,0; 0.638,1,0; 0.64,1,0; 0.642,1,0; 0.644,1,0; 0.646,1,0; + 0.648,1,0; 0.65,1,0; 0.652,1,0; 0.654,1,0; 0.656,1,0; 0.658,1,0; 0.66,1, + 0; 0.662,1,0; 0.664,1,0; 0.666,1,0; 0.668,1,0; 0.67,1,0; 0.672,1,0; + 0.674,1,0; 0.676,1,0; 0.678,1,0; 0.68,1,0; 0.682,1,0; 0.684,1,0; 0.686, + 1,0; 0.688,1,0; 0.69,1,0; 0.692,1,0; 0.694,1,0; 0.696,1,0; 0.698,1,0; + 0.7,1,0; 0.7,1,1; 0.7,1,1; 0.702,1,1; 0.704,1,1; 0.706,1,1; 0.708,1,1; + 0.71,1,1; 0.712,1,1; 0.714,1,1; 0.716,1,1; 0.718,1,1; 0.72,1,1; 0.722,1, + 1; 0.724,1,1; 0.726,1,1; 0.728,1,1; 0.73,1,1; 0.732,1,1; 0.734,1,1; + 0.736,1,1; 0.738,1,1; 0.74,1,1; 0.742,1,1; 0.744,1,1; 0.746,1,1; 0.748, + 1,1; 0.75,1,1; 0.752,1,1; 0.754,1,1; 0.756,1,1; 0.758,1,1; 0.76,1,1; + 0.762,1,1; 0.764,1,1; 0.766,1,1; 0.768,1,1; 0.77,1,1; 0.772,1,1; 0.774, + 1,1; 0.776,1,1; 0.778,1,1; 0.78,1,1; 0.782,1,1; 0.784,1,1; 0.786,1,1; + 0.788,1,1; 0.79,1,1; 0.792,1,1; 0.794,1,1; 0.796,1,1; 0.798,1,1; 0.8,1, + 1; 0.802,1,1; 0.804,1,1; 0.806,1,1; 0.808,1,1; 0.81,1,1; 0.812,1,1; + 0.814,1,1; 0.816,1,1; 0.818,1,1; 0.82,1,1; 0.822,1,1; 0.824,1,1; 0.826, + 1,1; 0.828,1,1; 0.83,1,1; 0.83,1,1; 0.83,1,1; 0.832,1,1; 0.834,1,1; + 0.836,1,1; 0.838,1,1; 0.84,1,1; 0.842,1,1; 0.844,1,1; 0.846,1,1; 0.848, + 1,1; 0.85,1,1; 0.85,1,1; 0.85,1,1; 0.852,1,1; 0.854,1,1; 0.856,1,1; + 0.858,1,1; 0.86,1,1; 0.862,1,1; 0.864,1,1; 0.866,1,1; 0.868,1,1; 0.87,1, + 1; 0.872,1,1; 0.874,1,1; 0.876,1,1; 0.878,1,1; 0.88,1,1; 0.882,1,1; + 0.884,1,1; 0.886,1,1; 0.888,1,1; 0.89,1,1; 0.892,1,1; 0.894,1,1; 0.896, + 1,1; 0.898,1,1; 0.9,1,1; 0.902,1,1; 0.904,1,1; 0.906,1,1; 0.908,1,1; + 0.91,1,1; 0.912,1,1; 0.914,1,1; 0.916,1,1; 0.918,1,1; 0.92,1,1; 0.922,1, + 1; 0.924,1,1; 0.926,1,1; 0.928,1,1; 0.93,1,1; 0.932,1,1; 0.934,1,1; + 0.936,1,1; 0.938,1,1; 0.94,1,1; 0.942,1,1; 0.944,1,1; 0.946,1,1; 0.948, + 1,1; 0.95,1,1; 0.952,1,1; 0.954,1,1; 0.956,1,1; 0.958,1,1; 0.96,1,1; + 0.962,1,1; 0.964,1,1; 0.966,1,1; 0.968,1,1; 0.97,1,1; 0.972,1,1; 0.974, + 1,1; 0.976,1,1; 0.978,1,1; 0.98,1,1; 0.982,1,1; 0.984,1,1; 0.986,1,1; + 0.988,1,1; 0.99,1,1; 0.992,1,1; 0.994,1,1; 0.996,1,1; 0.998,1,1; 1,1,1], + period=1) "Boolean Data for validating the controlProcessModel block" + annotation (Placement(transformation(extent={{-80,-60},{-60,-40}}))); equation - connect(tOn.y[1], controlProcessModel.tOn) annotation (Line(points={{-38,30}, - {-24,30},{-24,4},{-12,4}},color={0,0,127})); - connect(tau.y[1], controlProcessModel.tau) annotation (Line(points={{-38,-30}, - {-20,-30},{-20,-8},{-12,-8}}, color={0,0,127})); - connect(u.y[1], controlProcessModel.u) annotation (Line(points={{-38,60},{-20, - 60},{-20,8},{-12,8}}, color={0,0,127})); - connect(tOff.y[1], controlProcessModel.tOff) annotation (Line(points={{-38,0}, - {-20,0},{-20,-4},{-12,-4}}, color={0,0,127})); - connect(tuningStart.y[1], controlProcessModel.triggerStart) annotation (Line( - points={{-38,-70},{-30,-70},{-30,-38},{-6,-38},{-6,-12}}, color={255,0, - 255})); - connect(controlProcessModel.triggerEnd, tuningEnd.y[1]) - annotation (Line(points={{6,-12},{6,-70},{2,-70}}, color={255,0,255})); + connect(ReferenceData.y[1], controlProcessModel.u) annotation (Line(points={{ + -58,0},{-20,0},{-20,8},{-12,8}}, color={0,0,127})); + connect(controlProcessModel.tOn, ReferenceData.y[2]) annotation (Line(points= + {{-12,4},{-18,4},{-18,0},{-58,0}}, color={0,0,127})); + connect(controlProcessModel.tOff, ReferenceData.y[3]) annotation (Line(points= + {{-12,-4},{-16,-4},{-16,0},{-58,0}}, color={0,0,127})); + connect(controlProcessModel.tau, ReferenceData.y[4]) annotation (Line(points= + {{-12,-8},{-18,-8},{-18,0},{-58,0}}, color={0,0,127})); + connect(ReferenceBoolData.y[1], controlProcessModel.triggerStart) + annotation (Line(points={{-58,-50},{-6,-50},{-6,-12}}, color={255,0,255})); + connect(controlProcessModel.triggerEnd, ReferenceBoolData.y[2]) + annotation (Line(points={{6,-12},{6,-50},{-58,-50}}, color={255,0,255})); annotation ( experiment( StopTime=1.0, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mo index 632bbb89c39..4cc58366b5f 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mo @@ -5,38 +5,216 @@ model TimeConstantDelay "Test model for TimeConstantDelay" timeConstantDelay(yLow=0.1) "Calculates the time constant and the time delay" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable tOn( - table=[0,1; 0.1,1; 0.3,1; 0.7,1; 0.83,1; 0.85,2], - smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, - extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) - "Length of the On period" - annotation (Placement(transformation(extent={{-60,20},{-40,40}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable k( - table=[0,1; 0.1,1; 0.3,1; 0.7,1; 0.83,1], - smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, - extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) - "Gain of a first order time delay model" + CDL.Continuous.Sources.TimeTable ReferenceData(table=[0,1,1,0.3,0.754,0.226; + 0.002,1,1,0.3,0.754,0.226; 0.004,1,1,0.3,0.754,0.226; 0.006,1,1,0.3, + 0.754,0.226; 0.008,1,1,0.3,0.754,0.226; 0.01,1,1,0.3,0.754,0.226; 0.012, + 1,1,0.3,0.754,0.226; 0.014,1,1,0.3,0.754,0.226; 0.016,1,1,0.3,0.754, + 0.226; 0.018,1,1,0.3,0.754,0.226; 0.02,1,1,0.3,0.754,0.226; 0.022,1,1, + 0.3,0.754,0.226; 0.024,1,1,0.3,0.754,0.226; 0.026,1,1,0.3,0.754,0.226; + 0.028,1,1,0.3,0.754,0.226; 0.03,1,1,0.3,0.754,0.226; 0.032,1,1,0.3, + 0.754,0.226; 0.034,1,1,0.3,0.754,0.226; 0.036,1,1,0.3,0.754,0.226; + 0.038,1,1,0.3,0.754,0.226; 0.04,1,1,0.3,0.754,0.226; 0.042,1,1,0.3, + 0.754,0.226; 0.044,1,1,0.3,0.754,0.226; 0.046,1,1,0.3,0.754,0.226; + 0.048,1,1,0.3,0.754,0.226; 0.05,1,1,0.3,0.754,0.226; 0.052,1,1,0.3, + 0.754,0.226; 0.054,1,1,0.3,0.754,0.226; 0.056,1,1,0.3,0.754,0.226; + 0.058,1,1,0.3,0.754,0.226; 0.06,1,1,0.3,0.754,0.226; 0.062,1,1,0.3, + 0.754,0.226; 0.064,1,1,0.3,0.754,0.226; 0.066,1,1,0.3,0.754,0.226; + 0.068,1,1,0.3,0.754,0.226; 0.07,1,1,0.3,0.754,0.226; 0.072,1,1,0.3, + 0.754,0.226; 0.074,1,1,0.3,0.754,0.226; 0.076,1,1,0.3,0.754,0.226; + 0.078,1,1,0.3,0.754,0.226; 0.08,1,1,0.3,0.754,0.226; 0.082,1,1,0.3, + 0.754,0.226; 0.084,1,1,0.3,0.754,0.226; 0.086,1,1,0.3,0.754,0.226; + 0.088,1,1,0.3,0.754,0.226; 0.09,1,1,0.3,0.754,0.226; 0.092,1,1,0.3, + 0.754,0.226; 0.094,1,1,0.3,0.754,0.226; 0.096,1,1,0.3,0.754,0.226; + 0.098,1,1,0.3,0.754,0.226; 0.1,1,1,0.3,0.754,0.226; 0.1,1,1,0.5,0.672, + 0.336; 0.1,1,1,0.5,0.672,0.336; 0.102,1,1,0.5,0.672,0.336; 0.104,1,1, + 0.5,0.672,0.336; 0.106,1,1,0.5,0.672,0.336; 0.108,1,1,0.5,0.672,0.336; + 0.11,1,1,0.5,0.672,0.336; 0.112,1,1,0.5,0.672,0.336; 0.114,1,1,0.5, + 0.672,0.336; 0.116,1,1,0.5,0.672,0.336; 0.118,1,1,0.5,0.672,0.336; 0.12, + 1,1,0.5,0.672,0.336; 0.122,1,1,0.5,0.672,0.336; 0.124,1,1,0.5,0.672, + 0.336; 0.126,1,1,0.5,0.672,0.336; 0.128,1,1,0.5,0.672,0.336; 0.13,1,1, + 0.5,0.672,0.336; 0.132,1,1,0.5,0.672,0.336; 0.134,1,1,0.5,0.672,0.336; + 0.136,1,1,0.5,0.672,0.336; 0.138,1,1,0.5,0.672,0.336; 0.14,1,1,0.5, + 0.672,0.336; 0.142,1,1,0.5,0.672,0.336; 0.144,1,1,0.5,0.672,0.336; + 0.146,1,1,0.5,0.672,0.336; 0.148,1,1,0.5,0.672,0.336; 0.15,1,1,0.5, + 0.672,0.336; 0.152,1,1,0.5,0.672,0.336; 0.154,1,1,0.5,0.672,0.336; + 0.156,1,1,0.5,0.672,0.336; 0.158,1,1,0.5,0.672,0.336; 0.16,1,1,0.5, + 0.672,0.336; 0.162,1,1,0.5,0.672,0.336; 0.164,1,1,0.5,0.672,0.336; + 0.166,1,1,0.5,0.672,0.336; 0.168,1,1,0.5,0.672,0.336; 0.17,1,1,0.5, + 0.672,0.336; 0.172,1,1,0.5,0.672,0.336; 0.174,1,1,0.5,0.672,0.336; + 0.176,1,1,0.5,0.672,0.336; 0.178,1,1,0.5,0.672,0.336; 0.18,1,1,0.5, + 0.672,0.336; 0.182,1,1,0.5,0.672,0.336; 0.184,1,1,0.5,0.672,0.336; + 0.186,1,1,0.5,0.672,0.336; 0.188,1,1,0.5,0.672,0.336; 0.19,1,1,0.5, + 0.672,0.336; 0.192,1,1,0.5,0.672,0.336; 0.194,1,1,0.5,0.672,0.336; + 0.196,1,1,0.5,0.672,0.336; 0.198,1,1,0.5,0.672,0.336; 0.2,1,1,0.5,0.672, + 0.336; 0.202,1,1,0.5,0.672,0.336; 0.204,1,1,0.5,0.672,0.336; 0.206,1,1, + 0.5,0.672,0.336; 0.208,1,1,0.5,0.672,0.336; 0.21,1,1,0.5,0.672,0.336; + 0.212,1,1,0.5,0.672,0.336; 0.214,1,1,0.5,0.672,0.336; 0.216,1,1,0.5, + 0.672,0.336; 0.218,1,1,0.5,0.672,0.336; 0.22,1,1,0.5,0.672,0.336; 0.222, + 1,1,0.5,0.672,0.336; 0.224,1,1,0.5,0.672,0.336; 0.226,1,1,0.5,0.672, + 0.336; 0.228,1,1,0.5,0.672,0.336; 0.23,1,1,0.5,0.672,0.336; 0.232,1,1, + 0.5,0.672,0.336; 0.234,1,1,0.5,0.672,0.336; 0.236,1,1,0.5,0.672,0.336; + 0.238,1,1,0.5,0.672,0.336; 0.24,1,1,0.5,0.672,0.336; 0.242,1,1,0.5, + 0.672,0.336; 0.244,1,1,0.5,0.672,0.336; 0.246,1,1,0.5,0.672,0.336; + 0.248,1,1,0.5,0.672,0.336; 0.25,1,1,0.5,0.672,0.336; 0.252,1,1,0.5, + 0.672,0.336; 0.254,1,1,0.5,0.672,0.336; 0.256,1,1,0.5,0.672,0.336; + 0.258,1,1,0.5,0.672,0.336; 0.26,1,1,0.5,0.672,0.336; 0.262,1,1,0.5, + 0.672,0.336; 0.264,1,1,0.5,0.672,0.336; 0.266,1,1,0.5,0.672,0.336; + 0.268,1,1,0.5,0.672,0.336; 0.27,1,1,0.5,0.672,0.336; 0.272,1,1,0.5, + 0.672,0.336; 0.274,1,1,0.5,0.672,0.336; 0.276,1,1,0.5,0.672,0.336; + 0.278,1,1,0.5,0.672,0.336; 0.28,1,1,0.5,0.672,0.336; 0.282,1,1,0.5, + 0.672,0.336; 0.284,1,1,0.5,0.672,0.336; 0.286,1,1,0.5,0.672,0.336; + 0.288,1,1,0.5,0.672,0.336; 0.29,1,1,0.5,0.672,0.336; 0.292,1,1,0.5, + 0.672,0.336; 0.294,1,1,0.5,0.672,0.336; 0.296,1,1,0.5,0.672,0.336; + 0.298,1,1,0.5,0.672,0.336; 0.3,1,1,0.5,0.672,0.336; 0.3,1,1,0.1,0.853, + 0.085; 0.3,1,1,0.1,0.853,0.085; 0.302,1,1,0.1,0.853,0.085; 0.304,1,1, + 0.1,0.853,0.085; 0.306,1,1,0.1,0.853,0.085; 0.308,1,1,0.1,0.853,0.085; + 0.31,1,1,0.1,0.853,0.085; 0.312,1,1,0.1,0.853,0.085; 0.314,1,1,0.1, + 0.853,0.085; 0.316,1,1,0.1,0.853,0.085; 0.318,1,1,0.1,0.853,0.085; 0.32, + 1,1,0.1,0.853,0.085; 0.322,1,1,0.1,0.853,0.085; 0.324,1,1,0.1,0.853, + 0.085; 0.326,1,1,0.1,0.853,0.085; 0.328,1,1,0.1,0.853,0.085; 0.33,1,1, + 0.1,0.853,0.085; 0.332,1,1,0.1,0.853,0.085; 0.334,1,1,0.1,0.853,0.085; + 0.336,1,1,0.1,0.853,0.085; 0.338,1,1,0.1,0.853,0.085; 0.34,1,1,0.1, + 0.853,0.085; 0.342,1,1,0.1,0.853,0.085; 0.344,1,1,0.1,0.853,0.085; + 0.346,1,1,0.1,0.853,0.085; 0.348,1,1,0.1,0.853,0.085; 0.35,1,1,0.1, + 0.853,0.085; 0.352,1,1,0.1,0.853,0.085; 0.354,1,1,0.1,0.853,0.085; + 0.356,1,1,0.1,0.853,0.085; 0.358,1,1,0.1,0.853,0.085; 0.36,1,1,0.1, + 0.853,0.085; 0.362,1,1,0.1,0.853,0.085; 0.364,1,1,0.1,0.853,0.085; + 0.366,1,1,0.1,0.853,0.085; 0.368,1,1,0.1,0.853,0.085; 0.37,1,1,0.1, + 0.853,0.085; 0.372,1,1,0.1,0.853,0.085; 0.374,1,1,0.1,0.853,0.085; + 0.376,1,1,0.1,0.853,0.085; 0.378,1,1,0.1,0.853,0.085; 0.38,1,1,0.1, + 0.853,0.085; 0.382,1,1,0.1,0.853,0.085; 0.384,1,1,0.1,0.853,0.085; + 0.386,1,1,0.1,0.853,0.085; 0.388,1,1,0.1,0.853,0.085; 0.39,1,1,0.1, + 0.853,0.085; 0.392,1,1,0.1,0.853,0.085; 0.394,1,1,0.1,0.853,0.085; + 0.396,1,1,0.1,0.853,0.085; 0.398,1,1,0.1,0.853,0.085; 0.4,1,1,0.1,0.853, + 0.085; 0.402,1,1,0.1,0.853,0.085; 0.404,1,1,0.1,0.853,0.085; 0.406,1,1, + 0.1,0.853,0.085; 0.408,1,1,0.1,0.853,0.085; 0.41,1,1,0.1,0.853,0.085; + 0.412,1,1,0.1,0.853,0.085; 0.414,1,1,0.1,0.853,0.085; 0.416,1,1,0.1, + 0.853,0.085; 0.418,1,1,0.1,0.853,0.085; 0.42,1,1,0.1,0.853,0.085; 0.422, + 1,1,0.1,0.853,0.085; 0.424,1,1,0.1,0.853,0.085; 0.426,1,1,0.1,0.853, + 0.085; 0.428,1,1,0.1,0.853,0.085; 0.43,1,1,0.1,0.853,0.085; 0.432,1,1, + 0.1,0.853,0.085; 0.434,1,1,0.1,0.853,0.085; 0.436,1,1,0.1,0.853,0.085; + 0.438,1,1,0.1,0.853,0.085; 0.44,1,1,0.1,0.853,0.085; 0.442,1,1,0.1, + 0.853,0.085; 0.444,1,1,0.1,0.853,0.085; 0.446,1,1,0.1,0.853,0.085; + 0.448,1,1,0.1,0.853,0.085; 0.45,1,1,0.1,0.853,0.085; 0.452,1,1,0.1, + 0.853,0.085; 0.454,1,1,0.1,0.853,0.085; 0.456,1,1,0.1,0.853,0.085; + 0.458,1,1,0.1,0.853,0.085; 0.46,1,1,0.1,0.853,0.085; 0.462,1,1,0.1, + 0.853,0.085; 0.464,1,1,0.1,0.853,0.085; 0.466,1,1,0.1,0.853,0.085; + 0.468,1,1,0.1,0.853,0.085; 0.47,1,1,0.1,0.853,0.085; 0.472,1,1,0.1, + 0.853,0.085; 0.474,1,1,0.1,0.853,0.085; 0.476,1,1,0.1,0.853,0.085; + 0.478,1,1,0.1,0.853,0.085; 0.48,1,1,0.1,0.853,0.085; 0.482,1,1,0.1, + 0.853,0.085; 0.484,1,1,0.1,0.853,0.085; 0.486,1,1,0.1,0.853,0.085; + 0.488,1,1,0.1,0.853,0.085; 0.49,1,1,0.1,0.853,0.085; 0.492,1,1,0.1, + 0.853,0.085; 0.494,1,1,0.1,0.853,0.085; 0.496,1,1,0.1,0.853,0.085; + 0.498,1,1,0.1,0.853,0.085; 0.5,1,1,0.1,0.853,0.085; 0.502,1,1,0.1,0.853, + 0.085; 0.504,1,1,0.1,0.853,0.085; 0.506,1,1,0.1,0.853,0.085; 0.508,1,1, + 0.1,0.853,0.085; 0.51,1,1,0.1,0.853,0.085; 0.512,1,1,0.1,0.853,0.085; + 0.514,1,1,0.1,0.853,0.085; 0.516,1,1,0.1,0.853,0.085; 0.518,1,1,0.1, + 0.853,0.085; 0.52,1,1,0.1,0.853,0.085; 0.522,1,1,0.1,0.853,0.085; 0.524, + 1,1,0.1,0.853,0.085; 0.526,1,1,0.1,0.853,0.085; 0.528,1,1,0.1,0.853, + 0.085; 0.53,1,1,0.1,0.853,0.085; 0.532,1,1,0.1,0.853,0.085; 0.534,1,1, + 0.1,0.853,0.085; 0.536,1,1,0.1,0.853,0.085; 0.538,1,1,0.1,0.853,0.085; + 0.54,1,1,0.1,0.853,0.085; 0.542,1,1,0.1,0.853,0.085; 0.544,1,1,0.1, + 0.853,0.085; 0.546,1,1,0.1,0.853,0.085; 0.548,1,1,0.1,0.853,0.085; 0.55, + 1,1,0.1,0.853,0.085; 0.552,1,1,0.1,0.853,0.085; 0.554,1,1,0.1,0.853, + 0.085; 0.556,1,1,0.1,0.853,0.085; 0.558,1,1,0.1,0.853,0.085; 0.56,1,1, + 0.1,0.853,0.085; 0.562,1,1,0.1,0.853,0.085; 0.564,1,1,0.1,0.853,0.085; + 0.566,1,1,0.1,0.853,0.085; 0.568,1,1,0.1,0.853,0.085; 0.57,1,1,0.1, + 0.853,0.085; 0.572,1,1,0.1,0.853,0.085; 0.574,1,1,0.1,0.853,0.085; + 0.576,1,1,0.1,0.853,0.085; 0.578,1,1,0.1,0.853,0.085; 0.58,1,1,0.1, + 0.853,0.085; 0.582,1,1,0.1,0.853,0.085; 0.584,1,1,0.1,0.853,0.085; + 0.586,1,1,0.1,0.853,0.085; 0.588,1,1,0.1,0.853,0.085; 0.59,1,1,0.1, + 0.853,0.085; 0.592,1,1,0.1,0.853,0.085; 0.594,1,1,0.1,0.853,0.085; + 0.596,1,1,0.1,0.853,0.085; 0.598,1,1,0.1,0.853,0.085; 0.6,1,1,0.1,0.853, + 0.085; 0.602,1,1,0.1,0.853,0.085; 0.604,1,1,0.1,0.853,0.085; 0.606,1,1, + 0.1,0.853,0.085; 0.608,1,1,0.1,0.853,0.085; 0.61,1,1,0.1,0.853,0.085; + 0.612,1,1,0.1,0.853,0.085; 0.614,1,1,0.1,0.853,0.085; 0.616,1,1,0.1, + 0.853,0.085; 0.618,1,1,0.1,0.853,0.085; 0.62,1,1,0.1,0.853,0.085; 0.622, + 1,1,0.1,0.853,0.085; 0.624,1,1,0.1,0.853,0.085; 0.626,1,1,0.1,0.853, + 0.085; 0.628,1,1,0.1,0.853,0.085; 0.63,1,1,0.1,0.853,0.085; 0.632,1,1, + 0.1,0.853,0.085; 0.634,1,1,0.1,0.853,0.085; 0.636,1,1,0.1,0.853,0.085; + 0.638,1,1,0.1,0.853,0.085; 0.64,1,1,0.1,0.853,0.085; 0.642,1,1,0.1, + 0.853,0.085; 0.644,1,1,0.1,0.853,0.085; 0.646,1,1,0.1,0.853,0.085; + 0.648,1,1,0.1,0.853,0.085; 0.65,1,1,0.1,0.853,0.085; 0.652,1,1,0.1, + 0.853,0.085; 0.654,1,1,0.1,0.853,0.085; 0.656,1,1,0.1,0.853,0.085; + 0.658,1,1,0.1,0.853,0.085; 0.66,1,1,0.1,0.853,0.085; 0.662,1,1,0.1, + 0.853,0.085; 0.664,1,1,0.1,0.853,0.085; 0.666,1,1,0.1,0.853,0.085; + 0.668,1,1,0.1,0.853,0.085; 0.67,1,1,0.1,0.853,0.085; 0.672,1,1,0.1, + 0.853,0.085; 0.674,1,1,0.1,0.853,0.085; 0.676,1,1,0.1,0.853,0.085; + 0.678,1,1,0.1,0.853,0.085; 0.68,1,1,0.1,0.853,0.085; 0.682,1,1,0.1, + 0.853,0.085; 0.684,1,1,0.1,0.853,0.085; 0.686,1,1,0.1,0.853,0.085; + 0.688,1,1,0.1,0.853,0.085; 0.69,1,1,0.1,0.853,0.085; 0.692,1,1,0.1, + 0.853,0.085; 0.694,1,1,0.1,0.853,0.085; 0.696,1,1,0.1,0.853,0.085; + 0.698,1,1,0.1,0.853,0.085; 0.7,1,1,0.1,0.853,0.085; 0.7,1,1,0.5,0.672, + 0.336; 0.7,1,1,0.5,0.672,0.336; 0.702,1,1,0.5,0.672,0.336; 0.704,1,1, + 0.5,0.672,0.336; 0.706,1,1,0.5,0.672,0.336; 0.708,1,1,0.5,0.672,0.336; + 0.71,1,1,0.5,0.672,0.336; 0.712,1,1,0.5,0.672,0.336; 0.714,1,1,0.5, + 0.672,0.336; 0.716,1,1,0.5,0.672,0.336; 0.718,1,1,0.5,0.672,0.336; 0.72, + 1,1,0.5,0.672,0.336; 0.722,1,1,0.5,0.672,0.336; 0.724,1,1,0.5,0.672, + 0.336; 0.726,1,1,0.5,0.672,0.336; 0.728,1,1,0.5,0.672,0.336; 0.73,1,1, + 0.5,0.672,0.336; 0.732,1,1,0.5,0.672,0.336; 0.734,1,1,0.5,0.672,0.336; + 0.736,1,1,0.5,0.672,0.336; 0.738,1,1,0.5,0.672,0.336; 0.74,1,1,0.5, + 0.672,0.336; 0.742,1,1,0.5,0.672,0.336; 0.744,1,1,0.5,0.672,0.336; + 0.746,1,1,0.5,0.672,0.336; 0.748,1,1,0.5,0.672,0.336; 0.75,1,1,0.5, + 0.672,0.336; 0.752,1,1,0.5,0.672,0.336; 0.754,1,1,0.5,0.672,0.336; + 0.756,1,1,0.5,0.672,0.336; 0.758,1,1,0.5,0.672,0.336; 0.76,1,1,0.5, + 0.672,0.336; 0.762,1,1,0.5,0.672,0.336; 0.764,1,1,0.5,0.672,0.336; + 0.766,1,1,0.5,0.672,0.336; 0.768,1,1,0.5,0.672,0.336; 0.77,1,1,0.5, + 0.672,0.336; 0.772,1,1,0.5,0.672,0.336; 0.774,1,1,0.5,0.672,0.336; + 0.776,1,1,0.5,0.672,0.336; 0.778,1,1,0.5,0.672,0.336; 0.78,1,1,0.5, + 0.672,0.336; 0.782,1,1,0.5,0.672,0.336; 0.784,1,1,0.5,0.672,0.336; + 0.786,1,1,0.5,0.672,0.336; 0.788,1,1,0.5,0.672,0.336; 0.79,1,1,0.5, + 0.672,0.336; 0.792,1,1,0.5,0.672,0.336; 0.794,1,1,0.5,0.672,0.336; + 0.796,1,1,0.5,0.672,0.336; 0.798,1,1,0.5,0.672,0.336; 0.8,1,1,0.5,0.672, + 0.336; 0.802,1,1,0.5,0.672,0.336; 0.804,1,1,0.5,0.672,0.336; 0.806,1,1, + 0.5,0.672,0.336; 0.808,1,1,0.5,0.672,0.336; 0.81,1,1,0.5,0.672,0.336; + 0.812,1,1,0.5,0.672,0.336; 0.814,1,1,0.5,0.672,0.336; 0.816,1,1,0.5, + 0.672,0.336; 0.818,1,1,0.5,0.672,0.336; 0.82,1,1,0.5,0.672,0.336; 0.822, + 1,1,0.5,0.672,0.336; 0.824,1,1,0.5,0.672,0.336; 0.826,1,1,0.5,0.672, + 0.336; 0.828,1,1,0.5,0.672,0.336; 0.83,1,1,0.5,0.672,0.336; 0.83,1,1, + 0.8,0.575,0.46; 0.83,1,1,0.8,0.575,0.46; 0.832,1,1,0.8,0.575,0.46; + 0.834,1,1,0.8,0.575,0.46; 0.836,1,1,0.8,0.575,0.46; 0.838,1,1,0.8,0.575, + 0.46; 0.84,1,1,0.8,0.575,0.46; 0.842,1,1,0.8,0.575,0.46; 0.844,1,1,0.8, + 0.575,0.46; 0.846,1,1,0.8,0.575,0.46; 0.848,1,1,0.8,0.575,0.46; 0.85,1, + 1,0.8,0.575,0.46; 0.85,2,1,0.5,1.344,0.672; 0.85,2,1,0.5,1.344,0.672; + 0.852,2,1,0.5,1.344,0.672; 0.854,2,1,0.5,1.344,0.672; 0.856,2,1,0.5, + 1.344,0.672; 0.858,2,1,0.5,1.344,0.672; 0.86,2,1,0.5,1.344,0.672; 0.862, + 2,1,0.5,1.344,0.672; 0.864,2,1,0.5,1.344,0.672; 0.866,2,1,0.5,1.344, + 0.672; 0.868,2,1,0.5,1.344,0.672; 0.87,2,1,0.5,1.344,0.672; 0.872,2,1, + 0.5,1.344,0.672; 0.874,2,1,0.5,1.344,0.672; 0.876,2,1,0.5,1.344,0.672; + 0.878,2,1,0.5,1.344,0.672; 0.88,2,1,0.5,1.344,0.672; 0.882,2,1,0.5, + 1.344,0.672; 0.884,2,1,0.5,1.344,0.672; 0.886,2,1,0.5,1.344,0.672; + 0.888,2,1,0.5,1.344,0.672; 0.89,2,1,0.5,1.344,0.672; 0.892,2,1,0.5, + 1.344,0.672; 0.894,2,1,0.5,1.344,0.672; 0.896,2,1,0.5,1.344,0.672; + 0.898,2,1,0.5,1.344,0.672; 0.9,2,1,0.5,1.344,0.672; 0.902,2,1,0.5,1.344, + 0.672; 0.904,2,1,0.5,1.344,0.672; 0.906,2,1,0.5,1.344,0.672; 0.908,2,1, + 0.5,1.344,0.672; 0.91,2,1,0.5,1.344,0.672; 0.912,2,1,0.5,1.344,0.672; + 0.914,2,1,0.5,1.344,0.672; 0.916,2,1,0.5,1.344,0.672; 0.918,2,1,0.5, + 1.344,0.672; 0.92,2,1,0.5,1.344,0.672; 0.922,2,1,0.5,1.344,0.672; 0.924, + 2,1,0.5,1.344,0.672; 0.926,2,1,0.5,1.344,0.672; 0.928,2,1,0.5,1.344, + 0.672; 0.93,2,1,0.5,1.344,0.672; 0.932,2,1,0.5,1.344,0.672; 0.934,2,1, + 0.5,1.344,0.672; 0.936,2,1,0.5,1.344,0.672; 0.938,2,1,0.5,1.344,0.672; + 0.94,2,1,0.5,1.344,0.672; 0.942,2,1,0.5,1.344,0.672; 0.944,2,1,0.5, + 1.344,0.672; 0.946,2,1,0.5,1.344,0.672; 0.948,2,1,0.5,1.344,0.672; 0.95, + 2,1,0.5,1.344,0.672; 0.952,2,1,0.5,1.344,0.672; 0.954,2,1,0.5,1.344, + 0.672; 0.956,2,1,0.5,1.344,0.672; 0.958,2,1,0.5,1.344,0.672; 0.96,2,1, + 0.5,1.344,0.672; 0.962,2,1,0.5,1.344,0.672; 0.964,2,1,0.5,1.344,0.672; + 0.966,2,1,0.5,1.344,0.672; 0.968,2,1,0.5,1.344,0.672; 0.97,2,1,0.5, + 1.344,0.672; 0.972,2,1,0.5,1.344,0.672; 0.974,2,1,0.5,1.344,0.672; + 0.976,2,1,0.5,1.344,0.672; 0.978,2,1,0.5,1.344,0.672; 0.98,2,1,0.5, + 1.344,0.672; 0.982,2,1,0.5,1.344,0.672; 0.984,2,1,0.5,1.344,0.672; + 0.986,2,1,0.5,1.344,0.672; 0.988,2,1,0.5,1.344,0.672; 0.99,2,1,0.5, + 1.344,0.672; 0.992,2,1,0.5,1.344,0.672; 0.994,2,1,0.5,1.344,0.672; + 0.996,2,1,0.5,1.344,0.672; 0.998,2,1,0.5,1.344,0.672; 1,2,1,0.5,1.344, + 0.672], extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) + "Data for validating the timeConstantDelay block" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable ratioLT( - table=[0,0.3; 0.1,0.5; 0.3,0.1; 0.7,0.5; 0.83,0.8; 0.85,0.5], - smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, - extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) - "The ratio between the time constant and the time delay of a first order time delay model" - annotation (Placement(transformation(extent={{-60,-40},{-40,-20}}))); - Modelica.Blocks.Sources.RealExpression referenceT(y=tOn.y[1]/log((0.5/abs(k.y[ - 1]) - 0.1 + exp(ratioLT.y[1])*(1 + 0.1))/(1 - 0.5/abs(k.y[1])))) - "Reference value for the time constant" - annotation (Placement(transformation(extent={{-10,48},{10,68}}))); - Modelica.Blocks.Sources.RealExpression referenceL(y=ratioLT.y[1]*referenceT.y) - "Reference value for the time delay" - annotation (Placement(transformation(extent={{-10,30},{10,50}}))); equation - connect(tOn.y[1], timeConstantDelay.tOn) annotation (Line(points={{-38,30},{-20, - 30},{-20,6},{-12,6}}, color={0,0,127})); - connect(k.y[1], timeConstantDelay.k) - annotation (Line(points={{-38,0},{-12,0}}, color={0,0,127})); - connect(ratioLT.y[1], timeConstantDelay.ratioLT) annotation (Line(points={{-38, - -30},{-20,-30},{-20,-6},{-12,-6}}, color={0,0,127})); + connect(ReferenceData.y[1], timeConstantDelay.tOn) annotation (Line(points={{ + -38,0},{-20,0},{-20,6},{-12,6}}, color={0,0,127})); + connect(timeConstantDelay.k, ReferenceData.y[2]) + annotation (Line(points={{-12,0},{-38,0}}, color={0,0,127})); + connect(timeConstantDelay.ratioLT, ReferenceData.y[3]) annotation (Line( + points={{-12,-6},{-20,-6},{-20,0},{-38,0}}, color={0,0,127})); annotation ( experiment( StopTime=1.0, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithAutotuningAmigoFOTD.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithAutotuningAmigoFOTD.mo index 870346626a0..04e0cb9bcf1 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithAutotuningAmigoFOTD.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithAutotuningAmigoFOTD.mo @@ -3,7 +3,7 @@ model PIDWithAutotuningAmigoFOTD "Test model for PIDWithAutotuning" Buildings.Controls.OBC.CDL.Continuous.Sources.Constant SetPoint(k=0.8) "Setpoint value" annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.PIDWithAutotuningAmigoFOTD + .Buildings.Controls.OBC.Utilities.PIDWithAutotuning.PIDWithAutotuningAmigoFOTD PIDWitAutotuning( controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PID, yHig=1, @@ -19,26 +19,25 @@ model PIDWithAutotuningAmigoFOTD "Test model for PIDWithAutotuning" Td=0.1) "PID controller with constant gains" annotation (Placement(transformation(extent={{-20,20},{0,40}}))); - Buildings.Controls.OBC.CDL.Logical.Sources.Constant resSig(k=false) + CDL.Logical.Sources.Constant resSig(k=false) "Reset signal" annotation (Placement(transformation(extent={{-80,60},{-60,80}}))); - Modelica.Blocks.Continuous.FirstOrder FirstOrderProcess2(T=10, initType= - Modelica.Blocks.Types.Init.InitialOutput) - "A first-order process for control process 2" - annotation (Placement(transformation(extent={{60,-30},{80,-10}}))); - Modelica.Blocks.Continuous.FirstOrder FirstOrderProcess1( - k=1, - T=10, - initType=Modelica.Blocks.Types.Init.InitialOutput, - y_start=0) "A first-order process for control process 1" - annotation (Placement(transformation(extent={{60,20},{80,40}}))); - Modelica.Blocks.Discrete.UnitDelay unitDelay2(samplePeriod=240) + CDL.Discrete.UnitDelay uniDel2(samplePeriod=240) "A dealy process for control process 2" annotation (Placement(transformation(extent={{20,-30},{40,-10}}))); - Modelica.Blocks.Discrete.UnitDelay unitDelay1(samplePeriod=240) + CDL.Discrete.UnitDelay uniDel1(samplePeriod=240) "A dealy process for control process 1" annotation (Placement(transformation(extent={{20,20},{40,40}}))); + CDL.Continuous.FirstOrder firstOrder1(y_start=0) + annotation (Placement(transformation(extent={{60,20},{80,40}}))); + CDL.Continuous.Sources.Constant k(k=1) "Gain of the first order process" + annotation (Placement(transformation(extent={{-20,80},{0,100}}))); + CDL.Continuous.Sources.Constant T(k=10) + "Time constant of the first order process" + annotation (Placement(transformation(extent={{0,50},{20,70}}))); + CDL.Continuous.FirstOrder firstOrder2(y_start=0) + annotation (Placement(transformation(extent={{60,-30},{80,-10}}))); equation connect(resSig.y, PID.trigger) annotation (Line(points={{-58,70},{-48,70},{-48, 12},{-16,12},{-16,18}}, @@ -51,18 +50,26 @@ equation color={0,0,127})); connect(SetPoint.y, PID.u_s) annotation (Line(points={{-58,10},{-50,10},{-50,30}, {-22,30}}, color={0,0,127})); - connect(FirstOrderProcess2.y, PIDWitAutotuning.u_m) annotation (Line(points={{ - 81,-20},{86,-20},{86,-38},{-10,-38},{-10,-32}}, color={0,0,127})); - connect(PID.u_m, FirstOrderProcess1.y) annotation (Line(points={{-10,18},{-10, - 12},{86,12},{86,30},{81,30}}, color={0,0,127})); - connect(PIDWitAutotuning.y, unitDelay2.u) + connect(PIDWitAutotuning.y, uniDel2.u) annotation (Line(points={{2,-20},{18,-20}}, color={0,0,127})); - connect(unitDelay2.y, FirstOrderProcess2.u) - annotation (Line(points={{41,-20},{58,-20}}, color={0,0,127})); - connect(FirstOrderProcess1.u, unitDelay1.y) - annotation (Line(points={{58,30},{41,30}}, color={0,0,127})); - connect(unitDelay1.u, PID.y) - annotation (Line(points={{18,30},{2,30}}, color={0,0,127})); + connect(uniDel1.u, PID.y) + annotation (Line(points={{18,30},{2,30}}, color={0,0,127})); + connect(uniDel1.y, firstOrder1.u) + annotation (Line(points={{42,30},{58,30}}, color={0,0,127})); + connect(firstOrder1.y, PID.u_m) annotation (Line(points={{82,30},{90,30},{90,8}, + {-10,8},{-10,18}}, color={0,0,127})); + connect(firstOrder2.u, uniDel2.y) + annotation (Line(points={{58,-20},{42,-20}}, color={0,0,127})); + connect(firstOrder2.y, PIDWitAutotuning.u_m) annotation (Line(points={{82,-20}, + {90,-20},{90,-40},{-10,-40},{-10,-32}}, color={0,0,127})); + connect(firstOrder1.k, k.y) annotation (Line(points={{58,38},{48,38},{48,90},{ + 2,90}}, color={0,0,127})); + connect(T.y, firstOrder1.T) annotation (Line(points={{22,60},{44,60},{44,34},{ + 58,34}}, color={0,0,127})); + connect(firstOrder2.k, k.y) annotation (Line(points={{58,-12},{52,-12},{52,38}, + {48,38},{48,90},{2,90}}, color={0,0,127})); + connect(firstOrder2.T, firstOrder1.T) annotation (Line(points={{58,-16},{44,-16}, + {44,34},{58,34}}, color={0,0,127})); annotation ( experiment( StopTime=10000, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD.mo index 48cf9e9aacf..3e5afc035c1 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD.mo @@ -4,7 +4,8 @@ model PIWithAutotuningAmigoFOTD "Test model for PIDWithAutotuning" "Setpoint value" annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); .Buildings.Controls.OBC.Utilities.PIDWithAutotuning.PIDWithAutotuningAmigoFOTD - PIDWitAutotuning(controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PI, + PIDWitAutotuning( + controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PI, yHig=1, yLow=0.1, deaBan=0.1, @@ -22,22 +23,21 @@ model PIWithAutotuningAmigoFOTD "Test model for PIDWithAutotuning" "Reset signal" annotation (Placement(transformation(extent={{-80,60},{-60,80}}))); - Modelica.Blocks.Continuous.FirstOrder FirstOrderProcess2(T=10, initType= - Modelica.Blocks.Types.Init.InitialOutput) - "A first-order process for control process 2" - annotation (Placement(transformation(extent={{60,-30},{80,-10}}))); - Modelica.Blocks.Continuous.FirstOrder FirstOrderProcess1( - k=1, - T=10, - initType=Modelica.Blocks.Types.Init.InitialOutput, - y_start=0) "A first-order process for control process 1" - annotation (Placement(transformation(extent={{60,20},{80,40}}))); - Modelica.Blocks.Discrete.UnitDelay unitDelay2(samplePeriod=240) + CDL.Discrete.UnitDelay uniDel2(samplePeriod=240) "A dealy process for control process 2" annotation (Placement(transformation(extent={{20,-30},{40,-10}}))); - Modelica.Blocks.Discrete.UnitDelay unitDelay1(samplePeriod=240) + CDL.Discrete.UnitDelay uniDel1(samplePeriod=240) "A dealy process for control process 1" annotation (Placement(transformation(extent={{20,20},{40,40}}))); + CDL.Continuous.FirstOrder firstOrder1(y_start=0) + annotation (Placement(transformation(extent={{60,20},{80,40}}))); + CDL.Continuous.Sources.Constant k(k=1) "Gain of the first order process" + annotation (Placement(transformation(extent={{-20,80},{0,100}}))); + CDL.Continuous.Sources.Constant T(k=10) + "Time constant of the first order process" + annotation (Placement(transformation(extent={{0,50},{20,70}}))); + CDL.Continuous.FirstOrder firstOrder2(y_start=0) + annotation (Placement(transformation(extent={{60,-30},{80,-10}}))); equation connect(resSig.y, PID.trigger) annotation (Line(points={{-58,70},{-48,70},{-48, 12},{-16,12},{-16,18}}, @@ -50,18 +50,26 @@ equation color={0,0,127})); connect(SetPoint.y, PID.u_s) annotation (Line(points={{-58,10},{-50,10},{-50,30}, {-22,30}}, color={0,0,127})); - connect(FirstOrderProcess2.y, PIDWitAutotuning.u_m) annotation (Line(points={{ - 81,-20},{86,-20},{86,-38},{-10,-38},{-10,-32}}, color={0,0,127})); - connect(PID.u_m, FirstOrderProcess1.y) annotation (Line(points={{-10,18},{-10, - 12},{86,12},{86,30},{81,30}}, color={0,0,127})); - connect(PIDWitAutotuning.y, unitDelay2.u) + connect(PIDWitAutotuning.y, uniDel2.u) annotation (Line(points={{2,-20},{18,-20}}, color={0,0,127})); - connect(unitDelay2.y, FirstOrderProcess2.u) - annotation (Line(points={{41,-20},{58,-20}}, color={0,0,127})); - connect(FirstOrderProcess1.u, unitDelay1.y) - annotation (Line(points={{58,30},{41,30}}, color={0,0,127})); - connect(unitDelay1.u, PID.y) - annotation (Line(points={{18,30},{2,30}}, color={0,0,127})); + connect(uniDel1.u, PID.y) + annotation (Line(points={{18,30},{2,30}}, color={0,0,127})); + connect(uniDel1.y, firstOrder1.u) + annotation (Line(points={{42,30},{58,30}}, color={0,0,127})); + connect(firstOrder1.y, PID.u_m) annotation (Line(points={{82,30},{90,30},{90, + 8},{-10,8},{-10,18}}, color={0,0,127})); + connect(firstOrder2.u, uniDel2.y) + annotation (Line(points={{58,-20},{42,-20}}, color={0,0,127})); + connect(firstOrder2.y, PIDWitAutotuning.u_m) annotation (Line(points={{82,-20}, + {90,-20},{90,-40},{-10,-40},{-10,-32}}, color={0,0,127})); + connect(firstOrder1.k, k.y) annotation (Line(points={{58,38},{48,38},{48,90}, + {2,90}}, color={0,0,127})); + connect(T.y, firstOrder1.T) annotation (Line(points={{22,60},{44,60},{44,34}, + {58,34}}, color={0,0,127})); + connect(firstOrder2.k, k.y) annotation (Line(points={{58,-12},{52,-12},{52,38}, + {48,38},{48,90},{2,90}}, color={0,0,127})); + connect(firstOrder2.T, firstOrder1.T) annotation (Line(points={{58,-16},{44, + -16},{44,34},{58,34}}, color={0,0,127})); annotation ( experiment( StopTime=10000, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/package.order index db47b547c82..ed2f0d98dc7 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/package.order +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/package.order @@ -1,6 +1,5 @@ AutoTuner Relay SystemIdentification -Validation -BaseClasses PIDWithAutotuningAmigoFOTD +Validation diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PI.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PI.mos index b6d2c523719..8ef89fb1eb0 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PI.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PI.mos @@ -1,4 +1,4 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Validation.PI", method="Cvode", tolerance=1e-06, resultFile="PI"); -createPlot(id=1, position={95, 95, 1484, 920}, y={"pI.k", "referencek.y"}, range={0.0, 1.0, 0.15000000000000002, 0.4}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={95, 95, 1484, 920}, y={"pI.Ti", "referenceTi.y"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={95, 95, 1484, 920}, y={"pI.k", "ReferenceData.y[4]"}, range={0.0, 1.0, 0.15000000000000002, 0.4}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={95, 95, 1484, 920}, y={"pI.Ti", "ReferenceData.y[5]"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PID.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PID.mos index 0fe4f5adfd0..3ebc6e63228 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PID.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PID.mos @@ -1,5 +1,5 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Validation.PID", method="Cvode", tolerance=1e-06, resultFile="PID"); -createPlot(id=1, position={75, 75, 1488, 1095}, y={"pID.k", "referencek.y"}, range={0.0, 1.0, 0.4, 1.2000000000000002}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={75, 75, 1488, 1095}, y={"pID.Ti", "referenceTi.y"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={75, 75, 1488, 1095}, y={"pID.Td", "referenceTd.y"}, range={0.0, 1.0, 0.1, 0.30000000000000004}, grid=true, subPlot=103, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={75, 75, 1488, 1095}, y={"pID.k", "ReferenceData.y[4]"}, range={0.0, 1.0, 0.4, 1.2000000000000002}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={75, 75, 1488, 1095}, y={"pID.Ti", "ReferenceData.y[5]"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={75, 75, 1488, 1095}, y={"pID.Td", "ReferenceData.y[6]"}, range={0.0, 1.0, 0.1, 0.30000000000000004}, grid=true, subPlot=103, colors={{28,108,200}, {238,46,47}}); diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIDDerivativeTime.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIDDerivativeTime.mos index 00a05597977..f35b06b11af 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIDDerivativeTime.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIDDerivativeTime.mos @@ -1,4 +1,3 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Validation.PIDDerivativeTime", method="Cvode", tolerance=1e-06, resultFile="PIDDerivativeTime"); -createPlot(id=1, position={35, 35, 1484, 920}, y={"T.y", "L.y"}, range={0.0, 1.0, 0.2, 1.2}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={35, 35, 1484, 920}, y={"pIDDerivativeTime.Td"}, range={0.0, 1.0, 0.10000000000000002, 0.30000000000000004}, grid=true, subPlot=102, colors={{238,46,47}}); - +createPlot(id=1, position={35, 35, 1484, 920}, y={"pIDDerivativeTime.T", "pIDDerivativeTime.L"}, range={0.0, 1.0, 0.2, 1.2}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={75, 75, 1484, 920}, y={"ReferenceData.y[6]", "pIDDerivativeTime.Td"}, range={0.0, 1.0, 0.10000000000000002, 0.30000000000000004}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}, timeUnit="s"); diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIDGain.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIDGain.mos index 8778361aa17..e182c17298b 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIDGain.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIDGain.mos @@ -1,4 +1,4 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Validation.PIDGain", method="Cvode", tolerance=1e-06, resultFile="PIDGain"); -createPlot(id=1, position={15, 15, 1484, 920}, y={"kp.y", "T.y", "L.y"}, range={0.0, 1.0, 0.0, 2.5}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}, {0,140,72}}); -createPlot(id=1, position={15, 15, 1484, 920}, y={"pIDGain.k", "referencek.y"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={15, 15, 1484, 920}, y={"pIDGain.kp", "pIDGain.T", "pIDGain.L"}, range={0.0, 1.0, 0.0, 2.5}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}, {0,140,72}}); +createPlot(id=1, position={15, 15, 1484, 920}, y={"pIDGain.k", "ReferenceData.y[4]"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIDIntegralTime.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIDIntegralTime.mos index 28ab18a119c..753e6163485 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIDIntegralTime.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIDIntegralTime.mos @@ -1,4 +1,4 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Validation.PIDIntegralTime", method="Cvode", tolerance=1e-06, resultFile="PIDIntegralTime"); -createPlot(id=1, position={75, 75, 1484, 920}, y={"T.y", "L.y"}, range={0.0, 1.0, 0.2, 1.2}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={75, 75, 1484, 920}, y={"pIDIntegralTime.Ti", "referenceTi.y"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={75, 75, 1484, 920}, y={"pIDIntegralTime.T", "pIDIntegralTime.L"}, range={0.0, 1.0, 0.2, 1.2}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={75, 75, 1484, 920}, y={"pIDIntegralTime.Ti", "ReferenceData.y[5]"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIGain.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIGain.mos index 8d4cf68eddd..dcee52f5dc2 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIGain.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIGain.mos @@ -1,4 +1,4 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Validation.PIGain", method="Cvode", tolerance=1e-06, resultFile="PIGain"); createPlot(id=1, position={35, 35, 1484, 920}, y={"pIGain.kp", "pIGain.T", "pIGain.L"}, range={0.0, 1.0, 0.0, 2.5}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}, {0,140,72}}); -createPlot(id=1, position={35, 35, 1484, 920}, y={"pIGain.k", "referencek.y"}, range={0.0, 1.0, 0.15000000000000002, 0.35000000000000003}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={35, 35, 1484, 920}, y={"pIGain.k", "ReferenceData.y[4]"}, range={0.0, 1.0, 0.15000000000000002, 0.35000000000000003}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIIntegralTime.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIIntegralTime.mos index 54eaee74a2a..d221c631992 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIIntegralTime.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIIntegralTime.mos @@ -1,4 +1,4 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Validation.PIIntegralTime", method="Cvode", tolerance=1e-06, resultFile="PIIntegralTime"); -createPlot(id=1, position={95, 95, 1484, 920}, y={"T.y", "L.y"}, range={0.0, 1.0, 0.2, 1.2}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={95, 95, 1484, 920}, y={"pIIntegralTime.Ti", "referenceTi.y"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={95, 95, 1484, 920}, y={"pIIntegralTime.T", "pIIntegralTime.L"}, range={0.0, 1.0, 0.2, 1.2}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={95, 95, 1484, 920}, y={"pIIntegralTime.Ti", "ReferenceData.y[5]"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mos index eebfa7a75bd..1ebdd86f074 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mos @@ -1,5 +1,5 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.NormalizedTimeDelay", method="Cvode", tolerance=1e-06, resultFile="NormalizedTimeDelay"); -createPlot(id=1, position={75, 75, 1484, 920}, y={"rho.y[1]"}, range={0.0, 1.0, -0.5, 2.5}, grid=true, subPlot=101, colors={{28,108,200}}); -createPlot(id=1, position={95, 95, 1484, 920}, y={"normalizedTimeDelay.tau", "reference.y"}, range={0.0, 1.0, 0.0, 2.5}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={75, 75, 1484, 920}, y={"normalizedTimeDelay.rho"}, range={0.0, 1.0, -0.5, 2.5}, grid=true, subPlot=101, colors={{28,108,200}}); +createPlot(id=1, position={95, 95, 1484, 920}, y={"normalizedTimeDelay.tau", "ReferenceData.y[2]"}, range={0.0, 1.0, 0.0, 2.5}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mos index ade5f807242..1dff16a38b0 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mos @@ -1,4 +1,3 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation.ControlProcessModel", method="Cvode", tolerance=1e-06, resultFile="ControlProcessModel"); -createPlot(id=1, position={75, 75, 1761, 1431}, y={"controlProcessModel.T", "referenceT.y"}, range={0.0, 1.0, 0.0, 5.0}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={75, 75, 1761, 1431}, y={"controlProcessModel.L", "referenceL.y"}, range={0.0, 1.0, 0.4, 1.8000000000000003}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={75, 75, 1761, 1431}, y={"tuningStart.y[1]", "tuningEnd.y[1]"}, range={0.0, 1.0, -0.2, 1.2000000000000002}, grid=true, subPlot=103, colors={{28,108,200}, {28,108,200}}); +createPlot(id=1, position={95, 95, 1484, 920}, y={"controlProcessModel.T", "ReferenceData.y[5]"}, range={0.0, 1.0, 0.75, 1.05}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}, timeUnit="s"); +createPlot(id=1, position={95, 95, 1484, 920}, y={"controlProcessModel.L", "ReferenceData.y[6]"}, range={0.0, 1.0, 0.75, 1.05}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}, timeUnit="s"); diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mos index e27f388ff68..3bb120da426 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mos @@ -1,4 +1,4 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation.TimeConstantDelay", method="Cvode", tolerance=1e-06, resultFile="TimeConstantDelay"); -createPlot(id=1, position={35, 35, 1484, 920}, y={"timeConstantDelay.T", "referenceT.y"}, range={0.0, 1.0, 0.4, 1.6}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={35, 35, 1484, 920}, y={"timeConstantDelay.L", "referenceL.y"}, range={0.0, 1.0, 0.0, 0.8}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={35, 35, 1484, 920}, y={"timeConstantDelay.T", "ReferenceData.y[4]"}, range={0.0, 1.0, 0.4, 1.6}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={35, 35, 1484, 920}, y={"timeConstantDelay.L", "ReferenceData.y[5]"}, range={0.0, 1.0, 0.0, 0.8}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD - Copy.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD.mos similarity index 100% rename from Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD - Copy.mos rename to Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD.mos From d4eff4bb158388376b9e839e838411eac636f9ce Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Mon, 8 Aug 2022 23:14:44 -0400 Subject: [PATCH 014/214] remove unused scripts --- .../CDL/Continuous/Validation/AMIGOWithFOTD.mos | 9 --------- .../CDL/Continuous/Validation/NormalizedDelay.mos | 7 ------- .../Continuous/Validation/PIDWithAutoTuning.mos | 14 -------------- .../Controls/OBC/CDL/Discrete/Examples/Relay.mos | 10 ---------- 4 files changed, 40 deletions(-) delete mode 100644 Buildings/Resources/Scripts/Dymola/Controls/OBC/CDL/Continuous/Validation/AMIGOWithFOTD.mos delete mode 100644 Buildings/Resources/Scripts/Dymola/Controls/OBC/CDL/Continuous/Validation/NormalizedDelay.mos delete mode 100644 Buildings/Resources/Scripts/Dymola/Controls/OBC/CDL/Continuous/Validation/PIDWithAutoTuning.mos delete mode 100644 Buildings/Resources/Scripts/Dymola/Controls/OBC/CDL/Discrete/Examples/Relay.mos diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/CDL/Continuous/Validation/AMIGOWithFOTD.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/CDL/Continuous/Validation/AMIGOWithFOTD.mos deleted file mode 100644 index 69a81b58196..00000000000 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/CDL/Continuous/Validation/AMIGOWithFOTD.mos +++ /dev/null @@ -1,9 +0,0 @@ -simulateModel("Buildings.Controls.OBC.CDL.Continuous.Validation.AMIGOWithFOTD", stopTime=120, tolerance=1e-06, resultFile="AMIGOWithFOTD"); -removePlots(false); -createPlot(id=1, position={0, 0, 2841, 1894}, y={"FOTD.experimentStart", "FOTD.experimentEnd"}, range={0.0, 120.0, -1.0, 2.0}, grid=true, colors={{28,108,200}, {28,108,200}}); -createPlot(id=1, position={0, 0, 2841, 1894}, y={"relay.y", "relay.uDiff"}, range={0.0, 120.0, -5.0, 10.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={0, 0, 2841, 1894}, y={"relay.dtON", "relay.dtOFF"}, range={0.0, 120.0, -20.0, 40.0}, grid=true, subPlot=103, colors={{28,108,200}, {238,46,47}}, displayUnits={"s", "s"}); -createPlot(id=1, position={0, 0, 2841, 1894}, y={"FOTD.k"}, range={0.0, 120.0, -0.002, 0.006}, grid=true, subPlot=104, colors={{28,108,200}}); -createPlot(id=1, position={0, 0, 2841, 1894}, y={"FOTD.Ti"}, range={0.0, 120.0, -50.0, 100.0}, grid=true, subPlot=105, colors={{28,108,200}}); -createPlot(id=1, position={0, 0, 2841, 1894}, y={"FOTD.Td"}, range={0.0, 120.0, -20.0, 40.0}, grid=true, subPlot=106, colors={{28,108,200}}); - diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/CDL/Continuous/Validation/NormalizedDelay.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/CDL/Continuous/Validation/NormalizedDelay.mos deleted file mode 100644 index a57e9013f9c..00000000000 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/CDL/Continuous/Validation/NormalizedDelay.mos +++ /dev/null @@ -1,7 +0,0 @@ -simulateModel("Buildings.Controls.OBC.CDL.Continuous.Validation.NormalizedDelay", stopTime=120, tolerance=1e-06, resultFile="NormalizedDelay"); -removePlots(false); -createPlot(id=1, position={0, 0, 2467, 1894}, y={"relay.uDiff", "relay.deadBand"}, range={0.0, 120.0, -1.0, 2.0}, grid=true, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={0, 0, 2467, 1894}, y={"relay.y"}, range={0.0, 120.0, -1.0, 5.0}, grid=true, subPlot=102, colors={{28,108,200}}); -createPlot(id=1, position={0, 0, 2467, 1894}, y={"NormalizedDelay.dtON", "NormalizedDelay.dtOFF"}, range={0.0, 120.0, -10.0, 40.0}, grid=true, subPlot=103, colors={{28,108,200}, {238,46,47}}, displayUnits={"s", "s"}); -createPlot(id=1, position={0, 0, 2467, 1894}, y={"NormalizedDelay.y"}, range={0.0, 120.0, -2.0, 3.0}, grid=true, subPlot=104, colors={{28,108,200}}); - diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/CDL/Continuous/Validation/PIDWithAutoTuning.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/CDL/Continuous/Validation/PIDWithAutoTuning.mos deleted file mode 100644 index 715a56bcf3b..00000000000 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/CDL/Continuous/Validation/PIDWithAutoTuning.mos +++ /dev/null @@ -1,14 +0,0 @@ -simulateModel("Buildings.Controls.OBC.CDL.Continuous.Validation.PIDWithAutoTuning", stopTime=120, tolerance=1e-06, resultFile="PIDWithAutoTuning"); -removePlots(false); -createPlot(id=1, position={15, 10, 900, 700}, y={"limPID.u_s", "limPID.u_m"}, range={0.0, 120.0, -5.0, 5.0}, grid=true, colors={{238,46,47}, {0,140,72}}); -createPlot(id=1, position={15, 10, 900, 700}, y={"limPID.u_s", "limPID.y"}, range={0.0, 120.0, -5.0, 5.0}, grid=true, subPlot=102, colors={{238,46,47}, {0,140,72}}); -createPlot(id=1, position={15, 10, 900, 700}, y={"limPID.k"}, range={0.0, 120.0, 0.5, 1.5}, grid=true, subPlot=103, colors={{28,108,200}}, displayUnits={"s-1"}); -createPlot(id=1, position={15, 10, 900, 700}, y=fill("", 0), range={0.0, 1.0, 0.0, 1.0}, grid=true, subPlot=104); -createPlot(id=1, position={15, 10, 900, 700}, y=fill("", 0), range={0.0, 1.0, 0.0, 1.0}, grid=true, subPlot=105); -createPlot(id=1, position={15, 10, 900, 700}, y=fill("", 0), range={0.0, 1.0, 0.0, 1.0}, grid=true, subPlot=106); -createPlot(id=1, position={15, 10, 900, 700}, y=fill("", 0), range={0.0, 120.0, -2.0, 62.0}, grid=true, subPlot=107); -createPlot(id=2, position={1068, 80, 1484, 920}, y={"limPID.y", "limPIDwithAutoTuning.y"}, range={0.0, 120.0, -5.0, 5.0}, grid=true, colors={{28,108,200}, {238,46,47}}); -createPlot(id=2, position={1068, 80, 1484, 920}, y={"limPIDwithAutoTuning.k"}, range={0.0, 120.0, -1.0, 2.0}, grid=true, subPlot=102, colors={{28,108,200}}); -createPlot(id=2, position={1068, 80, 1484, 920}, y={"limPIDwithAutoTuning.Ti"}, range={0.0, 120.0, 0.0, 100.0}, grid=true, subPlot=103, colors={{28,108,200}}, displayUnits={"s"}); -createPlot(id=2, position={1068, 80, 1484, 920}, y={"limPIDwithAutoTuning.Td"}, range={0.0, 120.0, 0.0, 20.0}, grid=true, subPlot=104, colors={{28,108,200}}, displayUnits={"s"}); -createPlot(id=2, position={1068, 80, 1484, 920}, y={"limPIDwithAutoTuning.tunePeriodEnd.y"}, range={0.0, 120.0, -5.0, 5.0}, grid=true, subPlot=105, colors={{28,108,200}}); \ No newline at end of file diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/CDL/Discrete/Examples/Relay.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/CDL/Discrete/Examples/Relay.mos deleted file mode 100644 index d2974326ceb..00000000000 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/CDL/Discrete/Examples/Relay.mos +++ /dev/null @@ -1,10 +0,0 @@ -simulateModel("Buildings.Controls.OBC.CDL.Discrete.Examples.Relay", stopTime=120, resultFile="Relay"); -removePlots(false); -createPlot(id=1, position={15, 15, 2400, 1668}, y=fill("", 0), range={0.0, 120.0, -1.5, 1.5}, grid=true); -plotExpression(apply(Relay[end].sine.y-Relay[end].const.y), false, "u1-u2", 1); -plotExpression(apply(Relay[end].relay.deadBand), false, "deadBand", 1); -plotExpression(apply( -Relay[end].relay.deadBand), false, " -deadband", 1); -createPlot(id=1, position={15, 15, 2400, 1668}, y={"relay.y"}, range={0.0, 120.0, -1.0, 1.5}, grid=true, subPlot=102, colors={{28,108,200}}); -createPlot(id=1, position={15, 15, 2400, 1668}, y={"relay.dtON", "relay.dtOFF"}, range={0.0, 120.0, -10.0, 40.0}, grid=true, subPlot=103, colors={{28,108,200}, {238,46,47}}, displayUnits={"s", "s"}); -createPlot(id=1, position={15, 15, 2400, 1668}, y={"relay.tON_start", "relay.tOFF_start"}, range={0.0, 120.0, -50.0, 150.0}, grid=true, subPlot=104, colors={{28,108,200}, {238,46,47}}, displayUnits={"s", "s"}); - From dff0c1757a219990eb4b90198506bf675c47ef79 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Mon, 8 Aug 2022 23:17:41 -0400 Subject: [PATCH 015/214] update the model doc for AMIGO --- .../PIDWithAutotuning/AutoTuner/AMIGO/PI.mo | 8 +- .../PIDWithAutotuning/AutoTuner/AMIGO/PID.mo | 3 +- .../AutoTuner/AMIGO/PIDDerivativeTime.mo | 18 ++-- .../AutoTuner/AMIGO/PIDGain.mo | 36 +++++--- .../AutoTuner/AMIGO/PIDIntegralTime.mo | 50 +++++----- .../AutoTuner/AMIGO/PIGain.mo | 80 +++++++++------- .../AutoTuner/AMIGO/PIIntegralTime.mo | 90 ++++++++++-------- .../Validation/PIWithAutotuningAmigoFOTD.mo | 91 +++++++++++-------- 8 files changed, 223 insertions(+), 153 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PI.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PI.mo index 51372fa256d..3684906a3ed 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PI.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PI.mo @@ -19,10 +19,11 @@ block PI "Identifies the parameters of a PI controller" "Connector for time constant signal for the integral term" annotation (Placement(transformation(extent={{100,-50},{120,-30}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PIGain gain - "Calculates the control gain" + "Calculate the control gain" annotation (Placement(transformation(extent={{-10,20},{10,40}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PIIntegralTime - integralTime "Calculates the integral time" + integralTime + "Calculate the integral time" annotation (Placement(transformation(extent={{-10,-40},{10,-20}}))); equation @@ -40,7 +41,8 @@ equation -12,24}}, color={0,0,127})); connect(gain.kp, kp) annotation (Line(points={{-12,36},{-40,36},{-40,60},{ -120,60}}, color={0,0,127})); - annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + annotation (defaultComponentName = "PI", + Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-100,-100},{100,100}}, lineColor={0,0,127}, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo index 739e09c6e5a..9bf2c957db5 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo @@ -51,7 +51,8 @@ equation {-40,50},{-12,50}}, color={0,0,127})); connect(L, gain.L) annotation (Line(points={{-120,-60},{-26,-60},{-26,44},{ -12,44}}, color={0,0,127})); - annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + annotation (defaultComponentName = "PID", + Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-100,-100},{100,100}}, lineColor={0,0,127}, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo index 5c7b8f315cf..d39a5b8e140 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo @@ -11,15 +11,20 @@ block PIDDerivativeTime "Identifies the derivative time of a PID controller" Buildings.Controls.OBC.CDL.Interfaces.RealOutput Td "Connector for time constant signal for the derivative term" annotation (Placement(transformation(extent={{100,-10},{120,10}}))); - CDL.Continuous.MultiplyByParameter gai1(k=0.3) "0.3L" + CDL.Continuous.MultiplyByParameter gai1(k=0.3) + "Calculate the product of 0.3 and the time delay" annotation (Placement(transformation(extent={{-80,-50},{-60,-30}}))); - CDL.Continuous.MultiplyByParameter gai2(k=0.5) "0.5T" + CDL.Continuous.MultiplyByParameter gai2(k=0.5) + "Calculate the product of 0.5 and the input time constant" annotation (Placement(transformation(extent={{-80,30},{-60,50}}))); - CDL.Continuous.Multiply mul "0.5LT" + CDL.Continuous.Multiply mul + "Calculate the product of the output of gai2 and the input time constant" annotation (Placement(transformation(extent={{-40,0},{-20,20}}))); - CDL.Continuous.Add add "0.3L+T" + CDL.Continuous.Add add + "Calculate the sum of the output of gai1 and the input time constant" annotation (Placement(transformation(extent={{-40,-60},{-20,-40}}))); - CDL.Continuous.Divide div "0.5LT/(0.3L+T)" + CDL.Continuous.Divide div + "Calculate the output of mul divided by the output of add" annotation (Placement(transformation(extent={{20,-10},{40,10}}))); equation connect(div.y, Td) @@ -40,7 +45,8 @@ equation color={0,0,127})); connect(div.u2, add.y) annotation (Line(points={{18,-6},{12,-6},{12,-50},{-18, -50}}, color={0,0,127})); - annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + annotation (defaultComponentName = "PIDDerivativeTime", + Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-100,-100},{100,100}}, lineColor={0,0,127}, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo index ee5a7a5f8f4..896579c71fa 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo @@ -1,32 +1,37 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo; block PIDGain "Identifies the control gain of a PID controller" Buildings.Controls.OBC.CDL.Interfaces.RealInput kp(min=1E-6) - "Connector for the signal of the gain of a first order time-delayed model" + "Connector for the gain of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,40},{-100,80}}), iconTransformation(extent={{-140,40},{-100,80}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput T(min=0) - "Connector for the signal of the time constant of a first order time-delayed model" + "Connector for the time constant of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,-20},{-100,20}}), iconTransformation(extent={{-140,-20},{-100,20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput L(min=1E-6) - "Connector for the signal of the time delay of a first order time-delayed model" + "Connector for the time delay of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput k "Connector for control gain signal" annotation (Placement(transformation(extent={{100,-10},{120,10}}))); - CDL.Continuous.Divide div1 "1/kp" + Buildings.Controls.OBC.CDL.Continuous.Divide div1 + "Calculates the inverse of the input gain" annotation (Placement(transformation(extent={{-38,40},{-18,60}}))); - CDL.Continuous.Sources.Constant const(k=1) "Constant parameter" + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant const(final k=1) + "Constant parameter" annotation (Placement(transformation(extent={{-80,70},{-60,90}}))); - CDL.Continuous.Divide div2 "T/L" + Buildings.Controls.OBC.CDL.Continuous.AddParameter add(final p=0.2) + "Calculate the sum of 0.2 and the output of gai1" + annotation (Placement(transformation(extent={{20,-40},{40,-20}}))); + Buildings.Controls.OBC.CDL.Continuous.Divide div2 + "Calculate ratio of the time constant to the time delay" annotation (Placement(transformation(extent={{-60,-40},{-40,-20}}))); - CDL.Continuous.MultiplyByParameter gai1(k=0.45) "0.45T/L" + Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai1(final k=0.45) + "Calculate the product of 0.45 and the output of div2" annotation (Placement(transformation(extent={{-20,-40},{0,-20}}))); - CDL.Continuous.AddParameter - addPar(p=0.2) "0.2+0.45T/L" - annotation (Placement(transformation(extent={{20,-40},{40,-20}}))); - CDL.Continuous.Multiply mul "1/kp+(0.2+0.45T/L)" + Buildings.Controls.OBC.CDL.Continuous.Multiply mul + "Calcualte the sum of the output of addPar and the output of div1" annotation (Placement(transformation(extent={{60,-10},{80,10}}))); equation connect(div1.u2, kp) annotation (Line(points={{-40,44},{-94,44},{-94,60},{ @@ -39,14 +44,15 @@ equation -120,0}}, color={0,0,127})); connect(gai1.u, div2.y) annotation (Line(points={{-22,-30},{-38,-30}}, color={0,0,127})); - connect(gai1.y, addPar.u) + connect(gai1.y, add.u) annotation (Line(points={{2,-30},{18,-30}}, color={0,0,127})); connect(mul.y, k) annotation (Line(points={{82,0},{110,0}}, color={0,0,127})); connect(div1.y, mul.u1) annotation (Line(points={{-16,50},{42,50},{42,6},{58, 6}}, color={0,0,127})); - connect(mul.u2, addPar.y) annotation (Line(points={{58,-6},{48,-6},{48,-30},{ - 42,-30}}, color={0,0,127})); - annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + connect(mul.u2, add.y) annotation (Line(points={{58,-6},{48,-6},{48,-30},{42, + -30}}, color={0,0,127})); + annotation (defaultComponentName = "PIDGain", + Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-100,-100},{100,100}}, lineColor={0,0,127}, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo index 0cc3430e0b4..fd4f9ed6afb 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo @@ -1,29 +1,36 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo; block PIDIntegralTime "Identifies the integral time of a PID controller" Buildings.Controls.OBC.CDL.Interfaces.RealInput T(min=0) - "Connector for the signal of the time constant of a first order time-delayed model" + "Connector for the time constant of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,40},{-100,80}}), iconTransformation(extent={{-140,40},{-100,80}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput L(min=1E-6) - "Connector for the signal of the time delay of a first order time-delayed model" + "Connector for the time delay of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput Ti "Connector for time constant signal for the integral term" annotation (Placement(transformation(extent={{100,-10},{120,10}}))); - CDL.Continuous.MultiplyByParameter gai1(k=0.4) "0.4L" - annotation (Placement(transformation(extent={{-80,-50},{-60,-30}}))); - CDL.Continuous.MultiplyByParameter gai2(k=0.8) "0.8T" - annotation (Placement(transformation(extent={{-80,30},{-60,50}}))); - CDL.Continuous.MultiplyByParameter gai3(k=0.1) "0.1T" - annotation (Placement(transformation(extent={{-80,68},{-60,88}}))); - CDL.Continuous.Add add1 "L+0.1T" + Buildings.Controls.OBC.CDL.Continuous.Add add1 + "Calculate the sum of the time delay and the output of gai3" annotation (Placement(transformation(extent={{-40,10},{-20,30}}))); - CDL.Continuous.Add add2 "0.4L+0.8T" + Buildings.Controls.OBC.CDL.Continuous.Add add2 + "Calculate the sum of the output of gai1 and the output of gai2" annotation (Placement(transformation(extent={{-40,-30},{-20,-10}}))); - CDL.Continuous.Divide div3 "(0.4L+0.8T)/(L+0.1T)" + Buildings.Controls.OBC.CDL.Continuous.Divide div + "Calculate the output of add3 divided by the output of add1" annotation (Placement(transformation(extent={{0,10},{20,-10}}))); - CDL.Continuous.Multiply mul1 "(0.4L+0.8T)/(L+0.1T)L" + Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai1(final k=0.4) + "Calculate the product of 0.4 and the time delay" + annotation (Placement(transformation(extent={{-80,-50},{-60,-30}}))); + Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai2(final k=0.8) + "Calculate the product of 0.8 and the input time constant" + annotation (Placement(transformation(extent={{-80,30},{-60,50}}))); + Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai3(final k=0.1) + "Calculate the product of 0.1 and the input time constant" + annotation (Placement(transformation(extent={{-80,68},{-60,88}}))); + Buildings.Controls.OBC.CDL.Continuous.Multiply mul + "Calculate the product of the output of div and the time delay" annotation (Placement(transformation(extent={{40,-10},{60,10}}))); equation connect(gai1.u, L) annotation (Line(points={{-82,-40},{-90,-40},{-90,-60},{ @@ -40,17 +47,18 @@ equation -120,-60}}, color={0,0,127})); connect(add1.u1, gai3.y) annotation (Line(points={{-42,26},{-54,26},{-54,78}, {-58,78}}, color={0,0,127})); - connect(div3.y, mul1.u1) + connect(div.y, mul.u1) annotation (Line(points={{22,0},{30,0},{30,6},{38,6}}, color={0,0,127})); - connect(mul1.u2, L) annotation (Line(points={{38,-6},{24,-6},{24,-60},{-120, - -60}}, color={0,0,127})); - connect(mul1.y, Ti) + connect(mul.u2, L) annotation (Line(points={{38,-6},{24,-6},{24,-60},{-120,-60}}, + color={0,0,127})); + connect(mul.y, Ti) annotation (Line(points={{62,0},{110,0}}, color={0,0,127})); - connect(div3.u2, add1.y) annotation (Line(points={{-2,6},{-10,6},{-10,20},{ - -18,20}}, color={0,0,127})); - connect(div3.u1, add2.y) annotation (Line(points={{-2,-6},{-10,-6},{-10,-20}, - {-18,-20}}, color={0,0,127})); - annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + connect(div.u2, add1.y) annotation (Line(points={{-2,6},{-10,6},{-10,20},{-18, + 20}}, color={0,0,127})); + connect(div.u1, add2.y) annotation (Line(points={{-2,-6},{-10,-6},{-10,-20},{-18, + -20}}, color={0,0,127})); + annotation (defaultComponentName = "PIDIntegralTime", + Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-100,-100},{100,100}}, lineColor={0,0,127}, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo index 80d6efce866..3e104f45473 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo @@ -1,44 +1,57 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo; block PIGain "Identifies the control gain of a PI controller" Buildings.Controls.OBC.CDL.Interfaces.RealInput kp(min=1E-6) - "Connector for the signal of the gain of a first order time-delayed model" + "Connector of gain of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,40},{-100,80}}), iconTransformation(extent={{-140,40},{-100,80}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput T(min=0) - "Connector for the signal of the time constant of a first order time-delayed model" + Buildings.Controls.OBC.CDL.Interfaces.RealInput T(min=1E-6) + "Connector of time constant of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,-20},{-100,20}}), iconTransformation(extent={{-140,-20},{-100,20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput L(min=1E-6) - "Connector for the signal of the time delay of a first order time-delayed model" + "Connector of time delay of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput k "Connector for control gain signal" annotation (Placement(transformation(extent={{100,-10},{120,10}}))); - CDL.Continuous.Divide div1 "0.15/kp" - annotation (Placement(transformation(extent={{-60,40},{-40,60}}))); - CDL.Continuous.Add add2 "0.15/KP+(0.35-LT/(L+T)^2)*(T/kp/L)" - annotation (Placement(transformation(extent={{20,20},{40,40}}))); - CDL.Continuous.Add add1 "T^2" + Buildings.Controls.OBC.CDL.Continuous.Add add1 + "Calculates the sum of the time constant and the time delay" annotation (Placement(transformation(extent={{-60,-40},{-40,-20}}))); - CDL.Continuous.Multiply mul "T*L" - annotation (Placement(transformation(extent={{-60,-80},{-40,-60}}))); - CDL.Continuous.Multiply mul1 "(L+T)^2" - annotation (Placement(transformation(extent={{-20,-40},{0,-20}}))); - CDL.Continuous.Divide div2 "LT/(L+T)^2" + Buildings.Controls.OBC.CDL.Continuous.Add add2 + "Calculates the sume of the output of mul3 and the out put of div1" + annotation (Placement(transformation(extent={{20,20},{40,40}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant const1(final k=0.35) + "Constant parameter 1" + annotation (Placement(transformation(extent={{-10,-90},{10,-70}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant const2(final k=0.15) + "Constant parameter 2" + annotation (Placement(transformation(extent={{-100,70},{-80,90}}))); + Buildings.Controls.OBC.CDL.Continuous.Divide div1 + "Calculate 0.15 divided by the gain" + annotation (Placement(transformation(extent={{-60,40},{-40,60}}))); + Buildings.Controls.OBC.CDL.Continuous.Divide div2 + "Calculate the output of mul2 divided by the output of mul1" annotation (Placement(transformation(extent={{20,-40},{40,-60}}))); - CDL.Continuous.Multiply mul2 "kp*L" - annotation (Placement(transformation(extent={{-60,10},{-40,30}}))); - CDL.Continuous.Divide div3 "T/kp/L" + Buildings.Controls.OBC.CDL.Continuous.Divide div3 + "Calculate the time constant divided by the output of mul2" annotation (Placement(transformation(extent={{-20,20},{0,0}}))); - CDL.Continuous.Multiply mul3 "(0.35-LT/(L+T)^2)*(T/kp/L)" + Buildings.Controls.OBC.CDL.Continuous.Multiply mul1 + "Calculate the square value of the sum of the time constant and the time delay" + annotation (Placement(transformation(extent={{-20,-40},{0,-20}}))); + Buildings.Controls.OBC.CDL.Continuous.Multiply mul2 + "Calculate the product of the gain and the time delay" + annotation (Placement(transformation(extent={{-60,10},{-40,30}}))); + Buildings.Controls.OBC.CDL.Continuous.Multiply mul3 + "Calculate the product of the output of sub and the output of div3" annotation (Placement(transformation(extent={{20,-10},{40,10}}))); - CDL.Continuous.Sources.Constant const2(k=0.15) "Constant parameter 1" - annotation (Placement(transformation(extent={{-82,72},{-62,92}}))); - CDL.Continuous.Subtract sub "0.35-LT/(L+T)^2" + Buildings.Controls.OBC.CDL.Continuous.Multiply mul4 + "Calculate the product of the time constant times the time delay" + annotation (Placement(transformation(extent={{-60,-80},{-40,-60}}))); + Buildings.Controls.OBC.CDL.Continuous.Subtract sub + "Calculate the difference between 0.35 and the output of div2" annotation (Placement(transformation(extent={{50,-60},{70,-40}}))); - CDL.Continuous.Sources.Constant const1(k=0.35) "Constant parameter 1" - annotation (Placement(transformation(extent={{-10,-90},{10,-70}}))); + equation connect(div1.u2, kp) annotation (Line(points={{-62,44},{-80,44},{-80,60},{ -120,60}}, color={0,0,127})); @@ -48,17 +61,17 @@ equation -120,0}}, color={0,0,127})); connect(add1.u2, L) annotation (Line(points={{-62,-36},{-80,-36},{-80,-60},{ -120,-60}}, color={0,0,127})); - connect(mul.u1, T) annotation (Line(points={{-62,-64},{-90,-64},{-90,0},{-120, + connect(mul4.u1, T) annotation (Line(points={{-62,-64},{-90,-64},{-90,0},{-120, 0}}, color={0,0,127})); - connect(mul.u2, L) annotation (Line(points={{-62,-76},{-94,-76},{-94,-60},{ - -120,-60}}, color={0,0,127})); + connect(mul4.u2, L) annotation (Line(points={{-62,-76},{-94,-76},{-94,-60},{-120, + -60}}, color={0,0,127})); connect(mul1.u1, add1.y) annotation (Line(points={{-22,-24},{-32,-24},{-32, -30},{-38,-30}}, color={0,0,127})); connect(mul1.u2, add1.y) annotation (Line(points={{-22,-36},{-32,-36},{-32, -30},{-38,-30}}, color={0,0,127})); connect(div2.u2, mul1.y) annotation (Line(points={{18,-44},{8,-44},{8,-30},{2, -30}}, color={0,0,127})); - connect(div2.u1, mul.y) annotation (Line(points={{18,-56},{-20,-56},{-20,-70}, + connect(div2.u1, mul4.y) annotation (Line(points={{18,-56},{-20,-56},{-20,-70}, {-38,-70}}, color={0,0,127})); connect(mul2.u1, kp) annotation (Line(points={{-62,26},{-72,26},{-72,44},{-80, 44},{-80,60},{-120,60}}, color={0,0,127})); @@ -68,21 +81,22 @@ equation {-38,20}}, color={0,0,127})); connect(div3.u1, T) annotation (Line(points={{-22,4},{-52,4},{-52,0},{-120,0}}, color={0,0,127})); - connect(mul3.u1, div3.y) - annotation (Line(points={{18,6},{10,6},{10,10},{2,10}}, color={0,0,127})); - connect(const2.y, div1.u1) annotation (Line(points={{-60,82},{-54,82},{-54,64}, - {-68,64},{-68,56},{-62,56}}, color={0,0,127})); + connect(mul3.u1, div3.y) annotation (Line(points={{18,6},{10,6},{10,10},{2,10}}, color={0,0,127})); + connect(const2.y, div1.u1) annotation (Line(points={{-78,80},{-68,80},{-68,56}, + {-62,56}}, color={0,0,127})); connect(add2.u2, mul3.y) annotation (Line(points={{18,24},{10,24},{10,16},{48, 16},{48,0},{42,0}}, color={0,0,127})); connect(add2.y, k) annotation (Line(points={{42,30},{60,30},{60,0},{110,0}}, color={0,0,127})); - connect(div2.y, sub.u2) annotation (Line(points={{42,-50},{44,-50},{44,-56},{ + connect(div2.y, sub.u2) + annotation (Line(points={{42,-50},{44,-50},{44,-56},{ 48,-56}}, color={0,0,127})); connect(const1.y, sub.u1) annotation (Line(points={{12,-80},{46,-80},{46,-44}, {48,-44}}, color={0,0,127})); connect(sub.y, mul3.u2) annotation (Line(points={{72,-50},{80,-50},{80,-22},{ 10,-22},{10,-6},{18,-6}}, color={0,0,127})); - annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + annotation (defaultComponentName = "PIGain", + Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-100,-100},{100,100}}, lineColor={0,0,127}, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo index bb095432c6e..c26811636cd 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo @@ -1,40 +1,53 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo; block PIIntegralTime "Identifies the integral time of a PI controller" - Buildings.Controls.OBC.CDL.Interfaces.RealInput T(min=0) - "Connector for the signal of the time constant of a first order time-delayed model" + Buildings.Controls.OBC.CDL.Interfaces.RealInput T(min=1E-6) + "Connector for time constant of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,40},{-100,80}}), iconTransformation(extent={{-140,40},{-100,80}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput L(min=1E-6) - "Connector for the signal of the time delay of a first order time-delayed model" + "Connector for time delay of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealOutput Ti - "Connector for time constant signal for the integral term" + Buildings.Controls.OBC.CDL.Interfaces.RealOutput Ti(min=1E-6) + "Connector for time constant for the integral term" annotation (Placement(transformation(extent={{100,-10},{120,10}}))); - CDL.Continuous.MultiplyByParameter gai4(k=0.35) "0.35L" - annotation (Placement(transformation(extent={{-80,-30},{-60,-10}}))); - CDL.Continuous.Add add2 "0.35+13LT^2/(T^2+12LT+7L^2)" + Buildings.Controls.OBC.CDL.Continuous.Add add1 + "Calculate the sum of the output of mul3 and the output of gai1" + annotation (Placement(transformation(extent={{0,20},{20,40}}))); + Buildings.Controls.OBC.CDL.Continuous.Add add2 + "Calculate the sum of 0.35 and the output of div" annotation (Placement(transformation(extent={{60,-10},{80,10}}))); - CDL.Continuous.Multiply mul3 "T^2" - annotation (Placement(transformation(extent={{-60,50},{-40,70}}))); - CDL.Continuous.Multiply mul1 "12LT" - annotation (Placement(transformation(extent={{-40,18},{-20,38}}))); - CDL.Continuous.MultiplyByParameter gai1(k=12) "12L" + Buildings.Controls.OBC.CDL.Continuous.Add add3 + "Calculate the sum of the output of add1 and the output of mul2" + annotation (Placement(transformation(extent={{40,-80},{60,-60}}))); + Buildings.Controls.OBC.CDL.Continuous.Divide div + "Calculate the output of gai3 divided by the output of add3" + annotation (Placement(transformation(extent={{20,60},{40,80}}))); + Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai1(final k=12) + "Mutiple the time delay by 12" annotation (Placement(transformation(extent={{-40,-70},{-20,-50}}))); - CDL.Continuous.Multiply mul2 "7L^2" - annotation (Placement(transformation(extent={{0,-60},{20,-40}}))); - CDL.Continuous.MultiplyByParameter gai2(k=7) "7L" + Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai2(final k=7) + "Mutiple the time delay by 7" annotation (Placement(transformation(extent={{-80,-90},{-60,-70}}))); - CDL.Continuous.MultiplyByParameter gai3(k=13) "13T^2" + Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai3(final k=13) + "Mutiple the output of mul3 by 13" annotation (Placement(transformation(extent={{-20,70},{-40,90}}))); - CDL.Continuous.Divide div1 "13LT^2/(T^2+12LT+7L^2)" - annotation (Placement(transformation(extent={{20,60},{40,80}}))); - CDL.Continuous.Add add1 "T^2+12LT" - annotation (Placement(transformation(extent={{0,20},{20,40}}))); - CDL.Continuous.Add add3 "T^2+12LT+7L^2" - annotation (Placement(transformation(extent={{40,-80},{60,-60}}))); - CDL.Continuous.Multiply mul4 "13LT^2" + Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai4(final k=0.35) + "Mutiple the time delay by 0.35" + annotation (Placement(transformation(extent={{-80,-30},{-60,-10}}))); + Buildings.Controls.OBC.CDL.Continuous.Multiply mul1 + "Calculate the product of the input time constant and the output of gai1" + annotation (Placement(transformation(extent={{-40,20},{-20,40}}))); + Buildings.Controls.OBC.CDL.Continuous.Multiply mul2 + "Calculate the product of the time delay and the output of gai2" + annotation (Placement(transformation(extent={{0,-60},{20,-40}}))); + Buildings.Controls.OBC.CDL.Continuous.Multiply mul3 + "Calculate the square value of the input time constant" + annotation (Placement(transformation(extent={{-60,50},{-40,70}}))); + Buildings.Controls.OBC.CDL.Continuous.Multiply mul4 + "Calculate the product of the output of the gai3 and the time delay" annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); + equation connect(add2.y, Ti) annotation (Line(points={{82,0},{110,0}}, color={0,0,127})); @@ -47,38 +60,39 @@ equation connect(gai1.u, L) annotation (Line(points={{-42,-60},{-120,-60}}, color={0,0,127})); connect(gai1.y, mul1.u2) annotation (Line(points={{-18,-60},{-12,-60},{-12,14}, - {-48,14},{-48,22},{-42,22}}, color={0,0,127})); - connect(mul1.u1, T) annotation (Line(points={{-42,34},{-90,34},{-90,60},{-120, + {-48,14},{-48,24},{-42,24}}, color={0,0,127})); + connect(mul1.u1, T) annotation (Line(points={{-42,36},{-90,36},{-90,60},{-120, 60}}, color={0,0,127})); connect(gai2.u, L) annotation (Line(points={{-82,-80},{-92,-80},{-92,-60},{ -120,-60}}, color={0,0,127})); connect(gai2.y, mul2.u2) annotation (Line(points={{-58,-80},{-6,-80},{-6,-56}, {-2,-56}}, color={0,0,127})); - connect(mul2.u1, L) annotation (Line(points={{-2,-44},{-10,-44},{-10,-74},{ - -50,-74},{-50,-60},{-120,-60}}, color={0,0,127})); + connect(mul2.u1, L) annotation (Line(points={{-2,-44},{-50,-44},{-50,-60},{-120, + -60}}, color={0,0,127})); connect(gai3.u, mul3.y) annotation (Line(points={{-18,80},{-12,80},{-12,60},{ -38,60}}, color={0,0,127})); connect(add1.u1, mul3.y) annotation (Line(points={{-2,36},{-12,36},{-12,60},{ -38,60}}, color={0,0,127})); - connect(mul1.y, add1.u2) annotation (Line(points={{-18,28},{-12,28},{-12,24}, - {-2,24}}, color={0,0,127})); + connect(mul1.y, add1.u2) annotation (Line(points={{-18,30},{-12,30},{-12,24},{ + -2,24}}, color={0,0,127})); connect(mul2.y, add3.u2) annotation (Line(points={{22,-50},{30,-50},{30,-76}, {38,-76}}, color={0,0,127})); connect(add3.u1, add1.y) annotation (Line(points={{38,-64},{32,-64},{32,30},{ 22,30}}, color={0,0,127})); - connect(add3.y, div1.u2) annotation (Line(points={{62,-70},{80,-70},{80,-24}, - {-8,-24},{-8,64},{18,64}}, color={0,0,127})); - connect(div1.y, add2.u1) + connect(add3.y, div.u2) annotation (Line(points={{62,-70},{80,-70},{80,-24},{-8, + -24},{-8,64},{18,64}}, color={0,0,127})); + connect(div.y, add2.u1) annotation (Line(points={{42,70},{50,70},{50,6},{58,6}}, color={0,0,127})); connect(add2.u2, gai4.y) annotation (Line(points={{58,-6},{48,-6},{48,-20},{ -58,-20}}, color={0,0,127})); connect(mul4.u2, L) annotation (Line(points={{-82,4},{-88,4},{-88,-60},{-120, -60}}, color={0,0,127})); - connect(gai3.y, mul4.u1) annotation (Line(points={{-42,80},{-76,80},{-76,24}, - {-88,24},{-88,16},{-82,16}}, color={0,0,127})); - connect(mul4.y, div1.u1) annotation (Line(points={{-58,10},{-52,10},{-52,44}, - {6,44},{6,76},{18,76}}, color={0,0,127})); - annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + connect(gai3.y, mul4.u1) annotation (Line(points={{-42,80},{-94,80},{-94,24},{ + -88,24},{-88,16},{-82,16}}, color={0,0,127})); + connect(mul4.y, div.u1) annotation (Line(points={{-58,10},{-4,10},{-4,76},{18, + 76}}, color={0,0,127})); + annotation (defaultComponentName = "PIIntegralTime", + Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-100,-100},{100,100}}, lineColor={0,0,127}, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD.mo index 3e5afc035c1..81007697608 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD.mo @@ -18,58 +18,77 @@ model PIWithAutotuningAmigoFOTD "Test model for PIDWithAutotuning" Ti=0.5, Td=0.1) "PID controller with constant gains" - annotation (Placement(transformation(extent={{-20,20},{0,40}}))); + annotation (Placement(transformation(extent={{-20,50},{0,70}}))); CDL.Logical.Sources.Constant resSig(k=false) "Reset signal" annotation (Placement(transformation(extent={{-80,60},{-60,80}}))); CDL.Discrete.UnitDelay uniDel2(samplePeriod=240) "A dealy process for control process 2" - annotation (Placement(transformation(extent={{20,-30},{40,-10}}))); + annotation (Placement(transformation(extent={{10,-30},{30,-10}}))); CDL.Discrete.UnitDelay uniDel1(samplePeriod=240) "A dealy process for control process 1" - annotation (Placement(transformation(extent={{20,20},{40,40}}))); - CDL.Continuous.FirstOrder firstOrder1(y_start=0) - annotation (Placement(transformation(extent={{60,20},{80,40}}))); + annotation (Placement(transformation(extent={{10,50},{30,70}}))); CDL.Continuous.Sources.Constant k(k=1) "Gain of the first order process" - annotation (Placement(transformation(extent={{-20,80},{0,100}}))); + annotation (Placement(transformation(extent={{180,20},{160,40}}))); CDL.Continuous.Sources.Constant T(k=10) "Time constant of the first order process" - annotation (Placement(transformation(extent={{0,50},{20,70}}))); - CDL.Continuous.FirstOrder firstOrder2(y_start=0) - annotation (Placement(transformation(extent={{60,-30},{80,-10}}))); + annotation (Placement(transformation(extent={{180,-20},{160,0}}))); + CDL.Continuous.Add add2 + annotation (Placement(transformation(extent={{60,70},{80,90}}))); + CDL.Continuous.Add add1 + annotation (Placement(transformation(extent={{60,-20},{80,0}}))); + CDL.Continuous.Derivative derivative + annotation (Placement(transformation(extent={{78,26},{58,46}}))); + CDL.Continuous.Derivative derivative1 + annotation (Placement(transformation(extent={{80,-60},{60,-40}}))); equation - connect(resSig.y, PID.trigger) annotation (Line(points={{-58,70},{-48,70},{-48, - 12},{-16,12},{-16,18}}, + connect(resSig.y, PID.trigger) annotation (Line(points={{-58,70},{-30,70},{ + -30,40},{-16,40},{-16,48}}, color={255,0,255})); connect(PIDWitAutotuning.trigger, PID.trigger) annotation (Line(points={{-16,-32}, - {-16,-38},{-30,-38},{-30,12},{-16,12},{-16,18}}, + {-16,-38},{-30,-38},{-30,40},{-16,40},{-16,48}}, color={255,0,255})); - connect(PIDWitAutotuning.u_s, PID.u_s) annotation (Line(points={{-22,-20},{-50, - -20},{-50,30},{-22,30}}, + connect(PIDWitAutotuning.u_s, PID.u_s) annotation (Line(points={{-22,-20},{ + -48,-20},{-48,60},{-22,60}}, color={0,0,127})); - connect(SetPoint.y, PID.u_s) annotation (Line(points={{-58,10},{-50,10},{-50,30}, - {-22,30}}, color={0,0,127})); + connect(SetPoint.y, PID.u_s) annotation (Line(points={{-58,10},{-48,10},{-48, + 60},{-22,60}}, color={0,0,127})); connect(PIDWitAutotuning.y, uniDel2.u) - annotation (Line(points={{2,-20},{18,-20}}, color={0,0,127})); + annotation (Line(points={{2,-20},{8,-20}}, color={0,0,127})); connect(uniDel1.u, PID.y) - annotation (Line(points={{18,30},{2,30}}, color={0,0,127})); - connect(uniDel1.y, firstOrder1.u) - annotation (Line(points={{42,30},{58,30}}, color={0,0,127})); - connect(firstOrder1.y, PID.u_m) annotation (Line(points={{82,30},{90,30},{90, - 8},{-10,8},{-10,18}}, color={0,0,127})); - connect(firstOrder2.u, uniDel2.y) - annotation (Line(points={{58,-20},{42,-20}}, color={0,0,127})); - connect(firstOrder2.y, PIDWitAutotuning.u_m) annotation (Line(points={{82,-20}, - {90,-20},{90,-40},{-10,-40},{-10,-32}}, color={0,0,127})); - connect(firstOrder1.k, k.y) annotation (Line(points={{58,38},{48,38},{48,90}, - {2,90}}, color={0,0,127})); - connect(T.y, firstOrder1.T) annotation (Line(points={{22,60},{44,60},{44,34}, - {58,34}}, color={0,0,127})); - connect(firstOrder2.k, k.y) annotation (Line(points={{58,-12},{52,-12},{52,38}, - {48,38},{48,90},{2,90}}, color={0,0,127})); - connect(firstOrder2.T, firstOrder1.T) annotation (Line(points={{58,-16},{44, - -16},{44,34},{58,34}}, color={0,0,127})); + annotation (Line(points={{8,60},{2,60}}, color={0,0,127})); + connect(uniDel1.y, add2.u1) annotation (Line(points={{32,60},{40,60},{40,86}, + {58,86}},color={0,0,127})); + connect(k.y, derivative.k) + annotation (Line(points={{158,30},{148,30},{148,44},{80,44}}, + color={0,0,127})); + connect(derivative.T, T.y) + annotation (Line(points={{80,40},{112,40},{112,-46},{148,-46},{148,-10},{ + 158,-10}}, color={0,0,127})); + connect(derivative.y, add2.u2) annotation (Line(points={{56,36},{50,36},{50, + 74},{58,74}}, + color={0,0,127})); + connect(add2.y, PID.u_m) annotation (Line(points={{82,80},{88,80},{88,54},{46, + 54},{46,42},{-10,42},{-10,48}}, + color={0,0,127})); + connect(add1.u1, uniDel2.y) annotation (Line(points={{58,-4},{40,-4},{40,-20}, + {32,-20}}, color={0,0,127})); + connect(derivative1.y, add1.u2) annotation (Line(points={{58,-50},{52,-50},{ + 52,-16},{58,-16}}, + color={0,0,127})); + connect(add1.y, PIDWitAutotuning.u_m) annotation (Line(points={{82,-10},{88, + -10},{88,-26},{46,-26},{46,-38},{-10,-38},{-10,-32}}, + color={0,0,127})); + connect(derivative1.k, derivative.k) annotation (Line(points={{82,-42},{92, + -42},{92,44},{80,44}}, + color={0,0,127})); + connect(derivative1.T, T.y) annotation (Line(points={{82,-46},{148,-46},{148, + -10},{158,-10}}, color={0,0,127})); + connect(derivative.u, add2.u1) annotation (Line(points={{80,36},{88,36},{88, + 20},{40,20},{40,86},{58,86}}, color={0,0,127})); + connect(derivative1.u, uniDel2.y) annotation (Line(points={{82,-50},{92,-50}, + {92,-66},{40,-66},{40,-20},{32,-20}}, color={0,0,127})); annotation ( experiment( StopTime=10000, @@ -96,7 +115,7 @@ First implementation
"), - Icon(coordinateSystem(extent={{-100,-80},{100,100}}), + Icon( graphics={ Ellipse( lineColor={75,138,73}, @@ -109,5 +128,5 @@ First implementation
pattern=LinePattern.None, fillPattern=FillPattern.Solid, points={{-36,60},{64,0},{-36,-60},{-36,60}})}), - Diagram(coordinateSystem(extent={{-100,-80},{100,100}}))); + Diagram(coordinateSystem(extent={{-100,-80},{200,100}}))); end PIWithAutotuningAmigoFOTD; From 1dc6b5a5e2c9d2a43a103bb7d79103e7f10e4f61 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Tue, 9 Aug 2022 16:51:29 -0400 Subject: [PATCH 016/214] fix one issue in the implementation --- .../Validation/PIWithAutotuningAmigoFOTD.mo | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD.mo index 81007697608..d9d090beb82 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD.mo @@ -34,9 +34,11 @@ model PIWithAutotuningAmigoFOTD "Test model for PIDWithAutotuning" CDL.Continuous.Sources.Constant T(k=10) "Time constant of the first order process" annotation (Placement(transformation(extent={{180,-20},{160,0}}))); - CDL.Continuous.Add add2 + CDL.Continuous.Subtract + sub annotation (Placement(transformation(extent={{60,70},{80,90}}))); - CDL.Continuous.Add add1 + CDL.Continuous.Subtract + add1 annotation (Placement(transformation(extent={{60,-20},{80,0}}))); CDL.Continuous.Derivative derivative annotation (Placement(transformation(extent={{78,26},{58,46}}))); @@ -58,20 +60,18 @@ equation annotation (Line(points={{2,-20},{8,-20}}, color={0,0,127})); connect(uniDel1.u, PID.y) annotation (Line(points={{8,60},{2,60}}, color={0,0,127})); - connect(uniDel1.y, add2.u1) annotation (Line(points={{32,60},{40,60},{40,86}, - {58,86}},color={0,0,127})); + connect(uniDel1.y, sub.u1) annotation (Line(points={{32,60},{40,60},{40,86},{ + 58,86}}, color={0,0,127})); connect(k.y, derivative.k) annotation (Line(points={{158,30},{148,30},{148,44},{80,44}}, color={0,0,127})); connect(derivative.T, T.y) annotation (Line(points={{80,40},{112,40},{112,-46},{148,-46},{148,-10},{ 158,-10}}, color={0,0,127})); - connect(derivative.y, add2.u2) annotation (Line(points={{56,36},{50,36},{50, - 74},{58,74}}, - color={0,0,127})); - connect(add2.y, PID.u_m) annotation (Line(points={{82,80},{88,80},{88,54},{46, - 54},{46,42},{-10,42},{-10,48}}, - color={0,0,127})); + connect(derivative.y, sub.u2) annotation (Line(points={{56,36},{50,36},{50,74}, + {58,74}}, color={0,0,127})); + connect(sub.y, PID.u_m) annotation (Line(points={{82,80},{88,80},{88,54},{46, + 54},{46,42},{-10,42},{-10,48}}, color={0,0,127})); connect(add1.u1, uniDel2.y) annotation (Line(points={{58,-4},{40,-4},{40,-20}, {32,-20}}, color={0,0,127})); connect(derivative1.y, add1.u2) annotation (Line(points={{58,-50},{52,-50},{ @@ -85,8 +85,8 @@ equation color={0,0,127})); connect(derivative1.T, T.y) annotation (Line(points={{82,-46},{148,-46},{148, -10},{158,-10}}, color={0,0,127})); - connect(derivative.u, add2.u1) annotation (Line(points={{80,36},{88,36},{88, - 20},{40,20},{40,86},{58,86}}, color={0,0,127})); + connect(derivative.u, sub.u1) annotation (Line(points={{80,36},{88,36},{88,20}, + {40,20},{40,86},{58,86}}, color={0,0,127})); connect(derivative1.u, uniDel2.y) annotation (Line(points={{82,-50},{92,-50}, {92,-66},{40,-66},{40,-20},{32,-20}}, color={0,0,127})); annotation ( From 59fa7e040e9a623c8c614b35d3270340217f5bba Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Wed, 10 Aug 2022 08:13:56 -0400 Subject: [PATCH 017/214] clean up --- .../PIDWithAutotuning/AutoTuner/AMIGO/PI.mo | 2 +- .../PIDWithAutotuning/AutoTuner/AMIGO/PID.mo | 8 +- .../AutoTuner/AMIGO/PIDDerivativeTime.mo | 2 +- .../AutoTuner/AMIGO/PIDGain.mo | 2 +- .../AutoTuner/AMIGO/PIDIntegralTime.mo | 2 +- .../AutoTuner/AMIGO/PIGain.mo | 2 +- .../AutoTuner/AMIGO/PIIntegralTime.mo | 2 +- .../AutoTuner/AMIGO/Validation/PI.mo | 2 +- .../AutoTuner/AMIGO/Validation/PID.mo | 2 +- .../AMIGO/Validation/PIDDerivativeTime.mo | 2 +- .../AutoTuner/AMIGO/Validation/PIDGain.mo | 2 +- .../AMIGO/Validation/PIDIntegralTime.mo | 2 +- .../AutoTuner/AMIGO/Validation/PIGain.mo | 2 +- .../AMIGO/Validation/PIIntegralTime.mo | 2 +- .../PIDWithAutotuningAmigoFOTD.mo | 65 ++++++++- .../Relay/{Control.mo => Controller.mo} | 11 +- .../Relay/HalfPeriodRatio.mo | 1 + .../Relay/NormalizedTimeDelay.mo | 33 ++--- .../PIDWithAutotuning/Relay/OnOffPeriod.mo | 28 ++-- .../Relay/ResponseProcess.mo | 4 +- .../Validation/{Control.mo => Controller.mo} | 12 +- .../Relay/Validation/HalfPeriodRatio.mo | 3 +- .../Relay/Validation/NormalizedTimeDelay.mo | 3 +- .../Relay/Validation/OnOffPeriod.mo | 3 +- .../Relay/Validation/ResponseProcess.mo | 2 +- .../Relay/Validation/package.order | 2 +- .../PIDWithAutotuning/Relay/package.order | 2 +- .../ControlProcessModel.mo | 4 +- .../FirstOrderTimedelayed/Gain.mo | 23 ++-- .../TimeConstantDelay.mo | 4 +- .../Validation/ControlProcessModel.mo | 2 +- .../FirstOrderTimedelayed/Validation/Gain.mo | 3 +- .../Validation/TimeConstantDelay.mo | 2 +- .../Validation/PIDWithAutotuningAmigoFOTD.mo | 125 ++++++++++-------- .../Validation/PIWithAutotuningAmigoFOTD.mo | 108 +++++++-------- .../Relay/Validation/Control.mos | 6 - .../Relay/Validation/Controller.mos | 6 + .../Validation/PIWithAutotuningAmigoFOTD.mos | 4 +- 38 files changed, 280 insertions(+), 210 deletions(-) rename Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/{Control.mo => Controller.mo} (95%) rename Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/{Control.mo => Controller.mo} (85%) delete mode 100644 Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Control.mos create mode 100644 Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Controller.mos diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PI.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PI.mo index 3684906a3ed..452323d468e 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PI.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PI.mo @@ -41,7 +41,7 @@ equation -12,24}}, color={0,0,127})); connect(gain.kp, kp) annotation (Line(points={{-12,36},{-40,36},{-40,60},{ -120,60}}, color={0,0,127})); - annotation (defaultComponentName = "PI", + annotation (defaultComponentName = "pI", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-100,-100},{100,100}}, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo index 9bf2c957db5..c6ea0e53f50 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo @@ -22,13 +22,13 @@ block PID "Identifies the parameters of a PID controller" "Connector for time constant signal for the derivative term" annotation (Placement(transformation(extent={{100,-70},{120,-50}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PIDGain gain - "Calculates the control gain" + "Calculate the control gain" annotation (Placement(transformation(extent={{-10,40},{10,60}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PIDIntegralTime - integralTime "Calculates the integral time" + integralTime "Calculate the integral time" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PIDDerivativeTime - derivativeTime "Calculates the derivative time" + derivativeTime "Calculate the derivative time" annotation (Placement(transformation(extent={{-10,-70},{10,-50}}))); equation connect(derivativeTime.Td, Td) @@ -51,7 +51,7 @@ equation {-40,50},{-12,50}}, color={0,0,127})); connect(L, gain.L) annotation (Line(points={{-120,-60},{-26,-60},{-26,44},{ -12,44}}, color={0,0,127})); - annotation (defaultComponentName = "PID", + annotation (defaultComponentName = "pID", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-100,-100},{100,100}}, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo index d39a5b8e140..16ba4890b94 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo @@ -45,7 +45,7 @@ equation color={0,0,127})); connect(div.u2, add.y) annotation (Line(points={{18,-6},{12,-6},{12,-50},{-18, -50}}, color={0,0,127})); - annotation (defaultComponentName = "PIDDerivativeTime", + annotation (defaultComponentName = "pIDDerivativeTime", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-100,-100},{100,100}}, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo index 896579c71fa..4cf848a48b8 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo @@ -51,7 +51,7 @@ equation 6}}, color={0,0,127})); connect(mul.u2, add.y) annotation (Line(points={{58,-6},{48,-6},{48,-30},{42, -30}}, color={0,0,127})); - annotation (defaultComponentName = "PIDGain", + annotation (defaultComponentName = "pIDGain", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-100,-100},{100,100}}, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo index fd4f9ed6afb..72d7eeb7d24 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo @@ -57,7 +57,7 @@ equation 20}}, color={0,0,127})); connect(div.u1, add2.y) annotation (Line(points={{-2,-6},{-10,-6},{-10,-20},{-18, -20}}, color={0,0,127})); - annotation (defaultComponentName = "PIDIntegralTime", + annotation (defaultComponentName = "pIDIntegralTime", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-100,-100},{100,100}}, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo index 3e104f45473..321f70d6d4c 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo @@ -95,7 +95,7 @@ equation {48,-44}}, color={0,0,127})); connect(sub.y, mul3.u2) annotation (Line(points={{72,-50},{80,-50},{80,-22},{ 10,-22},{10,-6},{18,-6}}, color={0,0,127})); - annotation (defaultComponentName = "PIGain", + annotation (defaultComponentName = "pIGain", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-100,-100},{100,100}}, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo index c26811636cd..097e227cdc4 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo @@ -91,7 +91,7 @@ equation -88,24},{-88,16},{-82,16}}, color={0,0,127})); connect(mul4.y, div.u1) annotation (Line(points={{-58,10},{-4,10},{-4,76},{18, 76}}, color={0,0,127})); - annotation (defaultComponentName = "PIIntegralTime", + annotation (defaultComponentName = "pIIntegralTime", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-100,-100},{100,100}}, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo index 35df6ee3f2b..253fa987922 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo @@ -2,7 +2,7 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Valida model PI "Test model for PI" extends Modelica.Icons.Example; Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PI pI - "Calculates the parameters for a PI controller" + "Calculate the parameters for a PI controller" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); CDL.Continuous.Sources.TimeTable ReferenceData(table=[0,1,0.5,0.3,0.343,0.469; 0.002,1.002,0.501,0.301,0.342,0.47; 0.004,1.004,0.502,0.301,0.341,0.471; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo index ea3fa9d87bf..ae951f2faa7 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo @@ -2,7 +2,7 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Valida model PID "Test model for PID" extends Modelica.Icons.Example; Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PID pID - "Calculates the parameters for a PI controller" + "Calculate the parameters for a PI controller" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); CDL.Continuous.Sources.TimeTable ReferenceData(table=[0,1,0.5,0.3,0.95,0.446, 0.127; 0.002,1.002,0.501,0.301,0.948,0.447,0.127; 0.004,1.004,0.502, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mo index 5be74f3801f..0e3c006a38b 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mo @@ -2,7 +2,7 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Valida model PIDDerivativeTime "Test model for PIDDerivativeTime" extends Modelica.Icons.Example; Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PIDDerivativeTime - pIDDerivativeTime "Calculates the integral time for a PI controller" + pIDDerivativeTime "Calculate the integral time for a PI controller" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); CDL.Continuous.Sources.TimeTable ReferenceData(table=[0,1,0.5,0.3,0.95,0.446, 0.127; 0.002,1.002,0.501,0.301,0.948,0.447,0.127; 0.004,1.004,0.502, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mo index e6110582c7b..2f732f7adad 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mo @@ -2,7 +2,7 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Valida model PIDGain "Test model for PIDGain" extends Modelica.Icons.Example; Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PIDGain pIDGain - "Calculates the control gain for a PID controller" + "Calculate the control gain for a PID controller" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); CDL.Continuous.Sources.TimeTable ReferenceData(table=[0,1,0.5,0.3,0.95,0.446, 0.127; 0.002,1.002,0.501,0.301,0.948,0.447,0.127; 0.004,1.004,0.502, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mo index b8384a028fb..1e14c3e1743 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mo @@ -2,7 +2,7 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Valida model PIDIntegralTime "Test model for PIDIntergralTime" extends Modelica.Icons.Example; Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PIDIntegralTime - pIDIntegralTime "Calculates the integral time for a PID controller" + pIDIntegralTime "Calculate the integral time for a PID controller" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); CDL.Continuous.Sources.TimeTable ReferenceData(table=[0,1,0.5,0.3,0.95,0.446, 0.127; 0.002,1.002,0.501,0.301,0.948,0.447,0.127; 0.004,1.004,0.502, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mo index 4300700a96f..41fdfffa959 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mo @@ -2,7 +2,7 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Valida model PIGain "Test model for PIGain" extends Modelica.Icons.Example; Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PIGain pIGain - "Calculates the control gain for a PI controller" + "Calculate the control gain for a PI controller" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable ReferenceData(table=[0, 1,0.5,0.3,0.343,0.469; 0.002,1.002,0.501,0.301,0.342,0.47; 0.004,1.004, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mo index 999348ad131..2ffadb1dc9e 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mo @@ -2,7 +2,7 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Valida model PIIntegralTime "Test model for PIIntergralTime" extends Modelica.Icons.Example; Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PIIntegralTime - pIIntegralTime "Calculates the integral time for a PI controller" + pIIntegralTime "Calculate the integral time for a PI controller" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); CDL.Continuous.Sources.TimeTable ReferenceData(table=[0,1,0.5,0.3,0.343,0.469; 0.002,1.002,0.501,0.301,0.342,0.47; 0.004,1.004,0.502,0.301,0.341,0.471; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/PIDWithAutotuningAmigoFOTD.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/PIDWithAutotuningAmigoFOTD.mo index 980cae32368..b8ecb92e54c 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/PIDWithAutotuningAmigoFOTD.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/PIDWithAutotuningAmigoFOTD.mo @@ -39,7 +39,7 @@ block PIDWithAutotuningAmigoFOTD Buildings.Controls.OBC.CDL.Interfaces.RealOutput y "Connector for actuator output signal" annotation (Placement(transformation(extent={{100,-20},{140,20}}),iconTransformation(extent={{100,-20},{140,20}}))); - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Control relay( + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Controller relay( yHig=yHig, yLow=yLow, deaBan=deaBan) @@ -82,6 +82,16 @@ block PIDWithAutotuningAmigoFOTD "Simulation time" annotation (Placement(transformation(extent={{80,60},{60,80}}))); + CDL.Interfaces.RealInput u_m1 + "Connector for measurement input signal" + annotation (Placement(transformation(origin={0,-220},extent={{20,-20},{-20,20}},rotation=270),iconTransformation(extent={{20,-20},{-20,20}},rotation=270,origin={0,-120}))); + CDL.Interfaces.RealOutput y1 + "Connector for actuator output signal" + annotation (Placement(transformation(extent={{220,-20},{260,20}}),iconTransformation(extent={{100,-20}, + {140,20}}))); + CDL.Interfaces.BooleanInput trigger1 + "Resets the controller output when trigger becomes true" + annotation (Placement(transformation(extent={{-20,-20},{20,20}},rotation=90,origin={-160,-220}),iconTransformation(extent={{-20,-20},{20,20}},rotation=90,origin={-60,-120}))); protected final parameter Boolean with_I=controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PI or controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PID "Boolean flag to enable integral action" @@ -177,14 +187,59 @@ June 1, 2022, by Sen Huang:
First implementation
-"), Icon(graphics={ +"), + defaultComponentName = "pIDWithAutotuningAmigoFOTD", + Icon(graphics={ + Text( + extent={{-158,144},{142,104}}, + textString="%name", + textColor={0,0,255}), Rectangle( extent={{-100,-100},{100,100}}, lineColor={0,0,127}, fillColor={255,255,255}, fillPattern=FillPattern.Solid), + Rectangle( + extent={{-6,-20},{66,-66}}, + lineColor={255,255,255}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), Text( - extent={{-158,144},{142,104}}, - textString="%name", - textColor={0,0,255})})); + visible=(controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PI), + extent={{-26,-22},{74,-62}}, + lineColor={0,0,0}, + textString="PI", + fillPattern=FillPattern.Solid, + fillColor={175,175,175}), + Polygon( + points={{-80,82},{-88,60},{-72,60},{-80,82}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Line( + points={{-80,68},{-80,-100}}, + color={192,192,192}), + Line( + points={{-90,-80},{70,-80}}, + color={192,192,192}), + Polygon( + points={{74,-80},{52,-72},{52,-88},{74,-80}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Line( + points={{-80,-80},{-80,-22}}, + color={0,0,0}), + Line( + points={{-80,-22},{6,56}}, + color={0,0,0}), + Line( + points={{6,56},{68,56}}, + color={0,0,0}), + Rectangle( + extent={{100,-100},{84,-100}}, + fillColor={175,175,175}, + fillPattern=FillPattern.Solid, + pattern=LinePattern.None, + lineColor={0,0,0})})); end PIDWithAutotuningAmigoFOTD; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Control.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo similarity index 95% rename from Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Control.mo rename to Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo index 1f2c3b88798..9d498627a5e 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Control.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo @@ -1,5 +1,5 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay; -block Control +block Controller "Outputs relay signals for tuning PID controllers" parameter Real yHig(min=1E-6) = 1 "Higher value for the output"; @@ -25,7 +25,7 @@ block Control "Control error signal" annotation (Placement(transformation(extent={{100,-10},{120,10}}))); Buildings.Controls.OBC.CDL.Logical.OnOffController greMeaSet(bandwidth=deaBan*2, pre_y_start=true) - "check if the measured value is larger than the reference, by default the relay control is On" + "Check if the measured value is larger than the reference, by default the relay control is On" annotation (Placement(transformation(extent={{-20,-10},{0,10}}))); Buildings.Controls.OBC.CDL.Continuous.Switch swi "Switch between a higher value and a lower value" @@ -34,7 +34,7 @@ block Control "Higher value for the output" annotation (Placement(transformation(extent={{-40,40},{-20,60}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.Constant yLowSig(final k=-yLow) - "Default temperature slope in case of zero division" + "Lower value for the output" annotation (Placement(transformation(extent={{-40,-50},{-20,-30}}))); Buildings.Controls.OBC.CDL.Continuous.Subtract controlError "Control error (set point - measurement)" @@ -74,7 +74,8 @@ equation connect(controlError.u2, u_s) annotation (Line(points={{-78,14},{-80,14},{-80, 0},{-120,0}}, color={0,0,127})); - annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + annotation (defaultComponentName = "controller", + Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-100,-100},{100,100}}, lineColor={0,0,127}, @@ -103,4 +104,4 @@ First implementation
")); -end Control; +end Controller; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo index e91b3733054..d1b7ae69307 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo @@ -143,6 +143,7 @@ equation Diagram( coordinateSystem( extent={{-100,-100},{100,100}})), + defaultComponentName = "halfPeriodRatio", Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{80, 100}}), graphics={ Rectangle( diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/NormalizedTimeDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/NormalizedTimeDelay.mo index e994039075c..a1b55c58ef3 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/NormalizedTimeDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/NormalizedTimeDelay.mo @@ -10,26 +10,27 @@ block NormalizedTimeDelay Buildings.Controls.OBC.CDL.Interfaces.RealOutput tau "Connector for a real signal of the normalized time delay" annotation (Placement(transformation(extent={{100,-10},{120,10}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.Constant asymmetryLevel(k=gamma) + Buildings.Controls.OBC.CDL.Continuous.AddParameter addPar1(final p=-1) + "Calculate the difference between gamma and 1" + annotation (Placement(transformation(extent={{-40,-20},{-20,0}}))); + Buildings.Controls.OBC.CDL.Continuous.AddParameter addPar2(final p=0.65) + "Calculate the sum of the output of gai and 0.65" + annotation (Placement(transformation(extent={{-40,-70},{-20,-50}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant asymmetryLevel(final k=gamma) "Asymmetry level of the relay controller" annotation (Placement(transformation(extent={{-80,40},{-60,60}}))); - Buildings.Controls.OBC.CDL.Continuous.Subtract subGammaRho "gamma-rho" + Buildings.Controls.OBC.CDL.Continuous.Divide div "Calculate the normalized time delay" + annotation (Placement(transformation(extent={{40,-10},{60,10}}))); + Buildings.Controls.OBC.CDL.Continuous.Subtract subGammaRho + "Calculate the difference between gamma and rho" annotation (Placement(transformation(extent={{0,12},{20,32}}))); - Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai(k=0.35) - "gain for rho" + Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai(final k=0.35) + "Gain for the half period ratio" annotation (Placement(transformation(extent={{-80,-70},{-60,-50}}))); Buildings.Controls.OBC.CDL.Continuous.Multiply mul - "(r-1)*(0.35*roh+0.65)" + "Calculate the product of the output of addPar1 and that of addPar2" annotation (Placement(transformation(extent={{0,-48},{20,-28}}))); - Buildings.Controls.OBC.CDL.Continuous.Divide div - "calculates tau" - annotation (Placement(transformation(extent={{40,-10},{60,10}}))); - Buildings.Controls.OBC.CDL.Continuous.AddParameter addPar2(p=0.65) - "calculates rho*0.35+0.65" - annotation (Placement(transformation(extent={{-40,-70},{-20,-50}}))); - Buildings.Controls.OBC.CDL.Continuous.AddParameter addPar1(p=-1) - "calculates gamma-1" - annotation (Placement(transformation(extent={{-40,-20},{-20,0}}))); + equation assert( gamma-rho>1E-6, @@ -54,7 +55,9 @@ equation {-52,50},{-58,50}}, color={0,0,127})); connect(addPar1.y, mul.u1) annotation (Line(points={{-18,-10},{-10,-10},{-10,-32}, {-2,-32}}, color={0,0,127})); - annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + annotation ( + defaultComponentName = "normalizedTimeDelay", + Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-100,-100},{100,100}}, lineColor={0,0,127}, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo index 6fc88f67ee6..d77b14bf6c6 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo @@ -1,6 +1,10 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay; block OnOffPeriod "Calculates the lengths of the On period and the Off period" + Buildings.Controls.OBC.CDL.Interfaces.RealInput tim + "Connector for the input signal of the simulation time" + annotation (Placement(transformation(extent={{-140,40},{-100,80}}), + iconTransformation(extent={{-140,40},{-100,80}}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanInput On "Connector for relay switch signal" annotation (Placement(transformation( extent={{-140,-80},{-100,-40}}), iconTransformation(extent={{-140,-80}, @@ -17,33 +21,31 @@ block OnOffPeriod Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler timOff "Simulation time when the input signal becomes Off (False)" annotation (Placement(transformation(extent={{-30,-40},{-10,-20}}))); - Buildings.Controls.OBC.CDL.Logical.Not Off "Relay switch off" + Buildings.Controls.OBC.CDL.Logical.Not Off + "Relay switch off" annotation (Placement(transformation(extent={{-80,-80},{-60,-60}}))); Buildings.Controls.OBC.CDL.Continuous.Subtract lenOffCal - "Calculating the horizon length for the Off period" + "Calculate the horizon length for the Off period" annotation (Placement(transformation(extent={{20,-40},{40,-20}}))); Buildings.Controls.OBC.CDL.Continuous.Subtract lenOnCal - "Calculating the horizon length for the On period" + "Calculate the horizon length for the On period" annotation (Placement(transformation(extent={{20,30},{40,50}}))); Buildings.Controls.OBC.CDL.Continuous.Greater greTimOff - "Triggering the action to record the horizon length for the Off period" + "Trigger the action to record the horizon length for the Off period" annotation (Placement(transformation(extent={{40,-80},{60,-60}}))); Buildings.Controls.OBC.CDL.Continuous.Greater greTimOn - "Triggering the action to record the horizon length for the On period" + "Trigger the action to record the horizon length for the On period" annotation (Placement(transformation(extent={{40,60},{60,80}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.Constant minLen(final k=0) "Minimum value for the horizon length" annotation (Placement(transformation(extent={{-80,60},{-60,80}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler timOffRecord - "Recording the horizon length for the Off period" + "Record the horizon length for the Off period" annotation (Placement(transformation(extent={{60,-50},{80,-30}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler timOnRecord - "Recording the horizon length for the On period" + "Record the horizon length for the On period" annotation (Placement(transformation(extent={{60,50},{80,30}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput tim - "Connector for the input signal of the simulation time" - annotation (Placement(transformation(extent={{-140,40},{-100,80}}), - iconTransformation(extent={{-140,40},{-100,80}}))); + equation connect(Off.u, On) annotation (Line(points={{-82,-70},{-92,-70},{-92,-60},{ @@ -87,7 +89,9 @@ equation annotation (Line(points={{82,40},{110,40}}, color={0,0,127})); connect(timOffRecord.y, tOff) annotation (Line(points={{82,-40},{110,-40}}, color={0,0,127})); - annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + annotation ( + defaultComponentName = "onOffPeriod", + Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-100,-100},{100,100}}, lineColor={0,0,127}, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo index 5da1cbeb6ea..052ec152553 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo @@ -64,7 +64,9 @@ equation {26,-80},{26,4},{23.3333,4}}, color={255,0,255})); connect(triggerStart, halfPeriodRatio.triggerStart) annotation (Line(points={{110,-40}, {34,-40},{34,10},{23.3333,10}}, color={255,0,255})); - annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + annotation ( + defaultComponentName = "responseProcess", + Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-100,-100},{100,100}}, lineColor={0,0,127}, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Control.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Controller.mo similarity index 85% rename from Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Control.mo rename to Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Controller.mo index e8cad158128..829f73af342 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Control.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Controller.mo @@ -1,7 +1,7 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation; -model Control "Test model for Control" +model Controller "Test model for Control" extends Modelica.Icons.Example; - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Control control( + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Controller controller( yHig=1, yLow=0.5, deaBan=0.4) "A relay controller" @@ -11,16 +11,16 @@ model Control "Test model for Control" Buildings.Controls.OBC.CDL.Continuous.Sources.Constant const(k=0) "Setpoint" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); equation - connect(const.y, control.u_s) + connect(const.y, controller.u_s) annotation (Line(points={{-38,0},{-12,0}}, color={0,0,127})); - connect(sin.y, control.u_m) + connect(sin.y, controller.u_m) annotation (Line(points={{-38,-50},{0,-50},{0,-12}}, color={0,0,127})); annotation ( experiment( StopTime=1.0, Tolerance=1e-06), __Dymola_Commands( - file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Control.mos" "Simulate and plot"), + file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Controller.mos" "Simulate and plot"), Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( coordinateSystem(preserveAspectRatio=false)), Documentation(revisions=" @@ -37,4 +37,4 @@ Validation test for the block Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Control.

")); -end Control; +end Controller; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mo index 36006af1d1b..58bb22c40e4 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mo @@ -2,8 +2,7 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation; model HalfPeriodRatio "Test model for HalfPeriodRatio" extends Modelica.Icons.Example; Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.HalfPeriodRatio - halfPeriodRatio - "Calculates the half period ratio" + halfPeriodRatio "Calculate the half period ratio" annotation (Placement(transformation(extent={{-8,-10},{12,10}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable tOn( table=[0,0; 0.1,1; 0.3,1; 0.7,1; 0.83,2; 0.85,6], diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mo index c4447845518..c87f76cddc3 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mo @@ -2,8 +2,7 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation; model NormalizedTimeDelay "Test model for NormalizedTimeDelay" extends Modelica.Icons.Example; Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.NormalizedTimeDelay - normalizedTimeDelay(gamma=4) - "calculates the normalized time delay" + normalizedTimeDelay(gamma=4) "Calculate the normalized time delay" annotation (Placement(transformation(extent={{-8,-10},{12,10}}))); CDL.Continuous.Sources.TimeTable ReferenceData(table=[0,0,2.051; 0.002,0, 2.051; 0.004,0,2.051; 0.006,0,2.051; 0.008,0,2.051; 0.01,0,2.051; 0.012, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mo index 72c6ce0b24a..62251bef290 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mo @@ -2,8 +2,7 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation; model OnOffPeriod "Test model for OnOffPeriod" extends Modelica.Icons.Example; Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.OnOffPeriod - onOffPeriod - "Calculates the length of the On period and the Off period" + onOffPeriod "Calculate the length of the On period and the Off period" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Buildings.Controls.OBC.CDL.Logical.Sources.TimeTable relayResponse( table=[0,1;0.1,0; 0.3,0; 0.7,1; 0.83,0; 0.85,1], period=2) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mo index ffa6589040f..3e82e130c57 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mo @@ -3,7 +3,7 @@ model ResponseProcess "Test model for ResponseProcess" extends Modelica.Icons.Example; Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.ResponseProcess responseProcess(yHig=1, yLow=0.2) - "Calculates the length of the On period and the Off period" + "Calculate the length of the On period and the Off period" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Buildings.Controls.OBC.CDL.Logical.Sources.TimeTable relayResponse( table=[0,1;0.1,0; 0.3,0; 0.7,1; 0.83,0; 0.85,1], period=2) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/package.order index df20bbb9f85..a7cbca10e80 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/package.order +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/package.order @@ -1,4 +1,4 @@ -Control +Controller HalfPeriodRatio NormalizedTimeDelay OnOffPeriod diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/package.order index 988e3203b46..0286df4ced5 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/package.order +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/package.order @@ -1,4 +1,4 @@ -Control +Controller HalfPeriodRatio NormalizedTimeDelay OnOffPeriod diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo index 1b9d101ce35..6f4e37ecd12 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo @@ -124,7 +124,9 @@ equation 34,-24},{-6,-24},{-6,-6},{-2,-6}}, color={0,0,127})); connect(div.u1, samtau.y) annotation (Line(points={{10,-44},{-40,-44},{-40,-80}, {-48,-80}}, color={0,0,127})); - annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + annotation ( + defaultComponentName = "controlProcessModel", + Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-100,-100},{100,100}}, lineColor={0,0,127}, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Gain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Gain.mo index a3d79e364bb..21c88097e94 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Gain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Gain.mo @@ -5,15 +5,15 @@ block Gain "Identifies the gain of a first order time delayed model" parameter Real yLow(min=1E-6) = 0.5 "Lower value for the output (assuming the reference output is 0)"; Buildings.Controls.OBC.CDL.Interfaces.RealInput u - "Connector for a signal of a relay controller output" + "Connector for a relay controller output" annotation (Placement(transformation(extent={{-140,60},{-100,100}}), iconTransformation(extent={{-140,60},{-100,100}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput tOn - "Connector for a signal of the length for the On period" + "Connector for the length for the On period" annotation (Placement(transformation(extent={{-140,-20},{-100,20}}), iconTransformation(extent={{-140,-20},{-100,20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput tOff - "Connector for a signal of the length for the Off period" + "Connector for the length for the Off period" annotation (Placement(transformation(extent={{-140,-100},{-100,-60}}), iconTransformation(extent={{-140,-100},{-100,-60}}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanInput triggerStart @@ -30,22 +30,21 @@ block Gain "Identifies the gain of a first order time delayed model" "Integral of the relay output" annotation (Placement(transformation(extent={{-40,-50},{-20,-30}}))); Buildings.Controls.OBC.CDL.Continuous.IntegratorWithReset Iy( - k=1,y_start=1E-11) + final k=1,y_start=1E-11) "Integral of the process output" annotation (Placement(transformation(extent={{-40,30},{-20,50}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.Constant referenceRelayOutpit(k=0) + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant referenceRelayOutpit(final k=0) "Reference value of the relay control output" annotation (Placement(transformation(extent={{-80,10},{-60,30}}))); - Buildings.Controls.OBC.CDL.Continuous.Divide divIyIu - "Calculates the gain" + Buildings.Controls.OBC.CDL.Continuous.Divide divIyIu "Calculate the gain" annotation (Placement(transformation(extent={{32,-10},{52,10}}))); - Buildings.Controls.OBC.CDL.Continuous.AddParameter addPar(p=1E-11) + Buildings.Controls.OBC.CDL.Continuous.AddParameter addPar(final p=1E-11) "Avoid divide-by-zero errors" annotation (Placement(transformation(extent={{0,-50},{20,-30}}))); - Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gaitOnyHig(k=yHig) + Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gaitOnyHig(final k=yHig) "Product of tOn and yHig" annotation (Placement(transformation(extent={{-80,-30},{-60,-10}}))); - Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gaitOffyLow(k=-yLow) + Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gaitOffyLow(final k=-yLow) "Product of tOff and yLow" annotation (Placement(transformation(extent={{-80,-90},{-60,-70}}))); equation @@ -69,7 +68,9 @@ equation annotation (Line(points={{-82,-80},{-120,-80}}, color={0,0,127})); connect(gaitOffyLow.y, Iu.u2) annotation (Line(points={{-58,-80},{-50,-80},{-50, -46},{-42,-46}}, color={0,0,127})); - annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + annotation ( + defaultComponentName = "gain", + Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-100,-100},{100,100}}, lineColor={0,0,127}, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/TimeConstantDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/TimeConstantDelay.mo index fe6c959c3a1..f25d212eed2 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/TimeConstantDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/TimeConstantDelay.mo @@ -118,7 +118,9 @@ equation 82,-68}}, color={0,0,127})); connect(absk.y, div1.u2) annotation (Line(points={{-58,-10},{-20,-10},{-20, -26},{-2,-26}}, color={0,0,127})); - annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + annotation ( + defaultComponentName = "timeConstantDelay", + Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-100,-100},{100,100}}, lineColor={0,0,127}, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo index 3ea94cdebe1..be0d620c088 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo @@ -3,7 +3,7 @@ model ControlProcessModel "Test model for ControlProcessModel" extends Modelica.Icons.Example; Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.ControlProcessModel controlProcessModel(yLow=0.1, deaBan=0.05) - "Calculates the parameters of the system model for the control process" + "Calculate the parameters of of a first-order model" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); CDL.Continuous.Sources.TimeTable ReferenceData(table=[0,1,1,1,0.3,1,1; 0.002, 1,1,1,0.3,1,1; 0.004,1,1,1,0.3,1,1; 0.006,1,1,1,0.3,1,1; 0.008,1,1,1, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mo index f274f31fd07..e72d8df4128 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mo @@ -2,8 +2,7 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.F model Gain "Test model for Gain" extends Modelica.Icons.Example; Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Gain - gain - "Calculates the gain" + gain "Calculate the gain of a first-order model" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable tOn( table=[0,0; 0.1,0.1; 0.3,0.1; 0.7,0.1; 0.83,0.1; 0.9,0.07], diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mo index 4cc58366b5f..98db63dee2b 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mo @@ -3,7 +3,7 @@ model TimeConstantDelay "Test model for TimeConstantDelay" extends Modelica.Icons.Example; Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.TimeConstantDelay timeConstantDelay(yLow=0.1) - "Calculates the time constant and the time delay" + "Calculate the time constant and the time delay of a first-order model" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); CDL.Continuous.Sources.TimeTable ReferenceData(table=[0,1,1,0.3,0.754,0.226; 0.002,1,1,0.3,0.754,0.226; 0.004,1,1,0.3,0.754,0.226; 0.006,1,1,0.3, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithAutotuningAmigoFOTD.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithAutotuningAmigoFOTD.mo index 04e0cb9bcf1..f3b04b20ff0 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithAutotuningAmigoFOTD.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithAutotuningAmigoFOTD.mo @@ -3,80 +3,91 @@ model PIDWithAutotuningAmigoFOTD "Test model for PIDWithAutotuning" Buildings.Controls.OBC.CDL.Continuous.Sources.Constant SetPoint(k=0.8) "Setpoint value" annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); - .Buildings.Controls.OBC.Utilities.PIDWithAutotuning.PIDWithAutotuningAmigoFOTD - PIDWitAutotuning( + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.PIDWithAutotuningAmigoFOTD + PIdWitAutotuning( controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PID, yHig=1, yLow=0.1, deaBan=0.1, - setPoint=0.8) - "PID controller with an autotuning feature" + setPoint=0.8) "PI controller with an autotuning feature" annotation (Placement(transformation(extent={{-20,-30},{0,-10}}))); Buildings.Controls.OBC.CDL.Continuous.PIDWithReset PID( controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PID, k=1, Ti=0.5, - Td=0.1) - "PID controller with constant gains" - annotation (Placement(transformation(extent={{-20,20},{0,40}}))); - CDL.Logical.Sources.Constant resSig(k=false) + Td=0.1) "PI controller with constant gains" + annotation (Placement(transformation(extent={{-20,50},{0,70}}))); + Buildings.Controls.OBC.CDL.Logical.Sources.Constant resSig(k=false) "Reset signal" annotation (Placement(transformation(extent={{-80,60},{-60,80}}))); - - CDL.Discrete.UnitDelay uniDel2(samplePeriod=240) - "A dealy process for control process 2" - annotation (Placement(transformation(extent={{20,-30},{40,-10}}))); - CDL.Discrete.UnitDelay uniDel1(samplePeriod=240) - "A dealy process for control process 1" - annotation (Placement(transformation(extent={{20,20},{40,40}}))); - CDL.Continuous.FirstOrder firstOrder1(y_start=0) - annotation (Placement(transformation(extent={{60,20},{80,40}}))); - CDL.Continuous.Sources.Constant k(k=1) "Gain of the first order process" - annotation (Placement(transformation(extent={{-20,80},{0,100}}))); - CDL.Continuous.Sources.Constant T(k=10) + Buildings.Controls.OBC.CDL.Discrete.UnitDelay uniDel2(samplePeriod=240) + "A delay process for control process 2" + annotation (Placement(transformation(extent={{10,-30},{30,-10}}))); + Buildings.Controls.OBC.CDL.Discrete.UnitDelay uniDel1(samplePeriod=240) + "A delay process for control process 1" + annotation (Placement(transformation(extent={{10,50},{30,70}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant k(k=1) "Gain of the first order process" + annotation (Placement(transformation(extent={{180,20},{160,40}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant T(k=10) "Time constant of the first order process" - annotation (Placement(transformation(extent={{0,50},{20,70}}))); - CDL.Continuous.FirstOrder firstOrder2(y_start=0) - annotation (Placement(transformation(extent={{60,-30},{80,-10}}))); + annotation (Placement(transformation(extent={{180,-20},{160,0}}))); + Buildings.Controls.OBC.CDL.Continuous.Subtract sub1 + "A subtract block that is used to mimic the first order process 1" + annotation (Placement(transformation(extent={{60,70},{80,90}}))); + Buildings.Controls.OBC.CDL.Continuous.Subtract sub2 + "A subtract block that is used to mimic the first order process 2" + annotation (Placement(transformation(extent={{60,-20},{80,0}}))); + Buildings.Controls.OBC.CDL.Continuous.Derivative derivative1 + "A derivative block that is used to mimic the first order process 1" + annotation (Placement(transformation(extent={{78,26},{58,46}}))); + Buildings.Controls.OBC.CDL.Continuous.Derivative derivative2 + "A derivative block that is used to mimic the first order process 2" + annotation (Placement(transformation(extent={{80,-60},{60,-40}}))); equation - connect(resSig.y, PID.trigger) annotation (Line(points={{-58,70},{-48,70},{-48, - 12},{-16,12},{-16,18}}, - color={255,0,255})); - connect(PIDWitAutotuning.trigger, PID.trigger) annotation (Line(points={{-16,-32}, - {-16,-38},{-30,-38},{-30,12},{-16,12},{-16,18}}, - color={255,0,255})); - connect(PIDWitAutotuning.u_s, PID.u_s) annotation (Line(points={{-22,-20},{-50, - -20},{-50,30},{-22,30}}, - color={0,0,127})); - connect(SetPoint.y, PID.u_s) annotation (Line(points={{-58,10},{-50,10},{-50,30}, - {-22,30}}, color={0,0,127})); - connect(PIDWitAutotuning.y, uniDel2.u) - annotation (Line(points={{2,-20},{18,-20}}, color={0,0,127})); - connect(uniDel1.u, PID.y) - annotation (Line(points={{18,30},{2,30}}, color={0,0,127})); - connect(uniDel1.y, firstOrder1.u) - annotation (Line(points={{42,30},{58,30}}, color={0,0,127})); - connect(firstOrder1.y, PID.u_m) annotation (Line(points={{82,30},{90,30},{90,8}, - {-10,8},{-10,18}}, color={0,0,127})); - connect(firstOrder2.u, uniDel2.y) - annotation (Line(points={{58,-20},{42,-20}}, color={0,0,127})); - connect(firstOrder2.y, PIDWitAutotuning.u_m) annotation (Line(points={{82,-20}, - {90,-20},{90,-40},{-10,-40},{-10,-32}}, color={0,0,127})); - connect(firstOrder1.k, k.y) annotation (Line(points={{58,38},{48,38},{48,90},{ - 2,90}}, color={0,0,127})); - connect(T.y, firstOrder1.T) annotation (Line(points={{22,60},{44,60},{44,34},{ - 58,34}}, color={0,0,127})); - connect(firstOrder2.k, k.y) annotation (Line(points={{58,-12},{52,-12},{52,38}, - {48,38},{48,90},{2,90}}, color={0,0,127})); - connect(firstOrder2.T, firstOrder1.T) annotation (Line(points={{58,-16},{44,-16}, - {44,34},{58,34}}, color={0,0,127})); + connect(resSig.y, PI.trigger) annotation (Line(points={{-58,70},{-30,70},{-30, + 40},{-16,40},{-16,48}}, color={255,0,255})); + connect(PIWitAutotuning.trigger, PI.trigger) annotation (Line(points={{-16,-32}, + {-16,-38},{-30,-38},{-30,40},{-16,40},{-16,48}}, color={255,0,255})); + connect(PIWitAutotuning.u_s, PI.u_s) annotation (Line(points={{-22,-20},{-48,-20}, + {-48,60},{-22,60}}, color={0,0,127})); + connect(SetPoint.y, PI.u_s) annotation (Line(points={{-58,10},{-48,10},{-48,60}, + {-22,60}}, color={0,0,127})); + connect(PIWitAutotuning.y, uniDel2.u) + annotation (Line(points={{2,-20},{8,-20}}, color={0,0,127})); + connect(uniDel1.u, PI.y) + annotation (Line(points={{8,60},{2,60}}, color={0,0,127})); + connect(uniDel1.y, sub1.u1) annotation (Line(points={{32,60},{40,60},{40,86},{ + 58,86}}, color={0,0,127})); + connect(k.y, derivative1.k) annotation (Line(points={{158,30},{148,30},{148,44}, + {80,44}}, color={0,0,127})); + connect(derivative1.T, T.y) annotation (Line(points={{80,40},{112,40},{112,-46}, + {148,-46},{148,-10},{158,-10}}, color={0,0,127})); + connect(derivative1.y, sub1.u2) annotation (Line(points={{56,36},{50,36},{50,74}, + {58,74}}, color={0,0,127})); + connect(sub1.y, PI.u_m) annotation (Line(points={{82,80},{88,80},{88,54},{46,54}, + {46,42},{-10,42},{-10,48}}, color={0,0,127})); + connect(sub2.u1, uniDel2.y) annotation (Line(points={{58,-4},{40,-4},{40,-20}, + {32,-20}}, color={0,0,127})); + connect(derivative2.y,sub2. u2) annotation (Line(points={{58,-50},{52,-50},{ + 52,-16},{58,-16}}, + color={0,0,127})); + connect(sub2.y, PIWitAutotuning.u_m) annotation (Line(points={{82,-10},{88,-10}, + {88,-26},{46,-26},{46,-38},{-10,-38},{-10,-32}}, color={0,0,127})); + connect(derivative2.k, derivative1.k) annotation (Line(points={{82,-42},{92,-42}, + {92,44},{80,44}}, color={0,0,127})); + connect(derivative2.T, T.y) annotation (Line(points={{82,-46},{148,-46},{148, + -10},{158,-10}}, color={0,0,127})); + connect(derivative1.u, sub1.u1) annotation (Line(points={{80,36},{88,36},{88,20}, + {40,20},{40,86},{58,86}}, color={0,0,127})); + connect(derivative2.u, uniDel2.y) annotation (Line(points={{82,-50},{92,-50}, + {92,-66},{40,-66},{40,-20},{32,-20}}, color={0,0,127})); annotation ( experiment( StopTime=10000, Tolerance=1e-06, __Dymola_Algorithm="Cvode"), __Dymola_Commands( - file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithAutotuningAmigoFOTD.mos" "Simulate and plot"), + file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD.mos" "Simulate and plot"), Documentation( info="

@@ -96,7 +107,7 @@ First implementation
"), - Icon(coordinateSystem(extent={{-100,-80},{100,100}}), + Icon( graphics={ Ellipse( lineColor={75,138,73}, @@ -109,5 +120,5 @@ First implementation
pattern=LinePattern.None, fillPattern=FillPattern.Solid, points={{-36,60},{64,0},{-36,-60},{-36,60}})}), - Diagram(coordinateSystem(extent={{-100,-80},{100,100}}))); + Diagram(coordinateSystem(extent={{-100,-80},{200,100}}))); end PIDWithAutotuningAmigoFOTD; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD.mo index d9d090beb82..159f10e79d3 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD.mo @@ -3,91 +3,83 @@ model PIWithAutotuningAmigoFOTD "Test model for PIDWithAutotuning" Buildings.Controls.OBC.CDL.Continuous.Sources.Constant SetPoint(k=0.8) "Setpoint value" annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); - .Buildings.Controls.OBC.Utilities.PIDWithAutotuning.PIDWithAutotuningAmigoFOTD - PIDWitAutotuning( + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.PIDWithAutotuningAmigoFOTD + PIWitAutotuning( controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PI, yHig=1, yLow=0.1, deaBan=0.1, - setPoint=0.8) - "PID controller with an autotuning feature" + setPoint=0.8) "PI controller with an autotuning feature" annotation (Placement(transformation(extent={{-20,-30},{0,-10}}))); - Buildings.Controls.OBC.CDL.Continuous.PIDWithReset PID( + Buildings.Controls.OBC.CDL.Continuous.PIDWithReset PI( controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PI, k=1, Ti=0.5, - Td=0.1) - "PID controller with constant gains" - annotation (Placement(transformation(extent={{-20,50},{0,70}}))); - CDL.Logical.Sources.Constant resSig(k=false) + Td=0.1) "PI controller with constant gains" + annotation (Placement(transformation(extent={{-20,50},{0,70}}))); + Buildings.Controls.OBC.CDL.Logical.Sources.Constant resSig(k=false) "Reset signal" annotation (Placement(transformation(extent={{-80,60},{-60,80}}))); - - CDL.Discrete.UnitDelay uniDel2(samplePeriod=240) - "A dealy process for control process 2" + Buildings.Controls.OBC.CDL.Discrete.UnitDelay uniDel2(samplePeriod=240) + "A delay process for control process 2" annotation (Placement(transformation(extent={{10,-30},{30,-10}}))); - CDL.Discrete.UnitDelay uniDel1(samplePeriod=240) - "A dealy process for control process 1" + Buildings.Controls.OBC.CDL.Discrete.UnitDelay uniDel1(samplePeriod=240) + "A delay process for control process 1" annotation (Placement(transformation(extent={{10,50},{30,70}}))); - CDL.Continuous.Sources.Constant k(k=1) "Gain of the first order process" + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant k(k=1) "Gain of the first order process" annotation (Placement(transformation(extent={{180,20},{160,40}}))); - CDL.Continuous.Sources.Constant T(k=10) + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant T(k=10) "Time constant of the first order process" annotation (Placement(transformation(extent={{180,-20},{160,0}}))); - CDL.Continuous.Subtract - sub + Buildings.Controls.OBC.CDL.Continuous.Subtract sub1 + "A subtract block that is used to mimic the first order process 1" annotation (Placement(transformation(extent={{60,70},{80,90}}))); - CDL.Continuous.Subtract - add1 + Buildings.Controls.OBC.CDL.Continuous.Subtract sub2 + "A subtract block that is used to mimic the first order process 2" annotation (Placement(transformation(extent={{60,-20},{80,0}}))); - CDL.Continuous.Derivative derivative + Buildings.Controls.OBC.CDL.Continuous.Derivative derivative1 + "A derivative block that is used to mimic the first order process 1" annotation (Placement(transformation(extent={{78,26},{58,46}}))); - CDL.Continuous.Derivative derivative1 + Buildings.Controls.OBC.CDL.Continuous.Derivative derivative2 + "A derivative block that is used to mimic the first order process 2" annotation (Placement(transformation(extent={{80,-60},{60,-40}}))); equation - connect(resSig.y, PID.trigger) annotation (Line(points={{-58,70},{-30,70},{ - -30,40},{-16,40},{-16,48}}, - color={255,0,255})); - connect(PIDWitAutotuning.trigger, PID.trigger) annotation (Line(points={{-16,-32}, - {-16,-38},{-30,-38},{-30,40},{-16,40},{-16,48}}, - color={255,0,255})); - connect(PIDWitAutotuning.u_s, PID.u_s) annotation (Line(points={{-22,-20},{ - -48,-20},{-48,60},{-22,60}}, - color={0,0,127})); - connect(SetPoint.y, PID.u_s) annotation (Line(points={{-58,10},{-48,10},{-48, - 60},{-22,60}}, color={0,0,127})); - connect(PIDWitAutotuning.y, uniDel2.u) - annotation (Line(points={{2,-20},{8,-20}}, color={0,0,127})); - connect(uniDel1.u, PID.y) - annotation (Line(points={{8,60},{2,60}}, color={0,0,127})); - connect(uniDel1.y, sub.u1) annotation (Line(points={{32,60},{40,60},{40,86},{ + connect(resSig.y, PI.trigger) annotation (Line(points={{-58,70},{-30,70},{-30, + 40},{-16,40},{-16,48}}, color={255,0,255})); + connect(PIWitAutotuning.trigger, PI.trigger) annotation (Line(points={{-16,-32}, + {-16,-38},{-30,-38},{-30,40},{-16,40},{-16,48}}, color={255,0,255})); + connect(PIWitAutotuning.u_s, PI.u_s) annotation (Line(points={{-22,-20},{-48,-20}, + {-48,60},{-22,60}}, color={0,0,127})); + connect(SetPoint.y, PI.u_s) annotation (Line(points={{-58,10},{-48,10},{-48,60}, + {-22,60}}, color={0,0,127})); + connect(PIWitAutotuning.y, uniDel2.u) + annotation (Line(points={{2,-20},{8,-20}}, color={0,0,127})); + connect(uniDel1.u, PI.y) + annotation (Line(points={{8,60},{2,60}}, color={0,0,127})); + connect(uniDel1.y, sub1.u1) annotation (Line(points={{32,60},{40,60},{40,86},{ 58,86}}, color={0,0,127})); - connect(k.y, derivative.k) - annotation (Line(points={{158,30},{148,30},{148,44},{80,44}}, - color={0,0,127})); - connect(derivative.T, T.y) - annotation (Line(points={{80,40},{112,40},{112,-46},{148,-46},{148,-10},{ - 158,-10}}, color={0,0,127})); - connect(derivative.y, sub.u2) annotation (Line(points={{56,36},{50,36},{50,74}, + connect(k.y, derivative1.k) annotation (Line(points={{158,30},{148,30},{148,44}, + {80,44}}, color={0,0,127})); + connect(derivative1.T, T.y) annotation (Line(points={{80,40},{112,40},{112,-46}, + {148,-46},{148,-10},{158,-10}}, color={0,0,127})); + connect(derivative1.y, sub1.u2) annotation (Line(points={{56,36},{50,36},{50,74}, {58,74}}, color={0,0,127})); - connect(sub.y, PID.u_m) annotation (Line(points={{82,80},{88,80},{88,54},{46, - 54},{46,42},{-10,42},{-10,48}}, color={0,0,127})); - connect(add1.u1, uniDel2.y) annotation (Line(points={{58,-4},{40,-4},{40,-20}, + connect(sub1.y, PI.u_m) annotation (Line(points={{82,80},{88,80},{88,54},{46,54}, + {46,42},{-10,42},{-10,48}}, color={0,0,127})); + connect(sub2.u1, uniDel2.y) annotation (Line(points={{58,-4},{40,-4},{40,-20}, {32,-20}}, color={0,0,127})); - connect(derivative1.y, add1.u2) annotation (Line(points={{58,-50},{52,-50},{ + connect(derivative2.y,sub2. u2) annotation (Line(points={{58,-50},{52,-50},{ 52,-16},{58,-16}}, color={0,0,127})); - connect(add1.y, PIDWitAutotuning.u_m) annotation (Line(points={{82,-10},{88, - -10},{88,-26},{46,-26},{46,-38},{-10,-38},{-10,-32}}, - color={0,0,127})); - connect(derivative1.k, derivative.k) annotation (Line(points={{82,-42},{92, - -42},{92,44},{80,44}}, - color={0,0,127})); - connect(derivative1.T, T.y) annotation (Line(points={{82,-46},{148,-46},{148, + connect(sub2.y, PIWitAutotuning.u_m) annotation (Line(points={{82,-10},{88,-10}, + {88,-26},{46,-26},{46,-38},{-10,-38},{-10,-32}}, color={0,0,127})); + connect(derivative2.k, derivative1.k) annotation (Line(points={{82,-42},{92,-42}, + {92,44},{80,44}}, color={0,0,127})); + connect(derivative2.T, T.y) annotation (Line(points={{82,-46},{148,-46},{148, -10},{158,-10}}, color={0,0,127})); - connect(derivative.u, sub.u1) annotation (Line(points={{80,36},{88,36},{88,20}, + connect(derivative1.u, sub1.u1) annotation (Line(points={{80,36},{88,36},{88,20}, {40,20},{40,86},{58,86}}, color={0,0,127})); - connect(derivative1.u, uniDel2.y) annotation (Line(points={{82,-50},{92,-50}, + connect(derivative2.u, uniDel2.y) annotation (Line(points={{82,-50},{92,-50}, {92,-66},{40,-66},{40,-20},{32,-20}}, color={0,0,127})); annotation ( experiment( diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Control.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Control.mos deleted file mode 100644 index 144b1c2a7a3..00000000000 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Control.mos +++ /dev/null @@ -1,6 +0,0 @@ -simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.Control", method="Cvode", tolerance=1e-06, stopTime=1.0, resultFile="Control"); -createPlot(id=1, position={75, 75, 1484, 920}, y={"control.u_m"}, range={0.0, 1.0, -1.5, 1.5}, grid=true, subPlot=101, colors={{28,108,200}}); -plotExpression(apply(Control[end].control.u_s-0.4), false, "Control[end].control.u_s-deaBan", 1); -plotExpression(apply(Control[end].control.u_s+0.4), false, "Control[end].control.u_s+deaBan", 1); -createPlot(id=1, position={75, 75, 1484, 920}, y={"control.y"}, range={0.0, 1.0, -1.0, 1.5}, grid=true, subPlot=102, colors={{28,108,200}}); - diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Controller.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Controller.mos new file mode 100644 index 00000000000..cac420534f8 --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Controller.mos @@ -0,0 +1,6 @@ +simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.Controller", method="Cvode", tolerance=1e-06, stopTime=1.0, resultFile="Controller"); +createPlot(id=1, position={75, 75, 1484, 920}, y={"controller.u_m"}, range={0.0, 1.0, -1.5, 1.5}, grid=true, subPlot=101, colors={{28,108,200}}); +plotExpression(apply(Controller[end].controller.u_s-0.4), false, "controller[end].controller.u_s-deaBan", 1); +plotExpression(apply(Controller[end].controller.u_s+0.4), false, "controller[end].controller.u_s+deaBan", 1); +createPlot(id=1, position={75, 75, 1484, 920}, y={"controller.y"}, range={0.0, 1.0, -1.0, 1.5}, grid=true, subPlot=102, colors={{28,108,200}}); + diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD.mos index 63fa9e0ecb0..462f2b38fbf 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD.mos @@ -1,5 +1,5 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIWithAutotuningAmigoFOTD", stopTime=10000, method="Cvode", tolerance=1e-06, resultFile="PIWithAutotuningAmigoFOTD"); -createPlot(id=1, position={95, 95, 1494, 1014}, y={"PID.u_s", "PID.u_m"}, range={0.0, 10000.0, -0.5, 1.5}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={95, 95, 1494, 1014}, y={"PIDWitAutotuning.u_s", "PIDWitAutotuning.u_m"}, range={0.0, 10000.0, -0.5, 1.5}, autoscale=false, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={95, 95, 1494, 1014}, y={"PI.u_s", "PI.u_m"}, range={0.0, 10000.0, -0.5, 1.5}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={95, 95, 1494, 1014}, y={"PIWitAutotuning.u_s", "PIWitAutotuning.u_m"}, range={0.0, 10000.0, -0.5, 1.5}, autoscale=false, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); createPlot(id=1, position={95, 95, 1494, 1014}, y={"resSig.y"}, range={0.0, 10000.0, -0.5, 1.5}, autoscale=false, grid=true, subPlot=103, colors={{28,108,200}}); From 6c9fd38837f2b14c0cdb4a50316dad2a5df73e11 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Fri, 12 Aug 2022 09:39:17 -0400 Subject: [PATCH 018/214] cleanup the models and remove the model inheritance in the validation models --- .../PIDWithAutotuning/AutoTuner/AMIGO/PI.mo | 4 ++-- .../PIDWithAutotuning/AutoTuner/AMIGO/PID.mo | 4 ++-- .../AutoTuner/AMIGO/PIDDerivativeTime.mo | 2 +- .../AutoTuner/AMIGO/PIDGain.mo | 2 +- .../AutoTuner/AMIGO/PIGain.mo | 2 +- .../AutoTuner/AMIGO/Validation/PI.mo | 18 +++++++++++++-- .../AutoTuner/AMIGO/Validation/PID.mo | 18 +++++++++++++-- .../AMIGO/Validation/PIDDerivativeTime.mo | 18 +++++++++++++-- .../AutoTuner/AMIGO/Validation/PIDGain.mo | 18 +++++++++++++-- .../AMIGO/Validation/PIDIntegralTime.mo | 18 +++++++++++++-- .../AutoTuner/AMIGO/Validation/PIGain.mo | 18 +++++++++++++-- .../AMIGO/Validation/PIIntegralTime.mo | 18 +++++++++++++-- .../PIDWithAutotuning/AutoTuner/package.mo | 2 +- .../PIDWithAutotuning/Relay/Controller.mo | 2 +- .../Relay/HalfPeriodRatio.mo | 22 +++++++++---------- .../Relay/Validation/Controller.mo | 17 ++++++++++++-- .../Relay/Validation/HalfPeriodRatio.mo | 18 +++++++++++++-- .../Relay/Validation/NormalizedTimeDelay.mo | 18 +++++++++++++-- .../Relay/Validation/OnOffPeriod.mo | 18 +++++++++++++-- .../Relay/Validation/ResponseProcess.mo | 18 +++++++++++++-- .../Validation/ControlProcessModel.mo | 17 ++++++++++++-- .../FirstOrderTimedelayed/Validation/Gain.mo | 17 ++++++++++++-- .../Validation/TimeConstantDelay.mo | 17 ++++++++++++-- .../SystemIdentification/package.mo | 2 +- .../Validation/PIDWithAutotuningAmigoFOTD.mo | 2 +- .../Utilities/PIDWithAutotuning/package.mo | 2 +- 26 files changed, 259 insertions(+), 53 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PI.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PI.mo index 452323d468e..36edf0b8472 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PI.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PI.mo @@ -64,7 +64,7 @@ First implementation

Please refer to the following block for detailed information:

Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.AutoTuner.AMIGO.PIGain

-

-Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.AutoTuner.AMIGO.PIIntergralTime

+

+Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.AutoTuner.AMIGO.PIIntegralTime

")); end PI; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo index c6ea0e53f50..a69635f05fa 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo @@ -74,8 +74,8 @@ First implementation

Please refer to the following block for detailed information:

Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.AutoTuner.AMIGO.PIDGain

-

-Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.AutoTuner.AMIGO.PIDIntergralTime

+

+Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.AutoTuner.AMIGO.PIDIntegralTime

Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.AutoTuner.AMIGO.PIDDerivativeTime

")); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo index 16ba4890b94..f873820b5b0 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo @@ -24,7 +24,7 @@ block PIDDerivativeTime "Identifies the derivative time of a PID controller" "Calculate the sum of the output of gai1 and the input time constant" annotation (Placement(transformation(extent={{-40,-60},{-20,-40}}))); CDL.Continuous.Divide div - "Calculate the output of mul divided by the output of add" + "Calculate the output of mul divided by the output of add" annotation (Placement(transformation(extent={{20,-10},{40,10}}))); equation connect(div.y, Td) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo index 4cf848a48b8..add042b8ece 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo @@ -16,7 +16,7 @@ block PIDGain "Identifies the control gain of a PID controller" "Connector for control gain signal" annotation (Placement(transformation(extent={{100,-10},{120,10}}))); Buildings.Controls.OBC.CDL.Continuous.Divide div1 - "Calculates the inverse of the input gain" + "Calculate the inverse of the input gain" annotation (Placement(transformation(extent={{-38,40},{-18,60}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.Constant const(final k=1) "Constant parameter" diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo index 321f70d6d4c..524f3c0e0d8 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo @@ -19,7 +19,7 @@ block PIGain "Identifies the control gain of a PI controller" "Calculates the sum of the time constant and the time delay" annotation (Placement(transformation(extent={{-60,-40},{-40,-20}}))); Buildings.Controls.OBC.CDL.Continuous.Add add2 - "Calculates the sume of the output of mul3 and the out put of div1" + "Calculates the sume of the output of mul3 and the output of div1" annotation (Placement(transformation(extent={{20,20},{40,40}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.Constant const1(final k=0.35) "Constant parameter 1" diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo index 253fa987922..84dd855aa34 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo @@ -1,6 +1,5 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Validation; model PI "Test model for PI" - extends Modelica.Icons.Example; Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PI pI "Calculate the parameters for a PI controller" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); @@ -281,7 +280,22 @@ equation Tolerance=1e-06), __Dymola_Commands( file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mos" "Simulate and plot"), - Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + 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)), Documentation(revisions="
    diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo index ae951f2faa7..5a33d4aa788 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo @@ -1,6 +1,5 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Validation; model PID "Test model for PID" - extends Modelica.Icons.Example; Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PID pID "Calculate the parameters for a PI controller" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); @@ -324,7 +323,22 @@ equation Tolerance=1e-06), __Dymola_Commands( file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mos" "Simulate and plot"), - Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + 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)), Documentation(revisions="
      diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mo index 0e3c006a38b..290d8ee03e5 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mo @@ -1,6 +1,5 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Validation; model PIDDerivativeTime "Test model for PIDDerivativeTime" - extends Modelica.Icons.Example; Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PIDDerivativeTime pIDDerivativeTime "Calculate the integral time for a PI controller" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); @@ -322,7 +321,22 @@ equation Tolerance=1e-06), __Dymola_Commands( file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mos" "Simulate and plot"), - Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + 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)), Documentation(revisions="
        diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mo index 2f732f7adad..a3773c0638a 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mo @@ -1,6 +1,5 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Validation; model PIDGain "Test model for PIDGain" - extends Modelica.Icons.Example; Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PIDGain pIDGain "Calculate the control gain for a PID controller" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); @@ -324,7 +323,22 @@ equation Tolerance=1e-06), __Dymola_Commands( file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mos" "Simulate and plot"), - Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + 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)), Documentation(revisions="
          diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mo index 1e14c3e1743..cd798f88085 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mo @@ -1,6 +1,5 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Validation; model PIDIntegralTime "Test model for PIDIntergralTime" - extends Modelica.Icons.Example; Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PIDIntegralTime pIDIntegralTime "Calculate the integral time for a PID controller" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); @@ -322,7 +321,22 @@ equation Tolerance=1e-06), __Dymola_Commands( file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mos" "Simulate and plot"), - Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + 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)), Documentation(revisions="
            diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mo index 41fdfffa959..0ed36fb3c16 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mo @@ -1,6 +1,5 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Validation; model PIGain "Test model for PIGain" - extends Modelica.Icons.Example; Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PIGain pIGain "Calculate the control gain for a PI controller" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); @@ -282,7 +281,22 @@ equation Tolerance=1e-06), __Dymola_Commands( file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mos" "Simulate and plot"), - Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + 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)), Documentation(revisions="
              diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mo index 2ffadb1dc9e..15379403d49 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mo @@ -1,6 +1,5 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Validation; model PIIntegralTime "Test model for PIIntergralTime" - extends Modelica.Icons.Example; Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PIIntegralTime pIIntegralTime "Calculate the integral time for a PI controller" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); @@ -263,7 +262,22 @@ equation Tolerance=1e-06), __Dymola_Commands( file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mos" "Simulate and plot"), - Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + 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)), Documentation(revisions="
                diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/package.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/package.mo index 27db01f309c..1509f504624 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/package.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/package.mo @@ -1,6 +1,6 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning; package AutoTuner "Package with blocks for tuning the PID parameters based on identified system models for the control process" annotation (Documentation(info=" -

                This package contains components related to system identification for the control process.

                +

                This package contains components related to system identification of the control process.

                ")); end AutoTuner; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo index 9d498627a5e..d5b78a4c73c 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo @@ -24,7 +24,7 @@ block Controller Buildings.Controls.OBC.CDL.Interfaces.RealOutput yErr "Control error signal" annotation (Placement(transformation(extent={{100,-10},{120,10}}))); - Buildings.Controls.OBC.CDL.Logical.OnOffController greMeaSet(bandwidth=deaBan*2, pre_y_start=true) + Buildings.Controls.OBC.CDL.Logical.OnOffController greMeaSet(final bandwidth=deaBan*2, pre_y_start=true) "Check if the measured value is larger than the reference, by default the relay control is On" annotation (Placement(transformation(extent={{-20,-10},{0,10}}))); Buildings.Controls.OBC.CDL.Continuous.Switch swi diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo index d1b7ae69307..260fd44ff35 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo @@ -33,40 +33,40 @@ block HalfPeriodRatio "Minimum value for the horizon length" annotation (Placement(transformation(extent={{-40,20},{-20,40}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler tOnSample(y_start=Buildings.Controls.OBC.CDL.Constants.eps) - "Sampling tOn when the tuning period ends" + "Sample tOn when the tuning period ends" annotation (Placement(transformation(extent={{-80,60},{-60,80}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler tOffSample(y_start=Buildings.Controls.OBC.CDL.Constants.eps) - "Sampling tOff when the tuning period ends" + "Sample tOff when the tuning period ends" annotation (Placement(transformation(extent={{-80,-60},{-60,-80}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samAddtOntOff - "Sampling the tmin when tmin is larger than 0" + "Sample the tmin when tmin is larger than 0" annotation (Placement(transformation(extent={{40,40},{60,20}}))); Buildings.Controls.OBC.CDL.Continuous.Greater tIncrease - "Checking if either tOn or tOff increases after they both becomes positive" + "Check if either tOn or tOff increases after they both becomes positive" annotation (Placement(transformation(extent={{40,-40},{60,-20}}))); Buildings.Controls.OBC.CDL.Continuous.Min mintOntOff - "The smaller one between tOn and tOff" + "Find the smaller one between tOn and tOff" annotation (Placement(transformation(extent={{-20,-80},{0,-60}}))); Buildings.Controls.OBC.CDL.Continuous.Max maxtOntOff - "The larger one between tOn and tOff" + "Find the larger one between tOn and tOff" annotation (Placement(transformation(extent={{-20,60},{0,80}}))); Buildings.Controls.OBC.CDL.Continuous.Divide halfPeriodRatioCal - "Calculating the half period ratio" + "Calculate the half period ratio" annotation (Placement(transformation(extent={{60,60},{80,80}}))); Buildings.Controls.OBC.CDL.Continuous.Add AddtOntOff - "The sum of tOn and tOff" + "Calculate the sum of tOn and tOff" annotation (Placement(transformation(extent={{-80,-40},{-60,-20}}))); Buildings.Controls.OBC.CDL.Continuous.Multiply mul - "Detects if the tOn or tOff changes after both of them are larger than 0" + "Detect if the tOn or tOff changes after both of them are larger than 0" annotation (Placement(transformation(extent={{-40,-40},{-20,-20}}))); Buildings.Controls.OBC.CDL.Continuous.Greater gretmaxtOntOff "Check if either tOn or tOff is larger than 0" annotation (Placement(transformation(extent={{0,10},{20,-10}}))); Buildings.Controls.OBC.CDL.Continuous.Less tDecrease - "Checking if either tOn or tOff decreases after they both becomes positive" + "Check if either tOn or tOff decreases after they both becomes positive" annotation (Placement(transformation(extent={{40,-90},{60,-70}}))); Buildings.Controls.OBC.CDL.Logical.Or tChanges - "Checks if tOn or tOff changes" + "Check if tOn or tOff changes" annotation (Placement(transformation(extent={{70,-40},{90,-20}}))); equation connect(tmin.u1, tOn) annotation (Line(points={{-82,36},{-94,36},{-94,60},{-120, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Controller.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Controller.mo index 829f73af342..5a4083f5d96 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Controller.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Controller.mo @@ -1,6 +1,5 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation; model Controller "Test model for Control" - extends Modelica.Icons.Example; Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Controller controller( yHig=1, yLow=0.5, @@ -21,7 +20,21 @@ equation Tolerance=1e-06), __Dymola_Commands( file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Controller.mos" "Simulate and plot"), - Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + 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)), Documentation(revisions="
                  diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mo index 58bb22c40e4..b77eb9e0426 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mo @@ -1,6 +1,5 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation; model HalfPeriodRatio "Test model for HalfPeriodRatio" - extends Modelica.Icons.Example; Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.HalfPeriodRatio halfPeriodRatio "Calculate the half period ratio" annotation (Placement(transformation(extent={{-8,-10},{12,10}}))); @@ -29,7 +28,22 @@ equation Tolerance=1e-06), __Dymola_Commands( file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mos" "Simulate and plot"), - Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + 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)), Documentation(revisions="
                    diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mo index c87f76cddc3..8c0b469c113 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mo @@ -1,6 +1,5 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation; model NormalizedTimeDelay "Test model for NormalizedTimeDelay" - extends Modelica.Icons.Example; Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.NormalizedTimeDelay normalizedTimeDelay(gamma=4) "Calculate the normalized time delay" annotation (Placement(transformation(extent={{-8,-10},{12,10}}))); @@ -116,7 +115,22 @@ equation Tolerance=1e-06), __Dymola_Commands( file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mos" "Simulate and plot"), - Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + 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)), Documentation(revisions="
                      diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mo index 62251bef290..9cd9130a59c 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mo @@ -1,6 +1,5 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation; model OnOffPeriod "Test model for OnOffPeriod" - extends Modelica.Icons.Example; Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.OnOffPeriod onOffPeriod "Calculate the length of the On period and the Off period" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); @@ -22,7 +21,22 @@ equation Tolerance=1e-06), __Dymola_Commands( file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mos" "Simulate and plot"), - Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + 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)), Documentation(revisions="
                        diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mo index 3e82e130c57..26694d95495 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mo @@ -1,6 +1,5 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation; model ResponseProcess "Test model for ResponseProcess" - extends Modelica.Icons.Example; Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.ResponseProcess responseProcess(yHig=1, yLow=0.2) "Calculate the length of the On period and the Off period" @@ -23,7 +22,22 @@ equation Tolerance=1e-06), __Dymola_Commands( file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mos" "Simulate and plot"), - Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + 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)), Documentation(revisions="
                          diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo index be0d620c088..cb4203d4be8 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo @@ -1,6 +1,5 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation; model ControlProcessModel "Test model for ControlProcessModel" - extends Modelica.Icons.Example; Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.ControlProcessModel controlProcessModel(yLow=0.1, deaBan=0.05) "Calculate the parameters of of a first-order model" @@ -290,7 +289,21 @@ equation Tolerance=1e-06), __Dymola_Commands( file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mos" "Simulate and plot"), - Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + 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)), Documentation(revisions="
                            diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mo index e72d8df4128..6983910753f 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mo @@ -1,6 +1,5 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation; model Gain "Test model for Gain" - extends Modelica.Icons.Example; Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Gain gain "Calculate the gain of a first-order model" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); @@ -41,7 +40,21 @@ equation Tolerance=1e-06), __Dymola_Commands( file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mos" "Simulate and plot"), - Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + 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)), Documentation(revisions="
                              diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mo index 98db63dee2b..64d6cad7e36 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mo @@ -1,6 +1,5 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation; model TimeConstantDelay "Test model for TimeConstantDelay" - extends Modelica.Icons.Example; Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.TimeConstantDelay timeConstantDelay(yLow=0.1) "Calculate the time constant and the time delay of a first-order model" @@ -221,7 +220,21 @@ equation Tolerance=1e-06), __Dymola_Commands( file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mos" "Simulate and plot"), - Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( + 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)), Documentation(revisions="
                                diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/package.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/package.mo index afb305262e1..04623eb9319 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/package.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/package.mo @@ -1,6 +1,6 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning; package SystemIdentification "Package with blocks for identifying a system model of control process" annotation (Documentation(info=" -

                                This package contains components related to system identification for the control process.

                                +

                                This package contains components related to system identification of the control process.

                                ")); end SystemIdentification; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithAutotuningAmigoFOTD.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithAutotuningAmigoFOTD.mo index f3b04b20ff0..273f09d53b2 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithAutotuningAmigoFOTD.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithAutotuningAmigoFOTD.mo @@ -87,7 +87,7 @@ equation Tolerance=1e-06, __Dymola_Algorithm="Cvode"), __Dymola_Commands( - file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD.mos" "Simulate and plot"), + file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithAutotuningAmigoFOTD.mos" "Simulate and plot"), Documentation( info="

                                diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/package.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/package.mo index c8838df0b21..4c0633dffc0 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/package.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/package.mo @@ -4,7 +4,7 @@ package PIDWithAutotuning "Package with blocks for PID autotuning" preferredView="info", Documentation( info=" -

                                This package contains components models to perform automatic tunning on PID controllers.

                                +

                                This package contains components to perform automatic tunning on PID controllers.

                                "), Icon( graphics={ From 52bde737dd085e741b1a2e6d1ea5968dade96821 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Fri, 12 Aug 2022 10:06:40 -0400 Subject: [PATCH 019/214] fix breaking links and add the full path of models --- .../AutoTuner/AMIGO/PIDDerivativeTime.mo | 10 +- .../AutoTuner/AMIGO/PIGain.mo | 136 ------------------ .../AutoTuner/AMIGO/Validation/PI.mo | 2 +- .../AutoTuner/AMIGO/Validation/PID.mo | 2 +- .../AMIGO/Validation/PIDDerivativeTime.mo | 2 +- .../AutoTuner/AMIGO/Validation/PIDGain.mo | 2 +- .../AMIGO/Validation/PIDIntegralTime.mo | 6 +- .../AutoTuner/AMIGO/Validation/PIGain.mo | 16 +-- .../AMIGO/Validation/PIIntegralTime.mo | 6 +- .../AutoTuner/AMIGO/package.order | 1 - .../PIDWithAutotuningAmigoFOTD.mo | 11 -- .../Relay/Validation/Controller.mo | 4 +- .../Relay/Validation/NormalizedTimeDelay.mo | 2 +- .../Validation/ControlProcessModel.mo | 4 +- .../Validation/TimeConstantDelay.mo | 2 +- 15 files changed, 29 insertions(+), 177 deletions(-) delete mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo index f873820b5b0..c59e4d11ef0 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo @@ -11,19 +11,19 @@ block PIDDerivativeTime "Identifies the derivative time of a PID controller" Buildings.Controls.OBC.CDL.Interfaces.RealOutput Td "Connector for time constant signal for the derivative term" annotation (Placement(transformation(extent={{100,-10},{120,10}}))); - CDL.Continuous.MultiplyByParameter gai1(k=0.3) + Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai1(k=0.3) "Calculate the product of 0.3 and the time delay" annotation (Placement(transformation(extent={{-80,-50},{-60,-30}}))); - CDL.Continuous.MultiplyByParameter gai2(k=0.5) + Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai2(k=0.5) "Calculate the product of 0.5 and the input time constant" annotation (Placement(transformation(extent={{-80,30},{-60,50}}))); - CDL.Continuous.Multiply mul + Buildings.Controls.OBC.CDL.Continuous.Multiply mul "Calculate the product of the output of gai2 and the input time constant" annotation (Placement(transformation(extent={{-40,0},{-20,20}}))); - CDL.Continuous.Add add + Buildings.Controls.OBC.CDL.Continuous.Add add "Calculate the sum of the output of gai1 and the input time constant" annotation (Placement(transformation(extent={{-40,-60},{-20,-40}}))); - CDL.Continuous.Divide div + Buildings.Controls.OBC.CDL.Continuous.Divide div "Calculate the output of mul divided by the output of add" annotation (Placement(transformation(extent={{20,-10},{40,10}}))); equation diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo deleted file mode 100644 index 524f3c0e0d8..00000000000 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo +++ /dev/null @@ -1,136 +0,0 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo; -block PIGain "Identifies the control gain of a PI controller" - Buildings.Controls.OBC.CDL.Interfaces.RealInput kp(min=1E-6) - "Connector of gain of a first order time-delayed model" - annotation (Placement(transformation(extent={{-140,40},{-100,80}}), - iconTransformation(extent={{-140,40},{-100,80}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput T(min=1E-6) - "Connector of time constant of a first order time-delayed model" - annotation (Placement(transformation(extent={{-140,-20},{-100,20}}), - iconTransformation(extent={{-140,-20},{-100,20}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput L(min=1E-6) - "Connector of time delay of a first order time-delayed model" - annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), - iconTransformation(extent={{-140,-80},{-100,-40}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealOutput k - "Connector for control gain signal" - annotation (Placement(transformation(extent={{100,-10},{120,10}}))); - Buildings.Controls.OBC.CDL.Continuous.Add add1 - "Calculates the sum of the time constant and the time delay" - annotation (Placement(transformation(extent={{-60,-40},{-40,-20}}))); - Buildings.Controls.OBC.CDL.Continuous.Add add2 - "Calculates the sume of the output of mul3 and the output of div1" - annotation (Placement(transformation(extent={{20,20},{40,40}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.Constant const1(final k=0.35) - "Constant parameter 1" - annotation (Placement(transformation(extent={{-10,-90},{10,-70}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.Constant const2(final k=0.15) - "Constant parameter 2" - annotation (Placement(transformation(extent={{-100,70},{-80,90}}))); - Buildings.Controls.OBC.CDL.Continuous.Divide div1 - "Calculate 0.15 divided by the gain" - annotation (Placement(transformation(extent={{-60,40},{-40,60}}))); - Buildings.Controls.OBC.CDL.Continuous.Divide div2 - "Calculate the output of mul2 divided by the output of mul1" - annotation (Placement(transformation(extent={{20,-40},{40,-60}}))); - Buildings.Controls.OBC.CDL.Continuous.Divide div3 - "Calculate the time constant divided by the output of mul2" - annotation (Placement(transformation(extent={{-20,20},{0,0}}))); - Buildings.Controls.OBC.CDL.Continuous.Multiply mul1 - "Calculate the square value of the sum of the time constant and the time delay" - annotation (Placement(transformation(extent={{-20,-40},{0,-20}}))); - Buildings.Controls.OBC.CDL.Continuous.Multiply mul2 - "Calculate the product of the gain and the time delay" - annotation (Placement(transformation(extent={{-60,10},{-40,30}}))); - Buildings.Controls.OBC.CDL.Continuous.Multiply mul3 - "Calculate the product of the output of sub and the output of div3" - annotation (Placement(transformation(extent={{20,-10},{40,10}}))); - Buildings.Controls.OBC.CDL.Continuous.Multiply mul4 - "Calculate the product of the time constant times the time delay" - annotation (Placement(transformation(extent={{-60,-80},{-40,-60}}))); - Buildings.Controls.OBC.CDL.Continuous.Subtract sub - "Calculate the difference between 0.35 and the output of div2" - annotation (Placement(transformation(extent={{50,-60},{70,-40}}))); - -equation - connect(div1.u2, kp) annotation (Line(points={{-62,44},{-80,44},{-80,60},{ - -120,60}}, color={0,0,127})); - connect(add2.u1, div1.y) annotation (Line(points={{18,36},{-20,36},{-20,50},{ - -38,50}}, color={0,0,127})); - connect(add1.u1, T) annotation (Line(points={{-62,-24},{-80,-24},{-80,0},{ - -120,0}}, color={0,0,127})); - connect(add1.u2, L) annotation (Line(points={{-62,-36},{-80,-36},{-80,-60},{ - -120,-60}}, color={0,0,127})); - connect(mul4.u1, T) annotation (Line(points={{-62,-64},{-90,-64},{-90,0},{-120, - 0}}, color={0,0,127})); - connect(mul4.u2, L) annotation (Line(points={{-62,-76},{-94,-76},{-94,-60},{-120, - -60}}, color={0,0,127})); - connect(mul1.u1, add1.y) annotation (Line(points={{-22,-24},{-32,-24},{-32, - -30},{-38,-30}}, color={0,0,127})); - connect(mul1.u2, add1.y) annotation (Line(points={{-22,-36},{-32,-36},{-32, - -30},{-38,-30}}, color={0,0,127})); - connect(div2.u2, mul1.y) annotation (Line(points={{18,-44},{8,-44},{8,-30},{2, - -30}}, color={0,0,127})); - connect(div2.u1, mul4.y) annotation (Line(points={{18,-56},{-20,-56},{-20,-70}, - {-38,-70}}, color={0,0,127})); - connect(mul2.u1, kp) annotation (Line(points={{-62,26},{-72,26},{-72,44},{-80, - 44},{-80,60},{-120,60}}, color={0,0,127})); - connect(mul2.u2, L) annotation (Line(points={{-62,14},{-72,14},{-72,-36},{-80, - -36},{-80,-60},{-120,-60}}, color={0,0,127})); - connect(div3.u2, mul2.y) annotation (Line(points={{-22,16},{-30,16},{-30,20}, - {-38,20}}, color={0,0,127})); - connect(div3.u1, T) annotation (Line(points={{-22,4},{-52,4},{-52,0},{-120,0}}, - color={0,0,127})); - connect(mul3.u1, div3.y) annotation (Line(points={{18,6},{10,6},{10,10},{2,10}}, color={0,0,127})); - connect(const2.y, div1.u1) annotation (Line(points={{-78,80},{-68,80},{-68,56}, - {-62,56}}, color={0,0,127})); - connect(add2.u2, mul3.y) annotation (Line(points={{18,24},{10,24},{10,16},{48, - 16},{48,0},{42,0}}, color={0,0,127})); - connect(add2.y, k) annotation (Line(points={{42,30},{60,30},{60,0},{110,0}}, - color={0,0,127})); - connect(div2.y, sub.u2) - annotation (Line(points={{42,-50},{44,-50},{44,-56},{ - 48,-56}}, color={0,0,127})); - connect(const1.y, sub.u1) annotation (Line(points={{12,-80},{46,-80},{46,-44}, - {48,-44}}, color={0,0,127})); - connect(sub.y, mul3.u2) annotation (Line(points={{72,-50},{80,-50},{80,-22},{ - 10,-22},{10,-6},{18,-6}}, color={0,0,127})); - annotation (defaultComponentName = "pIGain", - Icon(coordinateSystem(preserveAspectRatio=false), graphics={ - Rectangle( - extent={{-100,-100},{100,100}}, - lineColor={0,0,127}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid), - Text( - extent={{-154,148},{146,108}}, - textString="%name", - textColor={0,0,255})}), Diagram(coordinateSystem(preserveAspectRatio=false)), - Documentation(revisions=" -
                                  -
                                • -June 1, 2022, by Sen Huang:
                                  -First implementation
                                  -
                                • -
                                -", info=" -

                                This block calculates the control gain of a PI model, k

                                -

                                Main equations

                                -

                                -k = 0.15/kp + (0.35-LT/(L+T)2)(T/kp/L), -

                                -

                                -where kp is the gain of the first-order time-delayed model; -

                                -

                                T is the time constant of the first-order time-delayed model;

                                -

                                L is the time delay of the first-order time-delayed model.

                                -

                                Validation

                                -

                                -This block was validated analytically, see - -Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Validation.PIGain. -

                                -

                                References

                                -

                                Garpinger, Olof, Tore Hägglund, and Karl Johan Åström (2014) "Performance and robustness trade-offs in PID control." Journal of Process Control 24.5 (2014): 568-577.

                                -")); -end PIGain; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo index 84dd855aa34..ac49f31d227 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo @@ -3,7 +3,7 @@ model PI "Test model for PI" Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PI pI "Calculate the parameters for a PI controller" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - CDL.Continuous.Sources.TimeTable ReferenceData(table=[0,1,0.5,0.3,0.343,0.469; + Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable ReferenceData(table=[0,1,0.5,0.3,0.343,0.469; 0.002,1.002,0.501,0.301,0.342,0.47; 0.004,1.004,0.502,0.301,0.341,0.471; 0.006,1.006,0.503,0.302,0.341,0.472; 0.008,1.008,0.504,0.302,0.34,0.473; 0.01,1.01,0.505,0.303,0.339,0.473; 0.012,1.012,0.506,0.304,0.339,0.474; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo index 5a33d4aa788..615c35968ed 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo @@ -3,7 +3,7 @@ model PID "Test model for PID" Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PID pID "Calculate the parameters for a PI controller" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - CDL.Continuous.Sources.TimeTable ReferenceData(table=[0,1,0.5,0.3,0.95,0.446, + Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable ReferenceData(table=[0,1,0.5,0.3,0.95,0.446, 0.127; 0.002,1.002,0.501,0.301,0.948,0.447,0.127; 0.004,1.004,0.502, 0.301,0.946,0.447,0.128; 0.006,1.006,0.503,0.302,0.944,0.448,0.128; 0.008,1.008,0.504,0.302,0.942,0.449,0.128; 0.01,1.01,0.505,0.303,0.941, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mo index 290d8ee03e5..c6c624411ae 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mo @@ -3,7 +3,7 @@ model PIDDerivativeTime "Test model for PIDDerivativeTime" Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PIDDerivativeTime pIDDerivativeTime "Calculate the integral time for a PI controller" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - CDL.Continuous.Sources.TimeTable ReferenceData(table=[0,1,0.5,0.3,0.95,0.446, + Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable ReferenceData(table=[0,1,0.5,0.3,0.95,0.446, 0.127; 0.002,1.002,0.501,0.301,0.948,0.447,0.127; 0.004,1.004,0.502, 0.301,0.946,0.447,0.128; 0.006,1.006,0.503,0.302,0.944,0.448,0.128; 0.008,1.008,0.504,0.302,0.942,0.449,0.128; 0.01,1.01,0.505,0.303,0.941, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mo index a3773c0638a..626bdd8be83 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mo @@ -3,7 +3,7 @@ model PIDGain "Test model for PIDGain" Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PIDGain pIDGain "Calculate the control gain for a PID controller" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - CDL.Continuous.Sources.TimeTable ReferenceData(table=[0,1,0.5,0.3,0.95,0.446, + Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable ReferenceData(table=[0,1,0.5,0.3,0.95,0.446, 0.127; 0.002,1.002,0.501,0.301,0.948,0.447,0.127; 0.004,1.004,0.502, 0.301,0.946,0.447,0.128; 0.006,1.006,0.503,0.302,0.944,0.448,0.128; 0.008,1.008,0.504,0.302,0.942,0.449,0.128; 0.01,1.01,0.505,0.303,0.941, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mo index cd798f88085..18317b06acd 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mo @@ -3,7 +3,7 @@ model PIDIntegralTime "Test model for PIDIntergralTime" Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PIDIntegralTime pIDIntegralTime "Calculate the integral time for a PID controller" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - CDL.Continuous.Sources.TimeTable ReferenceData(table=[0,1,0.5,0.3,0.95,0.446, + Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable ReferenceData(table=[0,1,0.5,0.3,0.95,0.446, 0.127; 0.002,1.002,0.501,0.301,0.948,0.447,0.127; 0.004,1.004,0.502, 0.301,0.946,0.447,0.128; 0.006,1.006,0.503,0.302,0.944,0.448,0.128; 0.008,1.008,0.504,0.302,0.942,0.449,0.128; 0.01,1.01,0.505,0.303,0.941, @@ -348,8 +348,8 @@ First implementation
                                ", info="

                                Validation test for the block - -Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.AutoTuner.AMIGO.PIDIntergralTime. + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIDIntegralTime.

                                The reference data is imported from a raw data that is generated with a Python implementation of this block. diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mo index 0ed36fb3c16..e2efdb8e2d3 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mo @@ -1,8 +1,5 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Validation; model PIGain "Test model for PIGain" - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PIGain pIGain - "Calculate the control gain for a PI controller" - annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable ReferenceData(table=[0, 1,0.5,0.3,0.343,0.469; 0.002,1.002,0.501,0.301,0.342,0.47; 0.004,1.004, 0.502,0.301,0.341,0.471; 0.006,1.006,0.503,0.302,0.341,0.472; 0.008, @@ -268,13 +265,16 @@ model PIGain "Test model for PIGain" "Data for validating the PIgain block" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PIGain + pIGain "Calculate the gain for a PI controller" + annotation (Placement(transformation(extent={{-8,-10},{12,10}}))); equation - connect(pIGain.kp, ReferenceData.y[1]) annotation (Line(points={{-12,6},{-22, - 6},{-22,0},{-38,0}}, color={0,0,127})); + connect(pIGain.kp, ReferenceData.y[1]) annotation (Line(points={{-10,6},{-26, + 6},{-26,0},{-38,0}}, color={0,0,127})); connect(pIGain.T, ReferenceData.y[2]) - annotation (Line(points={{-12,0},{-38,0}}, color={0,0,127})); - connect(pIGain.L, ReferenceData.y[3]) annotation (Line(points={{-12,-6},{-22, - -6},{-22,0},{-38,0}}, color={0,0,127})); + annotation (Line(points={{-10,0},{-38,0}}, color={0,0,127})); + connect(pIGain.L, ReferenceData.y[3]) annotation (Line(points={{-10,-6},{-26, + -6},{-26,0},{-38,0}}, color={0,0,127})); annotation ( experiment( StopTime=1.0, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mo index 15379403d49..1c64b82aa66 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mo @@ -3,7 +3,7 @@ model PIIntegralTime "Test model for PIIntergralTime" Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PIIntegralTime pIIntegralTime "Calculate the integral time for a PI controller" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - CDL.Continuous.Sources.TimeTable ReferenceData(table=[0,1,0.5,0.3,0.343,0.469; + Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable ReferenceData(table=[0,1,0.5,0.3,0.343,0.469; 0.002,1.002,0.501,0.301,0.342,0.47; 0.004,1.004,0.502,0.301,0.341,0.471; 0.006,1.006,0.503,0.302,0.341,0.472; 0.008,1.008,0.504,0.302,0.34,0.473; 0.01,1.01,0.505,0.303,0.339,0.473; 0.012,1.012,0.506,0.304,0.339,0.474; @@ -289,8 +289,8 @@ First implementation
                                ", info="

                                Validation test for the block - -Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.AutoTuner.AMIGO.PIIntergralTime. + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIIntegralTime.

                                The reference data is imported from a raw data that is generated with a Python implementation of this block. diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.order index ad3bc9d6f47..7134e57ccbe 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.order +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.order @@ -1,4 +1,3 @@ -PIGain PIIntegralTime PI PIDGain diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/PIDWithAutotuningAmigoFOTD.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/PIDWithAutotuningAmigoFOTD.mo index b8ecb92e54c..f8ce6ec7ee3 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/PIDWithAutotuningAmigoFOTD.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/PIDWithAutotuningAmigoFOTD.mo @@ -60,7 +60,6 @@ block PIDWithAutotuningAmigoFOTD Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samTd(y_start=Td_start) if with_D "Recording the derivative time" annotation (Placement(transformation(extent={{-40,-60},{-20,-80}}))); - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.ControlProcessModel controlProcessModel( yHig=yHig - setPoint, @@ -82,16 +81,6 @@ block PIDWithAutotuningAmigoFOTD "Simulation time" annotation (Placement(transformation(extent={{80,60},{60,80}}))); - CDL.Interfaces.RealInput u_m1 - "Connector for measurement input signal" - annotation (Placement(transformation(origin={0,-220},extent={{20,-20},{-20,20}},rotation=270),iconTransformation(extent={{20,-20},{-20,20}},rotation=270,origin={0,-120}))); - CDL.Interfaces.RealOutput y1 - "Connector for actuator output signal" - annotation (Placement(transformation(extent={{220,-20},{260,20}}),iconTransformation(extent={{100,-20}, - {140,20}}))); - CDL.Interfaces.BooleanInput trigger1 - "Resets the controller output when trigger becomes true" - annotation (Placement(transformation(extent={{-20,-20},{20,20}},rotation=90,origin={-160,-220}),iconTransformation(extent={{-20,-20},{20,20}},rotation=90,origin={-60,-120}))); protected final parameter Boolean with_I=controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PI or controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PID "Boolean flag to enable integral action" diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Controller.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Controller.mo index 5a4083f5d96..d14a5138654 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Controller.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Controller.mo @@ -46,8 +46,8 @@ First implementation
                                ", info="

                                Validation test for the block - -Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Control. + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Controller.

                                ")); end Controller; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mo index 8c0b469c113..b1fd5f1c380 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mo @@ -3,7 +3,7 @@ model NormalizedTimeDelay "Test model for NormalizedTimeDelay" Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.NormalizedTimeDelay normalizedTimeDelay(gamma=4) "Calculate the normalized time delay" annotation (Placement(transformation(extent={{-8,-10},{12,10}}))); - CDL.Continuous.Sources.TimeTable ReferenceData(table=[0,0,2.051; 0.002,0, + Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable ReferenceData(table=[0,0,2.051; 0.002,0, 2.051; 0.004,0,2.051; 0.006,0,2.051; 0.008,0,2.051; 0.01,0,2.051; 0.012, 0,2.051; 0.014,0,2.051; 0.016,0,2.051; 0.018,0,2.051; 0.02,0,2.051; 0.022,0,2.051; 0.024,0,2.051; 0.026,0,2.051; 0.028,0,2.051; 0.03,0, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo index cb4203d4be8..b0a14bb4f4e 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo @@ -4,7 +4,7 @@ model ControlProcessModel "Test model for ControlProcessModel" controlProcessModel(yLow=0.1, deaBan=0.05) "Calculate the parameters of of a first-order model" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - CDL.Continuous.Sources.TimeTable ReferenceData(table=[0,1,1,1,0.3,1,1; 0.002, + Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable ReferenceData(table=[0,1,1,1,0.3,1,1; 0.002, 1,1,1,0.3,1,1; 0.004,1,1,1,0.3,1,1; 0.006,1,1,1,0.3,1,1; 0.008,1,1,1, 0.3,1,1; 0.01,1,1,1,0.3,1,1; 0.012,1,1,1,0.3,1,1; 0.014,1,1,1,0.3,1,1; 0.016,1,1,1,0.3,1,1; 0.018,1,1,1,0.3,1,1; 0.02,1,1,1,0.3,1,1; 0.022,1,1, @@ -189,7 +189,7 @@ model ControlProcessModel "Test model for ControlProcessModel" extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) "Data for validating the controlProcessModel block" annotation (Placement(transformation(extent={{-80,-10},{-60,10}}))); - CDL.Logical.Sources.TimeTable ReferenceBoolData(table=[0,0,0; 0.002,0,0; + Buildings.Controls.OBC.CDL.Logical.Sources.TimeTable ReferenceBoolData(table=[0,0,0; 0.002,0,0; 0.004,0,0; 0.006,0,0; 0.008,0,0; 0.01,0,0; 0.012,0,0; 0.014,0,0; 0.016, 0,0; 0.018,0,0; 0.02,0,0; 0.022,0,0; 0.024,0,0; 0.026,0,0; 0.028,0,0; 0.03,0,0; 0.032,0,0; 0.034,0,0; 0.036,0,0; 0.038,0,0; 0.04,0,0; 0.042,0, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mo index 64d6cad7e36..0dc31330e8c 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mo @@ -4,7 +4,7 @@ model TimeConstantDelay "Test model for TimeConstantDelay" timeConstantDelay(yLow=0.1) "Calculate the time constant and the time delay of a first-order model" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - CDL.Continuous.Sources.TimeTable ReferenceData(table=[0,1,1,0.3,0.754,0.226; + Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable ReferenceData(table=[0,1,1,0.3,0.754,0.226; 0.002,1,1,0.3,0.754,0.226; 0.004,1,1,0.3,0.754,0.226; 0.006,1,1,0.3, 0.754,0.226; 0.008,1,1,0.3,0.754,0.226; 0.01,1,1,0.3,0.754,0.226; 0.012, 1,1,0.3,0.754,0.226; 0.014,1,1,0.3,0.754,0.226; 0.016,1,1,0.3,0.754, From 2922afaf2aa282eba62c39879043320f85305369 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Fri, 12 Aug 2022 10:24:00 -0400 Subject: [PATCH 020/214] update the package order --- .../AutoTuner/AMIGO/PIGain.mo | 136 ++++++++++++++++++ .../AutoTuner/AMIGO/package.order | 1 + 2 files changed, 137 insertions(+) create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo new file mode 100644 index 00000000000..524f3c0e0d8 --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo @@ -0,0 +1,136 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo; +block PIGain "Identifies the control gain of a PI controller" + Buildings.Controls.OBC.CDL.Interfaces.RealInput kp(min=1E-6) + "Connector of gain of a first order time-delayed model" + annotation (Placement(transformation(extent={{-140,40},{-100,80}}), + iconTransformation(extent={{-140,40},{-100,80}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealInput T(min=1E-6) + "Connector of time constant of a first order time-delayed model" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}), + iconTransformation(extent={{-140,-20},{-100,20}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealInput L(min=1E-6) + "Connector of time delay of a first order time-delayed model" + annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), + iconTransformation(extent={{-140,-80},{-100,-40}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput k + "Connector for control gain signal" + annotation (Placement(transformation(extent={{100,-10},{120,10}}))); + Buildings.Controls.OBC.CDL.Continuous.Add add1 + "Calculates the sum of the time constant and the time delay" + annotation (Placement(transformation(extent={{-60,-40},{-40,-20}}))); + Buildings.Controls.OBC.CDL.Continuous.Add add2 + "Calculates the sume of the output of mul3 and the output of div1" + annotation (Placement(transformation(extent={{20,20},{40,40}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant const1(final k=0.35) + "Constant parameter 1" + annotation (Placement(transformation(extent={{-10,-90},{10,-70}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant const2(final k=0.15) + "Constant parameter 2" + annotation (Placement(transformation(extent={{-100,70},{-80,90}}))); + Buildings.Controls.OBC.CDL.Continuous.Divide div1 + "Calculate 0.15 divided by the gain" + annotation (Placement(transformation(extent={{-60,40},{-40,60}}))); + Buildings.Controls.OBC.CDL.Continuous.Divide div2 + "Calculate the output of mul2 divided by the output of mul1" + annotation (Placement(transformation(extent={{20,-40},{40,-60}}))); + Buildings.Controls.OBC.CDL.Continuous.Divide div3 + "Calculate the time constant divided by the output of mul2" + annotation (Placement(transformation(extent={{-20,20},{0,0}}))); + Buildings.Controls.OBC.CDL.Continuous.Multiply mul1 + "Calculate the square value of the sum of the time constant and the time delay" + annotation (Placement(transformation(extent={{-20,-40},{0,-20}}))); + Buildings.Controls.OBC.CDL.Continuous.Multiply mul2 + "Calculate the product of the gain and the time delay" + annotation (Placement(transformation(extent={{-60,10},{-40,30}}))); + Buildings.Controls.OBC.CDL.Continuous.Multiply mul3 + "Calculate the product of the output of sub and the output of div3" + annotation (Placement(transformation(extent={{20,-10},{40,10}}))); + Buildings.Controls.OBC.CDL.Continuous.Multiply mul4 + "Calculate the product of the time constant times the time delay" + annotation (Placement(transformation(extent={{-60,-80},{-40,-60}}))); + Buildings.Controls.OBC.CDL.Continuous.Subtract sub + "Calculate the difference between 0.35 and the output of div2" + annotation (Placement(transformation(extent={{50,-60},{70,-40}}))); + +equation + connect(div1.u2, kp) annotation (Line(points={{-62,44},{-80,44},{-80,60},{ + -120,60}}, color={0,0,127})); + connect(add2.u1, div1.y) annotation (Line(points={{18,36},{-20,36},{-20,50},{ + -38,50}}, color={0,0,127})); + connect(add1.u1, T) annotation (Line(points={{-62,-24},{-80,-24},{-80,0},{ + -120,0}}, color={0,0,127})); + connect(add1.u2, L) annotation (Line(points={{-62,-36},{-80,-36},{-80,-60},{ + -120,-60}}, color={0,0,127})); + connect(mul4.u1, T) annotation (Line(points={{-62,-64},{-90,-64},{-90,0},{-120, + 0}}, color={0,0,127})); + connect(mul4.u2, L) annotation (Line(points={{-62,-76},{-94,-76},{-94,-60},{-120, + -60}}, color={0,0,127})); + connect(mul1.u1, add1.y) annotation (Line(points={{-22,-24},{-32,-24},{-32, + -30},{-38,-30}}, color={0,0,127})); + connect(mul1.u2, add1.y) annotation (Line(points={{-22,-36},{-32,-36},{-32, + -30},{-38,-30}}, color={0,0,127})); + connect(div2.u2, mul1.y) annotation (Line(points={{18,-44},{8,-44},{8,-30},{2, + -30}}, color={0,0,127})); + connect(div2.u1, mul4.y) annotation (Line(points={{18,-56},{-20,-56},{-20,-70}, + {-38,-70}}, color={0,0,127})); + connect(mul2.u1, kp) annotation (Line(points={{-62,26},{-72,26},{-72,44},{-80, + 44},{-80,60},{-120,60}}, color={0,0,127})); + connect(mul2.u2, L) annotation (Line(points={{-62,14},{-72,14},{-72,-36},{-80, + -36},{-80,-60},{-120,-60}}, color={0,0,127})); + connect(div3.u2, mul2.y) annotation (Line(points={{-22,16},{-30,16},{-30,20}, + {-38,20}}, color={0,0,127})); + connect(div3.u1, T) annotation (Line(points={{-22,4},{-52,4},{-52,0},{-120,0}}, + color={0,0,127})); + connect(mul3.u1, div3.y) annotation (Line(points={{18,6},{10,6},{10,10},{2,10}}, color={0,0,127})); + connect(const2.y, div1.u1) annotation (Line(points={{-78,80},{-68,80},{-68,56}, + {-62,56}}, color={0,0,127})); + connect(add2.u2, mul3.y) annotation (Line(points={{18,24},{10,24},{10,16},{48, + 16},{48,0},{42,0}}, color={0,0,127})); + connect(add2.y, k) annotation (Line(points={{42,30},{60,30},{60,0},{110,0}}, + color={0,0,127})); + connect(div2.y, sub.u2) + annotation (Line(points={{42,-50},{44,-50},{44,-56},{ + 48,-56}}, color={0,0,127})); + connect(const1.y, sub.u1) annotation (Line(points={{12,-80},{46,-80},{46,-44}, + {48,-44}}, color={0,0,127})); + connect(sub.y, mul3.u2) annotation (Line(points={{72,-50},{80,-50},{80,-22},{ + 10,-22},{10,-6},{18,-6}}, color={0,0,127})); + annotation (defaultComponentName = "pIGain", + Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-154,148},{146,108}}, + textString="%name", + textColor={0,0,255})}), Diagram(coordinateSystem(preserveAspectRatio=false)), + Documentation(revisions=" +
                                  +
                                • +June 1, 2022, by Sen Huang:
                                  +First implementation
                                  +
                                • +
                                +", info=" +

                                This block calculates the control gain of a PI model, k

                                +

                                Main equations

                                +

                                +k = 0.15/kp + (0.35-LT/(L+T)2)(T/kp/L), +

                                +

                                +where kp is the gain of the first-order time-delayed model; +

                                +

                                T is the time constant of the first-order time-delayed model;

                                +

                                L is the time delay of the first-order time-delayed model.

                                +

                                Validation

                                +

                                +This block was validated analytically, see + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Validation.PIGain. +

                                +

                                References

                                +

                                Garpinger, Olof, Tore Hägglund, and Karl Johan Åström (2014) "Performance and robustness trade-offs in PID control." Journal of Process Control 24.5 (2014): 568-577.

                                +")); +end PIGain; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.order index 7134e57ccbe..ad3bc9d6f47 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.order +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.order @@ -1,3 +1,4 @@ +PIGain PIIntegralTime PI PIDGain From 39feaff1d5fa29178cdb1cdd279dc16e77c1db14 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Fri, 12 Aug 2022 10:26:41 -0400 Subject: [PATCH 021/214] remove the junk files --- .../AutoTuner/FirstOrderTimedelayed/Gain.mo | 119 -------------- .../TimeConstantDelay.mo | 153 ------------------ .../FirstOrderTimedelayed/Validation/Gain.mo | 58 ------- .../Validation/TimeConstantDelay.mo | 59 ------- .../Validation/package.mo | 32 ---- .../Validation/package.order | 2 - .../FirstOrderTimedelayed/package.order | 3 - .../BaseClasses/PIDWithRelay.mo | 140 ---------------- .../BaseClasses/package.order | 1 - .../ModelIdentification/Control.mo | 91 ----------- .../ModelIdentification/HalfPeriodRatio.mo | 109 ------------- .../ModelIdentification/ResponseProcess.mo | 115 ------------- .../ModelIdentification/Validation/Control.mo | 41 ----- .../Validation/HalfPeriodRatio.mo | 46 ------ .../Validation/ResponseProcess.mo | 41 ----- .../ModelIdentification/Validation/package.mo | 32 ---- .../Validation/package.order | 3 - .../ModelIdentification/package.order | 4 - 18 files changed, 1049 deletions(-) delete mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/FirstOrderTimedelayed/Gain.mo delete mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/FirstOrderTimedelayed/TimeConstantDelay.mo delete mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/FirstOrderTimedelayed/Validation/Gain.mo delete mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/FirstOrderTimedelayed/Validation/TimeConstantDelay.mo delete mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/FirstOrderTimedelayed/Validation/package.mo delete mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/FirstOrderTimedelayed/Validation/package.order delete mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/FirstOrderTimedelayed/package.order delete mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/BaseClasses/PIDWithRelay.mo delete mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/BaseClasses/package.order delete mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/Control.mo delete mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/HalfPeriodRatio.mo delete mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/ResponseProcess.mo delete mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/Validation/Control.mo delete mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/Validation/HalfPeriodRatio.mo delete mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/Validation/ResponseProcess.mo delete mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/Validation/package.mo delete mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/Validation/package.order delete mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/package.order diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/FirstOrderTimedelayed/Gain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/FirstOrderTimedelayed/Gain.mo deleted file mode 100644 index 852cf507f8e..00000000000 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/FirstOrderTimedelayed/Gain.mo +++ /dev/null @@ -1,119 +0,0 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.FirstOrderTimedelayed; -block Gain "Identifies the gain of a first order time delayed model" - parameter Real yHig(min=0) = 1 - "Higher value for the output"; - parameter Real yLow(min=0) = 0.5 - "Lower value for the output"; - Buildings.Controls.OBC.CDL.Interfaces.RealInput u - "Connector for the response signal of a relay controller" - annotation (Placement(transformation(extent={{-140,60},{-100,100}}), - iconTransformation(extent={{-140,60},{-100,100}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput tOn - "Connector for a signal of the length for the On period" - annotation (Placement(transformation(extent={{-140,-20},{-100,20}}), - iconTransformation(extent={{-140,-20},{-100,20}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput tOff - "Connector for a signal of the length for the Off period" - annotation (Placement(transformation(extent={{-140,-100},{-100,-60}}), - iconTransformation(extent={{-140,-100},{-100,-60}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealOutput k - "Connector for a output signal of the gain" - annotation (Placement(transformation(extent={{100,-10},{120,10}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.Constant highRealyOuput(k=yHig) - "Higher value for the output" - annotation (Placement(transformation(extent={{-80,20},{-60,40}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.Constant lowRealyOuput(k=yLow) - "Lower value for the output" - annotation (Placement(transformation(extent={{-80,-40},{-60,-20}}))); - Buildings.Controls.OBC.CDL.Continuous.Multiply mul2 "product of tOn and yHig" - annotation (Placement(transformation(extent={{-40,10},{-20,30}}))); - Buildings.Controls.OBC.CDL.Continuous.Multiply mul1 - "product of tOff and yLow" - annotation (Placement(transformation(extent={{-40,-60},{-20,-40}}))); - Buildings.Controls.OBC.CDL.Continuous.Add Iu - "the integral of the relay output" - annotation (Placement(transformation(extent={{10,-40},{30,-20}}))); - Buildings.Controls.OBC.CDL.Continuous.IntegratorWithReset Iy - "the integral of the process output" - annotation (Placement(transformation(extent={{-42,70},{-22,90}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.Constant referenceRelayOutpit(k=0) - "reference value of the relay control output" - annotation (Placement(transformation(extent={{-80,50},{-60,70}}))); - Buildings.Controls.OBC.CDL.Continuous.Divide divIyIu "calculates the gain" - annotation (Placement(transformation(extent={{60,-10},{80,10}}))); - Buildings.Controls.OBC.CDL.Logical.Sources.Constant noReset(k=false) - "disable the reset of Iy" - annotation (Placement(transformation(extent={{28,40},{8,60}}))); - Buildings.Controls.OBC.CDL.Interfaces.BooleanInput trigger - "Connector for trigger signal" - annotation (Placement(transformation( - extent={{20,-20},{-20,20}}, - rotation=-90, - origin={0,-120}), iconTransformation( - extent={{20,-20},{-20,20}}, - rotation=-90, - origin={0,-120}))); - Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler sampIu(y_start=1) - "sampling Iu when the tuning period ends" - annotation (Placement(transformation(extent={{40,-40},{60,-20}}))); -equation - connect(mul2.y, Iu.u1) annotation (Line(points={{-18,20},{0,20},{0,-24},{8,-24}}, - color={0,0,127})); - connect(mul1.y, Iu.u2) annotation (Line(points={{-18,-50},{0,-50},{0,-36},{8,-36}}, - color={0,0,127})); - connect(Iy.u, u) annotation (Line(points={{-44,80},{-120,80}}, - color={0,0,127})); - connect(referenceRelayOutpit.y, Iy.y_reset_in) annotation (Line(points={{-58,60}, - {-52,60},{-52,72},{-44,72}}, color={0,0,127})); - connect(divIyIu.u1, Iy.y) annotation (Line(points={{58,6},{40,6},{40,80},{-20, - 80}}, color={0,0,127})); - connect(divIyIu.y, k) annotation (Line(points={{82,0},{110,0}}, color={0,0,127})); - connect(noReset.y, Iy.trigger) annotation (Line(points={{6,50},{-32,50},{-32,68}}, color={255,0,255})); - connect(mul1.u2, tOff) annotation (Line(points={{-42,-56},{-80,-56},{-80,-80}, - {-120,-80}}, color={0,0,127})); - connect(mul1.u1, lowRealyOuput.y) annotation (Line(points={{-42,-44},{-52,-44}, - {-52,-30},{-58,-30}}, color={0,0,127})); - connect(highRealyOuput.y, mul2.u1) annotation (Line(points={{-58,30},{-52,30}, - {-52,26},{-42,26}}, color={0,0,127})); - connect(mul2.u2, tOn) annotation (Line(points={{-42,14},{-52,14},{-52,0},{-120,0}}, color={0,0,127})); - connect(sampIu.u, Iu.y) annotation (Line(points={{38,-30},{32,-30}}, color={0,0,127})); - connect(sampIu.y, divIyIu.u2) annotation (Line(points={{62,-30},{70,-30},{70,-14}, - {40,-14},{40,-6},{58,-6}}, color={0,0,127})); - connect(sampIu.trigger, trigger) annotation (Line(points={{50,-42},{50,-80},{0, - -80},{0,-120}}, color={255,0,255})); - annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ - Rectangle( - extent={{-100,-100},{100,100}}, - lineColor={0,0,127}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid), - Text( - extent={{-154,148},{146,108}}, - textString="%name", - textColor={0,0,255})}), Diagram(coordinateSystem(preserveAspectRatio=false)), - Documentation(revisions=" -
                                  -
                                • -June 1, 2022, by Sen Huang:
                                  -First implementation
                                  -
                                • -
                                -", info=" -

                                This block calculates the gain of a first-order time-delayed model, k, by

                                -

                                k = Iy/Iu

                                -

                                where Iy and Iu are the integral of the process output and the integral of the relay output, respectively.

                                -

                                Iy is calculated by

                                -

                                Iy = ∫ u(t) dt;

                                -

                                where u is the process output.

                                -

                                Iu is calculated by

                                -

                                Iu = ton yhig + toff ylow;

                                -

                                where yhig and ylow are the higher value and the lower value of the relay control output, respectively.

                                -

                                ton and toff are the length of the On period and the Off period, respectively.

                                -

                                References

                                -

                                -Josefin Berner (2017). -\"Automatic Controller Tuning using Relay-based Model Identification.\" -Department of Automatic Control, Lund Institute of Technology, Lund University. -

                                -")); -end Gain; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/FirstOrderTimedelayed/TimeConstantDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/FirstOrderTimedelayed/TimeConstantDelay.mo deleted file mode 100644 index 023a6b4c0d5..00000000000 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/FirstOrderTimedelayed/TimeConstantDelay.mo +++ /dev/null @@ -1,153 +0,0 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.FirstOrderTimedelayed; -block TimeConstantDelay - "Calculates the time constant and time delay of a first order time delayed model" - parameter Real yHig(min=0,max=1) = 1 - "Higher value for the output"; - parameter Real yLow(min=0,max=1) = 0.5 - "Lower value for the output"; - parameter Real deaBan(min=0) = 0.5 - "Deadband for holding the output value"; - Buildings.Controls.OBC.CDL.Interfaces.RealInput tOn - "Connector for a signal of the length for the On period" - annotation (Placement(transformation(extent={{-140,40},{-100,80}}), - iconTransformation(extent={{-140,40},{-100,80}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput k - "Connector for the signal of the gain" - annotation (Placement(transformation(extent={{-140,-20},{-100,20}}), - iconTransformation(extent={{-140,-20},{-100,20}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput ratioLT - "Connector for the signal of the ratio between the time constant and the time delay of a first order time delay model" - annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), - iconTransformation(extent={{-140,-80},{-100,-40}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealOutput T - "Connector for a output signal of the time constant" - annotation (Placement(transformation(extent={{100,60},{120,80}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealOutput L - "Connector for a output signal of the time constant" - annotation (Placement(transformation(extent={{100,-70},{120,-50}}))); - Buildings.Controls.OBC.CDL.Continuous.Abs absk "Absoulte value of the gain" - annotation (Placement(transformation(extent={{-80,-10},{-60,10}}))); - Buildings.Controls.OBC.CDL.Continuous.Exp exp - "exponential value of the ratio between time constant and the time delay" - annotation (Placement(transformation(extent={{-80,-70},{-60,-50}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.Constant yHigSig(k=yHig) - "Higher value for the output" - annotation (Placement(transformation(extent={{-80,30},{-60,50}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.Constant yLowSig(k=yLow) - "Lower value for the output" - annotation (Placement(transformation(extent={{-40,30},{-20,50}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.Constant relayDeaBan(k=deaBan) - "Dead band of the relay controller" - annotation (Placement(transformation(extent={{0,30},{20,50}}))); - Buildings.Controls.OBC.CDL.Continuous.Divide div1 - "Quotient of dead band Divided by the absolute value of k" - annotation (Placement(transformation(extent={{0,-30},{20,-10}}))); - Buildings.Controls.OBC.CDL.Continuous.Subtract sub2 - "Quotient of dead band Divided by the absolute value of k minus yLow" - annotation (Placement(transformation(extent={{30,-50},{50,-30}}))); - Buildings.Controls.OBC.CDL.Continuous.Add add2 "Sum of yHig and yLow" - annotation (Placement(transformation(extent={{40,0},{60,20}}))); - Buildings.Controls.OBC.CDL.Continuous.Multiply mul1 - "exp(L/T)(yHig + yLow)" - annotation (Placement(transformation(extent={{60,30},{80,50}}))); - Buildings.Controls.OBC.CDL.Continuous.Add add1 - "h/|k|-yLow+exp(L/T)(yHig + yLow)" - annotation (Placement(transformation(extent={{60,-40},{80,-20}}))); - Buildings.Controls.OBC.CDL.Continuous.Subtract sub1 "yHig - deaBan/exp(L/T)" - annotation (Placement(transformation(extent={{18,-80},{38,-60}}))); - Buildings.Controls.OBC.CDL.Continuous.Divide div2 - "(h/|k|-yLow+exp(L/T)(yHig + yLow))/(yHig-h/|k|)" - annotation (Placement(transformation(extent={{60,-78},{80,-58}}))); - Buildings.Controls.OBC.CDL.Continuous.Log log - "the natural logarithm of (h/|k|-yLow+exp(L/T)(yHig + yLow))/(yHig-h/|k|)" - annotation (Placement(transformation(extent={{-20,-100},{-40,-80}}))); - Buildings.Controls.OBC.CDL.Continuous.Divide div3 - "Calculates the time constant" - annotation (Placement(transformation(extent={{-40,60},{-20,80}}))); - - Buildings.Controls.OBC.CDL.Continuous.Multiply mul2 - "Calculates the time delay" - annotation (Placement(transformation(extent={{0,74},{20,94}}))); -equation - assert( - abs(k)>1E-6, - "the absulte values of k should be larger than 0. Check inputs."); - connect(absk.u, k) - annotation (Line(points={{-82,0},{-120,0}}, color={0,0,127})); - connect(ratioLT, exp.u) - annotation (Line(points={{-120,-60},{-82,-60}}, color={0,0,127})); - connect(relayDeaBan.y, div1.u1) annotation (Line(points={{22,40},{28,40},{28,0}, - {-20,0},{-20,-14},{-2,-14}}, color={0,0,127})); - connect(div1.u2, absk.y) annotation (Line(points={{-2,-26},{-40,-26},{-40,0},{ - -58,0}}, color={0,0,127})); - connect(sub2.u1, div1.y) annotation (Line(points={{28,-34},{26,-34},{26,-20},{ - 22,-20}}, color={0,0,127})); - connect(sub2.u2, yLowSig.y) annotation (Line(points={{28,-46},{-12,-46},{-12,40}, - {-18,40}}, color={0,0,127})); - connect(yHigSig.y, add2.u1) annotation (Line(points={{-58,40},{-52,40},{-52,16}, - {38,16}}, color={0,0,127})); - connect(add2.u2, yLowSig.y) annotation (Line(points={{38,4},{-12,4},{-12,40},{ - -18,40}}, color={0,0,127})); - connect(add2.y, mul1.u2) annotation (Line(points={{62,10},{72,10},{72,24},{54, - 24},{54,34},{58,34}}, color={0,0,127})); - connect(exp.y, mul1.u1) annotation (Line(points={{-58,-60},{-6,-60},{-6,60},{ - 54,60},{54,46},{58,46}}, color={0,0,127})); - connect(sub2.y, add1.u2) annotation (Line(points={{52,-40},{54,-40},{54,-36},{ - 58,-36}}, color={0,0,127})); - connect(add1.u1, mul1.y) annotation (Line(points={{58,-24},{52,-24},{52,-6},{86, - -6},{86,40},{82,40}}, color={0,0,127})); - connect(sub1.u1, add2.u1) annotation (Line(points={{16,-64},{-52,-64},{-52,16}, - {38,16}}, color={0,0,127})); - connect(sub1.y, div2.u2) annotation (Line(points={{40,-70},{48,-70},{48,-74},{ - 58,-74}}, color={0,0,127})); - connect(div2.u1, add1.y) annotation (Line(points={{58,-62},{54,-62},{54,-48},{ - 84,-48},{84,-30},{82,-30}}, color={0,0,127})); - connect(div2.y, log.u) annotation (Line(points={{82,-68},{84,-68},{84,-90},{ - -18,-90}}, color={0,0,127})); - connect(tOn, div3.u1) annotation (Line(points={{-120,60},{-80,60},{-80,76},{ - -42,76}}, color={0,0,127})); - connect(div3.u2, log.y) annotation (Line(points={{-42,64},{-46,64},{-46,-90}, - {-42,-90}}, color={0,0,127})); - connect(div3.y, T) annotation (Line(points={{-18,70},{110,70}}, - color={0,0,127})); - connect(mul2.u2, T) annotation (Line(points={{-2,78},{-12,78},{-12,70},{110,70}}, - color={0,0,127})); - connect(mul2.u1, exp.u) annotation (Line(points={{-2,90},{-90,90},{-90,-60},{-82, - -60}}, color={0,0,127})); - connect(mul2.y, L) annotation (Line(points={{22,84},{90,84},{90,-60},{110,-60}}, - color={0,0,127})); - connect(sub1.u2, div1.y) annotation (Line(points={{16,-76},{10,-76},{10,-34},{ - 26,-34},{26,-20},{22,-20}}, color={0,0,127})); - annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ - Rectangle( - extent={{-100,-100},{100,100}}, - lineColor={0,0,127}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid), - Text( - extent={{-154,148},{146,108}}, - textString="%name", - textColor={0,0,255})}), Diagram(coordinateSystem(preserveAspectRatio=false)), - Documentation(revisions=" -
                                  -
                                • -June 1, 2022, by Sen Huang:
                                  -First implementation
                                  -
                                • -
                                -", info=" -

                                This block calculates the time constant and the time delay of a first-order time-delayed model

                                -

                                The time constant, T, is calculated by

                                -

                                T = ton/(ln((δ/|k|-yLow+exp(L/T)(yHig + yLow))/(yHig-δ/|k|)))

                                -

                                where yhig and ylow are the higher value and the lower value of the relay control output, respectively,

                                -

                                ton is the length of the On period,

                                -

                                δ is the dead band of a relay controller,

                                -

                                k is the gain of the first-order time-delayed model.

                                -

                                References

                                -

                                -Josefin Berner (2015). -\"Automatic Tuning of PID Controllers based on Asymmetric Relay Feedback.\" -Department of Automatic Control, Lund Institute of Technology, Lund University. -

                                -")); -end TimeConstantDelay; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/FirstOrderTimedelayed/Validation/Gain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/FirstOrderTimedelayed/Validation/Gain.mo deleted file mode 100644 index e9b071db8a7..00000000000 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/FirstOrderTimedelayed/Validation/Gain.mo +++ /dev/null @@ -1,58 +0,0 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.FirstOrderTimedelayed.Validation; -model Gain "Test model for Gain" - extends Modelica.Icons.Example; - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.FirstOrderTimedelayed.Gain - gain annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - CDL.Continuous.Sources.TimeTable tOn( - table=[0,0; 0.1,1; 0.3,1; 0.7,1; 0.83,1; 0.85,2], - smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, - extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) - "The length of the On period" - annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); - CDL.Continuous.Sources.TimeTable tOff( - table=[0,0; 0.1,0; 0.3,0; 0.7,3; 0.83,3; 0.85,3], - smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, - extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) - "The length of the Off period" - annotation (Placement(transformation(extent={{-60,-50},{-40,-30}}))); - CDL.Continuous.Sources.TimeTable u( - table=[0,1; 0.1,0.5; 0.3,0.5; 0.7,0.5; 0.83,1; 0.85,1], - smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, - extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) - "The response of a relay controller" - annotation (Placement(transformation(extent={{-60,30},{-40,50}}))); - CDL.Logical.Sources.TimeTable trigger(table=[0,0; 0.1,0; 0.3,0; 0.7,0; 0.83,1; - 0.85,1], period=2) "Trigger the calculation of the gain" - annotation (Placement(transformation(extent={{-58,-90},{-38,-70}}))); -equation - connect(tOn.y[1], gain.tOn) - annotation (Line(points={{-38,0},{-12,0}}, color={0,0,127})); - connect(gain.tOff, tOff.y[1]) annotation (Line(points={{-12,-8},{-20,-8},{-20, - -40},{-38,-40}}, color={0,0,127})); - connect(u.y[1], gain.u) annotation (Line(points={{-38,40},{-20,40},{-20,8},{-12, - 8}}, color={0,0,127})); - connect(trigger.y[1], gain.trigger) - annotation (Line(points={{-36,-80},{0,-80},{0,-12}}, color={255,0,255})); - annotation ( - experiment( - StopTime=1.0, - Tolerance=1e-06), - __Dymola_Commands( - file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mos" "Simulate and plot"), - Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( - coordinateSystem(preserveAspectRatio=false)), - Documentation(revisions=" -
                                  -
                                • -June 1, 2022, by Sen Huang:
                                  -First implementation
                                  -
                                • -
                                -", info=" -

                                -Validation test for the block - -Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Gain. -

                                -")); -end Gain; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/FirstOrderTimedelayed/Validation/TimeConstantDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/FirstOrderTimedelayed/Validation/TimeConstantDelay.mo deleted file mode 100644 index c1398a42241..00000000000 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/FirstOrderTimedelayed/Validation/TimeConstantDelay.mo +++ /dev/null @@ -1,59 +0,0 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.FirstOrderTimedelayed.Validation; -model TimeConstantDelay "Test model for TimeConstantDelay" - extends Modelica.Icons.Example; - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.FirstOrderTimedelayed.TimeConstantDelay - timeConstantDelay(yLow=0.1) - annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - CDL.Continuous.Sources.TimeTable tOn( - table=[0,1; 0.1,1; 0.3,1; 0.7,1; 0.83,1; 0.85,2], - smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, - extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) - "The length of the On period" - annotation (Placement(transformation(extent={{-60,20},{-40,40}}))); - CDL.Continuous.Sources.TimeTable k( - table=[0,1; 0.1,1; 0.3,1; 0.7,1; 0.83,1], - smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, - extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) - "Gain of a first order time delay model" - annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); - CDL.Continuous.Sources.TimeTable ratioLT( - table=[0,0.3; 0.1,0.5; 0.3,0.1; 0.7,0.5; 0.83,0.8; 0.85,0.5], - smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, - extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) - "The ratio between the time constant and the time delay of a first order time delay model" - annotation (Placement(transformation(extent={{-60,-40},{-40,-20}}))); - Modelica.Blocks.Sources.RealExpression referenceT(y=tOn.y[1]/log((0.5/abs(k.y[ - 1]) - 0.1 + exp(ratioLT.y[1])*(1 + 0.1))/(1 - 0.5/abs(k.y[1])))) - annotation (Placement(transformation(extent={{-10,48},{10,68}}))); - Modelica.Blocks.Sources.RealExpression referenceL(y=ratioLT.y[1]*referenceT.y) - annotation (Placement(transformation(extent={{-10,30},{10,50}}))); -equation - connect(tOn.y[1], timeConstantDelay.tOn) annotation (Line(points={{-38,30},{-20, - 30},{-20,6},{-12,6}}, color={0,0,127})); - connect(k.y[1], timeConstantDelay.k) - annotation (Line(points={{-38,0},{-12,0}}, color={0,0,127})); - connect(ratioLT.y[1], timeConstantDelay.ratioLT) annotation (Line(points={{-38, - -30},{-20,-30},{-20,-6},{-12,-6}}, color={0,0,127})); - annotation ( - experiment( - StopTime=1.0, - Tolerance=1e-06), - __Dymola_Commands( - file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mos" "Simulate and plot"), - Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( - coordinateSystem(preserveAspectRatio=false)), - Documentation(revisions=" -
                                  -
                                • -June 1, 2022, by Sen Huang:
                                  -First implementation
                                  -
                                • -
                                -", info=" -

                                -Validation test for the block - -Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.TimeConstantDelay. -

                                -")); -end TimeConstantDelay; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/FirstOrderTimedelayed/Validation/package.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/FirstOrderTimedelayed/Validation/package.mo deleted file mode 100644 index dd57fa31f50..00000000000 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/FirstOrderTimedelayed/Validation/package.mo +++ /dev/null @@ -1,32 +0,0 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.FirstOrderTimedelayed; -package Validation "Collection of models that validate the blocks in the FirstOrderTimedelayed" - annotation ( - preferredView="info", - Documentation( - info=" -

                                -This package contains models that validate the blocks in - -Buildings.Controls.OBC.Utilities.PIDWithAutotuning. -

                                -"), - Icon( - graphics={ - Rectangle( - lineColor={200,200,200}, - fillColor={248,248,248}, - fillPattern=FillPattern.HorizontalCylinder, - extent={{-100.0,-100.0},{100.0,100.0}}, - radius=25.0), - Rectangle( - lineColor={128,128,128}, - extent={{-100.0,-100.0},{100.0,100.0}}, - radius=25.0), - Polygon( - origin={8.0,14.0}, - lineColor={78,138,73}, - fillColor={78,138,73}, - pattern=LinePattern.None, - fillPattern=FillPattern.Solid, - points={{-58.0,46.0},{42.0,-14.0},{-58.0,-74.0},{-58.0,46.0}})})); -end Validation; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/FirstOrderTimedelayed/Validation/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/FirstOrderTimedelayed/Validation/package.order deleted file mode 100644 index 5154064169d..00000000000 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/FirstOrderTimedelayed/Validation/package.order +++ /dev/null @@ -1,2 +0,0 @@ -Gain -TimeConstantDelay diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/FirstOrderTimedelayed/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/FirstOrderTimedelayed/package.order deleted file mode 100644 index 0fb2c6ea90f..00000000000 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/FirstOrderTimedelayed/package.order +++ /dev/null @@ -1,3 +0,0 @@ -Gain -TimeConstantDelay -Validation diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/BaseClasses/PIDWithRelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/BaseClasses/PIDWithRelay.mo deleted file mode 100644 index 39924f927ef..00000000000 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/BaseClasses/PIDWithRelay.mo +++ /dev/null @@ -1,140 +0,0 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.BaseClasses; -partial block PIDWithRelay - "A PID controller that is coupled with a Relay controller for automatic parameter tuning" - parameter Buildings.Controls.OBC.CDL.Types.SimpleController controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PI - "Type of controller"; - parameter Real k_start( - min=100*Buildings.Controls.OBC.CDL.Constants.eps)=1 - "Start value of the gain of controller" - annotation (Dialog(group="Control gains")); - parameter Real Ti_start( - final quantity="Time", - final unit="s", - min=100*Buildings.Controls.OBC.CDL.Constants.eps)=0.5 - "Start value of the time constant of integrator block" - annotation (Dialog(group="Control gains",enable=controllerType == CDL.Types.SimpleController.PI or controllerType == CDL.Types.SimpleController.PID)); - parameter Real Td_start( - final quantity="Time", - final unit="s", - min=100*Buildings.Controls.OBC.CDL.Constants.eps)=0.1 - "Start value of the time constant of derivative block" - annotation (Dialog(group="Control gains",enable=controllerType == CDL.Types.SimpleController.PD or controllerType == CDL.Types.SimpleController.PID)); - parameter Real yHig(min=1E-6) = 1 - "Higher value for the output"; - parameter Real yLow(min=1E-6) = 0.5 - "Lower value for the output"; - parameter Real deaBan(min=1E-6) = 0.5 - "Deadband for holding the output value"; - Buildings.Controls.OBC.CDL.Interfaces.RealInput u_s - "Connector for setpoint input signal" - annotation (Placement(transformation(extent={{-140,-20},{-100,20}}),iconTransformation(extent={{-140,-20},{-100,20}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput u_m - "Connector for measurement input signal" - annotation (Placement(transformation(origin={0,-120},extent={{20,-20},{-20,20}},rotation=270),iconTransformation(extent={{20,-20},{-20,20}},rotation=270,origin={0,-120}))); - Buildings.Controls.OBC.CDL.Interfaces.BooleanInput trigger - "Resets the controller output when trigger becomes true" - annotation (Placement(transformation(extent={{-20,-20},{20,20}},rotation=90,origin={-60,-120}), iconTransformation(extent={{-20,-20},{20,20}},rotation=90,origin={-60,-120}))); - Buildings.Controls.OBC.CDL.Interfaces.RealOutput y - "Connector for actuator output signal" - annotation (Placement(transformation(extent={{100,-20},{140,20}}),iconTransformation(extent={{100,-20},{140,20}}))); - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Control relay( - yHig=yHig, - yLow=yLow, - deaBan=deaBan) - "A relay controller" - annotation (Placement(transformation(extent={{22,20},{42,40}}))); - Buildings.Controls.OBC.Utilities.PIDWithInputGains pid( - controllerType=controllerType) "A pid controller" - annotation (Placement(transformation(extent={{22,-40},{42,-20}}))); - Buildings.Controls.OBC.CDL.Continuous.Switch swi - "Switch between a PID controller and a relay controller" - annotation (Placement(transformation(extent={{62,10},{82,-10}}))); - Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samk(y_start=k_start) - "Recording the control gain" - annotation (Placement(transformation(extent={{-40,-10},{-20,-30}}))); - Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samTi(y_start=Ti_start) if with_I - "Recording the integral time" - annotation (Placement(transformation(extent={{-80,-38},{-60,-58}}))); - Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samTd(y_start=Td_start) if with_D - "Recording the derivative time" - annotation (Placement(transformation(extent={{-40,-60},{-20,-80}}))); - -protected - final parameter Boolean with_I=controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PI or controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PID - "Boolean flag to enable integral action" - annotation (Evaluate=true,HideResult=true); - final parameter Boolean with_D=controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PD or controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PID - "Boolean flag to enable derivative action" - annotation (Evaluate=true,HideResult=true); - -equation - connect(pid.u_s, u_s) annotation (Line(points={{20,-30},{8,-30},{8,0},{-120,0}}, - color={0,0,127})); - connect(relay.u_s, u_s) annotation (Line(points={{20,30},{-80,30},{-80,0},{-120, - 0}}, color={0,0,127})); - connect(pid.trigger, trigger) annotation (Line(points={{26,-42},{26,-92},{-60, - -92},{-60,-120}}, color={255,0,255})); - connect(swi.y, y) annotation (Line(points={{84,0},{96,0},{96,0},{120,0}}, - color={0,0,127})); - connect(samk.y,pid. k) annotation (Line(points={{-18,-20},{-16,-20},{-16,-22}, - {20,-22}}, color={0,0,127})); - connect(pid.Ti, samTi.y) annotation (Line(points={{20,-26},{-14,-26},{-14,-48}, - {-58,-48}}, color={0,0,127})); - connect(samTd.y,pid. Td) annotation (Line(points={{-18,-70},{14,-70},{14,-34}, - {20,-34}}, color={0,0,127})); - connect(relay.u_m, u_m) annotation (Line(points={{32,18},{32,6},{46,6},{46,-80}, - {0,-80},{0,-120}}, color={0,0,127})); - connect(pid.u_m, u_m) annotation (Line(points={{32,-42},{32,-80},{0,-80},{0,-120}}, - color={0,0,127})); - connect(swi.u3, relay.y) - annotation (Line(points={{60,8},{52,8},{52,36},{43,36}}, color={0,0,127})); - connect(swi.u1, pid.y) annotation (Line(points={{60,-8},{54,-8},{54,-30},{44, - -30}}, color={0,0,127})); - annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ - Rectangle( - extent={{-100,-100},{100,100}}, - lineColor={0,0,127}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid), - Text( - extent={{-152,144},{148,104}}, - textString="%name", - textColor={0,0,255})}), Diagram( - coordinateSystem(preserveAspectRatio=false)), - Documentation(revisions=" -
                                  -
                                • -June 1, 2022, by Sen Huang:
                                  -First implementation
                                  -
                                • -
                                -", info=" -

                                -This blocks is designed as a generic form for implementing automatic tuning methods for PID controllers. -

                                -

                                -It consists of a PID controller and a relay controller. -

                                -

                                -There is also a switcher that determines the output of which controller is used as the output signal. -

                                -

                                -When the simulation starts, the output from the relay contoller is used to excite the system. -

                                -

                                -When the output of the relay controllers switches from On to Off or from Off to On, -

                                -

                                -the tuning process begins. -

                                -

                                -Then after the output of the relay controllers switches twice, -

                                -

                                -the tuning process ends. -

                                -

                                -When the tuning process ends, the parameters of the PID control change and its output becomes the output signal. -

                                -")); -end PIDWithRelay; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/BaseClasses/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/BaseClasses/package.order deleted file mode 100644 index 91298f04157..00000000000 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/BaseClasses/package.order +++ /dev/null @@ -1 +0,0 @@ -PIDWithRelay diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/Control.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/Control.mo deleted file mode 100644 index d27398a54e0..00000000000 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/Control.mo +++ /dev/null @@ -1,91 +0,0 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.ModelIdentification; -block Control "Outputs a relay signal for PID tuning purposes" - parameter Real yHig(min=0,max=1) = 1 - "Higher value for the output"; - parameter Real yLow(min=0,max=1) = 0.5 - "Lower value for the output"; - parameter Real deaBan(min=0) = 0.5 - "Deadband for holding the output value"; - Buildings.Controls.OBC.CDL.Interfaces.RealInput u_s - "Connector for the setpoint input signal" - annotation (Placement(transformation(extent={{-140,-20},{-100,20}}), - iconTransformation(extent={{-140,-20},{-100,20}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput u_m - "Connector for the measurement input signal" - annotation (Placement(transformation(origin={0,-120},extent={{20,-20},{-20,20}},rotation=270), - iconTransformation(extent={{20,-20},{-20,20}},rotation=270,origin={0,-120}))); - Buildings.Controls.OBC.CDL.Interfaces.RealOutput y "Relay output signal" - annotation (Placement(transformation(extent={{100,-10},{120,10}}))); - Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput On "Relay switch signal" - annotation (Placement(transformation(extent={{100,-40},{120,-20}}))); - Buildings.Controls.OBC.CDL.Logical.OnOffController greMeaSet(bandwidth=deaBan*2, pre_y_start=true) - "check if the measured value is larger than the reference" - annotation (Placement(transformation(extent={{-20,-10},{0,10}}))); - Buildings.Controls.OBC.CDL.Continuous.Switch swi - "Switch between a higher value and a lower value" - annotation (Placement(transformation(extent={{60,-10},{80,10}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.Constant yHigSig(final k=yHig) - "Higher value for the output" - annotation (Placement(transformation(extent={{-40,40},{-20,60}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.Constant yLowSig(final k=yLow) - "Default temperature slope in case of zero division" - annotation (Placement(transformation(extent={{-40,-50},{-20,-30}}))); - Buildings.Controls.OBC.CDL.Logical.Not notCon - "reverse the swtich signal" - annotation (Placement(transformation(extent={{12,-10},{32,10}}))); - -initial equation - assert( - yHig-yLow>1E-6, - "the absulte values of yHig should be different from that of yLow. Check parameters."); - -equation - connect(swi.y, y) - annotation (Line(points={{82,0},{90,0},{90,0},{110,0}}, color={0,0,127})); - connect(greMeaSet.reference, u_s) - annotation (Line(points={{-22,6},{-94,6},{-94,0},{-120,0}}, - color={0,0,127})); - connect(greMeaSet.u, u_m) - annotation (Line(points={{-22,-6},{-64,-6},{-64,-94}, - {0,-94},{0,-120}}, color={0,0,127})); - connect(greMeaSet.y, notCon.u) - annotation (Line(points={{2,0},{10,0}}, color={255,0,255})); - connect(notCon.y, swi.u2) - annotation (Line(points={{34,0},{58,0}}, color={255,0,255})); - connect(yHigSig.y, swi.u1) - annotation (Line(points={{-18,50},{50,50},{50,8},{58, - 8}}, color={0,0,127})); - connect(yLowSig.y, swi.u3) - annotation (Line(points={{-18,-40},{50,-40},{50,-8}, - {58,-8}}, color={0,0,127})); - connect(On, swi.u2) - annotation (Line(points={{110,-30},{40,-30},{40,0},{58,0}}, - color={255,0,255})); - annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ - Rectangle( - extent={{-100,-100},{100,100}}, - lineColor={0,0,127}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid), - Text( - extent={{-148,154},{152,114}}, - textString="%name", - textColor={0,0,255})}), Diagram( - coordinateSystem(preserveAspectRatio=false)), - Documentation(info=" -

                                This block grenerates a relay feedback signal, as described below:

                                -

                                if e(t) > δ, then y(t) = yhig,

                                -

                                if e(t) < δ, then y(t) = ylow,

                                -

                                otherwise, y(t) = y(t-Δt).

                                -

                                where e(t) = us(t) - um(t) is the control error, yhig and ylow are the higher value and the lower value of the output y, respectively.

                                -

                                y(t-Δt) is the output at the previous time step.

                                -

                                Note that this block generates a asymmetric signal, meaning |yhig| ≠ |ylow|

                                -", revisions=" -
                                  -
                                • -June 1, 2022, by Sen Huang:
                                  -First implementation
                                  -
                                • -
                                -")); -end Control; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/HalfPeriodRatio.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/HalfPeriodRatio.mo deleted file mode 100644 index d15e62b8269..00000000000 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/HalfPeriodRatio.mo +++ /dev/null @@ -1,109 +0,0 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.ModelIdentification; -block HalfPeriodRatio - "Calculates the half period ratio of a response from a relay controller" - - Buildings.Controls.OBC.CDL.Interfaces.RealInput tOn - "Connector for setpoint input signal" - annotation (Placement(transformation(extent={{-140,40},{-100,80}}), - iconTransformation(extent={{-140,40},{-100,80}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput tOff - "Connector for setpoint input signal" - annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), - iconTransformation(extent={{-140,-80},{-100,-40}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealOutput rho - "Connector for a output signal of the half period ratio" - annotation (Placement(transformation(extent={{100,50},{120,70}}))); - CDL.Interfaces.BooleanOutput trigger - "Relay tuning status, true if the tuning completes" - annotation (Placement(transformation(extent={{100,-70},{120,-50}}))); - Buildings.Controls.OBC.CDL.Continuous.Min tmin "The minimum value of tOn and tOff" - annotation (Placement(transformation(extent={{-80,20},{-60,40}}))); - Buildings.Controls.OBC.CDL.Continuous.Greater gretmin - "Check if both tOn and tOff are both larger than 0" - annotation (Placement(transformation(extent={{-40,20},{-20,40}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.Constant minLen(final k=0) - "Minimum value for the horizon length" - annotation (Placement(transformation(extent={{-80,-20},{-60,0}}))); - Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler tOnSample(y_start=Buildings.Controls.OBC.CDL.Constants.eps) - "Sampling tOn when the tuning period ends" - annotation (Placement(transformation(extent={{0,50},{20,70}}))); - Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler tOffSample(y_start=Buildings.Controls.OBC.CDL.Constants.eps) - "Sampling tOff when the tuning period ends" - annotation (Placement(transformation(extent={{0,-60},{20,-80}}))); - Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler tminSample - "Sampling the tmin when tmin is larger than 0" - annotation (Placement(transformation(extent={{0,-10},{20,10}}))); - Buildings.Controls.OBC.CDL.Continuous.Greater gretminChange - "Checking if either tOn or tOff changes after they both becomes positive" - annotation (Placement(transformation(extent={{-40,-50},{-20,-30}}))); - Buildings.Controls.OBC.CDL.Continuous.Min mintOntOff "The smaller one between tOn and tOff" - annotation (Placement(transformation(extent={{40,-80},{60,-60}}))); - Buildings.Controls.OBC.CDL.Continuous.Max maxtOntOff "The larger one between tOn and tOff" - annotation (Placement(transformation(extent={{40,50},{60,70}}))); - Buildings.Controls.OBC.CDL.Continuous.Divide halfPeriodRatioCal "Calculating the half period ratio" - annotation (Placement(transformation(extent={{60,-10},{80,10}}))); -equation - connect(tmin.u1, tOn) annotation (Line(points={{-82,36},{-92,36},{-92,60},{-120, - 60}}, color={0,0,127})); - connect(tmin.u2, tOff) annotation (Line(points={{-82,24},{-94,24},{-94,-60},{-120, - -60}}, color={0,0,127})); - connect(tmin.y, gretmin.u1) - annotation (Line(points={{-58,30},{-42,30}}, color={0,0,127})); - connect(minLen.y, gretmin.u2) annotation (Line(points={{-58,-10},{-48,-10},{-48, - 22},{-42,22}}, color={0,0,127})); - connect(tOnSample.u, tOn) - annotation (Line(points={{-2,60},{-120,60}}, color={0,0,127})); - connect(tOffSample.u, tOff) annotation (Line(points={{-2,-70},{-94,-70},{-94,-60}, - {-120,-60}}, color={0,0,127})); - connect(tOnSample.trigger, tOffSample.trigger) annotation (Line(points={{10,48}, - {10,26},{-12,26},{-12,-40},{10,-40},{10,-58}}, color={255,0,255})); - connect(tminSample.u, gretmin.u1) annotation (Line(points={{-2,0},{-8,0},{-8,52}, - {-48,52},{-48,30},{-42,30}}, color={0,0,127})); - connect(gretminChange.u1, gretmin.u1) annotation (Line(points={{-42,-40},{-86, - -40},{-86,16},{-52,16},{-52,30},{-42,30}}, color={0,0,127})); - connect(tminSample.y, gretminChange.u2) annotation (Line(points={{22,0},{22, - -56},{-60,-56},{-60,-48},{-42,-48}}, - color={0,0,127})); - connect(gretmin.y, tminSample.trigger) annotation (Line(points={{-18,30},{-10, - 30},{-10,-18},{10,-18},{10,-12}}, color={255,0,255})); - connect(gretminChange.y, tOffSample.trigger) - annotation (Line(points={{-18,-40},{10,-40},{10,-58}}, color={255,0,255})); - connect(tOnSample.y, maxtOntOff.u1) annotation (Line(points={{22,60},{30,60},{ - 30,66},{38,66}}, color={0,0,127})); - connect(maxtOntOff.u2, tOffSample.y) annotation (Line(points={{38,54},{28,54}, - {28,-70},{22,-70}}, color={0,0,127})); - connect(mintOntOff.u2, tOffSample.y) annotation (Line(points={{38,-76},{28,-76}, - {28,-70},{22,-70}}, color={0,0,127})); - connect(mintOntOff.u1, maxtOntOff.u1) annotation (Line(points={{38,-64},{30,-64}, - {30,66},{38,66}}, color={0,0,127})); - connect(maxtOntOff.y, halfPeriodRatioCal.u1) annotation (Line(points={{62,60}, - {72,60},{72,20},{52,20},{52,6},{58,6}}, color={0,0,127})); - connect(halfPeriodRatioCal.u2, mintOntOff.y) annotation (Line(points={{58,-6}, - {52,-6},{52,-50},{70,-50},{70,-70},{62,-70}}, color={0,0,127})); - connect(halfPeriodRatioCal.y, rho) annotation (Line(points={{82,0},{96,0},{96, - 60},{110,60}}, color={0,0,127})); - connect(trigger, tOffSample.trigger) annotation (Line(points={{110,-60},{80,-60}, - {80,-40},{10,-40},{10,-58}}, color={255,0,255})); - annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ - Rectangle( - extent={{-100,-100},{100,100}}, - lineColor={0,0,127}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid), - Text( - extent={{-154,148},{146,108}}, - textString="%name", - textColor={0,0,255})}), Diagram(coordinateSystem(preserveAspectRatio=false)), - Documentation(revisions=" -
                                  -
                                • -June 1, 2022, by Sen Huang:
                                  -First implementation
                                  -
                                • -
                                -", info=" -

                                This block calculates the half-period ratio of the responses from a relay controller, ρ, by

                                -

                                ρ = max(ton,toff)/ min(ton,toff)

                                -

                                where ton and ton are the length of the On period and the Off period, respectively.

                                -")); -end HalfPeriodRatio; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/ResponseProcess.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/ResponseProcess.mo deleted file mode 100644 index 4eeb98bfaac..00000000000 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/ResponseProcess.mo +++ /dev/null @@ -1,115 +0,0 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.ModelIdentification; -block ResponseProcess - "Processes a relay signal to calculate the lengths of the On period and the Off period" - Buildings.Controls.OBC.CDL.Interfaces.BooleanInput On - "Connector for input signal" - annotation ( - Placement(transformation(extent={{-140,-80},{-100,-40}}), - iconTransformation(extent={{-140,-80},{-100,-40}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealOutput tOff - "Connector for a Real output signal of the length for the Off period" - annotation (Placement(transformation(extent={{100,-50},{120,-30}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealOutput tOn - "Connector for a output signal of the length for the On period" - annotation (Placement(transformation(extent={{100,30},{120,50}}))); - Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler timOn - "Simulation time when the input signal becomes On (True)" - annotation (Placement(transformation(extent={{-30,30},{-10,50}}))); - Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler timOff - "Simulation time when the input signal becomes Off (False)" - annotation (Placement(transformation(extent={{-30,-40},{-10,-20}}))); - Buildings.Controls.OBC.CDL.Logical.Not Off "Relay switch off" - annotation (Placement(transformation(extent={{-80,-80},{-60,-60}}))); - Buildings.Controls.OBC.CDL.Continuous.Subtract lenOffCal - "Calculating the horizon length for the Off period" - annotation (Placement(transformation(extent={{20,-40},{40,-20}}))); - Buildings.Controls.OBC.CDL.Continuous.Subtract lenOnCal - "Calculating the horizon length for the On period" - annotation (Placement(transformation(extent={{20,30},{40,50}}))); - Buildings.Controls.OBC.CDL.Continuous.Greater greTimOff - "Triggering the action to record the horizon length for the Off period" - annotation (Placement(transformation(extent={{40,-80},{60,-60}}))); - Buildings.Controls.OBC.CDL.Continuous.Greater greTimOn - "Triggering the action to record the horizon length for the On period" - annotation (Placement(transformation(extent={{40,60},{60,80}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.Constant minLen(final k=0) - "Minimum value for the horizon length" - annotation (Placement(transformation(extent={{-80,60},{-60,80}}))); - Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler timOffRecord - "Recording the horizon length for the Off period" - annotation (Placement(transformation(extent={{60,-50},{80,-30}}))); - Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler timOnRecord - "Recording the horizon length for the On period" - annotation (Placement(transformation(extent={{60,50},{80,30}}))); - - Buildings.Controls.OBC.CDL.Interfaces.RealInput tim - "Connector for the input signal of the simulation time" annotation ( - Placement(transformation(extent={{-140,40},{-100,80}}), - iconTransformation(extent={{-140,40},{-100,80}}))); -equation - connect(Off.u, On) annotation (Line(points={{-82,-70},{-94,-70},{-94,-60},{ - -120,-60}}, - color={255,0,255})); - connect(Off.y, timOff.trigger) annotation (Line(points={{-58,-70},{-20,-70},{-20, - -42}}, color={255,0,255})); - connect(timOn.trigger, On) annotation (Line(points={{-20,28},{-20,20},{-92,20}, - {-92,-60},{-120,-60}}, - color={255,0,255})); - connect(lenOffCal.u1, timOn.y) annotation (Line(points={{18,-24},{8,-24},{8, - 34},{4,34},{4,40},{-8,40}}, - color={0,0,127})); - connect(lenOnCal.u2, timOn.y) - annotation (Line(points={{18,34},{4,34},{4,40},{-8,40}}, color={0,0,127})); - connect(lenOnCal.u1, timOff.y) annotation (Line(points={{18,46},{0,46},{0,-30}, - {-8,-30}}, color={0,0,127})); - connect(lenOffCal.u2, timOff.y) annotation (Line(points={{18,-36},{0,-36},{0,-30}, - {-8,-30}}, color={0,0,127})); - connect(minLen.y, greTimOn.u2) - annotation (Line(points={{-58,70},{-52,70},{-52,62},{38,62}}, - color={0,0,127})); - connect(lenOnCal.y, greTimOn.u1) annotation (Line(points={{42,40},{50,40},{50, - 56},{20,56},{20,70},{38,70}}, color={0,0,127})); - connect(greTimOff.u2, greTimOn.u2) annotation (Line(points={{38,-78},{-52,-78}, - {-52,62},{38,62}}, color={0,0,127})); - connect(lenOffCal.y, greTimOff.u1) annotation (Line(points={{42,-30},{48,-30}, - {48,-48},{20,-48},{20,-70},{38,-70}}, color={0,0,127})); - connect(greTimOff.y, timOffRecord.trigger) - annotation (Line(points={{62,-70},{70,-70},{70,-52}}, color={255,0,255})); - connect(timOffRecord.u, greTimOff.u1) annotation (Line(points={{58,-40},{54, - -40},{54,-48},{20,-48},{20,-70},{38,-70}}, - color={0,0,127})); - connect(greTimOn.y, timOnRecord.trigger) - annotation (Line(points={{62,70},{70,70},{70,52}}, color={255,0,255})); - connect(timOnRecord.u, greTimOn.u1) annotation (Line(points={{58,40},{50,40}, - {50,56},{20,56},{20,70},{38,70}},color={0,0,127})); - connect(timOffRecord.y, tOff) - annotation (Line(points={{82,-40},{110,-40}}, color={0,0,127})); - connect(timOnRecord.y, tOn) - annotation (Line(points={{82,40},{110,40}}, color={0,0,127})); - connect(timOn.u, tim) annotation (Line(points={{-32,40},{-92,40},{-92,60},{ - -120,60}}, color={0,0,127})); - connect(timOff.u, tim) annotation (Line(points={{-32,-30},{-94,-30},{-94,60}, - {-120,60}}, color={0,0,127})); - annotation (Icon(coordinateSystem(preserveAspectRatio=false), graphics={ - Rectangle( - extent={{-100,-100},{100,100}}, - lineColor={0,0,127}, - fillColor={255,255,255}, - fillPattern=FillPattern.Solid), - Text( - extent={{-154,148},{146,108}}, - textString="%name", - textColor={0,0,255})}), Diagram(coordinateSystem(preserveAspectRatio=false)), - Documentation(revisions=" -
                                  -
                                • -June 1, 2022, by Sen Huang:
                                  -First implementation
                                  -
                                • -
                                -", info=" -

                                This block processes a relay feedback signal and calculates

                                -

                                1) the length of the On period (when the relay switch signal becomes True);

                                -

                                2) the length of the Off period (when the relay switch signal becomes False).

                                -")); -end ResponseProcess; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/Validation/Control.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/Validation/Control.mo deleted file mode 100644 index 3b4d0e99942..00000000000 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/Validation/Control.mo +++ /dev/null @@ -1,41 +0,0 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.ModelIdentification.Validation; -model Control "Test model for Control" - extends Modelica.Icons.Example; - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.ModelIdentification.Control - control( - yHig=1, - yLow=0.5, - deaBan=0.4) "A relay controller" - annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - CDL.Continuous.Sources.Sine sin(freqHz=2) "Measured value" - annotation (Placement(transformation(extent={{-60,-60},{-40,-40}}))); - CDL.Continuous.Sources.Constant const(k=0) "Setpoint" - annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); -equation - connect(const.y, control.u_s) - annotation (Line(points={{-38,0},{-12,0}}, color={0,0,127})); - connect(sin.y, control.u_m) - annotation (Line(points={{-38,-50},{0,-50},{0,-12}}, color={0,0,127})); - annotation ( - experiment( - StopTime=1.0, - Tolerance=1e-06), - __Dymola_Commands( - file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/BaseClasses/Validation/Relay.mos" "Simulate and plot"), - Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( - coordinateSystem(preserveAspectRatio=false)), - Documentation(revisions=" -
                                  -
                                • -June 1, 2022, by Sen Huang:
                                  -First implementation
                                  -
                                • -
                                -", info=" -

                                -Validation test for the block - -Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Control. -

                                -")); -end Control; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/Validation/HalfPeriodRatio.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/Validation/HalfPeriodRatio.mo deleted file mode 100644 index 74b3b6cea18..00000000000 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/Validation/HalfPeriodRatio.mo +++ /dev/null @@ -1,46 +0,0 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.ModelIdentification.Validation; -model HalfPeriodRatio "Test model for HalfPeriodRatio" - extends Modelica.Icons.Example; - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.ModelIdentification.HalfPeriodRatio - relayHalfPeriodRatio "Calculating the half period ratio" - annotation (Placement(transformation(extent={{-8,-10},{12,10}}))); - CDL.Continuous.Sources.TimeTable tOn( - table=[0,0; 0.1,1; 0.3,1; 0.7,1; 0.83,1; 0.85,2], - smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, - extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) - "The length of the On period" - annotation (Placement(transformation(extent={{-60,20},{-40,40}}))); - CDL.Continuous.Sources.TimeTable tOff( - table=[0,0; 0.1,0; 0.3,0; 0.7,3; 0.83,3; 0.85,3], - smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, - extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) - "The length of the Off period" - annotation (Placement(transformation(extent={{-60,-40},{-40,-20}}))); -equation - connect(tOn.y[1], relayHalfPeriodRatio.tOn) annotation (Line(points={{-38,30}, - {-20,30},{-20,6},{-10,6}}, color={0,0,127})); - connect(tOff.y[1], relayHalfPeriodRatio.tOff) annotation (Line(points={{-38,-30}, - {-20,-30},{-20,-6},{-10,-6}}, color={0,0,127})); - annotation ( - experiment( - StopTime=1.0, - Tolerance=1e-06), - __Dymola_Commands( - file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/BaseClasses/Validation/RelayHalfPeriodRatio.mos" "Simulate and plot"), - Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( - coordinateSystem(preserveAspectRatio=false)), - Documentation(revisions=" -
                                  -
                                • -June 1, 2022, by Sen Huang:
                                  -First implementation
                                  -
                                • -
                                -", info=" -

                                -Validation test for the block - -Buildings.Controls.OBC.Utilities.ResponseProcess.HalfPeriodRatio. -

                                -")); -end HalfPeriodRatio; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/Validation/ResponseProcess.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/Validation/ResponseProcess.mo deleted file mode 100644 index 919c6e0a605..00000000000 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/Validation/ResponseProcess.mo +++ /dev/null @@ -1,41 +0,0 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.ModelIdentification.Validation; -model ResponseProcess "Test model for ResponeProcess" - extends Modelica.Icons.Example; - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.ModelIdentification.ResponseProcess - relayPrcoess "Calculating the length of the On period and the Off period" - annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - Buildings.Controls.OBC.CDL.Logical.Sources.TimeTable relayResponse( - table=[0,1;0.1,0; 0.3,0; 0.7,1; 0.83,0; 0.85,1], period=2) - "Mimicking the response for a relay controller" - annotation (Placement(transformation(extent={{-60,-20},{-40,0}}))); - CDL.Continuous.Sources.ModelTime modTim - "Simulation time" - annotation (Placement(transformation(extent={{-60,10},{-40,30}}))); -equation - connect(relayPrcoess.On, relayResponse.y[1]) annotation (Line(points={{-12,-6}, - {-20,-6},{-20,-10},{-38,-10}}, color={255,0,255})); - connect(modTim.y, relayPrcoess.tim) annotation (Line(points={{-38,20},{-20,20}, - {-20,6},{-12,6}}, color={0,0,127})); - annotation ( - experiment( - StopTime=1.0, - Tolerance=1e-06), - __Dymola_Commands( - file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/BaseClasses/Validation/RelayProcess.mos" "Simulate and plot"), - Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( - coordinateSystem(preserveAspectRatio=false)), - Documentation(revisions=" -
                                  -
                                • -June 1, 2022, by Sen Huang:
                                  -First implementation
                                  -
                                • -
                                -", info=" -

                                -Validation test for the block - -Buildings.Controls.OBC.Utilities.PIDWithAutotuning.ResponseProcess. -

                                -")); -end ResponseProcess; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/Validation/package.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/Validation/package.mo deleted file mode 100644 index 09078dc49cb..00000000000 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/Validation/package.mo +++ /dev/null @@ -1,32 +0,0 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.ModelIdentification; -package Validation "Collection of models that validate the SetPoints blocks of the CDL" - annotation ( - preferredView="info", - Documentation( - info=" -

                                -This package contains models that validate the blocks in - -Buildings.Controls.OBC.Utilities.PIDWithAutotuning. -

                                -"), - Icon( - graphics={ - Rectangle( - lineColor={200,200,200}, - fillColor={248,248,248}, - fillPattern=FillPattern.HorizontalCylinder, - extent={{-100.0,-100.0},{100.0,100.0}}, - radius=25.0), - Rectangle( - lineColor={128,128,128}, - extent={{-100.0,-100.0},{100.0,100.0}}, - radius=25.0), - Polygon( - origin={8.0,14.0}, - lineColor={78,138,73}, - fillColor={78,138,73}, - pattern=LinePattern.None, - fillPattern=FillPattern.Solid, - points={{-58.0,46.0},{42.0,-14.0},{-58.0,-74.0},{-58.0,46.0}})})); -end Validation; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/Validation/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/Validation/package.order deleted file mode 100644 index 7080006efb1..00000000000 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/Validation/package.order +++ /dev/null @@ -1,3 +0,0 @@ -Control -ResponseProcess -HalfPeriodRatio diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/package.order deleted file mode 100644 index 2c79c7c148d..00000000000 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/ModelIdentification/package.order +++ /dev/null @@ -1,4 +0,0 @@ -Control -ResponseProcess -HalfPeriodRatio -Validation From 4b5a4fab12e04db8a46b4af3fb7dffd59ac4b75d Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Fri, 12 Aug 2022 10:56:37 -0400 Subject: [PATCH 022/214] remove extra empty lines --- .../OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo | 1 + .../PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo | 1 + .../OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo | 1 + .../PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo | 1 + .../PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo | 1 + .../PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo | 1 + .../AutoTuner/AMIGO/Validation/PIDDerivativeTime.mo | 1 + .../PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mo | 1 + .../AutoTuner/AMIGO/Validation/PIDIntegralTime.mo | 1 + .../PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mo | 2 +- .../AutoTuner/AMIGO/Validation/PIIntegralTime.mo | 1 + .../Utilities/PIDWithAutotuning/PIDWithAutotuningAmigoFOTD.mo | 2 -- .../OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo | 1 + .../OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo | 1 - .../Utilities/PIDWithAutotuning/Relay/Validation/Controller.mo | 1 + .../PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mo | 1 + .../PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mo | 1 + .../Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mo | 1 + .../PIDWithAutotuning/Relay/Validation/ResponseProcess.mo | 1 + .../FirstOrderTimedelayed/ControlProcessModel.mo | 1 + .../SystemIdentification/FirstOrderTimedelayed/Gain.mo | 1 + .../FirstOrderTimedelayed/TimeConstantDelay.mo | 1 + .../SystemIdentification/Validation/package.order | 0 .../PIDWithAutotuning/Validation/PIDWithAutotuningAmigoFOTD.mo | 1 + .../PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD.mo | 1 + 25 files changed, 22 insertions(+), 4 deletions(-) delete mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/Validation/package.order diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo index a69635f05fa..fb6721ebdee 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo @@ -30,6 +30,7 @@ block PID "Identifies the parameters of a PID controller" Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PIDDerivativeTime derivativeTime "Calculate the derivative time" annotation (Placement(transformation(extent={{-10,-70},{10,-50}}))); + equation connect(derivativeTime.Td, Td) annotation (Line(points={{11,-60},{110,-60}}, color={0,0,127})); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo index c59e4d11ef0..9f77d9b80a4 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo @@ -26,6 +26,7 @@ block PIDDerivativeTime "Identifies the derivative time of a PID controller" Buildings.Controls.OBC.CDL.Continuous.Divide div "Calculate the output of mul divided by the output of add" annotation (Placement(transformation(extent={{20,-10},{40,10}}))); + equation connect(div.y, Td) annotation (Line(points={{42,0},{110,0}}, color={0,0,127})); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo index add042b8ece..d53e7fb9a70 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo @@ -33,6 +33,7 @@ block PIDGain "Identifies the control gain of a PID controller" Buildings.Controls.OBC.CDL.Continuous.Multiply mul "Calcualte the sum of the output of addPar and the output of div1" annotation (Placement(transformation(extent={{60,-10},{80,10}}))); + equation connect(div1.u2, kp) annotation (Line(points={{-40,44},{-94,44},{-94,60},{ -120,60}}, color={0,0,127})); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo index 72d7eeb7d24..e3d6e11c80a 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo @@ -32,6 +32,7 @@ block PIDIntegralTime "Identifies the integral time of a PID controller" Buildings.Controls.OBC.CDL.Continuous.Multiply mul "Calculate the product of the output of div and the time delay" annotation (Placement(transformation(extent={{40,-10},{60,10}}))); + equation connect(gai1.u, L) annotation (Line(points={{-82,-40},{-90,-40},{-90,-60},{ -120,-60}}, color={0,0,127})); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo index ac49f31d227..a2969d9f9ae 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo @@ -267,6 +267,7 @@ model PI "Test model for PI" 0.171,0.938; 1,2,1,0.6,0.171,0.938], extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) "Data for validating the PI block" annotation (Placement(transformation(extent={{-58,-10},{-38,10}}))); + equation connect(ReferenceData.y[1], pI.kp) annotation (Line(points={{-36,0},{-20,0},{ -20,6},{-12,6}}, color={0,0,127})); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo index 615c35968ed..b20730817d1 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo @@ -310,6 +310,7 @@ model PID "Test model for PID" Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) "Data for validating the PIDDerivativeTime block" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + equation connect(pID.kp, ReferenceData.y[1]) annotation (Line(points={{-12,6},{-20,6}, {-20,0},{-38,0}}, color={0,0,127})); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mo index c6c624411ae..b814c84a2a1 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mo @@ -310,6 +310,7 @@ model PIDDerivativeTime "Test model for PIDDerivativeTime" Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) "Data for validating the PIDDerivativeTime block" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + equation connect(pIDDerivativeTime.T, ReferenceData.y[2]) annotation (Line(points={{ -12,6},{-20,6},{-20,0},{-38,0}}, color={0,0,127})); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mo index 626bdd8be83..df0d830d65b 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mo @@ -310,6 +310,7 @@ model PIDGain "Test model for PIDGain" Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) "Data for validating the PIDGain block" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + equation connect(ReferenceData.y[1], pIDGain.kp) annotation (Line(points={{-38,0},{-20, 0},{-20,6},{-12,6}}, color={0,0,127})); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mo index 18317b06acd..7c3c779ca5a 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mo @@ -310,6 +310,7 @@ model PIDIntegralTime "Test model for PIDIntergralTime" Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) "Data for validating the PIDIntegralTime block" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + equation connect(ReferenceData.y[2], pIDIntegralTime.T) annotation (Line(points={{-38, 0},{-20,0},{-20,6},{-12,6}}, color={0,0,127})); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mo index e2efdb8e2d3..e4cfa5a1b5a 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mo @@ -264,10 +264,10 @@ model PIGain "Test model for PIGain" 0.171,0.938; 1,2,1,0.6,0.171,0.938], extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) "Data for validating the PIgain block" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PIGain pIGain "Calculate the gain for a PI controller" annotation (Placement(transformation(extent={{-8,-10},{12,10}}))); + equation connect(pIGain.kp, ReferenceData.y[1]) annotation (Line(points={{-10,6},{-26, 6},{-26,0},{-38,0}}, color={0,0,127})); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mo index 1c64b82aa66..39f424d5a9d 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mo @@ -251,6 +251,7 @@ model PIIntegralTime "Test model for PIIntergralTime" extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) "Data for validating the pIIntegralTime block" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + equation connect(ReferenceData.y[2], pIIntegralTime.T) annotation (Line(points={{-38,0}, {-20,0},{-20,6},{-12,6}}, color={0,0,127})); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/PIDWithAutotuningAmigoFOTD.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/PIDWithAutotuningAmigoFOTD.mo index f8ce6ec7ee3..af66217d989 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/PIDWithAutotuningAmigoFOTD.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/PIDWithAutotuningAmigoFOTD.mo @@ -112,8 +112,6 @@ equation annotation (Line(points={{60,8},{52,8},{52,36},{43,36}}, color={0,0,127})); connect(swi.u1, pid.y) annotation (Line(points={{60,-8},{54,-8},{54,-30},{44, -30}}, color={0,0,127})); - - connect(responseProcess.triggerEnd, swi.u2) annotation (Line(points={{-1,42},{-1, 10},{48,10},{48,0},{60,0}}, color={255,0,255})); connect(samk.trigger, swi.u2) annotation (Line(points={{-30,-8},{-30,10},{48,10}, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo index 260fd44ff35..4f960aaa1bd 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo @@ -68,6 +68,7 @@ block HalfPeriodRatio Buildings.Controls.OBC.CDL.Logical.Or tChanges "Check if tOn or tOff changes" annotation (Placement(transformation(extent={{70,-40},{90,-20}}))); + equation connect(tmin.u1, tOn) annotation (Line(points={{-82,36},{-94,36},{-94,60},{-120, 60}}, color={0,0,127})); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo index d77b14bf6c6..08d61ebe7be 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo @@ -46,7 +46,6 @@ block OnOffPeriod "Record the horizon length for the On period" annotation (Placement(transformation(extent={{60,50},{80,30}}))); - equation connect(Off.u, On) annotation (Line(points={{-82,-70},{-92,-70},{-92,-60},{ -120,-60}}, color={255,0,255})); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Controller.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Controller.mo index d14a5138654..1daf9a5e8ba 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Controller.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Controller.mo @@ -9,6 +9,7 @@ model Controller "Test model for Control" annotation (Placement(transformation(extent={{-60,-60},{-40,-40}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.Constant const(k=0) "Setpoint" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + equation connect(const.y, controller.u_s) annotation (Line(points={{-38,0},{-12,0}}, color={0,0,127})); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mo index b77eb9e0426..3200ca6b2e5 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mo @@ -15,6 +15,7 @@ model HalfPeriodRatio "Test model for HalfPeriodRatio" extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) "Signal for the length of the Off period" annotation (Placement(transformation(extent={{-60,-40},{-40,-20}}))); + equation connect(tOn.y[1],halfPeriodRatio. tOn) annotation (Line(points={{-38,30},{-20, 30},{-20,6},{-10.2222,6}}, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mo index b1fd5f1c380..ade3df684f3 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mo @@ -106,6 +106,7 @@ model NormalizedTimeDelay "Test model for NormalizedTimeDelay" extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) "Data for validating the normalizedTimeDelay block" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + equation connect(ReferenceData.y[1], normalizedTimeDelay.rho) annotation (Line(points={{-38,0},{-10,0}}, color={0,0,127})); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mo index 9cd9130a59c..7863c796274 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mo @@ -10,6 +10,7 @@ model OnOffPeriod "Test model for OnOffPeriod" Buildings.Controls.OBC.CDL.Continuous.Sources.ModelTime modTim "Simulation time" annotation (Placement(transformation(extent={{-60,10},{-40,30}}))); + equation connect(onOffPeriod.On, relayResponse.y[1]) annotation (Line(points={{-12,-6}, {-20,-6},{-20,-10},{-38,-10}}, color={255,0,255})); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mo index 26694d95495..c04eeb2395e 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mo @@ -11,6 +11,7 @@ model ResponseProcess "Test model for ResponseProcess" Buildings.Controls.OBC.CDL.Continuous.Sources.ModelTime modTim "Simulation time" annotation (Placement(transformation(extent={{-60,10},{-40,30}}))); + equation connect(responseProcess.On, relayResponse.y[1]) annotation (Line(points={{-12, -6},{-20,-6},{-20,-10},{-38,-10}}, color={255,0,255})); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo index 6f4e37ecd12..20a260d1956 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo @@ -75,6 +75,7 @@ block ControlProcessModel Buildings.Controls.OBC.CDL.Continuous.Divide div "tau/(1- tau)" annotation (Placement(transformation(extent={{12,-60},{32,-40}}))); + equation connect(gain.u, u) annotation (Line(points={{-86,8},{-88,8},{-88,80},{-120,80}}, color={0,0,127})); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Gain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Gain.mo index 21c88097e94..1ca7ccf3edb 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Gain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Gain.mo @@ -47,6 +47,7 @@ block Gain "Identifies the gain of a first order time delayed model" Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gaitOffyLow(final k=-yLow) "Product of tOff and yLow" annotation (Placement(transformation(extent={{-80,-90},{-60,-70}}))); + equation connect(Iy.u, u) annotation (Line(points={{-42,40},{-90,40},{-90,80},{-120,80}}, color={0,0,127})); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/TimeConstantDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/TimeConstantDelay.mo index f25d212eed2..9dbdaea99b3 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/TimeConstantDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/TimeConstantDelay.mo @@ -69,6 +69,7 @@ block TimeConstantDelay Buildings.Controls.OBC.CDL.Continuous.Multiply mul2 "Calculates the time delay" annotation (Placement(transformation(extent={{0,74},{20,94}}))); + equation connect(absk.u, k) annotation (Line(points={{-82,-10},{-92,-10},{-92,0},{-120,0}}, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/Validation/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/Validation/package.order deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithAutotuningAmigoFOTD.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithAutotuningAmigoFOTD.mo index 273f09d53b2..1fc2fe378c5 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithAutotuningAmigoFOTD.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithAutotuningAmigoFOTD.mo @@ -43,6 +43,7 @@ model PIDWithAutotuningAmigoFOTD "Test model for PIDWithAutotuning" Buildings.Controls.OBC.CDL.Continuous.Derivative derivative2 "A derivative block that is used to mimic the first order process 2" annotation (Placement(transformation(extent={{80,-60},{60,-40}}))); + equation connect(resSig.y, PI.trigger) annotation (Line(points={{-58,70},{-30,70},{-30, 40},{-16,40},{-16,48}}, color={255,0,255})); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD.mo index 159f10e79d3..b759612348d 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD.mo @@ -43,6 +43,7 @@ model PIWithAutotuningAmigoFOTD "Test model for PIDWithAutotuning" Buildings.Controls.OBC.CDL.Continuous.Derivative derivative2 "A derivative block that is used to mimic the first order process 2" annotation (Placement(transformation(extent={{80,-60},{60,-40}}))); + equation connect(resSig.y, PI.trigger) annotation (Line(points={{-58,70},{-30,70},{-30, 40},{-16,40},{-16,48}}, color={255,0,255})); From 3d7c2c235e090670d7b2b5b85fda158e2dd829f4 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Tue, 23 Aug 2022 23:27:57 -0400 Subject: [PATCH 023/214] update the AMIGO package --- .../Validation/NormalizedTimeDelay.mo | 38 --------------- .../Utilities/BaseClasses/Validation/Relay.mo | 41 ---------------- .../Validation/RelayHalfPeriodRatio.mo | 48 ------------------- .../BaseClasses/Validation/RelayProcess.mo | 42 ---------------- .../BaseClasses/Validation/package.order | 4 -- .../PIDWithAutotuning/AutoTuner/AMIGO/PI.mo | 31 ++++++------ .../PIDWithAutotuning/AutoTuner/AMIGO/PID.mo | 33 ++++++------- .../AutoTuner/AMIGO/PIDDerivativeTime.mo | 31 ++++++------ .../AutoTuner/AMIGO/PIDGain.mo | 38 +++++++-------- .../AutoTuner/AMIGO/PIDIntegralTime.mo | 20 ++++---- .../AutoTuner/AMIGO/PIGain.mo | 20 ++++---- .../AutoTuner/AMIGO/PIIntegralTime.mo | 18 +++---- .../AutoTuner/AMIGO/Validation/PI.mo | 4 +- .../AutoTuner/AMIGO/Validation/PID.mo | 4 +- .../AMIGO/Validation/PIDDerivativeTime.mo | 4 +- .../AutoTuner/AMIGO/Validation/PIDGain.mo | 4 +- .../AMIGO/Validation/PIDIntegralTime.mo | 4 +- .../AutoTuner/AMIGO/Validation/PIGain.mo | 4 +- .../AMIGO/Validation/PIIntegralTime.mo | 6 +-- .../AutoTuner/AMIGO/Validation/package.mo | 2 +- .../AutoTuner/AMIGO/package.mo | 2 +- .../PIDWithAutotuning/AutoTuner/package.order | 2 +- .../PIDWithAutotuningAmigoFOTD.mo | 25 +++++----- 23 files changed, 128 insertions(+), 297 deletions(-) delete mode 100644 Buildings/Controls/OBC/Utilities/BaseClasses/Validation/NormalizedTimeDelay.mo delete mode 100644 Buildings/Controls/OBC/Utilities/BaseClasses/Validation/Relay.mo delete mode 100644 Buildings/Controls/OBC/Utilities/BaseClasses/Validation/RelayHalfPeriodRatio.mo delete mode 100644 Buildings/Controls/OBC/Utilities/BaseClasses/Validation/RelayProcess.mo delete mode 100644 Buildings/Controls/OBC/Utilities/BaseClasses/Validation/package.order diff --git a/Buildings/Controls/OBC/Utilities/BaseClasses/Validation/NormalizedTimeDelay.mo b/Buildings/Controls/OBC/Utilities/BaseClasses/Validation/NormalizedTimeDelay.mo deleted file mode 100644 index 13b572cf2e4..00000000000 --- a/Buildings/Controls/OBC/Utilities/BaseClasses/Validation/NormalizedTimeDelay.mo +++ /dev/null @@ -1,38 +0,0 @@ -within Buildings.Controls.OBC.Utilities.BaseClasses.Validation; -model NormalizedTimeDelay "Test model for NormalizedTimeDelay" - extends Modelica.Icons.Example; - Buildings.Controls.OBC.Utilities.BaseClasses.NormalizedTimeDelay - normalizedTimeDelay(gamma=3) - annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - CDL.Continuous.Sources.TimeTable rho( - table=[0,0; 0.1,0; 0.3,1; 0.7,1.5; 0.83,1.5; 0.85,2], - smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, - extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) - "The half period ratio" - annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); -equation - connect(rho.y[1], normalizedTimeDelay.rho) - annotation (Line(points={{-38,0},{-12,0}}, color={0,0,127})); - annotation ( - experiment( - StopTime=1.0, - Tolerance=1e-06), - __Dymola_Commands( - file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/BaseClasses/Validation/NormalizedTimeDelay.mos" "Simulate and plot"), - Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( - coordinateSystem(preserveAspectRatio=false)), - Documentation(revisions=" -
                                  -
                                • -June 1, 2022, by Sen Huang:
                                  -First implementation
                                  -
                                • -
                                -", info=" -

                                -Validation test for the block - -Buildings.Controls.OBC.Utilities.BaseClasses.NormalizedTimeDelay. -

                                -")); -end NormalizedTimeDelay; diff --git a/Buildings/Controls/OBC/Utilities/BaseClasses/Validation/Relay.mo b/Buildings/Controls/OBC/Utilities/BaseClasses/Validation/Relay.mo deleted file mode 100644 index a9f527c3c1c..00000000000 --- a/Buildings/Controls/OBC/Utilities/BaseClasses/Validation/Relay.mo +++ /dev/null @@ -1,41 +0,0 @@ -within Buildings.Controls.OBC.Utilities.BaseClasses.Validation; -model Relay - "Test model for Relay" - extends Modelica.Icons.Example; - Buildings.Controls.OBC.Utilities.BaseClasses.Relay relay( - yHig=1, - yLow=0.5, deaBan=0.4) - "A relay controller" - annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - CDL.Continuous.Sources.Sine sin(freqHz=2) "Measured value" - annotation (Placement(transformation(extent={{-60,-60},{-40,-40}}))); - CDL.Continuous.Sources.Constant const(k=0) "Setpoint" - annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); -equation - connect(const.y, relay.u_s) - annotation (Line(points={{-38,0},{-12,0}}, color={0,0,127})); - connect(sin.y, relay.u_m) - annotation (Line(points={{-38,-50},{0,-50},{0,-12}}, color={0,0,127})); - annotation ( - experiment( - StopTime=1.0, - Tolerance=1e-06), - __Dymola_Commands( - file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/BaseClasses/Validation/Relay.mos" "Simulate and plot"), - Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( - coordinateSystem(preserveAspectRatio=false)), - Documentation(revisions=" -
                                  -
                                • -June 1, 2022, by Sen Huang:
                                  -First implementation
                                  -
                                • -
                                -", info=" -

                                -Validation test for the block - -Buildings.Controls.OBC.Utilities.BaseClasses.Relay. -

                                -")); -end Relay; diff --git a/Buildings/Controls/OBC/Utilities/BaseClasses/Validation/RelayHalfPeriodRatio.mo b/Buildings/Controls/OBC/Utilities/BaseClasses/Validation/RelayHalfPeriodRatio.mo deleted file mode 100644 index dc2010ccaaf..00000000000 --- a/Buildings/Controls/OBC/Utilities/BaseClasses/Validation/RelayHalfPeriodRatio.mo +++ /dev/null @@ -1,48 +0,0 @@ -within Buildings.Controls.OBC.Utilities.BaseClasses.Validation; -model RelayHalfPeriodRatio - "Test model for RelayHalfPeriodRatio" - extends Modelica.Icons.Example; - .Buildings.Controls.OBC.Utilities.BaseClasses.RelayHalfPeriodRatio - relayHalfPeriodRatio - "Calculating the half period ratio" - annotation (Placement(transformation(extent={{-8,-10},{12,10}}))); - CDL.Continuous.Sources.TimeTable tOn( - table=[0,0; 0.1,1; 0.3,1; 0.7,1; 0.83,1; 0.85,2], - smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, - extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) - "The length of the On period" - annotation (Placement(transformation(extent={{-60,20},{-40,40}}))); - CDL.Continuous.Sources.TimeTable tOff( - table=[0,0; 0.1,0; 0.3,0; 0.7,3; 0.83,3; 0.85,3], - smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, - extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) - "The length of the Off period" - annotation (Placement(transformation(extent={{-60,-40},{-40,-20}}))); -equation - connect(tOn.y[1], relayHalfPeriodRatio.tOn) annotation (Line(points={{-38,30}, - {-20,30},{-20,6},{-10,6}}, color={0,0,127})); - connect(tOff.y[1], relayHalfPeriodRatio.tOff) annotation (Line(points={{-38,-30}, - {-20,-30},{-20,-6},{-10,-6}}, color={0,0,127})); - annotation ( - experiment( - StopTime=1.0, - Tolerance=1e-06), - __Dymola_Commands( - file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/BaseClasses/Validation/RelayHalfPeriodRatio.mos" "Simulate and plot"), - Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( - coordinateSystem(preserveAspectRatio=false)), - Documentation(revisions=" -
                                  -
                                • -June 1, 2022, by Sen Huang:
                                  -First implementation
                                  -
                                • -
                                -", info=" -

                                -Validation test for the block - -Buildings.Controls.OBC.Utilities.BaseClasses.RelayFeedbackCalculation. -

                                -")); -end RelayHalfPeriodRatio; diff --git a/Buildings/Controls/OBC/Utilities/BaseClasses/Validation/RelayProcess.mo b/Buildings/Controls/OBC/Utilities/BaseClasses/Validation/RelayProcess.mo deleted file mode 100644 index eb5e88e682c..00000000000 --- a/Buildings/Controls/OBC/Utilities/BaseClasses/Validation/RelayProcess.mo +++ /dev/null @@ -1,42 +0,0 @@ -within Buildings.Controls.OBC.Utilities.BaseClasses.Validation; -model RelayProcess - "Test model for RelayProcess" - extends Modelica.Icons.Example; - Buildings.Controls.OBC.Utilities.BaseClasses.RelayProcess relayPrcoess - "Calculating the length of the On period and the Off period" - annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - Buildings.Controls.OBC.CDL.Logical.Sources.TimeTable relayResponse( - table=[0,1;0.1,0; 0.3,0; 0.7,1; 0.83,0; 0.85,1], period=2) - "Mimicking the response for a relay controller" - annotation (Placement(transformation(extent={{-60,-20},{-40,0}}))); - CDL.Continuous.Sources.ModelTime modTim - "Simulation time" - annotation (Placement(transformation(extent={{-60,10},{-40,30}}))); -equation - connect(relayPrcoess.On, relayResponse.y[1]) annotation (Line(points={{-12,-6}, - {-20,-6},{-20,-10},{-38,-10}}, color={255,0,255})); - connect(modTim.y, relayPrcoess.tim) annotation (Line(points={{-38,20},{-20,20}, - {-20,6},{-12,6}}, color={0,0,127})); - annotation ( - experiment( - StopTime=1.0, - Tolerance=1e-06), - __Dymola_Commands( - file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/BaseClasses/Validation/RelayProcess.mos" "Simulate and plot"), - Icon(coordinateSystem(preserveAspectRatio=false)), Diagram( - coordinateSystem(preserveAspectRatio=false)), - Documentation(revisions=" -
                                  -
                                • -June 1, 2022, by Sen Huang:
                                  -First implementation
                                  -
                                • -
                                -", info=" -

                                -Validation test for the block - -Buildings.Controls.OBC.Utilities.BaseClasses.RelayProcess. -

                                -")); -end RelayProcess; diff --git a/Buildings/Controls/OBC/Utilities/BaseClasses/Validation/package.order b/Buildings/Controls/OBC/Utilities/BaseClasses/Validation/package.order deleted file mode 100644 index e5f451e5a40..00000000000 --- a/Buildings/Controls/OBC/Utilities/BaseClasses/Validation/package.order +++ /dev/null @@ -1,4 +0,0 @@ -NormalizedTimeDelay -Relay -RelayProcess -RelayHalfPeriodRatio diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PI.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PI.mo index 36edf0b8472..9ed2100c09d 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PI.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PI.mo @@ -1,36 +1,37 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo; -block PI "Identifies the parameters of a PI controller" +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; +block PI "Identify the parameters of a PI controller" Buildings.Controls.OBC.CDL.Interfaces.RealInput kp(min=1E-6) - "Connector for the signal of the gain of a first order time-delayed model" + "Gain of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,40},{-100,80}}), iconTransformation(extent={{-140,40},{-100,80}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput T(min=0) - "Connector for the signal of the time constant of a first order time-delayed model" + "Time constant of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,-20},{-100,20}}), iconTransformation(extent={{-140,-20},{-100,20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput L(min=1E-6) - "Connector for the signal of the time delay of a first order time-delayed model" + "Time delay of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput k - "Connector for control gain signal" - annotation (Placement(transformation(extent={{100,50},{120,70}}))); + "Control gain signal" + annotation (Placement(transformation(extent={{100,40},{140,80}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput Ti - "Connector for time constant signal for the integral term" - annotation (Placement(transformation(extent={{100,-50},{120,-30}}))); - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PIGain gain + "Time constant signal for the integral term" + annotation (Placement(transformation(extent={{100,-50},{140,-10}}))); + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIGain gain "Calculate the control gain" annotation (Placement(transformation(extent={{-10,20},{10,40}}))); - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PIIntegralTime + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIIntegralTime integralTime "Calculate the integral time" annotation (Placement(transformation(extent={{-10,-40},{10,-20}}))); equation - connect(gain.k, k) annotation (Line(points={{11,30},{96,30},{96,60},{110,60}}, + connect(gain.k, k) annotation (Line(points={{12,30},{80,30},{80,60},{120,60}}, color={0,0,127})); - connect(integralTime.Ti, Ti) annotation (Line(points={{11,-30},{94,-30},{94,-40}, - {110,-40}}, color={0,0,127})); + connect(integralTime.Ti, Ti) annotation (Line(points={{12,-30},{94,-30},{94, + -30},{120,-30}}, + color={0,0,127})); connect(integralTime.T, gain.T) annotation (Line(points={{-12,-24},{-40,-24}, {-40,30},{-12,30}}, color={0,0,127})); connect(integralTime.L, gain.L) annotation (Line(points={{-12,-36},{-20,-36}, @@ -41,7 +42,7 @@ equation -12,24}}, color={0,0,127})); connect(gain.kp, kp) annotation (Line(points={{-12,36},{-40,36},{-40,60},{ -120,60}}, color={0,0,127})); - annotation (defaultComponentName = "pI", + annotation (defaultComponentName = "PI", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-100,-100},{100,100}}, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo index fb6721ebdee..fa900c03b54 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo @@ -1,42 +1,43 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; block PID "Identifies the parameters of a PID controller" Buildings.Controls.OBC.CDL.Interfaces.RealInput kp(min=1E-6) - "Connector for the signal of the gain of a first order time-delayed model" + "Gain of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,40},{-100,80}}), iconTransformation(extent={{-140,40},{-100,80}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput T(min=0) - "Connector for the signal of the time constant of a first order time-delayed model" + "Time constant of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,-20},{-100,20}}), iconTransformation(extent={{-140,-20},{-100,20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput L(min=1E-6) - "Connector for the signal of the time delay of a first order time-delayed model" + "Time delay of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput k - "Connector for control gain signal" - annotation (Placement(transformation(extent={{100,50},{120,70}}))); + "Control gain signal" + annotation (Placement(transformation(extent={{100,50},{140,90}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput Ti "Connector for time constant signal for the integral term" - annotation (Placement(transformation(extent={{100,-10},{120,10}}))); + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput Td "Connector for time constant signal for the derivative term" - annotation (Placement(transformation(extent={{100,-70},{120,-50}}))); - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PIDGain gain + annotation (Placement(transformation(extent={{100,-90},{140,-50}}))); + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIDGain gain "Calculate the control gain" annotation (Placement(transformation(extent={{-10,40},{10,60}}))); - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PIDIntegralTime + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIDIntegralTime integralTime "Calculate the integral time" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PIDDerivativeTime + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIDDerivativeTime derivativeTime "Calculate the derivative time" annotation (Placement(transformation(extent={{-10,-70},{10,-50}}))); - + equation connect(derivativeTime.Td, Td) - annotation (Line(points={{11,-60},{110,-60}}, color={0,0,127})); + annotation (Line(points={{12,-60},{60,-60},{60,-70},{120,-70}}, + color={0,0,127})); connect(integralTime.Ti, Ti) - annotation (Line(points={{11,0},{110,0}}, color={0,0,127})); - connect(gain.k, k) annotation (Line(points={{11,50},{94,50},{94,60},{110,60}}, + annotation (Line(points={{12,0},{120,0}}, color={0,0,127})); + connect(gain.k, k) annotation (Line(points={{12,50},{94,50},{94,70},{120,70}}, color={0,0,127})); connect(integralTime.T, gain.T) annotation (Line(points={{-12,6},{-40,6},{-40, 50},{-12,50}}, color={0,0,127})); @@ -52,7 +53,7 @@ equation {-40,50},{-12,50}}, color={0,0,127})); connect(L, gain.L) annotation (Line(points={{-120,-60},{-26,-60},{-26,44},{ -12,44}}, color={0,0,127})); - annotation (defaultComponentName = "pID", + annotation (defaultComponentName = "PID", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-100,-100},{100,100}}, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo index 9f77d9b80a4..ecc11ae7d56 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo @@ -1,19 +1,19 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo; -block PIDDerivativeTime "Identifies the derivative time of a PID controller" +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; +block PIDDerivativeTime "Identify the derivative time of a PID controller" Buildings.Controls.OBC.CDL.Interfaces.RealInput T(min=0) - "Connector for the signal of the time constant of a first order time-delayed model" + "Time constant of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,40},{-100,80}}), iconTransformation(extent={{-140,40},{-100,80}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput L(min=1E-6) - "Connector for the signal of the time delay of a first order time-delayed model" + "Time delay of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput Td - "Connector for time constant signal for the derivative term" - annotation (Placement(transformation(extent={{100,-10},{120,10}}))); + "Time constant signal for the derivative term" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai1(k=0.3) "Calculate the product of 0.3 and the time delay" - annotation (Placement(transformation(extent={{-80,-50},{-60,-30}}))); + annotation (Placement(transformation(extent={{-80,-70},{-60,-50}}))); Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai2(k=0.5) "Calculate the product of 0.5 and the input time constant" annotation (Placement(transformation(extent={{-80,30},{-60,50}}))); @@ -26,13 +26,12 @@ block PIDDerivativeTime "Identifies the derivative time of a PID controller" Buildings.Controls.OBC.CDL.Continuous.Divide div "Calculate the output of mul divided by the output of add" annotation (Placement(transformation(extent={{20,-10},{40,10}}))); - + equation - connect(div.y, Td) - annotation (Line(points={{42,0},{110,0}}, color={0,0,127})); - connect(gai1.u, L) annotation (Line(points={{-82,-40},{-96,-40},{-96,-60},{ - -120,-60}}, color={0,0,127})); - connect(gai1.y, add.u2) annotation (Line(points={{-58,-40},{-50,-40},{-50,-56}, + connect(div.y, Td) annotation (Line(points={{42,0},{120,0}}, color={0,0,127})); + connect(gai1.u, L) annotation (Line(points={{-82,-60},{-96,-60},{-96,-60},{-120, + -60}}, color={0,0,127})); + connect(gai1.y, add.u2) annotation (Line(points={{-58,-60},{-50,-60},{-50,-56}, {-42,-56}}, color={0,0,127})); connect(add.u1, T) annotation (Line(points={{-42,-44},{-48,-44},{-48,60},{ -120,60}}, color={0,0,127})); @@ -46,7 +45,7 @@ equation color={0,0,127})); connect(div.u2, add.y) annotation (Line(points={{18,-6},{12,-6},{12,-50},{-18, -50}}, color={0,0,127})); - annotation (defaultComponentName = "pIDDerivativeTime", + annotation (defaultComponentName = "PIDDerivativeTime", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-100,-100},{100,100}}, @@ -75,8 +74,8 @@ Td = 0.5LT/(0.3L+T),

                                Validation

                                This block was validated analytically, see - -Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Validation.PIDDerivativeTime. + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDDerivativeTime.

                                References

                                Åström, Karl Johan, and Tore Hägglund. "Revisiting the Ziegler–Nichols step response method for PID control." Journal of process control 14.6 (2004): 635-650.

                                diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo index d53e7fb9a70..4ff2011b2c8 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo @@ -1,23 +1,23 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo; -block PIDGain "Identifies the control gain of a PID controller" +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; +block PIDGain "Identify the control gain of a PID controller" Buildings.Controls.OBC.CDL.Interfaces.RealInput kp(min=1E-6) - "Connector for the gain of a first order time-delayed model" + "Gain of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,40},{-100,80}}), iconTransformation(extent={{-140,40},{-100,80}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput T(min=0) - "Connector for the time constant of a first order time-delayed model" + "Time constant of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,-20},{-100,20}}), iconTransformation(extent={{-140,-20},{-100,20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput L(min=1E-6) - "Connector for the time delay of a first order time-delayed model" + "Time delay of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput k - "Connector for control gain signal" - annotation (Placement(transformation(extent={{100,-10},{120,10}}))); + "Control gain signal" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); Buildings.Controls.OBC.CDL.Continuous.Divide div1 "Calculate the inverse of the input gain" - annotation (Placement(transformation(extent={{-38,40},{-18,60}}))); + annotation (Placement(transformation(extent={{-38,40},{-18,80}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.Constant const(final k=1) "Constant parameter" annotation (Placement(transformation(extent={{-80,70},{-60,90}}))); @@ -33,12 +33,12 @@ block PIDGain "Identifies the control gain of a PID controller" Buildings.Controls.OBC.CDL.Continuous.Multiply mul "Calcualte the sum of the output of addPar and the output of div1" annotation (Placement(transformation(extent={{60,-10},{80,10}}))); - + equation - connect(div1.u2, kp) annotation (Line(points={{-40,44},{-94,44},{-94,60},{ - -120,60}}, color={0,0,127})); - connect(const.y, div1.u1) annotation (Line(points={{-58,80},{-50,80},{-50,56}, - {-40,56}}, color={0,0,127})); + connect(div1.u2, kp) annotation (Line(points={{-40,48},{-94,48},{-94,60},{-120, + 60}}, color={0,0,127})); + connect(const.y, div1.u1) annotation (Line(points={{-58,80},{-50,80},{-50,72}, + {-40,72}}, color={0,0,127})); connect(div2.u2, L) annotation (Line(points={{-62,-36},{-80,-36},{-80,-60},{ -120,-60}}, color={0,0,127})); connect(div2.u1, T) annotation (Line(points={{-62,-24},{-80,-24},{-80,0},{ @@ -47,12 +47,12 @@ equation annotation (Line(points={{-22,-30},{-38,-30}}, color={0,0,127})); connect(gai1.y, add.u) annotation (Line(points={{2,-30},{18,-30}}, color={0,0,127})); - connect(mul.y, k) annotation (Line(points={{82,0},{110,0}}, color={0,0,127})); - connect(div1.y, mul.u1) annotation (Line(points={{-16,50},{42,50},{42,6},{58, - 6}}, color={0,0,127})); + connect(mul.y, k) annotation (Line(points={{82,0},{120,0}}, color={0,0,127})); + connect(div1.y, mul.u1) annotation (Line(points={{-16,60},{42,60},{42,6},{58,6}}, + color={0,0,127})); connect(mul.u2, add.y) annotation (Line(points={{58,-6},{48,-6},{48,-30},{42, -30}}, color={0,0,127})); - annotation (defaultComponentName = "pIDGain", + annotation (defaultComponentName = "PIDGain", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-100,-100},{100,100}}, @@ -82,8 +82,8 @@ k = 1/kp + (0.2 + 0.45T/L),

                                Validation

                                This block was validated analytically, see - -Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Validation.PIDGain. + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDGain.

                                References

                                Åström, Karl Johan, and Tore Hägglund. "Revisiting the Ziegler–Nichols step response method for PID control." Journal of process control 14.6 (2004): 635-650.

                                diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo index e3d6e11c80a..b2feda368ff 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo @@ -1,16 +1,16 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; block PIDIntegralTime "Identifies the integral time of a PID controller" Buildings.Controls.OBC.CDL.Interfaces.RealInput T(min=0) - "Connector for the time constant of a first order time-delayed model" + "Time constant of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,40},{-100,80}}), iconTransformation(extent={{-140,40},{-100,80}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput L(min=1E-6) - "Connector for the time delay of a first order time-delayed model" + "Time delay of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput Ti - "Connector for time constant signal for the integral term" - annotation (Placement(transformation(extent={{100,-10},{120,10}}))); + "Time constant signal for the integral term" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); Buildings.Controls.OBC.CDL.Continuous.Add add1 "Calculate the sum of the time delay and the output of gai3" annotation (Placement(transformation(extent={{-40,10},{-20,30}}))); @@ -32,7 +32,7 @@ block PIDIntegralTime "Identifies the integral time of a PID controller" Buildings.Controls.OBC.CDL.Continuous.Multiply mul "Calculate the product of the output of div and the time delay" annotation (Placement(transformation(extent={{40,-10},{60,10}}))); - + equation connect(gai1.u, L) annotation (Line(points={{-82,-40},{-90,-40},{-90,-60},{ -120,-60}}, color={0,0,127})); @@ -53,12 +53,12 @@ equation connect(mul.u2, L) annotation (Line(points={{38,-6},{24,-6},{24,-60},{-120,-60}}, color={0,0,127})); connect(mul.y, Ti) - annotation (Line(points={{62,0},{110,0}}, color={0,0,127})); + annotation (Line(points={{62,0},{120,0}}, color={0,0,127})); connect(div.u2, add1.y) annotation (Line(points={{-2,6},{-10,6},{-10,20},{-18, 20}}, color={0,0,127})); connect(div.u1, add2.y) annotation (Line(points={{-2,-6},{-10,-6},{-10,-20},{-18, -20}}, color={0,0,127})); - annotation (defaultComponentName = "pIDIntegralTime", + annotation (defaultComponentName = "PIDIntegralTime", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-100,-100},{100,100}}, @@ -87,8 +87,8 @@ Ti = (0.4L + 0.8T)/(L + 0.1T)L,

                                Validation

                                This block was validated analytically, see - -Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Validation.PIDIntegralTime. + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDIntegralTime.

                                References

                                Åström, Karl Johan, and Tore Hägglund. "Revisiting the Ziegler–Nichols step response method for PID control." Journal of process control 14.6 (2004): 635-650.

                                diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo index 524f3c0e0d8..854eeecf415 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo @@ -1,20 +1,20 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; block PIGain "Identifies the control gain of a PI controller" Buildings.Controls.OBC.CDL.Interfaces.RealInput kp(min=1E-6) - "Connector of gain of a first order time-delayed model" + "Gain of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,40},{-100,80}}), iconTransformation(extent={{-140,40},{-100,80}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput T(min=1E-6) - "Connector of time constant of a first order time-delayed model" + "Time constant of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,-20},{-100,20}}), iconTransformation(extent={{-140,-20},{-100,20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput L(min=1E-6) - "Connector of time delay of a first order time-delayed model" + "Time delay of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput k - "Connector for control gain signal" - annotation (Placement(transformation(extent={{100,-10},{120,10}}))); + "Control gain signal" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); Buildings.Controls.OBC.CDL.Continuous.Add add1 "Calculates the sum of the time constant and the time delay" annotation (Placement(transformation(extent={{-60,-40},{-40,-20}}))); @@ -86,7 +86,7 @@ equation {-62,56}}, color={0,0,127})); connect(add2.u2, mul3.y) annotation (Line(points={{18,24},{10,24},{10,16},{48, 16},{48,0},{42,0}}, color={0,0,127})); - connect(add2.y, k) annotation (Line(points={{42,30},{60,30},{60,0},{110,0}}, + connect(add2.y, k) annotation (Line(points={{42,30},{60,30},{60,0},{120,0}}, color={0,0,127})); connect(div2.y, sub.u2) annotation (Line(points={{42,-50},{44,-50},{44,-56},{ @@ -95,7 +95,7 @@ equation {48,-44}}, color={0,0,127})); connect(sub.y, mul3.u2) annotation (Line(points={{72,-50},{80,-50},{80,-22},{ 10,-22},{10,-6},{18,-6}}, color={0,0,127})); - annotation (defaultComponentName = "pIGain", + annotation (defaultComponentName = "PIGain", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-100,-100},{100,100}}, @@ -127,8 +127,8 @@ where kp is the gain of the first-order time-delayed model;

                                Validation

                                This block was validated analytically, see - -Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Validation.PIGain. + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIGain.

                                References

                                Garpinger, Olof, Tore Hägglund, and Karl Johan Åström (2014) "Performance and robustness trade-offs in PID control." Journal of Process Control 24.5 (2014): 568-577.

                                diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo index 097e227cdc4..84ecf588ad1 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo @@ -1,16 +1,16 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; block PIIntegralTime "Identifies the integral time of a PI controller" Buildings.Controls.OBC.CDL.Interfaces.RealInput T(min=1E-6) - "Connector for time constant of a first order time-delayed model" + "Time constant of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,40},{-100,80}}), iconTransformation(extent={{-140,40},{-100,80}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput L(min=1E-6) - "Connector for time delay of a first order time-delayed model" + "Time delay of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput Ti(min=1E-6) - "Connector for time constant for the integral term" - annotation (Placement(transformation(extent={{100,-10},{120,10}}))); + "Time constant for the integral term" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); Buildings.Controls.OBC.CDL.Continuous.Add add1 "Calculate the sum of the output of mul3 and the output of gai1" annotation (Placement(transformation(extent={{0,20},{20,40}}))); @@ -50,7 +50,7 @@ block PIIntegralTime "Identifies the integral time of a PI controller" equation connect(add2.y, Ti) - annotation (Line(points={{82,0},{110,0}}, color={0,0,127})); + annotation (Line(points={{82,0},{120,0}}, color={0,0,127})); connect(gai4.u, L) annotation (Line(points={{-82,-20},{-88,-20},{-88,-60},{ -120,-60}}, color={0,0,127})); connect(mul3.u1, T) annotation (Line(points={{-62,66},{-90,66},{-90,60},{-120, @@ -91,7 +91,7 @@ equation -88,24},{-88,16},{-82,16}}, color={0,0,127})); connect(mul4.y, div.u1) annotation (Line(points={{-58,10},{-4,10},{-4,76},{18, 76}}, color={0,0,127})); - annotation (defaultComponentName = "pIIntegralTime", + annotation (defaultComponentName = "PIIntegralTime", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-100,-100},{100,100}}, @@ -120,8 +120,8 @@ Ti = 0.35L + 13LT2/(T2 + 12LT + 7L2)

                                Validation

                                This block was validated analytically, see - -Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Validation.PIIntegralTime. + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIIntegralTime.

                                References

                                diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo index a2969d9f9ae..dd024c106d3 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo @@ -1,6 +1,6 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Validation; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation; model PI "Test model for PI" - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PI pI + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PI pI "Calculate the parameters for a PI controller" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable ReferenceData(table=[0,1,0.5,0.3,0.343,0.469; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo index b20730817d1..634c343b3ef 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo @@ -1,6 +1,6 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Validation; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation; model PID "Test model for PID" - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PID pID + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PID pID "Calculate the parameters for a PI controller" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable ReferenceData(table=[0,1,0.5,0.3,0.95,0.446, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mo index b814c84a2a1..cadcb0a04b3 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mo @@ -1,6 +1,6 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Validation; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation; model PIDDerivativeTime "Test model for PIDDerivativeTime" - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PIDDerivativeTime + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIDDerivativeTime pIDDerivativeTime "Calculate the integral time for a PI controller" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable ReferenceData(table=[0,1,0.5,0.3,0.95,0.446, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mo index df0d830d65b..b28c6d580dc 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mo @@ -1,6 +1,6 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Validation; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation; model PIDGain "Test model for PIDGain" - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PIDGain pIDGain + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIDGain pIDGain "Calculate the control gain for a PID controller" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable ReferenceData(table=[0,1,0.5,0.3,0.95,0.446, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mo index 7c3c779ca5a..36e2dcb61a6 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mo @@ -1,6 +1,6 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Validation; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation; model PIDIntegralTime "Test model for PIDIntergralTime" - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PIDIntegralTime + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIDIntegralTime pIDIntegralTime "Calculate the integral time for a PID controller" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable ReferenceData(table=[0,1,0.5,0.3,0.95,0.446, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mo index e4cfa5a1b5a..aea523bfe72 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mo @@ -1,4 +1,4 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Validation; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation; model PIGain "Test model for PIGain" Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable ReferenceData(table=[0, 1,0.5,0.3,0.343,0.469; 0.002,1.002,0.501,0.301,0.342,0.47; 0.004,1.004, @@ -264,7 +264,7 @@ model PIGain "Test model for PIGain" 0.171,0.938; 1,2,1,0.6,0.171,0.938], extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) "Data for validating the PIgain block" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PIGain + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIGain pIGain "Calculate the gain for a PI controller" annotation (Placement(transformation(extent={{-8,-10},{12,10}}))); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mo index 39f424d5a9d..3d966233291 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mo @@ -1,6 +1,6 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Validation; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation; model PIIntegralTime "Test model for PIIntergralTime" - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PIIntegralTime + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIIntegralTime pIIntegralTime "Calculate the integral time for a PI controller" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable ReferenceData(table=[0,1,0.5,0.3,0.343,0.469; @@ -251,7 +251,7 @@ model PIIntegralTime "Test model for PIIntergralTime" extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) "Data for validating the pIIntegralTime block" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); - + equation connect(ReferenceData.y[2], pIIntegralTime.T) annotation (Line(points={{-38,0}, {-20,0},{-20,6},{-12,6}}, color={0,0,127})); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/package.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/package.mo index ef76c633b75..ea9904db884 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/package.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/package.mo @@ -1,4 +1,4 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; package Validation "Collection of models that validate the blocks in the FirstOrderTimedelayed" annotation ( preferredView="info", diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.mo index 27165d3166d..04af62a9b72 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.mo @@ -1,5 +1,5 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner; -package Amigo "Package with components related to AMIGO tuner" +package AMIGO "Package with components related to AMIGO tuner" annotation (Documentation(info="

                                This package contains the blocks to implement the AMIGO tuner.

                                ")); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/package.order index 74fd0880c0f..baefc10fa89 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/package.order +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/package.order @@ -1 +1 @@ -Amigo +AMIGO \ No newline at end of file diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/PIDWithAutotuningAmigoFOTD.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/PIDWithAutotuningAmigoFOTD.mo index af66217d989..a2289b37e5e 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/PIDWithAutotuningAmigoFOTD.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/PIDWithAutotuningAmigoFOTD.mo @@ -67,10 +67,10 @@ block PIDWithAutotuningAmigoFOTD deaBan=deaBan) "A block to approximate the control process" annotation (Placement(transformation(extent={{-20,40},{-40,60}}))); - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PI piParameters + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PI piParameters if not with_D "A block to calculates the parameters of a PI controller" annotation (Placement(transformation(extent={{-60,70},{-80,90}}))); - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.PID pidParameters + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PID pidParameters if with_D "A block to calculates the parameters of a PID controller" annotation (Placement(transformation(extent={{-60,40},{-80,60}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.ResponseProcess responseProcess(yHig=yHig @@ -138,22 +138,25 @@ equation annotation (Line(points={{-58,50},{-41,50}}, color={0,0,127})); connect(pidParameters.L, controlProcessModel.L) annotation (Line(points={{-58, 44},{-44,44},{-44,42},{-41,42}}, color={0,0,127})); - connect(pidParameters.k, samk.u) annotation (Line(points={{-81,56},{-94,56},{-94, - -20},{-42,-20}}, color={0,0,127})); - connect(pidParameters.Ti, samTi.u) annotation (Line(points={{-81,50},{-88,50}, + connect(pidParameters.k, samk.u) annotation (Line(points={{-82,57},{-94,57},{ + -94,-20},{-42,-20}}, + color={0,0,127})); + connect(pidParameters.Ti, samTi.u) annotation (Line(points={{-82,50},{-88,50}, {-88,-48},{-82,-48}}, color={0,0,127})); - connect(samTd.u, pidParameters.Td) annotation (Line(points={{-42,-70},{-48,-70}, - {-48,34},{-82,34},{-82,44},{-81,44}}, color={0,0,127})); + connect(samTd.u, pidParameters.Td) annotation (Line(points={{-42,-70},{-48, + -70},{-48,34},{-82,34},{-82,43},{-82,43}}, + color={0,0,127})); connect(piParameters.kp, controlProcessModel.k) annotation (Line(points={{-58, 86},{-50,86},{-50,56},{-41,56}}, color={0,0,127})); connect(piParameters.T, controlProcessModel.T) annotation (Line(points={{-58,80}, {-52,80},{-52,50},{-41,50}}, color={0,0,127})); connect(piParameters.L, controlProcessModel.L) annotation (Line(points={{-58,74}, {-54,74},{-54,44},{-44,44},{-44,42},{-41,42}}, color={0,0,127})); - connect(piParameters.k, samk.u) annotation (Line(points={{-81,86},{-94,86},{-94, - -20},{-42,-20}}, color={0,0,127})); - connect(piParameters.Ti, samTi.u) annotation (Line(points={{-81,76},{-88,76},{ - -88,-48},{-82,-48}}, color={0,0,127})); + connect(piParameters.k, samk.u) annotation (Line(points={{-82,86},{-94,86},{ + -94,-20},{-42,-20}}, + color={0,0,127})); + connect(piParameters.Ti, samTi.u) annotation (Line(points={{-82,77},{-88,77}, + {-88,-48},{-82,-48}},color={0,0,127})); connect(responseProcess.triggerEnd, controlProcessModel.triggerEnd) annotation (Line(points={{-1,42},{-8,42},{-8,32},{-36,32},{-36,38}}, color={ 255,0,255})); From 8544b35ea85930416bff974d157f66f25db0f8cc Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Fri, 26 Aug 2022 00:31:10 -0400 Subject: [PATCH 024/214] clean up --- .../AutoTuner/AMIGO/PIDDerivativeTime.mo | 8 +- .../AutoTuner/AMIGO/PIDGain.mo | 8 +- .../AutoTuner/AMIGO/PIDIntegralTime.mo | 8 +- .../AutoTuner/AMIGO/PIGain.mo | 23 +- .../AutoTuner/AMIGO/Validation/PI.mo | 10 +- .../AutoTuner/AMIGO/Validation/PID.mo | 10 +- .../AMIGO/Validation/PIDDerivativeTime.mo | 8 +- .../AutoTuner/AMIGO/Validation/PIDGain.mo | 10 +- .../AMIGO/Validation/PIDIntegralTime.mo | 8 +- .../AutoTuner/AMIGO/Validation/PIGain.mo | 10 +- .../AMIGO/Validation/PIIntegralTime.mo | 6 +- .../AutoTuner/AMIGO/package.mo | 20 +- .../PIDWithAutotuningAmigoFOTD.mo | 162 +++--- .../PIDWithAutotuning/Relay/Controller.mo | 45 +- .../Relay/HalfPeriodRatio.mo | 90 +-- .../Relay/NormalizedTimeDelay.mo | 24 +- .../PIDWithAutotuning/Relay/OnOffPeriod.mo | 39 +- .../Relay/ResponseProcess.mo | 68 +-- .../Relay/Validation/Controller.mo | 10 +- .../Relay/Validation/HalfPeriodRatio.mo | 16 +- .../Relay/Validation/NormalizedTimeDelay.mo | 210 +++---- .../Relay/Validation/OnOffPeriod.mo | 18 +- .../Relay/Validation/ResponseProcess.mo | 19 +- .../ControlProcessModel.mo | 108 ++-- .../FirstOrderTimedelayed/Gain.mo | 41 +- .../TimeConstantDelay.mo | 67 +-- .../Validation/ControlProcessModel.mo | 549 +++++++++--------- .../FirstOrderTimedelayed/Validation/Gain.mo | 14 +- .../Validation/TimeConstantDelay.mo | 415 ++++++------- .../AutoTuner/Amigo/Validation/PI.mos | 6 +- .../AutoTuner/Amigo/Validation/PID.mos | 8 +- .../Amigo/Validation/PIDDerivativeTime.mos | 6 +- .../AutoTuner/Amigo/Validation/PIDGain.mos | 6 +- .../Amigo/Validation/PIDIntegralTime.mos | 6 +- .../AutoTuner/Amigo/Validation/PIGain.mos | 6 +- .../Amigo/Validation/PIIntegralTime.mos | 6 +- .../Relay/Validation/Controller.mos | 8 +- .../Relay/Validation/HalfPeriodRatio.mos | 4 +- .../Relay/Validation/NormalizedTimeDelay.mos | 4 +- .../Relay/Validation/OnOffPeriod.mos | 4 +- .../Relay/Validation/ResponseProcess.mos | 8 +- .../Validation/ControlProcessModel.mos | 4 +- .../FirstOrderTimedelayed/Validation/Gain.mos | 4 +- .../Validation/TimeConstantDelay.mos | 4 +- 44 files changed, 1078 insertions(+), 1030 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo index ecc11ae7d56..d9848f1d9df 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo @@ -1,4 +1,4 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; block PIDDerivativeTime "Identify the derivative time of a PID controller" Buildings.Controls.OBC.CDL.Interfaces.RealInput T(min=0) "Time constant of a first order time-delayed model" @@ -78,6 +78,10 @@ This block was validated analytically, see Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDDerivativeTime.

                                References

                                -

                                Åström, Karl Johan, and Tore Hägglund. "Revisiting the Ziegler–Nichols step response method for PID control." Journal of process control 14.6 (2004): 635-650.

                                +

                                +Åström, Karl Johan and Tore Hägglund (2004) +\"Revisiting the Ziegler–Nichols step response method for PID control.\" +Journal of process control 14.6 (2004): 635-650. +

                                ")); end PIDDerivativeTime; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo index 4ff2011b2c8..2477302ce15 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo @@ -1,4 +1,4 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; block PIDGain "Identify the control gain of a PID controller" Buildings.Controls.OBC.CDL.Interfaces.RealInput kp(min=1E-6) "Gain of a first order time-delayed model" @@ -86,6 +86,10 @@ This block was validated analytically, see Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDGain.

                                References

                                -

                                Åström, Karl Johan, and Tore Hägglund. "Revisiting the Ziegler–Nichols step response method for PID control." Journal of process control 14.6 (2004): 635-650.

                                +

                                +Åström, Karl Johan and Tore Hägglund (2004) +\"Revisiting the Ziegler–Nichols step response method for PID control.\" +Journal of process control 14.6 (2004): 635-650. +

                                ")); end PIDGain; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo index b2feda368ff..49e3e4ccfbb 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo @@ -1,4 +1,4 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; block PIDIntegralTime "Identifies the integral time of a PID controller" Buildings.Controls.OBC.CDL.Interfaces.RealInput T(min=0) "Time constant of a first order time-delayed model" @@ -91,6 +91,10 @@ This block was validated analytically, see Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDIntegralTime.

                                References

                                -

                                Åström, Karl Johan, and Tore Hägglund. "Revisiting the Ziegler–Nichols step response method for PID control." Journal of process control 14.6 (2004): 635-650.

                                +

                                +Åström, Karl Johan and Tore Hägglund (2004) +\"Revisiting the Ziegler–Nichols step response method for PID control.\" +Journal of process control 14.6 (2004): 635-650. +

                                ")); end PIDIntegralTime; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo index 854eeecf415..c9225aa79c0 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo @@ -1,4 +1,4 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; block PIGain "Identifies the control gain of a PI controller" Buildings.Controls.OBC.CDL.Interfaces.RealInput kp(min=1E-6) "Gain of a first order time-delayed model" @@ -13,22 +13,22 @@ block PIGain "Identifies the control gain of a PI controller" annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput k - "Control gain signal" + "Control gain of a PI controller" annotation (Placement(transformation(extent={{100,-20},{140,20}}))); Buildings.Controls.OBC.CDL.Continuous.Add add1 - "Calculates the sum of the time constant and the time delay" + "Calculate the sum of the time constant and the time delay" annotation (Placement(transformation(extent={{-60,-40},{-40,-20}}))); Buildings.Controls.OBC.CDL.Continuous.Add add2 - "Calculates the sume of the output of mul3 and the output of div1" + "Calculate the sume of the output of mul3 and the output of div1" annotation (Placement(transformation(extent={{20,20},{40,40}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.Constant const1(final k=0.35) - "Constant parameter 1" + "Constant parameter 1 (value 0.35)" annotation (Placement(transformation(extent={{-10,-90},{10,-70}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.Constant const2(final k=0.15) - "Constant parameter 2" + "Constant parameter 2 (value 0.15)" annotation (Placement(transformation(extent={{-100,70},{-80,90}}))); Buildings.Controls.OBC.CDL.Continuous.Divide div1 - "Calculate 0.15 divided by the gain" + "Calculate 0.15 divided by the control gain" annotation (Placement(transformation(extent={{-60,40},{-40,60}}))); Buildings.Controls.OBC.CDL.Continuous.Divide div2 "Calculate the output of mul2 divided by the output of mul1" @@ -88,8 +88,7 @@ equation 16},{48,0},{42,0}}, color={0,0,127})); connect(add2.y, k) annotation (Line(points={{42,30},{60,30},{60,0},{120,0}}, color={0,0,127})); - connect(div2.y, sub.u2) - annotation (Line(points={{42,-50},{44,-50},{44,-56},{ + connect(div2.y, sub.u2) annotation (Line(points={{42,-50},{44,-50},{44,-56},{ 48,-56}}, color={0,0,127})); connect(const1.y, sub.u1) annotation (Line(points={{12,-80},{46,-80},{46,-44}, {48,-44}}, color={0,0,127})); @@ -131,6 +130,10 @@ This block was validated analytically, see Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIGain.

                                References

                                -

                                Garpinger, Olof, Tore Hägglund, and Karl Johan Åström (2014) "Performance and robustness trade-offs in PID control." Journal of Process Control 24.5 (2014): 568-577.

                                +

                                +Garpinger, Olof, Tore Hägglund, and Karl Johan Åström (2014) +\"Performance and robustness trade-offs in PID control.\" +Journal of Process Control 24.5 (2014): 568-577. +

                                ")); end PIGain; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo index dd024c106d3..794bbb3753d 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo @@ -1,6 +1,6 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation; model PI "Test model for PI" - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PI pI + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PI PI "Calculate the parameters for a PI controller" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable ReferenceData(table=[0,1,0.5,0.3,0.343,0.469; @@ -267,13 +267,13 @@ model PI "Test model for PI" 0.171,0.938; 1,2,1,0.6,0.171,0.938], extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) "Data for validating the PI block" annotation (Placement(transformation(extent={{-58,-10},{-38,10}}))); - + equation - connect(ReferenceData.y[1], pI.kp) annotation (Line(points={{-36,0},{-20,0},{ + connect(ReferenceData.y[1],PI. kp) annotation (Line(points={{-36,0},{-20,0},{ -20,6},{-12,6}}, color={0,0,127})); - connect(pI.T, ReferenceData.y[2]) + connect(PI.T, ReferenceData.y[2]) annotation (Line(points={{-12,0},{-36,0}}, color={0,0,127})); - connect(pI.L, ReferenceData.y[3]) annotation (Line(points={{-12,-6},{-20,-6}, + connect(PI.L, ReferenceData.y[3]) annotation (Line(points={{-12,-6},{-20,-6}, {-20,0},{-36,0}}, color={0,0,127})); annotation ( experiment( diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo index 634c343b3ef..9645bb904de 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo @@ -1,6 +1,6 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation; model PID "Test model for PID" - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PID pID + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PID PID "Calculate the parameters for a PI controller" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable ReferenceData(table=[0,1,0.5,0.3,0.95,0.446, @@ -310,13 +310,13 @@ model PID "Test model for PID" Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) "Data for validating the PIDDerivativeTime block" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); - + equation - connect(pID.kp, ReferenceData.y[1]) annotation (Line(points={{-12,6},{-20,6}, + connect(PID.kp, ReferenceData.y[1]) annotation (Line(points={{-12,6},{-20,6}, {-20,0},{-38,0}}, color={0,0,127})); - connect(pID.T, ReferenceData.y[2]) + connect(PID.T, ReferenceData.y[2]) annotation (Line(points={{-12,0},{-38,0}}, color={0,0,127})); - connect(pID.L, ReferenceData.y[3]) annotation (Line(points={{-12,-6},{-20,-6}, + connect(PID.L, ReferenceData.y[3]) annotation (Line(points={{-12,-6},{-20,-6}, {-20,0},{-38,0}}, color={0,0,127})); annotation ( experiment( diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mo index cadcb0a04b3..2e2acf0910e 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mo @@ -1,7 +1,7 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation; model PIDDerivativeTime "Test model for PIDDerivativeTime" Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIDDerivativeTime - pIDDerivativeTime "Calculate the integral time for a PI controller" + PIDDerivativeTime "Calculate the integral time for a PI controller" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable ReferenceData(table=[0,1,0.5,0.3,0.95,0.446, 0.127; 0.002,1.002,0.501,0.301,0.948,0.447,0.127; 0.004,1.004,0.502, @@ -310,11 +310,11 @@ model PIDDerivativeTime "Test model for PIDDerivativeTime" Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) "Data for validating the PIDDerivativeTime block" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); - + equation - connect(pIDDerivativeTime.T, ReferenceData.y[2]) annotation (Line(points={{ + connect(PIDDerivativeTime.T, ReferenceData.y[2]) annotation (Line(points={{ -12,6},{-20,6},{-20,0},{-38,0}}, color={0,0,127})); - connect(pIDDerivativeTime.L, ReferenceData.y[3]) annotation (Line(points={{ + connect(PIDDerivativeTime.L, ReferenceData.y[3]) annotation (Line(points={{ -12,-6},{-20,-6},{-20,0},{-38,0}}, color={0,0,127})); annotation ( experiment( diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mo index b28c6d580dc..c2b6a978c37 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mo @@ -1,6 +1,6 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation; model PIDGain "Test model for PIDGain" - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIDGain pIDGain + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIDGain PIDGain "Calculate the control gain for a PID controller" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable ReferenceData(table=[0,1,0.5,0.3,0.95,0.446, @@ -310,13 +310,13 @@ model PIDGain "Test model for PIDGain" Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) "Data for validating the PIDGain block" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); - + equation - connect(ReferenceData.y[1], pIDGain.kp) annotation (Line(points={{-38,0},{-20, + connect(ReferenceData.y[1],PIDGain. kp) annotation (Line(points={{-38,0},{-20, 0},{-20,6},{-12,6}}, color={0,0,127})); - connect(pIDGain.T, ReferenceData.y[2]) + connect(PIDGain.T, ReferenceData.y[2]) annotation (Line(points={{-12,0},{-38,0}}, color={0,0,127})); - connect(pIDGain.L, ReferenceData.y[3]) annotation (Line(points={{-12,-6},{-20, + connect(PIDGain.L, ReferenceData.y[3]) annotation (Line(points={{-12,-6},{-20, -6},{-20,0},{-38,0}}, color={0,0,127})); annotation ( experiment( diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mo index 36e2dcb61a6..db281b0e1a9 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mo @@ -1,7 +1,7 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation; model PIDIntegralTime "Test model for PIDIntergralTime" Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIDIntegralTime - pIDIntegralTime "Calculate the integral time for a PID controller" + PIDIntegralTime "Calculate the integral time for a PID controller" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable ReferenceData(table=[0,1,0.5,0.3,0.95,0.446, 0.127; 0.002,1.002,0.501,0.301,0.948,0.447,0.127; 0.004,1.004,0.502, @@ -310,11 +310,11 @@ model PIDIntegralTime "Test model for PIDIntergralTime" Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) "Data for validating the PIDIntegralTime block" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); - + equation - connect(ReferenceData.y[2], pIDIntegralTime.T) annotation (Line(points={{-38, + connect(ReferenceData.y[2],PIDIntegralTime. T) annotation (Line(points={{-38, 0},{-20,0},{-20,6},{-12,6}}, color={0,0,127})); - connect(pIDIntegralTime.L, ReferenceData.y[3]) annotation (Line(points={{-12, + connect(PIDIntegralTime.L, ReferenceData.y[3]) annotation (Line(points={{-12, -6},{-20,-6},{-20,0},{-38,0}}, color={0,0,127})); annotation ( experiment( diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mo index aea523bfe72..b943cfeedfe 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mo @@ -265,15 +265,15 @@ model PIGain "Test model for PIGain" "Data for validating the PIgain block" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIGain - pIGain "Calculate the gain for a PI controller" + PIGain "Calculate the gain for a PI controller" annotation (Placement(transformation(extent={{-8,-10},{12,10}}))); - + equation - connect(pIGain.kp, ReferenceData.y[1]) annotation (Line(points={{-10,6},{-26, + connect(PIGain.kp, ReferenceData.y[1]) annotation (Line(points={{-10,6},{-26, 6},{-26,0},{-38,0}}, color={0,0,127})); - connect(pIGain.T, ReferenceData.y[2]) + connect(PIGain.T, ReferenceData.y[2]) annotation (Line(points={{-10,0},{-38,0}}, color={0,0,127})); - connect(pIGain.L, ReferenceData.y[3]) annotation (Line(points={{-10,-6},{-26, + connect(PIGain.L, ReferenceData.y[3]) annotation (Line(points={{-10,-6},{-26, -6},{-26,0},{-38,0}}, color={0,0,127})); annotation ( experiment( diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mo index 3d966233291..a1ec49abe52 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mo @@ -1,7 +1,7 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation; model PIIntegralTime "Test model for PIIntergralTime" Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIIntegralTime - pIIntegralTime "Calculate the integral time for a PI controller" + PIIntegralTime "Calculate the integral time for a PI controller" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable ReferenceData(table=[0,1,0.5,0.3,0.343,0.469; 0.002,1.002,0.501,0.301,0.342,0.47; 0.004,1.004,0.502,0.301,0.341,0.471; @@ -253,9 +253,9 @@ model PIIntegralTime "Test model for PIIntergralTime" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); equation - connect(ReferenceData.y[2], pIIntegralTime.T) annotation (Line(points={{-38,0}, + connect(ReferenceData.y[2],PIIntegralTime. T) annotation (Line(points={{-38,0}, {-20,0},{-20,6},{-12,6}}, color={0,0,127})); - connect(pIIntegralTime.L, ReferenceData.y[3]) annotation (Line(points={{-12,-6}, + connect(PIIntegralTime.L, ReferenceData.y[3]) annotation (Line(points={{-12,-6}, {-20,-6},{-20,0},{-38,0}}, color={0,0,127})); annotation ( experiment( diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.mo index 04af62a9b72..383b7266895 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.mo @@ -1,6 +1,20 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner; package AMIGO "Package with components related to AMIGO tuner" annotation (Documentation(info=" -

                                This package contains the blocks to implement the AMIGO tuner.

                                +

                                This package contains the blocks to implement the AMIGO (approximate M-constrained integral gain optimization) tuner. +This AMIGO tuner calculates the parameters of PI/PID controllers based on the parameters of a reduced order model. +This reduced order model is used to approximate the control process.

                                +

                                +

                                References

                                +

                                +Garpinger, Olof, Tore Hägglund, and Karl Johan Åström (2014) +\"Performance and robustness trade-offs in PID control.\" +Journal of Process Control 24.5 (2014): 568-577. +

                                +

                                +Åström, Karl Johan and Tore Hägglund (2004) +\"Revisiting the Ziegler–Nichols step response method for PID control.\" +Journal of process control 14.6 (2004): 635-650. +

                                ")); -end Amigo; +end AMIGO; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/PIDWithAutotuningAmigoFOTD.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/PIDWithAutotuningAmigoFOTD.mo index a2289b37e5e..db04bb53336 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/PIDWithAutotuningAmigoFOTD.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/PIDWithAutotuningAmigoFOTD.mo @@ -1,8 +1,6 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning; block PIDWithAutotuningAmigoFOTD "A autotuning PID controller with an Amigo tuner and a first order time delayed system model" - parameter Real setPoint(min=1E-6) = 0.8 - "Setpoint for the tuning process"; parameter Buildings.Controls.OBC.CDL.Types.SimpleController controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PI "Type of controller"; parameter Real k_start( @@ -22,11 +20,13 @@ block PIDWithAutotuningAmigoFOTD "Start value of the time constant of derivative block" annotation (Dialog(group="Control gains",enable=controllerType == CDL.Types.SimpleController.PD or controllerType == CDL.Types.SimpleController.PID)); parameter Real yHig(min=1E-6) = 1 - "Higher value for the output"; + "Higher value for the relay output"; parameter Real yLow(min=1E-6) = 0.5 - "Lower value for the output"; + "Lower value for the relay output"; parameter Real deaBan(min=1E-6) = 0.5 "Deadband for holding the output value"; + parameter Real yRef = 0.8 + "Reference output for the tuning process"; Buildings.Controls.OBC.CDL.Interfaces.RealInput u_s "Connector for setpoint input signal" annotation (Placement(transformation(extent={{-140,-20},{-100,20}}),iconTransformation(extent={{-140,-20},{-100,20}}))); @@ -39,14 +39,13 @@ block PIDWithAutotuningAmigoFOTD Buildings.Controls.OBC.CDL.Interfaces.RealOutput y "Connector for actuator output signal" annotation (Placement(transformation(extent={{100,-20},{140,20}}),iconTransformation(extent={{100,-20},{140,20}}))); - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Controller relay( - yHig=yHig, - yLow=yLow, - deaBan=deaBan) - "A relay controller" + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Controller rel( + final yHig=yHig, + final yLow=yLow, + final deaBan=deaBan) "A relay controller" annotation (Placement(transformation(extent={{22,20},{42,40}}))); - Buildings.Controls.OBC.Utilities.PIDWithInputGains pid( - controllerType=controllerType) "A pid controller" + Buildings.Controls.OBC.Utilities.PIDWithInputGains PID( + controllerType=controllerType) "A PID controller" annotation (Placement(transformation(extent={{22,-40},{42,-20}}))); Buildings.Controls.OBC.CDL.Continuous.Switch swi "Switch between a PID controller and a relay controller" @@ -61,20 +60,19 @@ block PIDWithAutotuningAmigoFOTD "Recording the derivative time" annotation (Placement(transformation(extent={{-40,-60},{-20,-80}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.ControlProcessModel - controlProcessModel( - yHig=yHig - setPoint, - yLow=setPoint + yLow, - deaBan=deaBan) - "A block to approximate the control process" + conProMod( + final yHig=yHig - yRef, + final yLow=yRef + yLow, + final deaBan=deaBan) "A block to approximate the control process" annotation (Placement(transformation(extent={{-20,40},{-40,60}}))); - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PI piParameters - if not with_D "A block to calculates the parameters of a PI controller" + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PI PIPar + if not with_D "Parameters of a PI controller" annotation (Placement(transformation(extent={{-60,70},{-80,90}}))); - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PID pidParameters - if with_D "A block to calculates the parameters of a PID controller" + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PID PIDPra + if with_D "Parameters of a PID controller" annotation (Placement(transformation(extent={{-60,40},{-80,60}}))); - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.ResponseProcess responseProcess(yHig=yHig - - setPoint, yLow=setPoint + yLow) + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.ResponseProcess resPro(final + yHig=yHig - yRef, final yLow=yRef + yLow) "A block to process the response from the relay controller" annotation (Placement(transformation(extent={{20,40},{0,60}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.ModelTime modTim @@ -89,80 +87,86 @@ protected "Boolean flag to enable derivative action" annotation (Evaluate=true,HideResult=true); +initial equation + assert( + yHig-yRef>1E-6, + "Higher value for the relay output should be larger than the reference output. Check parameters."); + equation - connect(pid.u_s, u_s) annotation (Line(points={{20,-30},{8,-30},{8,0},{-120,0}}, + connect(PID.u_s, u_s) annotation (Line(points={{20,-30},{8,-30},{8,0},{-120,0}}, color={0,0,127})); - connect(relay.u_s, u_s) annotation (Line(points={{20,30},{-80,30},{-80,0},{-120, + connect(rel.u_s, u_s) annotation (Line(points={{20,30},{-80,30},{-80,0},{-120, 0}}, color={0,0,127})); - connect(pid.trigger, trigger) annotation (Line(points={{26,-42},{26,-92},{-60, + connect(PID.trigger, trigger) annotation (Line(points={{26,-42},{26,-92},{-60, -92},{-60,-120}}, color={255,0,255})); connect(swi.y, y) annotation (Line(points={{84,0},{96,0},{96,0},{120,0}}, color={0,0,127})); - connect(samk.y,pid. k) annotation (Line(points={{-18,-20},{-16,-20},{-16,-22}, + connect(samk.y,PID. k) annotation (Line(points={{-18,-20},{-16,-20},{-16,-22}, {20,-22}}, color={0,0,127})); - connect(pid.Ti, samTi.y) annotation (Line(points={{20,-26},{-14,-26},{-14,-48}, + connect(PID.Ti, samTi.y) annotation (Line(points={{20,-26},{-14,-26},{-14,-48}, {-58,-48}}, color={0,0,127})); - connect(samTd.y,pid. Td) annotation (Line(points={{-18,-70},{14,-70},{14,-34}, + connect(samTd.y,PID. Td) annotation (Line(points={{-18,-70},{14,-70},{14,-34}, {20,-34}}, color={0,0,127})); - connect(relay.u_m, u_m) annotation (Line(points={{32,18},{32,6},{46,6},{46,-80}, + connect(rel.u_m, u_m) annotation (Line(points={{32,18},{32,6},{46,6},{46,-80}, {0,-80},{0,-120}}, color={0,0,127})); - connect(pid.u_m, u_m) annotation (Line(points={{32,-42},{32,-80},{0,-80},{0,-120}}, + connect(PID.u_m, u_m) annotation (Line(points={{32,-42},{32,-80},{0,-80},{0,-120}}, color={0,0,127})); - connect(swi.u3, relay.y) - annotation (Line(points={{60,8},{52,8},{52,36},{43,36}}, color={0,0,127})); - connect(swi.u1, pid.y) annotation (Line(points={{60,-8},{54,-8},{54,-30},{44, + connect(swi.u3, rel.y) + annotation (Line(points={{60,8},{52,8},{52,36},{44,36}}, color={0,0,127})); + connect(swi.u1,PID. y) annotation (Line(points={{60,-8},{54,-8},{54,-30},{44, -30}}, color={0,0,127})); - connect(responseProcess.triggerEnd, swi.u2) annotation (Line(points={{-1,42},{-1, - 10},{48,10},{48,0},{60,0}}, color={255,0,255})); + connect(resPro.triEnd, swi.u2) annotation (Line(points={{-2,42},{-2,10},{48, + 10},{48,0},{60,0}}, color={255,0,255})); connect(samk.trigger, swi.u2) annotation (Line(points={{-30,-8},{-30,10},{48,10}, {48,0},{60,0}}, color={255,0,255})); connect(samTi.trigger, swi.u2) annotation (Line(points={{-70,-36},{-70,10},{48, 10},{48,0},{60,0}}, color={255,0,255})); connect(samTd.trigger, swi.u2) annotation (Line(points={{-30,-58},{-30,-42},{-56, -42},{-56,10},{48,10},{48,0},{60,0}}, color={255,0,255})); - connect(responseProcess.On, relay.On) annotation (Line(points={{22,44},{26,44}, - {26,52},{58,52},{58,22},{43,22}}, color={255,0,255})); - connect(modTim.y, responseProcess.tim) annotation (Line(points={{58,70},{28,70}, - {28,56},{22,56}}, color={0,0,127})); - connect(responseProcess.tau, controlProcessModel.tau) annotation (Line( - points={{-1,50},{-12,50},{-12,42},{-18,42}}, color={0,0,127})); - connect(controlProcessModel.tOff, responseProcess.tOff) annotation (Line( - points={{-18,46},{-14,46},{-14,54},{-1,54}}, color={0,0,127})); - connect(responseProcess.tOn, controlProcessModel.tOn) annotation (Line(points= - {{-1,58},{-8,58},{-8,56},{-16,56},{-16,54},{-18,54}}, color={0,0,127})); - connect(relay.yErr, controlProcessModel.u) annotation (Line(points={{43,30},{50, - 30},{50,72},{-10,72},{-10,58},{-18,58}}, color={0,0,127})); - connect(pidParameters.kp, controlProcessModel.k) - annotation (Line(points={{-58,56},{-41,56}}, color={0,0,127})); - connect(pidParameters.T, controlProcessModel.T) - annotation (Line(points={{-58,50},{-41,50}}, color={0,0,127})); - connect(pidParameters.L, controlProcessModel.L) annotation (Line(points={{-58, - 44},{-44,44},{-44,42},{-41,42}}, color={0,0,127})); - connect(pidParameters.k, samk.u) annotation (Line(points={{-82,57},{-94,57},{ - -94,-20},{-42,-20}}, - color={0,0,127})); - connect(pidParameters.Ti, samTi.u) annotation (Line(points={{-82,50},{-88,50}, - {-88,-48},{-82,-48}}, color={0,0,127})); - connect(samTd.u, pidParameters.Td) annotation (Line(points={{-42,-70},{-48, - -70},{-48,34},{-82,34},{-82,43},{-82,43}}, - color={0,0,127})); - connect(piParameters.kp, controlProcessModel.k) annotation (Line(points={{-58, - 86},{-50,86},{-50,56},{-41,56}}, color={0,0,127})); - connect(piParameters.T, controlProcessModel.T) annotation (Line(points={{-58,80}, - {-52,80},{-52,50},{-41,50}}, color={0,0,127})); - connect(piParameters.L, controlProcessModel.L) annotation (Line(points={{-58,74}, - {-54,74},{-54,44},{-44,44},{-44,42},{-41,42}}, color={0,0,127})); - connect(piParameters.k, samk.u) annotation (Line(points={{-82,86},{-94,86},{ - -94,-20},{-42,-20}}, - color={0,0,127})); - connect(piParameters.Ti, samTi.u) annotation (Line(points={{-82,77},{-88,77}, - {-88,-48},{-82,-48}},color={0,0,127})); - connect(responseProcess.triggerEnd, controlProcessModel.triggerEnd) - annotation (Line(points={{-1,42},{-8,42},{-8,32},{-36,32},{-36,38}}, color={ - 255,0,255})); - connect(responseProcess.triggerStart, controlProcessModel.triggerStart) - annotation (Line(points={{-1,46},{-10,46},{-10,34},{-24,34},{-24,38}}, - color={255,0,255})); + connect(resPro.On, rel.yOn) annotation (Line(points={{22,44},{26,44},{26,52}, + {58,52},{58,24},{44,24}}, color={255,0,255})); + connect(modTim.y, resPro.tim) annotation (Line(points={{58,70},{28,70},{28,56}, + {22,56}}, color={0,0,127})); + connect(resPro.tau, conProMod.tau) annotation (Line(points={{-2,50},{-12,50}, + {-12,42},{-18,42}},color={0,0,127})); + connect(conProMod.tOff, resPro.tOff) annotation (Line(points={{-18,46},{-14, + 46},{-14,54},{-2,54}}, + color={0,0,127})); + connect(resPro.tOn, conProMod.tOn) annotation (Line(points={{-2,58},{-8,58},{ + -8,56},{-16,56},{-16,54},{-18,54}}, + color={0,0,127})); + connect(rel.yErr, conProMod.u) annotation (Line(points={{44,30},{50,30},{50, + 72},{-10,72},{-10,58},{-18,58}}, + color={0,0,127})); + connect(PIDPra.kp, conProMod.k) + annotation (Line(points={{-58,56},{-50,56},{-50,56.1},{-42,56.1}}, + color={0,0,127})); + connect(PIDPra.T, conProMod.T) + annotation (Line(points={{-58,50},{-42,50}}, color={0,0,127})); + connect(PIDPra.L, conProMod.L) annotation (Line(points={{-58,44},{-44,44},{ + -44,42},{-42,42}}, + color={0,0,127})); + connect(PIDPra.k, samk.u) annotation (Line(points={{-82,57},{-94,57},{-94,-20}, + {-42,-20}}, color={0,0,127})); + connect(PIDPra.Ti, samTi.u) annotation (Line(points={{-82,50},{-88,50},{-88,-48}, + {-82,-48}}, color={0,0,127})); + connect(samTd.u, PIDPra.Td) annotation (Line(points={{-42,-70},{-48,-70},{-48, + 34},{-82,34},{-82,43},{-82,43}}, color={0,0,127})); + connect(PIPar.kp, conProMod.k) annotation (Line(points={{-58,86},{-50,86},{ + -50,56.1},{-42,56.1}}, + color={0,0,127})); + connect(PIPar.T, conProMod.T) annotation (Line(points={{-58,80},{-52,80},{-52, + 50},{-42,50}}, color={0,0,127})); + connect(PIPar.L, conProMod.L) annotation (Line(points={{-58,74},{-54,74},{-54, + 44},{-44,44},{-44,42},{-42,42}}, color={0,0,127})); + connect(PIPar.k, samk.u) annotation (Line(points={{-82,86},{-94,86},{-94,-20}, + {-42,-20}}, color={0,0,127})); + connect(PIPar.Ti, samTi.u) annotation (Line(points={{-82,77},{-88,77},{-88,-48}, + {-82,-48}}, color={0,0,127})); + connect(resPro.triEnd, conProMod.triEnd) annotation (Line(points={{-2,42},{-8, + 42},{-8,32},{-36,32},{-36,38}}, color={255,0,255})); + connect(resPro.triSta, conProMod.triSta) annotation (Line(points={{-2,46},{ + -10,46},{-10,34},{-24,34},{-24,38}}, color={255,0,255})); annotation (Documentation(info="

                                This blocks implements a AMIGO PID tuning method and the control process is approximated with a first order delay process. @@ -178,7 +182,7 @@ First implementation

                              "), - defaultComponentName = "pIDWithAutotuningAmigoFOTD", + defaultComponentName = "PIDWitTun", Icon(graphics={ Text( extent={{-158,144},{142,104}}, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo index d5b78a4c73c..20333aed307 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo @@ -2,38 +2,42 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay; block Controller "Outputs relay signals for tuning PID controllers" parameter Real yHig(min=1E-6) = 1 - "Higher value for the output"; + "Higher value for the relay output"; parameter Real yLow(min=1E-6) = 0.5 "Lower value for the output"; parameter Real deaBan(min=1E-6) = 0.5 "Deadband for holding the output value"; Buildings.Controls.OBC.CDL.Interfaces.RealInput u_s - "Connector for the setpoint input signal" + "Setpoint input signal" annotation (Placement(transformation(extent={{-140,-20},{-100,20}}), iconTransformation(extent={{-140,-20},{-100,20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput u_m - "Connector for the measurement input signal" + "Measurement input signal" annotation (Placement(transformation(origin={0,-120},extent={{20,-20},{-20,20}},rotation=270), iconTransformation(extent={{20,-20},{-20,20}},rotation=270,origin={0,-120}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput y - "Control output signal" - annotation (Placement(transformation(extent={{100,50},{120,70}}))); - Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput On - "Control switch signal" - annotation (Placement(transformation(extent={{100,-90},{120,-70}}))); + "Control output" + annotation (Placement(transformation(extent={{100,40},{140,80}}))); + Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput yOn + "Control switch output" + annotation (Placement(transformation(extent={{100,-80},{140,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput yErr - "Control error signal" - annotation (Placement(transformation(extent={{100,-10},{120,10}}))); - Buildings.Controls.OBC.CDL.Logical.OnOffController greMeaSet(final bandwidth=deaBan*2, pre_y_start=true) + "Control error" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + Buildings.Controls.OBC.CDL.Logical.OnOffController greMeaSet( + final bandwidth=deaBan*2, + final pre_y_start=true) "Check if the measured value is larger than the reference, by default the relay control is On" annotation (Placement(transformation(extent={{-20,-10},{0,10}}))); Buildings.Controls.OBC.CDL.Continuous.Switch swi "Switch between a higher value and a lower value" annotation (Placement(transformation(extent={{60,-10},{80,10}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.Constant yHigSig(final k=yHig) + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant yHigSig( + final k=yHig) "Higher value for the output" annotation (Placement(transformation(extent={{-40,40},{-20,60}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.Constant yLowSig(final k=-yLow) + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant yLowSig( + final k=-yLow) "Lower value for the output" annotation (Placement(transformation(extent={{-40,-50},{-20,-30}}))); Buildings.Controls.OBC.CDL.Continuous.Subtract controlError @@ -43,11 +47,11 @@ block Controller initial equation assert( yHig-yLow>1E-6, - "The absulte values of yHig should be different from that of yLow. Check parameters."); + "The absulte values of the higher value for the relay output should be larger than that of the lower value. Check parameters."); equation connect(swi.y, y) - annotation (Line(points={{82,0},{88,0},{88,60},{110,60}}, + annotation (Line(points={{82,0},{88,0},{88,60},{120,60}}, color={0,0,127})); connect(greMeaSet.reference, u_s) annotation (Line(points={{-22,6},{-40,6},{-40,0},{-120,0}}, @@ -61,11 +65,10 @@ equation connect(yLowSig.y, swi.u3) annotation (Line(points={{-18,-40},{50,-40},{50,-8}, {58,-8}}, color={0,0,127})); - connect(On, swi.u2) - annotation (Line(points={{110,-80},{52,-80},{52,0},{58,0}}, + connect(yOn, swi.u2) annotation (Line(points={{120,-60},{52,-60},{52,0},{58,0}}, color={255,0,255})); connect(controlError.y, yErr) annotation (Line(points={{-54,20},{94,20},{94,0}, - {110,0}}, color={0,0,127})); + {120,0}}, color={0,0,127})); connect(greMeaSet.y, swi.u2) annotation (Line(points={{2,0},{58,0}}, color={255,0,255})); connect(controlError.u1, u_m) @@ -74,7 +77,7 @@ equation connect(controlError.u2, u_s) annotation (Line(points={{-78,14},{-80,14},{-80, 0},{-120,0}}, color={0,0,127})); - annotation (defaultComponentName = "controller", + annotation (defaultComponentName = "relCon", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-100,-100},{100,100}}, @@ -95,7 +98,9 @@ equation

                              t-Δt is the previous time step.

                              Note that this block generates an asymmetric signal, meaning yhig ≠ ylow

                              References

                              -

                              Josefin Berner (2017). "Automatic Controller Tuning using Relay-based Model Identification." Department of Automatic Control, Lund Institute of Technology, Lund University.

                              +

                              Josefin Berner (2017), +Automatic Controller Tuning using Relay-based Model Identification. +Department of Automatic Control, Lund Institute of Technology, Lund University.

                              ", revisions="
                              • diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo index 4f960aaa1bd..5ad94fc5579 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo @@ -1,74 +1,75 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay; block HalfPeriodRatio - "Calculates the half period ratio of a response from a relay controller" + "Calculate the half period ratio of a response from a relay controller" Buildings.Controls.OBC.CDL.Interfaces.RealInput tOn - "Connector for a signal of the length for the On period" + "Length for the On period" annotation (Placement(transformation(extent={{-140,40},{-100,80}}), iconTransformation(extent={{-140,40},{-100,80}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput tOff - "Connector for a signal of the length for the Off period" + "Length for the Off period" annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput rho - "Connector for a real signal of the half period ratio" - annotation (Placement(transformation(extent={{100,50},{120,70}}), + "Real signal of the half period ratio" + annotation (Placement(transformation(extent={{100,40},{140,80}}), iconTransformation(extent={{100,50},{120,70}}))); - Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput triggerStart - "Connector for a boolean signal, true if the tuning starts" - annotation (Placement( - transformation(extent={{100,-10},{120,10}}), iconTransformation(extent={ - {100,-10},{120,10}}))); - Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput triggerEnd - "Connector for a boolean signal, true if the tuning completes" - annotation (Placement( - transformation(extent={{100,-70},{120,-50}}), iconTransformation(extent= - {{100,-70},{120,-50}}))); + Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput triSta + "A boolean signal, true if the tuning starts" annotation (Placement( + transformation(extent={{100,-20},{140,20}}), iconTransformation(extent= + {{100,-10},{120,10}}))); + Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput triEnd + "A boolean signal, true if the tuning completes" annotation (Placement( + transformation(extent={{100,-80},{140,-40}}), iconTransformation(extent + ={{100,-70},{120,-50}}))); Buildings.Controls.OBC.CDL.Continuous.Min tmin - "The minimum value of tOn and tOff" + "Minimum value of the length for the On period and the length for the off period " annotation (Placement(transformation(extent={{-80,20},{-60,40}}))); Buildings.Controls.OBC.CDL.Continuous.Greater gretOntOff - "Check if tOn*tOff*min(tOn*tOff) is larger than 0" + "Check if the length for the On period or the length for the off period is larger than 0" annotation (Placement(transformation(extent={{0,40},{20,20}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.Constant minLen(final k=0) + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant minLen( + final k=0) "Minimum value for the horizon length" annotation (Placement(transformation(extent={{-40,20},{-20,40}}))); - Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler tOnSample(y_start=Buildings.Controls.OBC.CDL.Constants.eps) + Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler tOnSample( + final y_start=Buildings.Controls.OBC.CDL.Constants.eps) "Sample tOn when the tuning period ends" annotation (Placement(transformation(extent={{-80,60},{-60,80}}))); - Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler tOffSample(y_start=Buildings.Controls.OBC.CDL.Constants.eps) + Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler tOffSample( + final y_start=Buildings.Controls.OBC.CDL.Constants.eps) "Sample tOff when the tuning period ends" annotation (Placement(transformation(extent={{-80,-60},{-60,-80}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samAddtOntOff "Sample the tmin when tmin is larger than 0" annotation (Placement(transformation(extent={{40,40},{60,20}}))); Buildings.Controls.OBC.CDL.Continuous.Greater tIncrease - "Check if either tOn or tOff increases after they both becomes positive" + "Check if either the length for the On period or the length for the off period increases after they both becomes positive" annotation (Placement(transformation(extent={{40,-40},{60,-20}}))); Buildings.Controls.OBC.CDL.Continuous.Min mintOntOff - "Find the smaller one between tOn and tOff" + "Find the smaller one between the length for the On period and the length for the off period" annotation (Placement(transformation(extent={{-20,-80},{0,-60}}))); Buildings.Controls.OBC.CDL.Continuous.Max maxtOntOff - "Find the larger one between tOn and tOff" + "Find the larger one between the length for the On period and the length for the off period" annotation (Placement(transformation(extent={{-20,60},{0,80}}))); - Buildings.Controls.OBC.CDL.Continuous.Divide halfPeriodRatioCal + Buildings.Controls.OBC.CDL.Continuous.Divide halPerRat "Calculate the half period ratio" annotation (Placement(transformation(extent={{60,60},{80,80}}))); Buildings.Controls.OBC.CDL.Continuous.Add AddtOntOff - "Calculate the sum of tOn and tOff" + "Calculate the sum of the length for the On period and the length for the off period" annotation (Placement(transformation(extent={{-80,-40},{-60,-20}}))); Buildings.Controls.OBC.CDL.Continuous.Multiply mul - "Detect if the tOn or tOff changes after both of them are larger than 0" + "Detect if the the length for the On period or the length for the off period changes after both of them are larger than 0" annotation (Placement(transformation(extent={{-40,-40},{-20,-20}}))); Buildings.Controls.OBC.CDL.Continuous.Greater gretmaxtOntOff - "Check if either tOn or tOff is larger than 0" + "Check if either the length for the On period or the length for the off period is larger than 0" annotation (Placement(transformation(extent={{0,10},{20,-10}}))); Buildings.Controls.OBC.CDL.Continuous.Less tDecrease - "Check if either tOn or tOff decreases after they both becomes positive" + "Check if either the length for the On period or the length for the off period decreases after they both becomes positive" annotation (Placement(transformation(extent={{40,-90},{60,-70}}))); Buildings.Controls.OBC.CDL.Logical.Or tChanges - "Check if tOn or tOff changes" + "Check if the length for the On period or the length for the off period changes" annotation (Placement(transformation(extent={{70,-40},{90,-20}}))); - + equation connect(tmin.u1, tOn) annotation (Line(points={{-82,36},{-94,36},{-94,60},{-120, 60}}, color={0,0,127})); @@ -102,14 +103,14 @@ equation connect(mintOntOff.u1, maxtOntOff.u1) annotation (Line(points={{-22,-64},{-54, -64},{-54,70},{-30,70},{-30,76},{-22,76}}, color={0,0,127})); - connect(maxtOntOff.y, halfPeriodRatioCal.u1) annotation (Line(points={{2,70},{ - 52,70},{52,76},{58,76}}, color={0,0,127})); - connect(halfPeriodRatioCal.u2, mintOntOff.y) annotation (Line(points={{58,64}, - {32,64},{32,-34},{24,-34},{24,-70},{2,-70}}, color={0,0,127})); - connect(halfPeriodRatioCal.y, rho) annotation (Line(points={{82,70},{94,70},{94, - 60},{110,60}}, color={0,0,127})); - connect(triggerEnd, tOffSample.trigger) annotation (Line(points={{110,-60},{26, - -60},{26,-52},{-70,-52},{-70,-58}}, color={255,0,255})); + connect(maxtOntOff.y, halPerRat.u1) annotation (Line(points={{2,70},{52,70},{52, + 76},{58,76}}, color={0,0,127})); + connect(halPerRat.u2, mintOntOff.y) annotation (Line(points={{58,64},{32,64},{ + 32,-34},{24,-34},{24,-70},{2,-70}}, color={0,0,127})); + connect(halPerRat.y, rho) annotation (Line(points={{82,70},{94,70},{94,60},{120, + 60}}, color={0,0,127})); + connect(triEnd, tOffSample.trigger) annotation (Line(points={{120,-60},{26,-60}, + {26,-52},{-70,-52},{-70,-58}}, color={255,0,255})); connect(AddtOntOff.u2, tOff) annotation (Line(points={{-82,-36},{-94,-36},{-94, -60},{-120,-60}}, color={0,0,127})); connect(samAddtOntOff.u, tIncrease.u1) annotation (Line(points={{38,30},{28, @@ -124,8 +125,8 @@ equation 30},{-2,30}}, color={0,0,127})); connect(mul.y, tIncrease.u1) annotation (Line(points={{-18,-30},{38,-30}}, color={0,0,127})); - connect(gretmaxtOntOff.y, triggerStart) - annotation (Line(points={{22,0},{110,0}}, color={255,0,255})); + connect(gretmaxtOntOff.y, triSta) + annotation (Line(points={{22,0},{120,0}}, color={255,0,255})); connect(gretmaxtOntOff.u2, gretOntOff.u2) annotation (Line(points={{-2,8},{ -16,8},{-16,30},{-10,30},{-10,38},{-2,38}}, color={0,0,127})); connect(gretmaxtOntOff.u1, mul.u2) annotation (Line(points={{-2,0},{-50,0},{ @@ -144,7 +145,7 @@ equation Diagram( coordinateSystem( extent={{-100,-100},{100,100}})), - defaultComponentName = "halfPeriodRatio", + defaultComponentName = "halPerRat", Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{80, 100}}), graphics={ Rectangle( @@ -174,7 +175,8 @@ First implementation

                                During an Off period, the relay switch signal becomes False.

                                Note that only the first On period and the first Off period are considered.

                                References

                                -

                                Josefin Berner (2017). "Automatic Controller Tuning using Relay-based Model Identification." Department of Automatic Control, Lund Institute of Technology, Lund University.

                                -"), - Diagram(coordinateSystem(extent={{-100,-100},{240,100}}))); +

                                Josefin Berner (2017) +Automatic Controller Tuning using Relay-based Model Identification. +Department of Automatic Control, Lund Institute of Technology, Lund University.

                                +")); end HalfPeriodRatio; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/NormalizedTimeDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/NormalizedTimeDelay.mo index a1b55c58ef3..d5a52a18488 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/NormalizedTimeDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/NormalizedTimeDelay.mo @@ -4,27 +4,31 @@ block NormalizedTimeDelay parameter Real gamma(min=1+1E-6) = 4 "Asymmetry level of the relay controller"; Buildings.Controls.OBC.CDL.Interfaces.RealInput rho - "Connector for a real signal of the half period ratio signal" + "Half period ratio" annotation (Placement(transformation(extent={{-140,-20},{-100,20}}), iconTransformation(extent={{-140,-20},{-100,20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput tau - "Connector for a real signal of the normalized time delay" - annotation (Placement(transformation(extent={{100,-10},{120,10}}))); - Buildings.Controls.OBC.CDL.Continuous.AddParameter addPar1(final p=-1) + "Normalized time delay" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + Buildings.Controls.OBC.CDL.Continuous.AddParameter addPar1( + final p=-1) "Calculate the difference between gamma and 1" annotation (Placement(transformation(extent={{-40,-20},{-20,0}}))); - Buildings.Controls.OBC.CDL.Continuous.AddParameter addPar2(final p=0.65) + Buildings.Controls.OBC.CDL.Continuous.AddParameter addPar2( + final p=0.65) "Calculate the sum of the output of gai and 0.65" annotation (Placement(transformation(extent={{-40,-70},{-20,-50}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.Constant asymmetryLevel(final k=gamma) + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant asymmetryLevel( + final k=gamma) "Asymmetry level of the relay controller" annotation (Placement(transformation(extent={{-80,40},{-60,60}}))); Buildings.Controls.OBC.CDL.Continuous.Divide div "Calculate the normalized time delay" annotation (Placement(transformation(extent={{40,-10},{60,10}}))); Buildings.Controls.OBC.CDL.Continuous.Subtract subGammaRho - "Calculate the difference between gamma and rho" + "Calculate the difference between the asymmetry level of the relay controller and the half period ratio" annotation (Placement(transformation(extent={{0,12},{20,32}}))); - Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai(final k=0.35) + Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai( + final k=0.35) "Gain for the half period ratio" annotation (Placement(transformation(extent={{-80,-70},{-60,-50}}))); Buildings.Controls.OBC.CDL.Continuous.Multiply mul @@ -46,7 +50,7 @@ equation connect(div.u2, mul.y) annotation (Line(points={{38,-6},{30,-6},{30,-38},{22,-38}}, color={0,0,127})); connect(div.y, tau) - annotation (Line(points={{62,0},{110,0}}, color={0,0,127})); + annotation (Line(points={{62,0},{120,0}}, color={0,0,127})); connect(gai.y, addPar2.u) annotation (Line(points={{-58,-60},{-42,-60}}, color={0,0,127})); connect(addPar2.y, mul.u2) annotation (Line(points={{-18,-60},{-10,-60},{-10,-44}, @@ -56,7 +60,7 @@ equation connect(addPar1.y, mul.u1) annotation (Line(points={{-18,-10},{-10,-10},{-10,-32}, {-2,-32}}, color={0,0,127})); annotation ( - defaultComponentName = "normalizedTimeDelay", + defaultComponentName = "norTimDel", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-100,-100},{100,100}}, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo index 08d61ebe7be..e9926929fe0 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo @@ -1,20 +1,20 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay; block OnOffPeriod - "Calculates the lengths of the On period and the Off period" + "Calculate the lengths of the On period and the Off period" Buildings.Controls.OBC.CDL.Interfaces.RealInput tim "Connector for the input signal of the simulation time" annotation (Placement(transformation(extent={{-140,40},{-100,80}}), iconTransformation(extent={{-140,40},{-100,80}}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanInput On - "Connector for relay switch signal" annotation (Placement(transformation( + "Relay switch signal" annotation (Placement(transformation( extent={{-140,-80},{-100,-40}}), iconTransformation(extent={{-140,-80}, {-100,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput tOff - "Connector for a real output signal of the length for the Off period" - annotation (Placement(transformation(extent={{100,-50},{120,-30}}))); + "Length for the Off period" + annotation (Placement(transformation(extent={{102,-60},{142,-20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput tOn - "Connector for a real output signal of the length for the On period" - annotation (Placement(transformation(extent={{100,30},{120,50}}))); + "Length for the On period" + annotation (Placement(transformation(extent={{100,20},{140,60}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler timOn "Simulation time when the input signal becomes On (True)" annotation (Placement(transformation(extent={{-30,30},{-10,50}}))); @@ -39,10 +39,10 @@ block OnOffPeriod Buildings.Controls.OBC.CDL.Continuous.Sources.Constant minLen(final k=0) "Minimum value for the horizon length" annotation (Placement(transformation(extent={{-80,60},{-60,80}}))); - Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler timOffRecord + Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler timOffRec "Record the horizon length for the Off period" annotation (Placement(transformation(extent={{60,-50},{80,-30}}))); - Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler timOnRecord + Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler timOnRec "Record the horizon length for the On period" annotation (Placement(transformation(extent={{60,50},{80,30}}))); @@ -71,25 +71,24 @@ equation {-52,62},{38,62}}, color={0,0,127})); connect(lenOffCal.y, greTimOff.u1) annotation (Line(points={{42,-30},{48,-30}, {48,-48},{20,-48},{20,-70},{38,-70}}, color={0,0,127})); - connect(greTimOff.y, timOffRecord.trigger) + connect(greTimOff.y, timOffRec.trigger) annotation (Line(points={{62,-70},{70,-70},{70,-52}}, color={255,0,255})); - connect(timOffRecord.u, greTimOff.u1) annotation (Line(points={{58,-40},{54, - -40},{54,-48},{20,-48},{20,-70},{38,-70}}, - color={0,0,127})); - connect(greTimOn.y, timOnRecord.trigger) + connect(timOffRec.u, greTimOff.u1) annotation (Line(points={{58,-40},{54,-40}, + {54,-48},{20,-48},{20,-70},{38,-70}}, color={0,0,127})); + connect(greTimOn.y, timOnRec.trigger) annotation (Line(points={{62,70},{70,70},{70,52}}, color={255,0,255})); - connect(timOnRecord.u, greTimOn.u1) annotation (Line(points={{58,40},{50,40}, - {50,56},{20,56},{20,70},{38,70}},color={0,0,127})); + connect(timOnRec.u, greTimOn.u1) annotation (Line(points={{58,40},{50,40},{50, + 56},{20,56},{20,70},{38,70}}, color={0,0,127})); connect(timOn.u, tim) annotation (Line(points={{-32,40},{-92,40},{-92,60},{ -120,60}}, color={0,0,127})); connect(timOff.u, tim) annotation (Line(points={{-32,-30},{-76,-30},{-76,40}, {-92,40},{-92,60},{-120,60}}, color={0,0,127})); - connect(timOnRecord.y, tOn) - annotation (Line(points={{82,40},{110,40}}, color={0,0,127})); - connect(timOffRecord.y, tOff) - annotation (Line(points={{82,-40},{110,-40}}, color={0,0,127})); + connect(timOnRec.y, tOn) annotation (Line(points={{82,40},{102,40},{102,40},{120, + 40}}, color={0,0,127})); + connect(timOffRec.y, tOff) annotation (Line(points={{82,-40},{102,-40},{102,-40}, + {122,-40}}, color={0,0,127})); annotation ( - defaultComponentName = "onOffPeriod", + defaultComponentName = "onOffPer", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-100,-100},{100,100}}, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo index 052ec152553..80936072d3d 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo @@ -15,57 +15,53 @@ block ResponseProcess iconTransformation(extent={{-140,40},{-100,80}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput tOn "Connector for a real signal of the length for the On period" - annotation (Placement(transformation(extent={{100,70},{120,90}}))); + annotation (Placement(transformation(extent={{100,60},{140,100}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput tOff "Connector for a real output signal of the length for the Off period" - annotation (Placement(transformation(extent={{100,30},{120,50}}))); - Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput triggerStart + annotation (Placement(transformation(extent={{100,20},{140,60}}))); + Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput triSta "Connector for a boolean signal, true if the tuning starts" - annotation (Placement(transformation(extent={{100,-50},{120,-30}}))); - Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput triggerEnd + annotation (Placement(transformation(extent={{100,-60},{140,-20}}))); + Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput triEnd "Connector for a boolean signal, true if the tuning ends" - annotation (Placement(transformation(extent={{100,-90},{120,-70}}))); + annotation (Placement(transformation(extent={{100,-100},{140,-60}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput tau "Connector for a real signal of the normalized time delay" - annotation (Placement(transformation(extent={{100,-10},{120,10}}))); - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.OnOffPeriod onOffPeriod + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.OnOffPeriod onOffPer "Calculates the length of the On period and the Off period" annotation (Placement(transformation(extent={{-60,0},{-40,20}}))); - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.HalfPeriodRatio halfPeriodRatio + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.HalfPeriodRatio halPerRatio "Calculates the half period ratio" annotation (Placement(transformation(extent={{0,0},{20,20}}))); - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.NormalizedTimeDelay normalizedTimeDelay(gamma=max( - yHig, yLow)/min(yLow, yHig)) + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.NormalizedTimeDelay norTimDel(final + gamma=max(yHig, yLow)/min(yLow, yHig)) "calculates the normalized time delay" annotation (Placement(transformation(extent={{40,0},{60,20}}))); equation - connect(onOffPeriod.On, On) annotation (Line(points={{-62,4},{-94,4},{-94,-60}, - {-120,-60}}, color={255,0,255})); - connect(onOffPeriod.tim, tim) annotation (Line(points={{-62,16},{-94,16},{-94, - 60},{-120,60}}, color={0,0,127})); - connect(onOffPeriod.tOn, halfPeriodRatio.tOn) - annotation (Line(points={{-39,14},{-20,14},{-20,16},{-2.22222,16}}, - color={0,0,127})); - connect(onOffPeriod.tOff, halfPeriodRatio.tOff) - annotation (Line(points={{-39,6},{-8,6},{-8,4},{-2.22222,4}}, - color={0,0,127})); - connect(halfPeriodRatio.rho, normalizedTimeDelay.rho) annotation (Line(points={{23.3333, - 16},{36,16},{36,10},{38,10}}, color={0,0,127})); - connect(tOn, halfPeriodRatio.tOn) annotation (Line(points={{110,80},{-20,80},{ - -20,16},{-2.22222,16}}, - color={0,0,127})); - connect(tOff, halfPeriodRatio.tOff) annotation (Line(points={{110,40},{-8,40}, - {-8,4},{-2.22222,4}}, - color={0,0,127})); - connect(normalizedTimeDelay.tau, tau) annotation (Line(points={{61,10},{94,10}, - {94,0},{110,0}}, color={0,0,127})); - connect(triggerEnd, halfPeriodRatio.triggerEnd) annotation (Line(points={{110,-80}, - {26,-80},{26,4},{23.3333,4}}, color={255,0,255})); - connect(triggerStart, halfPeriodRatio.triggerStart) annotation (Line(points={{110,-40}, - {34,-40},{34,10},{23.3333,10}}, color={255,0,255})); + connect(onOffPer.On, On) annotation (Line(points={{-62,4},{-94,4},{-94,-60},{ + -120,-60}}, color={255,0,255})); + connect(onOffPer.tim, tim) annotation (Line(points={{-62,16},{-94,16},{-94,60}, + {-120,60}}, color={0,0,127})); + connect(onOffPer.tOn, halPerRatio.tOn) annotation (Line(points={{-38,14},{-20, + 14},{-20,16},{-2.22222,16}}, color={0,0,127})); + connect(onOffPer.tOff, halPerRatio.tOff) annotation (Line(points={{-37.8,6},{ + -8,6},{-8,4},{-2.22222,4}}, color={0,0,127})); + connect(halPerRatio.rho, norTimDel.rho) annotation (Line(points={{23.3333,16}, + {36,16},{36,10},{38,10}}, color={0,0,127})); + connect(tOn, halPerRatio.tOn) annotation (Line(points={{120,80},{-20,80},{-20, + 16},{-2.22222,16}}, color={0,0,127})); + connect(tOff, halPerRatio.tOff) annotation (Line(points={{120,40},{-8,40},{-8, + 4},{-2.22222,4}}, color={0,0,127})); + connect(norTimDel.tau, tau) annotation (Line(points={{62,10},{94,10},{94,0},{ + 120,0}}, color={0,0,127})); + connect(triEnd, halPerRatio.triEnd) annotation (Line(points={{120,-80},{26, + -80},{26,4},{23.3333,4}}, color={255,0,255})); + connect(triSta, halPerRatio.triSta) annotation (Line(points={{120,-40},{34, + -40},{34,10},{23.3333,10}}, color={255,0,255})); annotation ( - defaultComponentName = "responseProcess", + defaultComponentName = "resPro", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-100,-100},{100,100}}, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Controller.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Controller.mo index 1daf9a5e8ba..54580cc0599 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Controller.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Controller.mo @@ -1,19 +1,19 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation; model Controller "Test model for Control" - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Controller controller( + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Controller relCon( yHig=1, yLow=0.5, deaBan=0.4) "A relay controller" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.Sine sin(freqHz=2) "Measured value" annotation (Placement(transformation(extent={{-60,-60},{-40,-40}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.Constant const(k=0) "Setpoint" + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant con(k=0) "Setpoint" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); - + equation - connect(const.y, controller.u_s) + connect(con.y, relCon.u_s) annotation (Line(points={{-38,0},{-12,0}}, color={0,0,127})); - connect(sin.y, controller.u_m) + connect(sin.y, relCon.u_m) annotation (Line(points={{-38,-50},{0,-50},{0,-12}}, color={0,0,127})); annotation ( experiment( diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mo index 3200ca6b2e5..c9436b38f0d 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mo @@ -1,7 +1,7 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation; model HalfPeriodRatio "Test model for HalfPeriodRatio" - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.HalfPeriodRatio - halfPeriodRatio "Calculate the half period ratio" + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.HalfPeriodRatio halfPerRat + "Calculate the half period ratio" annotation (Placement(transformation(extent={{-8,-10},{12,10}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable tOn( table=[0,0; 0.1,1; 0.3,1; 0.7,1; 0.83,2; 0.85,6], @@ -15,14 +15,12 @@ model HalfPeriodRatio "Test model for HalfPeriodRatio" extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) "Signal for the length of the Off period" annotation (Placement(transformation(extent={{-60,-40},{-40,-20}}))); - + equation - connect(tOn.y[1],halfPeriodRatio. tOn) annotation (Line(points={{-38,30},{-20, - 30},{-20,6},{-10.2222,6}}, - color={0,0,127})); - connect(tOff.y[1],halfPeriodRatio. tOff) annotation (Line(points={{-38,-30},{ - -20,-30},{-20,-6},{-10.2222,-6}}, - color={0,0,127})); + connect(tOn.y[1], halfPerRat.tOn) annotation (Line(points={{-38,30},{-20,30}, + {-20,6},{-10.2222,6}}, color={0,0,127})); + connect(tOff.y[1], halfPerRat.tOff) annotation (Line(points={{-38,-30},{-20, + -30},{-20,-6},{-10.2222,-6}}, color={0,0,127})); annotation ( experiment( StopTime=1.0, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mo index ade3df684f3..8125632880b 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mo @@ -1,114 +1,114 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation; model NormalizedTimeDelay "Test model for NormalizedTimeDelay" - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.NormalizedTimeDelay - normalizedTimeDelay(gamma=4) "Calculate the normalized time delay" + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.NormalizedTimeDelay norTimDel(gamma=4) + "Calculate the normalized time delay" annotation (Placement(transformation(extent={{-8,-10},{12,10}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable ReferenceData(table=[0,0,2.051; 0.002,0, - 2.051; 0.004,0,2.051; 0.006,0,2.051; 0.008,0,2.051; 0.01,0,2.051; 0.012, - 0,2.051; 0.014,0,2.051; 0.016,0,2.051; 0.018,0,2.051; 0.02,0,2.051; - 0.022,0,2.051; 0.024,0,2.051; 0.026,0,2.051; 0.028,0,2.051; 0.03,0, - 2.051; 0.032,0,2.051; 0.034,0,2.051; 0.036,0,2.051; 0.038,0,2.051; 0.04, - 0,2.051; 0.042,0,2.051; 0.044,0,2.051; 0.046,0,2.051; 0.048,0,2.051; - 0.05,0,2.051; 0.052,0,2.051; 0.054,0,2.051; 0.056,0,2.051; 0.058,0, - 2.051; 0.06,0,2.051; 0.062,0,2.051; 0.064,0,2.051; 0.066,0,2.051; 0.068, - 0,2.051; 0.07,0,2.051; 0.072,0,2.051; 0.074,0,2.051; 0.076,0,2.051; - 0.078,0,2.051; 0.08,0,2.051; 0.082,0,2.051; 0.084,0,2.051; 0.086,0, - 2.051; 0.088,0,2.051; 0.09,0,2.051; 0.092,0,2.051; 0.094,0,2.051; 0.096, - 0,2.051; 0.098,0,2.051; 0.1,0,2.051; 0.1,0,2.051; 0.1,0,2.051; 0.102,0, - 2.051; 0.104,0,2.051; 0.106,0,2.051; 0.108,0,2.051; 0.11,0,2.051; 0.112, - 0,2.051; 0.114,0,2.051; 0.116,0,2.051; 0.118,0,2.051; 0.12,0,2.051; - 0.122,0,2.051; 0.124,0,2.051; 0.126,0,2.051; 0.128,0,2.051; 0.13,0, - 2.051; 0.132,0,2.051; 0.134,0,2.051; 0.136,0,2.051; 0.138,0,2.051; 0.14, - 0,2.051; 0.142,0,2.051; 0.144,0,2.051; 0.146,0,2.051; 0.148,0,2.051; - 0.15,0,2.051; 0.152,0,2.051; 0.154,0,2.051; 0.156,0,2.051; 0.158,0, - 2.051; 0.16,0,2.051; 0.162,0,2.051; 0.164,0,2.051; 0.166,0,2.051; 0.168, - 0,2.051; 0.17,0,2.051; 0.172,0,2.051; 0.174,0,2.051; 0.176,0,2.051; - 0.178,0,2.051; 0.18,0,2.051; 0.182,0,2.051; 0.184,0,2.051; 0.186,0, - 2.051; 0.188,0,2.051; 0.19,0,2.051; 0.192,0,2.051; 0.194,0,2.051; 0.196, - 0,2.051; 0.198,0,2.051; 0.2,0,2.051; 0.202,0,2.051; 0.204,0,2.051; - 0.206,0,2.051; 0.208,0,2.051; 0.21,0,2.051; 0.212,0,2.051; 0.214,0, - 2.051; 0.216,0,2.051; 0.218,0,2.051; 0.22,0,2.051; 0.222,0,2.051; 0.224, - 0,2.051; 0.226,0,2.051; 0.228,0,2.051; 0.23,0,2.051; 0.232,0,2.051; - 0.234,0,2.051; 0.236,0,2.051; 0.238,0,2.051; 0.24,0,2.051; 0.242,0, - 2.051; 0.244,0,2.051; 0.246,0,2.051; 0.248,0,2.051; 0.25,0,2.051; 0.252, - 0,2.051; 0.254,0,2.051; 0.256,0,2.051; 0.258,0,2.051; 0.26,0,2.051; - 0.262,0,2.051; 0.264,0,2.051; 0.266,0,2.051; 0.268,0,2.051; 0.27,0, - 2.051; 0.272,0,2.051; 0.274,0,2.051; 0.276,0,2.051; 0.278,0,2.051; 0.28, - 0,2.051; 0.282,0,2.051; 0.284,0,2.051; 0.286,0,2.051; 0.288,0,2.051; - 0.29,0,2.051; 0.292,0,2.051; 0.294,0,2.051; 0.296,0,2.051; 0.298,0, - 2.051; 0.3,0,2.051; 0.3,1,1; 0.3,1,1; 0.302,1,1; 0.304,1,1; 0.306,1,1; - 0.308,1,1; 0.31,1,1; 0.312,1,1; 0.314,1,1; 0.316,1,1; 0.318,1,1; 0.32,1, - 1; 0.322,1,1; 0.324,1,1; 0.326,1,1; 0.328,1,1; 0.33,1,1; 0.332,1,1; - 0.334,1,1; 0.336,1,1; 0.338,1,1; 0.34,1,1; 0.342,1,1; 0.344,1,1; 0.346, - 1,1; 0.348,1,1; 0.35,1,1; 0.352,1,1; 0.354,1,1; 0.356,1,1; 0.358,1,1; - 0.36,1,1; 0.362,1,1; 0.364,1,1; 0.366,1,1; 0.368,1,1; 0.37,1,1; 0.372,1, - 1; 0.374,1,1; 0.376,1,1; 0.378,1,1; 0.38,1,1; 0.382,1,1; 0.384,1,1; - 0.386,1,1; 0.388,1,1; 0.39,1,1; 0.392,1,1; 0.394,1,1; 0.396,1,1; 0.398, - 1,1; 0.4,1,1; 0.402,1,1; 0.404,1,1; 0.406,1,1; 0.408,1,1; 0.41,1,1; - 0.412,1,1; 0.414,1,1; 0.416,1,1; 0.418,1,1; 0.42,1,1; 0.422,1,1; 0.424, - 1,1; 0.426,1,1; 0.428,1,1; 0.43,1,1; 0.432,1,1; 0.434,1,1; 0.436,1,1; - 0.438,1,1; 0.44,1,1; 0.442,1,1; 0.444,1,1; 0.446,1,1; 0.448,1,1; 0.45,1, - 1; 0.452,1,1; 0.454,1,1; 0.456,1,1; 0.458,1,1; 0.46,1,1; 0.462,1,1; - 0.464,1,1; 0.466,1,1; 0.468,1,1; 0.47,1,1; 0.472,1,1; 0.474,1,1; 0.476, - 1,1; 0.478,1,1; 0.48,1,1; 0.482,1,1; 0.484,1,1; 0.486,1,1; 0.488,1,1; - 0.49,1,1; 0.492,1,1; 0.494,1,1; 0.496,1,1; 0.498,1,1; 0.5,1,1; 0.502,1, - 1; 0.504,1,1; 0.506,1,1; 0.508,1,1; 0.51,1,1; 0.512,1,1; 0.514,1,1; - 0.516,1,1; 0.518,1,1; 0.52,1,1; 0.522,1,1; 0.524,1,1; 0.526,1,1; 0.528, - 1,1; 0.53,1,1; 0.532,1,1; 0.534,1,1; 0.536,1,1; 0.538,1,1; 0.54,1,1; - 0.542,1,1; 0.544,1,1; 0.546,1,1; 0.548,1,1; 0.55,1,1; 0.552,1,1; 0.554, - 1,1; 0.556,1,1; 0.558,1,1; 0.56,1,1; 0.562,1,1; 0.564,1,1; 0.566,1,1; - 0.568,1,1; 0.57,1,1; 0.572,1,1; 0.574,1,1; 0.576,1,1; 0.578,1,1; 0.58,1, - 1; 0.582,1,1; 0.584,1,1; 0.586,1,1; 0.588,1,1; 0.59,1,1; 0.592,1,1; - 0.594,1,1; 0.596,1,1; 0.598,1,1; 0.6,1,1; 0.602,1,1; 0.604,1,1; 0.606,1, - 1; 0.608,1,1; 0.61,1,1; 0.612,1,1; 0.614,1,1; 0.616,1,1; 0.618,1,1; - 0.62,1,1; 0.622,1,1; 0.624,1,1; 0.626,1,1; 0.628,1,1; 0.63,1,1; 0.632,1, - 1; 0.634,1,1; 0.636,1,1; 0.638,1,1; 0.64,1,1; 0.642,1,1; 0.644,1,1; - 0.646,1,1; 0.648,1,1; 0.65,1,1; 0.652,1,1; 0.654,1,1; 0.656,1,1; 0.658, - 1,1; 0.66,1,1; 0.662,1,1; 0.664,1,1; 0.666,1,1; 0.668,1,1; 0.67,1,1; - 0.672,1,1; 0.674,1,1; 0.676,1,1; 0.678,1,1; 0.68,1,1; 0.682,1,1; 0.684, - 1,1; 0.686,1,1; 0.688,1,1; 0.69,1,1; 0.692,1,1; 0.694,1,1; 0.696,1,1; - 0.698,1,1; 0.7,1,1; 0.7,1.5,0.709; 0.7,1.5,0.709; 0.702,1.5,0.709; - 0.704,1.5,0.709; 0.706,1.5,0.709; 0.708,1.5,0.709; 0.71,1.5,0.709; - 0.712,1.5,0.709; 0.714,1.5,0.709; 0.716,1.5,0.709; 0.718,1.5,0.709; - 0.72,1.5,0.709; 0.722,1.5,0.709; 0.724,1.5,0.709; 0.726,1.5,0.709; - 0.728,1.5,0.709; 0.73,1.5,0.709; 0.732,1.5,0.709; 0.734,1.5,0.709; - 0.736,1.5,0.709; 0.738,1.5,0.709; 0.74,1.5,0.709; 0.742,1.5,0.709; - 0.744,1.5,0.709; 0.746,1.5,0.709; 0.748,1.5,0.709; 0.75,1.5,0.709; - 0.752,1.5,0.709; 0.754,1.5,0.709; 0.756,1.5,0.709; 0.758,1.5,0.709; - 0.76,1.5,0.709; 0.762,1.5,0.709; 0.764,1.5,0.709; 0.766,1.5,0.709; - 0.768,1.5,0.709; 0.77,1.5,0.709; 0.772,1.5,0.709; 0.774,1.5,0.709; - 0.776,1.5,0.709; 0.778,1.5,0.709; 0.78,1.5,0.709; 0.782,1.5,0.709; - 0.784,1.5,0.709; 0.786,1.5,0.709; 0.788,1.5,0.709; 0.79,1.5,0.709; - 0.792,1.5,0.709; 0.794,1.5,0.709; 0.796,1.5,0.709; 0.798,1.5,0.709; 0.8, - 1.5,0.709; 0.802,1.5,0.709; 0.804,1.5,0.709; 0.806,1.5,0.709; 0.808,1.5, - 0.709; 0.81,1.5,0.709; 0.812,1.5,0.709; 0.814,1.5,0.709; 0.816,1.5, - 0.709; 0.818,1.5,0.709; 0.82,1.5,0.709; 0.822,1.5,0.709; 0.824,1.5, - 0.709; 0.826,1.5,0.709; 0.828,1.5,0.709; 0.83,1.5,0.709; 0.83,1.5,0.709; - 0.83,1.5,0.709; 0.832,1.5,0.709; 0.834,1.5,0.709; 0.836,1.5,0.709; - 0.838,1.5,0.709; 0.84,1.5,0.709; 0.842,1.5,0.709; 0.844,1.5,0.709; - 0.846,1.5,0.709; 0.848,1.5,0.709; 0.85,1.5,0.709; 0.85,2,0.494; 0.85,2, - 0.494; 0.852,2,0.494; 0.854,2,0.494; 0.856,2,0.494; 0.858,2,0.494; 0.86, - 2,0.494; 0.862,2,0.494; 0.864,2,0.494; 0.866,2,0.494; 0.868,2,0.494; - 0.87,2,0.494; 0.872,2,0.494; 0.874,2,0.494; 0.876,2,0.494; 0.878,2, - 0.494; 0.88,2,0.494; 0.882,2,0.494; 0.884,2,0.494; 0.886,2,0.494; 0.888, - 2,0.494; 0.89,2,0.494; 0.892,2,0.494; 0.894,2,0.494; 0.896,2,0.494; - 0.898,2,0.494; 0.9,2,0.494; 0.902,2,0.494; 0.904,2,0.494; 0.906,2,0.494; - 0.908,2,0.494; 0.91,2,0.494; 0.912,2,0.494; 0.914,2,0.494; 0.916,2, - 0.494; 0.918,2,0.494; 0.92,2,0.494; 0.922,2,0.494; 0.924,2,0.494; 0.926, - 2,0.494; 0.928,2,0.494; 0.93,2,0.494; 0.932,2,0.494; 0.934,2,0.494; - 0.936,2,0.494; 0.938,2,0.494; 0.94,2,0.494; 0.942,2,0.494; 0.944,2, - 0.494; 0.946,2,0.494; 0.948,2,0.494; 0.95,2,0.494; 0.952,2,0.494; 0.954, - 2,0.494; 0.956,2,0.494; 0.958,2,0.494; 0.96,2,0.494; 0.962,2,0.494; - 0.964,2,0.494; 0.966,2,0.494; 0.968,2,0.494; 0.97,2,0.494; 0.972,2, - 0.494; 0.974,2,0.494; 0.976,2,0.494; 0.978,2,0.494; 0.98,2,0.494; 0.982, - 2,0.494; 0.984,2,0.494; 0.986,2,0.494; 0.988,2,0.494; 0.99,2,0.494; - 0.992,2,0.494; 0.994,2,0.494; 0.996,2,0.494; 0.998,2,0.494; 1,2,0.494], - extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) + Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable RefDat(table=[0,0, + 2.051; 0.002,0,2.051; 0.004,0,2.051; 0.006,0,2.051; 0.008,0,2.051; 0.01, + 0,2.051; 0.012,0,2.051; 0.014,0,2.051; 0.016,0,2.051; 0.018,0,2.051; + 0.02,0,2.051; 0.022,0,2.051; 0.024,0,2.051; 0.026,0,2.051; 0.028,0, + 2.051; 0.03,0,2.051; 0.032,0,2.051; 0.034,0,2.051; 0.036,0,2.051; 0.038, + 0,2.051; 0.04,0,2.051; 0.042,0,2.051; 0.044,0,2.051; 0.046,0,2.051; + 0.048,0,2.051; 0.05,0,2.051; 0.052,0,2.051; 0.054,0,2.051; 0.056,0, + 2.051; 0.058,0,2.051; 0.06,0,2.051; 0.062,0,2.051; 0.064,0,2.051; 0.066, + 0,2.051; 0.068,0,2.051; 0.07,0,2.051; 0.072,0,2.051; 0.074,0,2.051; + 0.076,0,2.051; 0.078,0,2.051; 0.08,0,2.051; 0.082,0,2.051; 0.084,0, + 2.051; 0.086,0,2.051; 0.088,0,2.051; 0.09,0,2.051; 0.092,0,2.051; 0.094, + 0,2.051; 0.096,0,2.051; 0.098,0,2.051; 0.1,0,2.051; 0.1,0,2.051; 0.1,0, + 2.051; 0.102,0,2.051; 0.104,0,2.051; 0.106,0,2.051; 0.108,0,2.051; 0.11, + 0,2.051; 0.112,0,2.051; 0.114,0,2.051; 0.116,0,2.051; 0.118,0,2.051; + 0.12,0,2.051; 0.122,0,2.051; 0.124,0,2.051; 0.126,0,2.051; 0.128,0, + 2.051; 0.13,0,2.051; 0.132,0,2.051; 0.134,0,2.051; 0.136,0,2.051; 0.138, + 0,2.051; 0.14,0,2.051; 0.142,0,2.051; 0.144,0,2.051; 0.146,0,2.051; + 0.148,0,2.051; 0.15,0,2.051; 0.152,0,2.051; 0.154,0,2.051; 0.156,0, + 2.051; 0.158,0,2.051; 0.16,0,2.051; 0.162,0,2.051; 0.164,0,2.051; 0.166, + 0,2.051; 0.168,0,2.051; 0.17,0,2.051; 0.172,0,2.051; 0.174,0,2.051; + 0.176,0,2.051; 0.178,0,2.051; 0.18,0,2.051; 0.182,0,2.051; 0.184,0, + 2.051; 0.186,0,2.051; 0.188,0,2.051; 0.19,0,2.051; 0.192,0,2.051; 0.194, + 0,2.051; 0.196,0,2.051; 0.198,0,2.051; 0.2,0,2.051; 0.202,0,2.051; + 0.204,0,2.051; 0.206,0,2.051; 0.208,0,2.051; 0.21,0,2.051; 0.212,0, + 2.051; 0.214,0,2.051; 0.216,0,2.051; 0.218,0,2.051; 0.22,0,2.051; 0.222, + 0,2.051; 0.224,0,2.051; 0.226,0,2.051; 0.228,0,2.051; 0.23,0,2.051; + 0.232,0,2.051; 0.234,0,2.051; 0.236,0,2.051; 0.238,0,2.051; 0.24,0, + 2.051; 0.242,0,2.051; 0.244,0,2.051; 0.246,0,2.051; 0.248,0,2.051; 0.25, + 0,2.051; 0.252,0,2.051; 0.254,0,2.051; 0.256,0,2.051; 0.258,0,2.051; + 0.26,0,2.051; 0.262,0,2.051; 0.264,0,2.051; 0.266,0,2.051; 0.268,0, + 2.051; 0.27,0,2.051; 0.272,0,2.051; 0.274,0,2.051; 0.276,0,2.051; 0.278, + 0,2.051; 0.28,0,2.051; 0.282,0,2.051; 0.284,0,2.051; 0.286,0,2.051; + 0.288,0,2.051; 0.29,0,2.051; 0.292,0,2.051; 0.294,0,2.051; 0.296,0, + 2.051; 0.298,0,2.051; 0.3,0,2.051; 0.3,1,1; 0.3,1,1; 0.302,1,1; 0.304,1, + 1; 0.306,1,1; 0.308,1,1; 0.31,1,1; 0.312,1,1; 0.314,1,1; 0.316,1,1; + 0.318,1,1; 0.32,1,1; 0.322,1,1; 0.324,1,1; 0.326,1,1; 0.328,1,1; 0.33,1, + 1; 0.332,1,1; 0.334,1,1; 0.336,1,1; 0.338,1,1; 0.34,1,1; 0.342,1,1; + 0.344,1,1; 0.346,1,1; 0.348,1,1; 0.35,1,1; 0.352,1,1; 0.354,1,1; 0.356, + 1,1; 0.358,1,1; 0.36,1,1; 0.362,1,1; 0.364,1,1; 0.366,1,1; 0.368,1,1; + 0.37,1,1; 0.372,1,1; 0.374,1,1; 0.376,1,1; 0.378,1,1; 0.38,1,1; 0.382,1, + 1; 0.384,1,1; 0.386,1,1; 0.388,1,1; 0.39,1,1; 0.392,1,1; 0.394,1,1; + 0.396,1,1; 0.398,1,1; 0.4,1,1; 0.402,1,1; 0.404,1,1; 0.406,1,1; 0.408,1, + 1; 0.41,1,1; 0.412,1,1; 0.414,1,1; 0.416,1,1; 0.418,1,1; 0.42,1,1; + 0.422,1,1; 0.424,1,1; 0.426,1,1; 0.428,1,1; 0.43,1,1; 0.432,1,1; 0.434, + 1,1; 0.436,1,1; 0.438,1,1; 0.44,1,1; 0.442,1,1; 0.444,1,1; 0.446,1,1; + 0.448,1,1; 0.45,1,1; 0.452,1,1; 0.454,1,1; 0.456,1,1; 0.458,1,1; 0.46,1, + 1; 0.462,1,1; 0.464,1,1; 0.466,1,1; 0.468,1,1; 0.47,1,1; 0.472,1,1; + 0.474,1,1; 0.476,1,1; 0.478,1,1; 0.48,1,1; 0.482,1,1; 0.484,1,1; 0.486, + 1,1; 0.488,1,1; 0.49,1,1; 0.492,1,1; 0.494,1,1; 0.496,1,1; 0.498,1,1; + 0.5,1,1; 0.502,1,1; 0.504,1,1; 0.506,1,1; 0.508,1,1; 0.51,1,1; 0.512,1, + 1; 0.514,1,1; 0.516,1,1; 0.518,1,1; 0.52,1,1; 0.522,1,1; 0.524,1,1; + 0.526,1,1; 0.528,1,1; 0.53,1,1; 0.532,1,1; 0.534,1,1; 0.536,1,1; 0.538, + 1,1; 0.54,1,1; 0.542,1,1; 0.544,1,1; 0.546,1,1; 0.548,1,1; 0.55,1,1; + 0.552,1,1; 0.554,1,1; 0.556,1,1; 0.558,1,1; 0.56,1,1; 0.562,1,1; 0.564, + 1,1; 0.566,1,1; 0.568,1,1; 0.57,1,1; 0.572,1,1; 0.574,1,1; 0.576,1,1; + 0.578,1,1; 0.58,1,1; 0.582,1,1; 0.584,1,1; 0.586,1,1; 0.588,1,1; 0.59,1, + 1; 0.592,1,1; 0.594,1,1; 0.596,1,1; 0.598,1,1; 0.6,1,1; 0.602,1,1; + 0.604,1,1; 0.606,1,1; 0.608,1,1; 0.61,1,1; 0.612,1,1; 0.614,1,1; 0.616, + 1,1; 0.618,1,1; 0.62,1,1; 0.622,1,1; 0.624,1,1; 0.626,1,1; 0.628,1,1; + 0.63,1,1; 0.632,1,1; 0.634,1,1; 0.636,1,1; 0.638,1,1; 0.64,1,1; 0.642,1, + 1; 0.644,1,1; 0.646,1,1; 0.648,1,1; 0.65,1,1; 0.652,1,1; 0.654,1,1; + 0.656,1,1; 0.658,1,1; 0.66,1,1; 0.662,1,1; 0.664,1,1; 0.666,1,1; 0.668, + 1,1; 0.67,1,1; 0.672,1,1; 0.674,1,1; 0.676,1,1; 0.678,1,1; 0.68,1,1; + 0.682,1,1; 0.684,1,1; 0.686,1,1; 0.688,1,1; 0.69,1,1; 0.692,1,1; 0.694, + 1,1; 0.696,1,1; 0.698,1,1; 0.7,1,1; 0.7,1.5,0.709; 0.7,1.5,0.709; 0.702, + 1.5,0.709; 0.704,1.5,0.709; 0.706,1.5,0.709; 0.708,1.5,0.709; 0.71,1.5, + 0.709; 0.712,1.5,0.709; 0.714,1.5,0.709; 0.716,1.5,0.709; 0.718,1.5, + 0.709; 0.72,1.5,0.709; 0.722,1.5,0.709; 0.724,1.5,0.709; 0.726,1.5, + 0.709; 0.728,1.5,0.709; 0.73,1.5,0.709; 0.732,1.5,0.709; 0.734,1.5, + 0.709; 0.736,1.5,0.709; 0.738,1.5,0.709; 0.74,1.5,0.709; 0.742,1.5, + 0.709; 0.744,1.5,0.709; 0.746,1.5,0.709; 0.748,1.5,0.709; 0.75,1.5, + 0.709; 0.752,1.5,0.709; 0.754,1.5,0.709; 0.756,1.5,0.709; 0.758,1.5, + 0.709; 0.76,1.5,0.709; 0.762,1.5,0.709; 0.764,1.5,0.709; 0.766,1.5, + 0.709; 0.768,1.5,0.709; 0.77,1.5,0.709; 0.772,1.5,0.709; 0.774,1.5, + 0.709; 0.776,1.5,0.709; 0.778,1.5,0.709; 0.78,1.5,0.709; 0.782,1.5, + 0.709; 0.784,1.5,0.709; 0.786,1.5,0.709; 0.788,1.5,0.709; 0.79,1.5, + 0.709; 0.792,1.5,0.709; 0.794,1.5,0.709; 0.796,1.5,0.709; 0.798,1.5, + 0.709; 0.8,1.5,0.709; 0.802,1.5,0.709; 0.804,1.5,0.709; 0.806,1.5,0.709; + 0.808,1.5,0.709; 0.81,1.5,0.709; 0.812,1.5,0.709; 0.814,1.5,0.709; + 0.816,1.5,0.709; 0.818,1.5,0.709; 0.82,1.5,0.709; 0.822,1.5,0.709; + 0.824,1.5,0.709; 0.826,1.5,0.709; 0.828,1.5,0.709; 0.83,1.5,0.709; 0.83, + 1.5,0.709; 0.83,1.5,0.709; 0.832,1.5,0.709; 0.834,1.5,0.709; 0.836,1.5, + 0.709; 0.838,1.5,0.709; 0.84,1.5,0.709; 0.842,1.5,0.709; 0.844,1.5, + 0.709; 0.846,1.5,0.709; 0.848,1.5,0.709; 0.85,1.5,0.709; 0.85,2,0.494; + 0.85,2,0.494; 0.852,2,0.494; 0.854,2,0.494; 0.856,2,0.494; 0.858,2, + 0.494; 0.86,2,0.494; 0.862,2,0.494; 0.864,2,0.494; 0.866,2,0.494; 0.868, + 2,0.494; 0.87,2,0.494; 0.872,2,0.494; 0.874,2,0.494; 0.876,2,0.494; + 0.878,2,0.494; 0.88,2,0.494; 0.882,2,0.494; 0.884,2,0.494; 0.886,2, + 0.494; 0.888,2,0.494; 0.89,2,0.494; 0.892,2,0.494; 0.894,2,0.494; 0.896, + 2,0.494; 0.898,2,0.494; 0.9,2,0.494; 0.902,2,0.494; 0.904,2,0.494; + 0.906,2,0.494; 0.908,2,0.494; 0.91,2,0.494; 0.912,2,0.494; 0.914,2, + 0.494; 0.916,2,0.494; 0.918,2,0.494; 0.92,2,0.494; 0.922,2,0.494; 0.924, + 2,0.494; 0.926,2,0.494; 0.928,2,0.494; 0.93,2,0.494; 0.932,2,0.494; + 0.934,2,0.494; 0.936,2,0.494; 0.938,2,0.494; 0.94,2,0.494; 0.942,2, + 0.494; 0.944,2,0.494; 0.946,2,0.494; 0.948,2,0.494; 0.95,2,0.494; 0.952, + 2,0.494; 0.954,2,0.494; 0.956,2,0.494; 0.958,2,0.494; 0.96,2,0.494; + 0.962,2,0.494; 0.964,2,0.494; 0.966,2,0.494; 0.968,2,0.494; 0.97,2, + 0.494; 0.972,2,0.494; 0.974,2,0.494; 0.976,2,0.494; 0.978,2,0.494; 0.98, + 2,0.494; 0.982,2,0.494; 0.984,2,0.494; 0.986,2,0.494; 0.988,2,0.494; + 0.99,2,0.494; 0.992,2,0.494; 0.994,2,0.494; 0.996,2,0.494; 0.998,2, + 0.494; 1,2,0.494], extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) "Data for validating the normalizedTimeDelay block" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); - + equation - connect(ReferenceData.y[1], normalizedTimeDelay.rho) + connect(RefDat.y[1], norTimDel.rho) annotation (Line(points={{-38,0},{-10,0}}, color={0,0,127})); annotation ( experiment( diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mo index 7863c796274..c7c793bab3c 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mo @@ -1,21 +1,21 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation; model OnOffPeriod "Test model for OnOffPeriod" - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.OnOffPeriod - onOffPeriod "Calculate the length of the On period and the Off period" + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.OnOffPeriod onOffPer + "Calculate the length of the On period and the Off period" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - Buildings.Controls.OBC.CDL.Logical.Sources.TimeTable relayResponse( - table=[0,1;0.1,0; 0.3,0; 0.7,1; 0.83,0; 0.85,1], period=2) + Buildings.Controls.OBC.CDL.Logical.Sources.TimeTable relRes(table=[0,1; 0.1,0; + 0.3,0; 0.7,1; 0.83,0; 0.85,1], period=2) "Mimicks the response for a relay controller" annotation (Placement(transformation(extent={{-60,-20},{-40,0}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.ModelTime modTim "Simulation time" annotation (Placement(transformation(extent={{-60,10},{-40,30}}))); - + equation - connect(onOffPeriod.On, relayResponse.y[1]) annotation (Line(points={{-12,-6}, - {-20,-6},{-20,-10},{-38,-10}}, color={255,0,255})); - connect(modTim.y, onOffPeriod.tim) annotation (Line(points={{-38,20},{-20,20}, - {-20,6},{-12,6}}, color={0,0,127})); + connect(onOffPer.On, relRes.y[1]) annotation (Line(points={{-12,-6},{-20,-6}, + {-20,-10},{-38,-10}}, color={255,0,255})); + connect(modTim.y, onOffPer.tim) annotation (Line(points={{-38,20},{-20,20},{-20, + 6},{-12,6}}, color={0,0,127})); annotation ( experiment( StopTime=1.0, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mo index c04eeb2395e..651c5487b34 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mo @@ -1,22 +1,21 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation; model ResponseProcess "Test model for ResponseProcess" - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.ResponseProcess - responseProcess(yHig=1, yLow=0.2) - "Calculate the length of the On period and the Off period" + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.ResponseProcess resPro(yHig=1, + yLow=0.2) "Calculate the length of the On period and the Off period" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - Buildings.Controls.OBC.CDL.Logical.Sources.TimeTable relayResponse( - table=[0,1;0.1,0; 0.3,0; 0.7,1; 0.83,0; 0.85,1], period=2) + Buildings.Controls.OBC.CDL.Logical.Sources.TimeTable relRes(table=[0,1; 0.1,0; + 0.3,0; 0.7,1; 0.83,0; 0.85,1], period=2) "Mimicks the response for a relay controller" annotation (Placement(transformation(extent={{-60,-20},{-40,0}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.ModelTime modTim "Simulation time" annotation (Placement(transformation(extent={{-60,10},{-40,30}}))); - + equation - connect(responseProcess.On, relayResponse.y[1]) annotation (Line(points={{-12, - -6},{-20,-6},{-20,-10},{-38,-10}}, color={255,0,255})); - connect(modTim.y, responseProcess.tim) annotation (Line(points={{-38,20},{-20, - 20},{-20,6},{-12,6}}, color={0,0,127})); + connect(resPro.On, relRes.y[1]) annotation (Line(points={{-12,-6},{-20,-6},{-20, + -10},{-38,-10}}, color={255,0,255})); + connect(modTim.y, resPro.tim) annotation (Line(points={{-38,20},{-20,20},{-20, + 6},{-12,6}}, color={0,0,127})); annotation ( experiment( StopTime=1.0, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo index 20a260d1956..8c3ec8053ed 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo @@ -8,74 +8,78 @@ block ControlProcessModel parameter Real deaBan(min=0) = 0.5 "Deadband for holding the output value"; Buildings.Controls.OBC.CDL.Interfaces.RealInput u - "Connector for the response signal of a relay controller" + "Output of a relay controller" annotation (Placement(transformation(extent={{-140,60},{-100,100}}), iconTransformation(extent={{-140,60},{-100,100}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput tOn - "Connector for a signal of the length for the On period" + "Length for the On period" annotation (Placement(transformation(extent={{-140,20},{-100,60}}), iconTransformation(extent={{-140,20},{-100,60}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput tOff - "Connector for a signal of the length for the Off period" + "Length for the Off period" annotation (Placement(transformation(extent={{-140,-60},{-100,-20}}), iconTransformation(extent={{-140,-60},{-100,-20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput tau - "Connector for the signal of normalized time delay" annotation (Placement( + "Normalized time delay" annotation (Placement( transformation(extent={{-140,-100},{-100,-60}}), iconTransformation( extent={{-140,-100},{-100,-60}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput k - "Connector for a output signal of the gain" - annotation (Placement(transformation(extent={{100,50},{120,70}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealOutput T - "Connector for a output signal of the time constant" - annotation (Placement(transformation(extent={{100,-10},{120,10}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealOutput L - "Connector for a output signal of the time constant" - annotation (Placement(transformation(extent={{100,-90},{120,-70}}))); - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Gain gain(yHig=yHig, yLow=yLow) + "Gain" + annotation (Placement(transformation(extent={{100,36},{140,86}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput T + "Time constant" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput L + "Time delay" + annotation (Placement(transformation(extent={{100,-100},{140,-60}}))); + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Gain gain( + final yHig=yHig, + final yLow=yLow) "Calculates the gain" annotation (Placement(transformation(extent={{-84,-10},{-64,10}}))); - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.TimeConstantDelay timeConstantDelay(yHig=yHig, yLow=yLow, - deaBan=deaBan) - "Calculates the time constant and the time delay" + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.TimeConstantDelay + timConDel( + final yHig=yHig, + final yLow=yLow, + deaBan=deaBan) "Calculate the time constant and the time delay" annotation (Placement(transformation(extent={{0,-10},{20,10}}))); - Buildings.Controls.OBC.CDL.Interfaces.BooleanInput triggerStart + Buildings.Controls.OBC.CDL.Interfaces.BooleanInput triSta "Relay tuning status, true if the tuning starts" annotation (Placement( transformation( extent={{-20,-20},{20,20}}, rotation=90, origin={-60,-120}))); - Buildings.Controls.OBC.CDL.Interfaces.BooleanInput triggerEnd + Buildings.Controls.OBC.CDL.Interfaces.BooleanInput triEnd "Relay tuning status, true if the tuning ends" annotation (Placement( transformation( extent={{-20,-20},{20,20}}, rotation=90, origin={60,-120}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samT(y_start=1) - "Sampling k when the tuning period ends" + "Sample the time constant when the tuning period ends" annotation (Placement(transformation(extent={{70,-10},{90,10}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samL(y_start=1) - "Sampling L when the tuning period ends" + "Sample the time delay when the tuning period ends" annotation (Placement(transformation(extent={{44,-90},{64,-70}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samk(y_start=1) - "Sampling k when the tuning period ends" + "Sample the gain when the tuning period ends" annotation (Placement(transformation(extent={{-54,-10},{-34,10}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samtOn(y_start=1) - "Sampling tOn when the tuning period ends" + "Sample the length of the On period when the tuning period ends" annotation (Placement(transformation(extent={{-70,30},{-50,50}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samtau(y_start=0.5) - "Sampling the normalized time delay" + "Sample the normalized time delay" annotation (Placement(transformation(extent={{-70,-70},{-50,-90}}))); Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai(k=-1) - "Product of tau and -1" + "Product of the normalized time delay and -1" annotation (Placement(transformation(extent={{-36,-90},{-16,-70}}))); Buildings.Controls.OBC.CDL.Continuous.AddParameter addPar(p=1) - "1- tau" + "Difference between 1 and the normalized time delay" annotation (Placement(transformation(extent={{-8,-90},{12,-70}}))); Buildings.Controls.OBC.CDL.Continuous.Divide div - "tau/(1- tau)" + "The output of samtau divided by that of addPar" annotation (Placement(transformation(extent={{12,-60},{32,-40}}))); - + equation connect(gain.u, u) annotation (Line(points={{-86,8},{-88,8},{-88,80},{-120,80}}, color={0,0,127})); @@ -83,50 +87,50 @@ equation -120,40}}, color={0,0,127})); connect(gain.tOff, tOff) annotation (Line(points={{-86,-8},{-94,-8},{-94,-40}, {-120,-40}}, color={0,0,127})); - connect(gain.triggerStart, triggerStart) annotation (Line(points={{-74,-12},{-74, - -96},{-60,-96},{-60,-120}}, color={255,0,255})); - connect(timeConstantDelay.T, samT.u) + connect(gain.triSta, triSta) annotation (Line(points={{-74,-12},{-74,-96},{-60, + -96},{-60,-120}}, color={255,0,255})); + connect(timConDel.T, samT.u) annotation (Line(points={{21,7},{60,7},{60,0},{68,0}}, color={0,0,127})); connect(samT.y, T) - annotation (Line(points={{92,0},{110,0}}, color={0,0,127})); - connect(samT.trigger, triggerEnd) annotation (Line(points={{80,-12},{80,-92}, - {60,-92},{60,-120}}, color={255,0,255})); + annotation (Line(points={{92,0},{120,0}}, color={0,0,127})); + connect(samT.trigger, triEnd) annotation (Line(points={{80,-12},{80,-92},{60,-92}, + {60,-120}}, color={255,0,255})); connect(L, samL.y) - annotation (Line(points={{110,-80},{66,-80}}, color={0,0,127})); - connect(samL.u, timeConstantDelay.L) annotation (Line(points={{42,-80},{40, - -80},{40,-6},{21,-6}}, color={0,0,127})); - connect(samL.trigger, triggerEnd) annotation (Line(points={{54,-92},{54,-96}, - {60,-96},{60,-120}}, color={255,0,255})); - connect(samk.y, timeConstantDelay.k) + annotation (Line(points={{120,-80},{66,-80}}, color={0,0,127})); + connect(samL.u, timConDel.L) annotation (Line(points={{42,-80},{40,-80},{40,-6}, + {21,-6}}, color={0,0,127})); + connect(samL.trigger, triEnd) annotation (Line(points={{54,-92},{54,-96},{60,-96}, + {60,-120}}, color={255,0,255})); + connect(samk.y, timConDel.k) annotation (Line(points={{-32,0},{-2,0}}, color={0,0,127})); - connect(samk.trigger, triggerEnd) annotation (Line(points={{-44,-12},{-44,-96}, - {60,-96},{60,-120}}, color={255,0,255})); + connect(samk.trigger, triEnd) annotation (Line(points={{-44,-12},{-44,-96},{60, + -96},{60,-120}}, color={255,0,255})); connect(gain.k, samk.u) - annotation (Line(points={{-63,0},{-56,0}}, color={0,0,127})); - connect(samk.y, k) annotation (Line(points={{-32,0},{-20,0},{-20,60},{110,60}}, + annotation (Line(points={{-62,0},{-56,0}}, color={0,0,127})); + connect(samk.y, k) annotation (Line(points={{-32,0},{-20,0},{-20,61},{120,61}}, color={0,0,127})); - connect(timeConstantDelay.tOn, samtOn.y) annotation (Line(points={{-2,6},{-28, - 6},{-28,40},{-48,40}}, color={0,0,127})); + connect(timConDel.tOn, samtOn.y) annotation (Line(points={{-2,6},{-28,6},{-28, + 40},{-48,40}}, color={0,0,127})); connect(samtOn.u, tOn) annotation (Line(points={{-72,40},{-120,40}}, color={0,0,127})); - connect(samtOn.trigger, triggerEnd) annotation (Line(points={{-60,28},{-60, - -34},{-44,-34},{-44,-96},{60,-96},{60,-120}}, color={255,0,255})); + connect(samtOn.trigger, triEnd) annotation (Line(points={{-60,28},{-60,-34},{-44, + -34},{-44,-96},{60,-96},{60,-120}}, color={255,0,255})); connect(samtau.u, tau) annotation (Line(points={{-72,-80},{-120,-80}}, color={0,0,127})); - connect(samtau.trigger, triggerEnd) annotation (Line(points={{-60,-68},{-60,-34}, - {-44,-34},{-44,-96},{60,-96},{60,-120}}, color={255,0,255})); + connect(samtau.trigger, triEnd) annotation (Line(points={{-60,-68},{-60,-34},{ + -44,-34},{-44,-96},{60,-96},{60,-120}}, color={255,0,255})); connect(gai.u, samtau.y) annotation (Line(points={{-38,-80},{-48,-80}}, color={0,0,127})); connect(gai.y, addPar.u) annotation (Line(points={{-14,-80},{-10,-80}}, color={0,0,127})); connect(addPar.y, div.u2) annotation (Line(points={{14,-80},{20,-80},{20,-62}, {4,-62},{4,-56},{10,-56}}, color={0,0,127})); - connect(div.y, timeConstantDelay.ratioLT) annotation (Line(points={{34,-50},{ - 34,-24},{-6,-24},{-6,-6},{-2,-6}}, color={0,0,127})); + connect(div.y, timConDel.ratioLT) annotation (Line(points={{34,-50},{34,-24},{ + -6,-24},{-6,-6},{-2,-6}}, color={0,0,127})); connect(div.u1, samtau.y) annotation (Line(points={{10,-44},{-40,-44},{-40,-80}, {-48,-80}}, color={0,0,127})); annotation ( - defaultComponentName = "controlProcessModel", + defaultComponentName = "conProMod", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-100,-100},{100,100}}, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Gain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Gain.mo index 1ca7ccf3edb..3d263c79bce 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Gain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Gain.mo @@ -5,27 +5,26 @@ block Gain "Identifies the gain of a first order time delayed model" parameter Real yLow(min=1E-6) = 0.5 "Lower value for the output (assuming the reference output is 0)"; Buildings.Controls.OBC.CDL.Interfaces.RealInput u - "Connector for a relay controller output" + "Relay controller output" annotation (Placement(transformation(extent={{-140,60},{-100,100}}), iconTransformation(extent={{-140,60},{-100,100}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput tOn - "Connector for the length for the On period" + "Length for the On period" annotation (Placement(transformation(extent={{-140,-20},{-100,20}}), iconTransformation(extent={{-140,-20},{-100,20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput tOff - "Connector for the length for the Off period" + "length for the Off period" annotation (Placement(transformation(extent={{-140,-100},{-100,-60}}), iconTransformation(extent={{-140,-100},{-100,-60}}))); - Buildings.Controls.OBC.CDL.Interfaces.BooleanInput triggerStart - "Relay tuning status, true if the tuning starts" - annotation (Placement( + Buildings.Controls.OBC.CDL.Interfaces.BooleanInput triSta + "Relay tuning status, true if the tuning starts" annotation (Placement( transformation( extent={{-20,-20},{20,20}}, rotation=90, origin={0,-120}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput k - "Connector for a real signal of the gain" - annotation (Placement(transformation(extent={{100,-10},{120,10}}))); + "Gain" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); Buildings.Controls.OBC.CDL.Continuous.Add Iu "Integral of the relay output" annotation (Placement(transformation(extent={{-40,-50},{-20,-30}}))); @@ -33,34 +32,38 @@ block Gain "Identifies the gain of a first order time delayed model" final k=1,y_start=1E-11) "Integral of the process output" annotation (Placement(transformation(extent={{-40,30},{-20,50}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.Constant referenceRelayOutpit(final k=0) + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant refeRelOut( + final k=0) "Reference value of the relay control output" annotation (Placement(transformation(extent={{-80,10},{-60,30}}))); Buildings.Controls.OBC.CDL.Continuous.Divide divIyIu "Calculate the gain" annotation (Placement(transformation(extent={{32,-10},{52,10}}))); - Buildings.Controls.OBC.CDL.Continuous.AddParameter addPar(final p=1E-11) + Buildings.Controls.OBC.CDL.Continuous.AddParameter addPar( + final p=1E-11) "Avoid divide-by-zero errors" annotation (Placement(transformation(extent={{0,-50},{20,-30}}))); - Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gaitOnyHig(final k=yHig) + Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gaitOnyHig( + final k=yHig) "Product of tOn and yHig" annotation (Placement(transformation(extent={{-80,-30},{-60,-10}}))); - Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gaitOffyLow(final k=-yLow) + Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gaitOffyLow( + final k=-yLow) "Product of tOff and yLow" annotation (Placement(transformation(extent={{-80,-90},{-60,-70}}))); equation connect(Iy.u, u) annotation (Line(points={{-42,40},{-90,40},{-90,80},{-120,80}}, color={0,0,127})); - connect(referenceRelayOutpit.y, Iy.y_reset_in) annotation (Line(points={{-58,20}, - {-50,20},{-50,32},{-42,32}}, color={0,0,127})); - connect(Iy.trigger, triggerStart) annotation (Line(points={{-30,28},{-30,-20}, - {-10,-20},{-10,-96},{0,-96},{0,-120}}, color={255,0,255})); + connect(refeRelOut.y, Iy.y_reset_in) annotation (Line(points={{-58,20},{-50,20}, + {-50,32},{-42,32}}, color={0,0,127})); + connect(Iy.trigger, triSta) annotation (Line(points={{-30,28},{-30,-20},{-10,-20}, + {-10,-96},{0,-96},{0,-120}}, color={255,0,255})); connect(divIyIu.u1, Iy.y) annotation (Line(points={{30,6},{0,6},{0,40},{-18,40}}, color={0,0,127})); connect(Iu.y, addPar.u) annotation (Line(points={{-18,-40},{-2,-40}},color={0,0,127})); connect(addPar.y, divIyIu.u2) annotation (Line(points={{22,-40},{26,-40},{26,-6}, {30,-6}}, color={0,0,127})); - connect(divIyIu.y, k) annotation (Line(points={{54,0},{110,0}}, color={0,0,127})); + connect(divIyIu.y, k) annotation (Line(points={{54,0},{120,0}}, color={0,0,127})); connect(gaitOnyHig.u, tOn) annotation (Line(points={{-82,-20},{-90,-20},{-90,0}, {-120,0}}, color={0,0,127})); connect(gaitOnyHig.y, Iu.u1) annotation (Line(points={{-58,-20},{-50,-20},{-50, @@ -108,7 +111,9 @@ Iu = ton (yhig - yref)+ toffDuring an On period, the relay switch signal becomes True;

                                During an Off period, the relay switch signal becomes False.

                                References

                                -

                                Josefin Berner (2017). "Automatic Controller Tuning using Relay-based Model Identification." Department of Automatic Control, Lund Institute of Technology, Lund University.

                                +

                                Josefin Berner (2017). +\"Automatic Controller Tuning using Relay-based Model Identification\". +Department of Automatic Control, Lund Institute of Technology, Lund University.

                                "), __Dymola_Commands(file="../../123.mos" "123")); end Gain; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/TimeConstantDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/TimeConstantDelay.mo index 9dbdaea99b3..bf5069c476e 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/TimeConstantDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/TimeConstantDelay.mo @@ -8,22 +8,22 @@ block TimeConstantDelay parameter Real deaBan(min=0) = 0.5 "Deadband for holding the output value"; Buildings.Controls.OBC.CDL.Interfaces.RealInput tOn - "Connector for a signal of the length for the On period" + "Length for the On period" annotation (Placement(transformation(extent={{-140,40},{-100,80}}), iconTransformation(extent={{-140,40},{-100,80}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput k - "Connector for the signal of the gain" + "Gain" annotation (Placement(transformation(extent={{-140,-20},{-100,20}}), iconTransformation(extent={{-140,-20},{-100,20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput ratioLT - "Connector for the signal of the ratio between the time constant and the time delay" + "Ratio between the time constant and the time delay" annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput T - "Connector for a output signal of the time constant" + "Time constant" annotation (Placement(transformation(extent={{100,60},{120,80}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput L - "Connector for a output signal of the time delay" + "Time delay" annotation (Placement(transformation(extent={{100,-70},{120,-50}}))); Buildings.Controls.OBC.CDL.Continuous.Abs absk "Absoulte value of the gain" @@ -40,36 +40,37 @@ block TimeConstantDelay Buildings.Controls.OBC.CDL.Continuous.Sources.Constant relayDeaBan(k=deaBan) "Dead band of the relay controller" annotation (Placement(transformation(extent={{0,30},{20,50}}))); - Buildings.Controls.OBC.CDL.Continuous.Divide div1 - "Quotient of dead band Divided by the absolute value of k" - annotation (Placement(transformation(extent={{0,-30},{20,-10}}))); - Buildings.Controls.OBC.CDL.Continuous.Subtract sub2 - "Quotient of dead band Divided by the absolute value of k minus yLow" - annotation (Placement(transformation(extent={{30,-50},{50,-30}}))); - Buildings.Controls.OBC.CDL.Continuous.Add add2 - "Sum of yHig and yLow" - annotation (Placement(transformation(extent={{40,0},{60,20}}))); - Buildings.Controls.OBC.CDL.Continuous.Multiply mul1 - "exp(L/T)(yHig + yLow)" - annotation (Placement(transformation(extent={{60,30},{80,50}}))); Buildings.Controls.OBC.CDL.Continuous.Add add1 - "Calculates the result of h/|k|-yLow+exp(L/T)(yHig + yLow)" + "Product of the output of mul1 and that of sub2" annotation (Placement(transformation(extent={{60,-40},{80,-20}}))); - Buildings.Controls.OBC.CDL.Continuous.Subtract sub1 "yHig - deaBan/exp(L/T)" - annotation (Placement(transformation(extent={{20,-80},{40,-60}}))); + Buildings.Controls.OBC.CDL.Continuous.Add add2 + "Sum of the higher value for the output and the lower value for the output" + annotation (Placement(transformation(extent={{34,0},{54,20}}))); + Buildings.Controls.OBC.CDL.Continuous.Divide div1 + "Quotient of dead band divided by the absolute value of the gain" + annotation (Placement(transformation(extent={{0,-30},{20,-10}}))); Buildings.Controls.OBC.CDL.Continuous.Divide div2 - "Calculates the result of (h/|k|-yLow+exp(L/T)(yHig + yLow))/(yHig-h/|k|)" + "The output of add1 divided by that of sub1" annotation (Placement(transformation(extent={{60,-78},{80,-58}}))); - Buildings.Controls.OBC.CDL.Continuous.Log log - "Natural logarithm of (h/|k|-yLow+exp(L/T)(yHig + yLow))/(yHig-h/|k|)" - annotation (Placement(transformation(extent={{-20,-100},{-40,-80}}))); Buildings.Controls.OBC.CDL.Continuous.Divide div3 - "Calculates the time constant" + "Calculate the time constant" annotation (Placement(transformation(extent={{-40,60},{-20,80}}))); + Buildings.Controls.OBC.CDL.Continuous.Multiply mul1 + "Product of the output of exp and that of add2" + annotation (Placement(transformation(extent={{60,30},{80,50}}))); Buildings.Controls.OBC.CDL.Continuous.Multiply mul2 - "Calculates the time delay" + "Calculate time delay" annotation (Placement(transformation(extent={{0,74},{20,94}}))); - + Buildings.Controls.OBC.CDL.Continuous.Subtract sub1 + "The difference between the higher value of the output and the output of div1" + annotation (Placement(transformation(extent={{20,-80},{40,-60}}))); + Buildings.Controls.OBC.CDL.Continuous.Subtract sub2 + "Quotient of dead band divided by the absolute value of gain minus the lower value for the output" + annotation (Placement(transformation(extent={{30,-50},{50,-30}}))); + Buildings.Controls.OBC.CDL.Continuous.Log log + "Natural logarithm of the output of div2" + annotation (Placement(transformation(extent={{-20,-100},{-40,-80}}))); + equation connect(absk.u, k) annotation (Line(points={{-82,-10},{-92,-10},{-92,0},{-120,0}}, @@ -84,10 +85,10 @@ equation connect(sub2.u2, yLowSig.y) annotation (Line(points={{28,-46},{-12,-46},{-12,40}, {-18,40}}, color={0,0,127})); connect(yHigSig.y, add2.u1) annotation (Line(points={{-58,40},{-52,40},{-52,16}, - {38,16}}, color={0,0,127})); - connect(add2.u2, yLowSig.y) annotation (Line(points={{38,4},{-12,4},{-12,40},{ + {32,16}}, color={0,0,127})); + connect(add2.u2, yLowSig.y) annotation (Line(points={{32,4},{-12,4},{-12,40},{ -18,40}}, color={0,0,127})); - connect(add2.y, mul1.u2) annotation (Line(points={{62,10},{72,10},{72,24},{54, + connect(add2.y, mul1.u2) annotation (Line(points={{56,10},{72,10},{72,24},{54, 24},{54,34},{58,34}}, color={0,0,127})); connect(exp.y, mul1.u1) annotation (Line(points={{-58,-50},{-6,-50},{-6,60},{54, 60},{54,46},{58,46}}, color={0,0,127})); @@ -95,8 +96,8 @@ equation 58,-36}}, color={0,0,127})); connect(add1.u1, mul1.y) annotation (Line(points={{58,-24},{52,-24},{52,-6},{86, -6},{86,40},{82,40}}, color={0,0,127})); - connect(sub1.u1, add2.u1) annotation (Line(points={{18,-64},{-52,-64},{-52,16}, - {38,16}}, color={0,0,127})); + connect(sub1.u1, add2.u1) annotation (Line(points={{18,-64},{-54,-64},{-54,16}, + {32,16}}, color={0,0,127})); connect(sub1.y, div2.u2) annotation (Line(points={{42,-70},{48,-70},{48,-74}, {58,-74}}, color={0,0,127})); connect(div2.u1, add1.y) annotation (Line(points={{58,-62},{54,-62},{54,-48},{ @@ -120,7 +121,7 @@ equation connect(absk.y, div1.u2) annotation (Line(points={{-58,-10},{-20,-10},{-20, -26},{-2,-26}}, color={0,0,127})); annotation ( - defaultComponentName = "timeConstantDelay", + defaultComponentName = "timConDel", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-100,-100},{100,100}}, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo index b0a14bb4f4e..f9cb33c645d 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo @@ -1,287 +1,288 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation; model ControlProcessModel "Test model for ControlProcessModel" Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.ControlProcessModel - controlProcessModel(yLow=0.1, deaBan=0.05) + conProMod(yLow=0.1, deaBan=0.05) "Calculate the parameters of of a first-order model" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable ReferenceData(table=[0,1,1,1,0.3,1,1; 0.002, - 1,1,1,0.3,1,1; 0.004,1,1,1,0.3,1,1; 0.006,1,1,1,0.3,1,1; 0.008,1,1,1, - 0.3,1,1; 0.01,1,1,1,0.3,1,1; 0.012,1,1,1,0.3,1,1; 0.014,1,1,1,0.3,1,1; - 0.016,1,1,1,0.3,1,1; 0.018,1,1,1,0.3,1,1; 0.02,1,1,1,0.3,1,1; 0.022,1,1, - 1,0.3,1,1; 0.024,1,1,1,0.3,1,1; 0.026,1,1,1,0.3,1,1; 0.028,1,1,1,0.3,1, - 1; 0.03,1,1,1,0.3,1,1; 0.032,1,1,1,0.3,1,1; 0.034,1,1,1,0.3,1,1; 0.036, - 1,1,1,0.3,1,1; 0.038,1,1,1,0.3,1,1; 0.04,1,1,1,0.3,1,1; 0.042,1,1,1,0.3, - 1,1; 0.044,1,1,1,0.3,1,1; 0.046,1,1,1,0.3,1,1; 0.048,1,1,1,0.3,1,1; - 0.05,1,1,1,0.3,1,1; 0.052,1,1,1,0.3,1,1; 0.054,1,1,1,0.3,1,1; 0.056,1,1, - 1,0.3,1,1; 0.058,1,1,1,0.3,1,1; 0.06,1,1,1,0.3,1,1; 0.062,1,1,1,0.3,1,1; - 0.064,1,1,1,0.3,1,1; 0.066,1,1,1,0.3,1,1; 0.068,1,1,1,0.3,1,1; 0.07,1,1, - 1,0.3,1,1; 0.072,1,1,1,0.3,1,1; 0.074,1,1,1,0.3,1,1; 0.076,1,1,1,0.3,1, - 1; 0.078,1,1,1,0.3,1,1; 0.08,1,1,1,0.3,1,1; 0.082,1,1,1,0.3,1,1; 0.084, - 1,1,1,0.3,1,1; 0.086,1,1,1,0.3,1,1; 0.088,1,1,1,0.3,1,1; 0.09,1,1,1,0.3, - 1,1; 0.092,1,1,1,0.3,1,1; 0.094,1,1,1,0.3,1,1; 0.096,1,1,1,0.3,1,1; - 0.098,1,1,1,0.3,1,1; 0.1,1,1,1,0.3,1,1; 0.1,0.5,1,1,0.5,1,1; 0.1,0.5,1, - 1,0.5,1,1; 0.102,0.5,1,1,0.5,1,1; 0.104,0.5,1,1,0.5,1,1; 0.106,0.5,1,1, - 0.5,1,1; 0.108,0.5,1,1,0.5,1,1; 0.11,0.5,1,1,0.5,1,1; 0.112,0.5,1,1,0.5, - 1,1; 0.114,0.5,1,1,0.5,1,1; 0.116,0.5,1,1,0.5,1,1; 0.118,0.5,1,1,0.5,1, - 1; 0.12,0.5,1,1,0.5,1,1; 0.122,0.5,1,1,0.5,1,1; 0.124,0.5,1,1,0.5,1,1; - 0.126,0.5,1,1,0.5,1,1; 0.128,0.5,1,1,0.5,1,1; 0.13,0.5,1,1,0.5,1,1; - 0.132,0.5,1,1,0.5,1,1; 0.134,0.5,1,1,0.5,1,1; 0.136,0.5,1,1,0.5,1,1; - 0.138,0.5,1,1,0.5,1,1; 0.14,0.5,1,1,0.5,1,1; 0.142,0.5,1,1,0.5,1,1; - 0.144,0.5,1,1,0.5,1,1; 0.146,0.5,1,1,0.5,1,1; 0.148,0.5,1,1,0.5,1,1; - 0.15,0.5,1,1,0.5,1,1; 0.152,0.5,1,1,0.5,1,1; 0.154,0.5,1,1,0.5,1,1; - 0.156,0.5,1,1,0.5,1,1; 0.158,0.5,1,1,0.5,1,1; 0.16,0.5,1,1,0.5,1,1; - 0.162,0.5,1,1,0.5,1,1; 0.164,0.5,1,1,0.5,1,1; 0.166,0.5,1,1,0.5,1,1; - 0.168,0.5,1,1,0.5,1,1; 0.17,0.5,1,1,0.5,1,1; 0.172,0.5,1,1,0.5,1,1; - 0.174,0.5,1,1,0.5,1,1; 0.176,0.5,1,1,0.5,1,1; 0.178,0.5,1,1,0.5,1,1; - 0.18,0.5,1,1,0.5,1,1; 0.182,0.5,1,1,0.5,1,1; 0.184,0.5,1,1,0.5,1,1; - 0.186,0.5,1,1,0.5,1,1; 0.188,0.5,1,1,0.5,1,1; 0.19,0.5,1,1,0.5,1,1; - 0.192,0.5,1,1,0.5,1,1; 0.194,0.5,1,1,0.5,1,1; 0.196,0.5,1,1,0.5,1,1; - 0.198,0.5,1,1,0.5,1,1; 0.2,0.5,1,1,0.5,1,1; 0.202,0.5,1,1,0.5,1,1; - 0.204,0.5,1,1,0.5,1,1; 0.206,0.5,1,1,0.5,1,1; 0.208,0.5,1,1,0.5,1,1; - 0.21,0.5,1,1,0.5,1,1; 0.212,0.5,1,1,0.5,1,1; 0.214,0.5,1,1,0.5,1,1; - 0.216,0.5,1,1,0.5,1,1; 0.218,0.5,1,1,0.5,1,1; 0.22,0.5,1,1,0.5,1,1; - 0.222,0.5,1,1,0.5,1,1; 0.224,0.5,1,1,0.5,1,1; 0.226,0.5,1,1,0.5,1,1; - 0.228,0.5,1,1,0.5,1,1; 0.23,0.5,1,1,0.5,1,1; 0.232,0.5,1,1,0.5,1,1; - 0.234,0.5,1,1,0.5,1,1; 0.236,0.5,1,1,0.5,1,1; 0.238,0.5,1,1,0.5,1,1; - 0.24,0.5,1,1,0.5,1,1; 0.242,0.5,1,1,0.5,1,1; 0.244,0.5,1,1,0.5,1,1; - 0.246,0.5,1,1,0.5,1,1; 0.248,0.5,1,1,0.5,1,1; 0.25,0.5,1,1,0.5,1,1; - 0.252,0.5,1,1,0.5,1,1; 0.254,0.5,1,1,0.5,1,1; 0.256,0.5,1,1,0.5,1,1; - 0.258,0.5,1,1,0.5,1,1; 0.26,0.5,1,1,0.5,1,1; 0.262,0.5,1,1,0.5,1,1; - 0.264,0.5,1,1,0.5,1,1; 0.266,0.5,1,1,0.5,1,1; 0.268,0.5,1,1,0.5,1,1; - 0.27,0.5,1,1,0.5,1,1; 0.272,0.5,1,1,0.5,1,1; 0.274,0.5,1,1,0.5,1,1; - 0.276,0.5,1,1,0.5,1,1; 0.278,0.5,1,1,0.5,1,1; 0.28,0.5,1,1,0.5,1,1; - 0.282,0.5,1,1,0.5,1,1; 0.284,0.5,1,1,0.5,1,1; 0.286,0.5,1,1,0.5,1,1; - 0.288,0.5,1,1,0.5,1,1; 0.29,0.5,1,1,0.5,1,1; 0.292,0.5,1,1,0.5,1,1; - 0.294,0.5,1,1,0.5,1,1; 0.296,0.5,1,1,0.5,1,1; 0.298,0.5,1,1,0.5,1,1; - 0.3,0.5,1,1,0.5,1,1; 0.3,0.5,1,1,0.1,1,1; 0.3,0.5,1,1,0.1,1,1; 0.302, - 0.5,1,1,0.1,1,1; 0.304,0.5,1,1,0.1,1,1; 0.306,0.5,1,1,0.1,1,1; 0.308, - 0.5,1,1,0.1,1,1; 0.31,0.5,1,1,0.1,1,1; 0.312,0.5,1,1,0.1,1,1; 0.314,0.5, - 1,1,0.1,1,1; 0.316,0.5,1,1,0.1,1,1; 0.318,0.5,1,1,0.1,1,1; 0.32,0.5,1,1, - 0.1,1,1; 0.322,0.5,1,1,0.1,1,1; 0.324,0.5,1,1,0.1,1,1; 0.326,0.5,1,1, - 0.1,1,1; 0.328,0.5,1,1,0.1,1,1; 0.33,0.5,1,1,0.1,1,1; 0.332,0.5,1,1,0.1, - 1,1; 0.334,0.5,1,1,0.1,1,1; 0.336,0.5,1,1,0.1,1,1; 0.338,0.5,1,1,0.1,1, - 1; 0.34,0.5,1,1,0.1,1,1; 0.342,0.5,1,1,0.1,1,1; 0.344,0.5,1,1,0.1,1,1; - 0.346,0.5,1,1,0.1,1,1; 0.348,0.5,1,1,0.1,1,1; 0.35,0.5,1,1,0.1,1,1; - 0.352,0.5,1,1,0.1,1,1; 0.354,0.5,1,1,0.1,1,1; 0.356,0.5,1,1,0.1,1,1; - 0.358,0.5,1,1,0.1,1,1; 0.36,0.5,1,1,0.1,1,1; 0.362,0.5,1,1,0.1,1,1; - 0.364,0.5,1,1,0.1,1,1; 0.366,0.5,1,1,0.1,1,1; 0.368,0.5,1,1,0.1,1,1; - 0.37,0.5,1,1,0.1,1,1; 0.372,0.5,1,1,0.1,1,1; 0.374,0.5,1,1,0.1,1,1; - 0.376,0.5,1,1,0.1,1,1; 0.378,0.5,1,1,0.1,1,1; 0.38,0.5,1,1,0.1,1,1; - 0.382,0.5,1,1,0.1,1,1; 0.384,0.5,1,1,0.1,1,1; 0.386,0.5,1,1,0.1,1,1; - 0.388,0.5,1,1,0.1,1,1; 0.39,0.5,1,1,0.1,1,1; 0.392,0.5,1,1,0.1,1,1; - 0.394,0.5,1,1,0.1,1,1; 0.396,0.5,1,1,0.1,1,1; 0.398,0.5,1,1,0.1,1,1; - 0.4,0.5,1,1,0.1,1,1; 0.402,0.5,1,1,0.1,1,1; 0.404,0.5,1,1,0.1,1,1; - 0.406,0.5,1,1,0.1,1,1; 0.408,0.5,1,1,0.1,1,1; 0.41,0.5,1,1,0.1,1,1; - 0.412,0.5,1,1,0.1,1,1; 0.414,0.5,1,1,0.1,1,1; 0.416,0.5,1,1,0.1,1,1; - 0.418,0.5,1,1,0.1,1,1; 0.42,0.5,1,1,0.1,1,1; 0.422,0.5,1,1,0.1,1,1; - 0.424,0.5,1,1,0.1,1,1; 0.426,0.5,1,1,0.1,1,1; 0.428,0.5,1,1,0.1,1,1; - 0.43,0.5,1,1,0.1,1,1; 0.432,0.5,1,1,0.1,1,1; 0.434,0.5,1,1,0.1,1,1; - 0.436,0.5,1,1,0.1,1,1; 0.438,0.5,1,1,0.1,1,1; 0.44,0.5,1,1,0.1,1,1; - 0.442,0.5,1,1,0.1,1,1; 0.444,0.5,1,1,0.1,1,1; 0.446,0.5,1,1,0.1,1,1; - 0.448,0.5,1,1,0.1,1,1; 0.45,0.5,1,1,0.1,1,1; 0.452,0.5,1,1,0.1,1,1; - 0.454,0.5,1,1,0.1,1,1; 0.456,0.5,1,1,0.1,1,1; 0.458,0.5,1,1,0.1,1,1; - 0.46,0.5,1,1,0.1,1,1; 0.462,0.5,1,1,0.1,1,1; 0.464,0.5,1,1,0.1,1,1; - 0.466,0.5,1,1,0.1,1,1; 0.468,0.5,1,1,0.1,1,1; 0.47,0.5,1,1,0.1,1,1; - 0.472,0.5,1,1,0.1,1,1; 0.474,0.5,1,1,0.1,1,1; 0.476,0.5,1,1,0.1,1,1; - 0.478,0.5,1,1,0.1,1,1; 0.48,0.5,1,1,0.1,1,1; 0.482,0.5,1,1,0.1,1,1; - 0.484,0.5,1,1,0.1,1,1; 0.486,0.5,1,1,0.1,1,1; 0.488,0.5,1,1,0.1,1,1; - 0.49,0.5,1,1,0.1,1,1; 0.492,0.5,1,1,0.1,1,1; 0.494,0.5,1,1,0.1,1,1; - 0.496,0.5,1,1,0.1,1,1; 0.498,0.5,1,1,0.1,1,1; 0.5,0.5,1,1,0.1,1,1; - 0.502,0.5,1,1,0.1,1,1; 0.504,0.5,1,1,0.1,1,1; 0.506,0.5,1,1,0.1,1,1; - 0.508,0.5,1,1,0.1,1,1; 0.51,0.5,1,1,0.1,1,1; 0.512,0.5,1,1,0.1,1,1; - 0.514,0.5,1,1,0.1,1,1; 0.516,0.5,1,1,0.1,1,1; 0.518,0.5,1,1,0.1,1,1; - 0.52,0.5,1,1,0.1,1,1; 0.522,0.5,1,1,0.1,1,1; 0.524,0.5,1,1,0.1,1,1; - 0.526,0.5,1,1,0.1,1,1; 0.528,0.5,1,1,0.1,1,1; 0.53,0.5,1,1,0.1,1,1; - 0.532,0.5,1,1,0.1,1,1; 0.534,0.5,1,1,0.1,1,1; 0.536,0.5,1,1,0.1,1,1; - 0.538,0.5,1,1,0.1,1,1; 0.54,0.5,1,1,0.1,1,1; 0.542,0.5,1,1,0.1,1,1; - 0.544,0.5,1,1,0.1,1,1; 0.546,0.5,1,1,0.1,1,1; 0.548,0.5,1,1,0.1,1,1; - 0.55,0.5,1,1,0.1,1,1; 0.552,0.5,1,1,0.1,1,1; 0.554,0.5,1,1,0.1,1,1; - 0.556,0.5,1,1,0.1,1,1; 0.558,0.5,1,1,0.1,1,1; 0.56,0.5,1,1,0.1,1,1; - 0.562,0.5,1,1,0.1,1,1; 0.564,0.5,1,1,0.1,1,1; 0.566,0.5,1,1,0.1,1,1; - 0.568,0.5,1,1,0.1,1,1; 0.57,0.5,1,1,0.1,1,1; 0.572,0.5,1,1,0.1,1,1; - 0.574,0.5,1,1,0.1,1,1; 0.576,0.5,1,1,0.1,1,1; 0.578,0.5,1,1,0.1,1,1; - 0.58,0.5,1,1,0.1,1,1; 0.582,0.5,1,1,0.1,1,1; 0.584,0.5,1,1,0.1,1,1; - 0.586,0.5,1,1,0.1,1,1; 0.588,0.5,1,1,0.1,1,1; 0.59,0.5,1,1,0.1,1,1; - 0.592,0.5,1,1,0.1,1,1; 0.594,0.5,1,1,0.1,1,1; 0.596,0.5,1,1,0.1,1,1; - 0.598,0.5,1,1,0.1,1,1; 0.6,0.5,1,1,0.1,1,1; 0.602,0.5,1,1,0.1,1,1; - 0.604,0.5,1,1,0.1,1,1; 0.606,0.5,1,1,0.1,1,1; 0.608,0.5,1,1,0.1,1,1; - 0.61,0.5,1,1,0.1,1,1; 0.612,0.5,1,1,0.1,1,1; 0.614,0.5,1,1,0.1,1,1; - 0.616,0.5,1,1,0.1,1,1; 0.618,0.5,1,1,0.1,1,1; 0.62,0.5,1,1,0.1,1,1; - 0.622,0.5,1,1,0.1,1,1; 0.624,0.5,1,1,0.1,1,1; 0.626,0.5,1,1,0.1,1,1; - 0.628,0.5,1,1,0.1,1,1; 0.63,0.5,1,1,0.1,1,1; 0.632,0.5,1,1,0.1,1,1; - 0.634,0.5,1,1,0.1,1,1; 0.636,0.5,1,1,0.1,1,1; 0.638,0.5,1,1,0.1,1,1; - 0.64,0.5,1,1,0.1,1,1; 0.642,0.5,1,1,0.1,1,1; 0.644,0.5,1,1,0.1,1,1; - 0.646,0.5,1,1,0.1,1,1; 0.648,0.5,1,1,0.1,1,1; 0.65,0.5,1,1,0.1,1,1; - 0.652,0.5,1,1,0.1,1,1; 0.654,0.5,1,1,0.1,1,1; 0.656,0.5,1,1,0.1,1,1; - 0.658,0.5,1,1,0.1,1,1; 0.66,0.5,1,1,0.1,1,1; 0.662,0.5,1,1,0.1,1,1; - 0.664,0.5,1,1,0.1,1,1; 0.666,0.5,1,1,0.1,1,1; 0.668,0.5,1,1,0.1,1,1; - 0.67,0.5,1,1,0.1,1,1; 0.672,0.5,1,1,0.1,1,1; 0.674,0.5,1,1,0.1,1,1; - 0.676,0.5,1,1,0.1,1,1; 0.678,0.5,1,1,0.1,1,1; 0.68,0.5,1,1,0.1,1,1; - 0.682,0.5,1,1,0.1,1,1; 0.684,0.5,1,1,0.1,1,1; 0.686,0.5,1,1,0.1,1,1; - 0.688,0.5,1,1,0.1,1,1; 0.69,0.5,1,1,0.1,1,1; 0.692,0.5,1,1,0.1,1,1; - 0.694,0.5,1,1,0.1,1,1; 0.696,0.5,1,1,0.1,1,1; 0.698,0.5,1,1,0.1,1,1; - 0.7,0.5,1,1,0.1,1,1; 0.7,0.5,1,3,0.5,0.762,0.762; 0.7,0.5,1,3,0.5,0.762, - 0.762; 0.702,0.5,1,3,0.5,0.762,0.762; 0.704,0.5,1,3,0.5,0.762,0.762; - 0.706,0.5,1,3,0.5,0.762,0.762; 0.708,0.5,1,3,0.5,0.762,0.762; 0.71,0.5, - 1,3,0.5,0.762,0.762; 0.712,0.5,1,3,0.5,0.762,0.762; 0.714,0.5,1,3,0.5, - 0.762,0.762; 0.716,0.5,1,3,0.5,0.762,0.762; 0.718,0.5,1,3,0.5,0.762, - 0.762; 0.72,0.5,1,3,0.5,0.762,0.762; 0.722,0.5,1,3,0.5,0.762,0.762; - 0.724,0.5,1,3,0.5,0.762,0.762; 0.726,0.5,1,3,0.5,0.762,0.762; 0.728,0.5, - 1,3,0.5,0.762,0.762; 0.73,0.5,1,3,0.5,0.762,0.762; 0.732,0.5,1,3,0.5, - 0.762,0.762; 0.734,0.5,1,3,0.5,0.762,0.762; 0.736,0.5,1,3,0.5,0.762, - 0.762; 0.738,0.5,1,3,0.5,0.762,0.762; 0.74,0.5,1,3,0.5,0.762,0.762; - 0.742,0.5,1,3,0.5,0.762,0.762; 0.744,0.5,1,3,0.5,0.762,0.762; 0.746,0.5, - 1,3,0.5,0.762,0.762; 0.748,0.5,1,3,0.5,0.762,0.762; 0.75,0.5,1,3,0.5, - 0.762,0.762; 0.752,0.5,1,3,0.5,0.762,0.762; 0.754,0.5,1,3,0.5,0.762, - 0.762; 0.756,0.5,1,3,0.5,0.762,0.762; 0.758,0.5,1,3,0.5,0.762,0.762; - 0.76,0.5,1,3,0.5,0.762,0.762; 0.762,0.5,1,3,0.5,0.762,0.762; 0.764,0.5, - 1,3,0.5,0.762,0.762; 0.766,0.5,1,3,0.5,0.762,0.762; 0.768,0.5,1,3,0.5, - 0.762,0.762; 0.77,0.5,1,3,0.5,0.762,0.762; 0.772,0.5,1,3,0.5,0.762, - 0.762; 0.774,0.5,1,3,0.5,0.762,0.762; 0.776,0.5,1,3,0.5,0.762,0.762; - 0.778,0.5,1,3,0.5,0.762,0.762; 0.78,0.5,1,3,0.5,0.762,0.762; 0.782,0.5, - 1,3,0.5,0.762,0.762; 0.784,0.5,1,3,0.5,0.762,0.762; 0.786,0.5,1,3,0.5, - 0.762,0.762; 0.788,0.5,1,3,0.5,0.762,0.762; 0.79,0.5,1,3,0.5,0.762, - 0.762; 0.792,0.5,1,3,0.5,0.762,0.762; 0.794,0.5,1,3,0.5,0.762,0.762; - 0.796,0.5,1,3,0.5,0.762,0.762; 0.798,0.5,1,3,0.5,0.762,0.762; 0.8,0.5,1, - 3,0.5,0.762,0.762; 0.802,0.5,1,3,0.5,0.762,0.762; 0.804,0.5,1,3,0.5, - 0.762,0.762; 0.806,0.5,1,3,0.5,0.762,0.762; 0.808,0.5,1,3,0.5,0.762, - 0.762; 0.81,0.5,1,3,0.5,0.762,0.762; 0.812,0.5,1,3,0.5,0.762,0.762; - 0.814,0.5,1,3,0.5,0.762,0.762; 0.816,0.5,1,3,0.5,0.762,0.762; 0.818,0.5, - 1,3,0.5,0.762,0.762; 0.82,0.5,1,3,0.5,0.762,0.762; 0.822,0.5,1,3,0.5, - 0.762,0.762; 0.824,0.5,1,3,0.5,0.762,0.762; 0.826,0.5,1,3,0.5,0.762, - 0.762; 0.828,0.5,1,3,0.5,0.762,0.762; 0.83,0.5,1,3,0.5,0.762,0.762; - 0.83,1,1,3,0.8,0.762,0.762; 0.83,1,1,3,0.8,0.762,0.762; 0.832,1,1,3,0.8, - 0.762,0.762; 0.834,1,1,3,0.8,0.762,0.762; 0.836,1,1,3,0.8,0.762,0.762; - 0.838,1,1,3,0.8,0.762,0.762; 0.84,1,1,3,0.8,0.762,0.762; 0.842,1,1,3, - 0.8,0.762,0.762; 0.844,1,1,3,0.8,0.762,0.762; 0.846,1,1,3,0.8,0.762, - 0.762; 0.848,1,1,3,0.8,0.762,0.762; 0.85,1,1,3,0.8,0.762,0.762; 0.85,1, - 2,3,0.5,0.762,0.762; 0.85,1,2,3,0.5,0.762,0.762; 0.852,1,2,3,0.5,0.762, - 0.762; 0.854,1,2,3,0.5,0.762,0.762; 0.856,1,2,3,0.5,0.762,0.762; 0.858, - 1,2,3,0.5,0.762,0.762; 0.86,1,2,3,0.5,0.762,0.762; 0.862,1,2,3,0.5, - 0.762,0.762; 0.864,1,2,3,0.5,0.762,0.762; 0.866,1,2,3,0.5,0.762,0.762; - 0.868,1,2,3,0.5,0.762,0.762; 0.87,1,2,3,0.5,0.762,0.762; 0.872,1,2,3, - 0.5,0.762,0.762; 0.874,1,2,3,0.5,0.762,0.762; 0.876,1,2,3,0.5,0.762, - 0.762; 0.878,1,2,3,0.5,0.762,0.762; 0.88,1,2,3,0.5,0.762,0.762; 0.882,1, - 2,3,0.5,0.762,0.762; 0.884,1,2,3,0.5,0.762,0.762; 0.886,1,2,3,0.5,0.762, - 0.762; 0.888,1,2,3,0.5,0.762,0.762; 0.89,1,2,3,0.5,0.762,0.762; 0.892,1, - 2,3,0.5,0.762,0.762; 0.894,1,2,3,0.5,0.762,0.762; 0.896,1,2,3,0.5,0.762, - 0.762; 0.898,1,2,3,0.5,0.762,0.762; 0.9,1,2,3,0.5,0.762,0.762; 0.902,1, - 2,3,0.5,0.762,0.762; 0.904,1,2,3,0.5,0.762,0.762; 0.906,1,2,3,0.5,0.762, - 0.762; 0.908,1,2,3,0.5,0.762,0.762; 0.91,1,2,3,0.5,0.762,0.762; 0.912,1, - 2,3,0.5,0.762,0.762; 0.914,1,2,3,0.5,0.762,0.762; 0.916,1,2,3,0.5,0.762, - 0.762; 0.918,1,2,3,0.5,0.762,0.762; 0.92,1,2,3,0.5,0.762,0.762; 0.922,1, - 2,3,0.5,0.762,0.762; 0.924,1,2,3,0.5,0.762,0.762; 0.926,1,2,3,0.5,0.762, - 0.762; 0.928,1,2,3,0.5,0.762,0.762; 0.93,1,2,3,0.5,0.762,0.762; 0.932,1, - 2,3,0.5,0.762,0.762; 0.934,1,2,3,0.5,0.762,0.762; 0.936,1,2,3,0.5,0.762, - 0.762; 0.938,1,2,3,0.5,0.762,0.762; 0.94,1,2,3,0.5,0.762,0.762; 0.942,1, - 2,3,0.5,0.762,0.762; 0.944,1,2,3,0.5,0.762,0.762; 0.946,1,2,3,0.5,0.762, - 0.762; 0.948,1,2,3,0.5,0.762,0.762; 0.95,1,2,3,0.5,0.762,0.762; 0.952,1, - 2,3,0.5,0.762,0.762; 0.954,1,2,3,0.5,0.762,0.762; 0.956,1,2,3,0.5,0.762, - 0.762; 0.958,1,2,3,0.5,0.762,0.762; 0.96,1,2,3,0.5,0.762,0.762; 0.962,1, - 2,3,0.5,0.762,0.762; 0.964,1,2,3,0.5,0.762,0.762; 0.966,1,2,3,0.5,0.762, - 0.762; 0.968,1,2,3,0.5,0.762,0.762; 0.97,1,2,3,0.5,0.762,0.762; 0.972,1, - 2,3,0.5,0.762,0.762; 0.974,1,2,3,0.5,0.762,0.762; 0.976,1,2,3,0.5,0.762, - 0.762; 0.978,1,2,3,0.5,0.762,0.762; 0.98,1,2,3,0.5,0.762,0.762; 0.982,1, - 2,3,0.5,0.762,0.762; 0.984,1,2,3,0.5,0.762,0.762; 0.986,1,2,3,0.5,0.762, - 0.762; 0.988,1,2,3,0.5,0.762,0.762; 0.99,1,2,3,0.5,0.762,0.762; 0.992,1, - 2,3,0.5,0.762,0.762; 0.994,1,2,3,0.5,0.762,0.762; 0.996,1,2,3,0.5,0.762, - 0.762; 0.998,1,2,3,0.5,0.762,0.762; 1,1,2,3,0.5,0.762,0.762], - extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) + Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable RefDat(table=[0,1,1,1, + 0.3,1,1; 0.002,1,1,1,0.3,1,1; 0.004,1,1,1,0.3,1,1; 0.006,1,1,1,0.3,1,1; + 0.008,1,1,1,0.3,1,1; 0.01,1,1,1,0.3,1,1; 0.012,1,1,1,0.3,1,1; 0.014,1,1, + 1,0.3,1,1; 0.016,1,1,1,0.3,1,1; 0.018,1,1,1,0.3,1,1; 0.02,1,1,1,0.3,1,1; + 0.022,1,1,1,0.3,1,1; 0.024,1,1,1,0.3,1,1; 0.026,1,1,1,0.3,1,1; 0.028,1, + 1,1,0.3,1,1; 0.03,1,1,1,0.3,1,1; 0.032,1,1,1,0.3,1,1; 0.034,1,1,1,0.3,1, + 1; 0.036,1,1,1,0.3,1,1; 0.038,1,1,1,0.3,1,1; 0.04,1,1,1,0.3,1,1; 0.042, + 1,1,1,0.3,1,1; 0.044,1,1,1,0.3,1,1; 0.046,1,1,1,0.3,1,1; 0.048,1,1,1, + 0.3,1,1; 0.05,1,1,1,0.3,1,1; 0.052,1,1,1,0.3,1,1; 0.054,1,1,1,0.3,1,1; + 0.056,1,1,1,0.3,1,1; 0.058,1,1,1,0.3,1,1; 0.06,1,1,1,0.3,1,1; 0.062,1,1, + 1,0.3,1,1; 0.064,1,1,1,0.3,1,1; 0.066,1,1,1,0.3,1,1; 0.068,1,1,1,0.3,1, + 1; 0.07,1,1,1,0.3,1,1; 0.072,1,1,1,0.3,1,1; 0.074,1,1,1,0.3,1,1; 0.076, + 1,1,1,0.3,1,1; 0.078,1,1,1,0.3,1,1; 0.08,1,1,1,0.3,1,1; 0.082,1,1,1,0.3, + 1,1; 0.084,1,1,1,0.3,1,1; 0.086,1,1,1,0.3,1,1; 0.088,1,1,1,0.3,1,1; + 0.09,1,1,1,0.3,1,1; 0.092,1,1,1,0.3,1,1; 0.094,1,1,1,0.3,1,1; 0.096,1,1, + 1,0.3,1,1; 0.098,1,1,1,0.3,1,1; 0.1,1,1,1,0.3,1,1; 0.1,0.5,1,1,0.5,1,1; + 0.1,0.5,1,1,0.5,1,1; 0.102,0.5,1,1,0.5,1,1; 0.104,0.5,1,1,0.5,1,1; + 0.106,0.5,1,1,0.5,1,1; 0.108,0.5,1,1,0.5,1,1; 0.11,0.5,1,1,0.5,1,1; + 0.112,0.5,1,1,0.5,1,1; 0.114,0.5,1,1,0.5,1,1; 0.116,0.5,1,1,0.5,1,1; + 0.118,0.5,1,1,0.5,1,1; 0.12,0.5,1,1,0.5,1,1; 0.122,0.5,1,1,0.5,1,1; + 0.124,0.5,1,1,0.5,1,1; 0.126,0.5,1,1,0.5,1,1; 0.128,0.5,1,1,0.5,1,1; + 0.13,0.5,1,1,0.5,1,1; 0.132,0.5,1,1,0.5,1,1; 0.134,0.5,1,1,0.5,1,1; + 0.136,0.5,1,1,0.5,1,1; 0.138,0.5,1,1,0.5,1,1; 0.14,0.5,1,1,0.5,1,1; + 0.142,0.5,1,1,0.5,1,1; 0.144,0.5,1,1,0.5,1,1; 0.146,0.5,1,1,0.5,1,1; + 0.148,0.5,1,1,0.5,1,1; 0.15,0.5,1,1,0.5,1,1; 0.152,0.5,1,1,0.5,1,1; + 0.154,0.5,1,1,0.5,1,1; 0.156,0.5,1,1,0.5,1,1; 0.158,0.5,1,1,0.5,1,1; + 0.16,0.5,1,1,0.5,1,1; 0.162,0.5,1,1,0.5,1,1; 0.164,0.5,1,1,0.5,1,1; + 0.166,0.5,1,1,0.5,1,1; 0.168,0.5,1,1,0.5,1,1; 0.17,0.5,1,1,0.5,1,1; + 0.172,0.5,1,1,0.5,1,1; 0.174,0.5,1,1,0.5,1,1; 0.176,0.5,1,1,0.5,1,1; + 0.178,0.5,1,1,0.5,1,1; 0.18,0.5,1,1,0.5,1,1; 0.182,0.5,1,1,0.5,1,1; + 0.184,0.5,1,1,0.5,1,1; 0.186,0.5,1,1,0.5,1,1; 0.188,0.5,1,1,0.5,1,1; + 0.19,0.5,1,1,0.5,1,1; 0.192,0.5,1,1,0.5,1,1; 0.194,0.5,1,1,0.5,1,1; + 0.196,0.5,1,1,0.5,1,1; 0.198,0.5,1,1,0.5,1,1; 0.2,0.5,1,1,0.5,1,1; + 0.202,0.5,1,1,0.5,1,1; 0.204,0.5,1,1,0.5,1,1; 0.206,0.5,1,1,0.5,1,1; + 0.208,0.5,1,1,0.5,1,1; 0.21,0.5,1,1,0.5,1,1; 0.212,0.5,1,1,0.5,1,1; + 0.214,0.5,1,1,0.5,1,1; 0.216,0.5,1,1,0.5,1,1; 0.218,0.5,1,1,0.5,1,1; + 0.22,0.5,1,1,0.5,1,1; 0.222,0.5,1,1,0.5,1,1; 0.224,0.5,1,1,0.5,1,1; + 0.226,0.5,1,1,0.5,1,1; 0.228,0.5,1,1,0.5,1,1; 0.23,0.5,1,1,0.5,1,1; + 0.232,0.5,1,1,0.5,1,1; 0.234,0.5,1,1,0.5,1,1; 0.236,0.5,1,1,0.5,1,1; + 0.238,0.5,1,1,0.5,1,1; 0.24,0.5,1,1,0.5,1,1; 0.242,0.5,1,1,0.5,1,1; + 0.244,0.5,1,1,0.5,1,1; 0.246,0.5,1,1,0.5,1,1; 0.248,0.5,1,1,0.5,1,1; + 0.25,0.5,1,1,0.5,1,1; 0.252,0.5,1,1,0.5,1,1; 0.254,0.5,1,1,0.5,1,1; + 0.256,0.5,1,1,0.5,1,1; 0.258,0.5,1,1,0.5,1,1; 0.26,0.5,1,1,0.5,1,1; + 0.262,0.5,1,1,0.5,1,1; 0.264,0.5,1,1,0.5,1,1; 0.266,0.5,1,1,0.5,1,1; + 0.268,0.5,1,1,0.5,1,1; 0.27,0.5,1,1,0.5,1,1; 0.272,0.5,1,1,0.5,1,1; + 0.274,0.5,1,1,0.5,1,1; 0.276,0.5,1,1,0.5,1,1; 0.278,0.5,1,1,0.5,1,1; + 0.28,0.5,1,1,0.5,1,1; 0.282,0.5,1,1,0.5,1,1; 0.284,0.5,1,1,0.5,1,1; + 0.286,0.5,1,1,0.5,1,1; 0.288,0.5,1,1,0.5,1,1; 0.29,0.5,1,1,0.5,1,1; + 0.292,0.5,1,1,0.5,1,1; 0.294,0.5,1,1,0.5,1,1; 0.296,0.5,1,1,0.5,1,1; + 0.298,0.5,1,1,0.5,1,1; 0.3,0.5,1,1,0.5,1,1; 0.3,0.5,1,1,0.1,1,1; 0.3, + 0.5,1,1,0.1,1,1; 0.302,0.5,1,1,0.1,1,1; 0.304,0.5,1,1,0.1,1,1; 0.306, + 0.5,1,1,0.1,1,1; 0.308,0.5,1,1,0.1,1,1; 0.31,0.5,1,1,0.1,1,1; 0.312,0.5, + 1,1,0.1,1,1; 0.314,0.5,1,1,0.1,1,1; 0.316,0.5,1,1,0.1,1,1; 0.318,0.5,1, + 1,0.1,1,1; 0.32,0.5,1,1,0.1,1,1; 0.322,0.5,1,1,0.1,1,1; 0.324,0.5,1,1, + 0.1,1,1; 0.326,0.5,1,1,0.1,1,1; 0.328,0.5,1,1,0.1,1,1; 0.33,0.5,1,1,0.1, + 1,1; 0.332,0.5,1,1,0.1,1,1; 0.334,0.5,1,1,0.1,1,1; 0.336,0.5,1,1,0.1,1, + 1; 0.338,0.5,1,1,0.1,1,1; 0.34,0.5,1,1,0.1,1,1; 0.342,0.5,1,1,0.1,1,1; + 0.344,0.5,1,1,0.1,1,1; 0.346,0.5,1,1,0.1,1,1; 0.348,0.5,1,1,0.1,1,1; + 0.35,0.5,1,1,0.1,1,1; 0.352,0.5,1,1,0.1,1,1; 0.354,0.5,1,1,0.1,1,1; + 0.356,0.5,1,1,0.1,1,1; 0.358,0.5,1,1,0.1,1,1; 0.36,0.5,1,1,0.1,1,1; + 0.362,0.5,1,1,0.1,1,1; 0.364,0.5,1,1,0.1,1,1; 0.366,0.5,1,1,0.1,1,1; + 0.368,0.5,1,1,0.1,1,1; 0.37,0.5,1,1,0.1,1,1; 0.372,0.5,1,1,0.1,1,1; + 0.374,0.5,1,1,0.1,1,1; 0.376,0.5,1,1,0.1,1,1; 0.378,0.5,1,1,0.1,1,1; + 0.38,0.5,1,1,0.1,1,1; 0.382,0.5,1,1,0.1,1,1; 0.384,0.5,1,1,0.1,1,1; + 0.386,0.5,1,1,0.1,1,1; 0.388,0.5,1,1,0.1,1,1; 0.39,0.5,1,1,0.1,1,1; + 0.392,0.5,1,1,0.1,1,1; 0.394,0.5,1,1,0.1,1,1; 0.396,0.5,1,1,0.1,1,1; + 0.398,0.5,1,1,0.1,1,1; 0.4,0.5,1,1,0.1,1,1; 0.402,0.5,1,1,0.1,1,1; + 0.404,0.5,1,1,0.1,1,1; 0.406,0.5,1,1,0.1,1,1; 0.408,0.5,1,1,0.1,1,1; + 0.41,0.5,1,1,0.1,1,1; 0.412,0.5,1,1,0.1,1,1; 0.414,0.5,1,1,0.1,1,1; + 0.416,0.5,1,1,0.1,1,1; 0.418,0.5,1,1,0.1,1,1; 0.42,0.5,1,1,0.1,1,1; + 0.422,0.5,1,1,0.1,1,1; 0.424,0.5,1,1,0.1,1,1; 0.426,0.5,1,1,0.1,1,1; + 0.428,0.5,1,1,0.1,1,1; 0.43,0.5,1,1,0.1,1,1; 0.432,0.5,1,1,0.1,1,1; + 0.434,0.5,1,1,0.1,1,1; 0.436,0.5,1,1,0.1,1,1; 0.438,0.5,1,1,0.1,1,1; + 0.44,0.5,1,1,0.1,1,1; 0.442,0.5,1,1,0.1,1,1; 0.444,0.5,1,1,0.1,1,1; + 0.446,0.5,1,1,0.1,1,1; 0.448,0.5,1,1,0.1,1,1; 0.45,0.5,1,1,0.1,1,1; + 0.452,0.5,1,1,0.1,1,1; 0.454,0.5,1,1,0.1,1,1; 0.456,0.5,1,1,0.1,1,1; + 0.458,0.5,1,1,0.1,1,1; 0.46,0.5,1,1,0.1,1,1; 0.462,0.5,1,1,0.1,1,1; + 0.464,0.5,1,1,0.1,1,1; 0.466,0.5,1,1,0.1,1,1; 0.468,0.5,1,1,0.1,1,1; + 0.47,0.5,1,1,0.1,1,1; 0.472,0.5,1,1,0.1,1,1; 0.474,0.5,1,1,0.1,1,1; + 0.476,0.5,1,1,0.1,1,1; 0.478,0.5,1,1,0.1,1,1; 0.48,0.5,1,1,0.1,1,1; + 0.482,0.5,1,1,0.1,1,1; 0.484,0.5,1,1,0.1,1,1; 0.486,0.5,1,1,0.1,1,1; + 0.488,0.5,1,1,0.1,1,1; 0.49,0.5,1,1,0.1,1,1; 0.492,0.5,1,1,0.1,1,1; + 0.494,0.5,1,1,0.1,1,1; 0.496,0.5,1,1,0.1,1,1; 0.498,0.5,1,1,0.1,1,1; + 0.5,0.5,1,1,0.1,1,1; 0.502,0.5,1,1,0.1,1,1; 0.504,0.5,1,1,0.1,1,1; + 0.506,0.5,1,1,0.1,1,1; 0.508,0.5,1,1,0.1,1,1; 0.51,0.5,1,1,0.1,1,1; + 0.512,0.5,1,1,0.1,1,1; 0.514,0.5,1,1,0.1,1,1; 0.516,0.5,1,1,0.1,1,1; + 0.518,0.5,1,1,0.1,1,1; 0.52,0.5,1,1,0.1,1,1; 0.522,0.5,1,1,0.1,1,1; + 0.524,0.5,1,1,0.1,1,1; 0.526,0.5,1,1,0.1,1,1; 0.528,0.5,1,1,0.1,1,1; + 0.53,0.5,1,1,0.1,1,1; 0.532,0.5,1,1,0.1,1,1; 0.534,0.5,1,1,0.1,1,1; + 0.536,0.5,1,1,0.1,1,1; 0.538,0.5,1,1,0.1,1,1; 0.54,0.5,1,1,0.1,1,1; + 0.542,0.5,1,1,0.1,1,1; 0.544,0.5,1,1,0.1,1,1; 0.546,0.5,1,1,0.1,1,1; + 0.548,0.5,1,1,0.1,1,1; 0.55,0.5,1,1,0.1,1,1; 0.552,0.5,1,1,0.1,1,1; + 0.554,0.5,1,1,0.1,1,1; 0.556,0.5,1,1,0.1,1,1; 0.558,0.5,1,1,0.1,1,1; + 0.56,0.5,1,1,0.1,1,1; 0.562,0.5,1,1,0.1,1,1; 0.564,0.5,1,1,0.1,1,1; + 0.566,0.5,1,1,0.1,1,1; 0.568,0.5,1,1,0.1,1,1; 0.57,0.5,1,1,0.1,1,1; + 0.572,0.5,1,1,0.1,1,1; 0.574,0.5,1,1,0.1,1,1; 0.576,0.5,1,1,0.1,1,1; + 0.578,0.5,1,1,0.1,1,1; 0.58,0.5,1,1,0.1,1,1; 0.582,0.5,1,1,0.1,1,1; + 0.584,0.5,1,1,0.1,1,1; 0.586,0.5,1,1,0.1,1,1; 0.588,0.5,1,1,0.1,1,1; + 0.59,0.5,1,1,0.1,1,1; 0.592,0.5,1,1,0.1,1,1; 0.594,0.5,1,1,0.1,1,1; + 0.596,0.5,1,1,0.1,1,1; 0.598,0.5,1,1,0.1,1,1; 0.6,0.5,1,1,0.1,1,1; + 0.602,0.5,1,1,0.1,1,1; 0.604,0.5,1,1,0.1,1,1; 0.606,0.5,1,1,0.1,1,1; + 0.608,0.5,1,1,0.1,1,1; 0.61,0.5,1,1,0.1,1,1; 0.612,0.5,1,1,0.1,1,1; + 0.614,0.5,1,1,0.1,1,1; 0.616,0.5,1,1,0.1,1,1; 0.618,0.5,1,1,0.1,1,1; + 0.62,0.5,1,1,0.1,1,1; 0.622,0.5,1,1,0.1,1,1; 0.624,0.5,1,1,0.1,1,1; + 0.626,0.5,1,1,0.1,1,1; 0.628,0.5,1,1,0.1,1,1; 0.63,0.5,1,1,0.1,1,1; + 0.632,0.5,1,1,0.1,1,1; 0.634,0.5,1,1,0.1,1,1; 0.636,0.5,1,1,0.1,1,1; + 0.638,0.5,1,1,0.1,1,1; 0.64,0.5,1,1,0.1,1,1; 0.642,0.5,1,1,0.1,1,1; + 0.644,0.5,1,1,0.1,1,1; 0.646,0.5,1,1,0.1,1,1; 0.648,0.5,1,1,0.1,1,1; + 0.65,0.5,1,1,0.1,1,1; 0.652,0.5,1,1,0.1,1,1; 0.654,0.5,1,1,0.1,1,1; + 0.656,0.5,1,1,0.1,1,1; 0.658,0.5,1,1,0.1,1,1; 0.66,0.5,1,1,0.1,1,1; + 0.662,0.5,1,1,0.1,1,1; 0.664,0.5,1,1,0.1,1,1; 0.666,0.5,1,1,0.1,1,1; + 0.668,0.5,1,1,0.1,1,1; 0.67,0.5,1,1,0.1,1,1; 0.672,0.5,1,1,0.1,1,1; + 0.674,0.5,1,1,0.1,1,1; 0.676,0.5,1,1,0.1,1,1; 0.678,0.5,1,1,0.1,1,1; + 0.68,0.5,1,1,0.1,1,1; 0.682,0.5,1,1,0.1,1,1; 0.684,0.5,1,1,0.1,1,1; + 0.686,0.5,1,1,0.1,1,1; 0.688,0.5,1,1,0.1,1,1; 0.69,0.5,1,1,0.1,1,1; + 0.692,0.5,1,1,0.1,1,1; 0.694,0.5,1,1,0.1,1,1; 0.696,0.5,1,1,0.1,1,1; + 0.698,0.5,1,1,0.1,1,1; 0.7,0.5,1,1,0.1,1,1; 0.7,0.5,1,3,0.5,0.762,0.762; + 0.7,0.5,1,3,0.5,0.762,0.762; 0.702,0.5,1,3,0.5,0.762,0.762; 0.704,0.5,1, + 3,0.5,0.762,0.762; 0.706,0.5,1,3,0.5,0.762,0.762; 0.708,0.5,1,3,0.5, + 0.762,0.762; 0.71,0.5,1,3,0.5,0.762,0.762; 0.712,0.5,1,3,0.5,0.762, + 0.762; 0.714,0.5,1,3,0.5,0.762,0.762; 0.716,0.5,1,3,0.5,0.762,0.762; + 0.718,0.5,1,3,0.5,0.762,0.762; 0.72,0.5,1,3,0.5,0.762,0.762; 0.722,0.5, + 1,3,0.5,0.762,0.762; 0.724,0.5,1,3,0.5,0.762,0.762; 0.726,0.5,1,3,0.5, + 0.762,0.762; 0.728,0.5,1,3,0.5,0.762,0.762; 0.73,0.5,1,3,0.5,0.762, + 0.762; 0.732,0.5,1,3,0.5,0.762,0.762; 0.734,0.5,1,3,0.5,0.762,0.762; + 0.736,0.5,1,3,0.5,0.762,0.762; 0.738,0.5,1,3,0.5,0.762,0.762; 0.74,0.5, + 1,3,0.5,0.762,0.762; 0.742,0.5,1,3,0.5,0.762,0.762; 0.744,0.5,1,3,0.5, + 0.762,0.762; 0.746,0.5,1,3,0.5,0.762,0.762; 0.748,0.5,1,3,0.5,0.762, + 0.762; 0.75,0.5,1,3,0.5,0.762,0.762; 0.752,0.5,1,3,0.5,0.762,0.762; + 0.754,0.5,1,3,0.5,0.762,0.762; 0.756,0.5,1,3,0.5,0.762,0.762; 0.758,0.5, + 1,3,0.5,0.762,0.762; 0.76,0.5,1,3,0.5,0.762,0.762; 0.762,0.5,1,3,0.5, + 0.762,0.762; 0.764,0.5,1,3,0.5,0.762,0.762; 0.766,0.5,1,3,0.5,0.762, + 0.762; 0.768,0.5,1,3,0.5,0.762,0.762; 0.77,0.5,1,3,0.5,0.762,0.762; + 0.772,0.5,1,3,0.5,0.762,0.762; 0.774,0.5,1,3,0.5,0.762,0.762; 0.776,0.5, + 1,3,0.5,0.762,0.762; 0.778,0.5,1,3,0.5,0.762,0.762; 0.78,0.5,1,3,0.5, + 0.762,0.762; 0.782,0.5,1,3,0.5,0.762,0.762; 0.784,0.5,1,3,0.5,0.762, + 0.762; 0.786,0.5,1,3,0.5,0.762,0.762; 0.788,0.5,1,3,0.5,0.762,0.762; + 0.79,0.5,1,3,0.5,0.762,0.762; 0.792,0.5,1,3,0.5,0.762,0.762; 0.794,0.5, + 1,3,0.5,0.762,0.762; 0.796,0.5,1,3,0.5,0.762,0.762; 0.798,0.5,1,3,0.5, + 0.762,0.762; 0.8,0.5,1,3,0.5,0.762,0.762; 0.802,0.5,1,3,0.5,0.762,0.762; + 0.804,0.5,1,3,0.5,0.762,0.762; 0.806,0.5,1,3,0.5,0.762,0.762; 0.808,0.5, + 1,3,0.5,0.762,0.762; 0.81,0.5,1,3,0.5,0.762,0.762; 0.812,0.5,1,3,0.5, + 0.762,0.762; 0.814,0.5,1,3,0.5,0.762,0.762; 0.816,0.5,1,3,0.5,0.762, + 0.762; 0.818,0.5,1,3,0.5,0.762,0.762; 0.82,0.5,1,3,0.5,0.762,0.762; + 0.822,0.5,1,3,0.5,0.762,0.762; 0.824,0.5,1,3,0.5,0.762,0.762; 0.826,0.5, + 1,3,0.5,0.762,0.762; 0.828,0.5,1,3,0.5,0.762,0.762; 0.83,0.5,1,3,0.5, + 0.762,0.762; 0.83,1,1,3,0.8,0.762,0.762; 0.83,1,1,3,0.8,0.762,0.762; + 0.832,1,1,3,0.8,0.762,0.762; 0.834,1,1,3,0.8,0.762,0.762; 0.836,1,1,3, + 0.8,0.762,0.762; 0.838,1,1,3,0.8,0.762,0.762; 0.84,1,1,3,0.8,0.762, + 0.762; 0.842,1,1,3,0.8,0.762,0.762; 0.844,1,1,3,0.8,0.762,0.762; 0.846, + 1,1,3,0.8,0.762,0.762; 0.848,1,1,3,0.8,0.762,0.762; 0.85,1,1,3,0.8, + 0.762,0.762; 0.85,1,2,3,0.5,0.762,0.762; 0.85,1,2,3,0.5,0.762,0.762; + 0.852,1,2,3,0.5,0.762,0.762; 0.854,1,2,3,0.5,0.762,0.762; 0.856,1,2,3, + 0.5,0.762,0.762; 0.858,1,2,3,0.5,0.762,0.762; 0.86,1,2,3,0.5,0.762, + 0.762; 0.862,1,2,3,0.5,0.762,0.762; 0.864,1,2,3,0.5,0.762,0.762; 0.866, + 1,2,3,0.5,0.762,0.762; 0.868,1,2,3,0.5,0.762,0.762; 0.87,1,2,3,0.5, + 0.762,0.762; 0.872,1,2,3,0.5,0.762,0.762; 0.874,1,2,3,0.5,0.762,0.762; + 0.876,1,2,3,0.5,0.762,0.762; 0.878,1,2,3,0.5,0.762,0.762; 0.88,1,2,3, + 0.5,0.762,0.762; 0.882,1,2,3,0.5,0.762,0.762; 0.884,1,2,3,0.5,0.762, + 0.762; 0.886,1,2,3,0.5,0.762,0.762; 0.888,1,2,3,0.5,0.762,0.762; 0.89,1, + 2,3,0.5,0.762,0.762; 0.892,1,2,3,0.5,0.762,0.762; 0.894,1,2,3,0.5,0.762, + 0.762; 0.896,1,2,3,0.5,0.762,0.762; 0.898,1,2,3,0.5,0.762,0.762; 0.9,1, + 2,3,0.5,0.762,0.762; 0.902,1,2,3,0.5,0.762,0.762; 0.904,1,2,3,0.5,0.762, + 0.762; 0.906,1,2,3,0.5,0.762,0.762; 0.908,1,2,3,0.5,0.762,0.762; 0.91,1, + 2,3,0.5,0.762,0.762; 0.912,1,2,3,0.5,0.762,0.762; 0.914,1,2,3,0.5,0.762, + 0.762; 0.916,1,2,3,0.5,0.762,0.762; 0.918,1,2,3,0.5,0.762,0.762; 0.92,1, + 2,3,0.5,0.762,0.762; 0.922,1,2,3,0.5,0.762,0.762; 0.924,1,2,3,0.5,0.762, + 0.762; 0.926,1,2,3,0.5,0.762,0.762; 0.928,1,2,3,0.5,0.762,0.762; 0.93,1, + 2,3,0.5,0.762,0.762; 0.932,1,2,3,0.5,0.762,0.762; 0.934,1,2,3,0.5,0.762, + 0.762; 0.936,1,2,3,0.5,0.762,0.762; 0.938,1,2,3,0.5,0.762,0.762; 0.94,1, + 2,3,0.5,0.762,0.762; 0.942,1,2,3,0.5,0.762,0.762; 0.944,1,2,3,0.5,0.762, + 0.762; 0.946,1,2,3,0.5,0.762,0.762; 0.948,1,2,3,0.5,0.762,0.762; 0.95,1, + 2,3,0.5,0.762,0.762; 0.952,1,2,3,0.5,0.762,0.762; 0.954,1,2,3,0.5,0.762, + 0.762; 0.956,1,2,3,0.5,0.762,0.762; 0.958,1,2,3,0.5,0.762,0.762; 0.96,1, + 2,3,0.5,0.762,0.762; 0.962,1,2,3,0.5,0.762,0.762; 0.964,1,2,3,0.5,0.762, + 0.762; 0.966,1,2,3,0.5,0.762,0.762; 0.968,1,2,3,0.5,0.762,0.762; 0.97,1, + 2,3,0.5,0.762,0.762; 0.972,1,2,3,0.5,0.762,0.762; 0.974,1,2,3,0.5,0.762, + 0.762; 0.976,1,2,3,0.5,0.762,0.762; 0.978,1,2,3,0.5,0.762,0.762; 0.98,1, + 2,3,0.5,0.762,0.762; 0.982,1,2,3,0.5,0.762,0.762; 0.984,1,2,3,0.5,0.762, + 0.762; 0.986,1,2,3,0.5,0.762,0.762; 0.988,1,2,3,0.5,0.762,0.762; 0.99,1, + 2,3,0.5,0.762,0.762; 0.992,1,2,3,0.5,0.762,0.762; 0.994,1,2,3,0.5,0.762, + 0.762; 0.996,1,2,3,0.5,0.762,0.762; 0.998,1,2,3,0.5,0.762,0.762; 1,1,2, + 3,0.5,0.762,0.762], extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) "Data for validating the controlProcessModel block" annotation (Placement(transformation(extent={{-80,-10},{-60,10}}))); - Buildings.Controls.OBC.CDL.Logical.Sources.TimeTable ReferenceBoolData(table=[0,0,0; 0.002,0,0; - 0.004,0,0; 0.006,0,0; 0.008,0,0; 0.01,0,0; 0.012,0,0; 0.014,0,0; 0.016, - 0,0; 0.018,0,0; 0.02,0,0; 0.022,0,0; 0.024,0,0; 0.026,0,0; 0.028,0,0; - 0.03,0,0; 0.032,0,0; 0.034,0,0; 0.036,0,0; 0.038,0,0; 0.04,0,0; 0.042,0, - 0; 0.044,0,0; 0.046,0,0; 0.048,0,0; 0.05,0,0; 0.052,0,0; 0.054,0,0; - 0.056,0,0; 0.058,0,0; 0.06,0,0; 0.062,0,0; 0.064,0,0; 0.066,0,0; 0.068, - 0,0; 0.07,0,0; 0.072,0,0; 0.074,0,0; 0.076,0,0; 0.078,0,0; 0.08,0,0; - 0.082,0,0; 0.084,0,0; 0.086,0,0; 0.088,0,0; 0.09,0,0; 0.092,0,0; 0.094, - 0,0; 0.096,0,0; 0.098,0,0; 0.1,0,0; 0.1,0,0; 0.1,0,0; 0.102,0,0; 0.104, - 0,0; 0.106,0,0; 0.108,0,0; 0.11,0,0; 0.112,0,0; 0.114,0,0; 0.116,0,0; - 0.118,0,0; 0.12,0,0; 0.122,0,0; 0.124,0,0; 0.126,0,0; 0.128,0,0; 0.13,0, - 0; 0.132,0,0; 0.134,0,0; 0.136,0,0; 0.138,0,0; 0.14,0,0; 0.142,0,0; - 0.144,0,0; 0.146,0,0; 0.148,0,0; 0.15,0,0; 0.152,0,0; 0.154,0,0; 0.156, - 0,0; 0.158,0,0; 0.16,0,0; 0.162,0,0; 0.164,0,0; 0.166,0,0; 0.168,0,0; - 0.17,0,0; 0.172,0,0; 0.174,0,0; 0.176,0,0; 0.178,0,0; 0.18,0,0; 0.182,0, - 0; 0.184,0,0; 0.186,0,0; 0.188,0,0; 0.19,0,0; 0.192,0,0; 0.194,0,0; - 0.196,0,0; 0.198,0,0; 0.2,0,0; 0.202,0,0; 0.204,0,0; 0.206,0,0; 0.208,0, - 0; 0.21,0,0; 0.212,0,0; 0.214,0,0; 0.216,0,0; 0.218,0,0; 0.22,0,0; - 0.222,0,0; 0.224,0,0; 0.226,0,0; 0.228,0,0; 0.23,0,0; 0.232,0,0; 0.234, - 0,0; 0.236,0,0; 0.238,0,0; 0.24,0,0; 0.242,0,0; 0.244,0,0; 0.246,0,0; - 0.248,0,0; 0.25,0,0; 0.252,0,0; 0.254,0,0; 0.256,0,0; 0.258,0,0; 0.26,0, - 0; 0.262,0,0; 0.264,0,0; 0.266,0,0; 0.268,0,0; 0.27,0,0; 0.272,0,0; - 0.274,0,0; 0.276,0,0; 0.278,0,0; 0.28,0,0; 0.282,0,0; 0.284,0,0; 0.286, - 0,0; 0.288,0,0; 0.29,0,0; 0.292,0,0; 0.294,0,0; 0.296,0,0; 0.298,0,0; - 0.3,0,0; 0.3,1,0; 0.3,1,0; 0.302,1,0; 0.304,1,0; 0.306,1,0; 0.308,1,0; - 0.31,1,0; 0.312,1,0; 0.314,1,0; 0.316,1,0; 0.318,1,0; 0.32,1,0; 0.322,1, - 0; 0.324,1,0; 0.326,1,0; 0.328,1,0; 0.33,1,0; 0.332,1,0; 0.334,1,0; - 0.336,1,0; 0.338,1,0; 0.34,1,0; 0.342,1,0; 0.344,1,0; 0.346,1,0; 0.348, - 1,0; 0.35,1,0; 0.352,1,0; 0.354,1,0; 0.356,1,0; 0.358,1,0; 0.36,1,0; - 0.362,1,0; 0.364,1,0; 0.366,1,0; 0.368,1,0; 0.37,1,0; 0.372,1,0; 0.374, - 1,0; 0.376,1,0; 0.378,1,0; 0.38,1,0; 0.382,1,0; 0.384,1,0; 0.386,1,0; - 0.388,1,0; 0.39,1,0; 0.392,1,0; 0.394,1,0; 0.396,1,0; 0.398,1,0; 0.4,1, - 0; 0.402,1,0; 0.404,1,0; 0.406,1,0; 0.408,1,0; 0.41,1,0; 0.412,1,0; - 0.414,1,0; 0.416,1,0; 0.418,1,0; 0.42,1,0; 0.422,1,0; 0.424,1,0; 0.426, - 1,0; 0.428,1,0; 0.43,1,0; 0.432,1,0; 0.434,1,0; 0.436,1,0; 0.438,1,0; - 0.44,1,0; 0.442,1,0; 0.444,1,0; 0.446,1,0; 0.448,1,0; 0.45,1,0; 0.452,1, - 0; 0.454,1,0; 0.456,1,0; 0.458,1,0; 0.46,1,0; 0.462,1,0; 0.464,1,0; - 0.466,1,0; 0.468,1,0; 0.47,1,0; 0.472,1,0; 0.474,1,0; 0.476,1,0; 0.478, - 1,0; 0.48,1,0; 0.482,1,0; 0.484,1,0; 0.486,1,0; 0.488,1,0; 0.49,1,0; - 0.492,1,0; 0.494,1,0; 0.496,1,0; 0.498,1,0; 0.5,1,0; 0.502,1,0; 0.504,1, - 0; 0.506,1,0; 0.508,1,0; 0.51,1,0; 0.512,1,0; 0.514,1,0; 0.516,1,0; - 0.518,1,0; 0.52,1,0; 0.522,1,0; 0.524,1,0; 0.526,1,0; 0.528,1,0; 0.53,1, - 0; 0.532,1,0; 0.534,1,0; 0.536,1,0; 0.538,1,0; 0.54,1,0; 0.542,1,0; - 0.544,1,0; 0.546,1,0; 0.548,1,0; 0.55,1,0; 0.552,1,0; 0.554,1,0; 0.556, - 1,0; 0.558,1,0; 0.56,1,0; 0.562,1,0; 0.564,1,0; 0.566,1,0; 0.568,1,0; - 0.57,1,0; 0.572,1,0; 0.574,1,0; 0.576,1,0; 0.578,1,0; 0.58,1,0; 0.582,1, - 0; 0.584,1,0; 0.586,1,0; 0.588,1,0; 0.59,1,0; 0.592,1,0; 0.594,1,0; - 0.596,1,0; 0.598,1,0; 0.6,1,0; 0.602,1,0; 0.604,1,0; 0.606,1,0; 0.608,1, - 0; 0.61,1,0; 0.612,1,0; 0.614,1,0; 0.616,1,0; 0.618,1,0; 0.62,1,0; - 0.622,1,0; 0.624,1,0; 0.626,1,0; 0.628,1,0; 0.63,1,0; 0.632,1,0; 0.634, - 1,0; 0.636,1,0; 0.638,1,0; 0.64,1,0; 0.642,1,0; 0.644,1,0; 0.646,1,0; - 0.648,1,0; 0.65,1,0; 0.652,1,0; 0.654,1,0; 0.656,1,0; 0.658,1,0; 0.66,1, - 0; 0.662,1,0; 0.664,1,0; 0.666,1,0; 0.668,1,0; 0.67,1,0; 0.672,1,0; - 0.674,1,0; 0.676,1,0; 0.678,1,0; 0.68,1,0; 0.682,1,0; 0.684,1,0; 0.686, - 1,0; 0.688,1,0; 0.69,1,0; 0.692,1,0; 0.694,1,0; 0.696,1,0; 0.698,1,0; - 0.7,1,0; 0.7,1,1; 0.7,1,1; 0.702,1,1; 0.704,1,1; 0.706,1,1; 0.708,1,1; - 0.71,1,1; 0.712,1,1; 0.714,1,1; 0.716,1,1; 0.718,1,1; 0.72,1,1; 0.722,1, - 1; 0.724,1,1; 0.726,1,1; 0.728,1,1; 0.73,1,1; 0.732,1,1; 0.734,1,1; - 0.736,1,1; 0.738,1,1; 0.74,1,1; 0.742,1,1; 0.744,1,1; 0.746,1,1; 0.748, - 1,1; 0.75,1,1; 0.752,1,1; 0.754,1,1; 0.756,1,1; 0.758,1,1; 0.76,1,1; - 0.762,1,1; 0.764,1,1; 0.766,1,1; 0.768,1,1; 0.77,1,1; 0.772,1,1; 0.774, - 1,1; 0.776,1,1; 0.778,1,1; 0.78,1,1; 0.782,1,1; 0.784,1,1; 0.786,1,1; - 0.788,1,1; 0.79,1,1; 0.792,1,1; 0.794,1,1; 0.796,1,1; 0.798,1,1; 0.8,1, - 1; 0.802,1,1; 0.804,1,1; 0.806,1,1; 0.808,1,1; 0.81,1,1; 0.812,1,1; - 0.814,1,1; 0.816,1,1; 0.818,1,1; 0.82,1,1; 0.822,1,1; 0.824,1,1; 0.826, - 1,1; 0.828,1,1; 0.83,1,1; 0.83,1,1; 0.83,1,1; 0.832,1,1; 0.834,1,1; - 0.836,1,1; 0.838,1,1; 0.84,1,1; 0.842,1,1; 0.844,1,1; 0.846,1,1; 0.848, - 1,1; 0.85,1,1; 0.85,1,1; 0.85,1,1; 0.852,1,1; 0.854,1,1; 0.856,1,1; - 0.858,1,1; 0.86,1,1; 0.862,1,1; 0.864,1,1; 0.866,1,1; 0.868,1,1; 0.87,1, - 1; 0.872,1,1; 0.874,1,1; 0.876,1,1; 0.878,1,1; 0.88,1,1; 0.882,1,1; - 0.884,1,1; 0.886,1,1; 0.888,1,1; 0.89,1,1; 0.892,1,1; 0.894,1,1; 0.896, - 1,1; 0.898,1,1; 0.9,1,1; 0.902,1,1; 0.904,1,1; 0.906,1,1; 0.908,1,1; - 0.91,1,1; 0.912,1,1; 0.914,1,1; 0.916,1,1; 0.918,1,1; 0.92,1,1; 0.922,1, - 1; 0.924,1,1; 0.926,1,1; 0.928,1,1; 0.93,1,1; 0.932,1,1; 0.934,1,1; - 0.936,1,1; 0.938,1,1; 0.94,1,1; 0.942,1,1; 0.944,1,1; 0.946,1,1; 0.948, - 1,1; 0.95,1,1; 0.952,1,1; 0.954,1,1; 0.956,1,1; 0.958,1,1; 0.96,1,1; - 0.962,1,1; 0.964,1,1; 0.966,1,1; 0.968,1,1; 0.97,1,1; 0.972,1,1; 0.974, - 1,1; 0.976,1,1; 0.978,1,1; 0.98,1,1; 0.982,1,1; 0.984,1,1; 0.986,1,1; - 0.988,1,1; 0.99,1,1; 0.992,1,1; 0.994,1,1; 0.996,1,1; 0.998,1,1; 1,1,1], - period=1) "Boolean Data for validating the controlProcessModel block" + Buildings.Controls.OBC.CDL.Logical.Sources.TimeTable RefBooDat(table=[0,0,0; + 0.002,0,0; 0.004,0,0; 0.006,0,0; 0.008,0,0; 0.01,0,0; 0.012,0,0; 0.014, + 0,0; 0.016,0,0; 0.018,0,0; 0.02,0,0; 0.022,0,0; 0.024,0,0; 0.026,0,0; + 0.028,0,0; 0.03,0,0; 0.032,0,0; 0.034,0,0; 0.036,0,0; 0.038,0,0; 0.04,0, + 0; 0.042,0,0; 0.044,0,0; 0.046,0,0; 0.048,0,0; 0.05,0,0; 0.052,0,0; + 0.054,0,0; 0.056,0,0; 0.058,0,0; 0.06,0,0; 0.062,0,0; 0.064,0,0; 0.066, + 0,0; 0.068,0,0; 0.07,0,0; 0.072,0,0; 0.074,0,0; 0.076,0,0; 0.078,0,0; + 0.08,0,0; 0.082,0,0; 0.084,0,0; 0.086,0,0; 0.088,0,0; 0.09,0,0; 0.092,0, + 0; 0.094,0,0; 0.096,0,0; 0.098,0,0; 0.1,0,0; 0.1,0,0; 0.1,0,0; 0.102,0, + 0; 0.104,0,0; 0.106,0,0; 0.108,0,0; 0.11,0,0; 0.112,0,0; 0.114,0,0; + 0.116,0,0; 0.118,0,0; 0.12,0,0; 0.122,0,0; 0.124,0,0; 0.126,0,0; 0.128, + 0,0; 0.13,0,0; 0.132,0,0; 0.134,0,0; 0.136,0,0; 0.138,0,0; 0.14,0,0; + 0.142,0,0; 0.144,0,0; 0.146,0,0; 0.148,0,0; 0.15,0,0; 0.152,0,0; 0.154, + 0,0; 0.156,0,0; 0.158,0,0; 0.16,0,0; 0.162,0,0; 0.164,0,0; 0.166,0,0; + 0.168,0,0; 0.17,0,0; 0.172,0,0; 0.174,0,0; 0.176,0,0; 0.178,0,0; 0.18,0, + 0; 0.182,0,0; 0.184,0,0; 0.186,0,0; 0.188,0,0; 0.19,0,0; 0.192,0,0; + 0.194,0,0; 0.196,0,0; 0.198,0,0; 0.2,0,0; 0.202,0,0; 0.204,0,0; 0.206,0, + 0; 0.208,0,0; 0.21,0,0; 0.212,0,0; 0.214,0,0; 0.216,0,0; 0.218,0,0; + 0.22,0,0; 0.222,0,0; 0.224,0,0; 0.226,0,0; 0.228,0,0; 0.23,0,0; 0.232,0, + 0; 0.234,0,0; 0.236,0,0; 0.238,0,0; 0.24,0,0; 0.242,0,0; 0.244,0,0; + 0.246,0,0; 0.248,0,0; 0.25,0,0; 0.252,0,0; 0.254,0,0; 0.256,0,0; 0.258, + 0,0; 0.26,0,0; 0.262,0,0; 0.264,0,0; 0.266,0,0; 0.268,0,0; 0.27,0,0; + 0.272,0,0; 0.274,0,0; 0.276,0,0; 0.278,0,0; 0.28,0,0; 0.282,0,0; 0.284, + 0,0; 0.286,0,0; 0.288,0,0; 0.29,0,0; 0.292,0,0; 0.294,0,0; 0.296,0,0; + 0.298,0,0; 0.3,0,0; 0.3,1,0; 0.3,1,0; 0.302,1,0; 0.304,1,0; 0.306,1,0; + 0.308,1,0; 0.31,1,0; 0.312,1,0; 0.314,1,0; 0.316,1,0; 0.318,1,0; 0.32,1, + 0; 0.322,1,0; 0.324,1,0; 0.326,1,0; 0.328,1,0; 0.33,1,0; 0.332,1,0; + 0.334,1,0; 0.336,1,0; 0.338,1,0; 0.34,1,0; 0.342,1,0; 0.344,1,0; 0.346, + 1,0; 0.348,1,0; 0.35,1,0; 0.352,1,0; 0.354,1,0; 0.356,1,0; 0.358,1,0; + 0.36,1,0; 0.362,1,0; 0.364,1,0; 0.366,1,0; 0.368,1,0; 0.37,1,0; 0.372,1, + 0; 0.374,1,0; 0.376,1,0; 0.378,1,0; 0.38,1,0; 0.382,1,0; 0.384,1,0; + 0.386,1,0; 0.388,1,0; 0.39,1,0; 0.392,1,0; 0.394,1,0; 0.396,1,0; 0.398, + 1,0; 0.4,1,0; 0.402,1,0; 0.404,1,0; 0.406,1,0; 0.408,1,0; 0.41,1,0; + 0.412,1,0; 0.414,1,0; 0.416,1,0; 0.418,1,0; 0.42,1,0; 0.422,1,0; 0.424, + 1,0; 0.426,1,0; 0.428,1,0; 0.43,1,0; 0.432,1,0; 0.434,1,0; 0.436,1,0; + 0.438,1,0; 0.44,1,0; 0.442,1,0; 0.444,1,0; 0.446,1,0; 0.448,1,0; 0.45,1, + 0; 0.452,1,0; 0.454,1,0; 0.456,1,0; 0.458,1,0; 0.46,1,0; 0.462,1,0; + 0.464,1,0; 0.466,1,0; 0.468,1,0; 0.47,1,0; 0.472,1,0; 0.474,1,0; 0.476, + 1,0; 0.478,1,0; 0.48,1,0; 0.482,1,0; 0.484,1,0; 0.486,1,0; 0.488,1,0; + 0.49,1,0; 0.492,1,0; 0.494,1,0; 0.496,1,0; 0.498,1,0; 0.5,1,0; 0.502,1, + 0; 0.504,1,0; 0.506,1,0; 0.508,1,0; 0.51,1,0; 0.512,1,0; 0.514,1,0; + 0.516,1,0; 0.518,1,0; 0.52,1,0; 0.522,1,0; 0.524,1,0; 0.526,1,0; 0.528, + 1,0; 0.53,1,0; 0.532,1,0; 0.534,1,0; 0.536,1,0; 0.538,1,0; 0.54,1,0; + 0.542,1,0; 0.544,1,0; 0.546,1,0; 0.548,1,0; 0.55,1,0; 0.552,1,0; 0.554, + 1,0; 0.556,1,0; 0.558,1,0; 0.56,1,0; 0.562,1,0; 0.564,1,0; 0.566,1,0; + 0.568,1,0; 0.57,1,0; 0.572,1,0; 0.574,1,0; 0.576,1,0; 0.578,1,0; 0.58,1, + 0; 0.582,1,0; 0.584,1,0; 0.586,1,0; 0.588,1,0; 0.59,1,0; 0.592,1,0; + 0.594,1,0; 0.596,1,0; 0.598,1,0; 0.6,1,0; 0.602,1,0; 0.604,1,0; 0.606,1, + 0; 0.608,1,0; 0.61,1,0; 0.612,1,0; 0.614,1,0; 0.616,1,0; 0.618,1,0; + 0.62,1,0; 0.622,1,0; 0.624,1,0; 0.626,1,0; 0.628,1,0; 0.63,1,0; 0.632,1, + 0; 0.634,1,0; 0.636,1,0; 0.638,1,0; 0.64,1,0; 0.642,1,0; 0.644,1,0; + 0.646,1,0; 0.648,1,0; 0.65,1,0; 0.652,1,0; 0.654,1,0; 0.656,1,0; 0.658, + 1,0; 0.66,1,0; 0.662,1,0; 0.664,1,0; 0.666,1,0; 0.668,1,0; 0.67,1,0; + 0.672,1,0; 0.674,1,0; 0.676,1,0; 0.678,1,0; 0.68,1,0; 0.682,1,0; 0.684, + 1,0; 0.686,1,0; 0.688,1,0; 0.69,1,0; 0.692,1,0; 0.694,1,0; 0.696,1,0; + 0.698,1,0; 0.7,1,0; 0.7,1,1; 0.7,1,1; 0.702,1,1; 0.704,1,1; 0.706,1,1; + 0.708,1,1; 0.71,1,1; 0.712,1,1; 0.714,1,1; 0.716,1,1; 0.718,1,1; 0.72,1, + 1; 0.722,1,1; 0.724,1,1; 0.726,1,1; 0.728,1,1; 0.73,1,1; 0.732,1,1; + 0.734,1,1; 0.736,1,1; 0.738,1,1; 0.74,1,1; 0.742,1,1; 0.744,1,1; 0.746, + 1,1; 0.748,1,1; 0.75,1,1; 0.752,1,1; 0.754,1,1; 0.756,1,1; 0.758,1,1; + 0.76,1,1; 0.762,1,1; 0.764,1,1; 0.766,1,1; 0.768,1,1; 0.77,1,1; 0.772,1, + 1; 0.774,1,1; 0.776,1,1; 0.778,1,1; 0.78,1,1; 0.782,1,1; 0.784,1,1; + 0.786,1,1; 0.788,1,1; 0.79,1,1; 0.792,1,1; 0.794,1,1; 0.796,1,1; 0.798, + 1,1; 0.8,1,1; 0.802,1,1; 0.804,1,1; 0.806,1,1; 0.808,1,1; 0.81,1,1; + 0.812,1,1; 0.814,1,1; 0.816,1,1; 0.818,1,1; 0.82,1,1; 0.822,1,1; 0.824, + 1,1; 0.826,1,1; 0.828,1,1; 0.83,1,1; 0.83,1,1; 0.83,1,1; 0.832,1,1; + 0.834,1,1; 0.836,1,1; 0.838,1,1; 0.84,1,1; 0.842,1,1; 0.844,1,1; 0.846, + 1,1; 0.848,1,1; 0.85,1,1; 0.85,1,1; 0.85,1,1; 0.852,1,1; 0.854,1,1; + 0.856,1,1; 0.858,1,1; 0.86,1,1; 0.862,1,1; 0.864,1,1; 0.866,1,1; 0.868, + 1,1; 0.87,1,1; 0.872,1,1; 0.874,1,1; 0.876,1,1; 0.878,1,1; 0.88,1,1; + 0.882,1,1; 0.884,1,1; 0.886,1,1; 0.888,1,1; 0.89,1,1; 0.892,1,1; 0.894, + 1,1; 0.896,1,1; 0.898,1,1; 0.9,1,1; 0.902,1,1; 0.904,1,1; 0.906,1,1; + 0.908,1,1; 0.91,1,1; 0.912,1,1; 0.914,1,1; 0.916,1,1; 0.918,1,1; 0.92,1, + 1; 0.922,1,1; 0.924,1,1; 0.926,1,1; 0.928,1,1; 0.93,1,1; 0.932,1,1; + 0.934,1,1; 0.936,1,1; 0.938,1,1; 0.94,1,1; 0.942,1,1; 0.944,1,1; 0.946, + 1,1; 0.948,1,1; 0.95,1,1; 0.952,1,1; 0.954,1,1; 0.956,1,1; 0.958,1,1; + 0.96,1,1; 0.962,1,1; 0.964,1,1; 0.966,1,1; 0.968,1,1; 0.97,1,1; 0.972,1, + 1; 0.974,1,1; 0.976,1,1; 0.978,1,1; 0.98,1,1; 0.982,1,1; 0.984,1,1; + 0.986,1,1; 0.988,1,1; 0.99,1,1; 0.992,1,1; 0.994,1,1; 0.996,1,1; 0.998, + 1,1; 1,1,1], period=1) + "Boolean Data for validating the controlProcessModel block" annotation (Placement(transformation(extent={{-80,-60},{-60,-40}}))); equation - connect(ReferenceData.y[1], controlProcessModel.u) annotation (Line(points={{ - -58,0},{-20,0},{-20,8},{-12,8}}, color={0,0,127})); - connect(controlProcessModel.tOn, ReferenceData.y[2]) annotation (Line(points= - {{-12,4},{-18,4},{-18,0},{-58,0}}, color={0,0,127})); - connect(controlProcessModel.tOff, ReferenceData.y[3]) annotation (Line(points= - {{-12,-4},{-16,-4},{-16,0},{-58,0}}, color={0,0,127})); - connect(controlProcessModel.tau, ReferenceData.y[4]) annotation (Line(points= - {{-12,-8},{-18,-8},{-18,0},{-58,0}}, color={0,0,127})); - connect(ReferenceBoolData.y[1], controlProcessModel.triggerStart) + connect(RefDat.y[1], conProMod.u) annotation (Line(points={{-58,0},{-20,0},{-20, + 8},{-12,8}}, color={0,0,127})); + connect(conProMod.tOn, RefDat.y[2]) annotation (Line(points={{-12,4},{-18,4}, + {-18,0},{-58,0}}, color={0,0,127})); + connect(conProMod.tOff, RefDat.y[3]) annotation (Line(points={{-12,-4},{-16,-4}, + {-16,0},{-58,0}}, color={0,0,127})); + connect(conProMod.tau, RefDat.y[4]) annotation (Line(points={{-12,-8},{-18,-8}, + {-18,0},{-58,0}}, color={0,0,127})); + connect(RefBooDat.y[1], conProMod.triSta) annotation (Line(points={{-58,-50},{-6,-50},{-6,-12}}, color={255,0,255})); - connect(controlProcessModel.triggerEnd, ReferenceBoolData.y[2]) + connect(conProMod.triEnd, RefBooDat.y[2]) annotation (Line(points={{6,-12},{6,-50},{-58,-50}}, color={255,0,255})); annotation ( experiment( diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mo index 6983910753f..ea13ef5a4a4 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mo @@ -1,7 +1,7 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation; model Gain "Test model for Gain" Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Gain - gain "Calculate the gain of a first-order model" + gai "Calculate the gain of a first-order model" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable tOn( table=[0,0; 0.1,0.1; 0.3,0.1; 0.7,0.1; 0.83,0.1; 0.9,0.07], @@ -21,18 +21,18 @@ model Gain "Test model for Gain" extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) "The response of a relay controller" annotation (Placement(transformation(extent={{-60,30},{-40,50}}))); - Buildings.Controls.OBC.CDL.Logical.Sources.TimeTable tuningStart(table=[0,0; 0.1,1; 0.3,1; 0.7,1; - 0.83,1; 0.85,1], period=2) + Buildings.Controls.OBC.CDL.Logical.Sources.TimeTable tunSta(table=[0,0; 0.1,1; + 0.3,1; 0.7,1; 0.83,1; 0.85,1], period=2) "Mimicking the signal for the tuning period start" annotation (Placement(transformation(extent={{-60,-80},{-40,-60}}))); equation - connect(tOn.y[1], gain.tOn) + connect(tOn.y[1], gai.tOn) annotation (Line(points={{-38,0},{-12,0}}, color={0,0,127})); - connect(gain.tOff, tOff.y[1]) annotation (Line(points={{-12,-8},{-20,-8},{-20, + connect(gai.tOff, tOff.y[1]) annotation (Line(points={{-12,-8},{-20,-8},{-20, -40},{-38,-40}}, color={0,0,127})); - connect(u.y[1], gain.u) annotation (Line(points={{-38,40},{-20,40},{-20,8},{-12, + connect(u.y[1], gai.u) annotation (Line(points={{-38,40},{-20,40},{-20,8},{-12, 8}}, color={0,0,127})); - connect(tuningStart.y[1], gain.triggerStart) + connect(tunSta.y[1], gai.triSta) annotation (Line(points={{-38,-70},{0,-70},{0,-12}}, color={255,0,255})); annotation ( experiment( diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mo index 0dc31330e8c..9554aa8b4f7 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mo @@ -1,219 +1,220 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation; model TimeConstantDelay "Test model for TimeConstantDelay" Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.TimeConstantDelay - timeConstantDelay(yLow=0.1) + timConDel(yLow=0.1) "Calculate the time constant and the time delay of a first-order model" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable ReferenceData(table=[0,1,1,0.3,0.754,0.226; - 0.002,1,1,0.3,0.754,0.226; 0.004,1,1,0.3,0.754,0.226; 0.006,1,1,0.3, - 0.754,0.226; 0.008,1,1,0.3,0.754,0.226; 0.01,1,1,0.3,0.754,0.226; 0.012, - 1,1,0.3,0.754,0.226; 0.014,1,1,0.3,0.754,0.226; 0.016,1,1,0.3,0.754, - 0.226; 0.018,1,1,0.3,0.754,0.226; 0.02,1,1,0.3,0.754,0.226; 0.022,1,1, - 0.3,0.754,0.226; 0.024,1,1,0.3,0.754,0.226; 0.026,1,1,0.3,0.754,0.226; - 0.028,1,1,0.3,0.754,0.226; 0.03,1,1,0.3,0.754,0.226; 0.032,1,1,0.3, - 0.754,0.226; 0.034,1,1,0.3,0.754,0.226; 0.036,1,1,0.3,0.754,0.226; - 0.038,1,1,0.3,0.754,0.226; 0.04,1,1,0.3,0.754,0.226; 0.042,1,1,0.3, - 0.754,0.226; 0.044,1,1,0.3,0.754,0.226; 0.046,1,1,0.3,0.754,0.226; - 0.048,1,1,0.3,0.754,0.226; 0.05,1,1,0.3,0.754,0.226; 0.052,1,1,0.3, - 0.754,0.226; 0.054,1,1,0.3,0.754,0.226; 0.056,1,1,0.3,0.754,0.226; - 0.058,1,1,0.3,0.754,0.226; 0.06,1,1,0.3,0.754,0.226; 0.062,1,1,0.3, - 0.754,0.226; 0.064,1,1,0.3,0.754,0.226; 0.066,1,1,0.3,0.754,0.226; - 0.068,1,1,0.3,0.754,0.226; 0.07,1,1,0.3,0.754,0.226; 0.072,1,1,0.3, - 0.754,0.226; 0.074,1,1,0.3,0.754,0.226; 0.076,1,1,0.3,0.754,0.226; - 0.078,1,1,0.3,0.754,0.226; 0.08,1,1,0.3,0.754,0.226; 0.082,1,1,0.3, - 0.754,0.226; 0.084,1,1,0.3,0.754,0.226; 0.086,1,1,0.3,0.754,0.226; - 0.088,1,1,0.3,0.754,0.226; 0.09,1,1,0.3,0.754,0.226; 0.092,1,1,0.3, - 0.754,0.226; 0.094,1,1,0.3,0.754,0.226; 0.096,1,1,0.3,0.754,0.226; - 0.098,1,1,0.3,0.754,0.226; 0.1,1,1,0.3,0.754,0.226; 0.1,1,1,0.5,0.672, - 0.336; 0.1,1,1,0.5,0.672,0.336; 0.102,1,1,0.5,0.672,0.336; 0.104,1,1, - 0.5,0.672,0.336; 0.106,1,1,0.5,0.672,0.336; 0.108,1,1,0.5,0.672,0.336; - 0.11,1,1,0.5,0.672,0.336; 0.112,1,1,0.5,0.672,0.336; 0.114,1,1,0.5, - 0.672,0.336; 0.116,1,1,0.5,0.672,0.336; 0.118,1,1,0.5,0.672,0.336; 0.12, - 1,1,0.5,0.672,0.336; 0.122,1,1,0.5,0.672,0.336; 0.124,1,1,0.5,0.672, - 0.336; 0.126,1,1,0.5,0.672,0.336; 0.128,1,1,0.5,0.672,0.336; 0.13,1,1, - 0.5,0.672,0.336; 0.132,1,1,0.5,0.672,0.336; 0.134,1,1,0.5,0.672,0.336; - 0.136,1,1,0.5,0.672,0.336; 0.138,1,1,0.5,0.672,0.336; 0.14,1,1,0.5, - 0.672,0.336; 0.142,1,1,0.5,0.672,0.336; 0.144,1,1,0.5,0.672,0.336; - 0.146,1,1,0.5,0.672,0.336; 0.148,1,1,0.5,0.672,0.336; 0.15,1,1,0.5, - 0.672,0.336; 0.152,1,1,0.5,0.672,0.336; 0.154,1,1,0.5,0.672,0.336; - 0.156,1,1,0.5,0.672,0.336; 0.158,1,1,0.5,0.672,0.336; 0.16,1,1,0.5, - 0.672,0.336; 0.162,1,1,0.5,0.672,0.336; 0.164,1,1,0.5,0.672,0.336; - 0.166,1,1,0.5,0.672,0.336; 0.168,1,1,0.5,0.672,0.336; 0.17,1,1,0.5, - 0.672,0.336; 0.172,1,1,0.5,0.672,0.336; 0.174,1,1,0.5,0.672,0.336; - 0.176,1,1,0.5,0.672,0.336; 0.178,1,1,0.5,0.672,0.336; 0.18,1,1,0.5, - 0.672,0.336; 0.182,1,1,0.5,0.672,0.336; 0.184,1,1,0.5,0.672,0.336; - 0.186,1,1,0.5,0.672,0.336; 0.188,1,1,0.5,0.672,0.336; 0.19,1,1,0.5, - 0.672,0.336; 0.192,1,1,0.5,0.672,0.336; 0.194,1,1,0.5,0.672,0.336; - 0.196,1,1,0.5,0.672,0.336; 0.198,1,1,0.5,0.672,0.336; 0.2,1,1,0.5,0.672, - 0.336; 0.202,1,1,0.5,0.672,0.336; 0.204,1,1,0.5,0.672,0.336; 0.206,1,1, - 0.5,0.672,0.336; 0.208,1,1,0.5,0.672,0.336; 0.21,1,1,0.5,0.672,0.336; - 0.212,1,1,0.5,0.672,0.336; 0.214,1,1,0.5,0.672,0.336; 0.216,1,1,0.5, - 0.672,0.336; 0.218,1,1,0.5,0.672,0.336; 0.22,1,1,0.5,0.672,0.336; 0.222, - 1,1,0.5,0.672,0.336; 0.224,1,1,0.5,0.672,0.336; 0.226,1,1,0.5,0.672, - 0.336; 0.228,1,1,0.5,0.672,0.336; 0.23,1,1,0.5,0.672,0.336; 0.232,1,1, - 0.5,0.672,0.336; 0.234,1,1,0.5,0.672,0.336; 0.236,1,1,0.5,0.672,0.336; - 0.238,1,1,0.5,0.672,0.336; 0.24,1,1,0.5,0.672,0.336; 0.242,1,1,0.5, - 0.672,0.336; 0.244,1,1,0.5,0.672,0.336; 0.246,1,1,0.5,0.672,0.336; - 0.248,1,1,0.5,0.672,0.336; 0.25,1,1,0.5,0.672,0.336; 0.252,1,1,0.5, - 0.672,0.336; 0.254,1,1,0.5,0.672,0.336; 0.256,1,1,0.5,0.672,0.336; - 0.258,1,1,0.5,0.672,0.336; 0.26,1,1,0.5,0.672,0.336; 0.262,1,1,0.5, - 0.672,0.336; 0.264,1,1,0.5,0.672,0.336; 0.266,1,1,0.5,0.672,0.336; - 0.268,1,1,0.5,0.672,0.336; 0.27,1,1,0.5,0.672,0.336; 0.272,1,1,0.5, - 0.672,0.336; 0.274,1,1,0.5,0.672,0.336; 0.276,1,1,0.5,0.672,0.336; - 0.278,1,1,0.5,0.672,0.336; 0.28,1,1,0.5,0.672,0.336; 0.282,1,1,0.5, - 0.672,0.336; 0.284,1,1,0.5,0.672,0.336; 0.286,1,1,0.5,0.672,0.336; - 0.288,1,1,0.5,0.672,0.336; 0.29,1,1,0.5,0.672,0.336; 0.292,1,1,0.5, - 0.672,0.336; 0.294,1,1,0.5,0.672,0.336; 0.296,1,1,0.5,0.672,0.336; - 0.298,1,1,0.5,0.672,0.336; 0.3,1,1,0.5,0.672,0.336; 0.3,1,1,0.1,0.853, - 0.085; 0.3,1,1,0.1,0.853,0.085; 0.302,1,1,0.1,0.853,0.085; 0.304,1,1, - 0.1,0.853,0.085; 0.306,1,1,0.1,0.853,0.085; 0.308,1,1,0.1,0.853,0.085; - 0.31,1,1,0.1,0.853,0.085; 0.312,1,1,0.1,0.853,0.085; 0.314,1,1,0.1, - 0.853,0.085; 0.316,1,1,0.1,0.853,0.085; 0.318,1,1,0.1,0.853,0.085; 0.32, - 1,1,0.1,0.853,0.085; 0.322,1,1,0.1,0.853,0.085; 0.324,1,1,0.1,0.853, - 0.085; 0.326,1,1,0.1,0.853,0.085; 0.328,1,1,0.1,0.853,0.085; 0.33,1,1, - 0.1,0.853,0.085; 0.332,1,1,0.1,0.853,0.085; 0.334,1,1,0.1,0.853,0.085; - 0.336,1,1,0.1,0.853,0.085; 0.338,1,1,0.1,0.853,0.085; 0.34,1,1,0.1, - 0.853,0.085; 0.342,1,1,0.1,0.853,0.085; 0.344,1,1,0.1,0.853,0.085; - 0.346,1,1,0.1,0.853,0.085; 0.348,1,1,0.1,0.853,0.085; 0.35,1,1,0.1, - 0.853,0.085; 0.352,1,1,0.1,0.853,0.085; 0.354,1,1,0.1,0.853,0.085; - 0.356,1,1,0.1,0.853,0.085; 0.358,1,1,0.1,0.853,0.085; 0.36,1,1,0.1, - 0.853,0.085; 0.362,1,1,0.1,0.853,0.085; 0.364,1,1,0.1,0.853,0.085; - 0.366,1,1,0.1,0.853,0.085; 0.368,1,1,0.1,0.853,0.085; 0.37,1,1,0.1, - 0.853,0.085; 0.372,1,1,0.1,0.853,0.085; 0.374,1,1,0.1,0.853,0.085; - 0.376,1,1,0.1,0.853,0.085; 0.378,1,1,0.1,0.853,0.085; 0.38,1,1,0.1, - 0.853,0.085; 0.382,1,1,0.1,0.853,0.085; 0.384,1,1,0.1,0.853,0.085; - 0.386,1,1,0.1,0.853,0.085; 0.388,1,1,0.1,0.853,0.085; 0.39,1,1,0.1, - 0.853,0.085; 0.392,1,1,0.1,0.853,0.085; 0.394,1,1,0.1,0.853,0.085; - 0.396,1,1,0.1,0.853,0.085; 0.398,1,1,0.1,0.853,0.085; 0.4,1,1,0.1,0.853, - 0.085; 0.402,1,1,0.1,0.853,0.085; 0.404,1,1,0.1,0.853,0.085; 0.406,1,1, - 0.1,0.853,0.085; 0.408,1,1,0.1,0.853,0.085; 0.41,1,1,0.1,0.853,0.085; - 0.412,1,1,0.1,0.853,0.085; 0.414,1,1,0.1,0.853,0.085; 0.416,1,1,0.1, - 0.853,0.085; 0.418,1,1,0.1,0.853,0.085; 0.42,1,1,0.1,0.853,0.085; 0.422, - 1,1,0.1,0.853,0.085; 0.424,1,1,0.1,0.853,0.085; 0.426,1,1,0.1,0.853, - 0.085; 0.428,1,1,0.1,0.853,0.085; 0.43,1,1,0.1,0.853,0.085; 0.432,1,1, - 0.1,0.853,0.085; 0.434,1,1,0.1,0.853,0.085; 0.436,1,1,0.1,0.853,0.085; - 0.438,1,1,0.1,0.853,0.085; 0.44,1,1,0.1,0.853,0.085; 0.442,1,1,0.1, - 0.853,0.085; 0.444,1,1,0.1,0.853,0.085; 0.446,1,1,0.1,0.853,0.085; - 0.448,1,1,0.1,0.853,0.085; 0.45,1,1,0.1,0.853,0.085; 0.452,1,1,0.1, - 0.853,0.085; 0.454,1,1,0.1,0.853,0.085; 0.456,1,1,0.1,0.853,0.085; - 0.458,1,1,0.1,0.853,0.085; 0.46,1,1,0.1,0.853,0.085; 0.462,1,1,0.1, - 0.853,0.085; 0.464,1,1,0.1,0.853,0.085; 0.466,1,1,0.1,0.853,0.085; - 0.468,1,1,0.1,0.853,0.085; 0.47,1,1,0.1,0.853,0.085; 0.472,1,1,0.1, - 0.853,0.085; 0.474,1,1,0.1,0.853,0.085; 0.476,1,1,0.1,0.853,0.085; - 0.478,1,1,0.1,0.853,0.085; 0.48,1,1,0.1,0.853,0.085; 0.482,1,1,0.1, - 0.853,0.085; 0.484,1,1,0.1,0.853,0.085; 0.486,1,1,0.1,0.853,0.085; - 0.488,1,1,0.1,0.853,0.085; 0.49,1,1,0.1,0.853,0.085; 0.492,1,1,0.1, - 0.853,0.085; 0.494,1,1,0.1,0.853,0.085; 0.496,1,1,0.1,0.853,0.085; - 0.498,1,1,0.1,0.853,0.085; 0.5,1,1,0.1,0.853,0.085; 0.502,1,1,0.1,0.853, - 0.085; 0.504,1,1,0.1,0.853,0.085; 0.506,1,1,0.1,0.853,0.085; 0.508,1,1, - 0.1,0.853,0.085; 0.51,1,1,0.1,0.853,0.085; 0.512,1,1,0.1,0.853,0.085; - 0.514,1,1,0.1,0.853,0.085; 0.516,1,1,0.1,0.853,0.085; 0.518,1,1,0.1, - 0.853,0.085; 0.52,1,1,0.1,0.853,0.085; 0.522,1,1,0.1,0.853,0.085; 0.524, - 1,1,0.1,0.853,0.085; 0.526,1,1,0.1,0.853,0.085; 0.528,1,1,0.1,0.853, - 0.085; 0.53,1,1,0.1,0.853,0.085; 0.532,1,1,0.1,0.853,0.085; 0.534,1,1, - 0.1,0.853,0.085; 0.536,1,1,0.1,0.853,0.085; 0.538,1,1,0.1,0.853,0.085; - 0.54,1,1,0.1,0.853,0.085; 0.542,1,1,0.1,0.853,0.085; 0.544,1,1,0.1, - 0.853,0.085; 0.546,1,1,0.1,0.853,0.085; 0.548,1,1,0.1,0.853,0.085; 0.55, - 1,1,0.1,0.853,0.085; 0.552,1,1,0.1,0.853,0.085; 0.554,1,1,0.1,0.853, - 0.085; 0.556,1,1,0.1,0.853,0.085; 0.558,1,1,0.1,0.853,0.085; 0.56,1,1, - 0.1,0.853,0.085; 0.562,1,1,0.1,0.853,0.085; 0.564,1,1,0.1,0.853,0.085; - 0.566,1,1,0.1,0.853,0.085; 0.568,1,1,0.1,0.853,0.085; 0.57,1,1,0.1, - 0.853,0.085; 0.572,1,1,0.1,0.853,0.085; 0.574,1,1,0.1,0.853,0.085; - 0.576,1,1,0.1,0.853,0.085; 0.578,1,1,0.1,0.853,0.085; 0.58,1,1,0.1, - 0.853,0.085; 0.582,1,1,0.1,0.853,0.085; 0.584,1,1,0.1,0.853,0.085; - 0.586,1,1,0.1,0.853,0.085; 0.588,1,1,0.1,0.853,0.085; 0.59,1,1,0.1, - 0.853,0.085; 0.592,1,1,0.1,0.853,0.085; 0.594,1,1,0.1,0.853,0.085; - 0.596,1,1,0.1,0.853,0.085; 0.598,1,1,0.1,0.853,0.085; 0.6,1,1,0.1,0.853, - 0.085; 0.602,1,1,0.1,0.853,0.085; 0.604,1,1,0.1,0.853,0.085; 0.606,1,1, - 0.1,0.853,0.085; 0.608,1,1,0.1,0.853,0.085; 0.61,1,1,0.1,0.853,0.085; - 0.612,1,1,0.1,0.853,0.085; 0.614,1,1,0.1,0.853,0.085; 0.616,1,1,0.1, - 0.853,0.085; 0.618,1,1,0.1,0.853,0.085; 0.62,1,1,0.1,0.853,0.085; 0.622, - 1,1,0.1,0.853,0.085; 0.624,1,1,0.1,0.853,0.085; 0.626,1,1,0.1,0.853, - 0.085; 0.628,1,1,0.1,0.853,0.085; 0.63,1,1,0.1,0.853,0.085; 0.632,1,1, - 0.1,0.853,0.085; 0.634,1,1,0.1,0.853,0.085; 0.636,1,1,0.1,0.853,0.085; - 0.638,1,1,0.1,0.853,0.085; 0.64,1,1,0.1,0.853,0.085; 0.642,1,1,0.1, - 0.853,0.085; 0.644,1,1,0.1,0.853,0.085; 0.646,1,1,0.1,0.853,0.085; - 0.648,1,1,0.1,0.853,0.085; 0.65,1,1,0.1,0.853,0.085; 0.652,1,1,0.1, - 0.853,0.085; 0.654,1,1,0.1,0.853,0.085; 0.656,1,1,0.1,0.853,0.085; - 0.658,1,1,0.1,0.853,0.085; 0.66,1,1,0.1,0.853,0.085; 0.662,1,1,0.1, - 0.853,0.085; 0.664,1,1,0.1,0.853,0.085; 0.666,1,1,0.1,0.853,0.085; - 0.668,1,1,0.1,0.853,0.085; 0.67,1,1,0.1,0.853,0.085; 0.672,1,1,0.1, - 0.853,0.085; 0.674,1,1,0.1,0.853,0.085; 0.676,1,1,0.1,0.853,0.085; - 0.678,1,1,0.1,0.853,0.085; 0.68,1,1,0.1,0.853,0.085; 0.682,1,1,0.1, - 0.853,0.085; 0.684,1,1,0.1,0.853,0.085; 0.686,1,1,0.1,0.853,0.085; - 0.688,1,1,0.1,0.853,0.085; 0.69,1,1,0.1,0.853,0.085; 0.692,1,1,0.1, - 0.853,0.085; 0.694,1,1,0.1,0.853,0.085; 0.696,1,1,0.1,0.853,0.085; - 0.698,1,1,0.1,0.853,0.085; 0.7,1,1,0.1,0.853,0.085; 0.7,1,1,0.5,0.672, - 0.336; 0.7,1,1,0.5,0.672,0.336; 0.702,1,1,0.5,0.672,0.336; 0.704,1,1, - 0.5,0.672,0.336; 0.706,1,1,0.5,0.672,0.336; 0.708,1,1,0.5,0.672,0.336; - 0.71,1,1,0.5,0.672,0.336; 0.712,1,1,0.5,0.672,0.336; 0.714,1,1,0.5, - 0.672,0.336; 0.716,1,1,0.5,0.672,0.336; 0.718,1,1,0.5,0.672,0.336; 0.72, - 1,1,0.5,0.672,0.336; 0.722,1,1,0.5,0.672,0.336; 0.724,1,1,0.5,0.672, - 0.336; 0.726,1,1,0.5,0.672,0.336; 0.728,1,1,0.5,0.672,0.336; 0.73,1,1, - 0.5,0.672,0.336; 0.732,1,1,0.5,0.672,0.336; 0.734,1,1,0.5,0.672,0.336; - 0.736,1,1,0.5,0.672,0.336; 0.738,1,1,0.5,0.672,0.336; 0.74,1,1,0.5, - 0.672,0.336; 0.742,1,1,0.5,0.672,0.336; 0.744,1,1,0.5,0.672,0.336; - 0.746,1,1,0.5,0.672,0.336; 0.748,1,1,0.5,0.672,0.336; 0.75,1,1,0.5, - 0.672,0.336; 0.752,1,1,0.5,0.672,0.336; 0.754,1,1,0.5,0.672,0.336; - 0.756,1,1,0.5,0.672,0.336; 0.758,1,1,0.5,0.672,0.336; 0.76,1,1,0.5, - 0.672,0.336; 0.762,1,1,0.5,0.672,0.336; 0.764,1,1,0.5,0.672,0.336; - 0.766,1,1,0.5,0.672,0.336; 0.768,1,1,0.5,0.672,0.336; 0.77,1,1,0.5, - 0.672,0.336; 0.772,1,1,0.5,0.672,0.336; 0.774,1,1,0.5,0.672,0.336; - 0.776,1,1,0.5,0.672,0.336; 0.778,1,1,0.5,0.672,0.336; 0.78,1,1,0.5, - 0.672,0.336; 0.782,1,1,0.5,0.672,0.336; 0.784,1,1,0.5,0.672,0.336; - 0.786,1,1,0.5,0.672,0.336; 0.788,1,1,0.5,0.672,0.336; 0.79,1,1,0.5, - 0.672,0.336; 0.792,1,1,0.5,0.672,0.336; 0.794,1,1,0.5,0.672,0.336; - 0.796,1,1,0.5,0.672,0.336; 0.798,1,1,0.5,0.672,0.336; 0.8,1,1,0.5,0.672, - 0.336; 0.802,1,1,0.5,0.672,0.336; 0.804,1,1,0.5,0.672,0.336; 0.806,1,1, - 0.5,0.672,0.336; 0.808,1,1,0.5,0.672,0.336; 0.81,1,1,0.5,0.672,0.336; - 0.812,1,1,0.5,0.672,0.336; 0.814,1,1,0.5,0.672,0.336; 0.816,1,1,0.5, - 0.672,0.336; 0.818,1,1,0.5,0.672,0.336; 0.82,1,1,0.5,0.672,0.336; 0.822, - 1,1,0.5,0.672,0.336; 0.824,1,1,0.5,0.672,0.336; 0.826,1,1,0.5,0.672, - 0.336; 0.828,1,1,0.5,0.672,0.336; 0.83,1,1,0.5,0.672,0.336; 0.83,1,1, - 0.8,0.575,0.46; 0.83,1,1,0.8,0.575,0.46; 0.832,1,1,0.8,0.575,0.46; - 0.834,1,1,0.8,0.575,0.46; 0.836,1,1,0.8,0.575,0.46; 0.838,1,1,0.8,0.575, - 0.46; 0.84,1,1,0.8,0.575,0.46; 0.842,1,1,0.8,0.575,0.46; 0.844,1,1,0.8, - 0.575,0.46; 0.846,1,1,0.8,0.575,0.46; 0.848,1,1,0.8,0.575,0.46; 0.85,1, - 1,0.8,0.575,0.46; 0.85,2,1,0.5,1.344,0.672; 0.85,2,1,0.5,1.344,0.672; - 0.852,2,1,0.5,1.344,0.672; 0.854,2,1,0.5,1.344,0.672; 0.856,2,1,0.5, - 1.344,0.672; 0.858,2,1,0.5,1.344,0.672; 0.86,2,1,0.5,1.344,0.672; 0.862, - 2,1,0.5,1.344,0.672; 0.864,2,1,0.5,1.344,0.672; 0.866,2,1,0.5,1.344, - 0.672; 0.868,2,1,0.5,1.344,0.672; 0.87,2,1,0.5,1.344,0.672; 0.872,2,1, - 0.5,1.344,0.672; 0.874,2,1,0.5,1.344,0.672; 0.876,2,1,0.5,1.344,0.672; - 0.878,2,1,0.5,1.344,0.672; 0.88,2,1,0.5,1.344,0.672; 0.882,2,1,0.5, - 1.344,0.672; 0.884,2,1,0.5,1.344,0.672; 0.886,2,1,0.5,1.344,0.672; - 0.888,2,1,0.5,1.344,0.672; 0.89,2,1,0.5,1.344,0.672; 0.892,2,1,0.5, - 1.344,0.672; 0.894,2,1,0.5,1.344,0.672; 0.896,2,1,0.5,1.344,0.672; - 0.898,2,1,0.5,1.344,0.672; 0.9,2,1,0.5,1.344,0.672; 0.902,2,1,0.5,1.344, - 0.672; 0.904,2,1,0.5,1.344,0.672; 0.906,2,1,0.5,1.344,0.672; 0.908,2,1, - 0.5,1.344,0.672; 0.91,2,1,0.5,1.344,0.672; 0.912,2,1,0.5,1.344,0.672; - 0.914,2,1,0.5,1.344,0.672; 0.916,2,1,0.5,1.344,0.672; 0.918,2,1,0.5, - 1.344,0.672; 0.92,2,1,0.5,1.344,0.672; 0.922,2,1,0.5,1.344,0.672; 0.924, - 2,1,0.5,1.344,0.672; 0.926,2,1,0.5,1.344,0.672; 0.928,2,1,0.5,1.344, - 0.672; 0.93,2,1,0.5,1.344,0.672; 0.932,2,1,0.5,1.344,0.672; 0.934,2,1, - 0.5,1.344,0.672; 0.936,2,1,0.5,1.344,0.672; 0.938,2,1,0.5,1.344,0.672; - 0.94,2,1,0.5,1.344,0.672; 0.942,2,1,0.5,1.344,0.672; 0.944,2,1,0.5, - 1.344,0.672; 0.946,2,1,0.5,1.344,0.672; 0.948,2,1,0.5,1.344,0.672; 0.95, - 2,1,0.5,1.344,0.672; 0.952,2,1,0.5,1.344,0.672; 0.954,2,1,0.5,1.344, - 0.672; 0.956,2,1,0.5,1.344,0.672; 0.958,2,1,0.5,1.344,0.672; 0.96,2,1, - 0.5,1.344,0.672; 0.962,2,1,0.5,1.344,0.672; 0.964,2,1,0.5,1.344,0.672; - 0.966,2,1,0.5,1.344,0.672; 0.968,2,1,0.5,1.344,0.672; 0.97,2,1,0.5, - 1.344,0.672; 0.972,2,1,0.5,1.344,0.672; 0.974,2,1,0.5,1.344,0.672; - 0.976,2,1,0.5,1.344,0.672; 0.978,2,1,0.5,1.344,0.672; 0.98,2,1,0.5, - 1.344,0.672; 0.982,2,1,0.5,1.344,0.672; 0.984,2,1,0.5,1.344,0.672; - 0.986,2,1,0.5,1.344,0.672; 0.988,2,1,0.5,1.344,0.672; 0.99,2,1,0.5, - 1.344,0.672; 0.992,2,1,0.5,1.344,0.672; 0.994,2,1,0.5,1.344,0.672; - 0.996,2,1,0.5,1.344,0.672; 0.998,2,1,0.5,1.344,0.672; 1,2,1,0.5,1.344, - 0.672], extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) + Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable RefDat(table=[0,1,1, + 0.3,0.754,0.226; 0.002,1,1,0.3,0.754,0.226; 0.004,1,1,0.3,0.754,0.226; + 0.006,1,1,0.3,0.754,0.226; 0.008,1,1,0.3,0.754,0.226; 0.01,1,1,0.3, + 0.754,0.226; 0.012,1,1,0.3,0.754,0.226; 0.014,1,1,0.3,0.754,0.226; + 0.016,1,1,0.3,0.754,0.226; 0.018,1,1,0.3,0.754,0.226; 0.02,1,1,0.3, + 0.754,0.226; 0.022,1,1,0.3,0.754,0.226; 0.024,1,1,0.3,0.754,0.226; + 0.026,1,1,0.3,0.754,0.226; 0.028,1,1,0.3,0.754,0.226; 0.03,1,1,0.3, + 0.754,0.226; 0.032,1,1,0.3,0.754,0.226; 0.034,1,1,0.3,0.754,0.226; + 0.036,1,1,0.3,0.754,0.226; 0.038,1,1,0.3,0.754,0.226; 0.04,1,1,0.3, + 0.754,0.226; 0.042,1,1,0.3,0.754,0.226; 0.044,1,1,0.3,0.754,0.226; + 0.046,1,1,0.3,0.754,0.226; 0.048,1,1,0.3,0.754,0.226; 0.05,1,1,0.3, + 0.754,0.226; 0.052,1,1,0.3,0.754,0.226; 0.054,1,1,0.3,0.754,0.226; + 0.056,1,1,0.3,0.754,0.226; 0.058,1,1,0.3,0.754,0.226; 0.06,1,1,0.3, + 0.754,0.226; 0.062,1,1,0.3,0.754,0.226; 0.064,1,1,0.3,0.754,0.226; + 0.066,1,1,0.3,0.754,0.226; 0.068,1,1,0.3,0.754,0.226; 0.07,1,1,0.3, + 0.754,0.226; 0.072,1,1,0.3,0.754,0.226; 0.074,1,1,0.3,0.754,0.226; + 0.076,1,1,0.3,0.754,0.226; 0.078,1,1,0.3,0.754,0.226; 0.08,1,1,0.3, + 0.754,0.226; 0.082,1,1,0.3,0.754,0.226; 0.084,1,1,0.3,0.754,0.226; + 0.086,1,1,0.3,0.754,0.226; 0.088,1,1,0.3,0.754,0.226; 0.09,1,1,0.3, + 0.754,0.226; 0.092,1,1,0.3,0.754,0.226; 0.094,1,1,0.3,0.754,0.226; + 0.096,1,1,0.3,0.754,0.226; 0.098,1,1,0.3,0.754,0.226; 0.1,1,1,0.3,0.754, + 0.226; 0.1,1,1,0.5,0.672,0.336; 0.1,1,1,0.5,0.672,0.336; 0.102,1,1,0.5, + 0.672,0.336; 0.104,1,1,0.5,0.672,0.336; 0.106,1,1,0.5,0.672,0.336; + 0.108,1,1,0.5,0.672,0.336; 0.11,1,1,0.5,0.672,0.336; 0.112,1,1,0.5, + 0.672,0.336; 0.114,1,1,0.5,0.672,0.336; 0.116,1,1,0.5,0.672,0.336; + 0.118,1,1,0.5,0.672,0.336; 0.12,1,1,0.5,0.672,0.336; 0.122,1,1,0.5, + 0.672,0.336; 0.124,1,1,0.5,0.672,0.336; 0.126,1,1,0.5,0.672,0.336; + 0.128,1,1,0.5,0.672,0.336; 0.13,1,1,0.5,0.672,0.336; 0.132,1,1,0.5, + 0.672,0.336; 0.134,1,1,0.5,0.672,0.336; 0.136,1,1,0.5,0.672,0.336; + 0.138,1,1,0.5,0.672,0.336; 0.14,1,1,0.5,0.672,0.336; 0.142,1,1,0.5, + 0.672,0.336; 0.144,1,1,0.5,0.672,0.336; 0.146,1,1,0.5,0.672,0.336; + 0.148,1,1,0.5,0.672,0.336; 0.15,1,1,0.5,0.672,0.336; 0.152,1,1,0.5, + 0.672,0.336; 0.154,1,1,0.5,0.672,0.336; 0.156,1,1,0.5,0.672,0.336; + 0.158,1,1,0.5,0.672,0.336; 0.16,1,1,0.5,0.672,0.336; 0.162,1,1,0.5, + 0.672,0.336; 0.164,1,1,0.5,0.672,0.336; 0.166,1,1,0.5,0.672,0.336; + 0.168,1,1,0.5,0.672,0.336; 0.17,1,1,0.5,0.672,0.336; 0.172,1,1,0.5, + 0.672,0.336; 0.174,1,1,0.5,0.672,0.336; 0.176,1,1,0.5,0.672,0.336; + 0.178,1,1,0.5,0.672,0.336; 0.18,1,1,0.5,0.672,0.336; 0.182,1,1,0.5, + 0.672,0.336; 0.184,1,1,0.5,0.672,0.336; 0.186,1,1,0.5,0.672,0.336; + 0.188,1,1,0.5,0.672,0.336; 0.19,1,1,0.5,0.672,0.336; 0.192,1,1,0.5, + 0.672,0.336; 0.194,1,1,0.5,0.672,0.336; 0.196,1,1,0.5,0.672,0.336; + 0.198,1,1,0.5,0.672,0.336; 0.2,1,1,0.5,0.672,0.336; 0.202,1,1,0.5,0.672, + 0.336; 0.204,1,1,0.5,0.672,0.336; 0.206,1,1,0.5,0.672,0.336; 0.208,1,1, + 0.5,0.672,0.336; 0.21,1,1,0.5,0.672,0.336; 0.212,1,1,0.5,0.672,0.336; + 0.214,1,1,0.5,0.672,0.336; 0.216,1,1,0.5,0.672,0.336; 0.218,1,1,0.5, + 0.672,0.336; 0.22,1,1,0.5,0.672,0.336; 0.222,1,1,0.5,0.672,0.336; 0.224, + 1,1,0.5,0.672,0.336; 0.226,1,1,0.5,0.672,0.336; 0.228,1,1,0.5,0.672, + 0.336; 0.23,1,1,0.5,0.672,0.336; 0.232,1,1,0.5,0.672,0.336; 0.234,1,1, + 0.5,0.672,0.336; 0.236,1,1,0.5,0.672,0.336; 0.238,1,1,0.5,0.672,0.336; + 0.24,1,1,0.5,0.672,0.336; 0.242,1,1,0.5,0.672,0.336; 0.244,1,1,0.5, + 0.672,0.336; 0.246,1,1,0.5,0.672,0.336; 0.248,1,1,0.5,0.672,0.336; 0.25, + 1,1,0.5,0.672,0.336; 0.252,1,1,0.5,0.672,0.336; 0.254,1,1,0.5,0.672, + 0.336; 0.256,1,1,0.5,0.672,0.336; 0.258,1,1,0.5,0.672,0.336; 0.26,1,1, + 0.5,0.672,0.336; 0.262,1,1,0.5,0.672,0.336; 0.264,1,1,0.5,0.672,0.336; + 0.266,1,1,0.5,0.672,0.336; 0.268,1,1,0.5,0.672,0.336; 0.27,1,1,0.5, + 0.672,0.336; 0.272,1,1,0.5,0.672,0.336; 0.274,1,1,0.5,0.672,0.336; + 0.276,1,1,0.5,0.672,0.336; 0.278,1,1,0.5,0.672,0.336; 0.28,1,1,0.5, + 0.672,0.336; 0.282,1,1,0.5,0.672,0.336; 0.284,1,1,0.5,0.672,0.336; + 0.286,1,1,0.5,0.672,0.336; 0.288,1,1,0.5,0.672,0.336; 0.29,1,1,0.5, + 0.672,0.336; 0.292,1,1,0.5,0.672,0.336; 0.294,1,1,0.5,0.672,0.336; + 0.296,1,1,0.5,0.672,0.336; 0.298,1,1,0.5,0.672,0.336; 0.3,1,1,0.5,0.672, + 0.336; 0.3,1,1,0.1,0.853,0.085; 0.3,1,1,0.1,0.853,0.085; 0.302,1,1,0.1, + 0.853,0.085; 0.304,1,1,0.1,0.853,0.085; 0.306,1,1,0.1,0.853,0.085; + 0.308,1,1,0.1,0.853,0.085; 0.31,1,1,0.1,0.853,0.085; 0.312,1,1,0.1, + 0.853,0.085; 0.314,1,1,0.1,0.853,0.085; 0.316,1,1,0.1,0.853,0.085; + 0.318,1,1,0.1,0.853,0.085; 0.32,1,1,0.1,0.853,0.085; 0.322,1,1,0.1, + 0.853,0.085; 0.324,1,1,0.1,0.853,0.085; 0.326,1,1,0.1,0.853,0.085; + 0.328,1,1,0.1,0.853,0.085; 0.33,1,1,0.1,0.853,0.085; 0.332,1,1,0.1, + 0.853,0.085; 0.334,1,1,0.1,0.853,0.085; 0.336,1,1,0.1,0.853,0.085; + 0.338,1,1,0.1,0.853,0.085; 0.34,1,1,0.1,0.853,0.085; 0.342,1,1,0.1, + 0.853,0.085; 0.344,1,1,0.1,0.853,0.085; 0.346,1,1,0.1,0.853,0.085; + 0.348,1,1,0.1,0.853,0.085; 0.35,1,1,0.1,0.853,0.085; 0.352,1,1,0.1, + 0.853,0.085; 0.354,1,1,0.1,0.853,0.085; 0.356,1,1,0.1,0.853,0.085; + 0.358,1,1,0.1,0.853,0.085; 0.36,1,1,0.1,0.853,0.085; 0.362,1,1,0.1, + 0.853,0.085; 0.364,1,1,0.1,0.853,0.085; 0.366,1,1,0.1,0.853,0.085; + 0.368,1,1,0.1,0.853,0.085; 0.37,1,1,0.1,0.853,0.085; 0.372,1,1,0.1, + 0.853,0.085; 0.374,1,1,0.1,0.853,0.085; 0.376,1,1,0.1,0.853,0.085; + 0.378,1,1,0.1,0.853,0.085; 0.38,1,1,0.1,0.853,0.085; 0.382,1,1,0.1, + 0.853,0.085; 0.384,1,1,0.1,0.853,0.085; 0.386,1,1,0.1,0.853,0.085; + 0.388,1,1,0.1,0.853,0.085; 0.39,1,1,0.1,0.853,0.085; 0.392,1,1,0.1, + 0.853,0.085; 0.394,1,1,0.1,0.853,0.085; 0.396,1,1,0.1,0.853,0.085; + 0.398,1,1,0.1,0.853,0.085; 0.4,1,1,0.1,0.853,0.085; 0.402,1,1,0.1,0.853, + 0.085; 0.404,1,1,0.1,0.853,0.085; 0.406,1,1,0.1,0.853,0.085; 0.408,1,1, + 0.1,0.853,0.085; 0.41,1,1,0.1,0.853,0.085; 0.412,1,1,0.1,0.853,0.085; + 0.414,1,1,0.1,0.853,0.085; 0.416,1,1,0.1,0.853,0.085; 0.418,1,1,0.1, + 0.853,0.085; 0.42,1,1,0.1,0.853,0.085; 0.422,1,1,0.1,0.853,0.085; 0.424, + 1,1,0.1,0.853,0.085; 0.426,1,1,0.1,0.853,0.085; 0.428,1,1,0.1,0.853, + 0.085; 0.43,1,1,0.1,0.853,0.085; 0.432,1,1,0.1,0.853,0.085; 0.434,1,1, + 0.1,0.853,0.085; 0.436,1,1,0.1,0.853,0.085; 0.438,1,1,0.1,0.853,0.085; + 0.44,1,1,0.1,0.853,0.085; 0.442,1,1,0.1,0.853,0.085; 0.444,1,1,0.1, + 0.853,0.085; 0.446,1,1,0.1,0.853,0.085; 0.448,1,1,0.1,0.853,0.085; 0.45, + 1,1,0.1,0.853,0.085; 0.452,1,1,0.1,0.853,0.085; 0.454,1,1,0.1,0.853, + 0.085; 0.456,1,1,0.1,0.853,0.085; 0.458,1,1,0.1,0.853,0.085; 0.46,1,1, + 0.1,0.853,0.085; 0.462,1,1,0.1,0.853,0.085; 0.464,1,1,0.1,0.853,0.085; + 0.466,1,1,0.1,0.853,0.085; 0.468,1,1,0.1,0.853,0.085; 0.47,1,1,0.1, + 0.853,0.085; 0.472,1,1,0.1,0.853,0.085; 0.474,1,1,0.1,0.853,0.085; + 0.476,1,1,0.1,0.853,0.085; 0.478,1,1,0.1,0.853,0.085; 0.48,1,1,0.1, + 0.853,0.085; 0.482,1,1,0.1,0.853,0.085; 0.484,1,1,0.1,0.853,0.085; + 0.486,1,1,0.1,0.853,0.085; 0.488,1,1,0.1,0.853,0.085; 0.49,1,1,0.1, + 0.853,0.085; 0.492,1,1,0.1,0.853,0.085; 0.494,1,1,0.1,0.853,0.085; + 0.496,1,1,0.1,0.853,0.085; 0.498,1,1,0.1,0.853,0.085; 0.5,1,1,0.1,0.853, + 0.085; 0.502,1,1,0.1,0.853,0.085; 0.504,1,1,0.1,0.853,0.085; 0.506,1,1, + 0.1,0.853,0.085; 0.508,1,1,0.1,0.853,0.085; 0.51,1,1,0.1,0.853,0.085; + 0.512,1,1,0.1,0.853,0.085; 0.514,1,1,0.1,0.853,0.085; 0.516,1,1,0.1, + 0.853,0.085; 0.518,1,1,0.1,0.853,0.085; 0.52,1,1,0.1,0.853,0.085; 0.522, + 1,1,0.1,0.853,0.085; 0.524,1,1,0.1,0.853,0.085; 0.526,1,1,0.1,0.853, + 0.085; 0.528,1,1,0.1,0.853,0.085; 0.53,1,1,0.1,0.853,0.085; 0.532,1,1, + 0.1,0.853,0.085; 0.534,1,1,0.1,0.853,0.085; 0.536,1,1,0.1,0.853,0.085; + 0.538,1,1,0.1,0.853,0.085; 0.54,1,1,0.1,0.853,0.085; 0.542,1,1,0.1, + 0.853,0.085; 0.544,1,1,0.1,0.853,0.085; 0.546,1,1,0.1,0.853,0.085; + 0.548,1,1,0.1,0.853,0.085; 0.55,1,1,0.1,0.853,0.085; 0.552,1,1,0.1, + 0.853,0.085; 0.554,1,1,0.1,0.853,0.085; 0.556,1,1,0.1,0.853,0.085; + 0.558,1,1,0.1,0.853,0.085; 0.56,1,1,0.1,0.853,0.085; 0.562,1,1,0.1, + 0.853,0.085; 0.564,1,1,0.1,0.853,0.085; 0.566,1,1,0.1,0.853,0.085; + 0.568,1,1,0.1,0.853,0.085; 0.57,1,1,0.1,0.853,0.085; 0.572,1,1,0.1, + 0.853,0.085; 0.574,1,1,0.1,0.853,0.085; 0.576,1,1,0.1,0.853,0.085; + 0.578,1,1,0.1,0.853,0.085; 0.58,1,1,0.1,0.853,0.085; 0.582,1,1,0.1, + 0.853,0.085; 0.584,1,1,0.1,0.853,0.085; 0.586,1,1,0.1,0.853,0.085; + 0.588,1,1,0.1,0.853,0.085; 0.59,1,1,0.1,0.853,0.085; 0.592,1,1,0.1, + 0.853,0.085; 0.594,1,1,0.1,0.853,0.085; 0.596,1,1,0.1,0.853,0.085; + 0.598,1,1,0.1,0.853,0.085; 0.6,1,1,0.1,0.853,0.085; 0.602,1,1,0.1,0.853, + 0.085; 0.604,1,1,0.1,0.853,0.085; 0.606,1,1,0.1,0.853,0.085; 0.608,1,1, + 0.1,0.853,0.085; 0.61,1,1,0.1,0.853,0.085; 0.612,1,1,0.1,0.853,0.085; + 0.614,1,1,0.1,0.853,0.085; 0.616,1,1,0.1,0.853,0.085; 0.618,1,1,0.1, + 0.853,0.085; 0.62,1,1,0.1,0.853,0.085; 0.622,1,1,0.1,0.853,0.085; 0.624, + 1,1,0.1,0.853,0.085; 0.626,1,1,0.1,0.853,0.085; 0.628,1,1,0.1,0.853, + 0.085; 0.63,1,1,0.1,0.853,0.085; 0.632,1,1,0.1,0.853,0.085; 0.634,1,1, + 0.1,0.853,0.085; 0.636,1,1,0.1,0.853,0.085; 0.638,1,1,0.1,0.853,0.085; + 0.64,1,1,0.1,0.853,0.085; 0.642,1,1,0.1,0.853,0.085; 0.644,1,1,0.1, + 0.853,0.085; 0.646,1,1,0.1,0.853,0.085; 0.648,1,1,0.1,0.853,0.085; 0.65, + 1,1,0.1,0.853,0.085; 0.652,1,1,0.1,0.853,0.085; 0.654,1,1,0.1,0.853, + 0.085; 0.656,1,1,0.1,0.853,0.085; 0.658,1,1,0.1,0.853,0.085; 0.66,1,1, + 0.1,0.853,0.085; 0.662,1,1,0.1,0.853,0.085; 0.664,1,1,0.1,0.853,0.085; + 0.666,1,1,0.1,0.853,0.085; 0.668,1,1,0.1,0.853,0.085; 0.67,1,1,0.1, + 0.853,0.085; 0.672,1,1,0.1,0.853,0.085; 0.674,1,1,0.1,0.853,0.085; + 0.676,1,1,0.1,0.853,0.085; 0.678,1,1,0.1,0.853,0.085; 0.68,1,1,0.1, + 0.853,0.085; 0.682,1,1,0.1,0.853,0.085; 0.684,1,1,0.1,0.853,0.085; + 0.686,1,1,0.1,0.853,0.085; 0.688,1,1,0.1,0.853,0.085; 0.69,1,1,0.1, + 0.853,0.085; 0.692,1,1,0.1,0.853,0.085; 0.694,1,1,0.1,0.853,0.085; + 0.696,1,1,0.1,0.853,0.085; 0.698,1,1,0.1,0.853,0.085; 0.7,1,1,0.1,0.853, + 0.085; 0.7,1,1,0.5,0.672,0.336; 0.7,1,1,0.5,0.672,0.336; 0.702,1,1,0.5, + 0.672,0.336; 0.704,1,1,0.5,0.672,0.336; 0.706,1,1,0.5,0.672,0.336; + 0.708,1,1,0.5,0.672,0.336; 0.71,1,1,0.5,0.672,0.336; 0.712,1,1,0.5, + 0.672,0.336; 0.714,1,1,0.5,0.672,0.336; 0.716,1,1,0.5,0.672,0.336; + 0.718,1,1,0.5,0.672,0.336; 0.72,1,1,0.5,0.672,0.336; 0.722,1,1,0.5, + 0.672,0.336; 0.724,1,1,0.5,0.672,0.336; 0.726,1,1,0.5,0.672,0.336; + 0.728,1,1,0.5,0.672,0.336; 0.73,1,1,0.5,0.672,0.336; 0.732,1,1,0.5, + 0.672,0.336; 0.734,1,1,0.5,0.672,0.336; 0.736,1,1,0.5,0.672,0.336; + 0.738,1,1,0.5,0.672,0.336; 0.74,1,1,0.5,0.672,0.336; 0.742,1,1,0.5, + 0.672,0.336; 0.744,1,1,0.5,0.672,0.336; 0.746,1,1,0.5,0.672,0.336; + 0.748,1,1,0.5,0.672,0.336; 0.75,1,1,0.5,0.672,0.336; 0.752,1,1,0.5, + 0.672,0.336; 0.754,1,1,0.5,0.672,0.336; 0.756,1,1,0.5,0.672,0.336; + 0.758,1,1,0.5,0.672,0.336; 0.76,1,1,0.5,0.672,0.336; 0.762,1,1,0.5, + 0.672,0.336; 0.764,1,1,0.5,0.672,0.336; 0.766,1,1,0.5,0.672,0.336; + 0.768,1,1,0.5,0.672,0.336; 0.77,1,1,0.5,0.672,0.336; 0.772,1,1,0.5, + 0.672,0.336; 0.774,1,1,0.5,0.672,0.336; 0.776,1,1,0.5,0.672,0.336; + 0.778,1,1,0.5,0.672,0.336; 0.78,1,1,0.5,0.672,0.336; 0.782,1,1,0.5, + 0.672,0.336; 0.784,1,1,0.5,0.672,0.336; 0.786,1,1,0.5,0.672,0.336; + 0.788,1,1,0.5,0.672,0.336; 0.79,1,1,0.5,0.672,0.336; 0.792,1,1,0.5, + 0.672,0.336; 0.794,1,1,0.5,0.672,0.336; 0.796,1,1,0.5,0.672,0.336; + 0.798,1,1,0.5,0.672,0.336; 0.8,1,1,0.5,0.672,0.336; 0.802,1,1,0.5,0.672, + 0.336; 0.804,1,1,0.5,0.672,0.336; 0.806,1,1,0.5,0.672,0.336; 0.808,1,1, + 0.5,0.672,0.336; 0.81,1,1,0.5,0.672,0.336; 0.812,1,1,0.5,0.672,0.336; + 0.814,1,1,0.5,0.672,0.336; 0.816,1,1,0.5,0.672,0.336; 0.818,1,1,0.5, + 0.672,0.336; 0.82,1,1,0.5,0.672,0.336; 0.822,1,1,0.5,0.672,0.336; 0.824, + 1,1,0.5,0.672,0.336; 0.826,1,1,0.5,0.672,0.336; 0.828,1,1,0.5,0.672, + 0.336; 0.83,1,1,0.5,0.672,0.336; 0.83,1,1,0.8,0.575,0.46; 0.83,1,1,0.8, + 0.575,0.46; 0.832,1,1,0.8,0.575,0.46; 0.834,1,1,0.8,0.575,0.46; 0.836,1, + 1,0.8,0.575,0.46; 0.838,1,1,0.8,0.575,0.46; 0.84,1,1,0.8,0.575,0.46; + 0.842,1,1,0.8,0.575,0.46; 0.844,1,1,0.8,0.575,0.46; 0.846,1,1,0.8,0.575, + 0.46; 0.848,1,1,0.8,0.575,0.46; 0.85,1,1,0.8,0.575,0.46; 0.85,2,1,0.5, + 1.344,0.672; 0.85,2,1,0.5,1.344,0.672; 0.852,2,1,0.5,1.344,0.672; 0.854, + 2,1,0.5,1.344,0.672; 0.856,2,1,0.5,1.344,0.672; 0.858,2,1,0.5,1.344, + 0.672; 0.86,2,1,0.5,1.344,0.672; 0.862,2,1,0.5,1.344,0.672; 0.864,2,1, + 0.5,1.344,0.672; 0.866,2,1,0.5,1.344,0.672; 0.868,2,1,0.5,1.344,0.672; + 0.87,2,1,0.5,1.344,0.672; 0.872,2,1,0.5,1.344,0.672; 0.874,2,1,0.5, + 1.344,0.672; 0.876,2,1,0.5,1.344,0.672; 0.878,2,1,0.5,1.344,0.672; 0.88, + 2,1,0.5,1.344,0.672; 0.882,2,1,0.5,1.344,0.672; 0.884,2,1,0.5,1.344, + 0.672; 0.886,2,1,0.5,1.344,0.672; 0.888,2,1,0.5,1.344,0.672; 0.89,2,1, + 0.5,1.344,0.672; 0.892,2,1,0.5,1.344,0.672; 0.894,2,1,0.5,1.344,0.672; + 0.896,2,1,0.5,1.344,0.672; 0.898,2,1,0.5,1.344,0.672; 0.9,2,1,0.5,1.344, + 0.672; 0.902,2,1,0.5,1.344,0.672; 0.904,2,1,0.5,1.344,0.672; 0.906,2,1, + 0.5,1.344,0.672; 0.908,2,1,0.5,1.344,0.672; 0.91,2,1,0.5,1.344,0.672; + 0.912,2,1,0.5,1.344,0.672; 0.914,2,1,0.5,1.344,0.672; 0.916,2,1,0.5, + 1.344,0.672; 0.918,2,1,0.5,1.344,0.672; 0.92,2,1,0.5,1.344,0.672; 0.922, + 2,1,0.5,1.344,0.672; 0.924,2,1,0.5,1.344,0.672; 0.926,2,1,0.5,1.344, + 0.672; 0.928,2,1,0.5,1.344,0.672; 0.93,2,1,0.5,1.344,0.672; 0.932,2,1, + 0.5,1.344,0.672; 0.934,2,1,0.5,1.344,0.672; 0.936,2,1,0.5,1.344,0.672; + 0.938,2,1,0.5,1.344,0.672; 0.94,2,1,0.5,1.344,0.672; 0.942,2,1,0.5, + 1.344,0.672; 0.944,2,1,0.5,1.344,0.672; 0.946,2,1,0.5,1.344,0.672; + 0.948,2,1,0.5,1.344,0.672; 0.95,2,1,0.5,1.344,0.672; 0.952,2,1,0.5, + 1.344,0.672; 0.954,2,1,0.5,1.344,0.672; 0.956,2,1,0.5,1.344,0.672; + 0.958,2,1,0.5,1.344,0.672; 0.96,2,1,0.5,1.344,0.672; 0.962,2,1,0.5, + 1.344,0.672; 0.964,2,1,0.5,1.344,0.672; 0.966,2,1,0.5,1.344,0.672; + 0.968,2,1,0.5,1.344,0.672; 0.97,2,1,0.5,1.344,0.672; 0.972,2,1,0.5, + 1.344,0.672; 0.974,2,1,0.5,1.344,0.672; 0.976,2,1,0.5,1.344,0.672; + 0.978,2,1,0.5,1.344,0.672; 0.98,2,1,0.5,1.344,0.672; 0.982,2,1,0.5, + 1.344,0.672; 0.984,2,1,0.5,1.344,0.672; 0.986,2,1,0.5,1.344,0.672; + 0.988,2,1,0.5,1.344,0.672; 0.99,2,1,0.5,1.344,0.672; 0.992,2,1,0.5, + 1.344,0.672; 0.994,2,1,0.5,1.344,0.672; 0.996,2,1,0.5,1.344,0.672; + 0.998,2,1,0.5,1.344,0.672; 1,2,1,0.5,1.344,0.672], extrapolation= + Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) "Data for validating the timeConstantDelay block" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); equation - connect(ReferenceData.y[1], timeConstantDelay.tOn) annotation (Line(points={{ - -38,0},{-20,0},{-20,6},{-12,6}}, color={0,0,127})); - connect(timeConstantDelay.k, ReferenceData.y[2]) + connect(RefDat.y[1], timConDel.tOn) annotation (Line(points={{-38,0},{-20,0}, + {-20,6},{-12,6}}, color={0,0,127})); + connect(timConDel.k, RefDat.y[2]) annotation (Line(points={{-12,0},{-38,0}}, color={0,0,127})); - connect(timeConstantDelay.ratioLT, ReferenceData.y[3]) annotation (Line( - points={{-12,-6},{-20,-6},{-20,0},{-38,0}}, color={0,0,127})); + connect(timConDel.ratioLT, RefDat.y[3]) annotation (Line(points={{-12,-6},{-20, + -6},{-20,0},{-38,0}}, color={0,0,127})); annotation ( experiment( StopTime=1.0, diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PI.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PI.mos index 8ef89fb1eb0..5f19c5b9431 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PI.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PI.mos @@ -1,4 +1,4 @@ -simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Validation.PI", method="Cvode", tolerance=1e-06, resultFile="PI"); -createPlot(id=1, position={95, 95, 1484, 920}, y={"pI.k", "ReferenceData.y[4]"}, range={0.0, 1.0, 0.15000000000000002, 0.4}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={95, 95, 1484, 920}, y={"pI.Ti", "ReferenceData.y[5]"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); +simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PI", method="Cvode", tolerance=1e-06, resultFile="PI"); +createPlot(id=1, position={95, 95, 1484, 920}, y={"PI.k", "ReferenceData.y[4]"}, range={0.0, 1.0, 0.15000000000000002, 0.4}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={95, 95, 1484, 920}, y={"PI.Ti", "ReferenceData.y[5]"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PID.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PID.mos index 3ebc6e63228..a5c32b03ce6 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PID.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PID.mos @@ -1,5 +1,5 @@ -simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Validation.PID", method="Cvode", tolerance=1e-06, resultFile="PID"); -createPlot(id=1, position={75, 75, 1488, 1095}, y={"pID.k", "ReferenceData.y[4]"}, range={0.0, 1.0, 0.4, 1.2000000000000002}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={75, 75, 1488, 1095}, y={"pID.Ti", "ReferenceData.y[5]"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={75, 75, 1488, 1095}, y={"pID.Td", "ReferenceData.y[6]"}, range={0.0, 1.0, 0.1, 0.30000000000000004}, grid=true, subPlot=103, colors={{28,108,200}, {238,46,47}}); +simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PID", method="Cvode", tolerance=1e-06, resultFile="PID"); +createPlot(id=1, position={75, 75, 1488, 1095}, y={"PID.k", "ReferenceData.y[4]"}, range={0.0, 1.0, 0.4, 1.2000000000000002}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={75, 75, 1488, 1095}, y={"PID.Ti", "ReferenceData.y[5]"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={75, 75, 1488, 1095}, y={"PID.Td", "ReferenceData.y[6]"}, range={0.0, 1.0, 0.1, 0.30000000000000004}, grid=true, subPlot=103, colors={{28,108,200}, {238,46,47}}); diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIDDerivativeTime.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIDDerivativeTime.mos index f35b06b11af..229cbcefb42 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIDDerivativeTime.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIDDerivativeTime.mos @@ -1,3 +1,3 @@ -simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Validation.PIDDerivativeTime", method="Cvode", tolerance=1e-06, resultFile="PIDDerivativeTime"); -createPlot(id=1, position={35, 35, 1484, 920}, y={"pIDDerivativeTime.T", "pIDDerivativeTime.L"}, range={0.0, 1.0, 0.2, 1.2}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={75, 75, 1484, 920}, y={"ReferenceData.y[6]", "pIDDerivativeTime.Td"}, range={0.0, 1.0, 0.10000000000000002, 0.30000000000000004}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}, timeUnit="s"); +simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDDerivativeTime", method="Cvode", tolerance=1e-06, resultFile="PIDDerivativeTime"); +createPlot(id=1, position={35, 35, 1484, 920}, y={"PIDDerivativeTime.T", "PIDDerivativeTime.L"}, range={0.0, 1.0, 0.2, 1.2}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={75, 75, 1484, 920}, y={"ReferenceData.y[6]", "PIDDerivativeTime.Td"}, range={0.0, 1.0, 0.10000000000000002, 0.30000000000000004}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}, timeUnit="s"); diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIDGain.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIDGain.mos index e182c17298b..68b93e39814 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIDGain.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIDGain.mos @@ -1,4 +1,4 @@ -simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Validation.PIDGain", method="Cvode", tolerance=1e-06, resultFile="PIDGain"); -createPlot(id=1, position={15, 15, 1484, 920}, y={"pIDGain.kp", "pIDGain.T", "pIDGain.L"}, range={0.0, 1.0, 0.0, 2.5}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}, {0,140,72}}); -createPlot(id=1, position={15, 15, 1484, 920}, y={"pIDGain.k", "ReferenceData.y[4]"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); +simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDGain", method="Cvode", tolerance=1e-06, resultFile="PIDGain"); +createPlot(id=1, position={15, 15, 1484, 920}, y={"PIDGain.kp", "PIDGain.T", "PIDGain.L"}, range={0.0, 1.0, 0.0, 2.5}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}, {0,140,72}}); +createPlot(id=1, position={15, 15, 1484, 920}, y={"PIDGain.k", "ReferenceData.y[4]"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIDIntegralTime.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIDIntegralTime.mos index 753e6163485..3c6a4501ee4 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIDIntegralTime.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIDIntegralTime.mos @@ -1,4 +1,4 @@ -simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Validation.PIDIntegralTime", method="Cvode", tolerance=1e-06, resultFile="PIDIntegralTime"); -createPlot(id=1, position={75, 75, 1484, 920}, y={"pIDIntegralTime.T", "pIDIntegralTime.L"}, range={0.0, 1.0, 0.2, 1.2}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={75, 75, 1484, 920}, y={"pIDIntegralTime.Ti", "ReferenceData.y[5]"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); +simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDIntegralTime", method="Cvode", tolerance=1e-06, resultFile="PIDIntegralTime"); +createPlot(id=1, position={75, 75, 1484, 920}, y={"PIDIntegralTime.T", "PIDIntegralTime.L"}, range={0.0, 1.0, 0.2, 1.2}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={75, 75, 1484, 920}, y={"PIDIntegralTime.Ti", "ReferenceData.y[5]"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIGain.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIGain.mos index dcee52f5dc2..d219da216a9 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIGain.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIGain.mos @@ -1,4 +1,4 @@ -simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Validation.PIGain", method="Cvode", tolerance=1e-06, resultFile="PIGain"); -createPlot(id=1, position={35, 35, 1484, 920}, y={"pIGain.kp", "pIGain.T", "pIGain.L"}, range={0.0, 1.0, 0.0, 2.5}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}, {0,140,72}}); -createPlot(id=1, position={35, 35, 1484, 920}, y={"pIGain.k", "ReferenceData.y[4]"}, range={0.0, 1.0, 0.15000000000000002, 0.35000000000000003}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); +simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIGain", method="Cvode", tolerance=1e-06, resultFile="PIGain"); +createPlot(id=1, position={35, 35, 1484, 920}, y={"PIGain.kp", "PIGain.T", "PIGain.L"}, range={0.0, 1.0, 0.0, 2.5}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}, {0,140,72}}); +createPlot(id=1, position={35, 35, 1484, 920}, y={"PIGain.k", "ReferenceData.y[4]"}, range={0.0, 1.0, 0.15000000000000002, 0.35000000000000003}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIIntegralTime.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIIntegralTime.mos index d221c631992..ff566e36c0b 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIIntegralTime.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIIntegralTime.mos @@ -1,4 +1,4 @@ -simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.Amigo.Validation.PIIntegralTime", method="Cvode", tolerance=1e-06, resultFile="PIIntegralTime"); -createPlot(id=1, position={95, 95, 1484, 920}, y={"pIIntegralTime.T", "pIIntegralTime.L"}, range={0.0, 1.0, 0.2, 1.2}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={95, 95, 1484, 920}, y={"pIIntegralTime.Ti", "ReferenceData.y[5]"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); +simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIIntegralTime", method="Cvode", tolerance=1e-06, resultFile="PIIntegralTime"); +createPlot(id=1, position={95, 95, 1484, 920}, y={"PIIntegralTime.T", "PIIntegralTime.L"}, range={0.0, 1.0, 0.2, 1.2}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={95, 95, 1484, 920}, y={"PIIntegralTime.Ti", "ReferenceData.y[5]"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Controller.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Controller.mos index cac420534f8..e1290273037 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Controller.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Controller.mos @@ -1,6 +1,6 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.Controller", method="Cvode", tolerance=1e-06, stopTime=1.0, resultFile="Controller"); -createPlot(id=1, position={75, 75, 1484, 920}, y={"controller.u_m"}, range={0.0, 1.0, -1.5, 1.5}, grid=true, subPlot=101, colors={{28,108,200}}); -plotExpression(apply(Controller[end].controller.u_s-0.4), false, "controller[end].controller.u_s-deaBan", 1); -plotExpression(apply(Controller[end].controller.u_s+0.4), false, "controller[end].controller.u_s+deaBan", 1); -createPlot(id=1, position={75, 75, 1484, 920}, y={"controller.y"}, range={0.0, 1.0, -1.0, 1.5}, grid=true, subPlot=102, colors={{28,108,200}}); +createPlot(id=1, position={75, 75, 1484, 920}, y={"relCon.u_m"}, range={0.0, 1.0, -1.5, 1.5}, grid=true, subPlot=101, colors={{28,108,200}}); +plotExpression(apply(Controller[end].relCon.u_s-0.4), false, "controller[end].relCon.u_s-deaBan", 1); +plotExpression(apply(Controller[end].relCon.u_s+0.4), false, "controller[end].relCon.u_s+deaBan", 1); +createPlot(id=1, position={75, 75, 1484, 920}, y={"relCon.y"}, range={0.0, 1.0, -1.0, 1.5}, grid=true, subPlot=102, colors={{28,108,200}}); diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mos index 19b66e3fa08..9c57f459508 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mos @@ -1,4 +1,4 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.HalfPeriodRatio", method="Cvode", tolerance=1e-06, resultFile="HalfPeriodRatio"); -createPlot(id=1, position={15, 15, 1742, 1559}, y={"halfPeriodRatio.tOn", "halfPeriodRatio.tOff"}, range={0.0, 1.0, -0.5, 3.5}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={15, 15, 1742, 1559}, y={"halfPeriodRatio.rho"}, range={0.0, 1.0, 0.9500000000000001, 1.5500000000000003}, grid=true, subPlot=102, colors={{28,108,200}}); +createPlot(id=1, position={15, 15, 1742, 1559}, y={"halPerRat.tOn", "halPerRat.tOff"}, range={0.0, 1.0, -0.5, 3.5}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={15, 15, 1742, 1559}, y={"halPerRat.rho"}, range={0.0, 1.0, 0.95, 1.55}, grid=true, subPlot=102, colors={{28,108,200}}); diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mos index 1ebdd86f074..885da49da58 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mos @@ -1,5 +1,5 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.NormalizedTimeDelay", method="Cvode", tolerance=1e-06, resultFile="NormalizedTimeDelay"); -createPlot(id=1, position={75, 75, 1484, 920}, y={"normalizedTimeDelay.rho"}, range={0.0, 1.0, -0.5, 2.5}, grid=true, subPlot=101, colors={{28,108,200}}); -createPlot(id=1, position={95, 95, 1484, 920}, y={"normalizedTimeDelay.tau", "ReferenceData.y[2]"}, range={0.0, 1.0, 0.0, 2.5}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={75, 75, 1484, 920}, y={"norTimDel.rho"}, range={0.0, 1.0, -0.5, 2.5}, grid=true, subPlot=101, colors={{28,108,200}}); +createPlot(id=1, position={95, 95, 1484, 920}, y={"norTimDel.tau", "RefDat.y[2]"}, range={0.0, 1.0, 0.0, 2.5}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mos index c3da8001103..59ff0994fdd 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mos @@ -1,4 +1,4 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.OnOffPeriod", method="Cvode", tolerance=1e-06, resultFile="OnOffPeriod"); -createPlot(id=1, position={35, 35, 1688, 1527}, y={"onOffPeriod.On"}, range={0.0, 1.0, -0.1, 1.1}, grid=true, subPlot=101, colors={{28,108,200}}); -createPlot(id=1, position={35, 35, 1688, 1527}, y={"onOffPeriod.tOn", "onOffPeriod.tOff"}, range={0.0, 1.0, -0.1, 0.7000000000000001}, grid=true, subPlot=102, colors={{238,46,47}, {28,108,200}}); +createPlot(id=1, position={35, 35, 1688, 1527}, y={"onOffPer.On"}, range={0.0, 1.0, -0.1, 1.1}, grid=true, subPlot=101, colors={{28,108,200}}); +createPlot(id=1, position={35, 35, 1688, 1527}, y={"onOffPer.tOn", "onOffPer.tOff"}, range={0.0, 1.0, -0.1, 0.7000000000000001}, grid=true, subPlot=102, colors={{238,46,47}, {28,108,200}}); diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mos index 20210a713d7..aa361de718a 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mos @@ -1,6 +1,6 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.ResponseProcess", method="Cvode", tolerance=1e-06, resultFile="ResponseProcess"); -createPlot(id=1, position={75, 75, 1869, 1435}, y={"relayResponse.y[1]"}, range={0.0, 1.0, -0.5, 1.5}, grid=true, subPlot=101, colors={{28,108,200}}); -createPlot(id=1, position={75, 75, 1869, 1435}, y={"responseProcess.tOn", "responseProcess.tOff"}, range={0.0, 1.0, -0.5, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={75, 75, 1869, 1435}, y={"responseProcess.triggerEnd","responseProcess.triggerStart"}, range={0.0, 1.0, -0.5, 1.5}, grid=true, subPlot=103, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={75, 75, 1869, 1435}, y={"responseProcess.tau"}, range={0.0, 1.0, 0.0, 1.5}, grid=true, subPlot=104, colors={{28,108,200}}); +createPlot(id=1, position={75, 75, 1869, 1435}, y={"relRes.y[1]"}, range={0.0, 1.0, -0.5, 1.5}, grid=true, subPlot=101, colors={{28,108,200}}); +createPlot(id=1, position={75, 75, 1869, 1435}, y={"resPro.tOn", "resPro.tOff"}, range={0.0, 1.0, -0.5, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={75, 75, 1869, 1435}, y={"resPro.triEnd","resPro.triSta"}, range={0.0, 1.0, -0.5, 1.5}, grid=true, subPlot=103, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={75, 75, 1869, 1435}, y={"resPro.tau"}, range={0.0, 1.0, 0.0, 1.5}, grid=true, subPlot=104, colors={{28,108,200}}); diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mos index 1dff16a38b0..6694bd11299 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mos @@ -1,3 +1,3 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation.ControlProcessModel", method="Cvode", tolerance=1e-06, resultFile="ControlProcessModel"); -createPlot(id=1, position={95, 95, 1484, 920}, y={"controlProcessModel.T", "ReferenceData.y[5]"}, range={0.0, 1.0, 0.75, 1.05}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}, timeUnit="s"); -createPlot(id=1, position={95, 95, 1484, 920}, y={"controlProcessModel.L", "ReferenceData.y[6]"}, range={0.0, 1.0, 0.75, 1.05}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}, timeUnit="s"); +createPlot(id=1, position={95, 95, 1484, 920}, y={"conProMod.T", "RefDat.y[5]"}, range={0.0, 1.0, 0.75, 1.05}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}, timeUnit="s"); +createPlot(id=1, position={95, 95, 1484, 920}, y={"conProMod.L", "RefDat.y[6]"}, range={0.0, 1.0, 0.75, 1.05}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}, timeUnit="s"); diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mos index 25e10bc6dff..de730733983 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mos @@ -1,5 +1,5 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation.Gain", method="Cvode", tolerance=1e-06, resultFile="Gain"); createPlot(id=1, position={55, 55, 1753, 1433}, y={"u.y[1]"}, range={0.0, 1.0, 0.4, 1.2000000000000002}, grid=true, subPlot=101, colors={{28,108,200}}); createPlot(id=1, position={55, 55, 1753, 1433}, y={"tOn.y[1]", "tOff.y[1]"}, range={0.0, 1.0, -0.5, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={55, 55, 1753, 1433}, y={"tuningStart.y[1]", "tuningEnd.y[1]"}, range={0.0, 1.0, -0.5, 1.5}, grid=true, subPlot=103, colors={{28,108,200}, {28,108,200}}); -createPlot(id=1, position={55, 55, 1753, 1433}, y={"gain.k"}, range={0.0, 1.0, -0.5, 1.5}, grid=true, subPlot=104, colors={{28,108,200}}); +createPlot(id=1, position={55, 55, 1753, 1433}, y={"tunSta.y[1]", "tunEnd.y[1]"}, range={0.0, 1.0, -0.5, 1.5}, grid=true, subPlot=103, colors={{28,108,200}, {28,108,200}}); +createPlot(id=1, position={55, 55, 1753, 1433}, y={"gai.k"}, range={0.0, 1.0, -0.5, 1.5}, grid=true, subPlot=104, colors={{28,108,200}}); diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mos index 3bb120da426..0a1fa41e423 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mos @@ -1,4 +1,4 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation.TimeConstantDelay", method="Cvode", tolerance=1e-06, resultFile="TimeConstantDelay"); -createPlot(id=1, position={35, 35, 1484, 920}, y={"timeConstantDelay.T", "ReferenceData.y[4]"}, range={0.0, 1.0, 0.4, 1.6}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={35, 35, 1484, 920}, y={"timeConstantDelay.L", "ReferenceData.y[5]"}, range={0.0, 1.0, 0.0, 0.8}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={35, 35, 1484, 920}, y={"timConDel.T", "RefDat.y[4]"}, range={0.0, 1.0, 0.4, 1.6}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={35, 35, 1484, 920}, y={"timConDel.L", "RefDat.y[5]"}, range={0.0, 1.0, 0.0, 0.8}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); From b294e2082d05252fd13e589ae90e58db1a1a3c67 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Fri, 26 Aug 2022 10:20:22 -0400 Subject: [PATCH 025/214] clean up again --- .../PIDWithAutotuning/AutoTuner/AMIGO/PID.mo | 43 +- .../AutoTuner/AMIGO/PIDDerivativeTime.mo | 2 +- .../AutoTuner/AMIGO/PIDGain.mo | 2 +- .../AutoTuner/AMIGO/PIDIntegralTime.mo | 2 +- .../AutoTuner/AMIGO/PIGain.mo | 4 +- .../AutoTuner/AMIGO/PIIntegralTime.mo | 2 +- .../AutoTuner/AMIGO/Validation/PI.mo | 378 ++++++------- .../AutoTuner/AMIGO/Validation/PID.mo | 92 ++-- .../AMIGO/Validation/PIDDerivativeTime.mo | 92 ++-- .../AutoTuner/AMIGO/Validation/PIDGain.mo | 94 ++-- .../AMIGO/Validation/PIDIntegralTime.mo | 92 ++-- .../AutoTuner/AMIGO/Validation/PIGain.mo | 142 ++--- .../AMIGO/Validation/PIIntegralTime.mo | 516 +++++++++--------- .../AutoTuner/AMIGO/package.mo | 4 +- .../PIDWithAutotuningAmigoFOTD.mo | 31 +- .../PIDWithAutotuning/Relay/Controller.mo | 22 +- .../Relay/HalfPeriodRatio.mo | 6 +- .../Relay/NormalizedTimeDelay.mo | 2 +- .../PIDWithAutotuning/Relay/OnOffPeriod.mo | 6 +- .../Relay/ResponseProcess.mo | 24 +- .../ControlProcessModel.mo | 7 +- .../FirstOrderTimedelayed/Gain.mo | 29 +- .../TimeConstantDelay.mo | 6 +- .../Validation/PIDWithAutotuningAmigoFOTD.mo | 9 +- .../Validation/PIWithAutotuningAmigoFOTD.mo | 29 +- .../Amigo/Validation/PIDDerivativeTime.mos | 4 +- .../AutoTuner/Amigo/Validation/PIDGain.mos | 4 +- .../Amigo/Validation/PIDIntegralTime.mos | 4 +- .../AutoTuner/Amigo/Validation/PIGain.mos | 4 +- .../Amigo/Validation/PIIntegralTime.mos | 4 +- 30 files changed, 839 insertions(+), 817 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo index fa900c03b54..49d9217d9bf 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo @@ -21,38 +21,37 @@ block PID "Identifies the parameters of a PID controller" Buildings.Controls.OBC.CDL.Interfaces.RealOutput Td "Connector for time constant signal for the derivative term" annotation (Placement(transformation(extent={{100,-90},{140,-50}}))); - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIDGain gain + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIDGain gai "Calculate the control gain" annotation (Placement(transformation(extent={{-10,40},{10,60}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIDIntegralTime - integralTime "Calculate the integral time" + intTim "Calculate the integral time" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIDDerivativeTime - derivativeTime "Calculate the derivative time" + derTim "Calculate the derivative time" annotation (Placement(transformation(extent={{-10,-70},{10,-50}}))); equation - connect(derivativeTime.Td, Td) - annotation (Line(points={{12,-60},{60,-60},{60,-70},{120,-70}}, - color={0,0,127})); - connect(integralTime.Ti, Ti) + connect(derTim.Td, Td) annotation (Line(points={{12,-60},{60,-60},{60,-70},{ + 120,-70}}, color={0,0,127})); + connect(intTim.Ti, Ti) annotation (Line(points={{12,0},{120,0}}, color={0,0,127})); - connect(gain.k, k) annotation (Line(points={{12,50},{94,50},{94,70},{120,70}}, + connect(gai.k, k) annotation (Line(points={{12,50},{94,50},{94,70},{120,70}}, color={0,0,127})); - connect(integralTime.T, gain.T) annotation (Line(points={{-12,6},{-40,6},{-40, - 50},{-12,50}}, color={0,0,127})); - connect(derivativeTime.T, gain.T) annotation (Line(points={{-12,-54},{-40,-54}, - {-40,50},{-12,50}}, color={0,0,127})); - connect(integralTime.L, gain.L) annotation (Line(points={{-12,-6},{-26,-6},{ - -26,44},{-12,44}}, color={0,0,127})); - connect(derivativeTime.L, gain.L) annotation (Line(points={{-12,-66},{-26,-66}, - {-26,44},{-12,44}}, color={0,0,127})); - connect(kp, gain.kp) annotation (Line(points={{-120,60},{-20,60},{-20,56},{ - -12,56}}, color={0,0,127})); - connect(T, gain.T) annotation (Line(points={{-120,0},{-80,0},{-80,6},{-40,6}, - {-40,50},{-12,50}}, color={0,0,127})); - connect(L, gain.L) annotation (Line(points={{-120,-60},{-26,-60},{-26,44},{ - -12,44}}, color={0,0,127})); + connect(intTim.T, gai.T) annotation (Line(points={{-12,6},{-40,6},{-40,50},{-12, + 50}}, color={0,0,127})); + connect(derTim.T, gai.T) annotation (Line(points={{-12,-54},{-40,-54},{-40,50}, + {-12,50}}, color={0,0,127})); + connect(intTim.L, gai.L) annotation (Line(points={{-12,-6},{-26,-6},{-26,44}, + {-12,44}}, color={0,0,127})); + connect(derTim.L, gai.L) annotation (Line(points={{-12,-66},{-26,-66},{-26,44}, + {-12,44}}, color={0,0,127})); + connect(kp, gai.kp) annotation (Line(points={{-120,60},{-20,60},{-20,56},{-12, + 56}}, color={0,0,127})); + connect(T, gai.T) annotation (Line(points={{-120,0},{-80,0},{-80,6},{-40,6},{ + -40,50},{-12,50}}, color={0,0,127})); + connect(L, gai.L) annotation (Line(points={{-120,-60},{-26,-60},{-26,44},{-12, + 44}}, color={0,0,127})); annotation (defaultComponentName = "PID", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo index d9848f1d9df..86eee4c4df7 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo @@ -45,7 +45,7 @@ equation color={0,0,127})); connect(div.u2, add.y) annotation (Line(points={{18,-6},{12,-6},{12,-50},{-18, -50}}, color={0,0,127})); - annotation (defaultComponentName = "PIDDerivativeTime", + annotation (defaultComponentName = "PIDDerTim", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-100,-100},{100,100}}, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo index 2477302ce15..3bf4102ef34 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo @@ -52,7 +52,7 @@ equation color={0,0,127})); connect(mul.u2, add.y) annotation (Line(points={{58,-6},{48,-6},{48,-30},{42, -30}}, color={0,0,127})); - annotation (defaultComponentName = "PIDGain", + annotation (defaultComponentName = "PIDGai", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-100,-100},{100,100}}, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo index 49e3e4ccfbb..4e5d5f4fc63 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo @@ -58,7 +58,7 @@ equation 20}}, color={0,0,127})); connect(div.u1, add2.y) annotation (Line(points={{-2,-6},{-10,-6},{-10,-20},{-18, -20}}, color={0,0,127})); - annotation (defaultComponentName = "PIDIntegralTime", + annotation (defaultComponentName = "PIDIntTim", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-100,-100},{100,100}}, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo index c9225aa79c0..b0e4e78e5f2 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo @@ -94,7 +94,7 @@ equation {48,-44}}, color={0,0,127})); connect(sub.y, mul3.u2) annotation (Line(points={{72,-50},{80,-50},{80,-22},{ 10,-22},{10,-6},{18,-6}}, color={0,0,127})); - annotation (defaultComponentName = "PIGain", + annotation (defaultComponentName = "PIGai", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-100,-100},{100,100}}, @@ -131,7 +131,7 @@ Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PI

                                References

                                -Garpinger, Olof, Tore Hägglund, and Karl Johan Åström (2014) +Garpinger, Olof, Tore Hägglund, and Karl Johan Åström (2014) \"Performance and robustness trade-offs in PID control.\" Journal of Process Control 24.5 (2014): 568-577.

                                diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo index 84ecf588ad1..a564962b2cf 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo @@ -91,7 +91,7 @@ equation -88,24},{-88,16},{-82,16}}, color={0,0,127})); connect(mul4.y, div.u1) annotation (Line(points={{-58,10},{-4,10},{-4,76},{18, 76}}, color={0,0,127})); - annotation (defaultComponentName = "PIIntegralTime", + annotation (defaultComponentName = "PIIntTim", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-100,-100},{100,100}}, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo index 794bbb3753d..af1823d98fc 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo @@ -3,190 +3,190 @@ model PI "Test model for PI" Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PI PI "Calculate the parameters for a PI controller" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable ReferenceData(table=[0,1,0.5,0.3,0.343,0.469; - 0.002,1.002,0.501,0.301,0.342,0.47; 0.004,1.004,0.502,0.301,0.341,0.471; - 0.006,1.006,0.503,0.302,0.341,0.472; 0.008,1.008,0.504,0.302,0.34,0.473; - 0.01,1.01,0.505,0.303,0.339,0.473; 0.012,1.012,0.506,0.304,0.339,0.474; - 0.014,1.014,0.507,0.304,0.338,0.475; 0.016,1.016,0.508,0.305,0.337, - 0.476; 0.018,1.018,0.509,0.305,0.337,0.477; 0.02,1.02,0.51,0.306,0.336, - 0.478; 0.022,1.022,0.511,0.307,0.335,0.479; 0.024,1.024,0.512,0.307, - 0.335,0.48; 0.026,1.026,0.513,0.308,0.334,0.481; 0.028,1.028,0.514, - 0.308,0.333,0.482; 0.03,1.03,0.515,0.309,0.333,0.483; 0.032,1.032,0.516, - 0.31,0.332,0.484; 0.034,1.034,0.517,0.31,0.331,0.485; 0.036,1.036,0.518, - 0.311,0.331,0.486; 0.038,1.038,0.519,0.311,0.33,0.487; 0.04,1.04,0.52, - 0.312,0.33,0.488; 0.042,1.042,0.521,0.313,0.329,0.488; 0.044,1.044, - 0.522,0.313,0.328,0.489; 0.046,1.046,0.523,0.314,0.328,0.49; 0.048, - 1.048,0.524,0.314,0.327,0.491; 0.05,1.05,0.525,0.315,0.326,0.492; 0.052, - 1.052,0.526,0.316,0.326,0.493; 0.054,1.054,0.527,0.316,0.325,0.494; - 0.056,1.056,0.528,0.317,0.325,0.495; 0.058,1.058,0.529,0.317,0.324, - 0.496; 0.06,1.06,0.53,0.318,0.323,0.497; 0.062,1.062,0.531,0.319,0.323, - 0.498; 0.064,1.064,0.532,0.319,0.322,0.499; 0.066,1.066,0.533,0.32, - 0.321,0.5; 0.068,1.068,0.534,0.32,0.321,0.501; 0.07,1.07,0.535,0.321, - 0.32,0.502; 0.072,1.072,0.536,0.322,0.32,0.503; 0.074,1.074,0.537,0.322, - 0.319,0.503; 0.076,1.076,0.538,0.323,0.319,0.504; 0.078,1.078,0.539, - 0.323,0.318,0.505; 0.08,1.08,0.54,0.324,0.317,0.506; 0.082,1.082,0.541, - 0.325,0.317,0.507; 0.084,1.084,0.542,0.325,0.316,0.508; 0.086,1.086, - 0.543,0.326,0.316,0.509; 0.088,1.088,0.544,0.326,0.315,0.51; 0.09,1.09, - 0.545,0.327,0.314,0.511; 0.092,1.092,0.546,0.328,0.314,0.512; 0.094, - 1.094,0.547,0.328,0.313,0.513; 0.096,1.096,0.548,0.329,0.313,0.514; - 0.098,1.098,0.549,0.329,0.312,0.515; 0.1,1.1,0.55,0.33,0.312,0.516; - 0.102,1.102,0.551,0.331,0.311,0.517; 0.104,1.104,0.552,0.331,0.31,0.518; - 0.106,1.106,0.553,0.332,0.31,0.518; 0.108,1.108,0.554,0.332,0.309,0.519; - 0.11,1.11,0.555,0.333,0.309,0.52; 0.112,1.112,0.556,0.334,0.308,0.521; - 0.114,1.114,0.557,0.334,0.308,0.522; 0.116,1.116,0.558,0.335,0.307, - 0.523; 0.118,1.118,0.559,0.335,0.307,0.524; 0.12,1.12,0.56,0.336,0.306, - 0.525; 0.122,1.122,0.561,0.337,0.305,0.526; 0.124,1.124,0.562,0.337, - 0.305,0.527; 0.126,1.126,0.563,0.338,0.304,0.528; 0.128,1.128,0.564, - 0.338,0.304,0.529; 0.13,1.13,0.565,0.339,0.303,0.53; 0.132,1.132,0.566, - 0.34,0.303,0.531; 0.134,1.134,0.567,0.34,0.302,0.532; 0.136,1.136,0.568, - 0.341,0.302,0.533; 0.138,1.138,0.569,0.341,0.301,0.534; 0.14,1.14,0.57, - 0.342,0.301,0.534; 0.142,1.142,0.571,0.343,0.3,0.535; 0.144,1.144,0.572, - 0.343,0.3,0.536; 0.146,1.146,0.573,0.344,0.299,0.537; 0.148,1.148,0.574, - 0.344,0.299,0.538; 0.15,1.15,0.575,0.345,0.298,0.539; 0.152,1.152,0.576, - 0.346,0.297,0.54; 0.154,1.154,0.577,0.346,0.297,0.541; 0.156,1.156, - 0.578,0.347,0.296,0.542; 0.158,1.158,0.579,0.347,0.296,0.543; 0.16,1.16, - 0.58,0.348,0.295,0.544; 0.162,1.162,0.581,0.349,0.295,0.545; 0.164, - 1.164,0.582,0.349,0.294,0.546; 0.166,1.166,0.583,0.35,0.294,0.547; - 0.168,1.168,0.584,0.35,0.293,0.548; 0.17,1.17,0.585,0.351,0.293,0.549; - 0.172,1.172,0.586,0.352,0.292,0.549; 0.174,1.174,0.587,0.352,0.292,0.55; - 0.176,1.176,0.588,0.353,0.291,0.551; 0.178,1.178,0.589,0.353,0.291, - 0.552; 0.18,1.18,0.59,0.354,0.29,0.553; 0.182,1.182,0.591,0.355,0.29, - 0.554; 0.184,1.184,0.592,0.355,0.289,0.555; 0.186,1.186,0.593,0.356, - 0.289,0.556; 0.188,1.188,0.594,0.356,0.288,0.557; 0.19,1.19,0.595,0.357, - 0.288,0.558; 0.192,1.192,0.596,0.358,0.288,0.559; 0.194,1.194,0.597, - 0.358,0.287,0.56; 0.196,1.196,0.598,0.359,0.287,0.561; 0.198,1.198, - 0.599,0.359,0.286,0.562; 0.2,1.2,0.6,0.36,0.286,0.563; 0.202,1.202, - 0.601,0.361,0.285,0.564; 0.204,1.204,0.602,0.361,0.285,0.564; 0.206, - 1.206,0.603,0.362,0.284,0.565; 0.208,1.208,0.604,0.362,0.284,0.566; - 0.21,1.21,0.605,0.363,0.283,0.567; 0.212,1.212,0.606,0.364,0.283,0.568; - 0.214,1.214,0.607,0.364,0.282,0.569; 0.216,1.216,0.608,0.365,0.282,0.57; - 0.218,1.218,0.609,0.365,0.281,0.571; 0.22,1.22,0.61,0.366,0.281,0.572; - 0.222,1.222,0.611,0.367,0.28,0.573; 0.224,1.224,0.612,0.367,0.28,0.574; - 0.226,1.226,0.613,0.368,0.28,0.575; 0.228,1.228,0.614,0.368,0.279,0.576; - 0.23,1.23,0.615,0.369,0.279,0.577; 0.232,1.232,0.616,0.37,0.278,0.578; - 0.234,1.234,0.617,0.37,0.278,0.579; 0.236,1.236,0.618,0.371,0.277,0.579; - 0.238,1.238,0.619,0.371,0.277,0.58; 0.24,1.24,0.62,0.372,0.276,0.581; - 0.242,1.242,0.621,0.373,0.276,0.582; 0.244,1.244,0.622,0.373,0.275, - 0.583; 0.246,1.246,0.623,0.374,0.275,0.584; 0.248,1.248,0.624,0.374, - 0.275,0.585; 0.25,1.25,0.625,0.375,0.274,0.586; 0.252,1.252,0.626,0.376, - 0.274,0.587; 0.254,1.254,0.627,0.376,0.273,0.588; 0.256,1.256,0.628, - 0.377,0.273,0.589; 0.258,1.258,0.629,0.377,0.272,0.59; 0.26,1.26,0.63, - 0.378,0.272,0.591; 0.262,1.262,0.631,0.379,0.272,0.592; 0.264,1.264, - 0.632,0.379,0.271,0.593; 0.266,1.266,0.633,0.38,0.271,0.594; 0.268, - 1.268,0.634,0.38,0.27,0.594; 0.27,1.27,0.635,0.381,0.27,0.595; 0.272, - 1.272,0.636,0.382,0.269,0.596; 0.274,1.274,0.637,0.382,0.269,0.597; - 0.276,1.276,0.638,0.383,0.269,0.598; 0.278,1.278,0.639,0.383,0.268, - 0.599; 0.28,1.28,0.64,0.384,0.268,0.6; 0.282,1.282,0.641,0.385,0.267, - 0.601; 0.284,1.284,0.642,0.385,0.267,0.602; 0.286,1.286,0.643,0.386, - 0.266,0.603; 0.288,1.288,0.644,0.386,0.266,0.604; 0.29,1.29,0.645,0.387, - 0.266,0.605; 0.292,1.292,0.646,0.388,0.265,0.606; 0.294,1.294,0.647, - 0.388,0.265,0.607; 0.296,1.296,0.648,0.389,0.264,0.608; 0.298,1.298, - 0.649,0.389,0.264,0.609; 0.3,1.3,0.65,0.39,0.264,0.609; 0.302,1.302, - 0.651,0.391,0.263,0.61; 0.304,1.304,0.652,0.391,0.263,0.611; 0.306, - 1.306,0.653,0.392,0.262,0.612; 0.308,1.308,0.654,0.392,0.262,0.613; - 0.31,1.31,0.655,0.393,0.262,0.614; 0.312,1.312,0.656,0.394,0.261,0.615; - 0.314,1.314,0.657,0.394,0.261,0.616; 0.316,1.316,0.658,0.395,0.26,0.617; - 0.318,1.318,0.659,0.395,0.26,0.618; 0.32,1.32,0.66,0.396,0.26,0.619; - 0.322,1.322,0.661,0.397,0.259,0.62; 0.324,1.324,0.662,0.397,0.259,0.621; - 0.326,1.326,0.663,0.398,0.258,0.622; 0.328,1.328,0.664,0.398,0.258, - 0.623; 0.33,1.33,0.665,0.399,0.258,0.624; 0.332,1.332,0.666,0.4,0.257, - 0.624; 0.334,1.334,0.667,0.4,0.257,0.625; 0.336,1.336,0.668,0.401,0.257, - 0.626; 0.338,1.338,0.669,0.401,0.256,0.627; 0.34,1.34,0.67,0.402,0.256, - 0.628; 0.342,1.342,0.671,0.403,0.255,0.629; 0.344,1.344,0.672,0.403, - 0.255,0.63; 0.346,1.346,0.673,0.404,0.255,0.631; 0.348,1.348,0.674, - 0.404,0.254,0.632; 0.35,1.35,0.675,0.405,0.254,0.633; 0.352,1.352,0.676, - 0.406,0.253,0.634; 0.354,1.354,0.677,0.406,0.253,0.635; 0.356,1.356, - 0.678,0.407,0.253,0.636; 0.358,1.358,0.679,0.407,0.252,0.637; 0.36,1.36, - 0.68,0.408,0.252,0.638; 0.362,1.362,0.681,0.409,0.252,0.639; 0.364, - 1.364,0.682,0.409,0.251,0.639; 0.366,1.366,0.683,0.41,0.251,0.64; 0.368, - 1.368,0.684,0.41,0.251,0.641; 0.37,1.37,0.685,0.411,0.25,0.642; 0.372, - 1.372,0.686,0.412,0.25,0.643; 0.374,1.374,0.687,0.412,0.249,0.644; - 0.376,1.376,0.688,0.413,0.249,0.645; 0.378,1.378,0.689,0.413,0.249, - 0.646; 0.38,1.38,0.69,0.414,0.248,0.647; 0.382,1.382,0.691,0.415,0.248, - 0.648; 0.384,1.384,0.692,0.415,0.248,0.649; 0.386,1.386,0.693,0.416, - 0.247,0.65; 0.388,1.388,0.694,0.416,0.247,0.651; 0.39,1.39,0.695,0.417, - 0.247,0.652; 0.392,1.392,0.696,0.418,0.246,0.653; 0.394,1.394,0.697, - 0.418,0.246,0.654; 0.396,1.396,0.698,0.419,0.245,0.654; 0.398,1.398, - 0.699,0.419,0.245,0.655; 0.4,1.4,0.7,0.42,0.245,0.656; 0.402,1.402, - 0.701,0.421,0.244,0.657; 0.404,1.404,0.702,0.421,0.244,0.658; 0.406, - 1.406,0.703,0.422,0.244,0.659; 0.408,1.408,0.704,0.422,0.243,0.66; 0.41, - 1.41,0.705,0.423,0.243,0.661; 0.412,1.412,0.706,0.424,0.243,0.662; - 0.414,1.414,0.707,0.424,0.242,0.663; 0.416,1.416,0.708,0.425,0.242, - 0.664; 0.418,1.418,0.709,0.425,0.242,0.665; 0.42,1.42,0.71,0.426,0.241, - 0.666; 0.422,1.422,0.711,0.427,0.241,0.667; 0.424,1.424,0.712,0.427, - 0.241,0.668; 0.426,1.426,0.713,0.428,0.24,0.669; 0.428,1.428,0.714, - 0.428,0.24,0.669; 0.43,1.43,0.715,0.429,0.24,0.67; 0.432,1.432,0.716, - 0.43,0.239,0.671; 0.434,1.434,0.717,0.43,0.239,0.672; 0.436,1.436,0.718, - 0.431,0.239,0.673; 0.438,1.438,0.719,0.431,0.238,0.674; 0.44,1.44,0.72, - 0.432,0.238,0.675; 0.442,1.442,0.721,0.433,0.238,0.676; 0.444,1.444, - 0.722,0.433,0.237,0.677; 0.446,1.446,0.723,0.434,0.237,0.678; 0.448, - 1.448,0.724,0.434,0.237,0.679; 0.45,1.45,0.725,0.435,0.236,0.68; 0.452, - 1.452,0.726,0.436,0.236,0.681; 0.454,1.454,0.727,0.436,0.236,0.682; - 0.456,1.456,0.728,0.437,0.235,0.683; 0.458,1.458,0.729,0.437,0.235, - 0.684; 0.46,1.46,0.73,0.438,0.235,0.684; 0.462,1.462,0.731,0.439,0.234, - 0.685; 0.464,1.464,0.732,0.439,0.234,0.686; 0.466,1.466,0.733,0.44, - 0.234,0.687; 0.468,1.468,0.734,0.44,0.233,0.688; 0.47,1.47,0.735,0.441, - 0.233,0.689; 0.472,1.472,0.736,0.442,0.233,0.69; 0.474,1.474,0.737, - 0.442,0.233,0.691; 0.476,1.476,0.738,0.443,0.232,0.692; 0.478,1.478, - 0.739,0.443,0.232,0.693; 0.48,1.48,0.74,0.444,0.232,0.694; 0.482,1.482, - 0.741,0.445,0.231,0.695; 0.484,1.484,0.742,0.445,0.231,0.696; 0.486, - 1.486,0.743,0.446,0.231,0.697; 0.488,1.488,0.744,0.446,0.23,0.698; 0.49, - 1.49,0.745,0.447,0.23,0.699; 0.492,1.492,0.746,0.448,0.23,0.699; 0.494, - 1.494,0.747,0.448,0.229,0.7; 0.496,1.496,0.748,0.449,0.229,0.701; 0.498, - 1.498,0.749,0.449,0.229,0.702; 0.5,1.5,0.75,0.45,0.228,0.703; 0.502, - 1.502,0.751,0.451,0.228,0.704; 0.504,1.504,0.752,0.451,0.228,0.705; - 0.506,1.506,0.753,0.452,0.228,0.706; 0.508,1.508,0.754,0.452,0.227, - 0.707; 0.51,1.51,0.755,0.453,0.227,0.708; 0.512,1.512,0.756,0.454,0.227, - 0.709; 0.514,1.514,0.757,0.454,0.226,0.71; 0.516,1.516,0.758,0.455, - 0.226,0.711; 0.518,1.518,0.759,0.455,0.226,0.712; 0.52,1.52,0.76,0.456, - 0.225,0.713; 0.522,1.522,0.761,0.457,0.225,0.714; 0.524,1.524,0.762, - 0.457,0.225,0.714; 0.526,1.526,0.763,0.458,0.225,0.715; 0.528,1.528, - 0.764,0.458,0.224,0.716; 0.53,1.53,0.765,0.459,0.224,0.717; 0.532,1.532, - 0.766,0.46,0.224,0.718; 0.534,1.534,0.767,0.46,0.223,0.719; 0.536,1.536, - 0.768,0.461,0.223,0.72; 0.538,1.538,0.769,0.461,0.223,0.721; 0.54,1.54, - 0.77,0.462,0.223,0.722; 0.542,1.542,0.771,0.463,0.222,0.723; 0.544, - 1.544,0.772,0.463,0.222,0.724; 0.546,1.546,0.773,0.464,0.222,0.725; - 0.548,1.548,0.774,0.464,0.221,0.726; 0.55,1.55,0.775,0.465,0.221,0.727; - 0.552,1.552,0.776,0.466,0.221,0.728; 0.554,1.554,0.777,0.466,0.221, - 0.729; 0.556,1.556,0.778,0.467,0.22,0.729; 0.558,1.558,0.779,0.467,0.22, - 0.73; 0.56,1.56,0.78,0.468,0.22,0.731; 0.562,1.562,0.781,0.469,0.219, - 0.732; 0.564,1.564,0.782,0.469,0.219,0.733; 0.566,1.566,0.783,0.47, - 0.219,0.734; 0.568,1.568,0.784,0.47,0.219,0.735; 0.57,1.57,0.785,0.471, - 0.218,0.736; 0.572,1.572,0.786,0.472,0.218,0.737; 0.574,1.574,0.787, - 0.472,0.218,0.738; 0.576,1.576,0.788,0.473,0.217,0.739; 0.578,1.578, - 0.789,0.473,0.217,0.74; 0.58,1.58,0.79,0.474,0.217,0.741; 0.582,1.582, - 0.791,0.475,0.217,0.742; 0.584,1.584,0.792,0.475,0.216,0.743; 0.586, - 1.586,0.793,0.476,0.216,0.744; 0.588,1.588,0.794,0.476,0.216,0.744; - 0.59,1.59,0.795,0.477,0.216,0.745; 0.592,1.592,0.796,0.478,0.215,0.746; - 0.594,1.594,0.797,0.478,0.215,0.747; 0.596,1.596,0.798,0.479,0.215, - 0.748; 0.598,1.598,0.799,0.479,0.214,0.749; 0.6,1.6,0.8,0.48,0.214,0.75; - 0.602,1.602,0.801,0.481,0.214,0.751; 0.604,1.604,0.802,0.481,0.214, - 0.752; 0.606,1.606,0.803,0.482,0.213,0.753; 0.608,1.608,0.804,0.482, - 0.213,0.754; 0.61,1.61,0.805,0.483,0.213,0.755; 0.612,1.612,0.806,0.484, - 0.213,0.756; 0.614,1.614,0.807,0.484,0.212,0.757; 0.616,1.616,0.808, - 0.485,0.212,0.758; 0.618,1.618,0.809,0.485,0.212,0.759; 0.62,1.62,0.81, - 0.486,0.212,0.759; 0.622,1.622,0.811,0.487,0.211,0.76; 0.624,1.624, - 0.812,0.487,0.211,0.761; 0.626,1.626,0.813,0.488,0.211,0.762; 0.628, - 1.628,0.814,0.488,0.211,0.763; 0.63,1.63,0.815,0.489,0.21,0.764; 0.632, - 1.632,0.816,0.49,0.21,0.765; 0.634,1.634,0.817,0.49,0.21,0.766; 0.636, - 1.636,0.818,0.491,0.209,0.767; 0.638,1.638,0.819,0.491,0.209,0.768; - 0.64,1.64,0.82,0.492,0.209,0.769; 0.642,1.642,0.821,0.493,0.209,0.77; - 0.644,1.644,0.822,0.493,0.208,0.771; 0.646,1.646,0.823,0.494,0.208, - 0.772; 0.648,1.648,0.824,0.494,0.208,0.773; 0.65,1.65,0.825,0.495,0.208, - 0.774; 0.652,1.652,0.826,0.496,0.207,0.774; 0.654,1.654,0.827,0.496, - 0.207,0.775; 0.656,1.656,0.828,0.497,0.207,0.776; 0.658,1.658,0.829, - 0.497,0.207,0.777; 0.66,1.66,0.83,0.498,0.206,0.778; 0.662,1.662,0.831, - 0.499,0.206,0.779; 0.664,1.664,0.832,0.499,0.206,0.78; 0.666,1.666, - 0.833,0.5,0.206,0.781; 0.668,1.668,0.834,0.5,0.205,0.782; 0.67,1.67, - 0.835,0.501,0.205,0.783; 0.672,1.672,0.836,0.502,0.205,0.784; 0.674, - 1.674,0.837,0.502,0.205,0.785; 0.676,1.676,0.838,0.503,0.204,0.786; - 0.678,1.678,0.839,0.503,0.204,0.787; 0.68,1.68,0.84,0.504,0.204,0.788; - 0.682,1.682,0.841,0.505,0.204,0.789; 0.684,1.684,0.842,0.505,0.204, - 0.789; 0.686,1.686,0.843,0.506,0.203,0.79; 0.688,1.688,0.844,0.506, - 0.203,0.791; 0.69,1.69,0.845,0.507,0.203,0.792; 0.692,1.692,0.846,0.508, - 0.203,0.793; 0.694,1.694,0.847,0.508,0.202,0.794; 0.696,1.696,0.848, - 0.509,0.202,0.795; 0.698,1.698,0.849,0.509,0.202,0.796; 0.7,1.7,0.85, - 0.51,0.202,0.797; 0.702,1.702,0.851,0.511,0.201,0.798; 0.704,1.704, + Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable RefeDat(table=[0,1, + 0.5,0.3,0.343,0.469; 0.002,1.002,0.501,0.301,0.342,0.47; 0.004,1.004, + 0.502,0.301,0.341,0.471; 0.006,1.006,0.503,0.302,0.341,0.472; 0.008, + 1.008,0.504,0.302,0.34,0.473; 0.01,1.01,0.505,0.303,0.339,0.473; 0.012, + 1.012,0.506,0.304,0.339,0.474; 0.014,1.014,0.507,0.304,0.338,0.475; + 0.016,1.016,0.508,0.305,0.337,0.476; 0.018,1.018,0.509,0.305,0.337, + 0.477; 0.02,1.02,0.51,0.306,0.336,0.478; 0.022,1.022,0.511,0.307,0.335, + 0.479; 0.024,1.024,0.512,0.307,0.335,0.48; 0.026,1.026,0.513,0.308, + 0.334,0.481; 0.028,1.028,0.514,0.308,0.333,0.482; 0.03,1.03,0.515,0.309, + 0.333,0.483; 0.032,1.032,0.516,0.31,0.332,0.484; 0.034,1.034,0.517,0.31, + 0.331,0.485; 0.036,1.036,0.518,0.311,0.331,0.486; 0.038,1.038,0.519, + 0.311,0.33,0.487; 0.04,1.04,0.52,0.312,0.33,0.488; 0.042,1.042,0.521, + 0.313,0.329,0.488; 0.044,1.044,0.522,0.313,0.328,0.489; 0.046,1.046, + 0.523,0.314,0.328,0.49; 0.048,1.048,0.524,0.314,0.327,0.491; 0.05,1.05, + 0.525,0.315,0.326,0.492; 0.052,1.052,0.526,0.316,0.326,0.493; 0.054, + 1.054,0.527,0.316,0.325,0.494; 0.056,1.056,0.528,0.317,0.325,0.495; + 0.058,1.058,0.529,0.317,0.324,0.496; 0.06,1.06,0.53,0.318,0.323,0.497; + 0.062,1.062,0.531,0.319,0.323,0.498; 0.064,1.064,0.532,0.319,0.322, + 0.499; 0.066,1.066,0.533,0.32,0.321,0.5; 0.068,1.068,0.534,0.32,0.321, + 0.501; 0.07,1.07,0.535,0.321,0.32,0.502; 0.072,1.072,0.536,0.322,0.32, + 0.503; 0.074,1.074,0.537,0.322,0.319,0.503; 0.076,1.076,0.538,0.323, + 0.319,0.504; 0.078,1.078,0.539,0.323,0.318,0.505; 0.08,1.08,0.54,0.324, + 0.317,0.506; 0.082,1.082,0.541,0.325,0.317,0.507; 0.084,1.084,0.542, + 0.325,0.316,0.508; 0.086,1.086,0.543,0.326,0.316,0.509; 0.088,1.088, + 0.544,0.326,0.315,0.51; 0.09,1.09,0.545,0.327,0.314,0.511; 0.092,1.092, + 0.546,0.328,0.314,0.512; 0.094,1.094,0.547,0.328,0.313,0.513; 0.096, + 1.096,0.548,0.329,0.313,0.514; 0.098,1.098,0.549,0.329,0.312,0.515; 0.1, + 1.1,0.55,0.33,0.312,0.516; 0.102,1.102,0.551,0.331,0.311,0.517; 0.104, + 1.104,0.552,0.331,0.31,0.518; 0.106,1.106,0.553,0.332,0.31,0.518; 0.108, + 1.108,0.554,0.332,0.309,0.519; 0.11,1.11,0.555,0.333,0.309,0.52; 0.112, + 1.112,0.556,0.334,0.308,0.521; 0.114,1.114,0.557,0.334,0.308,0.522; + 0.116,1.116,0.558,0.335,0.307,0.523; 0.118,1.118,0.559,0.335,0.307, + 0.524; 0.12,1.12,0.56,0.336,0.306,0.525; 0.122,1.122,0.561,0.337,0.305, + 0.526; 0.124,1.124,0.562,0.337,0.305,0.527; 0.126,1.126,0.563,0.338, + 0.304,0.528; 0.128,1.128,0.564,0.338,0.304,0.529; 0.13,1.13,0.565,0.339, + 0.303,0.53; 0.132,1.132,0.566,0.34,0.303,0.531; 0.134,1.134,0.567,0.34, + 0.302,0.532; 0.136,1.136,0.568,0.341,0.302,0.533; 0.138,1.138,0.569, + 0.341,0.301,0.534; 0.14,1.14,0.57,0.342,0.301,0.534; 0.142,1.142,0.571, + 0.343,0.3,0.535; 0.144,1.144,0.572,0.343,0.3,0.536; 0.146,1.146,0.573, + 0.344,0.299,0.537; 0.148,1.148,0.574,0.344,0.299,0.538; 0.15,1.15,0.575, + 0.345,0.298,0.539; 0.152,1.152,0.576,0.346,0.297,0.54; 0.154,1.154, + 0.577,0.346,0.297,0.541; 0.156,1.156,0.578,0.347,0.296,0.542; 0.158, + 1.158,0.579,0.347,0.296,0.543; 0.16,1.16,0.58,0.348,0.295,0.544; 0.162, + 1.162,0.581,0.349,0.295,0.545; 0.164,1.164,0.582,0.349,0.294,0.546; + 0.166,1.166,0.583,0.35,0.294,0.547; 0.168,1.168,0.584,0.35,0.293,0.548; + 0.17,1.17,0.585,0.351,0.293,0.549; 0.172,1.172,0.586,0.352,0.292,0.549; + 0.174,1.174,0.587,0.352,0.292,0.55; 0.176,1.176,0.588,0.353,0.291,0.551; + 0.178,1.178,0.589,0.353,0.291,0.552; 0.18,1.18,0.59,0.354,0.29,0.553; + 0.182,1.182,0.591,0.355,0.29,0.554; 0.184,1.184,0.592,0.355,0.289,0.555; + 0.186,1.186,0.593,0.356,0.289,0.556; 0.188,1.188,0.594,0.356,0.288, + 0.557; 0.19,1.19,0.595,0.357,0.288,0.558; 0.192,1.192,0.596,0.358,0.288, + 0.559; 0.194,1.194,0.597,0.358,0.287,0.56; 0.196,1.196,0.598,0.359, + 0.287,0.561; 0.198,1.198,0.599,0.359,0.286,0.562; 0.2,1.2,0.6,0.36, + 0.286,0.563; 0.202,1.202,0.601,0.361,0.285,0.564; 0.204,1.204,0.602, + 0.361,0.285,0.564; 0.206,1.206,0.603,0.362,0.284,0.565; 0.208,1.208, + 0.604,0.362,0.284,0.566; 0.21,1.21,0.605,0.363,0.283,0.567; 0.212,1.212, + 0.606,0.364,0.283,0.568; 0.214,1.214,0.607,0.364,0.282,0.569; 0.216, + 1.216,0.608,0.365,0.282,0.57; 0.218,1.218,0.609,0.365,0.281,0.571; 0.22, + 1.22,0.61,0.366,0.281,0.572; 0.222,1.222,0.611,0.367,0.28,0.573; 0.224, + 1.224,0.612,0.367,0.28,0.574; 0.226,1.226,0.613,0.368,0.28,0.575; 0.228, + 1.228,0.614,0.368,0.279,0.576; 0.23,1.23,0.615,0.369,0.279,0.577; 0.232, + 1.232,0.616,0.37,0.278,0.578; 0.234,1.234,0.617,0.37,0.278,0.579; 0.236, + 1.236,0.618,0.371,0.277,0.579; 0.238,1.238,0.619,0.371,0.277,0.58; 0.24, + 1.24,0.62,0.372,0.276,0.581; 0.242,1.242,0.621,0.373,0.276,0.582; 0.244, + 1.244,0.622,0.373,0.275,0.583; 0.246,1.246,0.623,0.374,0.275,0.584; + 0.248,1.248,0.624,0.374,0.275,0.585; 0.25,1.25,0.625,0.375,0.274,0.586; + 0.252,1.252,0.626,0.376,0.274,0.587; 0.254,1.254,0.627,0.376,0.273, + 0.588; 0.256,1.256,0.628,0.377,0.273,0.589; 0.258,1.258,0.629,0.377, + 0.272,0.59; 0.26,1.26,0.63,0.378,0.272,0.591; 0.262,1.262,0.631,0.379, + 0.272,0.592; 0.264,1.264,0.632,0.379,0.271,0.593; 0.266,1.266,0.633, + 0.38,0.271,0.594; 0.268,1.268,0.634,0.38,0.27,0.594; 0.27,1.27,0.635, + 0.381,0.27,0.595; 0.272,1.272,0.636,0.382,0.269,0.596; 0.274,1.274, + 0.637,0.382,0.269,0.597; 0.276,1.276,0.638,0.383,0.269,0.598; 0.278, + 1.278,0.639,0.383,0.268,0.599; 0.28,1.28,0.64,0.384,0.268,0.6; 0.282, + 1.282,0.641,0.385,0.267,0.601; 0.284,1.284,0.642,0.385,0.267,0.602; + 0.286,1.286,0.643,0.386,0.266,0.603; 0.288,1.288,0.644,0.386,0.266, + 0.604; 0.29,1.29,0.645,0.387,0.266,0.605; 0.292,1.292,0.646,0.388,0.265, + 0.606; 0.294,1.294,0.647,0.388,0.265,0.607; 0.296,1.296,0.648,0.389, + 0.264,0.608; 0.298,1.298,0.649,0.389,0.264,0.609; 0.3,1.3,0.65,0.39, + 0.264,0.609; 0.302,1.302,0.651,0.391,0.263,0.61; 0.304,1.304,0.652, + 0.391,0.263,0.611; 0.306,1.306,0.653,0.392,0.262,0.612; 0.308,1.308, + 0.654,0.392,0.262,0.613; 0.31,1.31,0.655,0.393,0.262,0.614; 0.312,1.312, + 0.656,0.394,0.261,0.615; 0.314,1.314,0.657,0.394,0.261,0.616; 0.316, + 1.316,0.658,0.395,0.26,0.617; 0.318,1.318,0.659,0.395,0.26,0.618; 0.32, + 1.32,0.66,0.396,0.26,0.619; 0.322,1.322,0.661,0.397,0.259,0.62; 0.324, + 1.324,0.662,0.397,0.259,0.621; 0.326,1.326,0.663,0.398,0.258,0.622; + 0.328,1.328,0.664,0.398,0.258,0.623; 0.33,1.33,0.665,0.399,0.258,0.624; + 0.332,1.332,0.666,0.4,0.257,0.624; 0.334,1.334,0.667,0.4,0.257,0.625; + 0.336,1.336,0.668,0.401,0.257,0.626; 0.338,1.338,0.669,0.401,0.256, + 0.627; 0.34,1.34,0.67,0.402,0.256,0.628; 0.342,1.342,0.671,0.403,0.255, + 0.629; 0.344,1.344,0.672,0.403,0.255,0.63; 0.346,1.346,0.673,0.404, + 0.255,0.631; 0.348,1.348,0.674,0.404,0.254,0.632; 0.35,1.35,0.675,0.405, + 0.254,0.633; 0.352,1.352,0.676,0.406,0.253,0.634; 0.354,1.354,0.677, + 0.406,0.253,0.635; 0.356,1.356,0.678,0.407,0.253,0.636; 0.358,1.358, + 0.679,0.407,0.252,0.637; 0.36,1.36,0.68,0.408,0.252,0.638; 0.362,1.362, + 0.681,0.409,0.252,0.639; 0.364,1.364,0.682,0.409,0.251,0.639; 0.366, + 1.366,0.683,0.41,0.251,0.64; 0.368,1.368,0.684,0.41,0.251,0.641; 0.37, + 1.37,0.685,0.411,0.25,0.642; 0.372,1.372,0.686,0.412,0.25,0.643; 0.374, + 1.374,0.687,0.412,0.249,0.644; 0.376,1.376,0.688,0.413,0.249,0.645; + 0.378,1.378,0.689,0.413,0.249,0.646; 0.38,1.38,0.69,0.414,0.248,0.647; + 0.382,1.382,0.691,0.415,0.248,0.648; 0.384,1.384,0.692,0.415,0.248, + 0.649; 0.386,1.386,0.693,0.416,0.247,0.65; 0.388,1.388,0.694,0.416, + 0.247,0.651; 0.39,1.39,0.695,0.417,0.247,0.652; 0.392,1.392,0.696,0.418, + 0.246,0.653; 0.394,1.394,0.697,0.418,0.246,0.654; 0.396,1.396,0.698, + 0.419,0.245,0.654; 0.398,1.398,0.699,0.419,0.245,0.655; 0.4,1.4,0.7, + 0.42,0.245,0.656; 0.402,1.402,0.701,0.421,0.244,0.657; 0.404,1.404, + 0.702,0.421,0.244,0.658; 0.406,1.406,0.703,0.422,0.244,0.659; 0.408, + 1.408,0.704,0.422,0.243,0.66; 0.41,1.41,0.705,0.423,0.243,0.661; 0.412, + 1.412,0.706,0.424,0.243,0.662; 0.414,1.414,0.707,0.424,0.242,0.663; + 0.416,1.416,0.708,0.425,0.242,0.664; 0.418,1.418,0.709,0.425,0.242, + 0.665; 0.42,1.42,0.71,0.426,0.241,0.666; 0.422,1.422,0.711,0.427,0.241, + 0.667; 0.424,1.424,0.712,0.427,0.241,0.668; 0.426,1.426,0.713,0.428, + 0.24,0.669; 0.428,1.428,0.714,0.428,0.24,0.669; 0.43,1.43,0.715,0.429, + 0.24,0.67; 0.432,1.432,0.716,0.43,0.239,0.671; 0.434,1.434,0.717,0.43, + 0.239,0.672; 0.436,1.436,0.718,0.431,0.239,0.673; 0.438,1.438,0.719, + 0.431,0.238,0.674; 0.44,1.44,0.72,0.432,0.238,0.675; 0.442,1.442,0.721, + 0.433,0.238,0.676; 0.444,1.444,0.722,0.433,0.237,0.677; 0.446,1.446, + 0.723,0.434,0.237,0.678; 0.448,1.448,0.724,0.434,0.237,0.679; 0.45,1.45, + 0.725,0.435,0.236,0.68; 0.452,1.452,0.726,0.436,0.236,0.681; 0.454, + 1.454,0.727,0.436,0.236,0.682; 0.456,1.456,0.728,0.437,0.235,0.683; + 0.458,1.458,0.729,0.437,0.235,0.684; 0.46,1.46,0.73,0.438,0.235,0.684; + 0.462,1.462,0.731,0.439,0.234,0.685; 0.464,1.464,0.732,0.439,0.234, + 0.686; 0.466,1.466,0.733,0.44,0.234,0.687; 0.468,1.468,0.734,0.44,0.233, + 0.688; 0.47,1.47,0.735,0.441,0.233,0.689; 0.472,1.472,0.736,0.442,0.233, + 0.69; 0.474,1.474,0.737,0.442,0.233,0.691; 0.476,1.476,0.738,0.443, + 0.232,0.692; 0.478,1.478,0.739,0.443,0.232,0.693; 0.48,1.48,0.74,0.444, + 0.232,0.694; 0.482,1.482,0.741,0.445,0.231,0.695; 0.484,1.484,0.742, + 0.445,0.231,0.696; 0.486,1.486,0.743,0.446,0.231,0.697; 0.488,1.488, + 0.744,0.446,0.23,0.698; 0.49,1.49,0.745,0.447,0.23,0.699; 0.492,1.492, + 0.746,0.448,0.23,0.699; 0.494,1.494,0.747,0.448,0.229,0.7; 0.496,1.496, + 0.748,0.449,0.229,0.701; 0.498,1.498,0.749,0.449,0.229,0.702; 0.5,1.5, + 0.75,0.45,0.228,0.703; 0.502,1.502,0.751,0.451,0.228,0.704; 0.504,1.504, + 0.752,0.451,0.228,0.705; 0.506,1.506,0.753,0.452,0.228,0.706; 0.508, + 1.508,0.754,0.452,0.227,0.707; 0.51,1.51,0.755,0.453,0.227,0.708; 0.512, + 1.512,0.756,0.454,0.227,0.709; 0.514,1.514,0.757,0.454,0.226,0.71; + 0.516,1.516,0.758,0.455,0.226,0.711; 0.518,1.518,0.759,0.455,0.226, + 0.712; 0.52,1.52,0.76,0.456,0.225,0.713; 0.522,1.522,0.761,0.457,0.225, + 0.714; 0.524,1.524,0.762,0.457,0.225,0.714; 0.526,1.526,0.763,0.458, + 0.225,0.715; 0.528,1.528,0.764,0.458,0.224,0.716; 0.53,1.53,0.765,0.459, + 0.224,0.717; 0.532,1.532,0.766,0.46,0.224,0.718; 0.534,1.534,0.767,0.46, + 0.223,0.719; 0.536,1.536,0.768,0.461,0.223,0.72; 0.538,1.538,0.769, + 0.461,0.223,0.721; 0.54,1.54,0.77,0.462,0.223,0.722; 0.542,1.542,0.771, + 0.463,0.222,0.723; 0.544,1.544,0.772,0.463,0.222,0.724; 0.546,1.546, + 0.773,0.464,0.222,0.725; 0.548,1.548,0.774,0.464,0.221,0.726; 0.55,1.55, + 0.775,0.465,0.221,0.727; 0.552,1.552,0.776,0.466,0.221,0.728; 0.554, + 1.554,0.777,0.466,0.221,0.729; 0.556,1.556,0.778,0.467,0.22,0.729; + 0.558,1.558,0.779,0.467,0.22,0.73; 0.56,1.56,0.78,0.468,0.22,0.731; + 0.562,1.562,0.781,0.469,0.219,0.732; 0.564,1.564,0.782,0.469,0.219, + 0.733; 0.566,1.566,0.783,0.47,0.219,0.734; 0.568,1.568,0.784,0.47,0.219, + 0.735; 0.57,1.57,0.785,0.471,0.218,0.736; 0.572,1.572,0.786,0.472,0.218, + 0.737; 0.574,1.574,0.787,0.472,0.218,0.738; 0.576,1.576,0.788,0.473, + 0.217,0.739; 0.578,1.578,0.789,0.473,0.217,0.74; 0.58,1.58,0.79,0.474, + 0.217,0.741; 0.582,1.582,0.791,0.475,0.217,0.742; 0.584,1.584,0.792, + 0.475,0.216,0.743; 0.586,1.586,0.793,0.476,0.216,0.744; 0.588,1.588, + 0.794,0.476,0.216,0.744; 0.59,1.59,0.795,0.477,0.216,0.745; 0.592,1.592, + 0.796,0.478,0.215,0.746; 0.594,1.594,0.797,0.478,0.215,0.747; 0.596, + 1.596,0.798,0.479,0.215,0.748; 0.598,1.598,0.799,0.479,0.214,0.749; 0.6, + 1.6,0.8,0.48,0.214,0.75; 0.602,1.602,0.801,0.481,0.214,0.751; 0.604, + 1.604,0.802,0.481,0.214,0.752; 0.606,1.606,0.803,0.482,0.213,0.753; + 0.608,1.608,0.804,0.482,0.213,0.754; 0.61,1.61,0.805,0.483,0.213,0.755; + 0.612,1.612,0.806,0.484,0.213,0.756; 0.614,1.614,0.807,0.484,0.212, + 0.757; 0.616,1.616,0.808,0.485,0.212,0.758; 0.618,1.618,0.809,0.485, + 0.212,0.759; 0.62,1.62,0.81,0.486,0.212,0.759; 0.622,1.622,0.811,0.487, + 0.211,0.76; 0.624,1.624,0.812,0.487,0.211,0.761; 0.626,1.626,0.813, + 0.488,0.211,0.762; 0.628,1.628,0.814,0.488,0.211,0.763; 0.63,1.63,0.815, + 0.489,0.21,0.764; 0.632,1.632,0.816,0.49,0.21,0.765; 0.634,1.634,0.817, + 0.49,0.21,0.766; 0.636,1.636,0.818,0.491,0.209,0.767; 0.638,1.638,0.819, + 0.491,0.209,0.768; 0.64,1.64,0.82,0.492,0.209,0.769; 0.642,1.642,0.821, + 0.493,0.209,0.77; 0.644,1.644,0.822,0.493,0.208,0.771; 0.646,1.646, + 0.823,0.494,0.208,0.772; 0.648,1.648,0.824,0.494,0.208,0.773; 0.65,1.65, + 0.825,0.495,0.208,0.774; 0.652,1.652,0.826,0.496,0.207,0.774; 0.654, + 1.654,0.827,0.496,0.207,0.775; 0.656,1.656,0.828,0.497,0.207,0.776; + 0.658,1.658,0.829,0.497,0.207,0.777; 0.66,1.66,0.83,0.498,0.206,0.778; + 0.662,1.662,0.831,0.499,0.206,0.779; 0.664,1.664,0.832,0.499,0.206,0.78; + 0.666,1.666,0.833,0.5,0.206,0.781; 0.668,1.668,0.834,0.5,0.205,0.782; + 0.67,1.67,0.835,0.501,0.205,0.783; 0.672,1.672,0.836,0.502,0.205,0.784; + 0.674,1.674,0.837,0.502,0.205,0.785; 0.676,1.676,0.838,0.503,0.204, + 0.786; 0.678,1.678,0.839,0.503,0.204,0.787; 0.68,1.68,0.84,0.504,0.204, + 0.788; 0.682,1.682,0.841,0.505,0.204,0.789; 0.684,1.684,0.842,0.505, + 0.204,0.789; 0.686,1.686,0.843,0.506,0.203,0.79; 0.688,1.688,0.844, + 0.506,0.203,0.791; 0.69,1.69,0.845,0.507,0.203,0.792; 0.692,1.692,0.846, + 0.508,0.203,0.793; 0.694,1.694,0.847,0.508,0.202,0.794; 0.696,1.696, + 0.848,0.509,0.202,0.795; 0.698,1.698,0.849,0.509,0.202,0.796; 0.7,1.7, + 0.85,0.51,0.202,0.797; 0.702,1.702,0.851,0.511,0.201,0.798; 0.704,1.704, 0.852,0.511,0.201,0.799; 0.706,1.706,0.853,0.512,0.201,0.8; 0.708,1.708, 0.854,0.512,0.201,0.801; 0.71,1.71,0.855,0.513,0.2,0.802; 0.712,1.712, 0.856,0.514,0.2,0.803; 0.714,1.714,0.857,0.514,0.2,0.804; 0.716,1.716, @@ -269,12 +269,12 @@ model PI "Test model for PI" annotation (Placement(transformation(extent={{-58,-10},{-38,10}}))); equation - connect(ReferenceData.y[1],PI. kp) annotation (Line(points={{-36,0},{-20,0},{ - -20,6},{-12,6}}, color={0,0,127})); - connect(PI.T, ReferenceData.y[2]) + connect(RefeDat.y[1], PI.kp) annotation (Line(points={{-36,0},{-20,0},{-20,6}, + {-12,6}}, color={0,0,127})); + connect(PI.T, RefeDat.y[2]) annotation (Line(points={{-12,0},{-36,0}}, color={0,0,127})); - connect(PI.L, ReferenceData.y[3]) annotation (Line(points={{-12,-6},{-20,-6}, - {-20,0},{-36,0}}, color={0,0,127})); + connect(PI.L, RefeDat.y[3]) annotation (Line(points={{-12,-6},{-20,-6},{-20,0}, + {-36,0}}, color={0,0,127})); annotation ( experiment( StopTime=1.0, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo index 9645bb904de..2a0e79961fd 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo @@ -3,47 +3,47 @@ model PID "Test model for PID" Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PID PID "Calculate the parameters for a PI controller" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable ReferenceData(table=[0,1,0.5,0.3,0.95,0.446, - 0.127; 0.002,1.002,0.501,0.301,0.948,0.447,0.127; 0.004,1.004,0.502, - 0.301,0.946,0.447,0.128; 0.006,1.006,0.503,0.302,0.944,0.448,0.128; - 0.008,1.008,0.504,0.302,0.942,0.449,0.128; 0.01,1.01,0.505,0.303,0.941, - 0.45,0.128; 0.012,1.012,0.506,0.304,0.939,0.451,0.129; 0.014,1.014, - 0.507,0.304,0.937,0.452,0.129; 0.016,1.016,0.508,0.305,0.935,0.453, - 0.129; 0.018,1.018,0.509,0.305,0.933,0.454,0.129; 0.02,1.02,0.51,0.306, - 0.931,0.455,0.13; 0.022,1.022,0.511,0.307,0.93,0.456,0.13; 0.024,1.024, - 0.512,0.307,0.928,0.456,0.13; 0.026,1.026,0.513,0.308,0.926,0.457,0.13; - 0.028,1.028,0.514,0.308,0.924,0.458,0.131; 0.03,1.03,0.515,0.309,0.922, - 0.459,0.131; 0.032,1.032,0.516,0.31,0.921,0.46,0.131; 0.034,1.034,0.517, - 0.31,0.919,0.461,0.131; 0.036,1.036,0.518,0.311,0.917,0.462,0.132; - 0.038,1.038,0.519,0.311,0.915,0.463,0.132; 0.04,1.04,0.52,0.312,0.913, - 0.464,0.132; 0.042,1.042,0.521,0.313,0.912,0.464,0.132; 0.044,1.044, - 0.522,0.313,0.91,0.465,0.133; 0.046,1.046,0.523,0.314,0.908,0.466,0.133; - 0.048,1.048,0.524,0.314,0.906,0.467,0.133; 0.05,1.05,0.525,0.315,0.905, - 0.468,0.133; 0.052,1.052,0.526,0.316,0.903,0.469,0.134; 0.054,1.054, - 0.527,0.316,0.901,0.47,0.134; 0.056,1.056,0.528,0.317,0.9,0.471,0.134; - 0.058,1.058,0.529,0.317,0.898,0.472,0.134; 0.06,1.06,0.53,0.318,0.896, - 0.472,0.135; 0.062,1.062,0.531,0.319,0.895,0.473,0.135; 0.064,1.064, - 0.532,0.319,0.893,0.474,0.135; 0.066,1.066,0.533,0.32,0.891,0.475,0.136; - 0.068,1.068,0.534,0.32,0.89,0.476,0.136; 0.07,1.07,0.535,0.321,0.888, - 0.477,0.136; 0.072,1.072,0.536,0.322,0.886,0.478,0.136; 0.074,1.074, - 0.537,0.322,0.885,0.479,0.137; 0.076,1.076,0.538,0.323,0.883,0.48,0.137; - 0.078,1.078,0.539,0.323,0.881,0.48,0.137; 0.08,1.08,0.54,0.324,0.88, - 0.481,0.137; 0.082,1.082,0.541,0.325,0.878,0.482,0.138; 0.084,1.084, - 0.542,0.325,0.876,0.483,0.138; 0.086,1.086,0.543,0.326,0.875,0.484, - 0.138; 0.088,1.088,0.544,0.326,0.873,0.485,0.138; 0.09,1.09,0.545,0.327, - 0.872,0.486,0.139; 0.092,1.092,0.546,0.328,0.87,0.487,0.139; 0.094, - 1.094,0.547,0.328,0.868,0.488,0.139; 0.096,1.096,0.548,0.329,0.867, - 0.489,0.139; 0.098,1.098,0.549,0.329,0.865,0.489,0.14; 0.1,1.1,0.55, - 0.33,0.864,0.49,0.14; 0.102,1.102,0.551,0.331,0.862,0.491,0.14; 0.104, - 1.104,0.552,0.331,0.861,0.492,0.14; 0.106,1.106,0.553,0.332,0.859,0.493, - 0.141; 0.108,1.108,0.554,0.332,0.857,0.494,0.141; 0.11,1.11,0.555,0.333, - 0.856,0.495,0.141; 0.112,1.112,0.556,0.334,0.854,0.496,0.141; 0.114, - 1.114,0.557,0.334,0.853,0.497,0.142; 0.116,1.116,0.558,0.335,0.851, - 0.497,0.142; 0.118,1.118,0.559,0.335,0.85,0.498,0.142; 0.12,1.12,0.56, - 0.336,0.848,0.499,0.142; 0.122,1.122,0.561,0.337,0.847,0.5,0.143; 0.124, - 1.124,0.562,0.337,0.845,0.501,0.143; 0.126,1.126,0.563,0.338,0.844, - 0.502,0.143; 0.128,1.128,0.564,0.338,0.842,0.503,0.143; 0.13,1.13,0.565, - 0.339,0.841,0.504,0.144; 0.132,1.132,0.566,0.34,0.839,0.505,0.144; + Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable RefDat(table=[0,1,0.5, + 0.3,0.95,0.446,0.127; 0.002,1.002,0.501,0.301,0.948,0.447,0.127; 0.004, + 1.004,0.502,0.301,0.946,0.447,0.128; 0.006,1.006,0.503,0.302,0.944, + 0.448,0.128; 0.008,1.008,0.504,0.302,0.942,0.449,0.128; 0.01,1.01,0.505, + 0.303,0.941,0.45,0.128; 0.012,1.012,0.506,0.304,0.939,0.451,0.129; + 0.014,1.014,0.507,0.304,0.937,0.452,0.129; 0.016,1.016,0.508,0.305, + 0.935,0.453,0.129; 0.018,1.018,0.509,0.305,0.933,0.454,0.129; 0.02,1.02, + 0.51,0.306,0.931,0.455,0.13; 0.022,1.022,0.511,0.307,0.93,0.456,0.13; + 0.024,1.024,0.512,0.307,0.928,0.456,0.13; 0.026,1.026,0.513,0.308,0.926, + 0.457,0.13; 0.028,1.028,0.514,0.308,0.924,0.458,0.131; 0.03,1.03,0.515, + 0.309,0.922,0.459,0.131; 0.032,1.032,0.516,0.31,0.921,0.46,0.131; 0.034, + 1.034,0.517,0.31,0.919,0.461,0.131; 0.036,1.036,0.518,0.311,0.917,0.462, + 0.132; 0.038,1.038,0.519,0.311,0.915,0.463,0.132; 0.04,1.04,0.52,0.312, + 0.913,0.464,0.132; 0.042,1.042,0.521,0.313,0.912,0.464,0.132; 0.044, + 1.044,0.522,0.313,0.91,0.465,0.133; 0.046,1.046,0.523,0.314,0.908,0.466, + 0.133; 0.048,1.048,0.524,0.314,0.906,0.467,0.133; 0.05,1.05,0.525,0.315, + 0.905,0.468,0.133; 0.052,1.052,0.526,0.316,0.903,0.469,0.134; 0.054, + 1.054,0.527,0.316,0.901,0.47,0.134; 0.056,1.056,0.528,0.317,0.9,0.471, + 0.134; 0.058,1.058,0.529,0.317,0.898,0.472,0.134; 0.06,1.06,0.53,0.318, + 0.896,0.472,0.135; 0.062,1.062,0.531,0.319,0.895,0.473,0.135; 0.064, + 1.064,0.532,0.319,0.893,0.474,0.135; 0.066,1.066,0.533,0.32,0.891,0.475, + 0.136; 0.068,1.068,0.534,0.32,0.89,0.476,0.136; 0.07,1.07,0.535,0.321, + 0.888,0.477,0.136; 0.072,1.072,0.536,0.322,0.886,0.478,0.136; 0.074, + 1.074,0.537,0.322,0.885,0.479,0.137; 0.076,1.076,0.538,0.323,0.883,0.48, + 0.137; 0.078,1.078,0.539,0.323,0.881,0.48,0.137; 0.08,1.08,0.54,0.324, + 0.88,0.481,0.137; 0.082,1.082,0.541,0.325,0.878,0.482,0.138; 0.084, + 1.084,0.542,0.325,0.876,0.483,0.138; 0.086,1.086,0.543,0.326,0.875, + 0.484,0.138; 0.088,1.088,0.544,0.326,0.873,0.485,0.138; 0.09,1.09,0.545, + 0.327,0.872,0.486,0.139; 0.092,1.092,0.546,0.328,0.87,0.487,0.139; + 0.094,1.094,0.547,0.328,0.868,0.488,0.139; 0.096,1.096,0.548,0.329, + 0.867,0.489,0.139; 0.098,1.098,0.549,0.329,0.865,0.489,0.14; 0.1,1.1, + 0.55,0.33,0.864,0.49,0.14; 0.102,1.102,0.551,0.331,0.862,0.491,0.14; + 0.104,1.104,0.552,0.331,0.861,0.492,0.14; 0.106,1.106,0.553,0.332,0.859, + 0.493,0.141; 0.108,1.108,0.554,0.332,0.857,0.494,0.141; 0.11,1.11,0.555, + 0.333,0.856,0.495,0.141; 0.112,1.112,0.556,0.334,0.854,0.496,0.141; + 0.114,1.114,0.557,0.334,0.853,0.497,0.142; 0.116,1.116,0.558,0.335, + 0.851,0.497,0.142; 0.118,1.118,0.559,0.335,0.85,0.498,0.142; 0.12,1.12, + 0.56,0.336,0.848,0.499,0.142; 0.122,1.122,0.561,0.337,0.847,0.5,0.143; + 0.124,1.124,0.562,0.337,0.845,0.501,0.143; 0.126,1.126,0.563,0.338, + 0.844,0.502,0.143; 0.128,1.128,0.564,0.338,0.842,0.503,0.143; 0.13,1.13, + 0.565,0.339,0.841,0.504,0.144; 0.132,1.132,0.566,0.34,0.839,0.505,0.144; 0.134,1.134,0.567,0.34,0.838,0.505,0.144; 0.136,1.136,0.568,0.341,0.836, 0.506,0.144; 0.138,1.138,0.569,0.341,0.835,0.507,0.145; 0.14,1.14,0.57, 0.342,0.833,0.508,0.145; 0.142,1.142,0.571,0.343,0.832,0.509,0.145; @@ -312,12 +312,12 @@ model PID "Test model for PID" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); equation - connect(PID.kp, ReferenceData.y[1]) annotation (Line(points={{-12,6},{-20,6}, - {-20,0},{-38,0}}, color={0,0,127})); - connect(PID.T, ReferenceData.y[2]) + connect(PID.kp, RefDat.y[1]) annotation (Line(points={{-12,6},{-20,6},{-20,0}, + {-38,0}}, color={0,0,127})); + connect(PID.T, RefDat.y[2]) annotation (Line(points={{-12,0},{-38,0}}, color={0,0,127})); - connect(PID.L, ReferenceData.y[3]) annotation (Line(points={{-12,-6},{-20,-6}, - {-20,0},{-38,0}}, color={0,0,127})); + connect(PID.L, RefDat.y[3]) annotation (Line(points={{-12,-6},{-20,-6},{-20,0}, + {-38,0}}, color={0,0,127})); annotation ( experiment( StopTime=1.0, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mo index 2e2acf0910e..1e9a38dfa71 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mo @@ -1,49 +1,49 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation; model PIDDerivativeTime "Test model for PIDDerivativeTime" Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIDDerivativeTime - PIDDerivativeTime "Calculate the integral time for a PI controller" + PIDDerTim "Calculate the integral time for a PI controller" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable ReferenceData(table=[0,1,0.5,0.3,0.95,0.446, - 0.127; 0.002,1.002,0.501,0.301,0.948,0.447,0.127; 0.004,1.004,0.502, - 0.301,0.946,0.447,0.128; 0.006,1.006,0.503,0.302,0.944,0.448,0.128; - 0.008,1.008,0.504,0.302,0.942,0.449,0.128; 0.01,1.01,0.505,0.303,0.941, - 0.45,0.128; 0.012,1.012,0.506,0.304,0.939,0.451,0.129; 0.014,1.014, - 0.507,0.304,0.937,0.452,0.129; 0.016,1.016,0.508,0.305,0.935,0.453, - 0.129; 0.018,1.018,0.509,0.305,0.933,0.454,0.129; 0.02,1.02,0.51,0.306, - 0.931,0.455,0.13; 0.022,1.022,0.511,0.307,0.93,0.456,0.13; 0.024,1.024, - 0.512,0.307,0.928,0.456,0.13; 0.026,1.026,0.513,0.308,0.926,0.457,0.13; - 0.028,1.028,0.514,0.308,0.924,0.458,0.131; 0.03,1.03,0.515,0.309,0.922, - 0.459,0.131; 0.032,1.032,0.516,0.31,0.921,0.46,0.131; 0.034,1.034,0.517, - 0.31,0.919,0.461,0.131; 0.036,1.036,0.518,0.311,0.917,0.462,0.132; - 0.038,1.038,0.519,0.311,0.915,0.463,0.132; 0.04,1.04,0.52,0.312,0.913, - 0.464,0.132; 0.042,1.042,0.521,0.313,0.912,0.464,0.132; 0.044,1.044, - 0.522,0.313,0.91,0.465,0.133; 0.046,1.046,0.523,0.314,0.908,0.466,0.133; - 0.048,1.048,0.524,0.314,0.906,0.467,0.133; 0.05,1.05,0.525,0.315,0.905, - 0.468,0.133; 0.052,1.052,0.526,0.316,0.903,0.469,0.134; 0.054,1.054, - 0.527,0.316,0.901,0.47,0.134; 0.056,1.056,0.528,0.317,0.9,0.471,0.134; - 0.058,1.058,0.529,0.317,0.898,0.472,0.134; 0.06,1.06,0.53,0.318,0.896, - 0.472,0.135; 0.062,1.062,0.531,0.319,0.895,0.473,0.135; 0.064,1.064, - 0.532,0.319,0.893,0.474,0.135; 0.066,1.066,0.533,0.32,0.891,0.475,0.136; - 0.068,1.068,0.534,0.32,0.89,0.476,0.136; 0.07,1.07,0.535,0.321,0.888, - 0.477,0.136; 0.072,1.072,0.536,0.322,0.886,0.478,0.136; 0.074,1.074, - 0.537,0.322,0.885,0.479,0.137; 0.076,1.076,0.538,0.323,0.883,0.48,0.137; - 0.078,1.078,0.539,0.323,0.881,0.48,0.137; 0.08,1.08,0.54,0.324,0.88, - 0.481,0.137; 0.082,1.082,0.541,0.325,0.878,0.482,0.138; 0.084,1.084, - 0.542,0.325,0.876,0.483,0.138; 0.086,1.086,0.543,0.326,0.875,0.484, - 0.138; 0.088,1.088,0.544,0.326,0.873,0.485,0.138; 0.09,1.09,0.545,0.327, - 0.872,0.486,0.139; 0.092,1.092,0.546,0.328,0.87,0.487,0.139; 0.094, - 1.094,0.547,0.328,0.868,0.488,0.139; 0.096,1.096,0.548,0.329,0.867, - 0.489,0.139; 0.098,1.098,0.549,0.329,0.865,0.489,0.14; 0.1,1.1,0.55, - 0.33,0.864,0.49,0.14; 0.102,1.102,0.551,0.331,0.862,0.491,0.14; 0.104, - 1.104,0.552,0.331,0.861,0.492,0.14; 0.106,1.106,0.553,0.332,0.859,0.493, - 0.141; 0.108,1.108,0.554,0.332,0.857,0.494,0.141; 0.11,1.11,0.555,0.333, - 0.856,0.495,0.141; 0.112,1.112,0.556,0.334,0.854,0.496,0.141; 0.114, - 1.114,0.557,0.334,0.853,0.497,0.142; 0.116,1.116,0.558,0.335,0.851, - 0.497,0.142; 0.118,1.118,0.559,0.335,0.85,0.498,0.142; 0.12,1.12,0.56, - 0.336,0.848,0.499,0.142; 0.122,1.122,0.561,0.337,0.847,0.5,0.143; 0.124, - 1.124,0.562,0.337,0.845,0.501,0.143; 0.126,1.126,0.563,0.338,0.844, - 0.502,0.143; 0.128,1.128,0.564,0.338,0.842,0.503,0.143; 0.13,1.13,0.565, - 0.339,0.841,0.504,0.144; 0.132,1.132,0.566,0.34,0.839,0.505,0.144; + Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable RefDat(table=[0,1,0.5, + 0.3,0.95,0.446,0.127; 0.002,1.002,0.501,0.301,0.948,0.447,0.127; 0.004, + 1.004,0.502,0.301,0.946,0.447,0.128; 0.006,1.006,0.503,0.302,0.944, + 0.448,0.128; 0.008,1.008,0.504,0.302,0.942,0.449,0.128; 0.01,1.01,0.505, + 0.303,0.941,0.45,0.128; 0.012,1.012,0.506,0.304,0.939,0.451,0.129; + 0.014,1.014,0.507,0.304,0.937,0.452,0.129; 0.016,1.016,0.508,0.305, + 0.935,0.453,0.129; 0.018,1.018,0.509,0.305,0.933,0.454,0.129; 0.02,1.02, + 0.51,0.306,0.931,0.455,0.13; 0.022,1.022,0.511,0.307,0.93,0.456,0.13; + 0.024,1.024,0.512,0.307,0.928,0.456,0.13; 0.026,1.026,0.513,0.308,0.926, + 0.457,0.13; 0.028,1.028,0.514,0.308,0.924,0.458,0.131; 0.03,1.03,0.515, + 0.309,0.922,0.459,0.131; 0.032,1.032,0.516,0.31,0.921,0.46,0.131; 0.034, + 1.034,0.517,0.31,0.919,0.461,0.131; 0.036,1.036,0.518,0.311,0.917,0.462, + 0.132; 0.038,1.038,0.519,0.311,0.915,0.463,0.132; 0.04,1.04,0.52,0.312, + 0.913,0.464,0.132; 0.042,1.042,0.521,0.313,0.912,0.464,0.132; 0.044, + 1.044,0.522,0.313,0.91,0.465,0.133; 0.046,1.046,0.523,0.314,0.908,0.466, + 0.133; 0.048,1.048,0.524,0.314,0.906,0.467,0.133; 0.05,1.05,0.525,0.315, + 0.905,0.468,0.133; 0.052,1.052,0.526,0.316,0.903,0.469,0.134; 0.054, + 1.054,0.527,0.316,0.901,0.47,0.134; 0.056,1.056,0.528,0.317,0.9,0.471, + 0.134; 0.058,1.058,0.529,0.317,0.898,0.472,0.134; 0.06,1.06,0.53,0.318, + 0.896,0.472,0.135; 0.062,1.062,0.531,0.319,0.895,0.473,0.135; 0.064, + 1.064,0.532,0.319,0.893,0.474,0.135; 0.066,1.066,0.533,0.32,0.891,0.475, + 0.136; 0.068,1.068,0.534,0.32,0.89,0.476,0.136; 0.07,1.07,0.535,0.321, + 0.888,0.477,0.136; 0.072,1.072,0.536,0.322,0.886,0.478,0.136; 0.074, + 1.074,0.537,0.322,0.885,0.479,0.137; 0.076,1.076,0.538,0.323,0.883,0.48, + 0.137; 0.078,1.078,0.539,0.323,0.881,0.48,0.137; 0.08,1.08,0.54,0.324, + 0.88,0.481,0.137; 0.082,1.082,0.541,0.325,0.878,0.482,0.138; 0.084, + 1.084,0.542,0.325,0.876,0.483,0.138; 0.086,1.086,0.543,0.326,0.875, + 0.484,0.138; 0.088,1.088,0.544,0.326,0.873,0.485,0.138; 0.09,1.09,0.545, + 0.327,0.872,0.486,0.139; 0.092,1.092,0.546,0.328,0.87,0.487,0.139; + 0.094,1.094,0.547,0.328,0.868,0.488,0.139; 0.096,1.096,0.548,0.329, + 0.867,0.489,0.139; 0.098,1.098,0.549,0.329,0.865,0.489,0.14; 0.1,1.1, + 0.55,0.33,0.864,0.49,0.14; 0.102,1.102,0.551,0.331,0.862,0.491,0.14; + 0.104,1.104,0.552,0.331,0.861,0.492,0.14; 0.106,1.106,0.553,0.332,0.859, + 0.493,0.141; 0.108,1.108,0.554,0.332,0.857,0.494,0.141; 0.11,1.11,0.555, + 0.333,0.856,0.495,0.141; 0.112,1.112,0.556,0.334,0.854,0.496,0.141; + 0.114,1.114,0.557,0.334,0.853,0.497,0.142; 0.116,1.116,0.558,0.335, + 0.851,0.497,0.142; 0.118,1.118,0.559,0.335,0.85,0.498,0.142; 0.12,1.12, + 0.56,0.336,0.848,0.499,0.142; 0.122,1.122,0.561,0.337,0.847,0.5,0.143; + 0.124,1.124,0.562,0.337,0.845,0.501,0.143; 0.126,1.126,0.563,0.338, + 0.844,0.502,0.143; 0.128,1.128,0.564,0.338,0.842,0.503,0.143; 0.13,1.13, + 0.565,0.339,0.841,0.504,0.144; 0.132,1.132,0.566,0.34,0.839,0.505,0.144; 0.134,1.134,0.567,0.34,0.838,0.505,0.144; 0.136,1.136,0.568,0.341,0.836, 0.506,0.144; 0.138,1.138,0.569,0.341,0.835,0.507,0.145; 0.14,1.14,0.57, 0.342,0.833,0.508,0.145; 0.142,1.142,0.571,0.343,0.832,0.509,0.145; @@ -312,10 +312,10 @@ model PIDDerivativeTime "Test model for PIDDerivativeTime" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); equation - connect(PIDDerivativeTime.T, ReferenceData.y[2]) annotation (Line(points={{ - -12,6},{-20,6},{-20,0},{-38,0}}, color={0,0,127})); - connect(PIDDerivativeTime.L, ReferenceData.y[3]) annotation (Line(points={{ - -12,-6},{-20,-6},{-20,0},{-38,0}}, color={0,0,127})); + connect(PIDDerTim.T, RefDat.y[2]) annotation (Line(points={{-12,6},{-20,6},{-20, + 0},{-38,0}}, color={0,0,127})); + connect(PIDDerTim.L, RefDat.y[3]) annotation (Line(points={{-12,-6},{-20,-6}, + {-20,0},{-38,0}}, color={0,0,127})); annotation ( experiment( StopTime=1.0, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mo index c2b6a978c37..4351e9525df 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mo @@ -1,49 +1,49 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation; model PIDGain "Test model for PIDGain" - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIDGain PIDGain + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIDGain PIDGai "Calculate the control gain for a PID controller" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable ReferenceData(table=[0,1,0.5,0.3,0.95,0.446, - 0.127; 0.002,1.002,0.501,0.301,0.948,0.447,0.127; 0.004,1.004,0.502, - 0.301,0.946,0.447,0.128; 0.006,1.006,0.503,0.302,0.944,0.448,0.128; - 0.008,1.008,0.504,0.302,0.942,0.449,0.128; 0.01,1.01,0.505,0.303,0.941, - 0.45,0.128; 0.012,1.012,0.506,0.304,0.939,0.451,0.129; 0.014,1.014, - 0.507,0.304,0.937,0.452,0.129; 0.016,1.016,0.508,0.305,0.935,0.453, - 0.129; 0.018,1.018,0.509,0.305,0.933,0.454,0.129; 0.02,1.02,0.51,0.306, - 0.931,0.455,0.13; 0.022,1.022,0.511,0.307,0.93,0.456,0.13; 0.024,1.024, - 0.512,0.307,0.928,0.456,0.13; 0.026,1.026,0.513,0.308,0.926,0.457,0.13; - 0.028,1.028,0.514,0.308,0.924,0.458,0.131; 0.03,1.03,0.515,0.309,0.922, - 0.459,0.131; 0.032,1.032,0.516,0.31,0.921,0.46,0.131; 0.034,1.034,0.517, - 0.31,0.919,0.461,0.131; 0.036,1.036,0.518,0.311,0.917,0.462,0.132; - 0.038,1.038,0.519,0.311,0.915,0.463,0.132; 0.04,1.04,0.52,0.312,0.913, - 0.464,0.132; 0.042,1.042,0.521,0.313,0.912,0.464,0.132; 0.044,1.044, - 0.522,0.313,0.91,0.465,0.133; 0.046,1.046,0.523,0.314,0.908,0.466,0.133; - 0.048,1.048,0.524,0.314,0.906,0.467,0.133; 0.05,1.05,0.525,0.315,0.905, - 0.468,0.133; 0.052,1.052,0.526,0.316,0.903,0.469,0.134; 0.054,1.054, - 0.527,0.316,0.901,0.47,0.134; 0.056,1.056,0.528,0.317,0.9,0.471,0.134; - 0.058,1.058,0.529,0.317,0.898,0.472,0.134; 0.06,1.06,0.53,0.318,0.896, - 0.472,0.135; 0.062,1.062,0.531,0.319,0.895,0.473,0.135; 0.064,1.064, - 0.532,0.319,0.893,0.474,0.135; 0.066,1.066,0.533,0.32,0.891,0.475,0.136; - 0.068,1.068,0.534,0.32,0.89,0.476,0.136; 0.07,1.07,0.535,0.321,0.888, - 0.477,0.136; 0.072,1.072,0.536,0.322,0.886,0.478,0.136; 0.074,1.074, - 0.537,0.322,0.885,0.479,0.137; 0.076,1.076,0.538,0.323,0.883,0.48,0.137; - 0.078,1.078,0.539,0.323,0.881,0.48,0.137; 0.08,1.08,0.54,0.324,0.88, - 0.481,0.137; 0.082,1.082,0.541,0.325,0.878,0.482,0.138; 0.084,1.084, - 0.542,0.325,0.876,0.483,0.138; 0.086,1.086,0.543,0.326,0.875,0.484, - 0.138; 0.088,1.088,0.544,0.326,0.873,0.485,0.138; 0.09,1.09,0.545,0.327, - 0.872,0.486,0.139; 0.092,1.092,0.546,0.328,0.87,0.487,0.139; 0.094, - 1.094,0.547,0.328,0.868,0.488,0.139; 0.096,1.096,0.548,0.329,0.867, - 0.489,0.139; 0.098,1.098,0.549,0.329,0.865,0.489,0.14; 0.1,1.1,0.55, - 0.33,0.864,0.49,0.14; 0.102,1.102,0.551,0.331,0.862,0.491,0.14; 0.104, - 1.104,0.552,0.331,0.861,0.492,0.14; 0.106,1.106,0.553,0.332,0.859,0.493, - 0.141; 0.108,1.108,0.554,0.332,0.857,0.494,0.141; 0.11,1.11,0.555,0.333, - 0.856,0.495,0.141; 0.112,1.112,0.556,0.334,0.854,0.496,0.141; 0.114, - 1.114,0.557,0.334,0.853,0.497,0.142; 0.116,1.116,0.558,0.335,0.851, - 0.497,0.142; 0.118,1.118,0.559,0.335,0.85,0.498,0.142; 0.12,1.12,0.56, - 0.336,0.848,0.499,0.142; 0.122,1.122,0.561,0.337,0.847,0.5,0.143; 0.124, - 1.124,0.562,0.337,0.845,0.501,0.143; 0.126,1.126,0.563,0.338,0.844, - 0.502,0.143; 0.128,1.128,0.564,0.338,0.842,0.503,0.143; 0.13,1.13,0.565, - 0.339,0.841,0.504,0.144; 0.132,1.132,0.566,0.34,0.839,0.505,0.144; + Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable RefDat(table=[0,1,0.5, + 0.3,0.95,0.446,0.127; 0.002,1.002,0.501,0.301,0.948,0.447,0.127; 0.004, + 1.004,0.502,0.301,0.946,0.447,0.128; 0.006,1.006,0.503,0.302,0.944, + 0.448,0.128; 0.008,1.008,0.504,0.302,0.942,0.449,0.128; 0.01,1.01,0.505, + 0.303,0.941,0.45,0.128; 0.012,1.012,0.506,0.304,0.939,0.451,0.129; + 0.014,1.014,0.507,0.304,0.937,0.452,0.129; 0.016,1.016,0.508,0.305, + 0.935,0.453,0.129; 0.018,1.018,0.509,0.305,0.933,0.454,0.129; 0.02,1.02, + 0.51,0.306,0.931,0.455,0.13; 0.022,1.022,0.511,0.307,0.93,0.456,0.13; + 0.024,1.024,0.512,0.307,0.928,0.456,0.13; 0.026,1.026,0.513,0.308,0.926, + 0.457,0.13; 0.028,1.028,0.514,0.308,0.924,0.458,0.131; 0.03,1.03,0.515, + 0.309,0.922,0.459,0.131; 0.032,1.032,0.516,0.31,0.921,0.46,0.131; 0.034, + 1.034,0.517,0.31,0.919,0.461,0.131; 0.036,1.036,0.518,0.311,0.917,0.462, + 0.132; 0.038,1.038,0.519,0.311,0.915,0.463,0.132; 0.04,1.04,0.52,0.312, + 0.913,0.464,0.132; 0.042,1.042,0.521,0.313,0.912,0.464,0.132; 0.044, + 1.044,0.522,0.313,0.91,0.465,0.133; 0.046,1.046,0.523,0.314,0.908,0.466, + 0.133; 0.048,1.048,0.524,0.314,0.906,0.467,0.133; 0.05,1.05,0.525,0.315, + 0.905,0.468,0.133; 0.052,1.052,0.526,0.316,0.903,0.469,0.134; 0.054, + 1.054,0.527,0.316,0.901,0.47,0.134; 0.056,1.056,0.528,0.317,0.9,0.471, + 0.134; 0.058,1.058,0.529,0.317,0.898,0.472,0.134; 0.06,1.06,0.53,0.318, + 0.896,0.472,0.135; 0.062,1.062,0.531,0.319,0.895,0.473,0.135; 0.064, + 1.064,0.532,0.319,0.893,0.474,0.135; 0.066,1.066,0.533,0.32,0.891,0.475, + 0.136; 0.068,1.068,0.534,0.32,0.89,0.476,0.136; 0.07,1.07,0.535,0.321, + 0.888,0.477,0.136; 0.072,1.072,0.536,0.322,0.886,0.478,0.136; 0.074, + 1.074,0.537,0.322,0.885,0.479,0.137; 0.076,1.076,0.538,0.323,0.883,0.48, + 0.137; 0.078,1.078,0.539,0.323,0.881,0.48,0.137; 0.08,1.08,0.54,0.324, + 0.88,0.481,0.137; 0.082,1.082,0.541,0.325,0.878,0.482,0.138; 0.084, + 1.084,0.542,0.325,0.876,0.483,0.138; 0.086,1.086,0.543,0.326,0.875, + 0.484,0.138; 0.088,1.088,0.544,0.326,0.873,0.485,0.138; 0.09,1.09,0.545, + 0.327,0.872,0.486,0.139; 0.092,1.092,0.546,0.328,0.87,0.487,0.139; + 0.094,1.094,0.547,0.328,0.868,0.488,0.139; 0.096,1.096,0.548,0.329, + 0.867,0.489,0.139; 0.098,1.098,0.549,0.329,0.865,0.489,0.14; 0.1,1.1, + 0.55,0.33,0.864,0.49,0.14; 0.102,1.102,0.551,0.331,0.862,0.491,0.14; + 0.104,1.104,0.552,0.331,0.861,0.492,0.14; 0.106,1.106,0.553,0.332,0.859, + 0.493,0.141; 0.108,1.108,0.554,0.332,0.857,0.494,0.141; 0.11,1.11,0.555, + 0.333,0.856,0.495,0.141; 0.112,1.112,0.556,0.334,0.854,0.496,0.141; + 0.114,1.114,0.557,0.334,0.853,0.497,0.142; 0.116,1.116,0.558,0.335, + 0.851,0.497,0.142; 0.118,1.118,0.559,0.335,0.85,0.498,0.142; 0.12,1.12, + 0.56,0.336,0.848,0.499,0.142; 0.122,1.122,0.561,0.337,0.847,0.5,0.143; + 0.124,1.124,0.562,0.337,0.845,0.501,0.143; 0.126,1.126,0.563,0.338, + 0.844,0.502,0.143; 0.128,1.128,0.564,0.338,0.842,0.503,0.143; 0.13,1.13, + 0.565,0.339,0.841,0.504,0.144; 0.132,1.132,0.566,0.34,0.839,0.505,0.144; 0.134,1.134,0.567,0.34,0.838,0.505,0.144; 0.136,1.136,0.568,0.341,0.836, 0.506,0.144; 0.138,1.138,0.569,0.341,0.835,0.507,0.145; 0.14,1.14,0.57, 0.342,0.833,0.508,0.145; 0.142,1.142,0.571,0.343,0.832,0.509,0.145; @@ -312,12 +312,12 @@ model PIDGain "Test model for PIDGain" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); equation - connect(ReferenceData.y[1],PIDGain. kp) annotation (Line(points={{-38,0},{-20, - 0},{-20,6},{-12,6}}, color={0,0,127})); - connect(PIDGain.T, ReferenceData.y[2]) + connect(RefDat.y[1], PIDGai.kp) annotation (Line(points={{-38,0},{-20,0},{-20, + 6},{-12,6}}, color={0,0,127})); + connect(PIDGai.T, RefDat.y[2]) annotation (Line(points={{-12,0},{-38,0}}, color={0,0,127})); - connect(PIDGain.L, ReferenceData.y[3]) annotation (Line(points={{-12,-6},{-20, - -6},{-20,0},{-38,0}}, color={0,0,127})); + connect(PIDGai.L, RefDat.y[3]) annotation (Line(points={{-12,-6},{-20,-6},{-20, + 0},{-38,0}}, color={0,0,127})); annotation ( experiment( StopTime=1.0, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mo index db281b0e1a9..c6a53415893 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mo @@ -1,49 +1,49 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation; model PIDIntegralTime "Test model for PIDIntergralTime" Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIDIntegralTime - PIDIntegralTime "Calculate the integral time for a PID controller" + PIDIntTim "Calculate the integral time for a PID controller" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable ReferenceData(table=[0,1,0.5,0.3,0.95,0.446, - 0.127; 0.002,1.002,0.501,0.301,0.948,0.447,0.127; 0.004,1.004,0.502, - 0.301,0.946,0.447,0.128; 0.006,1.006,0.503,0.302,0.944,0.448,0.128; - 0.008,1.008,0.504,0.302,0.942,0.449,0.128; 0.01,1.01,0.505,0.303,0.941, - 0.45,0.128; 0.012,1.012,0.506,0.304,0.939,0.451,0.129; 0.014,1.014, - 0.507,0.304,0.937,0.452,0.129; 0.016,1.016,0.508,0.305,0.935,0.453, - 0.129; 0.018,1.018,0.509,0.305,0.933,0.454,0.129; 0.02,1.02,0.51,0.306, - 0.931,0.455,0.13; 0.022,1.022,0.511,0.307,0.93,0.456,0.13; 0.024,1.024, - 0.512,0.307,0.928,0.456,0.13; 0.026,1.026,0.513,0.308,0.926,0.457,0.13; - 0.028,1.028,0.514,0.308,0.924,0.458,0.131; 0.03,1.03,0.515,0.309,0.922, - 0.459,0.131; 0.032,1.032,0.516,0.31,0.921,0.46,0.131; 0.034,1.034,0.517, - 0.31,0.919,0.461,0.131; 0.036,1.036,0.518,0.311,0.917,0.462,0.132; - 0.038,1.038,0.519,0.311,0.915,0.463,0.132; 0.04,1.04,0.52,0.312,0.913, - 0.464,0.132; 0.042,1.042,0.521,0.313,0.912,0.464,0.132; 0.044,1.044, - 0.522,0.313,0.91,0.465,0.133; 0.046,1.046,0.523,0.314,0.908,0.466,0.133; - 0.048,1.048,0.524,0.314,0.906,0.467,0.133; 0.05,1.05,0.525,0.315,0.905, - 0.468,0.133; 0.052,1.052,0.526,0.316,0.903,0.469,0.134; 0.054,1.054, - 0.527,0.316,0.901,0.47,0.134; 0.056,1.056,0.528,0.317,0.9,0.471,0.134; - 0.058,1.058,0.529,0.317,0.898,0.472,0.134; 0.06,1.06,0.53,0.318,0.896, - 0.472,0.135; 0.062,1.062,0.531,0.319,0.895,0.473,0.135; 0.064,1.064, - 0.532,0.319,0.893,0.474,0.135; 0.066,1.066,0.533,0.32,0.891,0.475,0.136; - 0.068,1.068,0.534,0.32,0.89,0.476,0.136; 0.07,1.07,0.535,0.321,0.888, - 0.477,0.136; 0.072,1.072,0.536,0.322,0.886,0.478,0.136; 0.074,1.074, - 0.537,0.322,0.885,0.479,0.137; 0.076,1.076,0.538,0.323,0.883,0.48,0.137; - 0.078,1.078,0.539,0.323,0.881,0.48,0.137; 0.08,1.08,0.54,0.324,0.88, - 0.481,0.137; 0.082,1.082,0.541,0.325,0.878,0.482,0.138; 0.084,1.084, - 0.542,0.325,0.876,0.483,0.138; 0.086,1.086,0.543,0.326,0.875,0.484, - 0.138; 0.088,1.088,0.544,0.326,0.873,0.485,0.138; 0.09,1.09,0.545,0.327, - 0.872,0.486,0.139; 0.092,1.092,0.546,0.328,0.87,0.487,0.139; 0.094, - 1.094,0.547,0.328,0.868,0.488,0.139; 0.096,1.096,0.548,0.329,0.867, - 0.489,0.139; 0.098,1.098,0.549,0.329,0.865,0.489,0.14; 0.1,1.1,0.55, - 0.33,0.864,0.49,0.14; 0.102,1.102,0.551,0.331,0.862,0.491,0.14; 0.104, - 1.104,0.552,0.331,0.861,0.492,0.14; 0.106,1.106,0.553,0.332,0.859,0.493, - 0.141; 0.108,1.108,0.554,0.332,0.857,0.494,0.141; 0.11,1.11,0.555,0.333, - 0.856,0.495,0.141; 0.112,1.112,0.556,0.334,0.854,0.496,0.141; 0.114, - 1.114,0.557,0.334,0.853,0.497,0.142; 0.116,1.116,0.558,0.335,0.851, - 0.497,0.142; 0.118,1.118,0.559,0.335,0.85,0.498,0.142; 0.12,1.12,0.56, - 0.336,0.848,0.499,0.142; 0.122,1.122,0.561,0.337,0.847,0.5,0.143; 0.124, - 1.124,0.562,0.337,0.845,0.501,0.143; 0.126,1.126,0.563,0.338,0.844, - 0.502,0.143; 0.128,1.128,0.564,0.338,0.842,0.503,0.143; 0.13,1.13,0.565, - 0.339,0.841,0.504,0.144; 0.132,1.132,0.566,0.34,0.839,0.505,0.144; + Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable RefDat(table=[0,1,0.5, + 0.3,0.95,0.446,0.127; 0.002,1.002,0.501,0.301,0.948,0.447,0.127; 0.004, + 1.004,0.502,0.301,0.946,0.447,0.128; 0.006,1.006,0.503,0.302,0.944, + 0.448,0.128; 0.008,1.008,0.504,0.302,0.942,0.449,0.128; 0.01,1.01,0.505, + 0.303,0.941,0.45,0.128; 0.012,1.012,0.506,0.304,0.939,0.451,0.129; + 0.014,1.014,0.507,0.304,0.937,0.452,0.129; 0.016,1.016,0.508,0.305, + 0.935,0.453,0.129; 0.018,1.018,0.509,0.305,0.933,0.454,0.129; 0.02,1.02, + 0.51,0.306,0.931,0.455,0.13; 0.022,1.022,0.511,0.307,0.93,0.456,0.13; + 0.024,1.024,0.512,0.307,0.928,0.456,0.13; 0.026,1.026,0.513,0.308,0.926, + 0.457,0.13; 0.028,1.028,0.514,0.308,0.924,0.458,0.131; 0.03,1.03,0.515, + 0.309,0.922,0.459,0.131; 0.032,1.032,0.516,0.31,0.921,0.46,0.131; 0.034, + 1.034,0.517,0.31,0.919,0.461,0.131; 0.036,1.036,0.518,0.311,0.917,0.462, + 0.132; 0.038,1.038,0.519,0.311,0.915,0.463,0.132; 0.04,1.04,0.52,0.312, + 0.913,0.464,0.132; 0.042,1.042,0.521,0.313,0.912,0.464,0.132; 0.044, + 1.044,0.522,0.313,0.91,0.465,0.133; 0.046,1.046,0.523,0.314,0.908,0.466, + 0.133; 0.048,1.048,0.524,0.314,0.906,0.467,0.133; 0.05,1.05,0.525,0.315, + 0.905,0.468,0.133; 0.052,1.052,0.526,0.316,0.903,0.469,0.134; 0.054, + 1.054,0.527,0.316,0.901,0.47,0.134; 0.056,1.056,0.528,0.317,0.9,0.471, + 0.134; 0.058,1.058,0.529,0.317,0.898,0.472,0.134; 0.06,1.06,0.53,0.318, + 0.896,0.472,0.135; 0.062,1.062,0.531,0.319,0.895,0.473,0.135; 0.064, + 1.064,0.532,0.319,0.893,0.474,0.135; 0.066,1.066,0.533,0.32,0.891,0.475, + 0.136; 0.068,1.068,0.534,0.32,0.89,0.476,0.136; 0.07,1.07,0.535,0.321, + 0.888,0.477,0.136; 0.072,1.072,0.536,0.322,0.886,0.478,0.136; 0.074, + 1.074,0.537,0.322,0.885,0.479,0.137; 0.076,1.076,0.538,0.323,0.883,0.48, + 0.137; 0.078,1.078,0.539,0.323,0.881,0.48,0.137; 0.08,1.08,0.54,0.324, + 0.88,0.481,0.137; 0.082,1.082,0.541,0.325,0.878,0.482,0.138; 0.084, + 1.084,0.542,0.325,0.876,0.483,0.138; 0.086,1.086,0.543,0.326,0.875, + 0.484,0.138; 0.088,1.088,0.544,0.326,0.873,0.485,0.138; 0.09,1.09,0.545, + 0.327,0.872,0.486,0.139; 0.092,1.092,0.546,0.328,0.87,0.487,0.139; + 0.094,1.094,0.547,0.328,0.868,0.488,0.139; 0.096,1.096,0.548,0.329, + 0.867,0.489,0.139; 0.098,1.098,0.549,0.329,0.865,0.489,0.14; 0.1,1.1, + 0.55,0.33,0.864,0.49,0.14; 0.102,1.102,0.551,0.331,0.862,0.491,0.14; + 0.104,1.104,0.552,0.331,0.861,0.492,0.14; 0.106,1.106,0.553,0.332,0.859, + 0.493,0.141; 0.108,1.108,0.554,0.332,0.857,0.494,0.141; 0.11,1.11,0.555, + 0.333,0.856,0.495,0.141; 0.112,1.112,0.556,0.334,0.854,0.496,0.141; + 0.114,1.114,0.557,0.334,0.853,0.497,0.142; 0.116,1.116,0.558,0.335, + 0.851,0.497,0.142; 0.118,1.118,0.559,0.335,0.85,0.498,0.142; 0.12,1.12, + 0.56,0.336,0.848,0.499,0.142; 0.122,1.122,0.561,0.337,0.847,0.5,0.143; + 0.124,1.124,0.562,0.337,0.845,0.501,0.143; 0.126,1.126,0.563,0.338, + 0.844,0.502,0.143; 0.128,1.128,0.564,0.338,0.842,0.503,0.143; 0.13,1.13, + 0.565,0.339,0.841,0.504,0.144; 0.132,1.132,0.566,0.34,0.839,0.505,0.144; 0.134,1.134,0.567,0.34,0.838,0.505,0.144; 0.136,1.136,0.568,0.341,0.836, 0.506,0.144; 0.138,1.138,0.569,0.341,0.835,0.507,0.145; 0.14,1.14,0.57, 0.342,0.833,0.508,0.145; 0.142,1.142,0.571,0.343,0.832,0.509,0.145; @@ -312,10 +312,10 @@ model PIDIntegralTime "Test model for PIDIntergralTime" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); equation - connect(ReferenceData.y[2],PIDIntegralTime. T) annotation (Line(points={{-38, - 0},{-20,0},{-20,6},{-12,6}}, color={0,0,127})); - connect(PIDIntegralTime.L, ReferenceData.y[3]) annotation (Line(points={{-12, - -6},{-20,-6},{-20,0},{-38,0}}, color={0,0,127})); + connect(RefDat.y[2], PIDIntTim.T) annotation (Line(points={{-38,0},{-20,0},{-20, + 6},{-12,6}}, color={0,0,127})); + connect(PIDIntTim.L, RefDat.y[3]) annotation (Line(points={{-12,-6},{-20,-6}, + {-20,0},{-38,0}}, color={0,0,127})); annotation ( experiment( StopTime=1.0, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mo index b943cfeedfe..98dd89a9ab8 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mo @@ -1,69 +1,69 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation; model PIGain "Test model for PIGain" - Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable ReferenceData(table=[0, - 1,0.5,0.3,0.343,0.469; 0.002,1.002,0.501,0.301,0.342,0.47; 0.004,1.004, - 0.502,0.301,0.341,0.471; 0.006,1.006,0.503,0.302,0.341,0.472; 0.008, - 1.008,0.504,0.302,0.34,0.473; 0.01,1.01,0.505,0.303,0.339,0.473; 0.012, - 1.012,0.506,0.304,0.339,0.474; 0.014,1.014,0.507,0.304,0.338,0.475; - 0.016,1.016,0.508,0.305,0.337,0.476; 0.018,1.018,0.509,0.305,0.337, - 0.477; 0.02,1.02,0.51,0.306,0.336,0.478; 0.022,1.022,0.511,0.307,0.335, - 0.479; 0.024,1.024,0.512,0.307,0.335,0.48; 0.026,1.026,0.513,0.308, - 0.334,0.481; 0.028,1.028,0.514,0.308,0.333,0.482; 0.03,1.03,0.515,0.309, - 0.333,0.483; 0.032,1.032,0.516,0.31,0.332,0.484; 0.034,1.034,0.517,0.31, - 0.331,0.485; 0.036,1.036,0.518,0.311,0.331,0.486; 0.038,1.038,0.519, - 0.311,0.33,0.487; 0.04,1.04,0.52,0.312,0.33,0.488; 0.042,1.042,0.521, - 0.313,0.329,0.488; 0.044,1.044,0.522,0.313,0.328,0.489; 0.046,1.046, - 0.523,0.314,0.328,0.49; 0.048,1.048,0.524,0.314,0.327,0.491; 0.05,1.05, - 0.525,0.315,0.326,0.492; 0.052,1.052,0.526,0.316,0.326,0.493; 0.054, - 1.054,0.527,0.316,0.325,0.494; 0.056,1.056,0.528,0.317,0.325,0.495; - 0.058,1.058,0.529,0.317,0.324,0.496; 0.06,1.06,0.53,0.318,0.323,0.497; - 0.062,1.062,0.531,0.319,0.323,0.498; 0.064,1.064,0.532,0.319,0.322, - 0.499; 0.066,1.066,0.533,0.32,0.321,0.5; 0.068,1.068,0.534,0.32,0.321, - 0.501; 0.07,1.07,0.535,0.321,0.32,0.502; 0.072,1.072,0.536,0.322,0.32, - 0.503; 0.074,1.074,0.537,0.322,0.319,0.503; 0.076,1.076,0.538,0.323, - 0.319,0.504; 0.078,1.078,0.539,0.323,0.318,0.505; 0.08,1.08,0.54,0.324, - 0.317,0.506; 0.082,1.082,0.541,0.325,0.317,0.507; 0.084,1.084,0.542, - 0.325,0.316,0.508; 0.086,1.086,0.543,0.326,0.316,0.509; 0.088,1.088, - 0.544,0.326,0.315,0.51; 0.09,1.09,0.545,0.327,0.314,0.511; 0.092,1.092, - 0.546,0.328,0.314,0.512; 0.094,1.094,0.547,0.328,0.313,0.513; 0.096, - 1.096,0.548,0.329,0.313,0.514; 0.098,1.098,0.549,0.329,0.312,0.515; 0.1, - 1.1,0.55,0.33,0.312,0.516; 0.102,1.102,0.551,0.331,0.311,0.517; 0.104, - 1.104,0.552,0.331,0.31,0.518; 0.106,1.106,0.553,0.332,0.31,0.518; 0.108, - 1.108,0.554,0.332,0.309,0.519; 0.11,1.11,0.555,0.333,0.309,0.52; 0.112, - 1.112,0.556,0.334,0.308,0.521; 0.114,1.114,0.557,0.334,0.308,0.522; - 0.116,1.116,0.558,0.335,0.307,0.523; 0.118,1.118,0.559,0.335,0.307, - 0.524; 0.12,1.12,0.56,0.336,0.306,0.525; 0.122,1.122,0.561,0.337,0.305, - 0.526; 0.124,1.124,0.562,0.337,0.305,0.527; 0.126,1.126,0.563,0.338, - 0.304,0.528; 0.128,1.128,0.564,0.338,0.304,0.529; 0.13,1.13,0.565,0.339, - 0.303,0.53; 0.132,1.132,0.566,0.34,0.303,0.531; 0.134,1.134,0.567,0.34, - 0.302,0.532; 0.136,1.136,0.568,0.341,0.302,0.533; 0.138,1.138,0.569, - 0.341,0.301,0.534; 0.14,1.14,0.57,0.342,0.301,0.534; 0.142,1.142,0.571, - 0.343,0.3,0.535; 0.144,1.144,0.572,0.343,0.3,0.536; 0.146,1.146,0.573, - 0.344,0.299,0.537; 0.148,1.148,0.574,0.344,0.299,0.538; 0.15,1.15,0.575, - 0.345,0.298,0.539; 0.152,1.152,0.576,0.346,0.297,0.54; 0.154,1.154, - 0.577,0.346,0.297,0.541; 0.156,1.156,0.578,0.347,0.296,0.542; 0.158, - 1.158,0.579,0.347,0.296,0.543; 0.16,1.16,0.58,0.348,0.295,0.544; 0.162, - 1.162,0.581,0.349,0.295,0.545; 0.164,1.164,0.582,0.349,0.294,0.546; - 0.166,1.166,0.583,0.35,0.294,0.547; 0.168,1.168,0.584,0.35,0.293,0.548; - 0.17,1.17,0.585,0.351,0.293,0.549; 0.172,1.172,0.586,0.352,0.292,0.549; - 0.174,1.174,0.587,0.352,0.292,0.55; 0.176,1.176,0.588,0.353,0.291,0.551; - 0.178,1.178,0.589,0.353,0.291,0.552; 0.18,1.18,0.59,0.354,0.29,0.553; - 0.182,1.182,0.591,0.355,0.29,0.554; 0.184,1.184,0.592,0.355,0.289,0.555; - 0.186,1.186,0.593,0.356,0.289,0.556; 0.188,1.188,0.594,0.356,0.288, - 0.557; 0.19,1.19,0.595,0.357,0.288,0.558; 0.192,1.192,0.596,0.358,0.288, - 0.559; 0.194,1.194,0.597,0.358,0.287,0.56; 0.196,1.196,0.598,0.359, - 0.287,0.561; 0.198,1.198,0.599,0.359,0.286,0.562; 0.2,1.2,0.6,0.36, - 0.286,0.563; 0.202,1.202,0.601,0.361,0.285,0.564; 0.204,1.204,0.602, - 0.361,0.285,0.564; 0.206,1.206,0.603,0.362,0.284,0.565; 0.208,1.208, - 0.604,0.362,0.284,0.566; 0.21,1.21,0.605,0.363,0.283,0.567; 0.212,1.212, - 0.606,0.364,0.283,0.568; 0.214,1.214,0.607,0.364,0.282,0.569; 0.216, - 1.216,0.608,0.365,0.282,0.57; 0.218,1.218,0.609,0.365,0.281,0.571; 0.22, - 1.22,0.61,0.366,0.281,0.572; 0.222,1.222,0.611,0.367,0.28,0.573; 0.224, - 1.224,0.612,0.367,0.28,0.574; 0.226,1.226,0.613,0.368,0.28,0.575; 0.228, - 1.228,0.614,0.368,0.279,0.576; 0.23,1.23,0.615,0.369,0.279,0.577; 0.232, - 1.232,0.616,0.37,0.278,0.578; 0.234,1.234,0.617,0.37,0.278,0.579; 0.236, - 1.236,0.618,0.371,0.277,0.579; 0.238,1.238,0.619,0.371,0.277,0.58; 0.24, - 1.24,0.62,0.372,0.276,0.581; 0.242,1.242,0.621,0.373,0.276,0.582; 0.244, + Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable RefDat(table=[0,1,0.5, + 0.3,0.343,0.469; 0.002,1.002,0.501,0.301,0.342,0.47; 0.004,1.004,0.502, + 0.301,0.341,0.471; 0.006,1.006,0.503,0.302,0.341,0.472; 0.008,1.008, + 0.504,0.302,0.34,0.473; 0.01,1.01,0.505,0.303,0.339,0.473; 0.012,1.012, + 0.506,0.304,0.339,0.474; 0.014,1.014,0.507,0.304,0.338,0.475; 0.016, + 1.016,0.508,0.305,0.337,0.476; 0.018,1.018,0.509,0.305,0.337,0.477; + 0.02,1.02,0.51,0.306,0.336,0.478; 0.022,1.022,0.511,0.307,0.335,0.479; + 0.024,1.024,0.512,0.307,0.335,0.48; 0.026,1.026,0.513,0.308,0.334,0.481; + 0.028,1.028,0.514,0.308,0.333,0.482; 0.03,1.03,0.515,0.309,0.333,0.483; + 0.032,1.032,0.516,0.31,0.332,0.484; 0.034,1.034,0.517,0.31,0.331,0.485; + 0.036,1.036,0.518,0.311,0.331,0.486; 0.038,1.038,0.519,0.311,0.33,0.487; + 0.04,1.04,0.52,0.312,0.33,0.488; 0.042,1.042,0.521,0.313,0.329,0.488; + 0.044,1.044,0.522,0.313,0.328,0.489; 0.046,1.046,0.523,0.314,0.328,0.49; + 0.048,1.048,0.524,0.314,0.327,0.491; 0.05,1.05,0.525,0.315,0.326,0.492; + 0.052,1.052,0.526,0.316,0.326,0.493; 0.054,1.054,0.527,0.316,0.325, + 0.494; 0.056,1.056,0.528,0.317,0.325,0.495; 0.058,1.058,0.529,0.317, + 0.324,0.496; 0.06,1.06,0.53,0.318,0.323,0.497; 0.062,1.062,0.531,0.319, + 0.323,0.498; 0.064,1.064,0.532,0.319,0.322,0.499; 0.066,1.066,0.533, + 0.32,0.321,0.5; 0.068,1.068,0.534,0.32,0.321,0.501; 0.07,1.07,0.535, + 0.321,0.32,0.502; 0.072,1.072,0.536,0.322,0.32,0.503; 0.074,1.074,0.537, + 0.322,0.319,0.503; 0.076,1.076,0.538,0.323,0.319,0.504; 0.078,1.078, + 0.539,0.323,0.318,0.505; 0.08,1.08,0.54,0.324,0.317,0.506; 0.082,1.082, + 0.541,0.325,0.317,0.507; 0.084,1.084,0.542,0.325,0.316,0.508; 0.086, + 1.086,0.543,0.326,0.316,0.509; 0.088,1.088,0.544,0.326,0.315,0.51; 0.09, + 1.09,0.545,0.327,0.314,0.511; 0.092,1.092,0.546,0.328,0.314,0.512; + 0.094,1.094,0.547,0.328,0.313,0.513; 0.096,1.096,0.548,0.329,0.313, + 0.514; 0.098,1.098,0.549,0.329,0.312,0.515; 0.1,1.1,0.55,0.33,0.312, + 0.516; 0.102,1.102,0.551,0.331,0.311,0.517; 0.104,1.104,0.552,0.331, + 0.31,0.518; 0.106,1.106,0.553,0.332,0.31,0.518; 0.108,1.108,0.554,0.332, + 0.309,0.519; 0.11,1.11,0.555,0.333,0.309,0.52; 0.112,1.112,0.556,0.334, + 0.308,0.521; 0.114,1.114,0.557,0.334,0.308,0.522; 0.116,1.116,0.558, + 0.335,0.307,0.523; 0.118,1.118,0.559,0.335,0.307,0.524; 0.12,1.12,0.56, + 0.336,0.306,0.525; 0.122,1.122,0.561,0.337,0.305,0.526; 0.124,1.124, + 0.562,0.337,0.305,0.527; 0.126,1.126,0.563,0.338,0.304,0.528; 0.128, + 1.128,0.564,0.338,0.304,0.529; 0.13,1.13,0.565,0.339,0.303,0.53; 0.132, + 1.132,0.566,0.34,0.303,0.531; 0.134,1.134,0.567,0.34,0.302,0.532; 0.136, + 1.136,0.568,0.341,0.302,0.533; 0.138,1.138,0.569,0.341,0.301,0.534; + 0.14,1.14,0.57,0.342,0.301,0.534; 0.142,1.142,0.571,0.343,0.3,0.535; + 0.144,1.144,0.572,0.343,0.3,0.536; 0.146,1.146,0.573,0.344,0.299,0.537; + 0.148,1.148,0.574,0.344,0.299,0.538; 0.15,1.15,0.575,0.345,0.298,0.539; + 0.152,1.152,0.576,0.346,0.297,0.54; 0.154,1.154,0.577,0.346,0.297,0.541; + 0.156,1.156,0.578,0.347,0.296,0.542; 0.158,1.158,0.579,0.347,0.296, + 0.543; 0.16,1.16,0.58,0.348,0.295,0.544; 0.162,1.162,0.581,0.349,0.295, + 0.545; 0.164,1.164,0.582,0.349,0.294,0.546; 0.166,1.166,0.583,0.35, + 0.294,0.547; 0.168,1.168,0.584,0.35,0.293,0.548; 0.17,1.17,0.585,0.351, + 0.293,0.549; 0.172,1.172,0.586,0.352,0.292,0.549; 0.174,1.174,0.587, + 0.352,0.292,0.55; 0.176,1.176,0.588,0.353,0.291,0.551; 0.178,1.178, + 0.589,0.353,0.291,0.552; 0.18,1.18,0.59,0.354,0.29,0.553; 0.182,1.182, + 0.591,0.355,0.29,0.554; 0.184,1.184,0.592,0.355,0.289,0.555; 0.186, + 1.186,0.593,0.356,0.289,0.556; 0.188,1.188,0.594,0.356,0.288,0.557; + 0.19,1.19,0.595,0.357,0.288,0.558; 0.192,1.192,0.596,0.358,0.288,0.559; + 0.194,1.194,0.597,0.358,0.287,0.56; 0.196,1.196,0.598,0.359,0.287,0.561; + 0.198,1.198,0.599,0.359,0.286,0.562; 0.2,1.2,0.6,0.36,0.286,0.563; + 0.202,1.202,0.601,0.361,0.285,0.564; 0.204,1.204,0.602,0.361,0.285, + 0.564; 0.206,1.206,0.603,0.362,0.284,0.565; 0.208,1.208,0.604,0.362, + 0.284,0.566; 0.21,1.21,0.605,0.363,0.283,0.567; 0.212,1.212,0.606,0.364, + 0.283,0.568; 0.214,1.214,0.607,0.364,0.282,0.569; 0.216,1.216,0.608, + 0.365,0.282,0.57; 0.218,1.218,0.609,0.365,0.281,0.571; 0.22,1.22,0.61, + 0.366,0.281,0.572; 0.222,1.222,0.611,0.367,0.28,0.573; 0.224,1.224, + 0.612,0.367,0.28,0.574; 0.226,1.226,0.613,0.368,0.28,0.575; 0.228,1.228, + 0.614,0.368,0.279,0.576; 0.23,1.23,0.615,0.369,0.279,0.577; 0.232,1.232, + 0.616,0.37,0.278,0.578; 0.234,1.234,0.617,0.37,0.278,0.579; 0.236,1.236, + 0.618,0.371,0.277,0.579; 0.238,1.238,0.619,0.371,0.277,0.58; 0.24,1.24, + 0.62,0.372,0.276,0.581; 0.242,1.242,0.621,0.373,0.276,0.582; 0.244, 1.244,0.622,0.373,0.275,0.583; 0.246,1.246,0.623,0.374,0.275,0.584; 0.248,1.248,0.624,0.374,0.275,0.585; 0.25,1.25,0.625,0.375,0.274,0.586; 0.252,1.252,0.626,0.376,0.274,0.587; 0.254,1.254,0.627,0.376,0.273, @@ -264,17 +264,17 @@ model PIGain "Test model for PIGain" 0.171,0.938; 1,2,1,0.6,0.171,0.938], extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) "Data for validating the PIgain block" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIGain - PIGain "Calculate the gain for a PI controller" + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIGain PIGai + "Calculate the gain for a PI controller" annotation (Placement(transformation(extent={{-8,-10},{12,10}}))); equation - connect(PIGain.kp, ReferenceData.y[1]) annotation (Line(points={{-10,6},{-26, - 6},{-26,0},{-38,0}}, color={0,0,127})); - connect(PIGain.T, ReferenceData.y[2]) + connect(PIGai.kp, RefDat.y[1]) annotation (Line(points={{-10,6},{-26,6},{-26, + 0},{-38,0}}, color={0,0,127})); + connect(PIGai.T, RefDat.y[2]) annotation (Line(points={{-10,0},{-38,0}}, color={0,0,127})); - connect(PIGain.L, ReferenceData.y[3]) annotation (Line(points={{-10,-6},{-26, - -6},{-26,0},{-38,0}}, color={0,0,127})); + connect(PIGai.L, RefDat.y[3]) annotation (Line(points={{-10,-6},{-26,-6},{-26, + 0},{-38,0}}, color={0,0,127})); annotation ( experiment( StopTime=1.0, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mo index a1ec49abe52..d787b7c4dcb 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mo @@ -1,262 +1,278 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation; model PIIntegralTime "Test model for PIIntergralTime" Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIIntegralTime - PIIntegralTime "Calculate the integral time for a PI controller" + PIIntTim "Calculate the integral time for a PI controller" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable ReferenceData(table=[0,1,0.5,0.3,0.343,0.469; - 0.002,1.002,0.501,0.301,0.342,0.47; 0.004,1.004,0.502,0.301,0.341,0.471; - 0.006,1.006,0.503,0.302,0.341,0.472; 0.008,1.008,0.504,0.302,0.34,0.473; - 0.01,1.01,0.505,0.303,0.339,0.473; 0.012,1.012,0.506,0.304,0.339,0.474; - 0.014,1.014,0.507,0.304,0.338,0.475; 0.016,1.016,0.508,0.305,0.337,0.476; - 0.018,1.018,0.509,0.305,0.337,0.477; 0.02,1.02,0.51,0.306,0.336,0.478; 0.022, - 1.022,0.511,0.307,0.335,0.479; 0.024,1.024,0.512,0.307,0.335,0.48; 0.026, - 1.026,0.513,0.308,0.334,0.481; 0.028,1.028,0.514,0.308,0.333,0.482; 0.03, - 1.03,0.515,0.309,0.333,0.483; 0.032,1.032,0.516,0.31,0.332,0.484; 0.034, - 1.034,0.517,0.31,0.331,0.485; 0.036,1.036,0.518,0.311,0.331,0.486; 0.038, - 1.038,0.519,0.311,0.33,0.487; 0.04,1.04,0.52,0.312,0.33,0.488; 0.042,1.042, - 0.521,0.313,0.329,0.488; 0.044,1.044,0.522,0.313,0.328,0.489; 0.046,1.046, - 0.523,0.314,0.328,0.49; 0.048,1.048,0.524,0.314,0.327,0.491; 0.05,1.05,0.525, - 0.315,0.326,0.492; 0.052,1.052,0.526,0.316,0.326,0.493; 0.054,1.054,0.527, - 0.316,0.325,0.494; 0.056,1.056,0.528,0.317,0.325,0.495; 0.058,1.058,0.529, - 0.317,0.324,0.496; 0.06,1.06,0.53,0.318,0.323,0.497; 0.062,1.062,0.531,0.319, - 0.323,0.498; 0.064,1.064,0.532,0.319,0.322,0.499; 0.066,1.066,0.533,0.32, - 0.321,0.5; 0.068,1.068,0.534,0.32,0.321,0.501; 0.07,1.07,0.535,0.321,0.32, - 0.502; 0.072,1.072,0.536,0.322,0.32,0.503; 0.074,1.074,0.537,0.322,0.319, - 0.503; 0.076,1.076,0.538,0.323,0.319,0.504; 0.078,1.078,0.539,0.323,0.318, - 0.505; 0.08,1.08,0.54,0.324,0.317,0.506; 0.082,1.082,0.541,0.325,0.317,0.507; - 0.084,1.084,0.542,0.325,0.316,0.508; 0.086,1.086,0.543,0.326,0.316,0.509; - 0.088,1.088,0.544,0.326,0.315,0.51; 0.09,1.09,0.545,0.327,0.314,0.511; 0.092, - 1.092,0.546,0.328,0.314,0.512; 0.094,1.094,0.547,0.328,0.313,0.513; 0.096, - 1.096,0.548,0.329,0.313,0.514; 0.098,1.098,0.549,0.329,0.312,0.515; 0.1, - 1.1,0.55,0.33,0.312,0.516; 0.102,1.102,0.551,0.331,0.311,0.517; 0.104,1.104, - 0.552,0.331,0.31,0.518; 0.106,1.106,0.553,0.332,0.31,0.518; 0.108,1.108, - 0.554,0.332,0.309,0.519; 0.11,1.11,0.555,0.333,0.309,0.52; 0.112,1.112,0.556, - 0.334,0.308,0.521; 0.114,1.114,0.557,0.334,0.308,0.522; 0.116,1.116,0.558, - 0.335,0.307,0.523; 0.118,1.118,0.559,0.335,0.307,0.524; 0.12,1.12,0.56,0.336, - 0.306,0.525; 0.122,1.122,0.561,0.337,0.305,0.526; 0.124,1.124,0.562,0.337, - 0.305,0.527; 0.126,1.126,0.563,0.338,0.304,0.528; 0.128,1.128,0.564,0.338, - 0.304,0.529; 0.13,1.13,0.565,0.339,0.303,0.53; 0.132,1.132,0.566,0.34,0.303, - 0.531; 0.134,1.134,0.567,0.34,0.302,0.532; 0.136,1.136,0.568,0.341,0.302, - 0.533; 0.138,1.138,0.569,0.341,0.301,0.534; 0.14,1.14,0.57,0.342,0.301,0.534; - 0.142,1.142,0.571,0.343,0.3,0.535; 0.144,1.144,0.572,0.343,0.3,0.536; 0.146, - 1.146,0.573,0.344,0.299,0.537; 0.148,1.148,0.574,0.344,0.299,0.538; 0.15, - 1.15,0.575,0.345,0.298,0.539; 0.152,1.152,0.576,0.346,0.297,0.54; 0.154, - 1.154,0.577,0.346,0.297,0.541; 0.156,1.156,0.578,0.347,0.296,0.542; 0.158, - 1.158,0.579,0.347,0.296,0.543; 0.16,1.16,0.58,0.348,0.295,0.544; 0.162,1.162, - 0.581,0.349,0.295,0.545; 0.164,1.164,0.582,0.349,0.294,0.546; 0.166,1.166, - 0.583,0.35,0.294,0.547; 0.168,1.168,0.584,0.35,0.293,0.548; 0.17,1.17,0.585, - 0.351,0.293,0.549; 0.172,1.172,0.586,0.352,0.292,0.549; 0.174,1.174,0.587, - 0.352,0.292,0.55; 0.176,1.176,0.588,0.353,0.291,0.551; 0.178,1.178,0.589, - 0.353,0.291,0.552; 0.18,1.18,0.59,0.354,0.29,0.553; 0.182,1.182,0.591,0.355, - 0.29,0.554; 0.184,1.184,0.592,0.355,0.289,0.555; 0.186,1.186,0.593,0.356, - 0.289,0.556; 0.188,1.188,0.594,0.356,0.288,0.557; 0.19,1.19,0.595,0.357, - 0.288,0.558; 0.192,1.192,0.596,0.358,0.288,0.559; 0.194,1.194,0.597,0.358, - 0.287,0.56; 0.196,1.196,0.598,0.359,0.287,0.561; 0.198,1.198,0.599,0.359, - 0.286,0.562; 0.2,1.2,0.6,0.36,0.286,0.563; 0.202,1.202,0.601,0.361,0.285, - 0.564; 0.204,1.204,0.602,0.361,0.285,0.564; 0.206,1.206,0.603,0.362,0.284, - 0.565; 0.208,1.208,0.604,0.362,0.284,0.566; 0.21,1.21,0.605,0.363,0.283, - 0.567; 0.212,1.212,0.606,0.364,0.283,0.568; 0.214,1.214,0.607,0.364,0.282, - 0.569; 0.216,1.216,0.608,0.365,0.282,0.57; 0.218,1.218,0.609,0.365,0.281, - 0.571; 0.22,1.22,0.61,0.366,0.281,0.572; 0.222,1.222,0.611,0.367,0.28,0.573; - 0.224,1.224,0.612,0.367,0.28,0.574; 0.226,1.226,0.613,0.368,0.28,0.575; - 0.228,1.228,0.614,0.368,0.279,0.576; 0.23,1.23,0.615,0.369,0.279,0.577; - 0.232,1.232,0.616,0.37,0.278,0.578; 0.234,1.234,0.617,0.37,0.278,0.579; - 0.236,1.236,0.618,0.371,0.277,0.579; 0.238,1.238,0.619,0.371,0.277,0.58; - 0.24,1.24,0.62,0.372,0.276,0.581; 0.242,1.242,0.621,0.373,0.276,0.582; 0.244, - 1.244,0.622,0.373,0.275,0.583; 0.246,1.246,0.623,0.374,0.275,0.584; 0.248, - 1.248,0.624,0.374,0.275,0.585; 0.25,1.25,0.625,0.375,0.274,0.586; 0.252, - 1.252,0.626,0.376,0.274,0.587; 0.254,1.254,0.627,0.376,0.273,0.588; 0.256, - 1.256,0.628,0.377,0.273,0.589; 0.258,1.258,0.629,0.377,0.272,0.59; 0.26, - 1.26,0.63,0.378,0.272,0.591; 0.262,1.262,0.631,0.379,0.272,0.592; 0.264, - 1.264,0.632,0.379,0.271,0.593; 0.266,1.266,0.633,0.38,0.271,0.594; 0.268, - 1.268,0.634,0.38,0.27,0.594; 0.27,1.27,0.635,0.381,0.27,0.595; 0.272,1.272, - 0.636,0.382,0.269,0.596; 0.274,1.274,0.637,0.382,0.269,0.597; 0.276,1.276, - 0.638,0.383,0.269,0.598; 0.278,1.278,0.639,0.383,0.268,0.599; 0.28,1.28, - 0.64,0.384,0.268,0.6; 0.282,1.282,0.641,0.385,0.267,0.601; 0.284,1.284,0.642, - 0.385,0.267,0.602; 0.286,1.286,0.643,0.386,0.266,0.603; 0.288,1.288,0.644, - 0.386,0.266,0.604; 0.29,1.29,0.645,0.387,0.266,0.605; 0.292,1.292,0.646, - 0.388,0.265,0.606; 0.294,1.294,0.647,0.388,0.265,0.607; 0.296,1.296,0.648, - 0.389,0.264,0.608; 0.298,1.298,0.649,0.389,0.264,0.609; 0.3,1.3,0.65,0.39, - 0.264,0.609; 0.302,1.302,0.651,0.391,0.263,0.61; 0.304,1.304,0.652,0.391, - 0.263,0.611; 0.306,1.306,0.653,0.392,0.262,0.612; 0.308,1.308,0.654,0.392, - 0.262,0.613; 0.31,1.31,0.655,0.393,0.262,0.614; 0.312,1.312,0.656,0.394, - 0.261,0.615; 0.314,1.314,0.657,0.394,0.261,0.616; 0.316,1.316,0.658,0.395, - 0.26,0.617; 0.318,1.318,0.659,0.395,0.26,0.618; 0.32,1.32,0.66,0.396,0.26, - 0.619; 0.322,1.322,0.661,0.397,0.259,0.62; 0.324,1.324,0.662,0.397,0.259, - 0.621; 0.326,1.326,0.663,0.398,0.258,0.622; 0.328,1.328,0.664,0.398,0.258, - 0.623; 0.33,1.33,0.665,0.399,0.258,0.624; 0.332,1.332,0.666,0.4,0.257,0.624; - 0.334,1.334,0.667,0.4,0.257,0.625; 0.336,1.336,0.668,0.401,0.257,0.626; - 0.338,1.338,0.669,0.401,0.256,0.627; 0.34,1.34,0.67,0.402,0.256,0.628; 0.342, - 1.342,0.671,0.403,0.255,0.629; 0.344,1.344,0.672,0.403,0.255,0.63; 0.346, - 1.346,0.673,0.404,0.255,0.631; 0.348,1.348,0.674,0.404,0.254,0.632; 0.35, - 1.35,0.675,0.405,0.254,0.633; 0.352,1.352,0.676,0.406,0.253,0.634; 0.354, - 1.354,0.677,0.406,0.253,0.635; 0.356,1.356,0.678,0.407,0.253,0.636; 0.358, - 1.358,0.679,0.407,0.252,0.637; 0.36,1.36,0.68,0.408,0.252,0.638; 0.362,1.362, - 0.681,0.409,0.252,0.639; 0.364,1.364,0.682,0.409,0.251,0.639; 0.366,1.366, - 0.683,0.41,0.251,0.64; 0.368,1.368,0.684,0.41,0.251,0.641; 0.37,1.37,0.685, - 0.411,0.25,0.642; 0.372,1.372,0.686,0.412,0.25,0.643; 0.374,1.374,0.687, - 0.412,0.249,0.644; 0.376,1.376,0.688,0.413,0.249,0.645; 0.378,1.378,0.689, - 0.413,0.249,0.646; 0.38,1.38,0.69,0.414,0.248,0.647; 0.382,1.382,0.691,0.415, - 0.248,0.648; 0.384,1.384,0.692,0.415,0.248,0.649; 0.386,1.386,0.693,0.416, - 0.247,0.65; 0.388,1.388,0.694,0.416,0.247,0.651; 0.39,1.39,0.695,0.417,0.247, - 0.652; 0.392,1.392,0.696,0.418,0.246,0.653; 0.394,1.394,0.697,0.418,0.246, - 0.654; 0.396,1.396,0.698,0.419,0.245,0.654; 0.398,1.398,0.699,0.419,0.245, - 0.655; 0.4,1.4,0.7,0.42,0.245,0.656; 0.402,1.402,0.701,0.421,0.244,0.657; - 0.404,1.404,0.702,0.421,0.244,0.658; 0.406,1.406,0.703,0.422,0.244,0.659; - 0.408,1.408,0.704,0.422,0.243,0.66; 0.41,1.41,0.705,0.423,0.243,0.661; 0.412, - 1.412,0.706,0.424,0.243,0.662; 0.414,1.414,0.707,0.424,0.242,0.663; 0.416, - 1.416,0.708,0.425,0.242,0.664; 0.418,1.418,0.709,0.425,0.242,0.665; 0.42, - 1.42,0.71,0.426,0.241,0.666; 0.422,1.422,0.711,0.427,0.241,0.667; 0.424, - 1.424,0.712,0.427,0.241,0.668; 0.426,1.426,0.713,0.428,0.24,0.669; 0.428, - 1.428,0.714,0.428,0.24,0.669; 0.43,1.43,0.715,0.429,0.24,0.67; 0.432,1.432, - 0.716,0.43,0.239,0.671; 0.434,1.434,0.717,0.43,0.239,0.672; 0.436,1.436, - 0.718,0.431,0.239,0.673; 0.438,1.438,0.719,0.431,0.238,0.674; 0.44,1.44, - 0.72,0.432,0.238,0.675; 0.442,1.442,0.721,0.433,0.238,0.676; 0.444,1.444, - 0.722,0.433,0.237,0.677; 0.446,1.446,0.723,0.434,0.237,0.678; 0.448,1.448, - 0.724,0.434,0.237,0.679; 0.45,1.45,0.725,0.435,0.236,0.68; 0.452,1.452,0.726, - 0.436,0.236,0.681; 0.454,1.454,0.727,0.436,0.236,0.682; 0.456,1.456,0.728, - 0.437,0.235,0.683; 0.458,1.458,0.729,0.437,0.235,0.684; 0.46,1.46,0.73,0.438, - 0.235,0.684; 0.462,1.462,0.731,0.439,0.234,0.685; 0.464,1.464,0.732,0.439, - 0.234,0.686; 0.466,1.466,0.733,0.44,0.234,0.687; 0.468,1.468,0.734,0.44, - 0.233,0.688; 0.47,1.47,0.735,0.441,0.233,0.689; 0.472,1.472,0.736,0.442, - 0.233,0.69; 0.474,1.474,0.737,0.442,0.233,0.691; 0.476,1.476,0.738,0.443, - 0.232,0.692; 0.478,1.478,0.739,0.443,0.232,0.693; 0.48,1.48,0.74,0.444,0.232, - 0.694; 0.482,1.482,0.741,0.445,0.231,0.695; 0.484,1.484,0.742,0.445,0.231, - 0.696; 0.486,1.486,0.743,0.446,0.231,0.697; 0.488,1.488,0.744,0.446,0.23, - 0.698; 0.49,1.49,0.745,0.447,0.23,0.699; 0.492,1.492,0.746,0.448,0.23,0.699; - 0.494,1.494,0.747,0.448,0.229,0.7; 0.496,1.496,0.748,0.449,0.229,0.701; - 0.498,1.498,0.749,0.449,0.229,0.702; 0.5,1.5,0.75,0.45,0.228,0.703; 0.502, - 1.502,0.751,0.451,0.228,0.704; 0.504,1.504,0.752,0.451,0.228,0.705; 0.506, - 1.506,0.753,0.452,0.228,0.706; 0.508,1.508,0.754,0.452,0.227,0.707; 0.51, - 1.51,0.755,0.453,0.227,0.708; 0.512,1.512,0.756,0.454,0.227,0.709; 0.514, - 1.514,0.757,0.454,0.226,0.71; 0.516,1.516,0.758,0.455,0.226,0.711; 0.518, - 1.518,0.759,0.455,0.226,0.712; 0.52,1.52,0.76,0.456,0.225,0.713; 0.522,1.522, - 0.761,0.457,0.225,0.714; 0.524,1.524,0.762,0.457,0.225,0.714; 0.526,1.526, - 0.763,0.458,0.225,0.715; 0.528,1.528,0.764,0.458,0.224,0.716; 0.53,1.53, - 0.765,0.459,0.224,0.717; 0.532,1.532,0.766,0.46,0.224,0.718; 0.534,1.534, - 0.767,0.46,0.223,0.719; 0.536,1.536,0.768,0.461,0.223,0.72; 0.538,1.538, - 0.769,0.461,0.223,0.721; 0.54,1.54,0.77,0.462,0.223,0.722; 0.542,1.542,0.771, - 0.463,0.222,0.723; 0.544,1.544,0.772,0.463,0.222,0.724; 0.546,1.546,0.773, - 0.464,0.222,0.725; 0.548,1.548,0.774,0.464,0.221,0.726; 0.55,1.55,0.775, - 0.465,0.221,0.727; 0.552,1.552,0.776,0.466,0.221,0.728; 0.554,1.554,0.777, - 0.466,0.221,0.729; 0.556,1.556,0.778,0.467,0.22,0.729; 0.558,1.558,0.779, - 0.467,0.22,0.73; 0.56,1.56,0.78,0.468,0.22,0.731; 0.562,1.562,0.781,0.469, - 0.219,0.732; 0.564,1.564,0.782,0.469,0.219,0.733; 0.566,1.566,0.783,0.47, - 0.219,0.734; 0.568,1.568,0.784,0.47,0.219,0.735; 0.57,1.57,0.785,0.471,0.218, - 0.736; 0.572,1.572,0.786,0.472,0.218,0.737; 0.574,1.574,0.787,0.472,0.218, - 0.738; 0.576,1.576,0.788,0.473,0.217,0.739; 0.578,1.578,0.789,0.473,0.217, - 0.74; 0.58,1.58,0.79,0.474,0.217,0.741; 0.582,1.582,0.791,0.475,0.217,0.742; - 0.584,1.584,0.792,0.475,0.216,0.743; 0.586,1.586,0.793,0.476,0.216,0.744; - 0.588,1.588,0.794,0.476,0.216,0.744; 0.59,1.59,0.795,0.477,0.216,0.745; - 0.592,1.592,0.796,0.478,0.215,0.746; 0.594,1.594,0.797,0.478,0.215,0.747; - 0.596,1.596,0.798,0.479,0.215,0.748; 0.598,1.598,0.799,0.479,0.214,0.749; - 0.6,1.6,0.8,0.48,0.214,0.75; 0.602,1.602,0.801,0.481,0.214,0.751; 0.604, - 1.604,0.802,0.481,0.214,0.752; 0.606,1.606,0.803,0.482,0.213,0.753; 0.608, - 1.608,0.804,0.482,0.213,0.754; 0.61,1.61,0.805,0.483,0.213,0.755; 0.612, - 1.612,0.806,0.484,0.213,0.756; 0.614,1.614,0.807,0.484,0.212,0.757; 0.616, - 1.616,0.808,0.485,0.212,0.758; 0.618,1.618,0.809,0.485,0.212,0.759; 0.62, - 1.62,0.81,0.486,0.212,0.759; 0.622,1.622,0.811,0.487,0.211,0.76; 0.624,1.624, - 0.812,0.487,0.211,0.761; 0.626,1.626,0.813,0.488,0.211,0.762; 0.628,1.628, - 0.814,0.488,0.211,0.763; 0.63,1.63,0.815,0.489,0.21,0.764; 0.632,1.632,0.816, - 0.49,0.21,0.765; 0.634,1.634,0.817,0.49,0.21,0.766; 0.636,1.636,0.818,0.491, - 0.209,0.767; 0.638,1.638,0.819,0.491,0.209,0.768; 0.64,1.64,0.82,0.492,0.209, - 0.769; 0.642,1.642,0.821,0.493,0.209,0.77; 0.644,1.644,0.822,0.493,0.208, - 0.771; 0.646,1.646,0.823,0.494,0.208,0.772; 0.648,1.648,0.824,0.494,0.208, - 0.773; 0.65,1.65,0.825,0.495,0.208,0.774; 0.652,1.652,0.826,0.496,0.207, - 0.774; 0.654,1.654,0.827,0.496,0.207,0.775; 0.656,1.656,0.828,0.497,0.207, - 0.776; 0.658,1.658,0.829,0.497,0.207,0.777; 0.66,1.66,0.83,0.498,0.206,0.778; + Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable RefDat(table=[0,1,0.5, + 0.3,0.343,0.469; 0.002,1.002,0.501,0.301,0.342,0.47; 0.004,1.004,0.502, + 0.301,0.341,0.471; 0.006,1.006,0.503,0.302,0.341,0.472; 0.008,1.008, + 0.504,0.302,0.34,0.473; 0.01,1.01,0.505,0.303,0.339,0.473; 0.012,1.012, + 0.506,0.304,0.339,0.474; 0.014,1.014,0.507,0.304,0.338,0.475; 0.016, + 1.016,0.508,0.305,0.337,0.476; 0.018,1.018,0.509,0.305,0.337,0.477; + 0.02,1.02,0.51,0.306,0.336,0.478; 0.022,1.022,0.511,0.307,0.335,0.479; + 0.024,1.024,0.512,0.307,0.335,0.48; 0.026,1.026,0.513,0.308,0.334,0.481; + 0.028,1.028,0.514,0.308,0.333,0.482; 0.03,1.03,0.515,0.309,0.333,0.483; + 0.032,1.032,0.516,0.31,0.332,0.484; 0.034,1.034,0.517,0.31,0.331,0.485; + 0.036,1.036,0.518,0.311,0.331,0.486; 0.038,1.038,0.519,0.311,0.33,0.487; + 0.04,1.04,0.52,0.312,0.33,0.488; 0.042,1.042,0.521,0.313,0.329,0.488; + 0.044,1.044,0.522,0.313,0.328,0.489; 0.046,1.046,0.523,0.314,0.328,0.49; + 0.048,1.048,0.524,0.314,0.327,0.491; 0.05,1.05,0.525,0.315,0.326,0.492; + 0.052,1.052,0.526,0.316,0.326,0.493; 0.054,1.054,0.527,0.316,0.325, + 0.494; 0.056,1.056,0.528,0.317,0.325,0.495; 0.058,1.058,0.529,0.317, + 0.324,0.496; 0.06,1.06,0.53,0.318,0.323,0.497; 0.062,1.062,0.531,0.319, + 0.323,0.498; 0.064,1.064,0.532,0.319,0.322,0.499; 0.066,1.066,0.533, + 0.32,0.321,0.5; 0.068,1.068,0.534,0.32,0.321,0.501; 0.07,1.07,0.535, + 0.321,0.32,0.502; 0.072,1.072,0.536,0.322,0.32,0.503; 0.074,1.074,0.537, + 0.322,0.319,0.503; 0.076,1.076,0.538,0.323,0.319,0.504; 0.078,1.078, + 0.539,0.323,0.318,0.505; 0.08,1.08,0.54,0.324,0.317,0.506; 0.082,1.082, + 0.541,0.325,0.317,0.507; 0.084,1.084,0.542,0.325,0.316,0.508; 0.086, + 1.086,0.543,0.326,0.316,0.509; 0.088,1.088,0.544,0.326,0.315,0.51; 0.09, + 1.09,0.545,0.327,0.314,0.511; 0.092,1.092,0.546,0.328,0.314,0.512; + 0.094,1.094,0.547,0.328,0.313,0.513; 0.096,1.096,0.548,0.329,0.313, + 0.514; 0.098,1.098,0.549,0.329,0.312,0.515; 0.1,1.1,0.55,0.33,0.312, + 0.516; 0.102,1.102,0.551,0.331,0.311,0.517; 0.104,1.104,0.552,0.331, + 0.31,0.518; 0.106,1.106,0.553,0.332,0.31,0.518; 0.108,1.108,0.554,0.332, + 0.309,0.519; 0.11,1.11,0.555,0.333,0.309,0.52; 0.112,1.112,0.556,0.334, + 0.308,0.521; 0.114,1.114,0.557,0.334,0.308,0.522; 0.116,1.116,0.558, + 0.335,0.307,0.523; 0.118,1.118,0.559,0.335,0.307,0.524; 0.12,1.12,0.56, + 0.336,0.306,0.525; 0.122,1.122,0.561,0.337,0.305,0.526; 0.124,1.124, + 0.562,0.337,0.305,0.527; 0.126,1.126,0.563,0.338,0.304,0.528; 0.128, + 1.128,0.564,0.338,0.304,0.529; 0.13,1.13,0.565,0.339,0.303,0.53; 0.132, + 1.132,0.566,0.34,0.303,0.531; 0.134,1.134,0.567,0.34,0.302,0.532; 0.136, + 1.136,0.568,0.341,0.302,0.533; 0.138,1.138,0.569,0.341,0.301,0.534; + 0.14,1.14,0.57,0.342,0.301,0.534; 0.142,1.142,0.571,0.343,0.3,0.535; + 0.144,1.144,0.572,0.343,0.3,0.536; 0.146,1.146,0.573,0.344,0.299,0.537; + 0.148,1.148,0.574,0.344,0.299,0.538; 0.15,1.15,0.575,0.345,0.298,0.539; + 0.152,1.152,0.576,0.346,0.297,0.54; 0.154,1.154,0.577,0.346,0.297,0.541; + 0.156,1.156,0.578,0.347,0.296,0.542; 0.158,1.158,0.579,0.347,0.296, + 0.543; 0.16,1.16,0.58,0.348,0.295,0.544; 0.162,1.162,0.581,0.349,0.295, + 0.545; 0.164,1.164,0.582,0.349,0.294,0.546; 0.166,1.166,0.583,0.35, + 0.294,0.547; 0.168,1.168,0.584,0.35,0.293,0.548; 0.17,1.17,0.585,0.351, + 0.293,0.549; 0.172,1.172,0.586,0.352,0.292,0.549; 0.174,1.174,0.587, + 0.352,0.292,0.55; 0.176,1.176,0.588,0.353,0.291,0.551; 0.178,1.178, + 0.589,0.353,0.291,0.552; 0.18,1.18,0.59,0.354,0.29,0.553; 0.182,1.182, + 0.591,0.355,0.29,0.554; 0.184,1.184,0.592,0.355,0.289,0.555; 0.186, + 1.186,0.593,0.356,0.289,0.556; 0.188,1.188,0.594,0.356,0.288,0.557; + 0.19,1.19,0.595,0.357,0.288,0.558; 0.192,1.192,0.596,0.358,0.288,0.559; + 0.194,1.194,0.597,0.358,0.287,0.56; 0.196,1.196,0.598,0.359,0.287,0.561; + 0.198,1.198,0.599,0.359,0.286,0.562; 0.2,1.2,0.6,0.36,0.286,0.563; + 0.202,1.202,0.601,0.361,0.285,0.564; 0.204,1.204,0.602,0.361,0.285, + 0.564; 0.206,1.206,0.603,0.362,0.284,0.565; 0.208,1.208,0.604,0.362, + 0.284,0.566; 0.21,1.21,0.605,0.363,0.283,0.567; 0.212,1.212,0.606,0.364, + 0.283,0.568; 0.214,1.214,0.607,0.364,0.282,0.569; 0.216,1.216,0.608, + 0.365,0.282,0.57; 0.218,1.218,0.609,0.365,0.281,0.571; 0.22,1.22,0.61, + 0.366,0.281,0.572; 0.222,1.222,0.611,0.367,0.28,0.573; 0.224,1.224, + 0.612,0.367,0.28,0.574; 0.226,1.226,0.613,0.368,0.28,0.575; 0.228,1.228, + 0.614,0.368,0.279,0.576; 0.23,1.23,0.615,0.369,0.279,0.577; 0.232,1.232, + 0.616,0.37,0.278,0.578; 0.234,1.234,0.617,0.37,0.278,0.579; 0.236,1.236, + 0.618,0.371,0.277,0.579; 0.238,1.238,0.619,0.371,0.277,0.58; 0.24,1.24, + 0.62,0.372,0.276,0.581; 0.242,1.242,0.621,0.373,0.276,0.582; 0.244, + 1.244,0.622,0.373,0.275,0.583; 0.246,1.246,0.623,0.374,0.275,0.584; + 0.248,1.248,0.624,0.374,0.275,0.585; 0.25,1.25,0.625,0.375,0.274,0.586; + 0.252,1.252,0.626,0.376,0.274,0.587; 0.254,1.254,0.627,0.376,0.273, + 0.588; 0.256,1.256,0.628,0.377,0.273,0.589; 0.258,1.258,0.629,0.377, + 0.272,0.59; 0.26,1.26,0.63,0.378,0.272,0.591; 0.262,1.262,0.631,0.379, + 0.272,0.592; 0.264,1.264,0.632,0.379,0.271,0.593; 0.266,1.266,0.633, + 0.38,0.271,0.594; 0.268,1.268,0.634,0.38,0.27,0.594; 0.27,1.27,0.635, + 0.381,0.27,0.595; 0.272,1.272,0.636,0.382,0.269,0.596; 0.274,1.274, + 0.637,0.382,0.269,0.597; 0.276,1.276,0.638,0.383,0.269,0.598; 0.278, + 1.278,0.639,0.383,0.268,0.599; 0.28,1.28,0.64,0.384,0.268,0.6; 0.282, + 1.282,0.641,0.385,0.267,0.601; 0.284,1.284,0.642,0.385,0.267,0.602; + 0.286,1.286,0.643,0.386,0.266,0.603; 0.288,1.288,0.644,0.386,0.266, + 0.604; 0.29,1.29,0.645,0.387,0.266,0.605; 0.292,1.292,0.646,0.388,0.265, + 0.606; 0.294,1.294,0.647,0.388,0.265,0.607; 0.296,1.296,0.648,0.389, + 0.264,0.608; 0.298,1.298,0.649,0.389,0.264,0.609; 0.3,1.3,0.65,0.39, + 0.264,0.609; 0.302,1.302,0.651,0.391,0.263,0.61; 0.304,1.304,0.652, + 0.391,0.263,0.611; 0.306,1.306,0.653,0.392,0.262,0.612; 0.308,1.308, + 0.654,0.392,0.262,0.613; 0.31,1.31,0.655,0.393,0.262,0.614; 0.312,1.312, + 0.656,0.394,0.261,0.615; 0.314,1.314,0.657,0.394,0.261,0.616; 0.316, + 1.316,0.658,0.395,0.26,0.617; 0.318,1.318,0.659,0.395,0.26,0.618; 0.32, + 1.32,0.66,0.396,0.26,0.619; 0.322,1.322,0.661,0.397,0.259,0.62; 0.324, + 1.324,0.662,0.397,0.259,0.621; 0.326,1.326,0.663,0.398,0.258,0.622; + 0.328,1.328,0.664,0.398,0.258,0.623; 0.33,1.33,0.665,0.399,0.258,0.624; + 0.332,1.332,0.666,0.4,0.257,0.624; 0.334,1.334,0.667,0.4,0.257,0.625; + 0.336,1.336,0.668,0.401,0.257,0.626; 0.338,1.338,0.669,0.401,0.256, + 0.627; 0.34,1.34,0.67,0.402,0.256,0.628; 0.342,1.342,0.671,0.403,0.255, + 0.629; 0.344,1.344,0.672,0.403,0.255,0.63; 0.346,1.346,0.673,0.404, + 0.255,0.631; 0.348,1.348,0.674,0.404,0.254,0.632; 0.35,1.35,0.675,0.405, + 0.254,0.633; 0.352,1.352,0.676,0.406,0.253,0.634; 0.354,1.354,0.677, + 0.406,0.253,0.635; 0.356,1.356,0.678,0.407,0.253,0.636; 0.358,1.358, + 0.679,0.407,0.252,0.637; 0.36,1.36,0.68,0.408,0.252,0.638; 0.362,1.362, + 0.681,0.409,0.252,0.639; 0.364,1.364,0.682,0.409,0.251,0.639; 0.366, + 1.366,0.683,0.41,0.251,0.64; 0.368,1.368,0.684,0.41,0.251,0.641; 0.37, + 1.37,0.685,0.411,0.25,0.642; 0.372,1.372,0.686,0.412,0.25,0.643; 0.374, + 1.374,0.687,0.412,0.249,0.644; 0.376,1.376,0.688,0.413,0.249,0.645; + 0.378,1.378,0.689,0.413,0.249,0.646; 0.38,1.38,0.69,0.414,0.248,0.647; + 0.382,1.382,0.691,0.415,0.248,0.648; 0.384,1.384,0.692,0.415,0.248, + 0.649; 0.386,1.386,0.693,0.416,0.247,0.65; 0.388,1.388,0.694,0.416, + 0.247,0.651; 0.39,1.39,0.695,0.417,0.247,0.652; 0.392,1.392,0.696,0.418, + 0.246,0.653; 0.394,1.394,0.697,0.418,0.246,0.654; 0.396,1.396,0.698, + 0.419,0.245,0.654; 0.398,1.398,0.699,0.419,0.245,0.655; 0.4,1.4,0.7, + 0.42,0.245,0.656; 0.402,1.402,0.701,0.421,0.244,0.657; 0.404,1.404, + 0.702,0.421,0.244,0.658; 0.406,1.406,0.703,0.422,0.244,0.659; 0.408, + 1.408,0.704,0.422,0.243,0.66; 0.41,1.41,0.705,0.423,0.243,0.661; 0.412, + 1.412,0.706,0.424,0.243,0.662; 0.414,1.414,0.707,0.424,0.242,0.663; + 0.416,1.416,0.708,0.425,0.242,0.664; 0.418,1.418,0.709,0.425,0.242, + 0.665; 0.42,1.42,0.71,0.426,0.241,0.666; 0.422,1.422,0.711,0.427,0.241, + 0.667; 0.424,1.424,0.712,0.427,0.241,0.668; 0.426,1.426,0.713,0.428, + 0.24,0.669; 0.428,1.428,0.714,0.428,0.24,0.669; 0.43,1.43,0.715,0.429, + 0.24,0.67; 0.432,1.432,0.716,0.43,0.239,0.671; 0.434,1.434,0.717,0.43, + 0.239,0.672; 0.436,1.436,0.718,0.431,0.239,0.673; 0.438,1.438,0.719, + 0.431,0.238,0.674; 0.44,1.44,0.72,0.432,0.238,0.675; 0.442,1.442,0.721, + 0.433,0.238,0.676; 0.444,1.444,0.722,0.433,0.237,0.677; 0.446,1.446, + 0.723,0.434,0.237,0.678; 0.448,1.448,0.724,0.434,0.237,0.679; 0.45,1.45, + 0.725,0.435,0.236,0.68; 0.452,1.452,0.726,0.436,0.236,0.681; 0.454, + 1.454,0.727,0.436,0.236,0.682; 0.456,1.456,0.728,0.437,0.235,0.683; + 0.458,1.458,0.729,0.437,0.235,0.684; 0.46,1.46,0.73,0.438,0.235,0.684; + 0.462,1.462,0.731,0.439,0.234,0.685; 0.464,1.464,0.732,0.439,0.234, + 0.686; 0.466,1.466,0.733,0.44,0.234,0.687; 0.468,1.468,0.734,0.44,0.233, + 0.688; 0.47,1.47,0.735,0.441,0.233,0.689; 0.472,1.472,0.736,0.442,0.233, + 0.69; 0.474,1.474,0.737,0.442,0.233,0.691; 0.476,1.476,0.738,0.443, + 0.232,0.692; 0.478,1.478,0.739,0.443,0.232,0.693; 0.48,1.48,0.74,0.444, + 0.232,0.694; 0.482,1.482,0.741,0.445,0.231,0.695; 0.484,1.484,0.742, + 0.445,0.231,0.696; 0.486,1.486,0.743,0.446,0.231,0.697; 0.488,1.488, + 0.744,0.446,0.23,0.698; 0.49,1.49,0.745,0.447,0.23,0.699; 0.492,1.492, + 0.746,0.448,0.23,0.699; 0.494,1.494,0.747,0.448,0.229,0.7; 0.496,1.496, + 0.748,0.449,0.229,0.701; 0.498,1.498,0.749,0.449,0.229,0.702; 0.5,1.5, + 0.75,0.45,0.228,0.703; 0.502,1.502,0.751,0.451,0.228,0.704; 0.504,1.504, + 0.752,0.451,0.228,0.705; 0.506,1.506,0.753,0.452,0.228,0.706; 0.508, + 1.508,0.754,0.452,0.227,0.707; 0.51,1.51,0.755,0.453,0.227,0.708; 0.512, + 1.512,0.756,0.454,0.227,0.709; 0.514,1.514,0.757,0.454,0.226,0.71; + 0.516,1.516,0.758,0.455,0.226,0.711; 0.518,1.518,0.759,0.455,0.226, + 0.712; 0.52,1.52,0.76,0.456,0.225,0.713; 0.522,1.522,0.761,0.457,0.225, + 0.714; 0.524,1.524,0.762,0.457,0.225,0.714; 0.526,1.526,0.763,0.458, + 0.225,0.715; 0.528,1.528,0.764,0.458,0.224,0.716; 0.53,1.53,0.765,0.459, + 0.224,0.717; 0.532,1.532,0.766,0.46,0.224,0.718; 0.534,1.534,0.767,0.46, + 0.223,0.719; 0.536,1.536,0.768,0.461,0.223,0.72; 0.538,1.538,0.769, + 0.461,0.223,0.721; 0.54,1.54,0.77,0.462,0.223,0.722; 0.542,1.542,0.771, + 0.463,0.222,0.723; 0.544,1.544,0.772,0.463,0.222,0.724; 0.546,1.546, + 0.773,0.464,0.222,0.725; 0.548,1.548,0.774,0.464,0.221,0.726; 0.55,1.55, + 0.775,0.465,0.221,0.727; 0.552,1.552,0.776,0.466,0.221,0.728; 0.554, + 1.554,0.777,0.466,0.221,0.729; 0.556,1.556,0.778,0.467,0.22,0.729; + 0.558,1.558,0.779,0.467,0.22,0.73; 0.56,1.56,0.78,0.468,0.22,0.731; + 0.562,1.562,0.781,0.469,0.219,0.732; 0.564,1.564,0.782,0.469,0.219, + 0.733; 0.566,1.566,0.783,0.47,0.219,0.734; 0.568,1.568,0.784,0.47,0.219, + 0.735; 0.57,1.57,0.785,0.471,0.218,0.736; 0.572,1.572,0.786,0.472,0.218, + 0.737; 0.574,1.574,0.787,0.472,0.218,0.738; 0.576,1.576,0.788,0.473, + 0.217,0.739; 0.578,1.578,0.789,0.473,0.217,0.74; 0.58,1.58,0.79,0.474, + 0.217,0.741; 0.582,1.582,0.791,0.475,0.217,0.742; 0.584,1.584,0.792, + 0.475,0.216,0.743; 0.586,1.586,0.793,0.476,0.216,0.744; 0.588,1.588, + 0.794,0.476,0.216,0.744; 0.59,1.59,0.795,0.477,0.216,0.745; 0.592,1.592, + 0.796,0.478,0.215,0.746; 0.594,1.594,0.797,0.478,0.215,0.747; 0.596, + 1.596,0.798,0.479,0.215,0.748; 0.598,1.598,0.799,0.479,0.214,0.749; 0.6, + 1.6,0.8,0.48,0.214,0.75; 0.602,1.602,0.801,0.481,0.214,0.751; 0.604, + 1.604,0.802,0.481,0.214,0.752; 0.606,1.606,0.803,0.482,0.213,0.753; + 0.608,1.608,0.804,0.482,0.213,0.754; 0.61,1.61,0.805,0.483,0.213,0.755; + 0.612,1.612,0.806,0.484,0.213,0.756; 0.614,1.614,0.807,0.484,0.212, + 0.757; 0.616,1.616,0.808,0.485,0.212,0.758; 0.618,1.618,0.809,0.485, + 0.212,0.759; 0.62,1.62,0.81,0.486,0.212,0.759; 0.622,1.622,0.811,0.487, + 0.211,0.76; 0.624,1.624,0.812,0.487,0.211,0.761; 0.626,1.626,0.813, + 0.488,0.211,0.762; 0.628,1.628,0.814,0.488,0.211,0.763; 0.63,1.63,0.815, + 0.489,0.21,0.764; 0.632,1.632,0.816,0.49,0.21,0.765; 0.634,1.634,0.817, + 0.49,0.21,0.766; 0.636,1.636,0.818,0.491,0.209,0.767; 0.638,1.638,0.819, + 0.491,0.209,0.768; 0.64,1.64,0.82,0.492,0.209,0.769; 0.642,1.642,0.821, + 0.493,0.209,0.77; 0.644,1.644,0.822,0.493,0.208,0.771; 0.646,1.646, + 0.823,0.494,0.208,0.772; 0.648,1.648,0.824,0.494,0.208,0.773; 0.65,1.65, + 0.825,0.495,0.208,0.774; 0.652,1.652,0.826,0.496,0.207,0.774; 0.654, + 1.654,0.827,0.496,0.207,0.775; 0.656,1.656,0.828,0.497,0.207,0.776; + 0.658,1.658,0.829,0.497,0.207,0.777; 0.66,1.66,0.83,0.498,0.206,0.778; 0.662,1.662,0.831,0.499,0.206,0.779; 0.664,1.664,0.832,0.499,0.206,0.78; - 0.666,1.666,0.833,0.5,0.206,0.781; 0.668,1.668,0.834,0.5,0.205,0.782; 0.67, - 1.67,0.835,0.501,0.205,0.783; 0.672,1.672,0.836,0.502,0.205,0.784; 0.674, - 1.674,0.837,0.502,0.205,0.785; 0.676,1.676,0.838,0.503,0.204,0.786; 0.678, - 1.678,0.839,0.503,0.204,0.787; 0.68,1.68,0.84,0.504,0.204,0.788; 0.682,1.682, - 0.841,0.505,0.204,0.789; 0.684,1.684,0.842,0.505,0.204,0.789; 0.686,1.686, - 0.843,0.506,0.203,0.79; 0.688,1.688,0.844,0.506,0.203,0.791; 0.69,1.69,0.845, - 0.507,0.203,0.792; 0.692,1.692,0.846,0.508,0.203,0.793; 0.694,1.694,0.847, - 0.508,0.202,0.794; 0.696,1.696,0.848,0.509,0.202,0.795; 0.698,1.698,0.849, - 0.509,0.202,0.796; 0.7,1.7,0.85,0.51,0.202,0.797; 0.702,1.702,0.851,0.511, - 0.201,0.798; 0.704,1.704,0.852,0.511,0.201,0.799; 0.706,1.706,0.853,0.512, - 0.201,0.8; 0.708,1.708,0.854,0.512,0.201,0.801; 0.71,1.71,0.855,0.513,0.2, - 0.802; 0.712,1.712,0.856,0.514,0.2,0.803; 0.714,1.714,0.857,0.514,0.2,0.804; - 0.716,1.716,0.858,0.515,0.2,0.804; 0.718,1.718,0.859,0.515,0.199,0.805; - 0.72,1.72,0.86,0.516,0.199,0.806; 0.722,1.722,0.861,0.517,0.199,0.807; 0.724, - 1.724,0.862,0.517,0.199,0.808; 0.726,1.726,0.863,0.518,0.199,0.809; 0.728, - 1.728,0.864,0.518,0.198,0.81; 0.73,1.73,0.865,0.519,0.198,0.811; 0.732,1.732, - 0.866,0.52,0.198,0.812; 0.734,1.734,0.867,0.52,0.198,0.813; 0.736,1.736, - 0.868,0.521,0.197,0.814; 0.738,1.738,0.869,0.521,0.197,0.815; 0.74,1.74, - 0.87,0.522,0.197,0.816; 0.742,1.742,0.871,0.523,0.197,0.817; 0.744,1.744, - 0.872,0.523,0.197,0.818; 0.746,1.746,0.873,0.524,0.196,0.819; 0.748,1.748, - 0.874,0.524,0.196,0.819; 0.75,1.75,0.875,0.525,0.196,0.82; 0.752,1.752,0.876, - 0.526,0.196,0.821; 0.754,1.754,0.877,0.526,0.195,0.822; 0.756,1.756,0.878, - 0.527,0.195,0.823; 0.758,1.758,0.879,0.527,0.195,0.824; 0.76,1.76,0.88,0.528, - 0.195,0.825; 0.762,1.762,0.881,0.529,0.194,0.826; 0.764,1.764,0.882,0.529, - 0.194,0.827; 0.766,1.766,0.883,0.53,0.194,0.828; 0.768,1.768,0.884,0.53, - 0.194,0.829; 0.77,1.77,0.885,0.531,0.194,0.83; 0.772,1.772,0.886,0.532,0.193, - 0.831; 0.774,1.774,0.887,0.532,0.193,0.832; 0.776,1.776,0.888,0.533,0.193, - 0.833; 0.778,1.778,0.889,0.533,0.193,0.834; 0.78,1.78,0.89,0.534,0.193,0.834; - 0.782,1.782,0.891,0.535,0.192,0.835; 0.784,1.784,0.892,0.535,0.192,0.836; - 0.786,1.786,0.893,0.536,0.192,0.837; 0.788,1.788,0.894,0.536,0.192,0.838; - 0.79,1.79,0.895,0.537,0.191,0.839; 0.792,1.792,0.896,0.538,0.191,0.84; 0.794, - 1.794,0.897,0.538,0.191,0.841; 0.796,1.796,0.898,0.539,0.191,0.842; 0.798, - 1.798,0.899,0.539,0.191,0.843; 0.8,1.8,0.9,0.54,0.19,0.844; 0.802,1.802, - 0.901,0.541,0.19,0.845; 0.804,1.804,0.902,0.541,0.19,0.846; 0.806,1.806, - 0.903,0.542,0.19,0.847; 0.808,1.808,0.904,0.542,0.19,0.848; 0.81,1.81,0.905, - 0.543,0.189,0.849; 0.812,1.812,0.906,0.544,0.189,0.849; 0.814,1.814,0.907, - 0.544,0.189,0.85; 0.816,1.816,0.908,0.545,0.189,0.851; 0.818,1.818,0.909, - 0.545,0.189,0.852; 0.82,1.82,0.91,0.546,0.188,0.853; 0.822,1.822,0.911,0.547, - 0.188,0.854; 0.824,1.824,0.912,0.547,0.188,0.855; 0.826,1.826,0.913,0.548, - 0.188,0.856; 0.828,1.828,0.914,0.548,0.187,0.857; 0.83,1.83,0.915,0.549, - 0.187,0.858; 0.832,1.832,0.916,0.55,0.187,0.859; 0.834,1.834,0.917,0.55, - 0.187,0.86; 0.836,1.836,0.918,0.551,0.187,0.861; 0.838,1.838,0.919,0.551, - 0.186,0.862; 0.84,1.84,0.92,0.552,0.186,0.863; 0.842,1.842,0.921,0.553,0.186, - 0.864; 0.844,1.844,0.922,0.553,0.186,0.864; 0.846,1.846,0.923,0.554,0.186, - 0.865; 0.848,1.848,0.924,0.554,0.185,0.866; 0.85,1.85,0.925,0.555,0.185, - 0.867; 0.852,1.852,0.926,0.556,0.185,0.868; 0.854,1.854,0.927,0.556,0.185, - 0.869; 0.856,1.856,0.928,0.557,0.185,0.87; 0.858,1.858,0.929,0.557,0.184, - 0.871; 0.86,1.86,0.93,0.558,0.184,0.872; 0.862,1.862,0.931,0.559,0.184,0.873; - 0.864,1.864,0.932,0.559,0.184,0.874; 0.866,1.866,0.933,0.56,0.184,0.875; - 0.868,1.868,0.934,0.56,0.183,0.876; 0.87,1.87,0.935,0.561,0.183,0.877; 0.872, - 1.872,0.936,0.562,0.183,0.878; 0.874,1.874,0.937,0.562,0.183,0.879; 0.876, - 1.876,0.938,0.563,0.183,0.879; 0.878,1.878,0.939,0.563,0.182,0.88; 0.88, - 1.88,0.94,0.564,0.182,0.881; 0.882,1.882,0.941,0.565,0.182,0.882; 0.884, - 1.884,0.942,0.565,0.182,0.883; 0.886,1.886,0.943,0.566,0.182,0.884; 0.888, - 1.888,0.944,0.566,0.182,0.885; 0.89,1.89,0.945,0.567,0.181,0.886; 0.892, - 1.892,0.946,0.568,0.181,0.887; 0.894,1.894,0.947,0.568,0.181,0.888; 0.896, - 1.896,0.948,0.569,0.181,0.889; 0.898,1.898,0.949,0.569,0.181,0.89; 0.9,1.9, - 0.95,0.57,0.18,0.891; 0.902,1.902,0.951,0.571,0.18,0.892; 0.904,1.904,0.952, - 0.571,0.18,0.893; 0.906,1.906,0.953,0.572,0.18,0.894; 0.908,1.908,0.954, - 0.572,0.18,0.894; 0.91,1.91,0.955,0.573,0.179,0.895; 0.912,1.912,0.956,0.574, - 0.179,0.896; 0.914,1.914,0.957,0.574,0.179,0.897; 0.916,1.916,0.958,0.575, - 0.179,0.898; 0.918,1.918,0.959,0.575,0.179,0.899; 0.92,1.92,0.96,0.576,0.178, - 0.9; 0.922,1.922,0.961,0.577,0.178,0.901; 0.924,1.924,0.962,0.577,0.178, - 0.902; 0.926,1.926,0.963,0.578,0.178,0.903; 0.928,1.928,0.964,0.578,0.178, - 0.904; 0.93,1.93,0.965,0.579,0.178,0.905; 0.932,1.932,0.966,0.58,0.177,0.906; - 0.934,1.934,0.967,0.58,0.177,0.907; 0.936,1.936,0.968,0.581,0.177,0.908; - 0.938,1.938,0.969,0.581,0.177,0.909; 0.94,1.94,0.97,0.582,0.177,0.909; 0.942, - 1.942,0.971,0.583,0.176,0.91; 0.944,1.944,0.972,0.583,0.176,0.911; 0.946, - 1.946,0.973,0.584,0.176,0.912; 0.948,1.948,0.974,0.584,0.176,0.913; 0.95, - 1.95,0.975,0.585,0.176,0.914; 0.952,1.952,0.976,0.586,0.176,0.915; 0.954, - 1.954,0.977,0.586,0.175,0.916; 0.956,1.956,0.978,0.587,0.175,0.917; 0.958, - 1.958,0.979,0.587,0.175,0.918; 0.96,1.96,0.98,0.588,0.175,0.919; 0.962,1.962, - 0.981,0.589,0.175,0.92; 0.964,1.964,0.982,0.589,0.174,0.921; 0.966,1.966, - 0.983,0.59,0.174,0.922; 0.968,1.968,0.984,0.59,0.174,0.923; 0.97,1.97,0.985, - 0.591,0.174,0.924; 0.972,1.972,0.986,0.592,0.174,0.924; 0.974,1.974,0.987, - 0.592,0.174,0.925; 0.976,1.976,0.988,0.593,0.173,0.926; 0.978,1.978,0.989, - 0.593,0.173,0.927; 0.98,1.98,0.99,0.594,0.173,0.928; 0.982,1.982,0.991,0.595, - 0.173,0.929; 0.984,1.984,0.992,0.595,0.173,0.93; 0.986,1.986,0.993,0.596, - 0.173,0.931; 0.988,1.988,0.994,0.596,0.172,0.932; 0.99,1.99,0.995,0.597, - 0.172,0.933; 0.992,1.992,0.996,0.598,0.172,0.934; 0.994,1.994,0.997,0.598, - 0.172,0.935; 0.996,1.996,0.998,0.599,0.172,0.936; 0.998,1.998,0.999,0.599, - 0.172,0.937; 1,2,1,0.6,0.171,0.938; 1,2,1,0.6,0.171,0.938], - extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) + 0.666,1.666,0.833,0.5,0.206,0.781; 0.668,1.668,0.834,0.5,0.205,0.782; + 0.67,1.67,0.835,0.501,0.205,0.783; 0.672,1.672,0.836,0.502,0.205,0.784; + 0.674,1.674,0.837,0.502,0.205,0.785; 0.676,1.676,0.838,0.503,0.204, + 0.786; 0.678,1.678,0.839,0.503,0.204,0.787; 0.68,1.68,0.84,0.504,0.204, + 0.788; 0.682,1.682,0.841,0.505,0.204,0.789; 0.684,1.684,0.842,0.505, + 0.204,0.789; 0.686,1.686,0.843,0.506,0.203,0.79; 0.688,1.688,0.844, + 0.506,0.203,0.791; 0.69,1.69,0.845,0.507,0.203,0.792; 0.692,1.692,0.846, + 0.508,0.203,0.793; 0.694,1.694,0.847,0.508,0.202,0.794; 0.696,1.696, + 0.848,0.509,0.202,0.795; 0.698,1.698,0.849,0.509,0.202,0.796; 0.7,1.7, + 0.85,0.51,0.202,0.797; 0.702,1.702,0.851,0.511,0.201,0.798; 0.704,1.704, + 0.852,0.511,0.201,0.799; 0.706,1.706,0.853,0.512,0.201,0.8; 0.708,1.708, + 0.854,0.512,0.201,0.801; 0.71,1.71,0.855,0.513,0.2,0.802; 0.712,1.712, + 0.856,0.514,0.2,0.803; 0.714,1.714,0.857,0.514,0.2,0.804; 0.716,1.716, + 0.858,0.515,0.2,0.804; 0.718,1.718,0.859,0.515,0.199,0.805; 0.72,1.72, + 0.86,0.516,0.199,0.806; 0.722,1.722,0.861,0.517,0.199,0.807; 0.724, + 1.724,0.862,0.517,0.199,0.808; 0.726,1.726,0.863,0.518,0.199,0.809; + 0.728,1.728,0.864,0.518,0.198,0.81; 0.73,1.73,0.865,0.519,0.198,0.811; + 0.732,1.732,0.866,0.52,0.198,0.812; 0.734,1.734,0.867,0.52,0.198,0.813; + 0.736,1.736,0.868,0.521,0.197,0.814; 0.738,1.738,0.869,0.521,0.197, + 0.815; 0.74,1.74,0.87,0.522,0.197,0.816; 0.742,1.742,0.871,0.523,0.197, + 0.817; 0.744,1.744,0.872,0.523,0.197,0.818; 0.746,1.746,0.873,0.524, + 0.196,0.819; 0.748,1.748,0.874,0.524,0.196,0.819; 0.75,1.75,0.875,0.525, + 0.196,0.82; 0.752,1.752,0.876,0.526,0.196,0.821; 0.754,1.754,0.877, + 0.526,0.195,0.822; 0.756,1.756,0.878,0.527,0.195,0.823; 0.758,1.758, + 0.879,0.527,0.195,0.824; 0.76,1.76,0.88,0.528,0.195,0.825; 0.762,1.762, + 0.881,0.529,0.194,0.826; 0.764,1.764,0.882,0.529,0.194,0.827; 0.766, + 1.766,0.883,0.53,0.194,0.828; 0.768,1.768,0.884,0.53,0.194,0.829; 0.77, + 1.77,0.885,0.531,0.194,0.83; 0.772,1.772,0.886,0.532,0.193,0.831; 0.774, + 1.774,0.887,0.532,0.193,0.832; 0.776,1.776,0.888,0.533,0.193,0.833; + 0.778,1.778,0.889,0.533,0.193,0.834; 0.78,1.78,0.89,0.534,0.193,0.834; + 0.782,1.782,0.891,0.535,0.192,0.835; 0.784,1.784,0.892,0.535,0.192, + 0.836; 0.786,1.786,0.893,0.536,0.192,0.837; 0.788,1.788,0.894,0.536, + 0.192,0.838; 0.79,1.79,0.895,0.537,0.191,0.839; 0.792,1.792,0.896,0.538, + 0.191,0.84; 0.794,1.794,0.897,0.538,0.191,0.841; 0.796,1.796,0.898, + 0.539,0.191,0.842; 0.798,1.798,0.899,0.539,0.191,0.843; 0.8,1.8,0.9, + 0.54,0.19,0.844; 0.802,1.802,0.901,0.541,0.19,0.845; 0.804,1.804,0.902, + 0.541,0.19,0.846; 0.806,1.806,0.903,0.542,0.19,0.847; 0.808,1.808,0.904, + 0.542,0.19,0.848; 0.81,1.81,0.905,0.543,0.189,0.849; 0.812,1.812,0.906, + 0.544,0.189,0.849; 0.814,1.814,0.907,0.544,0.189,0.85; 0.816,1.816, + 0.908,0.545,0.189,0.851; 0.818,1.818,0.909,0.545,0.189,0.852; 0.82,1.82, + 0.91,0.546,0.188,0.853; 0.822,1.822,0.911,0.547,0.188,0.854; 0.824, + 1.824,0.912,0.547,0.188,0.855; 0.826,1.826,0.913,0.548,0.188,0.856; + 0.828,1.828,0.914,0.548,0.187,0.857; 0.83,1.83,0.915,0.549,0.187,0.858; + 0.832,1.832,0.916,0.55,0.187,0.859; 0.834,1.834,0.917,0.55,0.187,0.86; + 0.836,1.836,0.918,0.551,0.187,0.861; 0.838,1.838,0.919,0.551,0.186, + 0.862; 0.84,1.84,0.92,0.552,0.186,0.863; 0.842,1.842,0.921,0.553,0.186, + 0.864; 0.844,1.844,0.922,0.553,0.186,0.864; 0.846,1.846,0.923,0.554, + 0.186,0.865; 0.848,1.848,0.924,0.554,0.185,0.866; 0.85,1.85,0.925,0.555, + 0.185,0.867; 0.852,1.852,0.926,0.556,0.185,0.868; 0.854,1.854,0.927, + 0.556,0.185,0.869; 0.856,1.856,0.928,0.557,0.185,0.87; 0.858,1.858, + 0.929,0.557,0.184,0.871; 0.86,1.86,0.93,0.558,0.184,0.872; 0.862,1.862, + 0.931,0.559,0.184,0.873; 0.864,1.864,0.932,0.559,0.184,0.874; 0.866, + 1.866,0.933,0.56,0.184,0.875; 0.868,1.868,0.934,0.56,0.183,0.876; 0.87, + 1.87,0.935,0.561,0.183,0.877; 0.872,1.872,0.936,0.562,0.183,0.878; + 0.874,1.874,0.937,0.562,0.183,0.879; 0.876,1.876,0.938,0.563,0.183, + 0.879; 0.878,1.878,0.939,0.563,0.182,0.88; 0.88,1.88,0.94,0.564,0.182, + 0.881; 0.882,1.882,0.941,0.565,0.182,0.882; 0.884,1.884,0.942,0.565, + 0.182,0.883; 0.886,1.886,0.943,0.566,0.182,0.884; 0.888,1.888,0.944, + 0.566,0.182,0.885; 0.89,1.89,0.945,0.567,0.181,0.886; 0.892,1.892,0.946, + 0.568,0.181,0.887; 0.894,1.894,0.947,0.568,0.181,0.888; 0.896,1.896, + 0.948,0.569,0.181,0.889; 0.898,1.898,0.949,0.569,0.181,0.89; 0.9,1.9, + 0.95,0.57,0.18,0.891; 0.902,1.902,0.951,0.571,0.18,0.892; 0.904,1.904, + 0.952,0.571,0.18,0.893; 0.906,1.906,0.953,0.572,0.18,0.894; 0.908,1.908, + 0.954,0.572,0.18,0.894; 0.91,1.91,0.955,0.573,0.179,0.895; 0.912,1.912, + 0.956,0.574,0.179,0.896; 0.914,1.914,0.957,0.574,0.179,0.897; 0.916, + 1.916,0.958,0.575,0.179,0.898; 0.918,1.918,0.959,0.575,0.179,0.899; + 0.92,1.92,0.96,0.576,0.178,0.9; 0.922,1.922,0.961,0.577,0.178,0.901; + 0.924,1.924,0.962,0.577,0.178,0.902; 0.926,1.926,0.963,0.578,0.178, + 0.903; 0.928,1.928,0.964,0.578,0.178,0.904; 0.93,1.93,0.965,0.579,0.178, + 0.905; 0.932,1.932,0.966,0.58,0.177,0.906; 0.934,1.934,0.967,0.58,0.177, + 0.907; 0.936,1.936,0.968,0.581,0.177,0.908; 0.938,1.938,0.969,0.581, + 0.177,0.909; 0.94,1.94,0.97,0.582,0.177,0.909; 0.942,1.942,0.971,0.583, + 0.176,0.91; 0.944,1.944,0.972,0.583,0.176,0.911; 0.946,1.946,0.973, + 0.584,0.176,0.912; 0.948,1.948,0.974,0.584,0.176,0.913; 0.95,1.95,0.975, + 0.585,0.176,0.914; 0.952,1.952,0.976,0.586,0.176,0.915; 0.954,1.954, + 0.977,0.586,0.175,0.916; 0.956,1.956,0.978,0.587,0.175,0.917; 0.958, + 1.958,0.979,0.587,0.175,0.918; 0.96,1.96,0.98,0.588,0.175,0.919; 0.962, + 1.962,0.981,0.589,0.175,0.92; 0.964,1.964,0.982,0.589,0.174,0.921; + 0.966,1.966,0.983,0.59,0.174,0.922; 0.968,1.968,0.984,0.59,0.174,0.923; + 0.97,1.97,0.985,0.591,0.174,0.924; 0.972,1.972,0.986,0.592,0.174,0.924; + 0.974,1.974,0.987,0.592,0.174,0.925; 0.976,1.976,0.988,0.593,0.173, + 0.926; 0.978,1.978,0.989,0.593,0.173,0.927; 0.98,1.98,0.99,0.594,0.173, + 0.928; 0.982,1.982,0.991,0.595,0.173,0.929; 0.984,1.984,0.992,0.595, + 0.173,0.93; 0.986,1.986,0.993,0.596,0.173,0.931; 0.988,1.988,0.994, + 0.596,0.172,0.932; 0.99,1.99,0.995,0.597,0.172,0.933; 0.992,1.992,0.996, + 0.598,0.172,0.934; 0.994,1.994,0.997,0.598,0.172,0.935; 0.996,1.996, + 0.998,0.599,0.172,0.936; 0.998,1.998,0.999,0.599,0.172,0.937; 1,2,1,0.6, + 0.171,0.938; 1,2,1,0.6,0.171,0.938], extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) "Data for validating the pIIntegralTime block" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); equation - connect(ReferenceData.y[2],PIIntegralTime. T) annotation (Line(points={{-38,0}, - {-20,0},{-20,6},{-12,6}}, color={0,0,127})); - connect(PIIntegralTime.L, ReferenceData.y[3]) annotation (Line(points={{-12,-6}, - {-20,-6},{-20,0},{-38,0}}, color={0,0,127})); + connect(RefDat.y[2], PIIntTim.T) annotation (Line(points={{-38,0},{-20,0},{-20, + 6},{-12,6}}, color={0,0,127})); + connect(PIIntTim.L, RefDat.y[3]) annotation (Line(points={{-12,-6},{-20,-6},{ + -20,0},{-38,0}}, color={0,0,127})); annotation ( experiment( StopTime=1.0, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.mo index 383b7266895..851fec52210 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.mo @@ -7,12 +7,12 @@ This reduced order model is used to approximate the control process.

                                References

                                -Garpinger, Olof, Tore Hägglund, and Karl Johan Åström (2014) +Garpinger, Olof, Tore Hägglund, and Karl Johan Åström (2014) \"Performance and robustness trade-offs in PID control.\" Journal of Process Control 24.5 (2014): 568-577.

                                -Åström, Karl Johan and Tore Hägglund (2004) +Åström, Karl Johan and Tore Hägglund (2004) \"Revisiting the Ziegler–Nichols step response method for PID control.\" Journal of process control 14.6 (2004): 635-650.

                                diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/PIDWithAutotuningAmigoFOTD.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/PIDWithAutotuningAmigoFOTD.mo index db04bb53336..f44f14d140f 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/PIDWithAutotuningAmigoFOTD.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/PIDWithAutotuningAmigoFOTD.mo @@ -25,27 +25,35 @@ block PIDWithAutotuningAmigoFOTD "Lower value for the relay output"; parameter Real deaBan(min=1E-6) = 0.5 "Deadband for holding the output value"; - parameter Real yRef = 0.8 + parameter Real yRef(min=1E-6) = 0.8 "Reference output for the tuning process"; Buildings.Controls.OBC.CDL.Interfaces.RealInput u_s - "Connector for setpoint input signal" + "Setpoint" annotation (Placement(transformation(extent={{-140,-20},{-100,20}}),iconTransformation(extent={{-140,-20},{-100,20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput u_m "Connector for measurement input signal" annotation (Placement(transformation(origin={0,-120},extent={{20,-20},{-20,20}},rotation=270),iconTransformation(extent={{20,-20},{-20,20}},rotation=270,origin={0,-120}))); - Buildings.Controls.OBC.CDL.Interfaces.BooleanInput trigger - "Resets the controller output when trigger becomes true" - annotation (Placement(transformation(extent={{-20,-20},{20,20}},rotation=90,origin={-60,-120}), iconTransformation(extent={{-20,-20},{20,20}},rotation=90,origin={-60,-120}))); + Buildings.Controls.OBC.CDL.Interfaces.BooleanInput tri + "Resets the controller output when trigger becomes true" annotation ( + Placement(transformation( + extent={{-20,-20},{20,20}}, + rotation=90, + origin={-60,-120}), iconTransformation( + extent={{-20,-20},{20,20}}, + rotation=90, + origin={-60,-120}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput y "Connector for actuator output signal" annotation (Placement(transformation(extent={{100,-20},{140,20}}),iconTransformation(extent={{100,-20},{140,20}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Controller rel( final yHig=yHig, final yLow=yLow, - final deaBan=deaBan) "A relay controller" + final deaBan=deaBan) + "A relay controller" annotation (Placement(transformation(extent={{22,20},{42,40}}))); Buildings.Controls.OBC.Utilities.PIDWithInputGains PID( - controllerType=controllerType) "A PID controller" + controllerType=controllerType) + "A PID controller" annotation (Placement(transformation(extent={{22,-40},{42,-20}}))); Buildings.Controls.OBC.CDL.Continuous.Switch swi "Switch between a PID controller and a relay controller" @@ -71,8 +79,9 @@ block PIDWithAutotuningAmigoFOTD Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PID PIDPra if with_D "Parameters of a PID controller" annotation (Placement(transformation(extent={{-60,40},{-80,60}}))); - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.ResponseProcess resPro(final - yHig=yHig - yRef, final yLow=yRef + yLow) + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.ResponseProcess resPro( + final yHig=yHig - yRef, + final yLow=yRef + yLow) "A block to process the response from the relay controller" annotation (Placement(transformation(extent={{20,40},{0,60}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.ModelTime modTim @@ -97,8 +106,8 @@ equation color={0,0,127})); connect(rel.u_s, u_s) annotation (Line(points={{20,30},{-80,30},{-80,0},{-120, 0}}, color={0,0,127})); - connect(PID.trigger, trigger) annotation (Line(points={{26,-42},{26,-92},{-60, - -92},{-60,-120}}, color={255,0,255})); + connect(PID.trigger, tri) annotation (Line(points={{26,-42},{26,-92},{-60,-92}, + {-60,-120}}, color={255,0,255})); connect(swi.y, y) annotation (Line(points={{84,0},{96,0},{96,0},{120,0}}, color={0,0,127})); connect(samk.y,PID. k) annotation (Line(points={{-18,-20},{-16,-20},{-16,-22}, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo index 20333aed307..36345e6e359 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo @@ -40,7 +40,7 @@ block Controller final k=-yLow) "Lower value for the output" annotation (Placement(transformation(extent={{-40,-50},{-20,-30}}))); - Buildings.Controls.OBC.CDL.Continuous.Subtract controlError + Buildings.Controls.OBC.CDL.Continuous.Subtract conErr "Control error (set point - measurement)" annotation (Placement(transformation(extent={{-76,10},{-56,30}}))); @@ -67,16 +67,14 @@ equation {58,-8}}, color={0,0,127})); connect(yOn, swi.u2) annotation (Line(points={{120,-60},{52,-60},{52,0},{58,0}}, color={255,0,255})); - connect(controlError.y, yErr) annotation (Line(points={{-54,20},{94,20},{94,0}, - {120,0}}, color={0,0,127})); + connect(conErr.y, yErr) annotation (Line(points={{-54,20},{94,20},{94,0},{120, + 0}}, color={0,0,127})); connect(greMeaSet.y, swi.u2) annotation (Line(points={{2,0},{58,0}}, color={255,0,255})); - connect(controlError.u1, u_m) - annotation (Line(points={{-78,26},{-90,26},{-90, - -6},{-64,-6},{-64,-94},{0,-94},{0,-120}}, color={0,0,127})); - connect(controlError.u2, u_s) - annotation (Line(points={{-78,14},{-80,14},{-80, - 0},{-120,0}}, color={0,0,127})); + connect(conErr.u1, u_m) annotation (Line(points={{-78,26},{-90,26},{-90,-6},{ + -64,-6},{-64,-94},{0,-94},{0,-120}}, color={0,0,127})); + connect(conErr.u2, u_s) annotation (Line(points={{-78,14},{-80,14},{-80,0},{-120, + 0}}, color={0,0,127})); annotation (defaultComponentName = "relCon", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( @@ -98,9 +96,9 @@ equation

                                t-Δt is the previous time step.

                                Note that this block generates an asymmetric signal, meaning yhig ≠ ylow

                                References

                                -

                                Josefin Berner (2017), -Automatic Controller Tuning using Relay-based Model Identification. -Department of Automatic Control, Lund Institute of Technology, Lund University.

                                +

                                Josefin Berner (2017) +\"Automatic Controller Tuning using Relay-based Model Identification.\" +Department of Automatic Control, Lund Institute of Technology, Lund University.

                                ", revisions="
                                • diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo index 5ad94fc5579..ca804e189ee 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo @@ -19,8 +19,8 @@ block HalfPeriodRatio {{100,-10},{120,10}}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput triEnd "A boolean signal, true if the tuning completes" annotation (Placement( - transformation(extent={{100,-80},{140,-40}}), iconTransformation(extent - ={{100,-70},{120,-50}}))); + transformation(extent={{100,-80},{140,-40}}), iconTransformation(extent= + {{100,-70},{120,-50}}))); Buildings.Controls.OBC.CDL.Continuous.Min tmin "Minimum value of the length for the On period and the length for the off period " annotation (Placement(transformation(extent={{-80,20},{-60,40}}))); @@ -176,7 +176,7 @@ First implementation

                                  Note that only the first On period and the first Off period are considered.

                                  References

                                  Josefin Berner (2017) -Automatic Controller Tuning using Relay-based Model Identification. +\"Automatic Controller Tuning using Relay-based Model Identification.\" Department of Automatic Control, Lund Institute of Technology, Lund University.

                                  ")); end HalfPeriodRatio; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/NormalizedTimeDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/NormalizedTimeDelay.mo index d5a52a18488..8a4eb816dbf 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/NormalizedTimeDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/NormalizedTimeDelay.mo @@ -93,7 +93,7 @@ Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.NormalizedTi

                                  References

                                  -Josefin Berner (2017). +Josefin Berner (2017) \"Automatic Controller Tuning using Relay-based Model Identification.\" Department of Automatic Control, Lund Institute of Technology, Lund University.

                                  diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo index e9926929fe0..493c8c3edd2 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo @@ -2,7 +2,7 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay; block OnOffPeriod "Calculate the lengths of the On period and the Off period" Buildings.Controls.OBC.CDL.Interfaces.RealInput tim - "Connector for the input signal of the simulation time" + "Simulation time" annotation (Placement(transformation(extent={{-140,40},{-100,80}}), iconTransformation(extent={{-140,40},{-100,80}}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanInput On @@ -19,7 +19,7 @@ block OnOffPeriod "Simulation time when the input signal becomes On (True)" annotation (Placement(transformation(extent={{-30,30},{-10,50}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler timOff - "Simulation time when the input signal becomes Off (False)" + "Simulation time when the input signal becomesss Off (False)" annotation (Placement(transformation(extent={{-30,-40},{-10,-20}}))); Buildings.Controls.OBC.CDL.Logical.Not Off "Relay switch off" @@ -112,7 +112,7 @@ First implementation

                                  2) the length of the Off period (when the relay switch signal becomes False).

                                  References

                                  -Josefin Berner (2017). +Josefin Berner (2017) \"Automatic Controller Tuning using Relay-based Model Identification.\" Department of Automatic Control, Lund Institute of Technology, Lund University.

                                  diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo index 80936072d3d..8c539e82505 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo @@ -6,37 +6,37 @@ block ResponseProcess parameter Real yLow(min=1E-6) = 0.5 "Lower value for the output"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput On - "Connector for relay switch signal" annotation (Placement(transformation( + "Relay switch signal" annotation (Placement(transformation( extent={{-140,-80},{-100,-40}}), iconTransformation(extent={{-140,-80}, {-100,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput tim - "Connector for the input signal of the simulation time" + "Simulation time" annotation (Placement(transformation(extent={{-140,40},{-100,80}}), iconTransformation(extent={{-140,40},{-100,80}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput tOn - "Connector for a real signal of the length for the On period" + "Length for the On period" annotation (Placement(transformation(extent={{100,60},{140,100}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput tOff - "Connector for a real output signal of the length for the Off period" + "length for the Off period" annotation (Placement(transformation(extent={{100,20},{140,60}}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput triSta - "Connector for a boolean signal, true if the tuning starts" + "A boolean signal, true if the tuning starts" annotation (Placement(transformation(extent={{100,-60},{140,-20}}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput triEnd - "Connector for a boolean signal, true if the tuning ends" + "A boolean signal, true if the tuning ends" annotation (Placement(transformation(extent={{100,-100},{140,-60}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput tau - "Connector for a real signal of the normalized time delay" + "A real signal of the normalized time delay" annotation (Placement(transformation(extent={{100,-20},{140,20}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.OnOffPeriod onOffPer - "Calculates the length of the On period and the Off period" + "Calculate the length of the On period and the Off period" annotation (Placement(transformation(extent={{-60,0},{-40,20}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.HalfPeriodRatio halPerRatio - "Calculates the half period ratio" + "Calculat the half period ratio" annotation (Placement(transformation(extent={{0,0},{20,20}}))); - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.NormalizedTimeDelay norTimDel(final - gamma=max(yHig, yLow)/min(yLow, yHig)) - "calculates the normalized time delay" + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.NormalizedTimeDelay norTimDel( + final gamma=max(yHig, yLow)/min(yLow, yHig)) + "calculate the normalized time delay" annotation (Placement(transformation(extent={{40,0},{60,20}}))); equation diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo index 8c3ec8053ed..44f44544dc2 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo @@ -35,13 +35,14 @@ block ControlProcessModel Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Gain gain( final yHig=yHig, final yLow=yLow) - "Calculates the gain" + "Calculate the gain" annotation (Placement(transformation(extent={{-84,-10},{-64,10}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.TimeConstantDelay timConDel( final yHig=yHig, final yLow=yLow, - deaBan=deaBan) "Calculate the time constant and the time delay" + deaBan=deaBan) + "Calculate the time constant and the time delay" annotation (Placement(transformation(extent={{0,-10},{20,10}}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanInput triSta "Relay tuning status, true if the tuning starts" annotation (Placement( @@ -74,7 +75,7 @@ block ControlProcessModel "Product of the normalized time delay and -1" annotation (Placement(transformation(extent={{-36,-90},{-16,-70}}))); Buildings.Controls.OBC.CDL.Continuous.AddParameter addPar(p=1) - "Difference between 1 and the normalized time delay" + "Difference between 1 and the normalized time delay" annotation (Placement(transformation(extent={{-8,-90},{12,-70}}))); Buildings.Controls.OBC.CDL.Continuous.Divide div "The output of samtau divided by that of addPar" diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Gain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Gain.mo index 3d263c79bce..0e481e1048f 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Gain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Gain.mo @@ -13,7 +13,7 @@ block Gain "Identifies the gain of a first order time delayed model" annotation (Placement(transformation(extent={{-140,-20},{-100,20}}), iconTransformation(extent={{-140,-20},{-100,20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput tOff - "length for the Off period" + "Length for the Off period" annotation (Placement(transformation(extent={{-140,-100},{-100,-60}}), iconTransformation(extent={{-140,-100},{-100,-60}}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanInput triSta @@ -32,7 +32,7 @@ block Gain "Identifies the gain of a first order time delayed model" final k=1,y_start=1E-11) "Integral of the process output" annotation (Placement(transformation(extent={{-40,30},{-20,50}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.Constant refeRelOut( + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant refRelOut( final k=0) "Reference value of the relay control output" annotation (Placement(transformation(extent={{-80,10},{-60,30}}))); @@ -42,19 +42,17 @@ block Gain "Identifies the gain of a first order time delayed model" final p=1E-11) "Avoid divide-by-zero errors" annotation (Placement(transformation(extent={{0,-50},{20,-30}}))); - Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gaitOnyHig( - final k=yHig) - "Product of tOn and yHig" + Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gaiOnyHig( + final k=yHig) "Product of tOn and yHig" annotation (Placement(transformation(extent={{-80,-30},{-60,-10}}))); - Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gaitOffyLow( - final k=-yLow) - "Product of tOff and yLow" + Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gaiOffyLow( + final k=-yLow) "Product of tOff and yLow" annotation (Placement(transformation(extent={{-80,-90},{-60,-70}}))); equation connect(Iy.u, u) annotation (Line(points={{-42,40},{-90,40},{-90,80},{-120,80}}, color={0,0,127})); - connect(refeRelOut.y, Iy.y_reset_in) annotation (Line(points={{-58,20},{-50,20}, + connect(refRelOut.y, Iy.y_reset_in) annotation (Line(points={{-58,20},{-50,20}, {-50,32},{-42,32}}, color={0,0,127})); connect(Iy.trigger, triSta) annotation (Line(points={{-30,28},{-30,-20},{-10,-20}, {-10,-96},{0,-96},{0,-120}}, color={255,0,255})); @@ -64,16 +62,16 @@ equation connect(addPar.y, divIyIu.u2) annotation (Line(points={{22,-40},{26,-40},{26,-6}, {30,-6}}, color={0,0,127})); connect(divIyIu.y, k) annotation (Line(points={{54,0},{120,0}}, color={0,0,127})); - connect(gaitOnyHig.u, tOn) annotation (Line(points={{-82,-20},{-90,-20},{-90,0}, + connect(gaiOnyHig.u, tOn) annotation (Line(points={{-82,-20},{-90,-20},{-90,0}, {-120,0}}, color={0,0,127})); - connect(gaitOnyHig.y, Iu.u1) annotation (Line(points={{-58,-20},{-50,-20},{-50, + connect(gaiOnyHig.y, Iu.u1) annotation (Line(points={{-58,-20},{-50,-20},{-50, -34},{-42,-34}}, color={0,0,127})); - connect(gaitOffyLow.u, tOff) + connect(gaiOffyLow.u, tOff) annotation (Line(points={{-82,-80},{-120,-80}}, color={0,0,127})); - connect(gaitOffyLow.y, Iu.u2) annotation (Line(points={{-58,-80},{-50,-80},{-50, + connect(gaiOffyLow.y, Iu.u2) annotation (Line(points={{-58,-80},{-50,-80},{-50, -46},{-42,-46}}, color={0,0,127})); annotation ( - defaultComponentName = "gain", + defaultComponentName = "gai", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-100,-100},{100,100}}, @@ -114,6 +112,5 @@ Iu = ton (yhig - yref)+ toffJosefin Berner (2017). \"Automatic Controller Tuning using Relay-based Model Identification\". Department of Automatic Control, Lund Institute of Technology, Lund University.

                                  -"), - __Dymola_Commands(file="../../123.mos" "123")); +")); end Gain; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/TimeConstantDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/TimeConstantDelay.mo index bf5069c476e..48b2572703e 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/TimeConstantDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/TimeConstantDelay.mo @@ -37,7 +37,7 @@ block TimeConstantDelay Buildings.Controls.OBC.CDL.Continuous.Sources.Constant yLowSig(k=yLow) "Lower value for the output" annotation (Placement(transformation(extent={{-40,30},{-20,50}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.Constant relayDeaBan(k=deaBan) + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant relDeaBan(k=deaBan) "Dead band of the relay controller" annotation (Placement(transformation(extent={{0,30},{20,50}}))); Buildings.Controls.OBC.CDL.Continuous.Add add1 @@ -78,8 +78,8 @@ equation connect(ratioLT, exp.u) annotation (Line(points={{-120,-60},{-90,-60},{-90,-50},{-82,-50}}, color={0,0,127})); - connect(relayDeaBan.y, div1.u1) annotation (Line(points={{22,40},{28,40},{28,2}, - {-4,2},{-4,-14},{-2,-14}}, color={0,0,127})); + connect(relDeaBan.y, div1.u1) annotation (Line(points={{22,40},{28,40},{28,2}, + {-4,2},{-4,-14},{-2,-14}}, color={0,0,127})); connect(sub2.u1, div1.y) annotation (Line(points={{28,-34},{26,-34},{26,-20},{ 22,-20}}, color={0,0,127})); connect(sub2.u2, yLowSig.y) annotation (Line(points={{28,-46},{-12,-46},{-12,40}, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithAutotuningAmigoFOTD.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithAutotuningAmigoFOTD.mo index 1fc2fe378c5..3a69eaf4580 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithAutotuningAmigoFOTD.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithAutotuningAmigoFOTD.mo @@ -4,12 +4,12 @@ model PIDWithAutotuningAmigoFOTD "Test model for PIDWithAutotuning" "Setpoint value" annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.PIDWithAutotuningAmigoFOTD - PIdWitAutotuning( + PIDWitTun( controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PID, yHig=1, yLow=0.1, deaBan=0.1, - setPoint=0.8) "PI controller with an autotuning feature" + yRef=0.8) "PID controller with an autotuning feature" annotation (Placement(transformation(extent={{-20,-30},{0,-10}}))); Buildings.Controls.OBC.CDL.Continuous.PIDWithReset PID( controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PID, @@ -26,7 +26,8 @@ model PIDWithAutotuningAmigoFOTD "Test model for PIDWithAutotuning" Buildings.Controls.OBC.CDL.Discrete.UnitDelay uniDel1(samplePeriod=240) "A delay process for control process 1" annotation (Placement(transformation(extent={{10,50},{30,70}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.Constant k(k=1) "Gain of the first order process" + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant k(k=1) + "Gain of the first order process" annotation (Placement(transformation(extent={{180,20},{160,40}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.Constant T(k=10) "Time constant of the first order process" @@ -43,7 +44,7 @@ model PIDWithAutotuningAmigoFOTD "Test model for PIDWithAutotuning" Buildings.Controls.OBC.CDL.Continuous.Derivative derivative2 "A derivative block that is used to mimic the first order process 2" annotation (Placement(transformation(extent={{80,-60},{60,-40}}))); - + equation connect(resSig.y, PI.trigger) annotation (Line(points={{-58,70},{-30,70},{-30, 40},{-16,40},{-16,48}}, color={255,0,255})); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD.mo index b759612348d..6677a2d50a5 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD.mo @@ -4,12 +4,12 @@ model PIWithAutotuningAmigoFOTD "Test model for PIDWithAutotuning" "Setpoint value" annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.PIDWithAutotuningAmigoFOTD - PIWitAutotuning( + PIDWitTun( controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PI, yHig=1, yLow=0.1, deaBan=0.1, - setPoint=0.8) "PI controller with an autotuning feature" + yRef=0.8) "PI controller with an autotuning feature" annotation (Placement(transformation(extent={{-20,-30},{0,-10}}))); Buildings.Controls.OBC.CDL.Continuous.PIDWithReset PI( controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PI, @@ -20,13 +20,14 @@ model PIWithAutotuningAmigoFOTD "Test model for PIDWithAutotuning" Buildings.Controls.OBC.CDL.Logical.Sources.Constant resSig(k=false) "Reset signal" annotation (Placement(transformation(extent={{-80,60},{-60,80}}))); - Buildings.Controls.OBC.CDL.Discrete.UnitDelay uniDel2(samplePeriod=240) - "A delay process for control process 2" - annotation (Placement(transformation(extent={{10,-30},{30,-10}}))); Buildings.Controls.OBC.CDL.Discrete.UnitDelay uniDel1(samplePeriod=240) "A delay process for control process 1" annotation (Placement(transformation(extent={{10,50},{30,70}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.Constant k(k=1) "Gain of the first order process" + Buildings.Controls.OBC.CDL.Discrete.UnitDelay uniDel2(samplePeriod=240) + "A delay process for control process 2" + annotation (Placement(transformation(extent={{10,-30},{30,-10}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant k(k=1) + "Gain of the first order process" annotation (Placement(transformation(extent={{180,20},{160,40}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.Constant T(k=10) "Time constant of the first order process" @@ -43,17 +44,17 @@ model PIWithAutotuningAmigoFOTD "Test model for PIDWithAutotuning" Buildings.Controls.OBC.CDL.Continuous.Derivative derivative2 "A derivative block that is used to mimic the first order process 2" annotation (Placement(transformation(extent={{80,-60},{60,-40}}))); - + equation connect(resSig.y, PI.trigger) annotation (Line(points={{-58,70},{-30,70},{-30, 40},{-16,40},{-16,48}}, color={255,0,255})); - connect(PIWitAutotuning.trigger, PI.trigger) annotation (Line(points={{-16,-32}, - {-16,-38},{-30,-38},{-30,40},{-16,40},{-16,48}}, color={255,0,255})); - connect(PIWitAutotuning.u_s, PI.u_s) annotation (Line(points={{-22,-20},{-48,-20}, - {-48,60},{-22,60}}, color={0,0,127})); + connect(PIDWitTun.tri, PI.trigger) annotation (Line(points={{-16,-32},{-16,-38}, + {-30,-38},{-30,40},{-16,40},{-16,48}}, color={255,0,255})); + connect(PIDWitTun.u_s, PI.u_s) annotation (Line(points={{-22,-20},{-48,-20},{-48, + 60},{-22,60}}, color={0,0,127})); connect(SetPoint.y, PI.u_s) annotation (Line(points={{-58,10},{-48,10},{-48,60}, {-22,60}}, color={0,0,127})); - connect(PIWitAutotuning.y, uniDel2.u) + connect(PIDWitTun.y, uniDel2.u) annotation (Line(points={{2,-20},{8,-20}}, color={0,0,127})); connect(uniDel1.u, PI.y) annotation (Line(points={{8,60},{2,60}}, color={0,0,127})); @@ -72,8 +73,8 @@ equation connect(derivative2.y,sub2. u2) annotation (Line(points={{58,-50},{52,-50},{ 52,-16},{58,-16}}, color={0,0,127})); - connect(sub2.y, PIWitAutotuning.u_m) annotation (Line(points={{82,-10},{88,-10}, - {88,-26},{46,-26},{46,-38},{-10,-38},{-10,-32}}, color={0,0,127})); + connect(sub2.y, PIDWitTun.u_m) annotation (Line(points={{82,-10},{88,-10},{88, + -26},{46,-26},{46,-38},{-10,-38},{-10,-32}}, color={0,0,127})); connect(derivative2.k, derivative1.k) annotation (Line(points={{82,-42},{92,-42}, {92,44},{80,44}}, color={0,0,127})); connect(derivative2.T, T.y) annotation (Line(points={{82,-46},{148,-46},{148, diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIDDerivativeTime.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIDDerivativeTime.mos index 229cbcefb42..303ac7c1662 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIDDerivativeTime.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIDDerivativeTime.mos @@ -1,3 +1,3 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDDerivativeTime", method="Cvode", tolerance=1e-06, resultFile="PIDDerivativeTime"); -createPlot(id=1, position={35, 35, 1484, 920}, y={"PIDDerivativeTime.T", "PIDDerivativeTime.L"}, range={0.0, 1.0, 0.2, 1.2}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={75, 75, 1484, 920}, y={"ReferenceData.y[6]", "PIDDerivativeTime.Td"}, range={0.0, 1.0, 0.10000000000000002, 0.30000000000000004}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}, timeUnit="s"); +createPlot(id=1, position={35, 35, 1484, 920}, y={"PIDDerTim.T", "PIDDerTim.L"}, range={0.0, 1.0, 0.2, 1.2}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={75, 75, 1484, 920}, y={"RefDat.y[6]", "PIDDerTim.Td"}, range={0.0, 1.0, 0.10000000000000002, 0.30000000000000004}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}, timeUnit="s"); diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIDGain.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIDGain.mos index 68b93e39814..752c494cf42 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIDGain.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIDGain.mos @@ -1,4 +1,4 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDGain", method="Cvode", tolerance=1e-06, resultFile="PIDGain"); -createPlot(id=1, position={15, 15, 1484, 920}, y={"PIDGain.kp", "PIDGain.T", "PIDGain.L"}, range={0.0, 1.0, 0.0, 2.5}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}, {0,140,72}}); -createPlot(id=1, position={15, 15, 1484, 920}, y={"PIDGain.k", "ReferenceData.y[4]"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={15, 15, 1484, 920}, y={"PIDGai.kp", "PIDGai.T", "PIDGai.L"}, range={0.0, 1.0, 0.0, 2.5}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}, {0,140,72}}); +createPlot(id=1, position={15, 15, 1484, 920}, y={"PIDGai.k", "RefDat.y[4]"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIDIntegralTime.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIDIntegralTime.mos index 3c6a4501ee4..6df57e58290 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIDIntegralTime.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIDIntegralTime.mos @@ -1,4 +1,4 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDIntegralTime", method="Cvode", tolerance=1e-06, resultFile="PIDIntegralTime"); -createPlot(id=1, position={75, 75, 1484, 920}, y={"PIDIntegralTime.T", "PIDIntegralTime.L"}, range={0.0, 1.0, 0.2, 1.2}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={75, 75, 1484, 920}, y={"PIDIntegralTime.Ti", "ReferenceData.y[5]"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={75, 75, 1484, 920}, y={"PIDIntTim.T", "PIDIntTim.L"}, range={0.0, 1.0, 0.2, 1.2}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={75, 75, 1484, 920}, y={"PIDIntTim.Ti", "RefDat.y[5]"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIGain.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIGain.mos index d219da216a9..e8783aee57e 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIGain.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIGain.mos @@ -1,4 +1,4 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIGain", method="Cvode", tolerance=1e-06, resultFile="PIGain"); -createPlot(id=1, position={35, 35, 1484, 920}, y={"PIGain.kp", "PIGain.T", "PIGain.L"}, range={0.0, 1.0, 0.0, 2.5}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}, {0,140,72}}); -createPlot(id=1, position={35, 35, 1484, 920}, y={"PIGain.k", "ReferenceData.y[4]"}, range={0.0, 1.0, 0.15000000000000002, 0.35000000000000003}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={35, 35, 1484, 920}, y={"PIGai.kp", "PIGai.T", "PIGai.L"}, range={0.0, 1.0, 0.0, 2.5}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}, {0,140,72}}); +createPlot(id=1, position={35, 35, 1484, 920}, y={"PIGai.k", "RefDat.y[4]"}, range={0.0, 1.0, 0.15000000000000002, 0.35000000000000003}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIIntegralTime.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIIntegralTime.mos index ff566e36c0b..6d0560de83b 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIIntegralTime.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIIntegralTime.mos @@ -1,4 +1,4 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIIntegralTime", method="Cvode", tolerance=1e-06, resultFile="PIIntegralTime"); -createPlot(id=1, position={95, 95, 1484, 920}, y={"PIIntegralTime.T", "PIIntegralTime.L"}, range={0.0, 1.0, 0.2, 1.2}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={95, 95, 1484, 920}, y={"PIIntegralTime.Ti", "ReferenceData.y[5]"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={95, 95, 1484, 920}, y={"PIIntTim.T", "PIIntTim.L"}, range={0.0, 1.0, 0.2, 1.2}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={95, 95, 1484, 920}, y={"PIIntTim.Ti", "RefDat.y[5]"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); From 565803959294b09bf31adf697d02d3da479de2e2 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Thu, 8 Sep 2022 21:12:59 -0400 Subject: [PATCH 026/214] fix the uppercase in the script path --- .../PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mos | 4 ++++ .../PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mos | 5 +++++ .../AutoTuner/AMIGO/Validation/PIDDerivativeTime.mos | 3 +++ .../PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mos | 4 ++++ .../AutoTuner/AMIGO/Validation/PIDIntegralTime.mos | 4 ++++ .../PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mos | 4 ++++ .../AutoTuner/AMIGO/Validation/PIIntegralTime.mos | 4 ++++ 7 files changed, 28 insertions(+) create mode 100644 Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mos create mode 100644 Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mos create mode 100644 Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mos create mode 100644 Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mos create mode 100644 Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mos create mode 100644 Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mos create mode 100644 Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mos diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mos new file mode 100644 index 00000000000..5f19c5b9431 --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mos @@ -0,0 +1,4 @@ +simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PI", method="Cvode", tolerance=1e-06, resultFile="PI"); +createPlot(id=1, position={95, 95, 1484, 920}, y={"PI.k", "ReferenceData.y[4]"}, range={0.0, 1.0, 0.15000000000000002, 0.4}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={95, 95, 1484, 920}, y={"PI.Ti", "ReferenceData.y[5]"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); + diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mos new file mode 100644 index 00000000000..a5c32b03ce6 --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mos @@ -0,0 +1,5 @@ +simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PID", method="Cvode", tolerance=1e-06, resultFile="PID"); +createPlot(id=1, position={75, 75, 1488, 1095}, y={"PID.k", "ReferenceData.y[4]"}, range={0.0, 1.0, 0.4, 1.2000000000000002}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={75, 75, 1488, 1095}, y={"PID.Ti", "ReferenceData.y[5]"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={75, 75, 1488, 1095}, y={"PID.Td", "ReferenceData.y[6]"}, range={0.0, 1.0, 0.1, 0.30000000000000004}, grid=true, subPlot=103, colors={{28,108,200}, {238,46,47}}); + diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mos new file mode 100644 index 00000000000..229cbcefb42 --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mos @@ -0,0 +1,3 @@ +simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDDerivativeTime", method="Cvode", tolerance=1e-06, resultFile="PIDDerivativeTime"); +createPlot(id=1, position={35, 35, 1484, 920}, y={"PIDDerivativeTime.T", "PIDDerivativeTime.L"}, range={0.0, 1.0, 0.2, 1.2}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={75, 75, 1484, 920}, y={"ReferenceData.y[6]", "PIDDerivativeTime.Td"}, range={0.0, 1.0, 0.10000000000000002, 0.30000000000000004}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}, timeUnit="s"); diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mos new file mode 100644 index 00000000000..68b93e39814 --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mos @@ -0,0 +1,4 @@ +simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDGain", method="Cvode", tolerance=1e-06, resultFile="PIDGain"); +createPlot(id=1, position={15, 15, 1484, 920}, y={"PIDGain.kp", "PIDGain.T", "PIDGain.L"}, range={0.0, 1.0, 0.0, 2.5}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}, {0,140,72}}); +createPlot(id=1, position={15, 15, 1484, 920}, y={"PIDGain.k", "ReferenceData.y[4]"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); + diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mos new file mode 100644 index 00000000000..3c6a4501ee4 --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mos @@ -0,0 +1,4 @@ +simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDIntegralTime", method="Cvode", tolerance=1e-06, resultFile="PIDIntegralTime"); +createPlot(id=1, position={75, 75, 1484, 920}, y={"PIDIntegralTime.T", "PIDIntegralTime.L"}, range={0.0, 1.0, 0.2, 1.2}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={75, 75, 1484, 920}, y={"PIDIntegralTime.Ti", "ReferenceData.y[5]"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); + diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mos new file mode 100644 index 00000000000..d219da216a9 --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mos @@ -0,0 +1,4 @@ +simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIGain", method="Cvode", tolerance=1e-06, resultFile="PIGain"); +createPlot(id=1, position={35, 35, 1484, 920}, y={"PIGain.kp", "PIGain.T", "PIGain.L"}, range={0.0, 1.0, 0.0, 2.5}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}, {0,140,72}}); +createPlot(id=1, position={35, 35, 1484, 920}, y={"PIGain.k", "ReferenceData.y[4]"}, range={0.0, 1.0, 0.15000000000000002, 0.35000000000000003}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); + diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mos new file mode 100644 index 00000000000..ff566e36c0b --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mos @@ -0,0 +1,4 @@ +simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIIntegralTime", method="Cvode", tolerance=1e-06, resultFile="PIIntegralTime"); +createPlot(id=1, position={95, 95, 1484, 920}, y={"PIIntegralTime.T", "PIIntegralTime.L"}, range={0.0, 1.0, 0.2, 1.2}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={95, 95, 1484, 920}, y={"PIIntegralTime.Ti", "ReferenceData.y[5]"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); + From 143d700aab6553f3ba80330381138903fca880a3 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Tue, 13 Sep 2022 17:17:11 -0400 Subject: [PATCH 027/214] update the script --- .../Validation/PIWithAutotuningAmigoFOTD.mo | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD.mo index 6677a2d50a5..d223b86c720 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD.mo @@ -4,7 +4,7 @@ model PIWithAutotuningAmigoFOTD "Test model for PIDWithAutotuning" "Setpoint value" annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.PIDWithAutotuningAmigoFOTD - PIDWitTun( + PIWitTun( controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PI, yHig=1, yLow=0.1, @@ -48,13 +48,13 @@ model PIWithAutotuningAmigoFOTD "Test model for PIDWithAutotuning" equation connect(resSig.y, PI.trigger) annotation (Line(points={{-58,70},{-30,70},{-30, 40},{-16,40},{-16,48}}, color={255,0,255})); - connect(PIDWitTun.tri, PI.trigger) annotation (Line(points={{-16,-32},{-16,-38}, + connect(PIWitTun.tri, PI.trigger) annotation (Line(points={{-16,-32},{-16,-38}, {-30,-38},{-30,40},{-16,40},{-16,48}}, color={255,0,255})); - connect(PIDWitTun.u_s, PI.u_s) annotation (Line(points={{-22,-20},{-48,-20},{-48, + connect(PIWitTun.u_s, PI.u_s) annotation (Line(points={{-22,-20},{-48,-20},{-48, 60},{-22,60}}, color={0,0,127})); connect(SetPoint.y, PI.u_s) annotation (Line(points={{-58,10},{-48,10},{-48,60}, {-22,60}}, color={0,0,127})); - connect(PIDWitTun.y, uniDel2.u) + connect(PIWitTun.y, uniDel2.u) annotation (Line(points={{2,-20},{8,-20}}, color={0,0,127})); connect(uniDel1.u, PI.y) annotation (Line(points={{8,60},{2,60}}, color={0,0,127})); @@ -73,7 +73,7 @@ equation connect(derivative2.y,sub2. u2) annotation (Line(points={{58,-50},{52,-50},{ 52,-16},{58,-16}}, color={0,0,127})); - connect(sub2.y, PIDWitTun.u_m) annotation (Line(points={{82,-10},{88,-10},{88, + connect(sub2.y, PIWitTun.u_m) annotation (Line(points={{82,-10},{88,-10},{88, -26},{46,-26},{46,-38},{-10,-38},{-10,-32}}, color={0,0,127})); connect(derivative2.k, derivative1.k) annotation (Line(points={{82,-42},{92,-42}, {92,44},{80,44}}, color={0,0,127})); From aecac0f511f78d4c48baba7a9d3e6a5b65548b90 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Tue, 13 Sep 2022 17:27:17 -0400 Subject: [PATCH 028/214] update the script --- .../PIDWithAutotuning/Validation/PIDWithAutotuningAmigoFOTD.mos | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithAutotuningAmigoFOTD.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithAutotuningAmigoFOTD.mos index 51b07934aff..d51bde7e20b 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithAutotuningAmigoFOTD.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithAutotuningAmigoFOTD.mos @@ -1,5 +1,5 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIDWithAutotuningAmigoFOTD", stopTime=10000, method="Cvode", tolerance=1e-06, resultFile="PIDWithAutotuningAmigoFOTD"); createPlot(id=1, position={95, 95, 1494, 1014}, y={"PID.u_s", "PID.u_m"}, range={0.0, 10000.0, -0.5, 1.5}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={95, 95, 1494, 1014}, y={"PIDWitAutotuning.u_s", "PIDWitAutotuning.u_m"}, range={0.0, 10000.0, -0.5, 1.5}, autoscale=false, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={95, 95, 1494, 1014}, y={"PIDWitTun.u_s", "PIDWitTun.u_m"}, range={0.0, 10000.0, -0.5, 1.5}, autoscale=false, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); createPlot(id=1, position={95, 95, 1494, 1014}, y={"resSig.y"}, range={0.0, 10000.0, -0.5, 1.5}, autoscale=false, grid=true, subPlot=103, colors={{28,108,200}}); From 5d6386a1b39edadea1dc6f7a8546db23d6e14a79 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Tue, 13 Sep 2022 21:10:40 -0400 Subject: [PATCH 029/214] remove the folder that is uneeded --- .../AutoTuner/AMIGO/Validation/PIDDerivativeTime.mos | 4 ++-- .../PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mos | 4 ++-- .../AutoTuner/AMIGO/Validation/PIDIntegralTime.mos | 4 ++-- .../PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mos | 4 ++-- .../AutoTuner/AMIGO/Validation/PIIntegralTime.mos | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mos index 229cbcefb42..303ac7c1662 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mos @@ -1,3 +1,3 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDDerivativeTime", method="Cvode", tolerance=1e-06, resultFile="PIDDerivativeTime"); -createPlot(id=1, position={35, 35, 1484, 920}, y={"PIDDerivativeTime.T", "PIDDerivativeTime.L"}, range={0.0, 1.0, 0.2, 1.2}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={75, 75, 1484, 920}, y={"ReferenceData.y[6]", "PIDDerivativeTime.Td"}, range={0.0, 1.0, 0.10000000000000002, 0.30000000000000004}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}, timeUnit="s"); +createPlot(id=1, position={35, 35, 1484, 920}, y={"PIDDerTim.T", "PIDDerTim.L"}, range={0.0, 1.0, 0.2, 1.2}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={75, 75, 1484, 920}, y={"RefDat.y[6]", "PIDDerTim.Td"}, range={0.0, 1.0, 0.10000000000000002, 0.30000000000000004}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}, timeUnit="s"); diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mos index 68b93e39814..752c494cf42 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mos @@ -1,4 +1,4 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDGain", method="Cvode", tolerance=1e-06, resultFile="PIDGain"); -createPlot(id=1, position={15, 15, 1484, 920}, y={"PIDGain.kp", "PIDGain.T", "PIDGain.L"}, range={0.0, 1.0, 0.0, 2.5}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}, {0,140,72}}); -createPlot(id=1, position={15, 15, 1484, 920}, y={"PIDGain.k", "ReferenceData.y[4]"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={15, 15, 1484, 920}, y={"PIDGai.kp", "PIDGai.T", "PIDGai.L"}, range={0.0, 1.0, 0.0, 2.5}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}, {0,140,72}}); +createPlot(id=1, position={15, 15, 1484, 920}, y={"PIDGai.k", "RefDat.y[4]"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mos index 3c6a4501ee4..6df57e58290 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mos @@ -1,4 +1,4 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDIntegralTime", method="Cvode", tolerance=1e-06, resultFile="PIDIntegralTime"); -createPlot(id=1, position={75, 75, 1484, 920}, y={"PIDIntegralTime.T", "PIDIntegralTime.L"}, range={0.0, 1.0, 0.2, 1.2}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={75, 75, 1484, 920}, y={"PIDIntegralTime.Ti", "ReferenceData.y[5]"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={75, 75, 1484, 920}, y={"PIDIntTim.T", "PIDIntTim.L"}, range={0.0, 1.0, 0.2, 1.2}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={75, 75, 1484, 920}, y={"PIDIntTim.Ti", "RefDat.y[5]"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mos index d219da216a9..e8783aee57e 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mos @@ -1,4 +1,4 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIGain", method="Cvode", tolerance=1e-06, resultFile="PIGain"); -createPlot(id=1, position={35, 35, 1484, 920}, y={"PIGain.kp", "PIGain.T", "PIGain.L"}, range={0.0, 1.0, 0.0, 2.5}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}, {0,140,72}}); -createPlot(id=1, position={35, 35, 1484, 920}, y={"PIGain.k", "ReferenceData.y[4]"}, range={0.0, 1.0, 0.15000000000000002, 0.35000000000000003}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={35, 35, 1484, 920}, y={"PIGai.kp", "PIGai.T", "PIGai.L"}, range={0.0, 1.0, 0.0, 2.5}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}, {0,140,72}}); +createPlot(id=1, position={35, 35, 1484, 920}, y={"PIGai.k", "RefDat.y[4]"}, range={0.0, 1.0, 0.15000000000000002, 0.35000000000000003}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mos index ff566e36c0b..6d0560de83b 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mos @@ -1,4 +1,4 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIIntegralTime", method="Cvode", tolerance=1e-06, resultFile="PIIntegralTime"); -createPlot(id=1, position={95, 95, 1484, 920}, y={"PIIntegralTime.T", "PIIntegralTime.L"}, range={0.0, 1.0, 0.2, 1.2}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={95, 95, 1484, 920}, y={"PIIntegralTime.Ti", "ReferenceData.y[5]"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={95, 95, 1484, 920}, y={"PIIntTim.T", "PIIntTim.L"}, range={0.0, 1.0, 0.2, 1.2}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={95, 95, 1484, 920}, y={"PIIntTim.Ti", "RefDat.y[5]"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); From 5c7e96f08de5d650669871b1fef870967f91caec Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Tue, 13 Sep 2022 21:18:26 -0400 Subject: [PATCH 030/214] temp remove the folder --- .../AutoTuner/{AMIGO => AMIGO2}/Validation/PI.mos | 0 .../AutoTuner/{AMIGO => AMIGO2}/Validation/PID.mos | 0 .../{AMIGO => AMIGO2}/Validation/PIDDerivativeTime.mos | 0 .../AutoTuner/{AMIGO => AMIGO2}/Validation/PIDGain.mos | 0 .../{AMIGO => AMIGO2}/Validation/PIDIntegralTime.mos | 0 .../AutoTuner/{AMIGO => AMIGO2}/Validation/PIGain.mos | 0 .../{AMIGO => AMIGO2}/Validation/PIIntegralTime.mos | 0 .../PIDWithAutotuning/AutoTuner/Amigo/Validation/PI.mos | 4 ---- .../PIDWithAutotuning/AutoTuner/Amigo/Validation/PID.mos | 5 ----- .../AutoTuner/Amigo/Validation/PIDDerivativeTime.mos | 3 --- .../PIDWithAutotuning/AutoTuner/Amigo/Validation/PIDGain.mos | 4 ---- .../AutoTuner/Amigo/Validation/PIDIntegralTime.mos | 4 ---- .../PIDWithAutotuning/AutoTuner/Amigo/Validation/PIGain.mos | 4 ---- .../AutoTuner/Amigo/Validation/PIIntegralTime.mos | 4 ---- 14 files changed, 28 deletions(-) rename Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/{AMIGO => AMIGO2}/Validation/PI.mos (100%) rename Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/{AMIGO => AMIGO2}/Validation/PID.mos (100%) rename Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/{AMIGO => AMIGO2}/Validation/PIDDerivativeTime.mos (100%) rename Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/{AMIGO => AMIGO2}/Validation/PIDGain.mos (100%) rename Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/{AMIGO => AMIGO2}/Validation/PIDIntegralTime.mos (100%) rename Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/{AMIGO => AMIGO2}/Validation/PIGain.mos (100%) rename Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/{AMIGO => AMIGO2}/Validation/PIIntegralTime.mos (100%) delete mode 100644 Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PI.mos delete mode 100644 Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PID.mos delete mode 100644 Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIDDerivativeTime.mos delete mode 100644 Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIDGain.mos delete mode 100644 Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIDIntegralTime.mos delete mode 100644 Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIGain.mos delete mode 100644 Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIIntegralTime.mos diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO2/Validation/PI.mos similarity index 100% rename from Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mos rename to Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO2/Validation/PI.mos diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO2/Validation/PID.mos similarity index 100% rename from Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mos rename to Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO2/Validation/PID.mos diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO2/Validation/PIDDerivativeTime.mos similarity index 100% rename from Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mos rename to Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO2/Validation/PIDDerivativeTime.mos diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO2/Validation/PIDGain.mos similarity index 100% rename from Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mos rename to Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO2/Validation/PIDGain.mos diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO2/Validation/PIDIntegralTime.mos similarity index 100% rename from Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mos rename to Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO2/Validation/PIDIntegralTime.mos diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO2/Validation/PIGain.mos similarity index 100% rename from Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mos rename to Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO2/Validation/PIGain.mos diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO2/Validation/PIIntegralTime.mos similarity index 100% rename from Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mos rename to Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO2/Validation/PIIntegralTime.mos diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PI.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PI.mos deleted file mode 100644 index 5f19c5b9431..00000000000 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PI.mos +++ /dev/null @@ -1,4 +0,0 @@ -simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PI", method="Cvode", tolerance=1e-06, resultFile="PI"); -createPlot(id=1, position={95, 95, 1484, 920}, y={"PI.k", "ReferenceData.y[4]"}, range={0.0, 1.0, 0.15000000000000002, 0.4}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={95, 95, 1484, 920}, y={"PI.Ti", "ReferenceData.y[5]"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); - diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PID.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PID.mos deleted file mode 100644 index a5c32b03ce6..00000000000 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PID.mos +++ /dev/null @@ -1,5 +0,0 @@ -simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PID", method="Cvode", tolerance=1e-06, resultFile="PID"); -createPlot(id=1, position={75, 75, 1488, 1095}, y={"PID.k", "ReferenceData.y[4]"}, range={0.0, 1.0, 0.4, 1.2000000000000002}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={75, 75, 1488, 1095}, y={"PID.Ti", "ReferenceData.y[5]"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={75, 75, 1488, 1095}, y={"PID.Td", "ReferenceData.y[6]"}, range={0.0, 1.0, 0.1, 0.30000000000000004}, grid=true, subPlot=103, colors={{28,108,200}, {238,46,47}}); - diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIDDerivativeTime.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIDDerivativeTime.mos deleted file mode 100644 index 303ac7c1662..00000000000 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIDDerivativeTime.mos +++ /dev/null @@ -1,3 +0,0 @@ -simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDDerivativeTime", method="Cvode", tolerance=1e-06, resultFile="PIDDerivativeTime"); -createPlot(id=1, position={35, 35, 1484, 920}, y={"PIDDerTim.T", "PIDDerTim.L"}, range={0.0, 1.0, 0.2, 1.2}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={75, 75, 1484, 920}, y={"RefDat.y[6]", "PIDDerTim.Td"}, range={0.0, 1.0, 0.10000000000000002, 0.30000000000000004}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}, timeUnit="s"); diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIDGain.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIDGain.mos deleted file mode 100644 index 752c494cf42..00000000000 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIDGain.mos +++ /dev/null @@ -1,4 +0,0 @@ -simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDGain", method="Cvode", tolerance=1e-06, resultFile="PIDGain"); -createPlot(id=1, position={15, 15, 1484, 920}, y={"PIDGai.kp", "PIDGai.T", "PIDGai.L"}, range={0.0, 1.0, 0.0, 2.5}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}, {0,140,72}}); -createPlot(id=1, position={15, 15, 1484, 920}, y={"PIDGai.k", "RefDat.y[4]"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); - diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIDIntegralTime.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIDIntegralTime.mos deleted file mode 100644 index 6df57e58290..00000000000 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIDIntegralTime.mos +++ /dev/null @@ -1,4 +0,0 @@ -simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDIntegralTime", method="Cvode", tolerance=1e-06, resultFile="PIDIntegralTime"); -createPlot(id=1, position={75, 75, 1484, 920}, y={"PIDIntTim.T", "PIDIntTim.L"}, range={0.0, 1.0, 0.2, 1.2}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={75, 75, 1484, 920}, y={"PIDIntTim.Ti", "RefDat.y[5]"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); - diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIGain.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIGain.mos deleted file mode 100644 index e8783aee57e..00000000000 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIGain.mos +++ /dev/null @@ -1,4 +0,0 @@ -simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIGain", method="Cvode", tolerance=1e-06, resultFile="PIGain"); -createPlot(id=1, position={35, 35, 1484, 920}, y={"PIGai.kp", "PIGai.T", "PIGai.L"}, range={0.0, 1.0, 0.0, 2.5}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}, {0,140,72}}); -createPlot(id=1, position={35, 35, 1484, 920}, y={"PIGai.k", "RefDat.y[4]"}, range={0.0, 1.0, 0.15000000000000002, 0.35000000000000003}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); - diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIIntegralTime.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIIntegralTime.mos deleted file mode 100644 index 6d0560de83b..00000000000 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/Amigo/Validation/PIIntegralTime.mos +++ /dev/null @@ -1,4 +0,0 @@ -simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIIntegralTime", method="Cvode", tolerance=1e-06, resultFile="PIIntegralTime"); -createPlot(id=1, position={95, 95, 1484, 920}, y={"PIIntTim.T", "PIIntTim.L"}, range={0.0, 1.0, 0.2, 1.2}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={95, 95, 1484, 920}, y={"PIIntTim.Ti", "RefDat.y[5]"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); - From 1e75f9f9d496500bc7d539b17c633597ccaef931 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Tue, 13 Sep 2022 21:19:27 -0400 Subject: [PATCH 031/214] change the folder name back --- .../AutoTuner/{AMIGO2 => AMIGO}/Validation/PI.mos | 0 .../AutoTuner/{AMIGO2 => AMIGO}/Validation/PID.mos | 0 .../AutoTuner/{AMIGO2 => AMIGO}/Validation/PIDDerivativeTime.mos | 0 .../AutoTuner/{AMIGO2 => AMIGO}/Validation/PIDGain.mos | 0 .../AutoTuner/{AMIGO2 => AMIGO}/Validation/PIDIntegralTime.mos | 0 .../AutoTuner/{AMIGO2 => AMIGO}/Validation/PIGain.mos | 0 .../AutoTuner/{AMIGO2 => AMIGO}/Validation/PIIntegralTime.mos | 0 7 files changed, 0 insertions(+), 0 deletions(-) rename Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/{AMIGO2 => AMIGO}/Validation/PI.mos (100%) rename Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/{AMIGO2 => AMIGO}/Validation/PID.mos (100%) rename Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/{AMIGO2 => AMIGO}/Validation/PIDDerivativeTime.mos (100%) rename Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/{AMIGO2 => AMIGO}/Validation/PIDGain.mos (100%) rename Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/{AMIGO2 => AMIGO}/Validation/PIDIntegralTime.mos (100%) rename Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/{AMIGO2 => AMIGO}/Validation/PIGain.mos (100%) rename Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/{AMIGO2 => AMIGO}/Validation/PIIntegralTime.mos (100%) diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO2/Validation/PI.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mos similarity index 100% rename from Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO2/Validation/PI.mos rename to Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mos diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO2/Validation/PID.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mos similarity index 100% rename from Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO2/Validation/PID.mos rename to Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mos diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO2/Validation/PIDDerivativeTime.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mos similarity index 100% rename from Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO2/Validation/PIDDerivativeTime.mos rename to Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mos diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO2/Validation/PIDGain.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mos similarity index 100% rename from Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO2/Validation/PIDGain.mos rename to Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mos diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO2/Validation/PIDIntegralTime.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mos similarity index 100% rename from Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO2/Validation/PIDIntegralTime.mos rename to Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mos diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO2/Validation/PIGain.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mos similarity index 100% rename from Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO2/Validation/PIGain.mos rename to Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mos diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO2/Validation/PIIntegralTime.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mos similarity index 100% rename from Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO2/Validation/PIIntegralTime.mos rename to Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mos From 6ecc818cc6eead9f10e0aee12ccaadd85feb4f79 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Sun, 25 Sep 2022 21:01:35 -0400 Subject: [PATCH 032/214] fix issues in the syntax and example scripts --- .../OBC/CDL/Types/PIDAutoTuneModel.mo | 20 ----------------- .../Controls/OBC/CDL/Types/PIDAutoTuner.mo | 22 ------------------- .../Controls/OBC/CDL/Types/package.order | 2 -- .../PIDWithAutotuning/AutoTuner/AMIGO/PI.mo | 6 ++--- .../PIDWithAutotuning/AutoTuner/AMIGO/PID.mo | 6 ++--- .../AutoTuner/AMIGO/PIDDerivativeTime.mo | 8 +++---- .../AutoTuner/AMIGO/PIDGain.mo | 6 ++--- .../AutoTuner/AMIGO/PIDIntegralTime.mo | 4 ++-- .../AutoTuner/AMIGO/PIGain.mo | 6 ++--- .../AutoTuner/AMIGO/PIIntegralTime.mo | 6 ++--- .../PIDWithAutotuning/Relay/Controller.mo | 4 ++-- .../Validation/PIDWithAutotuningAmigoFOTD.mo | 19 ++++++++-------- .../Validation/PIWithAutotuningAmigoFOTD.mo | 3 +-- 13 files changed, 33 insertions(+), 79 deletions(-) delete mode 100644 Buildings/Controls/OBC/CDL/Types/PIDAutoTuneModel.mo delete mode 100644 Buildings/Controls/OBC/CDL/Types/PIDAutoTuner.mo diff --git a/Buildings/Controls/OBC/CDL/Types/PIDAutoTuneModel.mo b/Buildings/Controls/OBC/CDL/Types/PIDAutoTuneModel.mo deleted file mode 100644 index 4426b98efa4..00000000000 --- a/Buildings/Controls/OBC/CDL/Types/PIDAutoTuneModel.mo +++ /dev/null @@ -1,20 +0,0 @@ -within Buildings.Controls.OBC.CDL.Types; -type PIDAutoTuneModel = enumeration( - FOTD - "First-order models with time delay") "Enumeration to set the reduced order model for PID tuning" - annotation (Documentation(info=" -

                                  -Enumeration for the type of reduced model that is used when tuning a PID controller. -The possible values are: -

                                  - - - - - - - -
                                  EnumerationDescription
                                  FOTD -First order model with time delay -
                                  -")); diff --git a/Buildings/Controls/OBC/CDL/Types/PIDAutoTuner.mo b/Buildings/Controls/OBC/CDL/Types/PIDAutoTuner.mo deleted file mode 100644 index 6b05ed5f5d2..00000000000 --- a/Buildings/Controls/OBC/CDL/Types/PIDAutoTuner.mo +++ /dev/null @@ -1,22 +0,0 @@ -within Buildings.Controls.OBC.CDL.Types; -type PIDAutoTuner = enumeration( - tau - "tau") - "Enumeration to set the tuner for PID tuning" - annotation (Documentation(info=" -

                                  -Enumeration for the type of tuner that is used when tuning a PID controller. -The possible values are: -

                                  - - - - - - - - -
                                  EnumerationDescription
                                  tau -An autotuner for single-input-single-ouput systems that uses asymmetric relay feedback to create limit cycle oscillations -
                                  -")); diff --git a/Buildings/Controls/OBC/CDL/Types/package.order b/Buildings/Controls/OBC/CDL/Types/package.order index 4970d035f98..5b39c196659 100644 --- a/Buildings/Controls/OBC/CDL/Types/package.order +++ b/Buildings/Controls/OBC/CDL/Types/package.order @@ -2,5 +2,3 @@ Extrapolation SimpleController Smoothness ZeroTime -PIDAutoTuner -PIDAutoTuneModel diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PI.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PI.mo index 9ed2100c09d..eb7aa905edb 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PI.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PI.mo @@ -1,14 +1,14 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; block PI "Identify the parameters of a PI controller" - Buildings.Controls.OBC.CDL.Interfaces.RealInput kp(min=1E-6) + Buildings.Controls.OBC.CDL.Interfaces.RealInput kp(final min=1E-6) "Gain of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,40},{-100,80}}), iconTransformation(extent={{-140,40},{-100,80}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput T(min=0) + Buildings.Controls.OBC.CDL.Interfaces.RealInput T(final min=0) "Time constant of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,-20},{-100,20}}), iconTransformation(extent={{-140,-20},{-100,20}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput L(min=1E-6) + Buildings.Controls.OBC.CDL.Interfaces.RealInput L(final min=1E-6) "Time delay of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo index 49d9217d9bf..1af3abf630b 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo @@ -1,14 +1,14 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; block PID "Identifies the parameters of a PID controller" - Buildings.Controls.OBC.CDL.Interfaces.RealInput kp(min=1E-6) + Buildings.Controls.OBC.CDL.Interfaces.RealInput kp(final min=1E-6) "Gain of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,40},{-100,80}}), iconTransformation(extent={{-140,40},{-100,80}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput T(min=0) + Buildings.Controls.OBC.CDL.Interfaces.RealInput T(final min=0) "Time constant of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,-20},{-100,20}}), iconTransformation(extent={{-140,-20},{-100,20}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput L(min=1E-6) + Buildings.Controls.OBC.CDL.Interfaces.RealInput L(final min=1E-6) "Time delay of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo index 86eee4c4df7..137f7c9d8c1 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo @@ -1,20 +1,20 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; block PIDDerivativeTime "Identify the derivative time of a PID controller" - Buildings.Controls.OBC.CDL.Interfaces.RealInput T(min=0) + Buildings.Controls.OBC.CDL.Interfaces.RealInput T(final min=0) "Time constant of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,40},{-100,80}}), iconTransformation(extent={{-140,40},{-100,80}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput L(min=1E-6) + Buildings.Controls.OBC.CDL.Interfaces.RealInput L(final min=1E-6) "Time delay of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput Td "Time constant signal for the derivative term" annotation (Placement(transformation(extent={{100,-20},{140,20}}))); - Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai1(k=0.3) + Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai1(final k=0.3) "Calculate the product of 0.3 and the time delay" annotation (Placement(transformation(extent={{-80,-70},{-60,-50}}))); - Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai2(k=0.5) + Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai2(final k=0.5) "Calculate the product of 0.5 and the input time constant" annotation (Placement(transformation(extent={{-80,30},{-60,50}}))); Buildings.Controls.OBC.CDL.Continuous.Multiply mul diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo index 3bf4102ef34..801b3ebe24e 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo @@ -1,14 +1,14 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; block PIDGain "Identify the control gain of a PID controller" - Buildings.Controls.OBC.CDL.Interfaces.RealInput kp(min=1E-6) + Buildings.Controls.OBC.CDL.Interfaces.RealInput kp(final min=1E-6) "Gain of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,40},{-100,80}}), iconTransformation(extent={{-140,40},{-100,80}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput T(min=0) + Buildings.Controls.OBC.CDL.Interfaces.RealInput T(final min=0) "Time constant of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,-20},{-100,20}}), iconTransformation(extent={{-140,-20},{-100,20}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput L(min=1E-6) + Buildings.Controls.OBC.CDL.Interfaces.RealInput L(final min=1E-6) "Time delay of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo index 4e5d5f4fc63..34dae961da9 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo @@ -1,10 +1,10 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; block PIDIntegralTime "Identifies the integral time of a PID controller" - Buildings.Controls.OBC.CDL.Interfaces.RealInput T(min=0) + Buildings.Controls.OBC.CDL.Interfaces.RealInput T(final min=0) "Time constant of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,40},{-100,80}}), iconTransformation(extent={{-140,40},{-100,80}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput L(min=1E-6) + Buildings.Controls.OBC.CDL.Interfaces.RealInput L(final min=1E-6) "Time delay of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo index b0e4e78e5f2..5f0d0708cff 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo @@ -1,14 +1,14 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; block PIGain "Identifies the control gain of a PI controller" - Buildings.Controls.OBC.CDL.Interfaces.RealInput kp(min=1E-6) + Buildings.Controls.OBC.CDL.Interfaces.RealInput kp(final min=1E-6) "Gain of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,40},{-100,80}}), iconTransformation(extent={{-140,40},{-100,80}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput T(min=1E-6) + Buildings.Controls.OBC.CDL.Interfaces.RealInput T(final min=1E-6) "Time constant of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,-20},{-100,20}}), iconTransformation(extent={{-140,-20},{-100,20}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput L(min=1E-6) + Buildings.Controls.OBC.CDL.Interfaces.RealInput L(final min=1E-6) "Time delay of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo index a564962b2cf..8066851531b 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo @@ -1,14 +1,14 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; block PIIntegralTime "Identifies the integral time of a PI controller" - Buildings.Controls.OBC.CDL.Interfaces.RealInput T(min=1E-6) + Buildings.Controls.OBC.CDL.Interfaces.RealInput T(final min=1E-6) "Time constant of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,40},{-100,80}}), iconTransformation(extent={{-140,40},{-100,80}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput L(min=1E-6) + Buildings.Controls.OBC.CDL.Interfaces.RealInput L(final min=1E-6) "Time delay of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealOutput Ti(min=1E-6) + Buildings.Controls.OBC.CDL.Interfaces.RealOutput Ti(final min=1E-6) "Time constant for the integral term" annotation (Placement(transformation(extent={{100,-20},{140,20}}))); Buildings.Controls.OBC.CDL.Continuous.Add add1 diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo index 36345e6e359..899ce43c45d 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo @@ -92,9 +92,9 @@ equation

                                  if e(t) < - δ, then y(t) = yhig, yOn(t) = true

                                  if e(t) > δ, then y(t) = -ylow, yOn(t) = false

                                  otherwise, y(t) = y(t-Δt), yOn(t) = yOn(t-Δt)

                                  -

                                  where δ is a dead band, e(t) = us(t) - um(t) is the control error, yhig and ylow are the higher value and the lower value of the output y, respectively.

                                  +

                                  where δ is a dead band, e(t) = us(t) - um(t) is the control error, yhig and ylow are the higher value and the lower value of the output y, respectively.

                                  t-Δt is the previous time step.

                                  -

                                  Note that this block generates an asymmetric signal, meaning yhig ≠ ylow

                                  +

                                  Note that this block generates an asymmetric signal, meaning yhig ≠ ylow

                                  References

                                  Josefin Berner (2017) \"Automatic Controller Tuning using Relay-based Model Identification.\" diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithAutotuningAmigoFOTD.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithAutotuningAmigoFOTD.mo index 3a69eaf4580..8fb969be69a 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithAutotuningAmigoFOTD.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithAutotuningAmigoFOTD.mo @@ -46,17 +46,17 @@ model PIDWithAutotuningAmigoFOTD "Test model for PIDWithAutotuning" annotation (Placement(transformation(extent={{80,-60},{60,-40}}))); equation - connect(resSig.y, PI.trigger) annotation (Line(points={{-58,70},{-30,70},{-30, + connect(resSig.y, PID.trigger) annotation (Line(points={{-58,70},{-30,70},{-30, 40},{-16,40},{-16,48}}, color={255,0,255})); - connect(PIWitAutotuning.trigger, PI.trigger) annotation (Line(points={{-16,-32}, + connect(PIDWitTun.tri, PID.trigger) annotation (Line(points={{-16,-32}, {-16,-38},{-30,-38},{-30,40},{-16,40},{-16,48}}, color={255,0,255})); - connect(PIWitAutotuning.u_s, PI.u_s) annotation (Line(points={{-22,-20},{-48,-20}, + connect(PIDWitTun.u_s, PID.u_s) annotation (Line(points={{-22,-20},{-48,-20}, {-48,60},{-22,60}}, color={0,0,127})); - connect(SetPoint.y, PI.u_s) annotation (Line(points={{-58,10},{-48,10},{-48,60}, + connect(SetPoint.y, PID.u_s) annotation (Line(points={{-58,10},{-48,10},{-48,60}, {-22,60}}, color={0,0,127})); - connect(PIWitAutotuning.y, uniDel2.u) + connect(PIDWitTun.y, uniDel2.u) annotation (Line(points={{2,-20},{8,-20}}, color={0,0,127})); - connect(uniDel1.u, PI.y) + connect(uniDel1.u, PID.y) annotation (Line(points={{8,60},{2,60}}, color={0,0,127})); connect(uniDel1.y, sub1.u1) annotation (Line(points={{32,60},{40,60},{40,86},{ 58,86}}, color={0,0,127})); @@ -66,14 +66,14 @@ equation {148,-46},{148,-10},{158,-10}}, color={0,0,127})); connect(derivative1.y, sub1.u2) annotation (Line(points={{56,36},{50,36},{50,74}, {58,74}}, color={0,0,127})); - connect(sub1.y, PI.u_m) annotation (Line(points={{82,80},{88,80},{88,54},{46,54}, + connect(sub1.y, PID.u_m) annotation (Line(points={{82,80},{88,80},{88,54},{46,54}, {46,42},{-10,42},{-10,48}}, color={0,0,127})); connect(sub2.u1, uniDel2.y) annotation (Line(points={{58,-4},{40,-4},{40,-20}, {32,-20}}, color={0,0,127})); connect(derivative2.y,sub2. u2) annotation (Line(points={{58,-50},{52,-50},{ 52,-16},{58,-16}}, color={0,0,127})); - connect(sub2.y, PIWitAutotuning.u_m) annotation (Line(points={{82,-10},{88,-10}, + connect(sub2.y, PIDWitTun.u_m) annotation (Line(points={{82,-10},{88,-10}, {88,-26},{46,-26},{46,-38},{-10,-38},{-10,-32}}, color={0,0,127})); connect(derivative2.k, derivative1.k) annotation (Line(points={{82,-42},{92,-42}, {92,44},{80,44}}, color={0,0,127})); @@ -86,8 +86,7 @@ equation annotation ( experiment( StopTime=10000, - Tolerance=1e-06, - __Dymola_Algorithm="Cvode"), + Tolerance=1e-06), __Dymola_Commands( file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithAutotuningAmigoFOTD.mos" "Simulate and plot"), Documentation( diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD.mo index d223b86c720..da3ee124224 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD.mo @@ -86,8 +86,7 @@ equation annotation ( experiment( StopTime=10000, - Tolerance=1e-06, - __Dymola_Algorithm="Cvode"), + Tolerance=1e-06), __Dymola_Commands( file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD.mos" "Simulate and plot"), Documentation( From 04cf03bc8659bfa808c636447e801c6ba1dc36ca Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Thu, 6 Oct 2022 16:49:44 -0400 Subject: [PATCH 033/214] fix the html issues and clean up the model --- .../AutoTuner/AMIGO/PIDGain.mo | 2 +- .../AutoTuner/AMIGO/PIGain.mo | 2 +- .../AutoTuner/AMIGO/Validation/PI.mo | 134 +++++++++--------- .../AutoTuner/AMIGO/package.mo | 5 +- .../Relay/HalfPeriodRatio.mo | 2 +- .../Relay/Validation/HalfPeriodRatio.mo | 8 +- .../FirstOrderTimedelayed/Gain.mo | 12 +- .../TimeConstantDelay.mo | 4 +- 8 files changed, 85 insertions(+), 84 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo index 801b3ebe24e..9cf72937169 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo @@ -76,7 +76,7 @@ First implementation

                                  k = 1/kp + (0.2 + 0.45T/L),

                                  -

                                  where kp is the gain of the first-order time-delayed model;

                                  +

                                  where kp is the gain of the first-order time-delayed model;

                                  T is the time constant of the first-order time-delayed model;

                                  L is the time delay of the first-order time-delayed model.

                                  Validation

                                  diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo index 5f0d0708cff..4b94ec61f19 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo @@ -119,7 +119,7 @@ First implementation
                                  k = 0.15/kp + (0.35-LT/(L+T)2)(T/kp/L),

                                  -where kp is the gain of the first-order time-delayed model; +where kp is the gain of the first-order time-delayed model;

                                  T is the time constant of the first-order time-delayed model;

                                  L is the time delay of the first-order time-delayed model.

                                  diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo index af1823d98fc..67d166bc72f 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo @@ -3,70 +3,70 @@ model PI "Test model for PI" Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PI PI "Calculate the parameters for a PI controller" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable RefeDat(table=[0,1, - 0.5,0.3,0.343,0.469; 0.002,1.002,0.501,0.301,0.342,0.47; 0.004,1.004, - 0.502,0.301,0.341,0.471; 0.006,1.006,0.503,0.302,0.341,0.472; 0.008, - 1.008,0.504,0.302,0.34,0.473; 0.01,1.01,0.505,0.303,0.339,0.473; 0.012, - 1.012,0.506,0.304,0.339,0.474; 0.014,1.014,0.507,0.304,0.338,0.475; - 0.016,1.016,0.508,0.305,0.337,0.476; 0.018,1.018,0.509,0.305,0.337, - 0.477; 0.02,1.02,0.51,0.306,0.336,0.478; 0.022,1.022,0.511,0.307,0.335, - 0.479; 0.024,1.024,0.512,0.307,0.335,0.48; 0.026,1.026,0.513,0.308, - 0.334,0.481; 0.028,1.028,0.514,0.308,0.333,0.482; 0.03,1.03,0.515,0.309, - 0.333,0.483; 0.032,1.032,0.516,0.31,0.332,0.484; 0.034,1.034,0.517,0.31, - 0.331,0.485; 0.036,1.036,0.518,0.311,0.331,0.486; 0.038,1.038,0.519, - 0.311,0.33,0.487; 0.04,1.04,0.52,0.312,0.33,0.488; 0.042,1.042,0.521, - 0.313,0.329,0.488; 0.044,1.044,0.522,0.313,0.328,0.489; 0.046,1.046, - 0.523,0.314,0.328,0.49; 0.048,1.048,0.524,0.314,0.327,0.491; 0.05,1.05, - 0.525,0.315,0.326,0.492; 0.052,1.052,0.526,0.316,0.326,0.493; 0.054, - 1.054,0.527,0.316,0.325,0.494; 0.056,1.056,0.528,0.317,0.325,0.495; - 0.058,1.058,0.529,0.317,0.324,0.496; 0.06,1.06,0.53,0.318,0.323,0.497; - 0.062,1.062,0.531,0.319,0.323,0.498; 0.064,1.064,0.532,0.319,0.322, - 0.499; 0.066,1.066,0.533,0.32,0.321,0.5; 0.068,1.068,0.534,0.32,0.321, - 0.501; 0.07,1.07,0.535,0.321,0.32,0.502; 0.072,1.072,0.536,0.322,0.32, - 0.503; 0.074,1.074,0.537,0.322,0.319,0.503; 0.076,1.076,0.538,0.323, - 0.319,0.504; 0.078,1.078,0.539,0.323,0.318,0.505; 0.08,1.08,0.54,0.324, - 0.317,0.506; 0.082,1.082,0.541,0.325,0.317,0.507; 0.084,1.084,0.542, - 0.325,0.316,0.508; 0.086,1.086,0.543,0.326,0.316,0.509; 0.088,1.088, - 0.544,0.326,0.315,0.51; 0.09,1.09,0.545,0.327,0.314,0.511; 0.092,1.092, - 0.546,0.328,0.314,0.512; 0.094,1.094,0.547,0.328,0.313,0.513; 0.096, - 1.096,0.548,0.329,0.313,0.514; 0.098,1.098,0.549,0.329,0.312,0.515; 0.1, - 1.1,0.55,0.33,0.312,0.516; 0.102,1.102,0.551,0.331,0.311,0.517; 0.104, - 1.104,0.552,0.331,0.31,0.518; 0.106,1.106,0.553,0.332,0.31,0.518; 0.108, - 1.108,0.554,0.332,0.309,0.519; 0.11,1.11,0.555,0.333,0.309,0.52; 0.112, - 1.112,0.556,0.334,0.308,0.521; 0.114,1.114,0.557,0.334,0.308,0.522; - 0.116,1.116,0.558,0.335,0.307,0.523; 0.118,1.118,0.559,0.335,0.307, - 0.524; 0.12,1.12,0.56,0.336,0.306,0.525; 0.122,1.122,0.561,0.337,0.305, - 0.526; 0.124,1.124,0.562,0.337,0.305,0.527; 0.126,1.126,0.563,0.338, - 0.304,0.528; 0.128,1.128,0.564,0.338,0.304,0.529; 0.13,1.13,0.565,0.339, - 0.303,0.53; 0.132,1.132,0.566,0.34,0.303,0.531; 0.134,1.134,0.567,0.34, - 0.302,0.532; 0.136,1.136,0.568,0.341,0.302,0.533; 0.138,1.138,0.569, - 0.341,0.301,0.534; 0.14,1.14,0.57,0.342,0.301,0.534; 0.142,1.142,0.571, - 0.343,0.3,0.535; 0.144,1.144,0.572,0.343,0.3,0.536; 0.146,1.146,0.573, - 0.344,0.299,0.537; 0.148,1.148,0.574,0.344,0.299,0.538; 0.15,1.15,0.575, - 0.345,0.298,0.539; 0.152,1.152,0.576,0.346,0.297,0.54; 0.154,1.154, - 0.577,0.346,0.297,0.541; 0.156,1.156,0.578,0.347,0.296,0.542; 0.158, - 1.158,0.579,0.347,0.296,0.543; 0.16,1.16,0.58,0.348,0.295,0.544; 0.162, - 1.162,0.581,0.349,0.295,0.545; 0.164,1.164,0.582,0.349,0.294,0.546; - 0.166,1.166,0.583,0.35,0.294,0.547; 0.168,1.168,0.584,0.35,0.293,0.548; - 0.17,1.17,0.585,0.351,0.293,0.549; 0.172,1.172,0.586,0.352,0.292,0.549; - 0.174,1.174,0.587,0.352,0.292,0.55; 0.176,1.176,0.588,0.353,0.291,0.551; - 0.178,1.178,0.589,0.353,0.291,0.552; 0.18,1.18,0.59,0.354,0.29,0.553; - 0.182,1.182,0.591,0.355,0.29,0.554; 0.184,1.184,0.592,0.355,0.289,0.555; - 0.186,1.186,0.593,0.356,0.289,0.556; 0.188,1.188,0.594,0.356,0.288, - 0.557; 0.19,1.19,0.595,0.357,0.288,0.558; 0.192,1.192,0.596,0.358,0.288, - 0.559; 0.194,1.194,0.597,0.358,0.287,0.56; 0.196,1.196,0.598,0.359, - 0.287,0.561; 0.198,1.198,0.599,0.359,0.286,0.562; 0.2,1.2,0.6,0.36, - 0.286,0.563; 0.202,1.202,0.601,0.361,0.285,0.564; 0.204,1.204,0.602, - 0.361,0.285,0.564; 0.206,1.206,0.603,0.362,0.284,0.565; 0.208,1.208, - 0.604,0.362,0.284,0.566; 0.21,1.21,0.605,0.363,0.283,0.567; 0.212,1.212, - 0.606,0.364,0.283,0.568; 0.214,1.214,0.607,0.364,0.282,0.569; 0.216, - 1.216,0.608,0.365,0.282,0.57; 0.218,1.218,0.609,0.365,0.281,0.571; 0.22, - 1.22,0.61,0.366,0.281,0.572; 0.222,1.222,0.611,0.367,0.28,0.573; 0.224, - 1.224,0.612,0.367,0.28,0.574; 0.226,1.226,0.613,0.368,0.28,0.575; 0.228, - 1.228,0.614,0.368,0.279,0.576; 0.23,1.23,0.615,0.369,0.279,0.577; 0.232, - 1.232,0.616,0.37,0.278,0.578; 0.234,1.234,0.617,0.37,0.278,0.579; 0.236, - 1.236,0.618,0.371,0.277,0.579; 0.238,1.238,0.619,0.371,0.277,0.58; 0.24, - 1.24,0.62,0.372,0.276,0.581; 0.242,1.242,0.621,0.373,0.276,0.582; 0.244, + Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable RefDat(table=[0,1,0.5, + 0.3,0.343,0.469; 0.002,1.002,0.501,0.301,0.342,0.47; 0.004,1.004,0.502, + 0.301,0.341,0.471; 0.006,1.006,0.503,0.302,0.341,0.472; 0.008,1.008, + 0.504,0.302,0.34,0.473; 0.01,1.01,0.505,0.303,0.339,0.473; 0.012,1.012, + 0.506,0.304,0.339,0.474; 0.014,1.014,0.507,0.304,0.338,0.475; 0.016, + 1.016,0.508,0.305,0.337,0.476; 0.018,1.018,0.509,0.305,0.337,0.477; + 0.02,1.02,0.51,0.306,0.336,0.478; 0.022,1.022,0.511,0.307,0.335,0.479; + 0.024,1.024,0.512,0.307,0.335,0.48; 0.026,1.026,0.513,0.308,0.334,0.481; + 0.028,1.028,0.514,0.308,0.333,0.482; 0.03,1.03,0.515,0.309,0.333,0.483; + 0.032,1.032,0.516,0.31,0.332,0.484; 0.034,1.034,0.517,0.31,0.331,0.485; + 0.036,1.036,0.518,0.311,0.331,0.486; 0.038,1.038,0.519,0.311,0.33,0.487; + 0.04,1.04,0.52,0.312,0.33,0.488; 0.042,1.042,0.521,0.313,0.329,0.488; + 0.044,1.044,0.522,0.313,0.328,0.489; 0.046,1.046,0.523,0.314,0.328,0.49; + 0.048,1.048,0.524,0.314,0.327,0.491; 0.05,1.05,0.525,0.315,0.326,0.492; + 0.052,1.052,0.526,0.316,0.326,0.493; 0.054,1.054,0.527,0.316,0.325, + 0.494; 0.056,1.056,0.528,0.317,0.325,0.495; 0.058,1.058,0.529,0.317, + 0.324,0.496; 0.06,1.06,0.53,0.318,0.323,0.497; 0.062,1.062,0.531,0.319, + 0.323,0.498; 0.064,1.064,0.532,0.319,0.322,0.499; 0.066,1.066,0.533, + 0.32,0.321,0.5; 0.068,1.068,0.534,0.32,0.321,0.501; 0.07,1.07,0.535, + 0.321,0.32,0.502; 0.072,1.072,0.536,0.322,0.32,0.503; 0.074,1.074,0.537, + 0.322,0.319,0.503; 0.076,1.076,0.538,0.323,0.319,0.504; 0.078,1.078, + 0.539,0.323,0.318,0.505; 0.08,1.08,0.54,0.324,0.317,0.506; 0.082,1.082, + 0.541,0.325,0.317,0.507; 0.084,1.084,0.542,0.325,0.316,0.508; 0.086, + 1.086,0.543,0.326,0.316,0.509; 0.088,1.088,0.544,0.326,0.315,0.51; 0.09, + 1.09,0.545,0.327,0.314,0.511; 0.092,1.092,0.546,0.328,0.314,0.512; + 0.094,1.094,0.547,0.328,0.313,0.513; 0.096,1.096,0.548,0.329,0.313, + 0.514; 0.098,1.098,0.549,0.329,0.312,0.515; 0.1,1.1,0.55,0.33,0.312, + 0.516; 0.102,1.102,0.551,0.331,0.311,0.517; 0.104,1.104,0.552,0.331, + 0.31,0.518; 0.106,1.106,0.553,0.332,0.31,0.518; 0.108,1.108,0.554,0.332, + 0.309,0.519; 0.11,1.11,0.555,0.333,0.309,0.52; 0.112,1.112,0.556,0.334, + 0.308,0.521; 0.114,1.114,0.557,0.334,0.308,0.522; 0.116,1.116,0.558, + 0.335,0.307,0.523; 0.118,1.118,0.559,0.335,0.307,0.524; 0.12,1.12,0.56, + 0.336,0.306,0.525; 0.122,1.122,0.561,0.337,0.305,0.526; 0.124,1.124, + 0.562,0.337,0.305,0.527; 0.126,1.126,0.563,0.338,0.304,0.528; 0.128, + 1.128,0.564,0.338,0.304,0.529; 0.13,1.13,0.565,0.339,0.303,0.53; 0.132, + 1.132,0.566,0.34,0.303,0.531; 0.134,1.134,0.567,0.34,0.302,0.532; 0.136, + 1.136,0.568,0.341,0.302,0.533; 0.138,1.138,0.569,0.341,0.301,0.534; + 0.14,1.14,0.57,0.342,0.301,0.534; 0.142,1.142,0.571,0.343,0.3,0.535; + 0.144,1.144,0.572,0.343,0.3,0.536; 0.146,1.146,0.573,0.344,0.299,0.537; + 0.148,1.148,0.574,0.344,0.299,0.538; 0.15,1.15,0.575,0.345,0.298,0.539; + 0.152,1.152,0.576,0.346,0.297,0.54; 0.154,1.154,0.577,0.346,0.297,0.541; + 0.156,1.156,0.578,0.347,0.296,0.542; 0.158,1.158,0.579,0.347,0.296, + 0.543; 0.16,1.16,0.58,0.348,0.295,0.544; 0.162,1.162,0.581,0.349,0.295, + 0.545; 0.164,1.164,0.582,0.349,0.294,0.546; 0.166,1.166,0.583,0.35, + 0.294,0.547; 0.168,1.168,0.584,0.35,0.293,0.548; 0.17,1.17,0.585,0.351, + 0.293,0.549; 0.172,1.172,0.586,0.352,0.292,0.549; 0.174,1.174,0.587, + 0.352,0.292,0.55; 0.176,1.176,0.588,0.353,0.291,0.551; 0.178,1.178, + 0.589,0.353,0.291,0.552; 0.18,1.18,0.59,0.354,0.29,0.553; 0.182,1.182, + 0.591,0.355,0.29,0.554; 0.184,1.184,0.592,0.355,0.289,0.555; 0.186, + 1.186,0.593,0.356,0.289,0.556; 0.188,1.188,0.594,0.356,0.288,0.557; + 0.19,1.19,0.595,0.357,0.288,0.558; 0.192,1.192,0.596,0.358,0.288,0.559; + 0.194,1.194,0.597,0.358,0.287,0.56; 0.196,1.196,0.598,0.359,0.287,0.561; + 0.198,1.198,0.599,0.359,0.286,0.562; 0.2,1.2,0.6,0.36,0.286,0.563; + 0.202,1.202,0.601,0.361,0.285,0.564; 0.204,1.204,0.602,0.361,0.285, + 0.564; 0.206,1.206,0.603,0.362,0.284,0.565; 0.208,1.208,0.604,0.362, + 0.284,0.566; 0.21,1.21,0.605,0.363,0.283,0.567; 0.212,1.212,0.606,0.364, + 0.283,0.568; 0.214,1.214,0.607,0.364,0.282,0.569; 0.216,1.216,0.608, + 0.365,0.282,0.57; 0.218,1.218,0.609,0.365,0.281,0.571; 0.22,1.22,0.61, + 0.366,0.281,0.572; 0.222,1.222,0.611,0.367,0.28,0.573; 0.224,1.224, + 0.612,0.367,0.28,0.574; 0.226,1.226,0.613,0.368,0.28,0.575; 0.228,1.228, + 0.614,0.368,0.279,0.576; 0.23,1.23,0.615,0.369,0.279,0.577; 0.232,1.232, + 0.616,0.37,0.278,0.578; 0.234,1.234,0.617,0.37,0.278,0.579; 0.236,1.236, + 0.618,0.371,0.277,0.579; 0.238,1.238,0.619,0.371,0.277,0.58; 0.24,1.24, + 0.62,0.372,0.276,0.581; 0.242,1.242,0.621,0.373,0.276,0.582; 0.244, 1.244,0.622,0.373,0.275,0.583; 0.246,1.246,0.623,0.374,0.275,0.584; 0.248,1.248,0.624,0.374,0.275,0.585; 0.25,1.25,0.625,0.375,0.274,0.586; 0.252,1.252,0.626,0.376,0.274,0.587; 0.254,1.254,0.627,0.376,0.273, @@ -269,11 +269,11 @@ model PI "Test model for PI" annotation (Placement(transformation(extent={{-58,-10},{-38,10}}))); equation - connect(RefeDat.y[1], PI.kp) annotation (Line(points={{-36,0},{-20,0},{-20,6}, + connect(RefDat.y[1], PI.kp) annotation (Line(points={{-36,0},{-20,0},{-20,6}, {-12,6}}, color={0,0,127})); - connect(PI.T, RefeDat.y[2]) + connect(PI.T, RefDat.y[2]) annotation (Line(points={{-12,0},{-36,0}}, color={0,0,127})); - connect(PI.L, RefeDat.y[3]) annotation (Line(points={{-12,-6},{-20,-6},{-20,0}, + connect(PI.L, RefDat.y[3]) annotation (Line(points={{-12,-6},{-20,-6},{-20,0}, {-36,0}}, color={0,0,127})); annotation ( experiment( diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.mo index 851fec52210..3adc6c3c6d2 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.mo @@ -1,9 +1,10 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner; package AMIGO "Package with components related to AMIGO tuner" annotation (Documentation(info=" -

                                  This package contains the blocks to implement the AMIGO (approximate M-constrained integral gain optimization) tuner. +

                                  +This package contains the blocks to implement the AMIGO (approximate M-constrained integral gain optimization) tuner. This AMIGO tuner calculates the parameters of PI/PID controllers based on the parameters of a reduced order model. -This reduced order model is used to approximate the control process.

                                  +This reduced order model is used to approximate the control process.

                                  References

                                  diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo index ca804e189ee..e6158269342 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo @@ -170,7 +170,7 @@ First implementation

                                  ρ = max(ton,toff)/ min(ton,toff),

                                  -

                                  where ton and ton are the length of the On period and the Off period, respectively.

                                  +

                                  where ton and ton are the length of the On period and the Off period, respectively.

                                  During an On period, the relay switch signal becomes True;

                                  During an Off period, the relay switch signal becomes False.

                                  Note that only the first On period and the first Off period are considered.

                                  diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mo index c9436b38f0d..b59dd6198dc 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mo @@ -1,6 +1,6 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation; model HalfPeriodRatio "Test model for HalfPeriodRatio" - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.HalfPeriodRatio halfPerRat + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.HalfPeriodRatio halPerRat "Calculate the half period ratio" annotation (Placement(transformation(extent={{-8,-10},{12,10}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable tOn( @@ -17,9 +17,9 @@ model HalfPeriodRatio "Test model for HalfPeriodRatio" annotation (Placement(transformation(extent={{-60,-40},{-40,-20}}))); equation - connect(tOn.y[1], halfPerRat.tOn) annotation (Line(points={{-38,30},{-20,30}, - {-20,6},{-10.2222,6}}, color={0,0,127})); - connect(tOff.y[1], halfPerRat.tOff) annotation (Line(points={{-38,-30},{-20, + connect(tOn.y[1], halPerRat.tOn) annotation (Line(points={{-38,30},{-20,30},{ + -20,6},{-10.2222,6}}, color={0,0,127})); + connect(tOff.y[1], halPerRat.tOff) annotation (Line(points={{-38,-30},{-20, -30},{-20,-6},{-10.2222,-6}}, color={0,0,127})); annotation ( experiment( diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Gain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Gain.mo index 0e481e1048f..bc2c32ef906 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Gain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Gain.mo @@ -95,17 +95,17 @@ First implementation

                                  k = Iy/Iu,

                                  -

                                  where Iy and Iu are the integral of the process output and the integral of the relay output, respectively.

                                  -

                                  Iy is calculated by

                                  +

                                  where Iy and Iu are the integral of the process output and the integral of the relay output, respectively.

                                  +

                                  Iy is calculated by

                                  Iy = ∫ u(t) dt;

                                  where u is the process output.

                                  -

                                  Iu is calculated by

                                  +

                                  Iu is calculated by

                                  Iu = ton (yhig - yref)+ toff(-ylow - yref),

                                  -

                                  where yhig and ylow are the higher value and the lower value of the relay control output, respectively.

                                  -

                                  yref is the reference value of the relay output.

                                  -

                                  ton and toff are the length of the On period and the Off period, respectively.

                                  +

                                  where yhig and ylow are the higher value and the lower value of the relay control output, respectively.

                                  +

                                  yref is the reference value of the relay output.

                                  +

                                  ton and toff are the length of the On period and the Off period, respectively.

                                  During an On period, the relay switch signal becomes True;

                                  During an Off period, the relay switch signal becomes False.

                                  References

                                  diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/TimeConstantDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/TimeConstantDelay.mo index 48b2572703e..776f90d63fe 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/TimeConstantDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/TimeConstantDelay.mo @@ -142,7 +142,7 @@ First implementation
                                  ", info="

                                  This block calculates the time constant and the time delay of a first-order time-delayed model

                                  Main equations

                                  -

                                  The time constant, T, is calculated by

                                  +

                                  The time constant, T, is calculated by

                                  T = ton/(ln((δ/|k|-yhig+exp(τ/(1 - τ))(yhig + ylow))/(yhig-δ/|k|))),

                                  @@ -151,7 +151,7 @@ T = ton/(ln((δ/|k|-yhig+exp(τ/(1 - τ))(yδ is the dead band of a relay controller,

                                  k is the gain of the first-order time-delayed model.

                                  τ is the normalized time delay.

                                  -

                                  The time delay, L, is calculated by

                                  +

                                  The time delay, L, is calculated by

                                  L = T τ/(1 - τ),

                                  From 16460f9f1dfd3f8919cd44b6816c08571299ad07 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Thu, 6 Oct 2022 16:52:37 -0400 Subject: [PATCH 034/214] fix the typos in the script --- .../PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mos | 4 ++-- .../PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mos | 6 +++--- .../FirstOrderTimedelayed/Validation/Gain.mos | 2 +- .../Validation/PIWithAutotuningAmigoFOTD.mos | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mos index 5f19c5b9431..6041bad2de0 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mos @@ -1,4 +1,4 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PI", method="Cvode", tolerance=1e-06, resultFile="PI"); -createPlot(id=1, position={95, 95, 1484, 920}, y={"PI.k", "ReferenceData.y[4]"}, range={0.0, 1.0, 0.15000000000000002, 0.4}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={95, 95, 1484, 920}, y={"PI.Ti", "ReferenceData.y[5]"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={95, 95, 1484, 920}, y={"PI.k", "RefDat.y[4]"}, range={0.0, 1.0, 0.15000000000000002, 0.4}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={95, 95, 1484, 920}, y={"PI.Ti", "RefDat.y[5]"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mos index a5c32b03ce6..e703e530fc7 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mos @@ -1,5 +1,5 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PID", method="Cvode", tolerance=1e-06, resultFile="PID"); -createPlot(id=1, position={75, 75, 1488, 1095}, y={"PID.k", "ReferenceData.y[4]"}, range={0.0, 1.0, 0.4, 1.2000000000000002}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={75, 75, 1488, 1095}, y={"PID.Ti", "ReferenceData.y[5]"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={75, 75, 1488, 1095}, y={"PID.Td", "ReferenceData.y[6]"}, range={0.0, 1.0, 0.1, 0.30000000000000004}, grid=true, subPlot=103, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={75, 75, 1488, 1095}, y={"PID.k", "RefDat.y[4]"}, range={0.0, 1.0, 0.4, 1.2000000000000002}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={75, 75, 1488, 1095}, y={"PID.Ti", "RefDat.y[5]"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={75, 75, 1488, 1095}, y={"PID.Td", "RefDat.y[6]"}, range={0.0, 1.0, 0.1, 0.30000000000000004}, grid=true, subPlot=103, colors={{28,108,200}, {238,46,47}}); diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mos index de730733983..21d4237bb6f 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mos @@ -1,5 +1,5 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation.Gain", method="Cvode", tolerance=1e-06, resultFile="Gain"); createPlot(id=1, position={55, 55, 1753, 1433}, y={"u.y[1]"}, range={0.0, 1.0, 0.4, 1.2000000000000002}, grid=true, subPlot=101, colors={{28,108,200}}); createPlot(id=1, position={55, 55, 1753, 1433}, y={"tOn.y[1]", "tOff.y[1]"}, range={0.0, 1.0, -0.5, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={55, 55, 1753, 1433}, y={"tunSta.y[1]", "tunEnd.y[1]"}, range={0.0, 1.0, -0.5, 1.5}, grid=true, subPlot=103, colors={{28,108,200}, {28,108,200}}); +createPlot(id=1, position={55, 55, 1753, 1433}, y={"tunSta.y[1]"}, range={0.0, 1.0, -0.5, 1.5}, grid=true, subPlot=103, colors={{28,108,200}}); createPlot(id=1, position={55, 55, 1753, 1433}, y={"gai.k"}, range={0.0, 1.0, -0.5, 1.5}, grid=true, subPlot=104, colors={{28,108,200}}); diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD.mos index 462f2b38fbf..a3971760884 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD.mos @@ -1,5 +1,5 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIWithAutotuningAmigoFOTD", stopTime=10000, method="Cvode", tolerance=1e-06, resultFile="PIWithAutotuningAmigoFOTD"); createPlot(id=1, position={95, 95, 1494, 1014}, y={"PI.u_s", "PI.u_m"}, range={0.0, 10000.0, -0.5, 1.5}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={95, 95, 1494, 1014}, y={"PIWitAutotuning.u_s", "PIWitAutotuning.u_m"}, range={0.0, 10000.0, -0.5, 1.5}, autoscale=false, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={95, 95, 1494, 1014}, y={"PIWitTun.u_s", "PIWitTun.u_m"}, range={0.0, 10000.0, -0.5, 1.5}, autoscale=false, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); createPlot(id=1, position={95, 95, 1494, 1014}, y={"resSig.y"}, range={0.0, 10000.0, -0.5, 1.5}, autoscale=false, grid=true, subPlot=103, colors={{28,108,200}}); From 69fbd3c764329ff0de8bde6b0e597434d3446fd7 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Thu, 6 Oct 2022 16:54:37 -0400 Subject: [PATCH 035/214] update the references --- ...ithAutotuning_AutoTuner_AMIGO_Validation_PI.txt | 12 ++++++++++++ ...thAutotuning_AutoTuner_AMIGO_Validation_PID.txt | 14 ++++++++++++++ ...utoTuner_AMIGO_Validation_PIDDerivativeTime.txt | 12 ++++++++++++ ...totuning_AutoTuner_AMIGO_Validation_PIDGain.txt | 13 +++++++++++++ ..._AutoTuner_AMIGO_Validation_PIDIntegralTime.txt | 12 ++++++++++++ ...utotuning_AutoTuner_AMIGO_Validation_PIGain.txt | 13 +++++++++++++ ...g_AutoTuner_AMIGO_Validation_PIIntegralTime.txt | 12 ++++++++++++ ...DWithAutotuning_Relay_Validation_Controller.txt | 10 ++++++++++ ...Autotuning_Relay_Validation_HalfPeriodRatio.txt | 11 +++++++++++ ...tuning_Relay_Validation_NormalizedTimeDelay.txt | 11 +++++++++++ ...WithAutotuning_Relay_Validation_OnOffPeriod.txt | 11 +++++++++++ ...Autotuning_Relay_Validation_ResponseProcess.txt | 14 ++++++++++++++ ...rTimedelayed_Validation_ControlProcessModel.txt | 13 +++++++++++++ ...ation_FirstOrderTimedelayed_Validation_Gain.txt | 14 ++++++++++++++ ...derTimedelayed_Validation_TimeConstantDelay.txt | 12 ++++++++++++ ...uning_Validation_PIDWithAutotuningAmigoFOTD.txt | 14 ++++++++++++++ ...tuning_Validation_PIWithAutotuningAmigoFOTD.txt | 14 ++++++++++++++ ...ithAutotuning.AutoTuner.AMIGO.Validation.PI.mos | 7 +++++++ ...thAutotuning.AutoTuner.AMIGO.Validation.PID.mos | 9 +++++++++ ...utoTuner.AMIGO.Validation.PIDDerivativeTime.mos | 7 +++++++ ...totuning.AutoTuner.AMIGO.Validation.PIDGain.mos | 8 ++++++++ ....AutoTuner.AMIGO.Validation.PIDIntegralTime.mos | 7 +++++++ ...utotuning.AutoTuner.AMIGO.Validation.PIGain.mos | 8 ++++++++ ...g.AutoTuner.AMIGO.Validation.PIIntegralTime.mos | 7 +++++++ ...DWithAutotuning.Relay.Validation.Controller.mos | 5 +++++ ...Autotuning.Relay.Validation.HalfPeriodRatio.mos | 6 ++++++ ...tuning.Relay.Validation.NormalizedTimeDelay.mos | 6 ++++++ ...WithAutotuning.Relay.Validation.OnOffPeriod.mos | 6 ++++++ ...Autotuning.Relay.Validation.ResponseProcess.mos | 9 +++++++++ ...rTimedelayed.Validation.ControlProcessModel.mos | 7 +++++++ ...ation.FirstOrderTimedelayed.Validation.Gain.mos | 8 ++++++++ ...derTimedelayed.Validation.TimeConstantDelay.mos | 7 +++++++ ...uning.Validation.PIDWithAutotuningAmigoFOTD.mos | 8 ++++++++ ...tuning.Validation.PIWithAutotuningAmigoFOTD.mos | 8 ++++++++ 34 files changed, 335 insertions(+) create mode 100644 Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PI.txt create mode 100644 Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PID.txt create mode 100644 Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PIDDerivativeTime.txt create mode 100644 Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PIDGain.txt create mode 100644 Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PIDIntegralTime.txt create mode 100644 Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PIGain.txt create mode 100644 Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PIIntegralTime.txt create mode 100644 Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_Controller.txt create mode 100644 Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_HalfPeriodRatio.txt create mode 100644 Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_NormalizedTimeDelay.txt create mode 100644 Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_OnOffPeriod.txt create mode 100644 Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_ResponseProcess.txt create mode 100644 Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_Validation_ControlProcessModel.txt create mode 100644 Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_Validation_Gain.txt create mode 100644 Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_Validation_TimeConstantDelay.txt create mode 100644 Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIDWithAutotuningAmigoFOTD.txt create mode 100644 Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIWithAutotuningAmigoFOTD.txt create mode 100644 Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PI.mos create mode 100644 Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PID.mos create mode 100644 Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDDerivativeTime.mos create mode 100644 Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDGain.mos create mode 100644 Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDIntegralTime.mos create mode 100644 Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIGain.mos create mode 100644 Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIIntegralTime.mos create mode 100644 Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.Controller.mos create mode 100644 Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.HalfPeriodRatio.mos create mode 100644 Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.NormalizedTimeDelay.mos create mode 100644 Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.OnOffPeriod.mos create mode 100644 Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.ResponseProcess.mos create mode 100644 Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation.ControlProcessModel.mos create mode 100644 Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation.Gain.mos create mode 100644 Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation.TimeConstantDelay.mos create mode 100644 Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIDWithAutotuningAmigoFOTD.mos create mode 100644 Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIWithAutotuningAmigoFOTD.mos diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PI.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PI.txt new file mode 100644 index 00000000000..f3184853123 --- /dev/null +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PI.txt @@ -0,0 +1,12 @@ +last-generated=2022-10-06 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +PI.k=[3.427083194255829e-01, 3.393151758930222e-01, 3.359885511485939e-01, 3.327265378434656e-01, 3.295272286288169e-01, 3.263888958752252e-01, 3.233097487268034e-01, 3.202881516426574e-01, 3.173225215822536e-01, 3.144113139610314e-01, 3.115530318686219e-01, 3.087462482250208e-01, 3.059895921241976e-01, 3.032817224562803e-01, 3.006213309847676e-01, 2.980072522563426e-01, 2.954382286165356e-01, 2.929131097666854e-01, 2.904307869882616e-01, 2.87990181737877e-01, 2.855902921363173e-01, 2.832300341023077e-01, 2.809084649571227e-01, 2.786246552993449e-01, 2.763776760516168e-01, 2.741666734218597e-01, 2.719907430469058e-01, 2.698490953450763e-01, 2.67740875873801e-01, 2.656653794647196e-01, 2.636218108910805e-01, 2.616094060261872e-01, 2.596275188422696e-01, 2.576754431050848e-01, 2.557524751404699e-01, 2.538580280928464e-01, 2.519914251424269e-01, 2.501520826169469e-01, 2.483393685535971e-01, 2.465527465074837e-01, 2.447916732685427e-01, 2.430555512818382e-01, 2.413438970821584e-01, 2.396561820236085e-01, 2.379918986367867e-01, 2.363505780163519e-01, 2.347317359033287e-01, 2.331349250702803e-01, 2.315596762914645e-01, 2.300055944167478e-01, 2.284722179174423e-01, 2.269591517718605e-01, 2.254660085373425e-01, 2.239923709798829e-01, 2.225378800383838e-01, 2.211021509612482e-01, 2.196848248740505e-01, 2.182855590551519e-01, 2.169040107715149e-01, 2.155398223916494e-01, 2.141927083714356e-01, 2.12862315759629e-01, 2.115483591783919e-01, 2.102505108050202e-01, 2.089684875158524e-01, 2.077020210844805e-01, 2.064508101825049e-01, 2.052145781488074e-01, 2.039930536060073e-01, 2.027859981360627e-01, 2.015931286193312e-01, 2.004142215317469e-01, 1.992490343561543e-01, 1.980973069340439e-01, 1.969588117835739e-01, 1.958333402872086e-01, 1.947206391306787e-01, 1.936205294924474e-01, 1.925327729528697e-01, 1.9145717086614e-01, 1.903935243586566e-01, 1.893416200018209e-01, 1.883012789850742e-01, 1.872723075894303e-01, 1.862545269985985e-01, 1.852477528329152e-01, 1.842517874998656e-01, 1.832664914304534e-01, 1.822916709115014e-01, 1.81327162029384e-01, 1.803728008678819e-01, 1.794284471748412e-01, 1.784939194206437e-01, 1.775690923516219e-01, 1.766537871545593e-01, 1.757478548194911e-01, 1.748511910338886e-01, 1.739636252190207e-01, 1.730850216060402e-01, 1.722152395072734e-01, 1.713541597127914e-01] +RefDat.y[4]=[3.429999947547913e-01, 3.389999866485596e-01, 3.359999952465325e-01, 3.33000003956253e-01, 3.300000126659795e-01, 3.260000053793143e-01, 3.230000138282776e-01, 3.19999992996457e-01, 3.170000016689301e-01, 3.140000122785302e-01, 3.120000064373016e-01, 3.089999851584479e-01, 3.059999929368696e-01, 3.030000030994415e-01, 3.009999990463257e-01, 2.980000108480009e-01, 2.949999868869781e-01, 2.930000126361847e-01, 2.899999952316817e-01, 2.879999876022339e-01, 2.860000133514404e-01, 2.829999923706055e-01, 2.809999877214521e-01, 2.790000140666962e-01, 2.759999930858612e-01, 2.739999890327454e-01, 2.720000147819519e-01, 2.700000107288361e-01, 2.680000066757202e-01, 2.659999984502171e-01, 2.639999985694885e-01, 2.619999945163727e-01, 2.599999868870314e-01, 2.57999986410141e-01, 2.560000121593475e-01, 2.540000051259551e-01, 2.520000040531158e-01, 2.500000023841503e-01, 2.479999959468842e-01, 2.469999867678754e-01, 2.450000047683716e-01, 2.430000007152557e-01, 2.409999966621399e-01, 2.39999994635582e-01, 2.380000054836273e-01, 2.360000014305115e-01, 2.349999994039536e-01, 2.329999953508377e-01, 2.319999879599417e-01, 2.300000041723251e-01, 2.280000001192093e-01, 2.269999980926514e-01, 2.249999940395355e-01, 2.240000069141388e-01, 2.230000048875809e-01, 2.21000000834465e-01, 2.199999988079071e-01, 2.179999947547913e-01, 2.169999927282333e-01, 2.159999924900102e-01, 2.140000015497208e-01, 2.129999995231628e-01, 2.119999974966049e-01, 2.099999934434891e-01, 2.090000063180923e-01, 2.079999923707831e-01, 2.06000013351245e-01, 2.049999982118607e-01, 2.039999961853027e-01, 2.029999941587448e-01, 2.020000010729724e-01, 2.000000029802322e-01, 1.990000009536743e-01, 1.979999989271164e-01, 1.969999969005585e-01, 1.959999948740005e-01, 1.949999880792131e-01, 1.939999961854448e-01, 1.929999893905864e-01, 1.910000103710483e-01, 1.900000035761898e-01, 1.889999967813669e-01, 1.879999935626984e-01, 1.870000064373016e-01, 1.860000044107437e-01, 1.850000023841858e-01, 1.840000003576279e-01, 1.829999983310699e-01, 1.81999996304512e-01, 1.809999942779541e-01, 1.800000071525574e-01, 1.790000182388259e-01, 1.780000114439674e-01, 1.780000030994415e-01, 1.76999999880773e-01, 1.759999990463257e-01, 1.749999970197678e-01, 1.739999949932098e-01, 1.729999929666519e-01, 1.720000058412552e-01, 1.710000038146973e-01] +PI.Ti=[4.688059687614441e-01, 4.734940231973803e-01, 4.781820776333232e-01, 4.828701618715748e-01, 4.875582163075113e-01, 4.922462698039159e-01, 4.969343251793837e-01, 5.016223786758081e-01, 5.063104638535503e-01, 5.109984856685409e-01, 5.156865708463891e-01, 5.203746560242019e-01, 5.250626815973608e-01, 5.297507667750048e-01, 5.344387885901731e-01, 5.391268700097019e-01, 5.438148993411182e-01, 5.485029807607537e-01, 5.531910621802825e-01, 5.578790915117342e-01, 5.625671729313341e-01, 5.672552022626616e-01, 5.719432836823503e-01, 5.766313651019146e-01, 5.813193944332776e-01, 5.860074758529663e-01, 5.906955051842049e-01, 5.953835790873793e-01, 6.000716680235468e-01, 6.047596973548209e-01, 6.094477712579598e-01, 6.141358005894826e-01, 6.18823889525437e-01, 6.235119634281495e-01, 6.281999927600631e-01, 6.328880816958754e-01, 6.375760959944761e-01, 6.422641849306436e-01, 6.469522142620243e-01, 6.516403031979077e-01, 6.563283771012242e-01, 6.610164064326404e-01, 6.657044953685237e-01, 6.703925096671599e-01, 6.750805986032564e-01, 6.797686875387845e-01, 6.844567018377404e-01, 6.891447907738725e-01, 6.93832820105111e-01, 6.98520894008321e-01, 7.032089829444885e-01, 7.078970122756555e-01, 7.125851012114671e-01, 7.172731305426341e-01, 7.219611894134756e-01, 7.266492187452821e-01, 7.313373076809869e-01, 7.360253966169055e-01, 7.407134259480723e-01, 7.454015148838841e-01, 7.500895141507203e-01, 7.547776030861058e-01, 7.594656920222017e-01, 7.641537213535107e-01, 7.688418102893224e-01, 7.735298396204894e-01, 7.782178984911888e-01, 7.829059874272848e-01, 7.875940167587359e-01, 7.922821056947965e-01, 7.969701350259276e-01, 8.016582239617394e-01, 8.063462828323678e-01, 8.110343121638189e-01, 8.157224010999148e-01, 8.20410430431366e-01, 8.250985193671777e-01, 8.297865486983446e-01, 8.344746376341563e-01, 8.391626965049979e-01, 8.43850725836449e-01, 8.485388147725091e-01, 8.532268441037829e-01, 8.579149330395945e-01, 8.626030219754063e-01, 8.672910212415321e-01, 8.71979110177628e-01, 8.766671395092213e-01, 8.813552284450329e-01, 8.860433173808446e-01, 8.907313467120116e-01, 8.95419405582711e-01, 9.001074349146596e-01, 9.047955238502581e-01, 9.094836127863187e-01, 9.141716421174498e-01, 9.188597310532616e-01, 9.235477303192452e-01, 9.282358192553412e-01, 9.329238485870764e-01, 9.376119375228882e-01] +RefDat.y[5]=[4.690000116825104e-01, 4.729999900981803e-01, 4.779999854415692e-01, 4.830000105872703e-01, 4.880000054836273e-01, 4.920000132173237e-01, 4.970000094920309e-01, 5.019999741017835e-01, 5.059999832511348e-01, 5.109999758005409e-01, 5.159999720752351e-01, 5.199999812245503e-01, 5.249999774993065e-01, 5.299999737740628e-01, 5.339999794960022e-01, 5.389999717474427e-01, 5.440000313520165e-01, 5.490000239014226e-01, 5.529999697208937e-01, 5.580000293254674e-01, 5.63000021874838e-01, 5.669999751450097e-01, 5.720000272989184e-01, 5.770000198482534e-01, 5.809999731184251e-01, 5.860000252723694e-01, 5.910000252722983e-01, 5.950000232455717e-01, 6.000000232457848e-01, 6.050000232457493e-01, 6.09000027179718e-01, 6.140000212192003e-01, 6.190000212192003e-01, 6.240000063181901e-01, 6.280000191926157e-01, 6.330000191926513e-01, 6.380000042916409e-01, 6.420000171660312e-01, 6.470000171661022e-01, 6.520000171660312e-01, 6.560000151394466e-01, 6.610000151395531e-01, 6.66000015139482e-01, 6.700000131130751e-01, 6.750000131130041e-01, 6.80000013112933e-01, 6.840000152587891e-01, 6.89000011086455e-01, 6.94000011086384e-01, 6.989999961853738e-01, 7.03000009059906e-01, 7.080000090597639e-01, 7.130000090596218e-01, 7.17000021934083e-01, 7.219999921325067e-01, 7.269999921323645e-01, 7.310000050067902e-01, 7.360000050066836e-01, 7.410000050065415e-01, 7.450000178810027e-01, 7.499999880794262e-01, 7.549999880792841e-01, 7.590000033378601e-01, 7.640000009536033e-01, 7.690000009534612e-01, 7.739999890327454e-01, 7.77999984026346e-01, 7.829999840262039e-01, 7.879999840260618e-01, 7.919999969005584e-01, 7.969999969003808e-01, 8.019999969002387e-01, 8.059999799732657e-01, 8.109999799731236e-01, 8.159999799729815e-01, 8.199999928474426e-01, 8.249999928473005e-01, 8.299999928471584e-01, 8.340000057216196e-01, 8.389999759200433e-01, 8.439999759199012e-01, 8.489999759197235e-01, 8.529999887942202e-01, 8.579999887945754e-01, 8.629999887947175e-01, 8.669999718669629e-01, 8.719999718668208e-01, 8.769999718666787e-01, 8.809999847412819e-01, 8.859999847414241e-01, 8.909999847415662e-01, 8.949999678138826e-01, 8.999999678137405e-01, 9.049999678135984e-01, 9.089999806881661e-01, 9.139999806882727e-01, 9.190000402924201e-01, 9.240000104899911e-01, 9.279999637606602e-01, 9.330000233648786e-01, 9.380000233650208e-01] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PID.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PID.txt new file mode 100644 index 00000000000..72262e4cdf9 --- /dev/null +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PID.txt @@ -0,0 +1,14 @@ +last-generated=2022-10-06 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +PID.k=[9.49999988079071e-01, 9.405940767935639e-01, 9.313725226866972e-01, 9.22330080549172e-01, 9.13461564776384e-01, 9.047619114213735e-01, 8.962264043718727e-01, 8.878504637689104e-01, 8.796296097525849e-01, 8.715596242808541e-01, 8.636363762643579e-01, 8.558558814683416e-01, 8.482142655926266e-01, 8.407079523449109e-01, 8.33333314131997e-01, 8.260869449343398e-01, 8.189654907894031e-01, 8.119658250726932e-01, 8.050847724257855e-01, 7.983193373173854e-01, 7.916666895436687e-01, 7.851239378060366e-01, 7.786885488370624e-01, 7.723577062643717e-01, 7.661290118303472e-01, 7.599999904632568e-01, 7.539682301420675e-01, 7.480315066706938e-01, 7.421875010576051e-01, 7.364340948051341e-01, 7.307692272670684e-01, 7.251908203291423e-01, 7.196969926579135e-01, 7.142857420899057e-01, 7.089552312234501e-01, 7.037036967649851e-01, 6.985294335236517e-01, 6.934306658474082e-01, 6.884058081643121e-01, 6.834532511408543e-01, 6.785714074461476e-01, 6.737588618002714e-01, 6.690140868512251e-01, 6.643356731698628e-01, 6.597222073132263e-01, 6.551723994235512e-01, 6.506849584244234e-01, 6.46258532202724e-01, 6.418918896375844e-01, 6.375839176605937e-01, 6.333333253860474e-01, 6.291390596904763e-01, 6.249999880545577e-01, 6.209150375895698e-01, 6.168831122255133e-01, 6.129032445518791e-01, 6.089743390012684e-01, 6.050955611198249e-01, 6.012658380085799e-01, 5.974842755879434e-01, 5.937500135306363e-01, 5.900621494358014e-01, 5.864197638204993e-01, 5.828220818296059e-01, 5.792682689942577e-01, 5.7575755044043e-01, 5.722891826609033e-01, 5.688622680815263e-01, 5.654761828043975e-01, 5.621301519710173e-01, 5.588235199357301e-01, 5.555555714254248e-01, 5.523256203941751e-01, 5.491329524107439e-01, 5.459770009976317e-01, 5.428571701049805e-01, 5.397727444909791e-01, 5.367231280901378e-01, 5.337078440618878e-01, 5.307262637140925e-01, 5.277777963675111e-01, 5.248618732532855e-01, 5.219780175424763e-01, 5.191256927830721e-01, 5.163043625277675e-01, 5.13513515576789e-01, 5.107526839230281e-01, 5.08021416260471e-01, 5.05319176151436e-01, 5.02645486756633e-01, 4.999999904398093e-01, 4.973822042449649e-01, 4.947916633078104e-01, 4.92227974342671e-01, 4.896907201179299e-01, 4.87179483405312e-01, 4.846938767633536e-01, 4.822335052267483e-01, 4.797979961955375e-01, 4.773869251415851e-01, 4.749999940395355e-01] +RefDat.y[4]=[9.49999988079071e-01, 9.409999845176964e-01, 9.309999940544396e-01, 9.219999906048225e-01, 9.129999871552049e-01, 9.049999717623168e-01, 8.960000269859717e-01, 8.880000117421116e-01, 8.799999934435158e-01, 8.719999808073843e-01, 8.640000231563933e-01, 8.560000056028277e-01, 8.479999886453351e-01, 8.410000157355552e-01, 8.33000004887572e-01, 8.25999981165021e-01, 8.190000039339332e-01, 8.119999775290889e-01, 8.050000107287828e-01, 7.979999768734156e-01, 7.919999971985595e-01, 7.850000229476417e-01, 7.789999830722987e-01, 7.720000189542149e-01, 7.659999701381129e-01, 7.599999904632568e-01, 7.540000033379312e-01, 7.480000311135446e-01, 7.419999843835742e-01, 7.359999972582485e-01, 7.310000121592587e-01, 7.25000025033933e-01, 7.200000250337909e-01, 7.139999932049728e-01, 7.089999932050438e-01, 7.039999932051149e-01, 6.990000081061252e-01, 6.930000209807995e-01, 6.880000209807284e-01, 6.830000209805153e-01, 6.790000230073485e-01, 6.74000023007313e-01, 6.690000230070998e-01, 6.639999783040692e-01, 6.600000250338975e-01, 6.549999654293949e-01, 6.510000270604466e-01, 6.460000270604821e-01, 6.420000141856657e-01, 6.380000114440918e-01, 6.330000162124634e-01, 6.290000033380022e-01, 6.24999990463541e-01, 6.209999775890799e-01, 6.169999945160529e-01, 6.12999981641947e-01, 6.090000283718109e-01, 6.050000154971011e-01, 6.010000109672546e-01, 5.970000028610229e-01, 5.93999981880188e-01, 5.899999809267268e-01, 5.860000276564842e-01, 5.830000019074196e-01, 5.789999961853027e-01, 5.75999963283894e-01, 5.72000039815512e-01, 5.690000140664475e-01, 5.650000011919863e-01, 5.619999754428864e-01, 5.590000092985022e-01, 5.559999835494378e-01, 5.520000004764108e-01, 5.490000343319912e-01, 5.460000085829267e-01, 5.429999828338623e-01, 5.400000166891584e-01, 5.369999909403782e-01, 5.339999651913138e-01, 5.31000018119812e-01, 5.279999971389771e-01, 5.249999761581421e-01, 5.220000112057798e-01, 5.189999938011169e-01, 5.15999972820282e-01, 5.139999985694885e-01, 5.109999775886536e-01, 5.080000185965782e-01, 5.049999952316284e-01, 5.030000138280645e-01, 4.999999880794263e-01, 4.970000219341185e-01, 4.950000047683716e-01, 4.920000171660311e-01, 4.900000083446148e-01, 4.869999885559082e-01, 4.850000035762787e-01, 4.820000076293945e-01, 4.799999892711639e-01, 4.770000028608808e-01, 4.749999940395355e-01] +PID.Ti=[4.457142949104309e-01, 4.501714409641979e-01, 4.546285572156492e-01, 4.590857032694192e-01, 4.635428493231898e-01, 4.679999943399676e-01, 4.724571414307305e-01, 4.769142864475346e-01, 4.813714335382693e-01, 4.858285764809876e-01, 4.902857235718282e-01, 4.947428706626245e-01, 4.991999879510272e-01, 5.03657164844066e-01, 5.081142779846395e-01, 5.125714507295737e-01, 5.170285721661076e-01, 5.214856853066634e-01, 5.259428580515443e-01, 5.303999794881493e-01, 5.348571522332255e-01, 5.393142736695818e-01, 5.437714464148358e-01, 5.482285595551961e-01, 5.526857405962683e-01, 5.571428537368774e-01, 5.616000347774167e-01, 5.660571396221009e-01, 5.705142610588836e-01, 5.749714420997426e-01, 5.794285469440715e-01, 5.838857279854635e-01, 5.883428494217843e-01, 5.928000138706869e-01, 5.972571353074341e-01, 6.017143163484707e-01, 6.061714211926575e-01, 6.106285426295468e-01, 6.150857236705125e-01, 6.195428451066912e-01, 6.240000095560202e-01, 6.284571309925542e-01, 6.329143120333777e-01, 6.373714168779908e-01, 6.418285979192406e-01, 6.462857193554193e-01, 6.507428242002101e-01, 6.552000052412823e-01, 6.59657126677461e-01, 6.641142911265768e-01, 6.68571412563324e-01, 6.730285936040684e-01, 6.77485715040168e-01, 6.819428960809124e-01, 6.86399984333949e-01, 6.908571653752618e-01, 6.953142868118902e-01, 6.997714082483847e-01, 7.042285892889159e-01, 7.086857107250155e-01, 7.131428585825548e-01, 7.175999800196491e-01, 7.220571610605356e-01, 7.265142824969194e-01, 7.309714635376638e-01, 7.354285849737634e-01, 7.398856732272974e-01, 7.443428542678286e-01, 7.487999757047098e-01, 7.532571567457069e-01, 7.57714278181767e-01, 7.621714592225113e-01, 7.666285474759742e-01, 7.710857285164344e-01, 7.755428499531025e-01, 7.799999713897705e-01, 7.844571524305149e-01, 7.889142738671829e-01, 7.933714549073589e-01, 7.97828543161035e-01, 8.022857242017083e-01, 8.067428456384078e-01, 8.112000266792628e-01, 8.156571481153624e-01, 8.201143291561068e-01, 8.245714174090013e-01, 8.290285388460956e-01, 8.334857198869822e-01, 8.37942841323508e-01, 8.424000223641104e-01, 8.468571438002099e-01, 8.513142916576071e-01, 8.557714130947726e-01, 8.602285941355879e-01, 8.646857155721535e-01, 8.691428370085688e-01, 8.736000180489578e-01, 8.780571063024207e-01, 8.82514287342881e-01, 8.869714087798332e-01, 8.914285898208618e-01] +RefDat.y[5]=[4.460000097751617e-01, 4.499999881908316e-01, 4.550000133365363e-01, 4.589999917522126e-01, 4.639999866485596e-01, 4.679999943822671e-01, 4.720000035315665e-01, 4.769999979436415e-01, 4.810000070929394e-01, 4.859999996423988e-01, 4.90000008791674e-01, 4.950000050663904e-01, 4.990000142156878e-01, 5.04000010490382e-01, 5.080000159144447e-01, 5.130000084639039e-01, 5.170000213384361e-01, 5.210000276565552e-01, 5.26000019311745e-01, 5.299999725819167e-01, 5.350000247358609e-01, 5.389999780060326e-01, 5.440000301599414e-01, 5.479999759793592e-01, 5.529999759794481e-01, 5.569999814033508e-01, 5.619999766349792e-01, 5.659999793768729e-01, 5.709999793768018e-01, 5.74999992251334e-01, 5.789999961853027e-01, 5.83999990224856e-01, 5.880000030993883e-01, 5.929999881983781e-01, 5.970000010729103e-01, 6.020000010728392e-01, 6.059999990464322e-01, 6.109999990463612e-01, 6.150000119208935e-01, 6.200000047683716e-01, 6.240000098944154e-01, 6.280000227689476e-01, 6.330000227688766e-01, 6.370000207422565e-01, 6.420000207423986e-01, 6.460000336169308e-01, 6.510000187156719e-01, 6.549999719858436e-01, 6.600000315903818e-01, 6.639999699593301e-01, 6.690000295639038e-01, 6.729999828340044e-01, 6.769999957081814e-01, 6.819999957088919e-01, 6.859999895095825e-01, 6.909999787809241e-01, 6.949999916553498e-01, 6.999999916552432e-01, 7.040000045297043e-01, 7.090000045295622e-01, 7.129999876025891e-01, 7.17999987602447e-01, 7.220000004769082e-01, 7.269999980926514e-01, 7.310000133512273e-01, 7.350000262256885e-01, 7.399999964241121e-01, 7.44000009298076e-01, 7.490000092984311e-01, 7.530000221729278e-01, 7.580000221727502e-01, 7.620000350472114e-01, 7.670000052447824e-01, 7.710000181195278e-01, 7.760000181196699e-01, 7.799999713897705e-01, 7.839999842645159e-01, 7.88999984264658e-01, 7.929999971394034e-01, 7.979999673369744e-01, 8.019999802114356e-01, 8.06999980211258e-01, 8.109999930857547e-01, 8.159999930856126e-01, 8.200000059600737e-01, 8.249999761584973e-01, 8.289999890329585e-01, 8.330000042915344e-01, 8.380000019072776e-01, 8.420000147817388e-01, 8.470000147815967e-01, 8.509999978546235e-01, 8.559999978544814e-01, 8.600000107289426e-01, 8.65000010728836e-01, 8.690000236032617e-01, 8.740000128746033e-01, 8.780000066752939e-01, 8.830000066760044e-01, 8.870000195501814e-01, 8.90999972820282e-01] +PID.Td=[1.271186470985413e-01, 1.283898354021288e-01, 1.296610237057163e-01, 1.309321971081425e-01, 1.322033854117301e-01, 1.334745733447724e-01, 1.347457620189051e-01, 1.360169499519607e-01, 1.372881386260795e-01, 1.385593258179935e-01, 1.398305144921654e-01, 1.411016882651628e-01, 1.423728769392681e-01, 1.436440656133778e-01, 1.449152528053806e-01, 1.461864399972412e-01, 1.474576301536178e-01, 1.48728817345585e-01, 1.500000045374457e-01, 1.512711797927143e-01, 1.525423669846505e-01, 1.538135571409649e-01, 1.550847443329366e-01, 1.563559315248639e-01, 1.576271216811561e-01, 1.588983088731766e-01, 1.601694990293756e-01, 1.614406832568979e-01, 1.627118585122287e-01, 1.639830486685165e-01, 1.652542328960299e-01, 1.665254230524421e-01, 1.677966132086943e-01, 1.690677974361456e-01, 1.703389875926288e-01, 1.716101777489343e-01, 1.728813470752955e-01, 1.741525372317076e-01, 1.754237273880487e-01, 1.766949175443187e-01, 1.779661017719209e-01, 1.792372919282531e-01, 1.805084820844521e-01, 1.81779666312081e-01, 1.830508415673497e-01, 1.843220317236197e-01, 1.855932159511864e-01, 1.868644061075808e-01, 1.881355962638508e-01, 1.894067804913998e-01, 1.906779706478119e-01, 1.919491608039826e-01, 1.932203360591342e-01, 1.944915262153759e-01, 1.957627045143168e-01, 1.970338946707006e-01, 1.983050848270703e-01, 1.995762749833084e-01, 2.008474651394791e-01, 2.021186552956498e-01, 2.033898186935893e-01, 2.046610088499732e-01, 2.05932199006357e-01, 2.072033891626698e-01, 2.084745793189116e-01, 2.097457694751533e-01, 2.110169477740231e-01, 2.122881379304069e-01, 2.135593131856296e-01, 2.148305033419921e-01, 2.161016934982196e-01, 2.173728836544614e-01, 2.186440619532956e-01, 2.199152521096795e-01, 2.211864422660633e-01, 2.224576324224472e-01, 2.237288225786179e-01, 2.249999978337695e-01, 2.262711879900113e-01, 2.275423662889521e-01, 2.288135564453359e-01, 2.300847466017056e-01, 2.31355936757997e-01, 2.326271269141144e-01, 2.338983170702851e-01, 2.351694804682246e-01, 2.364406706246085e-01, 2.377118607809924e-01, 2.389830509373052e-01, 2.402542410935469e-01, 2.415254312497886e-01, 2.427966095486584e-01, 2.440677997050422e-01, 2.453389749603182e-01, 2.466101651166274e-01, 2.47881355272855e-01, 2.491525454290967e-01, 2.50423723727931e-01, 2.516949138843148e-01, 2.529661040406987e-01, 2.542372941970825e-01] +RefDat.y[6]=[1.270000040531158e-01, 1.28000006191431e-01, 1.299999952316284e-01, 1.309999972581863e-01, 1.319999992847443e-01, 1.330000013113022e-01, 1.35000005364418e-01, 1.36000007390976e-01, 1.369999954104424e-01, 1.389999967813492e-01, 1.400000005960464e-01, 1.410000026226044e-01, 1.420000059902668e-01, 1.439999938011169e-01, 1.449999958276749e-01, 1.459999978542328e-01, 1.470000016689301e-01, 1.490000030398369e-01, 1.500000059604645e-01, 1.509999942779541e-01, 1.529999956488609e-01, 1.53999999165535e-01, 1.550000011920929e-01, 1.560000032186508e-01, 1.580000072717667e-01, 1.589999943971634e-01, 1.599999964237213e-01, 1.609999984502792e-01, 1.630000019073486e-01, 1.64000004529953e-01, 1.650000065565109e-01, 1.669999945163727e-01, 1.679999977350235e-01, 1.689999997615814e-01, 1.700000017881393e-01, 1.720000058412552e-01, 1.729999929666519e-01, 1.739999949932098e-01, 1.749999994039536e-01, 1.770000010728836e-01, 1.780000030994415e-01, 1.790000051259995e-01, 1.809999942779541e-01, 1.81999996304512e-01, 1.829999983310699e-01, 1.840000063180924e-01, 1.860000002384186e-01, 1.870000064373016e-01, 1.879999935626984e-01, 1.889999955892563e-01, 1.909999996423721e-01, 1.920000016689301e-01, 1.93000003695488e-01, 1.940000200267343e-01, 1.959999948740005e-01, 1.969999969005585e-01, 1.979999989271164e-01, 2.000000029802322e-01, 2.010000050067902e-01, 2.020000070333481e-01, 2.029999941587448e-01, 2.049999910594099e-01, 2.060000002384186e-01, 2.070000022649765e-01, 2.080000114439852e-01, 2.099999934434891e-01, 2.10999995470047e-01, 2.119999974966049e-01, 2.139999979734954e-01, 2.150000035762787e-01, 2.160000056028366e-01, 2.170000034569095e-01, 2.189999824764476e-01, 2.199999988079071e-01, 2.21000000834465e-01, 2.220000028610229e-01, 2.240000069141388e-01, 2.249999940395355e-01, 2.26000010370995e-01, 2.279999893905331e-01, 2.290000021457672e-01, 2.300000041723251e-01, 2.310000097750551e-01, 2.329999953508377e-01, 2.339999973773956e-01, 2.349999994039536e-01, 2.360000014305115e-01, 2.380000030994771e-01, 2.38999992609024e-01, 2.400000017880328e-01, 2.419999986886978e-01, 2.430000007152557e-01, 2.440000027418137e-01, 2.450000047683716e-01, 2.469999939203262e-01, 2.479999959468842e-01, 2.489999979734421e-01, 2.5e-01, 2.519999945163727e-01, 2.529999911785126e-01, 2.540000081062317e-01] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PIDDerivativeTime.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PIDDerivativeTime.txt new file mode 100644 index 00000000000..f45109647f5 --- /dev/null +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PIDDerivativeTime.txt @@ -0,0 +1,12 @@ +last-generated=2022-10-06 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +PIDDerTim.T=[5e-01, 5.049999953433857e-01, 5.099999906867714e-01, 5.149999860301567e-01, 5.199999813735693e-01, 5.24999975785618e-01, 5.29999972060354e-01, 5.350000260770249e-01, 5.400000223517285e-01, 5.450000149011879e-01, 5.50000011175882e-01, 5.550000074505762e-01, 5.600000037252704e-01, 5.649999999999645e-01, 5.699999925494239e-01, 5.749999850988832e-01, 5.799999850988121e-01, 5.849999776482715e-01, 5.899999701977309e-01, 5.950000298023046e-01, 6.000000223516752e-01, 6.050000223516929e-01, 6.100000149011523e-01, 6.150000074506117e-01, 6.200000074505406e-01, 6.25e-01, 6.29999999999929e-01, 6.349999850989188e-01, 6.399999850988477e-01, 6.449999850990253e-01, 6.499999701977665e-01, 6.549999701976954e-01, 6.600000298022691e-01, 6.650000149008681e-01, 6.700000149011879e-01, 6.750000149011168e-01, 6.800000000001065e-01, 6.850000000000355e-01, 6.899999999999645e-01, 6.949999999998935e-01, 6.999999850988832e-01, 7.049999850988121e-01, 7.099999850991319e-01, 7.149999701977309e-01, 7.200000298023046e-01, 7.250000298022335e-01, 7.300000149009747e-01, 7.350000149011523e-01, 7.400000149010812e-01, 7.45000000000071e-01, 7.5e-01, 7.549999999998579e-01, 7.599999999997158e-01, 7.649999999995737e-01, 7.699999701979974e-01, 7.749999701978553e-01, 7.799999701976776e-01, 7.850000298022158e-01, 7.900000298020737e-01, 7.950000298019316e-01, 8.000000000003552e-01, 8.050000000002131e-01, 8.10000000000071e-01, 8.14999999999929e-01, 8.199999999997869e-01, 8.249999999996448e-01, 8.299999701980684e-01, 8.349999701979263e-01, 8.399999701977842e-01, 8.450000298023224e-01, 8.500000298021447e-01, 8.550000298020026e-01, 8.600000000004263e-01, 8.650000000002842e-01, 8.700000000001421e-01, 8.75e-01, 8.799999999998579e-01, 8.849999999997158e-01, 8.899999999995737e-01, 8.949999701979974e-01, 8.999999701978553e-01, 9.049999701976776e-01, 9.100000298022158e-01, 9.150000298020737e-01, 9.200000298019316e-01, 9.250000000003552e-01, 9.300000000002131e-01, 9.35000000000071e-01, 9.39999999999929e-01, 9.449999999997869e-01, 9.499999999996448e-01, 9.549999701980684e-01, 9.599999701979263e-01, 9.649999701977842e-01, 9.700000298023224e-01, 9.750000298021447e-01, 9.800000298020026e-01, 9.850000000004263e-01, 9.900000000002842e-01, 9.950000000001421e-01, 1e+00] +PIDDerTim.L=[3.00000011920929e-01, 3.030000032111988e-01, 3.059999945014752e-01, 3.089999857917481e-01, 3.120000068843307e-01, 3.1499999724329e-01, 3.179999894648903e-01, 3.210000096261474e-01, 3.240000018477306e-01, 3.269999903440742e-01, 3.300000123679527e-01, 3.330000045895532e-01, 3.359999968111715e-01, 3.389999890327809e-01, 3.420000073313669e-01, 3.449999958277193e-01, 3.479999917745857e-01, 3.510000100731717e-01, 3.539999985694352e-01, 3.569999945163904e-01, 3.600000128149764e-01, 3.630000087618339e-01, 3.659999972581952e-01, 3.68999985754521e-01, 3.720000115036565e-01, 3.75e-01, 3.779999959469552e-01, 3.810000067948496e-01, 3.840000027418048e-01, 3.869999986887599e-01, 3.899999797345096e-01, 3.930000054836096e-01, 3.960000014305647e-01, 3.989999824763321e-01, 4.020000082254144e-01, 4.050000041722807e-01, 4.079999852181547e-01, 4.110000109672191e-01, 4.140000069141033e-01, 4.170000028611295e-01, 4.199999839067903e-01, 4.230000096559258e-01, 4.260000056027389e-01, 4.289999866486128e-01, 4.320000123977484e-01, 4.350000083445615e-01, 4.379999893904354e-01, 4.410000151395709e-01, 4.44000011086384e-01, 4.469999921322579e-01, 4.49999988079071e-01, 4.530000138281355e-01, 4.560000097748775e-01, 4.590000057220459e-01, 4.620000016689301e-01, 4.649999976158142e-01, 4.679999935626984e-01, 4.709999895095825e-01, 4.740000152585404e-01, 4.770000112052824e-01, 4.799999773505902e-01, 4.830000030994415e-01, 4.859999990463967e-01, 4.889999949932098e-01, 4.920000207422032e-01, 4.950000166889453e-01, 4.979999828342531e-01, 5.009999787809951e-01, 5.040000045300596e-01, 5.070000302791595e-01, 5.099999964235437e-01, 5.130000221726081e-01, 5.159999585155935e-01, 5.18999984264658e-01, 5.220000100137224e-01, 5.249999761581421e-01, 5.280000019072065e-01, 5.31000027656271e-01, 5.339999938015433e-01, 5.369999897483209e-01, 5.4000001549703e-01, 5.429999816417694e-01, 5.460000073908694e-01, 5.490000331399338e-01, 5.519999992843535e-01, 5.549999952319836e-01, 5.580000209806218e-01, 5.609999871254677e-01, 5.640000128745323e-01, 5.669999790193782e-01, 5.700000047680164e-01, 5.730000007156465e-01, 5.759999668600662e-01, 5.789999926091306e-01, 5.820000183582306e-01, 5.8499998450297e-01, 5.880000102516791e-01, 5.910000061984567e-01, 5.93999972343729e-01, 5.969999980927935e-01, 6.000000238418579e-01] +RefDat.y[6]=[1.270000040531158e-01, 1.28000006191431e-01, 1.299999952316284e-01, 1.309999972581863e-01, 1.319999992847443e-01, 1.330000013113022e-01, 1.35000005364418e-01, 1.36000007390976e-01, 1.369999954104424e-01, 1.389999967813492e-01, 1.400000005960464e-01, 1.410000026226044e-01, 1.420000059902668e-01, 1.439999938011169e-01, 1.449999958276749e-01, 1.459999978542328e-01, 1.470000016689301e-01, 1.490000030398369e-01, 1.500000059604645e-01, 1.509999942779541e-01, 1.529999956488609e-01, 1.53999999165535e-01, 1.550000011920929e-01, 1.560000032186508e-01, 1.580000072717667e-01, 1.589999943971634e-01, 1.599999964237213e-01, 1.609999984502792e-01, 1.630000019073486e-01, 1.64000004529953e-01, 1.650000065565109e-01, 1.669999945163727e-01, 1.679999977350235e-01, 1.689999997615814e-01, 1.700000017881393e-01, 1.720000058412552e-01, 1.729999929666519e-01, 1.739999949932098e-01, 1.749999994039536e-01, 1.770000010728836e-01, 1.780000030994415e-01, 1.790000051259995e-01, 1.809999942779541e-01, 1.81999996304512e-01, 1.829999983310699e-01, 1.840000063180924e-01, 1.860000002384186e-01, 1.870000064373016e-01, 1.879999935626984e-01, 1.889999955892563e-01, 1.909999996423721e-01, 1.920000016689301e-01, 1.93000003695488e-01, 1.940000200267343e-01, 1.959999948740005e-01, 1.969999969005585e-01, 1.979999989271164e-01, 2.000000029802322e-01, 2.010000050067902e-01, 2.020000070333481e-01, 2.029999941587448e-01, 2.049999910594099e-01, 2.060000002384186e-01, 2.070000022649765e-01, 2.080000114439852e-01, 2.099999934434891e-01, 2.10999995470047e-01, 2.119999974966049e-01, 2.139999979734954e-01, 2.150000035762787e-01, 2.160000056028366e-01, 2.170000034569095e-01, 2.189999824764476e-01, 2.199999988079071e-01, 2.21000000834465e-01, 2.220000028610229e-01, 2.240000069141388e-01, 2.249999940395355e-01, 2.26000010370995e-01, 2.279999893905331e-01, 2.290000021457672e-01, 2.300000041723251e-01, 2.310000097750551e-01, 2.329999953508377e-01, 2.339999973773956e-01, 2.349999994039536e-01, 2.360000014305115e-01, 2.380000030994771e-01, 2.38999992609024e-01, 2.400000017880328e-01, 2.419999986886978e-01, 2.430000007152557e-01, 2.440000027418137e-01, 2.450000047683716e-01, 2.469999939203262e-01, 2.479999959468842e-01, 2.489999979734421e-01, 2.5e-01, 2.519999945163727e-01, 2.529999911785126e-01, 2.540000081062317e-01] +PIDDerTim.Td=[1.271186470985413e-01, 1.283898354021288e-01, 1.296610237057163e-01, 1.309321971081425e-01, 1.322033854117301e-01, 1.334745733447724e-01, 1.347457620189051e-01, 1.360169499519607e-01, 1.372881386260795e-01, 1.385593258179935e-01, 1.398305144921654e-01, 1.411016882651628e-01, 1.423728769392681e-01, 1.436440656133778e-01, 1.449152528053806e-01, 1.461864399972412e-01, 1.474576301536178e-01, 1.48728817345585e-01, 1.500000045374457e-01, 1.512711797927143e-01, 1.525423669846505e-01, 1.538135571409649e-01, 1.550847443329366e-01, 1.563559315248639e-01, 1.576271216811561e-01, 1.588983088731766e-01, 1.601694990293756e-01, 1.614406832568979e-01, 1.627118585122287e-01, 1.639830486685165e-01, 1.652542328960299e-01, 1.665254230524421e-01, 1.677966132086943e-01, 1.690677974361456e-01, 1.703389875926288e-01, 1.716101777489343e-01, 1.728813470752955e-01, 1.741525372317076e-01, 1.754237273880487e-01, 1.766949175443187e-01, 1.779661017719209e-01, 1.792372919282531e-01, 1.805084820844521e-01, 1.81779666312081e-01, 1.830508415673497e-01, 1.843220317236197e-01, 1.855932159511864e-01, 1.868644061075808e-01, 1.881355962638508e-01, 1.894067804913998e-01, 1.906779706478119e-01, 1.919491608039826e-01, 1.932203360591342e-01, 1.944915262153759e-01, 1.957627045143168e-01, 1.970338946707006e-01, 1.983050848270703e-01, 1.995762749833084e-01, 2.008474651394791e-01, 2.021186552956498e-01, 2.033898186935893e-01, 2.046610088499732e-01, 2.05932199006357e-01, 2.072033891626698e-01, 2.084745793189116e-01, 2.097457694751533e-01, 2.110169477740231e-01, 2.122881379304069e-01, 2.135593131856296e-01, 2.148305033419921e-01, 2.161016934982196e-01, 2.173728836544614e-01, 2.186440619532956e-01, 2.199152521096795e-01, 2.211864422660633e-01, 2.224576324224472e-01, 2.237288225786179e-01, 2.249999978337695e-01, 2.262711879900113e-01, 2.275423662889521e-01, 2.288135564453359e-01, 2.300847466017056e-01, 2.31355936757997e-01, 2.326271269141144e-01, 2.338983170702851e-01, 2.351694804682246e-01, 2.364406706246085e-01, 2.377118607809924e-01, 2.389830509373052e-01, 2.402542410935469e-01, 2.415254312497886e-01, 2.427966095486584e-01, 2.440677997050422e-01, 2.453389749603182e-01, 2.466101651166274e-01, 2.47881355272855e-01, 2.491525454290967e-01, 2.50423723727931e-01, 2.516949138843148e-01, 2.529661040406987e-01, 2.542372941970825e-01] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PIDGain.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PIDGain.txt new file mode 100644 index 00000000000..bf8a3921774 --- /dev/null +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PIDGain.txt @@ -0,0 +1,13 @@ +last-generated=2022-10-06 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +PIDGai.kp=[1e+00, 1.009999990686771e+00, 1.019999981373543e+00, 1.029999972060313e+00, 1.039999962747139e+00, 1.049999951571236e+00, 1.059999944120708e+00, 1.07000005215405e+00, 1.080000044703457e+00, 1.090000029802376e+00, 1.100000022351764e+00, 1.110000014901152e+00, 1.120000007450541e+00, 1.129999999999929e+00, 1.139999985098848e+00, 1.149999970197766e+00, 1.159999970197624e+00, 1.169999955296543e+00, 1.179999940395462e+00, 1.190000059604609e+00, 1.20000004470335e+00, 1.210000044703386e+00, 1.220000029802305e+00, 1.230000014901223e+00, 1.240000014901081e+00, 1.25e+00, 1.259999999999858e+00, 1.269999970197838e+00, 1.279999970197695e+00, 1.289999970198051e+00, 1.299999940395533e+00, 1.309999940395391e+00, 1.320000059604538e+00, 1.330000029801736e+00, 1.340000029802376e+00, 1.350000029802234e+00, 1.360000000000213e+00, 1.370000000000071e+00, 1.379999999999929e+00, 1.389999999999787e+00, 1.399999970197766e+00, 1.409999970197624e+00, 1.419999970198264e+00, 1.429999940395462e+00, 1.440000059604609e+00, 1.450000059604467e+00, 1.460000029801949e+00, 1.470000029802305e+00, 1.480000029802162e+00, 1.490000000000142e+00, 1.5e+00, 1.509999999999716e+00, 1.519999999999432e+00, 1.529999999999147e+00, 1.539999940395995e+00, 1.549999940395711e+00, 1.559999940395355e+00, 1.570000059604432e+00, 1.580000059604147e+00, 1.590000059603863e+00, 1.60000000000071e+00, 1.610000000000426e+00, 1.620000000000142e+00, 1.629999999999858e+00, 1.639999999999574e+00, 1.64999999999929e+00, 1.659999940396137e+00, 1.669999940395853e+00, 1.679999940395568e+00, 1.690000059604645e+00, 1.700000059604289e+00, 1.710000059604005e+00, 1.720000000000853e+00, 1.730000000000568e+00, 1.740000000000284e+00, 1.75e+00, 1.759999999999716e+00, 1.769999999999432e+00, 1.779999999999147e+00, 1.789999940395995e+00, 1.799999940395711e+00, 1.809999940395355e+00, 1.820000059604432e+00, 1.830000059604147e+00, 1.840000059603863e+00, 1.85000000000071e+00, 1.860000000000426e+00, 1.870000000000142e+00, 1.879999999999858e+00, 1.889999999999574e+00, 1.89999999999929e+00, 1.909999940396137e+00, 1.919999940395853e+00, 1.929999940395568e+00, 1.940000059604645e+00, 1.950000059604289e+00, 1.960000059604005e+00, 1.970000000000853e+00, 1.980000000000568e+00, 1.990000000000284e+00, 2e+00] +PIDGai.T=[5e-01, 5.049999953433857e-01, 5.099999906867714e-01, 5.149999860301567e-01, 5.199999813735693e-01, 5.24999975785618e-01, 5.29999972060354e-01, 5.350000260770249e-01, 5.400000223517285e-01, 5.450000149011879e-01, 5.50000011175882e-01, 5.550000074505762e-01, 5.600000037252704e-01, 5.649999999999645e-01, 5.699999925494239e-01, 5.749999850988832e-01, 5.799999850988121e-01, 5.849999776482715e-01, 5.899999701977309e-01, 5.950000298023046e-01, 6.000000223516752e-01, 6.050000223516929e-01, 6.100000149011523e-01, 6.150000074506117e-01, 6.200000074505406e-01, 6.25e-01, 6.29999999999929e-01, 6.349999850989188e-01, 6.399999850988477e-01, 6.449999850990253e-01, 6.499999701977665e-01, 6.549999701976954e-01, 6.600000298022691e-01, 6.650000149008681e-01, 6.700000149011879e-01, 6.750000149011168e-01, 6.800000000001065e-01, 6.850000000000355e-01, 6.899999999999645e-01, 6.949999999998935e-01, 6.999999850988832e-01, 7.049999850988121e-01, 7.099999850991319e-01, 7.149999701977309e-01, 7.200000298023046e-01, 7.250000298022335e-01, 7.300000149009747e-01, 7.350000149011523e-01, 7.400000149010812e-01, 7.45000000000071e-01, 7.5e-01, 7.549999999998579e-01, 7.599999999997158e-01, 7.649999999995737e-01, 7.699999701979974e-01, 7.749999701978553e-01, 7.799999701976776e-01, 7.850000298022158e-01, 7.900000298020737e-01, 7.950000298019316e-01, 8.000000000003552e-01, 8.050000000002131e-01, 8.10000000000071e-01, 8.14999999999929e-01, 8.199999999997869e-01, 8.249999999996448e-01, 8.299999701980684e-01, 8.349999701979263e-01, 8.399999701977842e-01, 8.450000298023224e-01, 8.500000298021447e-01, 8.550000298020026e-01, 8.600000000004263e-01, 8.650000000002842e-01, 8.700000000001421e-01, 8.75e-01, 8.799999999998579e-01, 8.849999999997158e-01, 8.899999999995737e-01, 8.949999701979974e-01, 8.999999701978553e-01, 9.049999701976776e-01, 9.100000298022158e-01, 9.150000298020737e-01, 9.200000298019316e-01, 9.250000000003552e-01, 9.300000000002131e-01, 9.35000000000071e-01, 9.39999999999929e-01, 9.449999999997869e-01, 9.499999999996448e-01, 9.549999701980684e-01, 9.599999701979263e-01, 9.649999701977842e-01, 9.700000298023224e-01, 9.750000298021447e-01, 9.800000298020026e-01, 9.850000000004263e-01, 9.900000000002842e-01, 9.950000000001421e-01, 1e+00] +PIDGai.L=[3.00000011920929e-01, 3.030000032111988e-01, 3.059999945014752e-01, 3.089999857917481e-01, 3.120000068843307e-01, 3.1499999724329e-01, 3.179999894648903e-01, 3.210000096261474e-01, 3.240000018477306e-01, 3.269999903440742e-01, 3.300000123679527e-01, 3.330000045895532e-01, 3.359999968111715e-01, 3.389999890327809e-01, 3.420000073313669e-01, 3.449999958277193e-01, 3.479999917745857e-01, 3.510000100731717e-01, 3.539999985694352e-01, 3.569999945163904e-01, 3.600000128149764e-01, 3.630000087618339e-01, 3.659999972581952e-01, 3.68999985754521e-01, 3.720000115036565e-01, 3.75e-01, 3.779999959469552e-01, 3.810000067948496e-01, 3.840000027418048e-01, 3.869999986887599e-01, 3.899999797345096e-01, 3.930000054836096e-01, 3.960000014305647e-01, 3.989999824763321e-01, 4.020000082254144e-01, 4.050000041722807e-01, 4.079999852181547e-01, 4.110000109672191e-01, 4.140000069141033e-01, 4.170000028611295e-01, 4.199999839067903e-01, 4.230000096559258e-01, 4.260000056027389e-01, 4.289999866486128e-01, 4.320000123977484e-01, 4.350000083445615e-01, 4.379999893904354e-01, 4.410000151395709e-01, 4.44000011086384e-01, 4.469999921322579e-01, 4.49999988079071e-01, 4.530000138281355e-01, 4.560000097748775e-01, 4.590000057220459e-01, 4.620000016689301e-01, 4.649999976158142e-01, 4.679999935626984e-01, 4.709999895095825e-01, 4.740000152585404e-01, 4.770000112052824e-01, 4.799999773505902e-01, 4.830000030994415e-01, 4.859999990463967e-01, 4.889999949932098e-01, 4.920000207422032e-01, 4.950000166889453e-01, 4.979999828342531e-01, 5.009999787809951e-01, 5.040000045300596e-01, 5.070000302791595e-01, 5.099999964235437e-01, 5.130000221726081e-01, 5.159999585155935e-01, 5.18999984264658e-01, 5.220000100137224e-01, 5.249999761581421e-01, 5.280000019072065e-01, 5.31000027656271e-01, 5.339999938015433e-01, 5.369999897483209e-01, 5.4000001549703e-01, 5.429999816417694e-01, 5.460000073908694e-01, 5.490000331399338e-01, 5.519999992843535e-01, 5.549999952319836e-01, 5.580000209806218e-01, 5.609999871254677e-01, 5.640000128745323e-01, 5.669999790193782e-01, 5.700000047680164e-01, 5.730000007156465e-01, 5.759999668600662e-01, 5.789999926091306e-01, 5.820000183582306e-01, 5.8499998450297e-01, 5.880000102516791e-01, 5.910000061984567e-01, 5.93999972343729e-01, 5.969999980927935e-01, 6.000000238418579e-01] +PIDGai.k=[9.49999988079071e-01, 9.405940767935639e-01, 9.313725226866972e-01, 9.22330080549172e-01, 9.13461564776384e-01, 9.047619114213735e-01, 8.962264043718727e-01, 8.878504637689104e-01, 8.796296097525849e-01, 8.715596242808541e-01, 8.636363762643579e-01, 8.558558814683416e-01, 8.482142655926266e-01, 8.407079523449109e-01, 8.33333314131997e-01, 8.260869449343398e-01, 8.189654907894031e-01, 8.119658250726932e-01, 8.050847724257855e-01, 7.983193373173854e-01, 7.916666895436687e-01, 7.851239378060366e-01, 7.786885488370624e-01, 7.723577062643717e-01, 7.661290118303472e-01, 7.599999904632568e-01, 7.539682301420675e-01, 7.480315066706938e-01, 7.421875010576051e-01, 7.364340948051341e-01, 7.307692272670684e-01, 7.251908203291423e-01, 7.196969926579135e-01, 7.142857420899057e-01, 7.089552312234501e-01, 7.037036967649851e-01, 6.985294335236517e-01, 6.934306658474082e-01, 6.884058081643121e-01, 6.834532511408543e-01, 6.785714074461476e-01, 6.737588618002714e-01, 6.690140868512251e-01, 6.643356731698628e-01, 6.597222073132263e-01, 6.551723994235512e-01, 6.506849584244234e-01, 6.46258532202724e-01, 6.418918896375844e-01, 6.375839176605937e-01, 6.333333253860474e-01, 6.291390596904763e-01, 6.249999880545577e-01, 6.209150375895698e-01, 6.168831122255133e-01, 6.129032445518791e-01, 6.089743390012684e-01, 6.050955611198249e-01, 6.012658380085799e-01, 5.974842755879434e-01, 5.937500135306363e-01, 5.900621494358014e-01, 5.864197638204993e-01, 5.828220818296059e-01, 5.792682689942577e-01, 5.7575755044043e-01, 5.722891826609033e-01, 5.688622680815263e-01, 5.654761828043975e-01, 5.621301519710173e-01, 5.588235199357301e-01, 5.555555714254248e-01, 5.523256203941751e-01, 5.491329524107439e-01, 5.459770009976317e-01, 5.428571701049805e-01, 5.397727444909791e-01, 5.367231280901378e-01, 5.337078440618878e-01, 5.307262637140925e-01, 5.277777963675111e-01, 5.248618732532855e-01, 5.219780175424763e-01, 5.191256927830721e-01, 5.163043625277675e-01, 5.13513515576789e-01, 5.107526839230281e-01, 5.08021416260471e-01, 5.05319176151436e-01, 5.02645486756633e-01, 4.999999904398093e-01, 4.973822042449649e-01, 4.947916633078104e-01, 4.92227974342671e-01, 4.896907201179299e-01, 4.87179483405312e-01, 4.846938767633536e-01, 4.822335052267483e-01, 4.797979961955375e-01, 4.773869251415851e-01, 4.749999940395355e-01] +RefDat.y[4]=[9.49999988079071e-01, 9.409999845176964e-01, 9.309999940544396e-01, 9.219999906048225e-01, 9.129999871552049e-01, 9.049999717623168e-01, 8.960000269859717e-01, 8.880000117421116e-01, 8.799999934435158e-01, 8.719999808073843e-01, 8.640000231563933e-01, 8.560000056028277e-01, 8.479999886453351e-01, 8.410000157355552e-01, 8.33000004887572e-01, 8.25999981165021e-01, 8.190000039339332e-01, 8.119999775290889e-01, 8.050000107287828e-01, 7.979999768734156e-01, 7.919999971985595e-01, 7.850000229476417e-01, 7.789999830722987e-01, 7.720000189542149e-01, 7.659999701381129e-01, 7.599999904632568e-01, 7.540000033379312e-01, 7.480000311135446e-01, 7.419999843835742e-01, 7.359999972582485e-01, 7.310000121592587e-01, 7.25000025033933e-01, 7.200000250337909e-01, 7.139999932049728e-01, 7.089999932050438e-01, 7.039999932051149e-01, 6.990000081061252e-01, 6.930000209807995e-01, 6.880000209807284e-01, 6.830000209805153e-01, 6.790000230073485e-01, 6.74000023007313e-01, 6.690000230070998e-01, 6.639999783040692e-01, 6.600000250338975e-01, 6.549999654293949e-01, 6.510000270604466e-01, 6.460000270604821e-01, 6.420000141856657e-01, 6.380000114440918e-01, 6.330000162124634e-01, 6.290000033380022e-01, 6.24999990463541e-01, 6.209999775890799e-01, 6.169999945160529e-01, 6.12999981641947e-01, 6.090000283718109e-01, 6.050000154971011e-01, 6.010000109672546e-01, 5.970000028610229e-01, 5.93999981880188e-01, 5.899999809267268e-01, 5.860000276564842e-01, 5.830000019074196e-01, 5.789999961853027e-01, 5.75999963283894e-01, 5.72000039815512e-01, 5.690000140664475e-01, 5.650000011919863e-01, 5.619999754428864e-01, 5.590000092985022e-01, 5.559999835494378e-01, 5.520000004764108e-01, 5.490000343319912e-01, 5.460000085829267e-01, 5.429999828338623e-01, 5.400000166891584e-01, 5.369999909403782e-01, 5.339999651913138e-01, 5.31000018119812e-01, 5.279999971389771e-01, 5.249999761581421e-01, 5.220000112057798e-01, 5.189999938011169e-01, 5.15999972820282e-01, 5.139999985694885e-01, 5.109999775886536e-01, 5.080000185965782e-01, 5.049999952316284e-01, 5.030000138280645e-01, 4.999999880794263e-01, 4.970000219341185e-01, 4.950000047683716e-01, 4.920000171660311e-01, 4.900000083446148e-01, 4.869999885559082e-01, 4.850000035762787e-01, 4.820000076293945e-01, 4.799999892711639e-01, 4.770000028608808e-01, 4.749999940395355e-01] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PIDIntegralTime.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PIDIntegralTime.txt new file mode 100644 index 00000000000..61b21cab0fd --- /dev/null +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PIDIntegralTime.txt @@ -0,0 +1,12 @@ +last-generated=2022-10-06 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +PIDIntTim.T=[5e-01, 5.049999953433857e-01, 5.099999906867714e-01, 5.149999860301567e-01, 5.199999813735693e-01, 5.24999975785618e-01, 5.29999972060354e-01, 5.350000260770249e-01, 5.400000223517285e-01, 5.450000149011879e-01, 5.50000011175882e-01, 5.550000074505762e-01, 5.600000037252704e-01, 5.649999999999645e-01, 5.699999925494239e-01, 5.749999850988832e-01, 5.799999850988121e-01, 5.849999776482715e-01, 5.899999701977309e-01, 5.950000298023046e-01, 6.000000223516752e-01, 6.050000223516929e-01, 6.100000149011523e-01, 6.150000074506117e-01, 6.200000074505406e-01, 6.25e-01, 6.29999999999929e-01, 6.349999850989188e-01, 6.399999850988477e-01, 6.449999850990253e-01, 6.499999701977665e-01, 6.549999701976954e-01, 6.600000298022691e-01, 6.650000149008681e-01, 6.700000149011879e-01, 6.750000149011168e-01, 6.800000000001065e-01, 6.850000000000355e-01, 6.899999999999645e-01, 6.949999999998935e-01, 6.999999850988832e-01, 7.049999850988121e-01, 7.099999850991319e-01, 7.149999701977309e-01, 7.200000298023046e-01, 7.250000298022335e-01, 7.300000149009747e-01, 7.350000149011523e-01, 7.400000149010812e-01, 7.45000000000071e-01, 7.5e-01, 7.549999999998579e-01, 7.599999999997158e-01, 7.649999999995737e-01, 7.699999701979974e-01, 7.749999701978553e-01, 7.799999701976776e-01, 7.850000298022158e-01, 7.900000298020737e-01, 7.950000298019316e-01, 8.000000000003552e-01, 8.050000000002131e-01, 8.10000000000071e-01, 8.14999999999929e-01, 8.199999999997869e-01, 8.249999999996448e-01, 8.299999701980684e-01, 8.349999701979263e-01, 8.399999701977842e-01, 8.450000298023224e-01, 8.500000298021447e-01, 8.550000298020026e-01, 8.600000000004263e-01, 8.650000000002842e-01, 8.700000000001421e-01, 8.75e-01, 8.799999999998579e-01, 8.849999999997158e-01, 8.899999999995737e-01, 8.949999701979974e-01, 8.999999701978553e-01, 9.049999701976776e-01, 9.100000298022158e-01, 9.150000298020737e-01, 9.200000298019316e-01, 9.250000000003552e-01, 9.300000000002131e-01, 9.35000000000071e-01, 9.39999999999929e-01, 9.449999999997869e-01, 9.499999999996448e-01, 9.549999701980684e-01, 9.599999701979263e-01, 9.649999701977842e-01, 9.700000298023224e-01, 9.750000298021447e-01, 9.800000298020026e-01, 9.850000000004263e-01, 9.900000000002842e-01, 9.950000000001421e-01, 1e+00] +PIDIntTim.L=[3.00000011920929e-01, 3.030000032111988e-01, 3.059999945014752e-01, 3.089999857917481e-01, 3.120000068843307e-01, 3.1499999724329e-01, 3.179999894648903e-01, 3.210000096261474e-01, 3.240000018477306e-01, 3.269999903440742e-01, 3.300000123679527e-01, 3.330000045895532e-01, 3.359999968111715e-01, 3.389999890327809e-01, 3.420000073313669e-01, 3.449999958277193e-01, 3.479999917745857e-01, 3.510000100731717e-01, 3.539999985694352e-01, 3.569999945163904e-01, 3.600000128149764e-01, 3.630000087618339e-01, 3.659999972581952e-01, 3.68999985754521e-01, 3.720000115036565e-01, 3.75e-01, 3.779999959469552e-01, 3.810000067948496e-01, 3.840000027418048e-01, 3.869999986887599e-01, 3.899999797345096e-01, 3.930000054836096e-01, 3.960000014305647e-01, 3.989999824763321e-01, 4.020000082254144e-01, 4.050000041722807e-01, 4.079999852181547e-01, 4.110000109672191e-01, 4.140000069141033e-01, 4.170000028611295e-01, 4.199999839067903e-01, 4.230000096559258e-01, 4.260000056027389e-01, 4.289999866486128e-01, 4.320000123977484e-01, 4.350000083445615e-01, 4.379999893904354e-01, 4.410000151395709e-01, 4.44000011086384e-01, 4.469999921322579e-01, 4.49999988079071e-01, 4.530000138281355e-01, 4.560000097748775e-01, 4.590000057220459e-01, 4.620000016689301e-01, 4.649999976158142e-01, 4.679999935626984e-01, 4.709999895095825e-01, 4.740000152585404e-01, 4.770000112052824e-01, 4.799999773505902e-01, 4.830000030994415e-01, 4.859999990463967e-01, 4.889999949932098e-01, 4.920000207422032e-01, 4.950000166889453e-01, 4.979999828342531e-01, 5.009999787809951e-01, 5.040000045300596e-01, 5.070000302791595e-01, 5.099999964235437e-01, 5.130000221726081e-01, 5.159999585155935e-01, 5.18999984264658e-01, 5.220000100137224e-01, 5.249999761581421e-01, 5.280000019072065e-01, 5.31000027656271e-01, 5.339999938015433e-01, 5.369999897483209e-01, 5.4000001549703e-01, 5.429999816417694e-01, 5.460000073908694e-01, 5.490000331399338e-01, 5.519999992843535e-01, 5.549999952319836e-01, 5.580000209806218e-01, 5.609999871254677e-01, 5.640000128745323e-01, 5.669999790193782e-01, 5.700000047680164e-01, 5.730000007156465e-01, 5.759999668600662e-01, 5.789999926091306e-01, 5.820000183582306e-01, 5.8499998450297e-01, 5.880000102516791e-01, 5.910000061984567e-01, 5.93999972343729e-01, 5.969999980927935e-01, 6.000000238418579e-01] +PIDIntTim.Ti=[4.457142949104309e-01, 4.501714409641979e-01, 4.546285572156492e-01, 4.590857032694192e-01, 4.635428493231898e-01, 4.679999943399676e-01, 4.724571414307305e-01, 4.769142864475346e-01, 4.813714335382693e-01, 4.858285764809876e-01, 4.902857235718282e-01, 4.947428706626245e-01, 4.991999879510272e-01, 5.03657164844066e-01, 5.081142779846395e-01, 5.125714507295737e-01, 5.170285721661076e-01, 5.214856853066634e-01, 5.259428580515443e-01, 5.303999794881493e-01, 5.348571522332255e-01, 5.393142736695818e-01, 5.437714464148358e-01, 5.482285595551961e-01, 5.526857405962683e-01, 5.571428537368774e-01, 5.616000347774167e-01, 5.660571396221009e-01, 5.705142610588836e-01, 5.749714420997426e-01, 5.794285469440715e-01, 5.838857279854635e-01, 5.883428494217843e-01, 5.928000138706869e-01, 5.972571353074341e-01, 6.017143163484707e-01, 6.061714211926575e-01, 6.106285426295468e-01, 6.150857236705125e-01, 6.195428451066912e-01, 6.240000095560202e-01, 6.284571309925542e-01, 6.329143120333777e-01, 6.373714168779908e-01, 6.418285979192406e-01, 6.462857193554193e-01, 6.507428242002101e-01, 6.552000052412823e-01, 6.59657126677461e-01, 6.641142911265768e-01, 6.68571412563324e-01, 6.730285936040684e-01, 6.77485715040168e-01, 6.819428960809124e-01, 6.86399984333949e-01, 6.908571653752618e-01, 6.953142868118902e-01, 6.997714082483847e-01, 7.042285892889159e-01, 7.086857107250155e-01, 7.131428585825548e-01, 7.175999800196491e-01, 7.220571610605356e-01, 7.265142824969194e-01, 7.309714635376638e-01, 7.354285849737634e-01, 7.398856732272974e-01, 7.443428542678286e-01, 7.487999757047098e-01, 7.532571567457069e-01, 7.57714278181767e-01, 7.621714592225113e-01, 7.666285474759742e-01, 7.710857285164344e-01, 7.755428499531025e-01, 7.799999713897705e-01, 7.844571524305149e-01, 7.889142738671829e-01, 7.933714549073589e-01, 7.97828543161035e-01, 8.022857242017083e-01, 8.067428456384078e-01, 8.112000266792628e-01, 8.156571481153624e-01, 8.201143291561068e-01, 8.245714174090013e-01, 8.290285388460956e-01, 8.334857198869822e-01, 8.37942841323508e-01, 8.424000223641104e-01, 8.468571438002099e-01, 8.513142916576071e-01, 8.557714130947726e-01, 8.602285941355879e-01, 8.646857155721535e-01, 8.691428370085688e-01, 8.736000180489578e-01, 8.780571063024207e-01, 8.82514287342881e-01, 8.869714087798332e-01, 8.914285898208618e-01] +RefDat.y[5]=[4.460000097751617e-01, 4.499999881908316e-01, 4.550000133365363e-01, 4.589999917522126e-01, 4.639999866485596e-01, 4.679999943822671e-01, 4.720000035315665e-01, 4.769999979436415e-01, 4.810000070929394e-01, 4.859999996423988e-01, 4.90000008791674e-01, 4.950000050663904e-01, 4.990000142156878e-01, 5.04000010490382e-01, 5.080000159144447e-01, 5.130000084639039e-01, 5.170000213384361e-01, 5.210000276565552e-01, 5.26000019311745e-01, 5.299999725819167e-01, 5.350000247358609e-01, 5.389999780060326e-01, 5.440000301599414e-01, 5.479999759793592e-01, 5.529999759794481e-01, 5.569999814033508e-01, 5.619999766349792e-01, 5.659999793768729e-01, 5.709999793768018e-01, 5.74999992251334e-01, 5.789999961853027e-01, 5.83999990224856e-01, 5.880000030993883e-01, 5.929999881983781e-01, 5.970000010729103e-01, 6.020000010728392e-01, 6.059999990464322e-01, 6.109999990463612e-01, 6.150000119208935e-01, 6.200000047683716e-01, 6.240000098944154e-01, 6.280000227689476e-01, 6.330000227688766e-01, 6.370000207422565e-01, 6.420000207423986e-01, 6.460000336169308e-01, 6.510000187156719e-01, 6.549999719858436e-01, 6.600000315903818e-01, 6.639999699593301e-01, 6.690000295639038e-01, 6.729999828340044e-01, 6.769999957081814e-01, 6.819999957088919e-01, 6.859999895095825e-01, 6.909999787809241e-01, 6.949999916553498e-01, 6.999999916552432e-01, 7.040000045297043e-01, 7.090000045295622e-01, 7.129999876025891e-01, 7.17999987602447e-01, 7.220000004769082e-01, 7.269999980926514e-01, 7.310000133512273e-01, 7.350000262256885e-01, 7.399999964241121e-01, 7.44000009298076e-01, 7.490000092984311e-01, 7.530000221729278e-01, 7.580000221727502e-01, 7.620000350472114e-01, 7.670000052447824e-01, 7.710000181195278e-01, 7.760000181196699e-01, 7.799999713897705e-01, 7.839999842645159e-01, 7.88999984264658e-01, 7.929999971394034e-01, 7.979999673369744e-01, 8.019999802114356e-01, 8.06999980211258e-01, 8.109999930857547e-01, 8.159999930856126e-01, 8.200000059600737e-01, 8.249999761584973e-01, 8.289999890329585e-01, 8.330000042915344e-01, 8.380000019072776e-01, 8.420000147817388e-01, 8.470000147815967e-01, 8.509999978546235e-01, 8.559999978544814e-01, 8.600000107289426e-01, 8.65000010728836e-01, 8.690000236032617e-01, 8.740000128746033e-01, 8.780000066752939e-01, 8.830000066760044e-01, 8.870000195501814e-01, 8.90999972820282e-01] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PIGain.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PIGain.txt new file mode 100644 index 00000000000..58460237cd9 --- /dev/null +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PIGain.txt @@ -0,0 +1,13 @@ +last-generated=2022-10-06 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +PIGai.kp=[1e+00, 1.009999990686771e+00, 1.019999981373543e+00, 1.029999972060313e+00, 1.039999962747139e+00, 1.049999951571236e+00, 1.059999944120708e+00, 1.07000005215405e+00, 1.080000044703457e+00, 1.090000029802376e+00, 1.100000022351764e+00, 1.110000014901152e+00, 1.120000007450541e+00, 1.129999999999929e+00, 1.139999985098848e+00, 1.149999970197766e+00, 1.159999970197624e+00, 1.169999955296543e+00, 1.179999940395462e+00, 1.190000059604609e+00, 1.20000004470335e+00, 1.210000044703386e+00, 1.220000029802305e+00, 1.230000014901223e+00, 1.240000014901081e+00, 1.25e+00, 1.259999999999858e+00, 1.269999970197838e+00, 1.279999970197695e+00, 1.289999970198051e+00, 1.299999940395533e+00, 1.309999940395391e+00, 1.320000059604538e+00, 1.330000029801736e+00, 1.340000029802376e+00, 1.350000029802234e+00, 1.360000000000213e+00, 1.370000000000071e+00, 1.379999999999929e+00, 1.389999999999787e+00, 1.399999970197766e+00, 1.409999970197624e+00, 1.419999970198264e+00, 1.429999940395462e+00, 1.440000059604609e+00, 1.450000059604467e+00, 1.460000029801949e+00, 1.470000029802305e+00, 1.480000029802162e+00, 1.490000000000142e+00, 1.5e+00, 1.509999999999716e+00, 1.519999999999432e+00, 1.529999999999147e+00, 1.539999940395995e+00, 1.549999940395711e+00, 1.559999940395355e+00, 1.570000059604432e+00, 1.580000059604147e+00, 1.590000059603863e+00, 1.60000000000071e+00, 1.610000000000426e+00, 1.620000000000142e+00, 1.629999999999858e+00, 1.639999999999574e+00, 1.64999999999929e+00, 1.659999940396137e+00, 1.669999940395853e+00, 1.679999940395568e+00, 1.690000059604645e+00, 1.700000059604289e+00, 1.710000059604005e+00, 1.720000000000853e+00, 1.730000000000568e+00, 1.740000000000284e+00, 1.75e+00, 1.759999999999716e+00, 1.769999999999432e+00, 1.779999999999147e+00, 1.789999940395995e+00, 1.799999940395711e+00, 1.809999940395355e+00, 1.820000059604432e+00, 1.830000059604147e+00, 1.840000059603863e+00, 1.85000000000071e+00, 1.860000000000426e+00, 1.870000000000142e+00, 1.879999999999858e+00, 1.889999999999574e+00, 1.89999999999929e+00, 1.909999940396137e+00, 1.919999940395853e+00, 1.929999940395568e+00, 1.940000059604645e+00, 1.950000059604289e+00, 1.960000059604005e+00, 1.970000000000853e+00, 1.980000000000568e+00, 1.990000000000284e+00, 2e+00] +PIGai.T=[5e-01, 5.049999953433857e-01, 5.099999906867714e-01, 5.149999860301567e-01, 5.199999813735693e-01, 5.24999975785618e-01, 5.29999972060354e-01, 5.350000260770249e-01, 5.400000223517285e-01, 5.450000149011879e-01, 5.50000011175882e-01, 5.550000074505762e-01, 5.600000037252704e-01, 5.649999999999645e-01, 5.699999925494239e-01, 5.749999850988832e-01, 5.799999850988121e-01, 5.849999776482715e-01, 5.899999701977309e-01, 5.950000298023046e-01, 6.000000223516752e-01, 6.050000223516929e-01, 6.100000149011523e-01, 6.150000074506117e-01, 6.200000074505406e-01, 6.25e-01, 6.29999999999929e-01, 6.349999850989188e-01, 6.399999850988477e-01, 6.449999850990253e-01, 6.499999701977665e-01, 6.549999701976954e-01, 6.600000298022691e-01, 6.650000149008681e-01, 6.700000149011879e-01, 6.750000149011168e-01, 6.800000000001065e-01, 6.850000000000355e-01, 6.899999999999645e-01, 6.949999999998935e-01, 6.999999850988832e-01, 7.049999850988121e-01, 7.099999850991319e-01, 7.149999701977309e-01, 7.200000298023046e-01, 7.250000298022335e-01, 7.300000149009747e-01, 7.350000149011523e-01, 7.400000149010812e-01, 7.45000000000071e-01, 7.5e-01, 7.549999999998579e-01, 7.599999999997158e-01, 7.649999999995737e-01, 7.699999701979974e-01, 7.749999701978553e-01, 7.799999701976776e-01, 7.850000298022158e-01, 7.900000298020737e-01, 7.950000298019316e-01, 8.000000000003552e-01, 8.050000000002131e-01, 8.10000000000071e-01, 8.14999999999929e-01, 8.199999999997869e-01, 8.249999999996448e-01, 8.299999701980684e-01, 8.349999701979263e-01, 8.399999701977842e-01, 8.450000298023224e-01, 8.500000298021447e-01, 8.550000298020026e-01, 8.600000000004263e-01, 8.650000000002842e-01, 8.700000000001421e-01, 8.75e-01, 8.799999999998579e-01, 8.849999999997158e-01, 8.899999999995737e-01, 8.949999701979974e-01, 8.999999701978553e-01, 9.049999701976776e-01, 9.100000298022158e-01, 9.150000298020737e-01, 9.200000298019316e-01, 9.250000000003552e-01, 9.300000000002131e-01, 9.35000000000071e-01, 9.39999999999929e-01, 9.449999999997869e-01, 9.499999999996448e-01, 9.549999701980684e-01, 9.599999701979263e-01, 9.649999701977842e-01, 9.700000298023224e-01, 9.750000298021447e-01, 9.800000298020026e-01, 9.850000000004263e-01, 9.900000000002842e-01, 9.950000000001421e-01, 1e+00] +PIGai.L=[3.00000011920929e-01, 3.030000032111988e-01, 3.059999945014752e-01, 3.089999857917481e-01, 3.120000068843307e-01, 3.1499999724329e-01, 3.179999894648903e-01, 3.210000096261474e-01, 3.240000018477306e-01, 3.269999903440742e-01, 3.300000123679527e-01, 3.330000045895532e-01, 3.359999968111715e-01, 3.389999890327809e-01, 3.420000073313669e-01, 3.449999958277193e-01, 3.479999917745857e-01, 3.510000100731717e-01, 3.539999985694352e-01, 3.569999945163904e-01, 3.600000128149764e-01, 3.630000087618339e-01, 3.659999972581952e-01, 3.68999985754521e-01, 3.720000115036565e-01, 3.75e-01, 3.779999959469552e-01, 3.810000067948496e-01, 3.840000027418048e-01, 3.869999986887599e-01, 3.899999797345096e-01, 3.930000054836096e-01, 3.960000014305647e-01, 3.989999824763321e-01, 4.020000082254144e-01, 4.050000041722807e-01, 4.079999852181547e-01, 4.110000109672191e-01, 4.140000069141033e-01, 4.170000028611295e-01, 4.199999839067903e-01, 4.230000096559258e-01, 4.260000056027389e-01, 4.289999866486128e-01, 4.320000123977484e-01, 4.350000083445615e-01, 4.379999893904354e-01, 4.410000151395709e-01, 4.44000011086384e-01, 4.469999921322579e-01, 4.49999988079071e-01, 4.530000138281355e-01, 4.560000097748775e-01, 4.590000057220459e-01, 4.620000016689301e-01, 4.649999976158142e-01, 4.679999935626984e-01, 4.709999895095825e-01, 4.740000152585404e-01, 4.770000112052824e-01, 4.799999773505902e-01, 4.830000030994415e-01, 4.859999990463967e-01, 4.889999949932098e-01, 4.920000207422032e-01, 4.950000166889453e-01, 4.979999828342531e-01, 5.009999787809951e-01, 5.040000045300596e-01, 5.070000302791595e-01, 5.099999964235437e-01, 5.130000221726081e-01, 5.159999585155935e-01, 5.18999984264658e-01, 5.220000100137224e-01, 5.249999761581421e-01, 5.280000019072065e-01, 5.31000027656271e-01, 5.339999938015433e-01, 5.369999897483209e-01, 5.4000001549703e-01, 5.429999816417694e-01, 5.460000073908694e-01, 5.490000331399338e-01, 5.519999992843535e-01, 5.549999952319836e-01, 5.580000209806218e-01, 5.609999871254677e-01, 5.640000128745323e-01, 5.669999790193782e-01, 5.700000047680164e-01, 5.730000007156465e-01, 5.759999668600662e-01, 5.789999926091306e-01, 5.820000183582306e-01, 5.8499998450297e-01, 5.880000102516791e-01, 5.910000061984567e-01, 5.93999972343729e-01, 5.969999980927935e-01, 6.000000238418579e-01] +PIGai.k=[3.427083194255829e-01, 3.393151758930222e-01, 3.359885511485939e-01, 3.327265378434656e-01, 3.295272286288169e-01, 3.263888958752252e-01, 3.233097487268034e-01, 3.202881516426574e-01, 3.173225215822536e-01, 3.144113139610314e-01, 3.115530318686219e-01, 3.087462482250208e-01, 3.059895921241976e-01, 3.032817224562803e-01, 3.006213309847676e-01, 2.980072522563426e-01, 2.954382286165356e-01, 2.929131097666854e-01, 2.904307869882616e-01, 2.87990181737877e-01, 2.855902921363173e-01, 2.832300341023077e-01, 2.809084649571227e-01, 2.786246552993449e-01, 2.763776760516168e-01, 2.741666734218597e-01, 2.719907430469058e-01, 2.698490953450763e-01, 2.67740875873801e-01, 2.656653794647196e-01, 2.636218108910805e-01, 2.616094060261872e-01, 2.596275188422696e-01, 2.576754431050848e-01, 2.557524751404699e-01, 2.538580280928464e-01, 2.519914251424269e-01, 2.501520826169469e-01, 2.483393685535971e-01, 2.465527465074837e-01, 2.447916732685427e-01, 2.430555512818382e-01, 2.413438970821584e-01, 2.396561820236085e-01, 2.379918986367867e-01, 2.363505780163519e-01, 2.347317359033287e-01, 2.331349250702803e-01, 2.315596762914645e-01, 2.300055944167478e-01, 2.284722179174423e-01, 2.269591517718605e-01, 2.254660085373425e-01, 2.239923709798829e-01, 2.225378800383838e-01, 2.211021509612482e-01, 2.196848248740505e-01, 2.182855590551519e-01, 2.169040107715149e-01, 2.155398223916494e-01, 2.141927083714356e-01, 2.12862315759629e-01, 2.115483591783919e-01, 2.102505108050202e-01, 2.089684875158524e-01, 2.077020210844805e-01, 2.064508101825049e-01, 2.052145781488074e-01, 2.039930536060073e-01, 2.027859981360627e-01, 2.015931286193312e-01, 2.004142215317469e-01, 1.992490343561543e-01, 1.980973069340439e-01, 1.969588117835739e-01, 1.958333402872086e-01, 1.947206391306787e-01, 1.936205294924474e-01, 1.925327729528697e-01, 1.9145717086614e-01, 1.903935243586566e-01, 1.893416200018209e-01, 1.883012789850742e-01, 1.872723075894303e-01, 1.862545269985985e-01, 1.852477528329152e-01, 1.842517874998656e-01, 1.832664914304534e-01, 1.822916709115014e-01, 1.81327162029384e-01, 1.803728008678819e-01, 1.794284471748412e-01, 1.784939194206437e-01, 1.775690923516219e-01, 1.766537871545593e-01, 1.757478548194911e-01, 1.748511910338886e-01, 1.739636252190207e-01, 1.730850216060402e-01, 1.722152395072734e-01, 1.713541597127914e-01] +RefDat.y[4]=[3.429999947547913e-01, 3.389999866485596e-01, 3.359999952465325e-01, 3.33000003956253e-01, 3.300000126659795e-01, 3.260000053793143e-01, 3.230000138282776e-01, 3.19999992996457e-01, 3.170000016689301e-01, 3.140000122785302e-01, 3.120000064373016e-01, 3.089999851584479e-01, 3.059999929368696e-01, 3.030000030994415e-01, 3.009999990463257e-01, 2.980000108480009e-01, 2.949999868869781e-01, 2.930000126361847e-01, 2.899999952316817e-01, 2.879999876022339e-01, 2.860000133514404e-01, 2.829999923706055e-01, 2.809999877214521e-01, 2.790000140666962e-01, 2.759999930858612e-01, 2.739999890327454e-01, 2.720000147819519e-01, 2.700000107288361e-01, 2.680000066757202e-01, 2.659999984502171e-01, 2.639999985694885e-01, 2.619999945163727e-01, 2.599999868870314e-01, 2.57999986410141e-01, 2.560000121593475e-01, 2.540000051259551e-01, 2.520000040531158e-01, 2.500000023841503e-01, 2.479999959468842e-01, 2.469999867678754e-01, 2.450000047683716e-01, 2.430000007152557e-01, 2.409999966621399e-01, 2.39999994635582e-01, 2.380000054836273e-01, 2.360000014305115e-01, 2.349999994039536e-01, 2.329999953508377e-01, 2.319999879599417e-01, 2.300000041723251e-01, 2.280000001192093e-01, 2.269999980926514e-01, 2.249999940395355e-01, 2.240000069141388e-01, 2.230000048875809e-01, 2.21000000834465e-01, 2.199999988079071e-01, 2.179999947547913e-01, 2.169999927282333e-01, 2.159999924900102e-01, 2.140000015497208e-01, 2.129999995231628e-01, 2.119999974966049e-01, 2.099999934434891e-01, 2.090000063180923e-01, 2.079999923707831e-01, 2.06000013351245e-01, 2.049999982118607e-01, 2.039999961853027e-01, 2.029999941587448e-01, 2.020000010729724e-01, 2.000000029802322e-01, 1.990000009536743e-01, 1.979999989271164e-01, 1.969999969005585e-01, 1.959999948740005e-01, 1.949999880792131e-01, 1.939999961854448e-01, 1.929999893905864e-01, 1.910000103710483e-01, 1.900000035761898e-01, 1.889999967813669e-01, 1.879999935626984e-01, 1.870000064373016e-01, 1.860000044107437e-01, 1.850000023841858e-01, 1.840000003576279e-01, 1.829999983310699e-01, 1.81999996304512e-01, 1.809999942779541e-01, 1.800000071525574e-01, 1.790000182388259e-01, 1.780000114439674e-01, 1.780000030994415e-01, 1.76999999880773e-01, 1.759999990463257e-01, 1.749999970197678e-01, 1.739999949932098e-01, 1.729999929666519e-01, 1.720000058412552e-01, 1.710000038146973e-01] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PIIntegralTime.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PIIntegralTime.txt new file mode 100644 index 00000000000..9c3ec62eff6 --- /dev/null +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PIIntegralTime.txt @@ -0,0 +1,12 @@ +last-generated=2022-10-06 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +PIIntTim.T=[5e-01, 5.049999953433857e-01, 5.099999906867714e-01, 5.149999860301567e-01, 5.199999813735693e-01, 5.24999975785618e-01, 5.29999972060354e-01, 5.350000260770249e-01, 5.400000223517285e-01, 5.450000149011879e-01, 5.50000011175882e-01, 5.550000074505762e-01, 5.600000037252704e-01, 5.649999999999645e-01, 5.699999925494239e-01, 5.749999850988832e-01, 5.799999850988121e-01, 5.849999776482715e-01, 5.899999701977309e-01, 5.950000298023046e-01, 6.000000223516752e-01, 6.050000223516929e-01, 6.100000149011523e-01, 6.150000074506117e-01, 6.200000074505406e-01, 6.25e-01, 6.29999999999929e-01, 6.349999850989188e-01, 6.399999850988477e-01, 6.449999850990253e-01, 6.499999701977665e-01, 6.549999701976954e-01, 6.600000298022691e-01, 6.650000149008681e-01, 6.700000149011879e-01, 6.750000149011168e-01, 6.800000000001065e-01, 6.850000000000355e-01, 6.899999999999645e-01, 6.949999999998935e-01, 6.999999850988832e-01, 7.049999850988121e-01, 7.099999850991319e-01, 7.149999701977309e-01, 7.200000298023046e-01, 7.250000298022335e-01, 7.300000149009747e-01, 7.350000149011523e-01, 7.400000149010812e-01, 7.45000000000071e-01, 7.5e-01, 7.549999999998579e-01, 7.599999999997158e-01, 7.649999999995737e-01, 7.699999701979974e-01, 7.749999701978553e-01, 7.799999701976776e-01, 7.850000298022158e-01, 7.900000298020737e-01, 7.950000298019316e-01, 8.000000000003552e-01, 8.050000000002131e-01, 8.10000000000071e-01, 8.14999999999929e-01, 8.199999999997869e-01, 8.249999999996448e-01, 8.299999701980684e-01, 8.349999701979263e-01, 8.399999701977842e-01, 8.450000298023224e-01, 8.500000298021447e-01, 8.550000298020026e-01, 8.600000000004263e-01, 8.650000000002842e-01, 8.700000000001421e-01, 8.75e-01, 8.799999999998579e-01, 8.849999999997158e-01, 8.899999999995737e-01, 8.949999701979974e-01, 8.999999701978553e-01, 9.049999701976776e-01, 9.100000298022158e-01, 9.150000298020737e-01, 9.200000298019316e-01, 9.250000000003552e-01, 9.300000000002131e-01, 9.35000000000071e-01, 9.39999999999929e-01, 9.449999999997869e-01, 9.499999999996448e-01, 9.549999701980684e-01, 9.599999701979263e-01, 9.649999701977842e-01, 9.700000298023224e-01, 9.750000298021447e-01, 9.800000298020026e-01, 9.850000000004263e-01, 9.900000000002842e-01, 9.950000000001421e-01, 1e+00] +PIIntTim.L=[3.00000011920929e-01, 3.030000032111988e-01, 3.059999945014752e-01, 3.089999857917481e-01, 3.120000068843307e-01, 3.1499999724329e-01, 3.179999894648903e-01, 3.210000096261474e-01, 3.240000018477306e-01, 3.269999903440742e-01, 3.300000123679527e-01, 3.330000045895532e-01, 3.359999968111715e-01, 3.389999890327809e-01, 3.420000073313669e-01, 3.449999958277193e-01, 3.479999917745857e-01, 3.510000100731717e-01, 3.539999985694352e-01, 3.569999945163904e-01, 3.600000128149764e-01, 3.630000087618339e-01, 3.659999972581952e-01, 3.68999985754521e-01, 3.720000115036565e-01, 3.75e-01, 3.779999959469552e-01, 3.810000067948496e-01, 3.840000027418048e-01, 3.869999986887599e-01, 3.899999797345096e-01, 3.930000054836096e-01, 3.960000014305647e-01, 3.989999824763321e-01, 4.020000082254144e-01, 4.050000041722807e-01, 4.079999852181547e-01, 4.110000109672191e-01, 4.140000069141033e-01, 4.170000028611295e-01, 4.199999839067903e-01, 4.230000096559258e-01, 4.260000056027389e-01, 4.289999866486128e-01, 4.320000123977484e-01, 4.350000083445615e-01, 4.379999893904354e-01, 4.410000151395709e-01, 4.44000011086384e-01, 4.469999921322579e-01, 4.49999988079071e-01, 4.530000138281355e-01, 4.560000097748775e-01, 4.590000057220459e-01, 4.620000016689301e-01, 4.649999976158142e-01, 4.679999935626984e-01, 4.709999895095825e-01, 4.740000152585404e-01, 4.770000112052824e-01, 4.799999773505902e-01, 4.830000030994415e-01, 4.859999990463967e-01, 4.889999949932098e-01, 4.920000207422032e-01, 4.950000166889453e-01, 4.979999828342531e-01, 5.009999787809951e-01, 5.040000045300596e-01, 5.070000302791595e-01, 5.099999964235437e-01, 5.130000221726081e-01, 5.159999585155935e-01, 5.18999984264658e-01, 5.220000100137224e-01, 5.249999761581421e-01, 5.280000019072065e-01, 5.31000027656271e-01, 5.339999938015433e-01, 5.369999897483209e-01, 5.4000001549703e-01, 5.429999816417694e-01, 5.460000073908694e-01, 5.490000331399338e-01, 5.519999992843535e-01, 5.549999952319836e-01, 5.580000209806218e-01, 5.609999871254677e-01, 5.640000128745323e-01, 5.669999790193782e-01, 5.700000047680164e-01, 5.730000007156465e-01, 5.759999668600662e-01, 5.789999926091306e-01, 5.820000183582306e-01, 5.8499998450297e-01, 5.880000102516791e-01, 5.910000061984567e-01, 5.93999972343729e-01, 5.969999980927935e-01, 6.000000238418579e-01] +PIIntTim.Ti=[4.688059687614441e-01, 4.734940231973803e-01, 4.781820776333232e-01, 4.828701618715748e-01, 4.875582163075113e-01, 4.922462698039159e-01, 4.969343251793837e-01, 5.016223786758081e-01, 5.063104638535503e-01, 5.109984856685409e-01, 5.156865708463891e-01, 5.203746560242019e-01, 5.250626815973608e-01, 5.297507667750048e-01, 5.344387885901731e-01, 5.391268700097019e-01, 5.438148993411182e-01, 5.485029807607537e-01, 5.531910621802825e-01, 5.578790915117342e-01, 5.625671729313341e-01, 5.672552022626616e-01, 5.719432836823503e-01, 5.766313651019146e-01, 5.813193944332776e-01, 5.860074758529663e-01, 5.906955051842049e-01, 5.953835790873793e-01, 6.000716680235468e-01, 6.047596973548209e-01, 6.094477712579598e-01, 6.141358005894826e-01, 6.18823889525437e-01, 6.235119634281495e-01, 6.281999927600631e-01, 6.328880816958754e-01, 6.375760959944761e-01, 6.422641849306436e-01, 6.469522142620243e-01, 6.516403031979077e-01, 6.563283771012242e-01, 6.610164064326404e-01, 6.657044953685237e-01, 6.703925096671599e-01, 6.750805986032564e-01, 6.797686875387845e-01, 6.844567018377404e-01, 6.891447907738725e-01, 6.93832820105111e-01, 6.98520894008321e-01, 7.032089829444885e-01, 7.078970122756555e-01, 7.125851012114671e-01, 7.172731305426341e-01, 7.219611894134756e-01, 7.266492187452821e-01, 7.313373076809869e-01, 7.360253966169055e-01, 7.407134259480723e-01, 7.454015148838841e-01, 7.500895141507203e-01, 7.547776030861058e-01, 7.594656920222017e-01, 7.641537213535107e-01, 7.688418102893224e-01, 7.735298396204894e-01, 7.782178984911888e-01, 7.829059874272848e-01, 7.875940167587359e-01, 7.922821056947965e-01, 7.969701350259276e-01, 8.016582239617394e-01, 8.063462828323678e-01, 8.110343121638189e-01, 8.157224010999148e-01, 8.20410430431366e-01, 8.250985193671777e-01, 8.297865486983446e-01, 8.344746376341563e-01, 8.391626965049979e-01, 8.43850725836449e-01, 8.485388147725091e-01, 8.532268441037829e-01, 8.579149330395945e-01, 8.626030219754063e-01, 8.672910212415321e-01, 8.71979110177628e-01, 8.766671395092213e-01, 8.813552284450329e-01, 8.860433173808446e-01, 8.907313467120116e-01, 8.95419405582711e-01, 9.001074349146596e-01, 9.047955238502581e-01, 9.094836127863187e-01, 9.141716421174498e-01, 9.188597310532616e-01, 9.235477303192452e-01, 9.282358192553412e-01, 9.329238485870764e-01, 9.376119375228882e-01] +RefDat.y[5]=[4.690000116825104e-01, 4.729999900981803e-01, 4.779999854415692e-01, 4.830000105872703e-01, 4.880000054836273e-01, 4.920000132173237e-01, 4.970000094920309e-01, 5.019999741017835e-01, 5.059999832511348e-01, 5.109999758005409e-01, 5.159999720752351e-01, 5.199999812245503e-01, 5.249999774993065e-01, 5.299999737740628e-01, 5.339999794960022e-01, 5.389999717474427e-01, 5.440000313520165e-01, 5.490000239014226e-01, 5.529999697208937e-01, 5.580000293254674e-01, 5.63000021874838e-01, 5.669999751450097e-01, 5.720000272989184e-01, 5.770000198482534e-01, 5.809999731184251e-01, 5.860000252723694e-01, 5.910000252722983e-01, 5.950000232455717e-01, 6.000000232457848e-01, 6.050000232457493e-01, 6.09000027179718e-01, 6.140000212192003e-01, 6.190000212192003e-01, 6.240000063181901e-01, 6.280000191926157e-01, 6.330000191926513e-01, 6.380000042916409e-01, 6.420000171660312e-01, 6.470000171661022e-01, 6.520000171660312e-01, 6.560000151394466e-01, 6.610000151395531e-01, 6.66000015139482e-01, 6.700000131130751e-01, 6.750000131130041e-01, 6.80000013112933e-01, 6.840000152587891e-01, 6.89000011086455e-01, 6.94000011086384e-01, 6.989999961853738e-01, 7.03000009059906e-01, 7.080000090597639e-01, 7.130000090596218e-01, 7.17000021934083e-01, 7.219999921325067e-01, 7.269999921323645e-01, 7.310000050067902e-01, 7.360000050066836e-01, 7.410000050065415e-01, 7.450000178810027e-01, 7.499999880794262e-01, 7.549999880792841e-01, 7.590000033378601e-01, 7.640000009536033e-01, 7.690000009534612e-01, 7.739999890327454e-01, 7.77999984026346e-01, 7.829999840262039e-01, 7.879999840260618e-01, 7.919999969005584e-01, 7.969999969003808e-01, 8.019999969002387e-01, 8.059999799732657e-01, 8.109999799731236e-01, 8.159999799729815e-01, 8.199999928474426e-01, 8.249999928473005e-01, 8.299999928471584e-01, 8.340000057216196e-01, 8.389999759200433e-01, 8.439999759199012e-01, 8.489999759197235e-01, 8.529999887942202e-01, 8.579999887945754e-01, 8.629999887947175e-01, 8.669999718669629e-01, 8.719999718668208e-01, 8.769999718666787e-01, 8.809999847412819e-01, 8.859999847414241e-01, 8.909999847415662e-01, 8.949999678138826e-01, 8.999999678137405e-01, 9.049999678135984e-01, 9.089999806881661e-01, 9.139999806882727e-01, 9.190000402924201e-01, 9.240000104899911e-01, 9.279999637606602e-01, 9.330000233648786e-01, 9.380000233650208e-01] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_Controller.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_Controller.txt new file mode 100644 index 00000000000..7e64990c785 --- /dev/null +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_Controller.txt @@ -0,0 +1,10 @@ +last-generated=2022-10-06 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +relCon.u_m=[0e+00, 1.253332374497156e-01, 2.486898953308248e-01, 3.681245524153801e-01, 4.817536869061769e-01, 5.877852363451299e-01, 6.845471384320703e-01, 7.705132340994622e-01, 8.443279384363055e-01, 9.048270386715103e-01, 9.510565340027346e-01, 9.822872294183655e-01, 9.980267303235079e-01, 9.980267241165655e-01, 9.822872294183655e-01, 9.510565622604734e-01, 9.048270386715103e-01, 8.443279384363054e-01, 7.705132929390851e-01, 6.845471041974797e-01, 5.877852740064528e-01, 4.8175360443844e-01, 3.681245306244136e-01, 2.486899405222956e-01, 1.253331676890714e-01, -2.097981390461576e-15, -1.253333533635595e-01, -2.486897589136873e-01, -3.681245306244139e-01, -4.817537683762683e-01, -5.877851217017483e-01, -6.845471041974797e-01, -7.705132929390851e-01, -8.443278366018112e-01, -9.048270386715105e-01, -9.510565622604733e-01, -9.822871922079218e-01, -9.980267241165655e-01, -9.980267241165655e-01, -9.822871922079218e-01, -9.510565622604733e-01, -9.048270386715105e-01, -8.443278366018112e-01, -7.705132929390851e-01, -6.845471041974797e-01, -5.877851217017483e-01, -4.817537683762683e-01, -3.681245306244139e-01, -2.486897589136873e-01, -1.253333533635595e-01, 4.195962780923152e-15, 1.253333533617908e-01, 2.486901212847727e-01, 3.68124877196207e-01, 4.817534392344727e-01, 5.877851217035711e-01, 6.845471041971509e-01, 7.70513292938244e-01, 8.443280367726912e-01, 9.048271948735948e-01, 9.510564438597915e-01, 9.822871922084567e-01, 9.980267241166327e-01, 9.980267241166327e-01, 9.822871922084567e-01, 9.510564438597915e-01, 9.048271948735948e-01, 8.443280367726912e-01, 7.70513292938244e-01, 6.845471041971509e-01, 5.877851217035711e-01, 4.817534392344727e-01, 3.68124877196207e-01, 2.486901212847727e-01, 1.253333533617908e-01, -6.738033169476553e-15, -1.253333533617908e-01, -2.486901212847727e-01, -3.68124877196207e-01, -4.817534392344727e-01, -5.877851217035711e-01, -6.845471041971509e-01, -7.70513292938244e-01, -8.443280367726912e-01, -9.048271948735948e-01, -9.510564438597915e-01, -9.822871922084567e-01, -9.980267241166327e-01, -9.980267241166327e-01, -9.822871922084567e-01, -9.510564438597915e-01, -9.048271948735948e-01, -8.443280367726912e-01, -7.70513292938244e-01, -6.845471041971509e-01, -5.877851217035711e-01, -4.817534392344727e-01, -3.68124877196207e-01, -2.486901212847727e-01, -1.253333533617908e-01, -4.898587410340671e-16] +relCon.y=[1e+00, 1e+00, 1e+00, 1e+00, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_HalfPeriodRatio.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_HalfPeriodRatio.txt new file mode 100644 index 00000000000..2996bd40154 --- /dev/null +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_HalfPeriodRatio.txt @@ -0,0 +1,11 @@ +last-generated=2022-10-06 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +halPerRat.tOn=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1.000008344508995e+00, 2e+00, 2e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00] +halPerRat.tOff=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.788109067992328e-05, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00] +halPerRat.rho=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1.000004172254497e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_NormalizedTimeDelay.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_NormalizedTimeDelay.txt new file mode 100644 index 00000000000..cfa54c85e98 --- /dev/null +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_NormalizedTimeDelay.txt @@ -0,0 +1,11 @@ +last-generated=2022-10-06 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +norTimDel.rho=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1.00000298018178e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00] +norTimDel.tau=[2.051282167434692e+00, 2.051282167434692e+00, 2.051282167434692e+00, 2.051282167434692e+00, 2.051282167434692e+00, 2.051282167434692e+00, 2.051282167434692e+00, 2.051282167434692e+00, 2.051282167434692e+00, 2.051282167434692e+00, 2.051282167434692e+00, 2.051282167434692e+00, 2.051282167434692e+00, 2.051282167434692e+00, 2.051282167434692e+00, 2.051282167434692e+00, 2.051282167434692e+00, 2.051282167434692e+00, 2.051282167434692e+00, 2.051282167434692e+00, 2.051282167434692e+00, 2.051282167434692e+00, 2.051282167434692e+00, 2.051282167434692e+00, 2.051282167434692e+00, 2.051282167434692e+00, 2.051282167434692e+00, 2.051282167434692e+00, 2.051282167434692e+00, 2.051282167434692e+00, 2.051282167434692e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999982668447268e-01, 7.092198729515076e-01, 7.092198729515076e-01, 7.092198729515076e-01, 7.092198729515076e-01, 7.092198729515076e-01, 7.092198729515076e-01, 7.092198729515076e-01, 7.092198729515076e-01, 7.092198729515076e-01, 7.092198729515076e-01, 7.092198729515076e-01, 7.092198729515076e-01, 7.092198729515076e-01, 7.092198729515076e-01, 7.092198729515076e-01, 4.938271641731262e-01, 4.938271641731262e-01, 4.938271641731262e-01, 4.938271641731262e-01, 4.938271641731262e-01, 4.938271641731262e-01, 4.938271641731262e-01, 4.938271641731262e-01, 4.938271641731262e-01, 4.938271641731262e-01, 4.938271641731262e-01, 4.938271641731262e-01, 4.938271641731262e-01, 4.938271641731262e-01, 4.938271641731262e-01] +RefDat.y[2]=[2.051000118255615e+00, 2.051000118255615e+00, 2.051000118255615e+00, 2.051000118255615e+00, 2.051000118255615e+00, 2.051000118255615e+00, 2.051000118255615e+00, 2.051000118255615e+00, 2.051000118255615e+00, 2.051000118255615e+00, 2.051000118255615e+00, 2.051000118255615e+00, 2.051000118255615e+00, 2.051000118255615e+00, 2.051000118255615e+00, 2.051000118255615e+00, 2.051000118255615e+00, 2.051000118255615e+00, 2.051000118255615e+00, 2.051000118255615e+00, 2.051000118255615e+00, 2.051000118255615e+00, 2.051000118255615e+00, 2.051000118255615e+00, 2.051000118255615e+00, 2.051000118255615e+00, 2.051000118255615e+00, 2.051000118255615e+00, 2.051000118255615e+00, 2.051000118255615e+00, 2.051000118255615e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999982655341529e-01, 7.089999914169312e-01, 7.089999914169312e-01, 7.089999914169312e-01, 7.089999914169312e-01, 7.089999914169312e-01, 7.089999914169312e-01, 7.089999914169312e-01, 7.089999914169312e-01, 7.089999914169312e-01, 7.089999914169312e-01, 7.089999914169312e-01, 7.089999914169312e-01, 7.089999914169312e-01, 7.089999914169312e-01, 7.089999914169312e-01, 4.939999878406525e-01, 4.939999878406525e-01, 4.939999878406525e-01, 4.939999878406525e-01, 4.939999878406525e-01, 4.939999878406525e-01, 4.939999878406525e-01, 4.939999878406525e-01, 4.939999878406525e-01, 4.939999878406525e-01, 4.939999878406525e-01, 4.939999878406525e-01, 4.939999878406525e-01, 4.939999878406525e-01, 4.939999878406525e-01] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_OnOffPeriod.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_OnOffPeriod.txt new file mode 100644 index 00000000000..60245aed71d --- /dev/null +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_OnOffPeriod.txt @@ -0,0 +1,11 @@ +last-generated=2022-10-06 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +onOffPer.On=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5.960363559974428e-06, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999916554910049e-01, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +onOffPer.tOn=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000002518253337e-01, 1.299999952316284e-01, 1.299999952316284e-01, 1.299999952316284e-01, 1.299999952316284e-01, 1.299999952316284e-01, 1.299999952316284e-01, 1.299999952316284e-01, 1.299999952316284e-01, 1.299999952316284e-01, 1.299999952316284e-01, 1.299999952316284e-01, 1.299999952316284e-01, 1.299999952316284e-01, 1.299999952316284e-01, 1.299999952316284e-01, 1.299999952316284e-01, 1.299999952316284e-01] +onOffPer.tOff=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 3.576218278090798e-06, 6.000000238418579e-01, 6.000000238418579e-01, 6.000000238418579e-01, 6.000000238418579e-01, 6.000000238418579e-01, 6.000000238418579e-01, 6.000000238418579e-01, 6.000000238418579e-01, 6.000000238418579e-01, 6.000000238418579e-01, 6.000000238418579e-01, 6.000000238418579e-01, 6.000000238418579e-01, 6.000000238418579e-01, 6.000000238418579e-01, 1.999999955296516e-02, 1.999999955296516e-02, 1.999999955296516e-02, 1.999999955296516e-02, 1.999999955296516e-02, 1.999999955296516e-02, 1.999999955296516e-02, 1.999999955296516e-02, 1.999999955296516e-02, 1.999999955296516e-02, 1.999999955296516e-02, 1.999999955296516e-02, 1.999999955296516e-02, 1.999999955296516e-02, 1.999999955296516e-02] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_ResponseProcess.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_ResponseProcess.txt new file mode 100644 index 00000000000..e76c8920c20 --- /dev/null +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_ResponseProcess.txt @@ -0,0 +1,14 @@ +last-generated=2022-10-06 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +relRes.y[1]=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5.960363559974428e-06, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999916554910049e-01, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +resPro.tOn=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000002518253337e-01, 1.299999952316284e-01, 1.299999952316284e-01, 1.299999952316284e-01, 1.299999952316284e-01, 1.299999952316284e-01, 1.299999952316284e-01, 1.299999952316284e-01, 1.299999952316284e-01, 1.299999952316284e-01, 1.299999952316284e-01, 1.299999952316284e-01, 1.299999952316284e-01, 1.299999952316284e-01, 1.299999952316284e-01, 1.299999952316284e-01, 1.299999952316284e-01, 1.299999952316284e-01] +resPro.tOff=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 3.576218278090798e-06, 6.000000238418579e-01, 6.000000238418579e-01, 6.000000238418579e-01, 6.000000238418579e-01, 6.000000238418579e-01, 6.000000238418579e-01, 6.000000238418579e-01, 6.000000238418579e-01, 6.000000238418579e-01, 6.000000238418579e-01, 6.000000238418579e-01, 6.000000238418579e-01, 6.000000238418579e-01, 6.000000238418579e-01, 6.000000238418579e-01, 1.999999955296516e-02, 1.999999955296516e-02, 1.999999955296516e-02, 1.999999955296516e-02, 1.999999955296516e-02, 1.999999955296516e-02, 1.999999955296516e-02, 1.999999955296516e-02, 1.999999955296516e-02, 1.999999955296516e-02, 1.999999955296516e-02, 1.999999955296516e-02, 1.999999955296516e-02, 1.999999955296516e-02, 1.999999955296516e-02] +resPro.triEnd=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 8.344508995066242e-06, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +resPro.triSta=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +resPro.tau=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999920096721993e-01, 4.244482144713402e-02, 4.244482144713402e-02, 4.244482144713402e-02, 4.244482144713402e-02, 4.244482144713402e-02, 4.244482144713402e-02, 4.244482144713402e-02, 4.244482144713402e-02, 4.244482144713402e-02, 4.244482144713402e-02, 4.244482144713402e-02, 4.244482144713402e-02, 4.244482144713402e-02, 4.244482144713402e-02, 4.244482144713402e-02, 4.244482144713402e-02, 4.244482144713402e-02] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_Validation_ControlProcessModel.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_Validation_ControlProcessModel.txt new file mode 100644 index 00000000000..7cbe717f453 --- /dev/null +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_Validation_ControlProcessModel.txt @@ -0,0 +1,13 @@ +last-generated=2022-10-06 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "number of continuous time states": "1", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +conProMod.T=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.99998581020444e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01] +RefDat.y[5]=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999985814336176e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01] +conProMod.L=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.99998581020444e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01] +RefDat.y[6]=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999985814336176e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_Validation_Gain.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_Validation_Gain.txt new file mode 100644 index 00000000000..ce9e090f225 --- /dev/null +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_Validation_Gain.txt @@ -0,0 +1,14 @@ +last-generated=2022-10-06 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "number of continuous time states": "1", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +u.y[1]=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5.000041722544976e-01, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999940396364123e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01] +tOn.y[1]=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 9.999964386828665e-02, 7.000000029802322e-02, 7.000000029802322e-02, 7.000000029802322e-02, 7.000000029802322e-02, 7.000000029802322e-02, 7.000000029802322e-02, 7.000000029802322e-02, 7.000000029802322e-02, 7.000000029802322e-02, 7.000000029802322e-02] +tOff.y[1]=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 6.091491725557235e-06, 7.300000190734863e-01, 7.300000190734863e-01, 7.300000190734863e-01, 7.300000190734863e-01, 7.300000190734863e-01, 7.300000190734863e-01, 7.300000190734863e-01, 7.300000190734863e-01, 7.300000190734863e-01, 7.300000190734863e-01, 7.300000190734863e-01, 7.300000190734863e-01, 7.300000190734863e-01, 7.300000190734863e-01, 7.300000190734863e-01, 7.300000190734863e-01, 7.300000190734863e-01] +tunSta.y[1]=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +gai.k=[1e+00, 1.000000022351738e+09, 2.000000044703476e+09, 3.000000067055152e+09, 4.000000089406952e+09, 4.999999925494206e+09, 6.000000134110429e+09, 6.999999970197628e+09, 8.000000178813572e+09, 9.000000154371941e+09, 9.999999850989073e+09, 5.000000372528364e-02, 1.000000149011312e-01, 1.500000298022514e-01, 2.000000000000045e-01, 2.49999970197722e-01, 3.000000298022691e-01, 3.499999850988655e-01, 3.999999701976776e-01, 4.5e-01, 4.999999850988833e-01, 5.500000447033858e-01, 6.000000298023046e-01, 6.499999552965786e-01, 7.000000149010812e-01, 7.5e-01, 8.000000596045027e-01, 8.499999701975178e-01, 8.999999701976955e-01, 9.50000029802198e-01, 9.999999403955329e-01, 1.049999940395391e+00, 1.100000059604538e+00, 1.149999910593228e+00, 1.200000029802376e+00, 1.250000029802234e+00, 1.299999880790923e+00, 1.350000000000071e+00, 1.399999999999929e+00, 1.450000119209077e+00, 1.499999970197766e+00, 1.549999970197624e+00, 1.600000089406772e+00, 1.649999940395462e+00, 1.700000059604609e+00, 1.750000059604467e+00, 1.799999910593157e+00, 1.850000029802304e+00, 1.900000029802162e+00, 1.950000000000142e+00, 2e+00, 2.049999999999148e+00, 2.099999999998295e+00, 2.150000238416022e+00, 2.199999940397274e+00, 2.249999940396421e+00, 2.299999940395213e+00, 2.349999940394715e+00, 2.400000178812442e+00, 2.450000178811589e+00, 2.499999880792842e+00, 2.549999880791989e+00, 2.599999880791137e+00, 2.650000119208863e+00, 2.700000119208011e+00, 2.750000119207158e+00, 2.799999821188411e+00, 2.849999821187558e+00, 2.900000059605285e+00, 2.950000059604787e+00, 3.000000059603579e+00, 3.050000059602726e+00, 3.099999761583978e+00, 3.150000000001705e+00, 3.200000000000852e+00, 3.25e+00, 3.299999999999148e+00, 3.349999999998295e+00, 3.400000238416022e+00, 3.449999940397274e+00, 3.499999940396421e+00, 3.549999940395213e+00, 3.599999940394715e+00, 3.649958081550767e+00, -1.41509447457449e+00, -1.452830105459542e+00, -1.490565961263091e+00, -1.52830181706664e+00, -1.566037792079478e+00, -1.603773647883027e+00, -1.641507464163597e+00, -1.491525367155602e+00, -1.508474560107653e+00, -1.525423753059705e+00, -1.542372826802586e+00, -1.559322019754517e+00, -1.576271212706568e+00, -1.593220304635363e+00, -1.610169497587414e+00, -1.627118571330744e+00, -1.644067764282227e+00] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_Validation_TimeConstantDelay.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_Validation_TimeConstantDelay.txt new file mode 100644 index 00000000000..8339ed4e802 --- /dev/null +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_Validation_TimeConstantDelay.txt @@ -0,0 +1,12 @@ +last-generated=2022-10-06 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +timConDel.T=[7.535837292671204e-01, 7.535837292671204e-01, 7.535837292671204e-01, 7.535837292671204e-01, 7.535837292671204e-01, 7.535837292671204e-01, 7.535837292671204e-01, 7.535837292671204e-01, 7.535837292671204e-01, 7.535837292671204e-01, 7.535837292671204e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525806639837914e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721486668846094e-01, 5.747795104980469e-01, 5.747795104980469e-01, 1.344298958778381e+00, 1.344298958778381e+00, 1.344298958778381e+00, 1.344298958778381e+00, 1.344298958778381e+00, 1.344298958778381e+00, 1.344298958778381e+00, 1.344298958778381e+00, 1.344298958778381e+00, 1.344298958778381e+00, 1.344298958778381e+00, 1.344298958778381e+00, 1.344298958778381e+00, 1.344298958778381e+00, 1.344298958778381e+00] +RefDat.y[4]=[7.540000081062317e-01, 7.540000081062317e-01, 7.540000081062317e-01, 7.540000081062317e-01, 7.540000081062317e-01, 7.540000081062317e-01, 7.540000081062317e-01, 7.540000081062317e-01, 7.540000081062317e-01, 7.540000081062317e-01, 7.540000081062317e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529989063922778e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.719991815226976e-01, 5.74999988079071e-01, 5.74999988079071e-01, 1.343999981880188e+00, 1.343999981880188e+00, 1.343999981880188e+00, 1.343999981880188e+00, 1.343999981880188e+00, 1.343999981880188e+00, 1.343999981880188e+00, 1.343999981880188e+00, 1.343999981880188e+00, 1.343999981880188e+00, 1.343999981880188e+00, 1.343999981880188e+00, 1.343999981880188e+00, 1.343999981880188e+00, 1.343999981880188e+00] +timConDel.L=[2.260751128196716e-01, 2.260751128196716e-01, 2.260751128196716e-01, 2.260751128196716e-01, 2.260751128196716e-01, 2.260751128196716e-01, 2.260751128196716e-01, 2.260751128196716e-01, 2.260751128196716e-01, 2.260751128196716e-01, 2.260751128196716e-01, 3.360747396945953e-01, 3.360747396945953e-01, 3.360747396945953e-01, 3.360747396945953e-01, 3.360747396945953e-01, 3.360747396945953e-01, 3.360747396945953e-01, 3.360747396945953e-01, 3.360747396945953e-01, 3.360747396945953e-01, 3.360747396945953e-01, 3.360747396945953e-01, 3.360747396945953e-01, 3.360747396945953e-01, 3.360747396945953e-01, 3.360747396945953e-01, 3.360747396945953e-01, 3.360747396945953e-01, 3.360747396945953e-01, 3.360747396945953e-01, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525966592027019e-02, 3.360747396945953e-01, 3.360747396945953e-01, 3.360747396945953e-01, 3.360747396945953e-01, 3.360747396945953e-01, 3.360747396945953e-01, 3.360747396945953e-01, 3.360747396945953e-01, 3.360747396945953e-01, 3.360747396945953e-01, 3.360747396945953e-01, 3.360747396945953e-01, 3.360757723181433e-01, 4.598236083984375e-01, 4.598236083984375e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01] +RefDat.y[5]=[2.259999960660934e-01, 2.259999960660934e-01, 2.259999960660934e-01, 2.259999960660934e-01, 2.259999960660934e-01, 2.259999960660934e-01, 2.259999960660934e-01, 2.259999960660934e-01, 2.259999960660934e-01, 2.259999960660934e-01, 2.259999960660934e-01, 3.35999995470047e-01, 3.35999995470047e-01, 3.35999995470047e-01, 3.35999995470047e-01, 3.35999995470047e-01, 3.35999995470047e-01, 3.35999995470047e-01, 3.35999995470047e-01, 3.35999995470047e-01, 3.35999995470047e-01, 3.35999995470047e-01, 3.35999995470047e-01, 3.35999995470047e-01, 3.35999995470047e-01, 3.35999995470047e-01, 3.35999995470047e-01, 3.35999995470047e-01, 3.35999995470047e-01, 3.35999995470047e-01, 3.35999995470047e-01, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.50014969452909e-02, 3.35999995470047e-01, 3.35999995470047e-01, 3.35999995470047e-01, 3.35999995470047e-01, 3.35999995470047e-01, 3.35999995470047e-01, 3.35999995470047e-01, 3.35999995470047e-01, 3.35999995470047e-01, 3.35999995470047e-01, 3.35999995470047e-01, 3.35999995470047e-01, 3.360010301892698e-01, 4.600000083446503e-01, 4.600000083446503e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIDWithAutotuningAmigoFOTD.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIDWithAutotuningAmigoFOTD.txt new file mode 100644 index 00000000000..c687caefb4b --- /dev/null +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIDWithAutotuningAmigoFOTD.txt @@ -0,0 +1,14 @@ +last-generated=2022-10-06 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "number of continuous time states": "7", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+04] +PID.u_s=[8.00000011920929e-01, 8.00000011920929e-01] +PID.u_m=[7.200000286102295e-01, 7.999961972236633e-01, 8.00000011920929e-01, 9.997047185897827e-01, 9.997542500495911e-01, 1.353038940578699e-02, 8.857408602125361e-07, 3.679669458023306e-09, 9.999660849571228e-01, 1.000000238418579e+00, 1.831817673519254e-03, -4.376551601126266e-07, -3.086363165039074e-08, 9.999957084655762e-01, 9.999999403953552e-01, 2.479994727764279e-04, -1.764262975711972e-07, 9.864661693572999e-01, 9.999984502792358e-01, 1.000000238418579e+00, 3.37569581461139e-05, -1.531296902612667e-07, 9.981683492660522e-01, 9.999999403953552e-01, 1.00000011920929e+00, 4.782652922585839e-06, 6.361457849379804e-08, 9.997518658638e-01, 9.999997615814209e-01, 1.353305298835039e-02, 6.810040531490813e-07, 5.165457039879584e-08, 9.999655485153198e-01, 1e+00, 1.832396141253376e-03, 6.068140692150337e-07, -7.690858438991199e-08, 9.999955296516418e-01, 1e+00, 2.482716517988592e-04, -6.328367874175456e-08, 9.864668250083923e-01, 9.999991655349731e-01, 1.00000011920929e+00, 3.372831270098686e-05, 3.373774859483092e-08, 9.981687068939209e-01, 9.999999403953552e-01, 1.00000011920929e+00, 4.778414222528227e-06, 6.64355894741675e-08, 9.997522234916687e-01, 9.999995231628418e-01, 1.353304088115692e-02, 6.783279786759522e-07, 6.301085875293211e-08, 9.999650716781616e-01, 9.999998807907104e-01, 1.831485773436725e-03, -3.620476363153102e-08, 3.025162342851218e-08, 9.999959468841553e-01, 9.999998807907104e-01, 2.482726704329252e-04, -6.531460172709558e-08, 9.864665865898132e-01, 9.999988675117493e-01, 9.999998807907104e-01, 3.372812352608758e-05, 3.565445538810754e-08, 9.981690049171448e-01, 9.999999403953552e-01, 9.999997615814209e-01, 4.674082902056398e-06, 1.378034539811779e-07, 9.997523427009583e-01, 9.999998807907104e-01, 1.353303622454405e-02, 6.771534231120313e-07, 7.043469452128193e-08, 9.999664425849915e-01, 1e+00, 1.831492292694747e-03, -1.129223647922117e-07, 3.704376894120287e-08, 9.999950528144836e-01, 1e+00, 2.482762211002409e-04, -7.298008597445005e-08, 9.864667057991028e-01, 9.999994039535522e-01, 1e+00, 3.372755600139499e-05, 4.042295387307604e-08, 9.981687664985657e-01, 9.999996423721313e-01, 1e+00, 4.769191491504898e-06, 7.418010028459321e-08, 9.997516870498657e-01, 1.000000715255737e+00] +PIDWitTun.u_s=[8.00000011920929e-01, 8.00000011920929e-01] +PIDWitTun.u_m=[8.999999761581421e-01, 9.99995231628418e-01, 1e+00, -9.972719848155975e-02, -1.000000312924385e-01, 9.851129055023193e-01, 9.999990463256836e-01, 1e+00, 7.412599921226501e-01, 7.412511706352234e-01, 8.219661712646484e-01, 8.221143484115601e-01, 8.221142888069153e-01, 7.949288487434387e-01, 7.949287295341492e-01, 8.02881121635437e-01, 8.028831481933594e-01, 7.998949885368347e-01, 7.998539805412292e-01, 7.998539805412292e-01, 8.005301356315613e-01, 8.005301356315613e-01, 8.001304268836975e-01, 8.001297116279602e-01, 8.001297116279602e-01, 8.00144374370575e-01, 8.00144374370575e-01, 8.000690937042236e-01, 8.000690340995789e-01, 8.000496625900269e-01, 8.000494241714478e-01, 8.000494241714478e-01, 8.000285625457764e-01, 8.000285625457764e-01, 8.000184297561646e-01, 8.000183701515198e-01, 8.000183701515198e-01, 8.00011157989502e-01, 8.00011157989502e-01, 8.000069856643677e-01, 8.000069856643677e-01, 8.000043630599976e-01, 8.000043034553528e-01, 8.000043034553528e-01, 8.000026941299438e-01, 8.000026941299438e-01, 8.000016808509827e-01, 8.000016808509827e-01, 8.000016808509827e-01, 8.000010251998901e-01, 8.000010251998901e-01, 8.000006675720215e-01, 8.000006675720215e-01, 8.000004291534424e-01, 8.000003695487976e-01, 8.000003695487976e-01, 8.000002503395081e-01, 8.000002503395081e-01, 8.000001311302185e-01, 8.000001311302185e-01, 8.000001311302185e-01, 8.000000715255737e-01, 8.000000715255737e-01, 8.000000715255737e-01, 8.000000715255737e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01] +resSig.y=[0e+00, 0e+00] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIWithAutotuningAmigoFOTD.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIWithAutotuningAmigoFOTD.txt new file mode 100644 index 00000000000..15c1c12a9e8 --- /dev/null +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIWithAutotuningAmigoFOTD.txt @@ -0,0 +1,14 @@ +last-generated=2022-10-06 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "number of continuous time states": "5", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+04] +PI.u_s=[8.00000011920929e-01, 8.00000011920929e-01] +PI.u_m=[7.200000286102295e-01, 7.999963164329529e-01, 8.00000011920929e-01, 9.993212819099426e-01, 9.993707537651062e-01, 1.352495327591896e-02, 8.742280215301435e-07, -1.705985575028988e-08, 9.999662041664124e-01, 1e+00, 1.831496367231011e-03, 2.1658214777176e-08, -5.232301814039886e-10, 9.999952912330627e-01, 9.999997615814209e-01, 2.480033726897091e-04, 1.846915864689436e-08, 9.864668250083924e-01, 9.999994039535522e-01, 9.999999403953552e-01, 3.366969031048939e-05, 3.118373399502161e-07, 9.981674551963806e-01, 1e+00, 1e+00, 4.608750259649241e-06, 1.292929709961754e-07, 9.997518658638e-01, 1.000000238418579e+00, 1.353342551738024e-02, 6.908467753419245e-07, -5.563046023837614e-09, 9.999658465385437e-01, 9.999999403953552e-01, 1.831729547120595e-03, 1.431403120477626e-07, -9.129115241535146e-09, 9.999946355819702e-01, 1.000000476837158e+00, 2.480999391991645e-04, 8.081905811252454e-09, 9.864668846130371e-01, 9.999993443489075e-01, 1.000000238418579e+00, 3.368150646565482e-05, 9.76109362227362e-08, 9.981681704521179e-01, 9.999998807907104e-01, 9.999998211860657e-01, 4.636767243937356e-06, -1.204396493648119e-08, 9.997515082359314e-01, 9.999999403953552e-01, 1.353336870670319e-02, 6.55940993965487e-07, 2.03799945808214e-08, 9.999662041664124e-01, 1e+00, 1.831738278269768e-03, 6.195759993943284e-08, 4.04614546312132e-08, 9.999953508377075e-01, 9.999998807907104e-01, 2.481031697243452e-04, -1.281417993936884e-08, 9.864668250083923e-01, 9.999990463256836e-01, 9.999999403953552e-01, 3.368512989254536e-05, -1.343482125548662e-07, 9.981679320335388e-01, 9.999999403953552e-01, 1e+00, 4.60327100881841e-06, 1.312607711412284e-08, 9.997515678405762e-01, 9.999998211860657e-01, 1.353310141712427e-02, 7.88596764778049e-07, -3.108836210685695e-08, 9.999660849571228e-01, 1.000000357627869e+00, 1.831959350965917e-03, 6.154350984388657e-08, -1.488118250847492e-08, 9.99995231628418e-01, 1.000000238418579e+00, 2.482739510014653e-04, -2.07279995834142e-07, 9.864667057991028e-01, 9.999992251396179e-01, 1.000000238418579e+00, 3.374562584212981e-05, -1.613613243023337e-08, 9.981681108474731e-01, 9.999998807907104e-01, 1e+00, 4.80275730296853e-06, 5.183790818819034e-08, 9.997517466545105e-01, 1.00000011920929e+00] +PIWitTun.u_s=[8.00000011920929e-01, 8.00000011920929e-01] +PIWitTun.u_m=[8.999999761581421e-01, 9.999954104423523e-01, 1e+00, -9.972716122865677e-02, -9.999996423721313e-02, 9.851132035255432e-01, 9.999990463256836e-01, 1e+00, 6.143437027931213e-01, 6.143306493759155e-01, 7.517758011817932e-01, 7.520279884338379e-01, 7.520279884338379e-01, 7.522224187850952e-01, 7.522224187850952e-01, 7.728264927864075e-01, 7.728316187858582e-01, 7.813777327537537e-01, 7.814949750900269e-01, 7.814949750900269e-01, 7.881967425346375e-01, 7.881969213485718e-01, 7.922887802124023e-01, 7.92296290397644e-01, 7.92296290397644e-01, 7.95012891292572e-01, 7.95012891292572e-01, 7.967617511749268e-01, 7.967621684074402e-01, 7.978845834732056e-01, 7.979000210762024e-01, 7.979000210762024e-01, 7.986374497413635e-01, 7.986375093460083e-01, 7.991152405738831e-01, 7.991161346435547e-01, 7.991161346435547e-01, 7.994265556335449e-01, 7.994265556335449e-01, 7.99627959728241e-01, 7.99627959728241e-01, 7.997568845748901e-01, 7.997586727142334e-01, 7.997586727142334e-01, 7.99843430519104e-01, 7.99843430519104e-01, 7.998983263969421e-01, 7.998984456062317e-01, 7.998984456062317e-01, 7.999340891838074e-01, 7.999340891838074e-01, 7.999572157859802e-01, 7.99957275390625e-01, 7.999720573425293e-01, 7.999722361564636e-01, 7.999722361564636e-01, 7.999820113182068e-01, 7.999820113182068e-01, 7.99988329410553e-01, 7.99988329410553e-01, 7.99988329410553e-01, 7.999924421310425e-01, 7.999924421310425e-01, 7.999950647354126e-01, 7.999950647354126e-01, 7.999967932701111e-01, 7.999967932701111e-01, 7.999967932701111e-01, 7.999979257583618e-01, 7.999979257583618e-01, 7.999986410140991e-01, 7.999986410140991e-01, 7.999986410140991e-01, 7.999991178512573e-01, 7.999991178512573e-01, 7.999994158744812e-01, 7.999994158744812e-01, 7.999996542930603e-01, 7.999996542930603e-01, 7.999996542930603e-01, 7.999997735023499e-01, 7.999997735023499e-01, 7.999998331069946e-01, 7.999998331069946e-01, 7.999998331069946e-01, 7.999998927116394e-01, 7.999998927116394e-01, 7.999999523162842e-01, 7.999999523162842e-01, 7.999999523162842e-01, 7.999999523162842e-01, 7.999999523162842e-01, 7.999999523162842e-01, 7.999999523162842e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01] +resSig.y=[0e+00, 0e+00] diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PI.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PI.mos new file mode 100644 index 00000000000..3a09b145cf4 --- /dev/null +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PI.mos @@ -0,0 +1,7 @@ +compareVars := + { + "PI.k", + "RefDat.y[4]", + "PI.Ti", + "RefDat.y[5]" + }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PID.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PID.mos new file mode 100644 index 00000000000..88884746984 --- /dev/null +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PID.mos @@ -0,0 +1,9 @@ +compareVars := + { + "PID.k", + "RefDat.y[4]", + "PID.Ti", + "RefDat.y[5]", + "PID.Td", + "RefDat.y[6]" + }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDDerivativeTime.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDDerivativeTime.mos new file mode 100644 index 00000000000..ce4a3de13f7 --- /dev/null +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDDerivativeTime.mos @@ -0,0 +1,7 @@ +compareVars := + { + "PIDDerTim.T", + "PIDDerTim.L", + "RefDat.y[6]", + "PIDDerTim.Td" + }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDGain.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDGain.mos new file mode 100644 index 00000000000..5ff7ba0e9de --- /dev/null +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDGain.mos @@ -0,0 +1,8 @@ +compareVars := + { + "PIDGai.kp", + "PIDGai.T", + "PIDGai.L", + "PIDGai.k", + "RefDat.y[4]" + }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDIntegralTime.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDIntegralTime.mos new file mode 100644 index 00000000000..3c2f71043da --- /dev/null +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDIntegralTime.mos @@ -0,0 +1,7 @@ +compareVars := + { + "PIDIntTim.T", + "PIDIntTim.L", + "PIDIntTim.Ti", + "RefDat.y[5]" + }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIGain.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIGain.mos new file mode 100644 index 00000000000..13622aadd34 --- /dev/null +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIGain.mos @@ -0,0 +1,8 @@ +compareVars := + { + "PIGai.kp", + "PIGai.T", + "PIGai.L", + "PIGai.k", + "RefDat.y[4]" + }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIIntegralTime.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIIntegralTime.mos new file mode 100644 index 00000000000..1d03b91d2a5 --- /dev/null +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIIntegralTime.mos @@ -0,0 +1,7 @@ +compareVars := + { + "PIIntTim.T", + "PIIntTim.L", + "PIIntTim.Ti", + "RefDat.y[5]" + }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.Controller.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.Controller.mos new file mode 100644 index 00000000000..af76d746497 --- /dev/null +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.Controller.mos @@ -0,0 +1,5 @@ +compareVars := + { + "relCon.u_m", + "relCon.y" + }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.HalfPeriodRatio.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.HalfPeriodRatio.mos new file mode 100644 index 00000000000..bf9da570447 --- /dev/null +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.HalfPeriodRatio.mos @@ -0,0 +1,6 @@ +compareVars := + { + "halPerRat.tOn", + "halPerRat.tOff", + "halPerRat.rho" + }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.NormalizedTimeDelay.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.NormalizedTimeDelay.mos new file mode 100644 index 00000000000..eb51aa56850 --- /dev/null +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.NormalizedTimeDelay.mos @@ -0,0 +1,6 @@ +compareVars := + { + "norTimDel.rho", + "norTimDel.tau", + "RefDat.y[2]" + }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.OnOffPeriod.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.OnOffPeriod.mos new file mode 100644 index 00000000000..22cc6bbd842 --- /dev/null +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.OnOffPeriod.mos @@ -0,0 +1,6 @@ +compareVars := + { + "onOffPer.On", + "onOffPer.tOn", + "onOffPer.tOff" + }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.ResponseProcess.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.ResponseProcess.mos new file mode 100644 index 00000000000..b23b588f5e6 --- /dev/null +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.ResponseProcess.mos @@ -0,0 +1,9 @@ +compareVars := + { + "relRes.y[1]", + "resPro.tOn", + "resPro.tOff", + "resPro.triEnd", + "resPro.triSta", + "resPro.tau" + }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation.ControlProcessModel.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation.ControlProcessModel.mos new file mode 100644 index 00000000000..bdcb5cc8c5b --- /dev/null +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation.ControlProcessModel.mos @@ -0,0 +1,7 @@ +compareVars := + { + "conProMod.T", + "RefDat.y[5]", + "conProMod.L", + "RefDat.y[6]" + }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation.Gain.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation.Gain.mos new file mode 100644 index 00000000000..ce97a8c517e --- /dev/null +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation.Gain.mos @@ -0,0 +1,8 @@ +compareVars := + { + "u.y[1]", + "tOn.y[1]", + "tOff.y[1]", + "tunSta.y[1]", + "gai.k" + }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation.TimeConstantDelay.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation.TimeConstantDelay.mos new file mode 100644 index 00000000000..2ce020bfed5 --- /dev/null +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation.TimeConstantDelay.mos @@ -0,0 +1,7 @@ +compareVars := + { + "timConDel.T", + "RefDat.y[4]", + "timConDel.L", + "RefDat.y[5]" + }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIDWithAutotuningAmigoFOTD.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIDWithAutotuningAmigoFOTD.mos new file mode 100644 index 00000000000..2d59b52e587 --- /dev/null +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIDWithAutotuningAmigoFOTD.mos @@ -0,0 +1,8 @@ +compareVars := + { + "PID.u_s", + "PID.u_m", + "PIDWitTun.u_s", + "PIDWitTun.u_m", + "resSig.y" + }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIWithAutotuningAmigoFOTD.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIWithAutotuningAmigoFOTD.mos new file mode 100644 index 00000000000..7d82c10e9aa --- /dev/null +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIWithAutotuningAmigoFOTD.mos @@ -0,0 +1,8 @@ +compareVars := + { + "PI.u_s", + "PI.u_m", + "PIWitTun.u_s", + "PIWitTun.u_m", + "resSig.y" + }; From 7bb91f4ce9c4f404722723912b39e51939087070 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Wed, 12 Oct 2022 14:57:37 -0400 Subject: [PATCH 036/214] more clean ups --- .../AutoTuner/AMIGO/PIGain.mo | 2 +- .../AutoTuner/AMIGO/Validation/package.mo | 2 +- .../PIDWithAutotuning/AutoTuner/package.order | 2 +- ...otuningAmigoFOTD.mo => FirstOrderAMIGO.mo} | 20 +++++++++---------- .../PIDWithAutotuning/Relay/Controller.mo | 2 +- ...AmigoFOTD.mo => PIDWithFirstOrderAMIGO.mo} | 13 ++++++------ ...gAmigoFOTD.mo => PIWithFirstOrderAMIGO.mo} | 13 ++++++------ .../PIDWithAutotuning/Validation/package.mo | 2 +- .../Validation/package.order | 4 ++-- .../Utilities/PIDWithAutotuning/package.order | 2 +- ...ning_Validation_PIDWithFirstOrderAMIGO.txt | 14 +++++++++++++ ...uning_Validation_PIWithFirstOrderAMIGO.txt | 14 +++++++++++++ .../Validation/PIDWithFirstOrderAMIGO.mos | 5 +++++ .../Validation/PIWithFirstOrderAMIGO.mos | 5 +++++ ...ning.Validation.PIDWithFirstOrderAMIGO.mos | 8 ++++++++ ...uning.Validation.PIWithFirstOrderAMIGO.mos | 8 ++++++++ 16 files changed, 84 insertions(+), 32 deletions(-) rename Buildings/Controls/OBC/Utilities/PIDWithAutotuning/{PIDWithAutotuningAmigoFOTD.mo => FirstOrderAMIGO.mo} (96%) rename Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/{PIDWithAutotuningAmigoFOTD.mo => PIDWithFirstOrderAMIGO.mo} (93%) rename Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/{PIWithAutotuningAmigoFOTD.mo => PIWithFirstOrderAMIGO.mo} (93%) create mode 100644 Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIDWithFirstOrderAMIGO.txt create mode 100644 Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIWithFirstOrderAMIGO.txt create mode 100644 Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mos create mode 100644 Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mos create mode 100644 Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIDWithFirstOrderAMIGO.mos create mode 100644 Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIWithFirstOrderAMIGO.mos diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo index 4b94ec61f19..1a196946b69 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo @@ -119,7 +119,7 @@ First implementation
                                  k = 0.15/kp + (0.35-LT/(L+T)2)(T/kp/L),

                                  -where kp is the gain of the first-order time-delayed model; +where kp is the gain of the first-order time-delayed model;

                                  T is the time constant of the first-order time-delayed model;

                                  L is the time delay of the first-order time-delayed model.

                                  diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/package.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/package.mo index ea9904db884..a782badd55b 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/package.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/package.mo @@ -1,5 +1,5 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; -package Validation "Collection of models that validate the blocks in the FirstOrderTimedelayed" +package Validation "Collection of models that validate the blocks in the AutoTuner" annotation ( preferredView="info", Documentation( diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/package.order index baefc10fa89..72305503185 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/package.order +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/package.order @@ -1 +1 @@ -AMIGO \ No newline at end of file +AMIGO diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/PIDWithAutotuningAmigoFOTD.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo similarity index 96% rename from Buildings/Controls/OBC/Utilities/PIDWithAutotuning/PIDWithAutotuningAmigoFOTD.mo rename to Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index f44f14d140f..b14a28063cf 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/PIDWithAutotuningAmigoFOTD.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -1,6 +1,6 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning; -block PIDWithAutotuningAmigoFOTD - "A autotuning PID controller with an Amigo tuner and a first order time delayed system model" +block FirstOrderAMIGO + "A autotuning PID controller with an AMIGO tuner and a first order time delayed system model" parameter Buildings.Controls.OBC.CDL.Types.SimpleController controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PI "Type of controller"; parameter Real k_start( @@ -76,7 +76,7 @@ block PIDWithAutotuningAmigoFOTD Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PI PIPar if not with_D "Parameters of a PI controller" annotation (Placement(transformation(extent={{-60,70},{-80,90}}))); - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PID PIDPra + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PID PIDPar if with_D "Parameters of a PID controller" annotation (Placement(transformation(extent={{-60,40},{-80,60}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.ResponseProcess resPro( @@ -147,19 +147,19 @@ equation connect(rel.yErr, conProMod.u) annotation (Line(points={{44,30},{50,30},{50, 72},{-10,72},{-10,58},{-18,58}}, color={0,0,127})); - connect(PIDPra.kp, conProMod.k) + connect(PIDPar.kp, conProMod.k) annotation (Line(points={{-58,56},{-50,56},{-50,56.1},{-42,56.1}}, color={0,0,127})); - connect(PIDPra.T, conProMod.T) + connect(PIDPar.T, conProMod.T) annotation (Line(points={{-58,50},{-42,50}}, color={0,0,127})); - connect(PIDPra.L, conProMod.L) annotation (Line(points={{-58,44},{-44,44},{ + connect(PIDPar.L, conProMod.L) annotation (Line(points={{-58,44},{-44,44},{ -44,42},{-42,42}}, color={0,0,127})); - connect(PIDPra.k, samk.u) annotation (Line(points={{-82,57},{-94,57},{-94,-20}, + connect(PIDPar.k, samk.u) annotation (Line(points={{-82,57},{-94,57},{-94,-20}, {-42,-20}}, color={0,0,127})); - connect(PIDPra.Ti, samTi.u) annotation (Line(points={{-82,50},{-88,50},{-88,-48}, + connect(PIDPar.Ti, samTi.u) annotation (Line(points={{-82,50},{-88,50},{-88,-48}, {-82,-48}}, color={0,0,127})); - connect(samTd.u, PIDPra.Td) annotation (Line(points={{-42,-70},{-48,-70},{-48, + connect(samTd.u,PIDPar. Td) annotation (Line(points={{-42,-70},{-48,-70},{-48, 34},{-82,34},{-82,43},{-82,43}}, color={0,0,127})); connect(PIPar.kp, conProMod.k) annotation (Line(points={{-58,86},{-50,86},{ -50,56.1},{-42,56.1}}, @@ -245,4 +245,4 @@ First implementation
                                  fillPattern=FillPattern.Solid, pattern=LinePattern.None, lineColor={0,0,0})})); -end PIDWithAutotuningAmigoFOTD; +end FirstOrderAMIGO; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo index 899ce43c45d..09e0229727a 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo @@ -94,7 +94,7 @@ equation

                                  otherwise, y(t) = y(t-Δt), yOn(t) = yOn(t-Δt)

                                  where δ is a dead band, e(t) = us(t) - um(t) is the control error, yhig and ylow are the higher value and the lower value of the output y, respectively.

                                  t-Δt is the previous time step.

                                  -

                                  Note that this block generates an asymmetric signal, meaning yhig ≠ ylow

                                  +

                                  Note that this block generates an asymmetric signal, meaning yhig ≠ ylow.

                                  References

                                  Josefin Berner (2017) \"Automatic Controller Tuning using Relay-based Model Identification.\" diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithAutotuningAmigoFOTD.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo similarity index 93% rename from Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithAutotuningAmigoFOTD.mo rename to Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo index 8fb969be69a..6424f96e0a9 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithAutotuningAmigoFOTD.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo @@ -1,10 +1,9 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation; -model PIDWithAutotuningAmigoFOTD "Test model for PIDWithAutotuning" +model PIDWithFirstOrderAMIGO "Test model for FirstOrderAMIGO" Buildings.Controls.OBC.CDL.Continuous.Sources.Constant SetPoint(k=0.8) "Setpoint value" annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.PIDWithAutotuningAmigoFOTD - PIDWitTun( + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.FirstOrderAMIGO PIDWitTun( controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PID, yHig=1, yLow=0.1, @@ -88,13 +87,13 @@ equation StopTime=10000, Tolerance=1e-06), __Dymola_Commands( - file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithAutotuningAmigoFOTD.mos" "Simulate and plot"), + file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mos" "Simulate and plot"), Documentation( info="

                                  Validation test for the block - -Buildings.Controls.OBC.Utilities.PIDWithAutotuning.PIDWithAutotuningAmigoFOTD. + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.FirstOrderAMIGO.

                                  This example is to compare the output of a PID controller with an autotuning feature to that of another PID controller with arbitary gains @@ -122,4 +121,4 @@ First implementation
                                  fillPattern=FillPattern.Solid, points={{-36,60},{64,0},{-36,-60},{-36,60}})}), Diagram(coordinateSystem(extent={{-100,-80},{200,100}}))); -end PIDWithAutotuningAmigoFOTD; +end PIDWithFirstOrderAMIGO; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo similarity index 93% rename from Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD.mo rename to Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo index da3ee124224..6cd76a8eafb 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo @@ -1,10 +1,9 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation; -model PIWithAutotuningAmigoFOTD "Test model for PIDWithAutotuning" +model PIWithFirstOrderAMIGO "Test model for FirstOrderAMIGO" Buildings.Controls.OBC.CDL.Continuous.Sources.Constant SetPoint(k=0.8) "Setpoint value" annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.PIDWithAutotuningAmigoFOTD - PIWitTun( + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.FirstOrderAMIGO PIWitTun( controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PI, yHig=1, yLow=0.1, @@ -88,13 +87,13 @@ equation StopTime=10000, Tolerance=1e-06), __Dymola_Commands( - file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD.mos" "Simulate and plot"), + file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mos" "Simulate and plot"), Documentation( info="

                                  Validation test for the block - -Buildings.Controls.OBC.Utilities.PIDWithAutotuning.PIDWithAutotuningAmigoFOTD. + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.FirstOrderAMIGO.

                                  This example is to compare the output of a PI controller with an autotuning feature to that of another PI controller with arbitary gains @@ -122,4 +121,4 @@ First implementation
                                  fillPattern=FillPattern.Solid, points={{-36,60},{64,0},{-36,-60},{-36,60}})}), Diagram(coordinateSystem(extent={{-100,-80},{200,100}}))); -end PIWithAutotuningAmigoFOTD; +end PIWithFirstOrderAMIGO; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/package.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/package.mo index 6205a02a2d5..baa9589a8af 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/package.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/package.mo @@ -1,5 +1,5 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning; -package Validation "Collection of models that validate the SetPoints blocks of the CDL" +package Validation "Collection of models that validate the blocks for PID autotuning" annotation ( preferredView="info", Documentation( diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/package.order index d2568a91f3c..67188433c65 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/package.order +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/package.order @@ -1,2 +1,2 @@ -PIWithAutotuningAmigoFOTD -PIDWithAutotuningAmigoFOTD +PIWithFirstOrderAMIGO +PIDWithFirstOrderAMIGO diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/package.order index ed2f0d98dc7..c9abc1044cf 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/package.order +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/package.order @@ -1,5 +1,5 @@ AutoTuner Relay SystemIdentification -PIDWithAutotuningAmigoFOTD +FirstOrderAMIGO Validation diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIDWithFirstOrderAMIGO.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIDWithFirstOrderAMIGO.txt new file mode 100644 index 00000000000..1a1e24cf0b1 --- /dev/null +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIDWithFirstOrderAMIGO.txt @@ -0,0 +1,14 @@ +last-generated=2022-10-12 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "number of continuous time states": "7", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+04] +PID.u_s=[8.00000011920929e-01, 8.00000011920929e-01] +PID.u_m=[7.200000286102295e-01, 7.999961972236633e-01, 8.00000011920929e-01, 9.997047185897827e-01, 9.997542500495911e-01, 1.353038940578699e-02, 8.857408602125361e-07, 3.679669458023306e-09, 9.999660849571228e-01, 1.000000238418579e+00, 1.831817673519254e-03, -4.376551601126266e-07, -3.086363165039074e-08, 9.999957084655762e-01, 9.999999403953552e-01, 2.479994727764279e-04, -1.764262975711972e-07, 9.864661693572999e-01, 9.999984502792358e-01, 1.000000238418579e+00, 3.37569581461139e-05, -1.531296902612667e-07, 9.981683492660522e-01, 9.999999403953552e-01, 1.00000011920929e+00, 4.782652922585839e-06, 6.361457849379804e-08, 9.997518658638e-01, 9.999997615814209e-01, 1.353305298835039e-02, 6.810040531490813e-07, 5.165457039879584e-08, 9.999655485153198e-01, 1e+00, 1.832396141253376e-03, 6.068140692150337e-07, -7.690858438991199e-08, 9.999955296516418e-01, 1e+00, 2.482716517988592e-04, -6.328367874175456e-08, 9.864668250083923e-01, 9.999991655349731e-01, 1.00000011920929e+00, 3.372831270098686e-05, 3.373774859483092e-08, 9.981687068939209e-01, 9.999999403953552e-01, 1.00000011920929e+00, 4.778414222528227e-06, 6.64355894741675e-08, 9.997522234916687e-01, 9.999995231628418e-01, 1.353304088115692e-02, 6.783279786759522e-07, 6.301085875293211e-08, 9.999650716781616e-01, 9.999998807907104e-01, 1.831485773436725e-03, -3.620476363153102e-08, 3.025162342851218e-08, 9.999959468841553e-01, 9.999998807907104e-01, 2.482726704329252e-04, -6.531460172709558e-08, 9.864665865898132e-01, 9.999988675117493e-01, 9.999998807907104e-01, 3.372812352608758e-05, 3.565445538810754e-08, 9.981690049171448e-01, 9.999999403953552e-01, 9.999997615814209e-01, 4.674082902056398e-06, 1.378034539811779e-07, 9.997523427009583e-01, 9.999998807907104e-01, 1.353303622454405e-02, 6.771534231120313e-07, 7.043469452128193e-08, 9.999664425849915e-01, 1e+00, 1.831492292694747e-03, -1.129223647922117e-07, 3.704376894120287e-08, 9.999950528144836e-01, 1e+00, 2.482762211002409e-04, -7.298008597445005e-08, 9.864667057991028e-01, 9.999994039535522e-01, 1e+00, 3.372755600139499e-05, 4.042295387307604e-08, 9.981687664985657e-01, 9.999996423721313e-01, 1e+00, 4.769191491504898e-06, 7.418010028459321e-08, 9.997516870498657e-01, 1.000000715255737e+00] +PIDWitTun.u_s=[8.00000011920929e-01, 8.00000011920929e-01] +PIDWitTun.u_m=[8.999999761581421e-01, 9.99995231628418e-01, 1e+00, -9.972719848155975e-02, -1.000000312924385e-01, 9.851129055023193e-01, 9.999990463256836e-01, 1e+00, 7.412599921226501e-01, 7.412511706352234e-01, 8.219661712646484e-01, 8.221143484115601e-01, 8.221142888069153e-01, 7.949288487434387e-01, 7.949287295341492e-01, 8.02881121635437e-01, 8.028831481933594e-01, 7.998949885368347e-01, 7.998539805412292e-01, 7.998539805412292e-01, 8.005301356315613e-01, 8.005301356315613e-01, 8.001304268836975e-01, 8.001297116279602e-01, 8.001297116279602e-01, 8.00144374370575e-01, 8.00144374370575e-01, 8.000690937042236e-01, 8.000690340995789e-01, 8.000496625900269e-01, 8.000494241714478e-01, 8.000494241714478e-01, 8.000285625457764e-01, 8.000285625457764e-01, 8.000184297561646e-01, 8.000183701515198e-01, 8.000183701515198e-01, 8.00011157989502e-01, 8.00011157989502e-01, 8.000069856643677e-01, 8.000069856643677e-01, 8.000043630599976e-01, 8.000043034553528e-01, 8.000043034553528e-01, 8.000026941299438e-01, 8.000026941299438e-01, 8.000016808509827e-01, 8.000016808509827e-01, 8.000016808509827e-01, 8.000010251998901e-01, 8.000010251998901e-01, 8.000006675720215e-01, 8.000006675720215e-01, 8.000004291534424e-01, 8.000003695487976e-01, 8.000003695487976e-01, 8.000002503395081e-01, 8.000002503395081e-01, 8.000001311302185e-01, 8.000001311302185e-01, 8.000001311302185e-01, 8.000000715255737e-01, 8.000000715255737e-01, 8.000000715255737e-01, 8.000000715255737e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01] +resSig.y=[0e+00, 0e+00] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIWithFirstOrderAMIGO.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIWithFirstOrderAMIGO.txt new file mode 100644 index 00000000000..4123b3d49eb --- /dev/null +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIWithFirstOrderAMIGO.txt @@ -0,0 +1,14 @@ +last-generated=2022-10-12 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "number of continuous time states": "5", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+04] +PI.u_s=[8.00000011920929e-01, 8.00000011920929e-01] +PI.u_m=[7.200000286102295e-01, 7.999963164329529e-01, 8.00000011920929e-01, 9.993212819099426e-01, 9.993707537651062e-01, 1.352495327591896e-02, 8.742280215301435e-07, -1.705985575028988e-08, 9.999662041664124e-01, 1e+00, 1.831496367231011e-03, 2.1658214777176e-08, -5.232301814039886e-10, 9.999952912330627e-01, 9.999997615814209e-01, 2.480033726897091e-04, 1.846915864689436e-08, 9.864668250083924e-01, 9.999994039535522e-01, 9.999999403953552e-01, 3.366969031048939e-05, 3.118373399502161e-07, 9.981674551963806e-01, 1e+00, 1e+00, 4.608750259649241e-06, 1.292929709961754e-07, 9.997518658638e-01, 1.000000238418579e+00, 1.353342551738024e-02, 6.908467753419245e-07, -5.563046023837614e-09, 9.999658465385437e-01, 9.999999403953552e-01, 1.831729547120595e-03, 1.431403120477626e-07, -9.129115241535146e-09, 9.999946355819702e-01, 1.000000476837158e+00, 2.480999391991645e-04, 8.081905811252454e-09, 9.864668846130371e-01, 9.999993443489075e-01, 1.000000238418579e+00, 3.368150646565482e-05, 9.76109362227362e-08, 9.981681704521179e-01, 9.999998807907104e-01, 9.999998211860657e-01, 4.636767243937356e-06, -1.204396493648119e-08, 9.997515082359314e-01, 9.999999403953552e-01, 1.353336870670319e-02, 6.55940993965487e-07, 2.03799945808214e-08, 9.999662041664124e-01, 1e+00, 1.831738278269768e-03, 6.195759993943284e-08, 4.04614546312132e-08, 9.999953508377075e-01, 9.999998807907104e-01, 2.481031697243452e-04, -1.281417993936884e-08, 9.864668250083923e-01, 9.999990463256836e-01, 9.999999403953552e-01, 3.368512989254536e-05, -1.343482125548662e-07, 9.981679320335388e-01, 9.999999403953552e-01, 1e+00, 4.60327100881841e-06, 1.312607711412284e-08, 9.997515678405762e-01, 9.999998211860657e-01, 1.353310141712427e-02, 7.88596764778049e-07, -3.108836210685695e-08, 9.999660849571228e-01, 1.000000357627869e+00, 1.831959350965917e-03, 6.154350984388657e-08, -1.488118250847492e-08, 9.99995231628418e-01, 1.000000238418579e+00, 2.482739510014653e-04, -2.07279995834142e-07, 9.864667057991028e-01, 9.999992251396179e-01, 1.000000238418579e+00, 3.374562584212981e-05, -1.613613243023337e-08, 9.981681108474731e-01, 9.999998807907104e-01, 1e+00, 4.80275730296853e-06, 5.183790818819034e-08, 9.997517466545105e-01, 1.00000011920929e+00] +PIWitTun.u_s=[8.00000011920929e-01, 8.00000011920929e-01] +PIWitTun.u_m=[8.999999761581421e-01, 9.999954104423523e-01, 1e+00, -9.972716122865677e-02, -9.999996423721313e-02, 9.851132035255432e-01, 9.999990463256836e-01, 1e+00, 6.143437027931213e-01, 6.143306493759155e-01, 7.517758011817932e-01, 7.520279884338379e-01, 7.520279884338379e-01, 7.522224187850952e-01, 7.522224187850952e-01, 7.728264927864075e-01, 7.728316187858582e-01, 7.813777327537537e-01, 7.814949750900269e-01, 7.814949750900269e-01, 7.881967425346375e-01, 7.881969213485718e-01, 7.922887802124023e-01, 7.92296290397644e-01, 7.92296290397644e-01, 7.95012891292572e-01, 7.95012891292572e-01, 7.967617511749268e-01, 7.967621684074402e-01, 7.978845834732056e-01, 7.979000210762024e-01, 7.979000210762024e-01, 7.986374497413635e-01, 7.986375093460083e-01, 7.991152405738831e-01, 7.991161346435547e-01, 7.991161346435547e-01, 7.994265556335449e-01, 7.994265556335449e-01, 7.99627959728241e-01, 7.99627959728241e-01, 7.997568845748901e-01, 7.997586727142334e-01, 7.997586727142334e-01, 7.99843430519104e-01, 7.99843430519104e-01, 7.998983263969421e-01, 7.998984456062317e-01, 7.998984456062317e-01, 7.999340891838074e-01, 7.999340891838074e-01, 7.999572157859802e-01, 7.99957275390625e-01, 7.999720573425293e-01, 7.999722361564636e-01, 7.999722361564636e-01, 7.999820113182068e-01, 7.999820113182068e-01, 7.99988329410553e-01, 7.99988329410553e-01, 7.99988329410553e-01, 7.999924421310425e-01, 7.999924421310425e-01, 7.999950647354126e-01, 7.999950647354126e-01, 7.999967932701111e-01, 7.999967932701111e-01, 7.999967932701111e-01, 7.999979257583618e-01, 7.999979257583618e-01, 7.999986410140991e-01, 7.999986410140991e-01, 7.999986410140991e-01, 7.999991178512573e-01, 7.999991178512573e-01, 7.999994158744812e-01, 7.999994158744812e-01, 7.999996542930603e-01, 7.999996542930603e-01, 7.999996542930603e-01, 7.999997735023499e-01, 7.999997735023499e-01, 7.999998331069946e-01, 7.999998331069946e-01, 7.999998331069946e-01, 7.999998927116394e-01, 7.999998927116394e-01, 7.999999523162842e-01, 7.999999523162842e-01, 7.999999523162842e-01, 7.999999523162842e-01, 7.999999523162842e-01, 7.999999523162842e-01, 7.999999523162842e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01] +resSig.y=[0e+00, 0e+00] diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mos new file mode 100644 index 00000000000..aa5bf929c1c --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mos @@ -0,0 +1,5 @@ +simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIDWithFirstOrderAMIGO", stopTime=10000, method="Cvode", tolerance=1e-06, resultFile="PIDWithFirstOrderAMIGO"); +createPlot(id=1, position={95, 95, 1494, 1014}, y={"PID.u_s", "PID.u_m"}, range={0.0, 10000.0, -0.5, 1.5}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={95, 95, 1494, 1014}, y={"PIDWitTun.u_s", "PIDWitTun.u_m"}, range={0.0, 10000.0, -0.5, 1.5}, autoscale=false, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={95, 95, 1494, 1014}, y={"resSig.y"}, range={0.0, 10000.0, -0.5, 1.5}, autoscale=false, grid=true, subPlot=103, colors={{28,108,200}}); + diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mos new file mode 100644 index 00000000000..991b79a130c --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mos @@ -0,0 +1,5 @@ +simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIWithFirstOrderAMIGO", stopTime=10000, method="Cvode", tolerance=1e-06, resultFile="PIWithFirstOrderAMIGO"); +createPlot(id=1, position={95, 95, 1494, 1014}, y={"PI.u_s", "PI.u_m"}, range={0.0, 10000.0, -0.5, 1.5}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={95, 95, 1494, 1014}, y={"PIWitTun.u_s", "PIWitTun.u_m"}, range={0.0, 10000.0, -0.5, 1.5}, autoscale=false, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={95, 95, 1494, 1014}, y={"resSig.y"}, range={0.0, 10000.0, -0.5, 1.5}, autoscale=false, grid=true, subPlot=103, colors={{28,108,200}}); + diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIDWithFirstOrderAMIGO.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIDWithFirstOrderAMIGO.mos new file mode 100644 index 00000000000..2d59b52e587 --- /dev/null +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIDWithFirstOrderAMIGO.mos @@ -0,0 +1,8 @@ +compareVars := + { + "PID.u_s", + "PID.u_m", + "PIDWitTun.u_s", + "PIDWitTun.u_m", + "resSig.y" + }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIWithFirstOrderAMIGO.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIWithFirstOrderAMIGO.mos new file mode 100644 index 00000000000..7d82c10e9aa --- /dev/null +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIWithFirstOrderAMIGO.mos @@ -0,0 +1,8 @@ +compareVars := + { + "PI.u_s", + "PI.u_m", + "PIWitTun.u_s", + "PIWitTun.u_m", + "resSig.y" + }; From 2d7ae04212f1add5c79f2577bcb80efdcb867ef0 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Mon, 17 Oct 2022 16:58:28 -0400 Subject: [PATCH 037/214] remove scripts that are not needed --- .../Validation/PIDWithAutotuningAmigoFOTD.mos | 5 ----- .../Validation/PIWithAutotuningAmigoFOTD.mos | 5 ----- 2 files changed, 10 deletions(-) delete mode 100644 Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithAutotuningAmigoFOTD.mos delete mode 100644 Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD.mos diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithAutotuningAmigoFOTD.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithAutotuningAmigoFOTD.mos deleted file mode 100644 index d51bde7e20b..00000000000 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithAutotuningAmigoFOTD.mos +++ /dev/null @@ -1,5 +0,0 @@ -simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIDWithAutotuningAmigoFOTD", stopTime=10000, method="Cvode", tolerance=1e-06, resultFile="PIDWithAutotuningAmigoFOTD"); -createPlot(id=1, position={95, 95, 1494, 1014}, y={"PID.u_s", "PID.u_m"}, range={0.0, 10000.0, -0.5, 1.5}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={95, 95, 1494, 1014}, y={"PIDWitTun.u_s", "PIDWitTun.u_m"}, range={0.0, 10000.0, -0.5, 1.5}, autoscale=false, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={95, 95, 1494, 1014}, y={"resSig.y"}, range={0.0, 10000.0, -0.5, 1.5}, autoscale=false, grid=true, subPlot=103, colors={{28,108,200}}); - diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD.mos deleted file mode 100644 index a3971760884..00000000000 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithAutotuningAmigoFOTD.mos +++ /dev/null @@ -1,5 +0,0 @@ -simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIWithAutotuningAmigoFOTD", stopTime=10000, method="Cvode", tolerance=1e-06, resultFile="PIWithAutotuningAmigoFOTD"); -createPlot(id=1, position={95, 95, 1494, 1014}, y={"PI.u_s", "PI.u_m"}, range={0.0, 10000.0, -0.5, 1.5}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={95, 95, 1494, 1014}, y={"PIWitTun.u_s", "PIWitTun.u_m"}, range={0.0, 10000.0, -0.5, 1.5}, autoscale=false, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={95, 95, 1494, 1014}, y={"resSig.y"}, range={0.0, 10000.0, -0.5, 1.5}, autoscale=false, grid=true, subPlot=103, colors={{28,108,200}}); - From 675d2b6b05903c82ef1835c30ec4a274b5720f00 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Mon, 17 Oct 2022 17:00:11 -0400 Subject: [PATCH 038/214] remove scripts that are not needed --- ...thAutotuning.Validation.PIDWithAutotuningAmigoFOTD.mos | 8 -------- ...ithAutotuning.Validation.PIWithAutotuningAmigoFOTD.mos | 8 -------- 2 files changed, 16 deletions(-) delete mode 100644 Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIDWithAutotuningAmigoFOTD.mos delete mode 100644 Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIWithAutotuningAmigoFOTD.mos diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIDWithAutotuningAmigoFOTD.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIDWithAutotuningAmigoFOTD.mos deleted file mode 100644 index 2d59b52e587..00000000000 --- a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIDWithAutotuningAmigoFOTD.mos +++ /dev/null @@ -1,8 +0,0 @@ -compareVars := - { - "PID.u_s", - "PID.u_m", - "PIDWitTun.u_s", - "PIDWitTun.u_m", - "resSig.y" - }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIWithAutotuningAmigoFOTD.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIWithAutotuningAmigoFOTD.mos deleted file mode 100644 index 7d82c10e9aa..00000000000 --- a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIWithAutotuningAmigoFOTD.mos +++ /dev/null @@ -1,8 +0,0 @@ -compareVars := - { - "PI.u_s", - "PI.u_m", - "PIWitTun.u_s", - "PIWitTun.u_m", - "resSig.y" - }; From 85a3b370afbc5db5eb3c40f3ccd60bdb3eae3173 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Mon, 17 Oct 2022 17:01:04 -0400 Subject: [PATCH 039/214] remove the reference dataset that are not needed --- ...uning_Validation_PIDWithAutotuningAmigoFOTD.txt | 14 -------------- ...tuning_Validation_PIWithAutotuningAmigoFOTD.txt | 14 -------------- 2 files changed, 28 deletions(-) delete mode 100644 Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIDWithAutotuningAmigoFOTD.txt delete mode 100644 Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIWithAutotuningAmigoFOTD.txt diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIDWithAutotuningAmigoFOTD.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIDWithAutotuningAmigoFOTD.txt deleted file mode 100644 index c687caefb4b..00000000000 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIDWithAutotuningAmigoFOTD.txt +++ /dev/null @@ -1,14 +0,0 @@ -last-generated=2022-10-06 -statistics-simulation= -{ - "linear": " ", - "nonlinear": " ", - "number of continuous time states": "7", - "numerical Jacobians": "0" -} -time=[0e+00, 1e+04] -PID.u_s=[8.00000011920929e-01, 8.00000011920929e-01] -PID.u_m=[7.200000286102295e-01, 7.999961972236633e-01, 8.00000011920929e-01, 9.997047185897827e-01, 9.997542500495911e-01, 1.353038940578699e-02, 8.857408602125361e-07, 3.679669458023306e-09, 9.999660849571228e-01, 1.000000238418579e+00, 1.831817673519254e-03, -4.376551601126266e-07, -3.086363165039074e-08, 9.999957084655762e-01, 9.999999403953552e-01, 2.479994727764279e-04, -1.764262975711972e-07, 9.864661693572999e-01, 9.999984502792358e-01, 1.000000238418579e+00, 3.37569581461139e-05, -1.531296902612667e-07, 9.981683492660522e-01, 9.999999403953552e-01, 1.00000011920929e+00, 4.782652922585839e-06, 6.361457849379804e-08, 9.997518658638e-01, 9.999997615814209e-01, 1.353305298835039e-02, 6.810040531490813e-07, 5.165457039879584e-08, 9.999655485153198e-01, 1e+00, 1.832396141253376e-03, 6.068140692150337e-07, -7.690858438991199e-08, 9.999955296516418e-01, 1e+00, 2.482716517988592e-04, -6.328367874175456e-08, 9.864668250083923e-01, 9.999991655349731e-01, 1.00000011920929e+00, 3.372831270098686e-05, 3.373774859483092e-08, 9.981687068939209e-01, 9.999999403953552e-01, 1.00000011920929e+00, 4.778414222528227e-06, 6.64355894741675e-08, 9.997522234916687e-01, 9.999995231628418e-01, 1.353304088115692e-02, 6.783279786759522e-07, 6.301085875293211e-08, 9.999650716781616e-01, 9.999998807907104e-01, 1.831485773436725e-03, -3.620476363153102e-08, 3.025162342851218e-08, 9.999959468841553e-01, 9.999998807907104e-01, 2.482726704329252e-04, -6.531460172709558e-08, 9.864665865898132e-01, 9.999988675117493e-01, 9.999998807907104e-01, 3.372812352608758e-05, 3.565445538810754e-08, 9.981690049171448e-01, 9.999999403953552e-01, 9.999997615814209e-01, 4.674082902056398e-06, 1.378034539811779e-07, 9.997523427009583e-01, 9.999998807907104e-01, 1.353303622454405e-02, 6.771534231120313e-07, 7.043469452128193e-08, 9.999664425849915e-01, 1e+00, 1.831492292694747e-03, -1.129223647922117e-07, 3.704376894120287e-08, 9.999950528144836e-01, 1e+00, 2.482762211002409e-04, -7.298008597445005e-08, 9.864667057991028e-01, 9.999994039535522e-01, 1e+00, 3.372755600139499e-05, 4.042295387307604e-08, 9.981687664985657e-01, 9.999996423721313e-01, 1e+00, 4.769191491504898e-06, 7.418010028459321e-08, 9.997516870498657e-01, 1.000000715255737e+00] -PIDWitTun.u_s=[8.00000011920929e-01, 8.00000011920929e-01] -PIDWitTun.u_m=[8.999999761581421e-01, 9.99995231628418e-01, 1e+00, -9.972719848155975e-02, -1.000000312924385e-01, 9.851129055023193e-01, 9.999990463256836e-01, 1e+00, 7.412599921226501e-01, 7.412511706352234e-01, 8.219661712646484e-01, 8.221143484115601e-01, 8.221142888069153e-01, 7.949288487434387e-01, 7.949287295341492e-01, 8.02881121635437e-01, 8.028831481933594e-01, 7.998949885368347e-01, 7.998539805412292e-01, 7.998539805412292e-01, 8.005301356315613e-01, 8.005301356315613e-01, 8.001304268836975e-01, 8.001297116279602e-01, 8.001297116279602e-01, 8.00144374370575e-01, 8.00144374370575e-01, 8.000690937042236e-01, 8.000690340995789e-01, 8.000496625900269e-01, 8.000494241714478e-01, 8.000494241714478e-01, 8.000285625457764e-01, 8.000285625457764e-01, 8.000184297561646e-01, 8.000183701515198e-01, 8.000183701515198e-01, 8.00011157989502e-01, 8.00011157989502e-01, 8.000069856643677e-01, 8.000069856643677e-01, 8.000043630599976e-01, 8.000043034553528e-01, 8.000043034553528e-01, 8.000026941299438e-01, 8.000026941299438e-01, 8.000016808509827e-01, 8.000016808509827e-01, 8.000016808509827e-01, 8.000010251998901e-01, 8.000010251998901e-01, 8.000006675720215e-01, 8.000006675720215e-01, 8.000004291534424e-01, 8.000003695487976e-01, 8.000003695487976e-01, 8.000002503395081e-01, 8.000002503395081e-01, 8.000001311302185e-01, 8.000001311302185e-01, 8.000001311302185e-01, 8.000000715255737e-01, 8.000000715255737e-01, 8.000000715255737e-01, 8.000000715255737e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01] -resSig.y=[0e+00, 0e+00] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIWithAutotuningAmigoFOTD.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIWithAutotuningAmigoFOTD.txt deleted file mode 100644 index 15c1c12a9e8..00000000000 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIWithAutotuningAmigoFOTD.txt +++ /dev/null @@ -1,14 +0,0 @@ -last-generated=2022-10-06 -statistics-simulation= -{ - "linear": " ", - "nonlinear": " ", - "number of continuous time states": "5", - "numerical Jacobians": "0" -} -time=[0e+00, 1e+04] -PI.u_s=[8.00000011920929e-01, 8.00000011920929e-01] -PI.u_m=[7.200000286102295e-01, 7.999963164329529e-01, 8.00000011920929e-01, 9.993212819099426e-01, 9.993707537651062e-01, 1.352495327591896e-02, 8.742280215301435e-07, -1.705985575028988e-08, 9.999662041664124e-01, 1e+00, 1.831496367231011e-03, 2.1658214777176e-08, -5.232301814039886e-10, 9.999952912330627e-01, 9.999997615814209e-01, 2.480033726897091e-04, 1.846915864689436e-08, 9.864668250083924e-01, 9.999994039535522e-01, 9.999999403953552e-01, 3.366969031048939e-05, 3.118373399502161e-07, 9.981674551963806e-01, 1e+00, 1e+00, 4.608750259649241e-06, 1.292929709961754e-07, 9.997518658638e-01, 1.000000238418579e+00, 1.353342551738024e-02, 6.908467753419245e-07, -5.563046023837614e-09, 9.999658465385437e-01, 9.999999403953552e-01, 1.831729547120595e-03, 1.431403120477626e-07, -9.129115241535146e-09, 9.999946355819702e-01, 1.000000476837158e+00, 2.480999391991645e-04, 8.081905811252454e-09, 9.864668846130371e-01, 9.999993443489075e-01, 1.000000238418579e+00, 3.368150646565482e-05, 9.76109362227362e-08, 9.981681704521179e-01, 9.999998807907104e-01, 9.999998211860657e-01, 4.636767243937356e-06, -1.204396493648119e-08, 9.997515082359314e-01, 9.999999403953552e-01, 1.353336870670319e-02, 6.55940993965487e-07, 2.03799945808214e-08, 9.999662041664124e-01, 1e+00, 1.831738278269768e-03, 6.195759993943284e-08, 4.04614546312132e-08, 9.999953508377075e-01, 9.999998807907104e-01, 2.481031697243452e-04, -1.281417993936884e-08, 9.864668250083923e-01, 9.999990463256836e-01, 9.999999403953552e-01, 3.368512989254536e-05, -1.343482125548662e-07, 9.981679320335388e-01, 9.999999403953552e-01, 1e+00, 4.60327100881841e-06, 1.312607711412284e-08, 9.997515678405762e-01, 9.999998211860657e-01, 1.353310141712427e-02, 7.88596764778049e-07, -3.108836210685695e-08, 9.999660849571228e-01, 1.000000357627869e+00, 1.831959350965917e-03, 6.154350984388657e-08, -1.488118250847492e-08, 9.99995231628418e-01, 1.000000238418579e+00, 2.482739510014653e-04, -2.07279995834142e-07, 9.864667057991028e-01, 9.999992251396179e-01, 1.000000238418579e+00, 3.374562584212981e-05, -1.613613243023337e-08, 9.981681108474731e-01, 9.999998807907104e-01, 1e+00, 4.80275730296853e-06, 5.183790818819034e-08, 9.997517466545105e-01, 1.00000011920929e+00] -PIWitTun.u_s=[8.00000011920929e-01, 8.00000011920929e-01] -PIWitTun.u_m=[8.999999761581421e-01, 9.999954104423523e-01, 1e+00, -9.972716122865677e-02, -9.999996423721313e-02, 9.851132035255432e-01, 9.999990463256836e-01, 1e+00, 6.143437027931213e-01, 6.143306493759155e-01, 7.517758011817932e-01, 7.520279884338379e-01, 7.520279884338379e-01, 7.522224187850952e-01, 7.522224187850952e-01, 7.728264927864075e-01, 7.728316187858582e-01, 7.813777327537537e-01, 7.814949750900269e-01, 7.814949750900269e-01, 7.881967425346375e-01, 7.881969213485718e-01, 7.922887802124023e-01, 7.92296290397644e-01, 7.92296290397644e-01, 7.95012891292572e-01, 7.95012891292572e-01, 7.967617511749268e-01, 7.967621684074402e-01, 7.978845834732056e-01, 7.979000210762024e-01, 7.979000210762024e-01, 7.986374497413635e-01, 7.986375093460083e-01, 7.991152405738831e-01, 7.991161346435547e-01, 7.991161346435547e-01, 7.994265556335449e-01, 7.994265556335449e-01, 7.99627959728241e-01, 7.99627959728241e-01, 7.997568845748901e-01, 7.997586727142334e-01, 7.997586727142334e-01, 7.99843430519104e-01, 7.99843430519104e-01, 7.998983263969421e-01, 7.998984456062317e-01, 7.998984456062317e-01, 7.999340891838074e-01, 7.999340891838074e-01, 7.999572157859802e-01, 7.99957275390625e-01, 7.999720573425293e-01, 7.999722361564636e-01, 7.999722361564636e-01, 7.999820113182068e-01, 7.999820113182068e-01, 7.99988329410553e-01, 7.99988329410553e-01, 7.99988329410553e-01, 7.999924421310425e-01, 7.999924421310425e-01, 7.999950647354126e-01, 7.999950647354126e-01, 7.999967932701111e-01, 7.999967932701111e-01, 7.999967932701111e-01, 7.999979257583618e-01, 7.999979257583618e-01, 7.999986410140991e-01, 7.999986410140991e-01, 7.999986410140991e-01, 7.999991178512573e-01, 7.999991178512573e-01, 7.999994158744812e-01, 7.999994158744812e-01, 7.999996542930603e-01, 7.999996542930603e-01, 7.999996542930603e-01, 7.999997735023499e-01, 7.999997735023499e-01, 7.999998331069946e-01, 7.999998331069946e-01, 7.999998331069946e-01, 7.999998927116394e-01, 7.999998927116394e-01, 7.999999523162842e-01, 7.999999523162842e-01, 7.999999523162842e-01, 7.999999523162842e-01, 7.999999523162842e-01, 7.999999523162842e-01, 7.999999523162842e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01] -resSig.y=[0e+00, 0e+00] From a008aef1d78dee3ad9dc81451f0625b6da62b13e Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Mon, 17 Oct 2022 17:01:44 -0400 Subject: [PATCH 040/214] fix one typo in the model doc --- .../OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo index 1af3abf630b..585789d7e19 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo @@ -71,7 +71,7 @@ First implementation

                                ", info=" -

                                This block calculates the control gain, the integral time, and the derivative time of a PI model.

                                +

                                This block calculates the control gain, the integral time, and the derivative time of a PID model.

                                Please refer to the following block for detailed information:

                                Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.AutoTuner.AMIGO.PIDGain

                                From 408eb01e6b388dead4995851fa541c5078caa2af Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Mon, 17 Oct 2022 17:02:40 -0400 Subject: [PATCH 041/214] remove the exta

                                --- .../PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo index 137f7c9d8c1..237ab9b9556 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo @@ -69,8 +69,8 @@ First implementation

                                Td = 0.5LT/(0.3L+T),

                                -

                                where T is the time constant of the first-order time-delayed model;

                                -

                                L is the time delay of the first-order time-delayed model.

                                +

                                where T is the time constant of the first-order time-delayed model; +L is the time delay of the first-order time-delayed model.

                                Validation

                                This block was validated analytically, see From 4ee4e79c1b5ab98d44aa833e499088ef9e13ff1b Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Mon, 17 Oct 2022 17:03:36 -0400 Subject: [PATCH 042/214] small fix to model diagram --- .../PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo | 2 +- .../AutoTuner/AMIGO/PIDIntegralTime.mo | 6 +++--- .../AutoTuner/AMIGO/PIIntegralTime.mo | 11 ++++++----- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo index 9cf72937169..79f5dbe0a6e 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo @@ -17,7 +17,7 @@ block PIDGain "Identify the control gain of a PID controller" annotation (Placement(transformation(extent={{100,-20},{140,20}}))); Buildings.Controls.OBC.CDL.Continuous.Divide div1 "Calculate the inverse of the input gain" - annotation (Placement(transformation(extent={{-38,40},{-18,80}}))); + annotation (Placement(transformation(extent={{-40,40},{-20,80}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.Constant const(final k=1) "Constant parameter" annotation (Placement(transformation(extent={{-80,70},{-60,90}}))); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo index 34dae961da9..ff67a834fe6 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo @@ -12,10 +12,10 @@ block PIDIntegralTime "Identifies the integral time of a PID controller" "Time constant signal for the integral term" annotation (Placement(transformation(extent={{100,-20},{140,20}}))); Buildings.Controls.OBC.CDL.Continuous.Add add1 - "Calculate the sum of the time delay and the output of gai3" + "Calculate the sum of the time delay and the product of 0.1 and the input time constant" annotation (Placement(transformation(extent={{-40,10},{-20,30}}))); Buildings.Controls.OBC.CDL.Continuous.Add add2 - "Calculate the sum of the output of gai1 and the output of gai2" + "Calculate the sum of the output of gai1 and the product of 0.8 and the input time constant" annotation (Placement(transformation(extent={{-40,-30},{-20,-10}}))); Buildings.Controls.OBC.CDL.Continuous.Divide div "Calculate the output of add3 divided by the output of add1" @@ -80,7 +80,7 @@ First implementation

                                This block calculates the integral time of a PID model.

                                Main equations

                                -Ti = (0.4L + 0.8T)/(L + 0.1T)L, +Ti = L(0.4L + 0.8T)/(L + 0.1T),

                                where T is the time constant of the first-order time-delayed model;

                                L is the time delay of the first-order time-delayed model.

                                diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo index 8066851531b..a83785742f4 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo @@ -22,7 +22,7 @@ block PIIntegralTime "Identifies the integral time of a PI controller" annotation (Placement(transformation(extent={{40,-80},{60,-60}}))); Buildings.Controls.OBC.CDL.Continuous.Divide div "Calculate the output of gai3 divided by the output of add3" - annotation (Placement(transformation(extent={{20,60},{40,80}}))); + annotation (Placement(transformation(extent={{20,80},{40,60}}))); Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai1(final k=12) "Mutiple the time delay by 12" annotation (Placement(transformation(extent={{-40,-70},{-20,-50}}))); @@ -79,8 +79,9 @@ equation {38,-76}}, color={0,0,127})); connect(add3.u1, add1.y) annotation (Line(points={{38,-64},{32,-64},{32,30},{ 22,30}}, color={0,0,127})); - connect(add3.y, div.u2) annotation (Line(points={{62,-70},{80,-70},{80,-24},{-8, - -24},{-8,64},{18,64}}, color={0,0,127})); + connect(add3.y, div.u2) annotation (Line(points={{62,-70},{80,-70},{80,-24},{ + -8,-24},{-8,76},{18,76}}, + color={0,0,127})); connect(div.y, add2.u1) annotation (Line(points={{42,70},{50,70},{50,6},{58,6}}, color={0,0,127})); connect(add2.u2, gai4.y) annotation (Line(points={{58,-6},{48,-6},{48,-20},{ @@ -89,8 +90,8 @@ equation -60}}, color={0,0,127})); connect(gai3.y, mul4.u1) annotation (Line(points={{-42,80},{-94,80},{-94,24},{ -88,24},{-88,16},{-82,16}}, color={0,0,127})); - connect(mul4.y, div.u1) annotation (Line(points={{-58,10},{-4,10},{-4,76},{18, - 76}}, color={0,0,127})); + connect(mul4.y, div.u1) annotation (Line(points={{-58,10},{-4,10},{-4,64},{18, + 64}}, color={0,0,127})); annotation (defaultComponentName = "PIIntTim", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( From 9fe60db3d72d9603b30e6efa6a50e0104ee1b68b Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Mon, 17 Oct 2022 17:07:36 -0400 Subject: [PATCH 043/214] update the model doc and small fix to the connections --- .../Relay/HalfPeriodRatio.mo | 66 ++++++++++++------- 1 file changed, 42 insertions(+), 24 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo index e6158269342..47f6c4a5e37 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo @@ -25,7 +25,7 @@ block HalfPeriodRatio "Minimum value of the length for the On period and the length for the off period " annotation (Placement(transformation(extent={{-80,20},{-60,40}}))); Buildings.Controls.OBC.CDL.Continuous.Greater gretOntOff - "Check if the length for the On period or the length for the off period is larger than 0" + "Check if both the length for the On period and the length for the off period are larger than 0" annotation (Placement(transformation(extent={{0,40},{20,20}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.Constant minLen( final k=0) @@ -59,7 +59,7 @@ block HalfPeriodRatio annotation (Placement(transformation(extent={{-80,-40},{-60,-20}}))); Buildings.Controls.OBC.CDL.Continuous.Multiply mul "Detect if the the length for the On period or the length for the off period changes after both of them are larger than 0" - annotation (Placement(transformation(extent={{-40,-40},{-20,-20}}))); + annotation (Placement(transformation(extent={{-34,-40},{-14,-20}}))); Buildings.Controls.OBC.CDL.Continuous.Greater gretmaxtOntOff "Check if either the length for the On period or the length for the off period is larger than 0" annotation (Placement(transformation(extent={{0,10},{20,-10}}))); @@ -84,9 +84,6 @@ equation connect(tOffSample.u, tOff) annotation (Line(points={{-82,-70},{-92,-70},{-92, -60},{-120,-60}}, color={0,0,127})); - connect(tOnSample.trigger, tOffSample.trigger) annotation (Line(points={{-70,58}, - {-70,46},{-90,46},{-90,-52},{-70,-52},{-70,-58}}, - color={255,0,255})); connect(samAddtOntOff.y, tIncrease.u2) annotation (Line(points={{62,30},{64, 30},{64,-48},{28,-48},{28,-38},{38,-38}}, color={0,0,127})); connect(gretOntOff.y, samAddtOntOff.trigger) annotation (Line(points={{22,30}, @@ -113,34 +110,36 @@ equation {26,-52},{-70,-52},{-70,-58}}, color={255,0,255})); connect(AddtOntOff.u2, tOff) annotation (Line(points={{-82,-36},{-94,-36},{-94, -60},{-120,-60}}, color={0,0,127})); - connect(samAddtOntOff.u, tIncrease.u1) annotation (Line(points={{38,30},{28, - 30},{28,-30},{38,-30}}, color={0,0,127})); - connect(tmin.y, mul.u1) annotation (Line(points={{-58,30},{-52,30},{-52,-24},{ - -42,-24}}, color={0,0,127})); connect(AddtOntOff.u1, tOn) annotation (Line(points={{-82,-24},{-94,-24},{-94, 60},{-120,60}}, color={0,0,127})); - connect(AddtOntOff.y, mul.u2) annotation (Line(points={{-58,-30},{-50,-30},{-50, - -36},{-42,-36}}, color={0,0,127})); - connect(mul.y, gretOntOff.u1) annotation (Line(points={{-18,-30},{-8,-30},{-8, - 30},{-2,30}}, color={0,0,127})); - connect(mul.y, tIncrease.u1) - annotation (Line(points={{-18,-30},{38,-30}}, color={0,0,127})); connect(gretmaxtOntOff.y, triSta) annotation (Line(points={{22,0},{120,0}}, color={255,0,255})); - connect(gretmaxtOntOff.u2, gretOntOff.u2) annotation (Line(points={{-2,8},{ - -16,8},{-16,30},{-10,30},{-10,38},{-2,38}}, color={0,0,127})); - connect(gretmaxtOntOff.u1, mul.u2) annotation (Line(points={{-2,0},{-50,0},{ - -50,-36},{-42,-36}}, color={0,0,127})); - connect(tDecrease.u1, tIncrease.u1) annotation (Line(points={{38,-80},{34,-80}, - {34,-30},{38,-30}}, color={0,0,127})); - connect(tDecrease.u2, tIncrease.u2) annotation (Line(points={{38,-88},{28,-88}, - {28,-38},{38,-38}}, color={0,0,127})); connect(tChanges.u1, tIncrease.y) annotation (Line(points={{68,-30},{62,-30}}, color={255,0,255})); connect(tChanges.u2, tDecrease.y) annotation (Line(points={{68,-38},{68,-80},{62,-80}}, color={255,0,255})); connect(tChanges.y, tOffSample.trigger) annotation (Line(points={{92,-30},{92, -60},{26,-60},{26,-52},{-70,-52},{-70,-58}}, color={255,0,255})); + connect(samAddtOntOff.y, tDecrease.u2) annotation (Line(points={{62,30},{76,30}, + {76,-6},{30,-6},{30,-88},{38,-88}}, color={0,0,127})); + connect(gretmaxtOntOff.u1, AddtOntOff.y) annotation (Line(points={{-2,0},{-44, + 0},{-44,-30},{-58,-30}}, color={0,0,127})); + connect(tOnSample.trigger, triEnd) annotation (Line(points={{-70,58},{-70,46}, + {-84,46},{-84,-52},{86,-52},{86,-60},{120,-60}}, color={255,0,255})); + connect(gretmaxtOntOff.u2, minLen.y) annotation (Line(points={{-2,8},{-14,8},{ + -14,30},{-18,30}}, color={0,0,127})); + connect(gretOntOff.u1, tmin.y) annotation (Line(points={{-2,30},{-6,30},{-6,12}, + {-44,12},{-44,30},{-58,30}}, color={0,0,127})); + connect(mul.u1, tmin.y) annotation (Line(points={{-36,-24},{-36,6},{-48,6},{ + -48,30},{-58,30}}, color={0,0,127})); + connect(mul.u2, AddtOntOff.y) annotation (Line(points={{-36,-36},{-40,-36},{ + -40,-30},{-58,-30}}, color={0,0,127})); + connect(mul.y, tIncrease.u1) + annotation (Line(points={{-12,-30},{38,-30}}, color={0,0,127})); + connect(tDecrease.u1, mul.y) annotation (Line(points={{38,-80},{10,-80},{10, + -30},{-12,-30}}, color={0,0,127})); + connect(samAddtOntOff.u, mul.y) annotation (Line(points={{38,30},{36,30},{36, + -24},{-4,-24},{-4,-30},{-12,-30}}, color={0,0,127})); annotation ( Diagram( coordinateSystem( @@ -170,10 +169,29 @@ First implementation

                                ρ = max(ton,toff)/ min(ton,toff),

                                -

                                where ton and ton are the length of the On period and the Off period, respectively.

                                +

                                where ton and toff are the length of the On period and the Off period, respectively.

                                During an On period, the relay switch signal becomes True;

                                During an Off period, the relay switch signal becomes False.

                                Note that only the first On period and the first Off period are considered.

                                +

                                Algorithm

                                +

                                +The algorithm for calculating ρ is as follows: +

                                +
                                Step 1: detects when the tuning period begins.
                                +

                                The tuning period is considered to begin when either ton or toff are larger than 0. +In this implementation, we detect the beginning time by monitoring the sum of ton and toff.

                                + +
                                Step 2: detects when both ton and toff are larger than 0.
                                +

                                +We then record the value of the minimum value between (ton+toff)*min(ton,toff) when both ton and toff are larger than 0. +

                                + +
                                Step 3: detects when the tuning period ends.
                                +

                                +The tuning period is considered to end when either ton or toff changes after they become positive. +In this implementation, we detect the end time by checking if the value of (ton+toff)*min(ton,toff) is different from the output of step2. +

                                +

                                References

                                Josefin Berner (2017) \"Automatic Controller Tuning using Relay-based Model Identification.\" From 2fe712bfaf319d6695467182c283f705baa84d67 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Mon, 17 Oct 2022 20:13:37 -0400 Subject: [PATCH 044/214] restore the change to irrelevent file --- Buildings/Controls/OBC/CDL/Continuous/Validation/PID.mo | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Buildings/Controls/OBC/CDL/Continuous/Validation/PID.mo b/Buildings/Controls/OBC/CDL/Continuous/Validation/PID.mo index 6bdfc78ea34..05944ed26a7 100644 --- a/Buildings/Controls/OBC/CDL/Continuous/Validation/PID.mo +++ b/Buildings/Controls/OBC/CDL/Continuous/Validation/PID.mo @@ -69,9 +69,8 @@ equation annotation (Line(points={{-68,-12},{-62,-12},{-62,-96},{-20,-96},{-20,-92}},color={0,0,127})); annotation ( experiment( - StopTime=240, - Tolerance=1e-06, - __Dymola_Algorithm="Cvode"), + StopTime=1.0, + Tolerance=1e-06), __Dymola_Commands( file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/CDL/Continuous/Validation/PID.mos" "Simulate and plot"), Documentation( From acd807a447593ab997b36a706b18414cdf6564bd Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Wed, 16 Nov 2022 17:32:59 -0500 Subject: [PATCH 045/214] correct the connections and update the doc --- .../Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo | 10 +++++----- .../PIDWithAutotuning/Relay/HalfPeriodRatio.mo | 14 +++++++------- .../Validation/PIDWithFirstOrderAMIGO.mo | 7 ++++++- .../Validation/PIWithFirstOrderAMIGO.mo | 7 ++++++- 4 files changed, 24 insertions(+), 14 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index b14a28063cf..40153a8ec71 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -61,7 +61,7 @@ block FirstOrderAMIGO Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samk(y_start=k_start) "Recording the control gain" annotation (Placement(transformation(extent={{-40,-10},{-20,-30}}))); - Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samTi(y_start=Ti_start) if with_I + Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samTi(y_start=Ti_start) "Recording the integral time" annotation (Placement(transformation(extent={{-80,-38},{-60,-58}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samTd(y_start=Td_start) if with_D @@ -89,10 +89,7 @@ block FirstOrderAMIGO annotation (Placement(transformation(extent={{80,60},{60,80}}))); protected - final parameter Boolean with_I=controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PI or controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PID - "Boolean flag to enable integral action" - annotation (Evaluate=true,HideResult=true); - final parameter Boolean with_D=controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PD or controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PID + final parameter Boolean with_D=controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PID or controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PD "Boolean flag to enable derivative action" annotation (Evaluate=true,HideResult=true); @@ -100,6 +97,9 @@ initial equation assert( yHig-yRef>1E-6, "Higher value for the relay output should be larger than the reference output. Check parameters."); + assert( + controllerType <> Buildings.Controls.OBC.CDL.Types.SimpleController.PD and controllerType <> Buildings.Controls.OBC.CDL.Types.SimpleController.P, + "Only PI and PID are supported"); equation connect(PID.u_s, u_s) annotation (Line(points={{20,-30},{8,-30},{8,0},{-120,0}}, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo index 47f6c4a5e37..38ee9ce14fe 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo @@ -106,8 +106,6 @@ equation 32,-34},{24,-34},{24,-70},{2,-70}}, color={0,0,127})); connect(halPerRat.y, rho) annotation (Line(points={{82,70},{94,70},{94,60},{120, 60}}, color={0,0,127})); - connect(triEnd, tOffSample.trigger) annotation (Line(points={{120,-60},{26,-60}, - {26,-52},{-70,-52},{-70,-58}}, color={255,0,255})); connect(AddtOntOff.u2, tOff) annotation (Line(points={{-82,-36},{-94,-36},{-94, -60},{-120,-60}}, color={0,0,127})); connect(AddtOntOff.u1, tOn) annotation (Line(points={{-82,-24},{-94,-24},{-94, @@ -124,8 +122,6 @@ equation {76,-6},{30,-6},{30,-88},{38,-88}}, color={0,0,127})); connect(gretmaxtOntOff.u1, AddtOntOff.y) annotation (Line(points={{-2,0},{-44, 0},{-44,-30},{-58,-30}}, color={0,0,127})); - connect(tOnSample.trigger, triEnd) annotation (Line(points={{-70,58},{-70,46}, - {-84,46},{-84,-52},{86,-52},{86,-60},{120,-60}}, color={255,0,255})); connect(gretmaxtOntOff.u2, minLen.y) annotation (Line(points={{-2,8},{-14,8},{ -14,30},{-18,30}}, color={0,0,127})); connect(gretOntOff.u1, tmin.y) annotation (Line(points={{-2,30},{-6,30},{-6,12}, @@ -140,6 +136,10 @@ equation -30},{-12,-30}}, color={0,0,127})); connect(samAddtOntOff.u, mul.y) annotation (Line(points={{38,30},{36,30},{36, -24},{-4,-24},{-4,-30},{-12,-30}}, color={0,0,127})); + connect(tOnSample.trigger, tChanges.y) annotation (Line(points={{-70,58},{-70, + 50},{-56,50},{-56,-96},{94,-96},{94,-30},{92,-30}}, color={255,0,255})); + connect(triEnd, tChanges.y) annotation (Line(points={{120,-60},{96,-60},{96, + -30},{92,-30}}, color={255,0,255})); annotation ( Diagram( coordinateSystem( @@ -178,17 +178,17 @@ First implementation
                                The algorithm for calculating ρ is as follows:

                                Step 1: detects when the tuning period begins.
                                -

                                The tuning period is considered to begin when either ton or toff are larger than 0. +

                                The tuning period is triggered to begin when either ton or toff are larger than 0. In this implementation, we detect the beginning time by monitoring the sum of ton and toff.

                                Step 2: detects when both ton and toff are larger than 0.

                                -We then record the value of the minimum value between (ton+toff)*min(ton,toff) when both ton and toff are larger than 0. +We then record the value of the minimum value between (ton+toff)*min(ton,toff) at the momement when both ton and toff become postive.

                                Step 3: detects when the tuning period ends.

                                -The tuning period is considered to end when either ton or toff changes after they become positive. +The tuning period is triggered to end when either ton or toff changes after they become positive. In this implementation, we detect the end time by checking if the value of (ton+toff)*min(ton,toff) is different from the output of step2.

                                diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo index 6424f96e0a9..a9592d18a82 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo @@ -96,7 +96,12 @@ Validation test for the block Buildings.Controls.OBC.Utilities.PIDWithAutotuning.FirstOrderAMIGO.

                                -This example is to compare the output of a PID controller with an autotuning feature to that of another PID controller with arbitary gains +This example is to compare the output of a PID controller (PIDWitTun) with an autotuning feature to that of another PID controller (PID) with arbitary gains +

                                +

                                +Both PI controllers are connected with a first order control process. +PID is considered to be untuned and is supposed to have a poor control performance, i.e., the oscillations in the control output. +PIDWitTun have a better performance, i.e., the setpoint is close to the setpoint, after the tuning period ends (PIDWitTun.resPro.triEnd = true).

                                ", revisions=" diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo index 6cd76a8eafb..240cff47f60 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo @@ -96,7 +96,12 @@ Validation test for the block Buildings.Controls.OBC.Utilities.PIDWithAutotuning.FirstOrderAMIGO.

                                -This example is to compare the output of a PI controller with an autotuning feature to that of another PI controller with arbitary gains +This example is to compare the output of a PI controller (PIWitTun) with an autotuning feature to that of another PI controller (PI) with arbitary gains +

                                +

                                +Both PI controllers are connected with a first order control process. +PI is considered to be untuned and is supposed to have a poor control performance, i.e., the oscillations in the control output. +PIWitTun have a better performance, i.e., the setpoint is close to the setpoint, after the tuning period ends (PIWitTun.resPro.triEnd = true).

                                ", revisions=" From 6165588878bb915657d168cf63fdb947e8cdc7ac Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Wed, 16 Nov 2022 17:33:59 -0500 Subject: [PATCH 046/214] regenerate the reference dataset --- ...ies_PIDWithAutotuning_Validation_PIDWithFirstOrderAMIGO.txt | 3 ++- ...ties_PIDWithAutotuning_Validation_PIWithFirstOrderAMIGO.txt | 3 ++- ...ies.PIDWithAutotuning.Validation.PIDWithFirstOrderAMIGO.mos | 3 ++- ...ties.PIDWithAutotuning.Validation.PIWithFirstOrderAMIGO.mos | 3 ++- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIDWithFirstOrderAMIGO.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIDWithFirstOrderAMIGO.txt index 1a1e24cf0b1..2d3ef9f31b8 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIDWithFirstOrderAMIGO.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIDWithFirstOrderAMIGO.txt @@ -1,4 +1,4 @@ -last-generated=2022-10-12 +last-generated=2022-11-16 statistics-simulation= { "linear": " ", @@ -12,3 +12,4 @@ PID.u_m=[7.200000286102295e-01, 7.999961972236633e-01, 8.00000011920929e-01, 9.9 PIDWitTun.u_s=[8.00000011920929e-01, 8.00000011920929e-01] PIDWitTun.u_m=[8.999999761581421e-01, 9.99995231628418e-01, 1e+00, -9.972719848155975e-02, -1.000000312924385e-01, 9.851129055023193e-01, 9.999990463256836e-01, 1e+00, 7.412599921226501e-01, 7.412511706352234e-01, 8.219661712646484e-01, 8.221143484115601e-01, 8.221142888069153e-01, 7.949288487434387e-01, 7.949287295341492e-01, 8.02881121635437e-01, 8.028831481933594e-01, 7.998949885368347e-01, 7.998539805412292e-01, 7.998539805412292e-01, 8.005301356315613e-01, 8.005301356315613e-01, 8.001304268836975e-01, 8.001297116279602e-01, 8.001297116279602e-01, 8.00144374370575e-01, 8.00144374370575e-01, 8.000690937042236e-01, 8.000690340995789e-01, 8.000496625900269e-01, 8.000494241714478e-01, 8.000494241714478e-01, 8.000285625457764e-01, 8.000285625457764e-01, 8.000184297561646e-01, 8.000183701515198e-01, 8.000183701515198e-01, 8.00011157989502e-01, 8.00011157989502e-01, 8.000069856643677e-01, 8.000069856643677e-01, 8.000043630599976e-01, 8.000043034553528e-01, 8.000043034553528e-01, 8.000026941299438e-01, 8.000026941299438e-01, 8.000016808509827e-01, 8.000016808509827e-01, 8.000016808509827e-01, 8.000010251998901e-01, 8.000010251998901e-01, 8.000006675720215e-01, 8.000006675720215e-01, 8.000004291534424e-01, 8.000003695487976e-01, 8.000003695487976e-01, 8.000002503395081e-01, 8.000002503395081e-01, 8.000001311302185e-01, 8.000001311302185e-01, 8.000001311302185e-01, 8.000000715255737e-01, 8.000000715255737e-01, 8.000000715255737e-01, 8.000000715255737e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01] resSig.y=[0e+00, 0e+00] +PIDWitTun.resPro.triEnd=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIWithFirstOrderAMIGO.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIWithFirstOrderAMIGO.txt index 4123b3d49eb..796bf5f6454 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIWithFirstOrderAMIGO.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIWithFirstOrderAMIGO.txt @@ -1,4 +1,4 @@ -last-generated=2022-10-12 +last-generated=2022-11-16 statistics-simulation= { "linear": " ", @@ -12,3 +12,4 @@ PI.u_m=[7.200000286102295e-01, 7.999963164329529e-01, 8.00000011920929e-01, 9.99 PIWitTun.u_s=[8.00000011920929e-01, 8.00000011920929e-01] PIWitTun.u_m=[8.999999761581421e-01, 9.999954104423523e-01, 1e+00, -9.972716122865677e-02, -9.999996423721313e-02, 9.851132035255432e-01, 9.999990463256836e-01, 1e+00, 6.143437027931213e-01, 6.143306493759155e-01, 7.517758011817932e-01, 7.520279884338379e-01, 7.520279884338379e-01, 7.522224187850952e-01, 7.522224187850952e-01, 7.728264927864075e-01, 7.728316187858582e-01, 7.813777327537537e-01, 7.814949750900269e-01, 7.814949750900269e-01, 7.881967425346375e-01, 7.881969213485718e-01, 7.922887802124023e-01, 7.92296290397644e-01, 7.92296290397644e-01, 7.95012891292572e-01, 7.95012891292572e-01, 7.967617511749268e-01, 7.967621684074402e-01, 7.978845834732056e-01, 7.979000210762024e-01, 7.979000210762024e-01, 7.986374497413635e-01, 7.986375093460083e-01, 7.991152405738831e-01, 7.991161346435547e-01, 7.991161346435547e-01, 7.994265556335449e-01, 7.994265556335449e-01, 7.99627959728241e-01, 7.99627959728241e-01, 7.997568845748901e-01, 7.997586727142334e-01, 7.997586727142334e-01, 7.99843430519104e-01, 7.99843430519104e-01, 7.998983263969421e-01, 7.998984456062317e-01, 7.998984456062317e-01, 7.999340891838074e-01, 7.999340891838074e-01, 7.999572157859802e-01, 7.99957275390625e-01, 7.999720573425293e-01, 7.999722361564636e-01, 7.999722361564636e-01, 7.999820113182068e-01, 7.999820113182068e-01, 7.99988329410553e-01, 7.99988329410553e-01, 7.99988329410553e-01, 7.999924421310425e-01, 7.999924421310425e-01, 7.999950647354126e-01, 7.999950647354126e-01, 7.999967932701111e-01, 7.999967932701111e-01, 7.999967932701111e-01, 7.999979257583618e-01, 7.999979257583618e-01, 7.999986410140991e-01, 7.999986410140991e-01, 7.999986410140991e-01, 7.999991178512573e-01, 7.999991178512573e-01, 7.999994158744812e-01, 7.999994158744812e-01, 7.999996542930603e-01, 7.999996542930603e-01, 7.999996542930603e-01, 7.999997735023499e-01, 7.999997735023499e-01, 7.999998331069946e-01, 7.999998331069946e-01, 7.999998331069946e-01, 7.999998927116394e-01, 7.999998927116394e-01, 7.999999523162842e-01, 7.999999523162842e-01, 7.999999523162842e-01, 7.999999523162842e-01, 7.999999523162842e-01, 7.999999523162842e-01, 7.999999523162842e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01] resSig.y=[0e+00, 0e+00] +PIWitTun.resPro.triEnd=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIDWithFirstOrderAMIGO.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIDWithFirstOrderAMIGO.mos index 2d59b52e587..65e8a7ffcf6 100644 --- a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIDWithFirstOrderAMIGO.mos +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIDWithFirstOrderAMIGO.mos @@ -4,5 +4,6 @@ compareVars := "PID.u_m", "PIDWitTun.u_s", "PIDWitTun.u_m", - "resSig.y" + "resSig.y", + "PIDWitTun.resPro.triEnd" }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIWithFirstOrderAMIGO.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIWithFirstOrderAMIGO.mos index 7d82c10e9aa..d1e2d3d59f9 100644 --- a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIWithFirstOrderAMIGO.mos +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIWithFirstOrderAMIGO.mos @@ -4,5 +4,6 @@ compareVars := "PI.u_m", "PIWitTun.u_s", "PIWitTun.u_m", - "resSig.y" + "resSig.y", + "PIWitTun.resPro.triEnd" }; From 82b25f404b76a754d5b88965f27ba5b7f6e762a7 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Fri, 18 Nov 2022 00:06:32 -0500 Subject: [PATCH 047/214] fix typos in the doc --- .../Validation/PIDWithFirstOrderAMIGO.mo | 8 ++++---- .../PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo index a9592d18a82..143eba12350 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo @@ -14,7 +14,7 @@ model PIDWithFirstOrderAMIGO "Test model for FirstOrderAMIGO" controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PID, k=1, Ti=0.5, - Td=0.1) "PI controller with constant gains" + Td=0.1) "PID controller with constant gains" annotation (Placement(transformation(extent={{-20,50},{0,70}}))); Buildings.Controls.OBC.CDL.Logical.Sources.Constant resSig(k=false) "Reset signal" @@ -99,9 +99,9 @@ Buildings.Controls.OBC.Utilities.PIDWithAutotuning.FirstOrderAMIGO. This example is to compare the output of a PID controller (PIDWitTun) with an autotuning feature to that of another PID controller (PID) with arbitary gains

                                -Both PI controllers are connected with a first order control process. -PID is considered to be untuned and is supposed to have a poor control performance, i.e., the oscillations in the control output. -PIDWitTun have a better performance, i.e., the setpoint is close to the setpoint, after the tuning period ends (PIDWitTun.resPro.triEnd = true). +Both PID controllers are connected with a first-order control process. +Under the control of PIDWitTun, the value of the controlled variable is close to the setpoint after the tuning period ends (PIDWitTun.resPro.triEnd = true). +On the contrary, PID has a poor control performance, i.e., the value of the controlled variable oscillates, without an autotuning setup.

                                ", revisions=" diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo index 240cff47f60..11fc49a206b 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo @@ -99,9 +99,9 @@ Buildings.Controls.OBC.Utilities.PIDWithAutotuning.FirstOrderAMIGO. This example is to compare the output of a PI controller (PIWitTun) with an autotuning feature to that of another PI controller (PI) with arbitary gains

                                -Both PI controllers are connected with a first order control process. -PI is considered to be untuned and is supposed to have a poor control performance, i.e., the oscillations in the control output. -PIWitTun have a better performance, i.e., the setpoint is close to the setpoint, after the tuning period ends (PIWitTun.resPro.triEnd = true). +Both PI controllers are connected with a first-order control process. +Under the control of PIWitTun, the value of the controlled variable is close to the setpoint after the tuning period ends (PIWitTun.resPro.triEnd = true). +On the contrary, PI has a poor control performance, i.e., the value of the controlled variable oscillates, without an autotuning setup.

                                ", revisions=" From 4962fdbe72ca56f83ec400824f0888154318aa43 Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Fri, 18 Nov 2022 15:22:31 -0800 Subject: [PATCH 048/214] refactored pacakge order --- .../AutoTuner/AMIGO/Validation/package.order | 8 ++++---- .../PIDWithAutotuning/AutoTuner/AMIGO/package.order | 8 ++++---- .../FirstOrderTimedelayed/Validation/package.order | 2 +- .../FirstOrderTimedelayed/package.order | 2 +- .../Utilities/PIDWithAutotuning/Validation/package.order | 2 +- .../OBC/Utilities/PIDWithAutotuning/package.order | 2 +- Buildings/Controls/OBC/Utilities/package.order | 2 +- 7 files changed, 13 insertions(+), 13 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/package.order index 931bd8a9623..1bc46e27a85 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/package.order +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/package.order @@ -1,7 +1,7 @@ -PIGain -PIIntegralTime PI +PID +PIDDerivativeTime PIDGain PIDIntegralTime -PIDDerivativeTime -PID +PIGain +PIIntegralTime diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.order index ad3bc9d6f47..28500d43222 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.order +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.order @@ -1,8 +1,8 @@ -PIGain -PIIntegralTime PI +PID +PIDDerivativeTime PIDGain PIDIntegralTime -PIDDerivativeTime -PID +PIGain +PIIntegralTime Validation diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/package.order index 154973c2ec2..e7754967be2 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/package.order +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/package.order @@ -1,3 +1,3 @@ +ControlProcessModel Gain TimeConstantDelay -ControlProcessModel diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/package.order index 8b38a2a56a5..1f2f87d62ce 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/package.order +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/package.order @@ -1,4 +1,4 @@ +ControlProcessModel Gain TimeConstantDelay -ControlProcessModel Validation diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/package.order index 67188433c65..0ef0859fce0 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/package.order +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/package.order @@ -1,2 +1,2 @@ -PIWithFirstOrderAMIGO PIDWithFirstOrderAMIGO +PIWithFirstOrderAMIGO diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/package.order index c9abc1044cf..3833c69659b 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/package.order +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/package.order @@ -1,5 +1,5 @@ +FirstOrderAMIGO AutoTuner Relay SystemIdentification -FirstOrderAMIGO Validation diff --git a/Buildings/Controls/OBC/Utilities/package.order b/Buildings/Controls/OBC/Utilities/package.order index 1eccc346d78..95ca58bb2a9 100644 --- a/Buildings/Controls/OBC/Utilities/package.order +++ b/Buildings/Controls/OBC/Utilities/package.order @@ -1,6 +1,6 @@ OptimalStart PIDWithInputGains -SetPoints PIDWithAutotuning +SetPoints Validation BaseClasses From 2ec3888ede6061e1f58e800bba2be4fe4ba9caa1 Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Fri, 18 Nov 2022 15:32:07 -0800 Subject: [PATCH 049/214] improved mos scripts [ci skip] --- .../PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mos | 4 ++-- .../PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mos | 6 +++--- .../AutoTuner/AMIGO/Validation/PIDDerivativeTime.mos | 4 ++-- .../AutoTuner/AMIGO/Validation/PIDGain.mos | 4 ++-- .../AutoTuner/AMIGO/Validation/PIDIntegralTime.mos | 4 ++-- .../AutoTuner/AMIGO/Validation/PIGain.mos | 4 ++-- .../AutoTuner/AMIGO/Validation/PIIntegralTime.mos | 4 ++-- .../PIDWithAutotuning/Relay/Validation/Controller.mos | 4 ++-- .../Relay/Validation/HalfPeriodRatio.mos | 4 ++-- .../Relay/Validation/NormalizedTimeDelay.mos | 4 ++-- .../PIDWithAutotuning/Relay/Validation/OnOffPeriod.mos | 4 ++-- .../Relay/Validation/ResponseProcess.mos | 8 ++++---- .../Validation/ControlProcessModel.mos | 4 ++-- .../FirstOrderTimedelayed/Validation/Gain.mos | 8 ++++---- .../Validation/TimeConstantDelay.mos | 4 ++-- ...IDWithAutotuning.Validation.PIDWithFirstOrderAMIGO.mos | 3 +-- ...PIDWithAutotuning.Validation.PIWithFirstOrderAMIGO.mos | 3 +-- 17 files changed, 37 insertions(+), 39 deletions(-) diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mos index 6041bad2de0..104c98849e9 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mos @@ -1,4 +1,4 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PI", method="Cvode", tolerance=1e-06, resultFile="PI"); -createPlot(id=1, position={95, 95, 1484, 920}, y={"PI.k", "RefDat.y[4]"}, range={0.0, 1.0, 0.15000000000000002, 0.4}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={95, 95, 1484, 920}, y={"PI.Ti", "RefDat.y[5]"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={95, 95, 1484, 920}, y={"PI.k", "RefDat.y[4]"}, range={0.0, 1.0, 0.15, 0.4}, grid=true, subPlot=1, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={95, 95, 1484, 920}, y={"PI.Ti", "RefDat.y[5]"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=2, colors={{28,108,200}, {238,46,47}}); diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mos index e703e530fc7..7ba943ed613 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mos @@ -1,5 +1,5 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PID", method="Cvode", tolerance=1e-06, resultFile="PID"); -createPlot(id=1, position={75, 75, 1488, 1095}, y={"PID.k", "RefDat.y[4]"}, range={0.0, 1.0, 0.4, 1.2000000000000002}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={75, 75, 1488, 1095}, y={"PID.Ti", "RefDat.y[5]"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={75, 75, 1488, 1095}, y={"PID.Td", "RefDat.y[6]"}, range={0.0, 1.0, 0.1, 0.30000000000000004}, grid=true, subPlot=103, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={75, 75, 1488, 1095}, y={"PID.k", "RefDat.y[4]"}, range={0.0, 1.0, 0.4, 1.2}, grid=true, subPlot=1, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={75, 75, 1488, 1095}, y={"PID.Ti", "RefDat.y[5]"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=2, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={75, 75, 1488, 1095}, y={"PID.Td", "RefDat.y[6]"}, range={0.0, 1.0, 0.1, 0.3}, grid=true, subPlot=3, colors={{28,108,200}, {238,46,47}}); diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mos index 303ac7c1662..de7fc5b808f 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mos @@ -1,3 +1,3 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDDerivativeTime", method="Cvode", tolerance=1e-06, resultFile="PIDDerivativeTime"); -createPlot(id=1, position={35, 35, 1484, 920}, y={"PIDDerTim.T", "PIDDerTim.L"}, range={0.0, 1.0, 0.2, 1.2}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={75, 75, 1484, 920}, y={"RefDat.y[6]", "PIDDerTim.Td"}, range={0.0, 1.0, 0.10000000000000002, 0.30000000000000004}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}, timeUnit="s"); +createPlot(id=1, position={35, 35, 1484, 920}, y={"PIDDerTim.T", "PIDDerTim.L"}, range={0.0, 1.0, 0.2, 1.2}, grid=true, subPlot=1, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={75, 75, 1484, 920}, y={"RefDat.y[6]", "PIDDerTim.Td"}, range={0.0, 1.0, 0.1, 0.3}, grid=true, subPlot=2, colors={{28,108,200}, {238,46,47}}, timeUnit="s"); diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mos index 752c494cf42..bb201333ca3 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mos @@ -1,4 +1,4 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDGain", method="Cvode", tolerance=1e-06, resultFile="PIDGain"); -createPlot(id=1, position={15, 15, 1484, 920}, y={"PIDGai.kp", "PIDGai.T", "PIDGai.L"}, range={0.0, 1.0, 0.0, 2.5}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}, {0,140,72}}); -createPlot(id=1, position={15, 15, 1484, 920}, y={"PIDGai.k", "RefDat.y[4]"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={15, 15, 1484, 920}, y={"PIDGai.kp", "PIDGai.T", "PIDGai.L"}, range={0.0, 1.0, 0.0, 2.5}, grid=true, subPlot=1, colors={{28,108,200}, {238,46,47}, {0,140,72}}); +createPlot(id=1, position={15, 15, 1484, 920}, y={"PIDGai.k", "RefDat.y[4]"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=2, colors={{28,108,200}, {238,46,47}}); diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mos index 6df57e58290..a1498463518 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mos @@ -1,4 +1,4 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDIntegralTime", method="Cvode", tolerance=1e-06, resultFile="PIDIntegralTime"); -createPlot(id=1, position={75, 75, 1484, 920}, y={"PIDIntTim.T", "PIDIntTim.L"}, range={0.0, 1.0, 0.2, 1.2}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={75, 75, 1484, 920}, y={"PIDIntTim.Ti", "RefDat.y[5]"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={75, 75, 1484, 920}, y={"PIDIntTim.T", "PIDIntTim.L"}, range={0.0, 1.0, 0.2, 1.2}, grid=true, subPlot=1, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={75, 75, 1484, 920}, y={"PIDIntTim.Ti", "RefDat.y[5]"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=2, colors={{28,108,200}, {238,46,47}}); diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mos index e8783aee57e..14714306784 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mos @@ -1,4 +1,4 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIGain", method="Cvode", tolerance=1e-06, resultFile="PIGain"); -createPlot(id=1, position={35, 35, 1484, 920}, y={"PIGai.kp", "PIGai.T", "PIGai.L"}, range={0.0, 1.0, 0.0, 2.5}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}, {0,140,72}}); -createPlot(id=1, position={35, 35, 1484, 920}, y={"PIGai.k", "RefDat.y[4]"}, range={0.0, 1.0, 0.15000000000000002, 0.35000000000000003}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={35, 35, 1484, 920}, y={"PIGai.kp", "PIGai.T", "PIGai.L"}, range={0.0, 1.0, 0.0, 2.5}, grid=true, subPlot=1, colors={{28,108,200}, {238,46,47}, {0,140,72}}); +createPlot(id=1, position={35, 35, 1484, 920}, y={"PIGai.k", "RefDat.y[4]"}, range={0.0, 1.0, 0.15, 0.35}, grid=true, subPlot=2, colors={{28,108,200}, {238,46,47}}); diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mos index 6d0560de83b..2e9831d228c 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mos @@ -1,4 +1,4 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIIntegralTime", method="Cvode", tolerance=1e-06, resultFile="PIIntegralTime"); -createPlot(id=1, position={95, 95, 1484, 920}, y={"PIIntTim.T", "PIIntTim.L"}, range={0.0, 1.0, 0.2, 1.2}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={95, 95, 1484, 920}, y={"PIIntTim.Ti", "RefDat.y[5]"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={95, 95, 1484, 920}, y={"PIIntTim.T", "PIIntTim.L"}, range={0.0, 1.0, 0.2, 1.2}, grid=true, subPlot=1, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={95, 95, 1484, 920}, y={"PIIntTim.Ti", "RefDat.y[5]"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=2, colors={{28,108,200}, {238,46,47}}); diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Controller.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Controller.mos index e1290273037..0f751da3b8c 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Controller.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Controller.mos @@ -1,6 +1,6 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.Controller", method="Cvode", tolerance=1e-06, stopTime=1.0, resultFile="Controller"); -createPlot(id=1, position={75, 75, 1484, 920}, y={"relCon.u_m"}, range={0.0, 1.0, -1.5, 1.5}, grid=true, subPlot=101, colors={{28,108,200}}); +createPlot(id=1, position={75, 75, 1484, 920}, y={"relCon.u_m"}, range={0.0, 1.0, -1.5, 1.5}, grid=true, subPlot=1, colors={{28,108,200}}); plotExpression(apply(Controller[end].relCon.u_s-0.4), false, "controller[end].relCon.u_s-deaBan", 1); plotExpression(apply(Controller[end].relCon.u_s+0.4), false, "controller[end].relCon.u_s+deaBan", 1); -createPlot(id=1, position={75, 75, 1484, 920}, y={"relCon.y"}, range={0.0, 1.0, -1.0, 1.5}, grid=true, subPlot=102, colors={{28,108,200}}); +createPlot(id=1, position={75, 75, 1484, 920}, y={"relCon.y"}, range={0.0, 1.0, -1.0, 1.5}, grid=true, subPlot=2, colors={{28,108,200}}); diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mos index 9c57f459508..aa3b467abbe 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mos @@ -1,4 +1,4 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.HalfPeriodRatio", method="Cvode", tolerance=1e-06, resultFile="HalfPeriodRatio"); -createPlot(id=1, position={15, 15, 1742, 1559}, y={"halPerRat.tOn", "halPerRat.tOff"}, range={0.0, 1.0, -0.5, 3.5}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={15, 15, 1742, 1559}, y={"halPerRat.rho"}, range={0.0, 1.0, 0.95, 1.55}, grid=true, subPlot=102, colors={{28,108,200}}); +createPlot(id=1, position={15, 15, 1742, 1559}, y={"halPerRat.tOn", "halPerRat.tOff"}, range={0.0, 1.0, -0.5, 3.5}, grid=true, subPlot=1, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={15, 15, 1742, 1559}, y={"halPerRat.rho"}, range={0.0, 1.0, 0.95, 1.55}, grid=true, subPlot=2, colors={{28,108,200}}); diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mos index 885da49da58..a75db5216c7 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mos @@ -1,5 +1,5 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.NormalizedTimeDelay", method="Cvode", tolerance=1e-06, resultFile="NormalizedTimeDelay"); -createPlot(id=1, position={75, 75, 1484, 920}, y={"norTimDel.rho"}, range={0.0, 1.0, -0.5, 2.5}, grid=true, subPlot=101, colors={{28,108,200}}); -createPlot(id=1, position={95, 95, 1484, 920}, y={"norTimDel.tau", "RefDat.y[2]"}, range={0.0, 1.0, 0.0, 2.5}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={75, 75, 1484, 920}, y={"norTimDel.rho"}, range={0.0, 1.0, -0.5, 2.5}, grid=true, subPlot=1, colors={{28,108,200}}); +createPlot(id=1, position={95, 95, 1484, 920}, y={"norTimDel.tau", "RefDat.y[2]"}, range={0.0, 1.0, 0.0, 2.5}, grid=true, subPlot=2, colors={{28,108,200}, {238,46,47}}); diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mos index 59ff0994fdd..5c2834657c8 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mos @@ -1,4 +1,4 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.OnOffPeriod", method="Cvode", tolerance=1e-06, resultFile="OnOffPeriod"); -createPlot(id=1, position={35, 35, 1688, 1527}, y={"onOffPer.On"}, range={0.0, 1.0, -0.1, 1.1}, grid=true, subPlot=101, colors={{28,108,200}}); -createPlot(id=1, position={35, 35, 1688, 1527}, y={"onOffPer.tOn", "onOffPer.tOff"}, range={0.0, 1.0, -0.1, 0.7000000000000001}, grid=true, subPlot=102, colors={{238,46,47}, {28,108,200}}); +createPlot(id=1, position={35, 35, 1688, 1527}, y={"onOffPer.On"}, range={0.0, 1.0, -0.1, 1.1}, grid=true, subPlot=1, colors={{28,108,200}}); +createPlot(id=1, position={35, 35, 1688, 1527}, y={"onOffPer.tOn", "onOffPer.tOff"}, range={0.0, 1.0, -0.1, 0.7}, grid=true, subPlot=2, colors={{238,46,47}, {28,108,200}}); diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mos index aa361de718a..aaccfcd132e 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mos @@ -1,6 +1,6 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.ResponseProcess", method="Cvode", tolerance=1e-06, resultFile="ResponseProcess"); -createPlot(id=1, position={75, 75, 1869, 1435}, y={"relRes.y[1]"}, range={0.0, 1.0, -0.5, 1.5}, grid=true, subPlot=101, colors={{28,108,200}}); -createPlot(id=1, position={75, 75, 1869, 1435}, y={"resPro.tOn", "resPro.tOff"}, range={0.0, 1.0, -0.5, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={75, 75, 1869, 1435}, y={"resPro.triEnd","resPro.triSta"}, range={0.0, 1.0, -0.5, 1.5}, grid=true, subPlot=103, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={75, 75, 1869, 1435}, y={"resPro.tau"}, range={0.0, 1.0, 0.0, 1.5}, grid=true, subPlot=104, colors={{28,108,200}}); +createPlot(id=1, position={75, 75, 1869, 1435}, y={"relRes.y[1]"}, range={0.0, 1.0, -0.5, 1.5}, grid=true, subPlot=1, colors={{28,108,200}}); +createPlot(id=1, position={75, 75, 1869, 1435}, y={"resPro.tOn", "resPro.tOff"}, range={0.0, 1.0, -0.5, 1.0}, grid=true, subPlot=2, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={75, 75, 1869, 1435}, y={"resPro.triEnd","resPro.triSta"}, range={0.0, 1.0, -0.5, 1.5}, grid=true, subPlot=3, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={75, 75, 1869, 1435}, y={"resPro.tau"}, range={0.0, 1.0, 0.0, 1.5}, grid=true, subPlot=4, colors={{28,108,200}}); diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mos index 6694bd11299..cb778627842 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mos @@ -1,3 +1,3 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation.ControlProcessModel", method="Cvode", tolerance=1e-06, resultFile="ControlProcessModel"); -createPlot(id=1, position={95, 95, 1484, 920}, y={"conProMod.T", "RefDat.y[5]"}, range={0.0, 1.0, 0.75, 1.05}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}, timeUnit="s"); -createPlot(id=1, position={95, 95, 1484, 920}, y={"conProMod.L", "RefDat.y[6]"}, range={0.0, 1.0, 0.75, 1.05}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}, timeUnit="s"); +createPlot(id=1, position={95, 95, 1484, 920}, y={"conProMod.T", "RefDat.y[5]"}, range={0.0, 1.0, 0.75, 1.05}, grid=true, subPlot=1, colors={{28,108,200}, {238,46,47}}, timeUnit="s"); +createPlot(id=1, position={95, 95, 1484, 920}, y={"conProMod.L", "RefDat.y[6]"}, range={0.0, 1.0, 0.75, 1.05}, grid=true, subPlot=2, colors={{28,108,200}, {238,46,47}}, timeUnit="s"); diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mos index 21d4237bb6f..6421781c4a3 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mos @@ -1,5 +1,5 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation.Gain", method="Cvode", tolerance=1e-06, resultFile="Gain"); -createPlot(id=1, position={55, 55, 1753, 1433}, y={"u.y[1]"}, range={0.0, 1.0, 0.4, 1.2000000000000002}, grid=true, subPlot=101, colors={{28,108,200}}); -createPlot(id=1, position={55, 55, 1753, 1433}, y={"tOn.y[1]", "tOff.y[1]"}, range={0.0, 1.0, -0.5, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={55, 55, 1753, 1433}, y={"tunSta.y[1]"}, range={0.0, 1.0, -0.5, 1.5}, grid=true, subPlot=103, colors={{28,108,200}}); -createPlot(id=1, position={55, 55, 1753, 1433}, y={"gai.k"}, range={0.0, 1.0, -0.5, 1.5}, grid=true, subPlot=104, colors={{28,108,200}}); +createPlot(id=1, position={55, 55, 1753, 1433}, y={"u.y[1]"}, range={0.0, 1.0, 0.4, 1.2}, grid=true, subPlot=1, colors={{28,108,200}}); +createPlot(id=1, position={55, 55, 1753, 1433}, y={"tOn.y[1]", "tOff.y[1]"}, range={0.0, 1.0, -0.5, 1.0}, grid=true, subPlot=2, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={55, 55, 1753, 1433}, y={"tunSta.y[1]"}, range={0.0, 1.0, -0.5, 1.5}, grid=true, subPlot=3, colors={{28,108,200}}); +createPlot(id=1, position={55, 55, 1753, 1433}, y={"gai.k"}, range={0.0, 1.0, -0.5, 1.5}, grid=true, subPlot=4, colors={{28,108,200}}); diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mos index 0a1fa41e423..c7e2bede17c 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mos @@ -1,4 +1,4 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation.TimeConstantDelay", method="Cvode", tolerance=1e-06, resultFile="TimeConstantDelay"); -createPlot(id=1, position={35, 35, 1484, 920}, y={"timConDel.T", "RefDat.y[4]"}, range={0.0, 1.0, 0.4, 1.6}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={35, 35, 1484, 920}, y={"timConDel.L", "RefDat.y[5]"}, range={0.0, 1.0, 0.0, 0.8}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={35, 35, 1484, 920}, y={"timConDel.T", "RefDat.y[4]"}, range={0.0, 1.0, 0.4, 1.6}, grid=true, subPlot=1, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={35, 35, 1484, 920}, y={"timConDel.L", "RefDat.y[5]"}, range={0.0, 1.0, 0.0, 0.8}, grid=true, subPlot=2, colors={{28,108,200}, {238,46,47}}); diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIDWithFirstOrderAMIGO.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIDWithFirstOrderAMIGO.mos index 65e8a7ffcf6..2d59b52e587 100644 --- a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIDWithFirstOrderAMIGO.mos +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIDWithFirstOrderAMIGO.mos @@ -4,6 +4,5 @@ compareVars := "PID.u_m", "PIDWitTun.u_s", "PIDWitTun.u_m", - "resSig.y", - "PIDWitTun.resPro.triEnd" + "resSig.y" }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIWithFirstOrderAMIGO.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIWithFirstOrderAMIGO.mos index d1e2d3d59f9..7d82c10e9aa 100644 --- a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIWithFirstOrderAMIGO.mos +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIWithFirstOrderAMIGO.mos @@ -4,6 +4,5 @@ compareVars := "PI.u_m", "PIWitTun.u_s", "PIWitTun.u_m", - "resSig.y", - "PIWitTun.resPro.triEnd" + "resSig.y" }; From bab8eb056cd9bfefb168e3d69c6509cacddf5043 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Tue, 22 Nov 2022 00:03:16 -0500 Subject: [PATCH 050/214] add units to the time related input --- .../PIDWithAutotuning/AutoTuner/AMIGO/PI.mo | 15 ++++++++-- .../PIDWithAutotuning/AutoTuner/AMIGO/PID.mo | 20 ++++++++++--- .../AutoTuner/AMIGO/PIDDerivativeTime.mo | 15 ++++++++-- .../AutoTuner/AMIGO/PIDGain.mo | 10 +++++-- .../AutoTuner/AMIGO/PIDIntegralTime.mo | 15 ++++++++-- .../AutoTuner/AMIGO/PIGain.mo | 10 +++++-- .../AutoTuner/AMIGO/PIIntegralTime.mo | 15 ++++++++-- .../Relay/HalfPeriodRatio.mo | 10 +++++-- .../PIDWithAutotuning/Relay/OnOffPeriod.mo | 14 ++++++++-- .../Relay/ResponseProcess.mo | 14 ++++++++-- .../ControlProcessModel.mo | 28 +++++++++++++++---- .../FirstOrderTimedelayed/Gain.mo | 10 +++++-- .../TimeConstantDelay.mo | 15 ++++++++-- 13 files changed, 153 insertions(+), 38 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PI.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PI.mo index eb7aa905edb..836bc6ae3a0 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PI.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PI.mo @@ -4,18 +4,27 @@ block PI "Identify the parameters of a PI controller" "Gain of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,40},{-100,80}}), iconTransformation(extent={{-140,40},{-100,80}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput T(final min=0) + Buildings.Controls.OBC.CDL.Interfaces.RealInput T( + final quantity="Time", + final unit="s", + min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Time constant of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,-20},{-100,20}}), iconTransformation(extent={{-140,-20},{-100,20}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput L(final min=1E-6) + Buildings.Controls.OBC.CDL.Interfaces.RealInput L( + final quantity="Time", + final unit="s", + min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Time delay of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput k "Control gain signal" annotation (Placement(transformation(extent={{100,40},{140,80}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealOutput Ti + Buildings.Controls.OBC.CDL.Interfaces.RealOutput Ti( + final quantity="Time", + final unit="s", + min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Time constant signal for the integral term" annotation (Placement(transformation(extent={{100,-50},{140,-10}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIGain gain diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo index 585789d7e19..bb982bc8b0c 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo @@ -4,21 +4,33 @@ block PID "Identifies the parameters of a PID controller" "Gain of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,40},{-100,80}}), iconTransformation(extent={{-140,40},{-100,80}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput T(final min=0) + Buildings.Controls.OBC.CDL.Interfaces.RealInput T( + final quantity="Time", + final unit="s", + min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Time constant of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,-20},{-100,20}}), iconTransformation(extent={{-140,-20},{-100,20}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput L(final min=1E-6) + Buildings.Controls.OBC.CDL.Interfaces.RealInput L( + final quantity="Time", + final unit="s", + min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Time delay of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput k "Control gain signal" annotation (Placement(transformation(extent={{100,50},{140,90}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealOutput Ti + Buildings.Controls.OBC.CDL.Interfaces.RealOutput Ti( + final quantity="Time", + final unit="s", + min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Connector for time constant signal for the integral term" annotation (Placement(transformation(extent={{100,-20},{140,20}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealOutput Td + Buildings.Controls.OBC.CDL.Interfaces.RealOutput Td( + final quantity="Time", + final unit="s", + min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Connector for time constant signal for the derivative term" annotation (Placement(transformation(extent={{100,-90},{140,-50}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIDGain gai diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo index 237ab9b9556..ba3d20bd539 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo @@ -1,14 +1,23 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; block PIDDerivativeTime "Identify the derivative time of a PID controller" - Buildings.Controls.OBC.CDL.Interfaces.RealInput T(final min=0) + Buildings.Controls.OBC.CDL.Interfaces.RealInput T( + final quantity="Time", + final unit="s", + min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Time constant of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,40},{-100,80}}), iconTransformation(extent={{-140,40},{-100,80}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput L(final min=1E-6) + Buildings.Controls.OBC.CDL.Interfaces.RealInput L( + final quantity="Time", + final unit="s", + min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Time delay of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealOutput Td + Buildings.Controls.OBC.CDL.Interfaces.RealOutput Td( + final quantity="Time", + final unit="s", + min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Time constant signal for the derivative term" annotation (Placement(transformation(extent={{100,-20},{140,20}}))); Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai1(final k=0.3) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo index 79f5dbe0a6e..8fdeff02675 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo @@ -4,11 +4,17 @@ block PIDGain "Identify the control gain of a PID controller" "Gain of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,40},{-100,80}}), iconTransformation(extent={{-140,40},{-100,80}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput T(final min=0) + Buildings.Controls.OBC.CDL.Interfaces.RealInput T( + final quantity="Time", + final unit="s", + min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Time constant of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,-20},{-100,20}}), iconTransformation(extent={{-140,-20},{-100,20}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput L(final min=1E-6) + Buildings.Controls.OBC.CDL.Interfaces.RealInput L( + final quantity="Time", + final unit="s", + min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Time delay of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo index ff67a834fe6..191b2d035f2 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo @@ -1,14 +1,23 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; block PIDIntegralTime "Identifies the integral time of a PID controller" - Buildings.Controls.OBC.CDL.Interfaces.RealInput T(final min=0) + Buildings.Controls.OBC.CDL.Interfaces.RealInput T( + final quantity="Time", + final unit="s", + min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Time constant of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,40},{-100,80}}), iconTransformation(extent={{-140,40},{-100,80}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput L(final min=1E-6) + Buildings.Controls.OBC.CDL.Interfaces.RealInput L( + final quantity="Time", + final unit="s", + min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Time delay of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealOutput Ti + Buildings.Controls.OBC.CDL.Interfaces.RealOutput Ti( + final quantity="Time", + final unit="s", + min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Time constant signal for the integral term" annotation (Placement(transformation(extent={{100,-20},{140,20}}))); Buildings.Controls.OBC.CDL.Continuous.Add add1 diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo index 1a196946b69..86f22e08542 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo @@ -4,11 +4,17 @@ block PIGain "Identifies the control gain of a PI controller" "Gain of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,40},{-100,80}}), iconTransformation(extent={{-140,40},{-100,80}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput T(final min=1E-6) + Buildings.Controls.OBC.CDL.Interfaces.RealInput T( + final quantity="Time", + final unit="s", + min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Time constant of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,-20},{-100,20}}), iconTransformation(extent={{-140,-20},{-100,20}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput L(final min=1E-6) + Buildings.Controls.OBC.CDL.Interfaces.RealInput L( + final quantity="Time", + final unit="s", + min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Time delay of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo index a83785742f4..01f93d4fae4 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo @@ -1,14 +1,23 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; block PIIntegralTime "Identifies the integral time of a PI controller" - Buildings.Controls.OBC.CDL.Interfaces.RealInput T(final min=1E-6) + Buildings.Controls.OBC.CDL.Interfaces.RealInput T( + final quantity="Time", + final unit="s", + min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Time constant of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,40},{-100,80}}), iconTransformation(extent={{-140,40},{-100,80}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput L(final min=1E-6) + Buildings.Controls.OBC.CDL.Interfaces.RealInput L( + final quantity="Time", + final unit="s", + min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Time delay of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealOutput Ti(final min=1E-6) + Buildings.Controls.OBC.CDL.Interfaces.RealOutput Ti( + final quantity="Time", + final unit="s", + min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Time constant for the integral term" annotation (Placement(transformation(extent={{100,-20},{140,20}}))); Buildings.Controls.OBC.CDL.Continuous.Add add1 diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo index 38ee9ce14fe..75c8146298c 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo @@ -1,11 +1,17 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay; block HalfPeriodRatio "Calculate the half period ratio of a response from a relay controller" - Buildings.Controls.OBC.CDL.Interfaces.RealInput tOn + Buildings.Controls.OBC.CDL.Interfaces.RealInput tOn( + final quantity="Time", + final unit="s", + min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Length for the On period" annotation (Placement(transformation(extent={{-140,40},{-100,80}}), iconTransformation(extent={{-140,40},{-100,80}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput tOff + Buildings.Controls.OBC.CDL.Interfaces.RealInput tOff( + final quantity="Time", + final unit="s", + min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Length for the Off period" annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo index 493c8c3edd2..fc43412919f 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo @@ -1,7 +1,9 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay; block OnOffPeriod "Calculate the lengths of the On period and the Off period" - Buildings.Controls.OBC.CDL.Interfaces.RealInput tim + Buildings.Controls.OBC.CDL.Interfaces.RealInput tim( + final quantity="Time", + final unit="s") "Simulation time" annotation (Placement(transformation(extent={{-140,40},{-100,80}}), iconTransformation(extent={{-140,40},{-100,80}}))); @@ -9,10 +11,16 @@ block OnOffPeriod "Relay switch signal" annotation (Placement(transformation( extent={{-140,-80},{-100,-40}}), iconTransformation(extent={{-140,-80}, {-100,-40}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealOutput tOff + Buildings.Controls.OBC.CDL.Interfaces.RealOutput tOff( + final quantity="Time", + final unit="s", + min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Length for the Off period" annotation (Placement(transformation(extent={{102,-60},{142,-20}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealOutput tOn + Buildings.Controls.OBC.CDL.Interfaces.RealOutput tOn( + final quantity="Time", + final unit="s", + min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Length for the On period" annotation (Placement(transformation(extent={{100,20},{140,60}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler timOn diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo index 8c539e82505..47e4882ad08 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo @@ -9,14 +9,22 @@ block ResponseProcess "Relay switch signal" annotation (Placement(transformation( extent={{-140,-80},{-100,-40}}), iconTransformation(extent={{-140,-80}, {-100,-40}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput tim + Buildings.Controls.OBC.CDL.Interfaces.RealInput tim( + final quantity="Time", + final unit="s") "Simulation time" annotation (Placement(transformation(extent={{-140,40},{-100,80}}), iconTransformation(extent={{-140,40},{-100,80}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealOutput tOn + Buildings.Controls.OBC.CDL.Interfaces.RealOutput tOn( + final quantity="Time", + final unit="s", + min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Length for the On period" annotation (Placement(transformation(extent={{100,60},{140,100}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealOutput tOff + Buildings.Controls.OBC.CDL.Interfaces.RealOutput tOff( + final quantity="Time", + final unit="s", + min=100*Buildings.Controls.OBC.CDL.Constants.eps) "length for the Off period" annotation (Placement(transformation(extent={{100,20},{140,60}}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput triSta diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo index 44f44544dc2..b03c47a9a9e 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo @@ -11,25 +11,43 @@ block ControlProcessModel "Output of a relay controller" annotation (Placement(transformation(extent={{-140,60},{-100,100}}), iconTransformation(extent={{-140,60},{-100,100}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput tOn + Buildings.Controls.OBC.CDL.Interfaces.RealInput tOn( + final quantity="Time", + final unit="s", + min=100*Buildings.Controls.OBC.CDL.Constants.eps + ) "Length for the On period" annotation (Placement(transformation(extent={{-140,20},{-100,60}}), iconTransformation(extent={{-140,20},{-100,60}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput tOff + Buildings.Controls.OBC.CDL.Interfaces.RealInput tOff( + final quantity="Time", + final unit="s", + min=100*Buildings.Controls.OBC.CDL.Constants.eps + ) "Length for the Off period" annotation (Placement(transformation(extent={{-140,-60},{-100,-20}}), iconTransformation(extent={{-140,-60},{-100,-20}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput tau + Buildings.Controls.OBC.CDL.Interfaces.RealInput tau( + final quantity="Time", + final unit="s", + min=100*Buildings.Controls.OBC.CDL.Constants.eps + ) "Normalized time delay" annotation (Placement( transformation(extent={{-140,-100},{-100,-60}}), iconTransformation( extent={{-140,-100},{-100,-60}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput k "Gain" annotation (Placement(transformation(extent={{100,36},{140,86}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealOutput T + Buildings.Controls.OBC.CDL.Interfaces.RealOutput T( + final quantity="Time", + final unit="s", + min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Time constant" annotation (Placement(transformation(extent={{100,-20},{140,20}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealOutput L + Buildings.Controls.OBC.CDL.Interfaces.RealOutput L( + final quantity="Time", + final unit="s", + min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Time delay" annotation (Placement(transformation(extent={{100,-100},{140,-60}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Gain gain( diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Gain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Gain.mo index bc2c32ef906..704453c44be 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Gain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Gain.mo @@ -8,11 +8,17 @@ block Gain "Identifies the gain of a first order time delayed model" "Relay controller output" annotation (Placement(transformation(extent={{-140,60},{-100,100}}), iconTransformation(extent={{-140,60},{-100,100}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput tOn + Buildings.Controls.OBC.CDL.Interfaces.RealInput tOn( + final quantity="Time", + final unit="s", + min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Length for the On period" annotation (Placement(transformation(extent={{-140,-20},{-100,20}}), iconTransformation(extent={{-140,-20},{-100,20}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput tOff + Buildings.Controls.OBC.CDL.Interfaces.RealInput tOff( + final quantity="Time", + final unit="s", + min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Length for the Off period" annotation (Placement(transformation(extent={{-140,-100},{-100,-60}}), iconTransformation(extent={{-140,-100},{-100,-60}}))); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/TimeConstantDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/TimeConstantDelay.mo index 776f90d63fe..0e3e8b2ee73 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/TimeConstantDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/TimeConstantDelay.mo @@ -7,7 +7,10 @@ block TimeConstantDelay "Lower value for the output (assuming the reference output is 0)"; parameter Real deaBan(min=0) = 0.5 "Deadband for holding the output value"; - Buildings.Controls.OBC.CDL.Interfaces.RealInput tOn + Buildings.Controls.OBC.CDL.Interfaces.RealInput tOn( + final quantity="Time", + final unit="s", + min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Length for the On period" annotation (Placement(transformation(extent={{-140,40},{-100,80}}), iconTransformation(extent={{-140,40},{-100,80}}))); @@ -19,10 +22,16 @@ block TimeConstantDelay "Ratio between the time constant and the time delay" annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealOutput T + Buildings.Controls.OBC.CDL.Interfaces.RealOutput T( + final quantity="Time", + final unit="s", + min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Time constant" annotation (Placement(transformation(extent={{100,60},{120,80}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealOutput L + Buildings.Controls.OBC.CDL.Interfaces.RealOutput L( + final quantity="Time", + final unit="s", + min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Time delay" annotation (Placement(transformation(extent={{100,-70},{120,-50}}))); Buildings.Controls.OBC.CDL.Continuous.Abs absk From 4020ba5eac1e7cf30fc0d47377c11c88ff25b6fa Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Mon, 28 Nov 2022 12:36:16 -0800 Subject: [PATCH 051/214] removed BOM --- .../PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo | 2 +- .../OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo | 2 +- .../PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo | 2 +- .../OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo | 2 +- .../PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo | 2 +- .../OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.mo | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo index ba3d20bd539..8c7c00c3302 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo @@ -1,4 +1,4 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; block PIDDerivativeTime "Identify the derivative time of a PID controller" Buildings.Controls.OBC.CDL.Interfaces.RealInput T( final quantity="Time", diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo index 8fdeff02675..81447e4bd12 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo @@ -1,4 +1,4 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; block PIDGain "Identify the control gain of a PID controller" Buildings.Controls.OBC.CDL.Interfaces.RealInput kp(final min=1E-6) "Gain of a first order time-delayed model" diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo index 191b2d035f2..7ac7f2b3e27 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo @@ -1,4 +1,4 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; block PIDIntegralTime "Identifies the integral time of a PID controller" Buildings.Controls.OBC.CDL.Interfaces.RealInput T( final quantity="Time", diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo index 86f22e08542..1ece0a06eea 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo @@ -1,4 +1,4 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; block PIGain "Identifies the control gain of a PI controller" Buildings.Controls.OBC.CDL.Interfaces.RealInput kp(final min=1E-6) "Gain of a first order time-delayed model" diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo index 01f93d4fae4..cd54b1e5b0e 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo @@ -1,4 +1,4 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; block PIIntegralTime "Identifies the integral time of a PI controller" Buildings.Controls.OBC.CDL.Interfaces.RealInput T( final quantity="Time", diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.mo index 3adc6c3c6d2..418a217c1b5 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.mo @@ -1,4 +1,4 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner; package AMIGO "Package with components related to AMIGO tuner" annotation (Documentation(info="

                                From 03c127b1a0cfd5cc94944efcb555551e73218386 Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Thu, 1 Dec 2022 14:33:05 -0800 Subject: [PATCH 052/214] improved html format [ci skip] --- .../OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo index fc43412919f..2653333241e 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo @@ -116,8 +116,10 @@ First implementation

                              ", info="

                              This block processes a relay swtich output signal and calculates

                              -

                              1) the length of the On period (when the relay switch signal becomes True);

                              -

                              2) the length of the Off period (when the relay switch signal becomes False).

                              +
                                +
                              1. the length of the On period (when the relay switch signal becomes True);
                              2. +
                              3. the length of the Off period (when the relay switch signal becomes False).
                              4. +

                              References

                              Josefin Berner (2017) From 6445f67d198501e65232bfcc703de036107bf0d5 Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Thu, 1 Dec 2022 15:33:37 -0800 Subject: [PATCH 053/214] improved connections [ci skip] --- .../PIDWithAutotuning/AutoTuner/AMIGO/PID.mo | 12 +- .../AutoTuner/AMIGO/PIDDerivativeTime.mo | 23 +-- .../AutoTuner/AMIGO/PIDGain.mo | 18 +-- .../AutoTuner/AMIGO/PIDIntegralTime.mo | 53 +++---- .../AutoTuner/AMIGO/PIGain.mo | 58 +++---- .../AutoTuner/AMIGO/PIIntegralTime.mo | 50 +++--- .../PIDWithAutotuning/FirstOrderAMIGO.mo | 147 ++++++++---------- .../PIDWithAutotuning/Relay/Controller.mo | 37 +++-- .../Relay/HalfPeriodRatio.mo | 131 ++++++++-------- .../Relay/NormalizedTimeDelay.mo | 11 +- .../PIDWithAutotuning/Relay/OnOffPeriod.mo | 66 ++++---- 11 files changed, 307 insertions(+), 299 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo index bb982bc8b0c..03f518634fe 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo @@ -20,7 +20,8 @@ block PID "Identifies the parameters of a PID controller" iconTransformation(extent={{-140,-80},{-100,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput k "Control gain signal" - annotation (Placement(transformation(extent={{100,50},{140,90}}))); + annotation (Placement(transformation(extent={{100,30},{140,70}}), + iconTransformation(extent={{100,50},{140,90}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput Ti( final quantity="Time", final unit="s", @@ -32,7 +33,8 @@ block PID "Identifies the parameters of a PID controller" final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Connector for time constant signal for the derivative term" - annotation (Placement(transformation(extent={{100,-90},{140,-50}}))); + annotation (Placement(transformation(extent={{100,-80},{140,-40}}), + iconTransformation(extent={{100,-90},{140,-50}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIDGain gai "Calculate the control gain" annotation (Placement(transformation(extent={{-10,40},{10,60}}))); @@ -44,11 +46,11 @@ block PID "Identifies the parameters of a PID controller" annotation (Placement(transformation(extent={{-10,-70},{10,-50}}))); equation - connect(derTim.Td, Td) annotation (Line(points={{12,-60},{60,-60},{60,-70},{ - 120,-70}}, color={0,0,127})); + connect(derTim.Td, Td) annotation (Line(points={{12,-60},{120,-60}}, + color={0,0,127})); connect(intTim.Ti, Ti) annotation (Line(points={{12,0},{120,0}}, color={0,0,127})); - connect(gai.k, k) annotation (Line(points={{12,50},{94,50},{94,70},{120,70}}, + connect(gai.k, k) annotation (Line(points={{12,50},{120,50}}, color={0,0,127})); connect(intTim.T, gai.T) annotation (Line(points={{-12,6},{-40,6},{-40,50},{-12, 50}}, color={0,0,127})); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo index 8c7c00c3302..f683a84e167 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo @@ -1,4 +1,4 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; block PIDDerivativeTime "Identify the derivative time of a PID controller" Buildings.Controls.OBC.CDL.Interfaces.RealInput T( final quantity="Time", @@ -19,7 +19,8 @@ block PIDDerivativeTime "Identify the derivative time of a PID controller" final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Time constant signal for the derivative term" - annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + annotation (Placement(transformation(extent={{100,-16},{140,24}}), + iconTransformation(extent={{100,-20},{140,20}}))); Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai1(final k=0.3) "Calculate the product of 0.3 and the time delay" annotation (Placement(transformation(extent={{-80,-70},{-60,-50}}))); @@ -31,18 +32,18 @@ block PIDDerivativeTime "Identify the derivative time of a PID controller" annotation (Placement(transformation(extent={{-40,0},{-20,20}}))); Buildings.Controls.OBC.CDL.Continuous.Add add "Calculate the sum of the output of gai1 and the input time constant" - annotation (Placement(transformation(extent={{-40,-60},{-20,-40}}))); + annotation (Placement(transformation(extent={{-40,-64},{-20,-44}}))); Buildings.Controls.OBC.CDL.Continuous.Divide div "Calculate the output of mul divided by the output of add" - annotation (Placement(transformation(extent={{20,-10},{40,10}}))); + annotation (Placement(transformation(extent={{20,-6},{40,14}}))); equation - connect(div.y, Td) annotation (Line(points={{42,0},{120,0}}, color={0,0,127})); + connect(div.y, Td) annotation (Line(points={{42,4},{120,4}}, color={0,0,127})); connect(gai1.u, L) annotation (Line(points={{-82,-60},{-96,-60},{-96,-60},{-120, -60}}, color={0,0,127})); - connect(gai1.y, add.u2) annotation (Line(points={{-58,-60},{-50,-60},{-50,-56}, - {-42,-56}}, color={0,0,127})); - connect(add.u1, T) annotation (Line(points={{-42,-44},{-48,-44},{-48,60},{ + connect(gai1.y, add.u2) annotation (Line(points={{-58,-60},{-42,-60}}, + color={0,0,127})); + connect(add.u1, T) annotation (Line(points={{-42,-48},{-48,-48},{-48,60},{ -120,60}}, color={0,0,127})); connect(gai2.u, T) annotation (Line(points={{-82,40},{-90,40},{-90,60},{-120, 60}}, color={0,0,127})); @@ -50,10 +51,10 @@ equation -60}}, color={0,0,127})); connect(gai2.y, mul.u1) annotation (Line(points={{-58,40},{-52,40},{-52,16},{ -42,16}}, color={0,0,127})); - connect(mul.y, div.u1) annotation (Line(points={{-18,10},{10,10},{10,6},{18,6}}, + connect(mul.y, div.u1) annotation (Line(points={{-18,10},{18,10}}, color={0,0,127})); - connect(div.u2, add.y) annotation (Line(points={{18,-6},{12,-6},{12,-50},{-18, - -50}}, color={0,0,127})); + connect(div.u2, add.y) annotation (Line(points={{18,-2},{12,-2},{12,-54},{-18, + -54}}, color={0,0,127})); annotation (defaultComponentName = "PIDDerTim", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo index 81447e4bd12..c952c004e47 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo @@ -1,8 +1,8 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; block PIDGain "Identify the control gain of a PID controller" Buildings.Controls.OBC.CDL.Interfaces.RealInput kp(final min=1E-6) "Gain of a first order time-delayed model" - annotation (Placement(transformation(extent={{-140,40},{-100,80}}), + annotation (Placement(transformation(extent={{-140,24},{-100,64}}), iconTransformation(extent={{-140,40},{-100,80}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput T( final quantity="Time", @@ -23,7 +23,7 @@ block PIDGain "Identify the control gain of a PID controller" annotation (Placement(transformation(extent={{100,-20},{140,20}}))); Buildings.Controls.OBC.CDL.Continuous.Divide div1 "Calculate the inverse of the input gain" - annotation (Placement(transformation(extent={{-40,40},{-20,80}}))); + annotation (Placement(transformation(extent={{-40,40},{-20,60}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.Constant const(final k=1) "Constant parameter" annotation (Placement(transformation(extent={{-80,70},{-60,90}}))); @@ -41,10 +41,10 @@ block PIDGain "Identify the control gain of a PID controller" annotation (Placement(transformation(extent={{60,-10},{80,10}}))); equation - connect(div1.u2, kp) annotation (Line(points={{-40,48},{-94,48},{-94,60},{-120, - 60}}, color={0,0,127})); - connect(const.y, div1.u1) annotation (Line(points={{-58,80},{-50,80},{-50,72}, - {-40,72}}, color={0,0,127})); + connect(div1.u2, kp) annotation (Line(points={{-42,44},{-120,44}}, + color={0,0,127})); + connect(const.y, div1.u1) annotation (Line(points={{-58,80},{-50,80},{-50,56}, + {-42,56}}, color={0,0,127})); connect(div2.u2, L) annotation (Line(points={{-62,-36},{-80,-36},{-80,-60},{ -120,-60}}, color={0,0,127})); connect(div2.u1, T) annotation (Line(points={{-62,-24},{-80,-24},{-80,0},{ @@ -54,8 +54,8 @@ equation connect(gai1.y, add.u) annotation (Line(points={{2,-30},{18,-30}}, color={0,0,127})); connect(mul.y, k) annotation (Line(points={{82,0},{120,0}}, color={0,0,127})); - connect(div1.y, mul.u1) annotation (Line(points={{-16,60},{42,60},{42,6},{58,6}}, - color={0,0,127})); + connect(div1.y, mul.u1) annotation (Line(points={{-18,50},{42,50},{42,6},{58, + 6}}, color={0,0,127})); connect(mul.u2, add.y) annotation (Line(points={{58,-6},{48,-6},{48,-30},{42, -30}}, color={0,0,127})); annotation (defaultComponentName = "PIDGai", diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo index 7ac7f2b3e27..d84d1d8fad5 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo @@ -1,4 +1,4 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; block PIDIntegralTime "Identifies the integral time of a PID controller" Buildings.Controls.OBC.CDL.Interfaces.RealInput T( final quantity="Time", @@ -22,51 +22,52 @@ block PIDIntegralTime "Identifies the integral time of a PID controller" annotation (Placement(transformation(extent={{100,-20},{140,20}}))); Buildings.Controls.OBC.CDL.Continuous.Add add1 "Calculate the sum of the time delay and the product of 0.1 and the input time constant" - annotation (Placement(transformation(extent={{-40,10},{-20,30}}))); + annotation (Placement(transformation(extent={{-20,-40},{0,-20}}))); Buildings.Controls.OBC.CDL.Continuous.Add add2 "Calculate the sum of the output of gai1 and the product of 0.8 and the input time constant" - annotation (Placement(transformation(extent={{-40,-30},{-20,-10}}))); + annotation (Placement(transformation(extent={{-20,10},{0,30}}))); Buildings.Controls.OBC.CDL.Continuous.Divide div "Calculate the output of add3 divided by the output of add1" - annotation (Placement(transformation(extent={{0,10},{20,-10}}))); + annotation (Placement(transformation(extent={{20,-10},{40,10}}))); Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai1(final k=0.4) "Calculate the product of 0.4 and the time delay" - annotation (Placement(transformation(extent={{-80,-50},{-60,-30}}))); + annotation (Placement(transformation(extent={{-80,-20},{-60,0}}))); Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai2(final k=0.8) "Calculate the product of 0.8 and the input time constant" - annotation (Placement(transformation(extent={{-80,30},{-60,50}}))); + annotation (Placement(transformation(extent={{-80,50},{-60,70}}))); Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai3(final k=0.1) "Calculate the product of 0.1 and the input time constant" - annotation (Placement(transformation(extent={{-80,68},{-60,88}}))); + annotation (Placement(transformation(extent={{-80,10},{-60,30}}))); Buildings.Controls.OBC.CDL.Continuous.Multiply mul "Calculate the product of the output of div and the time delay" - annotation (Placement(transformation(extent={{40,-10},{60,10}}))); + annotation (Placement(transformation(extent={{60,-10},{80,10}}))); equation - connect(gai1.u, L) annotation (Line(points={{-82,-40},{-90,-40},{-90,-60},{ + connect(gai1.u, L) annotation (Line(points={{-82,-10},{-90,-10},{-90,-60},{ -120,-60}}, color={0,0,127})); - connect(gai3.u, T) annotation (Line(points={{-82,78},{-90,78},{-90,60},{-120, + connect(gai3.u, T) annotation (Line(points={{-82,20},{-90,20},{-90,60},{-120, 60}}, color={0,0,127})); - connect(gai2.u, T) annotation (Line(points={{-82,40},{-90,40},{-90,60},{-120, - 60}}, color={0,0,127})); - connect(gai1.y, add2.u2) annotation (Line(points={{-58,-40},{-48,-40},{-48, - -26},{-42,-26}}, color={0,0,127})); - connect(add2.u1, gai2.y) annotation (Line(points={{-42,-14},{-48,-14},{-48,40}, - {-58,40}}, color={0,0,127})); - connect(add1.u2, L) annotation (Line(points={{-42,14},{-54,14},{-54,-60},{ + connect(gai2.u, T) annotation (Line(points={{-82,60},{-120,60}}, + color={0,0,127})); + connect(gai1.y, add2.u2) annotation (Line(points={{-58,-10},{-30,-10},{-30,14}, + {-22,14}}, color={0,0,127})); + connect(add2.u1, gai2.y) annotation (Line(points={{-22,26},{-30,26},{-30,60}, + {-58,60}}, color={0,0,127})); + connect(add1.u2, L) annotation (Line(points={{-22,-36},{-90,-36},{-90,-60},{ -120,-60}}, color={0,0,127})); - connect(add1.u1, gai3.y) annotation (Line(points={{-42,26},{-54,26},{-54,78}, - {-58,78}}, color={0,0,127})); + connect(add1.u1, gai3.y) annotation (Line(points={{-22,-24},{-40,-24},{-40,20}, + {-58,20}}, color={0,0,127})); connect(div.y, mul.u1) - annotation (Line(points={{22,0},{30,0},{30,6},{38,6}}, color={0,0,127})); - connect(mul.u2, L) annotation (Line(points={{38,-6},{24,-6},{24,-60},{-120,-60}}, + annotation (Line(points={{42,0},{48,0},{48,6},{58,6}}, color={0,0,127})); + connect(mul.u2, L) annotation (Line(points={{58,-6},{50,-6},{50,-60},{-120, + -60}}, color={0,0,127})); connect(mul.y, Ti) - annotation (Line(points={{62,0},{120,0}}, color={0,0,127})); - connect(div.u2, add1.y) annotation (Line(points={{-2,6},{-10,6},{-10,20},{-18, - 20}}, color={0,0,127})); - connect(div.u1, add2.y) annotation (Line(points={{-2,-6},{-10,-6},{-10,-20},{-18, - -20}}, color={0,0,127})); + annotation (Line(points={{82,0},{120,0}}, color={0,0,127})); + connect(div.u2, add1.y) annotation (Line(points={{18,-6},{10,-6},{10,-30},{2, + -30}},color={0,0,127})); + connect(div.u1, add2.y) annotation (Line(points={{18,6},{10,6},{10,20},{2,20}}, + color={0,0,127})); annotation (defaultComponentName = "PIDIntTim", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo index 1ece0a06eea..4896abea3db 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo @@ -1,4 +1,4 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; block PIGain "Identifies the control gain of a PI controller" Buildings.Controls.OBC.CDL.Interfaces.RealInput kp(final min=1E-6) "Gain of a first order time-delayed model" @@ -16,7 +16,7 @@ block PIGain "Identifies the control gain of a PI controller" final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Time delay of a first order time-delayed model" - annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), + annotation (Placement(transformation(extent={{-140,-96},{-100,-56}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput k "Control gain of a PI controller" @@ -29,19 +29,19 @@ block PIGain "Identifies the control gain of a PI controller" annotation (Placement(transformation(extent={{20,20},{40,40}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.Constant const1(final k=0.35) "Constant parameter 1 (value 0.35)" - annotation (Placement(transformation(extent={{-10,-90},{10,-70}}))); + annotation (Placement(transformation(extent={{0,-90},{20,-70}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.Constant const2(final k=0.15) "Constant parameter 2 (value 0.15)" - annotation (Placement(transformation(extent={{-100,70},{-80,90}}))); + annotation (Placement(transformation(extent={{-80,70},{-60,90}}))); Buildings.Controls.OBC.CDL.Continuous.Divide div1 "Calculate 0.15 divided by the control gain" - annotation (Placement(transformation(extent={{-60,40},{-40,60}}))); + annotation (Placement(transformation(extent={{-40,40},{-20,60}}))); Buildings.Controls.OBC.CDL.Continuous.Divide div2 "Calculate the output of mul2 divided by the output of mul1" - annotation (Placement(transformation(extent={{20,-40},{40,-60}}))); + annotation (Placement(transformation(extent={{20,-60},{40,-40}}))); Buildings.Controls.OBC.CDL.Continuous.Divide div3 "Calculate the time constant divided by the output of mul2" - annotation (Placement(transformation(extent={{-20,20},{0,0}}))); + annotation (Placement(transformation(extent={{-20,0},{0,20}}))); Buildings.Controls.OBC.CDL.Continuous.Multiply mul1 "Calculate the square value of the sum of the time constant and the time delay" annotation (Placement(transformation(extent={{-20,-40},{0,-20}}))); @@ -59,44 +59,46 @@ block PIGain "Identifies the control gain of a PI controller" annotation (Placement(transformation(extent={{50,-60},{70,-40}}))); equation - connect(div1.u2, kp) annotation (Line(points={{-62,44},{-80,44},{-80,60},{ + connect(div1.u2, kp) annotation (Line(points={{-42,44},{-80,44},{-80,60},{ -120,60}}, color={0,0,127})); - connect(add2.u1, div1.y) annotation (Line(points={{18,36},{-20,36},{-20,50},{ - -38,50}}, color={0,0,127})); - connect(add1.u1, T) annotation (Line(points={{-62,-24},{-80,-24},{-80,0},{ + connect(add2.u1, div1.y) annotation (Line(points={{18,36},{0,36},{0,50},{-18, + 50}}, color={0,0,127})); + connect(add1.u1, T) annotation (Line(points={{-62,-24},{-90,-24},{-90,0},{ -120,0}}, color={0,0,127})); - connect(add1.u2, L) annotation (Line(points={{-62,-36},{-80,-36},{-80,-60},{ - -120,-60}}, color={0,0,127})); + connect(add1.u2, L) annotation (Line(points={{-62,-36},{-80,-36},{-80,-76},{ + -120,-76}}, color={0,0,127})); connect(mul4.u1, T) annotation (Line(points={{-62,-64},{-90,-64},{-90,0},{-120, 0}}, color={0,0,127})); - connect(mul4.u2, L) annotation (Line(points={{-62,-76},{-94,-76},{-94,-60},{-120, - -60}}, color={0,0,127})); + connect(mul4.u2, L) annotation (Line(points={{-62,-76},{-120,-76}}, + color={0,0,127})); connect(mul1.u1, add1.y) annotation (Line(points={{-22,-24},{-32,-24},{-32, -30},{-38,-30}}, color={0,0,127})); connect(mul1.u2, add1.y) annotation (Line(points={{-22,-36},{-32,-36},{-32, -30},{-38,-30}}, color={0,0,127})); - connect(div2.u2, mul1.y) annotation (Line(points={{18,-44},{8,-44},{8,-30},{2, - -30}}, color={0,0,127})); - connect(div2.u1, mul4.y) annotation (Line(points={{18,-56},{-20,-56},{-20,-70}, + connect(div2.u2, mul1.y) annotation (Line(points={{18,-56},{10,-56},{10,-30}, + {2,-30}}, + color={0,0,127})); + connect(div2.u1, mul4.y) annotation (Line(points={{18,-44},{-20,-44},{-20,-70}, {-38,-70}}, color={0,0,127})); - connect(mul2.u1, kp) annotation (Line(points={{-62,26},{-72,26},{-72,44},{-80, - 44},{-80,60},{-120,60}}, color={0,0,127})); - connect(mul2.u2, L) annotation (Line(points={{-62,14},{-72,14},{-72,-36},{-80, - -36},{-80,-60},{-120,-60}}, color={0,0,127})); - connect(div3.u2, mul2.y) annotation (Line(points={{-22,16},{-30,16},{-30,20}, - {-38,20}}, color={0,0,127})); - connect(div3.u1, T) annotation (Line(points={{-22,4},{-52,4},{-52,0},{-120,0}}, + connect(mul2.u1, kp) annotation (Line(points={{-62,26},{-80,26},{-80,60},{ + -120,60}}, color={0,0,127})); + connect(mul2.u2, L) annotation (Line(points={{-62,14},{-80,14},{-80,-76},{ + -120,-76}}, color={0,0,127})); + connect(div3.u2, mul2.y) annotation (Line(points={{-22,4},{-30,4},{-30,20},{ + -38,20}}, color={0,0,127})); + connect(div3.u1, T) annotation (Line(points={{-22,16},{-34,16},{-34,0},{-120, + 0}}, color={0,0,127})); connect(mul3.u1, div3.y) annotation (Line(points={{18,6},{10,6},{10,10},{2,10}}, color={0,0,127})); - connect(const2.y, div1.u1) annotation (Line(points={{-78,80},{-68,80},{-68,56}, - {-62,56}}, color={0,0,127})); + connect(const2.y, div1.u1) annotation (Line(points={{-58,80},{-50,80},{-50,56}, + {-42,56}}, color={0,0,127})); connect(add2.u2, mul3.y) annotation (Line(points={{18,24},{10,24},{10,16},{48, 16},{48,0},{42,0}}, color={0,0,127})); connect(add2.y, k) annotation (Line(points={{42,30},{60,30},{60,0},{120,0}}, color={0,0,127})); connect(div2.y, sub.u2) annotation (Line(points={{42,-50},{44,-50},{44,-56},{ 48,-56}}, color={0,0,127})); - connect(const1.y, sub.u1) annotation (Line(points={{12,-80},{46,-80},{46,-44}, + connect(const1.y, sub.u1) annotation (Line(points={{22,-80},{46,-80},{46,-44}, {48,-44}}, color={0,0,127})); connect(sub.y, mul3.u2) annotation (Line(points={{72,-50},{80,-50},{80,-22},{ 10,-22},{10,-6},{18,-6}}, color={0,0,127})); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo index cd54b1e5b0e..c71842fb78e 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo @@ -1,4 +1,4 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; block PIIntegralTime "Identifies the integral time of a PI controller" Buildings.Controls.OBC.CDL.Interfaces.RealInput T( final quantity="Time", @@ -19,19 +19,20 @@ block PIIntegralTime "Identifies the integral time of a PI controller" final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Time constant for the integral term" - annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + annotation (Placement(transformation(extent={{100,-22},{140,18}}), + iconTransformation(extent={{100,-20},{140,20}}))); Buildings.Controls.OBC.CDL.Continuous.Add add1 "Calculate the sum of the output of mul3 and the output of gai1" - annotation (Placement(transformation(extent={{0,20},{20,40}}))); + annotation (Placement(transformation(extent={{0,44},{20,64}}))); Buildings.Controls.OBC.CDL.Continuous.Add add2 "Calculate the sum of 0.35 and the output of div" - annotation (Placement(transformation(extent={{60,-10},{80,10}}))); + annotation (Placement(transformation(extent={{60,-12},{80,8}}))); Buildings.Controls.OBC.CDL.Continuous.Add add3 "Calculate the sum of the output of add1 and the output of mul2" annotation (Placement(transformation(extent={{40,-80},{60,-60}}))); Buildings.Controls.OBC.CDL.Continuous.Divide div "Calculate the output of gai3 divided by the output of add3" - annotation (Placement(transformation(extent={{20,80},{40,60}}))); + annotation (Placement(transformation(extent={{0,-6},{20,14}}))); Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai1(final k=12) "Mutiple the time delay by 12" annotation (Placement(transformation(extent={{-40,-70},{-20,-50}}))); @@ -59,9 +60,10 @@ block PIIntegralTime "Identifies the integral time of a PI controller" equation connect(add2.y, Ti) - annotation (Line(points={{82,0},{120,0}}, color={0,0,127})); - connect(gai4.u, L) annotation (Line(points={{-82,-20},{-88,-20},{-88,-60},{ - -120,-60}}, color={0,0,127})); + annotation (Line(points={{82,-2},{120,-2}}, + color={0,0,127})); + connect(gai4.u, L) annotation (Line(points={{-82,-20},{-92,-20},{-92,-60},{-120, + -60}}, color={0,0,127})); connect(mul3.u1, T) annotation (Line(points={{-62,66},{-90,66},{-90,60},{-120, 60}}, color={0,0,127})); connect(mul3.u2, T) annotation (Line(points={{-62,54},{-90,54},{-90,60},{-120, @@ -76,31 +78,31 @@ equation -120,-60}}, color={0,0,127})); connect(gai2.y, mul2.u2) annotation (Line(points={{-58,-80},{-6,-80},{-6,-56}, {-2,-56}}, color={0,0,127})); - connect(mul2.u1, L) annotation (Line(points={{-2,-44},{-50,-44},{-50,-60},{-120, + connect(mul2.u1, L) annotation (Line(points={{-2,-44},{-92,-44},{-92,-60},{-120, -60}}, color={0,0,127})); connect(gai3.u, mul3.y) annotation (Line(points={{-18,80},{-12,80},{-12,60},{ -38,60}}, color={0,0,127})); - connect(add1.u1, mul3.y) annotation (Line(points={{-2,36},{-12,36},{-12,60},{ - -38,60}}, color={0,0,127})); - connect(mul1.y, add1.u2) annotation (Line(points={{-18,30},{-12,30},{-12,24},{ - -2,24}}, color={0,0,127})); + connect(add1.u1, mul3.y) annotation (Line(points={{-2,60},{-38,60}}, + color={0,0,127})); + connect(mul1.y, add1.u2) annotation (Line(points={{-18,30},{-10,30},{-10,48}, + {-2,48}}, color={0,0,127})); connect(mul2.y, add3.u2) annotation (Line(points={{22,-50},{30,-50},{30,-76}, {38,-76}}, color={0,0,127})); - connect(add3.u1, add1.y) annotation (Line(points={{38,-64},{32,-64},{32,30},{ - 22,30}}, color={0,0,127})); + connect(add3.u1, add1.y) annotation (Line(points={{38,-64},{32,-64},{32,54},{ + 22,54}}, color={0,0,127})); connect(add3.y, div.u2) annotation (Line(points={{62,-70},{80,-70},{80,-24},{ - -8,-24},{-8,76},{18,76}}, + -8,-24},{-8,-2},{-2,-2}}, color={0,0,127})); connect(div.y, add2.u1) - annotation (Line(points={{42,70},{50,70},{50,6},{58,6}}, color={0,0,127})); - connect(add2.u2, gai4.y) annotation (Line(points={{58,-6},{48,-6},{48,-20},{ + annotation (Line(points={{22,4},{58,4}}, color={0,0,127})); + connect(add2.u2, gai4.y) annotation (Line(points={{58,-8},{48,-8},{48,-20},{ -58,-20}}, color={0,0,127})); - connect(mul4.u2, L) annotation (Line(points={{-82,4},{-88,4},{-88,-60},{-120, - -60}}, color={0,0,127})); - connect(gai3.y, mul4.u1) annotation (Line(points={{-42,80},{-94,80},{-94,24},{ - -88,24},{-88,16},{-82,16}}, color={0,0,127})); - connect(mul4.y, div.u1) annotation (Line(points={{-58,10},{-4,10},{-4,64},{18, - 64}}, color={0,0,127})); + connect(mul4.u2, L) annotation (Line(points={{-82,4},{-92,4},{-92,-60},{-120,-60}}, + color={0,0,127})); + connect(gai3.y, mul4.u1) annotation (Line(points={{-42,80},{-94,80},{-94,16},{ + -82,16}}, color={0,0,127})); + connect(mul4.y, div.u1) annotation (Line(points={{-58,10},{-2,10}}, + color={0,0,127})); annotation (defaultComponentName = "PIIntTim", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index 40153a8ec71..75ebdbac232 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -32,38 +32,34 @@ block FirstOrderAMIGO annotation (Placement(transformation(extent={{-140,-20},{-100,20}}),iconTransformation(extent={{-140,-20},{-100,20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput u_m "Connector for measurement input signal" - annotation (Placement(transformation(origin={0,-120},extent={{20,-20},{-20,20}},rotation=270),iconTransformation(extent={{20,-20},{-20,20}},rotation=270,origin={0,-120}))); + annotation (Placement(transformation(origin={30,-120}, extent={{20,-20},{-20,20}},rotation=270), + iconTransformation(extent={{20,-20},{-20,20}},rotation=270,origin={0,-120}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanInput tri - "Resets the controller output when trigger becomes true" annotation ( - Placement(transformation( - extent={{-20,-20},{20,20}}, - rotation=90, - origin={-60,-120}), iconTransformation( - extent={{-20,-20},{20,20}}, - rotation=90, - origin={-60,-120}))); + "Resets the controller output when trigger becomes true" + annotation (Placement(transformation(extent={{-20,-20},{20,20}},rotation=90,origin={4,-120}), + iconTransformation(extent={{-20,-20},{20,20}},rotation=90,origin={-60,-120}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput y "Connector for actuator output signal" - annotation (Placement(transformation(extent={{100,-20},{140,20}}),iconTransformation(extent={{100,-20},{140,20}}))); + annotation (Placement(transformation(extent={{100,-40},{140,0}}), iconTransformation(extent={{100,-20},{140,20}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Controller rel( final yHig=yHig, final yLow=yLow, final deaBan=deaBan) "A relay controller" - annotation (Placement(transformation(extent={{22,20},{42,40}}))); + annotation (Placement(transformation(extent={{20,0},{40,20}}))); Buildings.Controls.OBC.Utilities.PIDWithInputGains PID( controllerType=controllerType) "A PID controller" - annotation (Placement(transformation(extent={{22,-40},{42,-20}}))); + annotation (Placement(transformation(extent={{0,-50},{20,-30}}))); Buildings.Controls.OBC.CDL.Continuous.Switch swi "Switch between a PID controller and a relay controller" - annotation (Placement(transformation(extent={{62,10},{82,-10}}))); + annotation (Placement(transformation(extent={{60,-30},{80,-10}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samk(y_start=k_start) "Recording the control gain" annotation (Placement(transformation(extent={{-40,-10},{-20,-30}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samTi(y_start=Ti_start) "Recording the integral time" - annotation (Placement(transformation(extent={{-80,-38},{-60,-58}}))); + annotation (Placement(transformation(extent={{-80,-40},{-60,-60}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samTd(y_start=Td_start) if with_D "Recording the derivative time" annotation (Placement(transformation(extent={{-40,-60},{-20,-80}}))); @@ -83,7 +79,7 @@ block FirstOrderAMIGO final yHig=yHig - yRef, final yLow=yRef + yLow) "A block to process the response from the relay controller" - annotation (Placement(transformation(extent={{20,40},{0,60}}))); + annotation (Placement(transformation(extent={{20,30},{0,50}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.ModelTime modTim "Simulation time" annotation (Placement(transformation(extent={{80,60},{60,80}}))); @@ -102,80 +98,75 @@ initial equation "Only PI and PID are supported"); equation - connect(PID.u_s, u_s) annotation (Line(points={{20,-30},{8,-30},{8,0},{-120,0}}, - color={0,0,127})); - connect(rel.u_s, u_s) annotation (Line(points={{20,30},{-80,30},{-80,0},{-120, + connect(PID.u_s, u_s) annotation (Line(points={{-2,-40},{-54,-40},{-54,0},{-120, 0}}, color={0,0,127})); - connect(PID.trigger, tri) annotation (Line(points={{26,-42},{26,-92},{-60,-92}, - {-60,-120}}, color={255,0,255})); - connect(swi.y, y) annotation (Line(points={{84,0},{96,0},{96,0},{120,0}}, - color={0,0,127})); - connect(samk.y,PID. k) annotation (Line(points={{-18,-20},{-16,-20},{-16,-22}, - {20,-22}}, color={0,0,127})); - connect(PID.Ti, samTi.y) annotation (Line(points={{20,-26},{-14,-26},{-14,-48}, - {-58,-48}}, color={0,0,127})); - connect(samTd.y,PID. Td) annotation (Line(points={{-18,-70},{14,-70},{14,-34}, - {20,-34}}, color={0,0,127})); - connect(rel.u_m, u_m) annotation (Line(points={{32,18},{32,6},{46,6},{46,-80}, - {0,-80},{0,-120}}, color={0,0,127})); - connect(PID.u_m, u_m) annotation (Line(points={{32,-42},{32,-80},{0,-80},{0,-120}}, - color={0,0,127})); + connect(rel.u_s, u_s) annotation (Line(points={{18,10},{0,10},{0,0},{-120,0}}, + color={0,0,127})); + connect(PID.trigger, tri) annotation (Line(points={{4,-52},{4,-120}}, color={255,0,255})); + connect(samk.y,PID. k) annotation (Line(points={{-18,-20},{-14,-20},{-14,-32}, + {-2,-32}}, color={0,0,127})); + connect(PID.Ti, samTi.y) annotation (Line(points={{-2,-36},{-14,-36},{-14,-50}, + {-58,-50}}, color={0,0,127})); + connect(samTd.y,PID. Td) annotation (Line(points={{-18,-70},{-6,-70},{-6,-44}, + {-2,-44}}, color={0,0,127})); + connect(rel.u_m, u_m) annotation (Line(points={{30,-2},{30,-120}}, color={0,0,127})); connect(swi.u3, rel.y) - annotation (Line(points={{60,8},{52,8},{52,36},{44,36}}, color={0,0,127})); - connect(swi.u1,PID. y) annotation (Line(points={{60,-8},{54,-8},{54,-30},{44, - -30}}, color={0,0,127})); - connect(resPro.triEnd, swi.u2) annotation (Line(points={{-2,42},{-2,10},{48, - 10},{48,0},{60,0}}, color={255,0,255})); - connect(samk.trigger, swi.u2) annotation (Line(points={{-30,-8},{-30,10},{48,10}, - {48,0},{60,0}}, color={255,0,255})); - connect(samTi.trigger, swi.u2) annotation (Line(points={{-70,-36},{-70,10},{48, - 10},{48,0},{60,0}}, color={255,0,255})); - connect(samTd.trigger, swi.u2) annotation (Line(points={{-30,-58},{-30,-42},{-56, - -42},{-56,10},{48,10},{48,0},{60,0}}, color={255,0,255})); - connect(resPro.On, rel.yOn) annotation (Line(points={{22,44},{26,44},{26,52}, - {58,52},{58,24},{44,24}}, color={255,0,255})); - connect(modTim.y, resPro.tim) annotation (Line(points={{58,70},{28,70},{28,56}, - {22,56}}, color={0,0,127})); - connect(resPro.tau, conProMod.tau) annotation (Line(points={{-2,50},{-12,50}, - {-12,42},{-18,42}},color={0,0,127})); - connect(conProMod.tOff, resPro.tOff) annotation (Line(points={{-18,46},{-14, - 46},{-14,54},{-2,54}}, - color={0,0,127})); - connect(resPro.tOn, conProMod.tOn) annotation (Line(points={{-2,58},{-8,58},{ - -8,56},{-16,56},{-16,54},{-18,54}}, - color={0,0,127})); - connect(rel.yErr, conProMod.u) annotation (Line(points={{44,30},{50,30},{50, - 72},{-10,72},{-10,58},{-18,58}}, - color={0,0,127})); + annotation (Line(points={{58,-28},{52,-28},{52,16},{42,16}}, color={0,0,127})); + connect(swi.u1,PID. y) annotation (Line(points={{58,-12},{40,-12},{40,-40},{22, + -40}}, color={0,0,127})); + connect(resPro.On, rel.yOn) annotation (Line(points={{22,34},{58,34},{58,4},{42, + 4}}, color={255,0,255})); + connect(modTim.y, resPro.tim) annotation (Line(points={{58,70},{40,70},{40,46}, + {22,46}}, color={0,0,127})); + connect(resPro.tau, conProMod.tau) annotation (Line(points={{-2,40},{-10,40},{ + -10,42},{-18,42}}, color={0,0,127})); + connect(conProMod.tOff, resPro.tOff) annotation (Line(points={{-18,46},{-10,46}, + {-10,44},{-2,44}}, color={0,0,127})); + connect(resPro.tOn, conProMod.tOn) annotation (Line(points={{-2,48},{-10,48},{ + -10,54},{-18,54}}, color={0,0,127})); + connect(rel.yErr, conProMod.u) annotation (Line(points={{42,10},{48,10},{48,58}, + {-18,58}}, color={0,0,127})); connect(PIDPar.kp, conProMod.k) - annotation (Line(points={{-58,56},{-50,56},{-50,56.1},{-42,56.1}}, - color={0,0,127})); + annotation (Line(points={{-58,56},{-50,56},{-50,56.1},{-42,56.1}}, color={0,0,127})); connect(PIDPar.T, conProMod.T) annotation (Line(points={{-58,50},{-42,50}}, color={0,0,127})); - connect(PIDPar.L, conProMod.L) annotation (Line(points={{-58,44},{-44,44},{ - -44,42},{-42,42}}, - color={0,0,127})); + connect(PIDPar.L, conProMod.L) annotation (Line(points={{-58,44},{-54,44},{-54, + 42},{-42,42}}, color={0,0,127})); connect(PIDPar.k, samk.u) annotation (Line(points={{-82,57},{-94,57},{-94,-20}, {-42,-20}}, color={0,0,127})); - connect(PIDPar.Ti, samTi.u) annotation (Line(points={{-82,50},{-88,50},{-88,-48}, - {-82,-48}}, color={0,0,127})); - connect(samTd.u,PIDPar. Td) annotation (Line(points={{-42,-70},{-48,-70},{-48, - 34},{-82,34},{-82,43},{-82,43}}, color={0,0,127})); - connect(PIPar.kp, conProMod.k) annotation (Line(points={{-58,86},{-50,86},{ - -50,56.1},{-42,56.1}}, - color={0,0,127})); - connect(PIPar.T, conProMod.T) annotation (Line(points={{-58,80},{-52,80},{-52, + connect(PIDPar.Ti, samTi.u) annotation (Line(points={{-82,50},{-90,50},{-90,-50}, + {-82,-50}}, color={0,0,127})); + connect(PIPar.kp, conProMod.k) annotation (Line(points={{-58,86},{-46,86},{ + -46,56.1},{-42,56.1}}, color={0,0,127})); + connect(PIPar.T, conProMod.T) annotation (Line(points={{-58,80},{-50,80},{-50, 50},{-42,50}}, color={0,0,127})); connect(PIPar.L, conProMod.L) annotation (Line(points={{-58,74},{-54,74},{-54, - 44},{-44,44},{-44,42},{-42,42}}, color={0,0,127})); + 42},{-42,42}}, color={0,0,127})); connect(PIPar.k, samk.u) annotation (Line(points={{-82,86},{-94,86},{-94,-20}, {-42,-20}}, color={0,0,127})); - connect(PIPar.Ti, samTi.u) annotation (Line(points={{-82,77},{-88,77},{-88,-48}, - {-82,-48}}, color={0,0,127})); - connect(resPro.triEnd, conProMod.triEnd) annotation (Line(points={{-2,42},{-8, - 42},{-8,32},{-36,32},{-36,38}}, color={255,0,255})); - connect(resPro.triSta, conProMod.triSta) annotation (Line(points={{-2,46},{ - -10,46},{-10,34},{-24,34},{-24,38}}, color={255,0,255})); + connect(PIPar.Ti, samTi.u) annotation (Line(points={{-82,77},{-90,77},{-90,-50}, + {-82,-50}}, color={0,0,127})); + connect(resPro.triEnd, conProMod.triEnd) annotation (Line(points={{-2,32},{-36, + 32},{-36,38}}, color={255,0,255})); + connect(resPro.triSta, conProMod.triSta) annotation (Line(points={{-2,36},{-24, + 36},{-24,38}}, color={255,0,255})); + connect(resPro.triEnd, swi.u2) annotation (Line(points={{-2,32},{-10,32},{-10, + -20},{58,-20}}, + color={255,0,255})); + connect(resPro.triEnd, samTi.trigger) annotation (Line(points={{-2,32},{-10, + 32},{-10,10},{-70,10},{-70,-38}}, + color={255,0,255})); + connect(resPro.triEnd, samk.trigger) annotation (Line(points={{-2,32},{-10,32}, + {-10,10},{-30,10},{-30,-8}},color={255,0,255})); + connect(resPro.triEnd, samTd.trigger) annotation (Line(points={{-2,32},{-10, + 32},{-10,-44},{-30,-44},{-30,-58}}, + color={255,0,255})); + connect(PIDPar.Td, samTd.u) annotation (Line(points={{-82,43},{-86,43},{-86,-70}, + {-42,-70}}, color={0,0,127})); + connect(swi.y, y) + annotation (Line(points={{82,-20},{120,-20}}, color={0,0,127})); + connect(u_m, PID.u_m) annotation (Line(points={{30,-120},{30,-60},{10,-60},{10, + -52}}, color={0,0,127})); annotation (Documentation(info="

                              This blocks implements a AMIGO PID tuning method and the control process is approximated with a first order delay process. diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo index 09e0229727a..ecadf0adfa9 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo @@ -23,7 +23,8 @@ block Controller annotation (Placement(transformation(extent={{100,-80},{140,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput yErr "Control error" - annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + annotation (Placement(transformation(extent={{100,10},{140,50}}), + iconTransformation(extent={{100,-20},{140,20}}))); Buildings.Controls.OBC.CDL.Logical.OnOffController greMeaSet( final bandwidth=deaBan*2, final pre_y_start=true) @@ -35,14 +36,14 @@ block Controller Buildings.Controls.OBC.CDL.Continuous.Sources.Constant yHigSig( final k=yHig) "Higher value for the output" - annotation (Placement(transformation(extent={{-40,40},{-20,60}}))); + annotation (Placement(transformation(extent={{-20,50},{0,70}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.Constant yLowSig( final k=-yLow) "Lower value for the output" - annotation (Placement(transformation(extent={{-40,-50},{-20,-30}}))); + annotation (Placement(transformation(extent={{-20,-50},{0,-30}}))); Buildings.Controls.OBC.CDL.Continuous.Subtract conErr "Control error (set point - measurement)" - annotation (Placement(transformation(extent={{-76,10},{-56,30}}))); + annotation (Placement(transformation(extent={{-60,10},{-40,30}}))); initial equation assert( @@ -57,24 +58,26 @@ equation annotation (Line(points={{-22,6},{-40,6},{-40,0},{-120,0}}, color={0,0,127})); connect(greMeaSet.u, u_m) - annotation (Line(points={{-22,-6},{-64,-6},{-64,-94}, - {0,-94},{0,-120}}, color={0,0,127})); + annotation (Line(points={{-22,-6},{-70,-6},{-70,-94},{0,-94},{0,-120}}, + color={0,0,127})); connect(yHigSig.y, swi.u1) - annotation (Line(points={{-18,50},{50,50},{50,8},{58, - 8}}, color={0,0,127})); + annotation (Line(points={{2,60},{20,60},{20,8},{58,8}}, + color={0,0,127})); connect(yLowSig.y, swi.u3) - annotation (Line(points={{-18,-40},{50,-40},{50,-8}, - {58,-8}}, color={0,0,127})); - connect(yOn, swi.u2) annotation (Line(points={{120,-60},{52,-60},{52,0},{58,0}}, + annotation (Line(points={{2,-40},{20,-40},{20,-8},{58,-8}}, + color={0,0,127})); + connect(yOn, swi.u2) annotation (Line(points={{120,-60},{40,-60},{40,0},{58,0}}, color={255,0,255})); - connect(conErr.y, yErr) annotation (Line(points={{-54,20},{94,20},{94,0},{120, - 0}}, color={0,0,127})); + connect(conErr.y, yErr) annotation (Line(points={{-38,20},{40,20},{40,30},{ + 120,30}}, + color={0,0,127})); connect(greMeaSet.y, swi.u2) annotation (Line(points={{2,0},{58,0}}, color={255,0,255})); - connect(conErr.u1, u_m) annotation (Line(points={{-78,26},{-90,26},{-90,-6},{ - -64,-6},{-64,-94},{0,-94},{0,-120}}, color={0,0,127})); - connect(conErr.u2, u_s) annotation (Line(points={{-78,14},{-80,14},{-80,0},{-120, - 0}}, color={0,0,127})); + connect(conErr.u1, u_m) annotation (Line(points={{-62,26},{-70,26},{-70,-94}, + {0,-94},{0,-120}}, color={0,0,127})); + connect(conErr.u2, u_s) annotation (Line(points={{-62,14},{-80,14},{-80,0},{ + -120,0}}, + color={0,0,127})); annotation (defaultComponentName = "relCon", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo index 75c8146298c..9b9d5f2efe8 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo @@ -17,7 +17,7 @@ block HalfPeriodRatio iconTransformation(extent={{-140,-80},{-100,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput rho "Real signal of the half period ratio" - annotation (Placement(transformation(extent={{100,40},{140,80}}), + annotation (Placement(transformation(extent={{100,60},{140,100}}), iconTransformation(extent={{100,50},{120,70}}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput triSta "A boolean signal, true if the tuning starts" annotation (Placement( @@ -25,41 +25,41 @@ block HalfPeriodRatio {{100,-10},{120,10}}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput triEnd "A boolean signal, true if the tuning completes" annotation (Placement( - transformation(extent={{100,-80},{140,-40}}), iconTransformation(extent= + transformation(extent={{100,-50},{140,-10}}), iconTransformation(extent= {{100,-70},{120,-50}}))); Buildings.Controls.OBC.CDL.Continuous.Min tmin "Minimum value of the length for the On period and the length for the off period " - annotation (Placement(transformation(extent={{-80,20},{-60,40}}))); + annotation (Placement(transformation(extent={{-80,30},{-60,50}}))); Buildings.Controls.OBC.CDL.Continuous.Greater gretOntOff "Check if both the length for the On period and the length for the off period are larger than 0" - annotation (Placement(transformation(extent={{0,40},{20,20}}))); + annotation (Placement(transformation(extent={{-20,50},{0,30}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.Constant minLen( final k=0) "Minimum value for the horizon length" - annotation (Placement(transformation(extent={{-40,20},{-20,40}}))); + annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler tOnSample( final y_start=Buildings.Controls.OBC.CDL.Constants.eps) "Sample tOn when the tuning period ends" - annotation (Placement(transformation(extent={{-80,60},{-60,80}}))); + annotation (Placement(transformation(extent={{-80,70},{-60,90}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler tOffSample( final y_start=Buildings.Controls.OBC.CDL.Constants.eps) "Sample tOff when the tuning period ends" annotation (Placement(transformation(extent={{-80,-60},{-60,-80}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samAddtOntOff "Sample the tmin when tmin is larger than 0" - annotation (Placement(transformation(extent={{40,40},{60,20}}))); + annotation (Placement(transformation(extent={{20,30},{40,10}}))); Buildings.Controls.OBC.CDL.Continuous.Greater tIncrease "Check if either the length for the On period or the length for the off period increases after they both becomes positive" - annotation (Placement(transformation(extent={{40,-40},{60,-20}}))); + annotation (Placement(transformation(extent={{30,-40},{50,-20}}))); Buildings.Controls.OBC.CDL.Continuous.Min mintOntOff "Find the smaller one between the length for the On period and the length for the off period" annotation (Placement(transformation(extent={{-20,-80},{0,-60}}))); Buildings.Controls.OBC.CDL.Continuous.Max maxtOntOff "Find the larger one between the length for the On period and the length for the off period" - annotation (Placement(transformation(extent={{-20,60},{0,80}}))); + annotation (Placement(transformation(extent={{-20,70},{0,90}}))); Buildings.Controls.OBC.CDL.Continuous.Divide halPerRat "Calculate the half period ratio" - annotation (Placement(transformation(extent={{60,60},{80,80}}))); + annotation (Placement(transformation(extent={{60,70},{80,90}}))); Buildings.Controls.OBC.CDL.Continuous.Add AddtOntOff "Calculate the sum of the length for the On period and the length for the off period" annotation (Placement(transformation(extent={{-80,-40},{-60,-20}}))); @@ -68,84 +68,87 @@ block HalfPeriodRatio annotation (Placement(transformation(extent={{-34,-40},{-14,-20}}))); Buildings.Controls.OBC.CDL.Continuous.Greater gretmaxtOntOff "Check if either the length for the On period or the length for the off period is larger than 0" - annotation (Placement(transformation(extent={{0,10},{20,-10}}))); + annotation (Placement(transformation(extent={{-20,10},{0,-10}}))); Buildings.Controls.OBC.CDL.Continuous.Less tDecrease "Check if either the length for the On period or the length for the off period decreases after they both becomes positive" - annotation (Placement(transformation(extent={{40,-90},{60,-70}}))); + annotation (Placement(transformation(extent={{30,-90},{50,-70}}))); Buildings.Controls.OBC.CDL.Logical.Or tChanges "Check if the length for the On period or the length for the off period changes" annotation (Placement(transformation(extent={{70,-40},{90,-20}}))); equation - connect(tmin.u1, tOn) annotation (Line(points={{-82,36},{-94,36},{-94,60},{-120, - 60}}, color={0,0,127})); - connect(tmin.u2, tOff) annotation (Line(points={{-82,24},{-88,24},{-88,-46},{-94, - -46},{-94,-60},{-120,-60}}, + connect(tmin.u1, tOn) annotation (Line(points={{-82,46},{-94,46},{-94,60},{ + -120,60}}, color={0,0,127})); + connect(tmin.u2, tOff) annotation (Line(points={{-82,34},{-88,34},{-88,-60},{ + -120,-60}}, color={0,0,127})); - connect(minLen.y, gretOntOff.u2) annotation (Line(points={{-18,30},{-10,30},{ - -10,38},{-2,38}}, color={0,0,127})); + connect(minLen.y, gretOntOff.u2) annotation (Line(points={{-58,10},{-40,10},{ + -40,48},{-22,48}},color={0,0,127})); connect(tOnSample.u, tOn) - annotation (Line(points={{-82,70},{-94,70},{-94,60},{-120,60}}, + annotation (Line(points={{-82,80},{-94,80},{-94,60},{-120,60}}, color={0,0,127})); - connect(tOffSample.u, tOff) annotation (Line(points={{-82,-70},{-92,-70},{-92, + connect(tOffSample.u, tOff) annotation (Line(points={{-82,-70},{-88,-70},{-88, -60},{-120,-60}}, color={0,0,127})); - connect(samAddtOntOff.y, tIncrease.u2) annotation (Line(points={{62,30},{64, - 30},{64,-48},{28,-48},{28,-38},{38,-38}}, color={0,0,127})); - connect(gretOntOff.y, samAddtOntOff.trigger) annotation (Line(points={{22,30}, - {24,30},{24,46},{50,46},{50,42}}, color={255,0,255})); - connect(tOnSample.y, maxtOntOff.u1) annotation (Line(points={{-58,70},{-30,70}, - {-30,76},{-22,76}}, + connect(samAddtOntOff.y, tIncrease.u2) annotation (Line(points={{42,20},{60, + 20},{60,-6},{18,-6},{18,-38},{28,-38}}, color={0,0,127})); + connect(gretOntOff.y, samAddtOntOff.trigger) annotation (Line(points={{2,40},{ + 30,40},{30,32}}, color={255,0,255})); + connect(tOnSample.y, maxtOntOff.u1) annotation (Line(points={{-58,80},{-52,80}, + {-52,86},{-22,86}}, color={0,0,127})); - connect(maxtOntOff.u2, tOffSample.y) annotation (Line(points={{-22,64},{-46,64}, - {-46,-70},{-58,-70}}, + connect(maxtOntOff.u2, tOffSample.y) annotation (Line(points={{-22,74},{-48, + 74},{-48,-70},{-58,-70}}, color={0,0,127})); - connect(mintOntOff.u2, tOffSample.y) annotation (Line(points={{-22,-76},{-46,-76}, - {-46,-70},{-58,-70}}, + connect(mintOntOff.u2, tOffSample.y) annotation (Line(points={{-22,-76},{-48, + -76},{-48,-70},{-58,-70}}, color={0,0,127})); - connect(mintOntOff.u1, maxtOntOff.u1) annotation (Line(points={{-22,-64},{-54, - -64},{-54,70},{-30,70},{-30,76},{-22,76}}, + connect(maxtOntOff.y, halPerRat.u1) annotation (Line(points={{2,80},{52,80},{ + 52,86},{58,86}}, + color={0,0,127})); + connect(halPerRat.u2, mintOntOff.y) annotation (Line(points={{58,74},{14,74}, + {14,-70},{2,-70}}, color={0,0,127})); + connect(halPerRat.y, rho) annotation (Line(points={{82,80},{120,80}}, + color={0,0,127})); + connect(AddtOntOff.u2, tOff) annotation (Line(points={{-82,-36},{-88,-36},{ + -88,-60},{-120,-60}}, color={0,0,127})); - connect(maxtOntOff.y, halPerRat.u1) annotation (Line(points={{2,70},{52,70},{52, - 76},{58,76}}, color={0,0,127})); - connect(halPerRat.u2, mintOntOff.y) annotation (Line(points={{58,64},{32,64},{ - 32,-34},{24,-34},{24,-70},{2,-70}}, color={0,0,127})); - connect(halPerRat.y, rho) annotation (Line(points={{82,70},{94,70},{94,60},{120, - 60}}, color={0,0,127})); - connect(AddtOntOff.u2, tOff) annotation (Line(points={{-82,-36},{-94,-36},{-94, - -60},{-120,-60}}, color={0,0,127})); connect(AddtOntOff.u1, tOn) annotation (Line(points={{-82,-24},{-94,-24},{-94, 60},{-120,60}}, color={0,0,127})); connect(gretmaxtOntOff.y, triSta) - annotation (Line(points={{22,0},{120,0}}, color={255,0,255})); + annotation (Line(points={{2,0},{120,0}}, color={255,0,255})); connect(tChanges.u1, tIncrease.y) - annotation (Line(points={{68,-30},{62,-30}}, color={255,0,255})); - connect(tChanges.u2, tDecrease.y) - annotation (Line(points={{68,-38},{68,-80},{62,-80}}, color={255,0,255})); - connect(tChanges.y, tOffSample.trigger) annotation (Line(points={{92,-30},{92, - -60},{26,-60},{26,-52},{-70,-52},{-70,-58}}, color={255,0,255})); - connect(samAddtOntOff.y, tDecrease.u2) annotation (Line(points={{62,30},{76,30}, - {76,-6},{30,-6},{30,-88},{38,-88}}, color={0,0,127})); - connect(gretmaxtOntOff.u1, AddtOntOff.y) annotation (Line(points={{-2,0},{-44, - 0},{-44,-30},{-58,-30}}, color={0,0,127})); - connect(gretmaxtOntOff.u2, minLen.y) annotation (Line(points={{-2,8},{-14,8},{ - -14,30},{-18,30}}, color={0,0,127})); - connect(gretOntOff.u1, tmin.y) annotation (Line(points={{-2,30},{-6,30},{-6,12}, - {-44,12},{-44,30},{-58,30}}, color={0,0,127})); - connect(mul.u1, tmin.y) annotation (Line(points={{-36,-24},{-36,6},{-48,6},{ - -48,30},{-58,30}}, color={0,0,127})); + annotation (Line(points={{68,-30},{52,-30}}, color={255,0,255})); + connect(samAddtOntOff.y, tDecrease.u2) annotation (Line(points={{42,20},{60, + 20},{60,-6},{18,-6},{18,-88},{28,-88}}, + color={0,0,127})); + connect(gretmaxtOntOff.u1, AddtOntOff.y) annotation (Line(points={{-22,0},{ + -40,0},{-40,-30},{-58,-30}}, + color={0,0,127})); + connect(gretmaxtOntOff.u2, minLen.y) annotation (Line(points={{-22,8},{-40,8}, + {-40,10},{-58,10}},color={0,0,127})); + connect(gretOntOff.u1, tmin.y) annotation (Line(points={{-22,40},{-58,40}}, + color={0,0,127})); + connect(mul.u1, tmin.y) annotation (Line(points={{-36,-24},{-44,-24},{-44,40}, + {-58,40}}, color={0,0,127})); connect(mul.u2, AddtOntOff.y) annotation (Line(points={{-36,-36},{-40,-36},{ -40,-30},{-58,-30}}, color={0,0,127})); connect(mul.y, tIncrease.u1) - annotation (Line(points={{-12,-30},{38,-30}}, color={0,0,127})); - connect(tDecrease.u1, mul.y) annotation (Line(points={{38,-80},{10,-80},{10, + annotation (Line(points={{-12,-30},{28,-30}}, color={0,0,127})); + connect(tDecrease.u1, mul.y) annotation (Line(points={{28,-80},{10,-80},{10, -30},{-12,-30}}, color={0,0,127})); - connect(samAddtOntOff.u, mul.y) annotation (Line(points={{38,30},{36,30},{36, - -24},{-4,-24},{-4,-30},{-12,-30}}, color={0,0,127})); - connect(tOnSample.trigger, tChanges.y) annotation (Line(points={{-70,58},{-70, - 50},{-56,50},{-56,-96},{94,-96},{94,-30},{92,-30}}, color={255,0,255})); - connect(triEnd, tChanges.y) annotation (Line(points={{120,-60},{96,-60},{96, - -30},{92,-30}}, color={255,0,255})); + connect(samAddtOntOff.u, mul.y) annotation (Line(points={{18,20},{10,20},{10, + -30},{-12,-30}}, color={0,0,127})); + connect(tOnSample.trigger, tChanges.y) annotation (Line(points={{-70,68},{-70, + 60},{94,60},{94,-30},{92,-30}}, color={255,0,255})); + connect(triEnd, tChanges.y) annotation (Line(points={{120,-30},{92,-30}}, + color={255,0,255})); + connect(tOnSample.y, mintOntOff.u1) annotation (Line(points={{-58,80},{-52,80}, + {-52,-64},{-22,-64}}, color={0,0,127})); + connect(tChanges.y, tOffSample.trigger) annotation (Line(points={{92,-30},{94, + -30},{94,-54},{-70,-54},{-70,-58}}, color={255,0,255})); + connect(tDecrease.y, tChanges.u2) annotation (Line(points={{52,-80},{60,-80}, + {60,-38},{68,-38}}, color={255,0,255})); annotation ( Diagram( coordinateSystem( diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/NormalizedTimeDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/NormalizedTimeDelay.mo index 8a4eb816dbf..14b09357811 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/NormalizedTimeDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/NormalizedTimeDelay.mo @@ -26,7 +26,7 @@ block NormalizedTimeDelay annotation (Placement(transformation(extent={{40,-10},{60,10}}))); Buildings.Controls.OBC.CDL.Continuous.Subtract subGammaRho "Calculate the difference between the asymmetry level of the relay controller and the half period ratio" - annotation (Placement(transformation(extent={{0,12},{20,32}}))); + annotation (Placement(transformation(extent={{0,10},{20,30}}))); Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai( final k=0.35) "Gain for the half period ratio" @@ -39,14 +39,15 @@ equation assert( gamma-rho>1E-6, "The asymmetry level should be larger than the half period ratio. Check parameters."); - connect(subGammaRho.u1, asymmetryLevel.y) annotation (Line(points={{-2,28},{-20, - 28},{-20,50},{-58,50}}, color={0,0,127})); - connect(subGammaRho.u2, rho) annotation (Line(points={{-2,16},{-42,16},{-42, + connect(subGammaRho.u1, asymmetryLevel.y) annotation (Line(points={{-2,26},{ + -52,26},{-52,50},{-58,50}}, + color={0,0,127})); + connect(subGammaRho.u2, rho) annotation (Line(points={{-2,14},{-42,14},{-42, 20},{-94,20},{-94,0},{-120,0}}, color={0,0,127})); connect(gai.u, rho) annotation (Line(points={{-82,-60},{-94,-60},{-94,0},{-120, 0}}, color={0,0,127})); connect(div.u1, subGammaRho.y) - annotation (Line(points={{38,6},{30,6},{30,22},{22,22}}, color={0,0,127})); + annotation (Line(points={{38,6},{30,6},{30,20},{22,20}}, color={0,0,127})); connect(div.u2, mul.y) annotation (Line(points={{38,-6},{30,-6},{30,-38},{22,-38}}, color={0,0,127})); connect(div.y, tau) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo index 2653333241e..d51b2531535 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo @@ -5,18 +5,19 @@ block OnOffPeriod final quantity="Time", final unit="s") "Simulation time" - annotation (Placement(transformation(extent={{-140,40},{-100,80}}), + annotation (Placement(transformation(extent={{-140,20},{-100,60}}), iconTransformation(extent={{-140,40},{-100,80}}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanInput On "Relay switch signal" annotation (Placement(transformation( - extent={{-140,-80},{-100,-40}}), iconTransformation(extent={{-140,-80}, + extent={{-140,-90},{-100,-50}}), iconTransformation(extent={{-140,-80}, {-100,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput tOff( final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Length for the Off period" - annotation (Placement(transformation(extent={{102,-60},{142,-20}}))); + annotation (Placement(transformation(extent={{100,-50},{140,-10}}), + iconTransformation(extent={{102,-60},{142,-20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput tOn( final quantity="Time", final unit="s", @@ -25,10 +26,10 @@ block OnOffPeriod annotation (Placement(transformation(extent={{100,20},{140,60}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler timOn "Simulation time when the input signal becomes On (True)" - annotation (Placement(transformation(extent={{-30,30},{-10,50}}))); + annotation (Placement(transformation(extent={{-40,30},{-20,50}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler timOff "Simulation time when the input signal becomesss Off (False)" - annotation (Placement(transformation(extent={{-30,-40},{-10,-20}}))); + annotation (Placement(transformation(extent={{-40,-50},{-20,-30}}))); Buildings.Controls.OBC.CDL.Logical.Not Off "Relay switch off" annotation (Placement(transformation(extent={{-80,-80},{-60,-60}}))); @@ -46,55 +47,56 @@ block OnOffPeriod annotation (Placement(transformation(extent={{40,60},{60,80}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.Constant minLen(final k=0) "Minimum value for the horizon length" - annotation (Placement(transformation(extent={{-80,60},{-60,80}}))); + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler timOffRec "Record the horizon length for the Off period" - annotation (Placement(transformation(extent={{60,-50},{80,-30}}))); + annotation (Placement(transformation(extent={{60,-40},{80,-20}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler timOnRec "Record the horizon length for the On period" annotation (Placement(transformation(extent={{60,50},{80,30}}))); equation - connect(Off.u, On) annotation (Line(points={{-82,-70},{-92,-70},{-92,-60},{ - -120,-60}}, color={255,0,255})); - connect(Off.y, timOff.trigger) annotation (Line(points={{-58,-70},{-20,-70},{-20, - -42}}, color={255,0,255})); - connect(timOn.trigger, On) annotation (Line(points={{-20,28},{-20,20},{-92,20}, - {-92,-60},{-120,-60}}, color={255,0,255})); + connect(Off.u, On) annotation (Line(points={{-82,-70},{-120,-70}}, + color={255,0,255})); + connect(Off.y, timOff.trigger) annotation (Line(points={{-58,-70},{-30,-70},{ + -30,-52}}, + color={255,0,255})); + connect(timOn.trigger, On) annotation (Line(points={{-30,28},{-30,20},{-92,20}, + {-92,-70},{-120,-70}}, color={255,0,255})); connect(lenOffCal.u1, timOn.y) annotation (Line(points={{18,-24},{8,-24},{8, - 34},{4,34},{4,40},{-8,40}}, - color={0,0,127})); + 40},{-18,40}}, color={0,0,127})); connect(lenOnCal.u2, timOn.y) - annotation (Line(points={{18,34},{4,34},{4,40},{-8,40}}, color={0,0,127})); - connect(lenOnCal.u1, timOff.y) annotation (Line(points={{18,46},{0,46},{0,-30}, - {-8,-30}}, color={0,0,127})); - connect(lenOffCal.u2, timOff.y) annotation (Line(points={{18,-36},{0,-36},{0,-30}, - {-8,-30}}, color={0,0,127})); + annotation (Line(points={{18,34},{8,34},{8,40},{-18,40}},color={0,0,127})); + connect(lenOnCal.u1, timOff.y) annotation (Line(points={{18,46},{0,46},{0,-40}, + {-18,-40}},color={0,0,127})); + connect(lenOffCal.u2, timOff.y) annotation (Line(points={{18,-36},{0,-36},{0, + -40},{-18,-40}}, + color={0,0,127})); connect(minLen.y, greTimOn.u2) - annotation (Line(points={{-58,70},{-52,70},{-52,62},{38,62}}, + annotation (Line(points={{-38,0},{-10,0},{-10,62},{38,62}}, color={0,0,127})); connect(lenOnCal.y, greTimOn.u1) annotation (Line(points={{42,40},{50,40},{50, 56},{20,56},{20,70},{38,70}}, color={0,0,127})); - connect(greTimOff.u2, greTimOn.u2) annotation (Line(points={{38,-78},{-52,-78}, - {-52,62},{38,62}}, color={0,0,127})); + connect(greTimOff.u2, greTimOn.u2) annotation (Line(points={{38,-78},{-10,-78}, + {-10,62},{38,62}}, color={0,0,127})); connect(lenOffCal.y, greTimOff.u1) annotation (Line(points={{42,-30},{48,-30}, {48,-48},{20,-48},{20,-70},{38,-70}}, color={0,0,127})); connect(greTimOff.y, timOffRec.trigger) - annotation (Line(points={{62,-70},{70,-70},{70,-52}}, color={255,0,255})); - connect(timOffRec.u, greTimOff.u1) annotation (Line(points={{58,-40},{54,-40}, - {54,-48},{20,-48},{20,-70},{38,-70}}, color={0,0,127})); + annotation (Line(points={{62,-70},{70,-70},{70,-42}}, color={255,0,255})); connect(greTimOn.y, timOnRec.trigger) annotation (Line(points={{62,70},{70,70},{70,52}}, color={255,0,255})); connect(timOnRec.u, greTimOn.u1) annotation (Line(points={{58,40},{50,40},{50, 56},{20,56},{20,70},{38,70}}, color={0,0,127})); - connect(timOn.u, tim) annotation (Line(points={{-32,40},{-92,40},{-92,60},{ - -120,60}}, color={0,0,127})); - connect(timOff.u, tim) annotation (Line(points={{-32,-30},{-76,-30},{-76,40}, - {-92,40},{-92,60},{-120,60}}, color={0,0,127})); + connect(timOn.u, tim) annotation (Line(points={{-42,40},{-120,40}}, + color={0,0,127})); + connect(timOff.u, tim) annotation (Line(points={{-42,-40},{-80,-40},{-80,40}, + {-120,40}}, color={0,0,127})); connect(timOnRec.y, tOn) annotation (Line(points={{82,40},{102,40},{102,40},{120, 40}}, color={0,0,127})); - connect(timOffRec.y, tOff) annotation (Line(points={{82,-40},{102,-40},{102,-40}, - {122,-40}}, color={0,0,127})); + connect(timOffRec.y, tOff) annotation (Line(points={{82,-30},{120,-30}}, + color={0,0,127})); + connect(lenOffCal.y, timOffRec.u) + annotation (Line(points={{42,-30},{58,-30}}, color={0,0,127})); annotation ( defaultComponentName = "onOffPer", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ From c1180c9f996739d3c79bebff4b38e508a0da8872 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Fri, 2 Dec 2022 17:57:47 -0500 Subject: [PATCH 054/214] update the doc and add more parameters --- .../PIDWithAutotuning/FirstOrderAMIGO.mo | 89 ++++++++++++++++++- 1 file changed, 87 insertions(+), 2 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index 75ebdbac232..1aed801c1ca 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -3,6 +3,34 @@ block FirstOrderAMIGO "A autotuning PID controller with an AMIGO tuner and a first order time delayed system model" parameter Buildings.Controls.OBC.CDL.Types.SimpleController controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PI "Type of controller"; + parameter Real r( + min=100*CDL.Constants.eps)=1 + "Typical range of control error, used for scaling the control error"; + parameter Real yMax=1 + "Upper limit of output" + annotation (Dialog(group="Limits")); + parameter Real yMin=0 + "Lower limit of output" + annotation (Dialog(group="Limits")); + parameter Real Ni( + min=100*CDL.Constants.eps)=0.9 + "Ni*Ti is time constant of anti-windup compensation" + annotation (Dialog(tab="Advanced",group="Integrator anti-windup",enable=controllerType == CDL.Types.SimpleController.PI or controllerType ==CDL.Types.SimpleController.PID)); + parameter Real Nd( + min=100*CDL.Constants.eps)=10 + "The higher Nd, the more ideal the derivative block" + annotation (Dialog(tab="Advanced",group="Derivative block",enable=controllerType == CDL.Types.SimpleController.PD or controllerType ==CDL.Types.SimpleController.PID)); + parameter Real xi_start=0 + "Initial value of integrator state" + annotation (Dialog(tab="Advanced",group="Initialization",enable=controllerType == CDL.Types.SimpleController.PI or controllerType == CDL.Types.SimpleController.PID)); + parameter Real yd_start=0 + "Initial value of derivative output" + annotation (Dialog(tab="Advanced",group="Initialization",enable=controllerType == CDL.Types.SimpleController.PD or controllerType == CDL.Types.SimpleController.PID)); + parameter Boolean reverseActing=true + "Set to true for reverse acting, or false for direct acting control action"; + parameter Real y_reset=xi_start + "Value to which the controller output is reset if the boolean trigger has a rising edge" + annotation (Dialog(enable=controllerType == CDL.Types.SimpleController.PI or controllerType == CDL.Types.SimpleController.PID,group="Integrator reset")); parameter Real k_start( min=100*Buildings.Controls.OBC.CDL.Constants.eps)=1 "Start value of the gain of controller" @@ -48,7 +76,16 @@ block FirstOrderAMIGO "A relay controller" annotation (Placement(transformation(extent={{20,0},{40,20}}))); Buildings.Controls.OBC.Utilities.PIDWithInputGains PID( - controllerType=controllerType) + final controllerType=controllerType, + final r=r, + final yMax=yMax, + final yMin=yMin, + final Ni=Ni, + final Nd= Nd, + final xi_start=xi_start, + final yd_start=yd_start, + final reverseActing=reverseActing, + final y_reset=xi_start) "A PID controller" annotation (Placement(transformation(extent={{0,-50},{20,-30}}))); Buildings.Controls.OBC.CDL.Continuous.Switch swi @@ -169,11 +206,59 @@ equation -52}}, color={0,0,127})); annotation (Documentation(info="

                              -This blocks implements a AMIGO PID tuning method and the control process is approximated with a first order delay process. +This block implements an AMIGO PID tuning method and the control process is approximated with a first-order delay (FOD) process. +

                              +

                              +Specifically, this AMIGO PID tuning method is based on asymmetric relay feedback tests, providing process excitation +at the frequency intervals relevant for PID control; +

                              +

                              +Based on the response of the control process to the excitation, the parameters of a FODs, time delay and time constant, are calculated; +

                              +

                              +Finally, the parameters of a PID controller are determined according to the parameters of the FOD. +

                              +

                              +This block consists of a relay controller and a PID controller with input gains.

                              Noted that this block can only support a PI controller or a PID controller.

                              +

                              Breif guidance

                              +

                              +This block is built upon PIDWithInputGains +Buildings.Controls.OBC.Utilities.PIDWithInputGains and its connections are the same as those of the latter. +

                              +

                              +All the parameters of PIDWithInputGains are also used by this block, except the controller gains +k, Ti, and Td, which are replaced with the initial values of those gains. +

                              +

                              +This block provides four additional parameters, yHig, yLow, deaBan, and yRef. +

                              +

                              +Note that the default values of those four parameters assume the control output is normalized. +

                              +

                              +More information regarding how to select the values of those four parameters can be found in the reference. +

                              +

                              +To use this block, connect it to the control loop. +It will start the auto-tuning process once the simulation starts and detects when the auto-tuning process ends. +

                              +

                              +During the tuning process, the output of this block is from the embedded relay controller. +

                              +

                              +Once the auto-tuning process ends, this block changes the parameters of the embedded PID controller based on the tuning results. +and switch its output to that of the embedded PID controller. +

                              +

                              References

                              +

                              +J. Berner (2017). +\"Automatic Controller Tuning using Relay-based Model Identification.\" +Department of Automatic Control, Lund University. +

                              ", revisions="
                              • From abc55bd0ed196f16ead030e63e4a58ffaf84779e Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Tue, 28 Feb 2023 15:55:07 -0500 Subject: [PATCH 055/214] update the model doc and making some parameters final --- .../PIDWithAutotuning/FirstOrderAMIGO.mo | 69 +++++-------------- .../PIDWithAutotuning/Relay/OnOffPeriod.mo | 7 +- .../Validation/PIDWithFirstOrderAMIGO.mo | 7 +- .../Validation/PIWithFirstOrderAMIGO.mo | 7 +- 4 files changed, 25 insertions(+), 65 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index 1aed801c1ca..c5ff749259b 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -31,29 +31,29 @@ block FirstOrderAMIGO parameter Real y_reset=xi_start "Value to which the controller output is reset if the boolean trigger has a rising edge" annotation (Dialog(enable=controllerType == CDL.Types.SimpleController.PI or controllerType == CDL.Types.SimpleController.PID,group="Integrator reset")); - parameter Real k_start( + final parameter Real k_start( min=100*Buildings.Controls.OBC.CDL.Constants.eps)=1 "Start value of the gain of controller" annotation (Dialog(group="Control gains")); - parameter Real Ti_start( + final parameter Real Ti_start( final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps)=0.5 "Start value of the time constant of integrator block" annotation (Dialog(group="Control gains",enable=controllerType == CDL.Types.SimpleController.PI or controllerType == CDL.Types.SimpleController.PID)); - parameter Real Td_start( + final parameter Real Td_start( final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps)=0.1 "Start value of the time constant of derivative block" annotation (Dialog(group="Control gains",enable=controllerType == CDL.Types.SimpleController.PD or controllerType == CDL.Types.SimpleController.PID)); - parameter Real yHig(min=1E-6) = 1 + final parameter Real yHig(min=1E-6) = 1 "Higher value for the relay output"; - parameter Real yLow(min=1E-6) = 0.5 + final parameter Real yLow(min=1E-6) = 0.1 "Lower value for the relay output"; - parameter Real deaBan(min=1E-6) = 0.5 + final parameter Real deaBan(min=1E-6) = 0.1 "Deadband for holding the output value"; - parameter Real yRef(min=1E-6) = 0.8 + final parameter Real yRef(min=1E-6) = 0.8 "Reference output for the tuning process"; Buildings.Controls.OBC.CDL.Interfaces.RealInput u_s "Setpoint" @@ -206,57 +206,26 @@ equation -52}}, color={0,0,127})); annotation (Documentation(info="

                                -This block implements an AMIGO PID tuning method and the control process is approximated with a first-order delay (FOD) process. -

                                -

                                -Specifically, this AMIGO PID tuning method is based on asymmetric relay feedback tests, providing process excitation -at the frequency intervals relevant for PID control; -

                                -

                                -Based on the response of the control process to the excitation, the parameters of a FODs, time delay and time constant, are calculated; -

                                -

                                -Finally, the parameters of a PID controller are determined according to the parameters of the FOD. -

                                -

                                -This block consists of a relay controller and a PID controller with input gains. -

                                -

                                -Noted that this block can only support a PI controller or a PID controller. +This block implements a rule-based PID tuning method. +Specifically, this PID tuning method approximates the control process with a first-order delay (FOD) model. +It then determines the parameters of this FOD model based on the responses of the control process to an asymmetric relay feedback. +After that, taking the parameters of this FOD mode as inputs, this PID tuning method calculates the PID parameters based on prescribed rules, i.e., Approximate M-constrained Integral Gain Optimization (AMIGO) Tuner. +This block is built based on Buildings.Controls.OBC.Utilities.PIDWithInputGains and inherits all the parameters of the latter. +However, through the parameter controllerType, the controller can only be configured as PI or PID controller.

                                Breif guidance

                                -This block is built upon PIDWithInputGains -Buildings.Controls.OBC.Utilities.PIDWithInputGains and its connections are the same as those of the latter. -

                                -

                                -All the parameters of PIDWithInputGains are also used by this block, except the controller gains -k, Ti, and Td, which are replaced with the initial values of those gains. -

                                -

                                -This block provides four additional parameters, yHig, yLow, deaBan, and yRef. -

                                -

                                -Note that the default values of those four parameters assume the control output is normalized. -

                                -

                                -More information regarding how to select the values of those four parameters can be found in the reference. -

                                -

                                To use this block, connect it to the control loop. -It will start the auto-tuning process once the simulation starts and detects when the auto-tuning process ends. -

                                -

                                -During the tuning process, the output of this block is from the embedded relay controller. -

                                -

                                -Once the auto-tuning process ends, this block changes the parameters of the embedded PID controller based on the tuning results. -and switch its output to that of the embedded PID controller. +It will start the PID tuning process once the simulation starts. +During the PID tuning process, the control loop is controlled by a relay feedback controller. +The PID tuning process will ends automatically based on the algorithm defined in Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.HalfPeriodRatio. +Starting from then, the control loop is controlled by a PI or PID controller. +Note that the output of this block is limited from 0 to 1.

                                References

                                J. Berner (2017). -\"Automatic Controller Tuning using Relay-based Model Identification.\" +\"Automatic Controller Tuning using Relay-based Model Identification.\" Department of Automatic Control, Lund University.

                                ", revisions=" diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo index d51b2531535..bd79a7b9ce2 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo @@ -117,11 +117,8 @@ First implementation
                              ", info=" -

                              This block processes a relay swtich output signal and calculates

                              -
                                -
                              1. the length of the On period (when the relay switch signal becomes True);
                              2. -
                              3. the length of the Off period (when the relay switch signal becomes False).
                              4. -
                              +

                              This block processes a relay swtich output signal and calculates the length of the On period (when the relay switch signal becomes True), +and the length of the Off period (when the relay switch signal becomes False), respectively.

                              References

                              Josefin Berner (2017) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo index 143eba12350..fe7093c5229 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo @@ -4,11 +4,8 @@ model PIDWithFirstOrderAMIGO "Test model for FirstOrderAMIGO" "Setpoint value" annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.FirstOrderAMIGO PIDWitTun( - controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PID, - yHig=1, - yLow=0.1, - deaBan=0.1, - yRef=0.8) "PID controller with an autotuning feature" + controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PID) + "PID controller with an autotuning feature" annotation (Placement(transformation(extent={{-20,-30},{0,-10}}))); Buildings.Controls.OBC.CDL.Continuous.PIDWithReset PID( controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PID, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo index 11fc49a206b..ada2400bf18 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo @@ -4,11 +4,8 @@ model PIWithFirstOrderAMIGO "Test model for FirstOrderAMIGO" "Setpoint value" annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.FirstOrderAMIGO PIWitTun( - controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PI, - yHig=1, - yLow=0.1, - deaBan=0.1, - yRef=0.8) "PI controller with an autotuning feature" + controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PI) + "PI controller with an autotuning feature" annotation (Placement(transformation(extent={{-20,-30},{0,-10}}))); Buildings.Controls.OBC.CDL.Continuous.PIDWithReset PI( controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PI, From 7bf9f2eaa24a74093485b0314cc7a446fabb0d34 Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Thu, 9 Mar 2023 15:34:30 -0800 Subject: [PATCH 056/214] improved formating and implementation, removed BOM --- .../PIDWithAutotuning/AutoTuner/AMIGO/PI.mo | 23 +++-- .../PIDWithAutotuning/AutoTuner/AMIGO/PID.mo | 31 ++++--- .../AutoTuner/AMIGO/PIDDerivativeTime.mo | 8 +- .../AutoTuner/AMIGO/PIDGain.mo | 22 +++-- .../AutoTuner/AMIGO/PIDIntegralTime.mo | 19 ++-- .../AutoTuner/AMIGO/PIGain.mo | 13 +-- .../AutoTuner/AMIGO/PIIntegralTime.mo | 13 +-- .../PIDWithAutotuning/FirstOrderAMIGO.mo | 27 ++++-- .../PIDWithAutotuning/Relay/Controller.mo | 56 +++++++----- .../Relay/HalfPeriodRatio.mo | 89 ++++++++++--------- .../Relay/NormalizedTimeDelay.mo | 37 +++++--- .../PIDWithAutotuning/Relay/OnOffPeriod.mo | 24 ++--- .../Relay/ResponseProcess.mo | 50 ++++++++--- .../ControlProcessModel.mo | 61 +++++++------ .../FirstOrderTimedelayed/Gain.mo | 34 ++++--- .../TimeConstantDelay.mo | 27 ++++-- .../Validation/PIDWithFirstOrderAMIGO.mo | 10 ++- .../Validation/PIWithFirstOrderAMIGO.mo | 10 ++- 18 files changed, 340 insertions(+), 214 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PI.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PI.mo index 836bc6ae3a0..4b928b7a67e 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PI.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PI.mo @@ -1,6 +1,7 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; block PI "Identify the parameters of a PI controller" - Buildings.Controls.OBC.CDL.Interfaces.RealInput kp(final min=1E-6) + Buildings.Controls.OBC.CDL.Interfaces.RealInput kp( + final min=1E-6) "Gain of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,40},{-100,80}}), iconTransformation(extent={{-140,40},{-100,80}}))); @@ -70,11 +71,19 @@ First implementation

                            ", info=" -

                            This block calculates the control gain and the integral time of a PI model.

                            -

                            Please refer to the following block for detailed information:

                            -

                            -Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.AutoTuner.AMIGO.PIGain

                            -

                            -Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.AutoTuner.AMIGO.PIIntegralTime

                            +

                            +This block calculates the control gain and the integral time of a PI model. +

                            +

                            Please refer to the following block for detailed information:

                            + ")); end PI; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo index 03f518634fe..04cec813c4d 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo @@ -1,6 +1,7 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; -block PID "Identifies the parameters of a PID controller" - Buildings.Controls.OBC.CDL.Interfaces.RealInput kp(final min=1E-6) +block PID "Identify the parameters of a PID controller" + Buildings.Controls.OBC.CDL.Interfaces.RealInput kp( + final min=1E-6) "Gain of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,40},{-100,80}}), iconTransformation(extent={{-140,40},{-100,80}}))); @@ -85,13 +86,23 @@ First implementation
                          ", info=" -

                          This block calculates the control gain, the integral time, and the derivative time of a PID model.

                          -

                          Please refer to the following block for detailed information:

                          -

                          -Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.AutoTuner.AMIGO.PIDGain

                          -

                          -Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.AutoTuner.AMIGO.PIDIntegralTime

                          -

                          -Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.AutoTuner.AMIGO.PIDDerivativeTime

                          +

                          +This block calculates the control gain, the integral time, and the derivative time of a PID model. +

                          +

                          Please refer to the following block for detailed information:

                          + ")); end PID; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo index f683a84e167..553187b1510 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo @@ -1,4 +1,4 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; block PIDDerivativeTime "Identify the derivative time of a PID controller" Buildings.Controls.OBC.CDL.Interfaces.RealInput T( final quantity="Time", @@ -79,8 +79,10 @@ First implementation

                          Td = 0.5LT/(0.3L+T),

                          -

                          where T is the time constant of the first-order time-delayed model; -L is the time delay of the first-order time-delayed model.

                          +

                          +where T is the time constant of the first-order time-delayed model +and L is the time delay of the first-order time-delayed model. +

                          Validation

                          This block was validated analytically, see diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo index c952c004e47..b22bb148760 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo @@ -1,6 +1,7 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; block PIDGain "Identify the control gain of a PID controller" - Buildings.Controls.OBC.CDL.Interfaces.RealInput kp(final min=1E-6) + Buildings.Controls.OBC.CDL.Interfaces.RealInput kp( + final min=1E-6) "Gain of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,24},{-100,64}}), iconTransformation(extent={{-140,40},{-100,80}}))); @@ -24,16 +25,19 @@ block PIDGain "Identify the control gain of a PID controller" Buildings.Controls.OBC.CDL.Continuous.Divide div1 "Calculate the inverse of the input gain" annotation (Placement(transformation(extent={{-40,40},{-20,60}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.Constant const(final k=1) + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant const( + final k=1) "Constant parameter" annotation (Placement(transformation(extent={{-80,70},{-60,90}}))); - Buildings.Controls.OBC.CDL.Continuous.AddParameter add(final p=0.2) + Buildings.Controls.OBC.CDL.Continuous.AddParameter add( + final p=0.2) "Calculate the sum of 0.2 and the output of gai1" annotation (Placement(transformation(extent={{20,-40},{40,-20}}))); Buildings.Controls.OBC.CDL.Continuous.Divide div2 "Calculate ratio of the time constant to the time delay" annotation (Placement(transformation(extent={{-60,-40},{-40,-20}}))); - Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai1(final k=0.45) + Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai1( + final k=0.45) "Calculate the product of 0.45 and the output of div2" annotation (Placement(transformation(extent={{-20,-40},{0,-20}}))); Buildings.Controls.OBC.CDL.Continuous.Multiply mul @@ -82,9 +86,11 @@ First implementation

                          k = 1/kp + (0.2 + 0.45T/L),

                          -

                          where kp is the gain of the first-order time-delayed model;

                          -

                          T is the time constant of the first-order time-delayed model;

                          -

                          L is the time delay of the first-order time-delayed model.

                          +

                          +where kp is the gain of the first-order time-delayed model, +T is the time constant of the first-order time-delayed model, +and L is the time delay of the first-order time-delayed model. +

                          Validation

                          This block was validated analytically, see diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo index d84d1d8fad5..ca753773be6 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo @@ -1,5 +1,5 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; -block PIDIntegralTime "Identifies the integral time of a PID controller" +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; +block PIDIntegralTime "Identify the integral time of a PID controller" Buildings.Controls.OBC.CDL.Interfaces.RealInput T( final quantity="Time", final unit="s", @@ -29,13 +29,16 @@ block PIDIntegralTime "Identifies the integral time of a PID controller" Buildings.Controls.OBC.CDL.Continuous.Divide div "Calculate the output of add3 divided by the output of add1" annotation (Placement(transformation(extent={{20,-10},{40,10}}))); - Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai1(final k=0.4) + Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai1( + final k=0.4) "Calculate the product of 0.4 and the time delay" annotation (Placement(transformation(extent={{-80,-20},{-60,0}}))); - Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai2(final k=0.8) + Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai2( + final k=0.8) "Calculate the product of 0.8 and the input time constant" annotation (Placement(transformation(extent={{-80,50},{-60,70}}))); - Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai3(final k=0.1) + Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai3( + final k=0.1) "Calculate the product of 0.1 and the input time constant" annotation (Placement(transformation(extent={{-80,10},{-60,30}}))); Buildings.Controls.OBC.CDL.Continuous.Multiply mul @@ -92,8 +95,10 @@ First implementation

                          Ti = L(0.4L + 0.8T)/(L + 0.1T),

                          -

                          where T is the time constant of the first-order time-delayed model;

                          -

                          L is the time delay of the first-order time-delayed model.

                          +

                          +where T is the time constant of the first-order time-delayed model +and L is the time delay of the first-order time-delayed model. +

                          Validation

                          This block was validated analytically, see diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo index 4896abea3db..38e2b860f7b 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo @@ -1,6 +1,7 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; -block PIGain "Identifies the control gain of a PI controller" - Buildings.Controls.OBC.CDL.Interfaces.RealInput kp(final min=1E-6) +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; +block PIGain "Identify the control gain of a PI controller" + Buildings.Controls.OBC.CDL.Interfaces.RealInput kp( + final min=1E-6) "Gain of a first order time-delayed model" annotation (Placement(transformation(extent={{-140,40},{-100,80}}), iconTransformation(extent={{-140,40},{-100,80}}))); @@ -127,10 +128,10 @@ First implementation
                          k = 0.15/kp + (0.35-LT/(L+T)2)(T/kp/L),

                          -where kp is the gain of the first-order time-delayed model; +where kp is the gain of the first-order time-delayed model, +T is the time constant of the first-order time-delayed model, and +L is the time delay of the first-order time-delayed model.

                          -

                          T is the time constant of the first-order time-delayed model;

                          -

                          L is the time delay of the first-order time-delayed model.

                          Validation

                          This block was validated analytically, see diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo index c71842fb78e..6e0a69c19be 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo @@ -1,5 +1,5 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; -block PIIntegralTime "Identifies the integral time of a PI controller" +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; +block PIIntegralTime "Identify the integral time of a PI controller" Buildings.Controls.OBC.CDL.Interfaces.RealInput T( final quantity="Time", final unit="s", @@ -60,8 +60,7 @@ block PIIntegralTime "Identifies the integral time of a PI controller" equation connect(add2.y, Ti) - annotation (Line(points={{82,-2},{120,-2}}, - color={0,0,127})); + annotation (Line(points={{82,-2},{120,-2}}, color={0,0,127})); connect(gai4.u, L) annotation (Line(points={{-82,-20},{-92,-20},{-92,-60},{-120, -60}}, color={0,0,127})); connect(mul3.u1, T) annotation (Line(points={{-62,66},{-90,66},{-90,60},{-120, @@ -127,8 +126,10 @@ First implementation

                          Ti = 0.35L + 13LT2/(T2 + 12LT + 7L2),

                          -

                          where T is the time constant of the first-order time-delayed model;

                          -

                          L is the time delay of the first-order time-delayed model.

                          +

                          +where T is the time constant of the first-order time-delayed model +and L is the time delay of the first-order time-delayed model. +

                          Validation

                          This block was validated analytically, see diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index c5ff749259b..2b99f8ccdf6 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -127,9 +127,6 @@ protected annotation (Evaluate=true,HideResult=true); initial equation - assert( - yHig-yRef>1E-6, - "Higher value for the relay output should be larger than the reference output. Check parameters."); assert( controllerType <> Buildings.Controls.OBC.CDL.Types.SimpleController.PD and controllerType <> Buildings.Controls.OBC.CDL.Types.SimpleController.P, "Only PI and PID are supported"); @@ -207,19 +204,31 @@ equation annotation (Documentation(info="

                          This block implements a rule-based PID tuning method. -Specifically, this PID tuning method approximates the control process with a first-order delay (FOD) model. -It then determines the parameters of this FOD model based on the responses of the control process to an asymmetric relay feedback. -After that, taking the parameters of this FOD mode as inputs, this PID tuning method calculates the PID parameters based on prescribed rules, i.e., Approximate M-constrained Integral Gain Optimization (AMIGO) Tuner. -This block is built based on Buildings.Controls.OBC.Utilities.PIDWithInputGains and inherits all the parameters of the latter. -However, through the parameter controllerType, the controller can only be configured as PI or PID controller. +Specifically, this PID tuning method approximates the control process with a +first-order delay (FOD) model. +It then determines the parameters of this FOD model based on the responses of +the control process to an asymmetric relay feedback. +After that, taking the parameters of this FOD mode as inputs, this PID tuning +method calculates the PID parameters based on prescribed rules, +i.e., Approximate M-constrained Integral Gain Optimization (AMIGO) Tuner. +This block is built based on + +Buildings.Controls.OBC.Utilities.PIDWithInputGains +and inherits all the parameters of the latter. However, through the parameter +controllerType, the controller can only be configured as PI or +PID controller.

                          Breif guidance

                          To use this block, connect it to the control loop. It will start the PID tuning process once the simulation starts. During the PID tuning process, the control loop is controlled by a relay feedback controller. -The PID tuning process will ends automatically based on the algorithm defined in Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.HalfPeriodRatio. +The PID tuning process will ends automatically based on the algorithm defined +in +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.HalfPeriodRatio. Starting from then, the control loop is controlled by a PI or PID controller. +

                          +

                          Note that the output of this block is limited from 0 to 1.

                          References

                          diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo index ecadf0adfa9..26fef3f72c5 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo @@ -1,6 +1,6 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay; block Controller - "Outputs relay signals for tuning PID controllers" + "Output relay signals for tuning PID controllers" parameter Real yHig(min=1E-6) = 1 "Higher value for the relay output"; parameter Real yLow(min=1E-6) = 0.5 @@ -52,32 +52,26 @@ initial equation equation connect(swi.y, y) - annotation (Line(points={{82,0},{88,0},{88,60},{120,60}}, - color={0,0,127})); + annotation (Line(points={{82,0},{88,0},{88,60},{120,60}}, color={0,0,127})); connect(greMeaSet.reference, u_s) - annotation (Line(points={{-22,6},{-40,6},{-40,0},{-120,0}}, - color={0,0,127})); + annotation (Line(points={{-22,6},{-40,6},{-40,0},{-120,0}}, color={0,0,127})); connect(greMeaSet.u, u_m) annotation (Line(points={{-22,-6},{-70,-6},{-70,-94},{0,-94},{0,-120}}, - color={0,0,127})); + color={0,0,127})); connect(yHigSig.y, swi.u1) - annotation (Line(points={{2,60},{20,60},{20,8},{58,8}}, - color={0,0,127})); + annotation (Line(points={{2,60},{20,60},{20,8},{58,8}}, color={0,0,127})); connect(yLowSig.y, swi.u3) - annotation (Line(points={{2,-40},{20,-40},{20,-8},{58,-8}}, - color={0,0,127})); + annotation (Line(points={{2,-40},{20,-40},{20,-8},{58,-8}}, color={0,0,127})); connect(yOn, swi.u2) annotation (Line(points={{120,-60},{40,-60},{40,0},{58,0}}, color={255,0,255})); connect(conErr.y, yErr) annotation (Line(points={{-38,20},{40,20},{40,30},{ - 120,30}}, - color={0,0,127})); + 120,30}}, color={0,0,127})); connect(greMeaSet.y, swi.u2) annotation (Line(points={{2,0},{58,0}}, color={255,0,255})); connect(conErr.u1, u_m) annotation (Line(points={{-62,26},{-70,26},{-70,-94}, - {0,-94},{0,-120}}, color={0,0,127})); + {0,-94},{0,-120}}, color={0,0,127})); connect(conErr.u2, u_s) annotation (Line(points={{-62,14},{-80,14},{-80,0},{ - -120,0}}, - color={0,0,127})); + -120,0}}, color={0,0,127})); annotation (defaultComponentName = "relCon", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( @@ -90,14 +84,30 @@ equation textString="%name", textColor={0,0,255})}), Diagram( coordinateSystem(preserveAspectRatio=false)), - Documentation(info=" -

                          This block grenerates a real control output signal, y, and a boolean control switch signal, yOn, as described below:

                          -

                          if e(t) < - δ, then y(t) = yhig, yOn(t) = true

                          -

                          if e(t) > δ, then y(t) = -ylow, yOn(t) = false

                          -

                          otherwise, y(t) = y(t-Δt), yOn(t) = yOn(t-Δt)

                          -

                          where δ is a dead band, e(t) = us(t) - um(t) is the control error, yhig and ylow are the higher value and the lower value of the output y, respectively.

                          -

                          t-Δt is the previous time step.

                          -

                          Note that this block generates an asymmetric signal, meaning yhig ≠ ylow.

                          +Documentation(info=" +

                          +This block grenerates a real control output signal, y, and a +boolean control switch signal, yOn, as described below: +

                          +
                            +
                          • +if e(t) < - δ, then y(t) = yhig, yOn(t) = true, +
                          • +
                          • +if e(t) > δ, then y(t) = -ylow, yOn(t) = false, +
                          • +
                          • +otherwise, y(t) = y(t-Δt), yOn(t) = yOn(t-Δt) +
                          • +
                          +

                          where δ is a dead band, e(t) = us(t) - um(t) +is the control error, yhig and ylow +are the higher value and the lower value of the output y, +and t-Δt is the previous time step. +

                          +

                          +Note that this block generates an asymmetric signal, meaning yhig ≠ ylow. +

                          References

                          Josefin Berner (2017) \"Automatic Controller Tuning using Relay-based Model Identification.\" diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo index 9b9d5f2efe8..96537bc53a4 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo @@ -20,13 +20,13 @@ block HalfPeriodRatio annotation (Placement(transformation(extent={{100,60},{140,100}}), iconTransformation(extent={{100,50},{120,70}}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput triSta - "A boolean signal, true if the tuning starts" annotation (Placement( - transformation(extent={{100,-20},{140,20}}), iconTransformation(extent= - {{100,-10},{120,10}}))); + "A boolean signal, true if the tuning starts" + annotation (Placement(transformation(extent={{100,-20},{140,20}}), + iconTransformation(extent={{100,-10},{120,10}}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput triEnd - "A boolean signal, true if the tuning completes" annotation (Placement( - transformation(extent={{100,-50},{140,-10}}), iconTransformation(extent= - {{100,-70},{120,-50}}))); + "A boolean signal, true if the tuning completes" + annotation (Placement(transformation(extent={{100,-50},{140,-10}}), + iconTransformation(extent={{100,-70},{120,-50}}))); Buildings.Controls.OBC.CDL.Continuous.Min tmin "Minimum value of the length for the On period and the length for the off period " annotation (Placement(transformation(extent={{-80,30},{-60,50}}))); @@ -80,51 +80,41 @@ equation connect(tmin.u1, tOn) annotation (Line(points={{-82,46},{-94,46},{-94,60},{ -120,60}}, color={0,0,127})); connect(tmin.u2, tOff) annotation (Line(points={{-82,34},{-88,34},{-88,-60},{ - -120,-60}}, - color={0,0,127})); + -120,-60}}, color={0,0,127})); connect(minLen.y, gretOntOff.u2) annotation (Line(points={{-58,10},{-40,10},{ -40,48},{-22,48}},color={0,0,127})); connect(tOnSample.u, tOn) - annotation (Line(points={{-82,80},{-94,80},{-94,60},{-120,60}}, - color={0,0,127})); + annotation (Line(points={{-82,80},{-94,80},{-94,60},{-120,60}}, color={0,0,127})); connect(tOffSample.u, tOff) annotation (Line(points={{-82,-70},{-88,-70},{-88, - -60},{-120,-60}}, - color={0,0,127})); + -60},{-120,-60}}, color={0,0,127})); connect(samAddtOntOff.y, tIncrease.u2) annotation (Line(points={{42,20},{60, 20},{60,-6},{18,-6},{18,-38},{28,-38}}, color={0,0,127})); connect(gretOntOff.y, samAddtOntOff.trigger) annotation (Line(points={{2,40},{ - 30,40},{30,32}}, color={255,0,255})); + 30,40},{30,32}}, color={255,0,255})); connect(tOnSample.y, maxtOntOff.u1) annotation (Line(points={{-58,80},{-52,80}, - {-52,86},{-22,86}}, - color={0,0,127})); + {-52,86},{-22,86}}, color={0,0,127})); connect(maxtOntOff.u2, tOffSample.y) annotation (Line(points={{-22,74},{-48, - 74},{-48,-70},{-58,-70}}, - color={0,0,127})); + 74},{-48,-70},{-58,-70}}, color={0,0,127})); connect(mintOntOff.u2, tOffSample.y) annotation (Line(points={{-22,-76},{-48, - -76},{-48,-70},{-58,-70}}, - color={0,0,127})); + -76},{-48,-70},{-58,-70}}, color={0,0,127})); connect(maxtOntOff.y, halPerRat.u1) annotation (Line(points={{2,80},{52,80},{ - 52,86},{58,86}}, - color={0,0,127})); + 52,86},{58,86}}, color={0,0,127})); connect(halPerRat.u2, mintOntOff.y) annotation (Line(points={{58,74},{14,74}, - {14,-70},{2,-70}}, color={0,0,127})); + {14,-70},{2,-70}}, color={0,0,127})); connect(halPerRat.y, rho) annotation (Line(points={{82,80},{120,80}}, color={0,0,127})); connect(AddtOntOff.u2, tOff) annotation (Line(points={{-82,-36},{-88,-36},{ - -88,-60},{-120,-60}}, - color={0,0,127})); + -88,-60},{-120,-60}}, color={0,0,127})); connect(AddtOntOff.u1, tOn) annotation (Line(points={{-82,-24},{-94,-24},{-94, - 60},{-120,60}}, color={0,0,127})); + 60},{-120,60}}, color={0,0,127})); connect(gretmaxtOntOff.y, triSta) annotation (Line(points={{2,0},{120,0}}, color={255,0,255})); connect(tChanges.u1, tIncrease.y) annotation (Line(points={{68,-30},{52,-30}}, color={255,0,255})); connect(samAddtOntOff.y, tDecrease.u2) annotation (Line(points={{42,20},{60, - 20},{60,-6},{18,-6},{18,-88},{28,-88}}, - color={0,0,127})); + 20},{60,-6},{18,-6},{18,-88},{28,-88}}, color={0,0,127})); connect(gretmaxtOntOff.u1, AddtOntOff.y) annotation (Line(points={{-22,0},{ - -40,0},{-40,-30},{-58,-30}}, - color={0,0,127})); + -40,0},{-40,-30},{-58,-30}}, color={0,0,127})); connect(gretmaxtOntOff.u2, minLen.y) annotation (Line(points={{-22,8},{-40,8}, {-40,10},{-58,10}},color={0,0,127})); connect(gretOntOff.u1, tmin.y) annotation (Line(points={{-22,40},{-58,40}}, @@ -138,9 +128,9 @@ equation connect(tDecrease.u1, mul.y) annotation (Line(points={{28,-80},{10,-80},{10, -30},{-12,-30}}, color={0,0,127})); connect(samAddtOntOff.u, mul.y) annotation (Line(points={{18,20},{10,20},{10, - -30},{-12,-30}}, color={0,0,127})); + -30},{-12,-30}}, color={0,0,127})); connect(tOnSample.trigger, tChanges.y) annotation (Line(points={{-70,68},{-70, - 60},{94,60},{94,-30},{92,-30}}, color={255,0,255})); + 60},{94,60},{94,-30},{92,-30}}, color={255,0,255})); connect(triEnd, tChanges.y) annotation (Line(points={{120,-30},{92,-30}}, color={255,0,255})); connect(tOnSample.y, mintOntOff.u1) annotation (Line(points={{-58,80},{-52,80}, @@ -149,11 +139,10 @@ equation -30},{94,-54},{-70,-54},{-70,-58}}, color={255,0,255})); connect(tDecrease.y, tChanges.u2) annotation (Line(points={{52,-80},{60,-80}, {60,-38},{68,-38}}, color={255,0,255})); - annotation ( + annotation (defaultComponentName = "halPerRat", Diagram( coordinateSystem( extent={{-100,-100},{100,100}})), - defaultComponentName = "halPerRat", Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{80, 100}}), graphics={ Rectangle( @@ -178,27 +167,41 @@ First implementation

                          ρ = max(ton,toff)/ min(ton,toff),

                          -

                          where ton and toff are the length of the On period and the Off period, respectively.

                          -

                          During an On period, the relay switch signal becomes True;

                          -

                          During an Off period, the relay switch signal becomes False.

                          +

                          +where ton and toff are the +length of the On period and the Off period, respectively. +

                          +

                          During an On period, the relay switch signal becomes True; +During an Off period, the relay switch signal becomes False.

                          Note that only the first On period and the first Off period are considered.

                          Algorithm

                          -The algorithm for calculating ρ is as follows: +The algorithm for calculating ρ is as follows:

                          Step 1: detects when the tuning period begins.
                          -

                          The tuning period is triggered to begin when either ton or toff are larger than 0. -In this implementation, we detect the beginning time by monitoring the sum of ton and toff.

                          +

                          +The tuning period is triggered to begin when either ton +or toff are larger than 0. +In this implementation, we detect the beginning time by monitoring the sum of +ton and toff. +

                          -
                          Step 2: detects when both ton and toff are larger than 0.
                          +
                          Step 2: detects when both ton and toff +are larger than 0.

                          -We then record the value of the minimum value between (ton+toff)*min(ton,toff) at the momement when both ton and toff become postive. +We then record the value of the minimum value between +(ton+toff)*min(ton,toff) +at the momement when both ton and toff +become postive.

                          Step 3: detects when the tuning period ends.

                          -The tuning period is triggered to end when either ton or toff changes after they become positive. -In this implementation, we detect the end time by checking if the value of (ton+toff)*min(ton,toff) is different from the output of step2. +The tuning period is triggered to end when either ton +or toff changes after they become positive. +In this implementation, we detect the end time by checking if the value of +(ton+toff)*min(ton,toff) +is different from the output of step2.

                          References

                          diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/NormalizedTimeDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/NormalizedTimeDelay.mo index 14b09357811..a29abe48522 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/NormalizedTimeDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/NormalizedTimeDelay.mo @@ -1,6 +1,6 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay; block NormalizedTimeDelay - "Calculates the normalized time delay of a response from a relay controller" + "Calculate the normalized time delay of a response from a relay controller" parameter Real gamma(min=1+1E-6) = 4 "Asymmetry level of the relay controller"; Buildings.Controls.OBC.CDL.Interfaces.RealInput rho @@ -21,7 +21,7 @@ block NormalizedTimeDelay Buildings.Controls.OBC.CDL.Continuous.Sources.Constant asymmetryLevel( final k=gamma) "Asymmetry level of the relay controller" - annotation (Placement(transformation(extent={{-80,40},{-60,60}}))); + annotation (Placement(transformation(extent={{-80,70},{-60,90}}))); Buildings.Controls.OBC.CDL.Continuous.Divide div "Calculate the normalized time delay" annotation (Placement(transformation(extent={{40,-10},{60,10}}))); Buildings.Controls.OBC.CDL.Continuous.Subtract subGammaRho @@ -34,14 +34,18 @@ block NormalizedTimeDelay Buildings.Controls.OBC.CDL.Continuous.Multiply mul "Calculate the product of the output of addPar1 and that of addPar2" annotation (Placement(transformation(extent={{0,-48},{20,-28}}))); + Buildings.Controls.OBC.CDL.Utilities.Assert assMes( + final message="The asymmetry level should be larger than the half period ratio.") + "Error message when asymmetry level is less than the half period ratio" + annotation (Placement(transformation(extent={{60,50},{80,70}}))); + Buildings.Controls.OBC.CDL.Continuous.Greater gre( + final h=1e-6) + "Check if the asymmetry level is greater than the half period ratio" + annotation (Placement(transformation(extent={{-20,50},{0,70}}))); equation - assert( - gamma-rho>1E-6, - "The asymmetry level should be larger than the half period ratio. Check parameters."); - connect(subGammaRho.u1, asymmetryLevel.y) annotation (Line(points={{-2,26},{ - -52,26},{-52,50},{-58,50}}, - color={0,0,127})); + connect(subGammaRho.u1, asymmetryLevel.y) annotation (Line(points={{-2,26},{-52, + 26},{-52,80},{-58,80}}, color={0,0,127})); connect(subGammaRho.u2, rho) annotation (Line(points={{-2,14},{-42,14},{-42, 20},{-94,20},{-94,0},{-120,0}}, color={0,0,127})); connect(gai.u, rho) annotation (Line(points={{-82,-60},{-94,-60},{-94,0},{-120, @@ -57,9 +61,15 @@ equation connect(addPar2.y, mul.u2) annotation (Line(points={{-18,-60},{-10,-60},{-10,-44}, {-2,-44}}, color={0,0,127})); connect(addPar1.u, asymmetryLevel.y) annotation (Line(points={{-42,-10},{-52,-10}, - {-52,50},{-58,50}}, color={0,0,127})); + {-52,80},{-58,80}}, color={0,0,127})); connect(addPar1.y, mul.u1) annotation (Line(points={{-18,-10},{-10,-10},{-10,-32}, {-2,-32}}, color={0,0,127})); + connect(asymmetryLevel.y, gre.u1) annotation (Line(points={{-58,80},{-52,80},{ + -52,60},{-22,60}}, color={0,0,127})); + connect(rho, gre.u2) annotation (Line(points={{-120,0},{-94,0},{-94,52},{-22,52}}, + color={0,0,127})); + connect(gre.y, assMes.u) + annotation (Line(points={{2,60},{58,60}}, color={255,0,255})); annotation ( defaultComponentName = "norTimDel", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ @@ -80,12 +90,17 @@ First implementation
                        ", info=" -

                        This block calculates the normalized time delay of the responses from a relay controller.

                        +

                        +This block calculates the normalized time delay of the responses from a relay controller. +

                        Main equations

                        τ = (γ - ρ)/(γ - 1)/(ρ*0.35+0.65),

                        -

                        where γ and ρ are the asymmetry level of the relay controller and the half-period ratio, respectively.

                        +

                        +where γ and ρ are the asymmetry level of +the relay controller and the half-period ratio, respectively. +

                        Validation

                        This block was validated analytically, see diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo index bd79a7b9ce2..9d9698ad122 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo @@ -8,9 +8,9 @@ block OnOffPeriod annotation (Placement(transformation(extent={{-140,20},{-100,60}}), iconTransformation(extent={{-140,40},{-100,80}}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanInput On - "Relay switch signal" annotation (Placement(transformation( - extent={{-140,-90},{-100,-50}}), iconTransformation(extent={{-140,-80}, - {-100,-40}}))); + "Relay switch signal" + annotation (Placement(transformation(extent={{-140,-90},{-100,-50}}), + iconTransformation(extent={{-140,-80},{-100,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput tOff( final quantity="Time", final unit="s", @@ -59,22 +59,19 @@ equation connect(Off.u, On) annotation (Line(points={{-82,-70},{-120,-70}}, color={255,0,255})); connect(Off.y, timOff.trigger) annotation (Line(points={{-58,-70},{-30,-70},{ - -30,-52}}, - color={255,0,255})); + -30,-52}}, color={255,0,255})); connect(timOn.trigger, On) annotation (Line(points={{-30,28},{-30,20},{-92,20}, {-92,-70},{-120,-70}}, color={255,0,255})); connect(lenOffCal.u1, timOn.y) annotation (Line(points={{18,-24},{8,-24},{8, - 40},{-18,40}}, color={0,0,127})); + 40},{-18,40}}, color={0,0,127})); connect(lenOnCal.u2, timOn.y) annotation (Line(points={{18,34},{8,34},{8,40},{-18,40}},color={0,0,127})); connect(lenOnCal.u1, timOff.y) annotation (Line(points={{18,46},{0,46},{0,-40}, {-18,-40}},color={0,0,127})); connect(lenOffCal.u2, timOff.y) annotation (Line(points={{18,-36},{0,-36},{0, - -40},{-18,-40}}, - color={0,0,127})); + -40},{-18,-40}}, color={0,0,127})); connect(minLen.y, greTimOn.u2) - annotation (Line(points={{-38,0},{-10,0},{-10,62},{38,62}}, - color={0,0,127})); + annotation (Line(points={{-38,0},{-10,0},{-10,62},{38,62}}, color={0,0,127})); connect(lenOnCal.y, greTimOn.u1) annotation (Line(points={{42,40},{50,40},{50, 56},{20,56},{20,70},{38,70}}, color={0,0,127})); connect(greTimOff.u2, greTimOn.u2) annotation (Line(points={{38,-78},{-10,-78}, @@ -117,8 +114,11 @@ First implementation

                      ", info=" -

                      This block processes a relay swtich output signal and calculates the length of the On period (when the relay switch signal becomes True), -and the length of the Off period (when the relay switch signal becomes False), respectively. +

                      +This block processes a relay swtich output signal and calculates the length of +the On period (when the relay switch signal becomes true), +and the length of the Off period (when the relay switch signal becomes +false), respectively.

                      References

                      Josefin Berner (2017) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo index 47e4882ad08..89da3bbed7b 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo @@ -1,14 +1,14 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay; block ResponseProcess - "Calculates the lengths of the On period and the Off period, the half period ratio, as well as the times when the tuning starts and ends" + "Calculate the lengths of the On period and the Off period, the half period ratio, as well as the times when the tuning starts and ends" parameter Real yHig(min=1E-6) = 1 "Higher value for the output"; parameter Real yLow(min=1E-6) = 0.5 "Lower value for the output"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput On - "Relay switch signal" annotation (Placement(transformation( - extent={{-140,-80},{-100,-40}}), iconTransformation(extent={{-140,-80}, - {-100,-40}}))); + "Relay switch signal" + annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), + iconTransformation(extent={{-140,-80},{-100,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput tim( final quantity="Time", final unit="s") @@ -88,13 +88,39 @@ First implementation

                    ", info=" -

                    This block processes a relay swtich output signall and calculates

                    -

                    1) the length of the On period (when the relay switch signal becomes True);

                    -

                    2) the length of the Off period (when the relay switch signal becomes False);

                    -

                    3) the normalized time delay of the responses;

                    -

                    4) the flags which indicates if the tuning starts and completes, respectively.

                    -

                    For more details, please refer to Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.HalfPeriodRatio,

                    -

                    Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.NormalizedTimeDelay,

                    -

                    Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.OnOffPeriod.

                    +

                    +This block processes a relay swtich output signall and calculates: +

                    +
                      +
                    1. +the length of the On period (when the relay switch signal becomes true); +
                    2. +
                    3. +the length of the Off period (when the relay switch signal becomes false); +
                    4. +
                    5. +the normalized time delay of the responses; +
                    6. +
                    7. +the flags which indicates if the tuning starts and completes, respectively. +
                    8. +
                    +

                    +For more details, please refer to: +

                    + ")); end ResponseProcess; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo index b03c47a9a9e..aca5c91af91 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo @@ -1,6 +1,6 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed; block ControlProcessModel - "Identifies the parameters of a first order time delayed model for the control process" + "Identify the parameters of a first order time delayed model for the control process" parameter Real yHig(min=1E-6) = 1 "Higher value for the output"; parameter Real yLow(min=1E-6) = 0.5 @@ -14,27 +14,24 @@ block ControlProcessModel Buildings.Controls.OBC.CDL.Interfaces.RealInput tOn( final quantity="Time", final unit="s", - min=100*Buildings.Controls.OBC.CDL.Constants.eps - ) + min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Length for the On period" annotation (Placement(transformation(extent={{-140,20},{-100,60}}), iconTransformation(extent={{-140,20},{-100,60}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput tOff( final quantity="Time", final unit="s", - min=100*Buildings.Controls.OBC.CDL.Constants.eps - ) + min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Length for the Off period" annotation (Placement(transformation(extent={{-140,-60},{-100,-20}}), iconTransformation(extent={{-140,-60},{-100,-20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput tau( final quantity="Time", final unit="s", - min=100*Buildings.Controls.OBC.CDL.Constants.eps - ) - "Normalized time delay" annotation (Placement( - transformation(extent={{-140,-100},{-100,-60}}), iconTransformation( - extent={{-140,-100},{-100,-60}}))); + min=100*Buildings.Controls.OBC.CDL.Constants.eps) + "Normalized time delay" + annotation (Placement(transformation(extent={{-140,-100},{-100,-60}}), + iconTransformation(extent={{-140,-100},{-100,-60}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput k "Gain" annotation (Placement(transformation(extent={{100,36},{140,86}}))); @@ -63,36 +60,39 @@ block ControlProcessModel "Calculate the time constant and the time delay" annotation (Placement(transformation(extent={{0,-10},{20,10}}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanInput triSta - "Relay tuning status, true if the tuning starts" annotation (Placement( - transformation( - extent={{-20,-20},{20,20}}, - rotation=90, - origin={-60,-120}))); + "Relay tuning status, true if the tuning starts" + annotation (Placement(transformation(extent={{-20,-20},{20,20}}, + rotation=90, origin={-60,-120}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanInput triEnd - "Relay tuning status, true if the tuning ends" annotation (Placement( - transformation( - extent={{-20,-20},{20,20}}, - rotation=90, - origin={60,-120}))); - Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samT(y_start=1) + "Relay tuning status, true if the tuning ends" + annotation (Placement(transformation(extent={{-20,-20},{20,20}}, + rotation=90, origin={60,-120}))); + Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samT( + final y_start=1) "Sample the time constant when the tuning period ends" annotation (Placement(transformation(extent={{70,-10},{90,10}}))); - Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samL(y_start=1) + Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samL( + final y_start=1) "Sample the time delay when the tuning period ends" annotation (Placement(transformation(extent={{44,-90},{64,-70}}))); - Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samk(y_start=1) + Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samk( + final y_start=1) "Sample the gain when the tuning period ends" annotation (Placement(transformation(extent={{-54,-10},{-34,10}}))); - Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samtOn(y_start=1) + Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samtOn( + final y_start=1) "Sample the length of the On period when the tuning period ends" annotation (Placement(transformation(extent={{-70,30},{-50,50}}))); - Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samtau(y_start=0.5) + Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samtau( + final y_start=0.5) "Sample the normalized time delay" annotation (Placement(transformation(extent={{-70,-70},{-50,-90}}))); - Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai(k=-1) + Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai( + final k=-1) "Product of the normalized time delay and -1" annotation (Placement(transformation(extent={{-36,-90},{-16,-70}}))); - Buildings.Controls.OBC.CDL.Continuous.AddParameter addPar(p=1) + Buildings.Controls.OBC.CDL.Continuous.AddParameter addPar( + final p=1) "Difference between 1 and the normalized time delay" annotation (Placement(transformation(extent={{-8,-90},{12,-70}}))); Buildings.Controls.OBC.CDL.Continuous.Divide div @@ -169,7 +169,10 @@ First implementation
                  ", info="

                  This block calculates the parameters of a first-order time-delayed model.

                  -

                  For more details, please refer to Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Gain,

                  -

                  Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.TimeConstantDelay.

                  +

                  For more details, please refer to + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Gain,

                  +

                  +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.TimeConstantDelay.

                  ")); end ControlProcessModel; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Gain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Gain.mo index 704453c44be..c2331be08a5 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Gain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Gain.mo @@ -1,5 +1,5 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed; -block Gain "Identifies the gain of a first order time delayed model" +block Gain "Identify the gain of a first order time delayed model" parameter Real yHig(min=1E-6) = 1 "Higher value for the output (assuming the reference output is 0)"; parameter Real yLow(min=1E-6) = 0.5 @@ -23,11 +23,9 @@ block Gain "Identifies the gain of a first order time delayed model" annotation (Placement(transformation(extent={{-140,-100},{-100,-60}}), iconTransformation(extent={{-140,-100},{-100,-60}}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanInput triSta - "Relay tuning status, true if the tuning starts" annotation (Placement( - transformation( - extent={{-20,-20},{20,20}}, - rotation=90, - origin={0,-120}))); + "Relay tuning status, true if the tuning starts" + annotation (Placement(transformation(extent={{-20,-20},{20,20}}, + rotation=90, origin={0,-120}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput k "Gain" annotation (Placement(transformation(extent={{100,-20},{140,20}}))); @@ -35,7 +33,8 @@ block Gain "Identifies the gain of a first order time delayed model" "Integral of the relay output" annotation (Placement(transformation(extent={{-40,-50},{-20,-30}}))); Buildings.Controls.OBC.CDL.Continuous.IntegratorWithReset Iy( - final k=1,y_start=1E-11) + final k=1, + final y_start=1E-11) "Integral of the process output" annotation (Placement(transformation(extent={{-40,30},{-20,50}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.Constant refRelOut( @@ -101,7 +100,10 @@ First implementation

                  k = Iy/Iu,

                  -

                  where Iy and Iu are the integral of the process output and the integral of the relay output, respectively.

                  +

                  +where Iy and Iu are the integral of the process +output and the integral of the relay output, respectively. +

                  Iy is calculated by

                  Iy = ∫ u(t) dt;

                  where u is the process output.

                  @@ -109,11 +111,17 @@ k = Iy/Iu,

                  Iu = ton (yhig - yref)+ toff(-ylow - yref),

                  -

                  where yhig and ylow are the higher value and the lower value of the relay control output, respectively.

                  -

                  yref is the reference value of the relay output.

                  -

                  ton and toff are the length of the On period and the Off period, respectively.

                  -

                  During an On period, the relay switch signal becomes True;

                  -

                  During an Off period, the relay switch signal becomes False.

                  +

                  +where yhig and ylow are the higher value +and the lower value of the relay control output, respectively. +yref is the reference value of the relay output. +ton and toff are the length of the On +period and the Off period, respectively. +

                  +

                  +During an On period, the relay switch signal becomes true. +During an Off period, the relay switch signal becomes false. +

                  References

                  Josefin Berner (2017). \"Automatic Controller Tuning using Relay-based Model Identification\". diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/TimeConstantDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/TimeConstantDelay.mo index 0e3e8b2ee73..2ceeec24dc8 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/TimeConstantDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/TimeConstantDelay.mo @@ -1,6 +1,6 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed; block TimeConstantDelay - "Calculates the time constant and the time delay of a first order time delayed model" + "Calculate the time constant and the time delay of a first order time delayed model" parameter Real yHig(min=1E-6) = 1 "Higher value for the output (assuming the reference output is 0)"; parameter Real yLow(min=1E-6) = 0.5 @@ -149,18 +149,27 @@ First implementation

                ", info=" -

                This block calculates the time constant and the time delay of a first-order time-delayed model

                +

                +This block calculates the time constant and the time delay of a first-order time-delayed model. +

                Main equations

                -

                The time constant, T, is calculated by

                +

                +The time constant, T, is calculated by +

                T = ton/(ln((δ/|k|-yhig+exp(τ/(1 - τ))(yhig + ylow))/(yhig-δ/|k|))),

                -

                where yhig and ylow are the higher value and the lower value of the relay control output, respectively,

                -

                ton is the length of the On period,

                -

                δ is the dead band of a relay controller,

                -

                k is the gain of the first-order time-delayed model.

                -

                τ is the normalized time delay.

                -

                The time delay, L, is calculated by

                +

                +where yhig and ylow are the higher value +and the lower value of the relay control output, respectively. +ton is the length of the On period. +δ is the dead band of a relay controller. +k is the gain of the first-order time-delayed model. +τ is the normalized time delay. +

                +

                +The time delay, L, is calculated by +

                L = T τ/(1 - τ),

                diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo index fe7093c5229..f83050462e9 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo @@ -93,12 +93,16 @@ Validation test for the block Buildings.Controls.OBC.Utilities.PIDWithAutotuning.FirstOrderAMIGO.

                -This example is to compare the output of a PID controller (PIDWitTun) with an autotuning feature to that of another PID controller (PID) with arbitary gains +This example is to compare the output of a PID controller (PIDWitTun) +with an autotuning feature to that of another PID controller (PID) +with arbitary gains.

                Both PID controllers are connected with a first-order control process. -Under the control of PIDWitTun, the value of the controlled variable is close to the setpoint after the tuning period ends (PIDWitTun.resPro.triEnd = true). -On the contrary, PID has a poor control performance, i.e., the value of the controlled variable oscillates, without an autotuning setup. +Under the control of PIDWitTun, the value of the controlled variable +is close to the setpoint after the tuning period ends (PIDWitTun.resPro.triEnd = true). +On the contrary, PID has a poor control performance, +i.e., the value of the controlled variable oscillates, without an autotuning setup.

                ", revisions=" diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo index ada2400bf18..8d341b6263f 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo @@ -93,12 +93,16 @@ Validation test for the block Buildings.Controls.OBC.Utilities.PIDWithAutotuning.FirstOrderAMIGO.

                -This example is to compare the output of a PI controller (PIWitTun) with an autotuning feature to that of another PI controller (PI) with arbitary gains +This example is to compare the output of a PI controller (PIWitTun) +with an autotuning feature to that of another PI controller (PI) +with arbitary gains.

                Both PI controllers are connected with a first-order control process. -Under the control of PIWitTun, the value of the controlled variable is close to the setpoint after the tuning period ends (PIWitTun.resPro.triEnd = true). -On the contrary, PI has a poor control performance, i.e., the value of the controlled variable oscillates, without an autotuning setup. +Under the control of PIWitTun, the value of the controlled variable +is close to the setpoint after the tuning period ends (PIWitTun.resPro.triEnd = true). +On the contrary, PI has a poor control performance, +i.e., the value of the controlled variable oscillates, without an autotuning setup.

                ", revisions=" From 84947431356265de2317c9e6906a27b35b3549e9 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Fri, 10 Mar 2023 14:49:40 -0500 Subject: [PATCH 057/214] update the model doc --- .../OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo | 6 +++--- .../Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo | 6 ++++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo index 26fef3f72c5..a21c57c30fd 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo @@ -86,8 +86,8 @@ equation coordinateSystem(preserveAspectRatio=false)), Documentation(info="

                -This block grenerates a real control output signal, y, and a -boolean control switch signal, yOn, as described below: +This block grenerates a real control output, y, and a +boolean control switch output, yOn, as described below:

                • @@ -106,7 +106,7 @@ are the higher value and the lower value of the output y, and t-Δt is the previous time step.

                  -Note that this block generates an asymmetric signal, meaning yhig ≠ ylow. +Note that this block generates an asymmetric output, meaning yhig ≠ ylow.

                  References

                  Josefin Berner (2017) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo index 96537bc53a4..9ce6db70ce8 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo @@ -171,8 +171,10 @@ First implementation
                  where ton and toff are the length of the On period and the Off period, respectively.

                  -

                  During an On period, the relay switch signal becomes True; -During an Off period, the relay switch signal becomes False.

                  +

                  An On period is defined as the period when the switch output of the relay controller is True; +Likewise, an Off period is defined as the period when the switch output is False. +See details of the switch output in +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Controller

                  Note that only the first On period and the first Off period are considered.

                  Algorithm

                  From 54ee248193088fa67c3a9966de3f170bf4240a62 Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Thu, 16 Mar 2023 14:51:22 -0700 Subject: [PATCH 058/214] improving test --- .../PIDWithAutotuning/Relay/HalfPeriodRatio.mo | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo index 9ce6db70ce8..482d1c571bf 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo @@ -171,18 +171,22 @@ First implementation
                  where ton and toff are the length of the On period and the Off period, respectively.

                  -

                  An On period is defined as the period when the switch output of the relay controller is True; +

                  +An On period is defined as the period when the switch output of the relay controller is True; Likewise, an Off period is defined as the period when the switch output is False. See details of the switch output in -Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Controller

                  -

                  Note that only the first On period and the first Off period are considered.

                  +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Controller. +

                  +

                  +Note that only the first On period and the first Off period are considered. +

                  Algorithm

                  The algorithm for calculating ρ is as follows:

                  Step 1: detects when the tuning period begins.

                  -The tuning period is triggered to begin when either ton +The tuning period is triggered to begin when either ton or toff are larger than 0. In this implementation, we detect the beginning time by monitoring the sum of ton and toff. From efde60f0627705f98ebab19fcf3fe6eb4fa4a3ee Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Thu, 6 Apr 2023 22:03:03 -0400 Subject: [PATCH 059/214] condense the reference data for validation --- .../AutoTuner/AMIGO/Validation/PI.mo | 266 +-------------- .../AutoTuner/AMIGO/Validation/PID.mo | 309 +----------------- .../AMIGO/Validation/PIDDerivativeTime.mo | 309 +----------------- .../AutoTuner/AMIGO/Validation/PIDGain.mo | 309 +----------------- .../AMIGO/Validation/PIDIntegralTime.mo | 309 +----------------- .../AutoTuner/AMIGO/Validation/PIGain.mo | 267 +-------------- .../AMIGO/Validation/PIIntegralTime.mo | 267 +-------------- .../Relay/Validation/NormalizedTimeDelay.mo | 103 +----- .../Validation/ControlProcessModel.mo | 267 +-------------- .../Validation/TimeConstantDelay.mo | 211 +----------- 10 files changed, 61 insertions(+), 2556 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo index 67d166bc72f..fa43496df18 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo @@ -4,267 +4,11 @@ model PI "Test model for PI" "Calculate the parameters for a PI controller" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable RefDat(table=[0,1,0.5, - 0.3,0.343,0.469; 0.002,1.002,0.501,0.301,0.342,0.47; 0.004,1.004,0.502, - 0.301,0.341,0.471; 0.006,1.006,0.503,0.302,0.341,0.472; 0.008,1.008, - 0.504,0.302,0.34,0.473; 0.01,1.01,0.505,0.303,0.339,0.473; 0.012,1.012, - 0.506,0.304,0.339,0.474; 0.014,1.014,0.507,0.304,0.338,0.475; 0.016, - 1.016,0.508,0.305,0.337,0.476; 0.018,1.018,0.509,0.305,0.337,0.477; - 0.02,1.02,0.51,0.306,0.336,0.478; 0.022,1.022,0.511,0.307,0.335,0.479; - 0.024,1.024,0.512,0.307,0.335,0.48; 0.026,1.026,0.513,0.308,0.334,0.481; - 0.028,1.028,0.514,0.308,0.333,0.482; 0.03,1.03,0.515,0.309,0.333,0.483; - 0.032,1.032,0.516,0.31,0.332,0.484; 0.034,1.034,0.517,0.31,0.331,0.485; - 0.036,1.036,0.518,0.311,0.331,0.486; 0.038,1.038,0.519,0.311,0.33,0.487; - 0.04,1.04,0.52,0.312,0.33,0.488; 0.042,1.042,0.521,0.313,0.329,0.488; - 0.044,1.044,0.522,0.313,0.328,0.489; 0.046,1.046,0.523,0.314,0.328,0.49; - 0.048,1.048,0.524,0.314,0.327,0.491; 0.05,1.05,0.525,0.315,0.326,0.492; - 0.052,1.052,0.526,0.316,0.326,0.493; 0.054,1.054,0.527,0.316,0.325, - 0.494; 0.056,1.056,0.528,0.317,0.325,0.495; 0.058,1.058,0.529,0.317, - 0.324,0.496; 0.06,1.06,0.53,0.318,0.323,0.497; 0.062,1.062,0.531,0.319, - 0.323,0.498; 0.064,1.064,0.532,0.319,0.322,0.499; 0.066,1.066,0.533, - 0.32,0.321,0.5; 0.068,1.068,0.534,0.32,0.321,0.501; 0.07,1.07,0.535, - 0.321,0.32,0.502; 0.072,1.072,0.536,0.322,0.32,0.503; 0.074,1.074,0.537, - 0.322,0.319,0.503; 0.076,1.076,0.538,0.323,0.319,0.504; 0.078,1.078, - 0.539,0.323,0.318,0.505; 0.08,1.08,0.54,0.324,0.317,0.506; 0.082,1.082, - 0.541,0.325,0.317,0.507; 0.084,1.084,0.542,0.325,0.316,0.508; 0.086, - 1.086,0.543,0.326,0.316,0.509; 0.088,1.088,0.544,0.326,0.315,0.51; 0.09, - 1.09,0.545,0.327,0.314,0.511; 0.092,1.092,0.546,0.328,0.314,0.512; - 0.094,1.094,0.547,0.328,0.313,0.513; 0.096,1.096,0.548,0.329,0.313, - 0.514; 0.098,1.098,0.549,0.329,0.312,0.515; 0.1,1.1,0.55,0.33,0.312, - 0.516; 0.102,1.102,0.551,0.331,0.311,0.517; 0.104,1.104,0.552,0.331, - 0.31,0.518; 0.106,1.106,0.553,0.332,0.31,0.518; 0.108,1.108,0.554,0.332, - 0.309,0.519; 0.11,1.11,0.555,0.333,0.309,0.52; 0.112,1.112,0.556,0.334, - 0.308,0.521; 0.114,1.114,0.557,0.334,0.308,0.522; 0.116,1.116,0.558, - 0.335,0.307,0.523; 0.118,1.118,0.559,0.335,0.307,0.524; 0.12,1.12,0.56, - 0.336,0.306,0.525; 0.122,1.122,0.561,0.337,0.305,0.526; 0.124,1.124, - 0.562,0.337,0.305,0.527; 0.126,1.126,0.563,0.338,0.304,0.528; 0.128, - 1.128,0.564,0.338,0.304,0.529; 0.13,1.13,0.565,0.339,0.303,0.53; 0.132, - 1.132,0.566,0.34,0.303,0.531; 0.134,1.134,0.567,0.34,0.302,0.532; 0.136, - 1.136,0.568,0.341,0.302,0.533; 0.138,1.138,0.569,0.341,0.301,0.534; - 0.14,1.14,0.57,0.342,0.301,0.534; 0.142,1.142,0.571,0.343,0.3,0.535; - 0.144,1.144,0.572,0.343,0.3,0.536; 0.146,1.146,0.573,0.344,0.299,0.537; - 0.148,1.148,0.574,0.344,0.299,0.538; 0.15,1.15,0.575,0.345,0.298,0.539; - 0.152,1.152,0.576,0.346,0.297,0.54; 0.154,1.154,0.577,0.346,0.297,0.541; - 0.156,1.156,0.578,0.347,0.296,0.542; 0.158,1.158,0.579,0.347,0.296, - 0.543; 0.16,1.16,0.58,0.348,0.295,0.544; 0.162,1.162,0.581,0.349,0.295, - 0.545; 0.164,1.164,0.582,0.349,0.294,0.546; 0.166,1.166,0.583,0.35, - 0.294,0.547; 0.168,1.168,0.584,0.35,0.293,0.548; 0.17,1.17,0.585,0.351, - 0.293,0.549; 0.172,1.172,0.586,0.352,0.292,0.549; 0.174,1.174,0.587, - 0.352,0.292,0.55; 0.176,1.176,0.588,0.353,0.291,0.551; 0.178,1.178, - 0.589,0.353,0.291,0.552; 0.18,1.18,0.59,0.354,0.29,0.553; 0.182,1.182, - 0.591,0.355,0.29,0.554; 0.184,1.184,0.592,0.355,0.289,0.555; 0.186, - 1.186,0.593,0.356,0.289,0.556; 0.188,1.188,0.594,0.356,0.288,0.557; - 0.19,1.19,0.595,0.357,0.288,0.558; 0.192,1.192,0.596,0.358,0.288,0.559; - 0.194,1.194,0.597,0.358,0.287,0.56; 0.196,1.196,0.598,0.359,0.287,0.561; - 0.198,1.198,0.599,0.359,0.286,0.562; 0.2,1.2,0.6,0.36,0.286,0.563; - 0.202,1.202,0.601,0.361,0.285,0.564; 0.204,1.204,0.602,0.361,0.285, - 0.564; 0.206,1.206,0.603,0.362,0.284,0.565; 0.208,1.208,0.604,0.362, - 0.284,0.566; 0.21,1.21,0.605,0.363,0.283,0.567; 0.212,1.212,0.606,0.364, - 0.283,0.568; 0.214,1.214,0.607,0.364,0.282,0.569; 0.216,1.216,0.608, - 0.365,0.282,0.57; 0.218,1.218,0.609,0.365,0.281,0.571; 0.22,1.22,0.61, - 0.366,0.281,0.572; 0.222,1.222,0.611,0.367,0.28,0.573; 0.224,1.224, - 0.612,0.367,0.28,0.574; 0.226,1.226,0.613,0.368,0.28,0.575; 0.228,1.228, - 0.614,0.368,0.279,0.576; 0.23,1.23,0.615,0.369,0.279,0.577; 0.232,1.232, - 0.616,0.37,0.278,0.578; 0.234,1.234,0.617,0.37,0.278,0.579; 0.236,1.236, - 0.618,0.371,0.277,0.579; 0.238,1.238,0.619,0.371,0.277,0.58; 0.24,1.24, - 0.62,0.372,0.276,0.581; 0.242,1.242,0.621,0.373,0.276,0.582; 0.244, - 1.244,0.622,0.373,0.275,0.583; 0.246,1.246,0.623,0.374,0.275,0.584; - 0.248,1.248,0.624,0.374,0.275,0.585; 0.25,1.25,0.625,0.375,0.274,0.586; - 0.252,1.252,0.626,0.376,0.274,0.587; 0.254,1.254,0.627,0.376,0.273, - 0.588; 0.256,1.256,0.628,0.377,0.273,0.589; 0.258,1.258,0.629,0.377, - 0.272,0.59; 0.26,1.26,0.63,0.378,0.272,0.591; 0.262,1.262,0.631,0.379, - 0.272,0.592; 0.264,1.264,0.632,0.379,0.271,0.593; 0.266,1.266,0.633, - 0.38,0.271,0.594; 0.268,1.268,0.634,0.38,0.27,0.594; 0.27,1.27,0.635, - 0.381,0.27,0.595; 0.272,1.272,0.636,0.382,0.269,0.596; 0.274,1.274, - 0.637,0.382,0.269,0.597; 0.276,1.276,0.638,0.383,0.269,0.598; 0.278, - 1.278,0.639,0.383,0.268,0.599; 0.28,1.28,0.64,0.384,0.268,0.6; 0.282, - 1.282,0.641,0.385,0.267,0.601; 0.284,1.284,0.642,0.385,0.267,0.602; - 0.286,1.286,0.643,0.386,0.266,0.603; 0.288,1.288,0.644,0.386,0.266, - 0.604; 0.29,1.29,0.645,0.387,0.266,0.605; 0.292,1.292,0.646,0.388,0.265, - 0.606; 0.294,1.294,0.647,0.388,0.265,0.607; 0.296,1.296,0.648,0.389, - 0.264,0.608; 0.298,1.298,0.649,0.389,0.264,0.609; 0.3,1.3,0.65,0.39, - 0.264,0.609; 0.302,1.302,0.651,0.391,0.263,0.61; 0.304,1.304,0.652, - 0.391,0.263,0.611; 0.306,1.306,0.653,0.392,0.262,0.612; 0.308,1.308, - 0.654,0.392,0.262,0.613; 0.31,1.31,0.655,0.393,0.262,0.614; 0.312,1.312, - 0.656,0.394,0.261,0.615; 0.314,1.314,0.657,0.394,0.261,0.616; 0.316, - 1.316,0.658,0.395,0.26,0.617; 0.318,1.318,0.659,0.395,0.26,0.618; 0.32, - 1.32,0.66,0.396,0.26,0.619; 0.322,1.322,0.661,0.397,0.259,0.62; 0.324, - 1.324,0.662,0.397,0.259,0.621; 0.326,1.326,0.663,0.398,0.258,0.622; - 0.328,1.328,0.664,0.398,0.258,0.623; 0.33,1.33,0.665,0.399,0.258,0.624; - 0.332,1.332,0.666,0.4,0.257,0.624; 0.334,1.334,0.667,0.4,0.257,0.625; - 0.336,1.336,0.668,0.401,0.257,0.626; 0.338,1.338,0.669,0.401,0.256, - 0.627; 0.34,1.34,0.67,0.402,0.256,0.628; 0.342,1.342,0.671,0.403,0.255, - 0.629; 0.344,1.344,0.672,0.403,0.255,0.63; 0.346,1.346,0.673,0.404, - 0.255,0.631; 0.348,1.348,0.674,0.404,0.254,0.632; 0.35,1.35,0.675,0.405, - 0.254,0.633; 0.352,1.352,0.676,0.406,0.253,0.634; 0.354,1.354,0.677, - 0.406,0.253,0.635; 0.356,1.356,0.678,0.407,0.253,0.636; 0.358,1.358, - 0.679,0.407,0.252,0.637; 0.36,1.36,0.68,0.408,0.252,0.638; 0.362,1.362, - 0.681,0.409,0.252,0.639; 0.364,1.364,0.682,0.409,0.251,0.639; 0.366, - 1.366,0.683,0.41,0.251,0.64; 0.368,1.368,0.684,0.41,0.251,0.641; 0.37, - 1.37,0.685,0.411,0.25,0.642; 0.372,1.372,0.686,0.412,0.25,0.643; 0.374, - 1.374,0.687,0.412,0.249,0.644; 0.376,1.376,0.688,0.413,0.249,0.645; - 0.378,1.378,0.689,0.413,0.249,0.646; 0.38,1.38,0.69,0.414,0.248,0.647; - 0.382,1.382,0.691,0.415,0.248,0.648; 0.384,1.384,0.692,0.415,0.248, - 0.649; 0.386,1.386,0.693,0.416,0.247,0.65; 0.388,1.388,0.694,0.416, - 0.247,0.651; 0.39,1.39,0.695,0.417,0.247,0.652; 0.392,1.392,0.696,0.418, - 0.246,0.653; 0.394,1.394,0.697,0.418,0.246,0.654; 0.396,1.396,0.698, - 0.419,0.245,0.654; 0.398,1.398,0.699,0.419,0.245,0.655; 0.4,1.4,0.7, - 0.42,0.245,0.656; 0.402,1.402,0.701,0.421,0.244,0.657; 0.404,1.404, - 0.702,0.421,0.244,0.658; 0.406,1.406,0.703,0.422,0.244,0.659; 0.408, - 1.408,0.704,0.422,0.243,0.66; 0.41,1.41,0.705,0.423,0.243,0.661; 0.412, - 1.412,0.706,0.424,0.243,0.662; 0.414,1.414,0.707,0.424,0.242,0.663; - 0.416,1.416,0.708,0.425,0.242,0.664; 0.418,1.418,0.709,0.425,0.242, - 0.665; 0.42,1.42,0.71,0.426,0.241,0.666; 0.422,1.422,0.711,0.427,0.241, - 0.667; 0.424,1.424,0.712,0.427,0.241,0.668; 0.426,1.426,0.713,0.428, - 0.24,0.669; 0.428,1.428,0.714,0.428,0.24,0.669; 0.43,1.43,0.715,0.429, - 0.24,0.67; 0.432,1.432,0.716,0.43,0.239,0.671; 0.434,1.434,0.717,0.43, - 0.239,0.672; 0.436,1.436,0.718,0.431,0.239,0.673; 0.438,1.438,0.719, - 0.431,0.238,0.674; 0.44,1.44,0.72,0.432,0.238,0.675; 0.442,1.442,0.721, - 0.433,0.238,0.676; 0.444,1.444,0.722,0.433,0.237,0.677; 0.446,1.446, - 0.723,0.434,0.237,0.678; 0.448,1.448,0.724,0.434,0.237,0.679; 0.45,1.45, - 0.725,0.435,0.236,0.68; 0.452,1.452,0.726,0.436,0.236,0.681; 0.454, - 1.454,0.727,0.436,0.236,0.682; 0.456,1.456,0.728,0.437,0.235,0.683; - 0.458,1.458,0.729,0.437,0.235,0.684; 0.46,1.46,0.73,0.438,0.235,0.684; - 0.462,1.462,0.731,0.439,0.234,0.685; 0.464,1.464,0.732,0.439,0.234, - 0.686; 0.466,1.466,0.733,0.44,0.234,0.687; 0.468,1.468,0.734,0.44,0.233, - 0.688; 0.47,1.47,0.735,0.441,0.233,0.689; 0.472,1.472,0.736,0.442,0.233, - 0.69; 0.474,1.474,0.737,0.442,0.233,0.691; 0.476,1.476,0.738,0.443, - 0.232,0.692; 0.478,1.478,0.739,0.443,0.232,0.693; 0.48,1.48,0.74,0.444, - 0.232,0.694; 0.482,1.482,0.741,0.445,0.231,0.695; 0.484,1.484,0.742, - 0.445,0.231,0.696; 0.486,1.486,0.743,0.446,0.231,0.697; 0.488,1.488, - 0.744,0.446,0.23,0.698; 0.49,1.49,0.745,0.447,0.23,0.699; 0.492,1.492, - 0.746,0.448,0.23,0.699; 0.494,1.494,0.747,0.448,0.229,0.7; 0.496,1.496, - 0.748,0.449,0.229,0.701; 0.498,1.498,0.749,0.449,0.229,0.702; 0.5,1.5, - 0.75,0.45,0.228,0.703; 0.502,1.502,0.751,0.451,0.228,0.704; 0.504,1.504, - 0.752,0.451,0.228,0.705; 0.506,1.506,0.753,0.452,0.228,0.706; 0.508, - 1.508,0.754,0.452,0.227,0.707; 0.51,1.51,0.755,0.453,0.227,0.708; 0.512, - 1.512,0.756,0.454,0.227,0.709; 0.514,1.514,0.757,0.454,0.226,0.71; - 0.516,1.516,0.758,0.455,0.226,0.711; 0.518,1.518,0.759,0.455,0.226, - 0.712; 0.52,1.52,0.76,0.456,0.225,0.713; 0.522,1.522,0.761,0.457,0.225, - 0.714; 0.524,1.524,0.762,0.457,0.225,0.714; 0.526,1.526,0.763,0.458, - 0.225,0.715; 0.528,1.528,0.764,0.458,0.224,0.716; 0.53,1.53,0.765,0.459, - 0.224,0.717; 0.532,1.532,0.766,0.46,0.224,0.718; 0.534,1.534,0.767,0.46, - 0.223,0.719; 0.536,1.536,0.768,0.461,0.223,0.72; 0.538,1.538,0.769, - 0.461,0.223,0.721; 0.54,1.54,0.77,0.462,0.223,0.722; 0.542,1.542,0.771, - 0.463,0.222,0.723; 0.544,1.544,0.772,0.463,0.222,0.724; 0.546,1.546, - 0.773,0.464,0.222,0.725; 0.548,1.548,0.774,0.464,0.221,0.726; 0.55,1.55, - 0.775,0.465,0.221,0.727; 0.552,1.552,0.776,0.466,0.221,0.728; 0.554, - 1.554,0.777,0.466,0.221,0.729; 0.556,1.556,0.778,0.467,0.22,0.729; - 0.558,1.558,0.779,0.467,0.22,0.73; 0.56,1.56,0.78,0.468,0.22,0.731; - 0.562,1.562,0.781,0.469,0.219,0.732; 0.564,1.564,0.782,0.469,0.219, - 0.733; 0.566,1.566,0.783,0.47,0.219,0.734; 0.568,1.568,0.784,0.47,0.219, - 0.735; 0.57,1.57,0.785,0.471,0.218,0.736; 0.572,1.572,0.786,0.472,0.218, - 0.737; 0.574,1.574,0.787,0.472,0.218,0.738; 0.576,1.576,0.788,0.473, - 0.217,0.739; 0.578,1.578,0.789,0.473,0.217,0.74; 0.58,1.58,0.79,0.474, - 0.217,0.741; 0.582,1.582,0.791,0.475,0.217,0.742; 0.584,1.584,0.792, - 0.475,0.216,0.743; 0.586,1.586,0.793,0.476,0.216,0.744; 0.588,1.588, - 0.794,0.476,0.216,0.744; 0.59,1.59,0.795,0.477,0.216,0.745; 0.592,1.592, - 0.796,0.478,0.215,0.746; 0.594,1.594,0.797,0.478,0.215,0.747; 0.596, - 1.596,0.798,0.479,0.215,0.748; 0.598,1.598,0.799,0.479,0.214,0.749; 0.6, - 1.6,0.8,0.48,0.214,0.75; 0.602,1.602,0.801,0.481,0.214,0.751; 0.604, - 1.604,0.802,0.481,0.214,0.752; 0.606,1.606,0.803,0.482,0.213,0.753; - 0.608,1.608,0.804,0.482,0.213,0.754; 0.61,1.61,0.805,0.483,0.213,0.755; - 0.612,1.612,0.806,0.484,0.213,0.756; 0.614,1.614,0.807,0.484,0.212, - 0.757; 0.616,1.616,0.808,0.485,0.212,0.758; 0.618,1.618,0.809,0.485, - 0.212,0.759; 0.62,1.62,0.81,0.486,0.212,0.759; 0.622,1.622,0.811,0.487, - 0.211,0.76; 0.624,1.624,0.812,0.487,0.211,0.761; 0.626,1.626,0.813, - 0.488,0.211,0.762; 0.628,1.628,0.814,0.488,0.211,0.763; 0.63,1.63,0.815, - 0.489,0.21,0.764; 0.632,1.632,0.816,0.49,0.21,0.765; 0.634,1.634,0.817, - 0.49,0.21,0.766; 0.636,1.636,0.818,0.491,0.209,0.767; 0.638,1.638,0.819, - 0.491,0.209,0.768; 0.64,1.64,0.82,0.492,0.209,0.769; 0.642,1.642,0.821, - 0.493,0.209,0.77; 0.644,1.644,0.822,0.493,0.208,0.771; 0.646,1.646, - 0.823,0.494,0.208,0.772; 0.648,1.648,0.824,0.494,0.208,0.773; 0.65,1.65, - 0.825,0.495,0.208,0.774; 0.652,1.652,0.826,0.496,0.207,0.774; 0.654, - 1.654,0.827,0.496,0.207,0.775; 0.656,1.656,0.828,0.497,0.207,0.776; - 0.658,1.658,0.829,0.497,0.207,0.777; 0.66,1.66,0.83,0.498,0.206,0.778; - 0.662,1.662,0.831,0.499,0.206,0.779; 0.664,1.664,0.832,0.499,0.206,0.78; - 0.666,1.666,0.833,0.5,0.206,0.781; 0.668,1.668,0.834,0.5,0.205,0.782; - 0.67,1.67,0.835,0.501,0.205,0.783; 0.672,1.672,0.836,0.502,0.205,0.784; - 0.674,1.674,0.837,0.502,0.205,0.785; 0.676,1.676,0.838,0.503,0.204, - 0.786; 0.678,1.678,0.839,0.503,0.204,0.787; 0.68,1.68,0.84,0.504,0.204, - 0.788; 0.682,1.682,0.841,0.505,0.204,0.789; 0.684,1.684,0.842,0.505, - 0.204,0.789; 0.686,1.686,0.843,0.506,0.203,0.79; 0.688,1.688,0.844, - 0.506,0.203,0.791; 0.69,1.69,0.845,0.507,0.203,0.792; 0.692,1.692,0.846, - 0.508,0.203,0.793; 0.694,1.694,0.847,0.508,0.202,0.794; 0.696,1.696, - 0.848,0.509,0.202,0.795; 0.698,1.698,0.849,0.509,0.202,0.796; 0.7,1.7, - 0.85,0.51,0.202,0.797; 0.702,1.702,0.851,0.511,0.201,0.798; 0.704,1.704, - 0.852,0.511,0.201,0.799; 0.706,1.706,0.853,0.512,0.201,0.8; 0.708,1.708, - 0.854,0.512,0.201,0.801; 0.71,1.71,0.855,0.513,0.2,0.802; 0.712,1.712, - 0.856,0.514,0.2,0.803; 0.714,1.714,0.857,0.514,0.2,0.804; 0.716,1.716, - 0.858,0.515,0.2,0.804; 0.718,1.718,0.859,0.515,0.199,0.805; 0.72,1.72, - 0.86,0.516,0.199,0.806; 0.722,1.722,0.861,0.517,0.199,0.807; 0.724, - 1.724,0.862,0.517,0.199,0.808; 0.726,1.726,0.863,0.518,0.199,0.809; - 0.728,1.728,0.864,0.518,0.198,0.81; 0.73,1.73,0.865,0.519,0.198,0.811; - 0.732,1.732,0.866,0.52,0.198,0.812; 0.734,1.734,0.867,0.52,0.198,0.813; - 0.736,1.736,0.868,0.521,0.197,0.814; 0.738,1.738,0.869,0.521,0.197, - 0.815; 0.74,1.74,0.87,0.522,0.197,0.816; 0.742,1.742,0.871,0.523,0.197, - 0.817; 0.744,1.744,0.872,0.523,0.197,0.818; 0.746,1.746,0.873,0.524, - 0.196,0.819; 0.748,1.748,0.874,0.524,0.196,0.819; 0.75,1.75,0.875,0.525, - 0.196,0.82; 0.752,1.752,0.876,0.526,0.196,0.821; 0.754,1.754,0.877, - 0.526,0.195,0.822; 0.756,1.756,0.878,0.527,0.195,0.823; 0.758,1.758, - 0.879,0.527,0.195,0.824; 0.76,1.76,0.88,0.528,0.195,0.825; 0.762,1.762, - 0.881,0.529,0.194,0.826; 0.764,1.764,0.882,0.529,0.194,0.827; 0.766, - 1.766,0.883,0.53,0.194,0.828; 0.768,1.768,0.884,0.53,0.194,0.829; 0.77, - 1.77,0.885,0.531,0.194,0.83; 0.772,1.772,0.886,0.532,0.193,0.831; 0.774, - 1.774,0.887,0.532,0.193,0.832; 0.776,1.776,0.888,0.533,0.193,0.833; - 0.778,1.778,0.889,0.533,0.193,0.834; 0.78,1.78,0.89,0.534,0.193,0.834; - 0.782,1.782,0.891,0.535,0.192,0.835; 0.784,1.784,0.892,0.535,0.192, - 0.836; 0.786,1.786,0.893,0.536,0.192,0.837; 0.788,1.788,0.894,0.536, - 0.192,0.838; 0.79,1.79,0.895,0.537,0.191,0.839; 0.792,1.792,0.896,0.538, - 0.191,0.84; 0.794,1.794,0.897,0.538,0.191,0.841; 0.796,1.796,0.898, - 0.539,0.191,0.842; 0.798,1.798,0.899,0.539,0.191,0.843; 0.8,1.8,0.9, - 0.54,0.19,0.844; 0.802,1.802,0.901,0.541,0.19,0.845; 0.804,1.804,0.902, - 0.541,0.19,0.846; 0.806,1.806,0.903,0.542,0.19,0.847; 0.808,1.808,0.904, - 0.542,0.19,0.848; 0.81,1.81,0.905,0.543,0.189,0.849; 0.812,1.812,0.906, - 0.544,0.189,0.849; 0.814,1.814,0.907,0.544,0.189,0.85; 0.816,1.816, - 0.908,0.545,0.189,0.851; 0.818,1.818,0.909,0.545,0.189,0.852; 0.82,1.82, - 0.91,0.546,0.188,0.853; 0.822,1.822,0.911,0.547,0.188,0.854; 0.824, - 1.824,0.912,0.547,0.188,0.855; 0.826,1.826,0.913,0.548,0.188,0.856; - 0.828,1.828,0.914,0.548,0.187,0.857; 0.83,1.83,0.915,0.549,0.187,0.858; - 0.832,1.832,0.916,0.55,0.187,0.859; 0.834,1.834,0.917,0.55,0.187,0.86; - 0.836,1.836,0.918,0.551,0.187,0.861; 0.838,1.838,0.919,0.551,0.186, - 0.862; 0.84,1.84,0.92,0.552,0.186,0.863; 0.842,1.842,0.921,0.553,0.186, - 0.864; 0.844,1.844,0.922,0.553,0.186,0.864; 0.846,1.846,0.923,0.554, - 0.186,0.865; 0.848,1.848,0.924,0.554,0.185,0.866; 0.85,1.85,0.925,0.555, - 0.185,0.867; 0.852,1.852,0.926,0.556,0.185,0.868; 0.854,1.854,0.927, - 0.556,0.185,0.869; 0.856,1.856,0.928,0.557,0.185,0.87; 0.858,1.858, - 0.929,0.557,0.184,0.871; 0.86,1.86,0.93,0.558,0.184,0.872; 0.862,1.862, - 0.931,0.559,0.184,0.873; 0.864,1.864,0.932,0.559,0.184,0.874; 0.866, - 1.866,0.933,0.56,0.184,0.875; 0.868,1.868,0.934,0.56,0.183,0.876; 0.87, - 1.87,0.935,0.561,0.183,0.877; 0.872,1.872,0.936,0.562,0.183,0.878; - 0.874,1.874,0.937,0.562,0.183,0.879; 0.876,1.876,0.938,0.563,0.183, - 0.879; 0.878,1.878,0.939,0.563,0.182,0.88; 0.88,1.88,0.94,0.564,0.182, - 0.881; 0.882,1.882,0.941,0.565,0.182,0.882; 0.884,1.884,0.942,0.565, - 0.182,0.883; 0.886,1.886,0.943,0.566,0.182,0.884; 0.888,1.888,0.944, - 0.566,0.182,0.885; 0.89,1.89,0.945,0.567,0.181,0.886; 0.892,1.892,0.946, - 0.568,0.181,0.887; 0.894,1.894,0.947,0.568,0.181,0.888; 0.896,1.896, - 0.948,0.569,0.181,0.889; 0.898,1.898,0.949,0.569,0.181,0.89; 0.9,1.9, - 0.95,0.57,0.18,0.891; 0.902,1.902,0.951,0.571,0.18,0.892; 0.904,1.904, - 0.952,0.571,0.18,0.893; 0.906,1.906,0.953,0.572,0.18,0.894; 0.908,1.908, - 0.954,0.572,0.18,0.894; 0.91,1.91,0.955,0.573,0.179,0.895; 0.912,1.912, - 0.956,0.574,0.179,0.896; 0.914,1.914,0.957,0.574,0.179,0.897; 0.916, - 1.916,0.958,0.575,0.179,0.898; 0.918,1.918,0.959,0.575,0.179,0.899; - 0.92,1.92,0.96,0.576,0.178,0.9; 0.922,1.922,0.961,0.577,0.178,0.901; - 0.924,1.924,0.962,0.577,0.178,0.902; 0.926,1.926,0.963,0.578,0.178, - 0.903; 0.928,1.928,0.964,0.578,0.178,0.904; 0.93,1.93,0.965,0.579,0.178, - 0.905; 0.932,1.932,0.966,0.58,0.177,0.906; 0.934,1.934,0.967,0.58,0.177, - 0.907; 0.936,1.936,0.968,0.581,0.177,0.908; 0.938,1.938,0.969,0.581, - 0.177,0.909; 0.94,1.94,0.97,0.582,0.177,0.909; 0.942,1.942,0.971,0.583, - 0.176,0.91; 0.944,1.944,0.972,0.583,0.176,0.911; 0.946,1.946,0.973, - 0.584,0.176,0.912; 0.948,1.948,0.974,0.584,0.176,0.913; 0.95,1.95,0.975, - 0.585,0.176,0.914; 0.952,1.952,0.976,0.586,0.176,0.915; 0.954,1.954, - 0.977,0.586,0.175,0.916; 0.956,1.956,0.978,0.587,0.175,0.917; 0.958, - 1.958,0.979,0.587,0.175,0.918; 0.96,1.96,0.98,0.588,0.175,0.919; 0.962, - 1.962,0.981,0.589,0.175,0.92; 0.964,1.964,0.982,0.589,0.174,0.921; - 0.966,1.966,0.983,0.59,0.174,0.922; 0.968,1.968,0.984,0.59,0.174,0.923; - 0.97,1.97,0.985,0.591,0.174,0.924; 0.972,1.972,0.986,0.592,0.174,0.924; - 0.974,1.974,0.987,0.592,0.174,0.925; 0.976,1.976,0.988,0.593,0.173, - 0.926; 0.978,1.978,0.989,0.593,0.173,0.927; 0.98,1.98,0.99,0.594,0.173, - 0.928; 0.982,1.982,0.991,0.595,0.173,0.929; 0.984,1.984,0.992,0.595, - 0.173,0.93; 0.986,1.986,0.993,0.596,0.173,0.931; 0.988,1.988,0.994, - 0.596,0.172,0.932; 0.99,1.99,0.995,0.597,0.172,0.933; 0.992,1.992,0.996, - 0.598,0.172,0.934; 0.994,1.994,0.997,0.598,0.172,0.935; 0.996,1.996, - 0.998,0.599,0.172,0.936; 0.998,1.998,0.999,0.599,0.172,0.937; 1,2,1,0.6, - 0.171,0.938; 1,2,1,0.6,0.171,0.938], extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) + 0.3,0.343,0.469; 0.1,1.1,0.55,0.33,0.312,0.516; 0.2,1.2,0.6,0.36,0.286,0.563; + 0.3,1.3,0.65,0.39,0.264,0.609;0.4,1.4,0.7, 0.42,0.245,0.656; 0.5,1.5, + 0.75,0.45,0.228,0.703; 0.6,1.6,0.8,0.48,0.214,0.75; 0.7,1.7, 0.85,0.51,0.202,0.797; + 0.8,1.8,0.9,0.54,0.19,0.844; 0.9,1.9, 0.95,0.57,0.18,0.891; 1,2,1,0.6,0.171,0.938], + extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) "Data for validating the PI block" annotation (Placement(transformation(extent={{-58,-10},{-38,10}}))); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo index 2a0e79961fd..936c68bd4e0 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo @@ -4,309 +4,12 @@ model PID "Test model for PID" "Calculate the parameters for a PI controller" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable RefDat(table=[0,1,0.5, - 0.3,0.95,0.446,0.127; 0.002,1.002,0.501,0.301,0.948,0.447,0.127; 0.004, - 1.004,0.502,0.301,0.946,0.447,0.128; 0.006,1.006,0.503,0.302,0.944, - 0.448,0.128; 0.008,1.008,0.504,0.302,0.942,0.449,0.128; 0.01,1.01,0.505, - 0.303,0.941,0.45,0.128; 0.012,1.012,0.506,0.304,0.939,0.451,0.129; - 0.014,1.014,0.507,0.304,0.937,0.452,0.129; 0.016,1.016,0.508,0.305, - 0.935,0.453,0.129; 0.018,1.018,0.509,0.305,0.933,0.454,0.129; 0.02,1.02, - 0.51,0.306,0.931,0.455,0.13; 0.022,1.022,0.511,0.307,0.93,0.456,0.13; - 0.024,1.024,0.512,0.307,0.928,0.456,0.13; 0.026,1.026,0.513,0.308,0.926, - 0.457,0.13; 0.028,1.028,0.514,0.308,0.924,0.458,0.131; 0.03,1.03,0.515, - 0.309,0.922,0.459,0.131; 0.032,1.032,0.516,0.31,0.921,0.46,0.131; 0.034, - 1.034,0.517,0.31,0.919,0.461,0.131; 0.036,1.036,0.518,0.311,0.917,0.462, - 0.132; 0.038,1.038,0.519,0.311,0.915,0.463,0.132; 0.04,1.04,0.52,0.312, - 0.913,0.464,0.132; 0.042,1.042,0.521,0.313,0.912,0.464,0.132; 0.044, - 1.044,0.522,0.313,0.91,0.465,0.133; 0.046,1.046,0.523,0.314,0.908,0.466, - 0.133; 0.048,1.048,0.524,0.314,0.906,0.467,0.133; 0.05,1.05,0.525,0.315, - 0.905,0.468,0.133; 0.052,1.052,0.526,0.316,0.903,0.469,0.134; 0.054, - 1.054,0.527,0.316,0.901,0.47,0.134; 0.056,1.056,0.528,0.317,0.9,0.471, - 0.134; 0.058,1.058,0.529,0.317,0.898,0.472,0.134; 0.06,1.06,0.53,0.318, - 0.896,0.472,0.135; 0.062,1.062,0.531,0.319,0.895,0.473,0.135; 0.064, - 1.064,0.532,0.319,0.893,0.474,0.135; 0.066,1.066,0.533,0.32,0.891,0.475, - 0.136; 0.068,1.068,0.534,0.32,0.89,0.476,0.136; 0.07,1.07,0.535,0.321, - 0.888,0.477,0.136; 0.072,1.072,0.536,0.322,0.886,0.478,0.136; 0.074, - 1.074,0.537,0.322,0.885,0.479,0.137; 0.076,1.076,0.538,0.323,0.883,0.48, - 0.137; 0.078,1.078,0.539,0.323,0.881,0.48,0.137; 0.08,1.08,0.54,0.324, - 0.88,0.481,0.137; 0.082,1.082,0.541,0.325,0.878,0.482,0.138; 0.084, - 1.084,0.542,0.325,0.876,0.483,0.138; 0.086,1.086,0.543,0.326,0.875, - 0.484,0.138; 0.088,1.088,0.544,0.326,0.873,0.485,0.138; 0.09,1.09,0.545, - 0.327,0.872,0.486,0.139; 0.092,1.092,0.546,0.328,0.87,0.487,0.139; - 0.094,1.094,0.547,0.328,0.868,0.488,0.139; 0.096,1.096,0.548,0.329, - 0.867,0.489,0.139; 0.098,1.098,0.549,0.329,0.865,0.489,0.14; 0.1,1.1, - 0.55,0.33,0.864,0.49,0.14; 0.102,1.102,0.551,0.331,0.862,0.491,0.14; - 0.104,1.104,0.552,0.331,0.861,0.492,0.14; 0.106,1.106,0.553,0.332,0.859, - 0.493,0.141; 0.108,1.108,0.554,0.332,0.857,0.494,0.141; 0.11,1.11,0.555, - 0.333,0.856,0.495,0.141; 0.112,1.112,0.556,0.334,0.854,0.496,0.141; - 0.114,1.114,0.557,0.334,0.853,0.497,0.142; 0.116,1.116,0.558,0.335, - 0.851,0.497,0.142; 0.118,1.118,0.559,0.335,0.85,0.498,0.142; 0.12,1.12, - 0.56,0.336,0.848,0.499,0.142; 0.122,1.122,0.561,0.337,0.847,0.5,0.143; - 0.124,1.124,0.562,0.337,0.845,0.501,0.143; 0.126,1.126,0.563,0.338, - 0.844,0.502,0.143; 0.128,1.128,0.564,0.338,0.842,0.503,0.143; 0.13,1.13, - 0.565,0.339,0.841,0.504,0.144; 0.132,1.132,0.566,0.34,0.839,0.505,0.144; - 0.134,1.134,0.567,0.34,0.838,0.505,0.144; 0.136,1.136,0.568,0.341,0.836, - 0.506,0.144; 0.138,1.138,0.569,0.341,0.835,0.507,0.145; 0.14,1.14,0.57, - 0.342,0.833,0.508,0.145; 0.142,1.142,0.571,0.343,0.832,0.509,0.145; - 0.144,1.144,0.572,0.343,0.83,0.51,0.145; 0.146,1.146,0.573,0.344,0.829, - 0.511,0.146; 0.148,1.148,0.574,0.344,0.828,0.512,0.146; 0.15,1.15,0.575, - 0.345,0.826,0.513,0.146; 0.152,1.152,0.576,0.346,0.825,0.513,0.146; - 0.154,1.154,0.577,0.346,0.823,0.514,0.147; 0.156,1.156,0.578,0.347, - 0.822,0.515,0.147; 0.158,1.158,0.579,0.347,0.82,0.516,0.147; 0.16,1.16, - 0.58,0.348,0.819,0.517,0.147; 0.162,1.162,0.581,0.349,0.818,0.518,0.148; - 0.164,1.164,0.582,0.349,0.816,0.519,0.148; 0.166,1.166,0.583,0.35,0.815, - 0.52,0.148; 0.168,1.168,0.584,0.35,0.813,0.521,0.148; 0.17,1.17,0.585, - 0.351,0.812,0.521,0.149; 0.172,1.172,0.586,0.352,0.811,0.522,0.149; - 0.174,1.174,0.587,0.352,0.809,0.523,0.149; 0.176,1.176,0.588,0.353, - 0.808,0.524,0.149; 0.178,1.178,0.589,0.353,0.806,0.525,0.15; 0.18,1.18, - 0.59,0.354,0.805,0.526,0.15; 0.182,1.182,0.591,0.355,0.804,0.527,0.15; - 0.184,1.184,0.592,0.355,0.802,0.528,0.151; 0.186,1.186,0.593,0.356, - 0.801,0.529,0.151; 0.188,1.188,0.594,0.356,0.8,0.53,0.151; 0.19,1.19, - 0.595,0.357,0.798,0.53,0.151; 0.192,1.192,0.596,0.358,0.797,0.531,0.152; - 0.194,1.194,0.597,0.358,0.796,0.532,0.152; 0.196,1.196,0.598,0.359, - 0.794,0.533,0.152; 0.198,1.198,0.599,0.359,0.793,0.534,0.152; 0.2,1.2, - 0.6,0.36,0.792,0.535,0.153; 0.202,1.202,0.601,0.361,0.79,0.536,0.153; - 0.204,1.204,0.602,0.361,0.789,0.537,0.153; 0.206,1.206,0.603,0.362, - 0.788,0.538,0.153; 0.208,1.208,0.604,0.362,0.786,0.538,0.154; 0.21,1.21, - 0.605,0.363,0.785,0.539,0.154; 0.212,1.212,0.606,0.364,0.784,0.54,0.154; - 0.214,1.214,0.607,0.364,0.783,0.541,0.154; 0.216,1.216,0.608,0.365, - 0.781,0.542,0.155; 0.218,1.218,0.609,0.365,0.78,0.543,0.155; 0.22,1.22, - 0.61,0.366,0.779,0.544,0.155; 0.222,1.222,0.611,0.367,0.777,0.545,0.155; - 0.224,1.224,0.612,0.367,0.776,0.546,0.156; 0.226,1.226,0.613,0.368, - 0.775,0.546,0.156; 0.228,1.228,0.614,0.368,0.774,0.547,0.156; 0.23,1.23, - 0.615,0.369,0.772,0.548,0.156; 0.232,1.232,0.616,0.37,0.771,0.549,0.157; - 0.234,1.234,0.617,0.37,0.77,0.55,0.157; 0.236,1.236,0.618,0.371,0.769, - 0.551,0.157; 0.238,1.238,0.619,0.371,0.767,0.552,0.157; 0.24,1.24,0.62, - 0.372,0.766,0.553,0.158; 0.242,1.242,0.621,0.373,0.765,0.554,0.158; - 0.244,1.244,0.622,0.373,0.764,0.554,0.158; 0.246,1.246,0.623,0.374, - 0.762,0.555,0.158; 0.248,1.248,0.624,0.374,0.761,0.556,0.159; 0.25,1.25, - 0.625,0.375,0.76,0.557,0.159; 0.252,1.252,0.626,0.376,0.759,0.558,0.159; - 0.254,1.254,0.627,0.376,0.758,0.559,0.159; 0.256,1.256,0.628,0.377, - 0.756,0.56,0.16; 0.258,1.258,0.629,0.377,0.755,0.561,0.16; 0.26,1.26, - 0.63,0.378,0.754,0.562,0.16; 0.262,1.262,0.631,0.379,0.753,0.562,0.16; - 0.264,1.264,0.632,0.379,0.752,0.563,0.161; 0.266,1.266,0.633,0.38,0.75, - 0.564,0.161; 0.268,1.268,0.634,0.38,0.749,0.565,0.161; 0.27,1.27,0.635, - 0.381,0.748,0.566,0.161; 0.272,1.272,0.636,0.382,0.747,0.567,0.162; - 0.274,1.274,0.637,0.382,0.746,0.568,0.162; 0.276,1.276,0.638,0.383, - 0.745,0.569,0.162; 0.278,1.278,0.639,0.383,0.743,0.57,0.162; 0.28,1.28, - 0.64,0.384,0.742,0.571,0.163; 0.282,1.282,0.641,0.385,0.741,0.571,0.163; - 0.284,1.284,0.642,0.385,0.74,0.572,0.163; 0.286,1.286,0.643,0.386,0.739, - 0.573,0.163; 0.288,1.288,0.644,0.386,0.738,0.574,0.164; 0.29,1.29,0.645, - 0.387,0.736,0.575,0.164; 0.292,1.292,0.646,0.388,0.735,0.576,0.164; - 0.294,1.294,0.647,0.388,0.734,0.577,0.164; 0.296,1.296,0.648,0.389, - 0.733,0.578,0.165; 0.298,1.298,0.649,0.389,0.732,0.579,0.165; 0.3,1.3, - 0.65,0.39,0.731,0.579,0.165; 0.302,1.302,0.651,0.391,0.73,0.58,0.166; - 0.304,1.304,0.652,0.391,0.729,0.581,0.166; 0.306,1.306,0.653,0.392, - 0.727,0.582,0.166; 0.308,1.308,0.654,0.392,0.726,0.583,0.166; 0.31,1.31, - 0.655,0.393,0.725,0.584,0.167; 0.312,1.312,0.656,0.394,0.724,0.585, - 0.167; 0.314,1.314,0.657,0.394,0.723,0.586,0.167; 0.316,1.316,0.658, - 0.395,0.722,0.587,0.167; 0.318,1.318,0.659,0.395,0.721,0.587,0.168; - 0.32,1.32,0.66,0.396,0.72,0.588,0.168; 0.322,1.322,0.661,0.397,0.719, - 0.589,0.168; 0.324,1.324,0.662,0.397,0.718,0.59,0.168; 0.326,1.326, - 0.663,0.398,0.716,0.591,0.169; 0.328,1.328,0.664,0.398,0.715,0.592, - 0.169; 0.33,1.33,0.665,0.399,0.714,0.593,0.169; 0.332,1.332,0.666,0.4, - 0.713,0.594,0.169; 0.334,1.334,0.667,0.4,0.712,0.595,0.17; 0.336,1.336, - 0.668,0.401,0.711,0.595,0.17; 0.338,1.338,0.669,0.401,0.71,0.596,0.17; - 0.34,1.34,0.67,0.402,0.709,0.597,0.17; 0.342,1.342,0.671,0.403,0.708, - 0.598,0.171; 0.344,1.344,0.672,0.403,0.707,0.599,0.171; 0.346,1.346, - 0.673,0.404,0.706,0.6,0.171; 0.348,1.348,0.674,0.404,0.705,0.601,0.171; - 0.35,1.35,0.675,0.405,0.704,0.602,0.172; 0.352,1.352,0.676,0.406,0.703, - 0.603,0.172; 0.354,1.354,0.677,0.406,0.702,0.603,0.172; 0.356,1.356, - 0.678,0.407,0.701,0.604,0.172; 0.358,1.358,0.679,0.407,0.7,0.605,0.173; - 0.36,1.36,0.68,0.408,0.699,0.606,0.173; 0.362,1.362,0.681,0.409,0.698, - 0.607,0.173; 0.364,1.364,0.682,0.409,0.696,0.608,0.173; 0.366,1.366, - 0.683,0.41,0.695,0.609,0.174; 0.368,1.368,0.684,0.41,0.694,0.61,0.174; - 0.37,1.37,0.685,0.411,0.693,0.611,0.174; 0.372,1.372,0.686,0.412,0.692, - 0.612,0.174; 0.374,1.374,0.687,0.412,0.691,0.612,0.175; 0.376,1.376, - 0.688,0.413,0.69,0.613,0.175; 0.378,1.378,0.689,0.413,0.689,0.614,0.175; - 0.38,1.38,0.69,0.414,0.688,0.615,0.175; 0.382,1.382,0.691,0.415,0.687, - 0.616,0.176; 0.384,1.384,0.692,0.415,0.686,0.617,0.176; 0.386,1.386, - 0.693,0.416,0.685,0.618,0.176; 0.388,1.388,0.694,0.416,0.684,0.619, - 0.176; 0.39,1.39,0.695,0.417,0.683,0.62,0.177; 0.392,1.392,0.696,0.418, - 0.682,0.62,0.177; 0.394,1.394,0.697,0.418,0.681,0.621,0.177; 0.396, - 1.396,0.698,0.419,0.681,0.622,0.177; 0.398,1.398,0.699,0.419,0.68,0.623, - 0.178; 0.4,1.4,0.7,0.42,0.679,0.624,0.178; 0.402,1.402,0.701,0.421, - 0.678,0.625,0.178; 0.404,1.404,0.702,0.421,0.677,0.626,0.178; 0.406, - 1.406,0.703,0.422,0.676,0.627,0.179; 0.408,1.408,0.704,0.422,0.675, - 0.628,0.179; 0.41,1.41,0.705,0.423,0.674,0.628,0.179; 0.412,1.412,0.706, - 0.424,0.673,0.629,0.179; 0.414,1.414,0.707,0.424,0.672,0.63,0.18; 0.416, - 1.416,0.708,0.425,0.671,0.631,0.18; 0.418,1.418,0.709,0.425,0.67,0.632, - 0.18; 0.42,1.42,0.71,0.426,0.669,0.633,0.181; 0.422,1.422,0.711,0.427, - 0.668,0.634,0.181; 0.424,1.424,0.712,0.427,0.667,0.635,0.181; 0.426, - 1.426,0.713,0.428,0.666,0.636,0.181; 0.428,1.428,0.714,0.428,0.665, - 0.636,0.182; 0.43,1.43,0.715,0.429,0.664,0.637,0.182; 0.432,1.432,0.716, - 0.43,0.663,0.638,0.182; 0.434,1.434,0.717,0.43,0.662,0.639,0.182; 0.436, - 1.436,0.718,0.431,0.662,0.64,0.183; 0.438,1.438,0.719,0.431,0.661,0.641, - 0.183; 0.44,1.44,0.72,0.432,0.66,0.642,0.183; 0.442,1.442,0.721,0.433, - 0.659,0.643,0.183; 0.444,1.444,0.722,0.433,0.658,0.644,0.184; 0.446, - 1.446,0.723,0.434,0.657,0.645,0.184; 0.448,1.448,0.724,0.434,0.656, - 0.645,0.184; 0.45,1.45,0.725,0.435,0.655,0.646,0.184; 0.452,1.452,0.726, - 0.436,0.654,0.647,0.185; 0.454,1.454,0.727,0.436,0.653,0.648,0.185; - 0.456,1.456,0.728,0.437,0.652,0.649,0.185; 0.458,1.458,0.729,0.437, - 0.652,0.65,0.185; 0.46,1.46,0.73,0.438,0.651,0.651,0.186; 0.462,1.462, - 0.731,0.439,0.65,0.652,0.186; 0.464,1.464,0.732,0.439,0.649,0.653,0.186; - 0.466,1.466,0.733,0.44,0.648,0.653,0.186; 0.468,1.468,0.734,0.44,0.647, - 0.654,0.187; 0.47,1.47,0.735,0.441,0.646,0.655,0.187; 0.472,1.472,0.736, - 0.442,0.645,0.656,0.187; 0.474,1.474,0.737,0.442,0.645,0.657,0.187; - 0.476,1.476,0.738,0.443,0.644,0.658,0.188; 0.478,1.478,0.739,0.443, - 0.643,0.659,0.188; 0.48,1.48,0.74,0.444,0.642,0.66,0.188; 0.482,1.482, - 0.741,0.445,0.641,0.661,0.188; 0.484,1.484,0.742,0.445,0.64,0.661,0.189; - 0.486,1.486,0.743,0.446,0.639,0.662,0.189; 0.488,1.488,0.744,0.446, - 0.638,0.663,0.189; 0.49,1.49,0.745,0.447,0.638,0.664,0.189; 0.492,1.492, - 0.746,0.448,0.637,0.665,0.19; 0.494,1.494,0.747,0.448,0.636,0.666,0.19; - 0.496,1.496,0.748,0.449,0.635,0.667,0.19; 0.498,1.498,0.749,0.449,0.634, - 0.668,0.19; 0.5,1.5,0.75,0.45,0.633,0.669,0.191; 0.502,1.502,0.751, - 0.451,0.632,0.669,0.191; 0.504,1.504,0.752,0.451,0.632,0.67,0.191; - 0.506,1.506,0.753,0.452,0.631,0.671,0.191; 0.508,1.508,0.754,0.452,0.63, - 0.672,0.192; 0.51,1.51,0.755,0.453,0.629,0.673,0.192; 0.512,1.512,0.756, - 0.454,0.628,0.674,0.192; 0.514,1.514,0.757,0.454,0.627,0.675,0.192; - 0.516,1.516,0.758,0.455,0.627,0.676,0.193; 0.518,1.518,0.759,0.455, - 0.626,0.677,0.193; 0.52,1.52,0.76,0.456,0.625,0.677,0.193; 0.522,1.522, - 0.761,0.457,0.624,0.678,0.193; 0.524,1.524,0.762,0.457,0.623,0.679, - 0.194; 0.526,1.526,0.763,0.458,0.623,0.68,0.194; 0.528,1.528,0.764, - 0.458,0.622,0.681,0.194; 0.53,1.53,0.765,0.459,0.621,0.682,0.194; 0.532, - 1.532,0.766,0.46,0.62,0.683,0.195; 0.534,1.534,0.767,0.46,0.619,0.684, - 0.195; 0.536,1.536,0.768,0.461,0.618,0.685,0.195; 0.538,1.538,0.769, - 0.461,0.618,0.686,0.196; 0.54,1.54,0.77,0.462,0.617,0.686,0.196; 0.542, - 1.542,0.771,0.463,0.616,0.687,0.196; 0.544,1.544,0.772,0.463,0.615, - 0.688,0.196; 0.546,1.546,0.773,0.464,0.614,0.689,0.197; 0.548,1.548, - 0.774,0.464,0.614,0.69,0.197; 0.55,1.55,0.775,0.465,0.613,0.691,0.197; - 0.552,1.552,0.776,0.466,0.612,0.692,0.197; 0.554,1.554,0.777,0.466, - 0.611,0.693,0.198; 0.556,1.556,0.778,0.467,0.611,0.694,0.198; 0.558, - 1.558,0.779,0.467,0.61,0.694,0.198; 0.56,1.56,0.78,0.468,0.609,0.695, - 0.198; 0.562,1.562,0.781,0.469,0.608,0.696,0.199; 0.564,1.564,0.782, - 0.469,0.607,0.697,0.199; 0.566,1.566,0.783,0.47,0.607,0.698,0.199; - 0.568,1.568,0.784,0.47,0.606,0.699,0.199; 0.57,1.57,0.785,0.471,0.605, - 0.7,0.2; 0.572,1.572,0.786,0.472,0.604,0.701,0.2; 0.574,1.574,0.787, - 0.472,0.604,0.702,0.2; 0.576,1.576,0.788,0.473,0.603,0.702,0.2; 0.578, - 1.578,0.789,0.473,0.602,0.703,0.201; 0.58,1.58,0.79,0.474,0.601,0.704, - 0.201; 0.582,1.582,0.791,0.475,0.601,0.705,0.201; 0.584,1.584,0.792, - 0.475,0.6,0.706,0.201; 0.586,1.586,0.793,0.476,0.599,0.707,0.202; 0.588, - 1.588,0.794,0.476,0.598,0.708,0.202; 0.59,1.59,0.795,0.477,0.597,0.709, - 0.202; 0.592,1.592,0.796,0.478,0.597,0.71,0.202; 0.594,1.594,0.797, - 0.478,0.596,0.71,0.203; 0.596,1.596,0.798,0.479,0.595,0.711,0.203; - 0.598,1.598,0.799,0.479,0.594,0.712,0.203; 0.6,1.6,0.8,0.48,0.594,0.713, - 0.203; 0.602,1.602,0.801,0.481,0.593,0.714,0.204; 0.604,1.604,0.802, - 0.481,0.592,0.715,0.204; 0.606,1.606,0.803,0.482,0.592,0.716,0.204; - 0.608,1.608,0.804,0.482,0.591,0.717,0.204; 0.61,1.61,0.805,0.483,0.59, - 0.718,0.205; 0.612,1.612,0.806,0.484,0.589,0.718,0.205; 0.614,1.614, - 0.807,0.484,0.589,0.719,0.205; 0.616,1.616,0.808,0.485,0.588,0.72,0.205; - 0.618,1.618,0.809,0.485,0.587,0.721,0.206; 0.62,1.62,0.81,0.486,0.586, - 0.722,0.206; 0.622,1.622,0.811,0.487,0.586,0.723,0.206; 0.624,1.624, - 0.812,0.487,0.585,0.724,0.206; 0.626,1.626,0.813,0.488,0.584,0.725, - 0.207; 0.628,1.628,0.814,0.488,0.584,0.726,0.207; 0.63,1.63,0.815,0.489, - 0.583,0.727,0.207; 0.632,1.632,0.816,0.49,0.582,0.727,0.207; 0.634, - 1.634,0.817,0.49,0.581,0.728,0.208; 0.636,1.636,0.818,0.491,0.581,0.729, - 0.208; 0.638,1.638,0.819,0.491,0.58,0.73,0.208; 0.64,1.64,0.82,0.492, - 0.579,0.731,0.208; 0.642,1.642,0.821,0.493,0.579,0.732,0.209; 0.644, - 1.644,0.822,0.493,0.578,0.733,0.209; 0.646,1.646,0.823,0.494,0.577, - 0.734,0.209; 0.648,1.648,0.824,0.494,0.576,0.735,0.209; 0.65,1.65,0.825, - 0.495,0.576,0.735,0.21; 0.652,1.652,0.826,0.496,0.575,0.736,0.21; 0.654, - 1.654,0.827,0.496,0.574,0.737,0.21; 0.656,1.656,0.828,0.497,0.574,0.738, - 0.211; 0.658,1.658,0.829,0.497,0.573,0.739,0.211; 0.66,1.66,0.83,0.498, - 0.572,0.74,0.211; 0.662,1.662,0.831,0.499,0.572,0.741,0.211; 0.664, - 1.664,0.832,0.499,0.571,0.742,0.212; 0.666,1.666,0.833,0.5,0.57,0.743, - 0.212; 0.668,1.668,0.834,0.5,0.57,0.743,0.212; 0.67,1.67,0.835,0.501, - 0.569,0.744,0.212; 0.672,1.672,0.836,0.502,0.568,0.745,0.213; 0.674, - 1.674,0.837,0.502,0.568,0.746,0.213; 0.676,1.676,0.838,0.503,0.567, - 0.747,0.213; 0.678,1.678,0.839,0.503,0.566,0.748,0.213; 0.68,1.68,0.84, - 0.504,0.565,0.749,0.214; 0.682,1.682,0.841,0.505,0.565,0.75,0.214; - 0.684,1.684,0.842,0.505,0.564,0.751,0.214; 0.686,1.686,0.843,0.506, - 0.563,0.751,0.214; 0.688,1.688,0.844,0.506,0.563,0.752,0.215; 0.69,1.69, - 0.845,0.507,0.562,0.753,0.215; 0.692,1.692,0.846,0.508,0.561,0.754, - 0.215; 0.694,1.694,0.847,0.508,0.561,0.755,0.215; 0.696,1.696,0.848, - 0.509,0.56,0.756,0.216; 0.698,1.698,0.849,0.509,0.559,0.757,0.216; 0.7, - 1.7,0.85,0.51,0.559,0.758,0.216; 0.702,1.702,0.851,0.511,0.558,0.759, - 0.216; 0.704,1.704,0.852,0.511,0.558,0.759,0.217; 0.706,1.706,0.853, - 0.512,0.557,0.76,0.217; 0.708,1.708,0.854,0.512,0.556,0.761,0.217; 0.71, - 1.71,0.855,0.513,0.556,0.762,0.217; 0.712,1.712,0.856,0.514,0.555,0.763, - 0.218; 0.714,1.714,0.857,0.514,0.554,0.764,0.218; 0.716,1.716,0.858, - 0.515,0.554,0.765,0.218; 0.718,1.718,0.859,0.515,0.553,0.766,0.218; - 0.72,1.72,0.86,0.516,0.552,0.767,0.219; 0.722,1.722,0.861,0.517,0.552, - 0.768,0.219; 0.724,1.724,0.862,0.517,0.551,0.768,0.219; 0.726,1.726, - 0.863,0.518,0.55,0.769,0.219; 0.728,1.728,0.864,0.518,0.55,0.77,0.22; - 0.73,1.73,0.865,0.519,0.549,0.771,0.22; 0.732,1.732,0.866,0.52,0.548, - 0.772,0.22; 0.734,1.734,0.867,0.52,0.548,0.773,0.22; 0.736,1.736,0.868, - 0.521,0.547,0.774,0.221; 0.738,1.738,0.869,0.521,0.547,0.775,0.221; - 0.74,1.74,0.87,0.522,0.546,0.776,0.221; 0.742,1.742,0.871,0.523,0.545, - 0.776,0.221; 0.744,1.744,0.872,0.523,0.545,0.777,0.222; 0.746,1.746, - 0.873,0.524,0.544,0.778,0.222; 0.748,1.748,0.874,0.524,0.543,0.779, - 0.222; 0.75,1.75,0.875,0.525,0.543,0.78,0.222; 0.752,1.752,0.876,0.526, - 0.542,0.781,0.223; 0.754,1.754,0.877,0.526,0.542,0.782,0.223; 0.756, - 1.756,0.878,0.527,0.541,0.783,0.223; 0.758,1.758,0.879,0.527,0.54,0.784, - 0.223; 0.76,1.76,0.88,0.528,0.54,0.784,0.224; 0.762,1.762,0.881,0.529, - 0.539,0.785,0.224; 0.764,1.764,0.882,0.529,0.539,0.786,0.224; 0.766, - 1.766,0.883,0.53,0.538,0.787,0.224; 0.768,1.768,0.884,0.53,0.537,0.788, - 0.225; 0.77,1.77,0.885,0.531,0.537,0.789,0.225; 0.772,1.772,0.886,0.532, - 0.536,0.79,0.225; 0.774,1.774,0.887,0.532,0.536,0.791,0.226; 0.776, - 1.776,0.888,0.533,0.535,0.792,0.226; 0.778,1.778,0.889,0.533,0.534, - 0.792,0.226; 0.78,1.78,0.89,0.534,0.534,0.793,0.226; 0.782,1.782,0.891, - 0.535,0.533,0.794,0.227; 0.784,1.784,0.892,0.535,0.533,0.795,0.227; - 0.786,1.786,0.893,0.536,0.532,0.796,0.227; 0.788,1.788,0.894,0.536, - 0.531,0.797,0.227; 0.79,1.79,0.895,0.537,0.531,0.798,0.228; 0.792,1.792, - 0.896,0.538,0.53,0.799,0.228; 0.794,1.794,0.897,0.538,0.53,0.8,0.228; - 0.796,1.796,0.898,0.539,0.529,0.801,0.228; 0.798,1.798,0.899,0.539, - 0.528,0.801,0.229; 0.8,1.8,0.9,0.54,0.528,0.802,0.229; 0.802,1.802, - 0.901,0.541,0.527,0.803,0.229; 0.804,1.804,0.902,0.541,0.527,0.804, - 0.229; 0.806,1.806,0.903,0.542,0.526,0.805,0.23; 0.808,1.808,0.904, - 0.542,0.525,0.806,0.23; 0.81,1.81,0.905,0.543,0.525,0.807,0.23; 0.812, - 1.812,0.906,0.544,0.524,0.808,0.23; 0.814,1.814,0.907,0.544,0.524,0.809, - 0.231; 0.816,1.816,0.908,0.545,0.523,0.809,0.231; 0.818,1.818,0.909, - 0.545,0.523,0.81,0.231; 0.82,1.82,0.91,0.546,0.522,0.811,0.231; 0.822, - 1.822,0.911,0.547,0.521,0.812,0.232; 0.824,1.824,0.912,0.547,0.521, - 0.813,0.232; 0.826,1.826,0.913,0.548,0.52,0.814,0.232; 0.828,1.828, - 0.914,0.548,0.52,0.815,0.232; 0.83,1.83,0.915,0.549,0.519,0.816,0.233; - 0.832,1.832,0.916,0.55,0.519,0.817,0.233; 0.834,1.834,0.917,0.55,0.518, - 0.817,0.233; 0.836,1.836,0.918,0.551,0.517,0.818,0.233; 0.838,1.838, - 0.919,0.551,0.517,0.819,0.234; 0.84,1.84,0.92,0.552,0.516,0.82,0.234; - 0.842,1.842,0.921,0.553,0.516,0.821,0.234; 0.844,1.844,0.922,0.553, - 0.515,0.822,0.234; 0.846,1.846,0.923,0.554,0.515,0.823,0.235; 0.848, - 1.848,0.924,0.554,0.514,0.824,0.235; 0.85,1.85,0.925,0.555,0.514,0.825, - 0.235; 0.852,1.852,0.926,0.556,0.513,0.825,0.235; 0.854,1.854,0.927, - 0.556,0.512,0.826,0.236; 0.856,1.856,0.928,0.557,0.512,0.827,0.236; - 0.858,1.858,0.929,0.557,0.511,0.828,0.236; 0.86,1.86,0.93,0.558,0.511, - 0.829,0.236; 0.862,1.862,0.931,0.559,0.51,0.83,0.237; 0.864,1.864,0.932, - 0.559,0.51,0.831,0.237; 0.866,1.866,0.933,0.56,0.509,0.832,0.237; 0.868, - 1.868,0.934,0.56,0.509,0.833,0.237; 0.87,1.87,0.935,0.561,0.508,0.833, - 0.238; 0.872,1.872,0.936,0.562,0.507,0.834,0.238; 0.874,1.874,0.937, - 0.562,0.507,0.835,0.238; 0.876,1.876,0.938,0.563,0.506,0.836,0.238; - 0.878,1.878,0.939,0.563,0.506,0.837,0.239; 0.88,1.88,0.94,0.564,0.505, - 0.838,0.239; 0.882,1.882,0.941,0.565,0.505,0.839,0.239; 0.884,1.884, - 0.942,0.565,0.504,0.84,0.239; 0.886,1.886,0.943,0.566,0.504,0.841,0.24; - 0.888,1.888,0.944,0.566,0.503,0.842,0.24; 0.89,1.89,0.945,0.567,0.503, - 0.842,0.24; 0.892,1.892,0.946,0.568,0.502,0.843,0.241; 0.894,1.894, - 0.947,0.568,0.502,0.844,0.241; 0.896,1.896,0.948,0.569,0.501,0.845, - 0.241; 0.898,1.898,0.949,0.569,0.501,0.846,0.241; 0.9,1.9,0.95,0.57,0.5, - 0.847,0.242; 0.902,1.902,0.951,0.571,0.499,0.848,0.242; 0.904,1.904, - 0.952,0.571,0.499,0.849,0.242; 0.906,1.906,0.953,0.572,0.498,0.85,0.242; - 0.908,1.908,0.954,0.572,0.498,0.85,0.243; 0.91,1.91,0.955,0.573,0.497, - 0.851,0.243; 0.912,1.912,0.956,0.574,0.497,0.852,0.243; 0.914,1.914, - 0.957,0.574,0.496,0.853,0.243; 0.916,1.916,0.958,0.575,0.496,0.854, - 0.244; 0.918,1.918,0.959,0.575,0.495,0.855,0.244; 0.92,1.92,0.96,0.576, - 0.495,0.856,0.244; 0.922,1.922,0.961,0.577,0.494,0.857,0.244; 0.924, - 1.924,0.962,0.577,0.494,0.858,0.245; 0.926,1.926,0.963,0.578,0.493, - 0.858,0.245; 0.928,1.928,0.964,0.578,0.493,0.859,0.245; 0.93,1.93,0.965, - 0.579,0.492,0.86,0.245; 0.932,1.932,0.966,0.58,0.492,0.861,0.246; 0.934, - 1.934,0.967,0.58,0.491,0.862,0.246; 0.936,1.936,0.968,0.581,0.491,0.863, - 0.246; 0.938,1.938,0.969,0.581,0.49,0.864,0.246; 0.94,1.94,0.97,0.582, - 0.49,0.865,0.247; 0.942,1.942,0.971,0.583,0.489,0.866,0.247; 0.944, - 1.944,0.972,0.583,0.489,0.866,0.247; 0.946,1.946,0.973,0.584,0.488, - 0.867,0.247; 0.948,1.948,0.974,0.584,0.488,0.868,0.248; 0.95,1.95,0.975, - 0.585,0.487,0.869,0.248; 0.952,1.952,0.976,0.586,0.487,0.87,0.248; - 0.954,1.954,0.977,0.586,0.486,0.871,0.248; 0.956,1.956,0.978,0.587, - 0.486,0.872,0.249; 0.958,1.958,0.979,0.587,0.485,0.873,0.249; 0.96,1.96, - 0.98,0.588,0.485,0.874,0.249; 0.962,1.962,0.981,0.589,0.484,0.874,0.249; - 0.964,1.964,0.982,0.589,0.484,0.875,0.25; 0.966,1.966,0.983,0.59,0.483, - 0.876,0.25; 0.968,1.968,0.984,0.59,0.483,0.877,0.25; 0.97,1.97,0.985, - 0.591,0.482,0.878,0.25; 0.972,1.972,0.986,0.592,0.482,0.879,0.251; - 0.974,1.974,0.987,0.592,0.481,0.88,0.251; 0.976,1.976,0.988,0.593,0.481, - 0.881,0.251; 0.978,1.978,0.989,0.593,0.48,0.882,0.251; 0.98,1.98,0.99, - 0.594,0.48,0.883,0.252; 0.982,1.982,0.991,0.595,0.479,0.883,0.252; - 0.984,1.984,0.992,0.595,0.479,0.884,0.252; 0.986,1.986,0.993,0.596, - 0.478,0.885,0.252; 0.988,1.988,0.994,0.596,0.478,0.886,0.253; 0.99,1.99, - 0.995,0.597,0.477,0.887,0.253; 0.992,1.992,0.996,0.598,0.477,0.888, - 0.253; 0.994,1.994,0.997,0.598,0.476,0.889,0.253; 0.996,1.996,0.998, - 0.599,0.476,0.89,0.254; 0.998,1.998,0.999,0.599,0.475,0.891,0.254; 1,2, - 1,0.6,0.475,0.891,0.254; 1,2,1,0.6,0.475,0.891,0.254], extrapolation= + 0.3,0.95,0.446,0.127; 0.1,1.1, 0.55,0.33,0.864,0.49,0.14; 0.2,1.2, + 0.6,0.36,0.792,0.535,0.153; 0.3,1.3, 0.65,0.39,0.731,0.579,0.165; + 0.4,1.4,0.7,0.42,0.679,0.624,0.178; 0.5,1.5,0.75,0.45,0.633,0.669,0.191; + 0.6,1.6,0.8,0.48,0.594,0.713,0.203; 0.7,1.7,0.85,0.51,0.559,0.758,0.216; + 0.8,1.8,0.9,0.54,0.528,0.802,0.229; 0.9,1.9,0.95,0.57,0.5, + 0.847,0.242; 1,2,1,0.6,0.475,0.891,0.254], extrapolation= Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) "Data for validating the PIDDerivativeTime block" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mo index 1e9a38dfa71..d4eebaa4318 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mo @@ -4,309 +4,12 @@ model PIDDerivativeTime "Test model for PIDDerivativeTime" PIDDerTim "Calculate the integral time for a PI controller" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable RefDat(table=[0,1,0.5, - 0.3,0.95,0.446,0.127; 0.002,1.002,0.501,0.301,0.948,0.447,0.127; 0.004, - 1.004,0.502,0.301,0.946,0.447,0.128; 0.006,1.006,0.503,0.302,0.944, - 0.448,0.128; 0.008,1.008,0.504,0.302,0.942,0.449,0.128; 0.01,1.01,0.505, - 0.303,0.941,0.45,0.128; 0.012,1.012,0.506,0.304,0.939,0.451,0.129; - 0.014,1.014,0.507,0.304,0.937,0.452,0.129; 0.016,1.016,0.508,0.305, - 0.935,0.453,0.129; 0.018,1.018,0.509,0.305,0.933,0.454,0.129; 0.02,1.02, - 0.51,0.306,0.931,0.455,0.13; 0.022,1.022,0.511,0.307,0.93,0.456,0.13; - 0.024,1.024,0.512,0.307,0.928,0.456,0.13; 0.026,1.026,0.513,0.308,0.926, - 0.457,0.13; 0.028,1.028,0.514,0.308,0.924,0.458,0.131; 0.03,1.03,0.515, - 0.309,0.922,0.459,0.131; 0.032,1.032,0.516,0.31,0.921,0.46,0.131; 0.034, - 1.034,0.517,0.31,0.919,0.461,0.131; 0.036,1.036,0.518,0.311,0.917,0.462, - 0.132; 0.038,1.038,0.519,0.311,0.915,0.463,0.132; 0.04,1.04,0.52,0.312, - 0.913,0.464,0.132; 0.042,1.042,0.521,0.313,0.912,0.464,0.132; 0.044, - 1.044,0.522,0.313,0.91,0.465,0.133; 0.046,1.046,0.523,0.314,0.908,0.466, - 0.133; 0.048,1.048,0.524,0.314,0.906,0.467,0.133; 0.05,1.05,0.525,0.315, - 0.905,0.468,0.133; 0.052,1.052,0.526,0.316,0.903,0.469,0.134; 0.054, - 1.054,0.527,0.316,0.901,0.47,0.134; 0.056,1.056,0.528,0.317,0.9,0.471, - 0.134; 0.058,1.058,0.529,0.317,0.898,0.472,0.134; 0.06,1.06,0.53,0.318, - 0.896,0.472,0.135; 0.062,1.062,0.531,0.319,0.895,0.473,0.135; 0.064, - 1.064,0.532,0.319,0.893,0.474,0.135; 0.066,1.066,0.533,0.32,0.891,0.475, - 0.136; 0.068,1.068,0.534,0.32,0.89,0.476,0.136; 0.07,1.07,0.535,0.321, - 0.888,0.477,0.136; 0.072,1.072,0.536,0.322,0.886,0.478,0.136; 0.074, - 1.074,0.537,0.322,0.885,0.479,0.137; 0.076,1.076,0.538,0.323,0.883,0.48, - 0.137; 0.078,1.078,0.539,0.323,0.881,0.48,0.137; 0.08,1.08,0.54,0.324, - 0.88,0.481,0.137; 0.082,1.082,0.541,0.325,0.878,0.482,0.138; 0.084, - 1.084,0.542,0.325,0.876,0.483,0.138; 0.086,1.086,0.543,0.326,0.875, - 0.484,0.138; 0.088,1.088,0.544,0.326,0.873,0.485,0.138; 0.09,1.09,0.545, - 0.327,0.872,0.486,0.139; 0.092,1.092,0.546,0.328,0.87,0.487,0.139; - 0.094,1.094,0.547,0.328,0.868,0.488,0.139; 0.096,1.096,0.548,0.329, - 0.867,0.489,0.139; 0.098,1.098,0.549,0.329,0.865,0.489,0.14; 0.1,1.1, - 0.55,0.33,0.864,0.49,0.14; 0.102,1.102,0.551,0.331,0.862,0.491,0.14; - 0.104,1.104,0.552,0.331,0.861,0.492,0.14; 0.106,1.106,0.553,0.332,0.859, - 0.493,0.141; 0.108,1.108,0.554,0.332,0.857,0.494,0.141; 0.11,1.11,0.555, - 0.333,0.856,0.495,0.141; 0.112,1.112,0.556,0.334,0.854,0.496,0.141; - 0.114,1.114,0.557,0.334,0.853,0.497,0.142; 0.116,1.116,0.558,0.335, - 0.851,0.497,0.142; 0.118,1.118,0.559,0.335,0.85,0.498,0.142; 0.12,1.12, - 0.56,0.336,0.848,0.499,0.142; 0.122,1.122,0.561,0.337,0.847,0.5,0.143; - 0.124,1.124,0.562,0.337,0.845,0.501,0.143; 0.126,1.126,0.563,0.338, - 0.844,0.502,0.143; 0.128,1.128,0.564,0.338,0.842,0.503,0.143; 0.13,1.13, - 0.565,0.339,0.841,0.504,0.144; 0.132,1.132,0.566,0.34,0.839,0.505,0.144; - 0.134,1.134,0.567,0.34,0.838,0.505,0.144; 0.136,1.136,0.568,0.341,0.836, - 0.506,0.144; 0.138,1.138,0.569,0.341,0.835,0.507,0.145; 0.14,1.14,0.57, - 0.342,0.833,0.508,0.145; 0.142,1.142,0.571,0.343,0.832,0.509,0.145; - 0.144,1.144,0.572,0.343,0.83,0.51,0.145; 0.146,1.146,0.573,0.344,0.829, - 0.511,0.146; 0.148,1.148,0.574,0.344,0.828,0.512,0.146; 0.15,1.15,0.575, - 0.345,0.826,0.513,0.146; 0.152,1.152,0.576,0.346,0.825,0.513,0.146; - 0.154,1.154,0.577,0.346,0.823,0.514,0.147; 0.156,1.156,0.578,0.347, - 0.822,0.515,0.147; 0.158,1.158,0.579,0.347,0.82,0.516,0.147; 0.16,1.16, - 0.58,0.348,0.819,0.517,0.147; 0.162,1.162,0.581,0.349,0.818,0.518,0.148; - 0.164,1.164,0.582,0.349,0.816,0.519,0.148; 0.166,1.166,0.583,0.35,0.815, - 0.52,0.148; 0.168,1.168,0.584,0.35,0.813,0.521,0.148; 0.17,1.17,0.585, - 0.351,0.812,0.521,0.149; 0.172,1.172,0.586,0.352,0.811,0.522,0.149; - 0.174,1.174,0.587,0.352,0.809,0.523,0.149; 0.176,1.176,0.588,0.353, - 0.808,0.524,0.149; 0.178,1.178,0.589,0.353,0.806,0.525,0.15; 0.18,1.18, - 0.59,0.354,0.805,0.526,0.15; 0.182,1.182,0.591,0.355,0.804,0.527,0.15; - 0.184,1.184,0.592,0.355,0.802,0.528,0.151; 0.186,1.186,0.593,0.356, - 0.801,0.529,0.151; 0.188,1.188,0.594,0.356,0.8,0.53,0.151; 0.19,1.19, - 0.595,0.357,0.798,0.53,0.151; 0.192,1.192,0.596,0.358,0.797,0.531,0.152; - 0.194,1.194,0.597,0.358,0.796,0.532,0.152; 0.196,1.196,0.598,0.359, - 0.794,0.533,0.152; 0.198,1.198,0.599,0.359,0.793,0.534,0.152; 0.2,1.2, - 0.6,0.36,0.792,0.535,0.153; 0.202,1.202,0.601,0.361,0.79,0.536,0.153; - 0.204,1.204,0.602,0.361,0.789,0.537,0.153; 0.206,1.206,0.603,0.362, - 0.788,0.538,0.153; 0.208,1.208,0.604,0.362,0.786,0.538,0.154; 0.21,1.21, - 0.605,0.363,0.785,0.539,0.154; 0.212,1.212,0.606,0.364,0.784,0.54,0.154; - 0.214,1.214,0.607,0.364,0.783,0.541,0.154; 0.216,1.216,0.608,0.365, - 0.781,0.542,0.155; 0.218,1.218,0.609,0.365,0.78,0.543,0.155; 0.22,1.22, - 0.61,0.366,0.779,0.544,0.155; 0.222,1.222,0.611,0.367,0.777,0.545,0.155; - 0.224,1.224,0.612,0.367,0.776,0.546,0.156; 0.226,1.226,0.613,0.368, - 0.775,0.546,0.156; 0.228,1.228,0.614,0.368,0.774,0.547,0.156; 0.23,1.23, - 0.615,0.369,0.772,0.548,0.156; 0.232,1.232,0.616,0.37,0.771,0.549,0.157; - 0.234,1.234,0.617,0.37,0.77,0.55,0.157; 0.236,1.236,0.618,0.371,0.769, - 0.551,0.157; 0.238,1.238,0.619,0.371,0.767,0.552,0.157; 0.24,1.24,0.62, - 0.372,0.766,0.553,0.158; 0.242,1.242,0.621,0.373,0.765,0.554,0.158; - 0.244,1.244,0.622,0.373,0.764,0.554,0.158; 0.246,1.246,0.623,0.374, - 0.762,0.555,0.158; 0.248,1.248,0.624,0.374,0.761,0.556,0.159; 0.25,1.25, - 0.625,0.375,0.76,0.557,0.159; 0.252,1.252,0.626,0.376,0.759,0.558,0.159; - 0.254,1.254,0.627,0.376,0.758,0.559,0.159; 0.256,1.256,0.628,0.377, - 0.756,0.56,0.16; 0.258,1.258,0.629,0.377,0.755,0.561,0.16; 0.26,1.26, - 0.63,0.378,0.754,0.562,0.16; 0.262,1.262,0.631,0.379,0.753,0.562,0.16; - 0.264,1.264,0.632,0.379,0.752,0.563,0.161; 0.266,1.266,0.633,0.38,0.75, - 0.564,0.161; 0.268,1.268,0.634,0.38,0.749,0.565,0.161; 0.27,1.27,0.635, - 0.381,0.748,0.566,0.161; 0.272,1.272,0.636,0.382,0.747,0.567,0.162; - 0.274,1.274,0.637,0.382,0.746,0.568,0.162; 0.276,1.276,0.638,0.383, - 0.745,0.569,0.162; 0.278,1.278,0.639,0.383,0.743,0.57,0.162; 0.28,1.28, - 0.64,0.384,0.742,0.571,0.163; 0.282,1.282,0.641,0.385,0.741,0.571,0.163; - 0.284,1.284,0.642,0.385,0.74,0.572,0.163; 0.286,1.286,0.643,0.386,0.739, - 0.573,0.163; 0.288,1.288,0.644,0.386,0.738,0.574,0.164; 0.29,1.29,0.645, - 0.387,0.736,0.575,0.164; 0.292,1.292,0.646,0.388,0.735,0.576,0.164; - 0.294,1.294,0.647,0.388,0.734,0.577,0.164; 0.296,1.296,0.648,0.389, - 0.733,0.578,0.165; 0.298,1.298,0.649,0.389,0.732,0.579,0.165; 0.3,1.3, - 0.65,0.39,0.731,0.579,0.165; 0.302,1.302,0.651,0.391,0.73,0.58,0.166; - 0.304,1.304,0.652,0.391,0.729,0.581,0.166; 0.306,1.306,0.653,0.392, - 0.727,0.582,0.166; 0.308,1.308,0.654,0.392,0.726,0.583,0.166; 0.31,1.31, - 0.655,0.393,0.725,0.584,0.167; 0.312,1.312,0.656,0.394,0.724,0.585, - 0.167; 0.314,1.314,0.657,0.394,0.723,0.586,0.167; 0.316,1.316,0.658, - 0.395,0.722,0.587,0.167; 0.318,1.318,0.659,0.395,0.721,0.587,0.168; - 0.32,1.32,0.66,0.396,0.72,0.588,0.168; 0.322,1.322,0.661,0.397,0.719, - 0.589,0.168; 0.324,1.324,0.662,0.397,0.718,0.59,0.168; 0.326,1.326, - 0.663,0.398,0.716,0.591,0.169; 0.328,1.328,0.664,0.398,0.715,0.592, - 0.169; 0.33,1.33,0.665,0.399,0.714,0.593,0.169; 0.332,1.332,0.666,0.4, - 0.713,0.594,0.169; 0.334,1.334,0.667,0.4,0.712,0.595,0.17; 0.336,1.336, - 0.668,0.401,0.711,0.595,0.17; 0.338,1.338,0.669,0.401,0.71,0.596,0.17; - 0.34,1.34,0.67,0.402,0.709,0.597,0.17; 0.342,1.342,0.671,0.403,0.708, - 0.598,0.171; 0.344,1.344,0.672,0.403,0.707,0.599,0.171; 0.346,1.346, - 0.673,0.404,0.706,0.6,0.171; 0.348,1.348,0.674,0.404,0.705,0.601,0.171; - 0.35,1.35,0.675,0.405,0.704,0.602,0.172; 0.352,1.352,0.676,0.406,0.703, - 0.603,0.172; 0.354,1.354,0.677,0.406,0.702,0.603,0.172; 0.356,1.356, - 0.678,0.407,0.701,0.604,0.172; 0.358,1.358,0.679,0.407,0.7,0.605,0.173; - 0.36,1.36,0.68,0.408,0.699,0.606,0.173; 0.362,1.362,0.681,0.409,0.698, - 0.607,0.173; 0.364,1.364,0.682,0.409,0.696,0.608,0.173; 0.366,1.366, - 0.683,0.41,0.695,0.609,0.174; 0.368,1.368,0.684,0.41,0.694,0.61,0.174; - 0.37,1.37,0.685,0.411,0.693,0.611,0.174; 0.372,1.372,0.686,0.412,0.692, - 0.612,0.174; 0.374,1.374,0.687,0.412,0.691,0.612,0.175; 0.376,1.376, - 0.688,0.413,0.69,0.613,0.175; 0.378,1.378,0.689,0.413,0.689,0.614,0.175; - 0.38,1.38,0.69,0.414,0.688,0.615,0.175; 0.382,1.382,0.691,0.415,0.687, - 0.616,0.176; 0.384,1.384,0.692,0.415,0.686,0.617,0.176; 0.386,1.386, - 0.693,0.416,0.685,0.618,0.176; 0.388,1.388,0.694,0.416,0.684,0.619, - 0.176; 0.39,1.39,0.695,0.417,0.683,0.62,0.177; 0.392,1.392,0.696,0.418, - 0.682,0.62,0.177; 0.394,1.394,0.697,0.418,0.681,0.621,0.177; 0.396, - 1.396,0.698,0.419,0.681,0.622,0.177; 0.398,1.398,0.699,0.419,0.68,0.623, - 0.178; 0.4,1.4,0.7,0.42,0.679,0.624,0.178; 0.402,1.402,0.701,0.421, - 0.678,0.625,0.178; 0.404,1.404,0.702,0.421,0.677,0.626,0.178; 0.406, - 1.406,0.703,0.422,0.676,0.627,0.179; 0.408,1.408,0.704,0.422,0.675, - 0.628,0.179; 0.41,1.41,0.705,0.423,0.674,0.628,0.179; 0.412,1.412,0.706, - 0.424,0.673,0.629,0.179; 0.414,1.414,0.707,0.424,0.672,0.63,0.18; 0.416, - 1.416,0.708,0.425,0.671,0.631,0.18; 0.418,1.418,0.709,0.425,0.67,0.632, - 0.18; 0.42,1.42,0.71,0.426,0.669,0.633,0.181; 0.422,1.422,0.711,0.427, - 0.668,0.634,0.181; 0.424,1.424,0.712,0.427,0.667,0.635,0.181; 0.426, - 1.426,0.713,0.428,0.666,0.636,0.181; 0.428,1.428,0.714,0.428,0.665, - 0.636,0.182; 0.43,1.43,0.715,0.429,0.664,0.637,0.182; 0.432,1.432,0.716, - 0.43,0.663,0.638,0.182; 0.434,1.434,0.717,0.43,0.662,0.639,0.182; 0.436, - 1.436,0.718,0.431,0.662,0.64,0.183; 0.438,1.438,0.719,0.431,0.661,0.641, - 0.183; 0.44,1.44,0.72,0.432,0.66,0.642,0.183; 0.442,1.442,0.721,0.433, - 0.659,0.643,0.183; 0.444,1.444,0.722,0.433,0.658,0.644,0.184; 0.446, - 1.446,0.723,0.434,0.657,0.645,0.184; 0.448,1.448,0.724,0.434,0.656, - 0.645,0.184; 0.45,1.45,0.725,0.435,0.655,0.646,0.184; 0.452,1.452,0.726, - 0.436,0.654,0.647,0.185; 0.454,1.454,0.727,0.436,0.653,0.648,0.185; - 0.456,1.456,0.728,0.437,0.652,0.649,0.185; 0.458,1.458,0.729,0.437, - 0.652,0.65,0.185; 0.46,1.46,0.73,0.438,0.651,0.651,0.186; 0.462,1.462, - 0.731,0.439,0.65,0.652,0.186; 0.464,1.464,0.732,0.439,0.649,0.653,0.186; - 0.466,1.466,0.733,0.44,0.648,0.653,0.186; 0.468,1.468,0.734,0.44,0.647, - 0.654,0.187; 0.47,1.47,0.735,0.441,0.646,0.655,0.187; 0.472,1.472,0.736, - 0.442,0.645,0.656,0.187; 0.474,1.474,0.737,0.442,0.645,0.657,0.187; - 0.476,1.476,0.738,0.443,0.644,0.658,0.188; 0.478,1.478,0.739,0.443, - 0.643,0.659,0.188; 0.48,1.48,0.74,0.444,0.642,0.66,0.188; 0.482,1.482, - 0.741,0.445,0.641,0.661,0.188; 0.484,1.484,0.742,0.445,0.64,0.661,0.189; - 0.486,1.486,0.743,0.446,0.639,0.662,0.189; 0.488,1.488,0.744,0.446, - 0.638,0.663,0.189; 0.49,1.49,0.745,0.447,0.638,0.664,0.189; 0.492,1.492, - 0.746,0.448,0.637,0.665,0.19; 0.494,1.494,0.747,0.448,0.636,0.666,0.19; - 0.496,1.496,0.748,0.449,0.635,0.667,0.19; 0.498,1.498,0.749,0.449,0.634, - 0.668,0.19; 0.5,1.5,0.75,0.45,0.633,0.669,0.191; 0.502,1.502,0.751, - 0.451,0.632,0.669,0.191; 0.504,1.504,0.752,0.451,0.632,0.67,0.191; - 0.506,1.506,0.753,0.452,0.631,0.671,0.191; 0.508,1.508,0.754,0.452,0.63, - 0.672,0.192; 0.51,1.51,0.755,0.453,0.629,0.673,0.192; 0.512,1.512,0.756, - 0.454,0.628,0.674,0.192; 0.514,1.514,0.757,0.454,0.627,0.675,0.192; - 0.516,1.516,0.758,0.455,0.627,0.676,0.193; 0.518,1.518,0.759,0.455, - 0.626,0.677,0.193; 0.52,1.52,0.76,0.456,0.625,0.677,0.193; 0.522,1.522, - 0.761,0.457,0.624,0.678,0.193; 0.524,1.524,0.762,0.457,0.623,0.679, - 0.194; 0.526,1.526,0.763,0.458,0.623,0.68,0.194; 0.528,1.528,0.764, - 0.458,0.622,0.681,0.194; 0.53,1.53,0.765,0.459,0.621,0.682,0.194; 0.532, - 1.532,0.766,0.46,0.62,0.683,0.195; 0.534,1.534,0.767,0.46,0.619,0.684, - 0.195; 0.536,1.536,0.768,0.461,0.618,0.685,0.195; 0.538,1.538,0.769, - 0.461,0.618,0.686,0.196; 0.54,1.54,0.77,0.462,0.617,0.686,0.196; 0.542, - 1.542,0.771,0.463,0.616,0.687,0.196; 0.544,1.544,0.772,0.463,0.615, - 0.688,0.196; 0.546,1.546,0.773,0.464,0.614,0.689,0.197; 0.548,1.548, - 0.774,0.464,0.614,0.69,0.197; 0.55,1.55,0.775,0.465,0.613,0.691,0.197; - 0.552,1.552,0.776,0.466,0.612,0.692,0.197; 0.554,1.554,0.777,0.466, - 0.611,0.693,0.198; 0.556,1.556,0.778,0.467,0.611,0.694,0.198; 0.558, - 1.558,0.779,0.467,0.61,0.694,0.198; 0.56,1.56,0.78,0.468,0.609,0.695, - 0.198; 0.562,1.562,0.781,0.469,0.608,0.696,0.199; 0.564,1.564,0.782, - 0.469,0.607,0.697,0.199; 0.566,1.566,0.783,0.47,0.607,0.698,0.199; - 0.568,1.568,0.784,0.47,0.606,0.699,0.199; 0.57,1.57,0.785,0.471,0.605, - 0.7,0.2; 0.572,1.572,0.786,0.472,0.604,0.701,0.2; 0.574,1.574,0.787, - 0.472,0.604,0.702,0.2; 0.576,1.576,0.788,0.473,0.603,0.702,0.2; 0.578, - 1.578,0.789,0.473,0.602,0.703,0.201; 0.58,1.58,0.79,0.474,0.601,0.704, - 0.201; 0.582,1.582,0.791,0.475,0.601,0.705,0.201; 0.584,1.584,0.792, - 0.475,0.6,0.706,0.201; 0.586,1.586,0.793,0.476,0.599,0.707,0.202; 0.588, - 1.588,0.794,0.476,0.598,0.708,0.202; 0.59,1.59,0.795,0.477,0.597,0.709, - 0.202; 0.592,1.592,0.796,0.478,0.597,0.71,0.202; 0.594,1.594,0.797, - 0.478,0.596,0.71,0.203; 0.596,1.596,0.798,0.479,0.595,0.711,0.203; - 0.598,1.598,0.799,0.479,0.594,0.712,0.203; 0.6,1.6,0.8,0.48,0.594,0.713, - 0.203; 0.602,1.602,0.801,0.481,0.593,0.714,0.204; 0.604,1.604,0.802, - 0.481,0.592,0.715,0.204; 0.606,1.606,0.803,0.482,0.592,0.716,0.204; - 0.608,1.608,0.804,0.482,0.591,0.717,0.204; 0.61,1.61,0.805,0.483,0.59, - 0.718,0.205; 0.612,1.612,0.806,0.484,0.589,0.718,0.205; 0.614,1.614, - 0.807,0.484,0.589,0.719,0.205; 0.616,1.616,0.808,0.485,0.588,0.72,0.205; - 0.618,1.618,0.809,0.485,0.587,0.721,0.206; 0.62,1.62,0.81,0.486,0.586, - 0.722,0.206; 0.622,1.622,0.811,0.487,0.586,0.723,0.206; 0.624,1.624, - 0.812,0.487,0.585,0.724,0.206; 0.626,1.626,0.813,0.488,0.584,0.725, - 0.207; 0.628,1.628,0.814,0.488,0.584,0.726,0.207; 0.63,1.63,0.815,0.489, - 0.583,0.727,0.207; 0.632,1.632,0.816,0.49,0.582,0.727,0.207; 0.634, - 1.634,0.817,0.49,0.581,0.728,0.208; 0.636,1.636,0.818,0.491,0.581,0.729, - 0.208; 0.638,1.638,0.819,0.491,0.58,0.73,0.208; 0.64,1.64,0.82,0.492, - 0.579,0.731,0.208; 0.642,1.642,0.821,0.493,0.579,0.732,0.209; 0.644, - 1.644,0.822,0.493,0.578,0.733,0.209; 0.646,1.646,0.823,0.494,0.577, - 0.734,0.209; 0.648,1.648,0.824,0.494,0.576,0.735,0.209; 0.65,1.65,0.825, - 0.495,0.576,0.735,0.21; 0.652,1.652,0.826,0.496,0.575,0.736,0.21; 0.654, - 1.654,0.827,0.496,0.574,0.737,0.21; 0.656,1.656,0.828,0.497,0.574,0.738, - 0.211; 0.658,1.658,0.829,0.497,0.573,0.739,0.211; 0.66,1.66,0.83,0.498, - 0.572,0.74,0.211; 0.662,1.662,0.831,0.499,0.572,0.741,0.211; 0.664, - 1.664,0.832,0.499,0.571,0.742,0.212; 0.666,1.666,0.833,0.5,0.57,0.743, - 0.212; 0.668,1.668,0.834,0.5,0.57,0.743,0.212; 0.67,1.67,0.835,0.501, - 0.569,0.744,0.212; 0.672,1.672,0.836,0.502,0.568,0.745,0.213; 0.674, - 1.674,0.837,0.502,0.568,0.746,0.213; 0.676,1.676,0.838,0.503,0.567, - 0.747,0.213; 0.678,1.678,0.839,0.503,0.566,0.748,0.213; 0.68,1.68,0.84, - 0.504,0.565,0.749,0.214; 0.682,1.682,0.841,0.505,0.565,0.75,0.214; - 0.684,1.684,0.842,0.505,0.564,0.751,0.214; 0.686,1.686,0.843,0.506, - 0.563,0.751,0.214; 0.688,1.688,0.844,0.506,0.563,0.752,0.215; 0.69,1.69, - 0.845,0.507,0.562,0.753,0.215; 0.692,1.692,0.846,0.508,0.561,0.754, - 0.215; 0.694,1.694,0.847,0.508,0.561,0.755,0.215; 0.696,1.696,0.848, - 0.509,0.56,0.756,0.216; 0.698,1.698,0.849,0.509,0.559,0.757,0.216; 0.7, - 1.7,0.85,0.51,0.559,0.758,0.216; 0.702,1.702,0.851,0.511,0.558,0.759, - 0.216; 0.704,1.704,0.852,0.511,0.558,0.759,0.217; 0.706,1.706,0.853, - 0.512,0.557,0.76,0.217; 0.708,1.708,0.854,0.512,0.556,0.761,0.217; 0.71, - 1.71,0.855,0.513,0.556,0.762,0.217; 0.712,1.712,0.856,0.514,0.555,0.763, - 0.218; 0.714,1.714,0.857,0.514,0.554,0.764,0.218; 0.716,1.716,0.858, - 0.515,0.554,0.765,0.218; 0.718,1.718,0.859,0.515,0.553,0.766,0.218; - 0.72,1.72,0.86,0.516,0.552,0.767,0.219; 0.722,1.722,0.861,0.517,0.552, - 0.768,0.219; 0.724,1.724,0.862,0.517,0.551,0.768,0.219; 0.726,1.726, - 0.863,0.518,0.55,0.769,0.219; 0.728,1.728,0.864,0.518,0.55,0.77,0.22; - 0.73,1.73,0.865,0.519,0.549,0.771,0.22; 0.732,1.732,0.866,0.52,0.548, - 0.772,0.22; 0.734,1.734,0.867,0.52,0.548,0.773,0.22; 0.736,1.736,0.868, - 0.521,0.547,0.774,0.221; 0.738,1.738,0.869,0.521,0.547,0.775,0.221; - 0.74,1.74,0.87,0.522,0.546,0.776,0.221; 0.742,1.742,0.871,0.523,0.545, - 0.776,0.221; 0.744,1.744,0.872,0.523,0.545,0.777,0.222; 0.746,1.746, - 0.873,0.524,0.544,0.778,0.222; 0.748,1.748,0.874,0.524,0.543,0.779, - 0.222; 0.75,1.75,0.875,0.525,0.543,0.78,0.222; 0.752,1.752,0.876,0.526, - 0.542,0.781,0.223; 0.754,1.754,0.877,0.526,0.542,0.782,0.223; 0.756, - 1.756,0.878,0.527,0.541,0.783,0.223; 0.758,1.758,0.879,0.527,0.54,0.784, - 0.223; 0.76,1.76,0.88,0.528,0.54,0.784,0.224; 0.762,1.762,0.881,0.529, - 0.539,0.785,0.224; 0.764,1.764,0.882,0.529,0.539,0.786,0.224; 0.766, - 1.766,0.883,0.53,0.538,0.787,0.224; 0.768,1.768,0.884,0.53,0.537,0.788, - 0.225; 0.77,1.77,0.885,0.531,0.537,0.789,0.225; 0.772,1.772,0.886,0.532, - 0.536,0.79,0.225; 0.774,1.774,0.887,0.532,0.536,0.791,0.226; 0.776, - 1.776,0.888,0.533,0.535,0.792,0.226; 0.778,1.778,0.889,0.533,0.534, - 0.792,0.226; 0.78,1.78,0.89,0.534,0.534,0.793,0.226; 0.782,1.782,0.891, - 0.535,0.533,0.794,0.227; 0.784,1.784,0.892,0.535,0.533,0.795,0.227; - 0.786,1.786,0.893,0.536,0.532,0.796,0.227; 0.788,1.788,0.894,0.536, - 0.531,0.797,0.227; 0.79,1.79,0.895,0.537,0.531,0.798,0.228; 0.792,1.792, - 0.896,0.538,0.53,0.799,0.228; 0.794,1.794,0.897,0.538,0.53,0.8,0.228; - 0.796,1.796,0.898,0.539,0.529,0.801,0.228; 0.798,1.798,0.899,0.539, - 0.528,0.801,0.229; 0.8,1.8,0.9,0.54,0.528,0.802,0.229; 0.802,1.802, - 0.901,0.541,0.527,0.803,0.229; 0.804,1.804,0.902,0.541,0.527,0.804, - 0.229; 0.806,1.806,0.903,0.542,0.526,0.805,0.23; 0.808,1.808,0.904, - 0.542,0.525,0.806,0.23; 0.81,1.81,0.905,0.543,0.525,0.807,0.23; 0.812, - 1.812,0.906,0.544,0.524,0.808,0.23; 0.814,1.814,0.907,0.544,0.524,0.809, - 0.231; 0.816,1.816,0.908,0.545,0.523,0.809,0.231; 0.818,1.818,0.909, - 0.545,0.523,0.81,0.231; 0.82,1.82,0.91,0.546,0.522,0.811,0.231; 0.822, - 1.822,0.911,0.547,0.521,0.812,0.232; 0.824,1.824,0.912,0.547,0.521, - 0.813,0.232; 0.826,1.826,0.913,0.548,0.52,0.814,0.232; 0.828,1.828, - 0.914,0.548,0.52,0.815,0.232; 0.83,1.83,0.915,0.549,0.519,0.816,0.233; - 0.832,1.832,0.916,0.55,0.519,0.817,0.233; 0.834,1.834,0.917,0.55,0.518, - 0.817,0.233; 0.836,1.836,0.918,0.551,0.517,0.818,0.233; 0.838,1.838, - 0.919,0.551,0.517,0.819,0.234; 0.84,1.84,0.92,0.552,0.516,0.82,0.234; - 0.842,1.842,0.921,0.553,0.516,0.821,0.234; 0.844,1.844,0.922,0.553, - 0.515,0.822,0.234; 0.846,1.846,0.923,0.554,0.515,0.823,0.235; 0.848, - 1.848,0.924,0.554,0.514,0.824,0.235; 0.85,1.85,0.925,0.555,0.514,0.825, - 0.235; 0.852,1.852,0.926,0.556,0.513,0.825,0.235; 0.854,1.854,0.927, - 0.556,0.512,0.826,0.236; 0.856,1.856,0.928,0.557,0.512,0.827,0.236; - 0.858,1.858,0.929,0.557,0.511,0.828,0.236; 0.86,1.86,0.93,0.558,0.511, - 0.829,0.236; 0.862,1.862,0.931,0.559,0.51,0.83,0.237; 0.864,1.864,0.932, - 0.559,0.51,0.831,0.237; 0.866,1.866,0.933,0.56,0.509,0.832,0.237; 0.868, - 1.868,0.934,0.56,0.509,0.833,0.237; 0.87,1.87,0.935,0.561,0.508,0.833, - 0.238; 0.872,1.872,0.936,0.562,0.507,0.834,0.238; 0.874,1.874,0.937, - 0.562,0.507,0.835,0.238; 0.876,1.876,0.938,0.563,0.506,0.836,0.238; - 0.878,1.878,0.939,0.563,0.506,0.837,0.239; 0.88,1.88,0.94,0.564,0.505, - 0.838,0.239; 0.882,1.882,0.941,0.565,0.505,0.839,0.239; 0.884,1.884, - 0.942,0.565,0.504,0.84,0.239; 0.886,1.886,0.943,0.566,0.504,0.841,0.24; - 0.888,1.888,0.944,0.566,0.503,0.842,0.24; 0.89,1.89,0.945,0.567,0.503, - 0.842,0.24; 0.892,1.892,0.946,0.568,0.502,0.843,0.241; 0.894,1.894, - 0.947,0.568,0.502,0.844,0.241; 0.896,1.896,0.948,0.569,0.501,0.845, - 0.241; 0.898,1.898,0.949,0.569,0.501,0.846,0.241; 0.9,1.9,0.95,0.57,0.5, - 0.847,0.242; 0.902,1.902,0.951,0.571,0.499,0.848,0.242; 0.904,1.904, - 0.952,0.571,0.499,0.849,0.242; 0.906,1.906,0.953,0.572,0.498,0.85,0.242; - 0.908,1.908,0.954,0.572,0.498,0.85,0.243; 0.91,1.91,0.955,0.573,0.497, - 0.851,0.243; 0.912,1.912,0.956,0.574,0.497,0.852,0.243; 0.914,1.914, - 0.957,0.574,0.496,0.853,0.243; 0.916,1.916,0.958,0.575,0.496,0.854, - 0.244; 0.918,1.918,0.959,0.575,0.495,0.855,0.244; 0.92,1.92,0.96,0.576, - 0.495,0.856,0.244; 0.922,1.922,0.961,0.577,0.494,0.857,0.244; 0.924, - 1.924,0.962,0.577,0.494,0.858,0.245; 0.926,1.926,0.963,0.578,0.493, - 0.858,0.245; 0.928,1.928,0.964,0.578,0.493,0.859,0.245; 0.93,1.93,0.965, - 0.579,0.492,0.86,0.245; 0.932,1.932,0.966,0.58,0.492,0.861,0.246; 0.934, - 1.934,0.967,0.58,0.491,0.862,0.246; 0.936,1.936,0.968,0.581,0.491,0.863, - 0.246; 0.938,1.938,0.969,0.581,0.49,0.864,0.246; 0.94,1.94,0.97,0.582, - 0.49,0.865,0.247; 0.942,1.942,0.971,0.583,0.489,0.866,0.247; 0.944, - 1.944,0.972,0.583,0.489,0.866,0.247; 0.946,1.946,0.973,0.584,0.488, - 0.867,0.247; 0.948,1.948,0.974,0.584,0.488,0.868,0.248; 0.95,1.95,0.975, - 0.585,0.487,0.869,0.248; 0.952,1.952,0.976,0.586,0.487,0.87,0.248; - 0.954,1.954,0.977,0.586,0.486,0.871,0.248; 0.956,1.956,0.978,0.587, - 0.486,0.872,0.249; 0.958,1.958,0.979,0.587,0.485,0.873,0.249; 0.96,1.96, - 0.98,0.588,0.485,0.874,0.249; 0.962,1.962,0.981,0.589,0.484,0.874,0.249; - 0.964,1.964,0.982,0.589,0.484,0.875,0.25; 0.966,1.966,0.983,0.59,0.483, - 0.876,0.25; 0.968,1.968,0.984,0.59,0.483,0.877,0.25; 0.97,1.97,0.985, - 0.591,0.482,0.878,0.25; 0.972,1.972,0.986,0.592,0.482,0.879,0.251; - 0.974,1.974,0.987,0.592,0.481,0.88,0.251; 0.976,1.976,0.988,0.593,0.481, - 0.881,0.251; 0.978,1.978,0.989,0.593,0.48,0.882,0.251; 0.98,1.98,0.99, - 0.594,0.48,0.883,0.252; 0.982,1.982,0.991,0.595,0.479,0.883,0.252; - 0.984,1.984,0.992,0.595,0.479,0.884,0.252; 0.986,1.986,0.993,0.596, - 0.478,0.885,0.252; 0.988,1.988,0.994,0.596,0.478,0.886,0.253; 0.99,1.99, - 0.995,0.597,0.477,0.887,0.253; 0.992,1.992,0.996,0.598,0.477,0.888, - 0.253; 0.994,1.994,0.997,0.598,0.476,0.889,0.253; 0.996,1.996,0.998, - 0.599,0.476,0.89,0.254; 0.998,1.998,0.999,0.599,0.475,0.891,0.254; 1,2, - 1,0.6,0.475,0.891,0.254; 1,2,1,0.6,0.475,0.891,0.254], extrapolation= + 0.3,0.95,0.446,0.127; 0.1,1.1,0.55,0.33,0.864,0.49,0.14; 0.2,1.2, + 0.6,0.36,0.792,0.535,0.153; 0.3,1.3,0.65,0.39,0.731,0.579,0.165; + 0.4,1.4,0.7,0.42,0.679,0.624,0.178; 0.5,1.5,0.75,0.45,0.633,0.669,0.191; + 0.6,1.6,0.8,0.48,0.594,0.713,0.203; 0.7,1.7,0.85,0.51,0.559,0.758,0.216; + 0.8,1.8,0.9,0.54,0.528,0.802,0.229; 0.9,1.9,0.95,0.57,0.5,0.847,0.242; + 1,2,1,0.6,0.475,0.891,0.254], extrapolation= Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) "Data for validating the PIDDerivativeTime block" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mo index 4351e9525df..e5ed06a7763 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mo @@ -4,309 +4,12 @@ model PIDGain "Test model for PIDGain" "Calculate the control gain for a PID controller" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable RefDat(table=[0,1,0.5, - 0.3,0.95,0.446,0.127; 0.002,1.002,0.501,0.301,0.948,0.447,0.127; 0.004, - 1.004,0.502,0.301,0.946,0.447,0.128; 0.006,1.006,0.503,0.302,0.944, - 0.448,0.128; 0.008,1.008,0.504,0.302,0.942,0.449,0.128; 0.01,1.01,0.505, - 0.303,0.941,0.45,0.128; 0.012,1.012,0.506,0.304,0.939,0.451,0.129; - 0.014,1.014,0.507,0.304,0.937,0.452,0.129; 0.016,1.016,0.508,0.305, - 0.935,0.453,0.129; 0.018,1.018,0.509,0.305,0.933,0.454,0.129; 0.02,1.02, - 0.51,0.306,0.931,0.455,0.13; 0.022,1.022,0.511,0.307,0.93,0.456,0.13; - 0.024,1.024,0.512,0.307,0.928,0.456,0.13; 0.026,1.026,0.513,0.308,0.926, - 0.457,0.13; 0.028,1.028,0.514,0.308,0.924,0.458,0.131; 0.03,1.03,0.515, - 0.309,0.922,0.459,0.131; 0.032,1.032,0.516,0.31,0.921,0.46,0.131; 0.034, - 1.034,0.517,0.31,0.919,0.461,0.131; 0.036,1.036,0.518,0.311,0.917,0.462, - 0.132; 0.038,1.038,0.519,0.311,0.915,0.463,0.132; 0.04,1.04,0.52,0.312, - 0.913,0.464,0.132; 0.042,1.042,0.521,0.313,0.912,0.464,0.132; 0.044, - 1.044,0.522,0.313,0.91,0.465,0.133; 0.046,1.046,0.523,0.314,0.908,0.466, - 0.133; 0.048,1.048,0.524,0.314,0.906,0.467,0.133; 0.05,1.05,0.525,0.315, - 0.905,0.468,0.133; 0.052,1.052,0.526,0.316,0.903,0.469,0.134; 0.054, - 1.054,0.527,0.316,0.901,0.47,0.134; 0.056,1.056,0.528,0.317,0.9,0.471, - 0.134; 0.058,1.058,0.529,0.317,0.898,0.472,0.134; 0.06,1.06,0.53,0.318, - 0.896,0.472,0.135; 0.062,1.062,0.531,0.319,0.895,0.473,0.135; 0.064, - 1.064,0.532,0.319,0.893,0.474,0.135; 0.066,1.066,0.533,0.32,0.891,0.475, - 0.136; 0.068,1.068,0.534,0.32,0.89,0.476,0.136; 0.07,1.07,0.535,0.321, - 0.888,0.477,0.136; 0.072,1.072,0.536,0.322,0.886,0.478,0.136; 0.074, - 1.074,0.537,0.322,0.885,0.479,0.137; 0.076,1.076,0.538,0.323,0.883,0.48, - 0.137; 0.078,1.078,0.539,0.323,0.881,0.48,0.137; 0.08,1.08,0.54,0.324, - 0.88,0.481,0.137; 0.082,1.082,0.541,0.325,0.878,0.482,0.138; 0.084, - 1.084,0.542,0.325,0.876,0.483,0.138; 0.086,1.086,0.543,0.326,0.875, - 0.484,0.138; 0.088,1.088,0.544,0.326,0.873,0.485,0.138; 0.09,1.09,0.545, - 0.327,0.872,0.486,0.139; 0.092,1.092,0.546,0.328,0.87,0.487,0.139; - 0.094,1.094,0.547,0.328,0.868,0.488,0.139; 0.096,1.096,0.548,0.329, - 0.867,0.489,0.139; 0.098,1.098,0.549,0.329,0.865,0.489,0.14; 0.1,1.1, - 0.55,0.33,0.864,0.49,0.14; 0.102,1.102,0.551,0.331,0.862,0.491,0.14; - 0.104,1.104,0.552,0.331,0.861,0.492,0.14; 0.106,1.106,0.553,0.332,0.859, - 0.493,0.141; 0.108,1.108,0.554,0.332,0.857,0.494,0.141; 0.11,1.11,0.555, - 0.333,0.856,0.495,0.141; 0.112,1.112,0.556,0.334,0.854,0.496,0.141; - 0.114,1.114,0.557,0.334,0.853,0.497,0.142; 0.116,1.116,0.558,0.335, - 0.851,0.497,0.142; 0.118,1.118,0.559,0.335,0.85,0.498,0.142; 0.12,1.12, - 0.56,0.336,0.848,0.499,0.142; 0.122,1.122,0.561,0.337,0.847,0.5,0.143; - 0.124,1.124,0.562,0.337,0.845,0.501,0.143; 0.126,1.126,0.563,0.338, - 0.844,0.502,0.143; 0.128,1.128,0.564,0.338,0.842,0.503,0.143; 0.13,1.13, - 0.565,0.339,0.841,0.504,0.144; 0.132,1.132,0.566,0.34,0.839,0.505,0.144; - 0.134,1.134,0.567,0.34,0.838,0.505,0.144; 0.136,1.136,0.568,0.341,0.836, - 0.506,0.144; 0.138,1.138,0.569,0.341,0.835,0.507,0.145; 0.14,1.14,0.57, - 0.342,0.833,0.508,0.145; 0.142,1.142,0.571,0.343,0.832,0.509,0.145; - 0.144,1.144,0.572,0.343,0.83,0.51,0.145; 0.146,1.146,0.573,0.344,0.829, - 0.511,0.146; 0.148,1.148,0.574,0.344,0.828,0.512,0.146; 0.15,1.15,0.575, - 0.345,0.826,0.513,0.146; 0.152,1.152,0.576,0.346,0.825,0.513,0.146; - 0.154,1.154,0.577,0.346,0.823,0.514,0.147; 0.156,1.156,0.578,0.347, - 0.822,0.515,0.147; 0.158,1.158,0.579,0.347,0.82,0.516,0.147; 0.16,1.16, - 0.58,0.348,0.819,0.517,0.147; 0.162,1.162,0.581,0.349,0.818,0.518,0.148; - 0.164,1.164,0.582,0.349,0.816,0.519,0.148; 0.166,1.166,0.583,0.35,0.815, - 0.52,0.148; 0.168,1.168,0.584,0.35,0.813,0.521,0.148; 0.17,1.17,0.585, - 0.351,0.812,0.521,0.149; 0.172,1.172,0.586,0.352,0.811,0.522,0.149; - 0.174,1.174,0.587,0.352,0.809,0.523,0.149; 0.176,1.176,0.588,0.353, - 0.808,0.524,0.149; 0.178,1.178,0.589,0.353,0.806,0.525,0.15; 0.18,1.18, - 0.59,0.354,0.805,0.526,0.15; 0.182,1.182,0.591,0.355,0.804,0.527,0.15; - 0.184,1.184,0.592,0.355,0.802,0.528,0.151; 0.186,1.186,0.593,0.356, - 0.801,0.529,0.151; 0.188,1.188,0.594,0.356,0.8,0.53,0.151; 0.19,1.19, - 0.595,0.357,0.798,0.53,0.151; 0.192,1.192,0.596,0.358,0.797,0.531,0.152; - 0.194,1.194,0.597,0.358,0.796,0.532,0.152; 0.196,1.196,0.598,0.359, - 0.794,0.533,0.152; 0.198,1.198,0.599,0.359,0.793,0.534,0.152; 0.2,1.2, - 0.6,0.36,0.792,0.535,0.153; 0.202,1.202,0.601,0.361,0.79,0.536,0.153; - 0.204,1.204,0.602,0.361,0.789,0.537,0.153; 0.206,1.206,0.603,0.362, - 0.788,0.538,0.153; 0.208,1.208,0.604,0.362,0.786,0.538,0.154; 0.21,1.21, - 0.605,0.363,0.785,0.539,0.154; 0.212,1.212,0.606,0.364,0.784,0.54,0.154; - 0.214,1.214,0.607,0.364,0.783,0.541,0.154; 0.216,1.216,0.608,0.365, - 0.781,0.542,0.155; 0.218,1.218,0.609,0.365,0.78,0.543,0.155; 0.22,1.22, - 0.61,0.366,0.779,0.544,0.155; 0.222,1.222,0.611,0.367,0.777,0.545,0.155; - 0.224,1.224,0.612,0.367,0.776,0.546,0.156; 0.226,1.226,0.613,0.368, - 0.775,0.546,0.156; 0.228,1.228,0.614,0.368,0.774,0.547,0.156; 0.23,1.23, - 0.615,0.369,0.772,0.548,0.156; 0.232,1.232,0.616,0.37,0.771,0.549,0.157; - 0.234,1.234,0.617,0.37,0.77,0.55,0.157; 0.236,1.236,0.618,0.371,0.769, - 0.551,0.157; 0.238,1.238,0.619,0.371,0.767,0.552,0.157; 0.24,1.24,0.62, - 0.372,0.766,0.553,0.158; 0.242,1.242,0.621,0.373,0.765,0.554,0.158; - 0.244,1.244,0.622,0.373,0.764,0.554,0.158; 0.246,1.246,0.623,0.374, - 0.762,0.555,0.158; 0.248,1.248,0.624,0.374,0.761,0.556,0.159; 0.25,1.25, - 0.625,0.375,0.76,0.557,0.159; 0.252,1.252,0.626,0.376,0.759,0.558,0.159; - 0.254,1.254,0.627,0.376,0.758,0.559,0.159; 0.256,1.256,0.628,0.377, - 0.756,0.56,0.16; 0.258,1.258,0.629,0.377,0.755,0.561,0.16; 0.26,1.26, - 0.63,0.378,0.754,0.562,0.16; 0.262,1.262,0.631,0.379,0.753,0.562,0.16; - 0.264,1.264,0.632,0.379,0.752,0.563,0.161; 0.266,1.266,0.633,0.38,0.75, - 0.564,0.161; 0.268,1.268,0.634,0.38,0.749,0.565,0.161; 0.27,1.27,0.635, - 0.381,0.748,0.566,0.161; 0.272,1.272,0.636,0.382,0.747,0.567,0.162; - 0.274,1.274,0.637,0.382,0.746,0.568,0.162; 0.276,1.276,0.638,0.383, - 0.745,0.569,0.162; 0.278,1.278,0.639,0.383,0.743,0.57,0.162; 0.28,1.28, - 0.64,0.384,0.742,0.571,0.163; 0.282,1.282,0.641,0.385,0.741,0.571,0.163; - 0.284,1.284,0.642,0.385,0.74,0.572,0.163; 0.286,1.286,0.643,0.386,0.739, - 0.573,0.163; 0.288,1.288,0.644,0.386,0.738,0.574,0.164; 0.29,1.29,0.645, - 0.387,0.736,0.575,0.164; 0.292,1.292,0.646,0.388,0.735,0.576,0.164; - 0.294,1.294,0.647,0.388,0.734,0.577,0.164; 0.296,1.296,0.648,0.389, - 0.733,0.578,0.165; 0.298,1.298,0.649,0.389,0.732,0.579,0.165; 0.3,1.3, - 0.65,0.39,0.731,0.579,0.165; 0.302,1.302,0.651,0.391,0.73,0.58,0.166; - 0.304,1.304,0.652,0.391,0.729,0.581,0.166; 0.306,1.306,0.653,0.392, - 0.727,0.582,0.166; 0.308,1.308,0.654,0.392,0.726,0.583,0.166; 0.31,1.31, - 0.655,0.393,0.725,0.584,0.167; 0.312,1.312,0.656,0.394,0.724,0.585, - 0.167; 0.314,1.314,0.657,0.394,0.723,0.586,0.167; 0.316,1.316,0.658, - 0.395,0.722,0.587,0.167; 0.318,1.318,0.659,0.395,0.721,0.587,0.168; - 0.32,1.32,0.66,0.396,0.72,0.588,0.168; 0.322,1.322,0.661,0.397,0.719, - 0.589,0.168; 0.324,1.324,0.662,0.397,0.718,0.59,0.168; 0.326,1.326, - 0.663,0.398,0.716,0.591,0.169; 0.328,1.328,0.664,0.398,0.715,0.592, - 0.169; 0.33,1.33,0.665,0.399,0.714,0.593,0.169; 0.332,1.332,0.666,0.4, - 0.713,0.594,0.169; 0.334,1.334,0.667,0.4,0.712,0.595,0.17; 0.336,1.336, - 0.668,0.401,0.711,0.595,0.17; 0.338,1.338,0.669,0.401,0.71,0.596,0.17; - 0.34,1.34,0.67,0.402,0.709,0.597,0.17; 0.342,1.342,0.671,0.403,0.708, - 0.598,0.171; 0.344,1.344,0.672,0.403,0.707,0.599,0.171; 0.346,1.346, - 0.673,0.404,0.706,0.6,0.171; 0.348,1.348,0.674,0.404,0.705,0.601,0.171; - 0.35,1.35,0.675,0.405,0.704,0.602,0.172; 0.352,1.352,0.676,0.406,0.703, - 0.603,0.172; 0.354,1.354,0.677,0.406,0.702,0.603,0.172; 0.356,1.356, - 0.678,0.407,0.701,0.604,0.172; 0.358,1.358,0.679,0.407,0.7,0.605,0.173; - 0.36,1.36,0.68,0.408,0.699,0.606,0.173; 0.362,1.362,0.681,0.409,0.698, - 0.607,0.173; 0.364,1.364,0.682,0.409,0.696,0.608,0.173; 0.366,1.366, - 0.683,0.41,0.695,0.609,0.174; 0.368,1.368,0.684,0.41,0.694,0.61,0.174; - 0.37,1.37,0.685,0.411,0.693,0.611,0.174; 0.372,1.372,0.686,0.412,0.692, - 0.612,0.174; 0.374,1.374,0.687,0.412,0.691,0.612,0.175; 0.376,1.376, - 0.688,0.413,0.69,0.613,0.175; 0.378,1.378,0.689,0.413,0.689,0.614,0.175; - 0.38,1.38,0.69,0.414,0.688,0.615,0.175; 0.382,1.382,0.691,0.415,0.687, - 0.616,0.176; 0.384,1.384,0.692,0.415,0.686,0.617,0.176; 0.386,1.386, - 0.693,0.416,0.685,0.618,0.176; 0.388,1.388,0.694,0.416,0.684,0.619, - 0.176; 0.39,1.39,0.695,0.417,0.683,0.62,0.177; 0.392,1.392,0.696,0.418, - 0.682,0.62,0.177; 0.394,1.394,0.697,0.418,0.681,0.621,0.177; 0.396, - 1.396,0.698,0.419,0.681,0.622,0.177; 0.398,1.398,0.699,0.419,0.68,0.623, - 0.178; 0.4,1.4,0.7,0.42,0.679,0.624,0.178; 0.402,1.402,0.701,0.421, - 0.678,0.625,0.178; 0.404,1.404,0.702,0.421,0.677,0.626,0.178; 0.406, - 1.406,0.703,0.422,0.676,0.627,0.179; 0.408,1.408,0.704,0.422,0.675, - 0.628,0.179; 0.41,1.41,0.705,0.423,0.674,0.628,0.179; 0.412,1.412,0.706, - 0.424,0.673,0.629,0.179; 0.414,1.414,0.707,0.424,0.672,0.63,0.18; 0.416, - 1.416,0.708,0.425,0.671,0.631,0.18; 0.418,1.418,0.709,0.425,0.67,0.632, - 0.18; 0.42,1.42,0.71,0.426,0.669,0.633,0.181; 0.422,1.422,0.711,0.427, - 0.668,0.634,0.181; 0.424,1.424,0.712,0.427,0.667,0.635,0.181; 0.426, - 1.426,0.713,0.428,0.666,0.636,0.181; 0.428,1.428,0.714,0.428,0.665, - 0.636,0.182; 0.43,1.43,0.715,0.429,0.664,0.637,0.182; 0.432,1.432,0.716, - 0.43,0.663,0.638,0.182; 0.434,1.434,0.717,0.43,0.662,0.639,0.182; 0.436, - 1.436,0.718,0.431,0.662,0.64,0.183; 0.438,1.438,0.719,0.431,0.661,0.641, - 0.183; 0.44,1.44,0.72,0.432,0.66,0.642,0.183; 0.442,1.442,0.721,0.433, - 0.659,0.643,0.183; 0.444,1.444,0.722,0.433,0.658,0.644,0.184; 0.446, - 1.446,0.723,0.434,0.657,0.645,0.184; 0.448,1.448,0.724,0.434,0.656, - 0.645,0.184; 0.45,1.45,0.725,0.435,0.655,0.646,0.184; 0.452,1.452,0.726, - 0.436,0.654,0.647,0.185; 0.454,1.454,0.727,0.436,0.653,0.648,0.185; - 0.456,1.456,0.728,0.437,0.652,0.649,0.185; 0.458,1.458,0.729,0.437, - 0.652,0.65,0.185; 0.46,1.46,0.73,0.438,0.651,0.651,0.186; 0.462,1.462, - 0.731,0.439,0.65,0.652,0.186; 0.464,1.464,0.732,0.439,0.649,0.653,0.186; - 0.466,1.466,0.733,0.44,0.648,0.653,0.186; 0.468,1.468,0.734,0.44,0.647, - 0.654,0.187; 0.47,1.47,0.735,0.441,0.646,0.655,0.187; 0.472,1.472,0.736, - 0.442,0.645,0.656,0.187; 0.474,1.474,0.737,0.442,0.645,0.657,0.187; - 0.476,1.476,0.738,0.443,0.644,0.658,0.188; 0.478,1.478,0.739,0.443, - 0.643,0.659,0.188; 0.48,1.48,0.74,0.444,0.642,0.66,0.188; 0.482,1.482, - 0.741,0.445,0.641,0.661,0.188; 0.484,1.484,0.742,0.445,0.64,0.661,0.189; - 0.486,1.486,0.743,0.446,0.639,0.662,0.189; 0.488,1.488,0.744,0.446, - 0.638,0.663,0.189; 0.49,1.49,0.745,0.447,0.638,0.664,0.189; 0.492,1.492, - 0.746,0.448,0.637,0.665,0.19; 0.494,1.494,0.747,0.448,0.636,0.666,0.19; - 0.496,1.496,0.748,0.449,0.635,0.667,0.19; 0.498,1.498,0.749,0.449,0.634, - 0.668,0.19; 0.5,1.5,0.75,0.45,0.633,0.669,0.191; 0.502,1.502,0.751, - 0.451,0.632,0.669,0.191; 0.504,1.504,0.752,0.451,0.632,0.67,0.191; - 0.506,1.506,0.753,0.452,0.631,0.671,0.191; 0.508,1.508,0.754,0.452,0.63, - 0.672,0.192; 0.51,1.51,0.755,0.453,0.629,0.673,0.192; 0.512,1.512,0.756, - 0.454,0.628,0.674,0.192; 0.514,1.514,0.757,0.454,0.627,0.675,0.192; - 0.516,1.516,0.758,0.455,0.627,0.676,0.193; 0.518,1.518,0.759,0.455, - 0.626,0.677,0.193; 0.52,1.52,0.76,0.456,0.625,0.677,0.193; 0.522,1.522, - 0.761,0.457,0.624,0.678,0.193; 0.524,1.524,0.762,0.457,0.623,0.679, - 0.194; 0.526,1.526,0.763,0.458,0.623,0.68,0.194; 0.528,1.528,0.764, - 0.458,0.622,0.681,0.194; 0.53,1.53,0.765,0.459,0.621,0.682,0.194; 0.532, - 1.532,0.766,0.46,0.62,0.683,0.195; 0.534,1.534,0.767,0.46,0.619,0.684, - 0.195; 0.536,1.536,0.768,0.461,0.618,0.685,0.195; 0.538,1.538,0.769, - 0.461,0.618,0.686,0.196; 0.54,1.54,0.77,0.462,0.617,0.686,0.196; 0.542, - 1.542,0.771,0.463,0.616,0.687,0.196; 0.544,1.544,0.772,0.463,0.615, - 0.688,0.196; 0.546,1.546,0.773,0.464,0.614,0.689,0.197; 0.548,1.548, - 0.774,0.464,0.614,0.69,0.197; 0.55,1.55,0.775,0.465,0.613,0.691,0.197; - 0.552,1.552,0.776,0.466,0.612,0.692,0.197; 0.554,1.554,0.777,0.466, - 0.611,0.693,0.198; 0.556,1.556,0.778,0.467,0.611,0.694,0.198; 0.558, - 1.558,0.779,0.467,0.61,0.694,0.198; 0.56,1.56,0.78,0.468,0.609,0.695, - 0.198; 0.562,1.562,0.781,0.469,0.608,0.696,0.199; 0.564,1.564,0.782, - 0.469,0.607,0.697,0.199; 0.566,1.566,0.783,0.47,0.607,0.698,0.199; - 0.568,1.568,0.784,0.47,0.606,0.699,0.199; 0.57,1.57,0.785,0.471,0.605, - 0.7,0.2; 0.572,1.572,0.786,0.472,0.604,0.701,0.2; 0.574,1.574,0.787, - 0.472,0.604,0.702,0.2; 0.576,1.576,0.788,0.473,0.603,0.702,0.2; 0.578, - 1.578,0.789,0.473,0.602,0.703,0.201; 0.58,1.58,0.79,0.474,0.601,0.704, - 0.201; 0.582,1.582,0.791,0.475,0.601,0.705,0.201; 0.584,1.584,0.792, - 0.475,0.6,0.706,0.201; 0.586,1.586,0.793,0.476,0.599,0.707,0.202; 0.588, - 1.588,0.794,0.476,0.598,0.708,0.202; 0.59,1.59,0.795,0.477,0.597,0.709, - 0.202; 0.592,1.592,0.796,0.478,0.597,0.71,0.202; 0.594,1.594,0.797, - 0.478,0.596,0.71,0.203; 0.596,1.596,0.798,0.479,0.595,0.711,0.203; - 0.598,1.598,0.799,0.479,0.594,0.712,0.203; 0.6,1.6,0.8,0.48,0.594,0.713, - 0.203; 0.602,1.602,0.801,0.481,0.593,0.714,0.204; 0.604,1.604,0.802, - 0.481,0.592,0.715,0.204; 0.606,1.606,0.803,0.482,0.592,0.716,0.204; - 0.608,1.608,0.804,0.482,0.591,0.717,0.204; 0.61,1.61,0.805,0.483,0.59, - 0.718,0.205; 0.612,1.612,0.806,0.484,0.589,0.718,0.205; 0.614,1.614, - 0.807,0.484,0.589,0.719,0.205; 0.616,1.616,0.808,0.485,0.588,0.72,0.205; - 0.618,1.618,0.809,0.485,0.587,0.721,0.206; 0.62,1.62,0.81,0.486,0.586, - 0.722,0.206; 0.622,1.622,0.811,0.487,0.586,0.723,0.206; 0.624,1.624, - 0.812,0.487,0.585,0.724,0.206; 0.626,1.626,0.813,0.488,0.584,0.725, - 0.207; 0.628,1.628,0.814,0.488,0.584,0.726,0.207; 0.63,1.63,0.815,0.489, - 0.583,0.727,0.207; 0.632,1.632,0.816,0.49,0.582,0.727,0.207; 0.634, - 1.634,0.817,0.49,0.581,0.728,0.208; 0.636,1.636,0.818,0.491,0.581,0.729, - 0.208; 0.638,1.638,0.819,0.491,0.58,0.73,0.208; 0.64,1.64,0.82,0.492, - 0.579,0.731,0.208; 0.642,1.642,0.821,0.493,0.579,0.732,0.209; 0.644, - 1.644,0.822,0.493,0.578,0.733,0.209; 0.646,1.646,0.823,0.494,0.577, - 0.734,0.209; 0.648,1.648,0.824,0.494,0.576,0.735,0.209; 0.65,1.65,0.825, - 0.495,0.576,0.735,0.21; 0.652,1.652,0.826,0.496,0.575,0.736,0.21; 0.654, - 1.654,0.827,0.496,0.574,0.737,0.21; 0.656,1.656,0.828,0.497,0.574,0.738, - 0.211; 0.658,1.658,0.829,0.497,0.573,0.739,0.211; 0.66,1.66,0.83,0.498, - 0.572,0.74,0.211; 0.662,1.662,0.831,0.499,0.572,0.741,0.211; 0.664, - 1.664,0.832,0.499,0.571,0.742,0.212; 0.666,1.666,0.833,0.5,0.57,0.743, - 0.212; 0.668,1.668,0.834,0.5,0.57,0.743,0.212; 0.67,1.67,0.835,0.501, - 0.569,0.744,0.212; 0.672,1.672,0.836,0.502,0.568,0.745,0.213; 0.674, - 1.674,0.837,0.502,0.568,0.746,0.213; 0.676,1.676,0.838,0.503,0.567, - 0.747,0.213; 0.678,1.678,0.839,0.503,0.566,0.748,0.213; 0.68,1.68,0.84, - 0.504,0.565,0.749,0.214; 0.682,1.682,0.841,0.505,0.565,0.75,0.214; - 0.684,1.684,0.842,0.505,0.564,0.751,0.214; 0.686,1.686,0.843,0.506, - 0.563,0.751,0.214; 0.688,1.688,0.844,0.506,0.563,0.752,0.215; 0.69,1.69, - 0.845,0.507,0.562,0.753,0.215; 0.692,1.692,0.846,0.508,0.561,0.754, - 0.215; 0.694,1.694,0.847,0.508,0.561,0.755,0.215; 0.696,1.696,0.848, - 0.509,0.56,0.756,0.216; 0.698,1.698,0.849,0.509,0.559,0.757,0.216; 0.7, - 1.7,0.85,0.51,0.559,0.758,0.216; 0.702,1.702,0.851,0.511,0.558,0.759, - 0.216; 0.704,1.704,0.852,0.511,0.558,0.759,0.217; 0.706,1.706,0.853, - 0.512,0.557,0.76,0.217; 0.708,1.708,0.854,0.512,0.556,0.761,0.217; 0.71, - 1.71,0.855,0.513,0.556,0.762,0.217; 0.712,1.712,0.856,0.514,0.555,0.763, - 0.218; 0.714,1.714,0.857,0.514,0.554,0.764,0.218; 0.716,1.716,0.858, - 0.515,0.554,0.765,0.218; 0.718,1.718,0.859,0.515,0.553,0.766,0.218; - 0.72,1.72,0.86,0.516,0.552,0.767,0.219; 0.722,1.722,0.861,0.517,0.552, - 0.768,0.219; 0.724,1.724,0.862,0.517,0.551,0.768,0.219; 0.726,1.726, - 0.863,0.518,0.55,0.769,0.219; 0.728,1.728,0.864,0.518,0.55,0.77,0.22; - 0.73,1.73,0.865,0.519,0.549,0.771,0.22; 0.732,1.732,0.866,0.52,0.548, - 0.772,0.22; 0.734,1.734,0.867,0.52,0.548,0.773,0.22; 0.736,1.736,0.868, - 0.521,0.547,0.774,0.221; 0.738,1.738,0.869,0.521,0.547,0.775,0.221; - 0.74,1.74,0.87,0.522,0.546,0.776,0.221; 0.742,1.742,0.871,0.523,0.545, - 0.776,0.221; 0.744,1.744,0.872,0.523,0.545,0.777,0.222; 0.746,1.746, - 0.873,0.524,0.544,0.778,0.222; 0.748,1.748,0.874,0.524,0.543,0.779, - 0.222; 0.75,1.75,0.875,0.525,0.543,0.78,0.222; 0.752,1.752,0.876,0.526, - 0.542,0.781,0.223; 0.754,1.754,0.877,0.526,0.542,0.782,0.223; 0.756, - 1.756,0.878,0.527,0.541,0.783,0.223; 0.758,1.758,0.879,0.527,0.54,0.784, - 0.223; 0.76,1.76,0.88,0.528,0.54,0.784,0.224; 0.762,1.762,0.881,0.529, - 0.539,0.785,0.224; 0.764,1.764,0.882,0.529,0.539,0.786,0.224; 0.766, - 1.766,0.883,0.53,0.538,0.787,0.224; 0.768,1.768,0.884,0.53,0.537,0.788, - 0.225; 0.77,1.77,0.885,0.531,0.537,0.789,0.225; 0.772,1.772,0.886,0.532, - 0.536,0.79,0.225; 0.774,1.774,0.887,0.532,0.536,0.791,0.226; 0.776, - 1.776,0.888,0.533,0.535,0.792,0.226; 0.778,1.778,0.889,0.533,0.534, - 0.792,0.226; 0.78,1.78,0.89,0.534,0.534,0.793,0.226; 0.782,1.782,0.891, - 0.535,0.533,0.794,0.227; 0.784,1.784,0.892,0.535,0.533,0.795,0.227; - 0.786,1.786,0.893,0.536,0.532,0.796,0.227; 0.788,1.788,0.894,0.536, - 0.531,0.797,0.227; 0.79,1.79,0.895,0.537,0.531,0.798,0.228; 0.792,1.792, - 0.896,0.538,0.53,0.799,0.228; 0.794,1.794,0.897,0.538,0.53,0.8,0.228; - 0.796,1.796,0.898,0.539,0.529,0.801,0.228; 0.798,1.798,0.899,0.539, - 0.528,0.801,0.229; 0.8,1.8,0.9,0.54,0.528,0.802,0.229; 0.802,1.802, - 0.901,0.541,0.527,0.803,0.229; 0.804,1.804,0.902,0.541,0.527,0.804, - 0.229; 0.806,1.806,0.903,0.542,0.526,0.805,0.23; 0.808,1.808,0.904, - 0.542,0.525,0.806,0.23; 0.81,1.81,0.905,0.543,0.525,0.807,0.23; 0.812, - 1.812,0.906,0.544,0.524,0.808,0.23; 0.814,1.814,0.907,0.544,0.524,0.809, - 0.231; 0.816,1.816,0.908,0.545,0.523,0.809,0.231; 0.818,1.818,0.909, - 0.545,0.523,0.81,0.231; 0.82,1.82,0.91,0.546,0.522,0.811,0.231; 0.822, - 1.822,0.911,0.547,0.521,0.812,0.232; 0.824,1.824,0.912,0.547,0.521, - 0.813,0.232; 0.826,1.826,0.913,0.548,0.52,0.814,0.232; 0.828,1.828, - 0.914,0.548,0.52,0.815,0.232; 0.83,1.83,0.915,0.549,0.519,0.816,0.233; - 0.832,1.832,0.916,0.55,0.519,0.817,0.233; 0.834,1.834,0.917,0.55,0.518, - 0.817,0.233; 0.836,1.836,0.918,0.551,0.517,0.818,0.233; 0.838,1.838, - 0.919,0.551,0.517,0.819,0.234; 0.84,1.84,0.92,0.552,0.516,0.82,0.234; - 0.842,1.842,0.921,0.553,0.516,0.821,0.234; 0.844,1.844,0.922,0.553, - 0.515,0.822,0.234; 0.846,1.846,0.923,0.554,0.515,0.823,0.235; 0.848, - 1.848,0.924,0.554,0.514,0.824,0.235; 0.85,1.85,0.925,0.555,0.514,0.825, - 0.235; 0.852,1.852,0.926,0.556,0.513,0.825,0.235; 0.854,1.854,0.927, - 0.556,0.512,0.826,0.236; 0.856,1.856,0.928,0.557,0.512,0.827,0.236; - 0.858,1.858,0.929,0.557,0.511,0.828,0.236; 0.86,1.86,0.93,0.558,0.511, - 0.829,0.236; 0.862,1.862,0.931,0.559,0.51,0.83,0.237; 0.864,1.864,0.932, - 0.559,0.51,0.831,0.237; 0.866,1.866,0.933,0.56,0.509,0.832,0.237; 0.868, - 1.868,0.934,0.56,0.509,0.833,0.237; 0.87,1.87,0.935,0.561,0.508,0.833, - 0.238; 0.872,1.872,0.936,0.562,0.507,0.834,0.238; 0.874,1.874,0.937, - 0.562,0.507,0.835,0.238; 0.876,1.876,0.938,0.563,0.506,0.836,0.238; - 0.878,1.878,0.939,0.563,0.506,0.837,0.239; 0.88,1.88,0.94,0.564,0.505, - 0.838,0.239; 0.882,1.882,0.941,0.565,0.505,0.839,0.239; 0.884,1.884, - 0.942,0.565,0.504,0.84,0.239; 0.886,1.886,0.943,0.566,0.504,0.841,0.24; - 0.888,1.888,0.944,0.566,0.503,0.842,0.24; 0.89,1.89,0.945,0.567,0.503, - 0.842,0.24; 0.892,1.892,0.946,0.568,0.502,0.843,0.241; 0.894,1.894, - 0.947,0.568,0.502,0.844,0.241; 0.896,1.896,0.948,0.569,0.501,0.845, - 0.241; 0.898,1.898,0.949,0.569,0.501,0.846,0.241; 0.9,1.9,0.95,0.57,0.5, - 0.847,0.242; 0.902,1.902,0.951,0.571,0.499,0.848,0.242; 0.904,1.904, - 0.952,0.571,0.499,0.849,0.242; 0.906,1.906,0.953,0.572,0.498,0.85,0.242; - 0.908,1.908,0.954,0.572,0.498,0.85,0.243; 0.91,1.91,0.955,0.573,0.497, - 0.851,0.243; 0.912,1.912,0.956,0.574,0.497,0.852,0.243; 0.914,1.914, - 0.957,0.574,0.496,0.853,0.243; 0.916,1.916,0.958,0.575,0.496,0.854, - 0.244; 0.918,1.918,0.959,0.575,0.495,0.855,0.244; 0.92,1.92,0.96,0.576, - 0.495,0.856,0.244; 0.922,1.922,0.961,0.577,0.494,0.857,0.244; 0.924, - 1.924,0.962,0.577,0.494,0.858,0.245; 0.926,1.926,0.963,0.578,0.493, - 0.858,0.245; 0.928,1.928,0.964,0.578,0.493,0.859,0.245; 0.93,1.93,0.965, - 0.579,0.492,0.86,0.245; 0.932,1.932,0.966,0.58,0.492,0.861,0.246; 0.934, - 1.934,0.967,0.58,0.491,0.862,0.246; 0.936,1.936,0.968,0.581,0.491,0.863, - 0.246; 0.938,1.938,0.969,0.581,0.49,0.864,0.246; 0.94,1.94,0.97,0.582, - 0.49,0.865,0.247; 0.942,1.942,0.971,0.583,0.489,0.866,0.247; 0.944, - 1.944,0.972,0.583,0.489,0.866,0.247; 0.946,1.946,0.973,0.584,0.488, - 0.867,0.247; 0.948,1.948,0.974,0.584,0.488,0.868,0.248; 0.95,1.95,0.975, - 0.585,0.487,0.869,0.248; 0.952,1.952,0.976,0.586,0.487,0.87,0.248; - 0.954,1.954,0.977,0.586,0.486,0.871,0.248; 0.956,1.956,0.978,0.587, - 0.486,0.872,0.249; 0.958,1.958,0.979,0.587,0.485,0.873,0.249; 0.96,1.96, - 0.98,0.588,0.485,0.874,0.249; 0.962,1.962,0.981,0.589,0.484,0.874,0.249; - 0.964,1.964,0.982,0.589,0.484,0.875,0.25; 0.966,1.966,0.983,0.59,0.483, - 0.876,0.25; 0.968,1.968,0.984,0.59,0.483,0.877,0.25; 0.97,1.97,0.985, - 0.591,0.482,0.878,0.25; 0.972,1.972,0.986,0.592,0.482,0.879,0.251; - 0.974,1.974,0.987,0.592,0.481,0.88,0.251; 0.976,1.976,0.988,0.593,0.481, - 0.881,0.251; 0.978,1.978,0.989,0.593,0.48,0.882,0.251; 0.98,1.98,0.99, - 0.594,0.48,0.883,0.252; 0.982,1.982,0.991,0.595,0.479,0.883,0.252; - 0.984,1.984,0.992,0.595,0.479,0.884,0.252; 0.986,1.986,0.993,0.596, - 0.478,0.885,0.252; 0.988,1.988,0.994,0.596,0.478,0.886,0.253; 0.99,1.99, - 0.995,0.597,0.477,0.887,0.253; 0.992,1.992,0.996,0.598,0.477,0.888, - 0.253; 0.994,1.994,0.997,0.598,0.476,0.889,0.253; 0.996,1.996,0.998, - 0.599,0.476,0.89,0.254; 0.998,1.998,0.999,0.599,0.475,0.891,0.254; 1,2, - 1,0.6,0.475,0.891,0.254; 1,2,1,0.6,0.475,0.891,0.254], extrapolation= + 0.3,0.95,0.446,0.127; 0.1,1.1,0.55,0.33,0.864,0.49,0.14; 0.2,1.2, + 0.6,0.36,0.792,0.535,0.153; 0.3,1.3, 0.65,0.39,0.731,0.579,0.165; + 0.4,1.4,0.7,0.42,0.679,0.624,0.178; 0.5,1.5,0.75,0.45,0.633,0.669,0.191; + 0.6,1.6,0.8,0.48,0.594,0.713,0.203; 0.7,1.7,0.85,0.51,0.559,0.758,0.216; + 0.8,1.8,0.9,0.54,0.528,0.802,0.229; 0.9,1.9,0.95,0.57,0.5, + 0.847,0.242; 1,2,1,0.6,0.475,0.891,0.254], extrapolation= Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) "Data for validating the PIDGain block" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mo index c6a53415893..a8eb76961ba 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mo @@ -4,309 +4,12 @@ model PIDIntegralTime "Test model for PIDIntergralTime" PIDIntTim "Calculate the integral time for a PID controller" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable RefDat(table=[0,1,0.5, - 0.3,0.95,0.446,0.127; 0.002,1.002,0.501,0.301,0.948,0.447,0.127; 0.004, - 1.004,0.502,0.301,0.946,0.447,0.128; 0.006,1.006,0.503,0.302,0.944, - 0.448,0.128; 0.008,1.008,0.504,0.302,0.942,0.449,0.128; 0.01,1.01,0.505, - 0.303,0.941,0.45,0.128; 0.012,1.012,0.506,0.304,0.939,0.451,0.129; - 0.014,1.014,0.507,0.304,0.937,0.452,0.129; 0.016,1.016,0.508,0.305, - 0.935,0.453,0.129; 0.018,1.018,0.509,0.305,0.933,0.454,0.129; 0.02,1.02, - 0.51,0.306,0.931,0.455,0.13; 0.022,1.022,0.511,0.307,0.93,0.456,0.13; - 0.024,1.024,0.512,0.307,0.928,0.456,0.13; 0.026,1.026,0.513,0.308,0.926, - 0.457,0.13; 0.028,1.028,0.514,0.308,0.924,0.458,0.131; 0.03,1.03,0.515, - 0.309,0.922,0.459,0.131; 0.032,1.032,0.516,0.31,0.921,0.46,0.131; 0.034, - 1.034,0.517,0.31,0.919,0.461,0.131; 0.036,1.036,0.518,0.311,0.917,0.462, - 0.132; 0.038,1.038,0.519,0.311,0.915,0.463,0.132; 0.04,1.04,0.52,0.312, - 0.913,0.464,0.132; 0.042,1.042,0.521,0.313,0.912,0.464,0.132; 0.044, - 1.044,0.522,0.313,0.91,0.465,0.133; 0.046,1.046,0.523,0.314,0.908,0.466, - 0.133; 0.048,1.048,0.524,0.314,0.906,0.467,0.133; 0.05,1.05,0.525,0.315, - 0.905,0.468,0.133; 0.052,1.052,0.526,0.316,0.903,0.469,0.134; 0.054, - 1.054,0.527,0.316,0.901,0.47,0.134; 0.056,1.056,0.528,0.317,0.9,0.471, - 0.134; 0.058,1.058,0.529,0.317,0.898,0.472,0.134; 0.06,1.06,0.53,0.318, - 0.896,0.472,0.135; 0.062,1.062,0.531,0.319,0.895,0.473,0.135; 0.064, - 1.064,0.532,0.319,0.893,0.474,0.135; 0.066,1.066,0.533,0.32,0.891,0.475, - 0.136; 0.068,1.068,0.534,0.32,0.89,0.476,0.136; 0.07,1.07,0.535,0.321, - 0.888,0.477,0.136; 0.072,1.072,0.536,0.322,0.886,0.478,0.136; 0.074, - 1.074,0.537,0.322,0.885,0.479,0.137; 0.076,1.076,0.538,0.323,0.883,0.48, - 0.137; 0.078,1.078,0.539,0.323,0.881,0.48,0.137; 0.08,1.08,0.54,0.324, - 0.88,0.481,0.137; 0.082,1.082,0.541,0.325,0.878,0.482,0.138; 0.084, - 1.084,0.542,0.325,0.876,0.483,0.138; 0.086,1.086,0.543,0.326,0.875, - 0.484,0.138; 0.088,1.088,0.544,0.326,0.873,0.485,0.138; 0.09,1.09,0.545, - 0.327,0.872,0.486,0.139; 0.092,1.092,0.546,0.328,0.87,0.487,0.139; - 0.094,1.094,0.547,0.328,0.868,0.488,0.139; 0.096,1.096,0.548,0.329, - 0.867,0.489,0.139; 0.098,1.098,0.549,0.329,0.865,0.489,0.14; 0.1,1.1, - 0.55,0.33,0.864,0.49,0.14; 0.102,1.102,0.551,0.331,0.862,0.491,0.14; - 0.104,1.104,0.552,0.331,0.861,0.492,0.14; 0.106,1.106,0.553,0.332,0.859, - 0.493,0.141; 0.108,1.108,0.554,0.332,0.857,0.494,0.141; 0.11,1.11,0.555, - 0.333,0.856,0.495,0.141; 0.112,1.112,0.556,0.334,0.854,0.496,0.141; - 0.114,1.114,0.557,0.334,0.853,0.497,0.142; 0.116,1.116,0.558,0.335, - 0.851,0.497,0.142; 0.118,1.118,0.559,0.335,0.85,0.498,0.142; 0.12,1.12, - 0.56,0.336,0.848,0.499,0.142; 0.122,1.122,0.561,0.337,0.847,0.5,0.143; - 0.124,1.124,0.562,0.337,0.845,0.501,0.143; 0.126,1.126,0.563,0.338, - 0.844,0.502,0.143; 0.128,1.128,0.564,0.338,0.842,0.503,0.143; 0.13,1.13, - 0.565,0.339,0.841,0.504,0.144; 0.132,1.132,0.566,0.34,0.839,0.505,0.144; - 0.134,1.134,0.567,0.34,0.838,0.505,0.144; 0.136,1.136,0.568,0.341,0.836, - 0.506,0.144; 0.138,1.138,0.569,0.341,0.835,0.507,0.145; 0.14,1.14,0.57, - 0.342,0.833,0.508,0.145; 0.142,1.142,0.571,0.343,0.832,0.509,0.145; - 0.144,1.144,0.572,0.343,0.83,0.51,0.145; 0.146,1.146,0.573,0.344,0.829, - 0.511,0.146; 0.148,1.148,0.574,0.344,0.828,0.512,0.146; 0.15,1.15,0.575, - 0.345,0.826,0.513,0.146; 0.152,1.152,0.576,0.346,0.825,0.513,0.146; - 0.154,1.154,0.577,0.346,0.823,0.514,0.147; 0.156,1.156,0.578,0.347, - 0.822,0.515,0.147; 0.158,1.158,0.579,0.347,0.82,0.516,0.147; 0.16,1.16, - 0.58,0.348,0.819,0.517,0.147; 0.162,1.162,0.581,0.349,0.818,0.518,0.148; - 0.164,1.164,0.582,0.349,0.816,0.519,0.148; 0.166,1.166,0.583,0.35,0.815, - 0.52,0.148; 0.168,1.168,0.584,0.35,0.813,0.521,0.148; 0.17,1.17,0.585, - 0.351,0.812,0.521,0.149; 0.172,1.172,0.586,0.352,0.811,0.522,0.149; - 0.174,1.174,0.587,0.352,0.809,0.523,0.149; 0.176,1.176,0.588,0.353, - 0.808,0.524,0.149; 0.178,1.178,0.589,0.353,0.806,0.525,0.15; 0.18,1.18, - 0.59,0.354,0.805,0.526,0.15; 0.182,1.182,0.591,0.355,0.804,0.527,0.15; - 0.184,1.184,0.592,0.355,0.802,0.528,0.151; 0.186,1.186,0.593,0.356, - 0.801,0.529,0.151; 0.188,1.188,0.594,0.356,0.8,0.53,0.151; 0.19,1.19, - 0.595,0.357,0.798,0.53,0.151; 0.192,1.192,0.596,0.358,0.797,0.531,0.152; - 0.194,1.194,0.597,0.358,0.796,0.532,0.152; 0.196,1.196,0.598,0.359, - 0.794,0.533,0.152; 0.198,1.198,0.599,0.359,0.793,0.534,0.152; 0.2,1.2, - 0.6,0.36,0.792,0.535,0.153; 0.202,1.202,0.601,0.361,0.79,0.536,0.153; - 0.204,1.204,0.602,0.361,0.789,0.537,0.153; 0.206,1.206,0.603,0.362, - 0.788,0.538,0.153; 0.208,1.208,0.604,0.362,0.786,0.538,0.154; 0.21,1.21, - 0.605,0.363,0.785,0.539,0.154; 0.212,1.212,0.606,0.364,0.784,0.54,0.154; - 0.214,1.214,0.607,0.364,0.783,0.541,0.154; 0.216,1.216,0.608,0.365, - 0.781,0.542,0.155; 0.218,1.218,0.609,0.365,0.78,0.543,0.155; 0.22,1.22, - 0.61,0.366,0.779,0.544,0.155; 0.222,1.222,0.611,0.367,0.777,0.545,0.155; - 0.224,1.224,0.612,0.367,0.776,0.546,0.156; 0.226,1.226,0.613,0.368, - 0.775,0.546,0.156; 0.228,1.228,0.614,0.368,0.774,0.547,0.156; 0.23,1.23, - 0.615,0.369,0.772,0.548,0.156; 0.232,1.232,0.616,0.37,0.771,0.549,0.157; - 0.234,1.234,0.617,0.37,0.77,0.55,0.157; 0.236,1.236,0.618,0.371,0.769, - 0.551,0.157; 0.238,1.238,0.619,0.371,0.767,0.552,0.157; 0.24,1.24,0.62, - 0.372,0.766,0.553,0.158; 0.242,1.242,0.621,0.373,0.765,0.554,0.158; - 0.244,1.244,0.622,0.373,0.764,0.554,0.158; 0.246,1.246,0.623,0.374, - 0.762,0.555,0.158; 0.248,1.248,0.624,0.374,0.761,0.556,0.159; 0.25,1.25, - 0.625,0.375,0.76,0.557,0.159; 0.252,1.252,0.626,0.376,0.759,0.558,0.159; - 0.254,1.254,0.627,0.376,0.758,0.559,0.159; 0.256,1.256,0.628,0.377, - 0.756,0.56,0.16; 0.258,1.258,0.629,0.377,0.755,0.561,0.16; 0.26,1.26, - 0.63,0.378,0.754,0.562,0.16; 0.262,1.262,0.631,0.379,0.753,0.562,0.16; - 0.264,1.264,0.632,0.379,0.752,0.563,0.161; 0.266,1.266,0.633,0.38,0.75, - 0.564,0.161; 0.268,1.268,0.634,0.38,0.749,0.565,0.161; 0.27,1.27,0.635, - 0.381,0.748,0.566,0.161; 0.272,1.272,0.636,0.382,0.747,0.567,0.162; - 0.274,1.274,0.637,0.382,0.746,0.568,0.162; 0.276,1.276,0.638,0.383, - 0.745,0.569,0.162; 0.278,1.278,0.639,0.383,0.743,0.57,0.162; 0.28,1.28, - 0.64,0.384,0.742,0.571,0.163; 0.282,1.282,0.641,0.385,0.741,0.571,0.163; - 0.284,1.284,0.642,0.385,0.74,0.572,0.163; 0.286,1.286,0.643,0.386,0.739, - 0.573,0.163; 0.288,1.288,0.644,0.386,0.738,0.574,0.164; 0.29,1.29,0.645, - 0.387,0.736,0.575,0.164; 0.292,1.292,0.646,0.388,0.735,0.576,0.164; - 0.294,1.294,0.647,0.388,0.734,0.577,0.164; 0.296,1.296,0.648,0.389, - 0.733,0.578,0.165; 0.298,1.298,0.649,0.389,0.732,0.579,0.165; 0.3,1.3, - 0.65,0.39,0.731,0.579,0.165; 0.302,1.302,0.651,0.391,0.73,0.58,0.166; - 0.304,1.304,0.652,0.391,0.729,0.581,0.166; 0.306,1.306,0.653,0.392, - 0.727,0.582,0.166; 0.308,1.308,0.654,0.392,0.726,0.583,0.166; 0.31,1.31, - 0.655,0.393,0.725,0.584,0.167; 0.312,1.312,0.656,0.394,0.724,0.585, - 0.167; 0.314,1.314,0.657,0.394,0.723,0.586,0.167; 0.316,1.316,0.658, - 0.395,0.722,0.587,0.167; 0.318,1.318,0.659,0.395,0.721,0.587,0.168; - 0.32,1.32,0.66,0.396,0.72,0.588,0.168; 0.322,1.322,0.661,0.397,0.719, - 0.589,0.168; 0.324,1.324,0.662,0.397,0.718,0.59,0.168; 0.326,1.326, - 0.663,0.398,0.716,0.591,0.169; 0.328,1.328,0.664,0.398,0.715,0.592, - 0.169; 0.33,1.33,0.665,0.399,0.714,0.593,0.169; 0.332,1.332,0.666,0.4, - 0.713,0.594,0.169; 0.334,1.334,0.667,0.4,0.712,0.595,0.17; 0.336,1.336, - 0.668,0.401,0.711,0.595,0.17; 0.338,1.338,0.669,0.401,0.71,0.596,0.17; - 0.34,1.34,0.67,0.402,0.709,0.597,0.17; 0.342,1.342,0.671,0.403,0.708, - 0.598,0.171; 0.344,1.344,0.672,0.403,0.707,0.599,0.171; 0.346,1.346, - 0.673,0.404,0.706,0.6,0.171; 0.348,1.348,0.674,0.404,0.705,0.601,0.171; - 0.35,1.35,0.675,0.405,0.704,0.602,0.172; 0.352,1.352,0.676,0.406,0.703, - 0.603,0.172; 0.354,1.354,0.677,0.406,0.702,0.603,0.172; 0.356,1.356, - 0.678,0.407,0.701,0.604,0.172; 0.358,1.358,0.679,0.407,0.7,0.605,0.173; - 0.36,1.36,0.68,0.408,0.699,0.606,0.173; 0.362,1.362,0.681,0.409,0.698, - 0.607,0.173; 0.364,1.364,0.682,0.409,0.696,0.608,0.173; 0.366,1.366, - 0.683,0.41,0.695,0.609,0.174; 0.368,1.368,0.684,0.41,0.694,0.61,0.174; - 0.37,1.37,0.685,0.411,0.693,0.611,0.174; 0.372,1.372,0.686,0.412,0.692, - 0.612,0.174; 0.374,1.374,0.687,0.412,0.691,0.612,0.175; 0.376,1.376, - 0.688,0.413,0.69,0.613,0.175; 0.378,1.378,0.689,0.413,0.689,0.614,0.175; - 0.38,1.38,0.69,0.414,0.688,0.615,0.175; 0.382,1.382,0.691,0.415,0.687, - 0.616,0.176; 0.384,1.384,0.692,0.415,0.686,0.617,0.176; 0.386,1.386, - 0.693,0.416,0.685,0.618,0.176; 0.388,1.388,0.694,0.416,0.684,0.619, - 0.176; 0.39,1.39,0.695,0.417,0.683,0.62,0.177; 0.392,1.392,0.696,0.418, - 0.682,0.62,0.177; 0.394,1.394,0.697,0.418,0.681,0.621,0.177; 0.396, - 1.396,0.698,0.419,0.681,0.622,0.177; 0.398,1.398,0.699,0.419,0.68,0.623, - 0.178; 0.4,1.4,0.7,0.42,0.679,0.624,0.178; 0.402,1.402,0.701,0.421, - 0.678,0.625,0.178; 0.404,1.404,0.702,0.421,0.677,0.626,0.178; 0.406, - 1.406,0.703,0.422,0.676,0.627,0.179; 0.408,1.408,0.704,0.422,0.675, - 0.628,0.179; 0.41,1.41,0.705,0.423,0.674,0.628,0.179; 0.412,1.412,0.706, - 0.424,0.673,0.629,0.179; 0.414,1.414,0.707,0.424,0.672,0.63,0.18; 0.416, - 1.416,0.708,0.425,0.671,0.631,0.18; 0.418,1.418,0.709,0.425,0.67,0.632, - 0.18; 0.42,1.42,0.71,0.426,0.669,0.633,0.181; 0.422,1.422,0.711,0.427, - 0.668,0.634,0.181; 0.424,1.424,0.712,0.427,0.667,0.635,0.181; 0.426, - 1.426,0.713,0.428,0.666,0.636,0.181; 0.428,1.428,0.714,0.428,0.665, - 0.636,0.182; 0.43,1.43,0.715,0.429,0.664,0.637,0.182; 0.432,1.432,0.716, - 0.43,0.663,0.638,0.182; 0.434,1.434,0.717,0.43,0.662,0.639,0.182; 0.436, - 1.436,0.718,0.431,0.662,0.64,0.183; 0.438,1.438,0.719,0.431,0.661,0.641, - 0.183; 0.44,1.44,0.72,0.432,0.66,0.642,0.183; 0.442,1.442,0.721,0.433, - 0.659,0.643,0.183; 0.444,1.444,0.722,0.433,0.658,0.644,0.184; 0.446, - 1.446,0.723,0.434,0.657,0.645,0.184; 0.448,1.448,0.724,0.434,0.656, - 0.645,0.184; 0.45,1.45,0.725,0.435,0.655,0.646,0.184; 0.452,1.452,0.726, - 0.436,0.654,0.647,0.185; 0.454,1.454,0.727,0.436,0.653,0.648,0.185; - 0.456,1.456,0.728,0.437,0.652,0.649,0.185; 0.458,1.458,0.729,0.437, - 0.652,0.65,0.185; 0.46,1.46,0.73,0.438,0.651,0.651,0.186; 0.462,1.462, - 0.731,0.439,0.65,0.652,0.186; 0.464,1.464,0.732,0.439,0.649,0.653,0.186; - 0.466,1.466,0.733,0.44,0.648,0.653,0.186; 0.468,1.468,0.734,0.44,0.647, - 0.654,0.187; 0.47,1.47,0.735,0.441,0.646,0.655,0.187; 0.472,1.472,0.736, - 0.442,0.645,0.656,0.187; 0.474,1.474,0.737,0.442,0.645,0.657,0.187; - 0.476,1.476,0.738,0.443,0.644,0.658,0.188; 0.478,1.478,0.739,0.443, - 0.643,0.659,0.188; 0.48,1.48,0.74,0.444,0.642,0.66,0.188; 0.482,1.482, - 0.741,0.445,0.641,0.661,0.188; 0.484,1.484,0.742,0.445,0.64,0.661,0.189; - 0.486,1.486,0.743,0.446,0.639,0.662,0.189; 0.488,1.488,0.744,0.446, - 0.638,0.663,0.189; 0.49,1.49,0.745,0.447,0.638,0.664,0.189; 0.492,1.492, - 0.746,0.448,0.637,0.665,0.19; 0.494,1.494,0.747,0.448,0.636,0.666,0.19; - 0.496,1.496,0.748,0.449,0.635,0.667,0.19; 0.498,1.498,0.749,0.449,0.634, - 0.668,0.19; 0.5,1.5,0.75,0.45,0.633,0.669,0.191; 0.502,1.502,0.751, - 0.451,0.632,0.669,0.191; 0.504,1.504,0.752,0.451,0.632,0.67,0.191; - 0.506,1.506,0.753,0.452,0.631,0.671,0.191; 0.508,1.508,0.754,0.452,0.63, - 0.672,0.192; 0.51,1.51,0.755,0.453,0.629,0.673,0.192; 0.512,1.512,0.756, - 0.454,0.628,0.674,0.192; 0.514,1.514,0.757,0.454,0.627,0.675,0.192; - 0.516,1.516,0.758,0.455,0.627,0.676,0.193; 0.518,1.518,0.759,0.455, - 0.626,0.677,0.193; 0.52,1.52,0.76,0.456,0.625,0.677,0.193; 0.522,1.522, - 0.761,0.457,0.624,0.678,0.193; 0.524,1.524,0.762,0.457,0.623,0.679, - 0.194; 0.526,1.526,0.763,0.458,0.623,0.68,0.194; 0.528,1.528,0.764, - 0.458,0.622,0.681,0.194; 0.53,1.53,0.765,0.459,0.621,0.682,0.194; 0.532, - 1.532,0.766,0.46,0.62,0.683,0.195; 0.534,1.534,0.767,0.46,0.619,0.684, - 0.195; 0.536,1.536,0.768,0.461,0.618,0.685,0.195; 0.538,1.538,0.769, - 0.461,0.618,0.686,0.196; 0.54,1.54,0.77,0.462,0.617,0.686,0.196; 0.542, - 1.542,0.771,0.463,0.616,0.687,0.196; 0.544,1.544,0.772,0.463,0.615, - 0.688,0.196; 0.546,1.546,0.773,0.464,0.614,0.689,0.197; 0.548,1.548, - 0.774,0.464,0.614,0.69,0.197; 0.55,1.55,0.775,0.465,0.613,0.691,0.197; - 0.552,1.552,0.776,0.466,0.612,0.692,0.197; 0.554,1.554,0.777,0.466, - 0.611,0.693,0.198; 0.556,1.556,0.778,0.467,0.611,0.694,0.198; 0.558, - 1.558,0.779,0.467,0.61,0.694,0.198; 0.56,1.56,0.78,0.468,0.609,0.695, - 0.198; 0.562,1.562,0.781,0.469,0.608,0.696,0.199; 0.564,1.564,0.782, - 0.469,0.607,0.697,0.199; 0.566,1.566,0.783,0.47,0.607,0.698,0.199; - 0.568,1.568,0.784,0.47,0.606,0.699,0.199; 0.57,1.57,0.785,0.471,0.605, - 0.7,0.2; 0.572,1.572,0.786,0.472,0.604,0.701,0.2; 0.574,1.574,0.787, - 0.472,0.604,0.702,0.2; 0.576,1.576,0.788,0.473,0.603,0.702,0.2; 0.578, - 1.578,0.789,0.473,0.602,0.703,0.201; 0.58,1.58,0.79,0.474,0.601,0.704, - 0.201; 0.582,1.582,0.791,0.475,0.601,0.705,0.201; 0.584,1.584,0.792, - 0.475,0.6,0.706,0.201; 0.586,1.586,0.793,0.476,0.599,0.707,0.202; 0.588, - 1.588,0.794,0.476,0.598,0.708,0.202; 0.59,1.59,0.795,0.477,0.597,0.709, - 0.202; 0.592,1.592,0.796,0.478,0.597,0.71,0.202; 0.594,1.594,0.797, - 0.478,0.596,0.71,0.203; 0.596,1.596,0.798,0.479,0.595,0.711,0.203; - 0.598,1.598,0.799,0.479,0.594,0.712,0.203; 0.6,1.6,0.8,0.48,0.594,0.713, - 0.203; 0.602,1.602,0.801,0.481,0.593,0.714,0.204; 0.604,1.604,0.802, - 0.481,0.592,0.715,0.204; 0.606,1.606,0.803,0.482,0.592,0.716,0.204; - 0.608,1.608,0.804,0.482,0.591,0.717,0.204; 0.61,1.61,0.805,0.483,0.59, - 0.718,0.205; 0.612,1.612,0.806,0.484,0.589,0.718,0.205; 0.614,1.614, - 0.807,0.484,0.589,0.719,0.205; 0.616,1.616,0.808,0.485,0.588,0.72,0.205; - 0.618,1.618,0.809,0.485,0.587,0.721,0.206; 0.62,1.62,0.81,0.486,0.586, - 0.722,0.206; 0.622,1.622,0.811,0.487,0.586,0.723,0.206; 0.624,1.624, - 0.812,0.487,0.585,0.724,0.206; 0.626,1.626,0.813,0.488,0.584,0.725, - 0.207; 0.628,1.628,0.814,0.488,0.584,0.726,0.207; 0.63,1.63,0.815,0.489, - 0.583,0.727,0.207; 0.632,1.632,0.816,0.49,0.582,0.727,0.207; 0.634, - 1.634,0.817,0.49,0.581,0.728,0.208; 0.636,1.636,0.818,0.491,0.581,0.729, - 0.208; 0.638,1.638,0.819,0.491,0.58,0.73,0.208; 0.64,1.64,0.82,0.492, - 0.579,0.731,0.208; 0.642,1.642,0.821,0.493,0.579,0.732,0.209; 0.644, - 1.644,0.822,0.493,0.578,0.733,0.209; 0.646,1.646,0.823,0.494,0.577, - 0.734,0.209; 0.648,1.648,0.824,0.494,0.576,0.735,0.209; 0.65,1.65,0.825, - 0.495,0.576,0.735,0.21; 0.652,1.652,0.826,0.496,0.575,0.736,0.21; 0.654, - 1.654,0.827,0.496,0.574,0.737,0.21; 0.656,1.656,0.828,0.497,0.574,0.738, - 0.211; 0.658,1.658,0.829,0.497,0.573,0.739,0.211; 0.66,1.66,0.83,0.498, - 0.572,0.74,0.211; 0.662,1.662,0.831,0.499,0.572,0.741,0.211; 0.664, - 1.664,0.832,0.499,0.571,0.742,0.212; 0.666,1.666,0.833,0.5,0.57,0.743, - 0.212; 0.668,1.668,0.834,0.5,0.57,0.743,0.212; 0.67,1.67,0.835,0.501, - 0.569,0.744,0.212; 0.672,1.672,0.836,0.502,0.568,0.745,0.213; 0.674, - 1.674,0.837,0.502,0.568,0.746,0.213; 0.676,1.676,0.838,0.503,0.567, - 0.747,0.213; 0.678,1.678,0.839,0.503,0.566,0.748,0.213; 0.68,1.68,0.84, - 0.504,0.565,0.749,0.214; 0.682,1.682,0.841,0.505,0.565,0.75,0.214; - 0.684,1.684,0.842,0.505,0.564,0.751,0.214; 0.686,1.686,0.843,0.506, - 0.563,0.751,0.214; 0.688,1.688,0.844,0.506,0.563,0.752,0.215; 0.69,1.69, - 0.845,0.507,0.562,0.753,0.215; 0.692,1.692,0.846,0.508,0.561,0.754, - 0.215; 0.694,1.694,0.847,0.508,0.561,0.755,0.215; 0.696,1.696,0.848, - 0.509,0.56,0.756,0.216; 0.698,1.698,0.849,0.509,0.559,0.757,0.216; 0.7, - 1.7,0.85,0.51,0.559,0.758,0.216; 0.702,1.702,0.851,0.511,0.558,0.759, - 0.216; 0.704,1.704,0.852,0.511,0.558,0.759,0.217; 0.706,1.706,0.853, - 0.512,0.557,0.76,0.217; 0.708,1.708,0.854,0.512,0.556,0.761,0.217; 0.71, - 1.71,0.855,0.513,0.556,0.762,0.217; 0.712,1.712,0.856,0.514,0.555,0.763, - 0.218; 0.714,1.714,0.857,0.514,0.554,0.764,0.218; 0.716,1.716,0.858, - 0.515,0.554,0.765,0.218; 0.718,1.718,0.859,0.515,0.553,0.766,0.218; - 0.72,1.72,0.86,0.516,0.552,0.767,0.219; 0.722,1.722,0.861,0.517,0.552, - 0.768,0.219; 0.724,1.724,0.862,0.517,0.551,0.768,0.219; 0.726,1.726, - 0.863,0.518,0.55,0.769,0.219; 0.728,1.728,0.864,0.518,0.55,0.77,0.22; - 0.73,1.73,0.865,0.519,0.549,0.771,0.22; 0.732,1.732,0.866,0.52,0.548, - 0.772,0.22; 0.734,1.734,0.867,0.52,0.548,0.773,0.22; 0.736,1.736,0.868, - 0.521,0.547,0.774,0.221; 0.738,1.738,0.869,0.521,0.547,0.775,0.221; - 0.74,1.74,0.87,0.522,0.546,0.776,0.221; 0.742,1.742,0.871,0.523,0.545, - 0.776,0.221; 0.744,1.744,0.872,0.523,0.545,0.777,0.222; 0.746,1.746, - 0.873,0.524,0.544,0.778,0.222; 0.748,1.748,0.874,0.524,0.543,0.779, - 0.222; 0.75,1.75,0.875,0.525,0.543,0.78,0.222; 0.752,1.752,0.876,0.526, - 0.542,0.781,0.223; 0.754,1.754,0.877,0.526,0.542,0.782,0.223; 0.756, - 1.756,0.878,0.527,0.541,0.783,0.223; 0.758,1.758,0.879,0.527,0.54,0.784, - 0.223; 0.76,1.76,0.88,0.528,0.54,0.784,0.224; 0.762,1.762,0.881,0.529, - 0.539,0.785,0.224; 0.764,1.764,0.882,0.529,0.539,0.786,0.224; 0.766, - 1.766,0.883,0.53,0.538,0.787,0.224; 0.768,1.768,0.884,0.53,0.537,0.788, - 0.225; 0.77,1.77,0.885,0.531,0.537,0.789,0.225; 0.772,1.772,0.886,0.532, - 0.536,0.79,0.225; 0.774,1.774,0.887,0.532,0.536,0.791,0.226; 0.776, - 1.776,0.888,0.533,0.535,0.792,0.226; 0.778,1.778,0.889,0.533,0.534, - 0.792,0.226; 0.78,1.78,0.89,0.534,0.534,0.793,0.226; 0.782,1.782,0.891, - 0.535,0.533,0.794,0.227; 0.784,1.784,0.892,0.535,0.533,0.795,0.227; - 0.786,1.786,0.893,0.536,0.532,0.796,0.227; 0.788,1.788,0.894,0.536, - 0.531,0.797,0.227; 0.79,1.79,0.895,0.537,0.531,0.798,0.228; 0.792,1.792, - 0.896,0.538,0.53,0.799,0.228; 0.794,1.794,0.897,0.538,0.53,0.8,0.228; - 0.796,1.796,0.898,0.539,0.529,0.801,0.228; 0.798,1.798,0.899,0.539, - 0.528,0.801,0.229; 0.8,1.8,0.9,0.54,0.528,0.802,0.229; 0.802,1.802, - 0.901,0.541,0.527,0.803,0.229; 0.804,1.804,0.902,0.541,0.527,0.804, - 0.229; 0.806,1.806,0.903,0.542,0.526,0.805,0.23; 0.808,1.808,0.904, - 0.542,0.525,0.806,0.23; 0.81,1.81,0.905,0.543,0.525,0.807,0.23; 0.812, - 1.812,0.906,0.544,0.524,0.808,0.23; 0.814,1.814,0.907,0.544,0.524,0.809, - 0.231; 0.816,1.816,0.908,0.545,0.523,0.809,0.231; 0.818,1.818,0.909, - 0.545,0.523,0.81,0.231; 0.82,1.82,0.91,0.546,0.522,0.811,0.231; 0.822, - 1.822,0.911,0.547,0.521,0.812,0.232; 0.824,1.824,0.912,0.547,0.521, - 0.813,0.232; 0.826,1.826,0.913,0.548,0.52,0.814,0.232; 0.828,1.828, - 0.914,0.548,0.52,0.815,0.232; 0.83,1.83,0.915,0.549,0.519,0.816,0.233; - 0.832,1.832,0.916,0.55,0.519,0.817,0.233; 0.834,1.834,0.917,0.55,0.518, - 0.817,0.233; 0.836,1.836,0.918,0.551,0.517,0.818,0.233; 0.838,1.838, - 0.919,0.551,0.517,0.819,0.234; 0.84,1.84,0.92,0.552,0.516,0.82,0.234; - 0.842,1.842,0.921,0.553,0.516,0.821,0.234; 0.844,1.844,0.922,0.553, - 0.515,0.822,0.234; 0.846,1.846,0.923,0.554,0.515,0.823,0.235; 0.848, - 1.848,0.924,0.554,0.514,0.824,0.235; 0.85,1.85,0.925,0.555,0.514,0.825, - 0.235; 0.852,1.852,0.926,0.556,0.513,0.825,0.235; 0.854,1.854,0.927, - 0.556,0.512,0.826,0.236; 0.856,1.856,0.928,0.557,0.512,0.827,0.236; - 0.858,1.858,0.929,0.557,0.511,0.828,0.236; 0.86,1.86,0.93,0.558,0.511, - 0.829,0.236; 0.862,1.862,0.931,0.559,0.51,0.83,0.237; 0.864,1.864,0.932, - 0.559,0.51,0.831,0.237; 0.866,1.866,0.933,0.56,0.509,0.832,0.237; 0.868, - 1.868,0.934,0.56,0.509,0.833,0.237; 0.87,1.87,0.935,0.561,0.508,0.833, - 0.238; 0.872,1.872,0.936,0.562,0.507,0.834,0.238; 0.874,1.874,0.937, - 0.562,0.507,0.835,0.238; 0.876,1.876,0.938,0.563,0.506,0.836,0.238; - 0.878,1.878,0.939,0.563,0.506,0.837,0.239; 0.88,1.88,0.94,0.564,0.505, - 0.838,0.239; 0.882,1.882,0.941,0.565,0.505,0.839,0.239; 0.884,1.884, - 0.942,0.565,0.504,0.84,0.239; 0.886,1.886,0.943,0.566,0.504,0.841,0.24; - 0.888,1.888,0.944,0.566,0.503,0.842,0.24; 0.89,1.89,0.945,0.567,0.503, - 0.842,0.24; 0.892,1.892,0.946,0.568,0.502,0.843,0.241; 0.894,1.894, - 0.947,0.568,0.502,0.844,0.241; 0.896,1.896,0.948,0.569,0.501,0.845, - 0.241; 0.898,1.898,0.949,0.569,0.501,0.846,0.241; 0.9,1.9,0.95,0.57,0.5, - 0.847,0.242; 0.902,1.902,0.951,0.571,0.499,0.848,0.242; 0.904,1.904, - 0.952,0.571,0.499,0.849,0.242; 0.906,1.906,0.953,0.572,0.498,0.85,0.242; - 0.908,1.908,0.954,0.572,0.498,0.85,0.243; 0.91,1.91,0.955,0.573,0.497, - 0.851,0.243; 0.912,1.912,0.956,0.574,0.497,0.852,0.243; 0.914,1.914, - 0.957,0.574,0.496,0.853,0.243; 0.916,1.916,0.958,0.575,0.496,0.854, - 0.244; 0.918,1.918,0.959,0.575,0.495,0.855,0.244; 0.92,1.92,0.96,0.576, - 0.495,0.856,0.244; 0.922,1.922,0.961,0.577,0.494,0.857,0.244; 0.924, - 1.924,0.962,0.577,0.494,0.858,0.245; 0.926,1.926,0.963,0.578,0.493, - 0.858,0.245; 0.928,1.928,0.964,0.578,0.493,0.859,0.245; 0.93,1.93,0.965, - 0.579,0.492,0.86,0.245; 0.932,1.932,0.966,0.58,0.492,0.861,0.246; 0.934, - 1.934,0.967,0.58,0.491,0.862,0.246; 0.936,1.936,0.968,0.581,0.491,0.863, - 0.246; 0.938,1.938,0.969,0.581,0.49,0.864,0.246; 0.94,1.94,0.97,0.582, - 0.49,0.865,0.247; 0.942,1.942,0.971,0.583,0.489,0.866,0.247; 0.944, - 1.944,0.972,0.583,0.489,0.866,0.247; 0.946,1.946,0.973,0.584,0.488, - 0.867,0.247; 0.948,1.948,0.974,0.584,0.488,0.868,0.248; 0.95,1.95,0.975, - 0.585,0.487,0.869,0.248; 0.952,1.952,0.976,0.586,0.487,0.87,0.248; - 0.954,1.954,0.977,0.586,0.486,0.871,0.248; 0.956,1.956,0.978,0.587, - 0.486,0.872,0.249; 0.958,1.958,0.979,0.587,0.485,0.873,0.249; 0.96,1.96, - 0.98,0.588,0.485,0.874,0.249; 0.962,1.962,0.981,0.589,0.484,0.874,0.249; - 0.964,1.964,0.982,0.589,0.484,0.875,0.25; 0.966,1.966,0.983,0.59,0.483, - 0.876,0.25; 0.968,1.968,0.984,0.59,0.483,0.877,0.25; 0.97,1.97,0.985, - 0.591,0.482,0.878,0.25; 0.972,1.972,0.986,0.592,0.482,0.879,0.251; - 0.974,1.974,0.987,0.592,0.481,0.88,0.251; 0.976,1.976,0.988,0.593,0.481, - 0.881,0.251; 0.978,1.978,0.989,0.593,0.48,0.882,0.251; 0.98,1.98,0.99, - 0.594,0.48,0.883,0.252; 0.982,1.982,0.991,0.595,0.479,0.883,0.252; - 0.984,1.984,0.992,0.595,0.479,0.884,0.252; 0.986,1.986,0.993,0.596, - 0.478,0.885,0.252; 0.988,1.988,0.994,0.596,0.478,0.886,0.253; 0.99,1.99, - 0.995,0.597,0.477,0.887,0.253; 0.992,1.992,0.996,0.598,0.477,0.888, - 0.253; 0.994,1.994,0.997,0.598,0.476,0.889,0.253; 0.996,1.996,0.998, - 0.599,0.476,0.89,0.254; 0.998,1.998,0.999,0.599,0.475,0.891,0.254; 1,2, - 1,0.6,0.475,0.891,0.254; 1,2,1,0.6,0.475,0.891,0.254], extrapolation= + 0.3,0.95,0.446,0.127; 0.1,1.1,0.55,0.33,0.864,0.49,0.14; 0.2,1.2, + 0.6,0.36,0.792,0.535,0.153; 0.3,1.3, 0.65,0.39,0.731,0.579,0.165; + 0.4,1.4,0.7,0.42,0.679,0.624,0.178; 0.5,1.5,0.75,0.45,0.633,0.669,0.191; + 0.6,1.6,0.8,0.48,0.594,0.713,0.203; 0.7,1.7,0.85,0.51,0.559,0.758,0.216; + 0.8,1.8,0.9,0.54,0.528,0.802,0.229; 0.9,1.9,0.95,0.57,0.5, 0.847,0.242; + 1,2,1,0.6,0.475,0.891,0.254], extrapolation= Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) "Data for validating the PIDIntegralTime block" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mo index 98dd89a9ab8..4c8913315e9 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mo @@ -1,267 +1,12 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation; model PIGain "Test model for PIGain" Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable RefDat(table=[0,1,0.5, - 0.3,0.343,0.469; 0.002,1.002,0.501,0.301,0.342,0.47; 0.004,1.004,0.502, - 0.301,0.341,0.471; 0.006,1.006,0.503,0.302,0.341,0.472; 0.008,1.008, - 0.504,0.302,0.34,0.473; 0.01,1.01,0.505,0.303,0.339,0.473; 0.012,1.012, - 0.506,0.304,0.339,0.474; 0.014,1.014,0.507,0.304,0.338,0.475; 0.016, - 1.016,0.508,0.305,0.337,0.476; 0.018,1.018,0.509,0.305,0.337,0.477; - 0.02,1.02,0.51,0.306,0.336,0.478; 0.022,1.022,0.511,0.307,0.335,0.479; - 0.024,1.024,0.512,0.307,0.335,0.48; 0.026,1.026,0.513,0.308,0.334,0.481; - 0.028,1.028,0.514,0.308,0.333,0.482; 0.03,1.03,0.515,0.309,0.333,0.483; - 0.032,1.032,0.516,0.31,0.332,0.484; 0.034,1.034,0.517,0.31,0.331,0.485; - 0.036,1.036,0.518,0.311,0.331,0.486; 0.038,1.038,0.519,0.311,0.33,0.487; - 0.04,1.04,0.52,0.312,0.33,0.488; 0.042,1.042,0.521,0.313,0.329,0.488; - 0.044,1.044,0.522,0.313,0.328,0.489; 0.046,1.046,0.523,0.314,0.328,0.49; - 0.048,1.048,0.524,0.314,0.327,0.491; 0.05,1.05,0.525,0.315,0.326,0.492; - 0.052,1.052,0.526,0.316,0.326,0.493; 0.054,1.054,0.527,0.316,0.325, - 0.494; 0.056,1.056,0.528,0.317,0.325,0.495; 0.058,1.058,0.529,0.317, - 0.324,0.496; 0.06,1.06,0.53,0.318,0.323,0.497; 0.062,1.062,0.531,0.319, - 0.323,0.498; 0.064,1.064,0.532,0.319,0.322,0.499; 0.066,1.066,0.533, - 0.32,0.321,0.5; 0.068,1.068,0.534,0.32,0.321,0.501; 0.07,1.07,0.535, - 0.321,0.32,0.502; 0.072,1.072,0.536,0.322,0.32,0.503; 0.074,1.074,0.537, - 0.322,0.319,0.503; 0.076,1.076,0.538,0.323,0.319,0.504; 0.078,1.078, - 0.539,0.323,0.318,0.505; 0.08,1.08,0.54,0.324,0.317,0.506; 0.082,1.082, - 0.541,0.325,0.317,0.507; 0.084,1.084,0.542,0.325,0.316,0.508; 0.086, - 1.086,0.543,0.326,0.316,0.509; 0.088,1.088,0.544,0.326,0.315,0.51; 0.09, - 1.09,0.545,0.327,0.314,0.511; 0.092,1.092,0.546,0.328,0.314,0.512; - 0.094,1.094,0.547,0.328,0.313,0.513; 0.096,1.096,0.548,0.329,0.313, - 0.514; 0.098,1.098,0.549,0.329,0.312,0.515; 0.1,1.1,0.55,0.33,0.312, - 0.516; 0.102,1.102,0.551,0.331,0.311,0.517; 0.104,1.104,0.552,0.331, - 0.31,0.518; 0.106,1.106,0.553,0.332,0.31,0.518; 0.108,1.108,0.554,0.332, - 0.309,0.519; 0.11,1.11,0.555,0.333,0.309,0.52; 0.112,1.112,0.556,0.334, - 0.308,0.521; 0.114,1.114,0.557,0.334,0.308,0.522; 0.116,1.116,0.558, - 0.335,0.307,0.523; 0.118,1.118,0.559,0.335,0.307,0.524; 0.12,1.12,0.56, - 0.336,0.306,0.525; 0.122,1.122,0.561,0.337,0.305,0.526; 0.124,1.124, - 0.562,0.337,0.305,0.527; 0.126,1.126,0.563,0.338,0.304,0.528; 0.128, - 1.128,0.564,0.338,0.304,0.529; 0.13,1.13,0.565,0.339,0.303,0.53; 0.132, - 1.132,0.566,0.34,0.303,0.531; 0.134,1.134,0.567,0.34,0.302,0.532; 0.136, - 1.136,0.568,0.341,0.302,0.533; 0.138,1.138,0.569,0.341,0.301,0.534; - 0.14,1.14,0.57,0.342,0.301,0.534; 0.142,1.142,0.571,0.343,0.3,0.535; - 0.144,1.144,0.572,0.343,0.3,0.536; 0.146,1.146,0.573,0.344,0.299,0.537; - 0.148,1.148,0.574,0.344,0.299,0.538; 0.15,1.15,0.575,0.345,0.298,0.539; - 0.152,1.152,0.576,0.346,0.297,0.54; 0.154,1.154,0.577,0.346,0.297,0.541; - 0.156,1.156,0.578,0.347,0.296,0.542; 0.158,1.158,0.579,0.347,0.296, - 0.543; 0.16,1.16,0.58,0.348,0.295,0.544; 0.162,1.162,0.581,0.349,0.295, - 0.545; 0.164,1.164,0.582,0.349,0.294,0.546; 0.166,1.166,0.583,0.35, - 0.294,0.547; 0.168,1.168,0.584,0.35,0.293,0.548; 0.17,1.17,0.585,0.351, - 0.293,0.549; 0.172,1.172,0.586,0.352,0.292,0.549; 0.174,1.174,0.587, - 0.352,0.292,0.55; 0.176,1.176,0.588,0.353,0.291,0.551; 0.178,1.178, - 0.589,0.353,0.291,0.552; 0.18,1.18,0.59,0.354,0.29,0.553; 0.182,1.182, - 0.591,0.355,0.29,0.554; 0.184,1.184,0.592,0.355,0.289,0.555; 0.186, - 1.186,0.593,0.356,0.289,0.556; 0.188,1.188,0.594,0.356,0.288,0.557; - 0.19,1.19,0.595,0.357,0.288,0.558; 0.192,1.192,0.596,0.358,0.288,0.559; - 0.194,1.194,0.597,0.358,0.287,0.56; 0.196,1.196,0.598,0.359,0.287,0.561; - 0.198,1.198,0.599,0.359,0.286,0.562; 0.2,1.2,0.6,0.36,0.286,0.563; - 0.202,1.202,0.601,0.361,0.285,0.564; 0.204,1.204,0.602,0.361,0.285, - 0.564; 0.206,1.206,0.603,0.362,0.284,0.565; 0.208,1.208,0.604,0.362, - 0.284,0.566; 0.21,1.21,0.605,0.363,0.283,0.567; 0.212,1.212,0.606,0.364, - 0.283,0.568; 0.214,1.214,0.607,0.364,0.282,0.569; 0.216,1.216,0.608, - 0.365,0.282,0.57; 0.218,1.218,0.609,0.365,0.281,0.571; 0.22,1.22,0.61, - 0.366,0.281,0.572; 0.222,1.222,0.611,0.367,0.28,0.573; 0.224,1.224, - 0.612,0.367,0.28,0.574; 0.226,1.226,0.613,0.368,0.28,0.575; 0.228,1.228, - 0.614,0.368,0.279,0.576; 0.23,1.23,0.615,0.369,0.279,0.577; 0.232,1.232, - 0.616,0.37,0.278,0.578; 0.234,1.234,0.617,0.37,0.278,0.579; 0.236,1.236, - 0.618,0.371,0.277,0.579; 0.238,1.238,0.619,0.371,0.277,0.58; 0.24,1.24, - 0.62,0.372,0.276,0.581; 0.242,1.242,0.621,0.373,0.276,0.582; 0.244, - 1.244,0.622,0.373,0.275,0.583; 0.246,1.246,0.623,0.374,0.275,0.584; - 0.248,1.248,0.624,0.374,0.275,0.585; 0.25,1.25,0.625,0.375,0.274,0.586; - 0.252,1.252,0.626,0.376,0.274,0.587; 0.254,1.254,0.627,0.376,0.273, - 0.588; 0.256,1.256,0.628,0.377,0.273,0.589; 0.258,1.258,0.629,0.377, - 0.272,0.59; 0.26,1.26,0.63,0.378,0.272,0.591; 0.262,1.262,0.631,0.379, - 0.272,0.592; 0.264,1.264,0.632,0.379,0.271,0.593; 0.266,1.266,0.633, - 0.38,0.271,0.594; 0.268,1.268,0.634,0.38,0.27,0.594; 0.27,1.27,0.635, - 0.381,0.27,0.595; 0.272,1.272,0.636,0.382,0.269,0.596; 0.274,1.274, - 0.637,0.382,0.269,0.597; 0.276,1.276,0.638,0.383,0.269,0.598; 0.278, - 1.278,0.639,0.383,0.268,0.599; 0.28,1.28,0.64,0.384,0.268,0.6; 0.282, - 1.282,0.641,0.385,0.267,0.601; 0.284,1.284,0.642,0.385,0.267,0.602; - 0.286,1.286,0.643,0.386,0.266,0.603; 0.288,1.288,0.644,0.386,0.266, - 0.604; 0.29,1.29,0.645,0.387,0.266,0.605; 0.292,1.292,0.646,0.388,0.265, - 0.606; 0.294,1.294,0.647,0.388,0.265,0.607; 0.296,1.296,0.648,0.389, - 0.264,0.608; 0.298,1.298,0.649,0.389,0.264,0.609; 0.3,1.3,0.65,0.39, - 0.264,0.609; 0.302,1.302,0.651,0.391,0.263,0.61; 0.304,1.304,0.652, - 0.391,0.263,0.611; 0.306,1.306,0.653,0.392,0.262,0.612; 0.308,1.308, - 0.654,0.392,0.262,0.613; 0.31,1.31,0.655,0.393,0.262,0.614; 0.312,1.312, - 0.656,0.394,0.261,0.615; 0.314,1.314,0.657,0.394,0.261,0.616; 0.316, - 1.316,0.658,0.395,0.26,0.617; 0.318,1.318,0.659,0.395,0.26,0.618; 0.32, - 1.32,0.66,0.396,0.26,0.619; 0.322,1.322,0.661,0.397,0.259,0.62; 0.324, - 1.324,0.662,0.397,0.259,0.621; 0.326,1.326,0.663,0.398,0.258,0.622; - 0.328,1.328,0.664,0.398,0.258,0.623; 0.33,1.33,0.665,0.399,0.258,0.624; - 0.332,1.332,0.666,0.4,0.257,0.624; 0.334,1.334,0.667,0.4,0.257,0.625; - 0.336,1.336,0.668,0.401,0.257,0.626; 0.338,1.338,0.669,0.401,0.256, - 0.627; 0.34,1.34,0.67,0.402,0.256,0.628; 0.342,1.342,0.671,0.403,0.255, - 0.629; 0.344,1.344,0.672,0.403,0.255,0.63; 0.346,1.346,0.673,0.404, - 0.255,0.631; 0.348,1.348,0.674,0.404,0.254,0.632; 0.35,1.35,0.675,0.405, - 0.254,0.633; 0.352,1.352,0.676,0.406,0.253,0.634; 0.354,1.354,0.677, - 0.406,0.253,0.635; 0.356,1.356,0.678,0.407,0.253,0.636; 0.358,1.358, - 0.679,0.407,0.252,0.637; 0.36,1.36,0.68,0.408,0.252,0.638; 0.362,1.362, - 0.681,0.409,0.252,0.639; 0.364,1.364,0.682,0.409,0.251,0.639; 0.366, - 1.366,0.683,0.41,0.251,0.64; 0.368,1.368,0.684,0.41,0.251,0.641; 0.37, - 1.37,0.685,0.411,0.25,0.642; 0.372,1.372,0.686,0.412,0.25,0.643; 0.374, - 1.374,0.687,0.412,0.249,0.644; 0.376,1.376,0.688,0.413,0.249,0.645; - 0.378,1.378,0.689,0.413,0.249,0.646; 0.38,1.38,0.69,0.414,0.248,0.647; - 0.382,1.382,0.691,0.415,0.248,0.648; 0.384,1.384,0.692,0.415,0.248, - 0.649; 0.386,1.386,0.693,0.416,0.247,0.65; 0.388,1.388,0.694,0.416, - 0.247,0.651; 0.39,1.39,0.695,0.417,0.247,0.652; 0.392,1.392,0.696,0.418, - 0.246,0.653; 0.394,1.394,0.697,0.418,0.246,0.654; 0.396,1.396,0.698, - 0.419,0.245,0.654; 0.398,1.398,0.699,0.419,0.245,0.655; 0.4,1.4,0.7, - 0.42,0.245,0.656; 0.402,1.402,0.701,0.421,0.244,0.657; 0.404,1.404, - 0.702,0.421,0.244,0.658; 0.406,1.406,0.703,0.422,0.244,0.659; 0.408, - 1.408,0.704,0.422,0.243,0.66; 0.41,1.41,0.705,0.423,0.243,0.661; 0.412, - 1.412,0.706,0.424,0.243,0.662; 0.414,1.414,0.707,0.424,0.242,0.663; - 0.416,1.416,0.708,0.425,0.242,0.664; 0.418,1.418,0.709,0.425,0.242, - 0.665; 0.42,1.42,0.71,0.426,0.241,0.666; 0.422,1.422,0.711,0.427,0.241, - 0.667; 0.424,1.424,0.712,0.427,0.241,0.668; 0.426,1.426,0.713,0.428, - 0.24,0.669; 0.428,1.428,0.714,0.428,0.24,0.669; 0.43,1.43,0.715,0.429, - 0.24,0.67; 0.432,1.432,0.716,0.43,0.239,0.671; 0.434,1.434,0.717,0.43, - 0.239,0.672; 0.436,1.436,0.718,0.431,0.239,0.673; 0.438,1.438,0.719, - 0.431,0.238,0.674; 0.44,1.44,0.72,0.432,0.238,0.675; 0.442,1.442,0.721, - 0.433,0.238,0.676; 0.444,1.444,0.722,0.433,0.237,0.677; 0.446,1.446, - 0.723,0.434,0.237,0.678; 0.448,1.448,0.724,0.434,0.237,0.679; 0.45,1.45, - 0.725,0.435,0.236,0.68; 0.452,1.452,0.726,0.436,0.236,0.681; 0.454, - 1.454,0.727,0.436,0.236,0.682; 0.456,1.456,0.728,0.437,0.235,0.683; - 0.458,1.458,0.729,0.437,0.235,0.684; 0.46,1.46,0.73,0.438,0.235,0.684; - 0.462,1.462,0.731,0.439,0.234,0.685; 0.464,1.464,0.732,0.439,0.234, - 0.686; 0.466,1.466,0.733,0.44,0.234,0.687; 0.468,1.468,0.734,0.44,0.233, - 0.688; 0.47,1.47,0.735,0.441,0.233,0.689; 0.472,1.472,0.736,0.442,0.233, - 0.69; 0.474,1.474,0.737,0.442,0.233,0.691; 0.476,1.476,0.738,0.443, - 0.232,0.692; 0.478,1.478,0.739,0.443,0.232,0.693; 0.48,1.48,0.74,0.444, - 0.232,0.694; 0.482,1.482,0.741,0.445,0.231,0.695; 0.484,1.484,0.742, - 0.445,0.231,0.696; 0.486,1.486,0.743,0.446,0.231,0.697; 0.488,1.488, - 0.744,0.446,0.23,0.698; 0.49,1.49,0.745,0.447,0.23,0.699; 0.492,1.492, - 0.746,0.448,0.23,0.699; 0.494,1.494,0.747,0.448,0.229,0.7; 0.496,1.496, - 0.748,0.449,0.229,0.701; 0.498,1.498,0.749,0.449,0.229,0.702; 0.5,1.5, - 0.75,0.45,0.228,0.703; 0.502,1.502,0.751,0.451,0.228,0.704; 0.504,1.504, - 0.752,0.451,0.228,0.705; 0.506,1.506,0.753,0.452,0.228,0.706; 0.508, - 1.508,0.754,0.452,0.227,0.707; 0.51,1.51,0.755,0.453,0.227,0.708; 0.512, - 1.512,0.756,0.454,0.227,0.709; 0.514,1.514,0.757,0.454,0.226,0.71; - 0.516,1.516,0.758,0.455,0.226,0.711; 0.518,1.518,0.759,0.455,0.226, - 0.712; 0.52,1.52,0.76,0.456,0.225,0.713; 0.522,1.522,0.761,0.457,0.225, - 0.714; 0.524,1.524,0.762,0.457,0.225,0.714; 0.526,1.526,0.763,0.458, - 0.225,0.715; 0.528,1.528,0.764,0.458,0.224,0.716; 0.53,1.53,0.765,0.459, - 0.224,0.717; 0.532,1.532,0.766,0.46,0.224,0.718; 0.534,1.534,0.767,0.46, - 0.223,0.719; 0.536,1.536,0.768,0.461,0.223,0.72; 0.538,1.538,0.769, - 0.461,0.223,0.721; 0.54,1.54,0.77,0.462,0.223,0.722; 0.542,1.542,0.771, - 0.463,0.222,0.723; 0.544,1.544,0.772,0.463,0.222,0.724; 0.546,1.546, - 0.773,0.464,0.222,0.725; 0.548,1.548,0.774,0.464,0.221,0.726; 0.55,1.55, - 0.775,0.465,0.221,0.727; 0.552,1.552,0.776,0.466,0.221,0.728; 0.554, - 1.554,0.777,0.466,0.221,0.729; 0.556,1.556,0.778,0.467,0.22,0.729; - 0.558,1.558,0.779,0.467,0.22,0.73; 0.56,1.56,0.78,0.468,0.22,0.731; - 0.562,1.562,0.781,0.469,0.219,0.732; 0.564,1.564,0.782,0.469,0.219, - 0.733; 0.566,1.566,0.783,0.47,0.219,0.734; 0.568,1.568,0.784,0.47,0.219, - 0.735; 0.57,1.57,0.785,0.471,0.218,0.736; 0.572,1.572,0.786,0.472,0.218, - 0.737; 0.574,1.574,0.787,0.472,0.218,0.738; 0.576,1.576,0.788,0.473, - 0.217,0.739; 0.578,1.578,0.789,0.473,0.217,0.74; 0.58,1.58,0.79,0.474, - 0.217,0.741; 0.582,1.582,0.791,0.475,0.217,0.742; 0.584,1.584,0.792, - 0.475,0.216,0.743; 0.586,1.586,0.793,0.476,0.216,0.744; 0.588,1.588, - 0.794,0.476,0.216,0.744; 0.59,1.59,0.795,0.477,0.216,0.745; 0.592,1.592, - 0.796,0.478,0.215,0.746; 0.594,1.594,0.797,0.478,0.215,0.747; 0.596, - 1.596,0.798,0.479,0.215,0.748; 0.598,1.598,0.799,0.479,0.214,0.749; 0.6, - 1.6,0.8,0.48,0.214,0.75; 0.602,1.602,0.801,0.481,0.214,0.751; 0.604, - 1.604,0.802,0.481,0.214,0.752; 0.606,1.606,0.803,0.482,0.213,0.753; - 0.608,1.608,0.804,0.482,0.213,0.754; 0.61,1.61,0.805,0.483,0.213,0.755; - 0.612,1.612,0.806,0.484,0.213,0.756; 0.614,1.614,0.807,0.484,0.212, - 0.757; 0.616,1.616,0.808,0.485,0.212,0.758; 0.618,1.618,0.809,0.485, - 0.212,0.759; 0.62,1.62,0.81,0.486,0.212,0.759; 0.622,1.622,0.811,0.487, - 0.211,0.76; 0.624,1.624,0.812,0.487,0.211,0.761; 0.626,1.626,0.813, - 0.488,0.211,0.762; 0.628,1.628,0.814,0.488,0.211,0.763; 0.63,1.63,0.815, - 0.489,0.21,0.764; 0.632,1.632,0.816,0.49,0.21,0.765; 0.634,1.634,0.817, - 0.49,0.21,0.766; 0.636,1.636,0.818,0.491,0.209,0.767; 0.638,1.638,0.819, - 0.491,0.209,0.768; 0.64,1.64,0.82,0.492,0.209,0.769; 0.642,1.642,0.821, - 0.493,0.209,0.77; 0.644,1.644,0.822,0.493,0.208,0.771; 0.646,1.646, - 0.823,0.494,0.208,0.772; 0.648,1.648,0.824,0.494,0.208,0.773; 0.65,1.65, - 0.825,0.495,0.208,0.774; 0.652,1.652,0.826,0.496,0.207,0.774; 0.654, - 1.654,0.827,0.496,0.207,0.775; 0.656,1.656,0.828,0.497,0.207,0.776; - 0.658,1.658,0.829,0.497,0.207,0.777; 0.66,1.66,0.83,0.498,0.206,0.778; - 0.662,1.662,0.831,0.499,0.206,0.779; 0.664,1.664,0.832,0.499,0.206,0.78; - 0.666,1.666,0.833,0.5,0.206,0.781; 0.668,1.668,0.834,0.5,0.205,0.782; - 0.67,1.67,0.835,0.501,0.205,0.783; 0.672,1.672,0.836,0.502,0.205,0.784; - 0.674,1.674,0.837,0.502,0.205,0.785; 0.676,1.676,0.838,0.503,0.204, - 0.786; 0.678,1.678,0.839,0.503,0.204,0.787; 0.68,1.68,0.84,0.504,0.204, - 0.788; 0.682,1.682,0.841,0.505,0.204,0.789; 0.684,1.684,0.842,0.505, - 0.204,0.789; 0.686,1.686,0.843,0.506,0.203,0.79; 0.688,1.688,0.844, - 0.506,0.203,0.791; 0.69,1.69,0.845,0.507,0.203,0.792; 0.692,1.692,0.846, - 0.508,0.203,0.793; 0.694,1.694,0.847,0.508,0.202,0.794; 0.696,1.696, - 0.848,0.509,0.202,0.795; 0.698,1.698,0.849,0.509,0.202,0.796; 0.7,1.7, - 0.85,0.51,0.202,0.797; 0.702,1.702,0.851,0.511,0.201,0.798; 0.704,1.704, - 0.852,0.511,0.201,0.799; 0.706,1.706,0.853,0.512,0.201,0.8; 0.708,1.708, - 0.854,0.512,0.201,0.801; 0.71,1.71,0.855,0.513,0.2,0.802; 0.712,1.712, - 0.856,0.514,0.2,0.803; 0.714,1.714,0.857,0.514,0.2,0.804; 0.716,1.716, - 0.858,0.515,0.2,0.804; 0.718,1.718,0.859,0.515,0.199,0.805; 0.72,1.72, - 0.86,0.516,0.199,0.806; 0.722,1.722,0.861,0.517,0.199,0.807; 0.724, - 1.724,0.862,0.517,0.199,0.808; 0.726,1.726,0.863,0.518,0.199,0.809; - 0.728,1.728,0.864,0.518,0.198,0.81; 0.73,1.73,0.865,0.519,0.198,0.811; - 0.732,1.732,0.866,0.52,0.198,0.812; 0.734,1.734,0.867,0.52,0.198,0.813; - 0.736,1.736,0.868,0.521,0.197,0.814; 0.738,1.738,0.869,0.521,0.197, - 0.815; 0.74,1.74,0.87,0.522,0.197,0.816; 0.742,1.742,0.871,0.523,0.197, - 0.817; 0.744,1.744,0.872,0.523,0.197,0.818; 0.746,1.746,0.873,0.524, - 0.196,0.819; 0.748,1.748,0.874,0.524,0.196,0.819; 0.75,1.75,0.875,0.525, - 0.196,0.82; 0.752,1.752,0.876,0.526,0.196,0.821; 0.754,1.754,0.877, - 0.526,0.195,0.822; 0.756,1.756,0.878,0.527,0.195,0.823; 0.758,1.758, - 0.879,0.527,0.195,0.824; 0.76,1.76,0.88,0.528,0.195,0.825; 0.762,1.762, - 0.881,0.529,0.194,0.826; 0.764,1.764,0.882,0.529,0.194,0.827; 0.766, - 1.766,0.883,0.53,0.194,0.828; 0.768,1.768,0.884,0.53,0.194,0.829; 0.77, - 1.77,0.885,0.531,0.194,0.83; 0.772,1.772,0.886,0.532,0.193,0.831; 0.774, - 1.774,0.887,0.532,0.193,0.832; 0.776,1.776,0.888,0.533,0.193,0.833; - 0.778,1.778,0.889,0.533,0.193,0.834; 0.78,1.78,0.89,0.534,0.193,0.834; - 0.782,1.782,0.891,0.535,0.192,0.835; 0.784,1.784,0.892,0.535,0.192, - 0.836; 0.786,1.786,0.893,0.536,0.192,0.837; 0.788,1.788,0.894,0.536, - 0.192,0.838; 0.79,1.79,0.895,0.537,0.191,0.839; 0.792,1.792,0.896,0.538, - 0.191,0.84; 0.794,1.794,0.897,0.538,0.191,0.841; 0.796,1.796,0.898, - 0.539,0.191,0.842; 0.798,1.798,0.899,0.539,0.191,0.843; 0.8,1.8,0.9, - 0.54,0.19,0.844; 0.802,1.802,0.901,0.541,0.19,0.845; 0.804,1.804,0.902, - 0.541,0.19,0.846; 0.806,1.806,0.903,0.542,0.19,0.847; 0.808,1.808,0.904, - 0.542,0.19,0.848; 0.81,1.81,0.905,0.543,0.189,0.849; 0.812,1.812,0.906, - 0.544,0.189,0.849; 0.814,1.814,0.907,0.544,0.189,0.85; 0.816,1.816, - 0.908,0.545,0.189,0.851; 0.818,1.818,0.909,0.545,0.189,0.852; 0.82,1.82, - 0.91,0.546,0.188,0.853; 0.822,1.822,0.911,0.547,0.188,0.854; 0.824, - 1.824,0.912,0.547,0.188,0.855; 0.826,1.826,0.913,0.548,0.188,0.856; - 0.828,1.828,0.914,0.548,0.187,0.857; 0.83,1.83,0.915,0.549,0.187,0.858; - 0.832,1.832,0.916,0.55,0.187,0.859; 0.834,1.834,0.917,0.55,0.187,0.86; - 0.836,1.836,0.918,0.551,0.187,0.861; 0.838,1.838,0.919,0.551,0.186, - 0.862; 0.84,1.84,0.92,0.552,0.186,0.863; 0.842,1.842,0.921,0.553,0.186, - 0.864; 0.844,1.844,0.922,0.553,0.186,0.864; 0.846,1.846,0.923,0.554, - 0.186,0.865; 0.848,1.848,0.924,0.554,0.185,0.866; 0.85,1.85,0.925,0.555, - 0.185,0.867; 0.852,1.852,0.926,0.556,0.185,0.868; 0.854,1.854,0.927, - 0.556,0.185,0.869; 0.856,1.856,0.928,0.557,0.185,0.87; 0.858,1.858, - 0.929,0.557,0.184,0.871; 0.86,1.86,0.93,0.558,0.184,0.872; 0.862,1.862, - 0.931,0.559,0.184,0.873; 0.864,1.864,0.932,0.559,0.184,0.874; 0.866, - 1.866,0.933,0.56,0.184,0.875; 0.868,1.868,0.934,0.56,0.183,0.876; 0.87, - 1.87,0.935,0.561,0.183,0.877; 0.872,1.872,0.936,0.562,0.183,0.878; - 0.874,1.874,0.937,0.562,0.183,0.879; 0.876,1.876,0.938,0.563,0.183, - 0.879; 0.878,1.878,0.939,0.563,0.182,0.88; 0.88,1.88,0.94,0.564,0.182, - 0.881; 0.882,1.882,0.941,0.565,0.182,0.882; 0.884,1.884,0.942,0.565, - 0.182,0.883; 0.886,1.886,0.943,0.566,0.182,0.884; 0.888,1.888,0.944, - 0.566,0.182,0.885; 0.89,1.89,0.945,0.567,0.181,0.886; 0.892,1.892,0.946, - 0.568,0.181,0.887; 0.894,1.894,0.947,0.568,0.181,0.888; 0.896,1.896, - 0.948,0.569,0.181,0.889; 0.898,1.898,0.949,0.569,0.181,0.89; 0.9,1.9, - 0.95,0.57,0.18,0.891; 0.902,1.902,0.951,0.571,0.18,0.892; 0.904,1.904, - 0.952,0.571,0.18,0.893; 0.906,1.906,0.953,0.572,0.18,0.894; 0.908,1.908, - 0.954,0.572,0.18,0.894; 0.91,1.91,0.955,0.573,0.179,0.895; 0.912,1.912, - 0.956,0.574,0.179,0.896; 0.914,1.914,0.957,0.574,0.179,0.897; 0.916, - 1.916,0.958,0.575,0.179,0.898; 0.918,1.918,0.959,0.575,0.179,0.899; - 0.92,1.92,0.96,0.576,0.178,0.9; 0.922,1.922,0.961,0.577,0.178,0.901; - 0.924,1.924,0.962,0.577,0.178,0.902; 0.926,1.926,0.963,0.578,0.178, - 0.903; 0.928,1.928,0.964,0.578,0.178,0.904; 0.93,1.93,0.965,0.579,0.178, - 0.905; 0.932,1.932,0.966,0.58,0.177,0.906; 0.934,1.934,0.967,0.58,0.177, - 0.907; 0.936,1.936,0.968,0.581,0.177,0.908; 0.938,1.938,0.969,0.581, - 0.177,0.909; 0.94,1.94,0.97,0.582,0.177,0.909; 0.942,1.942,0.971,0.583, - 0.176,0.91; 0.944,1.944,0.972,0.583,0.176,0.911; 0.946,1.946,0.973, - 0.584,0.176,0.912; 0.948,1.948,0.974,0.584,0.176,0.913; 0.95,1.95,0.975, - 0.585,0.176,0.914; 0.952,1.952,0.976,0.586,0.176,0.915; 0.954,1.954, - 0.977,0.586,0.175,0.916; 0.956,1.956,0.978,0.587,0.175,0.917; 0.958, - 1.958,0.979,0.587,0.175,0.918; 0.96,1.96,0.98,0.588,0.175,0.919; 0.962, - 1.962,0.981,0.589,0.175,0.92; 0.964,1.964,0.982,0.589,0.174,0.921; - 0.966,1.966,0.983,0.59,0.174,0.922; 0.968,1.968,0.984,0.59,0.174,0.923; - 0.97,1.97,0.985,0.591,0.174,0.924; 0.972,1.972,0.986,0.592,0.174,0.924; - 0.974,1.974,0.987,0.592,0.174,0.925; 0.976,1.976,0.988,0.593,0.173, - 0.926; 0.978,1.978,0.989,0.593,0.173,0.927; 0.98,1.98,0.99,0.594,0.173, - 0.928; 0.982,1.982,0.991,0.595,0.173,0.929; 0.984,1.984,0.992,0.595, - 0.173,0.93; 0.986,1.986,0.993,0.596,0.173,0.931; 0.988,1.988,0.994, - 0.596,0.172,0.932; 0.99,1.99,0.995,0.597,0.172,0.933; 0.992,1.992,0.996, - 0.598,0.172,0.934; 0.994,1.994,0.997,0.598,0.172,0.935; 0.996,1.996, - 0.998,0.599,0.172,0.936; 0.998,1.998,0.999,0.599,0.172,0.937; 1,2,1,0.6, - 0.171,0.938; 1,2,1,0.6,0.171,0.938], extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) + 0.3,0.343,0.469; 0.1,1.1,0.55,0.33,0.312,0.516; 0.2,1.2,0.6,0.36,0.286,0.563; + 0.3,1.3,0.65,0.39,0.264,0.609; 0.4,1.4,0.7,0.42,0.245,0.656; 0.5,1.5, + 0.75,0.45,0.228,0.703; 0.6,1.6,0.8,0.48,0.214,0.75; 0.7,1.7, + 0.85,0.51,0.202,0.797; 0.8,1.8,0.9,0.54,0.19,0.844; 0.9,1.9, + 0.95,0.57,0.18,0.891; 1,2,1,0.6,0.171,0.938], + extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) "Data for validating the PIgain block" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIGain PIGai diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mo index d787b7c4dcb..35e819aae10 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mo @@ -4,267 +4,12 @@ model PIIntegralTime "Test model for PIIntergralTime" PIIntTim "Calculate the integral time for a PI controller" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable RefDat(table=[0,1,0.5, - 0.3,0.343,0.469; 0.002,1.002,0.501,0.301,0.342,0.47; 0.004,1.004,0.502, - 0.301,0.341,0.471; 0.006,1.006,0.503,0.302,0.341,0.472; 0.008,1.008, - 0.504,0.302,0.34,0.473; 0.01,1.01,0.505,0.303,0.339,0.473; 0.012,1.012, - 0.506,0.304,0.339,0.474; 0.014,1.014,0.507,0.304,0.338,0.475; 0.016, - 1.016,0.508,0.305,0.337,0.476; 0.018,1.018,0.509,0.305,0.337,0.477; - 0.02,1.02,0.51,0.306,0.336,0.478; 0.022,1.022,0.511,0.307,0.335,0.479; - 0.024,1.024,0.512,0.307,0.335,0.48; 0.026,1.026,0.513,0.308,0.334,0.481; - 0.028,1.028,0.514,0.308,0.333,0.482; 0.03,1.03,0.515,0.309,0.333,0.483; - 0.032,1.032,0.516,0.31,0.332,0.484; 0.034,1.034,0.517,0.31,0.331,0.485; - 0.036,1.036,0.518,0.311,0.331,0.486; 0.038,1.038,0.519,0.311,0.33,0.487; - 0.04,1.04,0.52,0.312,0.33,0.488; 0.042,1.042,0.521,0.313,0.329,0.488; - 0.044,1.044,0.522,0.313,0.328,0.489; 0.046,1.046,0.523,0.314,0.328,0.49; - 0.048,1.048,0.524,0.314,0.327,0.491; 0.05,1.05,0.525,0.315,0.326,0.492; - 0.052,1.052,0.526,0.316,0.326,0.493; 0.054,1.054,0.527,0.316,0.325, - 0.494; 0.056,1.056,0.528,0.317,0.325,0.495; 0.058,1.058,0.529,0.317, - 0.324,0.496; 0.06,1.06,0.53,0.318,0.323,0.497; 0.062,1.062,0.531,0.319, - 0.323,0.498; 0.064,1.064,0.532,0.319,0.322,0.499; 0.066,1.066,0.533, - 0.32,0.321,0.5; 0.068,1.068,0.534,0.32,0.321,0.501; 0.07,1.07,0.535, - 0.321,0.32,0.502; 0.072,1.072,0.536,0.322,0.32,0.503; 0.074,1.074,0.537, - 0.322,0.319,0.503; 0.076,1.076,0.538,0.323,0.319,0.504; 0.078,1.078, - 0.539,0.323,0.318,0.505; 0.08,1.08,0.54,0.324,0.317,0.506; 0.082,1.082, - 0.541,0.325,0.317,0.507; 0.084,1.084,0.542,0.325,0.316,0.508; 0.086, - 1.086,0.543,0.326,0.316,0.509; 0.088,1.088,0.544,0.326,0.315,0.51; 0.09, - 1.09,0.545,0.327,0.314,0.511; 0.092,1.092,0.546,0.328,0.314,0.512; - 0.094,1.094,0.547,0.328,0.313,0.513; 0.096,1.096,0.548,0.329,0.313, - 0.514; 0.098,1.098,0.549,0.329,0.312,0.515; 0.1,1.1,0.55,0.33,0.312, - 0.516; 0.102,1.102,0.551,0.331,0.311,0.517; 0.104,1.104,0.552,0.331, - 0.31,0.518; 0.106,1.106,0.553,0.332,0.31,0.518; 0.108,1.108,0.554,0.332, - 0.309,0.519; 0.11,1.11,0.555,0.333,0.309,0.52; 0.112,1.112,0.556,0.334, - 0.308,0.521; 0.114,1.114,0.557,0.334,0.308,0.522; 0.116,1.116,0.558, - 0.335,0.307,0.523; 0.118,1.118,0.559,0.335,0.307,0.524; 0.12,1.12,0.56, - 0.336,0.306,0.525; 0.122,1.122,0.561,0.337,0.305,0.526; 0.124,1.124, - 0.562,0.337,0.305,0.527; 0.126,1.126,0.563,0.338,0.304,0.528; 0.128, - 1.128,0.564,0.338,0.304,0.529; 0.13,1.13,0.565,0.339,0.303,0.53; 0.132, - 1.132,0.566,0.34,0.303,0.531; 0.134,1.134,0.567,0.34,0.302,0.532; 0.136, - 1.136,0.568,0.341,0.302,0.533; 0.138,1.138,0.569,0.341,0.301,0.534; - 0.14,1.14,0.57,0.342,0.301,0.534; 0.142,1.142,0.571,0.343,0.3,0.535; - 0.144,1.144,0.572,0.343,0.3,0.536; 0.146,1.146,0.573,0.344,0.299,0.537; - 0.148,1.148,0.574,0.344,0.299,0.538; 0.15,1.15,0.575,0.345,0.298,0.539; - 0.152,1.152,0.576,0.346,0.297,0.54; 0.154,1.154,0.577,0.346,0.297,0.541; - 0.156,1.156,0.578,0.347,0.296,0.542; 0.158,1.158,0.579,0.347,0.296, - 0.543; 0.16,1.16,0.58,0.348,0.295,0.544; 0.162,1.162,0.581,0.349,0.295, - 0.545; 0.164,1.164,0.582,0.349,0.294,0.546; 0.166,1.166,0.583,0.35, - 0.294,0.547; 0.168,1.168,0.584,0.35,0.293,0.548; 0.17,1.17,0.585,0.351, - 0.293,0.549; 0.172,1.172,0.586,0.352,0.292,0.549; 0.174,1.174,0.587, - 0.352,0.292,0.55; 0.176,1.176,0.588,0.353,0.291,0.551; 0.178,1.178, - 0.589,0.353,0.291,0.552; 0.18,1.18,0.59,0.354,0.29,0.553; 0.182,1.182, - 0.591,0.355,0.29,0.554; 0.184,1.184,0.592,0.355,0.289,0.555; 0.186, - 1.186,0.593,0.356,0.289,0.556; 0.188,1.188,0.594,0.356,0.288,0.557; - 0.19,1.19,0.595,0.357,0.288,0.558; 0.192,1.192,0.596,0.358,0.288,0.559; - 0.194,1.194,0.597,0.358,0.287,0.56; 0.196,1.196,0.598,0.359,0.287,0.561; - 0.198,1.198,0.599,0.359,0.286,0.562; 0.2,1.2,0.6,0.36,0.286,0.563; - 0.202,1.202,0.601,0.361,0.285,0.564; 0.204,1.204,0.602,0.361,0.285, - 0.564; 0.206,1.206,0.603,0.362,0.284,0.565; 0.208,1.208,0.604,0.362, - 0.284,0.566; 0.21,1.21,0.605,0.363,0.283,0.567; 0.212,1.212,0.606,0.364, - 0.283,0.568; 0.214,1.214,0.607,0.364,0.282,0.569; 0.216,1.216,0.608, - 0.365,0.282,0.57; 0.218,1.218,0.609,0.365,0.281,0.571; 0.22,1.22,0.61, - 0.366,0.281,0.572; 0.222,1.222,0.611,0.367,0.28,0.573; 0.224,1.224, - 0.612,0.367,0.28,0.574; 0.226,1.226,0.613,0.368,0.28,0.575; 0.228,1.228, - 0.614,0.368,0.279,0.576; 0.23,1.23,0.615,0.369,0.279,0.577; 0.232,1.232, - 0.616,0.37,0.278,0.578; 0.234,1.234,0.617,0.37,0.278,0.579; 0.236,1.236, - 0.618,0.371,0.277,0.579; 0.238,1.238,0.619,0.371,0.277,0.58; 0.24,1.24, - 0.62,0.372,0.276,0.581; 0.242,1.242,0.621,0.373,0.276,0.582; 0.244, - 1.244,0.622,0.373,0.275,0.583; 0.246,1.246,0.623,0.374,0.275,0.584; - 0.248,1.248,0.624,0.374,0.275,0.585; 0.25,1.25,0.625,0.375,0.274,0.586; - 0.252,1.252,0.626,0.376,0.274,0.587; 0.254,1.254,0.627,0.376,0.273, - 0.588; 0.256,1.256,0.628,0.377,0.273,0.589; 0.258,1.258,0.629,0.377, - 0.272,0.59; 0.26,1.26,0.63,0.378,0.272,0.591; 0.262,1.262,0.631,0.379, - 0.272,0.592; 0.264,1.264,0.632,0.379,0.271,0.593; 0.266,1.266,0.633, - 0.38,0.271,0.594; 0.268,1.268,0.634,0.38,0.27,0.594; 0.27,1.27,0.635, - 0.381,0.27,0.595; 0.272,1.272,0.636,0.382,0.269,0.596; 0.274,1.274, - 0.637,0.382,0.269,0.597; 0.276,1.276,0.638,0.383,0.269,0.598; 0.278, - 1.278,0.639,0.383,0.268,0.599; 0.28,1.28,0.64,0.384,0.268,0.6; 0.282, - 1.282,0.641,0.385,0.267,0.601; 0.284,1.284,0.642,0.385,0.267,0.602; - 0.286,1.286,0.643,0.386,0.266,0.603; 0.288,1.288,0.644,0.386,0.266, - 0.604; 0.29,1.29,0.645,0.387,0.266,0.605; 0.292,1.292,0.646,0.388,0.265, - 0.606; 0.294,1.294,0.647,0.388,0.265,0.607; 0.296,1.296,0.648,0.389, - 0.264,0.608; 0.298,1.298,0.649,0.389,0.264,0.609; 0.3,1.3,0.65,0.39, - 0.264,0.609; 0.302,1.302,0.651,0.391,0.263,0.61; 0.304,1.304,0.652, - 0.391,0.263,0.611; 0.306,1.306,0.653,0.392,0.262,0.612; 0.308,1.308, - 0.654,0.392,0.262,0.613; 0.31,1.31,0.655,0.393,0.262,0.614; 0.312,1.312, - 0.656,0.394,0.261,0.615; 0.314,1.314,0.657,0.394,0.261,0.616; 0.316, - 1.316,0.658,0.395,0.26,0.617; 0.318,1.318,0.659,0.395,0.26,0.618; 0.32, - 1.32,0.66,0.396,0.26,0.619; 0.322,1.322,0.661,0.397,0.259,0.62; 0.324, - 1.324,0.662,0.397,0.259,0.621; 0.326,1.326,0.663,0.398,0.258,0.622; - 0.328,1.328,0.664,0.398,0.258,0.623; 0.33,1.33,0.665,0.399,0.258,0.624; - 0.332,1.332,0.666,0.4,0.257,0.624; 0.334,1.334,0.667,0.4,0.257,0.625; - 0.336,1.336,0.668,0.401,0.257,0.626; 0.338,1.338,0.669,0.401,0.256, - 0.627; 0.34,1.34,0.67,0.402,0.256,0.628; 0.342,1.342,0.671,0.403,0.255, - 0.629; 0.344,1.344,0.672,0.403,0.255,0.63; 0.346,1.346,0.673,0.404, - 0.255,0.631; 0.348,1.348,0.674,0.404,0.254,0.632; 0.35,1.35,0.675,0.405, - 0.254,0.633; 0.352,1.352,0.676,0.406,0.253,0.634; 0.354,1.354,0.677, - 0.406,0.253,0.635; 0.356,1.356,0.678,0.407,0.253,0.636; 0.358,1.358, - 0.679,0.407,0.252,0.637; 0.36,1.36,0.68,0.408,0.252,0.638; 0.362,1.362, - 0.681,0.409,0.252,0.639; 0.364,1.364,0.682,0.409,0.251,0.639; 0.366, - 1.366,0.683,0.41,0.251,0.64; 0.368,1.368,0.684,0.41,0.251,0.641; 0.37, - 1.37,0.685,0.411,0.25,0.642; 0.372,1.372,0.686,0.412,0.25,0.643; 0.374, - 1.374,0.687,0.412,0.249,0.644; 0.376,1.376,0.688,0.413,0.249,0.645; - 0.378,1.378,0.689,0.413,0.249,0.646; 0.38,1.38,0.69,0.414,0.248,0.647; - 0.382,1.382,0.691,0.415,0.248,0.648; 0.384,1.384,0.692,0.415,0.248, - 0.649; 0.386,1.386,0.693,0.416,0.247,0.65; 0.388,1.388,0.694,0.416, - 0.247,0.651; 0.39,1.39,0.695,0.417,0.247,0.652; 0.392,1.392,0.696,0.418, - 0.246,0.653; 0.394,1.394,0.697,0.418,0.246,0.654; 0.396,1.396,0.698, - 0.419,0.245,0.654; 0.398,1.398,0.699,0.419,0.245,0.655; 0.4,1.4,0.7, - 0.42,0.245,0.656; 0.402,1.402,0.701,0.421,0.244,0.657; 0.404,1.404, - 0.702,0.421,0.244,0.658; 0.406,1.406,0.703,0.422,0.244,0.659; 0.408, - 1.408,0.704,0.422,0.243,0.66; 0.41,1.41,0.705,0.423,0.243,0.661; 0.412, - 1.412,0.706,0.424,0.243,0.662; 0.414,1.414,0.707,0.424,0.242,0.663; - 0.416,1.416,0.708,0.425,0.242,0.664; 0.418,1.418,0.709,0.425,0.242, - 0.665; 0.42,1.42,0.71,0.426,0.241,0.666; 0.422,1.422,0.711,0.427,0.241, - 0.667; 0.424,1.424,0.712,0.427,0.241,0.668; 0.426,1.426,0.713,0.428, - 0.24,0.669; 0.428,1.428,0.714,0.428,0.24,0.669; 0.43,1.43,0.715,0.429, - 0.24,0.67; 0.432,1.432,0.716,0.43,0.239,0.671; 0.434,1.434,0.717,0.43, - 0.239,0.672; 0.436,1.436,0.718,0.431,0.239,0.673; 0.438,1.438,0.719, - 0.431,0.238,0.674; 0.44,1.44,0.72,0.432,0.238,0.675; 0.442,1.442,0.721, - 0.433,0.238,0.676; 0.444,1.444,0.722,0.433,0.237,0.677; 0.446,1.446, - 0.723,0.434,0.237,0.678; 0.448,1.448,0.724,0.434,0.237,0.679; 0.45,1.45, - 0.725,0.435,0.236,0.68; 0.452,1.452,0.726,0.436,0.236,0.681; 0.454, - 1.454,0.727,0.436,0.236,0.682; 0.456,1.456,0.728,0.437,0.235,0.683; - 0.458,1.458,0.729,0.437,0.235,0.684; 0.46,1.46,0.73,0.438,0.235,0.684; - 0.462,1.462,0.731,0.439,0.234,0.685; 0.464,1.464,0.732,0.439,0.234, - 0.686; 0.466,1.466,0.733,0.44,0.234,0.687; 0.468,1.468,0.734,0.44,0.233, - 0.688; 0.47,1.47,0.735,0.441,0.233,0.689; 0.472,1.472,0.736,0.442,0.233, - 0.69; 0.474,1.474,0.737,0.442,0.233,0.691; 0.476,1.476,0.738,0.443, - 0.232,0.692; 0.478,1.478,0.739,0.443,0.232,0.693; 0.48,1.48,0.74,0.444, - 0.232,0.694; 0.482,1.482,0.741,0.445,0.231,0.695; 0.484,1.484,0.742, - 0.445,0.231,0.696; 0.486,1.486,0.743,0.446,0.231,0.697; 0.488,1.488, - 0.744,0.446,0.23,0.698; 0.49,1.49,0.745,0.447,0.23,0.699; 0.492,1.492, - 0.746,0.448,0.23,0.699; 0.494,1.494,0.747,0.448,0.229,0.7; 0.496,1.496, - 0.748,0.449,0.229,0.701; 0.498,1.498,0.749,0.449,0.229,0.702; 0.5,1.5, - 0.75,0.45,0.228,0.703; 0.502,1.502,0.751,0.451,0.228,0.704; 0.504,1.504, - 0.752,0.451,0.228,0.705; 0.506,1.506,0.753,0.452,0.228,0.706; 0.508, - 1.508,0.754,0.452,0.227,0.707; 0.51,1.51,0.755,0.453,0.227,0.708; 0.512, - 1.512,0.756,0.454,0.227,0.709; 0.514,1.514,0.757,0.454,0.226,0.71; - 0.516,1.516,0.758,0.455,0.226,0.711; 0.518,1.518,0.759,0.455,0.226, - 0.712; 0.52,1.52,0.76,0.456,0.225,0.713; 0.522,1.522,0.761,0.457,0.225, - 0.714; 0.524,1.524,0.762,0.457,0.225,0.714; 0.526,1.526,0.763,0.458, - 0.225,0.715; 0.528,1.528,0.764,0.458,0.224,0.716; 0.53,1.53,0.765,0.459, - 0.224,0.717; 0.532,1.532,0.766,0.46,0.224,0.718; 0.534,1.534,0.767,0.46, - 0.223,0.719; 0.536,1.536,0.768,0.461,0.223,0.72; 0.538,1.538,0.769, - 0.461,0.223,0.721; 0.54,1.54,0.77,0.462,0.223,0.722; 0.542,1.542,0.771, - 0.463,0.222,0.723; 0.544,1.544,0.772,0.463,0.222,0.724; 0.546,1.546, - 0.773,0.464,0.222,0.725; 0.548,1.548,0.774,0.464,0.221,0.726; 0.55,1.55, - 0.775,0.465,0.221,0.727; 0.552,1.552,0.776,0.466,0.221,0.728; 0.554, - 1.554,0.777,0.466,0.221,0.729; 0.556,1.556,0.778,0.467,0.22,0.729; - 0.558,1.558,0.779,0.467,0.22,0.73; 0.56,1.56,0.78,0.468,0.22,0.731; - 0.562,1.562,0.781,0.469,0.219,0.732; 0.564,1.564,0.782,0.469,0.219, - 0.733; 0.566,1.566,0.783,0.47,0.219,0.734; 0.568,1.568,0.784,0.47,0.219, - 0.735; 0.57,1.57,0.785,0.471,0.218,0.736; 0.572,1.572,0.786,0.472,0.218, - 0.737; 0.574,1.574,0.787,0.472,0.218,0.738; 0.576,1.576,0.788,0.473, - 0.217,0.739; 0.578,1.578,0.789,0.473,0.217,0.74; 0.58,1.58,0.79,0.474, - 0.217,0.741; 0.582,1.582,0.791,0.475,0.217,0.742; 0.584,1.584,0.792, - 0.475,0.216,0.743; 0.586,1.586,0.793,0.476,0.216,0.744; 0.588,1.588, - 0.794,0.476,0.216,0.744; 0.59,1.59,0.795,0.477,0.216,0.745; 0.592,1.592, - 0.796,0.478,0.215,0.746; 0.594,1.594,0.797,0.478,0.215,0.747; 0.596, - 1.596,0.798,0.479,0.215,0.748; 0.598,1.598,0.799,0.479,0.214,0.749; 0.6, - 1.6,0.8,0.48,0.214,0.75; 0.602,1.602,0.801,0.481,0.214,0.751; 0.604, - 1.604,0.802,0.481,0.214,0.752; 0.606,1.606,0.803,0.482,0.213,0.753; - 0.608,1.608,0.804,0.482,0.213,0.754; 0.61,1.61,0.805,0.483,0.213,0.755; - 0.612,1.612,0.806,0.484,0.213,0.756; 0.614,1.614,0.807,0.484,0.212, - 0.757; 0.616,1.616,0.808,0.485,0.212,0.758; 0.618,1.618,0.809,0.485, - 0.212,0.759; 0.62,1.62,0.81,0.486,0.212,0.759; 0.622,1.622,0.811,0.487, - 0.211,0.76; 0.624,1.624,0.812,0.487,0.211,0.761; 0.626,1.626,0.813, - 0.488,0.211,0.762; 0.628,1.628,0.814,0.488,0.211,0.763; 0.63,1.63,0.815, - 0.489,0.21,0.764; 0.632,1.632,0.816,0.49,0.21,0.765; 0.634,1.634,0.817, - 0.49,0.21,0.766; 0.636,1.636,0.818,0.491,0.209,0.767; 0.638,1.638,0.819, - 0.491,0.209,0.768; 0.64,1.64,0.82,0.492,0.209,0.769; 0.642,1.642,0.821, - 0.493,0.209,0.77; 0.644,1.644,0.822,0.493,0.208,0.771; 0.646,1.646, - 0.823,0.494,0.208,0.772; 0.648,1.648,0.824,0.494,0.208,0.773; 0.65,1.65, - 0.825,0.495,0.208,0.774; 0.652,1.652,0.826,0.496,0.207,0.774; 0.654, - 1.654,0.827,0.496,0.207,0.775; 0.656,1.656,0.828,0.497,0.207,0.776; - 0.658,1.658,0.829,0.497,0.207,0.777; 0.66,1.66,0.83,0.498,0.206,0.778; - 0.662,1.662,0.831,0.499,0.206,0.779; 0.664,1.664,0.832,0.499,0.206,0.78; - 0.666,1.666,0.833,0.5,0.206,0.781; 0.668,1.668,0.834,0.5,0.205,0.782; - 0.67,1.67,0.835,0.501,0.205,0.783; 0.672,1.672,0.836,0.502,0.205,0.784; - 0.674,1.674,0.837,0.502,0.205,0.785; 0.676,1.676,0.838,0.503,0.204, - 0.786; 0.678,1.678,0.839,0.503,0.204,0.787; 0.68,1.68,0.84,0.504,0.204, - 0.788; 0.682,1.682,0.841,0.505,0.204,0.789; 0.684,1.684,0.842,0.505, - 0.204,0.789; 0.686,1.686,0.843,0.506,0.203,0.79; 0.688,1.688,0.844, - 0.506,0.203,0.791; 0.69,1.69,0.845,0.507,0.203,0.792; 0.692,1.692,0.846, - 0.508,0.203,0.793; 0.694,1.694,0.847,0.508,0.202,0.794; 0.696,1.696, - 0.848,0.509,0.202,0.795; 0.698,1.698,0.849,0.509,0.202,0.796; 0.7,1.7, - 0.85,0.51,0.202,0.797; 0.702,1.702,0.851,0.511,0.201,0.798; 0.704,1.704, - 0.852,0.511,0.201,0.799; 0.706,1.706,0.853,0.512,0.201,0.8; 0.708,1.708, - 0.854,0.512,0.201,0.801; 0.71,1.71,0.855,0.513,0.2,0.802; 0.712,1.712, - 0.856,0.514,0.2,0.803; 0.714,1.714,0.857,0.514,0.2,0.804; 0.716,1.716, - 0.858,0.515,0.2,0.804; 0.718,1.718,0.859,0.515,0.199,0.805; 0.72,1.72, - 0.86,0.516,0.199,0.806; 0.722,1.722,0.861,0.517,0.199,0.807; 0.724, - 1.724,0.862,0.517,0.199,0.808; 0.726,1.726,0.863,0.518,0.199,0.809; - 0.728,1.728,0.864,0.518,0.198,0.81; 0.73,1.73,0.865,0.519,0.198,0.811; - 0.732,1.732,0.866,0.52,0.198,0.812; 0.734,1.734,0.867,0.52,0.198,0.813; - 0.736,1.736,0.868,0.521,0.197,0.814; 0.738,1.738,0.869,0.521,0.197, - 0.815; 0.74,1.74,0.87,0.522,0.197,0.816; 0.742,1.742,0.871,0.523,0.197, - 0.817; 0.744,1.744,0.872,0.523,0.197,0.818; 0.746,1.746,0.873,0.524, - 0.196,0.819; 0.748,1.748,0.874,0.524,0.196,0.819; 0.75,1.75,0.875,0.525, - 0.196,0.82; 0.752,1.752,0.876,0.526,0.196,0.821; 0.754,1.754,0.877, - 0.526,0.195,0.822; 0.756,1.756,0.878,0.527,0.195,0.823; 0.758,1.758, - 0.879,0.527,0.195,0.824; 0.76,1.76,0.88,0.528,0.195,0.825; 0.762,1.762, - 0.881,0.529,0.194,0.826; 0.764,1.764,0.882,0.529,0.194,0.827; 0.766, - 1.766,0.883,0.53,0.194,0.828; 0.768,1.768,0.884,0.53,0.194,0.829; 0.77, - 1.77,0.885,0.531,0.194,0.83; 0.772,1.772,0.886,0.532,0.193,0.831; 0.774, - 1.774,0.887,0.532,0.193,0.832; 0.776,1.776,0.888,0.533,0.193,0.833; - 0.778,1.778,0.889,0.533,0.193,0.834; 0.78,1.78,0.89,0.534,0.193,0.834; - 0.782,1.782,0.891,0.535,0.192,0.835; 0.784,1.784,0.892,0.535,0.192, - 0.836; 0.786,1.786,0.893,0.536,0.192,0.837; 0.788,1.788,0.894,0.536, - 0.192,0.838; 0.79,1.79,0.895,0.537,0.191,0.839; 0.792,1.792,0.896,0.538, - 0.191,0.84; 0.794,1.794,0.897,0.538,0.191,0.841; 0.796,1.796,0.898, - 0.539,0.191,0.842; 0.798,1.798,0.899,0.539,0.191,0.843; 0.8,1.8,0.9, - 0.54,0.19,0.844; 0.802,1.802,0.901,0.541,0.19,0.845; 0.804,1.804,0.902, - 0.541,0.19,0.846; 0.806,1.806,0.903,0.542,0.19,0.847; 0.808,1.808,0.904, - 0.542,0.19,0.848; 0.81,1.81,0.905,0.543,0.189,0.849; 0.812,1.812,0.906, - 0.544,0.189,0.849; 0.814,1.814,0.907,0.544,0.189,0.85; 0.816,1.816, - 0.908,0.545,0.189,0.851; 0.818,1.818,0.909,0.545,0.189,0.852; 0.82,1.82, - 0.91,0.546,0.188,0.853; 0.822,1.822,0.911,0.547,0.188,0.854; 0.824, - 1.824,0.912,0.547,0.188,0.855; 0.826,1.826,0.913,0.548,0.188,0.856; - 0.828,1.828,0.914,0.548,0.187,0.857; 0.83,1.83,0.915,0.549,0.187,0.858; - 0.832,1.832,0.916,0.55,0.187,0.859; 0.834,1.834,0.917,0.55,0.187,0.86; - 0.836,1.836,0.918,0.551,0.187,0.861; 0.838,1.838,0.919,0.551,0.186, - 0.862; 0.84,1.84,0.92,0.552,0.186,0.863; 0.842,1.842,0.921,0.553,0.186, - 0.864; 0.844,1.844,0.922,0.553,0.186,0.864; 0.846,1.846,0.923,0.554, - 0.186,0.865; 0.848,1.848,0.924,0.554,0.185,0.866; 0.85,1.85,0.925,0.555, - 0.185,0.867; 0.852,1.852,0.926,0.556,0.185,0.868; 0.854,1.854,0.927, - 0.556,0.185,0.869; 0.856,1.856,0.928,0.557,0.185,0.87; 0.858,1.858, - 0.929,0.557,0.184,0.871; 0.86,1.86,0.93,0.558,0.184,0.872; 0.862,1.862, - 0.931,0.559,0.184,0.873; 0.864,1.864,0.932,0.559,0.184,0.874; 0.866, - 1.866,0.933,0.56,0.184,0.875; 0.868,1.868,0.934,0.56,0.183,0.876; 0.87, - 1.87,0.935,0.561,0.183,0.877; 0.872,1.872,0.936,0.562,0.183,0.878; - 0.874,1.874,0.937,0.562,0.183,0.879; 0.876,1.876,0.938,0.563,0.183, - 0.879; 0.878,1.878,0.939,0.563,0.182,0.88; 0.88,1.88,0.94,0.564,0.182, - 0.881; 0.882,1.882,0.941,0.565,0.182,0.882; 0.884,1.884,0.942,0.565, - 0.182,0.883; 0.886,1.886,0.943,0.566,0.182,0.884; 0.888,1.888,0.944, - 0.566,0.182,0.885; 0.89,1.89,0.945,0.567,0.181,0.886; 0.892,1.892,0.946, - 0.568,0.181,0.887; 0.894,1.894,0.947,0.568,0.181,0.888; 0.896,1.896, - 0.948,0.569,0.181,0.889; 0.898,1.898,0.949,0.569,0.181,0.89; 0.9,1.9, - 0.95,0.57,0.18,0.891; 0.902,1.902,0.951,0.571,0.18,0.892; 0.904,1.904, - 0.952,0.571,0.18,0.893; 0.906,1.906,0.953,0.572,0.18,0.894; 0.908,1.908, - 0.954,0.572,0.18,0.894; 0.91,1.91,0.955,0.573,0.179,0.895; 0.912,1.912, - 0.956,0.574,0.179,0.896; 0.914,1.914,0.957,0.574,0.179,0.897; 0.916, - 1.916,0.958,0.575,0.179,0.898; 0.918,1.918,0.959,0.575,0.179,0.899; - 0.92,1.92,0.96,0.576,0.178,0.9; 0.922,1.922,0.961,0.577,0.178,0.901; - 0.924,1.924,0.962,0.577,0.178,0.902; 0.926,1.926,0.963,0.578,0.178, - 0.903; 0.928,1.928,0.964,0.578,0.178,0.904; 0.93,1.93,0.965,0.579,0.178, - 0.905; 0.932,1.932,0.966,0.58,0.177,0.906; 0.934,1.934,0.967,0.58,0.177, - 0.907; 0.936,1.936,0.968,0.581,0.177,0.908; 0.938,1.938,0.969,0.581, - 0.177,0.909; 0.94,1.94,0.97,0.582,0.177,0.909; 0.942,1.942,0.971,0.583, - 0.176,0.91; 0.944,1.944,0.972,0.583,0.176,0.911; 0.946,1.946,0.973, - 0.584,0.176,0.912; 0.948,1.948,0.974,0.584,0.176,0.913; 0.95,1.95,0.975, - 0.585,0.176,0.914; 0.952,1.952,0.976,0.586,0.176,0.915; 0.954,1.954, - 0.977,0.586,0.175,0.916; 0.956,1.956,0.978,0.587,0.175,0.917; 0.958, - 1.958,0.979,0.587,0.175,0.918; 0.96,1.96,0.98,0.588,0.175,0.919; 0.962, - 1.962,0.981,0.589,0.175,0.92; 0.964,1.964,0.982,0.589,0.174,0.921; - 0.966,1.966,0.983,0.59,0.174,0.922; 0.968,1.968,0.984,0.59,0.174,0.923; - 0.97,1.97,0.985,0.591,0.174,0.924; 0.972,1.972,0.986,0.592,0.174,0.924; - 0.974,1.974,0.987,0.592,0.174,0.925; 0.976,1.976,0.988,0.593,0.173, - 0.926; 0.978,1.978,0.989,0.593,0.173,0.927; 0.98,1.98,0.99,0.594,0.173, - 0.928; 0.982,1.982,0.991,0.595,0.173,0.929; 0.984,1.984,0.992,0.595, - 0.173,0.93; 0.986,1.986,0.993,0.596,0.173,0.931; 0.988,1.988,0.994, - 0.596,0.172,0.932; 0.99,1.99,0.995,0.597,0.172,0.933; 0.992,1.992,0.996, - 0.598,0.172,0.934; 0.994,1.994,0.997,0.598,0.172,0.935; 0.996,1.996, - 0.998,0.599,0.172,0.936; 0.998,1.998,0.999,0.599,0.172,0.937; 1,2,1,0.6, - 0.171,0.938; 1,2,1,0.6,0.171,0.938], extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) + 0.3,0.343,0.469; 0.1,1.1,0.55,0.33,0.312,0.516; 0.2,1.2,0.6,0.36,0.286,0.563; + 0.202,1.202,0.601,0.361,0.285,0.564; 0.3,1.3,0.65,0.39, + 0.264,0.609; 0.4,1.4,0.7,0.42,0.245,0.656; 0.5,1.5,0.75,0.45,0.228,0.703; + 0.6,1.6,0.8,0.48,0.214,0.75; 0.7,1.7,0.85,0.51,0.202,0.797; 0.8,1.8,0.9, + 0.54,0.19,0.844; 0.9,1.9,0.95,0.57,0.18,0.891; 1,2,1,0.6,0.171,0.938], + extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) "Data for validating the pIIntegralTime block" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mo index 8125632880b..3049bb93d04 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mo @@ -4,106 +4,9 @@ model NormalizedTimeDelay "Test model for NormalizedTimeDelay" "Calculate the normalized time delay" annotation (Placement(transformation(extent={{-8,-10},{12,10}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable RefDat(table=[0,0, - 2.051; 0.002,0,2.051; 0.004,0,2.051; 0.006,0,2.051; 0.008,0,2.051; 0.01, - 0,2.051; 0.012,0,2.051; 0.014,0,2.051; 0.016,0,2.051; 0.018,0,2.051; - 0.02,0,2.051; 0.022,0,2.051; 0.024,0,2.051; 0.026,0,2.051; 0.028,0, - 2.051; 0.03,0,2.051; 0.032,0,2.051; 0.034,0,2.051; 0.036,0,2.051; 0.038, - 0,2.051; 0.04,0,2.051; 0.042,0,2.051; 0.044,0,2.051; 0.046,0,2.051; - 0.048,0,2.051; 0.05,0,2.051; 0.052,0,2.051; 0.054,0,2.051; 0.056,0, - 2.051; 0.058,0,2.051; 0.06,0,2.051; 0.062,0,2.051; 0.064,0,2.051; 0.066, - 0,2.051; 0.068,0,2.051; 0.07,0,2.051; 0.072,0,2.051; 0.074,0,2.051; - 0.076,0,2.051; 0.078,0,2.051; 0.08,0,2.051; 0.082,0,2.051; 0.084,0, - 2.051; 0.086,0,2.051; 0.088,0,2.051; 0.09,0,2.051; 0.092,0,2.051; 0.094, - 0,2.051; 0.096,0,2.051; 0.098,0,2.051; 0.1,0,2.051; 0.1,0,2.051; 0.1,0, - 2.051; 0.102,0,2.051; 0.104,0,2.051; 0.106,0,2.051; 0.108,0,2.051; 0.11, - 0,2.051; 0.112,0,2.051; 0.114,0,2.051; 0.116,0,2.051; 0.118,0,2.051; - 0.12,0,2.051; 0.122,0,2.051; 0.124,0,2.051; 0.126,0,2.051; 0.128,0, - 2.051; 0.13,0,2.051; 0.132,0,2.051; 0.134,0,2.051; 0.136,0,2.051; 0.138, - 0,2.051; 0.14,0,2.051; 0.142,0,2.051; 0.144,0,2.051; 0.146,0,2.051; - 0.148,0,2.051; 0.15,0,2.051; 0.152,0,2.051; 0.154,0,2.051; 0.156,0, - 2.051; 0.158,0,2.051; 0.16,0,2.051; 0.162,0,2.051; 0.164,0,2.051; 0.166, - 0,2.051; 0.168,0,2.051; 0.17,0,2.051; 0.172,0,2.051; 0.174,0,2.051; - 0.176,0,2.051; 0.178,0,2.051; 0.18,0,2.051; 0.182,0,2.051; 0.184,0, - 2.051; 0.186,0,2.051; 0.188,0,2.051; 0.19,0,2.051; 0.192,0,2.051; 0.194, - 0,2.051; 0.196,0,2.051; 0.198,0,2.051; 0.2,0,2.051; 0.202,0,2.051; - 0.204,0,2.051; 0.206,0,2.051; 0.208,0,2.051; 0.21,0,2.051; 0.212,0, - 2.051; 0.214,0,2.051; 0.216,0,2.051; 0.218,0,2.051; 0.22,0,2.051; 0.222, - 0,2.051; 0.224,0,2.051; 0.226,0,2.051; 0.228,0,2.051; 0.23,0,2.051; - 0.232,0,2.051; 0.234,0,2.051; 0.236,0,2.051; 0.238,0,2.051; 0.24,0, - 2.051; 0.242,0,2.051; 0.244,0,2.051; 0.246,0,2.051; 0.248,0,2.051; 0.25, - 0,2.051; 0.252,0,2.051; 0.254,0,2.051; 0.256,0,2.051; 0.258,0,2.051; - 0.26,0,2.051; 0.262,0,2.051; 0.264,0,2.051; 0.266,0,2.051; 0.268,0, - 2.051; 0.27,0,2.051; 0.272,0,2.051; 0.274,0,2.051; 0.276,0,2.051; 0.278, - 0,2.051; 0.28,0,2.051; 0.282,0,2.051; 0.284,0,2.051; 0.286,0,2.051; - 0.288,0,2.051; 0.29,0,2.051; 0.292,0,2.051; 0.294,0,2.051; 0.296,0, - 2.051; 0.298,0,2.051; 0.3,0,2.051; 0.3,1,1; 0.3,1,1; 0.302,1,1; 0.304,1, - 1; 0.306,1,1; 0.308,1,1; 0.31,1,1; 0.312,1,1; 0.314,1,1; 0.316,1,1; - 0.318,1,1; 0.32,1,1; 0.322,1,1; 0.324,1,1; 0.326,1,1; 0.328,1,1; 0.33,1, - 1; 0.332,1,1; 0.334,1,1; 0.336,1,1; 0.338,1,1; 0.34,1,1; 0.342,1,1; - 0.344,1,1; 0.346,1,1; 0.348,1,1; 0.35,1,1; 0.352,1,1; 0.354,1,1; 0.356, - 1,1; 0.358,1,1; 0.36,1,1; 0.362,1,1; 0.364,1,1; 0.366,1,1; 0.368,1,1; - 0.37,1,1; 0.372,1,1; 0.374,1,1; 0.376,1,1; 0.378,1,1; 0.38,1,1; 0.382,1, - 1; 0.384,1,1; 0.386,1,1; 0.388,1,1; 0.39,1,1; 0.392,1,1; 0.394,1,1; - 0.396,1,1; 0.398,1,1; 0.4,1,1; 0.402,1,1; 0.404,1,1; 0.406,1,1; 0.408,1, - 1; 0.41,1,1; 0.412,1,1; 0.414,1,1; 0.416,1,1; 0.418,1,1; 0.42,1,1; - 0.422,1,1; 0.424,1,1; 0.426,1,1; 0.428,1,1; 0.43,1,1; 0.432,1,1; 0.434, - 1,1; 0.436,1,1; 0.438,1,1; 0.44,1,1; 0.442,1,1; 0.444,1,1; 0.446,1,1; - 0.448,1,1; 0.45,1,1; 0.452,1,1; 0.454,1,1; 0.456,1,1; 0.458,1,1; 0.46,1, - 1; 0.462,1,1; 0.464,1,1; 0.466,1,1; 0.468,1,1; 0.47,1,1; 0.472,1,1; - 0.474,1,1; 0.476,1,1; 0.478,1,1; 0.48,1,1; 0.482,1,1; 0.484,1,1; 0.486, - 1,1; 0.488,1,1; 0.49,1,1; 0.492,1,1; 0.494,1,1; 0.496,1,1; 0.498,1,1; - 0.5,1,1; 0.502,1,1; 0.504,1,1; 0.506,1,1; 0.508,1,1; 0.51,1,1; 0.512,1, - 1; 0.514,1,1; 0.516,1,1; 0.518,1,1; 0.52,1,1; 0.522,1,1; 0.524,1,1; - 0.526,1,1; 0.528,1,1; 0.53,1,1; 0.532,1,1; 0.534,1,1; 0.536,1,1; 0.538, - 1,1; 0.54,1,1; 0.542,1,1; 0.544,1,1; 0.546,1,1; 0.548,1,1; 0.55,1,1; - 0.552,1,1; 0.554,1,1; 0.556,1,1; 0.558,1,1; 0.56,1,1; 0.562,1,1; 0.564, - 1,1; 0.566,1,1; 0.568,1,1; 0.57,1,1; 0.572,1,1; 0.574,1,1; 0.576,1,1; - 0.578,1,1; 0.58,1,1; 0.582,1,1; 0.584,1,1; 0.586,1,1; 0.588,1,1; 0.59,1, - 1; 0.592,1,1; 0.594,1,1; 0.596,1,1; 0.598,1,1; 0.6,1,1; 0.602,1,1; - 0.604,1,1; 0.606,1,1; 0.608,1,1; 0.61,1,1; 0.612,1,1; 0.614,1,1; 0.616, - 1,1; 0.618,1,1; 0.62,1,1; 0.622,1,1; 0.624,1,1; 0.626,1,1; 0.628,1,1; - 0.63,1,1; 0.632,1,1; 0.634,1,1; 0.636,1,1; 0.638,1,1; 0.64,1,1; 0.642,1, - 1; 0.644,1,1; 0.646,1,1; 0.648,1,1; 0.65,1,1; 0.652,1,1; 0.654,1,1; - 0.656,1,1; 0.658,1,1; 0.66,1,1; 0.662,1,1; 0.664,1,1; 0.666,1,1; 0.668, - 1,1; 0.67,1,1; 0.672,1,1; 0.674,1,1; 0.676,1,1; 0.678,1,1; 0.68,1,1; - 0.682,1,1; 0.684,1,1; 0.686,1,1; 0.688,1,1; 0.69,1,1; 0.692,1,1; 0.694, - 1,1; 0.696,1,1; 0.698,1,1; 0.7,1,1; 0.7,1.5,0.709; 0.7,1.5,0.709; 0.702, - 1.5,0.709; 0.704,1.5,0.709; 0.706,1.5,0.709; 0.708,1.5,0.709; 0.71,1.5, - 0.709; 0.712,1.5,0.709; 0.714,1.5,0.709; 0.716,1.5,0.709; 0.718,1.5, - 0.709; 0.72,1.5,0.709; 0.722,1.5,0.709; 0.724,1.5,0.709; 0.726,1.5, - 0.709; 0.728,1.5,0.709; 0.73,1.5,0.709; 0.732,1.5,0.709; 0.734,1.5, - 0.709; 0.736,1.5,0.709; 0.738,1.5,0.709; 0.74,1.5,0.709; 0.742,1.5, - 0.709; 0.744,1.5,0.709; 0.746,1.5,0.709; 0.748,1.5,0.709; 0.75,1.5, - 0.709; 0.752,1.5,0.709; 0.754,1.5,0.709; 0.756,1.5,0.709; 0.758,1.5, - 0.709; 0.76,1.5,0.709; 0.762,1.5,0.709; 0.764,1.5,0.709; 0.766,1.5, - 0.709; 0.768,1.5,0.709; 0.77,1.5,0.709; 0.772,1.5,0.709; 0.774,1.5, - 0.709; 0.776,1.5,0.709; 0.778,1.5,0.709; 0.78,1.5,0.709; 0.782,1.5, - 0.709; 0.784,1.5,0.709; 0.786,1.5,0.709; 0.788,1.5,0.709; 0.79,1.5, - 0.709; 0.792,1.5,0.709; 0.794,1.5,0.709; 0.796,1.5,0.709; 0.798,1.5, - 0.709; 0.8,1.5,0.709; 0.802,1.5,0.709; 0.804,1.5,0.709; 0.806,1.5,0.709; - 0.808,1.5,0.709; 0.81,1.5,0.709; 0.812,1.5,0.709; 0.814,1.5,0.709; - 0.816,1.5,0.709; 0.818,1.5,0.709; 0.82,1.5,0.709; 0.822,1.5,0.709; - 0.824,1.5,0.709; 0.826,1.5,0.709; 0.828,1.5,0.709; 0.83,1.5,0.709; 0.83, - 1.5,0.709; 0.83,1.5,0.709; 0.832,1.5,0.709; 0.834,1.5,0.709; 0.836,1.5, - 0.709; 0.838,1.5,0.709; 0.84,1.5,0.709; 0.842,1.5,0.709; 0.844,1.5, - 0.709; 0.846,1.5,0.709; 0.848,1.5,0.709; 0.85,1.5,0.709; 0.85,2,0.494; - 0.85,2,0.494; 0.852,2,0.494; 0.854,2,0.494; 0.856,2,0.494; 0.858,2, - 0.494; 0.86,2,0.494; 0.862,2,0.494; 0.864,2,0.494; 0.866,2,0.494; 0.868, - 2,0.494; 0.87,2,0.494; 0.872,2,0.494; 0.874,2,0.494; 0.876,2,0.494; - 0.878,2,0.494; 0.88,2,0.494; 0.882,2,0.494; 0.884,2,0.494; 0.886,2, - 0.494; 0.888,2,0.494; 0.89,2,0.494; 0.892,2,0.494; 0.894,2,0.494; 0.896, - 2,0.494; 0.898,2,0.494; 0.9,2,0.494; 0.902,2,0.494; 0.904,2,0.494; - 0.906,2,0.494; 0.908,2,0.494; 0.91,2,0.494; 0.912,2,0.494; 0.914,2, - 0.494; 0.916,2,0.494; 0.918,2,0.494; 0.92,2,0.494; 0.922,2,0.494; 0.924, - 2,0.494; 0.926,2,0.494; 0.928,2,0.494; 0.93,2,0.494; 0.932,2,0.494; - 0.934,2,0.494; 0.936,2,0.494; 0.938,2,0.494; 0.94,2,0.494; 0.942,2, - 0.494; 0.944,2,0.494; 0.946,2,0.494; 0.948,2,0.494; 0.95,2,0.494; 0.952, - 2,0.494; 0.954,2,0.494; 0.956,2,0.494; 0.958,2,0.494; 0.96,2,0.494; - 0.962,2,0.494; 0.964,2,0.494; 0.966,2,0.494; 0.968,2,0.494; 0.97,2, - 0.494; 0.972,2,0.494; 0.974,2,0.494; 0.976,2,0.494; 0.978,2,0.494; 0.98, - 2,0.494; 0.982,2,0.494; 0.984,2,0.494; 0.986,2,0.494; 0.988,2,0.494; - 0.99,2,0.494; 0.992,2,0.494; 0.994,2,0.494; 0.996,2,0.494; 0.998,2, - 0.494; 1,2,0.494], extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) + 2.051; 0.298,0,2.051; 0.3,0,2.051; 0.3,1,1; 0.698,1,1; 0.7,1,1; 0.7,1.5,0.709; + 0.848,1.5,0.709; 0.85,1.5,0.709; 0.85,2,0.494; 0.998,2, 0.494; 1,2,0.494], + extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) "Data for validating the normalizedTimeDelay block" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo index f9cb33c645d..abff27b41ec 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo @@ -5,270 +5,17 @@ model ControlProcessModel "Test model for ControlProcessModel" "Calculate the parameters of of a first-order model" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable RefDat(table=[0,1,1,1, - 0.3,1,1; 0.002,1,1,1,0.3,1,1; 0.004,1,1,1,0.3,1,1; 0.006,1,1,1,0.3,1,1; - 0.008,1,1,1,0.3,1,1; 0.01,1,1,1,0.3,1,1; 0.012,1,1,1,0.3,1,1; 0.014,1,1, - 1,0.3,1,1; 0.016,1,1,1,0.3,1,1; 0.018,1,1,1,0.3,1,1; 0.02,1,1,1,0.3,1,1; - 0.022,1,1,1,0.3,1,1; 0.024,1,1,1,0.3,1,1; 0.026,1,1,1,0.3,1,1; 0.028,1, - 1,1,0.3,1,1; 0.03,1,1,1,0.3,1,1; 0.032,1,1,1,0.3,1,1; 0.034,1,1,1,0.3,1, - 1; 0.036,1,1,1,0.3,1,1; 0.038,1,1,1,0.3,1,1; 0.04,1,1,1,0.3,1,1; 0.042, - 1,1,1,0.3,1,1; 0.044,1,1,1,0.3,1,1; 0.046,1,1,1,0.3,1,1; 0.048,1,1,1, - 0.3,1,1; 0.05,1,1,1,0.3,1,1; 0.052,1,1,1,0.3,1,1; 0.054,1,1,1,0.3,1,1; - 0.056,1,1,1,0.3,1,1; 0.058,1,1,1,0.3,1,1; 0.06,1,1,1,0.3,1,1; 0.062,1,1, - 1,0.3,1,1; 0.064,1,1,1,0.3,1,1; 0.066,1,1,1,0.3,1,1; 0.068,1,1,1,0.3,1, - 1; 0.07,1,1,1,0.3,1,1; 0.072,1,1,1,0.3,1,1; 0.074,1,1,1,0.3,1,1; 0.076, - 1,1,1,0.3,1,1; 0.078,1,1,1,0.3,1,1; 0.08,1,1,1,0.3,1,1; 0.082,1,1,1,0.3, - 1,1; 0.084,1,1,1,0.3,1,1; 0.086,1,1,1,0.3,1,1; 0.088,1,1,1,0.3,1,1; - 0.09,1,1,1,0.3,1,1; 0.092,1,1,1,0.3,1,1; 0.094,1,1,1,0.3,1,1; 0.096,1,1, - 1,0.3,1,1; 0.098,1,1,1,0.3,1,1; 0.1,1,1,1,0.3,1,1; 0.1,0.5,1,1,0.5,1,1; - 0.1,0.5,1,1,0.5,1,1; 0.102,0.5,1,1,0.5,1,1; 0.104,0.5,1,1,0.5,1,1; - 0.106,0.5,1,1,0.5,1,1; 0.108,0.5,1,1,0.5,1,1; 0.11,0.5,1,1,0.5,1,1; - 0.112,0.5,1,1,0.5,1,1; 0.114,0.5,1,1,0.5,1,1; 0.116,0.5,1,1,0.5,1,1; - 0.118,0.5,1,1,0.5,1,1; 0.12,0.5,1,1,0.5,1,1; 0.122,0.5,1,1,0.5,1,1; - 0.124,0.5,1,1,0.5,1,1; 0.126,0.5,1,1,0.5,1,1; 0.128,0.5,1,1,0.5,1,1; - 0.13,0.5,1,1,0.5,1,1; 0.132,0.5,1,1,0.5,1,1; 0.134,0.5,1,1,0.5,1,1; - 0.136,0.5,1,1,0.5,1,1; 0.138,0.5,1,1,0.5,1,1; 0.14,0.5,1,1,0.5,1,1; - 0.142,0.5,1,1,0.5,1,1; 0.144,0.5,1,1,0.5,1,1; 0.146,0.5,1,1,0.5,1,1; - 0.148,0.5,1,1,0.5,1,1; 0.15,0.5,1,1,0.5,1,1; 0.152,0.5,1,1,0.5,1,1; - 0.154,0.5,1,1,0.5,1,1; 0.156,0.5,1,1,0.5,1,1; 0.158,0.5,1,1,0.5,1,1; - 0.16,0.5,1,1,0.5,1,1; 0.162,0.5,1,1,0.5,1,1; 0.164,0.5,1,1,0.5,1,1; - 0.166,0.5,1,1,0.5,1,1; 0.168,0.5,1,1,0.5,1,1; 0.17,0.5,1,1,0.5,1,1; - 0.172,0.5,1,1,0.5,1,1; 0.174,0.5,1,1,0.5,1,1; 0.176,0.5,1,1,0.5,1,1; - 0.178,0.5,1,1,0.5,1,1; 0.18,0.5,1,1,0.5,1,1; 0.182,0.5,1,1,0.5,1,1; - 0.184,0.5,1,1,0.5,1,1; 0.186,0.5,1,1,0.5,1,1; 0.188,0.5,1,1,0.5,1,1; - 0.19,0.5,1,1,0.5,1,1; 0.192,0.5,1,1,0.5,1,1; 0.194,0.5,1,1,0.5,1,1; - 0.196,0.5,1,1,0.5,1,1; 0.198,0.5,1,1,0.5,1,1; 0.2,0.5,1,1,0.5,1,1; - 0.202,0.5,1,1,0.5,1,1; 0.204,0.5,1,1,0.5,1,1; 0.206,0.5,1,1,0.5,1,1; - 0.208,0.5,1,1,0.5,1,1; 0.21,0.5,1,1,0.5,1,1; 0.212,0.5,1,1,0.5,1,1; - 0.214,0.5,1,1,0.5,1,1; 0.216,0.5,1,1,0.5,1,1; 0.218,0.5,1,1,0.5,1,1; - 0.22,0.5,1,1,0.5,1,1; 0.222,0.5,1,1,0.5,1,1; 0.224,0.5,1,1,0.5,1,1; - 0.226,0.5,1,1,0.5,1,1; 0.228,0.5,1,1,0.5,1,1; 0.23,0.5,1,1,0.5,1,1; - 0.232,0.5,1,1,0.5,1,1; 0.234,0.5,1,1,0.5,1,1; 0.236,0.5,1,1,0.5,1,1; - 0.238,0.5,1,1,0.5,1,1; 0.24,0.5,1,1,0.5,1,1; 0.242,0.5,1,1,0.5,1,1; - 0.244,0.5,1,1,0.5,1,1; 0.246,0.5,1,1,0.5,1,1; 0.248,0.5,1,1,0.5,1,1; - 0.25,0.5,1,1,0.5,1,1; 0.252,0.5,1,1,0.5,1,1; 0.254,0.5,1,1,0.5,1,1; - 0.256,0.5,1,1,0.5,1,1; 0.258,0.5,1,1,0.5,1,1; 0.26,0.5,1,1,0.5,1,1; - 0.262,0.5,1,1,0.5,1,1; 0.264,0.5,1,1,0.5,1,1; 0.266,0.5,1,1,0.5,1,1; - 0.268,0.5,1,1,0.5,1,1; 0.27,0.5,1,1,0.5,1,1; 0.272,0.5,1,1,0.5,1,1; - 0.274,0.5,1,1,0.5,1,1; 0.276,0.5,1,1,0.5,1,1; 0.278,0.5,1,1,0.5,1,1; - 0.28,0.5,1,1,0.5,1,1; 0.282,0.5,1,1,0.5,1,1; 0.284,0.5,1,1,0.5,1,1; - 0.286,0.5,1,1,0.5,1,1; 0.288,0.5,1,1,0.5,1,1; 0.29,0.5,1,1,0.5,1,1; - 0.292,0.5,1,1,0.5,1,1; 0.294,0.5,1,1,0.5,1,1; 0.296,0.5,1,1,0.5,1,1; - 0.298,0.5,1,1,0.5,1,1; 0.3,0.5,1,1,0.5,1,1; 0.3,0.5,1,1,0.1,1,1; 0.3, - 0.5,1,1,0.1,1,1; 0.302,0.5,1,1,0.1,1,1; 0.304,0.5,1,1,0.1,1,1; 0.306, - 0.5,1,1,0.1,1,1; 0.308,0.5,1,1,0.1,1,1; 0.31,0.5,1,1,0.1,1,1; 0.312,0.5, - 1,1,0.1,1,1; 0.314,0.5,1,1,0.1,1,1; 0.316,0.5,1,1,0.1,1,1; 0.318,0.5,1, - 1,0.1,1,1; 0.32,0.5,1,1,0.1,1,1; 0.322,0.5,1,1,0.1,1,1; 0.324,0.5,1,1, - 0.1,1,1; 0.326,0.5,1,1,0.1,1,1; 0.328,0.5,1,1,0.1,1,1; 0.33,0.5,1,1,0.1, - 1,1; 0.332,0.5,1,1,0.1,1,1; 0.334,0.5,1,1,0.1,1,1; 0.336,0.5,1,1,0.1,1, - 1; 0.338,0.5,1,1,0.1,1,1; 0.34,0.5,1,1,0.1,1,1; 0.342,0.5,1,1,0.1,1,1; - 0.344,0.5,1,1,0.1,1,1; 0.346,0.5,1,1,0.1,1,1; 0.348,0.5,1,1,0.1,1,1; - 0.35,0.5,1,1,0.1,1,1; 0.352,0.5,1,1,0.1,1,1; 0.354,0.5,1,1,0.1,1,1; - 0.356,0.5,1,1,0.1,1,1; 0.358,0.5,1,1,0.1,1,1; 0.36,0.5,1,1,0.1,1,1; - 0.362,0.5,1,1,0.1,1,1; 0.364,0.5,1,1,0.1,1,1; 0.366,0.5,1,1,0.1,1,1; - 0.368,0.5,1,1,0.1,1,1; 0.37,0.5,1,1,0.1,1,1; 0.372,0.5,1,1,0.1,1,1; - 0.374,0.5,1,1,0.1,1,1; 0.376,0.5,1,1,0.1,1,1; 0.378,0.5,1,1,0.1,1,1; - 0.38,0.5,1,1,0.1,1,1; 0.382,0.5,1,1,0.1,1,1; 0.384,0.5,1,1,0.1,1,1; - 0.386,0.5,1,1,0.1,1,1; 0.388,0.5,1,1,0.1,1,1; 0.39,0.5,1,1,0.1,1,1; - 0.392,0.5,1,1,0.1,1,1; 0.394,0.5,1,1,0.1,1,1; 0.396,0.5,1,1,0.1,1,1; - 0.398,0.5,1,1,0.1,1,1; 0.4,0.5,1,1,0.1,1,1; 0.402,0.5,1,1,0.1,1,1; - 0.404,0.5,1,1,0.1,1,1; 0.406,0.5,1,1,0.1,1,1; 0.408,0.5,1,1,0.1,1,1; - 0.41,0.5,1,1,0.1,1,1; 0.412,0.5,1,1,0.1,1,1; 0.414,0.5,1,1,0.1,1,1; - 0.416,0.5,1,1,0.1,1,1; 0.418,0.5,1,1,0.1,1,1; 0.42,0.5,1,1,0.1,1,1; - 0.422,0.5,1,1,0.1,1,1; 0.424,0.5,1,1,0.1,1,1; 0.426,0.5,1,1,0.1,1,1; - 0.428,0.5,1,1,0.1,1,1; 0.43,0.5,1,1,0.1,1,1; 0.432,0.5,1,1,0.1,1,1; - 0.434,0.5,1,1,0.1,1,1; 0.436,0.5,1,1,0.1,1,1; 0.438,0.5,1,1,0.1,1,1; - 0.44,0.5,1,1,0.1,1,1; 0.442,0.5,1,1,0.1,1,1; 0.444,0.5,1,1,0.1,1,1; - 0.446,0.5,1,1,0.1,1,1; 0.448,0.5,1,1,0.1,1,1; 0.45,0.5,1,1,0.1,1,1; - 0.452,0.5,1,1,0.1,1,1; 0.454,0.5,1,1,0.1,1,1; 0.456,0.5,1,1,0.1,1,1; - 0.458,0.5,1,1,0.1,1,1; 0.46,0.5,1,1,0.1,1,1; 0.462,0.5,1,1,0.1,1,1; - 0.464,0.5,1,1,0.1,1,1; 0.466,0.5,1,1,0.1,1,1; 0.468,0.5,1,1,0.1,1,1; - 0.47,0.5,1,1,0.1,1,1; 0.472,0.5,1,1,0.1,1,1; 0.474,0.5,1,1,0.1,1,1; - 0.476,0.5,1,1,0.1,1,1; 0.478,0.5,1,1,0.1,1,1; 0.48,0.5,1,1,0.1,1,1; - 0.482,0.5,1,1,0.1,1,1; 0.484,0.5,1,1,0.1,1,1; 0.486,0.5,1,1,0.1,1,1; - 0.488,0.5,1,1,0.1,1,1; 0.49,0.5,1,1,0.1,1,1; 0.492,0.5,1,1,0.1,1,1; - 0.494,0.5,1,1,0.1,1,1; 0.496,0.5,1,1,0.1,1,1; 0.498,0.5,1,1,0.1,1,1; - 0.5,0.5,1,1,0.1,1,1; 0.502,0.5,1,1,0.1,1,1; 0.504,0.5,1,1,0.1,1,1; - 0.506,0.5,1,1,0.1,1,1; 0.508,0.5,1,1,0.1,1,1; 0.51,0.5,1,1,0.1,1,1; - 0.512,0.5,1,1,0.1,1,1; 0.514,0.5,1,1,0.1,1,1; 0.516,0.5,1,1,0.1,1,1; - 0.518,0.5,1,1,0.1,1,1; 0.52,0.5,1,1,0.1,1,1; 0.522,0.5,1,1,0.1,1,1; - 0.524,0.5,1,1,0.1,1,1; 0.526,0.5,1,1,0.1,1,1; 0.528,0.5,1,1,0.1,1,1; - 0.53,0.5,1,1,0.1,1,1; 0.532,0.5,1,1,0.1,1,1; 0.534,0.5,1,1,0.1,1,1; - 0.536,0.5,1,1,0.1,1,1; 0.538,0.5,1,1,0.1,1,1; 0.54,0.5,1,1,0.1,1,1; - 0.542,0.5,1,1,0.1,1,1; 0.544,0.5,1,1,0.1,1,1; 0.546,0.5,1,1,0.1,1,1; - 0.548,0.5,1,1,0.1,1,1; 0.55,0.5,1,1,0.1,1,1; 0.552,0.5,1,1,0.1,1,1; - 0.554,0.5,1,1,0.1,1,1; 0.556,0.5,1,1,0.1,1,1; 0.558,0.5,1,1,0.1,1,1; - 0.56,0.5,1,1,0.1,1,1; 0.562,0.5,1,1,0.1,1,1; 0.564,0.5,1,1,0.1,1,1; - 0.566,0.5,1,1,0.1,1,1; 0.568,0.5,1,1,0.1,1,1; 0.57,0.5,1,1,0.1,1,1; - 0.572,0.5,1,1,0.1,1,1; 0.574,0.5,1,1,0.1,1,1; 0.576,0.5,1,1,0.1,1,1; - 0.578,0.5,1,1,0.1,1,1; 0.58,0.5,1,1,0.1,1,1; 0.582,0.5,1,1,0.1,1,1; - 0.584,0.5,1,1,0.1,1,1; 0.586,0.5,1,1,0.1,1,1; 0.588,0.5,1,1,0.1,1,1; - 0.59,0.5,1,1,0.1,1,1; 0.592,0.5,1,1,0.1,1,1; 0.594,0.5,1,1,0.1,1,1; - 0.596,0.5,1,1,0.1,1,1; 0.598,0.5,1,1,0.1,1,1; 0.6,0.5,1,1,0.1,1,1; - 0.602,0.5,1,1,0.1,1,1; 0.604,0.5,1,1,0.1,1,1; 0.606,0.5,1,1,0.1,1,1; - 0.608,0.5,1,1,0.1,1,1; 0.61,0.5,1,1,0.1,1,1; 0.612,0.5,1,1,0.1,1,1; - 0.614,0.5,1,1,0.1,1,1; 0.616,0.5,1,1,0.1,1,1; 0.618,0.5,1,1,0.1,1,1; - 0.62,0.5,1,1,0.1,1,1; 0.622,0.5,1,1,0.1,1,1; 0.624,0.5,1,1,0.1,1,1; - 0.626,0.5,1,1,0.1,1,1; 0.628,0.5,1,1,0.1,1,1; 0.63,0.5,1,1,0.1,1,1; - 0.632,0.5,1,1,0.1,1,1; 0.634,0.5,1,1,0.1,1,1; 0.636,0.5,1,1,0.1,1,1; - 0.638,0.5,1,1,0.1,1,1; 0.64,0.5,1,1,0.1,1,1; 0.642,0.5,1,1,0.1,1,1; - 0.644,0.5,1,1,0.1,1,1; 0.646,0.5,1,1,0.1,1,1; 0.648,0.5,1,1,0.1,1,1; - 0.65,0.5,1,1,0.1,1,1; 0.652,0.5,1,1,0.1,1,1; 0.654,0.5,1,1,0.1,1,1; - 0.656,0.5,1,1,0.1,1,1; 0.658,0.5,1,1,0.1,1,1; 0.66,0.5,1,1,0.1,1,1; - 0.662,0.5,1,1,0.1,1,1; 0.664,0.5,1,1,0.1,1,1; 0.666,0.5,1,1,0.1,1,1; - 0.668,0.5,1,1,0.1,1,1; 0.67,0.5,1,1,0.1,1,1; 0.672,0.5,1,1,0.1,1,1; - 0.674,0.5,1,1,0.1,1,1; 0.676,0.5,1,1,0.1,1,1; 0.678,0.5,1,1,0.1,1,1; - 0.68,0.5,1,1,0.1,1,1; 0.682,0.5,1,1,0.1,1,1; 0.684,0.5,1,1,0.1,1,1; - 0.686,0.5,1,1,0.1,1,1; 0.688,0.5,1,1,0.1,1,1; 0.69,0.5,1,1,0.1,1,1; - 0.692,0.5,1,1,0.1,1,1; 0.694,0.5,1,1,0.1,1,1; 0.696,0.5,1,1,0.1,1,1; - 0.698,0.5,1,1,0.1,1,1; 0.7,0.5,1,1,0.1,1,1; 0.7,0.5,1,3,0.5,0.762,0.762; - 0.7,0.5,1,3,0.5,0.762,0.762; 0.702,0.5,1,3,0.5,0.762,0.762; 0.704,0.5,1, - 3,0.5,0.762,0.762; 0.706,0.5,1,3,0.5,0.762,0.762; 0.708,0.5,1,3,0.5, - 0.762,0.762; 0.71,0.5,1,3,0.5,0.762,0.762; 0.712,0.5,1,3,0.5,0.762, - 0.762; 0.714,0.5,1,3,0.5,0.762,0.762; 0.716,0.5,1,3,0.5,0.762,0.762; - 0.718,0.5,1,3,0.5,0.762,0.762; 0.72,0.5,1,3,0.5,0.762,0.762; 0.722,0.5, - 1,3,0.5,0.762,0.762; 0.724,0.5,1,3,0.5,0.762,0.762; 0.726,0.5,1,3,0.5, - 0.762,0.762; 0.728,0.5,1,3,0.5,0.762,0.762; 0.73,0.5,1,3,0.5,0.762, - 0.762; 0.732,0.5,1,3,0.5,0.762,0.762; 0.734,0.5,1,3,0.5,0.762,0.762; - 0.736,0.5,1,3,0.5,0.762,0.762; 0.738,0.5,1,3,0.5,0.762,0.762; 0.74,0.5, - 1,3,0.5,0.762,0.762; 0.742,0.5,1,3,0.5,0.762,0.762; 0.744,0.5,1,3,0.5, - 0.762,0.762; 0.746,0.5,1,3,0.5,0.762,0.762; 0.748,0.5,1,3,0.5,0.762, - 0.762; 0.75,0.5,1,3,0.5,0.762,0.762; 0.752,0.5,1,3,0.5,0.762,0.762; - 0.754,0.5,1,3,0.5,0.762,0.762; 0.756,0.5,1,3,0.5,0.762,0.762; 0.758,0.5, - 1,3,0.5,0.762,0.762; 0.76,0.5,1,3,0.5,0.762,0.762; 0.762,0.5,1,3,0.5, - 0.762,0.762; 0.764,0.5,1,3,0.5,0.762,0.762; 0.766,0.5,1,3,0.5,0.762, - 0.762; 0.768,0.5,1,3,0.5,0.762,0.762; 0.77,0.5,1,3,0.5,0.762,0.762; - 0.772,0.5,1,3,0.5,0.762,0.762; 0.774,0.5,1,3,0.5,0.762,0.762; 0.776,0.5, - 1,3,0.5,0.762,0.762; 0.778,0.5,1,3,0.5,0.762,0.762; 0.78,0.5,1,3,0.5, - 0.762,0.762; 0.782,0.5,1,3,0.5,0.762,0.762; 0.784,0.5,1,3,0.5,0.762, - 0.762; 0.786,0.5,1,3,0.5,0.762,0.762; 0.788,0.5,1,3,0.5,0.762,0.762; - 0.79,0.5,1,3,0.5,0.762,0.762; 0.792,0.5,1,3,0.5,0.762,0.762; 0.794,0.5, - 1,3,0.5,0.762,0.762; 0.796,0.5,1,3,0.5,0.762,0.762; 0.798,0.5,1,3,0.5, - 0.762,0.762; 0.8,0.5,1,3,0.5,0.762,0.762; 0.802,0.5,1,3,0.5,0.762,0.762; - 0.804,0.5,1,3,0.5,0.762,0.762; 0.806,0.5,1,3,0.5,0.762,0.762; 0.808,0.5, - 1,3,0.5,0.762,0.762; 0.81,0.5,1,3,0.5,0.762,0.762; 0.812,0.5,1,3,0.5, - 0.762,0.762; 0.814,0.5,1,3,0.5,0.762,0.762; 0.816,0.5,1,3,0.5,0.762, - 0.762; 0.818,0.5,1,3,0.5,0.762,0.762; 0.82,0.5,1,3,0.5,0.762,0.762; - 0.822,0.5,1,3,0.5,0.762,0.762; 0.824,0.5,1,3,0.5,0.762,0.762; 0.826,0.5, - 1,3,0.5,0.762,0.762; 0.828,0.5,1,3,0.5,0.762,0.762; 0.83,0.5,1,3,0.5, + 0.3,1,1; 0.1,1,1,1,0.3,1,1; 0.1,0.5,1,1,0.5,1,1; 0.298,0.5,1,1,0.5,1,1; + 0.3,0.5,1,1,0.5,1,1; 0.3,0.5,1,1,0.1,1,1;0.698,0.5,1,1,0.1,1,1; 0.7,0.5,1,1,0.1,1,1; + 0.7,0.5,1,3,0.5,0.762,0.762;0.828,0.5,1,3,0.5,0.762,0.762; 0.83,0.5,1,3,0.5, 0.762,0.762; 0.83,1,1,3,0.8,0.762,0.762; 0.83,1,1,3,0.8,0.762,0.762; - 0.832,1,1,3,0.8,0.762,0.762; 0.834,1,1,3,0.8,0.762,0.762; 0.836,1,1,3, - 0.8,0.762,0.762; 0.838,1,1,3,0.8,0.762,0.762; 0.84,1,1,3,0.8,0.762, - 0.762; 0.842,1,1,3,0.8,0.762,0.762; 0.844,1,1,3,0.8,0.762,0.762; 0.846, - 1,1,3,0.8,0.762,0.762; 0.848,1,1,3,0.8,0.762,0.762; 0.85,1,1,3,0.8, - 0.762,0.762; 0.85,1,2,3,0.5,0.762,0.762; 0.85,1,2,3,0.5,0.762,0.762; - 0.852,1,2,3,0.5,0.762,0.762; 0.854,1,2,3,0.5,0.762,0.762; 0.856,1,2,3, - 0.5,0.762,0.762; 0.858,1,2,3,0.5,0.762,0.762; 0.86,1,2,3,0.5,0.762, - 0.762; 0.862,1,2,3,0.5,0.762,0.762; 0.864,1,2,3,0.5,0.762,0.762; 0.866, - 1,2,3,0.5,0.762,0.762; 0.868,1,2,3,0.5,0.762,0.762; 0.87,1,2,3,0.5, - 0.762,0.762; 0.872,1,2,3,0.5,0.762,0.762; 0.874,1,2,3,0.5,0.762,0.762; - 0.876,1,2,3,0.5,0.762,0.762; 0.878,1,2,3,0.5,0.762,0.762; 0.88,1,2,3, - 0.5,0.762,0.762; 0.882,1,2,3,0.5,0.762,0.762; 0.884,1,2,3,0.5,0.762, - 0.762; 0.886,1,2,3,0.5,0.762,0.762; 0.888,1,2,3,0.5,0.762,0.762; 0.89,1, - 2,3,0.5,0.762,0.762; 0.892,1,2,3,0.5,0.762,0.762; 0.894,1,2,3,0.5,0.762, - 0.762; 0.896,1,2,3,0.5,0.762,0.762; 0.898,1,2,3,0.5,0.762,0.762; 0.9,1, - 2,3,0.5,0.762,0.762; 0.902,1,2,3,0.5,0.762,0.762; 0.904,1,2,3,0.5,0.762, - 0.762; 0.906,1,2,3,0.5,0.762,0.762; 0.908,1,2,3,0.5,0.762,0.762; 0.91,1, - 2,3,0.5,0.762,0.762; 0.912,1,2,3,0.5,0.762,0.762; 0.914,1,2,3,0.5,0.762, - 0.762; 0.916,1,2,3,0.5,0.762,0.762; 0.918,1,2,3,0.5,0.762,0.762; 0.92,1, - 2,3,0.5,0.762,0.762; 0.922,1,2,3,0.5,0.762,0.762; 0.924,1,2,3,0.5,0.762, - 0.762; 0.926,1,2,3,0.5,0.762,0.762; 0.928,1,2,3,0.5,0.762,0.762; 0.93,1, - 2,3,0.5,0.762,0.762; 0.932,1,2,3,0.5,0.762,0.762; 0.934,1,2,3,0.5,0.762, - 0.762; 0.936,1,2,3,0.5,0.762,0.762; 0.938,1,2,3,0.5,0.762,0.762; 0.94,1, - 2,3,0.5,0.762,0.762; 0.942,1,2,3,0.5,0.762,0.762; 0.944,1,2,3,0.5,0.762, - 0.762; 0.946,1,2,3,0.5,0.762,0.762; 0.948,1,2,3,0.5,0.762,0.762; 0.95,1, - 2,3,0.5,0.762,0.762; 0.952,1,2,3,0.5,0.762,0.762; 0.954,1,2,3,0.5,0.762, - 0.762; 0.956,1,2,3,0.5,0.762,0.762; 0.958,1,2,3,0.5,0.762,0.762; 0.96,1, - 2,3,0.5,0.762,0.762; 0.962,1,2,3,0.5,0.762,0.762; 0.964,1,2,3,0.5,0.762, - 0.762; 0.966,1,2,3,0.5,0.762,0.762; 0.968,1,2,3,0.5,0.762,0.762; 0.97,1, - 2,3,0.5,0.762,0.762; 0.972,1,2,3,0.5,0.762,0.762; 0.974,1,2,3,0.5,0.762, - 0.762; 0.976,1,2,3,0.5,0.762,0.762; 0.978,1,2,3,0.5,0.762,0.762; 0.98,1, - 2,3,0.5,0.762,0.762; 0.982,1,2,3,0.5,0.762,0.762; 0.984,1,2,3,0.5,0.762, - 0.762; 0.986,1,2,3,0.5,0.762,0.762; 0.988,1,2,3,0.5,0.762,0.762; 0.99,1, - 2,3,0.5,0.762,0.762; 0.992,1,2,3,0.5,0.762,0.762; 0.994,1,2,3,0.5,0.762, - 0.762; 0.996,1,2,3,0.5,0.762,0.762; 0.998,1,2,3,0.5,0.762,0.762; 1,1,2, - 3,0.5,0.762,0.762], extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) + 0.848,1,1,3,0.8,0.762,0.762; 0.85,1,1,3,0.8, 0.762,0.762; 0.85,1,2,3,0.5,0.762,0.762; + 1,1,2,3,0.5,0.762,0.762], + extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) "Data for validating the controlProcessModel block" annotation (Placement(transformation(extent={{-80,-10},{-60,10}}))); Buildings.Controls.OBC.CDL.Logical.Sources.TimeTable RefBooDat(table=[0,0,0; - 0.002,0,0; 0.004,0,0; 0.006,0,0; 0.008,0,0; 0.01,0,0; 0.012,0,0; 0.014, - 0,0; 0.016,0,0; 0.018,0,0; 0.02,0,0; 0.022,0,0; 0.024,0,0; 0.026,0,0; - 0.028,0,0; 0.03,0,0; 0.032,0,0; 0.034,0,0; 0.036,0,0; 0.038,0,0; 0.04,0, - 0; 0.042,0,0; 0.044,0,0; 0.046,0,0; 0.048,0,0; 0.05,0,0; 0.052,0,0; - 0.054,0,0; 0.056,0,0; 0.058,0,0; 0.06,0,0; 0.062,0,0; 0.064,0,0; 0.066, - 0,0; 0.068,0,0; 0.07,0,0; 0.072,0,0; 0.074,0,0; 0.076,0,0; 0.078,0,0; - 0.08,0,0; 0.082,0,0; 0.084,0,0; 0.086,0,0; 0.088,0,0; 0.09,0,0; 0.092,0, - 0; 0.094,0,0; 0.096,0,0; 0.098,0,0; 0.1,0,0; 0.1,0,0; 0.1,0,0; 0.102,0, - 0; 0.104,0,0; 0.106,0,0; 0.108,0,0; 0.11,0,0; 0.112,0,0; 0.114,0,0; - 0.116,0,0; 0.118,0,0; 0.12,0,0; 0.122,0,0; 0.124,0,0; 0.126,0,0; 0.128, - 0,0; 0.13,0,0; 0.132,0,0; 0.134,0,0; 0.136,0,0; 0.138,0,0; 0.14,0,0; - 0.142,0,0; 0.144,0,0; 0.146,0,0; 0.148,0,0; 0.15,0,0; 0.152,0,0; 0.154, - 0,0; 0.156,0,0; 0.158,0,0; 0.16,0,0; 0.162,0,0; 0.164,0,0; 0.166,0,0; - 0.168,0,0; 0.17,0,0; 0.172,0,0; 0.174,0,0; 0.176,0,0; 0.178,0,0; 0.18,0, - 0; 0.182,0,0; 0.184,0,0; 0.186,0,0; 0.188,0,0; 0.19,0,0; 0.192,0,0; - 0.194,0,0; 0.196,0,0; 0.198,0,0; 0.2,0,0; 0.202,0,0; 0.204,0,0; 0.206,0, - 0; 0.208,0,0; 0.21,0,0; 0.212,0,0; 0.214,0,0; 0.216,0,0; 0.218,0,0; - 0.22,0,0; 0.222,0,0; 0.224,0,0; 0.226,0,0; 0.228,0,0; 0.23,0,0; 0.232,0, - 0; 0.234,0,0; 0.236,0,0; 0.238,0,0; 0.24,0,0; 0.242,0,0; 0.244,0,0; - 0.246,0,0; 0.248,0,0; 0.25,0,0; 0.252,0,0; 0.254,0,0; 0.256,0,0; 0.258, - 0,0; 0.26,0,0; 0.262,0,0; 0.264,0,0; 0.266,0,0; 0.268,0,0; 0.27,0,0; - 0.272,0,0; 0.274,0,0; 0.276,0,0; 0.278,0,0; 0.28,0,0; 0.282,0,0; 0.284, - 0,0; 0.286,0,0; 0.288,0,0; 0.29,0,0; 0.292,0,0; 0.294,0,0; 0.296,0,0; - 0.298,0,0; 0.3,0,0; 0.3,1,0; 0.3,1,0; 0.302,1,0; 0.304,1,0; 0.306,1,0; - 0.308,1,0; 0.31,1,0; 0.312,1,0; 0.314,1,0; 0.316,1,0; 0.318,1,0; 0.32,1, - 0; 0.322,1,0; 0.324,1,0; 0.326,1,0; 0.328,1,0; 0.33,1,0; 0.332,1,0; - 0.334,1,0; 0.336,1,0; 0.338,1,0; 0.34,1,0; 0.342,1,0; 0.344,1,0; 0.346, - 1,0; 0.348,1,0; 0.35,1,0; 0.352,1,0; 0.354,1,0; 0.356,1,0; 0.358,1,0; - 0.36,1,0; 0.362,1,0; 0.364,1,0; 0.366,1,0; 0.368,1,0; 0.37,1,0; 0.372,1, - 0; 0.374,1,0; 0.376,1,0; 0.378,1,0; 0.38,1,0; 0.382,1,0; 0.384,1,0; - 0.386,1,0; 0.388,1,0; 0.39,1,0; 0.392,1,0; 0.394,1,0; 0.396,1,0; 0.398, - 1,0; 0.4,1,0; 0.402,1,0; 0.404,1,0; 0.406,1,0; 0.408,1,0; 0.41,1,0; - 0.412,1,0; 0.414,1,0; 0.416,1,0; 0.418,1,0; 0.42,1,0; 0.422,1,0; 0.424, - 1,0; 0.426,1,0; 0.428,1,0; 0.43,1,0; 0.432,1,0; 0.434,1,0; 0.436,1,0; - 0.438,1,0; 0.44,1,0; 0.442,1,0; 0.444,1,0; 0.446,1,0; 0.448,1,0; 0.45,1, - 0; 0.452,1,0; 0.454,1,0; 0.456,1,0; 0.458,1,0; 0.46,1,0; 0.462,1,0; - 0.464,1,0; 0.466,1,0; 0.468,1,0; 0.47,1,0; 0.472,1,0; 0.474,1,0; 0.476, - 1,0; 0.478,1,0; 0.48,1,0; 0.482,1,0; 0.484,1,0; 0.486,1,0; 0.488,1,0; - 0.49,1,0; 0.492,1,0; 0.494,1,0; 0.496,1,0; 0.498,1,0; 0.5,1,0; 0.502,1, - 0; 0.504,1,0; 0.506,1,0; 0.508,1,0; 0.51,1,0; 0.512,1,0; 0.514,1,0; - 0.516,1,0; 0.518,1,0; 0.52,1,0; 0.522,1,0; 0.524,1,0; 0.526,1,0; 0.528, - 1,0; 0.53,1,0; 0.532,1,0; 0.534,1,0; 0.536,1,0; 0.538,1,0; 0.54,1,0; - 0.542,1,0; 0.544,1,0; 0.546,1,0; 0.548,1,0; 0.55,1,0; 0.552,1,0; 0.554, - 1,0; 0.556,1,0; 0.558,1,0; 0.56,1,0; 0.562,1,0; 0.564,1,0; 0.566,1,0; - 0.568,1,0; 0.57,1,0; 0.572,1,0; 0.574,1,0; 0.576,1,0; 0.578,1,0; 0.58,1, - 0; 0.582,1,0; 0.584,1,0; 0.586,1,0; 0.588,1,0; 0.59,1,0; 0.592,1,0; - 0.594,1,0; 0.596,1,0; 0.598,1,0; 0.6,1,0; 0.602,1,0; 0.604,1,0; 0.606,1, - 0; 0.608,1,0; 0.61,1,0; 0.612,1,0; 0.614,1,0; 0.616,1,0; 0.618,1,0; - 0.62,1,0; 0.622,1,0; 0.624,1,0; 0.626,1,0; 0.628,1,0; 0.63,1,0; 0.632,1, - 0; 0.634,1,0; 0.636,1,0; 0.638,1,0; 0.64,1,0; 0.642,1,0; 0.644,1,0; - 0.646,1,0; 0.648,1,0; 0.65,1,0; 0.652,1,0; 0.654,1,0; 0.656,1,0; 0.658, - 1,0; 0.66,1,0; 0.662,1,0; 0.664,1,0; 0.666,1,0; 0.668,1,0; 0.67,1,0; - 0.672,1,0; 0.674,1,0; 0.676,1,0; 0.678,1,0; 0.68,1,0; 0.682,1,0; 0.684, - 1,0; 0.686,1,0; 0.688,1,0; 0.69,1,0; 0.692,1,0; 0.694,1,0; 0.696,1,0; - 0.698,1,0; 0.7,1,0; 0.7,1,1; 0.7,1,1; 0.702,1,1; 0.704,1,1; 0.706,1,1; - 0.708,1,1; 0.71,1,1; 0.712,1,1; 0.714,1,1; 0.716,1,1; 0.718,1,1; 0.72,1, - 1; 0.722,1,1; 0.724,1,1; 0.726,1,1; 0.728,1,1; 0.73,1,1; 0.732,1,1; - 0.734,1,1; 0.736,1,1; 0.738,1,1; 0.74,1,1; 0.742,1,1; 0.744,1,1; 0.746, - 1,1; 0.748,1,1; 0.75,1,1; 0.752,1,1; 0.754,1,1; 0.756,1,1; 0.758,1,1; - 0.76,1,1; 0.762,1,1; 0.764,1,1; 0.766,1,1; 0.768,1,1; 0.77,1,1; 0.772,1, - 1; 0.774,1,1; 0.776,1,1; 0.778,1,1; 0.78,1,1; 0.782,1,1; 0.784,1,1; - 0.786,1,1; 0.788,1,1; 0.79,1,1; 0.792,1,1; 0.794,1,1; 0.796,1,1; 0.798, - 1,1; 0.8,1,1; 0.802,1,1; 0.804,1,1; 0.806,1,1; 0.808,1,1; 0.81,1,1; - 0.812,1,1; 0.814,1,1; 0.816,1,1; 0.818,1,1; 0.82,1,1; 0.822,1,1; 0.824, - 1,1; 0.826,1,1; 0.828,1,1; 0.83,1,1; 0.83,1,1; 0.83,1,1; 0.832,1,1; - 0.834,1,1; 0.836,1,1; 0.838,1,1; 0.84,1,1; 0.842,1,1; 0.844,1,1; 0.846, - 1,1; 0.848,1,1; 0.85,1,1; 0.85,1,1; 0.85,1,1; 0.852,1,1; 0.854,1,1; - 0.856,1,1; 0.858,1,1; 0.86,1,1; 0.862,1,1; 0.864,1,1; 0.866,1,1; 0.868, - 1,1; 0.87,1,1; 0.872,1,1; 0.874,1,1; 0.876,1,1; 0.878,1,1; 0.88,1,1; - 0.882,1,1; 0.884,1,1; 0.886,1,1; 0.888,1,1; 0.89,1,1; 0.892,1,1; 0.894, - 1,1; 0.896,1,1; 0.898,1,1; 0.9,1,1; 0.902,1,1; 0.904,1,1; 0.906,1,1; - 0.908,1,1; 0.91,1,1; 0.912,1,1; 0.914,1,1; 0.916,1,1; 0.918,1,1; 0.92,1, - 1; 0.922,1,1; 0.924,1,1; 0.926,1,1; 0.928,1,1; 0.93,1,1; 0.932,1,1; - 0.934,1,1; 0.936,1,1; 0.938,1,1; 0.94,1,1; 0.942,1,1; 0.944,1,1; 0.946, - 1,1; 0.948,1,1; 0.95,1,1; 0.952,1,1; 0.954,1,1; 0.956,1,1; 0.958,1,1; - 0.96,1,1; 0.962,1,1; 0.964,1,1; 0.966,1,1; 0.968,1,1; 0.97,1,1; 0.972,1, - 1; 0.974,1,1; 0.976,1,1; 0.978,1,1; 0.98,1,1; 0.982,1,1; 0.984,1,1; - 0.986,1,1; 0.988,1,1; 0.99,1,1; 0.992,1,1; 0.994,1,1; 0.996,1,1; 0.998, - 1,1; 1,1,1], period=1) + 0.298,0,0; 0.3,0,0; 0.3,1,0; 0.698,1,0; 0.7,1,0; 0.7,1,1; 0.7,1,1;1,1,1], period=1) "Boolean Data for validating the controlProcessModel block" annotation (Placement(transformation(extent={{-80,-60},{-60,-40}}))); equation diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mo index 9554aa8b4f7..4fcce016b2e 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mo @@ -4,207 +4,16 @@ model TimeConstantDelay "Test model for TimeConstantDelay" timConDel(yLow=0.1) "Calculate the time constant and the time delay of a first-order model" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable RefDat(table=[0,1,1, - 0.3,0.754,0.226; 0.002,1,1,0.3,0.754,0.226; 0.004,1,1,0.3,0.754,0.226; - 0.006,1,1,0.3,0.754,0.226; 0.008,1,1,0.3,0.754,0.226; 0.01,1,1,0.3, - 0.754,0.226; 0.012,1,1,0.3,0.754,0.226; 0.014,1,1,0.3,0.754,0.226; - 0.016,1,1,0.3,0.754,0.226; 0.018,1,1,0.3,0.754,0.226; 0.02,1,1,0.3, - 0.754,0.226; 0.022,1,1,0.3,0.754,0.226; 0.024,1,1,0.3,0.754,0.226; - 0.026,1,1,0.3,0.754,0.226; 0.028,1,1,0.3,0.754,0.226; 0.03,1,1,0.3, - 0.754,0.226; 0.032,1,1,0.3,0.754,0.226; 0.034,1,1,0.3,0.754,0.226; - 0.036,1,1,0.3,0.754,0.226; 0.038,1,1,0.3,0.754,0.226; 0.04,1,1,0.3, - 0.754,0.226; 0.042,1,1,0.3,0.754,0.226; 0.044,1,1,0.3,0.754,0.226; - 0.046,1,1,0.3,0.754,0.226; 0.048,1,1,0.3,0.754,0.226; 0.05,1,1,0.3, - 0.754,0.226; 0.052,1,1,0.3,0.754,0.226; 0.054,1,1,0.3,0.754,0.226; - 0.056,1,1,0.3,0.754,0.226; 0.058,1,1,0.3,0.754,0.226; 0.06,1,1,0.3, - 0.754,0.226; 0.062,1,1,0.3,0.754,0.226; 0.064,1,1,0.3,0.754,0.226; - 0.066,1,1,0.3,0.754,0.226; 0.068,1,1,0.3,0.754,0.226; 0.07,1,1,0.3, - 0.754,0.226; 0.072,1,1,0.3,0.754,0.226; 0.074,1,1,0.3,0.754,0.226; - 0.076,1,1,0.3,0.754,0.226; 0.078,1,1,0.3,0.754,0.226; 0.08,1,1,0.3, - 0.754,0.226; 0.082,1,1,0.3,0.754,0.226; 0.084,1,1,0.3,0.754,0.226; - 0.086,1,1,0.3,0.754,0.226; 0.088,1,1,0.3,0.754,0.226; 0.09,1,1,0.3, - 0.754,0.226; 0.092,1,1,0.3,0.754,0.226; 0.094,1,1,0.3,0.754,0.226; - 0.096,1,1,0.3,0.754,0.226; 0.098,1,1,0.3,0.754,0.226; 0.1,1,1,0.3,0.754, - 0.226; 0.1,1,1,0.5,0.672,0.336; 0.1,1,1,0.5,0.672,0.336; 0.102,1,1,0.5, - 0.672,0.336; 0.104,1,1,0.5,0.672,0.336; 0.106,1,1,0.5,0.672,0.336; - 0.108,1,1,0.5,0.672,0.336; 0.11,1,1,0.5,0.672,0.336; 0.112,1,1,0.5, - 0.672,0.336; 0.114,1,1,0.5,0.672,0.336; 0.116,1,1,0.5,0.672,0.336; - 0.118,1,1,0.5,0.672,0.336; 0.12,1,1,0.5,0.672,0.336; 0.122,1,1,0.5, - 0.672,0.336; 0.124,1,1,0.5,0.672,0.336; 0.126,1,1,0.5,0.672,0.336; - 0.128,1,1,0.5,0.672,0.336; 0.13,1,1,0.5,0.672,0.336; 0.132,1,1,0.5, - 0.672,0.336; 0.134,1,1,0.5,0.672,0.336; 0.136,1,1,0.5,0.672,0.336; - 0.138,1,1,0.5,0.672,0.336; 0.14,1,1,0.5,0.672,0.336; 0.142,1,1,0.5, - 0.672,0.336; 0.144,1,1,0.5,0.672,0.336; 0.146,1,1,0.5,0.672,0.336; - 0.148,1,1,0.5,0.672,0.336; 0.15,1,1,0.5,0.672,0.336; 0.152,1,1,0.5, - 0.672,0.336; 0.154,1,1,0.5,0.672,0.336; 0.156,1,1,0.5,0.672,0.336; - 0.158,1,1,0.5,0.672,0.336; 0.16,1,1,0.5,0.672,0.336; 0.162,1,1,0.5, - 0.672,0.336; 0.164,1,1,0.5,0.672,0.336; 0.166,1,1,0.5,0.672,0.336; - 0.168,1,1,0.5,0.672,0.336; 0.17,1,1,0.5,0.672,0.336; 0.172,1,1,0.5, - 0.672,0.336; 0.174,1,1,0.5,0.672,0.336; 0.176,1,1,0.5,0.672,0.336; - 0.178,1,1,0.5,0.672,0.336; 0.18,1,1,0.5,0.672,0.336; 0.182,1,1,0.5, - 0.672,0.336; 0.184,1,1,0.5,0.672,0.336; 0.186,1,1,0.5,0.672,0.336; - 0.188,1,1,0.5,0.672,0.336; 0.19,1,1,0.5,0.672,0.336; 0.192,1,1,0.5, - 0.672,0.336; 0.194,1,1,0.5,0.672,0.336; 0.196,1,1,0.5,0.672,0.336; - 0.198,1,1,0.5,0.672,0.336; 0.2,1,1,0.5,0.672,0.336; 0.202,1,1,0.5,0.672, - 0.336; 0.204,1,1,0.5,0.672,0.336; 0.206,1,1,0.5,0.672,0.336; 0.208,1,1, - 0.5,0.672,0.336; 0.21,1,1,0.5,0.672,0.336; 0.212,1,1,0.5,0.672,0.336; - 0.214,1,1,0.5,0.672,0.336; 0.216,1,1,0.5,0.672,0.336; 0.218,1,1,0.5, - 0.672,0.336; 0.22,1,1,0.5,0.672,0.336; 0.222,1,1,0.5,0.672,0.336; 0.224, - 1,1,0.5,0.672,0.336; 0.226,1,1,0.5,0.672,0.336; 0.228,1,1,0.5,0.672, - 0.336; 0.23,1,1,0.5,0.672,0.336; 0.232,1,1,0.5,0.672,0.336; 0.234,1,1, - 0.5,0.672,0.336; 0.236,1,1,0.5,0.672,0.336; 0.238,1,1,0.5,0.672,0.336; - 0.24,1,1,0.5,0.672,0.336; 0.242,1,1,0.5,0.672,0.336; 0.244,1,1,0.5, - 0.672,0.336; 0.246,1,1,0.5,0.672,0.336; 0.248,1,1,0.5,0.672,0.336; 0.25, - 1,1,0.5,0.672,0.336; 0.252,1,1,0.5,0.672,0.336; 0.254,1,1,0.5,0.672, - 0.336; 0.256,1,1,0.5,0.672,0.336; 0.258,1,1,0.5,0.672,0.336; 0.26,1,1, - 0.5,0.672,0.336; 0.262,1,1,0.5,0.672,0.336; 0.264,1,1,0.5,0.672,0.336; - 0.266,1,1,0.5,0.672,0.336; 0.268,1,1,0.5,0.672,0.336; 0.27,1,1,0.5, - 0.672,0.336; 0.272,1,1,0.5,0.672,0.336; 0.274,1,1,0.5,0.672,0.336; - 0.276,1,1,0.5,0.672,0.336; 0.278,1,1,0.5,0.672,0.336; 0.28,1,1,0.5, - 0.672,0.336; 0.282,1,1,0.5,0.672,0.336; 0.284,1,1,0.5,0.672,0.336; - 0.286,1,1,0.5,0.672,0.336; 0.288,1,1,0.5,0.672,0.336; 0.29,1,1,0.5, - 0.672,0.336; 0.292,1,1,0.5,0.672,0.336; 0.294,1,1,0.5,0.672,0.336; - 0.296,1,1,0.5,0.672,0.336; 0.298,1,1,0.5,0.672,0.336; 0.3,1,1,0.5,0.672, - 0.336; 0.3,1,1,0.1,0.853,0.085; 0.3,1,1,0.1,0.853,0.085; 0.302,1,1,0.1, - 0.853,0.085; 0.304,1,1,0.1,0.853,0.085; 0.306,1,1,0.1,0.853,0.085; - 0.308,1,1,0.1,0.853,0.085; 0.31,1,1,0.1,0.853,0.085; 0.312,1,1,0.1, - 0.853,0.085; 0.314,1,1,0.1,0.853,0.085; 0.316,1,1,0.1,0.853,0.085; - 0.318,1,1,0.1,0.853,0.085; 0.32,1,1,0.1,0.853,0.085; 0.322,1,1,0.1, - 0.853,0.085; 0.324,1,1,0.1,0.853,0.085; 0.326,1,1,0.1,0.853,0.085; - 0.328,1,1,0.1,0.853,0.085; 0.33,1,1,0.1,0.853,0.085; 0.332,1,1,0.1, - 0.853,0.085; 0.334,1,1,0.1,0.853,0.085; 0.336,1,1,0.1,0.853,0.085; - 0.338,1,1,0.1,0.853,0.085; 0.34,1,1,0.1,0.853,0.085; 0.342,1,1,0.1, - 0.853,0.085; 0.344,1,1,0.1,0.853,0.085; 0.346,1,1,0.1,0.853,0.085; - 0.348,1,1,0.1,0.853,0.085; 0.35,1,1,0.1,0.853,0.085; 0.352,1,1,0.1, - 0.853,0.085; 0.354,1,1,0.1,0.853,0.085; 0.356,1,1,0.1,0.853,0.085; - 0.358,1,1,0.1,0.853,0.085; 0.36,1,1,0.1,0.853,0.085; 0.362,1,1,0.1, - 0.853,0.085; 0.364,1,1,0.1,0.853,0.085; 0.366,1,1,0.1,0.853,0.085; - 0.368,1,1,0.1,0.853,0.085; 0.37,1,1,0.1,0.853,0.085; 0.372,1,1,0.1, - 0.853,0.085; 0.374,1,1,0.1,0.853,0.085; 0.376,1,1,0.1,0.853,0.085; - 0.378,1,1,0.1,0.853,0.085; 0.38,1,1,0.1,0.853,0.085; 0.382,1,1,0.1, - 0.853,0.085; 0.384,1,1,0.1,0.853,0.085; 0.386,1,1,0.1,0.853,0.085; - 0.388,1,1,0.1,0.853,0.085; 0.39,1,1,0.1,0.853,0.085; 0.392,1,1,0.1, - 0.853,0.085; 0.394,1,1,0.1,0.853,0.085; 0.396,1,1,0.1,0.853,0.085; - 0.398,1,1,0.1,0.853,0.085; 0.4,1,1,0.1,0.853,0.085; 0.402,1,1,0.1,0.853, - 0.085; 0.404,1,1,0.1,0.853,0.085; 0.406,1,1,0.1,0.853,0.085; 0.408,1,1, - 0.1,0.853,0.085; 0.41,1,1,0.1,0.853,0.085; 0.412,1,1,0.1,0.853,0.085; - 0.414,1,1,0.1,0.853,0.085; 0.416,1,1,0.1,0.853,0.085; 0.418,1,1,0.1, - 0.853,0.085; 0.42,1,1,0.1,0.853,0.085; 0.422,1,1,0.1,0.853,0.085; 0.424, - 1,1,0.1,0.853,0.085; 0.426,1,1,0.1,0.853,0.085; 0.428,1,1,0.1,0.853, - 0.085; 0.43,1,1,0.1,0.853,0.085; 0.432,1,1,0.1,0.853,0.085; 0.434,1,1, - 0.1,0.853,0.085; 0.436,1,1,0.1,0.853,0.085; 0.438,1,1,0.1,0.853,0.085; - 0.44,1,1,0.1,0.853,0.085; 0.442,1,1,0.1,0.853,0.085; 0.444,1,1,0.1, - 0.853,0.085; 0.446,1,1,0.1,0.853,0.085; 0.448,1,1,0.1,0.853,0.085; 0.45, - 1,1,0.1,0.853,0.085; 0.452,1,1,0.1,0.853,0.085; 0.454,1,1,0.1,0.853, - 0.085; 0.456,1,1,0.1,0.853,0.085; 0.458,1,1,0.1,0.853,0.085; 0.46,1,1, - 0.1,0.853,0.085; 0.462,1,1,0.1,0.853,0.085; 0.464,1,1,0.1,0.853,0.085; - 0.466,1,1,0.1,0.853,0.085; 0.468,1,1,0.1,0.853,0.085; 0.47,1,1,0.1, - 0.853,0.085; 0.472,1,1,0.1,0.853,0.085; 0.474,1,1,0.1,0.853,0.085; - 0.476,1,1,0.1,0.853,0.085; 0.478,1,1,0.1,0.853,0.085; 0.48,1,1,0.1, - 0.853,0.085; 0.482,1,1,0.1,0.853,0.085; 0.484,1,1,0.1,0.853,0.085; - 0.486,1,1,0.1,0.853,0.085; 0.488,1,1,0.1,0.853,0.085; 0.49,1,1,0.1, - 0.853,0.085; 0.492,1,1,0.1,0.853,0.085; 0.494,1,1,0.1,0.853,0.085; - 0.496,1,1,0.1,0.853,0.085; 0.498,1,1,0.1,0.853,0.085; 0.5,1,1,0.1,0.853, - 0.085; 0.502,1,1,0.1,0.853,0.085; 0.504,1,1,0.1,0.853,0.085; 0.506,1,1, - 0.1,0.853,0.085; 0.508,1,1,0.1,0.853,0.085; 0.51,1,1,0.1,0.853,0.085; - 0.512,1,1,0.1,0.853,0.085; 0.514,1,1,0.1,0.853,0.085; 0.516,1,1,0.1, - 0.853,0.085; 0.518,1,1,0.1,0.853,0.085; 0.52,1,1,0.1,0.853,0.085; 0.522, - 1,1,0.1,0.853,0.085; 0.524,1,1,0.1,0.853,0.085; 0.526,1,1,0.1,0.853, - 0.085; 0.528,1,1,0.1,0.853,0.085; 0.53,1,1,0.1,0.853,0.085; 0.532,1,1, - 0.1,0.853,0.085; 0.534,1,1,0.1,0.853,0.085; 0.536,1,1,0.1,0.853,0.085; - 0.538,1,1,0.1,0.853,0.085; 0.54,1,1,0.1,0.853,0.085; 0.542,1,1,0.1, - 0.853,0.085; 0.544,1,1,0.1,0.853,0.085; 0.546,1,1,0.1,0.853,0.085; - 0.548,1,1,0.1,0.853,0.085; 0.55,1,1,0.1,0.853,0.085; 0.552,1,1,0.1, - 0.853,0.085; 0.554,1,1,0.1,0.853,0.085; 0.556,1,1,0.1,0.853,0.085; - 0.558,1,1,0.1,0.853,0.085; 0.56,1,1,0.1,0.853,0.085; 0.562,1,1,0.1, - 0.853,0.085; 0.564,1,1,0.1,0.853,0.085; 0.566,1,1,0.1,0.853,0.085; - 0.568,1,1,0.1,0.853,0.085; 0.57,1,1,0.1,0.853,0.085; 0.572,1,1,0.1, - 0.853,0.085; 0.574,1,1,0.1,0.853,0.085; 0.576,1,1,0.1,0.853,0.085; - 0.578,1,1,0.1,0.853,0.085; 0.58,1,1,0.1,0.853,0.085; 0.582,1,1,0.1, - 0.853,0.085; 0.584,1,1,0.1,0.853,0.085; 0.586,1,1,0.1,0.853,0.085; - 0.588,1,1,0.1,0.853,0.085; 0.59,1,1,0.1,0.853,0.085; 0.592,1,1,0.1, - 0.853,0.085; 0.594,1,1,0.1,0.853,0.085; 0.596,1,1,0.1,0.853,0.085; - 0.598,1,1,0.1,0.853,0.085; 0.6,1,1,0.1,0.853,0.085; 0.602,1,1,0.1,0.853, - 0.085; 0.604,1,1,0.1,0.853,0.085; 0.606,1,1,0.1,0.853,0.085; 0.608,1,1, - 0.1,0.853,0.085; 0.61,1,1,0.1,0.853,0.085; 0.612,1,1,0.1,0.853,0.085; - 0.614,1,1,0.1,0.853,0.085; 0.616,1,1,0.1,0.853,0.085; 0.618,1,1,0.1, - 0.853,0.085; 0.62,1,1,0.1,0.853,0.085; 0.622,1,1,0.1,0.853,0.085; 0.624, - 1,1,0.1,0.853,0.085; 0.626,1,1,0.1,0.853,0.085; 0.628,1,1,0.1,0.853, - 0.085; 0.63,1,1,0.1,0.853,0.085; 0.632,1,1,0.1,0.853,0.085; 0.634,1,1, - 0.1,0.853,0.085; 0.636,1,1,0.1,0.853,0.085; 0.638,1,1,0.1,0.853,0.085; - 0.64,1,1,0.1,0.853,0.085; 0.642,1,1,0.1,0.853,0.085; 0.644,1,1,0.1, - 0.853,0.085; 0.646,1,1,0.1,0.853,0.085; 0.648,1,1,0.1,0.853,0.085; 0.65, - 1,1,0.1,0.853,0.085; 0.652,1,1,0.1,0.853,0.085; 0.654,1,1,0.1,0.853, - 0.085; 0.656,1,1,0.1,0.853,0.085; 0.658,1,1,0.1,0.853,0.085; 0.66,1,1, - 0.1,0.853,0.085; 0.662,1,1,0.1,0.853,0.085; 0.664,1,1,0.1,0.853,0.085; - 0.666,1,1,0.1,0.853,0.085; 0.668,1,1,0.1,0.853,0.085; 0.67,1,1,0.1, - 0.853,0.085; 0.672,1,1,0.1,0.853,0.085; 0.674,1,1,0.1,0.853,0.085; - 0.676,1,1,0.1,0.853,0.085; 0.678,1,1,0.1,0.853,0.085; 0.68,1,1,0.1, - 0.853,0.085; 0.682,1,1,0.1,0.853,0.085; 0.684,1,1,0.1,0.853,0.085; - 0.686,1,1,0.1,0.853,0.085; 0.688,1,1,0.1,0.853,0.085; 0.69,1,1,0.1, - 0.853,0.085; 0.692,1,1,0.1,0.853,0.085; 0.694,1,1,0.1,0.853,0.085; - 0.696,1,1,0.1,0.853,0.085; 0.698,1,1,0.1,0.853,0.085; 0.7,1,1,0.1,0.853, - 0.085; 0.7,1,1,0.5,0.672,0.336; 0.7,1,1,0.5,0.672,0.336; 0.702,1,1,0.5, - 0.672,0.336; 0.704,1,1,0.5,0.672,0.336; 0.706,1,1,0.5,0.672,0.336; - 0.708,1,1,0.5,0.672,0.336; 0.71,1,1,0.5,0.672,0.336; 0.712,1,1,0.5, - 0.672,0.336; 0.714,1,1,0.5,0.672,0.336; 0.716,1,1,0.5,0.672,0.336; - 0.718,1,1,0.5,0.672,0.336; 0.72,1,1,0.5,0.672,0.336; 0.722,1,1,0.5, - 0.672,0.336; 0.724,1,1,0.5,0.672,0.336; 0.726,1,1,0.5,0.672,0.336; - 0.728,1,1,0.5,0.672,0.336; 0.73,1,1,0.5,0.672,0.336; 0.732,1,1,0.5, - 0.672,0.336; 0.734,1,1,0.5,0.672,0.336; 0.736,1,1,0.5,0.672,0.336; - 0.738,1,1,0.5,0.672,0.336; 0.74,1,1,0.5,0.672,0.336; 0.742,1,1,0.5, - 0.672,0.336; 0.744,1,1,0.5,0.672,0.336; 0.746,1,1,0.5,0.672,0.336; - 0.748,1,1,0.5,0.672,0.336; 0.75,1,1,0.5,0.672,0.336; 0.752,1,1,0.5, - 0.672,0.336; 0.754,1,1,0.5,0.672,0.336; 0.756,1,1,0.5,0.672,0.336; - 0.758,1,1,0.5,0.672,0.336; 0.76,1,1,0.5,0.672,0.336; 0.762,1,1,0.5, - 0.672,0.336; 0.764,1,1,0.5,0.672,0.336; 0.766,1,1,0.5,0.672,0.336; - 0.768,1,1,0.5,0.672,0.336; 0.77,1,1,0.5,0.672,0.336; 0.772,1,1,0.5, - 0.672,0.336; 0.774,1,1,0.5,0.672,0.336; 0.776,1,1,0.5,0.672,0.336; - 0.778,1,1,0.5,0.672,0.336; 0.78,1,1,0.5,0.672,0.336; 0.782,1,1,0.5, - 0.672,0.336; 0.784,1,1,0.5,0.672,0.336; 0.786,1,1,0.5,0.672,0.336; - 0.788,1,1,0.5,0.672,0.336; 0.79,1,1,0.5,0.672,0.336; 0.792,1,1,0.5, - 0.672,0.336; 0.794,1,1,0.5,0.672,0.336; 0.796,1,1,0.5,0.672,0.336; - 0.798,1,1,0.5,0.672,0.336; 0.8,1,1,0.5,0.672,0.336; 0.802,1,1,0.5,0.672, - 0.336; 0.804,1,1,0.5,0.672,0.336; 0.806,1,1,0.5,0.672,0.336; 0.808,1,1, - 0.5,0.672,0.336; 0.81,1,1,0.5,0.672,0.336; 0.812,1,1,0.5,0.672,0.336; - 0.814,1,1,0.5,0.672,0.336; 0.816,1,1,0.5,0.672,0.336; 0.818,1,1,0.5, - 0.672,0.336; 0.82,1,1,0.5,0.672,0.336; 0.822,1,1,0.5,0.672,0.336; 0.824, - 1,1,0.5,0.672,0.336; 0.826,1,1,0.5,0.672,0.336; 0.828,1,1,0.5,0.672, - 0.336; 0.83,1,1,0.5,0.672,0.336; 0.83,1,1,0.8,0.575,0.46; 0.83,1,1,0.8, - 0.575,0.46; 0.832,1,1,0.8,0.575,0.46; 0.834,1,1,0.8,0.575,0.46; 0.836,1, - 1,0.8,0.575,0.46; 0.838,1,1,0.8,0.575,0.46; 0.84,1,1,0.8,0.575,0.46; - 0.842,1,1,0.8,0.575,0.46; 0.844,1,1,0.8,0.575,0.46; 0.846,1,1,0.8,0.575, - 0.46; 0.848,1,1,0.8,0.575,0.46; 0.85,1,1,0.8,0.575,0.46; 0.85,2,1,0.5, - 1.344,0.672; 0.85,2,1,0.5,1.344,0.672; 0.852,2,1,0.5,1.344,0.672; 0.854, - 2,1,0.5,1.344,0.672; 0.856,2,1,0.5,1.344,0.672; 0.858,2,1,0.5,1.344, - 0.672; 0.86,2,1,0.5,1.344,0.672; 0.862,2,1,0.5,1.344,0.672; 0.864,2,1, - 0.5,1.344,0.672; 0.866,2,1,0.5,1.344,0.672; 0.868,2,1,0.5,1.344,0.672; - 0.87,2,1,0.5,1.344,0.672; 0.872,2,1,0.5,1.344,0.672; 0.874,2,1,0.5, - 1.344,0.672; 0.876,2,1,0.5,1.344,0.672; 0.878,2,1,0.5,1.344,0.672; 0.88, - 2,1,0.5,1.344,0.672; 0.882,2,1,0.5,1.344,0.672; 0.884,2,1,0.5,1.344, - 0.672; 0.886,2,1,0.5,1.344,0.672; 0.888,2,1,0.5,1.344,0.672; 0.89,2,1, - 0.5,1.344,0.672; 0.892,2,1,0.5,1.344,0.672; 0.894,2,1,0.5,1.344,0.672; - 0.896,2,1,0.5,1.344,0.672; 0.898,2,1,0.5,1.344,0.672; 0.9,2,1,0.5,1.344, - 0.672; 0.902,2,1,0.5,1.344,0.672; 0.904,2,1,0.5,1.344,0.672; 0.906,2,1, - 0.5,1.344,0.672; 0.908,2,1,0.5,1.344,0.672; 0.91,2,1,0.5,1.344,0.672; - 0.912,2,1,0.5,1.344,0.672; 0.914,2,1,0.5,1.344,0.672; 0.916,2,1,0.5, - 1.344,0.672; 0.918,2,1,0.5,1.344,0.672; 0.92,2,1,0.5,1.344,0.672; 0.922, - 2,1,0.5,1.344,0.672; 0.924,2,1,0.5,1.344,0.672; 0.926,2,1,0.5,1.344, - 0.672; 0.928,2,1,0.5,1.344,0.672; 0.93,2,1,0.5,1.344,0.672; 0.932,2,1, - 0.5,1.344,0.672; 0.934,2,1,0.5,1.344,0.672; 0.936,2,1,0.5,1.344,0.672; - 0.938,2,1,0.5,1.344,0.672; 0.94,2,1,0.5,1.344,0.672; 0.942,2,1,0.5, - 1.344,0.672; 0.944,2,1,0.5,1.344,0.672; 0.946,2,1,0.5,1.344,0.672; - 0.948,2,1,0.5,1.344,0.672; 0.95,2,1,0.5,1.344,0.672; 0.952,2,1,0.5, - 1.344,0.672; 0.954,2,1,0.5,1.344,0.672; 0.956,2,1,0.5,1.344,0.672; - 0.958,2,1,0.5,1.344,0.672; 0.96,2,1,0.5,1.344,0.672; 0.962,2,1,0.5, - 1.344,0.672; 0.964,2,1,0.5,1.344,0.672; 0.966,2,1,0.5,1.344,0.672; - 0.968,2,1,0.5,1.344,0.672; 0.97,2,1,0.5,1.344,0.672; 0.972,2,1,0.5, - 1.344,0.672; 0.974,2,1,0.5,1.344,0.672; 0.976,2,1,0.5,1.344,0.672; - 0.978,2,1,0.5,1.344,0.672; 0.98,2,1,0.5,1.344,0.672; 0.982,2,1,0.5, - 1.344,0.672; 0.984,2,1,0.5,1.344,0.672; 0.986,2,1,0.5,1.344,0.672; - 0.988,2,1,0.5,1.344,0.672; 0.99,2,1,0.5,1.344,0.672; 0.992,2,1,0.5, - 1.344,0.672; 0.994,2,1,0.5,1.344,0.672; 0.996,2,1,0.5,1.344,0.672; - 0.998,2,1,0.5,1.344,0.672; 1,2,1,0.5,1.344,0.672], extrapolation= + Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable RefDat( + table=[0,1,1,0.3,0.754,0.226; + 0.098,1,1,0.3,0.754,0.226; 0.1,1,1,0.3,0.754,0.226; + 0.1,1,1,0.5,0.672,0.336; 0.298,1,1,0.5,0.672,0.336; + 0.3,1,1,0.5,0.672,0.336; 0.3,1,1,0.1,0.853,0.085; + 0.698,1,1,0.1,0.853,0.085; 0.7,1,1,0.1,0.853, + 0.085; 0.7,1,1,0.5,0.672,0.336; 0.828,1,1,0.5,0.672, + 0.336; 0.83,1,1,0.5,0.672,0.336; 0.83,1,1,0.8,0.575,0.46; + 0.848,1,1,0.8,0.575,0.46;0.85,1,1,0.8,0.575,0.46; + 0.85,2,1,0.5,1.344,0.672; 1,2,1,0.5,1.344,0.672], extrapolation= Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) "Data for validating the timeConstantDelay block" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); From e5a2df13d1a001f3df2531331c8016d6240f5092 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Thu, 6 Apr 2023 22:03:23 -0400 Subject: [PATCH 060/214] update the reference data --- ...ithAutotuning_AutoTuner_AMIGO_Validation_PI.txt | 10 +++++----- ...thAutotuning_AutoTuner_AMIGO_Validation_PID.txt | 14 +++++++------- ...utoTuner_AMIGO_Validation_PIDDerivativeTime.txt | 8 ++++---- ...totuning_AutoTuner_AMIGO_Validation_PIDGain.txt | 8 ++++---- ..._AutoTuner_AMIGO_Validation_PIDIntegralTime.txt | 8 ++++---- ...utotuning_AutoTuner_AMIGO_Validation_PIGain.txt | 8 ++++---- ...g_AutoTuner_AMIGO_Validation_PIIntegralTime.txt | 8 ++++---- ...DWithAutotuning_Relay_Validation_Controller.txt | 2 +- ...Autotuning_Relay_Validation_HalfPeriodRatio.txt | 2 +- ...tuning_Relay_Validation_NormalizedTimeDelay.txt | 2 +- ...WithAutotuning_Relay_Validation_OnOffPeriod.txt | 2 +- ...Autotuning_Relay_Validation_ResponseProcess.txt | 2 +- ...rTimedelayed_Validation_ControlProcessModel.txt | 2 +- ...ation_FirstOrderTimedelayed_Validation_Gain.txt | 2 +- ...derTimedelayed_Validation_TimeConstantDelay.txt | 2 +- ...utotuning_Validation_PIDWithFirstOrderAMIGO.txt | 3 +-- ...Autotuning_Validation_PIWithFirstOrderAMIGO.txt | 3 +-- 17 files changed, 42 insertions(+), 44 deletions(-) diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PI.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PI.txt index f3184853123..83e69554d6f 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PI.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PI.txt @@ -1,4 +1,4 @@ -last-generated=2022-10-06 +last-generated=2023-04-06 statistics-simulation= { "linear": " ", @@ -6,7 +6,7 @@ statistics-simulation= "numerical Jacobians": "0" } time=[0e+00, 1e+00] -PI.k=[3.427083194255829e-01, 3.393151758930222e-01, 3.359885511485939e-01, 3.327265378434656e-01, 3.295272286288169e-01, 3.263888958752252e-01, 3.233097487268034e-01, 3.202881516426574e-01, 3.173225215822536e-01, 3.144113139610314e-01, 3.115530318686219e-01, 3.087462482250208e-01, 3.059895921241976e-01, 3.032817224562803e-01, 3.006213309847676e-01, 2.980072522563426e-01, 2.954382286165356e-01, 2.929131097666854e-01, 2.904307869882616e-01, 2.87990181737877e-01, 2.855902921363173e-01, 2.832300341023077e-01, 2.809084649571227e-01, 2.786246552993449e-01, 2.763776760516168e-01, 2.741666734218597e-01, 2.719907430469058e-01, 2.698490953450763e-01, 2.67740875873801e-01, 2.656653794647196e-01, 2.636218108910805e-01, 2.616094060261872e-01, 2.596275188422696e-01, 2.576754431050848e-01, 2.557524751404699e-01, 2.538580280928464e-01, 2.519914251424269e-01, 2.501520826169469e-01, 2.483393685535971e-01, 2.465527465074837e-01, 2.447916732685427e-01, 2.430555512818382e-01, 2.413438970821584e-01, 2.396561820236085e-01, 2.379918986367867e-01, 2.363505780163519e-01, 2.347317359033287e-01, 2.331349250702803e-01, 2.315596762914645e-01, 2.300055944167478e-01, 2.284722179174423e-01, 2.269591517718605e-01, 2.254660085373425e-01, 2.239923709798829e-01, 2.225378800383838e-01, 2.211021509612482e-01, 2.196848248740505e-01, 2.182855590551519e-01, 2.169040107715149e-01, 2.155398223916494e-01, 2.141927083714356e-01, 2.12862315759629e-01, 2.115483591783919e-01, 2.102505108050202e-01, 2.089684875158524e-01, 2.077020210844805e-01, 2.064508101825049e-01, 2.052145781488074e-01, 2.039930536060073e-01, 2.027859981360627e-01, 2.015931286193312e-01, 2.004142215317469e-01, 1.992490343561543e-01, 1.980973069340439e-01, 1.969588117835739e-01, 1.958333402872086e-01, 1.947206391306787e-01, 1.936205294924474e-01, 1.925327729528697e-01, 1.9145717086614e-01, 1.903935243586566e-01, 1.893416200018209e-01, 1.883012789850742e-01, 1.872723075894303e-01, 1.862545269985985e-01, 1.852477528329152e-01, 1.842517874998656e-01, 1.832664914304534e-01, 1.822916709115014e-01, 1.81327162029384e-01, 1.803728008678819e-01, 1.794284471748412e-01, 1.784939194206437e-01, 1.775690923516219e-01, 1.766537871545593e-01, 1.757478548194911e-01, 1.748511910338886e-01, 1.739636252190207e-01, 1.730850216060402e-01, 1.722152395072734e-01, 1.713541597127914e-01] -RefDat.y[4]=[3.429999947547913e-01, 3.389999866485596e-01, 3.359999952465325e-01, 3.33000003956253e-01, 3.300000126659795e-01, 3.260000053793143e-01, 3.230000138282776e-01, 3.19999992996457e-01, 3.170000016689301e-01, 3.140000122785302e-01, 3.120000064373016e-01, 3.089999851584479e-01, 3.059999929368696e-01, 3.030000030994415e-01, 3.009999990463257e-01, 2.980000108480009e-01, 2.949999868869781e-01, 2.930000126361847e-01, 2.899999952316817e-01, 2.879999876022339e-01, 2.860000133514404e-01, 2.829999923706055e-01, 2.809999877214521e-01, 2.790000140666962e-01, 2.759999930858612e-01, 2.739999890327454e-01, 2.720000147819519e-01, 2.700000107288361e-01, 2.680000066757202e-01, 2.659999984502171e-01, 2.639999985694885e-01, 2.619999945163727e-01, 2.599999868870314e-01, 2.57999986410141e-01, 2.560000121593475e-01, 2.540000051259551e-01, 2.520000040531158e-01, 2.500000023841503e-01, 2.479999959468842e-01, 2.469999867678754e-01, 2.450000047683716e-01, 2.430000007152557e-01, 2.409999966621399e-01, 2.39999994635582e-01, 2.380000054836273e-01, 2.360000014305115e-01, 2.349999994039536e-01, 2.329999953508377e-01, 2.319999879599417e-01, 2.300000041723251e-01, 2.280000001192093e-01, 2.269999980926514e-01, 2.249999940395355e-01, 2.240000069141388e-01, 2.230000048875809e-01, 2.21000000834465e-01, 2.199999988079071e-01, 2.179999947547913e-01, 2.169999927282333e-01, 2.159999924900102e-01, 2.140000015497208e-01, 2.129999995231628e-01, 2.119999974966049e-01, 2.099999934434891e-01, 2.090000063180923e-01, 2.079999923707831e-01, 2.06000013351245e-01, 2.049999982118607e-01, 2.039999961853027e-01, 2.029999941587448e-01, 2.020000010729724e-01, 2.000000029802322e-01, 1.990000009536743e-01, 1.979999989271164e-01, 1.969999969005585e-01, 1.959999948740005e-01, 1.949999880792131e-01, 1.939999961854448e-01, 1.929999893905864e-01, 1.910000103710483e-01, 1.900000035761898e-01, 1.889999967813669e-01, 1.879999935626984e-01, 1.870000064373016e-01, 1.860000044107437e-01, 1.850000023841858e-01, 1.840000003576279e-01, 1.829999983310699e-01, 1.81999996304512e-01, 1.809999942779541e-01, 1.800000071525574e-01, 1.790000182388259e-01, 1.780000114439674e-01, 1.780000030994415e-01, 1.76999999880773e-01, 1.759999990463257e-01, 1.749999970197678e-01, 1.739999949932098e-01, 1.729999929666519e-01, 1.720000058412552e-01, 1.710000038146973e-01] -PI.Ti=[4.688059687614441e-01, 4.734940231973803e-01, 4.781820776333232e-01, 4.828701618715748e-01, 4.875582163075113e-01, 4.922462698039159e-01, 4.969343251793837e-01, 5.016223786758081e-01, 5.063104638535503e-01, 5.109984856685409e-01, 5.156865708463891e-01, 5.203746560242019e-01, 5.250626815973608e-01, 5.297507667750048e-01, 5.344387885901731e-01, 5.391268700097019e-01, 5.438148993411182e-01, 5.485029807607537e-01, 5.531910621802825e-01, 5.578790915117342e-01, 5.625671729313341e-01, 5.672552022626616e-01, 5.719432836823503e-01, 5.766313651019146e-01, 5.813193944332776e-01, 5.860074758529663e-01, 5.906955051842049e-01, 5.953835790873793e-01, 6.000716680235468e-01, 6.047596973548209e-01, 6.094477712579598e-01, 6.141358005894826e-01, 6.18823889525437e-01, 6.235119634281495e-01, 6.281999927600631e-01, 6.328880816958754e-01, 6.375760959944761e-01, 6.422641849306436e-01, 6.469522142620243e-01, 6.516403031979077e-01, 6.563283771012242e-01, 6.610164064326404e-01, 6.657044953685237e-01, 6.703925096671599e-01, 6.750805986032564e-01, 6.797686875387845e-01, 6.844567018377404e-01, 6.891447907738725e-01, 6.93832820105111e-01, 6.98520894008321e-01, 7.032089829444885e-01, 7.078970122756555e-01, 7.125851012114671e-01, 7.172731305426341e-01, 7.219611894134756e-01, 7.266492187452821e-01, 7.313373076809869e-01, 7.360253966169055e-01, 7.407134259480723e-01, 7.454015148838841e-01, 7.500895141507203e-01, 7.547776030861058e-01, 7.594656920222017e-01, 7.641537213535107e-01, 7.688418102893224e-01, 7.735298396204894e-01, 7.782178984911888e-01, 7.829059874272848e-01, 7.875940167587359e-01, 7.922821056947965e-01, 7.969701350259276e-01, 8.016582239617394e-01, 8.063462828323678e-01, 8.110343121638189e-01, 8.157224010999148e-01, 8.20410430431366e-01, 8.250985193671777e-01, 8.297865486983446e-01, 8.344746376341563e-01, 8.391626965049979e-01, 8.43850725836449e-01, 8.485388147725091e-01, 8.532268441037829e-01, 8.579149330395945e-01, 8.626030219754063e-01, 8.672910212415321e-01, 8.71979110177628e-01, 8.766671395092213e-01, 8.813552284450329e-01, 8.860433173808446e-01, 8.907313467120116e-01, 8.95419405582711e-01, 9.001074349146596e-01, 9.047955238502581e-01, 9.094836127863187e-01, 9.141716421174498e-01, 9.188597310532616e-01, 9.235477303192452e-01, 9.282358192553412e-01, 9.329238485870764e-01, 9.376119375228882e-01] -RefDat.y[5]=[4.690000116825104e-01, 4.729999900981803e-01, 4.779999854415692e-01, 4.830000105872703e-01, 4.880000054836273e-01, 4.920000132173237e-01, 4.970000094920309e-01, 5.019999741017835e-01, 5.059999832511348e-01, 5.109999758005409e-01, 5.159999720752351e-01, 5.199999812245503e-01, 5.249999774993065e-01, 5.299999737740628e-01, 5.339999794960022e-01, 5.389999717474427e-01, 5.440000313520165e-01, 5.490000239014226e-01, 5.529999697208937e-01, 5.580000293254674e-01, 5.63000021874838e-01, 5.669999751450097e-01, 5.720000272989184e-01, 5.770000198482534e-01, 5.809999731184251e-01, 5.860000252723694e-01, 5.910000252722983e-01, 5.950000232455717e-01, 6.000000232457848e-01, 6.050000232457493e-01, 6.09000027179718e-01, 6.140000212192003e-01, 6.190000212192003e-01, 6.240000063181901e-01, 6.280000191926157e-01, 6.330000191926513e-01, 6.380000042916409e-01, 6.420000171660312e-01, 6.470000171661022e-01, 6.520000171660312e-01, 6.560000151394466e-01, 6.610000151395531e-01, 6.66000015139482e-01, 6.700000131130751e-01, 6.750000131130041e-01, 6.80000013112933e-01, 6.840000152587891e-01, 6.89000011086455e-01, 6.94000011086384e-01, 6.989999961853738e-01, 7.03000009059906e-01, 7.080000090597639e-01, 7.130000090596218e-01, 7.17000021934083e-01, 7.219999921325067e-01, 7.269999921323645e-01, 7.310000050067902e-01, 7.360000050066836e-01, 7.410000050065415e-01, 7.450000178810027e-01, 7.499999880794262e-01, 7.549999880792841e-01, 7.590000033378601e-01, 7.640000009536033e-01, 7.690000009534612e-01, 7.739999890327454e-01, 7.77999984026346e-01, 7.829999840262039e-01, 7.879999840260618e-01, 7.919999969005584e-01, 7.969999969003808e-01, 8.019999969002387e-01, 8.059999799732657e-01, 8.109999799731236e-01, 8.159999799729815e-01, 8.199999928474426e-01, 8.249999928473005e-01, 8.299999928471584e-01, 8.340000057216196e-01, 8.389999759200433e-01, 8.439999759199012e-01, 8.489999759197235e-01, 8.529999887942202e-01, 8.579999887945754e-01, 8.629999887947175e-01, 8.669999718669629e-01, 8.719999718668208e-01, 8.769999718666787e-01, 8.809999847412819e-01, 8.859999847414241e-01, 8.909999847415662e-01, 8.949999678138826e-01, 8.999999678137405e-01, 9.049999678135984e-01, 9.089999806881661e-01, 9.139999806882727e-01, 9.190000402924201e-01, 9.240000104899911e-01, 9.279999637606602e-01, 9.330000233648786e-01, 9.380000233650208e-01] +PI.k=[3.427083194255829e-01, 3.393151759351885e-01, 3.359885512312877e-01, 3.327265379651081e-01, 3.295272287879297e-01, 3.263888957436638e-01, 3.233097489565795e-01, 3.202881515919868e-01, 3.173225218774036e-01, 3.144113133751546e-01, 3.115530316289475e-01, 3.087462483181639e-01, 3.059895925359474e-01, 3.032817231754192e-01, 3.006213308955236e-01, 2.980072513794458e-01, 2.954382291283917e-01, 2.929131095125426e-01, 2.904307859889563e-01, 2.87990182062168e-01, 2.855902917337069e-01, 2.83230034964896e-01, 2.80908465111399e-01, 2.786246547629217e-01, 2.763776767237978e-01, 2.741666734218597e-01, 2.719907442042355e-01, 2.698490940513938e-01, 2.677408757323145e-01, 2.656653804310025e-01, 2.636218095193805e-01, 2.616094057560394e-01, 2.596275196334218e-01, 2.576754416636275e-01, 2.557524747532071e-01, 2.538580287231854e-01, 2.519914236387794e-01, 2.501520821230496e-01, 2.483393690362323e-01, 2.465527479346059e-01, 2.447916726773723e-01, 2.430555516286001e-01, 2.413438983357397e-01, 2.39656181343727e-01, 2.379918988584401e-01, 2.363505791094309e-01, 2.347317351424633e-01, 2.331349251766394e-01, 2.315596772358271e-01, 2.300055935819328e-01, 2.284722179174423e-01, 2.269591525783839e-01, 2.254660101292155e-01, 2.239923733365712e-01, 2.225378782802999e-01, 2.211021499971469e-01, 2.196848246836937e-01, 2.182855596147481e-01, 2.169040120607019e-01, 2.155398243923085e-01, 2.141927065620691e-01, 2.128623146874381e-01, 2.115483588254002e-01, 2.102505111511907e-01, 2.089684885416811e-01, 2.077020227735896e-01, 2.064508083334731e-01, 2.052145769863259e-01, 2.039930531137161e-01, 2.027859982970915e-01, 2.015931294150367e-01, 2.004142229472307e-01, 1.992490324775822e-01, 1.980973056962994e-01, 1.969588111717359e-01, 1.958333402872086e-01, 1.947206397246824e-01, 1.936205306669547e-01, 1.9253277469502e-01, 1.914571695654425e-01, 1.903935236440403e-01, 1.893416198604744e-01, 1.883012794016939e-01, 1.872723085509738e-01, 1.862545284931821e-01, 1.852477514800648e-01, 1.842517866968949e-01, 1.832664911656741e-01, 1.822916711718399e-01, 1.813271628020862e-01, 1.803728021423963e-01, 1.794284457789326e-01, 1.784939185415396e-01, 1.775690919787531e-01, 1.766537872768098e-01, 1.75747855424508e-01, 1.748511921117281e-01, 1.739636237876566e-01, 1.730850206614606e-01, 1.722152390396732e-01, 1.713541597127914e-01] +RefDat.y[4]=[3.429999947547913e-01, 3.398999869130577e-01, 3.368000088736398e-01, 3.337000010319031e-01, 3.30599993190166e-01, 3.27499985925856e-01, 3.244000073090146e-01, 3.213000000447048e-01, 3.181999916255684e-01, 3.151000153183516e-01, 3.120000068992423e-01, 3.093999920725853e-01, 3.068000071227286e-01, 3.041999923706296e-01, 3.016000093579262e-01, 2.989999965429004e-01, 2.964000096559173e-01, 2.937999968409448e-01, 2.912000138282413e-01, 2.885999971389892e-01, 2.860000141262857e-01, 2.838000044703464e-01, 2.815999982118603e-01, 2.793999919533742e-01, 2.772000122189506e-01, 2.750000059604645e-01, 2.727999964237185e-01, 2.705999934434923e-01, 2.684000137090509e-01, 2.662000041723226e-01, 2.640000011920964e-01, 2.621000115632758e-01, 2.601999924898905e-01, 2.583000088809533e-01, 2.563999898076212e-01, 2.54500000536416e-01, 2.526000169275678e-01, 2.506999978542534e-01, 2.487999936819226e-01, 2.469000044106819e-01, 2.450000059008412e-01, 2.433000051856057e-01, 2.416000045895635e-01, 2.398999941587416e-01, 2.381999935626994e-01, 2.364999929666572e-01, 2.347999974369965e-01, 2.330999968409544e-01, 2.313999962449122e-01, 2.297000007152515e-01, 2.280000001192093e-01, 2.266000048875667e-01, 2.251999947549049e-01, 2.237999995231202e-01, 2.223999977350555e-01, 2.21000002503324e-01, 2.196000072717624e-01, 2.181999971390197e-01, 2.168000019073238e-01, 2.153999917747153e-01, 2.140000048874388e-01, 2.127999978541902e-01, 2.116000061988688e-01, 2.103999996423863e-01, 2.091999930859038e-01, 2.080000014305825e-01, 2.068000020264798e-01, 2.055999954701216e-01, 2.044000038146759e-01, 2.031999972581849e-01, 2.020000056027833e-01, 2.007999990463896e-01, 1.995999996422869e-01, 1.984000079869656e-01, 1.972000014304831e-01, 1.959999948740005e-01, 1.948000032186792e-01, 1.935999966621967e-01, 1.923999901057142e-01, 1.912000056027726e-01, 1.899999990462901e-01, 1.88999995827682e-01, 1.879999928474959e-01, 1.870000047683716e-01, 1.860000017881394e-01, 1.850000047683716e-01, 1.840000017881394e-01, 1.829999988079071e-01, 1.819999958276749e-01, 1.809999928475492e-01, 1.800000050067546e-01, 1.79100009178959e-01, 1.782000079869229e-01, 1.773000067948869e-01, 1.764000056028267e-01, 1.755000044107259e-01, 1.746000032186188e-01, 1.737000073908054e-01, 1.728000061987694e-01, 1.719000050067333e-01, 1.710000038146973e-01] +PI.Ti=[4.688059687614441e-01, 4.734940231894267e-01, 4.781820776174092e-01, 4.828701618477139e-01, 4.875582162756968e-01, 4.922462698304613e-01, 4.969343251316619e-01, 5.016223786864307e-01, 5.063104637899213e-01, 5.10998485796012e-01, 5.156865708994577e-01, 5.203746560029922e-01, 5.250626815019174e-01, 5.297507666053275e-01, 5.344387886114182e-01, 5.391268702219761e-01, 5.438148992138602e-01, 5.485029808244891e-01, 5.531910624350115e-01, 5.578790914268956e-01, 5.625671730374713e-01, 5.672552020293553e-01, 5.71943283639931e-01, 5.766313652505066e-01, 5.813193942423907e-01, 5.860074758529663e-01, 5.906955048448503e-01, 5.953835794694728e-01, 6.000716680660017e-01, 6.047596970578858e-01, 6.094477716825082e-01, 6.141358006744633e-01, 6.18823889270708e-01, 6.235119638955435e-01, 6.281999928875343e-01, 6.328880814837788e-01, 6.375760965043604e-01, 6.42264185100463e-01, 6.46952214092347e-01, 6.51640302688876e-01, 6.563283773134984e-01, 6.610164063053824e-01, 6.657044949015205e-01, 6.703925099221021e-01, 6.750805985184178e-01, 6.797686871145914e-01, 6.84456702135173e-01, 6.891447907314177e-01, 6.938328197233372e-01, 6.985208943479597e-01, 7.032089829444885e-01, 7.078970119363059e-01, 7.125851005321998e-01, 7.172731295245857e-01, 7.219611901776515e-01, 7.266492191698242e-01, 7.313373077659689e-01, 7.360253963621802e-01, 7.407134253542108e-01, 7.454015139498914e-01, 7.500895149998046e-01, 7.547776035959826e-01, 7.594656921920185e-01, 7.64153721183836e-01, 7.688418097798719e-01, 7.735298387721157e-01, 7.782178994251815e-01, 7.829059880216437e-01, 7.875940170136743e-01, 7.922821056098855e-01, 7.969701346017408e-01, 8.016582231975635e-01, 8.063462838512688e-01, 8.110343128436547e-01, 8.157224014395486e-01, 8.20410430431366e-01, 8.250985190275439e-01, 8.297865480196457e-01, 8.344746366161079e-01, 8.391626972691737e-01, 8.438507262613464e-01, 8.485388148574201e-01, 8.532268438492708e-01, 8.57914932445733e-01, 8.626030210414136e-01, 8.672910220913268e-01, 8.719791106870785e-01, 8.766671396790381e-01, 8.813552282752161e-01, 8.860433168713941e-01, 8.907313458636379e-01, 8.954194065167037e-01, 9.001074355090185e-01, 9.047955241049833e-01, 9.094836127014078e-01, 9.14171641693263e-01, 9.188597302890857e-01, 9.235477313389989e-01, 9.282358199346085e-01, 9.329238489267102e-01, 9.376119375228882e-01] +RefDat.y[5]=[4.690000116825104e-01, 4.736999870397178e-01, 4.78399992199241e-01, 4.830999973587672e-01, 4.87800002518294e-01, 4.92500006802382e-01, 4.972000128373469e-01, 5.019000171214303e-01, 5.066000231563718e-01, 5.113000256895609e-01, 5.159999721199547e-01, 5.206999781549045e-01, 5.253999841898987e-01, 5.30099990224893e-01, 5.347999927580466e-01, 5.394999952911647e-01, 5.442000048280172e-01, 5.489000073611531e-01, 5.536000098942889e-01, 5.583000194310705e-01, 5.630000219642775e-01, 5.676000148415429e-01, 5.722000008344625e-01, 5.767999868273822e-01, 5.813999796748049e-01, 5.860000252723694e-01, 5.906000181197921e-01, 5.951999972582087e-01, 5.997999901056315e-01, 6.043999829530542e-01, 6.090000216961156e-01, 6.136999715090234e-01, 6.183999810458051e-01, 6.23099976575615e-01, 6.277999861121834e-01, 6.324999956489293e-01, 6.371999911783485e-01, 6.41900000715201e-01, 6.466000102519115e-01, 6.513000197884798e-01, 6.560000153183253e-01, 6.607000248550713e-01, 6.654000343916396e-01, 6.70099970317018e-01, 6.747999798536575e-01, 6.7949998939051e-01, 6.841999849201779e-01, 6.888999944567817e-01, 6.936000039936343e-01, 6.982999995230534e-01, 7.03000009059906e-01, 7.077000185964076e-01, 7.124000281329091e-01, 7.171000376694108e-01, 7.218000191925997e-01, 7.26499969125096e-01, 7.311999786615642e-01, 7.358999881983123e-01, 7.405999977350981e-01, 7.453000072718838e-01, 7.499999887942201e-01, 7.54699998331006e-01, 7.594000078677918e-01, 7.641000174044354e-01, 7.688000269409371e-01, 7.735000364774387e-01, 7.781999583966223e-01, 7.828999679331239e-01, 7.875999774696255e-01, 7.922999870062315e-01, 7.969999965429839e-01, 8.017000060797697e-01, 8.06399987602106e-01, 8.110999971388918e-01, 8.158000066756775e-01, 8.205000162124634e-01, 8.25200025748965e-01, 8.299000352854665e-01, 8.34599985218176e-01, 8.392999667411518e-01, 8.439999762776533e-01, 8.486999858141215e-01, 8.533999953508696e-01, 8.581000048876555e-01, 8.628000144244412e-01, 8.674999959467775e-01, 8.722000054835634e-01, 8.769000150203492e-01, 8.816000245569928e-01, 8.863000340934944e-01, 8.909999840260618e-01, 8.956999655491796e-01, 9.003999750856813e-01, 9.050999846221829e-01, 9.097999941587889e-01, 9.145000036955413e-01, 9.19200013232327e-01, 9.238999947546633e-01, 9.286000042914492e-01, 9.333000138282349e-01, 9.380000233650208e-01] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PID.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PID.txt index 72262e4cdf9..ce74494122b 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PID.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PID.txt @@ -1,4 +1,4 @@ -last-generated=2022-10-06 +last-generated=2023-04-06 statistics-simulation= { "linear": " ", @@ -6,9 +6,9 @@ statistics-simulation= "numerical Jacobians": "0" } time=[0e+00, 1e+00] -PID.k=[9.49999988079071e-01, 9.405940767935639e-01, 9.313725226866972e-01, 9.22330080549172e-01, 9.13461564776384e-01, 9.047619114213735e-01, 8.962264043718727e-01, 8.878504637689104e-01, 8.796296097525849e-01, 8.715596242808541e-01, 8.636363762643579e-01, 8.558558814683416e-01, 8.482142655926266e-01, 8.407079523449109e-01, 8.33333314131997e-01, 8.260869449343398e-01, 8.189654907894031e-01, 8.119658250726932e-01, 8.050847724257855e-01, 7.983193373173854e-01, 7.916666895436687e-01, 7.851239378060366e-01, 7.786885488370624e-01, 7.723577062643717e-01, 7.661290118303472e-01, 7.599999904632568e-01, 7.539682301420675e-01, 7.480315066706938e-01, 7.421875010576051e-01, 7.364340948051341e-01, 7.307692272670684e-01, 7.251908203291423e-01, 7.196969926579135e-01, 7.142857420899057e-01, 7.089552312234501e-01, 7.037036967649851e-01, 6.985294335236517e-01, 6.934306658474082e-01, 6.884058081643121e-01, 6.834532511408543e-01, 6.785714074461476e-01, 6.737588618002714e-01, 6.690140868512251e-01, 6.643356731698628e-01, 6.597222073132263e-01, 6.551723994235512e-01, 6.506849584244234e-01, 6.46258532202724e-01, 6.418918896375844e-01, 6.375839176605937e-01, 6.333333253860474e-01, 6.291390596904763e-01, 6.249999880545577e-01, 6.209150375895698e-01, 6.168831122255133e-01, 6.129032445518791e-01, 6.089743390012684e-01, 6.050955611198249e-01, 6.012658380085799e-01, 5.974842755879434e-01, 5.937500135306363e-01, 5.900621494358014e-01, 5.864197638204993e-01, 5.828220818296059e-01, 5.792682689942577e-01, 5.7575755044043e-01, 5.722891826609033e-01, 5.688622680815263e-01, 5.654761828043975e-01, 5.621301519710173e-01, 5.588235199357301e-01, 5.555555714254248e-01, 5.523256203941751e-01, 5.491329524107439e-01, 5.459770009976317e-01, 5.428571701049805e-01, 5.397727444909791e-01, 5.367231280901378e-01, 5.337078440618878e-01, 5.307262637140925e-01, 5.277777963675111e-01, 5.248618732532855e-01, 5.219780175424763e-01, 5.191256927830721e-01, 5.163043625277675e-01, 5.13513515576789e-01, 5.107526839230281e-01, 5.08021416260471e-01, 5.05319176151436e-01, 5.02645486756633e-01, 4.999999904398093e-01, 4.973822042449649e-01, 4.947916633078104e-01, 4.92227974342671e-01, 4.896907201179299e-01, 4.87179483405312e-01, 4.846938767633536e-01, 4.822335052267483e-01, 4.797979961955375e-01, 4.773869251415851e-01, 4.749999940395355e-01] -RefDat.y[4]=[9.49999988079071e-01, 9.409999845176964e-01, 9.309999940544396e-01, 9.219999906048225e-01, 9.129999871552049e-01, 9.049999717623168e-01, 8.960000269859717e-01, 8.880000117421116e-01, 8.799999934435158e-01, 8.719999808073843e-01, 8.640000231563933e-01, 8.560000056028277e-01, 8.479999886453351e-01, 8.410000157355552e-01, 8.33000004887572e-01, 8.25999981165021e-01, 8.190000039339332e-01, 8.119999775290889e-01, 8.050000107287828e-01, 7.979999768734156e-01, 7.919999971985595e-01, 7.850000229476417e-01, 7.789999830722987e-01, 7.720000189542149e-01, 7.659999701381129e-01, 7.599999904632568e-01, 7.540000033379312e-01, 7.480000311135446e-01, 7.419999843835742e-01, 7.359999972582485e-01, 7.310000121592587e-01, 7.25000025033933e-01, 7.200000250337909e-01, 7.139999932049728e-01, 7.089999932050438e-01, 7.039999932051149e-01, 6.990000081061252e-01, 6.930000209807995e-01, 6.880000209807284e-01, 6.830000209805153e-01, 6.790000230073485e-01, 6.74000023007313e-01, 6.690000230070998e-01, 6.639999783040692e-01, 6.600000250338975e-01, 6.549999654293949e-01, 6.510000270604466e-01, 6.460000270604821e-01, 6.420000141856657e-01, 6.380000114440918e-01, 6.330000162124634e-01, 6.290000033380022e-01, 6.24999990463541e-01, 6.209999775890799e-01, 6.169999945160529e-01, 6.12999981641947e-01, 6.090000283718109e-01, 6.050000154971011e-01, 6.010000109672546e-01, 5.970000028610229e-01, 5.93999981880188e-01, 5.899999809267268e-01, 5.860000276564842e-01, 5.830000019074196e-01, 5.789999961853027e-01, 5.75999963283894e-01, 5.72000039815512e-01, 5.690000140664475e-01, 5.650000011919863e-01, 5.619999754428864e-01, 5.590000092985022e-01, 5.559999835494378e-01, 5.520000004764108e-01, 5.490000343319912e-01, 5.460000085829267e-01, 5.429999828338623e-01, 5.400000166891584e-01, 5.369999909403782e-01, 5.339999651913138e-01, 5.31000018119812e-01, 5.279999971389771e-01, 5.249999761581421e-01, 5.220000112057798e-01, 5.189999938011169e-01, 5.15999972820282e-01, 5.139999985694885e-01, 5.109999775886536e-01, 5.080000185965782e-01, 5.049999952316284e-01, 5.030000138280645e-01, 4.999999880794263e-01, 4.970000219341185e-01, 4.950000047683716e-01, 4.920000171660311e-01, 4.900000083446148e-01, 4.869999885559082e-01, 4.850000035762787e-01, 4.820000076293945e-01, 4.799999892711639e-01, 4.770000028608808e-01, 4.749999940395355e-01] -PID.Ti=[4.457142949104309e-01, 4.501714409641979e-01, 4.546285572156492e-01, 4.590857032694192e-01, 4.635428493231898e-01, 4.679999943399676e-01, 4.724571414307305e-01, 4.769142864475346e-01, 4.813714335382693e-01, 4.858285764809876e-01, 4.902857235718282e-01, 4.947428706626245e-01, 4.991999879510272e-01, 5.03657164844066e-01, 5.081142779846395e-01, 5.125714507295737e-01, 5.170285721661076e-01, 5.214856853066634e-01, 5.259428580515443e-01, 5.303999794881493e-01, 5.348571522332255e-01, 5.393142736695818e-01, 5.437714464148358e-01, 5.482285595551961e-01, 5.526857405962683e-01, 5.571428537368774e-01, 5.616000347774167e-01, 5.660571396221009e-01, 5.705142610588836e-01, 5.749714420997426e-01, 5.794285469440715e-01, 5.838857279854635e-01, 5.883428494217843e-01, 5.928000138706869e-01, 5.972571353074341e-01, 6.017143163484707e-01, 6.061714211926575e-01, 6.106285426295468e-01, 6.150857236705125e-01, 6.195428451066912e-01, 6.240000095560202e-01, 6.284571309925542e-01, 6.329143120333777e-01, 6.373714168779908e-01, 6.418285979192406e-01, 6.462857193554193e-01, 6.507428242002101e-01, 6.552000052412823e-01, 6.59657126677461e-01, 6.641142911265768e-01, 6.68571412563324e-01, 6.730285936040684e-01, 6.77485715040168e-01, 6.819428960809124e-01, 6.86399984333949e-01, 6.908571653752618e-01, 6.953142868118902e-01, 6.997714082483847e-01, 7.042285892889159e-01, 7.086857107250155e-01, 7.131428585825548e-01, 7.175999800196491e-01, 7.220571610605356e-01, 7.265142824969194e-01, 7.309714635376638e-01, 7.354285849737634e-01, 7.398856732272974e-01, 7.443428542678286e-01, 7.487999757047098e-01, 7.532571567457069e-01, 7.57714278181767e-01, 7.621714592225113e-01, 7.666285474759742e-01, 7.710857285164344e-01, 7.755428499531025e-01, 7.799999713897705e-01, 7.844571524305149e-01, 7.889142738671829e-01, 7.933714549073589e-01, 7.97828543161035e-01, 8.022857242017083e-01, 8.067428456384078e-01, 8.112000266792628e-01, 8.156571481153624e-01, 8.201143291561068e-01, 8.245714174090013e-01, 8.290285388460956e-01, 8.334857198869822e-01, 8.37942841323508e-01, 8.424000223641104e-01, 8.468571438002099e-01, 8.513142916576071e-01, 8.557714130947726e-01, 8.602285941355879e-01, 8.646857155721535e-01, 8.691428370085688e-01, 8.736000180489578e-01, 8.780571063024207e-01, 8.82514287342881e-01, 8.869714087798332e-01, 8.914285898208618e-01] -RefDat.y[5]=[4.460000097751617e-01, 4.499999881908316e-01, 4.550000133365363e-01, 4.589999917522126e-01, 4.639999866485596e-01, 4.679999943822671e-01, 4.720000035315665e-01, 4.769999979436415e-01, 4.810000070929394e-01, 4.859999996423988e-01, 4.90000008791674e-01, 4.950000050663904e-01, 4.990000142156878e-01, 5.04000010490382e-01, 5.080000159144447e-01, 5.130000084639039e-01, 5.170000213384361e-01, 5.210000276565552e-01, 5.26000019311745e-01, 5.299999725819167e-01, 5.350000247358609e-01, 5.389999780060326e-01, 5.440000301599414e-01, 5.479999759793592e-01, 5.529999759794481e-01, 5.569999814033508e-01, 5.619999766349792e-01, 5.659999793768729e-01, 5.709999793768018e-01, 5.74999992251334e-01, 5.789999961853027e-01, 5.83999990224856e-01, 5.880000030993883e-01, 5.929999881983781e-01, 5.970000010729103e-01, 6.020000010728392e-01, 6.059999990464322e-01, 6.109999990463612e-01, 6.150000119208935e-01, 6.200000047683716e-01, 6.240000098944154e-01, 6.280000227689476e-01, 6.330000227688766e-01, 6.370000207422565e-01, 6.420000207423986e-01, 6.460000336169308e-01, 6.510000187156719e-01, 6.549999719858436e-01, 6.600000315903818e-01, 6.639999699593301e-01, 6.690000295639038e-01, 6.729999828340044e-01, 6.769999957081814e-01, 6.819999957088919e-01, 6.859999895095825e-01, 6.909999787809241e-01, 6.949999916553498e-01, 6.999999916552432e-01, 7.040000045297043e-01, 7.090000045295622e-01, 7.129999876025891e-01, 7.17999987602447e-01, 7.220000004769082e-01, 7.269999980926514e-01, 7.310000133512273e-01, 7.350000262256885e-01, 7.399999964241121e-01, 7.44000009298076e-01, 7.490000092984311e-01, 7.530000221729278e-01, 7.580000221727502e-01, 7.620000350472114e-01, 7.670000052447824e-01, 7.710000181195278e-01, 7.760000181196699e-01, 7.799999713897705e-01, 7.839999842645159e-01, 7.88999984264658e-01, 7.929999971394034e-01, 7.979999673369744e-01, 8.019999802114356e-01, 8.06999980211258e-01, 8.109999930857547e-01, 8.159999930856126e-01, 8.200000059600737e-01, 8.249999761584973e-01, 8.289999890329585e-01, 8.330000042915344e-01, 8.380000019072776e-01, 8.420000147817388e-01, 8.470000147815967e-01, 8.509999978546235e-01, 8.559999978544814e-01, 8.600000107289426e-01, 8.65000010728836e-01, 8.690000236032617e-01, 8.740000128746033e-01, 8.780000066752939e-01, 8.830000066760044e-01, 8.870000195501814e-01, 8.90999972820282e-01] -PID.Td=[1.271186470985413e-01, 1.283898354021288e-01, 1.296610237057163e-01, 1.309321971081425e-01, 1.322033854117301e-01, 1.334745733447724e-01, 1.347457620189051e-01, 1.360169499519607e-01, 1.372881386260795e-01, 1.385593258179935e-01, 1.398305144921654e-01, 1.411016882651628e-01, 1.423728769392681e-01, 1.436440656133778e-01, 1.449152528053806e-01, 1.461864399972412e-01, 1.474576301536178e-01, 1.48728817345585e-01, 1.500000045374457e-01, 1.512711797927143e-01, 1.525423669846505e-01, 1.538135571409649e-01, 1.550847443329366e-01, 1.563559315248639e-01, 1.576271216811561e-01, 1.588983088731766e-01, 1.601694990293756e-01, 1.614406832568979e-01, 1.627118585122287e-01, 1.639830486685165e-01, 1.652542328960299e-01, 1.665254230524421e-01, 1.677966132086943e-01, 1.690677974361456e-01, 1.703389875926288e-01, 1.716101777489343e-01, 1.728813470752955e-01, 1.741525372317076e-01, 1.754237273880487e-01, 1.766949175443187e-01, 1.779661017719209e-01, 1.792372919282531e-01, 1.805084820844521e-01, 1.81779666312081e-01, 1.830508415673497e-01, 1.843220317236197e-01, 1.855932159511864e-01, 1.868644061075808e-01, 1.881355962638508e-01, 1.894067804913998e-01, 1.906779706478119e-01, 1.919491608039826e-01, 1.932203360591342e-01, 1.944915262153759e-01, 1.957627045143168e-01, 1.970338946707006e-01, 1.983050848270703e-01, 1.995762749833084e-01, 2.008474651394791e-01, 2.021186552956498e-01, 2.033898186935893e-01, 2.046610088499732e-01, 2.05932199006357e-01, 2.072033891626698e-01, 2.084745793189116e-01, 2.097457694751533e-01, 2.110169477740231e-01, 2.122881379304069e-01, 2.135593131856296e-01, 2.148305033419921e-01, 2.161016934982196e-01, 2.173728836544614e-01, 2.186440619532956e-01, 2.199152521096795e-01, 2.211864422660633e-01, 2.224576324224472e-01, 2.237288225786179e-01, 2.249999978337695e-01, 2.262711879900113e-01, 2.275423662889521e-01, 2.288135564453359e-01, 2.300847466017056e-01, 2.31355936757997e-01, 2.326271269141144e-01, 2.338983170702851e-01, 2.351694804682246e-01, 2.364406706246085e-01, 2.377118607809924e-01, 2.389830509373052e-01, 2.402542410935469e-01, 2.415254312497886e-01, 2.427966095486584e-01, 2.440677997050422e-01, 2.453389749603182e-01, 2.466101651166274e-01, 2.47881355272855e-01, 2.491525454290967e-01, 2.50423723727931e-01, 2.516949138843148e-01, 2.529661040406987e-01, 2.542372941970825e-01] -RefDat.y[6]=[1.270000040531158e-01, 1.28000006191431e-01, 1.299999952316284e-01, 1.309999972581863e-01, 1.319999992847443e-01, 1.330000013113022e-01, 1.35000005364418e-01, 1.36000007390976e-01, 1.369999954104424e-01, 1.389999967813492e-01, 1.400000005960464e-01, 1.410000026226044e-01, 1.420000059902668e-01, 1.439999938011169e-01, 1.449999958276749e-01, 1.459999978542328e-01, 1.470000016689301e-01, 1.490000030398369e-01, 1.500000059604645e-01, 1.509999942779541e-01, 1.529999956488609e-01, 1.53999999165535e-01, 1.550000011920929e-01, 1.560000032186508e-01, 1.580000072717667e-01, 1.589999943971634e-01, 1.599999964237213e-01, 1.609999984502792e-01, 1.630000019073486e-01, 1.64000004529953e-01, 1.650000065565109e-01, 1.669999945163727e-01, 1.679999977350235e-01, 1.689999997615814e-01, 1.700000017881393e-01, 1.720000058412552e-01, 1.729999929666519e-01, 1.739999949932098e-01, 1.749999994039536e-01, 1.770000010728836e-01, 1.780000030994415e-01, 1.790000051259995e-01, 1.809999942779541e-01, 1.81999996304512e-01, 1.829999983310699e-01, 1.840000063180924e-01, 1.860000002384186e-01, 1.870000064373016e-01, 1.879999935626984e-01, 1.889999955892563e-01, 1.909999996423721e-01, 1.920000016689301e-01, 1.93000003695488e-01, 1.940000200267343e-01, 1.959999948740005e-01, 1.969999969005585e-01, 1.979999989271164e-01, 2.000000029802322e-01, 2.010000050067902e-01, 2.020000070333481e-01, 2.029999941587448e-01, 2.049999910594099e-01, 2.060000002384186e-01, 2.070000022649765e-01, 2.080000114439852e-01, 2.099999934434891e-01, 2.10999995470047e-01, 2.119999974966049e-01, 2.139999979734954e-01, 2.150000035762787e-01, 2.160000056028366e-01, 2.170000034569095e-01, 2.189999824764476e-01, 2.199999988079071e-01, 2.21000000834465e-01, 2.220000028610229e-01, 2.240000069141388e-01, 2.249999940395355e-01, 2.26000010370995e-01, 2.279999893905331e-01, 2.290000021457672e-01, 2.300000041723251e-01, 2.310000097750551e-01, 2.329999953508377e-01, 2.339999973773956e-01, 2.349999994039536e-01, 2.360000014305115e-01, 2.380000030994771e-01, 2.38999992609024e-01, 2.400000017880328e-01, 2.419999986886978e-01, 2.430000007152557e-01, 2.440000027418137e-01, 2.450000047683716e-01, 2.469999939203262e-01, 2.479999959468842e-01, 2.489999979734421e-01, 2.5e-01, 2.519999945163727e-01, 2.529999911785126e-01, 2.540000081062317e-01] +PID.k=[9.49999988079071e-01, 9.405940769025434e-01, 9.313725229004063e-01, 9.223300808635801e-01, 9.134615651875749e-01, 9.047619110817563e-01, 8.962264049656377e-01, 8.878504636381082e-01, 8.796296105153333e-01, 8.71559622768467e-01, 8.636363756456097e-01, 8.558558817090551e-01, 8.482142666567333e-01, 8.407079542032606e-01, 8.333333139016039e-01, 8.260869426703776e-01, 8.189654921122889e-01, 8.119658244165794e-01, 8.050847698456679e-01, 7.983193381553978e-01, 7.916666885042356e-01, 7.851239400353422e-01, 7.786885492357827e-01, 7.723577048795445e-01, 7.661290135671943e-01, 7.599999904632568e-01, 7.539682331331621e-01, 7.480315033309721e-01, 7.421875006922803e-01, 7.364340973019762e-01, 7.307692237257306e-01, 7.25190819631675e-01, 7.196969947021409e-01, 7.142857383683391e-01, 7.089552302236118e-01, 7.037036983937234e-01, 6.985294296415383e-01, 6.934306645721287e-01, 6.884058094114541e-01, 6.834532548285637e-01, 6.785714059197273e-01, 6.737588626962995e-01, 6.690140900905474e-01, 6.643356714144705e-01, 6.597222078859937e-01, 6.551724022483081e-01, 6.506849564600254e-01, 6.462585324775614e-01, 6.418918920778675e-01, 6.375839155050956e-01, 6.333333253860474e-01, 6.291390617743208e-01, 6.249999921676779e-01, 6.209150436791022e-01, 6.168831076858616e-01, 6.129032420625347e-01, 6.089743385097797e-01, 6.050955625658969e-01, 6.012658413399742e-01, 5.974842807573385e-01, 5.937500088581863e-01, 5.900621466672895e-01, 5.864197629090305e-01, 5.82822082724022e-01, 5.792682716451055e-01, 5.757575548052202e-01, 5.722891778869896e-01, 5.688622650798894e-01, 5.654761815333291e-01, 5.621301523871165e-01, 5.588235219916508e-01, 5.555555750832368e-01, 5.523256155435241e-01, 5.491329492144925e-01, 5.459769994176956e-01, 5.428571701049805e-01, 5.397727460257254e-01, 5.367231311249566e-01, 5.337078485638103e-01, 5.307262603555559e-01, 5.277777945222628e-01, 5.248618728883461e-01, 5.219780186189303e-01, 5.191256952679401e-01, 5.163043663895729e-01, 5.135135120838201e-01, 5.107526818498416e-01, 5.080214155766563e-01, 5.053191768240243e-01, 5.026454887535085e-01, 4.999999937324086e-01, 4.973822006403005e-01, 4.947916610380556e-01, 4.922279733798309e-01, 4.896907204338057e-01, 4.871794849684796e-01, 4.846938795485985e-01, 4.822335015305675e-01, 4.797979937564277e-01, 4.773869239343934e-01, 4.749999940395355e-01] +RefDat.y[4]=[9.49999988079071e-01, 9.413999913200723e-01, 9.327999945610738e-01, 9.241999978020756e-01, 9.156000010430764e-01, 9.070000058859627e-01, 8.984000075250791e-01, 8.898000123679659e-01, 8.812000140070846e-01, 8.726000220536259e-01, 8.640000236928077e-01, 8.568000193118914e-01, 8.496000151395989e-01, 8.424000109672888e-01, 8.352000121593433e-01, 8.280000133513978e-01, 8.208000038147228e-01, 8.136000050067773e-01, 8.064000061988319e-01, 7.991999966621569e-01, 7.919999978542115e-01, 7.858999927580835e-01, 7.797999970793811e-01, 7.737000014006786e-01, 7.675999966323768e-01, 7.615000009536743e-01, 7.553999961853723e-01, 7.493000095962694e-01, 7.432000048279676e-01, 7.371000000596656e-01, 7.310000134705626e-01, 7.257999790192119e-01, 7.206000052452812e-01, 7.153999873640732e-01, 7.102000135898228e-01, 7.049999802113184e-01, 6.998000219343643e-01, 6.94599988556002e-01, 6.894000147818581e-01, 6.841999814034958e-01, 6.790000231265417e-01, 6.743999703168944e-01, 6.697999774694716e-01, 6.65199998331055e-01, 6.606000054836323e-01, 6.560000126362096e-01, 6.51400033497793e-01, 6.467999810457254e-01, 6.421999881983027e-01, 6.376000090598861e-01, 6.330000162124634e-01, 6.291000209806786e-01, 6.251999661448175e-01, 6.21299970913317e-01, 6.173999989268286e-01, 6.135000036953281e-01, 6.096000084638553e-01, 6.05700013232327e-01, 6.018000180003292e-01, 5.978999631646813e-01, 5.939999911789033e-01, 5.905000021456607e-01, 5.870000140666607e-01, 5.835000259875185e-01, 5.799999783040158e-01, 5.764999902250159e-01, 5.730000230071974e-01, 5.695000349281975e-01, 5.659999872445527e-01, 5.624999991655278e-01, 5.590000115633189e-01, 5.558999710328141e-01, 5.528000085830262e-01, 5.497000276565268e-01, 5.465999871253825e-01, 5.435000061988831e-01, 5.404000252723836e-01, 5.372999847412393e-01, 5.342000038147399e-01, 5.310999817609467e-01, 5.280000008344472e-01, 5.252000100135717e-01, 5.224000195501955e-01, 5.195999694826209e-01, 5.167999790194777e-01, 5.140000052449245e-01, 5.112000147817813e-01, 5.084000243186382e-01, 5.055999742508503e-01, 5.027999837877072e-01, 4.999999940397131e-01, 4.975000089405013e-01, 4.950000089405724e-01, 4.925000089406434e-01, 4.900000089406612e-01, 4.875000089406079e-01, 4.850000089405369e-01, 4.824999940397487e-01, 4.799999940396776e-01, 4.774999940394645e-01, 4.749999940395355e-01] +PID.Ti=[4.457142949104309e-01, 4.501714409393911e-01, 4.546285571660355e-01, 4.590857031949988e-01, 4.635428492239625e-01, 4.679999944227125e-01, 4.724571412818696e-01, 4.769142864806326e-01, 4.813714333397884e-01, 4.858285768781091e-01, 4.902857237372955e-01, 4.94742870596473e-01, 4.991999876533459e-01, 5.036571643147126e-01, 5.081142780508264e-01, 5.125714513914428e-01, 5.170285717691993e-01, 5.214856855052242e-01, 5.259428588457873e-01, 5.303999792235438e-01, 5.348571525641601e-01, 5.393142729419166e-01, 5.437714462824974e-01, 5.482285600185046e-01, 5.526857400007459e-01, 5.571428537368774e-01, 5.616000337189944e-01, 5.660571408134655e-01, 5.705142611912575e-01, 5.749714411736231e-01, 5.794285482681653e-01, 5.838857282502111e-01, 5.883428486279676e-01, 5.928000153267993e-01, 5.972571357045556e-01, 6.017143156867791e-01, 6.061714227811437e-01, 6.106285431590422e-01, 6.150857231413013e-01, 6.195428435190578e-01, 6.240000102178894e-01, 6.284571305956458e-01, 6.329143105776561e-01, 6.373714176722338e-01, 6.41828597654564e-01, 6.462857180323914e-01, 6.50742825126827e-01, 6.552000051089795e-01, 6.596571254867359e-01, 6.641142921855676e-01, 6.68571412563324e-01, 6.730285925453776e-01, 6.774857129233549e-01, 6.819428929048401e-01, 6.863999867166426e-01, 6.908571666989805e-01, 6.953142870766419e-01, 6.997714074543666e-01, 7.042285874367045e-01, 7.086857078143975e-01, 7.131428612299922e-01, 7.175999816081116e-01, 7.220571615900231e-01, 7.265142819677162e-01, 7.309714619496277e-01, 7.354285823277471e-01, 7.398856761394785e-01, 7.443428561210348e-01, 7.48799976498941e-01, 7.532571564810263e-01, 7.577142768587588e-01, 7.621714568404572e-01, 7.666285506520465e-01, 7.710857306343843e-01, 7.755428510120774e-01, 7.799999713897705e-01, 7.844571513721084e-01, 7.889142717498014e-01, 7.933714517321393e-01, 7.978285455437286e-01, 8.02285725525427e-01, 8.067428459030884e-01, 8.112000258852448e-01, 8.15657146263151e-01, 8.201143262447073e-01, 8.245714200564387e-01, 8.290285404345581e-01, 8.334857204164696e-01, 8.379428407941627e-01, 8.424000207760742e-01, 8.468571411541936e-01, 8.513142945697882e-01, 8.557714149474813e-01, 8.602285949298192e-01, 8.646857153075439e-01, 8.691428356852053e-01, 8.736000156675432e-01, 8.780571094793457e-01, 8.825142894608309e-01, 8.869714098388082e-01, 8.914285898208618e-01] +RefDat.y[5]=[4.460000097751617e-01, 4.503999949485067e-01, 4.54800009924174e-01, 4.591999950975186e-01, 4.636000100731862e-01, 4.679999944269647e-01, 4.724000102221985e-01, 4.767999945759767e-01, 4.812000103712092e-01, 4.85599993085859e-01, 4.900000088810912e-01, 4.945000114738937e-01, 4.990000140815953e-01, 5.034999868870457e-01, 5.080000159442341e-01, 5.124999853969553e-01, 5.17000021159593e-01, 5.214999906122965e-01, 5.260000196694316e-01, 5.304999958277086e-01, 5.350000248848971e-01, 5.393999843835869e-01, 5.437999969005591e-01, 5.482000094175314e-01, 5.526000284910234e-01, 5.569999814033508e-01, 5.614000004768428e-01, 5.658000064372952e-01, 5.702000255107873e-01, 5.745999849796345e-01, 5.789999909400869e-01, 5.835000265836379e-01, 5.880000027419149e-01, 5.924999654891159e-01, 5.970000012516469e-01, 6.01499977409924e-01, 6.059999997613789e-01, 6.104999759197981e-01, 6.150000116824358e-01, 6.19499987840855e-01, 6.240000101923099e-01, 6.28499986350587e-01, 6.33000022113118e-01, 6.374999848605322e-01, 6.420000206231697e-01, 6.464999967815179e-01, 6.510000191329729e-01, 6.554999952912499e-01, 6.600000310538521e-01, 6.644999938012661e-01, 6.690000295639038e-01, 6.733999890326885e-01, 6.77800008106118e-01, 6.822000271795475e-01, 6.866000200272886e-01, 6.909999794960733e-01, 6.953999985694715e-01, 6.998000176429322e-01, 7.042000367158643e-01, 7.085999961851464e-01, 7.129999890328874e-01, 7.174999649527886e-01, 7.220000007152202e-01, 7.264999768734334e-01, 7.31000012635865e-01, 7.354999887945044e-01, 7.399999977348282e-01, 7.444999738935386e-01, 7.490000096558992e-01, 7.534999858141442e-01, 7.58000021457601e-01, 7.623999809263857e-01, 7.667999737741268e-01, 7.711999928475564e-01, 7.756000119209858e-01, 7.799999713897705e-01, 7.843999904632e-01, 7.888000095366294e-01, 7.93200028610059e-01, 7.975999618537948e-01, 8.019999809265848e-01, 8.065000165700416e-01, 8.109999927282866e-01, 8.155000284906472e-01, 8.200000046493576e-01, 8.245000135896814e-01, 8.289999897483208e-01, 8.335000255107524e-01, 8.380000016689656e-01, 8.424999778271788e-01, 8.470000133512984e-01, 8.514000061990394e-01, 8.557999656683215e-01, 8.601999847412536e-01, 8.646000038147142e-01, 8.690000228881125e-01, 8.733999823568972e-01, 8.777999752046383e-01, 8.821999942780678e-01, 8.866000133514973e-01, 8.90999972820282e-01] +PID.Td=[1.271186470985413e-01, 1.283898353860783e-01, 1.296610236736153e-01, 1.309321970599961e-01, 1.322033853475348e-01, 1.334745733982963e-01, 1.347457619226122e-01, 1.360169499733681e-01, 1.372881384976758e-01, 1.385593260748808e-01, 1.398305145992018e-01, 1.411016882223615e-01, 1.423728767466825e-01, 1.436440652710035e-01, 1.449152528481996e-01, 1.461864404253867e-01, 1.474576298968104e-01, 1.487288174740287e-01, 1.500000050512203e-01, 1.512711796215094e-01, 1.525423671987233e-01, 1.538135566701514e-01, 1.55084744247343e-01, 1.563559318245346e-01, 1.57627121295945e-01, 1.588983088731766e-01, 1.601694983445558e-01, 1.614406840275598e-01, 1.627118585978578e-01, 1.639830480692993e-01, 1.65254233752321e-01, 1.665254232236825e-01, 1.677966126950796e-01, 1.690677983780658e-01, 1.703389878495161e-01, 1.71610177320922e-01, 1.728813481028448e-01, 1.74152537574224e-01, 1.754237270456388e-01, 1.766949165170891e-01, 1.77966102200022e-01, 1.792372916714457e-01, 1.80508481142825e-01, 1.817796668258556e-01, 1.830508413961447e-01, 1.84322030867595e-01, 1.855932165505902e-01, 1.868644060219783e-01, 1.881355954934286e-01, 1.894067811763616e-01, 1.906779706478119e-01, 1.919491601191731e-01, 1.932203346895152e-01, 1.944915241609474e-01, 1.957627060556177e-01, 1.970338955269789e-01, 1.983050849983133e-01, 1.995762744697013e-01, 2.008474639410625e-01, 2.021186534124237e-01, 2.033898204061459e-01, 2.046610098775072e-01, 2.059321993488684e-01, 2.072033888202651e-01, 2.084745782916973e-01, 2.09745767762952e-01, 2.1101694965764e-01, 2.122881391290722e-01, 2.135593136993966e-01, 2.148305031707846e-01, 2.161016926422078e-01, 2.1737288211364e-01, 2.186440640081505e-01, 2.199152534795827e-01, 2.211864429510149e-01, 2.224576324224472e-01, 2.237288218938084e-01, 2.249999964641505e-01, 2.262711859355828e-01, 2.275423678302531e-01, 2.288135573015254e-01, 2.300847467729487e-01, 2.313559362443366e-01, 2.326271257156978e-01, 2.33898315187059e-01, 2.351694821807813e-01, 2.364406716521425e-01, 2.377118611235037e-01, 2.389830505949004e-01, 2.402542400663326e-01, 2.415254295375873e-01, 2.427966114322753e-01, 2.440678009037076e-01, 2.453389754740319e-01, 2.466101649454199e-01, 2.478813544168431e-01, 2.491525438882753e-01, 2.504237257827858e-01, 2.51694915254218e-01, 2.529661047256503e-01, 2.542372941970825e-01] +RefDat.y[6]=[1.270000040531158e-01, 1.282999962858867e-01, 1.296000034198155e-01, 1.308999956525896e-01, 1.322000027865151e-01, 1.334999947771447e-01, 1.348000021532147e-01, 1.360999941438443e-01, 1.374000015199139e-01, 1.386999930262656e-01, 1.400000004023351e-01, 1.412999928772479e-01, 1.42600000253313e-01, 1.439000076293825e-01, 1.451999991357342e-01, 1.465000055432027e-01, 1.47799998986712e-01, 1.491000053942116e-01, 1.503999969005766e-01, 1.517000052452027e-01, 1.529999967515544e-01, 1.542000033378523e-01, 1.55399993205078e-01, 1.565999979734471e-01, 1.578000045299466e-01, 1.589999943971634e-01, 1.602000009536629e-01, 1.614000039339193e-01, 1.625999955892577e-01, 1.638000021457573e-01, 1.650000051259248e-01, 1.662999984502853e-01, 1.676000067949114e-01, 1.688999963641499e-01, 1.702000047087494e-01, 1.714999981522409e-01, 1.72800002622534e-01, 1.740999960661055e-01, 1.754000044107316e-01, 1.766999978543031e-01, 1.780000023245518e-01, 1.792999957680878e-01, 1.806000041126873e-01, 1.818999936819258e-01, 1.832000020265519e-01, 1.844999954701056e-01, 1.857999999404165e-01, 1.870999933838903e-01, 1.884000017285075e-01, 1.897000061988361e-01, 1.909999996423721e-01, 1.922000061988546e-01, 1.933999978541759e-01, 1.946000044106584e-01, 1.958000038146014e-01, 1.969999954700825e-01, 1.982000020265565e-01, 1.993999936819396e-01, 2.006000002383688e-01, 2.018000067948514e-01, 2.029999912977929e-01, 2.042999994040175e-01, 2.055999928474639e-01, 2.069000011920716e-01, 2.081999946356246e-01, 2.095000029801257e-01, 2.108000035762005e-01, 2.120999970198424e-01, 2.134000053643967e-01, 2.146999988079057e-01, 2.160000071525041e-01, 2.173000005959505e-01, 2.186000011920076e-01, 2.198999946356672e-01, 2.212000029802038e-01, 2.224999964237213e-01, 2.23800004768329e-01, 2.250999982119175e-01, 2.26400006556383e-01, 2.276999922514921e-01, 2.290000005960997e-01, 2.302999940395369e-01, 2.316000023841538e-01, 2.328999958277246e-01, 2.342000041722079e-01, 2.35499989867317e-01, 2.367999982119246e-01, 2.381000065564967e-01, 2.393999999999787e-01, 2.407000083445863e-01, 2.420000015496497e-01, 2.432000009537525e-01, 2.443999926090738e-01, 2.455999991655563e-01, 2.468000057220473e-01, 2.479999973773601e-01, 2.492000039338426e-01, 2.504000033379454e-01, 2.515999949932667e-01, 2.52799986648588e-01, 2.540000081062317e-01] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PIDDerivativeTime.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PIDDerivativeTime.txt index f45109647f5..d8258a5f80f 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PIDDerivativeTime.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PIDDerivativeTime.txt @@ -1,4 +1,4 @@ -last-generated=2022-10-06 +last-generated=2023-04-06 statistics-simulation= { "linear": " ", @@ -7,6 +7,6 @@ statistics-simulation= } time=[0e+00, 1e+00] PIDDerTim.T=[5e-01, 5.049999953433857e-01, 5.099999906867714e-01, 5.149999860301567e-01, 5.199999813735693e-01, 5.24999975785618e-01, 5.29999972060354e-01, 5.350000260770249e-01, 5.400000223517285e-01, 5.450000149011879e-01, 5.50000011175882e-01, 5.550000074505762e-01, 5.600000037252704e-01, 5.649999999999645e-01, 5.699999925494239e-01, 5.749999850988832e-01, 5.799999850988121e-01, 5.849999776482715e-01, 5.899999701977309e-01, 5.950000298023046e-01, 6.000000223516752e-01, 6.050000223516929e-01, 6.100000149011523e-01, 6.150000074506117e-01, 6.200000074505406e-01, 6.25e-01, 6.29999999999929e-01, 6.349999850989188e-01, 6.399999850988477e-01, 6.449999850990253e-01, 6.499999701977665e-01, 6.549999701976954e-01, 6.600000298022691e-01, 6.650000149008681e-01, 6.700000149011879e-01, 6.750000149011168e-01, 6.800000000001065e-01, 6.850000000000355e-01, 6.899999999999645e-01, 6.949999999998935e-01, 6.999999850988832e-01, 7.049999850988121e-01, 7.099999850991319e-01, 7.149999701977309e-01, 7.200000298023046e-01, 7.250000298022335e-01, 7.300000149009747e-01, 7.350000149011523e-01, 7.400000149010812e-01, 7.45000000000071e-01, 7.5e-01, 7.549999999998579e-01, 7.599999999997158e-01, 7.649999999995737e-01, 7.699999701979974e-01, 7.749999701978553e-01, 7.799999701976776e-01, 7.850000298022158e-01, 7.900000298020737e-01, 7.950000298019316e-01, 8.000000000003552e-01, 8.050000000002131e-01, 8.10000000000071e-01, 8.14999999999929e-01, 8.199999999997869e-01, 8.249999999996448e-01, 8.299999701980684e-01, 8.349999701979263e-01, 8.399999701977842e-01, 8.450000298023224e-01, 8.500000298021447e-01, 8.550000298020026e-01, 8.600000000004263e-01, 8.650000000002842e-01, 8.700000000001421e-01, 8.75e-01, 8.799999999998579e-01, 8.849999999997158e-01, 8.899999999995737e-01, 8.949999701979974e-01, 8.999999701978553e-01, 9.049999701976776e-01, 9.100000298022158e-01, 9.150000298020737e-01, 9.200000298019316e-01, 9.250000000003552e-01, 9.300000000002131e-01, 9.35000000000071e-01, 9.39999999999929e-01, 9.449999999997869e-01, 9.499999999996448e-01, 9.549999701980684e-01, 9.599999701979263e-01, 9.649999701977842e-01, 9.700000298023224e-01, 9.750000298021447e-01, 9.800000298020026e-01, 9.850000000004263e-01, 9.900000000002842e-01, 9.950000000001421e-01, 1e+00] -PIDDerTim.L=[3.00000011920929e-01, 3.030000032111988e-01, 3.059999945014752e-01, 3.089999857917481e-01, 3.120000068843307e-01, 3.1499999724329e-01, 3.179999894648903e-01, 3.210000096261474e-01, 3.240000018477306e-01, 3.269999903440742e-01, 3.300000123679527e-01, 3.330000045895532e-01, 3.359999968111715e-01, 3.389999890327809e-01, 3.420000073313669e-01, 3.449999958277193e-01, 3.479999917745857e-01, 3.510000100731717e-01, 3.539999985694352e-01, 3.569999945163904e-01, 3.600000128149764e-01, 3.630000087618339e-01, 3.659999972581952e-01, 3.68999985754521e-01, 3.720000115036565e-01, 3.75e-01, 3.779999959469552e-01, 3.810000067948496e-01, 3.840000027418048e-01, 3.869999986887599e-01, 3.899999797345096e-01, 3.930000054836096e-01, 3.960000014305647e-01, 3.989999824763321e-01, 4.020000082254144e-01, 4.050000041722807e-01, 4.079999852181547e-01, 4.110000109672191e-01, 4.140000069141033e-01, 4.170000028611295e-01, 4.199999839067903e-01, 4.230000096559258e-01, 4.260000056027389e-01, 4.289999866486128e-01, 4.320000123977484e-01, 4.350000083445615e-01, 4.379999893904354e-01, 4.410000151395709e-01, 4.44000011086384e-01, 4.469999921322579e-01, 4.49999988079071e-01, 4.530000138281355e-01, 4.560000097748775e-01, 4.590000057220459e-01, 4.620000016689301e-01, 4.649999976158142e-01, 4.679999935626984e-01, 4.709999895095825e-01, 4.740000152585404e-01, 4.770000112052824e-01, 4.799999773505902e-01, 4.830000030994415e-01, 4.859999990463967e-01, 4.889999949932098e-01, 4.920000207422032e-01, 4.950000166889453e-01, 4.979999828342531e-01, 5.009999787809951e-01, 5.040000045300596e-01, 5.070000302791595e-01, 5.099999964235437e-01, 5.130000221726081e-01, 5.159999585155935e-01, 5.18999984264658e-01, 5.220000100137224e-01, 5.249999761581421e-01, 5.280000019072065e-01, 5.31000027656271e-01, 5.339999938015433e-01, 5.369999897483209e-01, 5.4000001549703e-01, 5.429999816417694e-01, 5.460000073908694e-01, 5.490000331399338e-01, 5.519999992843535e-01, 5.549999952319836e-01, 5.580000209806218e-01, 5.609999871254677e-01, 5.640000128745323e-01, 5.669999790193782e-01, 5.700000047680164e-01, 5.730000007156465e-01, 5.759999668600662e-01, 5.789999926091306e-01, 5.820000183582306e-01, 5.8499998450297e-01, 5.880000102516791e-01, 5.910000061984567e-01, 5.93999972343729e-01, 5.969999980927935e-01, 6.000000238418579e-01] -RefDat.y[6]=[1.270000040531158e-01, 1.28000006191431e-01, 1.299999952316284e-01, 1.309999972581863e-01, 1.319999992847443e-01, 1.330000013113022e-01, 1.35000005364418e-01, 1.36000007390976e-01, 1.369999954104424e-01, 1.389999967813492e-01, 1.400000005960464e-01, 1.410000026226044e-01, 1.420000059902668e-01, 1.439999938011169e-01, 1.449999958276749e-01, 1.459999978542328e-01, 1.470000016689301e-01, 1.490000030398369e-01, 1.500000059604645e-01, 1.509999942779541e-01, 1.529999956488609e-01, 1.53999999165535e-01, 1.550000011920929e-01, 1.560000032186508e-01, 1.580000072717667e-01, 1.589999943971634e-01, 1.599999964237213e-01, 1.609999984502792e-01, 1.630000019073486e-01, 1.64000004529953e-01, 1.650000065565109e-01, 1.669999945163727e-01, 1.679999977350235e-01, 1.689999997615814e-01, 1.700000017881393e-01, 1.720000058412552e-01, 1.729999929666519e-01, 1.739999949932098e-01, 1.749999994039536e-01, 1.770000010728836e-01, 1.780000030994415e-01, 1.790000051259995e-01, 1.809999942779541e-01, 1.81999996304512e-01, 1.829999983310699e-01, 1.840000063180924e-01, 1.860000002384186e-01, 1.870000064373016e-01, 1.879999935626984e-01, 1.889999955892563e-01, 1.909999996423721e-01, 1.920000016689301e-01, 1.93000003695488e-01, 1.940000200267343e-01, 1.959999948740005e-01, 1.969999969005585e-01, 1.979999989271164e-01, 2.000000029802322e-01, 2.010000050067902e-01, 2.020000070333481e-01, 2.029999941587448e-01, 2.049999910594099e-01, 2.060000002384186e-01, 2.070000022649765e-01, 2.080000114439852e-01, 2.099999934434891e-01, 2.10999995470047e-01, 2.119999974966049e-01, 2.139999979734954e-01, 2.150000035762787e-01, 2.160000056028366e-01, 2.170000034569095e-01, 2.189999824764476e-01, 2.199999988079071e-01, 2.21000000834465e-01, 2.220000028610229e-01, 2.240000069141388e-01, 2.249999940395355e-01, 2.26000010370995e-01, 2.279999893905331e-01, 2.290000021457672e-01, 2.300000041723251e-01, 2.310000097750551e-01, 2.329999953508377e-01, 2.339999973773956e-01, 2.349999994039536e-01, 2.360000014305115e-01, 2.380000030994771e-01, 2.38999992609024e-01, 2.400000017880328e-01, 2.419999986886978e-01, 2.430000007152557e-01, 2.440000027418137e-01, 2.450000047683716e-01, 2.469999939203262e-01, 2.479999959468842e-01, 2.489999979734421e-01, 2.5e-01, 2.519999945163727e-01, 2.529999911785126e-01, 2.540000081062317e-01] -PIDDerTim.Td=[1.271186470985413e-01, 1.283898354021288e-01, 1.296610237057163e-01, 1.309321971081425e-01, 1.322033854117301e-01, 1.334745733447724e-01, 1.347457620189051e-01, 1.360169499519607e-01, 1.372881386260795e-01, 1.385593258179935e-01, 1.398305144921654e-01, 1.411016882651628e-01, 1.423728769392681e-01, 1.436440656133778e-01, 1.449152528053806e-01, 1.461864399972412e-01, 1.474576301536178e-01, 1.48728817345585e-01, 1.500000045374457e-01, 1.512711797927143e-01, 1.525423669846505e-01, 1.538135571409649e-01, 1.550847443329366e-01, 1.563559315248639e-01, 1.576271216811561e-01, 1.588983088731766e-01, 1.601694990293756e-01, 1.614406832568979e-01, 1.627118585122287e-01, 1.639830486685165e-01, 1.652542328960299e-01, 1.665254230524421e-01, 1.677966132086943e-01, 1.690677974361456e-01, 1.703389875926288e-01, 1.716101777489343e-01, 1.728813470752955e-01, 1.741525372317076e-01, 1.754237273880487e-01, 1.766949175443187e-01, 1.779661017719209e-01, 1.792372919282531e-01, 1.805084820844521e-01, 1.81779666312081e-01, 1.830508415673497e-01, 1.843220317236197e-01, 1.855932159511864e-01, 1.868644061075808e-01, 1.881355962638508e-01, 1.894067804913998e-01, 1.906779706478119e-01, 1.919491608039826e-01, 1.932203360591342e-01, 1.944915262153759e-01, 1.957627045143168e-01, 1.970338946707006e-01, 1.983050848270703e-01, 1.995762749833084e-01, 2.008474651394791e-01, 2.021186552956498e-01, 2.033898186935893e-01, 2.046610088499732e-01, 2.05932199006357e-01, 2.072033891626698e-01, 2.084745793189116e-01, 2.097457694751533e-01, 2.110169477740231e-01, 2.122881379304069e-01, 2.135593131856296e-01, 2.148305033419921e-01, 2.161016934982196e-01, 2.173728836544614e-01, 2.186440619532956e-01, 2.199152521096795e-01, 2.211864422660633e-01, 2.224576324224472e-01, 2.237288225786179e-01, 2.249999978337695e-01, 2.262711879900113e-01, 2.275423662889521e-01, 2.288135564453359e-01, 2.300847466017056e-01, 2.31355936757997e-01, 2.326271269141144e-01, 2.338983170702851e-01, 2.351694804682246e-01, 2.364406706246085e-01, 2.377118607809924e-01, 2.389830509373052e-01, 2.402542410935469e-01, 2.415254312497886e-01, 2.427966095486584e-01, 2.440677997050422e-01, 2.453389749603182e-01, 2.466101651166274e-01, 2.47881355272855e-01, 2.491525454290967e-01, 2.50423723727931e-01, 2.516949138843148e-01, 2.529661040406987e-01, 2.542372941970825e-01] +PIDDerTim.L=[3.00000011920929e-01, 3.030000031664979e-01, 3.059999944120668e-01, 3.089999856576355e-01, 3.120000067055137e-01, 3.149999973922931e-01, 3.179999891966649e-01, 3.210000096857531e-01, 3.240000014901241e-01, 3.269999910593406e-01, 3.300000126659803e-01, 3.33000004470351e-01, 3.359999962747217e-01, 3.389999880790924e-01, 3.42000007450578e-01, 3.449999970197411e-01, 3.479999910593193e-01, 3.510000104308049e-01, 3.53999999999968e-01, 3.569999940395462e-01, 3.600000134110318e-01, 3.630000074505122e-01, 3.659999970197731e-01, 3.689999865889985e-01, 3.720000104307569e-01, 3.75e-01, 3.779999940395782e-01, 3.810000089406488e-01, 3.840000029802269e-01, 3.86999997019805e-01, 3.899999821187309e-01, 3.930000059604538e-01, 3.96000000000032e-01, 3.989999850989756e-01, 4.020000089406807e-01, 4.050000029802589e-01, 4.079999880792203e-01, 4.110000119209076e-01, 4.140000059604858e-01, 4.170000000000639e-01, 4.19999985098901e-01, 4.230000089406594e-01, 4.260000029802908e-01, 4.289999880791456e-01, 4.320000119209041e-01, 4.350000059605177e-01, 4.379999910593903e-01, 4.410000149011488e-01, 4.440000089405848e-01, 4.469999940394929e-01, 4.49999988079071e-01, 4.530000119207869e-01, 4.560000059604645e-01, 4.59e-01, 4.620000059604645e-01, 4.65e-01, 4.679999940395497e-01, 4.70999988079071e-01, 4.740000119206803e-01, 4.770000059604645e-01, 4.799999821189618e-01, 4.830000059604645e-01, 4.86e-01, 4.889999940395355e-01, 4.920000178811803e-01, 4.950000119205737e-01, 4.97999988079071e-01, 5.009999821188552e-01, 5.04000005960571e-01, 5.070000298023082e-01, 5.099999940393579e-01, 5.130000178810736e-01, 5.159999642376395e-01, 5.189999880793552e-01, 5.220000119207868e-01, 5.249999761581421e-01, 5.279999999998579e-01, 5.310000238415737e-01, 5.339999880794973e-01, 5.369999940398553e-01, 5.400000178812158e-01, 5.429999821186208e-01, 5.460000059603579e-01, 5.490000298020737e-01, 5.519999940399263e-01, 5.550000000003552e-01, 5.580000238416447e-01, 5.609999880791421e-01, 5.640000119208579e-01, 5.669999761583553e-01, 5.699999999996448e-01, 5.730000059600737e-01, 5.759999701979263e-01, 5.789999940396421e-01, 5.820000178813792e-01, 5.849999821187842e-01, 5.880000059601447e-01, 5.910000119205027e-01, 5.939999761584263e-01, 5.970000000001421e-01, 6.000000238418579e-01] +RefDat.y[6]=[1.270000040531158e-01, 1.282999962858867e-01, 1.296000034198155e-01, 1.308999956525896e-01, 1.322000027865151e-01, 1.334999947771447e-01, 1.348000021532147e-01, 1.360999941438443e-01, 1.374000015199139e-01, 1.386999930262656e-01, 1.400000004023351e-01, 1.412999928772479e-01, 1.42600000253313e-01, 1.439000076293825e-01, 1.451999991357342e-01, 1.465000055432027e-01, 1.47799998986712e-01, 1.491000053942116e-01, 1.503999969005766e-01, 1.517000052452027e-01, 1.529999967515544e-01, 1.542000033378523e-01, 1.55399993205078e-01, 1.565999979734471e-01, 1.578000045299466e-01, 1.589999943971634e-01, 1.602000009536629e-01, 1.614000039339193e-01, 1.625999955892577e-01, 1.638000021457573e-01, 1.650000051259248e-01, 1.662999984502853e-01, 1.676000067949114e-01, 1.688999963641499e-01, 1.702000047087494e-01, 1.714999981522409e-01, 1.72800002622534e-01, 1.740999960661055e-01, 1.754000044107316e-01, 1.766999978543031e-01, 1.780000023245518e-01, 1.792999957680878e-01, 1.806000041126873e-01, 1.818999936819258e-01, 1.832000020265519e-01, 1.844999954701056e-01, 1.857999999404165e-01, 1.870999933838903e-01, 1.884000017285075e-01, 1.897000061988361e-01, 1.909999996423721e-01, 1.922000061988546e-01, 1.933999978541759e-01, 1.946000044106584e-01, 1.958000038146014e-01, 1.969999954700825e-01, 1.982000020265565e-01, 1.993999936819396e-01, 2.006000002383688e-01, 2.018000067948514e-01, 2.029999912977929e-01, 2.042999994040175e-01, 2.055999928474639e-01, 2.069000011920716e-01, 2.081999946356246e-01, 2.095000029801257e-01, 2.108000035762005e-01, 2.120999970198424e-01, 2.134000053643967e-01, 2.146999988079057e-01, 2.160000071525041e-01, 2.173000005959505e-01, 2.186000011920076e-01, 2.198999946356672e-01, 2.212000029802038e-01, 2.224999964237213e-01, 2.23800004768329e-01, 2.250999982119175e-01, 2.26400006556383e-01, 2.276999922514921e-01, 2.290000005960997e-01, 2.302999940395369e-01, 2.316000023841538e-01, 2.328999958277246e-01, 2.342000041722079e-01, 2.35499989867317e-01, 2.367999982119246e-01, 2.381000065564967e-01, 2.393999999999787e-01, 2.407000083445863e-01, 2.420000015496497e-01, 2.432000009537525e-01, 2.443999926090738e-01, 2.455999991655563e-01, 2.468000057220473e-01, 2.479999973773601e-01, 2.492000039338426e-01, 2.504000033379454e-01, 2.515999949932667e-01, 2.52799986648588e-01, 2.540000081062317e-01] +PIDDerTim.Td=[1.271186470985413e-01, 1.283898353860783e-01, 1.296610236736153e-01, 1.309321970599961e-01, 1.322033853475348e-01, 1.334745733982963e-01, 1.347457619226122e-01, 1.360169499733681e-01, 1.372881384976758e-01, 1.385593260748808e-01, 1.398305145992018e-01, 1.411016882223615e-01, 1.423728767466825e-01, 1.436440652710035e-01, 1.449152528481996e-01, 1.461864404253867e-01, 1.474576298968104e-01, 1.487288174740287e-01, 1.500000050512203e-01, 1.512711796215094e-01, 1.525423671987233e-01, 1.538135566701514e-01, 1.55084744247343e-01, 1.563559318245346e-01, 1.57627121295945e-01, 1.588983088731766e-01, 1.601694983445558e-01, 1.614406840275598e-01, 1.627118585978578e-01, 1.639830480692993e-01, 1.65254233752321e-01, 1.665254232236825e-01, 1.677966126950796e-01, 1.690677983780658e-01, 1.703389878495161e-01, 1.71610177320922e-01, 1.728813481028448e-01, 1.74152537574224e-01, 1.754237270456388e-01, 1.766949165170891e-01, 1.77966102200022e-01, 1.792372916714457e-01, 1.80508481142825e-01, 1.817796668258556e-01, 1.830508413961447e-01, 1.84322030867595e-01, 1.855932165505902e-01, 1.868644060219783e-01, 1.881355954934286e-01, 1.894067811763616e-01, 1.906779706478119e-01, 1.919491601191731e-01, 1.932203346895152e-01, 1.944915241609474e-01, 1.957627060556177e-01, 1.970338955269789e-01, 1.983050849983133e-01, 1.995762744697013e-01, 2.008474639410625e-01, 2.021186534124237e-01, 2.033898204061459e-01, 2.046610098775072e-01, 2.059321993488684e-01, 2.072033888202651e-01, 2.084745782916973e-01, 2.09745767762952e-01, 2.1101694965764e-01, 2.122881391290722e-01, 2.135593136993966e-01, 2.148305031707846e-01, 2.161016926422078e-01, 2.1737288211364e-01, 2.186440640081505e-01, 2.199152534795827e-01, 2.211864429510149e-01, 2.224576324224472e-01, 2.237288218938084e-01, 2.249999964641505e-01, 2.262711859355828e-01, 2.275423678302531e-01, 2.288135573015254e-01, 2.300847467729487e-01, 2.313559362443366e-01, 2.326271257156978e-01, 2.33898315187059e-01, 2.351694821807813e-01, 2.364406716521425e-01, 2.377118611235037e-01, 2.389830505949004e-01, 2.402542400663326e-01, 2.415254295375873e-01, 2.427966114322753e-01, 2.440678009037076e-01, 2.453389754740319e-01, 2.466101649454199e-01, 2.478813544168431e-01, 2.491525438882753e-01, 2.504237257827858e-01, 2.51694915254218e-01, 2.529661047256503e-01, 2.542372941970825e-01] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PIDGain.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PIDGain.txt index bf8a3921774..279f717e9c7 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PIDGain.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PIDGain.txt @@ -1,4 +1,4 @@ -last-generated=2022-10-06 +last-generated=2023-04-06 statistics-simulation= { "linear": " ", @@ -8,6 +8,6 @@ statistics-simulation= time=[0e+00, 1e+00] PIDGai.kp=[1e+00, 1.009999990686771e+00, 1.019999981373543e+00, 1.029999972060313e+00, 1.039999962747139e+00, 1.049999951571236e+00, 1.059999944120708e+00, 1.07000005215405e+00, 1.080000044703457e+00, 1.090000029802376e+00, 1.100000022351764e+00, 1.110000014901152e+00, 1.120000007450541e+00, 1.129999999999929e+00, 1.139999985098848e+00, 1.149999970197766e+00, 1.159999970197624e+00, 1.169999955296543e+00, 1.179999940395462e+00, 1.190000059604609e+00, 1.20000004470335e+00, 1.210000044703386e+00, 1.220000029802305e+00, 1.230000014901223e+00, 1.240000014901081e+00, 1.25e+00, 1.259999999999858e+00, 1.269999970197838e+00, 1.279999970197695e+00, 1.289999970198051e+00, 1.299999940395533e+00, 1.309999940395391e+00, 1.320000059604538e+00, 1.330000029801736e+00, 1.340000029802376e+00, 1.350000029802234e+00, 1.360000000000213e+00, 1.370000000000071e+00, 1.379999999999929e+00, 1.389999999999787e+00, 1.399999970197766e+00, 1.409999970197624e+00, 1.419999970198264e+00, 1.429999940395462e+00, 1.440000059604609e+00, 1.450000059604467e+00, 1.460000029801949e+00, 1.470000029802305e+00, 1.480000029802162e+00, 1.490000000000142e+00, 1.5e+00, 1.509999999999716e+00, 1.519999999999432e+00, 1.529999999999147e+00, 1.539999940395995e+00, 1.549999940395711e+00, 1.559999940395355e+00, 1.570000059604432e+00, 1.580000059604147e+00, 1.590000059603863e+00, 1.60000000000071e+00, 1.610000000000426e+00, 1.620000000000142e+00, 1.629999999999858e+00, 1.639999999999574e+00, 1.64999999999929e+00, 1.659999940396137e+00, 1.669999940395853e+00, 1.679999940395568e+00, 1.690000059604645e+00, 1.700000059604289e+00, 1.710000059604005e+00, 1.720000000000853e+00, 1.730000000000568e+00, 1.740000000000284e+00, 1.75e+00, 1.759999999999716e+00, 1.769999999999432e+00, 1.779999999999147e+00, 1.789999940395995e+00, 1.799999940395711e+00, 1.809999940395355e+00, 1.820000059604432e+00, 1.830000059604147e+00, 1.840000059603863e+00, 1.85000000000071e+00, 1.860000000000426e+00, 1.870000000000142e+00, 1.879999999999858e+00, 1.889999999999574e+00, 1.89999999999929e+00, 1.909999940396137e+00, 1.919999940395853e+00, 1.929999940395568e+00, 1.940000059604645e+00, 1.950000059604289e+00, 1.960000059604005e+00, 1.970000000000853e+00, 1.980000000000568e+00, 1.990000000000284e+00, 2e+00] PIDGai.T=[5e-01, 5.049999953433857e-01, 5.099999906867714e-01, 5.149999860301567e-01, 5.199999813735693e-01, 5.24999975785618e-01, 5.29999972060354e-01, 5.350000260770249e-01, 5.400000223517285e-01, 5.450000149011879e-01, 5.50000011175882e-01, 5.550000074505762e-01, 5.600000037252704e-01, 5.649999999999645e-01, 5.699999925494239e-01, 5.749999850988832e-01, 5.799999850988121e-01, 5.849999776482715e-01, 5.899999701977309e-01, 5.950000298023046e-01, 6.000000223516752e-01, 6.050000223516929e-01, 6.100000149011523e-01, 6.150000074506117e-01, 6.200000074505406e-01, 6.25e-01, 6.29999999999929e-01, 6.349999850989188e-01, 6.399999850988477e-01, 6.449999850990253e-01, 6.499999701977665e-01, 6.549999701976954e-01, 6.600000298022691e-01, 6.650000149008681e-01, 6.700000149011879e-01, 6.750000149011168e-01, 6.800000000001065e-01, 6.850000000000355e-01, 6.899999999999645e-01, 6.949999999998935e-01, 6.999999850988832e-01, 7.049999850988121e-01, 7.099999850991319e-01, 7.149999701977309e-01, 7.200000298023046e-01, 7.250000298022335e-01, 7.300000149009747e-01, 7.350000149011523e-01, 7.400000149010812e-01, 7.45000000000071e-01, 7.5e-01, 7.549999999998579e-01, 7.599999999997158e-01, 7.649999999995737e-01, 7.699999701979974e-01, 7.749999701978553e-01, 7.799999701976776e-01, 7.850000298022158e-01, 7.900000298020737e-01, 7.950000298019316e-01, 8.000000000003552e-01, 8.050000000002131e-01, 8.10000000000071e-01, 8.14999999999929e-01, 8.199999999997869e-01, 8.249999999996448e-01, 8.299999701980684e-01, 8.349999701979263e-01, 8.399999701977842e-01, 8.450000298023224e-01, 8.500000298021447e-01, 8.550000298020026e-01, 8.600000000004263e-01, 8.650000000002842e-01, 8.700000000001421e-01, 8.75e-01, 8.799999999998579e-01, 8.849999999997158e-01, 8.899999999995737e-01, 8.949999701979974e-01, 8.999999701978553e-01, 9.049999701976776e-01, 9.100000298022158e-01, 9.150000298020737e-01, 9.200000298019316e-01, 9.250000000003552e-01, 9.300000000002131e-01, 9.35000000000071e-01, 9.39999999999929e-01, 9.449999999997869e-01, 9.499999999996448e-01, 9.549999701980684e-01, 9.599999701979263e-01, 9.649999701977842e-01, 9.700000298023224e-01, 9.750000298021447e-01, 9.800000298020026e-01, 9.850000000004263e-01, 9.900000000002842e-01, 9.950000000001421e-01, 1e+00] -PIDGai.L=[3.00000011920929e-01, 3.030000032111988e-01, 3.059999945014752e-01, 3.089999857917481e-01, 3.120000068843307e-01, 3.1499999724329e-01, 3.179999894648903e-01, 3.210000096261474e-01, 3.240000018477306e-01, 3.269999903440742e-01, 3.300000123679527e-01, 3.330000045895532e-01, 3.359999968111715e-01, 3.389999890327809e-01, 3.420000073313669e-01, 3.449999958277193e-01, 3.479999917745857e-01, 3.510000100731717e-01, 3.539999985694352e-01, 3.569999945163904e-01, 3.600000128149764e-01, 3.630000087618339e-01, 3.659999972581952e-01, 3.68999985754521e-01, 3.720000115036565e-01, 3.75e-01, 3.779999959469552e-01, 3.810000067948496e-01, 3.840000027418048e-01, 3.869999986887599e-01, 3.899999797345096e-01, 3.930000054836096e-01, 3.960000014305647e-01, 3.989999824763321e-01, 4.020000082254144e-01, 4.050000041722807e-01, 4.079999852181547e-01, 4.110000109672191e-01, 4.140000069141033e-01, 4.170000028611295e-01, 4.199999839067903e-01, 4.230000096559258e-01, 4.260000056027389e-01, 4.289999866486128e-01, 4.320000123977484e-01, 4.350000083445615e-01, 4.379999893904354e-01, 4.410000151395709e-01, 4.44000011086384e-01, 4.469999921322579e-01, 4.49999988079071e-01, 4.530000138281355e-01, 4.560000097748775e-01, 4.590000057220459e-01, 4.620000016689301e-01, 4.649999976158142e-01, 4.679999935626984e-01, 4.709999895095825e-01, 4.740000152585404e-01, 4.770000112052824e-01, 4.799999773505902e-01, 4.830000030994415e-01, 4.859999990463967e-01, 4.889999949932098e-01, 4.920000207422032e-01, 4.950000166889453e-01, 4.979999828342531e-01, 5.009999787809951e-01, 5.040000045300596e-01, 5.070000302791595e-01, 5.099999964235437e-01, 5.130000221726081e-01, 5.159999585155935e-01, 5.18999984264658e-01, 5.220000100137224e-01, 5.249999761581421e-01, 5.280000019072065e-01, 5.31000027656271e-01, 5.339999938015433e-01, 5.369999897483209e-01, 5.4000001549703e-01, 5.429999816417694e-01, 5.460000073908694e-01, 5.490000331399338e-01, 5.519999992843535e-01, 5.549999952319836e-01, 5.580000209806218e-01, 5.609999871254677e-01, 5.640000128745323e-01, 5.669999790193782e-01, 5.700000047680164e-01, 5.730000007156465e-01, 5.759999668600662e-01, 5.789999926091306e-01, 5.820000183582306e-01, 5.8499998450297e-01, 5.880000102516791e-01, 5.910000061984567e-01, 5.93999972343729e-01, 5.969999980927935e-01, 6.000000238418579e-01] -PIDGai.k=[9.49999988079071e-01, 9.405940767935639e-01, 9.313725226866972e-01, 9.22330080549172e-01, 9.13461564776384e-01, 9.047619114213735e-01, 8.962264043718727e-01, 8.878504637689104e-01, 8.796296097525849e-01, 8.715596242808541e-01, 8.636363762643579e-01, 8.558558814683416e-01, 8.482142655926266e-01, 8.407079523449109e-01, 8.33333314131997e-01, 8.260869449343398e-01, 8.189654907894031e-01, 8.119658250726932e-01, 8.050847724257855e-01, 7.983193373173854e-01, 7.916666895436687e-01, 7.851239378060366e-01, 7.786885488370624e-01, 7.723577062643717e-01, 7.661290118303472e-01, 7.599999904632568e-01, 7.539682301420675e-01, 7.480315066706938e-01, 7.421875010576051e-01, 7.364340948051341e-01, 7.307692272670684e-01, 7.251908203291423e-01, 7.196969926579135e-01, 7.142857420899057e-01, 7.089552312234501e-01, 7.037036967649851e-01, 6.985294335236517e-01, 6.934306658474082e-01, 6.884058081643121e-01, 6.834532511408543e-01, 6.785714074461476e-01, 6.737588618002714e-01, 6.690140868512251e-01, 6.643356731698628e-01, 6.597222073132263e-01, 6.551723994235512e-01, 6.506849584244234e-01, 6.46258532202724e-01, 6.418918896375844e-01, 6.375839176605937e-01, 6.333333253860474e-01, 6.291390596904763e-01, 6.249999880545577e-01, 6.209150375895698e-01, 6.168831122255133e-01, 6.129032445518791e-01, 6.089743390012684e-01, 6.050955611198249e-01, 6.012658380085799e-01, 5.974842755879434e-01, 5.937500135306363e-01, 5.900621494358014e-01, 5.864197638204993e-01, 5.828220818296059e-01, 5.792682689942577e-01, 5.7575755044043e-01, 5.722891826609033e-01, 5.688622680815263e-01, 5.654761828043975e-01, 5.621301519710173e-01, 5.588235199357301e-01, 5.555555714254248e-01, 5.523256203941751e-01, 5.491329524107439e-01, 5.459770009976317e-01, 5.428571701049805e-01, 5.397727444909791e-01, 5.367231280901378e-01, 5.337078440618878e-01, 5.307262637140925e-01, 5.277777963675111e-01, 5.248618732532855e-01, 5.219780175424763e-01, 5.191256927830721e-01, 5.163043625277675e-01, 5.13513515576789e-01, 5.107526839230281e-01, 5.08021416260471e-01, 5.05319176151436e-01, 5.02645486756633e-01, 4.999999904398093e-01, 4.973822042449649e-01, 4.947916633078104e-01, 4.92227974342671e-01, 4.896907201179299e-01, 4.87179483405312e-01, 4.846938767633536e-01, 4.822335052267483e-01, 4.797979961955375e-01, 4.773869251415851e-01, 4.749999940395355e-01] -RefDat.y[4]=[9.49999988079071e-01, 9.409999845176964e-01, 9.309999940544396e-01, 9.219999906048225e-01, 9.129999871552049e-01, 9.049999717623168e-01, 8.960000269859717e-01, 8.880000117421116e-01, 8.799999934435158e-01, 8.719999808073843e-01, 8.640000231563933e-01, 8.560000056028277e-01, 8.479999886453351e-01, 8.410000157355552e-01, 8.33000004887572e-01, 8.25999981165021e-01, 8.190000039339332e-01, 8.119999775290889e-01, 8.050000107287828e-01, 7.979999768734156e-01, 7.919999971985595e-01, 7.850000229476417e-01, 7.789999830722987e-01, 7.720000189542149e-01, 7.659999701381129e-01, 7.599999904632568e-01, 7.540000033379312e-01, 7.480000311135446e-01, 7.419999843835742e-01, 7.359999972582485e-01, 7.310000121592587e-01, 7.25000025033933e-01, 7.200000250337909e-01, 7.139999932049728e-01, 7.089999932050438e-01, 7.039999932051149e-01, 6.990000081061252e-01, 6.930000209807995e-01, 6.880000209807284e-01, 6.830000209805153e-01, 6.790000230073485e-01, 6.74000023007313e-01, 6.690000230070998e-01, 6.639999783040692e-01, 6.600000250338975e-01, 6.549999654293949e-01, 6.510000270604466e-01, 6.460000270604821e-01, 6.420000141856657e-01, 6.380000114440918e-01, 6.330000162124634e-01, 6.290000033380022e-01, 6.24999990463541e-01, 6.209999775890799e-01, 6.169999945160529e-01, 6.12999981641947e-01, 6.090000283718109e-01, 6.050000154971011e-01, 6.010000109672546e-01, 5.970000028610229e-01, 5.93999981880188e-01, 5.899999809267268e-01, 5.860000276564842e-01, 5.830000019074196e-01, 5.789999961853027e-01, 5.75999963283894e-01, 5.72000039815512e-01, 5.690000140664475e-01, 5.650000011919863e-01, 5.619999754428864e-01, 5.590000092985022e-01, 5.559999835494378e-01, 5.520000004764108e-01, 5.490000343319912e-01, 5.460000085829267e-01, 5.429999828338623e-01, 5.400000166891584e-01, 5.369999909403782e-01, 5.339999651913138e-01, 5.31000018119812e-01, 5.279999971389771e-01, 5.249999761581421e-01, 5.220000112057798e-01, 5.189999938011169e-01, 5.15999972820282e-01, 5.139999985694885e-01, 5.109999775886536e-01, 5.080000185965782e-01, 5.049999952316284e-01, 5.030000138280645e-01, 4.999999880794263e-01, 4.970000219341185e-01, 4.950000047683716e-01, 4.920000171660311e-01, 4.900000083446148e-01, 4.869999885559082e-01, 4.850000035762787e-01, 4.820000076293945e-01, 4.799999892711639e-01, 4.770000028608808e-01, 4.749999940395355e-01] +PIDGai.L=[3.00000011920929e-01, 3.030000031664979e-01, 3.059999944120668e-01, 3.089999856576355e-01, 3.120000067055137e-01, 3.149999973922931e-01, 3.179999891966649e-01, 3.210000096857531e-01, 3.240000014901241e-01, 3.269999910593406e-01, 3.300000126659803e-01, 3.33000004470351e-01, 3.359999962747217e-01, 3.389999880790924e-01, 3.42000007450578e-01, 3.449999970197411e-01, 3.479999910593193e-01, 3.510000104308049e-01, 3.53999999999968e-01, 3.569999940395462e-01, 3.600000134110318e-01, 3.630000074505122e-01, 3.659999970197731e-01, 3.689999865889985e-01, 3.720000104307569e-01, 3.75e-01, 3.779999940395782e-01, 3.810000089406488e-01, 3.840000029802269e-01, 3.86999997019805e-01, 3.899999821187309e-01, 3.930000059604538e-01, 3.96000000000032e-01, 3.989999850989756e-01, 4.020000089406807e-01, 4.050000029802589e-01, 4.079999880792203e-01, 4.110000119209076e-01, 4.140000059604858e-01, 4.170000000000639e-01, 4.19999985098901e-01, 4.230000089406594e-01, 4.260000029802908e-01, 4.289999880791456e-01, 4.320000119209041e-01, 4.350000059605177e-01, 4.379999910593903e-01, 4.410000149011488e-01, 4.440000089405848e-01, 4.469999940394929e-01, 4.49999988079071e-01, 4.530000119207869e-01, 4.560000059604645e-01, 4.59e-01, 4.620000059604645e-01, 4.65e-01, 4.679999940395497e-01, 4.70999988079071e-01, 4.740000119206803e-01, 4.770000059604645e-01, 4.799999821189618e-01, 4.830000059604645e-01, 4.86e-01, 4.889999940395355e-01, 4.920000178811803e-01, 4.950000119205737e-01, 4.97999988079071e-01, 5.009999821188552e-01, 5.04000005960571e-01, 5.070000298023082e-01, 5.099999940393579e-01, 5.130000178810736e-01, 5.159999642376395e-01, 5.189999880793552e-01, 5.220000119207868e-01, 5.249999761581421e-01, 5.279999999998579e-01, 5.310000238415737e-01, 5.339999880794973e-01, 5.369999940398553e-01, 5.400000178812158e-01, 5.429999821186208e-01, 5.460000059603579e-01, 5.490000298020737e-01, 5.519999940399263e-01, 5.550000000003552e-01, 5.580000238416447e-01, 5.609999880791421e-01, 5.640000119208579e-01, 5.669999761583553e-01, 5.699999999996448e-01, 5.730000059600737e-01, 5.759999701979263e-01, 5.789999940396421e-01, 5.820000178813792e-01, 5.849999821187842e-01, 5.880000059601447e-01, 5.910000119205027e-01, 5.939999761584263e-01, 5.970000000001421e-01, 6.000000238418579e-01] +PIDGai.k=[9.49999988079071e-01, 9.405940769025434e-01, 9.313725229004063e-01, 9.223300808635801e-01, 9.134615651875749e-01, 9.047619110817563e-01, 8.962264049656377e-01, 8.878504636381082e-01, 8.796296105153333e-01, 8.71559622768467e-01, 8.636363756456097e-01, 8.558558817090551e-01, 8.482142666567333e-01, 8.407079542032606e-01, 8.333333139016039e-01, 8.260869426703776e-01, 8.189654921122889e-01, 8.119658244165794e-01, 8.050847698456679e-01, 7.983193381553978e-01, 7.916666885042356e-01, 7.851239400353422e-01, 7.786885492357827e-01, 7.723577048795445e-01, 7.661290135671943e-01, 7.599999904632568e-01, 7.539682331331621e-01, 7.480315033309721e-01, 7.421875006922803e-01, 7.364340973019762e-01, 7.307692237257306e-01, 7.25190819631675e-01, 7.196969947021409e-01, 7.142857383683391e-01, 7.089552302236118e-01, 7.037036983937234e-01, 6.985294296415383e-01, 6.934306645721287e-01, 6.884058094114541e-01, 6.834532548285637e-01, 6.785714059197273e-01, 6.737588626962995e-01, 6.690140900905474e-01, 6.643356714144705e-01, 6.597222078859937e-01, 6.551724022483081e-01, 6.506849564600254e-01, 6.462585324775614e-01, 6.418918920778675e-01, 6.375839155050956e-01, 6.333333253860474e-01, 6.291390617743208e-01, 6.249999921676779e-01, 6.209150436791022e-01, 6.168831076858616e-01, 6.129032420625347e-01, 6.089743385097797e-01, 6.050955625658969e-01, 6.012658413399742e-01, 5.974842807573385e-01, 5.937500088581863e-01, 5.900621466672895e-01, 5.864197629090305e-01, 5.82822082724022e-01, 5.792682716451055e-01, 5.757575548052202e-01, 5.722891778869896e-01, 5.688622650798894e-01, 5.654761815333291e-01, 5.621301523871165e-01, 5.588235219916508e-01, 5.555555750832368e-01, 5.523256155435241e-01, 5.491329492144925e-01, 5.459769994176956e-01, 5.428571701049805e-01, 5.397727460257254e-01, 5.367231311249566e-01, 5.337078485638103e-01, 5.307262603555559e-01, 5.277777945222628e-01, 5.248618728883461e-01, 5.219780186189303e-01, 5.191256952679401e-01, 5.163043663895729e-01, 5.135135120838201e-01, 5.107526818498416e-01, 5.080214155766563e-01, 5.053191768240243e-01, 5.026454887535085e-01, 4.999999937324086e-01, 4.973822006403005e-01, 4.947916610380556e-01, 4.922279733798309e-01, 4.896907204338057e-01, 4.871794849684796e-01, 4.846938795485985e-01, 4.822335015305675e-01, 4.797979937564277e-01, 4.773869239343934e-01, 4.749999940395355e-01] +RefDat.y[4]=[9.49999988079071e-01, 9.413999913200723e-01, 9.327999945610738e-01, 9.241999978020756e-01, 9.156000010430764e-01, 9.070000058859627e-01, 8.984000075250791e-01, 8.898000123679659e-01, 8.812000140070846e-01, 8.726000220536259e-01, 8.640000236928077e-01, 8.568000193118914e-01, 8.496000151395989e-01, 8.424000109672888e-01, 8.352000121593433e-01, 8.280000133513978e-01, 8.208000038147228e-01, 8.136000050067773e-01, 8.064000061988319e-01, 7.991999966621569e-01, 7.919999978542115e-01, 7.858999927580835e-01, 7.797999970793811e-01, 7.737000014006786e-01, 7.675999966323768e-01, 7.615000009536743e-01, 7.553999961853723e-01, 7.493000095962694e-01, 7.432000048279676e-01, 7.371000000596656e-01, 7.310000134705626e-01, 7.257999790192119e-01, 7.206000052452812e-01, 7.153999873640732e-01, 7.102000135898228e-01, 7.049999802113184e-01, 6.998000219343643e-01, 6.94599988556002e-01, 6.894000147818581e-01, 6.841999814034958e-01, 6.790000231265417e-01, 6.743999703168944e-01, 6.697999774694716e-01, 6.65199998331055e-01, 6.606000054836323e-01, 6.560000126362096e-01, 6.51400033497793e-01, 6.467999810457254e-01, 6.421999881983027e-01, 6.376000090598861e-01, 6.330000162124634e-01, 6.291000209806786e-01, 6.251999661448175e-01, 6.21299970913317e-01, 6.173999989268286e-01, 6.135000036953281e-01, 6.096000084638553e-01, 6.05700013232327e-01, 6.018000180003292e-01, 5.978999631646813e-01, 5.939999911789033e-01, 5.905000021456607e-01, 5.870000140666607e-01, 5.835000259875185e-01, 5.799999783040158e-01, 5.764999902250159e-01, 5.730000230071974e-01, 5.695000349281975e-01, 5.659999872445527e-01, 5.624999991655278e-01, 5.590000115633189e-01, 5.558999710328141e-01, 5.528000085830262e-01, 5.497000276565268e-01, 5.465999871253825e-01, 5.435000061988831e-01, 5.404000252723836e-01, 5.372999847412393e-01, 5.342000038147399e-01, 5.310999817609467e-01, 5.280000008344472e-01, 5.252000100135717e-01, 5.224000195501955e-01, 5.195999694826209e-01, 5.167999790194777e-01, 5.140000052449245e-01, 5.112000147817813e-01, 5.084000243186382e-01, 5.055999742508503e-01, 5.027999837877072e-01, 4.999999940397131e-01, 4.975000089405013e-01, 4.950000089405724e-01, 4.925000089406434e-01, 4.900000089406612e-01, 4.875000089406079e-01, 4.850000089405369e-01, 4.824999940397487e-01, 4.799999940396776e-01, 4.774999940394645e-01, 4.749999940395355e-01] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PIDIntegralTime.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PIDIntegralTime.txt index 61b21cab0fd..8004f01f3d4 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PIDIntegralTime.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PIDIntegralTime.txt @@ -1,4 +1,4 @@ -last-generated=2022-10-06 +last-generated=2023-04-06 statistics-simulation= { "linear": " ", @@ -7,6 +7,6 @@ statistics-simulation= } time=[0e+00, 1e+00] PIDIntTim.T=[5e-01, 5.049999953433857e-01, 5.099999906867714e-01, 5.149999860301567e-01, 5.199999813735693e-01, 5.24999975785618e-01, 5.29999972060354e-01, 5.350000260770249e-01, 5.400000223517285e-01, 5.450000149011879e-01, 5.50000011175882e-01, 5.550000074505762e-01, 5.600000037252704e-01, 5.649999999999645e-01, 5.699999925494239e-01, 5.749999850988832e-01, 5.799999850988121e-01, 5.849999776482715e-01, 5.899999701977309e-01, 5.950000298023046e-01, 6.000000223516752e-01, 6.050000223516929e-01, 6.100000149011523e-01, 6.150000074506117e-01, 6.200000074505406e-01, 6.25e-01, 6.29999999999929e-01, 6.349999850989188e-01, 6.399999850988477e-01, 6.449999850990253e-01, 6.499999701977665e-01, 6.549999701976954e-01, 6.600000298022691e-01, 6.650000149008681e-01, 6.700000149011879e-01, 6.750000149011168e-01, 6.800000000001065e-01, 6.850000000000355e-01, 6.899999999999645e-01, 6.949999999998935e-01, 6.999999850988832e-01, 7.049999850988121e-01, 7.099999850991319e-01, 7.149999701977309e-01, 7.200000298023046e-01, 7.250000298022335e-01, 7.300000149009747e-01, 7.350000149011523e-01, 7.400000149010812e-01, 7.45000000000071e-01, 7.5e-01, 7.549999999998579e-01, 7.599999999997158e-01, 7.649999999995737e-01, 7.699999701979974e-01, 7.749999701978553e-01, 7.799999701976776e-01, 7.850000298022158e-01, 7.900000298020737e-01, 7.950000298019316e-01, 8.000000000003552e-01, 8.050000000002131e-01, 8.10000000000071e-01, 8.14999999999929e-01, 8.199999999997869e-01, 8.249999999996448e-01, 8.299999701980684e-01, 8.349999701979263e-01, 8.399999701977842e-01, 8.450000298023224e-01, 8.500000298021447e-01, 8.550000298020026e-01, 8.600000000004263e-01, 8.650000000002842e-01, 8.700000000001421e-01, 8.75e-01, 8.799999999998579e-01, 8.849999999997158e-01, 8.899999999995737e-01, 8.949999701979974e-01, 8.999999701978553e-01, 9.049999701976776e-01, 9.100000298022158e-01, 9.150000298020737e-01, 9.200000298019316e-01, 9.250000000003552e-01, 9.300000000002131e-01, 9.35000000000071e-01, 9.39999999999929e-01, 9.449999999997869e-01, 9.499999999996448e-01, 9.549999701980684e-01, 9.599999701979263e-01, 9.649999701977842e-01, 9.700000298023224e-01, 9.750000298021447e-01, 9.800000298020026e-01, 9.850000000004263e-01, 9.900000000002842e-01, 9.950000000001421e-01, 1e+00] -PIDIntTim.L=[3.00000011920929e-01, 3.030000032111988e-01, 3.059999945014752e-01, 3.089999857917481e-01, 3.120000068843307e-01, 3.1499999724329e-01, 3.179999894648903e-01, 3.210000096261474e-01, 3.240000018477306e-01, 3.269999903440742e-01, 3.300000123679527e-01, 3.330000045895532e-01, 3.359999968111715e-01, 3.389999890327809e-01, 3.420000073313669e-01, 3.449999958277193e-01, 3.479999917745857e-01, 3.510000100731717e-01, 3.539999985694352e-01, 3.569999945163904e-01, 3.600000128149764e-01, 3.630000087618339e-01, 3.659999972581952e-01, 3.68999985754521e-01, 3.720000115036565e-01, 3.75e-01, 3.779999959469552e-01, 3.810000067948496e-01, 3.840000027418048e-01, 3.869999986887599e-01, 3.899999797345096e-01, 3.930000054836096e-01, 3.960000014305647e-01, 3.989999824763321e-01, 4.020000082254144e-01, 4.050000041722807e-01, 4.079999852181547e-01, 4.110000109672191e-01, 4.140000069141033e-01, 4.170000028611295e-01, 4.199999839067903e-01, 4.230000096559258e-01, 4.260000056027389e-01, 4.289999866486128e-01, 4.320000123977484e-01, 4.350000083445615e-01, 4.379999893904354e-01, 4.410000151395709e-01, 4.44000011086384e-01, 4.469999921322579e-01, 4.49999988079071e-01, 4.530000138281355e-01, 4.560000097748775e-01, 4.590000057220459e-01, 4.620000016689301e-01, 4.649999976158142e-01, 4.679999935626984e-01, 4.709999895095825e-01, 4.740000152585404e-01, 4.770000112052824e-01, 4.799999773505902e-01, 4.830000030994415e-01, 4.859999990463967e-01, 4.889999949932098e-01, 4.920000207422032e-01, 4.950000166889453e-01, 4.979999828342531e-01, 5.009999787809951e-01, 5.040000045300596e-01, 5.070000302791595e-01, 5.099999964235437e-01, 5.130000221726081e-01, 5.159999585155935e-01, 5.18999984264658e-01, 5.220000100137224e-01, 5.249999761581421e-01, 5.280000019072065e-01, 5.31000027656271e-01, 5.339999938015433e-01, 5.369999897483209e-01, 5.4000001549703e-01, 5.429999816417694e-01, 5.460000073908694e-01, 5.490000331399338e-01, 5.519999992843535e-01, 5.549999952319836e-01, 5.580000209806218e-01, 5.609999871254677e-01, 5.640000128745323e-01, 5.669999790193782e-01, 5.700000047680164e-01, 5.730000007156465e-01, 5.759999668600662e-01, 5.789999926091306e-01, 5.820000183582306e-01, 5.8499998450297e-01, 5.880000102516791e-01, 5.910000061984567e-01, 5.93999972343729e-01, 5.969999980927935e-01, 6.000000238418579e-01] -PIDIntTim.Ti=[4.457142949104309e-01, 4.501714409641979e-01, 4.546285572156492e-01, 4.590857032694192e-01, 4.635428493231898e-01, 4.679999943399676e-01, 4.724571414307305e-01, 4.769142864475346e-01, 4.813714335382693e-01, 4.858285764809876e-01, 4.902857235718282e-01, 4.947428706626245e-01, 4.991999879510272e-01, 5.03657164844066e-01, 5.081142779846395e-01, 5.125714507295737e-01, 5.170285721661076e-01, 5.214856853066634e-01, 5.259428580515443e-01, 5.303999794881493e-01, 5.348571522332255e-01, 5.393142736695818e-01, 5.437714464148358e-01, 5.482285595551961e-01, 5.526857405962683e-01, 5.571428537368774e-01, 5.616000347774167e-01, 5.660571396221009e-01, 5.705142610588836e-01, 5.749714420997426e-01, 5.794285469440715e-01, 5.838857279854635e-01, 5.883428494217843e-01, 5.928000138706869e-01, 5.972571353074341e-01, 6.017143163484707e-01, 6.061714211926575e-01, 6.106285426295468e-01, 6.150857236705125e-01, 6.195428451066912e-01, 6.240000095560202e-01, 6.284571309925542e-01, 6.329143120333777e-01, 6.373714168779908e-01, 6.418285979192406e-01, 6.462857193554193e-01, 6.507428242002101e-01, 6.552000052412823e-01, 6.59657126677461e-01, 6.641142911265768e-01, 6.68571412563324e-01, 6.730285936040684e-01, 6.77485715040168e-01, 6.819428960809124e-01, 6.86399984333949e-01, 6.908571653752618e-01, 6.953142868118902e-01, 6.997714082483847e-01, 7.042285892889159e-01, 7.086857107250155e-01, 7.131428585825548e-01, 7.175999800196491e-01, 7.220571610605356e-01, 7.265142824969194e-01, 7.309714635376638e-01, 7.354285849737634e-01, 7.398856732272974e-01, 7.443428542678286e-01, 7.487999757047098e-01, 7.532571567457069e-01, 7.57714278181767e-01, 7.621714592225113e-01, 7.666285474759742e-01, 7.710857285164344e-01, 7.755428499531025e-01, 7.799999713897705e-01, 7.844571524305149e-01, 7.889142738671829e-01, 7.933714549073589e-01, 7.97828543161035e-01, 8.022857242017083e-01, 8.067428456384078e-01, 8.112000266792628e-01, 8.156571481153624e-01, 8.201143291561068e-01, 8.245714174090013e-01, 8.290285388460956e-01, 8.334857198869822e-01, 8.37942841323508e-01, 8.424000223641104e-01, 8.468571438002099e-01, 8.513142916576071e-01, 8.557714130947726e-01, 8.602285941355879e-01, 8.646857155721535e-01, 8.691428370085688e-01, 8.736000180489578e-01, 8.780571063024207e-01, 8.82514287342881e-01, 8.869714087798332e-01, 8.914285898208618e-01] -RefDat.y[5]=[4.460000097751617e-01, 4.499999881908316e-01, 4.550000133365363e-01, 4.589999917522126e-01, 4.639999866485596e-01, 4.679999943822671e-01, 4.720000035315665e-01, 4.769999979436415e-01, 4.810000070929394e-01, 4.859999996423988e-01, 4.90000008791674e-01, 4.950000050663904e-01, 4.990000142156878e-01, 5.04000010490382e-01, 5.080000159144447e-01, 5.130000084639039e-01, 5.170000213384361e-01, 5.210000276565552e-01, 5.26000019311745e-01, 5.299999725819167e-01, 5.350000247358609e-01, 5.389999780060326e-01, 5.440000301599414e-01, 5.479999759793592e-01, 5.529999759794481e-01, 5.569999814033508e-01, 5.619999766349792e-01, 5.659999793768729e-01, 5.709999793768018e-01, 5.74999992251334e-01, 5.789999961853027e-01, 5.83999990224856e-01, 5.880000030993883e-01, 5.929999881983781e-01, 5.970000010729103e-01, 6.020000010728392e-01, 6.059999990464322e-01, 6.109999990463612e-01, 6.150000119208935e-01, 6.200000047683716e-01, 6.240000098944154e-01, 6.280000227689476e-01, 6.330000227688766e-01, 6.370000207422565e-01, 6.420000207423986e-01, 6.460000336169308e-01, 6.510000187156719e-01, 6.549999719858436e-01, 6.600000315903818e-01, 6.639999699593301e-01, 6.690000295639038e-01, 6.729999828340044e-01, 6.769999957081814e-01, 6.819999957088919e-01, 6.859999895095825e-01, 6.909999787809241e-01, 6.949999916553498e-01, 6.999999916552432e-01, 7.040000045297043e-01, 7.090000045295622e-01, 7.129999876025891e-01, 7.17999987602447e-01, 7.220000004769082e-01, 7.269999980926514e-01, 7.310000133512273e-01, 7.350000262256885e-01, 7.399999964241121e-01, 7.44000009298076e-01, 7.490000092984311e-01, 7.530000221729278e-01, 7.580000221727502e-01, 7.620000350472114e-01, 7.670000052447824e-01, 7.710000181195278e-01, 7.760000181196699e-01, 7.799999713897705e-01, 7.839999842645159e-01, 7.88999984264658e-01, 7.929999971394034e-01, 7.979999673369744e-01, 8.019999802114356e-01, 8.06999980211258e-01, 8.109999930857547e-01, 8.159999930856126e-01, 8.200000059600737e-01, 8.249999761584973e-01, 8.289999890329585e-01, 8.330000042915344e-01, 8.380000019072776e-01, 8.420000147817388e-01, 8.470000147815967e-01, 8.509999978546235e-01, 8.559999978544814e-01, 8.600000107289426e-01, 8.65000010728836e-01, 8.690000236032617e-01, 8.740000128746033e-01, 8.780000066752939e-01, 8.830000066760044e-01, 8.870000195501814e-01, 8.90999972820282e-01] +PIDIntTim.L=[3.00000011920929e-01, 3.030000031664979e-01, 3.059999944120668e-01, 3.089999856576355e-01, 3.120000067055137e-01, 3.149999973922931e-01, 3.179999891966649e-01, 3.210000096857531e-01, 3.240000014901241e-01, 3.269999910593406e-01, 3.300000126659803e-01, 3.33000004470351e-01, 3.359999962747217e-01, 3.389999880790924e-01, 3.42000007450578e-01, 3.449999970197411e-01, 3.479999910593193e-01, 3.510000104308049e-01, 3.53999999999968e-01, 3.569999940395462e-01, 3.600000134110318e-01, 3.630000074505122e-01, 3.659999970197731e-01, 3.689999865889985e-01, 3.720000104307569e-01, 3.75e-01, 3.779999940395782e-01, 3.810000089406488e-01, 3.840000029802269e-01, 3.86999997019805e-01, 3.899999821187309e-01, 3.930000059604538e-01, 3.96000000000032e-01, 3.989999850989756e-01, 4.020000089406807e-01, 4.050000029802589e-01, 4.079999880792203e-01, 4.110000119209076e-01, 4.140000059604858e-01, 4.170000000000639e-01, 4.19999985098901e-01, 4.230000089406594e-01, 4.260000029802908e-01, 4.289999880791456e-01, 4.320000119209041e-01, 4.350000059605177e-01, 4.379999910593903e-01, 4.410000149011488e-01, 4.440000089405848e-01, 4.469999940394929e-01, 4.49999988079071e-01, 4.530000119207869e-01, 4.560000059604645e-01, 4.59e-01, 4.620000059604645e-01, 4.65e-01, 4.679999940395497e-01, 4.70999988079071e-01, 4.740000119206803e-01, 4.770000059604645e-01, 4.799999821189618e-01, 4.830000059604645e-01, 4.86e-01, 4.889999940395355e-01, 4.920000178811803e-01, 4.950000119205737e-01, 4.97999988079071e-01, 5.009999821188552e-01, 5.04000005960571e-01, 5.070000298023082e-01, 5.099999940393579e-01, 5.130000178810736e-01, 5.159999642376395e-01, 5.189999880793552e-01, 5.220000119207868e-01, 5.249999761581421e-01, 5.279999999998579e-01, 5.310000238415737e-01, 5.339999880794973e-01, 5.369999940398553e-01, 5.400000178812158e-01, 5.429999821186208e-01, 5.460000059603579e-01, 5.490000298020737e-01, 5.519999940399263e-01, 5.550000000003552e-01, 5.580000238416447e-01, 5.609999880791421e-01, 5.640000119208579e-01, 5.669999761583553e-01, 5.699999999996448e-01, 5.730000059600737e-01, 5.759999701979263e-01, 5.789999940396421e-01, 5.820000178813792e-01, 5.849999821187842e-01, 5.880000059601447e-01, 5.910000119205027e-01, 5.939999761584263e-01, 5.970000000001421e-01, 6.000000238418579e-01] +PIDIntTim.Ti=[4.457142949104309e-01, 4.501714409393911e-01, 4.546285571660355e-01, 4.590857031949988e-01, 4.635428492239625e-01, 4.679999944227125e-01, 4.724571412818696e-01, 4.769142864806326e-01, 4.813714333397884e-01, 4.858285768781091e-01, 4.902857237372955e-01, 4.94742870596473e-01, 4.991999876533459e-01, 5.036571643147126e-01, 5.081142780508264e-01, 5.125714513914428e-01, 5.170285717691993e-01, 5.214856855052242e-01, 5.259428588457873e-01, 5.303999792235438e-01, 5.348571525641601e-01, 5.393142729419166e-01, 5.437714462824974e-01, 5.482285600185046e-01, 5.526857400007459e-01, 5.571428537368774e-01, 5.616000337189944e-01, 5.660571408134655e-01, 5.705142611912575e-01, 5.749714411736231e-01, 5.794285482681653e-01, 5.838857282502111e-01, 5.883428486279676e-01, 5.928000153267993e-01, 5.972571357045556e-01, 6.017143156867791e-01, 6.061714227811437e-01, 6.106285431590422e-01, 6.150857231413013e-01, 6.195428435190578e-01, 6.240000102178894e-01, 6.284571305956458e-01, 6.329143105776561e-01, 6.373714176722338e-01, 6.41828597654564e-01, 6.462857180323914e-01, 6.50742825126827e-01, 6.552000051089795e-01, 6.596571254867359e-01, 6.641142921855676e-01, 6.68571412563324e-01, 6.730285925453776e-01, 6.774857129233549e-01, 6.819428929048401e-01, 6.863999867166426e-01, 6.908571666989805e-01, 6.953142870766419e-01, 6.997714074543666e-01, 7.042285874367045e-01, 7.086857078143975e-01, 7.131428612299922e-01, 7.175999816081116e-01, 7.220571615900231e-01, 7.265142819677162e-01, 7.309714619496277e-01, 7.354285823277471e-01, 7.398856761394785e-01, 7.443428561210348e-01, 7.48799976498941e-01, 7.532571564810263e-01, 7.577142768587588e-01, 7.621714568404572e-01, 7.666285506520465e-01, 7.710857306343843e-01, 7.755428510120774e-01, 7.799999713897705e-01, 7.844571513721084e-01, 7.889142717498014e-01, 7.933714517321393e-01, 7.978285455437286e-01, 8.02285725525427e-01, 8.067428459030884e-01, 8.112000258852448e-01, 8.15657146263151e-01, 8.201143262447073e-01, 8.245714200564387e-01, 8.290285404345581e-01, 8.334857204164696e-01, 8.379428407941627e-01, 8.424000207760742e-01, 8.468571411541936e-01, 8.513142945697882e-01, 8.557714149474813e-01, 8.602285949298192e-01, 8.646857153075439e-01, 8.691428356852053e-01, 8.736000156675432e-01, 8.780571094793457e-01, 8.825142894608309e-01, 8.869714098388082e-01, 8.914285898208618e-01] +RefDat.y[5]=[4.460000097751617e-01, 4.503999949485067e-01, 4.54800009924174e-01, 4.591999950975186e-01, 4.636000100731862e-01, 4.679999944269647e-01, 4.724000102221985e-01, 4.767999945759767e-01, 4.812000103712092e-01, 4.85599993085859e-01, 4.900000088810912e-01, 4.945000114738937e-01, 4.990000140815953e-01, 5.034999868870457e-01, 5.080000159442341e-01, 5.124999853969553e-01, 5.17000021159593e-01, 5.214999906122965e-01, 5.260000196694316e-01, 5.304999958277086e-01, 5.350000248848971e-01, 5.393999843835869e-01, 5.437999969005591e-01, 5.482000094175314e-01, 5.526000284910234e-01, 5.569999814033508e-01, 5.614000004768428e-01, 5.658000064372952e-01, 5.702000255107873e-01, 5.745999849796345e-01, 5.789999909400869e-01, 5.835000265836379e-01, 5.880000027419149e-01, 5.924999654891159e-01, 5.970000012516469e-01, 6.01499977409924e-01, 6.059999997613789e-01, 6.104999759197981e-01, 6.150000116824358e-01, 6.19499987840855e-01, 6.240000101923099e-01, 6.28499986350587e-01, 6.33000022113118e-01, 6.374999848605322e-01, 6.420000206231697e-01, 6.464999967815179e-01, 6.510000191329729e-01, 6.554999952912499e-01, 6.600000310538521e-01, 6.644999938012661e-01, 6.690000295639038e-01, 6.733999890326885e-01, 6.77800008106118e-01, 6.822000271795475e-01, 6.866000200272886e-01, 6.909999794960733e-01, 6.953999985694715e-01, 6.998000176429322e-01, 7.042000367158643e-01, 7.085999961851464e-01, 7.129999890328874e-01, 7.174999649527886e-01, 7.220000007152202e-01, 7.264999768734334e-01, 7.31000012635865e-01, 7.354999887945044e-01, 7.399999977348282e-01, 7.444999738935386e-01, 7.490000096558992e-01, 7.534999858141442e-01, 7.58000021457601e-01, 7.623999809263857e-01, 7.667999737741268e-01, 7.711999928475564e-01, 7.756000119209858e-01, 7.799999713897705e-01, 7.843999904632e-01, 7.888000095366294e-01, 7.93200028610059e-01, 7.975999618537948e-01, 8.019999809265848e-01, 8.065000165700416e-01, 8.109999927282866e-01, 8.155000284906472e-01, 8.200000046493576e-01, 8.245000135896814e-01, 8.289999897483208e-01, 8.335000255107524e-01, 8.380000016689656e-01, 8.424999778271788e-01, 8.470000133512984e-01, 8.514000061990394e-01, 8.557999656683215e-01, 8.601999847412536e-01, 8.646000038147142e-01, 8.690000228881125e-01, 8.733999823568972e-01, 8.777999752046383e-01, 8.821999942780678e-01, 8.866000133514973e-01, 8.90999972820282e-01] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PIGain.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PIGain.txt index 58460237cd9..8b8efe91fd6 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PIGain.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PIGain.txt @@ -1,4 +1,4 @@ -last-generated=2022-10-06 +last-generated=2023-04-06 statistics-simulation= { "linear": " ", @@ -8,6 +8,6 @@ statistics-simulation= time=[0e+00, 1e+00] PIGai.kp=[1e+00, 1.009999990686771e+00, 1.019999981373543e+00, 1.029999972060313e+00, 1.039999962747139e+00, 1.049999951571236e+00, 1.059999944120708e+00, 1.07000005215405e+00, 1.080000044703457e+00, 1.090000029802376e+00, 1.100000022351764e+00, 1.110000014901152e+00, 1.120000007450541e+00, 1.129999999999929e+00, 1.139999985098848e+00, 1.149999970197766e+00, 1.159999970197624e+00, 1.169999955296543e+00, 1.179999940395462e+00, 1.190000059604609e+00, 1.20000004470335e+00, 1.210000044703386e+00, 1.220000029802305e+00, 1.230000014901223e+00, 1.240000014901081e+00, 1.25e+00, 1.259999999999858e+00, 1.269999970197838e+00, 1.279999970197695e+00, 1.289999970198051e+00, 1.299999940395533e+00, 1.309999940395391e+00, 1.320000059604538e+00, 1.330000029801736e+00, 1.340000029802376e+00, 1.350000029802234e+00, 1.360000000000213e+00, 1.370000000000071e+00, 1.379999999999929e+00, 1.389999999999787e+00, 1.399999970197766e+00, 1.409999970197624e+00, 1.419999970198264e+00, 1.429999940395462e+00, 1.440000059604609e+00, 1.450000059604467e+00, 1.460000029801949e+00, 1.470000029802305e+00, 1.480000029802162e+00, 1.490000000000142e+00, 1.5e+00, 1.509999999999716e+00, 1.519999999999432e+00, 1.529999999999147e+00, 1.539999940395995e+00, 1.549999940395711e+00, 1.559999940395355e+00, 1.570000059604432e+00, 1.580000059604147e+00, 1.590000059603863e+00, 1.60000000000071e+00, 1.610000000000426e+00, 1.620000000000142e+00, 1.629999999999858e+00, 1.639999999999574e+00, 1.64999999999929e+00, 1.659999940396137e+00, 1.669999940395853e+00, 1.679999940395568e+00, 1.690000059604645e+00, 1.700000059604289e+00, 1.710000059604005e+00, 1.720000000000853e+00, 1.730000000000568e+00, 1.740000000000284e+00, 1.75e+00, 1.759999999999716e+00, 1.769999999999432e+00, 1.779999999999147e+00, 1.789999940395995e+00, 1.799999940395711e+00, 1.809999940395355e+00, 1.820000059604432e+00, 1.830000059604147e+00, 1.840000059603863e+00, 1.85000000000071e+00, 1.860000000000426e+00, 1.870000000000142e+00, 1.879999999999858e+00, 1.889999999999574e+00, 1.89999999999929e+00, 1.909999940396137e+00, 1.919999940395853e+00, 1.929999940395568e+00, 1.940000059604645e+00, 1.950000059604289e+00, 1.960000059604005e+00, 1.970000000000853e+00, 1.980000000000568e+00, 1.990000000000284e+00, 2e+00] PIGai.T=[5e-01, 5.049999953433857e-01, 5.099999906867714e-01, 5.149999860301567e-01, 5.199999813735693e-01, 5.24999975785618e-01, 5.29999972060354e-01, 5.350000260770249e-01, 5.400000223517285e-01, 5.450000149011879e-01, 5.50000011175882e-01, 5.550000074505762e-01, 5.600000037252704e-01, 5.649999999999645e-01, 5.699999925494239e-01, 5.749999850988832e-01, 5.799999850988121e-01, 5.849999776482715e-01, 5.899999701977309e-01, 5.950000298023046e-01, 6.000000223516752e-01, 6.050000223516929e-01, 6.100000149011523e-01, 6.150000074506117e-01, 6.200000074505406e-01, 6.25e-01, 6.29999999999929e-01, 6.349999850989188e-01, 6.399999850988477e-01, 6.449999850990253e-01, 6.499999701977665e-01, 6.549999701976954e-01, 6.600000298022691e-01, 6.650000149008681e-01, 6.700000149011879e-01, 6.750000149011168e-01, 6.800000000001065e-01, 6.850000000000355e-01, 6.899999999999645e-01, 6.949999999998935e-01, 6.999999850988832e-01, 7.049999850988121e-01, 7.099999850991319e-01, 7.149999701977309e-01, 7.200000298023046e-01, 7.250000298022335e-01, 7.300000149009747e-01, 7.350000149011523e-01, 7.400000149010812e-01, 7.45000000000071e-01, 7.5e-01, 7.549999999998579e-01, 7.599999999997158e-01, 7.649999999995737e-01, 7.699999701979974e-01, 7.749999701978553e-01, 7.799999701976776e-01, 7.850000298022158e-01, 7.900000298020737e-01, 7.950000298019316e-01, 8.000000000003552e-01, 8.050000000002131e-01, 8.10000000000071e-01, 8.14999999999929e-01, 8.199999999997869e-01, 8.249999999996448e-01, 8.299999701980684e-01, 8.349999701979263e-01, 8.399999701977842e-01, 8.450000298023224e-01, 8.500000298021447e-01, 8.550000298020026e-01, 8.600000000004263e-01, 8.650000000002842e-01, 8.700000000001421e-01, 8.75e-01, 8.799999999998579e-01, 8.849999999997158e-01, 8.899999999995737e-01, 8.949999701979974e-01, 8.999999701978553e-01, 9.049999701976776e-01, 9.100000298022158e-01, 9.150000298020737e-01, 9.200000298019316e-01, 9.250000000003552e-01, 9.300000000002131e-01, 9.35000000000071e-01, 9.39999999999929e-01, 9.449999999997869e-01, 9.499999999996448e-01, 9.549999701980684e-01, 9.599999701979263e-01, 9.649999701977842e-01, 9.700000298023224e-01, 9.750000298021447e-01, 9.800000298020026e-01, 9.850000000004263e-01, 9.900000000002842e-01, 9.950000000001421e-01, 1e+00] -PIGai.L=[3.00000011920929e-01, 3.030000032111988e-01, 3.059999945014752e-01, 3.089999857917481e-01, 3.120000068843307e-01, 3.1499999724329e-01, 3.179999894648903e-01, 3.210000096261474e-01, 3.240000018477306e-01, 3.269999903440742e-01, 3.300000123679527e-01, 3.330000045895532e-01, 3.359999968111715e-01, 3.389999890327809e-01, 3.420000073313669e-01, 3.449999958277193e-01, 3.479999917745857e-01, 3.510000100731717e-01, 3.539999985694352e-01, 3.569999945163904e-01, 3.600000128149764e-01, 3.630000087618339e-01, 3.659999972581952e-01, 3.68999985754521e-01, 3.720000115036565e-01, 3.75e-01, 3.779999959469552e-01, 3.810000067948496e-01, 3.840000027418048e-01, 3.869999986887599e-01, 3.899999797345096e-01, 3.930000054836096e-01, 3.960000014305647e-01, 3.989999824763321e-01, 4.020000082254144e-01, 4.050000041722807e-01, 4.079999852181547e-01, 4.110000109672191e-01, 4.140000069141033e-01, 4.170000028611295e-01, 4.199999839067903e-01, 4.230000096559258e-01, 4.260000056027389e-01, 4.289999866486128e-01, 4.320000123977484e-01, 4.350000083445615e-01, 4.379999893904354e-01, 4.410000151395709e-01, 4.44000011086384e-01, 4.469999921322579e-01, 4.49999988079071e-01, 4.530000138281355e-01, 4.560000097748775e-01, 4.590000057220459e-01, 4.620000016689301e-01, 4.649999976158142e-01, 4.679999935626984e-01, 4.709999895095825e-01, 4.740000152585404e-01, 4.770000112052824e-01, 4.799999773505902e-01, 4.830000030994415e-01, 4.859999990463967e-01, 4.889999949932098e-01, 4.920000207422032e-01, 4.950000166889453e-01, 4.979999828342531e-01, 5.009999787809951e-01, 5.040000045300596e-01, 5.070000302791595e-01, 5.099999964235437e-01, 5.130000221726081e-01, 5.159999585155935e-01, 5.18999984264658e-01, 5.220000100137224e-01, 5.249999761581421e-01, 5.280000019072065e-01, 5.31000027656271e-01, 5.339999938015433e-01, 5.369999897483209e-01, 5.4000001549703e-01, 5.429999816417694e-01, 5.460000073908694e-01, 5.490000331399338e-01, 5.519999992843535e-01, 5.549999952319836e-01, 5.580000209806218e-01, 5.609999871254677e-01, 5.640000128745323e-01, 5.669999790193782e-01, 5.700000047680164e-01, 5.730000007156465e-01, 5.759999668600662e-01, 5.789999926091306e-01, 5.820000183582306e-01, 5.8499998450297e-01, 5.880000102516791e-01, 5.910000061984567e-01, 5.93999972343729e-01, 5.969999980927935e-01, 6.000000238418579e-01] -PIGai.k=[3.427083194255829e-01, 3.393151758930222e-01, 3.359885511485939e-01, 3.327265378434656e-01, 3.295272286288169e-01, 3.263888958752252e-01, 3.233097487268034e-01, 3.202881516426574e-01, 3.173225215822536e-01, 3.144113139610314e-01, 3.115530318686219e-01, 3.087462482250208e-01, 3.059895921241976e-01, 3.032817224562803e-01, 3.006213309847676e-01, 2.980072522563426e-01, 2.954382286165356e-01, 2.929131097666854e-01, 2.904307869882616e-01, 2.87990181737877e-01, 2.855902921363173e-01, 2.832300341023077e-01, 2.809084649571227e-01, 2.786246552993449e-01, 2.763776760516168e-01, 2.741666734218597e-01, 2.719907430469058e-01, 2.698490953450763e-01, 2.67740875873801e-01, 2.656653794647196e-01, 2.636218108910805e-01, 2.616094060261872e-01, 2.596275188422696e-01, 2.576754431050848e-01, 2.557524751404699e-01, 2.538580280928464e-01, 2.519914251424269e-01, 2.501520826169469e-01, 2.483393685535971e-01, 2.465527465074837e-01, 2.447916732685427e-01, 2.430555512818382e-01, 2.413438970821584e-01, 2.396561820236085e-01, 2.379918986367867e-01, 2.363505780163519e-01, 2.347317359033287e-01, 2.331349250702803e-01, 2.315596762914645e-01, 2.300055944167478e-01, 2.284722179174423e-01, 2.269591517718605e-01, 2.254660085373425e-01, 2.239923709798829e-01, 2.225378800383838e-01, 2.211021509612482e-01, 2.196848248740505e-01, 2.182855590551519e-01, 2.169040107715149e-01, 2.155398223916494e-01, 2.141927083714356e-01, 2.12862315759629e-01, 2.115483591783919e-01, 2.102505108050202e-01, 2.089684875158524e-01, 2.077020210844805e-01, 2.064508101825049e-01, 2.052145781488074e-01, 2.039930536060073e-01, 2.027859981360627e-01, 2.015931286193312e-01, 2.004142215317469e-01, 1.992490343561543e-01, 1.980973069340439e-01, 1.969588117835739e-01, 1.958333402872086e-01, 1.947206391306787e-01, 1.936205294924474e-01, 1.925327729528697e-01, 1.9145717086614e-01, 1.903935243586566e-01, 1.893416200018209e-01, 1.883012789850742e-01, 1.872723075894303e-01, 1.862545269985985e-01, 1.852477528329152e-01, 1.842517874998656e-01, 1.832664914304534e-01, 1.822916709115014e-01, 1.81327162029384e-01, 1.803728008678819e-01, 1.794284471748412e-01, 1.784939194206437e-01, 1.775690923516219e-01, 1.766537871545593e-01, 1.757478548194911e-01, 1.748511910338886e-01, 1.739636252190207e-01, 1.730850216060402e-01, 1.722152395072734e-01, 1.713541597127914e-01] -RefDat.y[4]=[3.429999947547913e-01, 3.389999866485596e-01, 3.359999952465325e-01, 3.33000003956253e-01, 3.300000126659795e-01, 3.260000053793143e-01, 3.230000138282776e-01, 3.19999992996457e-01, 3.170000016689301e-01, 3.140000122785302e-01, 3.120000064373016e-01, 3.089999851584479e-01, 3.059999929368696e-01, 3.030000030994415e-01, 3.009999990463257e-01, 2.980000108480009e-01, 2.949999868869781e-01, 2.930000126361847e-01, 2.899999952316817e-01, 2.879999876022339e-01, 2.860000133514404e-01, 2.829999923706055e-01, 2.809999877214521e-01, 2.790000140666962e-01, 2.759999930858612e-01, 2.739999890327454e-01, 2.720000147819519e-01, 2.700000107288361e-01, 2.680000066757202e-01, 2.659999984502171e-01, 2.639999985694885e-01, 2.619999945163727e-01, 2.599999868870314e-01, 2.57999986410141e-01, 2.560000121593475e-01, 2.540000051259551e-01, 2.520000040531158e-01, 2.500000023841503e-01, 2.479999959468842e-01, 2.469999867678754e-01, 2.450000047683716e-01, 2.430000007152557e-01, 2.409999966621399e-01, 2.39999994635582e-01, 2.380000054836273e-01, 2.360000014305115e-01, 2.349999994039536e-01, 2.329999953508377e-01, 2.319999879599417e-01, 2.300000041723251e-01, 2.280000001192093e-01, 2.269999980926514e-01, 2.249999940395355e-01, 2.240000069141388e-01, 2.230000048875809e-01, 2.21000000834465e-01, 2.199999988079071e-01, 2.179999947547913e-01, 2.169999927282333e-01, 2.159999924900102e-01, 2.140000015497208e-01, 2.129999995231628e-01, 2.119999974966049e-01, 2.099999934434891e-01, 2.090000063180923e-01, 2.079999923707831e-01, 2.06000013351245e-01, 2.049999982118607e-01, 2.039999961853027e-01, 2.029999941587448e-01, 2.020000010729724e-01, 2.000000029802322e-01, 1.990000009536743e-01, 1.979999989271164e-01, 1.969999969005585e-01, 1.959999948740005e-01, 1.949999880792131e-01, 1.939999961854448e-01, 1.929999893905864e-01, 1.910000103710483e-01, 1.900000035761898e-01, 1.889999967813669e-01, 1.879999935626984e-01, 1.870000064373016e-01, 1.860000044107437e-01, 1.850000023841858e-01, 1.840000003576279e-01, 1.829999983310699e-01, 1.81999996304512e-01, 1.809999942779541e-01, 1.800000071525574e-01, 1.790000182388259e-01, 1.780000114439674e-01, 1.780000030994415e-01, 1.76999999880773e-01, 1.759999990463257e-01, 1.749999970197678e-01, 1.739999949932098e-01, 1.729999929666519e-01, 1.720000058412552e-01, 1.710000038146973e-01] +PIGai.L=[3.00000011920929e-01, 3.030000031664979e-01, 3.059999944120668e-01, 3.089999856576355e-01, 3.120000067055137e-01, 3.149999973922931e-01, 3.179999891966649e-01, 3.210000096857531e-01, 3.240000014901241e-01, 3.269999910593406e-01, 3.300000126659803e-01, 3.33000004470351e-01, 3.359999962747217e-01, 3.389999880790924e-01, 3.42000007450578e-01, 3.449999970197411e-01, 3.479999910593193e-01, 3.510000104308049e-01, 3.53999999999968e-01, 3.569999940395462e-01, 3.600000134110318e-01, 3.630000074505122e-01, 3.659999970197731e-01, 3.689999865889985e-01, 3.720000104307569e-01, 3.75e-01, 3.779999940395782e-01, 3.810000089406488e-01, 3.840000029802269e-01, 3.86999997019805e-01, 3.899999821187309e-01, 3.930000059604538e-01, 3.96000000000032e-01, 3.989999850989756e-01, 4.020000089406807e-01, 4.050000029802589e-01, 4.079999880792203e-01, 4.110000119209076e-01, 4.140000059604858e-01, 4.170000000000639e-01, 4.19999985098901e-01, 4.230000089406594e-01, 4.260000029802908e-01, 4.289999880791456e-01, 4.320000119209041e-01, 4.350000059605177e-01, 4.379999910593903e-01, 4.410000149011488e-01, 4.440000089405848e-01, 4.469999940394929e-01, 4.49999988079071e-01, 4.530000119207869e-01, 4.560000059604645e-01, 4.59e-01, 4.620000059604645e-01, 4.65e-01, 4.679999940395497e-01, 4.70999988079071e-01, 4.740000119206803e-01, 4.770000059604645e-01, 4.799999821189618e-01, 4.830000059604645e-01, 4.86e-01, 4.889999940395355e-01, 4.920000178811803e-01, 4.950000119205737e-01, 4.97999988079071e-01, 5.009999821188552e-01, 5.04000005960571e-01, 5.070000298023082e-01, 5.099999940393579e-01, 5.130000178810736e-01, 5.159999642376395e-01, 5.189999880793552e-01, 5.220000119207868e-01, 5.249999761581421e-01, 5.279999999998579e-01, 5.310000238415737e-01, 5.339999880794973e-01, 5.369999940398553e-01, 5.400000178812158e-01, 5.429999821186208e-01, 5.460000059603579e-01, 5.490000298020737e-01, 5.519999940399263e-01, 5.550000000003552e-01, 5.580000238416447e-01, 5.609999880791421e-01, 5.640000119208579e-01, 5.669999761583553e-01, 5.699999999996448e-01, 5.730000059600737e-01, 5.759999701979263e-01, 5.789999940396421e-01, 5.820000178813792e-01, 5.849999821187842e-01, 5.880000059601447e-01, 5.910000119205027e-01, 5.939999761584263e-01, 5.970000000001421e-01, 6.000000238418579e-01] +PIGai.k=[3.427083194255829e-01, 3.393151759351885e-01, 3.359885512312877e-01, 3.327265379651081e-01, 3.295272287879297e-01, 3.263888957436638e-01, 3.233097489565795e-01, 3.202881515919868e-01, 3.173225218774036e-01, 3.144113133751546e-01, 3.115530316289475e-01, 3.087462483181639e-01, 3.059895925359474e-01, 3.032817231754192e-01, 3.006213308955236e-01, 2.980072513794458e-01, 2.954382291283917e-01, 2.929131095125426e-01, 2.904307859889563e-01, 2.87990182062168e-01, 2.855902917337069e-01, 2.83230034964896e-01, 2.80908465111399e-01, 2.786246547629217e-01, 2.763776767237978e-01, 2.741666734218597e-01, 2.719907442042355e-01, 2.698490940513938e-01, 2.677408757323145e-01, 2.656653804310025e-01, 2.636218095193805e-01, 2.616094057560394e-01, 2.596275196334218e-01, 2.576754416636275e-01, 2.557524747532071e-01, 2.538580287231854e-01, 2.519914236387794e-01, 2.501520821230496e-01, 2.483393690362323e-01, 2.465527479346059e-01, 2.447916726773723e-01, 2.430555516286001e-01, 2.413438983357397e-01, 2.39656181343727e-01, 2.379918988584401e-01, 2.363505791094309e-01, 2.347317351424633e-01, 2.331349251766394e-01, 2.315596772358271e-01, 2.300055935819328e-01, 2.284722179174423e-01, 2.269591525783839e-01, 2.254660101292155e-01, 2.239923733365712e-01, 2.225378782802999e-01, 2.211021499971469e-01, 2.196848246836937e-01, 2.182855596147481e-01, 2.169040120607019e-01, 2.155398243923085e-01, 2.141927065620691e-01, 2.128623146874381e-01, 2.115483588254002e-01, 2.102505111511907e-01, 2.089684885416811e-01, 2.077020227735896e-01, 2.064508083334731e-01, 2.052145769863259e-01, 2.039930531137161e-01, 2.027859982970915e-01, 2.015931294150367e-01, 2.004142229472307e-01, 1.992490324775822e-01, 1.980973056962994e-01, 1.969588111717359e-01, 1.958333402872086e-01, 1.947206397246824e-01, 1.936205306669547e-01, 1.9253277469502e-01, 1.914571695654425e-01, 1.903935236440403e-01, 1.893416198604744e-01, 1.883012794016939e-01, 1.872723085509738e-01, 1.862545284931821e-01, 1.852477514800648e-01, 1.842517866968949e-01, 1.832664911656741e-01, 1.822916711718399e-01, 1.813271628020862e-01, 1.803728021423963e-01, 1.794284457789326e-01, 1.784939185415396e-01, 1.775690919787531e-01, 1.766537872768098e-01, 1.75747855424508e-01, 1.748511921117281e-01, 1.739636237876566e-01, 1.730850206614606e-01, 1.722152390396732e-01, 1.713541597127914e-01] +RefDat.y[4]=[3.429999947547913e-01, 3.398999869130577e-01, 3.368000088736398e-01, 3.337000010319031e-01, 3.30599993190166e-01, 3.27499985925856e-01, 3.244000073090146e-01, 3.213000000447048e-01, 3.181999916255684e-01, 3.151000153183516e-01, 3.120000068992423e-01, 3.093999920725853e-01, 3.068000071227286e-01, 3.041999923706296e-01, 3.016000093579262e-01, 2.989999965429004e-01, 2.964000096559173e-01, 2.937999968409448e-01, 2.912000138282413e-01, 2.885999971389892e-01, 2.860000141262857e-01, 2.838000044703464e-01, 2.815999982118603e-01, 2.793999919533742e-01, 2.772000122189506e-01, 2.750000059604645e-01, 2.727999964237185e-01, 2.705999934434923e-01, 2.684000137090509e-01, 2.662000041723226e-01, 2.640000011920964e-01, 2.621000115632758e-01, 2.601999924898905e-01, 2.583000088809533e-01, 2.563999898076212e-01, 2.54500000536416e-01, 2.526000169275678e-01, 2.506999978542534e-01, 2.487999936819226e-01, 2.469000044106819e-01, 2.450000059008412e-01, 2.433000051856057e-01, 2.416000045895635e-01, 2.398999941587416e-01, 2.381999935626994e-01, 2.364999929666572e-01, 2.347999974369965e-01, 2.330999968409544e-01, 2.313999962449122e-01, 2.297000007152515e-01, 2.280000001192093e-01, 2.266000048875667e-01, 2.251999947549049e-01, 2.237999995231202e-01, 2.223999977350555e-01, 2.21000002503324e-01, 2.196000072717624e-01, 2.181999971390197e-01, 2.168000019073238e-01, 2.153999917747153e-01, 2.140000048874388e-01, 2.127999978541902e-01, 2.116000061988688e-01, 2.103999996423863e-01, 2.091999930859038e-01, 2.080000014305825e-01, 2.068000020264798e-01, 2.055999954701216e-01, 2.044000038146759e-01, 2.031999972581849e-01, 2.020000056027833e-01, 2.007999990463896e-01, 1.995999996422869e-01, 1.984000079869656e-01, 1.972000014304831e-01, 1.959999948740005e-01, 1.948000032186792e-01, 1.935999966621967e-01, 1.923999901057142e-01, 1.912000056027726e-01, 1.899999990462901e-01, 1.88999995827682e-01, 1.879999928474959e-01, 1.870000047683716e-01, 1.860000017881394e-01, 1.850000047683716e-01, 1.840000017881394e-01, 1.829999988079071e-01, 1.819999958276749e-01, 1.809999928475492e-01, 1.800000050067546e-01, 1.79100009178959e-01, 1.782000079869229e-01, 1.773000067948869e-01, 1.764000056028267e-01, 1.755000044107259e-01, 1.746000032186188e-01, 1.737000073908054e-01, 1.728000061987694e-01, 1.719000050067333e-01, 1.710000038146973e-01] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PIIntegralTime.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PIIntegralTime.txt index 9c3ec62eff6..db8144b4bda 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PIIntegralTime.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PIIntegralTime.txt @@ -1,4 +1,4 @@ -last-generated=2022-10-06 +last-generated=2023-04-06 statistics-simulation= { "linear": " ", @@ -7,6 +7,6 @@ statistics-simulation= } time=[0e+00, 1e+00] PIIntTim.T=[5e-01, 5.049999953433857e-01, 5.099999906867714e-01, 5.149999860301567e-01, 5.199999813735693e-01, 5.24999975785618e-01, 5.29999972060354e-01, 5.350000260770249e-01, 5.400000223517285e-01, 5.450000149011879e-01, 5.50000011175882e-01, 5.550000074505762e-01, 5.600000037252704e-01, 5.649999999999645e-01, 5.699999925494239e-01, 5.749999850988832e-01, 5.799999850988121e-01, 5.849999776482715e-01, 5.899999701977309e-01, 5.950000298023046e-01, 6.000000223516752e-01, 6.050000223516929e-01, 6.100000149011523e-01, 6.150000074506117e-01, 6.200000074505406e-01, 6.25e-01, 6.29999999999929e-01, 6.349999850989188e-01, 6.399999850988477e-01, 6.449999850990253e-01, 6.499999701977665e-01, 6.549999701976954e-01, 6.600000298022691e-01, 6.650000149008681e-01, 6.700000149011879e-01, 6.750000149011168e-01, 6.800000000001065e-01, 6.850000000000355e-01, 6.899999999999645e-01, 6.949999999998935e-01, 6.999999850988832e-01, 7.049999850988121e-01, 7.099999850991319e-01, 7.149999701977309e-01, 7.200000298023046e-01, 7.250000298022335e-01, 7.300000149009747e-01, 7.350000149011523e-01, 7.400000149010812e-01, 7.45000000000071e-01, 7.5e-01, 7.549999999998579e-01, 7.599999999997158e-01, 7.649999999995737e-01, 7.699999701979974e-01, 7.749999701978553e-01, 7.799999701976776e-01, 7.850000298022158e-01, 7.900000298020737e-01, 7.950000298019316e-01, 8.000000000003552e-01, 8.050000000002131e-01, 8.10000000000071e-01, 8.14999999999929e-01, 8.199999999997869e-01, 8.249999999996448e-01, 8.299999701980684e-01, 8.349999701979263e-01, 8.399999701977842e-01, 8.450000298023224e-01, 8.500000298021447e-01, 8.550000298020026e-01, 8.600000000004263e-01, 8.650000000002842e-01, 8.700000000001421e-01, 8.75e-01, 8.799999999998579e-01, 8.849999999997158e-01, 8.899999999995737e-01, 8.949999701979974e-01, 8.999999701978553e-01, 9.049999701976776e-01, 9.100000298022158e-01, 9.150000298020737e-01, 9.200000298019316e-01, 9.250000000003552e-01, 9.300000000002131e-01, 9.35000000000071e-01, 9.39999999999929e-01, 9.449999999997869e-01, 9.499999999996448e-01, 9.549999701980684e-01, 9.599999701979263e-01, 9.649999701977842e-01, 9.700000298023224e-01, 9.750000298021447e-01, 9.800000298020026e-01, 9.850000000004263e-01, 9.900000000002842e-01, 9.950000000001421e-01, 1e+00] -PIIntTim.L=[3.00000011920929e-01, 3.030000032111988e-01, 3.059999945014752e-01, 3.089999857917481e-01, 3.120000068843307e-01, 3.1499999724329e-01, 3.179999894648903e-01, 3.210000096261474e-01, 3.240000018477306e-01, 3.269999903440742e-01, 3.300000123679527e-01, 3.330000045895532e-01, 3.359999968111715e-01, 3.389999890327809e-01, 3.420000073313669e-01, 3.449999958277193e-01, 3.479999917745857e-01, 3.510000100731717e-01, 3.539999985694352e-01, 3.569999945163904e-01, 3.600000128149764e-01, 3.630000087618339e-01, 3.659999972581952e-01, 3.68999985754521e-01, 3.720000115036565e-01, 3.75e-01, 3.779999959469552e-01, 3.810000067948496e-01, 3.840000027418048e-01, 3.869999986887599e-01, 3.899999797345096e-01, 3.930000054836096e-01, 3.960000014305647e-01, 3.989999824763321e-01, 4.020000082254144e-01, 4.050000041722807e-01, 4.079999852181547e-01, 4.110000109672191e-01, 4.140000069141033e-01, 4.170000028611295e-01, 4.199999839067903e-01, 4.230000096559258e-01, 4.260000056027389e-01, 4.289999866486128e-01, 4.320000123977484e-01, 4.350000083445615e-01, 4.379999893904354e-01, 4.410000151395709e-01, 4.44000011086384e-01, 4.469999921322579e-01, 4.49999988079071e-01, 4.530000138281355e-01, 4.560000097748775e-01, 4.590000057220459e-01, 4.620000016689301e-01, 4.649999976158142e-01, 4.679999935626984e-01, 4.709999895095825e-01, 4.740000152585404e-01, 4.770000112052824e-01, 4.799999773505902e-01, 4.830000030994415e-01, 4.859999990463967e-01, 4.889999949932098e-01, 4.920000207422032e-01, 4.950000166889453e-01, 4.979999828342531e-01, 5.009999787809951e-01, 5.040000045300596e-01, 5.070000302791595e-01, 5.099999964235437e-01, 5.130000221726081e-01, 5.159999585155935e-01, 5.18999984264658e-01, 5.220000100137224e-01, 5.249999761581421e-01, 5.280000019072065e-01, 5.31000027656271e-01, 5.339999938015433e-01, 5.369999897483209e-01, 5.4000001549703e-01, 5.429999816417694e-01, 5.460000073908694e-01, 5.490000331399338e-01, 5.519999992843535e-01, 5.549999952319836e-01, 5.580000209806218e-01, 5.609999871254677e-01, 5.640000128745323e-01, 5.669999790193782e-01, 5.700000047680164e-01, 5.730000007156465e-01, 5.759999668600662e-01, 5.789999926091306e-01, 5.820000183582306e-01, 5.8499998450297e-01, 5.880000102516791e-01, 5.910000061984567e-01, 5.93999972343729e-01, 5.969999980927935e-01, 6.000000238418579e-01] -PIIntTim.Ti=[4.688059687614441e-01, 4.734940231973803e-01, 4.781820776333232e-01, 4.828701618715748e-01, 4.875582163075113e-01, 4.922462698039159e-01, 4.969343251793837e-01, 5.016223786758081e-01, 5.063104638535503e-01, 5.109984856685409e-01, 5.156865708463891e-01, 5.203746560242019e-01, 5.250626815973608e-01, 5.297507667750048e-01, 5.344387885901731e-01, 5.391268700097019e-01, 5.438148993411182e-01, 5.485029807607537e-01, 5.531910621802825e-01, 5.578790915117342e-01, 5.625671729313341e-01, 5.672552022626616e-01, 5.719432836823503e-01, 5.766313651019146e-01, 5.813193944332776e-01, 5.860074758529663e-01, 5.906955051842049e-01, 5.953835790873793e-01, 6.000716680235468e-01, 6.047596973548209e-01, 6.094477712579598e-01, 6.141358005894826e-01, 6.18823889525437e-01, 6.235119634281495e-01, 6.281999927600631e-01, 6.328880816958754e-01, 6.375760959944761e-01, 6.422641849306436e-01, 6.469522142620243e-01, 6.516403031979077e-01, 6.563283771012242e-01, 6.610164064326404e-01, 6.657044953685237e-01, 6.703925096671599e-01, 6.750805986032564e-01, 6.797686875387845e-01, 6.844567018377404e-01, 6.891447907738725e-01, 6.93832820105111e-01, 6.98520894008321e-01, 7.032089829444885e-01, 7.078970122756555e-01, 7.125851012114671e-01, 7.172731305426341e-01, 7.219611894134756e-01, 7.266492187452821e-01, 7.313373076809869e-01, 7.360253966169055e-01, 7.407134259480723e-01, 7.454015148838841e-01, 7.500895141507203e-01, 7.547776030861058e-01, 7.594656920222017e-01, 7.641537213535107e-01, 7.688418102893224e-01, 7.735298396204894e-01, 7.782178984911888e-01, 7.829059874272848e-01, 7.875940167587359e-01, 7.922821056947965e-01, 7.969701350259276e-01, 8.016582239617394e-01, 8.063462828323678e-01, 8.110343121638189e-01, 8.157224010999148e-01, 8.20410430431366e-01, 8.250985193671777e-01, 8.297865486983446e-01, 8.344746376341563e-01, 8.391626965049979e-01, 8.43850725836449e-01, 8.485388147725091e-01, 8.532268441037829e-01, 8.579149330395945e-01, 8.626030219754063e-01, 8.672910212415321e-01, 8.71979110177628e-01, 8.766671395092213e-01, 8.813552284450329e-01, 8.860433173808446e-01, 8.907313467120116e-01, 8.95419405582711e-01, 9.001074349146596e-01, 9.047955238502581e-01, 9.094836127863187e-01, 9.141716421174498e-01, 9.188597310532616e-01, 9.235477303192452e-01, 9.282358192553412e-01, 9.329238485870764e-01, 9.376119375228882e-01] -RefDat.y[5]=[4.690000116825104e-01, 4.729999900981803e-01, 4.779999854415692e-01, 4.830000105872703e-01, 4.880000054836273e-01, 4.920000132173237e-01, 4.970000094920309e-01, 5.019999741017835e-01, 5.059999832511348e-01, 5.109999758005409e-01, 5.159999720752351e-01, 5.199999812245503e-01, 5.249999774993065e-01, 5.299999737740628e-01, 5.339999794960022e-01, 5.389999717474427e-01, 5.440000313520165e-01, 5.490000239014226e-01, 5.529999697208937e-01, 5.580000293254674e-01, 5.63000021874838e-01, 5.669999751450097e-01, 5.720000272989184e-01, 5.770000198482534e-01, 5.809999731184251e-01, 5.860000252723694e-01, 5.910000252722983e-01, 5.950000232455717e-01, 6.000000232457848e-01, 6.050000232457493e-01, 6.09000027179718e-01, 6.140000212192003e-01, 6.190000212192003e-01, 6.240000063181901e-01, 6.280000191926157e-01, 6.330000191926513e-01, 6.380000042916409e-01, 6.420000171660312e-01, 6.470000171661022e-01, 6.520000171660312e-01, 6.560000151394466e-01, 6.610000151395531e-01, 6.66000015139482e-01, 6.700000131130751e-01, 6.750000131130041e-01, 6.80000013112933e-01, 6.840000152587891e-01, 6.89000011086455e-01, 6.94000011086384e-01, 6.989999961853738e-01, 7.03000009059906e-01, 7.080000090597639e-01, 7.130000090596218e-01, 7.17000021934083e-01, 7.219999921325067e-01, 7.269999921323645e-01, 7.310000050067902e-01, 7.360000050066836e-01, 7.410000050065415e-01, 7.450000178810027e-01, 7.499999880794262e-01, 7.549999880792841e-01, 7.590000033378601e-01, 7.640000009536033e-01, 7.690000009534612e-01, 7.739999890327454e-01, 7.77999984026346e-01, 7.829999840262039e-01, 7.879999840260618e-01, 7.919999969005584e-01, 7.969999969003808e-01, 8.019999969002387e-01, 8.059999799732657e-01, 8.109999799731236e-01, 8.159999799729815e-01, 8.199999928474426e-01, 8.249999928473005e-01, 8.299999928471584e-01, 8.340000057216196e-01, 8.389999759200433e-01, 8.439999759199012e-01, 8.489999759197235e-01, 8.529999887942202e-01, 8.579999887945754e-01, 8.629999887947175e-01, 8.669999718669629e-01, 8.719999718668208e-01, 8.769999718666787e-01, 8.809999847412819e-01, 8.859999847414241e-01, 8.909999847415662e-01, 8.949999678138826e-01, 8.999999678137405e-01, 9.049999678135984e-01, 9.089999806881661e-01, 9.139999806882727e-01, 9.190000402924201e-01, 9.240000104899911e-01, 9.279999637606602e-01, 9.330000233648786e-01, 9.380000233650208e-01] +PIIntTim.L=[3.00000011920929e-01, 3.030000031664979e-01, 3.059999944120668e-01, 3.089999856576355e-01, 3.120000067055137e-01, 3.149999973922931e-01, 3.179999891966649e-01, 3.210000096857531e-01, 3.240000014901241e-01, 3.269999910593406e-01, 3.300000126659803e-01, 3.33000004470351e-01, 3.359999962747217e-01, 3.389999880790924e-01, 3.42000007450578e-01, 3.449999970197411e-01, 3.479999910593193e-01, 3.510000104308049e-01, 3.53999999999968e-01, 3.569999940395462e-01, 3.600000134110318e-01, 3.63367350849591e-01, 3.663265410612901e-01, 3.692857014707645e-01, 3.722448960919941e-01, 3.752040863037109e-01, 3.781632809248606e-01, 3.811224369249822e-01, 3.84081631546114e-01, 3.870408261672814e-01, 3.89999982167403e-01, 3.930000059604538e-01, 3.96000000000032e-01, 3.989999850989756e-01, 4.020000089406807e-01, 4.050000029802589e-01, 4.079999880792203e-01, 4.110000119209076e-01, 4.140000059604858e-01, 4.170000000000639e-01, 4.19999985098901e-01, 4.230000089406594e-01, 4.260000029802908e-01, 4.289999880791456e-01, 4.320000119209041e-01, 4.350000059605177e-01, 4.379999910593903e-01, 4.410000149011488e-01, 4.440000089405848e-01, 4.469999940394929e-01, 4.49999988079071e-01, 4.530000119207869e-01, 4.560000059604645e-01, 4.59e-01, 4.620000059604645e-01, 4.65e-01, 4.679999940395497e-01, 4.70999988079071e-01, 4.740000119206803e-01, 4.770000059604645e-01, 4.799999821189618e-01, 4.830000059604645e-01, 4.86e-01, 4.889999940395355e-01, 4.920000178811803e-01, 4.950000119205737e-01, 4.97999988079071e-01, 5.009999821188552e-01, 5.04000005960571e-01, 5.070000298023082e-01, 5.099999940393579e-01, 5.130000178810736e-01, 5.159999642376395e-01, 5.189999880793552e-01, 5.220000119207868e-01, 5.249999761581421e-01, 5.279999999998579e-01, 5.310000238415737e-01, 5.339999880794973e-01, 5.369999940398553e-01, 5.400000178812158e-01, 5.429999821186208e-01, 5.460000059603579e-01, 5.490000298020737e-01, 5.519999940399263e-01, 5.550000000003552e-01, 5.580000238416447e-01, 5.609999880791421e-01, 5.640000119208579e-01, 5.669999761583553e-01, 5.699999999996448e-01, 5.730000059600737e-01, 5.759999701979263e-01, 5.789999940396421e-01, 5.820000178813792e-01, 5.849999821187842e-01, 5.880000059601447e-01, 5.910000119205027e-01, 5.939999761584263e-01, 5.970000000001421e-01, 6.000000238418579e-01] +PIIntTim.Ti=[4.688059687614441e-01, 4.734940231894267e-01, 4.781820776174092e-01, 4.828701618477139e-01, 4.875582162756968e-01, 4.922462698304613e-01, 4.969343251316619e-01, 5.016223786864307e-01, 5.063104637899213e-01, 5.10998485796012e-01, 5.156865708994577e-01, 5.203746560029922e-01, 5.250626815019174e-01, 5.297507666053275e-01, 5.344387886114182e-01, 5.391268702219761e-01, 5.438148992138602e-01, 5.485029808244891e-01, 5.531910624350115e-01, 5.578790914268956e-01, 5.625671730374713e-01, 5.673205883197889e-01, 5.720013981676988e-01, 5.766822080156087e-01, 5.813630248383694e-01, 5.860437750816345e-01, 5.907245919043954e-01, 5.954053947774542e-01, 6.000861519955702e-01, 6.047669688183311e-01, 6.0944777169139e-01, 6.141358006744633e-01, 6.18823889270708e-01, 6.235119638955435e-01, 6.281999928875343e-01, 6.328880814837788e-01, 6.375760965043604e-01, 6.42264185100463e-01, 6.46952214092347e-01, 6.51640302688876e-01, 6.563283773134984e-01, 6.610164063053824e-01, 6.657044949015205e-01, 6.703925099221021e-01, 6.750805985184178e-01, 6.797686871145914e-01, 6.84456702135173e-01, 6.891447907314177e-01, 6.938328197233372e-01, 6.985208943479597e-01, 7.032089829444885e-01, 7.078970119363059e-01, 7.125851005321998e-01, 7.172731295245857e-01, 7.219611901776515e-01, 7.266492191698242e-01, 7.313373077659689e-01, 7.360253963621802e-01, 7.407134253542108e-01, 7.454015139498914e-01, 7.500895149998046e-01, 7.547776035959826e-01, 7.594656921920185e-01, 7.64153721183836e-01, 7.688418097798719e-01, 7.735298387721157e-01, 7.782178994251815e-01, 7.829059880216437e-01, 7.875940170136743e-01, 7.922821056098855e-01, 7.969701346017408e-01, 8.016582231975635e-01, 8.063462838512688e-01, 8.110343128436547e-01, 8.157224014395486e-01, 8.20410430431366e-01, 8.250985190275439e-01, 8.297865480196457e-01, 8.344746366161079e-01, 8.391626972691737e-01, 8.438507262613464e-01, 8.485388148574201e-01, 8.532268438492708e-01, 8.57914932445733e-01, 8.626030210414136e-01, 8.672910220913268e-01, 8.719791106870785e-01, 8.766671396790381e-01, 8.813552282752161e-01, 8.860433168713941e-01, 8.907313458636379e-01, 8.954194065167037e-01, 9.001074355090185e-01, 9.047955241049833e-01, 9.094836127014078e-01, 9.14171641693263e-01, 9.188597302890857e-01, 9.235477313389989e-01, 9.282358199346085e-01, 9.329238489267102e-01, 9.376119375228882e-01] +RefDat.y[5]=[4.690000116825104e-01, 4.736999870397178e-01, 4.78399992199241e-01, 4.830999973587672e-01, 4.87800002518294e-01, 4.92500006802382e-01, 4.972000128373469e-01, 5.019000171214303e-01, 5.066000231563718e-01, 5.113000256895609e-01, 5.159999721199547e-01, 5.206999781549045e-01, 5.253999841898987e-01, 5.30099990224893e-01, 5.347999927580466e-01, 5.394999952911647e-01, 5.442000048280172e-01, 5.489000073611531e-01, 5.536000098942889e-01, 5.583000194310705e-01, 5.630000219642775e-01, 5.676734477586304e-01, 5.722653275241416e-01, 5.768571476850791e-01, 5.814489746884938e-01, 5.860407948493958e-01, 5.90632681457171e-01, 5.952244947758445e-01, 5.998163217792591e-01, 6.044081487826738e-01, 6.090000217057079e-01, 6.136999715090234e-01, 6.183999810458051e-01, 6.23099976575615e-01, 6.277999861121834e-01, 6.324999956489293e-01, 6.371999911783485e-01, 6.41900000715201e-01, 6.466000102519115e-01, 6.513000197884798e-01, 6.560000153183253e-01, 6.607000248550713e-01, 6.654000343916396e-01, 6.70099970317018e-01, 6.747999798536575e-01, 6.7949998939051e-01, 6.841999849201779e-01, 6.888999944567817e-01, 6.936000039936343e-01, 6.982999995230534e-01, 7.03000009059906e-01, 7.077000185964076e-01, 7.124000281329091e-01, 7.171000376694108e-01, 7.218000191925997e-01, 7.26499969125096e-01, 7.311999786615642e-01, 7.358999881983123e-01, 7.405999977350981e-01, 7.453000072718838e-01, 7.499999887942201e-01, 7.54699998331006e-01, 7.594000078677918e-01, 7.641000174044354e-01, 7.688000269409371e-01, 7.735000364774387e-01, 7.781999583966223e-01, 7.828999679331239e-01, 7.875999774696255e-01, 7.922999870062315e-01, 7.969999965429839e-01, 8.017000060797697e-01, 8.06399987602106e-01, 8.110999971388918e-01, 8.158000066756775e-01, 8.205000162124634e-01, 8.25200025748965e-01, 8.299000352854665e-01, 8.34599985218176e-01, 8.392999667411518e-01, 8.439999762776533e-01, 8.486999858141215e-01, 8.533999953508696e-01, 8.581000048876555e-01, 8.628000144244412e-01, 8.674999959467775e-01, 8.722000054835634e-01, 8.769000150203492e-01, 8.816000245569928e-01, 8.863000340934944e-01, 8.909999840260618e-01, 8.956999655491796e-01, 9.003999750856813e-01, 9.050999846221829e-01, 9.097999941587889e-01, 9.145000036955413e-01, 9.19200013232327e-01, 9.238999947546633e-01, 9.286000042914492e-01, 9.333000138282349e-01, 9.380000233650208e-01] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_Controller.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_Controller.txt index 7e64990c785..17400669983 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_Controller.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_Controller.txt @@ -1,4 +1,4 @@ -last-generated=2022-10-06 +last-generated=2023-04-06 statistics-simulation= { "linear": " ", diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_HalfPeriodRatio.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_HalfPeriodRatio.txt index 2996bd40154..362233e2fc4 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_HalfPeriodRatio.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_HalfPeriodRatio.txt @@ -1,4 +1,4 @@ -last-generated=2022-10-06 +last-generated=2023-04-06 statistics-simulation= { "linear": " ", diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_NormalizedTimeDelay.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_NormalizedTimeDelay.txt index cfa54c85e98..9c78c6e60c0 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_NormalizedTimeDelay.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_NormalizedTimeDelay.txt @@ -1,4 +1,4 @@ -last-generated=2022-10-06 +last-generated=2023-04-06 statistics-simulation= { "linear": " ", diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_OnOffPeriod.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_OnOffPeriod.txt index 60245aed71d..5028bffd326 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_OnOffPeriod.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_OnOffPeriod.txt @@ -1,4 +1,4 @@ -last-generated=2022-10-06 +last-generated=2023-04-06 statistics-simulation= { "linear": " ", diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_ResponseProcess.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_ResponseProcess.txt index e76c8920c20..7f36a3357f5 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_ResponseProcess.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_ResponseProcess.txt @@ -1,4 +1,4 @@ -last-generated=2022-10-06 +last-generated=2023-04-06 statistics-simulation= { "linear": " ", diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_Validation_ControlProcessModel.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_Validation_ControlProcessModel.txt index 7cbe717f453..72460788584 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_Validation_ControlProcessModel.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_Validation_ControlProcessModel.txt @@ -1,4 +1,4 @@ -last-generated=2022-10-06 +last-generated=2023-04-06 statistics-simulation= { "linear": " ", diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_Validation_Gain.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_Validation_Gain.txt index ce9e090f225..61c07ac8be3 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_Validation_Gain.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_Validation_Gain.txt @@ -1,4 +1,4 @@ -last-generated=2022-10-06 +last-generated=2023-04-06 statistics-simulation= { "linear": " ", diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_Validation_TimeConstantDelay.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_Validation_TimeConstantDelay.txt index 8339ed4e802..2dfaa6be3ed 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_Validation_TimeConstantDelay.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_Validation_TimeConstantDelay.txt @@ -1,4 +1,4 @@ -last-generated=2022-10-06 +last-generated=2023-04-06 statistics-simulation= { "linear": " ", diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIDWithFirstOrderAMIGO.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIDWithFirstOrderAMIGO.txt index 2d3ef9f31b8..eb7c613bedb 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIDWithFirstOrderAMIGO.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIDWithFirstOrderAMIGO.txt @@ -1,4 +1,4 @@ -last-generated=2022-11-16 +last-generated=2023-04-06 statistics-simulation= { "linear": " ", @@ -12,4 +12,3 @@ PID.u_m=[7.200000286102295e-01, 7.999961972236633e-01, 8.00000011920929e-01, 9.9 PIDWitTun.u_s=[8.00000011920929e-01, 8.00000011920929e-01] PIDWitTun.u_m=[8.999999761581421e-01, 9.99995231628418e-01, 1e+00, -9.972719848155975e-02, -1.000000312924385e-01, 9.851129055023193e-01, 9.999990463256836e-01, 1e+00, 7.412599921226501e-01, 7.412511706352234e-01, 8.219661712646484e-01, 8.221143484115601e-01, 8.221142888069153e-01, 7.949288487434387e-01, 7.949287295341492e-01, 8.02881121635437e-01, 8.028831481933594e-01, 7.998949885368347e-01, 7.998539805412292e-01, 7.998539805412292e-01, 8.005301356315613e-01, 8.005301356315613e-01, 8.001304268836975e-01, 8.001297116279602e-01, 8.001297116279602e-01, 8.00144374370575e-01, 8.00144374370575e-01, 8.000690937042236e-01, 8.000690340995789e-01, 8.000496625900269e-01, 8.000494241714478e-01, 8.000494241714478e-01, 8.000285625457764e-01, 8.000285625457764e-01, 8.000184297561646e-01, 8.000183701515198e-01, 8.000183701515198e-01, 8.00011157989502e-01, 8.00011157989502e-01, 8.000069856643677e-01, 8.000069856643677e-01, 8.000043630599976e-01, 8.000043034553528e-01, 8.000043034553528e-01, 8.000026941299438e-01, 8.000026941299438e-01, 8.000016808509827e-01, 8.000016808509827e-01, 8.000016808509827e-01, 8.000010251998901e-01, 8.000010251998901e-01, 8.000006675720215e-01, 8.000006675720215e-01, 8.000004291534424e-01, 8.000003695487976e-01, 8.000003695487976e-01, 8.000002503395081e-01, 8.000002503395081e-01, 8.000001311302185e-01, 8.000001311302185e-01, 8.000001311302185e-01, 8.000000715255737e-01, 8.000000715255737e-01, 8.000000715255737e-01, 8.000000715255737e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01] resSig.y=[0e+00, 0e+00] -PIDWitTun.resPro.triEnd=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIWithFirstOrderAMIGO.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIWithFirstOrderAMIGO.txt index 796bf5f6454..d30d037e1b7 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIWithFirstOrderAMIGO.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIWithFirstOrderAMIGO.txt @@ -1,4 +1,4 @@ -last-generated=2022-11-16 +last-generated=2023-04-06 statistics-simulation= { "linear": " ", @@ -12,4 +12,3 @@ PI.u_m=[7.200000286102295e-01, 7.999963164329529e-01, 8.00000011920929e-01, 9.99 PIWitTun.u_s=[8.00000011920929e-01, 8.00000011920929e-01] PIWitTun.u_m=[8.999999761581421e-01, 9.999954104423523e-01, 1e+00, -9.972716122865677e-02, -9.999996423721313e-02, 9.851132035255432e-01, 9.999990463256836e-01, 1e+00, 6.143437027931213e-01, 6.143306493759155e-01, 7.517758011817932e-01, 7.520279884338379e-01, 7.520279884338379e-01, 7.522224187850952e-01, 7.522224187850952e-01, 7.728264927864075e-01, 7.728316187858582e-01, 7.813777327537537e-01, 7.814949750900269e-01, 7.814949750900269e-01, 7.881967425346375e-01, 7.881969213485718e-01, 7.922887802124023e-01, 7.92296290397644e-01, 7.92296290397644e-01, 7.95012891292572e-01, 7.95012891292572e-01, 7.967617511749268e-01, 7.967621684074402e-01, 7.978845834732056e-01, 7.979000210762024e-01, 7.979000210762024e-01, 7.986374497413635e-01, 7.986375093460083e-01, 7.991152405738831e-01, 7.991161346435547e-01, 7.991161346435547e-01, 7.994265556335449e-01, 7.994265556335449e-01, 7.99627959728241e-01, 7.99627959728241e-01, 7.997568845748901e-01, 7.997586727142334e-01, 7.997586727142334e-01, 7.99843430519104e-01, 7.99843430519104e-01, 7.998983263969421e-01, 7.998984456062317e-01, 7.998984456062317e-01, 7.999340891838074e-01, 7.999340891838074e-01, 7.999572157859802e-01, 7.99957275390625e-01, 7.999720573425293e-01, 7.999722361564636e-01, 7.999722361564636e-01, 7.999820113182068e-01, 7.999820113182068e-01, 7.99988329410553e-01, 7.99988329410553e-01, 7.99988329410553e-01, 7.999924421310425e-01, 7.999924421310425e-01, 7.999950647354126e-01, 7.999950647354126e-01, 7.999967932701111e-01, 7.999967932701111e-01, 7.999967932701111e-01, 7.999979257583618e-01, 7.999979257583618e-01, 7.999986410140991e-01, 7.999986410140991e-01, 7.999986410140991e-01, 7.999991178512573e-01, 7.999991178512573e-01, 7.999994158744812e-01, 7.999994158744812e-01, 7.999996542930603e-01, 7.999996542930603e-01, 7.999996542930603e-01, 7.999997735023499e-01, 7.999997735023499e-01, 7.999998331069946e-01, 7.999998331069946e-01, 7.999998331069946e-01, 7.999998927116394e-01, 7.999998927116394e-01, 7.999999523162842e-01, 7.999999523162842e-01, 7.999999523162842e-01, 7.999999523162842e-01, 7.999999523162842e-01, 7.999999523162842e-01, 7.999999523162842e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01] resSig.y=[0e+00, 0e+00] -PIWitTun.resPro.triEnd=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] From 323905b572cdc96e17b4e45a155366838eb6dad9 Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Thu, 13 Apr 2023 14:02:34 -0700 Subject: [PATCH 061/214] improved naming and comments --- .../PIDWithAutotuning/AutoTuner/AMIGO/PI.mo | 44 +++--- .../PIDWithAutotuning/AutoTuner/AMIGO/PID.mo | 5 +- .../AutoTuner/AMIGO/PIDDerivativeTime.mo | 10 +- .../AutoTuner/AMIGO/PIDGain.mo | 4 +- .../AutoTuner/AMIGO/PIDIntegralTime.mo | 4 +- .../AutoTuner/AMIGO/PIGain.mo | 14 +- .../AutoTuner/AMIGO/PIIntegralTime.mo | 12 +- .../AutoTuner/AMIGO/package.mo | 2 +- .../PIDWithAutotuning/FirstOrderAMIGO.mo | 33 +++-- .../PIDWithAutotuning/Relay/Controller.mo | 39 ++--- .../Relay/HalfPeriodRatio.mo | 41 +++--- .../Relay/NormalizedTimeDelay.mo | 26 ++-- .../PIDWithAutotuning/Relay/OnOffPeriod.mo | 76 +++++----- .../Relay/ResponseProcess.mo | 49 ++++--- .../Relay/Validation/HalfPeriodRatio.mo | 4 +- .../ControlProcessModel.mo | 137 ++++++++++-------- .../FirstOrderTimedelayed/Gain.mo | 40 ++--- .../TimeConstantDelay.mo | 71 +++++---- 18 files changed, 319 insertions(+), 292 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PI.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PI.mo index 4b928b7a67e..a71b4b08339 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PI.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PI.mo @@ -1,5 +1,5 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; -block PI "Identify the parameters of a PI controller" +block PI "Identify control gain and integral time of the PI controller" Buildings.Controls.OBC.CDL.Interfaces.RealInput kp( final min=1E-6) "Gain of a first order time-delayed model" @@ -21,37 +21,37 @@ block PI "Identify the parameters of a PI controller" iconTransformation(extent={{-140,-80},{-100,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput k "Control gain signal" - annotation (Placement(transformation(extent={{100,40},{140,80}}))); + annotation (Placement(transformation(extent={{100,10},{140,50}}), + iconTransformation(extent={{100,40},{140,80}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput Ti( final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Time constant signal for the integral term" - annotation (Placement(transformation(extent={{100,-50},{140,-10}}))); - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIGain gain + annotation (Placement(transformation(extent={{100,-50},{140,-10}}), + iconTransformation(extent={{100,-80},{140,-40}}))); + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIGain gai "Calculate the control gain" annotation (Placement(transformation(extent={{-10,20},{10,40}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIIntegralTime - integralTime - "Calculate the integral time" + intTim "Calculate the integral time" annotation (Placement(transformation(extent={{-10,-40},{10,-20}}))); equation - connect(gain.k, k) annotation (Line(points={{12,30},{80,30},{80,60},{120,60}}, + connect(gai.k, k) + annotation (Line(points={{12,30},{120,30}}, color={0,0,127})); + connect(intTim.Ti, Ti) annotation (Line(points={{12,-30},{94,-30},{94,-30},{120, + -30}}, color={0,0,127})); + connect(intTim.T, gai.T) annotation (Line(points={{-12,-24},{-40,-24},{-40,30}, + {-12,30}}, color={0,0,127})); + connect(intTim.L, gai.L) annotation (Line(points={{-12,-36},{-20,-36},{-20,24}, + {-12,24}}, color={0,0,127})); + connect(T, gai.T) annotation (Line(points={{-120,0},{-40,0},{-40,30},{-12,30}}, color={0,0,127})); - connect(integralTime.Ti, Ti) annotation (Line(points={{12,-30},{94,-30},{94, - -30},{120,-30}}, - color={0,0,127})); - connect(integralTime.T, gain.T) annotation (Line(points={{-12,-24},{-40,-24}, - {-40,30},{-12,30}}, color={0,0,127})); - connect(integralTime.L, gain.L) annotation (Line(points={{-12,-36},{-20,-36}, - {-20,24},{-12,24}}, color={0,0,127})); - connect(T, gain.T) annotation (Line(points={{-120,0},{-40,0},{-40,30},{-12,30}}, - color={0,0,127})); - connect(L, gain.L) annotation (Line(points={{-120,-60},{-20,-60},{-20,24},{ - -12,24}}, color={0,0,127})); - connect(gain.kp, kp) annotation (Line(points={{-12,36},{-40,36},{-40,60},{ - -120,60}}, color={0,0,127})); + connect(L, gai.L) annotation (Line(points={{-120,-60},{-20,-60},{-20,24},{-12, + 24}}, color={0,0,127})); + connect(gai.kp, kp) annotation (Line(points={{-12,36},{-40,36},{-40,60},{-120, + 60}}, color={0,0,127})); annotation (defaultComponentName = "PI", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( @@ -60,7 +60,7 @@ equation fillColor={255,255,255}, fillPattern=FillPattern.Solid), Text( - extent={{-154,148},{146,108}}, + extent={{-100,140},{100,100}}, textString="%name", textColor={0,0,255})}), Diagram(coordinateSystem(preserveAspectRatio=false)), Documentation(revisions=" @@ -72,7 +72,7 @@ First implementation

                ", info="

                -This block calculates the control gain and the integral time of a PI model. +This block calculates the control gain and the integral time of a PI controller.

                Please refer to the following block for detailed information:

                  diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo index 04cec813c4d..950d6a319e8 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo @@ -1,5 +1,5 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; -block PID "Identify the parameters of a PID controller" +block PID "Identify control gain, integral time, and derivative time of the PID model" Buildings.Controls.OBC.CDL.Interfaces.RealInput kp( final min=1E-6) "Gain of a first order time-delayed model" @@ -87,7 +87,8 @@ First implementation
                ", info="

                -This block calculates the control gain, the integral time, and the derivative time of a PID model. +This block calculates the control gain, the integral time, and the +derivative time of a PID model.

                Please refer to the following block for detailed information:

                  diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo index 553187b1510..d535d38dad8 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo @@ -1,4 +1,4 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; block PIDDerivativeTime "Identify the derivative time of a PID controller" Buildings.Controls.OBC.CDL.Interfaces.RealInput T( final quantity="Time", @@ -21,10 +21,12 @@ block PIDDerivativeTime "Identify the derivative time of a PID controller" "Time constant signal for the derivative term" annotation (Placement(transformation(extent={{100,-16},{140,24}}), iconTransformation(extent={{100,-20},{140,20}}))); - Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai1(final k=0.3) + Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai1( + final k=0.3) "Calculate the product of 0.3 and the time delay" annotation (Placement(transformation(extent={{-80,-70},{-60,-50}}))); - Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai2(final k=0.5) + Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai2( + final k=0.5) "Calculate the product of 0.5 and the input time constant" annotation (Placement(transformation(extent={{-80,30},{-60,50}}))); Buildings.Controls.OBC.CDL.Continuous.Multiply mul @@ -63,7 +65,7 @@ equation fillColor={255,255,255}, fillPattern=FillPattern.Solid), Text( - extent={{-154,148},{146,108}}, + extent={{-100,140},{100,100}}, textString="%name", textColor={0,0,255})}), Diagram(coordinateSystem(preserveAspectRatio=false)), Documentation(revisions=" diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo index b22bb148760..f2dfd76f81c 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo @@ -1,4 +1,4 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; block PIDGain "Identify the control gain of a PID controller" Buildings.Controls.OBC.CDL.Interfaces.RealInput kp( final min=1E-6) @@ -70,7 +70,7 @@ equation fillColor={255,255,255}, fillPattern=FillPattern.Solid), Text( - extent={{-154,148},{146,108}}, + extent={{-100,140},{100,100}}, textString="%name", textColor={0,0,255})}), Diagram(coordinateSystem(preserveAspectRatio=false)), Documentation(revisions=" diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo index ca753773be6..314b480048d 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo @@ -1,4 +1,4 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; block PIDIntegralTime "Identify the integral time of a PID controller" Buildings.Controls.OBC.CDL.Interfaces.RealInput T( final quantity="Time", @@ -79,7 +79,7 @@ equation fillColor={255,255,255}, fillPattern=FillPattern.Solid), Text( - extent={{-154,148},{146,108}}, + extent={{-100,140},{100,100}}, textString="%name", textColor={0,0,255})}), Diagram(coordinateSystem(preserveAspectRatio=false)), Documentation(revisions=" diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo index 38e2b860f7b..1d4cbe4dbf2 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo @@ -1,4 +1,4 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; block PIGain "Identify the control gain of a PI controller" Buildings.Controls.OBC.CDL.Interfaces.RealInput kp( final min=1E-6) @@ -57,7 +57,7 @@ block PIGain "Identify the control gain of a PI controller" annotation (Placement(transformation(extent={{-60,-80},{-40,-60}}))); Buildings.Controls.OBC.CDL.Continuous.Subtract sub "Calculate the difference between 0.35 and the output of div2" - annotation (Placement(transformation(extent={{50,-60},{70,-40}}))); + annotation (Placement(transformation(extent={{60,-54},{80,-34}}))); equation connect(div1.u2, kp) annotation (Line(points={{-42,44},{-80,44},{-80,60},{ @@ -97,11 +97,11 @@ equation 16},{48,0},{42,0}}, color={0,0,127})); connect(add2.y, k) annotation (Line(points={{42,30},{60,30},{60,0},{120,0}}, color={0,0,127})); - connect(div2.y, sub.u2) annotation (Line(points={{42,-50},{44,-50},{44,-56},{ - 48,-56}}, color={0,0,127})); - connect(const1.y, sub.u1) annotation (Line(points={{22,-80},{46,-80},{46,-44}, - {48,-44}}, color={0,0,127})); - connect(sub.y, mul3.u2) annotation (Line(points={{72,-50},{80,-50},{80,-22},{ + connect(div2.y, sub.u2) annotation (Line(points={{42,-50},{58,-50}}, + color={0,0,127})); + connect(const1.y, sub.u1) annotation (Line(points={{22,-80},{50,-80},{50,-38}, + {58,-38}}, color={0,0,127})); + connect(sub.y, mul3.u2) annotation (Line(points={{82,-44},{90,-44},{90,-22},{ 10,-22},{10,-6},{18,-6}}, color={0,0,127})); annotation (defaultComponentName = "PIGai", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo index 6e0a69c19be..976bcbe96e8 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo @@ -1,4 +1,4 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; block PIIntegralTime "Identify the integral time of a PI controller" Buildings.Controls.OBC.CDL.Interfaces.RealInput T( final quantity="Time", @@ -29,7 +29,7 @@ block PIIntegralTime "Identify the integral time of a PI controller" annotation (Placement(transformation(extent={{60,-12},{80,8}}))); Buildings.Controls.OBC.CDL.Continuous.Add add3 "Calculate the sum of the output of add1 and the output of mul2" - annotation (Placement(transformation(extent={{40,-80},{60,-60}}))); + annotation (Placement(transformation(extent={{60,-54},{80,-34}}))); Buildings.Controls.OBC.CDL.Continuous.Divide div "Calculate the output of gai3 divided by the output of add3" annotation (Placement(transformation(extent={{0,-6},{20,14}}))); @@ -85,11 +85,11 @@ equation color={0,0,127})); connect(mul1.y, add1.u2) annotation (Line(points={{-18,30},{-10,30},{-10,48}, {-2,48}}, color={0,0,127})); - connect(mul2.y, add3.u2) annotation (Line(points={{22,-50},{30,-50},{30,-76}, - {38,-76}}, color={0,0,127})); - connect(add3.u1, add1.y) annotation (Line(points={{38,-64},{32,-64},{32,54},{ + connect(mul2.y, add3.u2) annotation (Line(points={{22,-50},{58,-50}}, + color={0,0,127})); + connect(add3.u1, add1.y) annotation (Line(points={{58,-38},{32,-38},{32,54},{ 22,54}}, color={0,0,127})); - connect(add3.y, div.u2) annotation (Line(points={{62,-70},{80,-70},{80,-24},{ + connect(add3.y, div.u2) annotation (Line(points={{82,-44},{90,-44},{90,-24},{ -8,-24},{-8,-2},{-2,-2}}, color={0,0,127})); connect(div.y, add2.u1) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.mo index 418a217c1b5..3adc6c3c6d2 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.mo @@ -1,4 +1,4 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner; package AMIGO "Package with components related to AMIGO tuner" annotation (Documentation(info="

                  diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index 2b99f8ccdf6..27f99887f6e 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -56,10 +56,10 @@ block FirstOrderAMIGO final parameter Real yRef(min=1E-6) = 0.8 "Reference output for the tuning process"; Buildings.Controls.OBC.CDL.Interfaces.RealInput u_s - "Setpoint" + "Connector of setpoint input signal" annotation (Placement(transformation(extent={{-140,-20},{-100,20}}),iconTransformation(extent={{-140,-20},{-100,20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput u_m - "Connector for measurement input signal" + "Connector of measurement input signal" annotation (Placement(transformation(origin={30,-120}, extent={{20,-20},{-20,20}},rotation=270), iconTransformation(extent={{20,-20},{-20,20}},rotation=270,origin={0,-120}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanInput tri @@ -72,8 +72,7 @@ block FirstOrderAMIGO Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Controller rel( final yHig=yHig, final yLow=yLow, - final deaBan=deaBan) - "A relay controller" + final deaBan=deaBan) "Relay controller" annotation (Placement(transformation(extent={{20,0},{40,20}}))); Buildings.Controls.OBC.Utilities.PIDWithInputGains PID( final controllerType=controllerType, @@ -85,8 +84,7 @@ block FirstOrderAMIGO final xi_start=xi_start, final yd_start=yd_start, final reverseActing=reverseActing, - final y_reset=xi_start) - "A PID controller" + final y_reset=xi_start) "PID controller with the gains as inputs" annotation (Placement(transformation(extent={{0,-50},{20,-30}}))); Buildings.Controls.OBC.CDL.Continuous.Switch swi "Switch between a PID controller and a relay controller" @@ -104,7 +102,8 @@ block FirstOrderAMIGO conProMod( final yHig=yHig - yRef, final yLow=yRef + yLow, - final deaBan=deaBan) "A block to approximate the control process" + final deaBan=deaBan) + "Calculates the parameters of a first-order time-delayed model" annotation (Placement(transformation(extent={{-20,40},{-40,60}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PI PIPar if not with_D "Parameters of a PI controller" @@ -115,7 +114,7 @@ block FirstOrderAMIGO Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.ResponseProcess resPro( final yHig=yHig - yRef, final yLow=yRef + yLow) - "A block to process the response from the relay controller" + "Identify the On and Off period length, the half period ratio, and the moments when the tuning starts and ends" annotation (Placement(transformation(extent={{20,30},{0,50}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.ModelTime modTim "Simulation time" @@ -161,25 +160,27 @@ equation connect(rel.yErr, conProMod.u) annotation (Line(points={{42,10},{48,10},{48,58}, {-18,58}}, color={0,0,127})); connect(PIDPar.kp, conProMod.k) - annotation (Line(points={{-58,56},{-50,56},{-50,56.1},{-42,56.1}}, color={0,0,127})); + annotation (Line(points={{-58,56},{-50,56},{-50,56},{-42,56}}, color={0,0,127})); connect(PIDPar.T, conProMod.T) annotation (Line(points={{-58,50},{-42,50}}, color={0,0,127})); - connect(PIDPar.L, conProMod.L) annotation (Line(points={{-58,44},{-54,44},{-54, - 42},{-42,42}}, color={0,0,127})); + connect(PIDPar.L, conProMod.L) annotation (Line(points={{-58,44},{-54,44},{ + -54,44},{-42,44}}, + color={0,0,127})); connect(PIDPar.k, samk.u) annotation (Line(points={{-82,57},{-94,57},{-94,-20}, {-42,-20}}, color={0,0,127})); connect(PIDPar.Ti, samTi.u) annotation (Line(points={{-82,50},{-90,50},{-90,-50}, {-82,-50}}, color={0,0,127})); connect(PIPar.kp, conProMod.k) annotation (Line(points={{-58,86},{-46,86},{ - -46,56.1},{-42,56.1}}, color={0,0,127})); + -46,56},{-42,56}}, color={0,0,127})); connect(PIPar.T, conProMod.T) annotation (Line(points={{-58,80},{-50,80},{-50, 50},{-42,50}}, color={0,0,127})); connect(PIPar.L, conProMod.L) annotation (Line(points={{-58,74},{-54,74},{-54, - 42},{-42,42}}, color={0,0,127})); + 44},{-42,44}}, color={0,0,127})); connect(PIPar.k, samk.u) annotation (Line(points={{-82,86},{-94,86},{-94,-20}, {-42,-20}}, color={0,0,127})); - connect(PIPar.Ti, samTi.u) annotation (Line(points={{-82,77},{-90,77},{-90,-50}, - {-82,-50}}, color={0,0,127})); + connect(PIPar.Ti, samTi.u) annotation (Line(points={{-82,74},{-90,74},{-90, + -50},{-82,-50}}, + color={0,0,127})); connect(resPro.triEnd, conProMod.triEnd) annotation (Line(points={{-2,32},{-36, 32},{-36,38}}, color={255,0,255})); connect(resPro.triSta, conProMod.triSta) annotation (Line(points={{-2,36},{-24, @@ -248,7 +249,7 @@ First implementation
                  defaultComponentName = "PIDWitTun", Icon(graphics={ Text( - extent={{-158,144},{142,104}}, + extent={{-100,140},{100,100}}, textString="%name", textColor={0,0,255}), Rectangle( diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo index a21c57c30fd..d61bcaaae73 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo @@ -23,7 +23,7 @@ block Controller annotation (Placement(transformation(extent={{100,-80},{140,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput yErr "Control error" - annotation (Placement(transformation(extent={{100,10},{140,50}}), + annotation (Placement(transformation(extent={{100,0},{140,40}}), iconTransformation(extent={{100,-20},{140,20}}))); Buildings.Controls.OBC.CDL.Logical.OnOffController greMeaSet( final bandwidth=deaBan*2, @@ -33,11 +33,11 @@ block Controller Buildings.Controls.OBC.CDL.Continuous.Switch swi "Switch between a higher value and a lower value" annotation (Placement(transformation(extent={{60,-10},{80,10}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.Constant yHigSig( + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant higVal( final k=yHig) "Higher value for the output" annotation (Placement(transformation(extent={{-20,50},{0,70}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.Constant yLowSig( + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant lowVal( final k=-yLow) "Lower value for the output" annotation (Placement(transformation(extent={{-20,-50},{0,-30}}))); @@ -48,7 +48,8 @@ block Controller initial equation assert( yHig-yLow>1E-6, - "The absulte values of the higher value for the relay output should be larger than that of the lower value. Check parameters."); + "In " + getInstanceName() + "The higher value for the relay output should + be larger than that of the lower value."); equation connect(swi.y, y) @@ -58,14 +59,14 @@ equation connect(greMeaSet.u, u_m) annotation (Line(points={{-22,-6},{-70,-6},{-70,-94},{0,-94},{0,-120}}, color={0,0,127})); - connect(yHigSig.y, swi.u1) + connect(higVal.y, swi.u1) annotation (Line(points={{2,60},{20,60},{20,8},{58,8}}, color={0,0,127})); - connect(yLowSig.y, swi.u3) - annotation (Line(points={{2,-40},{20,-40},{20,-8},{58,-8}}, color={0,0,127})); + connect(lowVal.y, swi.u3) annotation (Line(points={{2,-40},{20,-40},{20,-8},{58, + -8}}, color={0,0,127})); connect(yOn, swi.u2) annotation (Line(points={{120,-60},{40,-60},{40,0},{58,0}}, color={255,0,255})); - connect(conErr.y, yErr) annotation (Line(points={{-38,20},{40,20},{40,30},{ - 120,30}}, color={0,0,127})); + connect(conErr.y, yErr) annotation (Line(points={{-38,20},{120,20}}, + color={0,0,127})); connect(greMeaSet.y, swi.u2) annotation (Line(points={{2,0},{58,0}}, color={255,0,255})); connect(conErr.u1, u_m) annotation (Line(points={{-62,26},{-70,26},{-70,-94}, @@ -80,30 +81,30 @@ equation fillColor={255,255,255}, fillPattern=FillPattern.Solid), Text( - extent={{-148,154},{152,114}}, + extent={{-100,140},{100,100}}, textString="%name", textColor={0,0,255})}), Diagram( coordinateSystem(preserveAspectRatio=false)), Documentation(info="

                  -This block grenerates a real control output, y, and a -boolean control switch output, yOn, as described below: +This block grenerates a real control output y, a +boolean control switch output yOn, and the control error +yErr. They are calcuated as below:

                  • -if e(t) < - δ, then y(t) = yhig, yOn(t) = true, +yErr = us(t) - um(t),
                  • -if e(t) > δ, then y(t) = -ylow, yOn(t) = false, +if yErr < - δ, then y(t) = yhig, yOn(t) = true,
                  • -otherwise, y(t) = y(t-Δt), yOn(t) = yOn(t-Δt) +if yErr > δ, then y(t) = -ylow, yOn(t) = false,
                  -

                  where δ is a dead band, e(t) = us(t) - um(t) -is the control error, yhig and ylow -are the higher value and the lower value of the output y, -and t-Δt is the previous time step. +

                  where δ is a dead band, yhig +and ylow +are the higher value and the lower value of the output y.

                  Note that this block generates an asymmetric output, meaning yhig ≠ ylow. diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo index 482d1c571bf..fd03ee0406a 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo @@ -6,29 +6,29 @@ block HalfPeriodRatio final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Length for the On period" - annotation (Placement(transformation(extent={{-140,40},{-100,80}}), + annotation (Placement(transformation(extent={{-140,60},{-100,100}}), iconTransformation(extent={{-140,40},{-100,80}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput tOff( final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Length for the Off period" - annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), + annotation (Placement(transformation(extent={{-140,-90},{-100,-50}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput rho "Real signal of the half period ratio" annotation (Placement(transformation(extent={{100,60},{140,100}}), - iconTransformation(extent={{100,50},{120,70}}))); + iconTransformation(extent={{100,40},{140,80}}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput triSta "A boolean signal, true if the tuning starts" annotation (Placement(transformation(extent={{100,-20},{140,20}}), - iconTransformation(extent={{100,-10},{120,10}}))); + iconTransformation(extent={{100,-20},{140,20}}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput triEnd "A boolean signal, true if the tuning completes" annotation (Placement(transformation(extent={{100,-50},{140,-10}}), - iconTransformation(extent={{100,-70},{120,-50}}))); + iconTransformation(extent={{100,-80},{140,-40}}))); Buildings.Controls.OBC.CDL.Continuous.Min tmin - "Minimum value of the length for the On period and the length for the off period " + "Minimum value of the length for the On and Off period " annotation (Placement(transformation(extent={{-80,30},{-60,50}}))); Buildings.Controls.OBC.CDL.Continuous.Greater gretOntOff "Check if both the length for the On period and the length for the off period are larger than 0" @@ -77,16 +77,16 @@ block HalfPeriodRatio annotation (Placement(transformation(extent={{70,-40},{90,-20}}))); equation - connect(tmin.u1, tOn) annotation (Line(points={{-82,46},{-94,46},{-94,60},{ - -120,60}}, color={0,0,127})); - connect(tmin.u2, tOff) annotation (Line(points={{-82,34},{-88,34},{-88,-60},{ - -120,-60}}, color={0,0,127})); + connect(tmin.u1, tOn) annotation (Line(points={{-82,46},{-94,46},{-94,80},{-120, + 80}}, color={0,0,127})); + connect(tmin.u2, tOff) annotation (Line(points={{-82,34},{-88,34},{-88,-70},{-120, + -70}}, color={0,0,127})); connect(minLen.y, gretOntOff.u2) annotation (Line(points={{-58,10},{-40,10},{ -40,48},{-22,48}},color={0,0,127})); connect(tOnSample.u, tOn) - annotation (Line(points={{-82,80},{-94,80},{-94,60},{-120,60}}, color={0,0,127})); - connect(tOffSample.u, tOff) annotation (Line(points={{-82,-70},{-88,-70},{-88, - -60},{-120,-60}}, color={0,0,127})); + annotation (Line(points={{-82,80},{-120,80}}, color={0,0,127})); + connect(tOffSample.u, tOff) annotation (Line(points={{-82,-70},{-120,-70}}, + color={0,0,127})); connect(samAddtOntOff.y, tIncrease.u2) annotation (Line(points={{42,20},{60, 20},{60,-6},{18,-6},{18,-38},{28,-38}}, color={0,0,127})); connect(gretOntOff.y, samAddtOntOff.trigger) annotation (Line(points={{2,40},{ @@ -103,10 +103,10 @@ equation {14,-70},{2,-70}}, color={0,0,127})); connect(halPerRat.y, rho) annotation (Line(points={{82,80},{120,80}}, color={0,0,127})); - connect(AddtOntOff.u2, tOff) annotation (Line(points={{-82,-36},{-88,-36},{ - -88,-60},{-120,-60}}, color={0,0,127})); + connect(AddtOntOff.u2, tOff) annotation (Line(points={{-82,-36},{-88,-36},{-88, + -70},{-120,-70}}, color={0,0,127})); connect(AddtOntOff.u1, tOn) annotation (Line(points={{-82,-24},{-94,-24},{-94, - 60},{-120,60}}, color={0,0,127})); + 80},{-120,80}}, color={0,0,127})); connect(gretmaxtOntOff.y, triSta) annotation (Line(points={{2,0},{120,0}}, color={255,0,255})); connect(tChanges.u1, tIncrease.y) @@ -143,7 +143,7 @@ equation Diagram( coordinateSystem( extent={{-100,-100},{100,100}})), - Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{80, + Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{100, 100}}), graphics={ Rectangle( extent={{-100,-100},{100,100}}, @@ -151,7 +151,7 @@ equation fillColor={255,255,255}, fillPattern=FillPattern.Solid), Text( - extent={{-154,148},{146,108}}, + extent={{-100,140},{100,100}}, textString="%name", textColor={0,0,255})}), Documentation(revisions=" @@ -172,8 +172,9 @@ where ton and toff are the length of the On period and the Off period, respectively.

                  -An On period is defined as the period when the switch output of the relay controller is True; -Likewise, an Off period is defined as the period when the switch output is False. +An On period is defined as the period when the switch output of the relay controller is +true; +Likewise, an Off period is defined as the period when the switch output is false. See details of the switch output in Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Controller.

                  diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/NormalizedTimeDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/NormalizedTimeDelay.mo index a29abe48522..17f851ac506 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/NormalizedTimeDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/NormalizedTimeDelay.mo @@ -18,13 +18,13 @@ block NormalizedTimeDelay final p=0.65) "Calculate the sum of the output of gai and 0.65" annotation (Placement(transformation(extent={{-40,-70},{-20,-50}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.Constant asymmetryLevel( + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant asyLev( final k=gamma) "Asymmetry level of the relay controller" annotation (Placement(transformation(extent={{-80,70},{-60,90}}))); Buildings.Controls.OBC.CDL.Continuous.Divide div "Calculate the normalized time delay" annotation (Placement(transformation(extent={{40,-10},{60,10}}))); - Buildings.Controls.OBC.CDL.Continuous.Subtract subGammaRho + Buildings.Controls.OBC.CDL.Continuous.Subtract subGamRho "Calculate the difference between the asymmetry level of the relay controller and the half period ratio" annotation (Placement(transformation(extent={{0,10},{20,30}}))); Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai( @@ -40,17 +40,17 @@ block NormalizedTimeDelay annotation (Placement(transformation(extent={{60,50},{80,70}}))); Buildings.Controls.OBC.CDL.Continuous.Greater gre( final h=1e-6) - "Check if the asymmetry level is greater than the half period ratio" + "Output true if the asymmetry level is greater than the half period ratio" annotation (Placement(transformation(extent={{-20,50},{0,70}}))); equation - connect(subGammaRho.u1, asymmetryLevel.y) annotation (Line(points={{-2,26},{-52, - 26},{-52,80},{-58,80}}, color={0,0,127})); - connect(subGammaRho.u2, rho) annotation (Line(points={{-2,14},{-42,14},{-42, - 20},{-94,20},{-94,0},{-120,0}}, color={0,0,127})); + connect(subGamRho.u1, asyLev.y) annotation (Line(points={{-2,26},{-52,26},{-52, + 80},{-58,80}}, color={0,0,127})); + connect(subGamRho.u2, rho) annotation (Line(points={{-2,14},{-42,14},{-42,20}, + {-94,20},{-94,0},{-120,0}}, color={0,0,127})); connect(gai.u, rho) annotation (Line(points={{-82,-60},{-94,-60},{-94,0},{-120, 0}}, color={0,0,127})); - connect(div.u1, subGammaRho.y) + connect(div.u1, subGamRho.y) annotation (Line(points={{38,6},{30,6},{30,20},{22,20}}, color={0,0,127})); connect(div.u2, mul.y) annotation (Line(points={{38,-6},{30,-6},{30,-38},{22,-38}}, color={0,0,127})); @@ -60,12 +60,12 @@ equation annotation (Line(points={{-58,-60},{-42,-60}}, color={0,0,127})); connect(addPar2.y, mul.u2) annotation (Line(points={{-18,-60},{-10,-60},{-10,-44}, {-2,-44}}, color={0,0,127})); - connect(addPar1.u, asymmetryLevel.y) annotation (Line(points={{-42,-10},{-52,-10}, - {-52,80},{-58,80}}, color={0,0,127})); + connect(addPar1.u, asyLev.y) annotation (Line(points={{-42,-10},{-52,-10},{-52, + 80},{-58,80}}, color={0,0,127})); connect(addPar1.y, mul.u1) annotation (Line(points={{-18,-10},{-10,-10},{-10,-32}, {-2,-32}}, color={0,0,127})); - connect(asymmetryLevel.y, gre.u1) annotation (Line(points={{-58,80},{-52,80},{ - -52,60},{-22,60}}, color={0,0,127})); + connect(asyLev.y, gre.u1) annotation (Line(points={{-58,80},{-52,80},{-52,60}, + {-22,60}}, color={0,0,127})); connect(rho, gre.u2) annotation (Line(points={{-120,0},{-94,0},{-94,52},{-22,52}}, color={0,0,127})); connect(gre.y, assMes.u) @@ -79,7 +79,7 @@ equation fillColor={255,255,255}, fillPattern=FillPattern.Solid), Text( - extent={{-154,148},{146,108}}, + extent={{-100,140},{100,100}}, textString="%name", textColor={0,0,255})}), Diagram(coordinateSystem(preserveAspectRatio=false)), Documentation(revisions=" diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo index 9d9698ad122..8ae59c495da 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo @@ -26,74 +26,76 @@ block OnOffPeriod annotation (Placement(transformation(extent={{100,20},{140,60}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler timOn "Simulation time when the input signal becomes On (True)" - annotation (Placement(transformation(extent={{-40,30},{-20,50}}))); + annotation (Placement(transformation(extent={{-50,30},{-30,50}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler timOff "Simulation time when the input signal becomesss Off (False)" - annotation (Placement(transformation(extent={{-40,-50},{-20,-30}}))); + annotation (Placement(transformation(extent={{-50,-50},{-30,-30}}))); Buildings.Controls.OBC.CDL.Logical.Not Off "Relay switch off" annotation (Placement(transformation(extent={{-80,-80},{-60,-60}}))); Buildings.Controls.OBC.CDL.Continuous.Subtract lenOffCal "Calculate the horizon length for the Off period" - annotation (Placement(transformation(extent={{20,-40},{40,-20}}))); + annotation (Placement(transformation(extent={{10,-40},{30,-20}}))); Buildings.Controls.OBC.CDL.Continuous.Subtract lenOnCal "Calculate the horizon length for the On period" - annotation (Placement(transformation(extent={{20,30},{40,50}}))); + annotation (Placement(transformation(extent={{10,30},{30,50}}))); Buildings.Controls.OBC.CDL.Continuous.Greater greTimOff "Trigger the action to record the horizon length for the Off period" - annotation (Placement(transformation(extent={{40,-80},{60,-60}}))); + annotation (Placement(transformation(extent={{50,-80},{70,-60}}))); Buildings.Controls.OBC.CDL.Continuous.Greater greTimOn "Trigger the action to record the horizon length for the On period" - annotation (Placement(transformation(extent={{40,60},{60,80}}))); + annotation (Placement(transformation(extent={{50,60},{70,80}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.Constant minLen(final k=0) "Minimum value for the horizon length" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler timOffRec "Record the horizon length for the Off period" - annotation (Placement(transformation(extent={{60,-40},{80,-20}}))); + annotation (Placement(transformation(extent={{70,-40},{90,-20}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler timOnRec "Record the horizon length for the On period" - annotation (Placement(transformation(extent={{60,50},{80,30}}))); + annotation (Placement(transformation(extent={{70,50},{90,30}}))); equation connect(Off.u, On) annotation (Line(points={{-82,-70},{-120,-70}}, color={255,0,255})); - connect(Off.y, timOff.trigger) annotation (Line(points={{-58,-70},{-30,-70},{ - -30,-52}}, color={255,0,255})); - connect(timOn.trigger, On) annotation (Line(points={{-30,28},{-30,20},{-92,20}, - {-92,-70},{-120,-70}}, color={255,0,255})); - connect(lenOffCal.u1, timOn.y) annotation (Line(points={{18,-24},{8,-24},{8, - 40},{-18,40}}, color={0,0,127})); + connect(Off.y, timOff.trigger) annotation (Line(points={{-58,-70},{-40,-70},{ + -40,-52}}, color={255,0,255})); + connect(timOn.trigger, On) annotation (Line(points={{-40,28},{-40,20},{-90,20}, + {-90,-70},{-120,-70}}, color={255,0,255})); + connect(lenOffCal.u1, timOn.y) annotation (Line(points={{8,-24},{0,-24},{0,40}, + {-28,40}}, color={0,0,127})); connect(lenOnCal.u2, timOn.y) - annotation (Line(points={{18,34},{8,34},{8,40},{-18,40}},color={0,0,127})); - connect(lenOnCal.u1, timOff.y) annotation (Line(points={{18,46},{0,46},{0,-40}, - {-18,-40}},color={0,0,127})); - connect(lenOffCal.u2, timOff.y) annotation (Line(points={{18,-36},{0,-36},{0, - -40},{-18,-40}}, color={0,0,127})); + annotation (Line(points={{8,34},{0,34},{0,40},{-28,40}}, color={0,0,127})); + connect(lenOnCal.u1, timOff.y) annotation (Line(points={{8,46},{-10,46},{-10, + -40},{-28,-40}}, + color={0,0,127})); + connect(lenOffCal.u2, timOff.y) annotation (Line(points={{8,-36},{-10,-36},{ + -10,-40},{-28,-40}}, + color={0,0,127})); connect(minLen.y, greTimOn.u2) - annotation (Line(points={{-38,0},{-10,0},{-10,62},{38,62}}, color={0,0,127})); - connect(lenOnCal.y, greTimOn.u1) annotation (Line(points={{42,40},{50,40},{50, - 56},{20,56},{20,70},{38,70}}, color={0,0,127})); - connect(greTimOff.u2, greTimOn.u2) annotation (Line(points={{38,-78},{-10,-78}, - {-10,62},{38,62}}, color={0,0,127})); - connect(lenOffCal.y, greTimOff.u1) annotation (Line(points={{42,-30},{48,-30}, - {48,-48},{20,-48},{20,-70},{38,-70}}, color={0,0,127})); + annotation (Line(points={{-38,0},{-20,0},{-20,62},{48,62}}, color={0,0,127})); + connect(lenOnCal.y, greTimOn.u1) annotation (Line(points={{32,40},{40,40},{40, + 70},{48,70}}, color={0,0,127})); + connect(greTimOff.u2, greTimOn.u2) annotation (Line(points={{48,-78},{-20,-78}, + {-20,62},{48,62}}, color={0,0,127})); + connect(lenOffCal.y, greTimOff.u1) annotation (Line(points={{32,-30},{40,-30}, + {40,-70},{48,-70}}, color={0,0,127})); connect(greTimOff.y, timOffRec.trigger) - annotation (Line(points={{62,-70},{70,-70},{70,-42}}, color={255,0,255})); + annotation (Line(points={{72,-70},{80,-70},{80,-42}}, color={255,0,255})); connect(greTimOn.y, timOnRec.trigger) - annotation (Line(points={{62,70},{70,70},{70,52}}, color={255,0,255})); - connect(timOnRec.u, greTimOn.u1) annotation (Line(points={{58,40},{50,40},{50, - 56},{20,56},{20,70},{38,70}}, color={0,0,127})); - connect(timOn.u, tim) annotation (Line(points={{-42,40},{-120,40}}, + annotation (Line(points={{72,70},{80,70},{80,52}}, color={255,0,255})); + connect(timOn.u, tim) annotation (Line(points={{-52,40},{-120,40}}, color={0,0,127})); - connect(timOff.u, tim) annotation (Line(points={{-42,-40},{-80,-40},{-80,40}, + connect(timOff.u, tim) annotation (Line(points={{-52,-40},{-80,-40},{-80,40}, {-120,40}}, color={0,0,127})); - connect(timOnRec.y, tOn) annotation (Line(points={{82,40},{102,40},{102,40},{120, - 40}}, color={0,0,127})); - connect(timOffRec.y, tOff) annotation (Line(points={{82,-30},{120,-30}}, + connect(timOnRec.y, tOn) annotation (Line(points={{92,40},{120,40}}, + color={0,0,127})); + connect(timOffRec.y, tOff) annotation (Line(points={{92,-30},{120,-30}}, color={0,0,127})); connect(lenOffCal.y, timOffRec.u) - annotation (Line(points={{42,-30},{58,-30}}, color={0,0,127})); + annotation (Line(points={{32,-30},{68,-30}}, color={0,0,127})); + connect(lenOnCal.y, timOnRec.u) + annotation (Line(points={{32,40},{68,40}}, color={0,0,127})); annotation ( defaultComponentName = "onOffPer", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ @@ -103,7 +105,7 @@ equation fillColor={255,255,255}, fillPattern=FillPattern.Solid), Text( - extent={{-154,148},{146,108}}, + extent={{-100,140},{100,100}}, textString="%name", textColor={0,0,255})}), Diagram(coordinateSystem(preserveAspectRatio=false)), Documentation(revisions=" diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo index 89da3bbed7b..6193154a181 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo @@ -35,39 +35,40 @@ block ResponseProcess annotation (Placement(transformation(extent={{100,-100},{140,-60}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput tau "A real signal of the normalized time delay" - annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + annotation (Placement(transformation(extent={{100,-10},{140,30}}), + iconTransformation(extent={{100,-20},{140,20}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.OnOffPeriod onOffPer "Calculate the length of the On period and the Off period" - annotation (Placement(transformation(extent={{-60,0},{-40,20}}))); + annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.HalfPeriodRatio halPerRatio - "Calculat the half period ratio" - annotation (Placement(transformation(extent={{0,0},{20,20}}))); + "Calculate the half period ratio" + annotation (Placement(transformation(extent={{-20,0},{0,20}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.NormalizedTimeDelay norTimDel( final gamma=max(yHig, yLow)/min(yLow, yHig)) - "calculate the normalized time delay" + "Calculate the normalized time delay" annotation (Placement(transformation(extent={{40,0},{60,20}}))); equation - connect(onOffPer.On, On) annotation (Line(points={{-62,4},{-94,4},{-94,-60},{ + connect(onOffPer.On, On) annotation (Line(points={{-82,4},{-90,4},{-90,-60},{ -120,-60}}, color={255,0,255})); - connect(onOffPer.tim, tim) annotation (Line(points={{-62,16},{-94,16},{-94,60}, + connect(onOffPer.tim, tim) annotation (Line(points={{-82,16},{-90,16},{-90,60}, {-120,60}}, color={0,0,127})); - connect(onOffPer.tOn, halPerRatio.tOn) annotation (Line(points={{-38,14},{-20, - 14},{-20,16},{-2.22222,16}}, color={0,0,127})); - connect(onOffPer.tOff, halPerRatio.tOff) annotation (Line(points={{-37.8,6},{ - -8,6},{-8,4},{-2.22222,4}}, color={0,0,127})); - connect(halPerRatio.rho, norTimDel.rho) annotation (Line(points={{23.3333,16}, - {36,16},{36,10},{38,10}}, color={0,0,127})); - connect(tOn, halPerRatio.tOn) annotation (Line(points={{120,80},{-20,80},{-20, - 16},{-2.22222,16}}, color={0,0,127})); - connect(tOff, halPerRatio.tOff) annotation (Line(points={{120,40},{-8,40},{-8, - 4},{-2.22222,4}}, color={0,0,127})); - connect(norTimDel.tau, tau) annotation (Line(points={{62,10},{94,10},{94,0},{ - 120,0}}, color={0,0,127})); - connect(triEnd, halPerRatio.triEnd) annotation (Line(points={{120,-80},{26, - -80},{26,4},{23.3333,4}}, color={255,0,255})); - connect(triSta, halPerRatio.triSta) annotation (Line(points={{120,-40},{34, - -40},{34,10},{23.3333,10}}, color={255,0,255})); + connect(onOffPer.tOn, halPerRatio.tOn) annotation (Line(points={{-58,14},{-40, + 14},{-40,16},{-22,16}}, color={0,0,127})); + connect(onOffPer.tOff, halPerRatio.tOff) annotation (Line(points={{-57.8,6},{ + -30,6},{-30,4},{-22,4}}, color={0,0,127})); + connect(halPerRatio.rho, norTimDel.rho) annotation (Line(points={{2,16},{30, + 16},{30,10},{38,10}}, color={0,0,127})); + connect(tOn, halPerRatio.tOn) annotation (Line(points={{120,80},{-40,80},{-40, + 16},{-22,16}}, color={0,0,127})); + connect(tOff, halPerRatio.tOff) annotation (Line(points={{120,40},{-30,40},{ + -30,4},{-22,4}}, color={0,0,127})); + connect(norTimDel.tau, tau) annotation (Line(points={{62,10},{120,10}}, + color={0,0,127})); + connect(triEnd, halPerRatio.triEnd) annotation (Line(points={{120,-80},{10, + -80},{10,4},{2,4}}, color={255,0,255})); + connect(triSta, halPerRatio.triSta) annotation (Line(points={{120,-40},{20, + -40},{20,10},{2,10}}, color={255,0,255})); annotation ( defaultComponentName = "resPro", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ @@ -77,7 +78,7 @@ equation fillColor={255,255,255}, fillPattern=FillPattern.Solid), Text( - extent={{-154,148},{146,108}}, + extent={{-100,140},{100,100}}, textString="%name", textColor={0,0,255})}), Diagram(coordinateSystem(preserveAspectRatio=false)), Documentation(revisions=" diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mo index b59dd6198dc..d6181550901 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mo @@ -18,9 +18,9 @@ model HalfPeriodRatio "Test model for HalfPeriodRatio" equation connect(tOn.y[1], halPerRat.tOn) annotation (Line(points={{-38,30},{-20,30},{ - -20,6},{-10.2222,6}}, color={0,0,127})); + -20,6},{-10,6}}, color={0,0,127})); connect(tOff.y[1], halPerRat.tOff) annotation (Line(points={{-38,-30},{-20, - -30},{-20,-6},{-10.2222,-6}}, color={0,0,127})); + -30},{-20,-6},{-10,-6}}, color={0,0,127})); annotation ( experiment( StopTime=1.0, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo index aca5c91af91..77e4cb8b848 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo @@ -23,131 +23,150 @@ block ControlProcessModel final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Length for the Off period" - annotation (Placement(transformation(extent={{-140,-60},{-100,-20}}), + annotation (Placement(transformation(extent={{-140,-40},{-100,0}}), iconTransformation(extent={{-140,-60},{-100,-20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput tau( final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Normalized time delay" - annotation (Placement(transformation(extent={{-140,-100},{-100,-60}}), + annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), iconTransformation(extent={{-140,-100},{-100,-60}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput k "Gain" - annotation (Placement(transformation(extent={{100,36},{140,86}}))); + annotation (Placement(transformation(extent={{100,50},{140,90}}), + iconTransformation(extent={{100,40},{140,80}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput T( final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Time constant" - annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + annotation (Placement(transformation(extent={{100,0},{140,40}}), + iconTransformation(extent={{100,-20},{140,20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput L( final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Time delay" - annotation (Placement(transformation(extent={{100,-100},{140,-60}}))); + annotation (Placement(transformation(extent={{100,-80},{140,-40}}), + iconTransformation(extent={{100,-80},{140,-40}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Gain gain( final yHig=yHig, final yLow=yLow) "Calculate the gain" - annotation (Placement(transformation(extent={{-84,-10},{-64,10}}))); + annotation (Placement(transformation(extent={{-84,10},{-64,30}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.TimeConstantDelay timConDel( final yHig=yHig, final yLow=yLow, deaBan=deaBan) "Calculate the time constant and the time delay" - annotation (Placement(transformation(extent={{0,-10},{20,10}}))); + annotation (Placement(transformation(extent={{0,10},{20,30}}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanInput triSta "Relay tuning status, true if the tuning starts" annotation (Placement(transformation(extent={{-20,-20},{20,20}}, - rotation=90, origin={-60,-120}))); + rotation=90, origin={-74,-120}), iconTransformation( + extent={{-20,-20},{20,20}}, + rotation=90, + origin={-60,-120}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanInput triEnd "Relay tuning status, true if the tuning ends" annotation (Placement(transformation(extent={{-20,-20},{20,20}}, - rotation=90, origin={60,-120}))); + rotation=90, origin={80,-120}), iconTransformation( + extent={{-20,-20},{20,20}}, + rotation=90, + origin={60,-120}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samT( final y_start=1) "Sample the time constant when the tuning period ends" - annotation (Placement(transformation(extent={{70,-10},{90,10}}))); + annotation (Placement(transformation(extent={{70,10},{90,30}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samL( final y_start=1) "Sample the time delay when the tuning period ends" - annotation (Placement(transformation(extent={{44,-90},{64,-70}}))); + annotation (Placement(transformation(extent={{50,-70},{70,-50}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samk( final y_start=1) "Sample the gain when the tuning period ends" - annotation (Placement(transformation(extent={{-54,-10},{-34,10}}))); + annotation (Placement(transformation(extent={{-54,10},{-34,30}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samtOn( final y_start=1) "Sample the length of the On period when the tuning period ends" - annotation (Placement(transformation(extent={{-70,30},{-50,50}}))); - Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samtau( - final y_start=0.5) - "Sample the normalized time delay" - annotation (Placement(transformation(extent={{-70,-70},{-50,-90}}))); + annotation (Placement(transformation(extent={{-70,50},{-50,70}}))); Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai( final k=-1) "Product of the normalized time delay and -1" - annotation (Placement(transformation(extent={{-36,-90},{-16,-70}}))); + annotation (Placement(transformation(extent={{-36,-70},{-16,-50}}))); Buildings.Controls.OBC.CDL.Continuous.AddParameter addPar( final p=1) "Difference between 1 and the normalized time delay" - annotation (Placement(transformation(extent={{-8,-90},{12,-70}}))); + annotation (Placement(transformation(extent={{-8,-70},{12,-50}}))); Buildings.Controls.OBC.CDL.Continuous.Divide div "The output of samtau divided by that of addPar" - annotation (Placement(transformation(extent={{12,-60},{32,-40}}))); + annotation (Placement(transformation(extent={{12,-30},{32,-10}}))); + CDL.Discrete.TriggeredSampler samtau(final y_start=0.5) + "Sample the normalized time delay" + annotation (Placement(transformation(extent={{-70,-70},{-50,-50}}))); equation - connect(gain.u, u) annotation (Line(points={{-86,8},{-88,8},{-88,80},{-120,80}}, + connect(gain.u, u) annotation (Line(points={{-86,28},{-88,28},{-88,80},{-120, + 80}}, color={0,0,127})); - connect(gain.tOn, tOn) annotation (Line(points={{-86,0},{-94,0},{-94,40},{ + connect(gain.tOn, tOn) annotation (Line(points={{-86,20},{-94,20},{-94,40},{ -120,40}}, color={0,0,127})); - connect(gain.tOff, tOff) annotation (Line(points={{-86,-8},{-94,-8},{-94,-40}, - {-120,-40}}, color={0,0,127})); - connect(gain.triSta, triSta) annotation (Line(points={{-74,-12},{-74,-96},{-60, - -96},{-60,-120}}, color={255,0,255})); + connect(gain.tOff, tOff) annotation (Line(points={{-86,12},{-94,12},{-94,-20}, + {-120,-20}}, color={0,0,127})); + connect(gain.triSta, triSta) annotation (Line(points={{-74,8},{-74,-120}}, + color={255,0,255})); connect(timConDel.T, samT.u) - annotation (Line(points={{21,7},{60,7},{60,0},{68,0}}, color={0,0,127})); + annotation (Line(points={{21,27},{60,27},{60,20},{68,20}}, + color={0,0,127})); connect(samT.y, T) - annotation (Line(points={{92,0},{120,0}}, color={0,0,127})); - connect(samT.trigger, triEnd) annotation (Line(points={{80,-12},{80,-92},{60,-92}, - {60,-120}}, color={255,0,255})); + annotation (Line(points={{92,20},{120,20}}, + color={0,0,127})); + connect(samT.trigger, triEnd) annotation (Line(points={{80,8},{80,-120}}, + color={255,0,255})); connect(L, samL.y) - annotation (Line(points={{120,-80},{66,-80}}, color={0,0,127})); - connect(samL.u, timConDel.L) annotation (Line(points={{42,-80},{40,-80},{40,-6}, - {21,-6}}, color={0,0,127})); - connect(samL.trigger, triEnd) annotation (Line(points={{54,-92},{54,-96},{60,-96}, - {60,-120}}, color={255,0,255})); + annotation (Line(points={{120,-60},{72,-60}}, color={0,0,127})); + connect(samL.u, timConDel.L) annotation (Line(points={{48,-60},{44,-60},{44, + 14},{21,14}}, + color={0,0,127})); + connect(samL.trigger, triEnd) annotation (Line(points={{60,-72},{60,-90},{80, + -90},{80,-120}}, + color={255,0,255})); connect(samk.y, timConDel.k) - annotation (Line(points={{-32,0},{-2,0}}, color={0,0,127})); - connect(samk.trigger, triEnd) annotation (Line(points={{-44,-12},{-44,-96},{60, - -96},{60,-120}}, color={255,0,255})); + annotation (Line(points={{-32,20},{-2,20}}, + color={0,0,127})); + connect(samk.trigger, triEnd) annotation (Line(points={{-44,8},{-44,-90},{80, + -90},{80,-120}}, color={255,0,255})); connect(gain.k, samk.u) - annotation (Line(points={{-62,0},{-56,0}}, color={0,0,127})); - connect(samk.y, k) annotation (Line(points={{-32,0},{-20,0},{-20,61},{120,61}}, + annotation (Line(points={{-62,20},{-56,20}}, + color={0,0,127})); + connect(samk.y, k) annotation (Line(points={{-32,20},{-20,20},{-20,70},{120, + 70}}, color={0,0,127})); - connect(timConDel.tOn, samtOn.y) annotation (Line(points={{-2,6},{-28,6},{-28, - 40},{-48,40}}, color={0,0,127})); + connect(timConDel.tOn, samtOn.y) annotation (Line(points={{-2,26},{-28,26},{ + -28,60},{-48,60}}, + color={0,0,127})); connect(samtOn.u, tOn) - annotation (Line(points={{-72,40},{-120,40}}, color={0,0,127})); - connect(samtOn.trigger, triEnd) annotation (Line(points={{-60,28},{-60,-34},{-44, - -34},{-44,-96},{60,-96},{60,-120}}, color={255,0,255})); - connect(samtau.u, tau) - annotation (Line(points={{-72,-80},{-120,-80}}, color={0,0,127})); - connect(samtau.trigger, triEnd) annotation (Line(points={{-60,-68},{-60,-34},{ - -44,-34},{-44,-96},{60,-96},{60,-120}}, color={255,0,255})); - connect(gai.u, samtau.y) - annotation (Line(points={{-38,-80},{-48,-80}}, color={0,0,127})); + annotation (Line(points={{-72,60},{-94,60},{-94,40},{-120,40}}, + color={0,0,127})); + connect(samtOn.trigger, triEnd) annotation (Line(points={{-60,48},{-60,-20},{ + -44,-20},{-44,-90},{80,-90},{80,-120}}, + color={255,0,255})); connect(gai.y, addPar.u) - annotation (Line(points={{-14,-80},{-10,-80}}, color={0,0,127})); - connect(addPar.y, div.u2) annotation (Line(points={{14,-80},{20,-80},{20,-62}, - {4,-62},{4,-56},{10,-56}}, color={0,0,127})); - connect(div.y, timConDel.ratioLT) annotation (Line(points={{34,-50},{34,-24},{ - -6,-24},{-6,-6},{-2,-6}}, color={0,0,127})); - connect(div.u1, samtau.y) annotation (Line(points={{10,-44},{-40,-44},{-40,-80}, - {-48,-80}}, color={0,0,127})); + annotation (Line(points={{-14,-60},{-10,-60}}, color={0,0,127})); + connect(tau, samtau.u) + annotation (Line(points={{-120,-60},{-72,-60}}, color={0,0,127})); + connect(samtau.y, gai.u) + annotation (Line(points={{-48,-60},{-38,-60}}, color={0,0,127})); + connect(samtau.y, div.u1) annotation (Line(points={{-48,-60},{-40,-60},{-40, + -14},{10,-14}}, color={0,0,127})); + connect(triEnd, samtau.trigger) annotation (Line(points={{80,-120},{80,-90},{ + -60,-90},{-60,-72}}, color={255,0,255})); + connect(addPar.y, div.u2) annotation (Line(points={{14,-60},{20,-60},{20,-40}, + {6,-40},{6,-26},{10,-26}}, color={0,0,127})); + connect(div.y, timConDel.ratioLT) annotation (Line(points={{34,-20},{36,-20}, + {36,0},{-12,0},{-12,14},{-2,14}}, color={0,0,127})); annotation ( defaultComponentName = "conProMod", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ @@ -157,7 +176,7 @@ equation fillColor={255,255,255}, fillPattern=FillPattern.Solid), Text( - extent={{-154,148},{146,108}}, + extent={{-100,140},{100,100}}, textString="%name", textColor={0,0,255})}), Diagram(coordinateSystem(preserveAspectRatio=false)), Documentation(revisions=" diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Gain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Gain.mo index c2331be08a5..4f8f796138c 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Gain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Gain.mo @@ -6,14 +6,14 @@ block Gain "Identify the gain of a first order time delayed model" "Lower value for the output (assuming the reference output is 0)"; Buildings.Controls.OBC.CDL.Interfaces.RealInput u "Relay controller output" - annotation (Placement(transformation(extent={{-140,60},{-100,100}}), + annotation (Placement(transformation(extent={{-140,20},{-100,60}}), iconTransformation(extent={{-140,60},{-100,100}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput tOn( final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Length for the On period" - annotation (Placement(transformation(extent={{-140,-20},{-100,20}}), + annotation (Placement(transformation(extent={{-140,-40},{-100,0}}), iconTransformation(extent={{-140,-20},{-100,20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput tOff( final quantity="Time", @@ -36,17 +36,17 @@ block Gain "Identify the gain of a first order time delayed model" final k=1, final y_start=1E-11) "Integral of the process output" - annotation (Placement(transformation(extent={{-40,30},{-20,50}}))); + annotation (Placement(transformation(extent={{-10,30},{10,50}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.Constant refRelOut( final k=0) "Reference value of the relay control output" - annotation (Placement(transformation(extent={{-80,10},{-60,30}}))); + annotation (Placement(transformation(extent={{-60,10},{-40,30}}))); Buildings.Controls.OBC.CDL.Continuous.Divide divIyIu "Calculate the gain" - annotation (Placement(transformation(extent={{32,-10},{52,10}}))); + annotation (Placement(transformation(extent={{60,-10},{80,10}}))); Buildings.Controls.OBC.CDL.Continuous.AddParameter addPar( final p=1E-11) "Avoid divide-by-zero errors" - annotation (Placement(transformation(extent={{0,-50},{20,-30}}))); + annotation (Placement(transformation(extent={{20,-50},{40,-30}}))); Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gaiOnyHig( final k=yHig) "Product of tOn and yHig" annotation (Placement(transformation(extent={{-80,-30},{-60,-10}}))); @@ -55,20 +55,20 @@ block Gain "Identify the gain of a first order time delayed model" annotation (Placement(transformation(extent={{-80,-90},{-60,-70}}))); equation - connect(Iy.u, u) annotation (Line(points={{-42,40},{-90,40},{-90,80},{-120,80}}, + connect(Iy.u, u) annotation (Line(points={{-12,40},{-120,40}}, color={0,0,127})); - connect(refRelOut.y, Iy.y_reset_in) annotation (Line(points={{-58,20},{-50,20}, - {-50,32},{-42,32}}, color={0,0,127})); - connect(Iy.trigger, triSta) annotation (Line(points={{-30,28},{-30,-20},{-10,-20}, - {-10,-96},{0,-96},{0,-120}}, color={255,0,255})); - connect(divIyIu.u1, Iy.y) annotation (Line(points={{30,6},{0,6},{0,40},{-18,40}}, - color={0,0,127})); - connect(Iu.y, addPar.u) annotation (Line(points={{-18,-40},{-2,-40}},color={0,0,127})); - connect(addPar.y, divIyIu.u2) annotation (Line(points={{22,-40},{26,-40},{26,-6}, - {30,-6}}, color={0,0,127})); - connect(divIyIu.y, k) annotation (Line(points={{54,0},{120,0}}, color={0,0,127})); - connect(gaiOnyHig.u, tOn) annotation (Line(points={{-82,-20},{-90,-20},{-90,0}, - {-120,0}}, color={0,0,127})); + connect(refRelOut.y, Iy.y_reset_in) annotation (Line(points={{-38,20},{-20,20}, + {-20,32},{-12,32}}, color={0,0,127})); + connect(Iy.trigger, triSta) annotation (Line(points={{0,28},{0,-120}}, + color={255,0,255})); + connect(divIyIu.u1, Iy.y) annotation (Line(points={{58,6},{40,6},{40,40},{12, + 40}}, color={0,0,127})); + connect(Iu.y, addPar.u) annotation (Line(points={{-18,-40},{18,-40}},color={0,0,127})); + connect(addPar.y, divIyIu.u2) annotation (Line(points={{42,-40},{50,-40},{50, + -6},{58,-6}}, color={0,0,127})); + connect(divIyIu.y, k) annotation (Line(points={{82,0},{120,0}}, color={0,0,127})); + connect(gaiOnyHig.u, tOn) annotation (Line(points={{-82,-20},{-120,-20}}, + color={0,0,127})); connect(gaiOnyHig.y, Iu.u1) annotation (Line(points={{-58,-20},{-50,-20},{-50, -34},{-42,-34}}, color={0,0,127})); connect(gaiOffyLow.u, tOff) @@ -84,7 +84,7 @@ equation fillColor={255,255,255}, fillPattern=FillPattern.Solid), Text( - extent={{-154,148},{146,108}}, + extent={{-100,140},{100,100}}, textString="%name", textColor={0,0,255})}), Diagram(coordinateSystem(preserveAspectRatio=false)), Documentation(revisions=" diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/TimeConstantDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/TimeConstantDelay.mo index 2ceeec24dc8..63990c187d9 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/TimeConstantDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/TimeConstantDelay.mo @@ -12,7 +12,7 @@ block TimeConstantDelay final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Length for the On period" - annotation (Placement(transformation(extent={{-140,40},{-100,80}}), + annotation (Placement(transformation(extent={{-140,56},{-100,96}}), iconTransformation(extent={{-140,40},{-100,80}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput k "Gain" @@ -20,23 +20,25 @@ block TimeConstantDelay iconTransformation(extent={{-140,-20},{-100,20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput ratioLT "Ratio between the time constant and the time delay" - annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), + annotation (Placement(transformation(extent={{-140,-70},{-100,-30}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput T( final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Time constant" - annotation (Placement(transformation(extent={{100,60},{120,80}}))); + annotation (Placement(transformation(extent={{100,50},{140,90}}), + iconTransformation(extent={{100,40},{140,80}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput L( final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Time delay" - annotation (Placement(transformation(extent={{100,-70},{120,-50}}))); + annotation (Placement(transformation(extent={{100,-80},{140,-40}}), + iconTransformation(extent={{100,-80},{140,-40}}))); Buildings.Controls.OBC.CDL.Continuous.Abs absk "Absoulte value of the gain" - annotation (Placement(transformation(extent={{-80,-20},{-60,0}}))); + annotation (Placement(transformation(extent={{-80,-10},{-60,10}}))); Buildings.Controls.OBC.CDL.Continuous.Exp exp "Exponential value of the ratio between time constant and the time delay" annotation (Placement(transformation(extent={{-80,-60},{-60,-40}}))); @@ -49,8 +51,7 @@ block TimeConstantDelay Buildings.Controls.OBC.CDL.Continuous.Sources.Constant relDeaBan(k=deaBan) "Dead band of the relay controller" annotation (Placement(transformation(extent={{0,30},{20,50}}))); - Buildings.Controls.OBC.CDL.Continuous.Add add1 - "Product of the output of mul1 and that of sub2" + Buildings.Controls.OBC.CDL.Continuous.Add add1 "Sum of the inputs" annotation (Placement(transformation(extent={{60,-40},{80,-20}}))); Buildings.Controls.OBC.CDL.Continuous.Add add2 "Sum of the higher value for the output and the lower value for the output" @@ -59,19 +60,18 @@ block TimeConstantDelay "Quotient of dead band divided by the absolute value of the gain" annotation (Placement(transformation(extent={{0,-30},{20,-10}}))); Buildings.Controls.OBC.CDL.Continuous.Divide div2 - "The output of add1 divided by that of sub1" - annotation (Placement(transformation(extent={{60,-78},{80,-58}}))); + "Output first input divided by second input" + annotation (Placement(transformation(extent={{60,-80},{80,-60}}))); Buildings.Controls.OBC.CDL.Continuous.Divide div3 "Calculate the time constant" annotation (Placement(transformation(extent={{-40,60},{-20,80}}))); - Buildings.Controls.OBC.CDL.Continuous.Multiply mul1 - "Product of the output of exp and that of add2" + Buildings.Controls.OBC.CDL.Continuous.Multiply mul1 "Product of the inputs" annotation (Placement(transformation(extent={{60,30},{80,50}}))); Buildings.Controls.OBC.CDL.Continuous.Multiply mul2 "Calculate time delay" annotation (Placement(transformation(extent={{0,74},{20,94}}))); Buildings.Controls.OBC.CDL.Continuous.Subtract sub1 - "The difference between the higher value of the output and the output of div1" + "Difference of the two inputs" annotation (Placement(transformation(extent={{20,-80},{40,-60}}))); Buildings.Controls.OBC.CDL.Continuous.Subtract sub2 "Quotient of dead band divided by the absolute value of gain minus the lower value for the output" @@ -82,13 +82,11 @@ block TimeConstantDelay equation connect(absk.u, k) - annotation (Line(points={{-82,-10},{-92,-10},{-92,0},{-120,0}}, - color={0,0,127})); + annotation (Line(points={{-82,0},{-120,0}}, color={0,0,127})); connect(ratioLT, exp.u) - annotation (Line(points={{-120,-60},{-90,-60},{-90,-50},{-82,-50}}, - color={0,0,127})); - connect(relDeaBan.y, div1.u1) annotation (Line(points={{22,40},{28,40},{28,2}, - {-4,2},{-4,-14},{-2,-14}}, color={0,0,127})); + annotation (Line(points={{-120,-50},{-82,-50}}, color={0,0,127})); + connect(relDeaBan.y, div1.u1) annotation (Line(points={{22,40},{28,40},{28,0}, + {-4,0},{-4,-14},{-2,-14}}, color={0,0,127})); connect(sub2.u1, div1.y) annotation (Line(points={{28,-34},{26,-34},{26,-20},{ 22,-20}}, color={0,0,127})); connect(sub2.u2, yLowSig.y) annotation (Line(points={{28,-46},{-12,-46},{-12,40}, @@ -99,36 +97,37 @@ equation -18,40}}, color={0,0,127})); connect(add2.y, mul1.u2) annotation (Line(points={{56,10},{72,10},{72,24},{54, 24},{54,34},{58,34}}, color={0,0,127})); - connect(exp.y, mul1.u1) annotation (Line(points={{-58,-50},{-6,-50},{-6,60},{54, - 60},{54,46},{58,46}}, color={0,0,127})); + connect(exp.y, mul1.u1) annotation (Line(points={{-58,-50},{-8,-50},{-8,60},{ + 52,60},{52,46},{58,46}}, color={0,0,127})); connect(sub2.y, add1.u2) annotation (Line(points={{52,-40},{54,-40},{54,-36},{ 58,-36}}, color={0,0,127})); connect(add1.u1, mul1.y) annotation (Line(points={{58,-24},{52,-24},{52,-6},{86, -6},{86,40},{82,40}}, color={0,0,127})); - connect(sub1.u1, add2.u1) annotation (Line(points={{18,-64},{-54,-64},{-54,16}, - {32,16}}, color={0,0,127})); - connect(sub1.y, div2.u2) annotation (Line(points={{42,-70},{48,-70},{48,-74}, - {58,-74}}, color={0,0,127})); - connect(div2.u1, add1.y) annotation (Line(points={{58,-62},{54,-62},{54,-48},{ - 84,-48},{84,-30},{82,-30}}, color={0,0,127})); - connect(tOn, div3.u1) annotation (Line(points={{-120,60},{-80,60},{-80,76},{ - -42,76}}, color={0,0,127})); + connect(sub1.y, div2.u2) annotation (Line(points={{42,-70},{48,-70},{48,-76}, + {58,-76}}, color={0,0,127})); + connect(div2.u1, add1.y) annotation (Line(points={{58,-64},{54,-64},{54,-48}, + {84,-48},{84,-30},{82,-30}},color={0,0,127})); + connect(tOn, div3.u1) annotation (Line(points={{-120,76},{-42,76}}, + color={0,0,127})); connect(div3.u2, log.y) annotation (Line(points={{-42,64},{-46,64},{-46,-90},{ -42,-90}}, color={0,0,127})); - connect(div3.y, T) annotation (Line(points={{-18,70},{110,70}}, + connect(div3.y, T) annotation (Line(points={{-18,70},{120,70}}, color={0,0,127})); - connect(mul2.u2, T) annotation (Line(points={{-2,78},{-12,78},{-12,70},{110,70}}, + connect(mul2.u2, T) annotation (Line(points={{-2,78},{-10,78},{-10,70},{120, + 70}}, color={0,0,127})); connect(mul2.u1, exp.u) annotation (Line(points={{-2,90},{-90,90},{-90,-50},{-82, -50}}, color={0,0,127})); - connect(mul2.y, L) annotation (Line(points={{22,84},{90,84},{90,-60},{110,-60}}, + connect(mul2.y, L) annotation (Line(points={{22,84},{92,84},{92,-60},{120,-60}}, color={0,0,127})); connect(sub1.u2, div1.y) annotation (Line(points={{18,-76},{10,-76},{10,-34}, {26,-34},{26,-20},{22,-20}},color={0,0,127})); - connect(log.u, div2.y) annotation (Line(points={{-18,-90},{86,-90},{86,-68},{ - 82,-68}}, color={0,0,127})); - connect(absk.y, div1.u2) annotation (Line(points={{-58,-10},{-20,-10},{-20, - -26},{-2,-26}}, color={0,0,127})); + connect(log.u, div2.y) annotation (Line(points={{-18,-90},{86,-90},{86,-70},{ + 82,-70}}, color={0,0,127})); + connect(absk.y, div1.u2) annotation (Line(points={{-58,0},{-20,0},{-20,-26},{ + -2,-26}}, color={0,0,127})); + connect(yHigSig.y, sub1.u1) annotation (Line(points={{-58,40},{-52,40},{-52, + -64},{18,-64}}, color={0,0,127})); annotation ( defaultComponentName = "timConDel", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ @@ -138,7 +137,7 @@ equation fillColor={255,255,255}, fillPattern=FillPattern.Solid), Text( - extent={{-154,148},{146,108}}, + extent={{-100,140},{100,100}}, textString="%name", textColor={0,0,255})}), Diagram(coordinateSystem(preserveAspectRatio=false)), Documentation(revisions=" From c309e7b29aca705fc37a27687e28ec7f171e3a3c Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Thu, 13 Apr 2023 14:08:10 -0700 Subject: [PATCH 062/214] added release note --- Buildings/package.mo | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Buildings/package.mo b/Buildings/package.mo index 610bc6b578f..f00f4a3ede5 100644 --- a/Buildings/package.mo +++ b/Buildings/package.mo @@ -217,6 +217,13 @@ Version 10.0.0 is ... xxx The following new libraries have been added:

                  + + + +
                  Buildings.Controls.OBC.Utilities.PIDWithAutotuning + Package that contains components for the PID controller that can + autotune the control gain and time constants. +
                  Buildings.ThermalZones.ISO13790 Package that contains models for reduced building physics of thermal zones From e79aff798da2b82525d3da9878506c30ceb283c6 Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Thu, 13 Apr 2023 14:12:15 -0700 Subject: [PATCH 063/214] removed BOM --- .../PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo | 2 +- .../OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo | 2 +- .../PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo | 2 +- .../OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo | 2 +- .../PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo | 2 +- .../OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.mo | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo index d535d38dad8..69f796c5906 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo @@ -1,4 +1,4 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; block PIDDerivativeTime "Identify the derivative time of a PID controller" Buildings.Controls.OBC.CDL.Interfaces.RealInput T( final quantity="Time", diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo index f2dfd76f81c..8c30e18f9df 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo @@ -1,4 +1,4 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; block PIDGain "Identify the control gain of a PID controller" Buildings.Controls.OBC.CDL.Interfaces.RealInput kp( final min=1E-6) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo index 314b480048d..208cf5f599f 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo @@ -1,4 +1,4 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; block PIDIntegralTime "Identify the integral time of a PID controller" Buildings.Controls.OBC.CDL.Interfaces.RealInput T( final quantity="Time", diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo index 1d4cbe4dbf2..648243358ba 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo @@ -1,4 +1,4 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; block PIGain "Identify the control gain of a PI controller" Buildings.Controls.OBC.CDL.Interfaces.RealInput kp( final min=1E-6) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo index 976bcbe96e8..86307425227 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo @@ -1,4 +1,4 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; block PIIntegralTime "Identify the integral time of a PI controller" Buildings.Controls.OBC.CDL.Interfaces.RealInput T( final quantity="Time", diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.mo index 3adc6c3c6d2..418a217c1b5 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.mo @@ -1,4 +1,4 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner; package AMIGO "Package with components related to AMIGO tuner" annotation (Documentation(info="

                  From c84771436b18e1705869272b5987beaff108005b Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Tue, 18 Apr 2023 23:22:47 -0700 Subject: [PATCH 064/214] corrected html link --- .../AutoTuner/AMIGO/Validation/PIDDerivativeTime.mo | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mo index d4eebaa4318..fef874c95d5 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mo @@ -52,8 +52,8 @@ First implementation
                  ", info="

                  Validation test for the block - -Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.AutoTuner.AMIGO.PIDerivativeTime. + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIDDerivativeTime.

                  The reference data is imported from a raw data that is generated with a Python implementation of this block. From 5c2aa82d6251c66863ac9d8320396809523e1c51 Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Mon, 24 Apr 2023 15:16:56 -0700 Subject: [PATCH 065/214] updated cdl instantiation --- .../Utilities/PIDWithAutotuning/Relay/Validation/Controller.mo | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Controller.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Controller.mo index 54580cc0599..e10eedde9f5 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Controller.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Controller.mo @@ -5,7 +5,7 @@ model Controller "Test model for Control" yLow=0.5, deaBan=0.4) "A relay controller" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.Sine sin(freqHz=2) "Measured value" + Buildings.Controls.OBC.CDL.Continuous.Sources.Sin sin(freqHz=2) "Measured value" annotation (Placement(transformation(extent={{-60,-60},{-40,-40}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.Constant con(k=0) "Setpoint" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); From 0e9c3f48b9e90bdf75154d528c30c8d98cb73f9c Mon Sep 17 00:00:00 2001 From: Michael Wetter Date: Tue, 2 May 2023 06:38:42 -0700 Subject: [PATCH 066/214] Revised documentation [ci skip] --- .../OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo | 7 ++++--- .../PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo | 2 +- .../PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index 27f99887f6e..8a125870a8c 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -219,12 +219,12 @@ and inherits all the parameters of the latter. However, through the parameter controllerType, the controller can only be configured as PI or PID controller.

                  -

                  Breif guidance

                  +

                  Brief guidance

                  To use this block, connect it to the control loop. It will start the PID tuning process once the simulation starts. During the PID tuning process, the control loop is controlled by a relay feedback controller. -The PID tuning process will ends automatically based on the algorithm defined +The PID tuning process will end automatically based on the algorithm defined in Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.HalfPeriodRatio. Starting from then, the control loop is controlled by a PI or PID controller. @@ -235,7 +235,8 @@ Note that the output of this block is limited from 0 to 1.

                  References

                  J. Berner (2017). -\"Automatic Controller Tuning using Relay-based Model Identification.\" + +\"Automatic Controller Tuning using Relay-based Model Identification.\" Department of Automatic Control, Lund University.

                  ", revisions=" diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo index f83050462e9..28c51aad31b 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo @@ -93,7 +93,7 @@ Validation test for the block Buildings.Controls.OBC.Utilities.PIDWithAutotuning.FirstOrderAMIGO.

                  -This example is to compare the output of a PID controller (PIDWitTun) +This example compares the output of a PID controller (PIDWitTun) with an autotuning feature to that of another PID controller (PID) with arbitary gains.

                  diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo index 8d341b6263f..69dfe160880 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo @@ -93,7 +93,7 @@ Validation test for the block Buildings.Controls.OBC.Utilities.PIDWithAutotuning.FirstOrderAMIGO.

                  -This example is to compare the output of a PI controller (PIWitTun) +This example compares the output of a PI controller (PIWitTun) with an autotuning feature to that of another PI controller (PI) with arbitary gains.

                  From 537491d42806c39fc5639a98194f3f97e8c21edf Mon Sep 17 00:00:00 2001 From: Michael Wetter Date: Tue, 2 May 2023 09:31:47 -0700 Subject: [PATCH 067/214] Revised documentation --- .../OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo index d61bcaaae73..1dec63cf83e 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo @@ -28,7 +28,7 @@ block Controller Buildings.Controls.OBC.CDL.Logical.OnOffController greMeaSet( final bandwidth=deaBan*2, final pre_y_start=true) - "Check if the measured value is larger than the reference, by default the relay control is On" + "Check if the measured value is larger than the reference, by default the relay control is on" annotation (Placement(transformation(extent={{-20,-10},{0,10}}))); Buildings.Controls.OBC.CDL.Continuous.Switch swi "Switch between a higher value and a lower value" From 1a5eee42bc0d904640b06010c588b0a28693e37a Mon Sep 17 00:00:00 2001 From: Michael Wetter Date: Tue, 2 May 2023 09:32:10 -0700 Subject: [PATCH 068/214] Revised documentation, moved connectors --- .../Relay/HalfPeriodRatio.mo | 98 +++++++++---------- 1 file changed, 49 insertions(+), 49 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo index fd03ee0406a..e61a021e11d 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo @@ -27,8 +27,8 @@ block HalfPeriodRatio "A boolean signal, true if the tuning completes" annotation (Placement(transformation(extent={{100,-50},{140,-10}}), iconTransformation(extent={{100,-80},{140,-40}}))); - Buildings.Controls.OBC.CDL.Continuous.Min tmin - "Minimum value of the length for the On and Off period " + Buildings.Controls.OBC.CDL.Continuous.Min tMin + "Minimum value of the length for the on and off period " annotation (Placement(transformation(extent={{-80,30},{-60,50}}))); Buildings.Controls.OBC.CDL.Continuous.Greater gretOntOff "Check if both the length for the On period and the length for the off period are larger than 0" @@ -37,18 +37,18 @@ block HalfPeriodRatio final k=0) "Minimum value for the horizon length" annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); - Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler tOnSample( - final y_start=Buildings.Controls.OBC.CDL.Constants.eps) + Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler tOnSam(final y_start= + Buildings.Controls.OBC.CDL.Constants.eps) "Sample tOn when the tuning period ends" annotation (Placement(transformation(extent={{-80,70},{-60,90}}))); - Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler tOffSample( - final y_start=Buildings.Controls.OBC.CDL.Constants.eps) + Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler tOffSam(final y_start= + Buildings.Controls.OBC.CDL.Constants.eps) "Sample tOff when the tuning period ends" annotation (Placement(transformation(extent={{-80,-60},{-60,-80}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samAddtOntOff "Sample the tmin when tmin is larger than 0" annotation (Placement(transformation(extent={{20,30},{40,10}}))); - Buildings.Controls.OBC.CDL.Continuous.Greater tIncrease + Buildings.Controls.OBC.CDL.Continuous.Greater tInc "Check if either the length for the On period or the length for the off period increases after they both becomes positive" annotation (Placement(transformation(extent={{30,-40},{50,-20}}))); Buildings.Controls.OBC.CDL.Continuous.Min mintOntOff @@ -60,8 +60,8 @@ block HalfPeriodRatio Buildings.Controls.OBC.CDL.Continuous.Divide halPerRat "Calculate the half period ratio" annotation (Placement(transformation(extent={{60,70},{80,90}}))); - Buildings.Controls.OBC.CDL.Continuous.Add AddtOntOff - "Calculate the sum of the length for the On period and the length for the off period" + Buildings.Controls.OBC.CDL.Continuous.Add addtOntOff + "Calculate the sum of the length for the on period and the length for the off period" annotation (Placement(transformation(extent={{-80,-40},{-60,-20}}))); Buildings.Controls.OBC.CDL.Continuous.Multiply mul "Detect if the the length for the On period or the length for the off period changes after both of them are larger than 0" @@ -69,76 +69,76 @@ block HalfPeriodRatio Buildings.Controls.OBC.CDL.Continuous.Greater gretmaxtOntOff "Check if either the length for the On period or the length for the off period is larger than 0" annotation (Placement(transformation(extent={{-20,10},{0,-10}}))); - Buildings.Controls.OBC.CDL.Continuous.Less tDecrease + Buildings.Controls.OBC.CDL.Continuous.Less tDec "Check if either the length for the On period or the length for the off period decreases after they both becomes positive" annotation (Placement(transformation(extent={{30,-90},{50,-70}}))); - Buildings.Controls.OBC.CDL.Logical.Or tChanges + Buildings.Controls.OBC.CDL.Logical.Or tCha "Check if the length for the On period or the length for the off period changes" annotation (Placement(transformation(extent={{70,-40},{90,-20}}))); equation - connect(tmin.u1, tOn) annotation (Line(points={{-82,46},{-94,46},{-94,80},{-120, + connect(tMin.u1, tOn) annotation (Line(points={{-82,46},{-94,46},{-94,80},{-120, 80}}, color={0,0,127})); - connect(tmin.u2, tOff) annotation (Line(points={{-82,34},{-88,34},{-88,-70},{-120, + connect(tMin.u2, tOff) annotation (Line(points={{-82,34},{-88,34},{-88,-70},{-120, -70}}, color={0,0,127})); connect(minLen.y, gretOntOff.u2) annotation (Line(points={{-58,10},{-40,10},{ -40,48},{-22,48}},color={0,0,127})); - connect(tOnSample.u, tOn) - annotation (Line(points={{-82,80},{-120,80}}, color={0,0,127})); - connect(tOffSample.u, tOff) annotation (Line(points={{-82,-70},{-120,-70}}, - color={0,0,127})); - connect(samAddtOntOff.y, tIncrease.u2) annotation (Line(points={{42,20},{60, - 20},{60,-6},{18,-6},{18,-38},{28,-38}}, color={0,0,127})); + connect(tOnSam.u, tOn) + annotation (Line(points={{-82,80},{-120,80}}, color={0,0,127})); + connect(tOffSam.u, tOff) + annotation (Line(points={{-82,-70},{-120,-70}}, color={0,0,127})); + connect(samAddtOntOff.y, tInc.u2) annotation (Line(points={{42,20},{60,20},{ + 60,-6},{18,-6},{18,-38},{28,-38}}, color={0,0,127})); connect(gretOntOff.y, samAddtOntOff.trigger) annotation (Line(points={{2,40},{ 30,40},{30,32}}, color={255,0,255})); - connect(tOnSample.y, maxtOntOff.u1) annotation (Line(points={{-58,80},{-52,80}, - {-52,86},{-22,86}}, color={0,0,127})); - connect(maxtOntOff.u2, tOffSample.y) annotation (Line(points={{-22,74},{-48, - 74},{-48,-70},{-58,-70}}, color={0,0,127})); - connect(mintOntOff.u2, tOffSample.y) annotation (Line(points={{-22,-76},{-48, - -76},{-48,-70},{-58,-70}}, color={0,0,127})); + connect(tOnSam.y, maxtOntOff.u1) annotation (Line(points={{-58,80},{-52,80},{ + -52,86},{-22,86}}, color={0,0,127})); + connect(maxtOntOff.u2, tOffSam.y) annotation (Line(points={{-22,74},{-48,74}, + {-48,-70},{-58,-70}}, color={0,0,127})); + connect(mintOntOff.u2, tOffSam.y) annotation (Line(points={{-22,-76},{-48,-76}, + {-48,-70},{-58,-70}}, color={0,0,127})); connect(maxtOntOff.y, halPerRat.u1) annotation (Line(points={{2,80},{52,80},{ 52,86},{58,86}}, color={0,0,127})); connect(halPerRat.u2, mintOntOff.y) annotation (Line(points={{58,74},{14,74}, {14,-70},{2,-70}}, color={0,0,127})); connect(halPerRat.y, rho) annotation (Line(points={{82,80},{120,80}}, color={0,0,127})); - connect(AddtOntOff.u2, tOff) annotation (Line(points={{-82,-36},{-88,-36},{-88, + connect(addtOntOff.u2, tOff) annotation (Line(points={{-82,-36},{-88,-36},{-88, -70},{-120,-70}}, color={0,0,127})); - connect(AddtOntOff.u1, tOn) annotation (Line(points={{-82,-24},{-94,-24},{-94, + connect(addtOntOff.u1, tOn) annotation (Line(points={{-82,-24},{-94,-24},{-94, 80},{-120,80}}, color={0,0,127})); connect(gretmaxtOntOff.y, triSta) annotation (Line(points={{2,0},{120,0}}, color={255,0,255})); - connect(tChanges.u1, tIncrease.y) + connect(tCha.u1, tInc.y) annotation (Line(points={{68,-30},{52,-30}}, color={255,0,255})); - connect(samAddtOntOff.y, tDecrease.u2) annotation (Line(points={{42,20},{60, - 20},{60,-6},{18,-6},{18,-88},{28,-88}}, color={0,0,127})); - connect(gretmaxtOntOff.u1, AddtOntOff.y) annotation (Line(points={{-22,0},{ + connect(samAddtOntOff.y, tDec.u2) annotation (Line(points={{42,20},{60,20},{ + 60,-6},{18,-6},{18,-88},{28,-88}}, color={0,0,127})); + connect(gretmaxtOntOff.u1,addtOntOff. y) annotation (Line(points={{-22,0},{ -40,0},{-40,-30},{-58,-30}}, color={0,0,127})); connect(gretmaxtOntOff.u2, minLen.y) annotation (Line(points={{-22,8},{-40,8}, {-40,10},{-58,10}},color={0,0,127})); - connect(gretOntOff.u1, tmin.y) annotation (Line(points={{-22,40},{-58,40}}, + connect(gretOntOff.u1,tMin. y) annotation (Line(points={{-22,40},{-58,40}}, color={0,0,127})); - connect(mul.u1, tmin.y) annotation (Line(points={{-36,-24},{-44,-24},{-44,40}, + connect(mul.u1,tMin. y) annotation (Line(points={{-36,-24},{-44,-24},{-44,40}, {-58,40}}, color={0,0,127})); - connect(mul.u2, AddtOntOff.y) annotation (Line(points={{-36,-36},{-40,-36},{ + connect(mul.u2,addtOntOff. y) annotation (Line(points={{-36,-36},{-40,-36},{ -40,-30},{-58,-30}}, color={0,0,127})); - connect(mul.y, tIncrease.u1) + connect(mul.y, tInc.u1) annotation (Line(points={{-12,-30},{28,-30}}, color={0,0,127})); - connect(tDecrease.u1, mul.y) annotation (Line(points={{28,-80},{10,-80},{10, - -30},{-12,-30}}, color={0,0,127})); + connect(tDec.u1, mul.y) annotation (Line(points={{28,-80},{10,-80},{10,-30},{ + -12,-30}}, color={0,0,127})); connect(samAddtOntOff.u, mul.y) annotation (Line(points={{18,20},{10,20},{10, -30},{-12,-30}}, color={0,0,127})); - connect(tOnSample.trigger, tChanges.y) annotation (Line(points={{-70,68},{-70, - 60},{94,60},{94,-30},{92,-30}}, color={255,0,255})); - connect(triEnd, tChanges.y) annotation (Line(points={{120,-30},{92,-30}}, - color={255,0,255})); - connect(tOnSample.y, mintOntOff.u1) annotation (Line(points={{-58,80},{-52,80}, - {-52,-64},{-22,-64}}, color={0,0,127})); - connect(tChanges.y, tOffSample.trigger) annotation (Line(points={{92,-30},{94, - -30},{94,-54},{-70,-54},{-70,-58}}, color={255,0,255})); - connect(tDecrease.y, tChanges.u2) annotation (Line(points={{52,-80},{60,-80}, - {60,-38},{68,-38}}, color={255,0,255})); + connect(tOnSam.trigger, tCha.y) annotation (Line(points={{-70,68},{-70,60},{ + 94,60},{94,-30},{92,-30}}, color={255,0,255})); + connect(triEnd, tCha.y) + annotation (Line(points={{120,-30},{92,-30}}, color={255,0,255})); + connect(tOnSam.y, mintOntOff.u1) annotation (Line(points={{-58,80},{-52,80},{ + -52,-64},{-22,-64}}, color={0,0,127})); + connect(tCha.y, tOffSam.trigger) annotation (Line(points={{92,-30},{94,-30},{ + 94,-54},{-70,-54},{-70,-58}}, color={255,0,255})); + connect(tDec.y, tCha.u2) annotation (Line(points={{52,-80},{60,-80},{60,-38}, + {68,-38}}, color={255,0,255})); annotation (defaultComponentName = "halPerRat", Diagram( coordinateSystem( @@ -174,12 +174,12 @@ length of the On period and the Off period, respectively.

                  An On period is defined as the period when the switch output of the relay controller is true; -Likewise, an Off period is defined as the period when the switch output is false. +Likewise, an off period is defined as the period when the switch output is false. See details of the switch output in Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Controller.

                  -Note that only the first On period and the first Off period are considered. +Note that only the first on period and the first off period are considered.

                  Algorithm

                  From ea78af0576d8e3277994bd343a0de159769df9c0 Mon Sep 17 00:00:00 2001 From: Michael Wetter Date: Tue, 2 May 2023 09:32:30 -0700 Subject: [PATCH 069/214] Revised documentation, moved connectors [ci skip] --- .../Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index 8a125870a8c..b1bb9584bfd 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -60,11 +60,11 @@ block FirstOrderAMIGO annotation (Placement(transformation(extent={{-140,-20},{-100,20}}),iconTransformation(extent={{-140,-20},{-100,20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput u_m "Connector of measurement input signal" - annotation (Placement(transformation(origin={30,-120}, extent={{20,-20},{-20,20}},rotation=270), + annotation (Placement(transformation(origin={0,-120}, extent={{20,-20},{-20,20}},rotation=270), iconTransformation(extent={{20,-20},{-20,20}},rotation=270,origin={0,-120}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanInput tri "Resets the controller output when trigger becomes true" - annotation (Placement(transformation(extent={{-20,-20},{20,20}},rotation=90,origin={4,-120}), + annotation (Placement(transformation(extent={{-20,-20},{20,20}},rotation=90,origin={-60,-120}), iconTransformation(extent={{-20,-20},{20,20}},rotation=90,origin={-60,-120}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput y "Connector for actuator output signal" @@ -135,14 +135,16 @@ equation 0}}, color={0,0,127})); connect(rel.u_s, u_s) annotation (Line(points={{18,10},{0,10},{0,0},{-120,0}}, color={0,0,127})); - connect(PID.trigger, tri) annotation (Line(points={{4,-52},{4,-120}}, color={255,0,255})); + connect(PID.trigger, tri) annotation (Line(points={{4,-52},{4,-90},{-60,-90}, + {-60,-120}}, color={255,0,255})); connect(samk.y,PID. k) annotation (Line(points={{-18,-20},{-14,-20},{-14,-32}, {-2,-32}}, color={0,0,127})); connect(PID.Ti, samTi.y) annotation (Line(points={{-2,-36},{-14,-36},{-14,-50}, {-58,-50}}, color={0,0,127})); connect(samTd.y,PID. Td) annotation (Line(points={{-18,-70},{-6,-70},{-6,-44}, {-2,-44}}, color={0,0,127})); - connect(rel.u_m, u_m) annotation (Line(points={{30,-2},{30,-120}}, color={0,0,127})); + connect(rel.u_m, u_m) annotation (Line(points={{30,-2},{30,-60},{10,-60},{10, + -96},{0,-96},{0,-120}}, color={0,0,127})); connect(swi.u3, rel.y) annotation (Line(points={{58,-28},{52,-28},{52,16},{42,16}}, color={0,0,127})); connect(swi.u1,PID. y) annotation (Line(points={{58,-12},{40,-12},{40,-40},{22, @@ -200,7 +202,7 @@ equation {-42,-70}}, color={0,0,127})); connect(swi.y, y) annotation (Line(points={{82,-20},{120,-20}}, color={0,0,127})); - connect(u_m, PID.u_m) annotation (Line(points={{30,-120},{30,-60},{10,-60},{10, + connect(u_m, PID.u_m) annotation (Line(points={{0,-120},{0,-96},{10,-96},{10, -52}}, color={0,0,127})); annotation (Documentation(info="

                  From 304f133fd73b5ac81bed71eeba86e55c3adf102b Mon Sep 17 00:00:00 2001 From: Michael Wetter Date: Mon, 8 May 2023 07:26:04 -0700 Subject: [PATCH 070/214] Fixed typo --- Buildings/Controls/OBC/Utilities/PIDWithAutotuning/package.mo | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/package.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/package.mo index 4c0633dffc0..7f85116bfbf 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/package.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/package.mo @@ -4,7 +4,8 @@ package PIDWithAutotuning "Package with blocks for PID autotuning" preferredView="info", Documentation( info=" -

                  This package contains components to perform automatic tunning on PID controllers.

                  +

                  This package contains blocks to perform automatic tuning of PID controllers. +

                  "), Icon( graphics={ From 5851898a78d1b3b10977bbef69f276c6b5d5f918 Mon Sep 17 00:00:00 2001 From: Michael Wetter Date: Mon, 8 May 2023 07:34:46 -0700 Subject: [PATCH 071/214] Updated documentation --- .../PIDWithAutotuning/AutoTuner/package.mo | 4 ++- .../PIDWithAutotuning/FirstOrderAMIGO.mo | 4 +-- .../Relay/HalfPeriodRatio.mo | 30 ++++++++++--------- .../PIDWithAutotuning/Relay/OnOffPeriod.mo | 22 +++++++------- .../Relay/ResponseProcess.mo | 12 ++++---- .../Relay/Validation/HalfPeriodRatio.mo | 4 +-- .../Relay/Validation/OnOffPeriod.mo | 2 +- .../Relay/Validation/ResponseProcess.mo | 2 +- .../PIDWithAutotuning/Relay/package.mo | 4 ++- .../ControlProcessModel.mo | 6 ++-- .../FirstOrderTimedelayed/Gain.mo | 10 +++---- .../TimeConstantDelay.mo | 4 +-- .../FirstOrderTimedelayed/Validation/Gain.mo | 4 +-- .../SystemIdentification/package.mo | 4 ++- 14 files changed, 60 insertions(+), 52 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/package.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/package.mo index 1509f504624..1a048ccd58c 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/package.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/package.mo @@ -1,6 +1,8 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning; package AutoTuner "Package with blocks for tuning the PID parameters based on identified system models for the control process" annotation (Documentation(info=" -

                  This package contains components related to system identification of the control process.

                  +

                  +This package contains blocks for system identification of the control process. +

                  ")); end AutoTuner; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index b1bb9584bfd..b8b006a5b76 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -114,7 +114,7 @@ block FirstOrderAMIGO Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.ResponseProcess resPro( final yHig=yHig - yRef, final yLow=yRef + yLow) - "Identify the On and Off period length, the half period ratio, and the moments when the tuning starts and ends" + "Identify the On and off period length, the half period ratio, and the moments when the tuning starts and ends" annotation (Placement(transformation(extent={{20,30},{0,50}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.ModelTime modTim "Simulation time" @@ -223,7 +223,7 @@ PID controller.

                  Brief guidance

                  -To use this block, connect it to the control loop. +To use this block, connect it to the control loop. It will start the PID tuning process once the simulation starts. During the PID tuning process, the control loop is controlled by a relay feedback controller. The PID tuning process will end automatically based on the algorithm defined diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo index e61a021e11d..20f3aa36270 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo @@ -5,14 +5,14 @@ block HalfPeriodRatio final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) - "Length for the On period" + "Length for the on period" annotation (Placement(transformation(extent={{-140,60},{-100,100}}), iconTransformation(extent={{-140,40},{-100,80}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput tOff( final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) - "Length for the Off period" + "Length for the off period" annotation (Placement(transformation(extent={{-140,-90},{-100,-50}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput rho @@ -31,7 +31,7 @@ block HalfPeriodRatio "Minimum value of the length for the on and off period " annotation (Placement(transformation(extent={{-80,30},{-60,50}}))); Buildings.Controls.OBC.CDL.Continuous.Greater gretOntOff - "Check if both the length for the On period and the length for the off period are larger than 0" + "Check if both the length for the on period and the length for the off period are larger than 0" annotation (Placement(transformation(extent={{-20,50},{0,30}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.Constant minLen( final k=0) @@ -49,13 +49,13 @@ block HalfPeriodRatio "Sample the tmin when tmin is larger than 0" annotation (Placement(transformation(extent={{20,30},{40,10}}))); Buildings.Controls.OBC.CDL.Continuous.Greater tInc - "Check if either the length for the On period or the length for the off period increases after they both becomes positive" + "Check if either the length for the on period or the length for the off period increases after they both becomes positive" annotation (Placement(transformation(extent={{30,-40},{50,-20}}))); Buildings.Controls.OBC.CDL.Continuous.Min mintOntOff - "Find the smaller one between the length for the On period and the length for the off period" + "Find the smaller one between the length for the on period and the length for the off period" annotation (Placement(transformation(extent={{-20,-80},{0,-60}}))); Buildings.Controls.OBC.CDL.Continuous.Max maxtOntOff - "Find the larger one between the length for the On period and the length for the off period" + "Find the larger one between the length for the on period and the length for the off period" annotation (Placement(transformation(extent={{-20,70},{0,90}}))); Buildings.Controls.OBC.CDL.Continuous.Divide halPerRat "Calculate the half period ratio" @@ -64,16 +64,16 @@ block HalfPeriodRatio "Calculate the sum of the length for the on period and the length for the off period" annotation (Placement(transformation(extent={{-80,-40},{-60,-20}}))); Buildings.Controls.OBC.CDL.Continuous.Multiply mul - "Detect if the the length for the On period or the length for the off period changes after both of them are larger than 0" + "Detect if the the length for the on period or the length for the off period changes after both of them are larger than 0" annotation (Placement(transformation(extent={{-34,-40},{-14,-20}}))); Buildings.Controls.OBC.CDL.Continuous.Greater gretmaxtOntOff - "Check if either the length for the On period or the length for the off period is larger than 0" + "Check if either the length for the on period or the length for the off period is larger than 0" annotation (Placement(transformation(extent={{-20,10},{0,-10}}))); Buildings.Controls.OBC.CDL.Continuous.Less tDec - "Check if either the length for the On period or the length for the off period decreases after they both becomes positive" + "Check if either the length for the on period or the length for the off period decreases after they both becomes positive" annotation (Placement(transformation(extent={{30,-90},{50,-70}}))); Buildings.Controls.OBC.CDL.Logical.Or tCha - "Check if the length for the On period or the length for the off period changes" + "Check if the length for the on period or the length for the off period changes" annotation (Placement(transformation(extent={{70,-40},{90,-20}}))); equation @@ -162,18 +162,20 @@ First implementation
                  ", info=" -

                  This block calculates the half-period ratio of the output from a relay controller.

                  +

                  +This block calculates the half-period ratio of the output from a relay controller. +

                  Main equations

                  ρ = max(ton,toff)/ min(ton,toff),

                  where ton and toff are the -length of the On period and the Off period, respectively. +lengths of the on period and the off period, respectively.

                  -An On period is defined as the period when the switch output of the relay controller is -true; +An on period is defined as the period when the switch output of the relay controller is +true. Likewise, an off period is defined as the period when the switch output is false. See details of the switch output in Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Controller. diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo index 8ae59c495da..fa83e2a3ea0 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo @@ -1,6 +1,6 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay; block OnOffPeriod - "Calculate the lengths of the On period and the Off period" + "Calculate the lengths of the on period and the off period" Buildings.Controls.OBC.CDL.Interfaces.RealInput tim( final quantity="Time", final unit="s") @@ -15,14 +15,14 @@ block OnOffPeriod final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) - "Length for the Off period" + "Length for the off period" annotation (Placement(transformation(extent={{100,-50},{140,-10}}), iconTransformation(extent={{102,-60},{142,-20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput tOn( final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) - "Length for the On period" + "Length for the on period" annotation (Placement(transformation(extent={{100,20},{140,60}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler timOn "Simulation time when the input signal becomes On (True)" @@ -34,25 +34,25 @@ block OnOffPeriod "Relay switch off" annotation (Placement(transformation(extent={{-80,-80},{-60,-60}}))); Buildings.Controls.OBC.CDL.Continuous.Subtract lenOffCal - "Calculate the horizon length for the Off period" + "Calculate the horizon length for the off period" annotation (Placement(transformation(extent={{10,-40},{30,-20}}))); Buildings.Controls.OBC.CDL.Continuous.Subtract lenOnCal - "Calculate the horizon length for the On period" + "Calculate the horizon length for the on period" annotation (Placement(transformation(extent={{10,30},{30,50}}))); Buildings.Controls.OBC.CDL.Continuous.Greater greTimOff - "Trigger the action to record the horizon length for the Off period" + "Trigger the action to record the horizon length for the off period" annotation (Placement(transformation(extent={{50,-80},{70,-60}}))); Buildings.Controls.OBC.CDL.Continuous.Greater greTimOn - "Trigger the action to record the horizon length for the On period" + "Trigger the action to record the horizon length for the on period" annotation (Placement(transformation(extent={{50,60},{70,80}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.Constant minLen(final k=0) "Minimum value for the horizon length" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler timOffRec - "Record the horizon length for the Off period" + "Record the horizon length for the off period" annotation (Placement(transformation(extent={{70,-40},{90,-20}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler timOnRec - "Record the horizon length for the On period" + "Record the horizon length for the on period" annotation (Placement(transformation(extent={{70,50},{90,30}}))); equation @@ -118,8 +118,8 @@ First implementation
                  ", info="

                  This block processes a relay swtich output signal and calculates the length of -the On period (when the relay switch signal becomes true), -and the length of the Off period (when the relay switch signal becomes +the on period (when the relay switch signal becomes true), +and the length of the off period (when the relay switch signal becomes false), respectively.

                  References

                  diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo index 6193154a181..346b86cb6d3 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo @@ -1,6 +1,6 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay; block ResponseProcess - "Calculate the lengths of the On period and the Off period, the half period ratio, as well as the times when the tuning starts and ends" + "Calculate the lengths of the on period and the off period, the half period ratio, as well as the times when the tuning starts and ends" parameter Real yHig(min=1E-6) = 1 "Higher value for the output"; parameter Real yLow(min=1E-6) = 0.5 @@ -19,13 +19,13 @@ block ResponseProcess final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) - "Length for the On period" + "Length for the on period" annotation (Placement(transformation(extent={{100,60},{140,100}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput tOff( final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) - "length for the Off period" + "length for the off period" annotation (Placement(transformation(extent={{100,20},{140,60}}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput triSta "A boolean signal, true if the tuning starts" @@ -38,7 +38,7 @@ block ResponseProcess annotation (Placement(transformation(extent={{100,-10},{140,30}}), iconTransformation(extent={{100,-20},{140,20}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.OnOffPeriod onOffPer - "Calculate the length of the On period and the Off period" + "Calculate the length of the on period and the off period" annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.HalfPeriodRatio halPerRatio "Calculate the half period ratio" @@ -94,10 +94,10 @@ This block processes a relay swtich output signall and calculates:

                  1. -the length of the On period (when the relay switch signal becomes true); +the length of the on period (when the relay switch signal becomes true);
                  2. -the length of the Off period (when the relay switch signal becomes false); +the length of the off period (when the relay switch signal becomes false);
                  3. the normalized time delay of the responses; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mo index d6181550901..d747441a3eb 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mo @@ -7,13 +7,13 @@ model HalfPeriodRatio "Test model for HalfPeriodRatio" table=[0,0; 0.1,1; 0.3,1; 0.7,1; 0.83,2; 0.85,6], smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) - "Signal for the length of the On period" + "Signal for the length of the on period" annotation (Placement(transformation(extent={{-60,20},{-40,40}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable tOff( table=[0,0; 0.1,0; 0.3,0; 0.7,3; 0.83,3; 0.85,3], smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) - "Signal for the length of the Off period" + "Signal for the length of the off period" annotation (Placement(transformation(extent={{-60,-40},{-40,-20}}))); equation diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mo index c7c793bab3c..e60bdbc2660 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mo @@ -1,7 +1,7 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation; model OnOffPeriod "Test model for OnOffPeriod" Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.OnOffPeriod onOffPer - "Calculate the length of the On period and the Off period" + "Calculate the length of the on period and the off period" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Buildings.Controls.OBC.CDL.Logical.Sources.TimeTable relRes(table=[0,1; 0.1,0; 0.3,0; 0.7,1; 0.83,0; 0.85,1], period=2) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mo index 651c5487b34..e55ddcc01e2 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mo @@ -1,7 +1,7 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation; model ResponseProcess "Test model for ResponseProcess" Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.ResponseProcess resPro(yHig=1, - yLow=0.2) "Calculate the length of the On period and the Off period" + yLow=0.2) "Calculate the length of the on period and the off period" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Buildings.Controls.OBC.CDL.Logical.Sources.TimeTable relRes(table=[0,1; 0.1,0; 0.3,0; 0.7,1; 0.83,0; 0.85,1], period=2) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/package.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/package.mo index 3cf264018eb..08e302fae4b 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/package.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/package.mo @@ -1,6 +1,8 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning; package Relay "Package with blocks for a relay controller" annotation (Documentation(info=" -

                    This package contains components related to a relay controller.

                    +

                    +This package contains blocks related to a relay controller. +

                    ")); end Relay; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo index 77e4cb8b848..e313e8790d6 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo @@ -15,14 +15,14 @@ block ControlProcessModel final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) - "Length for the On period" + "Length for the on period" annotation (Placement(transformation(extent={{-140,20},{-100,60}}), iconTransformation(extent={{-140,20},{-100,60}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput tOff( final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) - "Length for the Off period" + "Length for the off period" annotation (Placement(transformation(extent={{-140,-40},{-100,0}}), iconTransformation(extent={{-140,-60},{-100,-20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput tau( @@ -90,7 +90,7 @@ block ControlProcessModel annotation (Placement(transformation(extent={{-54,10},{-34,30}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samtOn( final y_start=1) - "Sample the length of the On period when the tuning period ends" + "Sample the length of the on period when the tuning period ends" annotation (Placement(transformation(extent={{-70,50},{-50,70}}))); Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai( final k=-1) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Gain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Gain.mo index 4f8f796138c..2a3ec41ddac 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Gain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Gain.mo @@ -12,14 +12,14 @@ block Gain "Identify the gain of a first order time delayed model" final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) - "Length for the On period" + "Length for the on period" annotation (Placement(transformation(extent={{-140,-40},{-100,0}}), iconTransformation(extent={{-140,-20},{-100,20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput tOff( final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) - "Length for the Off period" + "Length for the off period" annotation (Placement(transformation(extent={{-140,-100},{-100,-60}}), iconTransformation(extent={{-140,-100},{-100,-60}}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanInput triSta @@ -116,11 +116,11 @@ where yhig and ylow are the higher value and the lower value of the relay control output, respectively. yref is the reference value of the relay output. ton and toff are the length of the On -period and the Off period, respectively. +period and the off period, respectively.

                    -During an On period, the relay switch signal becomes true. -During an Off period, the relay switch signal becomes false. +During an on period, the relay switch signal becomes true. +During an off period, the relay switch signal becomes false.

                    References

                    Josefin Berner (2017). diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/TimeConstantDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/TimeConstantDelay.mo index 63990c187d9..bd93b109971 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/TimeConstantDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/TimeConstantDelay.mo @@ -11,7 +11,7 @@ block TimeConstantDelay final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) - "Length for the On period" + "Length for the on period" annotation (Placement(transformation(extent={{-140,56},{-100,96}}), iconTransformation(extent={{-140,40},{-100,80}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput k @@ -161,7 +161,7 @@ T = ton/(ln((δ/|k|-yhig+exp(τ/(1 - τ))(y where yhig and ylow are the higher value and the lower value of the relay control output, respectively. -ton is the length of the On period. +ton is the length of the on period. δ is the dead band of a relay controller. k is the gain of the first-order time-delayed model. τ is the normalized time delay. diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mo index ea13ef5a4a4..b8cb5acfdf6 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mo @@ -7,13 +7,13 @@ model Gain "Test model for Gain" table=[0,0; 0.1,0.1; 0.3,0.1; 0.7,0.1; 0.83,0.1; 0.9,0.07], smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) - "The length of the On period" + "The length of the on period" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable tOff( table=[0,0; 0.1,0; 0.3,0; 0.7,0; 0.83,0.73; 0.85,0.73], smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) - "The length of the Off period" + "The length of the off period" annotation (Placement(transformation(extent={{-60,-50},{-40,-30}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable u( table=[0,1; 0.1,0.5; 0.3,0.5; 0.7,0.5; 0.83,1; 0.9,0.5], diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/package.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/package.mo index 04623eb9319..f75620c71a8 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/package.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/package.mo @@ -1,6 +1,8 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning; package SystemIdentification "Package with blocks for identifying a system model of control process" annotation (Documentation(info=" -

                    This package contains components related to system identification of the control process.

                    +

                    +This package contains blocks related to system identification of the controlled process. +

                    ")); end SystemIdentification; From 398bd9732c14abb726785af5e1a504e526df2c73 Mon Sep 17 00:00:00 2001 From: Michael Wetter Date: Mon, 8 May 2023 07:45:40 -0700 Subject: [PATCH 072/214] Updated documentation --- .../OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo | 2 +- .../OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index b8b006a5b76..5aa146e1b64 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -114,7 +114,7 @@ block FirstOrderAMIGO Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.ResponseProcess resPro( final yHig=yHig - yRef, final yLow=yRef + yLow) - "Identify the On and off period length, the half period ratio, and the moments when the tuning starts and ends" + "Identify the on and off period length, the half period ratio, and the moments when the tuning starts and ends" annotation (Placement(transformation(extent={{20,30},{0,50}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.ModelTime modTim "Simulation time" diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo index fa83e2a3ea0..42eee60d33b 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo @@ -25,10 +25,10 @@ block OnOffPeriod "Length for the on period" annotation (Placement(transformation(extent={{100,20},{140,60}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler timOn - "Simulation time when the input signal becomes On (True)" + "Simulation time when the input signal becomes on (True)" annotation (Placement(transformation(extent={{-50,30},{-30,50}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler timOff - "Simulation time when the input signal becomesss Off (False)" + "Simulation time when the input signal becomes off (False)" annotation (Placement(transformation(extent={{-50,-50},{-30,-30}}))); Buildings.Controls.OBC.CDL.Logical.Not Off "Relay switch off" From abde11f721796c7b0bdfff0d9c898346b5dbd64d Mon Sep 17 00:00:00 2001 From: Michael Wetter Date: Mon, 8 May 2023 07:54:34 -0700 Subject: [PATCH 073/214] Aligned connector to grid --- .../AutoTuner/AMIGO/PIDDerivativeTime.mo | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo index 69f796c5906..dfedbd72b7f 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo @@ -1,4 +1,4 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; block PIDDerivativeTime "Identify the derivative time of a PID controller" Buildings.Controls.OBC.CDL.Interfaces.RealInput T( final quantity="Time", @@ -19,7 +19,7 @@ block PIDDerivativeTime "Identify the derivative time of a PID controller" final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Time constant signal for the derivative term" - annotation (Placement(transformation(extent={{100,-16},{140,24}}), + annotation (Placement(transformation(extent={{100,-20},{140,20}}), iconTransformation(extent={{100,-20},{140,20}}))); Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai1( final k=0.3) @@ -37,10 +37,10 @@ block PIDDerivativeTime "Identify the derivative time of a PID controller" annotation (Placement(transformation(extent={{-40,-64},{-20,-44}}))); Buildings.Controls.OBC.CDL.Continuous.Divide div "Calculate the output of mul divided by the output of add" - annotation (Placement(transformation(extent={{20,-6},{40,14}}))); + annotation (Placement(transformation(extent={{20,-10},{40,10}}))); equation - connect(div.y, Td) annotation (Line(points={{42,4},{120,4}}, color={0,0,127})); + connect(div.y, Td) annotation (Line(points={{42,0},{120,0}}, color={0,0,127})); connect(gai1.u, L) annotation (Line(points={{-82,-60},{-96,-60},{-96,-60},{-120, -60}}, color={0,0,127})); connect(gai1.y, add.u2) annotation (Line(points={{-58,-60},{-42,-60}}, @@ -53,9 +53,9 @@ equation -60}}, color={0,0,127})); connect(gai2.y, mul.u1) annotation (Line(points={{-58,40},{-52,40},{-52,16},{ -42,16}}, color={0,0,127})); - connect(mul.y, div.u1) annotation (Line(points={{-18,10},{18,10}}, + connect(mul.y, div.u1) annotation (Line(points={{-18,10},{2,10},{2,6},{18,6}}, color={0,0,127})); - connect(div.u2, add.y) annotation (Line(points={{18,-2},{12,-2},{12,-54},{-18, + connect(div.u2, add.y) annotation (Line(points={{18,-6},{12,-6},{12,-54},{-18, -54}}, color={0,0,127})); annotation (defaultComponentName = "PIDDerTim", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ From a85ebc5cbc8ba07b344dbe967d200c0ef1510cde Mon Sep 17 00:00:00 2001 From: Michael Wetter Date: Mon, 8 May 2023 07:54:48 -0700 Subject: [PATCH 074/214] Aligned connector to grid --- .../PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo index dfedbd72b7f..af6b08e2c10 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo @@ -49,7 +49,7 @@ equation -120,60}}, color={0,0,127})); connect(gai2.u, T) annotation (Line(points={{-82,40},{-90,40},{-90,60},{-120, 60}}, color={0,0,127})); - connect(mul.u2, L) annotation (Line(points={{-42,4},{-96,4},{-96,-60},{-120, + connect(mul.u2, L) annotation (Line(points={{-42,4},{-90,4},{-90,-60},{-120, -60}}, color={0,0,127})); connect(gai2.y, mul.u1) annotation (Line(points={{-58,40},{-52,40},{-52,16},{ -42,16}}, color={0,0,127})); From 44c33ea6bb391d3992f2869043b23ddbb2c69c0f Mon Sep 17 00:00:00 2001 From: Michael Wetter Date: Mon, 8 May 2023 07:55:45 -0700 Subject: [PATCH 075/214] Aligned connector to grid --- .../AutoTuner/AMIGO/PIDGain.mo | 14 ++++----- .../AutoTuner/AMIGO/PIIntegralTime.mo | 29 +++++++++---------- 2 files changed, 21 insertions(+), 22 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo index 8c30e18f9df..54d5c8e41e1 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo @@ -1,9 +1,9 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; block PIDGain "Identify the control gain of a PID controller" Buildings.Controls.OBC.CDL.Interfaces.RealInput kp( final min=1E-6) "Gain of a first order time-delayed model" - annotation (Placement(transformation(extent={{-140,24},{-100,64}}), + annotation (Placement(transformation(extent={{-140,40},{-100,80}}), iconTransformation(extent={{-140,40},{-100,80}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput T( final quantity="Time", @@ -24,7 +24,7 @@ block PIDGain "Identify the control gain of a PID controller" annotation (Placement(transformation(extent={{100,-20},{140,20}}))); Buildings.Controls.OBC.CDL.Continuous.Divide div1 "Calculate the inverse of the input gain" - annotation (Placement(transformation(extent={{-40,40},{-20,60}}))); + annotation (Placement(transformation(extent={{-40,56},{-20,76}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.Constant const( final k=1) "Constant parameter" @@ -45,10 +45,10 @@ block PIDGain "Identify the control gain of a PID controller" annotation (Placement(transformation(extent={{60,-10},{80,10}}))); equation - connect(div1.u2, kp) annotation (Line(points={{-42,44},{-120,44}}, + connect(div1.u2, kp) annotation (Line(points={{-42,60},{-120,60}}, color={0,0,127})); - connect(const.y, div1.u1) annotation (Line(points={{-58,80},{-50,80},{-50,56}, - {-42,56}}, color={0,0,127})); + connect(const.y, div1.u1) annotation (Line(points={{-58,80},{-50,80},{-50,72}, + {-42,72}}, color={0,0,127})); connect(div2.u2, L) annotation (Line(points={{-62,-36},{-80,-36},{-80,-60},{ -120,-60}}, color={0,0,127})); connect(div2.u1, T) annotation (Line(points={{-62,-24},{-80,-24},{-80,0},{ @@ -58,7 +58,7 @@ equation connect(gai1.y, add.u) annotation (Line(points={{2,-30},{18,-30}}, color={0,0,127})); connect(mul.y, k) annotation (Line(points={{82,0},{120,0}}, color={0,0,127})); - connect(div1.y, mul.u1) annotation (Line(points={{-18,50},{42,50},{42,6},{58, + connect(div1.y, mul.u1) annotation (Line(points={{-18,66},{48,66},{48,6},{58, 6}}, color={0,0,127})); connect(mul.u2, add.y) annotation (Line(points={{58,-6},{48,-6},{48,-30},{42, -30}}, color={0,0,127})); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo index 86307425227..7dcc2ba2046 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo @@ -1,4 +1,4 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; block PIIntegralTime "Identify the integral time of a PI controller" Buildings.Controls.OBC.CDL.Interfaces.RealInput T( final quantity="Time", @@ -19,20 +19,20 @@ block PIIntegralTime "Identify the integral time of a PI controller" final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Time constant for the integral term" - annotation (Placement(transformation(extent={{100,-22},{140,18}}), + annotation (Placement(transformation(extent={{100,-20},{140,20}}), iconTransformation(extent={{100,-20},{140,20}}))); Buildings.Controls.OBC.CDL.Continuous.Add add1 "Calculate the sum of the output of mul3 and the output of gai1" annotation (Placement(transformation(extent={{0,44},{20,64}}))); Buildings.Controls.OBC.CDL.Continuous.Add add2 "Calculate the sum of 0.35 and the output of div" - annotation (Placement(transformation(extent={{60,-12},{80,8}}))); + annotation (Placement(transformation(extent={{60,-10},{80,10}}))); Buildings.Controls.OBC.CDL.Continuous.Add add3 "Calculate the sum of the output of add1 and the output of mul2" annotation (Placement(transformation(extent={{60,-54},{80,-34}}))); Buildings.Controls.OBC.CDL.Continuous.Divide div "Calculate the output of gai3 divided by the output of add3" - annotation (Placement(transformation(extent={{0,-6},{20,14}}))); + annotation (Placement(transformation(extent={{0,-4},{20,16}}))); Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai1(final k=12) "Mutiple the time delay by 12" annotation (Placement(transformation(extent={{-40,-70},{-20,-50}}))); @@ -56,11 +56,11 @@ block PIIntegralTime "Identify the integral time of a PI controller" annotation (Placement(transformation(extent={{-60,50},{-40,70}}))); Buildings.Controls.OBC.CDL.Continuous.Multiply mul4 "Calculate the product of the output of the gai3 and the time delay" - annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); + annotation (Placement(transformation(extent={{-80,2},{-60,22}}))); equation connect(add2.y, Ti) - annotation (Line(points={{82,-2},{120,-2}}, color={0,0,127})); + annotation (Line(points={{82,0},{120,0}}, color={0,0,127})); connect(gai4.u, L) annotation (Line(points={{-82,-20},{-92,-20},{-92,-60},{-120, -60}}, color={0,0,127})); connect(mul3.u1, T) annotation (Line(points={{-62,66},{-90,66},{-90,60},{-120, @@ -90,17 +90,16 @@ equation connect(add3.u1, add1.y) annotation (Line(points={{58,-38},{32,-38},{32,54},{ 22,54}}, color={0,0,127})); connect(add3.y, div.u2) annotation (Line(points={{82,-44},{90,-44},{90,-24},{ - -8,-24},{-8,-2},{-2,-2}}, - color={0,0,127})); + -8,-24},{-8,0},{-2,0}},color={0,0,127})); connect(div.y, add2.u1) - annotation (Line(points={{22,4},{58,4}}, color={0,0,127})); - connect(add2.u2, gai4.y) annotation (Line(points={{58,-8},{48,-8},{48,-20},{ + annotation (Line(points={{22,6},{58,6}}, color={0,0,127})); + connect(add2.u2, gai4.y) annotation (Line(points={{58,-6},{48,-6},{48,-20},{ -58,-20}}, color={0,0,127})); - connect(mul4.u2, L) annotation (Line(points={{-82,4},{-92,4},{-92,-60},{-120,-60}}, - color={0,0,127})); - connect(gai3.y, mul4.u1) annotation (Line(points={{-42,80},{-94,80},{-94,16},{ - -82,16}}, color={0,0,127})); - connect(mul4.y, div.u1) annotation (Line(points={{-58,10},{-2,10}}, + connect(mul4.u2, L) annotation (Line(points={{-82,6},{-92,6},{-92,-60},{-120, + -60}}, color={0,0,127})); + connect(gai3.y, mul4.u1) annotation (Line(points={{-42,80},{-94,80},{-94,18}, + {-82,18}}, color={0,0,127})); + connect(mul4.y, div.u1) annotation (Line(points={{-58,12},{-2,12}}, color={0,0,127})); annotation (defaultComponentName = "PIIntTim", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ From 97307200ac9803b5b6bdb3452eefd7dacf607c3c Mon Sep 17 00:00:00 2001 From: Michael Wetter Date: Mon, 8 May 2023 07:59:10 -0700 Subject: [PATCH 076/214] Updated info section --- .../PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo | 5 ++++- .../Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo | 5 ++++- .../PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo | 7 +++++-- .../Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo | 5 ++++- .../PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo | 5 ++++- 5 files changed, 21 insertions(+), 6 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo index af6b08e2c10..0a045834a7d 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo @@ -78,8 +78,11 @@ First implementation
                    ", info="

                    This block calculates the derivative time of a PID model.

                    Main equations

                    +

                    +The main equations is +

                    -Td = 0.5LT/(0.3L+T), +Td = 0.5 L T/(0.3 L + T),

                    where T is the time constant of the first-order time-delayed model diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo index 54d5c8e41e1..877e129d642 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo @@ -83,8 +83,11 @@ First implementation
                    ", info="

                    This block calculates the control gain of a PID model.

                    Main equations

                    +

                    +The main equations is +

                    -k = 1/kp + (0.2 + 0.45T/L), +k = 1/kp + (0.2 + 0.45 T/L),

                    where kp is the gain of the first-order time-delayed model, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo index 208cf5f599f..a1ff7ab95c6 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo @@ -1,4 +1,4 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; block PIDIntegralTime "Identify the integral time of a PID controller" Buildings.Controls.OBC.CDL.Interfaces.RealInput T( final quantity="Time", @@ -92,8 +92,11 @@ First implementation
                    ", info="

                    This block calculates the integral time of a PID model.

                    Main equations

                    +

                    +The main equations is +

                    -Ti = L(0.4L + 0.8T)/(L + 0.1T), +Ti = L (0.4 L + 0.8 T)/(L + 0.1 T),

                    where T is the time constant of the first-order time-delayed model diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo index 648243358ba..e3adfa88e2f 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo @@ -1,4 +1,4 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; block PIGain "Identify the control gain of a PI controller" Buildings.Controls.OBC.CDL.Interfaces.RealInput kp( final min=1E-6) @@ -124,6 +124,9 @@ First implementation
                    ", info="

                    This block calculates the control gain of a PI model, k

                    Main equations

                    +

                    +The main equations is +

                    k = 0.15/kp + (0.35-LT/(L+T)2)(T/kp/L),

                    diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo index 7dcc2ba2046..085449273cc 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo @@ -122,8 +122,11 @@ First implementation
                    ", info="

                    This block calculates the integral time of a PI model

                    Main equations

                    +

                    +The main equations is +

                    -Ti = 0.35L + 13LT2/(T2 + 12LT + 7L2), +Ti = 0.35 L + 13 L T2/(T2 + 12 L T + 7 L2),

                    where T is the time constant of the first-order time-delayed model From 4102bbecd315ce08561f3420f41a1ef924f01399 Mon Sep 17 00:00:00 2001 From: Michael Wetter Date: Mon, 8 May 2023 08:10:02 -0700 Subject: [PATCH 077/214] Aligned connector on icon and diagram layer --- .../OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index 5aa146e1b64..a47ad4a1968 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -68,7 +68,7 @@ block FirstOrderAMIGO iconTransformation(extent={{-20,-20},{20,20}},rotation=90,origin={-60,-120}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput y "Connector for actuator output signal" - annotation (Placement(transformation(extent={{100,-40},{140,0}}), iconTransformation(extent={{100,-20},{140,20}}))); + annotation (Placement(transformation(extent={{100,-20},{140,20}}),iconTransformation(extent={{100,-20},{140,20}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Controller rel( final yHig=yHig, final yLow=yLow, @@ -201,7 +201,8 @@ equation connect(PIDPar.Td, samTd.u) annotation (Line(points={{-82,43},{-86,43},{-86,-70}, {-42,-70}}, color={0,0,127})); connect(swi.y, y) - annotation (Line(points={{82,-20},{120,-20}}, color={0,0,127})); + annotation (Line(points={{82,-20},{90,-20},{90,0},{120,0}}, + color={0,0,127})); connect(u_m, PID.u_m) annotation (Line(points={{0,-120},{0,-96},{10,-96},{10, -52}}, color={0,0,127})); annotation (Documentation(info=" From 89a64406937e998cc9c1eb0927b43f3136813ea1 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Sun, 18 Jun 2023 23:46:39 -0400 Subject: [PATCH 078/214] minor changes to the comments and eliminate the dataset from python implementation --- .../PIDWithAutotuning/AutoTuner/AMIGO/PI.mo | 7 +- .../PIDWithAutotuning/AutoTuner/AMIGO/PID.mo | 11 +- .../AutoTuner/AMIGO/PIDDerivativeTime.mo | 22 ++-- .../AutoTuner/AMIGO/PIDGain.mo | 19 ++-- .../AutoTuner/AMIGO/PIDIntegralTime.mo | 23 ++-- .../AutoTuner/AMIGO/PIGain.mo | 25 ++--- .../AutoTuner/AMIGO/PIIntegralTime.mo | 33 +++--- .../AutoTuner/AMIGO/Validation/PI.mo | 43 ++++--- .../AutoTuner/AMIGO/Validation/PID.mo | 45 ++++---- .../AMIGO/Validation/PIDDerivativeTime.mo | 36 +++--- .../AutoTuner/AMIGO/Validation/PIDGain.mo | 45 ++++---- .../AMIGO/Validation/PIDIntegralTime.mo | 36 +++--- .../AutoTuner/AMIGO/Validation/PIGain.mo | 44 ++++---- .../AMIGO/Validation/PIIntegralTime.mo | 35 +++--- .../PIDWithAutotuning/Relay/Controller.mo | 39 +++++-- .../Relay/HalfPeriodRatio.mo | 33 +++--- .../Relay/NormalizedTimeDelay.mo | 14 ++- .../PIDWithAutotuning/Relay/OnOffPeriod.mo | 13 ++- .../Relay/ResponseProcess.mo | 13 ++- .../Relay/Validation/Controller.mo | 14 ++- .../Relay/Validation/HalfPeriodRatio.mo | 50 +++++---- .../Relay/Validation/NormalizedTimeDelay.mo | 23 ++-- .../Relay/Validation/OnOffPeriod.mo | 18 +-- .../Relay/Validation/ResponseProcess.mo | 16 +-- .../ControlProcessModel.mo | 106 +++++++++--------- .../FirstOrderTimedelayed/Gain.mo | 11 +- .../TimeConstantDelay.mo | 11 +- .../Validation/ControlProcessModel.mo | 77 ++++++++----- .../FirstOrderTimedelayed/Validation/Gain.mo | 58 +++++----- .../Validation/TimeConstantDelay.mo | 45 ++++---- .../SystemIdentification/package.mo | 2 +- 31 files changed, 523 insertions(+), 444 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PI.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PI.mo index a71b4b08339..1b220aa4f3b 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PI.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PI.mo @@ -1,5 +1,5 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; -block PI "Identify control gain and integral time of the PI controller" +block PI "Identify control gain and integral time of a PI controller" Buildings.Controls.OBC.CDL.Interfaces.RealInput kp( final min=1E-6) "Gain of a first order time-delayed model" @@ -30,11 +30,12 @@ block PI "Identify control gain and integral time of the PI controller" "Time constant signal for the integral term" annotation (Placement(transformation(extent={{100,-50},{140,-10}}), iconTransformation(extent={{100,-80},{140,-40}}))); +protected Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIGain gai - "Calculate the control gain" + "Block that calculates the control gain" annotation (Placement(transformation(extent={{-10,20},{10,40}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIIntegralTime - intTim "Calculate the integral time" + intTim "Block that calculates the integral time" annotation (Placement(transformation(extent={{-10,-40},{10,-20}}))); equation diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo index 950d6a319e8..17f4b5b3091 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo @@ -27,23 +27,24 @@ block PID "Identify control gain, integral time, and derivative time of the PID final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) - "Connector for time constant signal for the integral term" + "Time constant signal for the integral term" annotation (Placement(transformation(extent={{100,-20},{140,20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput Td( final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) - "Connector for time constant signal for the derivative term" + "Time constant signal for the derivative term" annotation (Placement(transformation(extent={{100,-80},{140,-40}}), iconTransformation(extent={{100,-90},{140,-50}}))); +protected Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIDGain gai - "Calculate the control gain" + "Block that calculates the control gain" annotation (Placement(transformation(extent={{-10,40},{10,60}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIDIntegralTime - intTim "Calculate the integral time" + intTim "Block that calculates the integral time" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIDDerivativeTime - derTim "Calculate the derivative time" + derTim "Block that calculates the derivative time" annotation (Placement(transformation(extent={{-10,-70},{10,-50}}))); equation diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo index 0a045834a7d..3a96221e7b1 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo @@ -21,22 +21,23 @@ block PIDDerivativeTime "Identify the derivative time of a PID controller" "Time constant signal for the derivative term" annotation (Placement(transformation(extent={{100,-20},{140,20}}), iconTransformation(extent={{100,-20},{140,20}}))); +protected Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai1( final k=0.3) - "Calculate the product of 0.3 and the time delay" + "Block that calculates the product of 0.3 and the time delay" annotation (Placement(transformation(extent={{-80,-70},{-60,-50}}))); Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai2( final k=0.5) - "Calculate the product of 0.5 and the input time constant" + "Block that calculates the product of 0.5 and the input time constant" annotation (Placement(transformation(extent={{-80,30},{-60,50}}))); Buildings.Controls.OBC.CDL.Continuous.Multiply mul - "Calculate the product of the output of gai2 and the input time constant" + "Block that calculates the product of the two inputs" annotation (Placement(transformation(extent={{-40,0},{-20,20}}))); Buildings.Controls.OBC.CDL.Continuous.Add add - "Calculate the sum of the output of gai1 and the input time constant" + "Block that calculates the sum of the two inputs" annotation (Placement(transformation(extent={{-40,-64},{-20,-44}}))); Buildings.Controls.OBC.CDL.Continuous.Divide div - "Calculate the output of mul divided by the output of add" + "Block that calculates the first input divided by the second input" annotation (Placement(transformation(extent={{20,-10},{40,10}}))); equation @@ -76,10 +77,11 @@ First implementation

                  4. ", info=" -

                    This block calculates the derivative time of a PID model.

                    +

                    This block calculates the derivative time of a PID controller, based on a reduced-order model, +i.e., a first-order time-delayed model, that approximates the control process.

                    Main equations

                    -The main equations is +The main equation is

                    Td = 0.5 L T/(0.3 L + T), @@ -88,12 +90,6 @@ Td = 0.5 L T/(0.3 L + T), where T is the time constant of the first-order time-delayed model and L is the time delay of the first-order time-delayed model.

                    -

                    Validation

                    -

                    -This block was validated analytically, see - -Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDDerivativeTime. -

                    References

                    Åström, Karl Johan and Tore Hägglund (2004) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo index 877e129d642..07aabcb55f9 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo @@ -22,8 +22,9 @@ block PIDGain "Identify the control gain of a PID controller" Buildings.Controls.OBC.CDL.Interfaces.RealOutput k "Control gain signal" annotation (Placement(transformation(extent={{100,-20},{140,20}}))); +protected Buildings.Controls.OBC.CDL.Continuous.Divide div1 - "Calculate the inverse of the input gain" + "Block that calculates the inverse of the input gain" annotation (Placement(transformation(extent={{-40,56},{-20,76}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.Constant const( final k=1) @@ -31,17 +32,17 @@ block PIDGain "Identify the control gain of a PID controller" annotation (Placement(transformation(extent={{-80,70},{-60,90}}))); Buildings.Controls.OBC.CDL.Continuous.AddParameter add( final p=0.2) - "Calculate the sum of 0.2 and the output of gai1" + "Block that calculates the sum of the two inputs" annotation (Placement(transformation(extent={{20,-40},{40,-20}}))); Buildings.Controls.OBC.CDL.Continuous.Divide div2 - "Calculate ratio of the time constant to the time delay" + "Block that calculates the ratio of the time constant to the time delay" annotation (Placement(transformation(extent={{-60,-40},{-40,-20}}))); Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai1( final k=0.45) - "Calculate the product of 0.45 and the output of div2" + "Block that calculates the product of the two inputs" annotation (Placement(transformation(extent={{-20,-40},{0,-20}}))); Buildings.Controls.OBC.CDL.Continuous.Multiply mul - "Calcualte the sum of the output of addPar and the output of div1" + "Block that calculates the sum of the two inputs" annotation (Placement(transformation(extent={{60,-10},{80,10}}))); equation @@ -84,7 +85,7 @@ First implementation

                    This block calculates the control gain of a PID model.

                    Main equations

                    -The main equations is +The main equation is

                    k = 1/kp + (0.2 + 0.45 T/L), @@ -94,12 +95,6 @@ where kp is the gain of the first-order time-delayed mod T is the time constant of the first-order time-delayed model, and L is the time delay of the first-order time-delayed model.

                    -

                    Validation

                    -

                    -This block was validated analytically, see - -Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDGain. -

                    References

                    Åström, Karl Johan and Tore Hägglund (2004) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo index a1ff7ab95c6..b8d00bf80ee 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo @@ -20,29 +20,30 @@ block PIDIntegralTime "Identify the integral time of a PID controller" min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Time constant signal for the integral term" annotation (Placement(transformation(extent={{100,-20},{140,20}}))); +protected Buildings.Controls.OBC.CDL.Continuous.Add add1 - "Calculate the sum of the time delay and the product of 0.1 and the input time constant" + "Block that calculates the sum of the time delay and the product of 0.1 and the input time constant" annotation (Placement(transformation(extent={{-20,-40},{0,-20}}))); Buildings.Controls.OBC.CDL.Continuous.Add add2 - "Calculate the sum of the output of gai1 and the product of 0.8 and the input time constant" + "Block that calculates the sum of the output of gai1 and the product of 0.8 and the input time constant" annotation (Placement(transformation(extent={{-20,10},{0,30}}))); Buildings.Controls.OBC.CDL.Continuous.Divide div - "Calculate the output of add3 divided by the output of add1" + "Block that calculates the input 1 divided by the input 2" annotation (Placement(transformation(extent={{20,-10},{40,10}}))); Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai1( final k=0.4) - "Calculate the product of 0.4 and the time delay" + "Block that calculates the product of 0.4 and the time delay" annotation (Placement(transformation(extent={{-80,-20},{-60,0}}))); Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai2( final k=0.8) - "Calculate the product of 0.8 and the input time constant" + "Block that calculates the product of 0.8 and the input time constant" annotation (Placement(transformation(extent={{-80,50},{-60,70}}))); Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai3( final k=0.1) - "Calculate the product of 0.1 and the input time constant" + "Block that calculates the product of 0.1 and the input time constant" annotation (Placement(transformation(extent={{-80,10},{-60,30}}))); Buildings.Controls.OBC.CDL.Continuous.Multiply mul - "Calculate the product of the output of div and the time delay" + "Block that calculates the two inputs" annotation (Placement(transformation(extent={{60,-10},{80,10}}))); equation @@ -93,7 +94,7 @@ First implementation

                    This block calculates the integral time of a PID model.

                    Main equations

                    -The main equations is +The main equation is

                    Ti = L (0.4 L + 0.8 T)/(L + 0.1 T), @@ -102,12 +103,6 @@ Ti = L (0.4 L + 0.8 T)/(L + 0.1 T), where T is the time constant of the first-order time-delayed model and L is the time delay of the first-order time-delayed model.

                    -

                    Validation

                    -

                    -This block was validated analytically, see - -Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDIntegralTime. -

                    References

                    Åström, Karl Johan and Tore Hägglund (2004) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo index e3adfa88e2f..1d001af242c 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo @@ -22,6 +22,7 @@ block PIGain "Identify the control gain of a PI controller" Buildings.Controls.OBC.CDL.Interfaces.RealOutput k "Control gain of a PI controller" annotation (Placement(transformation(extent={{100,-20},{140,20}}))); +protected Buildings.Controls.OBC.CDL.Continuous.Add add1 "Calculate the sum of the time constant and the time delay" annotation (Placement(transformation(extent={{-60,-40},{-40,-20}}))); @@ -35,28 +36,28 @@ block PIGain "Identify the control gain of a PI controller" "Constant parameter 2 (value 0.15)" annotation (Placement(transformation(extent={{-80,70},{-60,90}}))); Buildings.Controls.OBC.CDL.Continuous.Divide div1 - "Calculate 0.15 divided by the control gain" + "Block that calculates 0.15 divided by the control gain" annotation (Placement(transformation(extent={{-40,40},{-20,60}}))); Buildings.Controls.OBC.CDL.Continuous.Divide div2 - "Calculate the output of mul2 divided by the output of mul1" + "Block that calculates the input 1 divided by the input 2" annotation (Placement(transformation(extent={{20,-60},{40,-40}}))); Buildings.Controls.OBC.CDL.Continuous.Divide div3 - "Calculate the time constant divided by the output of mul2" + "Block that calculates the input 1 divided by the input 2" annotation (Placement(transformation(extent={{-20,0},{0,20}}))); Buildings.Controls.OBC.CDL.Continuous.Multiply mul1 - "Calculate the square value of the sum of the time constant and the time delay" + "Block that calculates the square value of the sum of the time constant and the time delay" annotation (Placement(transformation(extent={{-20,-40},{0,-20}}))); Buildings.Controls.OBC.CDL.Continuous.Multiply mul2 - "Calculate the product of the gain and the time delay" + "Block that calculates the product of the two inputs" annotation (Placement(transformation(extent={{-60,10},{-40,30}}))); Buildings.Controls.OBC.CDL.Continuous.Multiply mul3 - "Calculate the product of the output of sub and the output of div3" + "Block that calculates the product of the two inputs" annotation (Placement(transformation(extent={{20,-10},{40,10}}))); Buildings.Controls.OBC.CDL.Continuous.Multiply mul4 - "Calculate the product of the time constant times the time delay" + "Block that calculates the product of the two inputs" annotation (Placement(transformation(extent={{-60,-80},{-40,-60}}))); Buildings.Controls.OBC.CDL.Continuous.Subtract sub - "Calculate the difference between 0.35 and the output of div2" + "Block that calculates the difference between the two inputs" annotation (Placement(transformation(extent={{60,-54},{80,-34}}))); equation @@ -125,7 +126,7 @@ First implementation

                    This block calculates the control gain of a PI model, k

                    Main equations

                    -The main equations is +The main equation is

                    k = 0.15/kp + (0.35-LT/(L+T)2)(T/kp/L), @@ -135,12 +136,6 @@ where kp is the gain of the first-order time-delayed mod T is the time constant of the first-order time-delayed model, and L is the time delay of the first-order time-delayed model.

                    -

                    Validation

                    -

                    -This block was validated analytically, see - -Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIGain. -

                    References

                    Garpinger, Olof, Tore Hägglund, and Karl Johan Åström (2014) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo index 085449273cc..a6fb5e22e2e 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo @@ -21,41 +21,42 @@ block PIIntegralTime "Identify the integral time of a PI controller" "Time constant for the integral term" annotation (Placement(transformation(extent={{100,-20},{140,20}}), iconTransformation(extent={{100,-20},{140,20}}))); +protected Buildings.Controls.OBC.CDL.Continuous.Add add1 - "Calculate the sum of the output of mul3 and the output of gai1" + "Block that calculates the sum of the two inputs" annotation (Placement(transformation(extent={{0,44},{20,64}}))); Buildings.Controls.OBC.CDL.Continuous.Add add2 - "Calculate the sum of 0.35 and the output of div" + "Block that calculates the sum of the two inputs" annotation (Placement(transformation(extent={{60,-10},{80,10}}))); Buildings.Controls.OBC.CDL.Continuous.Add add3 - "Calculate the sum of the output of add1 and the output of mul2" + "Block that calculates the sum of the two inputs" annotation (Placement(transformation(extent={{60,-54},{80,-34}}))); Buildings.Controls.OBC.CDL.Continuous.Divide div - "Calculate the output of gai3 divided by the output of add3" + "Block that calculates the input 1 divided by input 2" annotation (Placement(transformation(extent={{0,-4},{20,16}}))); Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai1(final k=12) - "Mutiple the time delay by 12" + "Block that mutiples the time delay by 12" annotation (Placement(transformation(extent={{-40,-70},{-20,-50}}))); Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai2(final k=7) - "Mutiple the time delay by 7" + "Block that mutiples the time delay by 7" annotation (Placement(transformation(extent={{-80,-90},{-60,-70}}))); Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai3(final k=13) - "Mutiple the output of mul3 by 13" + "Block that mutiples the output of mul3 by 13" annotation (Placement(transformation(extent={{-20,70},{-40,90}}))); Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai4(final k=0.35) - "Mutiple the time delay by 0.35" + "Block that mutiples the time delay by 0.35" annotation (Placement(transformation(extent={{-80,-30},{-60,-10}}))); Buildings.Controls.OBC.CDL.Continuous.Multiply mul1 - "Calculate the product of the input time constant and the output of gai1" + "Block that calculates the product of the two inputs" annotation (Placement(transformation(extent={{-40,20},{-20,40}}))); Buildings.Controls.OBC.CDL.Continuous.Multiply mul2 - "Calculate the product of the time delay and the output of gai2" + "Block that calculates the product of the two inputs" annotation (Placement(transformation(extent={{0,-60},{20,-40}}))); Buildings.Controls.OBC.CDL.Continuous.Multiply mul3 - "Calculate the square value of the input time constant" + "Block that calculates the square value of the input time constant" annotation (Placement(transformation(extent={{-60,50},{-40,70}}))); Buildings.Controls.OBC.CDL.Continuous.Multiply mul4 - "Calculate the product of the output of the gai3 and the time delay" + "Block that calculates the product of the two inputs" annotation (Placement(transformation(extent={{-80,2},{-60,22}}))); equation @@ -123,7 +124,7 @@ First implementation

                    This block calculates the integral time of a PI model

                    Main equations

                    -The main equations is +The main equation is

                    Ti = 0.35 L + 13 L T2/(T2 + 12 L T + 7 L2), @@ -132,12 +133,6 @@ Ti = 0.35 L + 13 L T2/(T2 + 12 L T + 7 L2< where T is the time constant of the first-order time-delayed model and L is the time delay of the first-order time-delayed model.

                    -

                    Validation

                    -

                    -This block was validated analytically, see - -Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIIntegralTime. -

                    References

                    Garpinger, Olof, Tore Hägglund, and Karl Johan Åström (2014) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo index fa43496df18..e60d0723c60 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo @@ -1,24 +1,30 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation; -model PI "Test model for PI" +model PI "Test model for calculating parameters of a PI controller" Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PI PI - "Calculate the parameters for a PI controller" + "Blocks that calculates the control gain and the integral time" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable RefDat(table=[0,1,0.5, - 0.3,0.343,0.469; 0.1,1.1,0.55,0.33,0.312,0.516; 0.2,1.2,0.6,0.36,0.286,0.563; - 0.3,1.3,0.65,0.39,0.264,0.609;0.4,1.4,0.7, 0.42,0.245,0.656; 0.5,1.5, - 0.75,0.45,0.228,0.703; 0.6,1.6,0.8,0.48,0.214,0.75; 0.7,1.7, 0.85,0.51,0.202,0.797; - 0.8,1.8,0.9,0.54,0.19,0.844; 0.9,1.9, 0.95,0.57,0.18,0.891; 1,2,1,0.6,0.171,0.938], - extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) - "Data for validating the PI block" - annotation (Placement(transformation(extent={{-58,-10},{-38,10}}))); - + Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp kp( + duration=1, + offset=1, + height=1) "Gain of a first order time-delayed model" + annotation (Placement(transformation(extent={{-60,22},{-40,42}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp T( + duration=1, + offset=0.5, + height=0.5) "Time constant of a first order time-delayed model" + annotation (Placement(transformation(extent={{-60,-20},{-40,0}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp L( + duration=1, + offset=0.3, + height=0.3) "Time delay of a first order time-delayed model" + annotation (Placement(transformation(extent={{-60,-60},{-40,-40}}))); equation - connect(RefDat.y[1], PI.kp) annotation (Line(points={{-36,0},{-20,0},{-20,6}, - {-12,6}}, color={0,0,127})); - connect(PI.T, RefDat.y[2]) - annotation (Line(points={{-12,0},{-36,0}}, color={0,0,127})); - connect(PI.L, RefDat.y[3]) annotation (Line(points={{-12,-6},{-20,-6},{-20,0}, - {-36,0}}, color={0,0,127})); + connect(L.y, PI.L) annotation (Line(points={{-38,-50},{-20,-50},{-20,-6},{-12, + -6}}, color={0,0,127})); + connect(T.y, PI.T) annotation (Line(points={{-38,-10},{-26,-10},{-26,0},{-12,0}}, + color={0,0,127})); + connect(kp.y, PI.kp) annotation (Line(points={{-38,32},{-20,32},{-20,6},{-12,6}}, + color={0,0,127})); annotation ( experiment( StopTime=1.0, @@ -56,7 +62,8 @@ Validation test for the block Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PI.

                    -The reference data is imported from a raw data that is generated with a Python implementation of this block. +The input kp varies from 1 to 2, input T varies from 0.5 to 1, +input L varies from 0.3 to 0.6.

                    ")); end PI; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo index 936c68bd4e0..4009c70574e 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo @@ -1,26 +1,30 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation; -model PID "Test model for PID" +model PID "Test model for calculating parameters of a PID controller" Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PID PID - "Calculate the parameters for a PI controller" + "Blocks that calculates the control gain, the integral time, and the derivative time" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable RefDat(table=[0,1,0.5, - 0.3,0.95,0.446,0.127; 0.1,1.1, 0.55,0.33,0.864,0.49,0.14; 0.2,1.2, - 0.6,0.36,0.792,0.535,0.153; 0.3,1.3, 0.65,0.39,0.731,0.579,0.165; - 0.4,1.4,0.7,0.42,0.679,0.624,0.178; 0.5,1.5,0.75,0.45,0.633,0.669,0.191; - 0.6,1.6,0.8,0.48,0.594,0.713,0.203; 0.7,1.7,0.85,0.51,0.559,0.758,0.216; - 0.8,1.8,0.9,0.54,0.528,0.802,0.229; 0.9,1.9,0.95,0.57,0.5, - 0.847,0.242; 1,2,1,0.6,0.475,0.891,0.254], extrapolation= - Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) - "Data for validating the PIDDerivativeTime block" - annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); - + Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp kp( + duration=1, + offset=1, + height=1) "Gain of a first order time-delayed model" + annotation (Placement(transformation(extent={{-60,20},{-40,40}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp T( + duration=1, + offset=0.5, + height=0.5) "Time constant of a first order time-delayed model" + annotation (Placement(transformation(extent={{-60,-20},{-40,0}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp L( + duration=1, + offset=0.3, + height=0.3) "Time delay of a first order time-delayed model" + annotation (Placement(transformation(extent={{-60,-60},{-40,-40}}))); equation - connect(PID.kp, RefDat.y[1]) annotation (Line(points={{-12,6},{-20,6},{-20,0}, - {-38,0}}, color={0,0,127})); - connect(PID.T, RefDat.y[2]) - annotation (Line(points={{-12,0},{-38,0}}, color={0,0,127})); - connect(PID.L, RefDat.y[3]) annotation (Line(points={{-12,-6},{-20,-6},{-20,0}, - {-38,0}}, color={0,0,127})); + connect(kp.y, PID.kp) annotation (Line(points={{-38,30},{-20,30},{-20,6},{-12, + 6}}, color={0,0,127})); + connect(T.y, PID.T) annotation (Line(points={{-38,-10},{-20,-10},{-20,0},{-12, + 0}}, color={0,0,127})); + connect(PID.L, L.y) annotation (Line(points={{-12,-6},{-16,-6},{-16,-50},{-38, + -50}}, color={0,0,127})); annotation ( experiment( StopTime=1.0, @@ -58,7 +62,8 @@ Validation test for the block Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PID.

                    -The reference data is imported from a raw data that is generated with a Python implementation of this block. +The input kp varies from 1 to 2, input T varies from 0.5 to 1, +input L varies from 0.3 to 0.6.

                    ")); end PID; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mo index fef874c95d5..fe5e6d08d91 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mo @@ -1,24 +1,23 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation; -model PIDDerivativeTime "Test model for PIDDerivativeTime" +model PIDDerivativeTime "Test model for calculating the integral time for a PID controller" Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIDDerivativeTime - PIDDerTim "Calculate the integral time for a PI controller" + PIDDerTim "Blocks that calculates the integral time" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable RefDat(table=[0,1,0.5, - 0.3,0.95,0.446,0.127; 0.1,1.1,0.55,0.33,0.864,0.49,0.14; 0.2,1.2, - 0.6,0.36,0.792,0.535,0.153; 0.3,1.3,0.65,0.39,0.731,0.579,0.165; - 0.4,1.4,0.7,0.42,0.679,0.624,0.178; 0.5,1.5,0.75,0.45,0.633,0.669,0.191; - 0.6,1.6,0.8,0.48,0.594,0.713,0.203; 0.7,1.7,0.85,0.51,0.559,0.758,0.216; - 0.8,1.8,0.9,0.54,0.528,0.802,0.229; 0.9,1.9,0.95,0.57,0.5,0.847,0.242; - 1,2,1,0.6,0.475,0.891,0.254], extrapolation= - Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) - "Data for validating the PIDDerivativeTime block" - annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); - + Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp T( + duration=1, + offset=0.5, + height=0.5) "Time constant of a first order time-delayed model" + annotation (Placement(transformation(extent={{-60,10},{-40,30}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp L( + duration=1, + offset=0.3, + height=0.3) "Time delay of a first order time-delayed model" + annotation (Placement(transformation(extent={{-60,-30},{-40,-10}}))); equation - connect(PIDDerTim.T, RefDat.y[2]) annotation (Line(points={{-12,6},{-20,6},{-20, - 0},{-38,0}}, color={0,0,127})); - connect(PIDDerTim.L, RefDat.y[3]) annotation (Line(points={{-12,-6},{-20,-6}, - {-20,0},{-38,0}}, color={0,0,127})); + connect(T.y, PIDDerTim.T) annotation (Line(points={{-38,20},{-20,20},{-20,6},{ + -12,6}}, color={0,0,127})); + connect(L.y, PIDDerTim.L) annotation (Line(points={{-38,-20},{-20,-20},{-20,-6}, + {-12,-6}}, color={0,0,127})); annotation ( experiment( StopTime=1.0, @@ -56,7 +55,8 @@ Validation test for the block Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIDDerivativeTime.

                    -The reference data is imported from a raw data that is generated with a Python implementation of this block. +The input input T varies from 0.5 to 1, +input L varies from 0.3 to 0.6.

                    ")); end PIDDerivativeTime; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mo index e5ed06a7763..d0cf0a72582 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mo @@ -1,26 +1,30 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation; -model PIDGain "Test model for PIDGain" +model PIDGain "Test model for calculating the control gain for a PID controller" Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIDGain PIDGai - "Calculate the control gain for a PID controller" + "Blocks that calculates the control gain" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable RefDat(table=[0,1,0.5, - 0.3,0.95,0.446,0.127; 0.1,1.1,0.55,0.33,0.864,0.49,0.14; 0.2,1.2, - 0.6,0.36,0.792,0.535,0.153; 0.3,1.3, 0.65,0.39,0.731,0.579,0.165; - 0.4,1.4,0.7,0.42,0.679,0.624,0.178; 0.5,1.5,0.75,0.45,0.633,0.669,0.191; - 0.6,1.6,0.8,0.48,0.594,0.713,0.203; 0.7,1.7,0.85,0.51,0.559,0.758,0.216; - 0.8,1.8,0.9,0.54,0.528,0.802,0.229; 0.9,1.9,0.95,0.57,0.5, - 0.847,0.242; 1,2,1,0.6,0.475,0.891,0.254], extrapolation= - Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) - "Data for validating the PIDGain block" - annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); - + Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp kp( + duration=1, + offset=1, + height=1) "Gain of a first order time-delayed model" + annotation (Placement(transformation(extent={{-60,20},{-40,40}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp T( + duration=1, + offset=0.5, + height=0.5) "Time constant of a first order time-delayed model" + annotation (Placement(transformation(extent={{-60,-20},{-40,0}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp L( + duration=1, + offset=0.3, + height=0.3) "Time delay of a first order time-delayed model" + annotation (Placement(transformation(extent={{-60,-60},{-40,-40}}))); equation - connect(RefDat.y[1], PIDGai.kp) annotation (Line(points={{-38,0},{-20,0},{-20, - 6},{-12,6}}, color={0,0,127})); - connect(PIDGai.T, RefDat.y[2]) - annotation (Line(points={{-12,0},{-38,0}}, color={0,0,127})); - connect(PIDGai.L, RefDat.y[3]) annotation (Line(points={{-12,-6},{-20,-6},{-20, - 0},{-38,0}}, color={0,0,127})); + connect(kp.y, PIDGai.kp) annotation (Line(points={{-38,30},{-20,30},{-20,6},{-12, + 6}}, color={0,0,127})); + connect(T.y, PIDGai.T) annotation (Line(points={{-38,-10},{-20,-10},{-20,0},{-12, + 0}}, color={0,0,127})); + connect(PIDGai.L, L.y) annotation (Line(points={{-12,-6},{-18,-6},{-18,-50},{-38, + -50}}, color={0,0,127})); annotation ( experiment( StopTime=1.0, @@ -58,7 +62,8 @@ Validation test for the block Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIDGain.

                    -The reference data is imported from a raw data that is generated with a Python implementation of this block. +The input kp varies from 1 to 2, input T varies from 0.5 to 1, +input L varies from 0.3 to 0.6.

                    ")); end PIDGain; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mo index a8eb76961ba..394b3f1066e 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mo @@ -1,24 +1,23 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation; -model PIDIntegralTime "Test model for PIDIntergralTime" +model PIDIntegralTime "Test model for calculating the integral time for a PID controller" Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIDIntegralTime - PIDIntTim "Calculate the integral time for a PID controller" + PIDIntTim "Blocks that calculates the integral time" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable RefDat(table=[0,1,0.5, - 0.3,0.95,0.446,0.127; 0.1,1.1,0.55,0.33,0.864,0.49,0.14; 0.2,1.2, - 0.6,0.36,0.792,0.535,0.153; 0.3,1.3, 0.65,0.39,0.731,0.579,0.165; - 0.4,1.4,0.7,0.42,0.679,0.624,0.178; 0.5,1.5,0.75,0.45,0.633,0.669,0.191; - 0.6,1.6,0.8,0.48,0.594,0.713,0.203; 0.7,1.7,0.85,0.51,0.559,0.758,0.216; - 0.8,1.8,0.9,0.54,0.528,0.802,0.229; 0.9,1.9,0.95,0.57,0.5, 0.847,0.242; - 1,2,1,0.6,0.475,0.891,0.254], extrapolation= - Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) - "Data for validating the PIDIntegralTime block" - annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); - + Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp T( + duration=1, + offset=0.5, + height=0.5) "Time constant of a first order time-delayed model" + annotation (Placement(transformation(extent={{-60,10},{-40,30}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp L( + duration=1, + offset=0.3, + height=0.3) "Time delay of a first order time-delayed model" + annotation (Placement(transformation(extent={{-60,-30},{-40,-10}}))); equation - connect(RefDat.y[2], PIDIntTim.T) annotation (Line(points={{-38,0},{-20,0},{-20, - 6},{-12,6}}, color={0,0,127})); - connect(PIDIntTim.L, RefDat.y[3]) annotation (Line(points={{-12,-6},{-20,-6}, - {-20,0},{-38,0}}, color={0,0,127})); + connect(T.y, PIDIntTim.T) annotation (Line(points={{-38,20},{-20,20},{-20,6},{ + -12,6}}, color={0,0,127})); + connect(L.y, PIDIntTim.L) annotation (Line(points={{-38,-20},{-20,-20},{-20,-6}, + {-12,-6}}, color={0,0,127})); annotation ( experiment( StopTime=1.0, @@ -56,7 +55,8 @@ Validation test for the block Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIDIntegralTime.

                    -The reference data is imported from a raw data that is generated with a Python implementation of this block. +The input input T varies from 0.5 to 1, +input L varies from 0.3 to 0.6.

                    ")); end PIDIntegralTime; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mo index 4c8913315e9..f3c5ac7881f 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mo @@ -1,25 +1,30 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation; -model PIGain "Test model for PIGain" - Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable RefDat(table=[0,1,0.5, - 0.3,0.343,0.469; 0.1,1.1,0.55,0.33,0.312,0.516; 0.2,1.2,0.6,0.36,0.286,0.563; - 0.3,1.3,0.65,0.39,0.264,0.609; 0.4,1.4,0.7,0.42,0.245,0.656; 0.5,1.5, - 0.75,0.45,0.228,0.703; 0.6,1.6,0.8,0.48,0.214,0.75; 0.7,1.7, - 0.85,0.51,0.202,0.797; 0.8,1.8,0.9,0.54,0.19,0.844; 0.9,1.9, - 0.95,0.57,0.18,0.891; 1,2,1,0.6,0.171,0.938], - extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) - "Data for validating the PIgain block" - annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); +model PIGain "Test model for calculating the gain for a PI controller" Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIGain PIGai - "Calculate the gain for a PI controller" + "Blocks that calculates the gain" annotation (Placement(transformation(extent={{-8,-10},{12,10}}))); - + Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp kp( + duration=1, + offset=1, + height=1) "Gain of a first order time-delayed model" + annotation (Placement(transformation(extent={{-60,20},{-40,40}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp T( + duration=1, + offset=0.5, + height=0.5) "Time constant of a first order time-delayed model" + annotation (Placement(transformation(extent={{-60,-20},{-40,0}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp L( + duration=1, + offset=0.3, + height=0.3) "Time delay of a first order time-delayed model" + annotation (Placement(transformation(extent={{-60,-60},{-40,-40}}))); equation - connect(PIGai.kp, RefDat.y[1]) annotation (Line(points={{-10,6},{-26,6},{-26, - 0},{-38,0}}, color={0,0,127})); - connect(PIGai.T, RefDat.y[2]) - annotation (Line(points={{-10,0},{-38,0}}, color={0,0,127})); - connect(PIGai.L, RefDat.y[3]) annotation (Line(points={{-10,-6},{-26,-6},{-26, - 0},{-38,0}}, color={0,0,127})); + connect(L.y, PIGai.L) annotation (Line(points={{-38,-50},{-20,-50},{-20,-6},{-10, + -6}}, color={0,0,127})); + connect(T.y, PIGai.T) annotation (Line(points={{-38,-10},{-28,-10},{-28,0},{-10, + 0}}, color={0,0,127})); + connect(kp.y, PIGai.kp) annotation (Line(points={{-38,30},{-20,30},{-20,6},{-10, + 6}}, color={0,0,127})); annotation ( experiment( StopTime=1.0, @@ -57,7 +62,8 @@ Validation test for the block Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIGain.

                    -The reference data is imported from a raw data that is generated with a Python implementation of this block. +The input kp varies from 1 to 2, input T varies from 0.5 to 1, +input L varies from 0.3 to 0.6.

                    ")); end PIGain; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mo index 35e819aae10..1e2fdf36ebc 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mo @@ -1,23 +1,23 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation; -model PIIntegralTime "Test model for PIIntergralTime" +model PIIntegralTime "Test model for calculating the integral time for a PI controller" Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIIntegralTime - PIIntTim "Calculate the integral time for a PI controller" + PIIntTim "Block that calculates the integral time" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable RefDat(table=[0,1,0.5, - 0.3,0.343,0.469; 0.1,1.1,0.55,0.33,0.312,0.516; 0.2,1.2,0.6,0.36,0.286,0.563; - 0.202,1.202,0.601,0.361,0.285,0.564; 0.3,1.3,0.65,0.39, - 0.264,0.609; 0.4,1.4,0.7,0.42,0.245,0.656; 0.5,1.5,0.75,0.45,0.228,0.703; - 0.6,1.6,0.8,0.48,0.214,0.75; 0.7,1.7,0.85,0.51,0.202,0.797; 0.8,1.8,0.9, - 0.54,0.19,0.844; 0.9,1.9,0.95,0.57,0.18,0.891; 1,2,1,0.6,0.171,0.938], - extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) - "Data for validating the pIIntegralTime block" - annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); - + Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp T( + duration=1, + offset=0.5, + height=0.5) "Time constant of a first order time-delayed model" + annotation (Placement(transformation(extent={{-60,10},{-40,30}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp L( + duration=1, + offset=0.3, + height=0.3) "Time delay of a first order time-delayed model" + annotation (Placement(transformation(extent={{-60,-30},{-40,-10}}))); equation - connect(RefDat.y[2], PIIntTim.T) annotation (Line(points={{-38,0},{-20,0},{-20, - 6},{-12,6}}, color={0,0,127})); - connect(PIIntTim.L, RefDat.y[3]) annotation (Line(points={{-12,-6},{-20,-6},{ - -20,0},{-38,0}}, color={0,0,127})); + connect(T.y, PIIntTim.T) annotation (Line(points={{-38,20},{-20,20},{-20,6},{-12, + 6}}, color={0,0,127})); + connect(L.y, PIIntTim.L) annotation (Line(points={{-38,-20},{-20,-20},{-20,-6}, + {-12,-6}}, color={0,0,127})); annotation ( experiment( StopTime=1.0, @@ -55,7 +55,8 @@ Validation test for the block Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIIntegralTime.

                    -The reference data is imported from a raw data that is generated with a Python implementation of this block. +The input input T varies from 0.5 to 1, +input L varies from 0.3 to 0.6.

                    ")); end PIIntegralTime; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo index 1dec63cf83e..efa8c6c2b5a 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo @@ -15,6 +15,9 @@ block Controller "Measurement input signal" annotation (Placement(transformation(origin={0,-120},extent={{20,-20},{-20,20}},rotation=270), iconTransformation(extent={{20,-20},{-20,20}},rotation=270,origin={0,-120}))); + Buildings.Controls.OBC.CDL.Interfaces.BooleanInput trigger + "Resets the controller output when trigger becomes true" + annotation (Placement(transformation(extent={{-20,-20},{20,20}},rotation=90,origin={-80,-120}), iconTransformation(extent={{-20,-20},{20,20}},rotation=90,origin={-60,-120}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput y "Control output" annotation (Placement(transformation(extent={{100,40},{140,80}}))); @@ -25,9 +28,9 @@ block Controller "Control error" annotation (Placement(transformation(extent={{100,0},{140,40}}), iconTransformation(extent={{100,-20},{140,20}}))); +protected Buildings.Controls.OBC.CDL.Logical.OnOffController greMeaSet( - final bandwidth=deaBan*2, - final pre_y_start=true) + final bandwidth=deaBan*2, final pre_y_start=true) "Check if the measured value is larger than the reference, by default the relay control is on" annotation (Placement(transformation(extent={{-20,-10},{0,10}}))); Buildings.Controls.OBC.CDL.Continuous.Switch swi @@ -44,7 +47,11 @@ block Controller Buildings.Controls.OBC.CDL.Continuous.Subtract conErr "Control error (set point - measurement)" annotation (Placement(transformation(extent={{-60,10},{-40,30}}))); - + Buildings.Controls.OBC.CDL.Continuous.Switch swi1 + "Switch between a higher value and a lower value" + annotation (Placement(transformation(extent={{10,-10},{-10,10}}, + rotation=-90, + origin={-48,-48}))); initial equation assert( yHig-yLow>1E-6, @@ -56,9 +63,6 @@ equation annotation (Line(points={{82,0},{88,0},{88,60},{120,60}}, color={0,0,127})); connect(greMeaSet.reference, u_s) annotation (Line(points={{-22,6},{-40,6},{-40,0},{-120,0}}, color={0,0,127})); - connect(greMeaSet.u, u_m) - annotation (Line(points={{-22,-6},{-70,-6},{-70,-94},{0,-94},{0,-120}}, - color={0,0,127})); connect(higVal.y, swi.u1) annotation (Line(points={{2,60},{20,60},{20,8},{58,8}}, color={0,0,127})); connect(lowVal.y, swi.u3) annotation (Line(points={{2,-40},{20,-40},{20,-8},{58, @@ -69,10 +73,18 @@ equation color={0,0,127})); connect(greMeaSet.y, swi.u2) annotation (Line(points={{2,0},{58,0}}, color={255,0,255})); - connect(conErr.u1, u_m) annotation (Line(points={{-62,26},{-70,26},{-70,-94}, - {0,-94},{0,-120}}, color={0,0,127})); connect(conErr.u2, u_s) annotation (Line(points={{-62,14},{-80,14},{-80,0},{ -120,0}}, color={0,0,127})); + connect(swi1.u2, trigger) annotation (Line(points={{-48,-60},{-48,-80},{-80, + -80},{-80,-120}}, color={255,0,255})); + connect(swi1.y, greMeaSet.u) + annotation (Line(points={{-48,-36},{-48,-6},{-22,-6}}, color={0,0,127})); + connect(swi1.u1, u_m) annotation (Line(points={{-40,-60},{-40,-80},{0,-80},{0, + -120}}, color={0,0,127})); + connect(swi1.u3, u_s) annotation (Line(points={{-56,-60},{-56,-70},{-80,-70}, + {-80,0},{-120,0}}, color={0,0,127})); + connect(conErr.u1, greMeaSet.u) annotation (Line(points={{-62,26},{-94,26},{ + -94,-20},{-48,-20},{-48,-6},{-22,-6}}, color={0,0,127})); annotation (defaultComponentName = "relCon", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( @@ -87,19 +99,22 @@ equation coordinateSystem(preserveAspectRatio=false)), Documentation(info="

                    -This block grenerates a real control output y, a +This block generates a real control output y, a boolean control switch output yOn, and the control error -yErr. They are calcuated as below: +yErr. They are calculated as below:

                    • yErr = us(t) - um(t),
                    • -if yErr < - δ, then y(t) = yhig, yOn(t) = true, +if yErr < - δ and trigger is true, then y(t) = yhig, yOn(t) = true, +
                    • +
                    • +if yErr > δ and trigger is true, then y(t) = -ylow, yOn(t) = false,
                    • -if yErr > δ, then y(t) = -ylow, yOn(t) = false, +else, y(t) and yOn(t) are kept unchanged,

                    where δ is a dead band, yhig diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo index 20f3aa36270..02169c9466b 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo @@ -27,6 +27,7 @@ block HalfPeriodRatio "A boolean signal, true if the tuning completes" annotation (Placement(transformation(extent={{100,-50},{140,-10}}), iconTransformation(extent={{100,-80},{140,-40}}))); +protected Buildings.Controls.OBC.CDL.Continuous.Min tMin "Minimum value of the length for the on and off period " annotation (Placement(transformation(extent={{-80,30},{-60,50}}))); @@ -39,41 +40,41 @@ block HalfPeriodRatio annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler tOnSam(final y_start= Buildings.Controls.OBC.CDL.Constants.eps) - "Sample tOn when the tuning period ends" + "Block that samples tOn when the tuning period ends" annotation (Placement(transformation(extent={{-80,70},{-60,90}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler tOffSam(final y_start= Buildings.Controls.OBC.CDL.Constants.eps) - "Sample tOff when the tuning period ends" + "Block that samples tOff when the tuning period ends" annotation (Placement(transformation(extent={{-80,-60},{-60,-80}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samAddtOntOff - "Sample the tmin when tmin is larger than 0" + "Block that samples the tmin when tmin is larger than 0" annotation (Placement(transformation(extent={{20,30},{40,10}}))); Buildings.Controls.OBC.CDL.Continuous.Greater tInc - "Check if either the length for the on period or the length for the off period increases after they both becomes positive" + "Block that checks if either the length for the on period or the length for the off period increases after they both becomes positive" annotation (Placement(transformation(extent={{30,-40},{50,-20}}))); Buildings.Controls.OBC.CDL.Continuous.Min mintOntOff - "Find the smaller one between the length for the on period and the length for the off period" + "Block that finds the smaller one between the length for the on period and the length for the off period" annotation (Placement(transformation(extent={{-20,-80},{0,-60}}))); Buildings.Controls.OBC.CDL.Continuous.Max maxtOntOff - "Find the larger one between the length for the on period and the length for the off period" + "Block that finds the larger one between the length for the on period and the length for the off period" annotation (Placement(transformation(extent={{-20,70},{0,90}}))); Buildings.Controls.OBC.CDL.Continuous.Divide halPerRat - "Calculate the half period ratio" + "Block that calculates the half period ratio" annotation (Placement(transformation(extent={{60,70},{80,90}}))); Buildings.Controls.OBC.CDL.Continuous.Add addtOntOff - "Calculate the sum of the length for the on period and the length for the off period" + "Block that calculates the sum of the length for the on period and the length for the off period" annotation (Placement(transformation(extent={{-80,-40},{-60,-20}}))); Buildings.Controls.OBC.CDL.Continuous.Multiply mul - "Detect if the the length for the on period or the length for the off period changes after both of them are larger than 0" + "Block that detects if the the length for the on period or the length for the off period changes after both of them are larger than 0" annotation (Placement(transformation(extent={{-34,-40},{-14,-20}}))); Buildings.Controls.OBC.CDL.Continuous.Greater gretmaxtOntOff - "Check if either the length for the on period or the length for the off period is larger than 0" + "Block that checks if either the length for the on period or the length for the off period is larger than 0" annotation (Placement(transformation(extent={{-20,10},{0,-10}}))); Buildings.Controls.OBC.CDL.Continuous.Less tDec - "Check if either the length for the on period or the length for the off period decreases after they both becomes positive" + "Block that checks if either the length for the on period or the length for the off period decreases after they both becomes positive" annotation (Placement(transformation(extent={{30,-90},{50,-70}}))); Buildings.Controls.OBC.CDL.Logical.Or tCha - "Check if the length for the on period or the length for the off period changes" + "Block that checks if the length for the on period or the length for the off period changes" annotation (Placement(transformation(extent={{70,-40},{90,-20}}))); equation @@ -190,7 +191,7 @@ The algorithm for calculating ρ is as follows:

                    Step 1: detects when the tuning period begins.

                    The tuning period is triggered to begin when either ton -or toff are larger than 0. +or toff is larger than 0. In this implementation, we detect the beginning time by monitoring the sum of ton and toff.

                    @@ -200,8 +201,8 @@ are larger than 0.

                    We then record the value of the minimum value between (ton+toff)*min(ton,toff) -at the momement when both ton and toff -become postive. +at the moment when both ton and toff +become positive.

                    Step 3: detects when the tuning period ends.
                    @@ -210,7 +211,7 @@ The tuning period is triggered to end when either ton or toff changes after they become positive. In this implementation, we detect the end time by checking if the value of (ton+toff)*min(ton,toff) -is different from the output of step2. +is different from the output of step 2.

                    References

                    diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/NormalizedTimeDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/NormalizedTimeDelay.mo index 17f851ac506..914ab692487 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/NormalizedTimeDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/NormalizedTimeDelay.mo @@ -10,32 +10,34 @@ block NormalizedTimeDelay Buildings.Controls.OBC.CDL.Interfaces.RealOutput tau "Normalized time delay" annotation (Placement(transformation(extent={{100,-20},{140,20}}))); +protected Buildings.Controls.OBC.CDL.Continuous.AddParameter addPar1( final p=-1) - "Calculate the difference between gamma and 1" + "Block that calculates the difference between gamma and 1" annotation (Placement(transformation(extent={{-40,-20},{-20,0}}))); Buildings.Controls.OBC.CDL.Continuous.AddParameter addPar2( final p=0.65) - "Calculate the sum of the output of gai and 0.65" + "Block that calculates the sum of the two inputs" annotation (Placement(transformation(extent={{-40,-70},{-20,-50}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.Constant asyLev( final k=gamma) "Asymmetry level of the relay controller" annotation (Placement(transformation(extent={{-80,70},{-60,90}}))); - Buildings.Controls.OBC.CDL.Continuous.Divide div "Calculate the normalized time delay" + Buildings.Controls.OBC.CDL.Continuous.Divide div + "Block that calculates the normalized time delay" annotation (Placement(transformation(extent={{40,-10},{60,10}}))); Buildings.Controls.OBC.CDL.Continuous.Subtract subGamRho - "Calculate the difference between the asymmetry level of the relay controller and the half period ratio" + "Block that calculates the difference between the asymmetry level of the relay controller and the half period ratio" annotation (Placement(transformation(extent={{0,10},{20,30}}))); Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai( final k=0.35) "Gain for the half period ratio" annotation (Placement(transformation(extent={{-80,-70},{-60,-50}}))); Buildings.Controls.OBC.CDL.Continuous.Multiply mul - "Calculate the product of the output of addPar1 and that of addPar2" + "Block that calculates the product of the two inputs" annotation (Placement(transformation(extent={{0,-48},{20,-28}}))); Buildings.Controls.OBC.CDL.Utilities.Assert assMes( - final message="The asymmetry level should be larger than the half period ratio.") + final message="Increasing the asymmetry level to avoid negative values for the time delay.") "Error message when asymmetry level is less than the half period ratio" annotation (Placement(transformation(extent={{60,50},{80,70}}))); Buildings.Controls.OBC.CDL.Continuous.Greater gre( diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo index 42eee60d33b..41915085900 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo @@ -7,7 +7,7 @@ block OnOffPeriod "Simulation time" annotation (Placement(transformation(extent={{-140,20},{-100,60}}), iconTransformation(extent={{-140,40},{-100,80}}))); - Buildings.Controls.OBC.CDL.Interfaces.BooleanInput On + Buildings.Controls.OBC.CDL.Interfaces.BooleanInput on "Relay switch signal" annotation (Placement(transformation(extent={{-140,-90},{-100,-50}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); @@ -24,6 +24,7 @@ block OnOffPeriod min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Length for the on period" annotation (Placement(transformation(extent={{100,20},{140,60}}))); +protected Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler timOn "Simulation time when the input signal becomes on (True)" annotation (Placement(transformation(extent={{-50,30},{-30,50}}))); @@ -34,10 +35,10 @@ block OnOffPeriod "Relay switch off" annotation (Placement(transformation(extent={{-80,-80},{-60,-60}}))); Buildings.Controls.OBC.CDL.Continuous.Subtract lenOffCal - "Calculate the horizon length for the off period" + "Block that calculates the horizon length for the off period" annotation (Placement(transformation(extent={{10,-40},{30,-20}}))); Buildings.Controls.OBC.CDL.Continuous.Subtract lenOnCal - "Calculate the horizon length for the on period" + "Block that calculates the horizon length for the on period" annotation (Placement(transformation(extent={{10,30},{30,50}}))); Buildings.Controls.OBC.CDL.Continuous.Greater greTimOff "Trigger the action to record the horizon length for the off period" @@ -56,11 +57,11 @@ block OnOffPeriod annotation (Placement(transformation(extent={{70,50},{90,30}}))); equation - connect(Off.u, On) annotation (Line(points={{-82,-70},{-120,-70}}, + connect(Off.u,on) annotation (Line(points={{-82,-70},{-120,-70}}, color={255,0,255})); connect(Off.y, timOff.trigger) annotation (Line(points={{-58,-70},{-40,-70},{ -40,-52}}, color={255,0,255})); - connect(timOn.trigger, On) annotation (Line(points={{-40,28},{-40,20},{-90,20}, + connect(timOn.trigger,on) annotation (Line(points={{-40,28},{-40,20},{-90,20}, {-90,-70},{-120,-70}}, color={255,0,255})); connect(lenOffCal.u1, timOn.y) annotation (Line(points={{8,-24},{0,-24},{0,40}, {-28,40}}, color={0,0,127})); @@ -117,7 +118,7 @@ First implementation
                    ", info="

                    -This block processes a relay swtich output signal and calculates the length of +This block processes a relay switch output signal and calculates the length of the on period (when the relay switch signal becomes true), and the length of the off period (when the relay switch signal becomes false), respectively. diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo index 346b86cb6d3..c2ef09c737e 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo @@ -37,19 +37,20 @@ block ResponseProcess "A real signal of the normalized time delay" annotation (Placement(transformation(extent={{100,-10},{140,30}}), iconTransformation(extent={{100,-20},{140,20}}))); +protected Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.OnOffPeriod onOffPer - "Calculate the length of the on period and the off period" + "Block that calculates the length of the on period and the off period" annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.HalfPeriodRatio halPerRatio - "Calculate the half period ratio" + "Block that calculates the half period ratio" annotation (Placement(transformation(extent={{-20,0},{0,20}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.NormalizedTimeDelay norTimDel( final gamma=max(yHig, yLow)/min(yLow, yHig)) - "Calculate the normalized time delay" + "Block that calculates the normalized time delay" annotation (Placement(transformation(extent={{40,0},{60,20}}))); equation - connect(onOffPer.On, On) annotation (Line(points={{-82,4},{-90,4},{-90,-60},{ + connect(onOffPer.on, On) annotation (Line(points={{-82,4},{-90,4},{-90,-60},{ -120,-60}}, color={255,0,255})); connect(onOffPer.tim, tim) annotation (Line(points={{-82,16},{-90,16},{-90,60}, {-120,60}}, color={0,0,127})); @@ -90,7 +91,7 @@ First implementation
                    ", info="

                    -This block processes a relay swtich output signall and calculates: +This block processes a relay switch output signal and calculates:

                    1. @@ -103,7 +104,7 @@ the length of the off period (when the relay switch signal becomes false
                    2. -the flags which indicates if the tuning starts and completes, respectively. +the flags which indicate if the tuning starts and completes, respectively.

                    diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Controller.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Controller.mo index e10eedde9f5..8e2e450834b 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Controller.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Controller.mo @@ -1,20 +1,26 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation; -model Controller "Test model for Control" +model Controller "Test model for a relay controller" Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Controller relCon( yHig=1, yLow=0.5, deaBan=0.4) "A relay controller" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.Sin sin(freqHz=2) "Measured value" - annotation (Placement(transformation(extent={{-60,-60},{-40,-40}}))); + annotation (Placement(transformation(extent={{-60,-90},{-40,-70}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.Constant con(k=0) "Setpoint" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); - + Buildings.Controls.OBC.CDL.Logical.Sources.Pulse relRes( + width=0.5, + period=1, + shift=-0.5) "Mimic the response for a relay controller" + annotation (Placement(transformation(extent={{-60,-50},{-40,-30}}))); equation connect(con.y, relCon.u_s) annotation (Line(points={{-38,0},{-12,0}}, color={0,0,127})); connect(sin.y, relCon.u_m) - annotation (Line(points={{-38,-50},{0,-50},{0,-12}}, color={0,0,127})); + annotation (Line(points={{-38,-80},{0,-80},{0,-12}}, color={0,0,127})); + connect(relRes.y, relCon.trigger) + annotation (Line(points={{-38,-40},{-6,-40},{-6,-12}}, color={255,0,255})); annotation ( experiment( StopTime=1.0, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mo index d747441a3eb..4f89d0706a8 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mo @@ -1,26 +1,38 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation; -model HalfPeriodRatio "Test model for HalfPeriodRatio" +model HalfPeriodRatio "Test model for calculating the half period ratio" Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.HalfPeriodRatio halPerRat - "Calculate the half period ratio" - annotation (Placement(transformation(extent={{-8,-10},{12,10}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable tOn( - table=[0,0; 0.1,1; 0.3,1; 0.7,1; 0.83,2; 0.85,6], - smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, - extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) - "Signal for the length of the on period" - annotation (Placement(transformation(extent={{-60,20},{-40,40}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable tOff( - table=[0,0; 0.1,0; 0.3,0; 0.7,3; 0.83,3; 0.85,3], - smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, - extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) - "Signal for the length of the off period" - annotation (Placement(transformation(extent={{-60,-40},{-40,-20}}))); + "Calculate the half period ratio based on a response from a relay controller" + annotation (Placement(transformation(extent={{22,-10},{42,10}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Pulse tOnSig1( + amplitude=-0.1, + width=0.2, + period=1, + offset=0.1) "Block that generates signals for forming the signal of the length of On period" + annotation (Placement(transformation(extent={{-80,20},{-60,40}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Pulse tOnSig2( + amplitude=-0.1, + width=0.8, + period=1, + offset=0.1) "Block that generates signals for forming the signal of the length of On period" + annotation (Placement(transformation(extent={{-80,60},{-60,80}}))); + Buildings.Controls.OBC.CDL.Continuous.Add tOn "Blocks that generates the length of the on period" + annotation (Placement(transformation(extent={{-34,40},{-14,60}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Pulse tOff( + amplitude=-0.7, + width=0.7, + period=1, + offset=0.7) "The length of the off period" + annotation (Placement(transformation(extent={{-80,-40},{-60,-20}}))); equation - connect(tOn.y[1], halPerRat.tOn) annotation (Line(points={{-38,30},{-20,30},{ - -20,6},{-10,6}}, color={0,0,127})); - connect(tOff.y[1], halPerRat.tOff) annotation (Line(points={{-38,-30},{-20, - -30},{-20,-6},{-10,-6}}, color={0,0,127})); + connect(tOff.y, halPerRat.tOff) annotation (Line(points={{-58,-30},{0,-30},{0, + -6},{20,-6}}, color={0,0,127})); + connect(tOnSig2.y, tOn.u1) annotation (Line(points={{-58,70},{-40,70},{-40,56}, + {-36,56}}, color={0,0,127})); + connect(tOnSig1.y, tOn.u2) annotation (Line(points={{-58,30},{-40,30},{-40,44}, + {-36,44}}, color={0,0,127})); + connect(tOn.y, halPerRat.tOn) + annotation (Line(points={{-12,50},{0,50},{0,6},{20,6}}, color={0,0,127})); annotation ( experiment( StopTime=1.0, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mo index 3049bb93d04..3aaf7ca3d97 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mo @@ -1,18 +1,17 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation; -model NormalizedTimeDelay "Test model for NormalizedTimeDelay" - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.NormalizedTimeDelay norTimDel(gamma=4) - "Calculate the normalized time delay" +model NormalizedTimeDelay "Test model for calculating the normalized time delay" + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.NormalizedTimeDelay norTimDel(gamma=3) + "Calculate the normalized time delay based on a response from a relay controller" annotation (Placement(transformation(extent={{-8,-10},{12,10}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable RefDat(table=[0,0, - 2.051; 0.298,0,2.051; 0.3,0,2.051; 0.3,1,1; 0.698,1,1; 0.7,1,1; 0.7,1.5,0.709; - 0.848,1.5,0.709; 0.85,1.5,0.709; 0.85,2,0.494; 0.998,2, 0.494; 1,2,0.494], - extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) - "Data for validating the normalizedTimeDelay block" - annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); - + Buildings.Controls.OBC.CDL.Continuous.Sources.Pulse rho( + amplitude=1, + width=0.7, + period=1, + offset=1) "Half period ratio" + annotation (Placement(transformation(extent={{-50,-10},{-30,10}}))); equation - connect(RefDat.y[1], norTimDel.rho) - annotation (Line(points={{-38,0},{-10,0}}, color={0,0,127})); + connect(rho.y, norTimDel.rho) + annotation (Line(points={{-28,0},{-10,0}}, color={0,0,127})); annotation ( experiment( StopTime=1.0, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mo index e60bdbc2660..2334879c502 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mo @@ -1,21 +1,21 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation; -model OnOffPeriod "Test model for OnOffPeriod" +model OnOffPeriod "Test model for calculating the length of the on period and the off period" Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.OnOffPeriod onOffPer - "Calculate the length of the on period and the off period" + "Calculate the length of the on period and the off period based on a response from a relay controller" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - Buildings.Controls.OBC.CDL.Logical.Sources.TimeTable relRes(table=[0,1; 0.1,0; - 0.3,0; 0.7,1; 0.83,0; 0.85,1], period=2) - "Mimicks the response for a relay controller" - annotation (Placement(transformation(extent={{-60,-20},{-40,0}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.ModelTime modTim "Simulation time" annotation (Placement(transformation(extent={{-60,10},{-40,30}}))); - + Buildings.Controls.OBC.CDL.Logical.Sources.Pulse relRes( + width=0.2, + period=0.8, + shift=-0.1) "Mimic the response for a relay controller" + annotation (Placement(transformation(extent={{-60,-20},{-40,0}}))); equation - connect(onOffPer.On, relRes.y[1]) annotation (Line(points={{-12,-6},{-20,-6}, - {-20,-10},{-38,-10}}, color={255,0,255})); connect(modTim.y, onOffPer.tim) annotation (Line(points={{-38,20},{-20,20},{-20, 6},{-12,6}}, color={0,0,127})); + connect(relRes.y, onOffPer.on) annotation (Line(points={{-38,-10},{-20,-10},{-20, + -6},{-12,-6}}, color={255,0,255})); annotation ( experiment( StopTime=1.0, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mo index e55ddcc01e2..a6e85dcf7b8 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mo @@ -1,21 +1,21 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation; -model ResponseProcess "Test model for ResponseProcess" +model ResponseProcess "Test model for processing the response of a relay controller" Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.ResponseProcess resPro(yHig=1, yLow=0.2) "Calculate the length of the on period and the off period" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - Buildings.Controls.OBC.CDL.Logical.Sources.TimeTable relRes(table=[0,1; 0.1,0; - 0.3,0; 0.7,1; 0.83,0; 0.85,1], period=2) - "Mimicks the response for a relay controller" - annotation (Placement(transformation(extent={{-60,-20},{-40,0}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.ModelTime modTim "Simulation time" annotation (Placement(transformation(extent={{-60,10},{-40,30}}))); - + Buildings.Controls.OBC.CDL.Logical.Sources.Pulse relRes( + width=0.2, + period=0.8, + shift=-0.1) "Mimic the response for a relay controller" + annotation (Placement(transformation(extent={{-60,-30},{-40,-10}}))); equation - connect(resPro.On, relRes.y[1]) annotation (Line(points={{-12,-6},{-20,-6},{-20, - -10},{-38,-10}}, color={255,0,255})); connect(modTim.y, resPro.tim) annotation (Line(points={{-38,20},{-20,20},{-20, 6},{-12,6}}, color={0,0,127})); + connect(relRes.y, resPro.On) annotation (Line(points={{-38,-20},{-20,-20},{-20, + -6},{-12,-6}}, color={255,0,255})); annotation ( experiment( StopTime=1.0, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo index e313e8790d6..9da4bc183cc 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo @@ -1,16 +1,12 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed; block ControlProcessModel - "Identify the parameters of a first order time delayed model for the control process" + "Identify the parameters of a first-order time delayed model for the control process" parameter Real yHig(min=1E-6) = 1 "Higher value for the output"; parameter Real yLow(min=1E-6) = 0.5 "Lower value for the output"; parameter Real deaBan(min=0) = 0.5 "Deadband for holding the output value"; - Buildings.Controls.OBC.CDL.Interfaces.RealInput u - "Output of a relay controller" - annotation (Placement(transformation(extent={{-140,60},{-100,100}}), - iconTransformation(extent={{-140,60},{-100,100}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput tOn( final quantity="Time", final unit="s", @@ -32,6 +28,24 @@ block ControlProcessModel "Normalized time delay" annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), iconTransformation(extent={{-140,-100},{-100,-60}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealInput u + "Output of a relay controller" + annotation (Placement(transformation(extent={{-140,60},{-100,100}}), + iconTransformation(extent={{-140,60},{-100,100}}))); + Buildings.Controls.OBC.CDL.Interfaces.BooleanInput triSta + "Relay tuning status, true if the tuning starts" + annotation (Placement(transformation(extent={{-20,-20},{20,20}}, + rotation=90, origin={-74,-120}), iconTransformation( + extent={{-20,-20},{20,20}}, + rotation=90, + origin={-60,-120}))); + Buildings.Controls.OBC.CDL.Interfaces.BooleanInput triEnd + "Relay tuning status, true if the tuning ends" + annotation (Placement(transformation(extent={{-20,-20},{20,20}}, + rotation=90, origin={80,-120}), iconTransformation( + extent={{-20,-20},{20,20}}, + rotation=90, + origin={60,-120}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput k "Gain" annotation (Placement(transformation(extent={{100,50},{140,90}}), @@ -50,63 +64,50 @@ block ControlProcessModel "Time delay" annotation (Placement(transformation(extent={{100,-80},{140,-40}}), iconTransformation(extent={{100,-80},{140,-40}}))); +protected + Buildings.Controls.OBC.CDL.Continuous.AddParameter addPar( + final p=1) + "Block that calculates the difference between 1 and the normalized time delay" + annotation (Placement(transformation(extent={{-8,-70},{12,-50}}))); + Buildings.Controls.OBC.CDL.Continuous.Divide div + "The output of samtau divided by that of addPar" + annotation (Placement(transformation(extent={{12,-30},{32,-10}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Gain gain( final yHig=yHig, final yLow=yLow) - "Calculate the gain" + "Block that calculates the gain" annotation (Placement(transformation(extent={{-84,10},{-64,30}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.TimeConstantDelay timConDel( final yHig=yHig, final yLow=yLow, deaBan=deaBan) - "Calculate the time constant and the time delay" + "Block that calculate the time constant and the time delay" annotation (Placement(transformation(extent={{0,10},{20,30}}))); - Buildings.Controls.OBC.CDL.Interfaces.BooleanInput triSta - "Relay tuning status, true if the tuning starts" - annotation (Placement(transformation(extent={{-20,-20},{20,20}}, - rotation=90, origin={-74,-120}), iconTransformation( - extent={{-20,-20},{20,20}}, - rotation=90, - origin={-60,-120}))); - Buildings.Controls.OBC.CDL.Interfaces.BooleanInput triEnd - "Relay tuning status, true if the tuning ends" - annotation (Placement(transformation(extent={{-20,-20},{20,20}}, - rotation=90, origin={80,-120}), iconTransformation( - extent={{-20,-20},{20,20}}, - rotation=90, - origin={60,-120}))); - Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samT( + Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samk( final y_start=1) - "Sample the time constant when the tuning period ends" - annotation (Placement(transformation(extent={{70,10},{90,30}}))); + "Block that samples the gain when the tuning period ends" + annotation (Placement(transformation(extent={{-54,10},{-34,30}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samL( final y_start=1) - "Sample the time delay when the tuning period ends" + "Block that samples the time delay when the tuning period ends" annotation (Placement(transformation(extent={{50,-70},{70,-50}}))); - Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samk( - final y_start=1) - "Sample the gain when the tuning period ends" - annotation (Placement(transformation(extent={{-54,10},{-34,30}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samtOn( final y_start=1) - "Sample the length of the on period when the tuning period ends" + "Block that samples the length of the on period when the tuning period ends" annotation (Placement(transformation(extent={{-70,50},{-50,70}}))); + Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samT( + final y_start=1) + "Block that samples the time constant when the tuning period ends" + annotation (Placement(transformation(extent={{70,10},{90,30}}))); + Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samtau(final y_start=0.5) + "Block that samples the normalized time delay when the tuning period ends" + annotation (Placement(transformation(extent={{-70,-70},{-50,-50}}))); Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai( final k=-1) "Product of the normalized time delay and -1" annotation (Placement(transformation(extent={{-36,-70},{-16,-50}}))); - Buildings.Controls.OBC.CDL.Continuous.AddParameter addPar( - final p=1) - "Difference between 1 and the normalized time delay" - annotation (Placement(transformation(extent={{-8,-70},{12,-50}}))); - Buildings.Controls.OBC.CDL.Continuous.Divide div - "The output of samtau divided by that of addPar" - annotation (Placement(transformation(extent={{12,-30},{32,-10}}))); - CDL.Discrete.TriggeredSampler samtau(final y_start=0.5) - "Sample the normalized time delay" - annotation (Placement(transformation(extent={{-70,-70},{-50,-50}}))); equation connect(gain.u, u) annotation (Line(points={{-86,28},{-88,28},{-88,80},{-120, 80}}, @@ -118,7 +119,7 @@ equation connect(gain.triSta, triSta) annotation (Line(points={{-74,8},{-74,-120}}, color={255,0,255})); connect(timConDel.T, samT.u) - annotation (Line(points={{21,27},{60,27},{60,20},{68,20}}, + annotation (Line(points={{22,26},{60,26},{60,20},{68,20}}, color={0,0,127})); connect(samT.y, T) annotation (Line(points={{92,20},{120,20}}, @@ -127,9 +128,8 @@ equation color={255,0,255})); connect(L, samL.y) annotation (Line(points={{120,-60},{72,-60}}, color={0,0,127})); - connect(samL.u, timConDel.L) annotation (Line(points={{48,-60},{44,-60},{44, - 14},{21,14}}, - color={0,0,127})); + connect(samL.u, timConDel.L) annotation (Line(points={{48,-60},{44,-60},{44,14}, + {22,14}}, color={0,0,127})); connect(samL.trigger, triEnd) annotation (Line(points={{60,-72},{60,-90},{80, -90},{80,-120}}, color={255,0,255})); @@ -187,11 +187,17 @@ First implementation
                    ", info=" -

                    This block calculates the parameters of a first-order time-delayed model.

                    -

                    For more details, please refer to - -Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Gain,

                    -

                    -Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.TimeConstantDelay.

                    +

                    This block calculates the model parameters of a first-order time-delayed model. +Specifically, it employs +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Gain and +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.TimeConstantDelay +to identify the gain and the time constant/the time delay, respectively.

                    +

                    This block is inactive by default and is active once the tuning period starts, i.e., triSta becomes true; +It then calculates the model parameters at the time when the tuning period ends, i.e., triEnd becomes true. +

                    +

                    +Refer to +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Controller for detailed explanation of the parameters yHig, yLow, and deaBan. +

                    ")); end ControlProcessModel; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Gain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Gain.mo index 2a3ec41ddac..31ee0ddd7a0 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Gain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Gain.mo @@ -29,12 +29,12 @@ block Gain "Identify the gain of a first order time delayed model" Buildings.Controls.OBC.CDL.Interfaces.RealOutput k "Gain" annotation (Placement(transformation(extent={{100,-20},{140,20}}))); +protected Buildings.Controls.OBC.CDL.Continuous.Add Iu "Integral of the relay output" annotation (Placement(transformation(extent={{-40,-50},{-20,-30}}))); Buildings.Controls.OBC.CDL.Continuous.IntegratorWithReset Iy( - final k=1, - final y_start=1E-11) + final k=1, final y_start=1E-3) "Integral of the process output" annotation (Placement(transformation(extent={{-10,30},{10,50}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.Constant refRelOut( @@ -43,9 +43,8 @@ block Gain "Identify the gain of a first order time delayed model" annotation (Placement(transformation(extent={{-60,10},{-40,30}}))); Buildings.Controls.OBC.CDL.Continuous.Divide divIyIu "Calculate the gain" annotation (Placement(transformation(extent={{60,-10},{80,10}}))); - Buildings.Controls.OBC.CDL.Continuous.AddParameter addPar( - final p=1E-11) - "Avoid divide-by-zero errors" + Buildings.Controls.OBC.CDL.Continuous.AddParameter addPar(final p=1E-3) + "Block that avoids a divide-by-zero error" annotation (Placement(transformation(extent={{20,-50},{40,-30}}))); Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gaiOnyHig( final k=yHig) "Product of tOn and yHig" @@ -102,7 +101,7 @@ k = Iy/Iu,

                    where Iy and Iu are the integral of the process -output and the integral of the relay output, respectively. +output and the integrals of the relay output, respectively.

                    Iy is calculated by

                    Iy = ∫ u(t) dt;

                    diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/TimeConstantDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/TimeConstantDelay.mo index bd93b109971..567dc432a3f 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/TimeConstantDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/TimeConstantDelay.mo @@ -36,6 +36,7 @@ block TimeConstantDelay "Time delay" annotation (Placement(transformation(extent={{100,-80},{140,-40}}), iconTransformation(extent={{100,-80},{140,-40}}))); +protected Buildings.Controls.OBC.CDL.Continuous.Abs absk "Absoulte value of the gain" annotation (Placement(transformation(extent={{-80,-10},{-60,10}}))); @@ -60,18 +61,18 @@ block TimeConstantDelay "Quotient of dead band divided by the absolute value of the gain" annotation (Placement(transformation(extent={{0,-30},{20,-10}}))); Buildings.Controls.OBC.CDL.Continuous.Divide div2 - "Output first input divided by second input" + "Blocks that calculates the input 1 by the second the input 2" annotation (Placement(transformation(extent={{60,-80},{80,-60}}))); Buildings.Controls.OBC.CDL.Continuous.Divide div3 - "Calculate the time constant" + "Blocks that calculates the time constant" annotation (Placement(transformation(extent={{-40,60},{-20,80}}))); - Buildings.Controls.OBC.CDL.Continuous.Multiply mul1 "Product of the inputs" + Buildings.Controls.OBC.CDL.Continuous.Multiply mul1 "Product of the two inputs" annotation (Placement(transformation(extent={{60,30},{80,50}}))); Buildings.Controls.OBC.CDL.Continuous.Multiply mul2 - "Calculate time delay" + "Blocks that calculates time delay" annotation (Placement(transformation(extent={{0,74},{20,94}}))); Buildings.Controls.OBC.CDL.Continuous.Subtract sub1 - "Difference of the two inputs" + "Blocks that calculates the difference of the two inputs" annotation (Placement(transformation(extent={{20,-80},{40,-60}}))); Buildings.Controls.OBC.CDL.Continuous.Subtract sub2 "Quotient of dead band divided by the absolute value of gain minus the lower value for the output" diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo index abff27b41ec..e0ffb121aa5 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo @@ -1,36 +1,61 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation; -model ControlProcessModel "Test model for ControlProcessModel" +model ControlProcessModel + "Test model for Identify the reduced-order model of the control process" Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.ControlProcessModel conProMod(yLow=0.1, deaBan=0.05) - "Calculate the parameters of of a first-order model" + "Calculate the parameters of a first-order model" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable RefDat(table=[0,1,1,1, - 0.3,1,1; 0.1,1,1,1,0.3,1,1; 0.1,0.5,1,1,0.5,1,1; 0.298,0.5,1,1,0.5,1,1; - 0.3,0.5,1,1,0.5,1,1; 0.3,0.5,1,1,0.1,1,1;0.698,0.5,1,1,0.1,1,1; 0.7,0.5,1,1,0.1,1,1; - 0.7,0.5,1,3,0.5,0.762,0.762;0.828,0.5,1,3,0.5,0.762,0.762; 0.83,0.5,1,3,0.5, - 0.762,0.762; 0.83,1,1,3,0.8,0.762,0.762; 0.83,1,1,3,0.8,0.762,0.762; - 0.848,1,1,3,0.8,0.762,0.762; 0.85,1,1,3,0.8, 0.762,0.762; 0.85,1,2,3,0.5,0.762,0.762; - 1,1,2,3,0.5,0.762,0.762], - extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) - "Data for validating the controlProcessModel block" - annotation (Placement(transformation(extent={{-80,-10},{-60,10}}))); - Buildings.Controls.OBC.CDL.Logical.Sources.TimeTable RefBooDat(table=[0,0,0; - 0.298,0,0; 0.3,0,0; 0.3,1,0; 0.698,1,0; 0.7,1,0; 0.7,1,1; 0.7,1,1;1,1,1], period=1) - "Boolean Data for validating the controlProcessModel block" + Buildings.Controls.OBC.CDL.Continuous.Sources.Pulse u( + amplitude=0.5, + width=0.125, + period=0.8, + offset=0.5) + "The response of a relay controller" + annotation (Placement(transformation(extent={{-80,80},{-60,100}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Pulse tOn( + amplitude=-0.1, + width=0.1, + period=1, + offset=0.1) + "The length of the on period" + annotation (Placement(transformation(extent={{-80,42},{-60,62}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Pulse tOff( + amplitude=-0.7, + width=0.8, + period=1, + offset=0.7) + "The length of the off period" + annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); + Buildings.Controls.OBC.CDL.Logical.Sources.Pulse tunSta( + width=0.9, + period=1, + shift=-0.9) "Mimicking the signal for the tuning period starts" annotation (Placement(transformation(extent={{-80,-60},{-60,-40}}))); + Buildings.Controls.OBC.CDL.Logical.Sources.Pulse tunEnd( + width=0.2, + period=1, + shift=0.8) "Mimicking the signal for the tuning period ends" + annotation (Placement(transformation(extent={{-80,-100},{-60,-80}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Pulse ratioLT( + amplitude=-0.1, + width=0.4, + period=0.8, + offset=0.4) + "Ratio between the time constant and the time delay" + annotation (Placement(transformation(extent={{-48,-40},{-28,-20}}))); equation - connect(RefDat.y[1], conProMod.u) annotation (Line(points={{-58,0},{-20,0},{-20, - 8},{-12,8}}, color={0,0,127})); - connect(conProMod.tOn, RefDat.y[2]) annotation (Line(points={{-12,4},{-18,4}, - {-18,0},{-58,0}}, color={0,0,127})); - connect(conProMod.tOff, RefDat.y[3]) annotation (Line(points={{-12,-4},{-16,-4}, - {-16,0},{-58,0}}, color={0,0,127})); - connect(conProMod.tau, RefDat.y[4]) annotation (Line(points={{-12,-8},{-18,-8}, - {-18,0},{-58,0}}, color={0,0,127})); - connect(RefBooDat.y[1], conProMod.triSta) + connect(tunSta.y, conProMod.triSta) annotation (Line(points={{-58,-50},{-6,-50},{-6,-12}}, color={255,0,255})); - connect(conProMod.triEnd, RefBooDat.y[2]) - annotation (Line(points={{6,-12},{6,-50},{-58,-50}}, color={255,0,255})); + connect(conProMod.triEnd, tunEnd.y) + annotation (Line(points={{6,-12},{6,-90},{-58,-90}}, color={255,0,255})); + connect(u.y, conProMod.u) annotation (Line(points={{-58,90},{-20,90},{-20,8},{ + -12,8}}, color={0,0,127})); + connect(tOn.y, conProMod.tOn) annotation (Line(points={{-58,52},{-30,52},{-30, + 4},{-12,4}}, color={0,0,127})); + connect(conProMod.tOff, tOff.y) annotation (Line(points={{-12,-4},{-40,-4},{-40, + 10},{-58,10}}, color={0,0,127})); + connect(ratioLT.y, conProMod.tau) annotation (Line(points={{-26,-30},{-20,-30}, + {-20,-8},{-12,-8}}, color={0,0,127})); annotation ( experiment( StopTime=1.0, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mo index b8cb5acfdf6..b65dd85756b 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mo @@ -1,39 +1,43 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation; -model Gain "Test model for Gain" +model Gain "Test model for identifying the gain of the control process" Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Gain - gai "Calculate the gain of a first-order model" + gai "Block that calculate the gain of a first-order model" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable tOn( - table=[0,0; 0.1,0.1; 0.3,0.1; 0.7,0.1; 0.83,0.1; 0.9,0.07], - smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, - extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) + Buildings.Controls.OBC.CDL.Continuous.Sources.Pulse u( + amplitude=0.5, + width=0.125, + period=0.8, + offset=0.5) + "The response of a relay controller" + annotation (Placement(transformation(extent={{-60,30},{-40,50}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Pulse tOn( + amplitude=-0.1, + width=0.1, + period=1, + offset=0.1) "The length of the on period" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable tOff( - table=[0,0; 0.1,0; 0.3,0; 0.7,0; 0.83,0.73; 0.85,0.73], - smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, - extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) + Buildings.Controls.OBC.CDL.Continuous.Sources.Pulse tOff( + amplitude=-0.7, + width=0.8, + period=1, + offset=0.7) "The length of the off period" annotation (Placement(transformation(extent={{-60,-50},{-40,-30}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable u( - table=[0,1; 0.1,0.5; 0.3,0.5; 0.7,0.5; 0.83,1; 0.9,0.5], - smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments, - extrapolation=Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) - "The response of a relay controller" - annotation (Placement(transformation(extent={{-60,30},{-40,50}}))); - Buildings.Controls.OBC.CDL.Logical.Sources.TimeTable tunSta(table=[0,0; 0.1,1; - 0.3,1; 0.7,1; 0.83,1; 0.85,1], period=2) - "Mimicking the signal for the tuning period start" - annotation (Placement(transformation(extent={{-60,-80},{-40,-60}}))); + Buildings.Controls.OBC.CDL.Logical.Sources.Pulse tunSta( + width=0.9, + period=1, + shift=-0.9) "Mimicking the signal for the tuning period starts" + annotation (Placement(transformation(extent={{-60,-90},{-40,-70}}))); equation - connect(tOn.y[1], gai.tOn) + connect(tunSta.y, gai.triSta) + annotation (Line(points={{-38,-80},{0,-80},{0,-12}}, color={255,0,255})); + connect(tOff.y, gai.tOff) annotation (Line(points={{-38,-40},{-20,-40},{-20,-8}, + {-12,-8}}, color={0,0,127})); + connect(tOn.y, gai.tOn) annotation (Line(points={{-38,0},{-12,0}}, color={0,0,127})); - connect(gai.tOff, tOff.y[1]) annotation (Line(points={{-12,-8},{-20,-8},{-20, - -40},{-38,-40}}, color={0,0,127})); - connect(u.y[1], gai.u) annotation (Line(points={{-38,40},{-20,40},{-20,8},{-12, - 8}}, color={0,0,127})); - connect(tunSta.y[1], gai.triSta) - annotation (Line(points={{-38,-70},{0,-70},{0,-12}}, color={255,0,255})); + connect(u.y, gai.u) annotation (Line(points={{-38,40},{-20,40},{-20,8},{-12,8}}, + color={0,0,127})); annotation ( experiment( StopTime=1.0, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mo index 4fcce016b2e..18b1f4a7bba 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mo @@ -1,29 +1,34 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation; -model TimeConstantDelay "Test model for TimeConstantDelay" +model TimeConstantDelay "Test model for identifying the the time constant and the time delay of the control process" Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.TimeConstantDelay timConDel(yLow=0.1) - "Calculate the time constant and the time delay of a first-order model" + "Block that calculates the time constant and the time delay of a first-order model" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable RefDat( - table=[0,1,1,0.3,0.754,0.226; - 0.098,1,1,0.3,0.754,0.226; 0.1,1,1,0.3,0.754,0.226; - 0.1,1,1,0.5,0.672,0.336; 0.298,1,1,0.5,0.672,0.336; - 0.3,1,1,0.5,0.672,0.336; 0.3,1,1,0.1,0.853,0.085; - 0.698,1,1,0.1,0.853,0.085; 0.7,1,1,0.1,0.853, - 0.085; 0.7,1,1,0.5,0.672,0.336; 0.828,1,1,0.5,0.672, - 0.336; 0.83,1,1,0.5,0.672,0.336; 0.83,1,1,0.8,0.575,0.46; - 0.848,1,1,0.8,0.575,0.46;0.85,1,1,0.8,0.575,0.46; - 0.85,2,1,0.5,1.344,0.672; 1,2,1,0.5,1.344,0.672], extrapolation= - Buildings.Controls.OBC.CDL.Types.Extrapolation.HoldLastPoint) - "Data for validating the timeConstantDelay block" + Buildings.Controls.OBC.CDL.Continuous.Sources.Constant k(k=1) + "Gain" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Pulse tOn( + amplitude=-0.1, + width=0.1, + period=1, + offset=0.1) + "The length of the on period" + annotation (Placement(transformation(extent={{-60,30},{-40,50}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.Pulse ratioLT( + amplitude=-0.1, + width=0.4, + period=0.8, + offset=0.4) + "Ratio between the time constant and the time delay" + annotation (Placement(transformation(extent={{-60,-50},{-40,-30}}))); + equation - connect(RefDat.y[1], timConDel.tOn) annotation (Line(points={{-38,0},{-20,0}, - {-20,6},{-12,6}}, color={0,0,127})); - connect(timConDel.k, RefDat.y[2]) - annotation (Line(points={{-12,0},{-38,0}}, color={0,0,127})); - connect(timConDel.ratioLT, RefDat.y[3]) annotation (Line(points={{-12,-6},{-20, - -6},{-20,0},{-38,0}}, color={0,0,127})); + connect(tOn.y, timConDel.tOn) annotation (Line(points={{-38,40},{-20,40},{-20, + 6},{-12,6}}, color={0,0,127})); + connect(k.y, timConDel.k) + annotation (Line(points={{-38,0},{-12,0}}, color={0,0,127})); + connect(ratioLT.y, timConDel.ratioLT) annotation (Line(points={{-38,-40},{-20, + -40},{-20,-6},{-12,-6}}, color={0,0,127})); annotation ( experiment( StopTime=1.0, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/package.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/package.mo index f75620c71a8..24fffba1e2d 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/package.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/package.mo @@ -2,7 +2,7 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning; package SystemIdentification "Package with blocks for identifying a system model of control process" annotation (Documentation(info="

                    -This package contains blocks related to system identification of the controlled process. +This package contains blocks that conduct the system identification of the controlled process.

                    ")); end SystemIdentification; From 1a22747ca9059402e3e26b3823cabe4a78b3c944 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Sun, 18 Jun 2023 23:47:47 -0400 Subject: [PATCH 079/214] add a boolean input to control when to perform the autotuning --- .../PIDWithAutotuning/FirstOrderAMIGO.mo | 91 ++++++++++++------- .../Validation/PIDWithFirstOrderAMIGO.mo | 26 ++++-- .../Validation/PIWithFirstOrderAMIGO.mo | 24 ++--- 3 files changed, 88 insertions(+), 53 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index a47ad4a1968..51054bb55c8 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -1,6 +1,6 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning; block FirstOrderAMIGO - "A autotuning PID controller with an AMIGO tuner and a first order time delayed system model" + "An autotuning PID controller with an AMIGO tuner and a first order time delayed system model" parameter Buildings.Controls.OBC.CDL.Types.SimpleController controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PI "Type of controller"; parameter Real r( @@ -62,18 +62,30 @@ block FirstOrderAMIGO "Connector of measurement input signal" annotation (Placement(transformation(origin={0,-120}, extent={{20,-20},{-20,20}},rotation=270), iconTransformation(extent={{20,-20},{-20,20}},rotation=270,origin={0,-120}))); - Buildings.Controls.OBC.CDL.Interfaces.BooleanInput tri - "Resets the controller output when trigger becomes true" - annotation (Placement(transformation(extent={{-20,-20},{20,20}},rotation=90,origin={-60,-120}), - iconTransformation(extent={{-20,-20},{20,20}},rotation=90,origin={-60,-120}))); + Buildings.Controls.OBC.CDL.Interfaces.BooleanInput triRes + "Resets the controller output when trigger becomes true" annotation ( + Placement(transformation( + extent={{-20,-20},{20,20}}, + rotation=90, + origin={-60,-120}), iconTransformation( + extent={{-20,-20},{20,20}}, + rotation=90, + origin={-60,-120}))); + Buildings.Controls.OBC.CDL.Interfaces.BooleanInput triAutTun + "Starts the autotuning when trigger becomes true" annotation (Placement( + transformation( + extent={{-20,-20},{20,20}}, + rotation=90, + origin={60,-120}), iconTransformation( + extent={{-20,-20},{20,20}}, + rotation=90, + origin={60,-120}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput y "Connector for actuator output signal" annotation (Placement(transformation(extent={{100,-20},{140,20}}),iconTransformation(extent={{100,-20},{140,20}}))); - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Controller rel( - final yHig=yHig, - final yLow=yLow, - final deaBan=deaBan) "Relay controller" - annotation (Placement(transformation(extent={{20,0},{40,20}}))); + Buildings.Controls.OBC.CDL.Continuous.Sources.ModelTime modTim + "Simulation time" + annotation (Placement(transformation(extent={{80,60},{60,80}}))); Buildings.Controls.OBC.Utilities.PIDWithInputGains PID( final controllerType=controllerType, final r=r, @@ -86,6 +98,22 @@ block FirstOrderAMIGO final reverseActing=reverseActing, final y_reset=xi_start) "PID controller with the gains as inputs" annotation (Placement(transformation(extent={{0,-50},{20,-30}}))); + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PID PIDPar + if with_D "Parameters of a PID controller" + annotation (Placement(transformation(extent={{-60,40},{-80,60}}))); + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PI PIPar + if not with_D "Parameters of a PI controller" + annotation (Placement(transformation(extent={{-60,70},{-80,90}}))); + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Controller rel( + final yHig=yHig, + final yLow=yLow, + final deaBan=deaBan) "Relay controller" + annotation (Placement(transformation(extent={{20,0},{40,20}}))); + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.ResponseProcess resPro( + final yHig=yHig - yRef, + final yLow=yRef + yLow) + "Identify the on and off period length, the half period ratio, and the moments when the tuning starts and ends" + annotation (Placement(transformation(extent={{20,30},{0,50}}))); Buildings.Controls.OBC.CDL.Continuous.Switch swi "Switch between a PID controller and a relay controller" annotation (Placement(transformation(extent={{60,-30},{80,-10}}))); @@ -105,21 +133,11 @@ block FirstOrderAMIGO final deaBan=deaBan) "Calculates the parameters of a first-order time-delayed model" annotation (Placement(transformation(extent={{-20,40},{-40,60}}))); - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PI PIPar - if not with_D "Parameters of a PI controller" - annotation (Placement(transformation(extent={{-60,70},{-80,90}}))); - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PID PIDPar - if with_D "Parameters of a PID controller" - annotation (Placement(transformation(extent={{-60,40},{-80,60}}))); - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.ResponseProcess resPro( - final yHig=yHig - yRef, - final yLow=yRef + yLow) - "Identify the on and off period length, the half period ratio, and the moments when the tuning starts and ends" - annotation (Placement(transformation(extent={{20,30},{0,50}}))); - Buildings.Controls.OBC.CDL.Continuous.Sources.ModelTime modTim - "Simulation time" - annotation (Placement(transformation(extent={{80,60},{60,80}}))); - + Buildings.Controls.OBC.CDL.Logical.Or or1 + "Switch the block output to the output from the PID controller when the autotuning is disabled or is completed " + annotation (Placement(transformation(extent={{60,-70},{80,-50}}))); + Buildings.Controls.OBC.CDL.Logical.Not not1 "when autotuning is disabled" + annotation (Placement(transformation(extent={{30,-78},{50,-58}}))); protected final parameter Boolean with_D=controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PID or controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PD "Boolean flag to enable derivative action" @@ -135,8 +153,8 @@ equation 0}}, color={0,0,127})); connect(rel.u_s, u_s) annotation (Line(points={{18,10},{0,10},{0,0},{-120,0}}, color={0,0,127})); - connect(PID.trigger, tri) annotation (Line(points={{4,-52},{4,-90},{-60,-90}, - {-60,-120}}, color={255,0,255})); + connect(PID.trigger, triRes) annotation (Line(points={{4,-52},{4,-90},{-60,-90}, + {-60,-120}}, color={255,0,255})); connect(samk.y,PID. k) annotation (Line(points={{-18,-20},{-14,-20},{-14,-32}, {-2,-32}}, color={0,0,127})); connect(PID.Ti, samTi.y) annotation (Line(points={{-2,-36},{-14,-36},{-14,-50}, @@ -187,9 +205,6 @@ equation 32},{-36,38}}, color={255,0,255})); connect(resPro.triSta, conProMod.triSta) annotation (Line(points={{-2,36},{-24, 36},{-24,38}}, color={255,0,255})); - connect(resPro.triEnd, swi.u2) annotation (Line(points={{-2,32},{-10,32},{-10, - -20},{58,-20}}, - color={255,0,255})); connect(resPro.triEnd, samTi.trigger) annotation (Line(points={{-2,32},{-10, 32},{-10,10},{-70,10},{-70,-38}}, color={255,0,255})); @@ -205,6 +220,16 @@ equation color={0,0,127})); connect(u_m, PID.u_m) annotation (Line(points={{0,-120},{0,-96},{10,-96},{10, -52}}, color={0,0,127})); + connect(rel.trigger, triAutTun) annotation (Line(points={{24,-2},{24,-82},{60, + -82},{60,-120}}, color={255,0,255})); + connect(or1.u1, resPro.triEnd) annotation (Line(points={{58,-60},{52,-60},{52, + -50},{46,-50},{46,-20},{-10,-20},{-10,32},{-2,32}}, color={255,0,255})); + connect(or1.y, swi.u2) annotation (Line(points={{82,-60},{90,-60},{90,-40},{ + 48,-40},{48,-20},{58,-20}}, color={255,0,255})); + connect(not1.u, triAutTun) annotation (Line(points={{28,-68},{24,-68},{24,-82}, + {60,-82},{60,-120}}, color={255,0,255})); + connect(not1.y, or1.u2) + annotation (Line(points={{52,-68},{58,-68}}, color={255,0,255})); annotation (Documentation(info="

                    This block implements a rule-based PID tuning method. @@ -213,8 +238,7 @@ first-order delay (FOD) model. It then determines the parameters of this FOD model based on the responses of the control process to an asymmetric relay feedback. After that, taking the parameters of this FOD mode as inputs, this PID tuning -method calculates the PID parameters based on prescribed rules, -i.e., Approximate M-constrained Integral Gain Optimization (AMIGO) Tuner. +method calculates the PID parameters with an Approximate M-constrained Integral Gain Optimization (AMIGO) Tuner. This block is built based on Buildings.Controls.OBC.Utilities.PIDWithInputGains @@ -225,7 +249,8 @@ PID controller.

                    Brief guidance

                    To use this block, connect it to the control loop. -It will start the PID tuning process once the simulation starts. +It will start the PID tuning process whenever the value of the boolean input signal triAutTun changes from +false to true. During the PID tuning process, the control loop is controlled by a relay feedback controller. The PID tuning process will end automatically based on the algorithm defined in diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo index 28c51aad31b..32704bc294e 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo @@ -1,5 +1,5 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation; -model PIDWithFirstOrderAMIGO "Test model for FirstOrderAMIGO" +model PIDWithFirstOrderAMIGO "Test model for an autotuning PID controller" Buildings.Controls.OBC.CDL.Continuous.Sources.Constant SetPoint(k=0.8) "Setpoint value" annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); @@ -40,12 +40,16 @@ model PIDWithFirstOrderAMIGO "Test model for FirstOrderAMIGO" Buildings.Controls.OBC.CDL.Continuous.Derivative derivative2 "A derivative block that is used to mimic the first order process 2" annotation (Placement(transformation(extent={{80,-60},{60,-40}}))); - + Buildings.Controls.OBC.CDL.Logical.Sources.Pulse autTunSig( + width=0.9, + period=10000, + shift=-9000) "Signal for enabling the autotuning" + annotation (Placement(transformation(extent={{-80,-60},{-60,-40}}))); equation connect(resSig.y, PID.trigger) annotation (Line(points={{-58,70},{-30,70},{-30, 40},{-16,40},{-16,48}}, color={255,0,255})); - connect(PIDWitTun.tri, PID.trigger) annotation (Line(points={{-16,-32}, - {-16,-38},{-30,-38},{-30,40},{-16,40},{-16,48}}, color={255,0,255})); + connect(PIDWitTun.triRes, PID.trigger) annotation (Line(points={{-16,-32},{-16, + -38},{-30,-38},{-30,40},{-16,40},{-16,48}}, color={255,0,255})); connect(PIDWitTun.u_s, PID.u_s) annotation (Line(points={{-22,-20},{-48,-20}, {-48,60},{-22,60}}, color={0,0,127})); connect(SetPoint.y, PID.u_s) annotation (Line(points={{-58,10},{-48,10},{-48,60}, @@ -79,6 +83,8 @@ equation {40,20},{40,86},{58,86}}, color={0,0,127})); connect(derivative2.u, uniDel2.y) annotation (Line(points={{82,-50},{92,-50}, {92,-66},{40,-66},{40,-20},{32,-20}}, color={0,0,127})); + connect(autTunSig.y, PIDWitTun.triAutTun) + annotation (Line(points={{-58,-50},{-4,-50},{-4,-32}}, color={255,0,255})); annotation ( experiment( StopTime=10000, @@ -93,13 +99,17 @@ Validation test for the block Buildings.Controls.OBC.Utilities.PIDWithAutotuning.FirstOrderAMIGO.

                    -This example compares the output of a PID controller (PIDWitTun) -with an autotuning feature to that of another PID controller (PID) -with arbitary gains. +This example compares the output of an autotuning PID controller (PIDWitTun) +to that of a normal PID controller (PID) with prescribed gains.

                    Both PID controllers are connected with a first-order control process. -Under the control of PIDWitTun, the value of the controlled variable +At the beginning (simulation time is less than 1000s), the outputs from those two PID controllers +are the same as their prescribed gains. +

                    +

                    +Once the autotuning starts at 1000s, the outputs of the two PID controllers become different. +After the tuning completes, under the control of PIDWitTun, the value of the controlled variable is close to the setpoint after the tuning period ends (PIDWitTun.resPro.triEnd = true). On the contrary, PID has a poor control performance, i.e., the value of the controlled variable oscillates, without an autotuning setup. diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo index 69dfe160880..eb2356743de 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo @@ -1,5 +1,5 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation; -model PIWithFirstOrderAMIGO "Test model for FirstOrderAMIGO" +model PIWithFirstOrderAMIGO "Test model for an autotuning PI controller" Buildings.Controls.OBC.CDL.Continuous.Sources.Constant SetPoint(k=0.8) "Setpoint value" annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); @@ -41,10 +41,15 @@ model PIWithFirstOrderAMIGO "Test model for FirstOrderAMIGO" "A derivative block that is used to mimic the first order process 2" annotation (Placement(transformation(extent={{80,-60},{60,-40}}))); + CDL.Logical.Sources.Pulse autTunSig( + width=0.9, + period=10000, + shift=-9000) "Signal for enabling the autotuning" + annotation (Placement(transformation(extent={{-80,-60},{-60,-40}}))); equation connect(resSig.y, PI.trigger) annotation (Line(points={{-58,70},{-30,70},{-30, 40},{-16,40},{-16,48}}, color={255,0,255})); - connect(PIWitTun.tri, PI.trigger) annotation (Line(points={{-16,-32},{-16,-38}, + connect(PIWitTun.triRes, PI.trigger) annotation (Line(points={{-16,-32},{-16,-38}, {-30,-38},{-30,40},{-16,40},{-16,48}}, color={255,0,255})); connect(PIWitTun.u_s, PI.u_s) annotation (Line(points={{-22,-20},{-48,-20},{-48, 60},{-22,60}}, color={0,0,127})); @@ -79,6 +84,8 @@ equation {40,20},{40,86},{58,86}}, color={0,0,127})); connect(derivative2.u, uniDel2.y) annotation (Line(points={{82,-50},{92,-50}, {92,-66},{40,-66},{40,-20},{32,-20}}, color={0,0,127})); + connect(autTunSig.y, PIWitTun.triAutTun) + annotation (Line(points={{-58,-50},{-4,-50},{-4,-32}}, color={255,0,255})); annotation ( experiment( StopTime=10000, @@ -93,16 +100,9 @@ Validation test for the block Buildings.Controls.OBC.Utilities.PIDWithAutotuning.FirstOrderAMIGO.

                    -This example compares the output of a PI controller (PIWitTun) -with an autotuning feature to that of another PI controller (PI) -with arbitary gains. -

                    -

                    -Both PI controllers are connected with a first-order control process. -Under the control of PIWitTun, the value of the controlled variable -is close to the setpoint after the tuning period ends (PIWitTun.resPro.triEnd = true). -On the contrary, PI has a poor control performance, -i.e., the value of the controlled variable oscillates, without an autotuning setup. +This example is almost identical to +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIDWithFirstOrderAMIGO. +However, an autotuning PI controller rather than an autotuning PID controller is considered in this example.

                    ", revisions=" From ec7ef99efb2b1983ed2574d0052ccce144af5a11 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Sun, 18 Jun 2023 23:48:16 -0400 Subject: [PATCH 080/214] minor doc update --- .../OBC/Utilities/PIDWithAutotuning/Validation/package.mo | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/package.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/package.mo index baa9589a8af..e840c91b6eb 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/package.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/package.mo @@ -1,5 +1,5 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning; -package Validation "Collection of models that validate the blocks for PID autotuning" +package Validation "Collection of models that validate the blocks for autotuning PID controllers" annotation ( preferredView="info", Documentation( From 454539e702bc63df1f2c3b1b09b5cbb9c53f4c03 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Sun, 18 Jun 2023 23:49:34 -0400 Subject: [PATCH 081/214] update the plotting script --- .../AutoTuner/AMIGO/Validation/PI.mos | 5 ++--- .../AutoTuner/AMIGO/Validation/PID.mos | 6 ++---- .../AutoTuner/AMIGO/Validation/PIDDerivativeTime.mos | 4 ++-- .../AutoTuner/AMIGO/Validation/PIDGain.mos | 5 ++--- .../AutoTuner/AMIGO/Validation/PIDIntegralTime.mos | 5 ++--- .../AutoTuner/AMIGO/Validation/PIGain.mos | 5 ++--- .../AutoTuner/AMIGO/Validation/PIIntegralTime.mos | 5 ++--- .../PIDWithAutotuning/Relay/Validation/Controller.mos | 7 ++++--- .../Relay/Validation/HalfPeriodRatio.mos | 6 +++--- .../Relay/Validation/NormalizedTimeDelay.mos | 6 ++---- .../Relay/Validation/OnOffPeriod.mos | 5 ++--- .../Relay/Validation/ResponseProcess.mos | 9 ++++----- .../Validation/ControlProcessModel.mos | 7 +++++-- .../FirstOrderTimedelayed/Validation/Gain.mos | 9 +++++---- .../Validation/TimeConstantDelay.mos | 8 +++++--- .../Validation/PIDWithFirstOrderAMIGO.mos | 8 ++++---- .../Validation/PIWithFirstOrderAMIGO.mos | 8 ++++---- ...IDWithAutotuning.AutoTuner.AMIGO.Validation.PI.mos | 7 ++++--- ...DWithAutotuning.AutoTuner.AMIGO.Validation.PID.mos | 8 ++++---- ...g.AutoTuner.AMIGO.Validation.PIDDerivativeTime.mos | 5 ++--- ...hAutotuning.AutoTuner.AMIGO.Validation.PIDGain.mos | 9 ++++----- ...ing.AutoTuner.AMIGO.Validation.PIDIntegralTime.mos | 7 +++---- ...thAutotuning.AutoTuner.AMIGO.Validation.PIGain.mos | 9 ++++----- ...ning.AutoTuner.AMIGO.Validation.PIIntegralTime.mos | 7 +++---- ....PIDWithAutotuning.Relay.Validation.Controller.mos | 5 ++++- ...ithAutotuning.Relay.Validation.HalfPeriodRatio.mos | 6 ++++-- ...utotuning.Relay.Validation.NormalizedTimeDelay.mos | 5 ++--- ...PIDWithAutotuning.Relay.Validation.OnOffPeriod.mos | 2 +- ...ithAutotuning.Relay.Validation.ResponseProcess.mos | 2 +- ...rderTimedelayed.Validation.ControlProcessModel.mos | 11 ++++++++--- ...fication.FirstOrderTimedelayed.Validation.Gain.mos | 8 ++++---- ...tOrderTimedelayed.Validation.TimeConstantDelay.mos | 7 ++++--- ...thAutotuning.Validation.PIDWithFirstOrderAMIGO.mos | 4 +++- ...ithAutotuning.Validation.PIWithFirstOrderAMIGO.mos | 4 +++- 34 files changed, 110 insertions(+), 104 deletions(-) diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mos index 104c98849e9..9560d057519 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mos @@ -1,4 +1,3 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PI", method="Cvode", tolerance=1e-06, resultFile="PI"); -createPlot(id=1, position={95, 95, 1484, 920}, y={"PI.k", "RefDat.y[4]"}, range={0.0, 1.0, 0.15, 0.4}, grid=true, subPlot=1, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={95, 95, 1484, 920}, y={"PI.Ti", "RefDat.y[5]"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=2, colors={{28,108,200}, {238,46,47}}); - +createPlot(id=1, position={15, 15, 884, 547}, y={"kp.y", "T.y", "L.y"}, range={0.0, 1.0, 0.0, 2.5}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}, {0,140,72}}); +createPlot(id=1, position={15, 15, 884, 547}, y={"PI.k", "PI.Ti"}, range={0.0, 1.0, 0.0, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); \ No newline at end of file diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mos index 7ba943ed613..d890f70ce37 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mos @@ -1,5 +1,3 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PID", method="Cvode", tolerance=1e-06, resultFile="PID"); -createPlot(id=1, position={75, 75, 1488, 1095}, y={"PID.k", "RefDat.y[4]"}, range={0.0, 1.0, 0.4, 1.2}, grid=true, subPlot=1, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={75, 75, 1488, 1095}, y={"PID.Ti", "RefDat.y[5]"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=2, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={75, 75, 1488, 1095}, y={"PID.Td", "RefDat.y[6]"}, range={0.0, 1.0, 0.1, 0.3}, grid=true, subPlot=3, colors={{28,108,200}, {238,46,47}}); - +createPlot(id=1, position={15, 15, 884, 547}, y={"kp.y", "T.y", "L.y"}, range={0.0, 1.0, 0.0, 2.5}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}, {0,140,72}}); +createPlot(id=1, position={55, 55, 884, 547}, y={"PID.k", "PID.Ti", "PID.Td"}, range={0.0, 1.0, 0.0, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}, {0,140,72}}); \ No newline at end of file diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mos index de7fc5b808f..cd0e5a6d9e8 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mos @@ -1,3 +1,3 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDDerivativeTime", method="Cvode", tolerance=1e-06, resultFile="PIDDerivativeTime"); -createPlot(id=1, position={35, 35, 1484, 920}, y={"PIDDerTim.T", "PIDDerTim.L"}, range={0.0, 1.0, 0.2, 1.2}, grid=true, subPlot=1, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={75, 75, 1484, 920}, y={"RefDat.y[6]", "PIDDerTim.Td"}, range={0.0, 1.0, 0.1, 0.3}, grid=true, subPlot=2, colors={{28,108,200}, {238,46,47}}, timeUnit="s"); +createPlot(id=1, position={35, 35, 884, 547}, y={"T.y", "L.y"}, range={0.0, 1.0, 0.2, 1.2}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={35, 35, 884, 547}, y={"PIDDerTim.Td"}, range={0.0, 1.0, 0.10000000000000002, 0.30000000000000004}, grid=true, subPlot=102, colors={{28,108,200}}); \ No newline at end of file diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mos index bb201333ca3..0148040cc02 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mos @@ -1,4 +1,3 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDGain", method="Cvode", tolerance=1e-06, resultFile="PIDGain"); -createPlot(id=1, position={15, 15, 1484, 920}, y={"PIDGai.kp", "PIDGai.T", "PIDGai.L"}, range={0.0, 1.0, 0.0, 2.5}, grid=true, subPlot=1, colors={{28,108,200}, {238,46,47}, {0,140,72}}); -createPlot(id=1, position={15, 15, 1484, 920}, y={"PIDGai.k", "RefDat.y[4]"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=2, colors={{28,108,200}, {238,46,47}}); - +createPlot(id=1, position={15, 15, 884, 547}, y={"kp.y", "T.y", "L.y"}, range={0.0, 1.0, 0.0, 2.5}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}, {0,140,72}}); +createPlot(id=1, position={15, 15, 884, 547}, y={"PIDGai.k"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=102, colors={{28,108,200}}); \ No newline at end of file diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mos index a1498463518..3bcb98aba33 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mos @@ -1,4 +1,3 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDIntegralTime", method="Cvode", tolerance=1e-06, resultFile="PIDIntegralTime"); -createPlot(id=1, position={75, 75, 1484, 920}, y={"PIDIntTim.T", "PIDIntTim.L"}, range={0.0, 1.0, 0.2, 1.2}, grid=true, subPlot=1, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={75, 75, 1484, 920}, y={"PIDIntTim.Ti", "RefDat.y[5]"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=2, colors={{28,108,200}, {238,46,47}}); - +createPlot(id=1, position={75, 75, 884, 547}, y={"T.y", "L.y"}, range={0.0, 1.0, 0.2, 1.2}, grid=true, subPlot=101, colors={{238,46,47}, {0,140,72}}); +createPlot(id=1, position={75, 75, 884, 547}, y={"PIDIntTim.Ti"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=102, colors={{28,108,200}}); \ No newline at end of file diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mos index 14714306784..7a3eab6d6f6 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mos @@ -1,4 +1,3 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIGain", method="Cvode", tolerance=1e-06, resultFile="PIGain"); -createPlot(id=1, position={35, 35, 1484, 920}, y={"PIGai.kp", "PIGai.T", "PIGai.L"}, range={0.0, 1.0, 0.0, 2.5}, grid=true, subPlot=1, colors={{28,108,200}, {238,46,47}, {0,140,72}}); -createPlot(id=1, position={35, 35, 1484, 920}, y={"PIGai.k", "RefDat.y[4]"}, range={0.0, 1.0, 0.15, 0.35}, grid=true, subPlot=2, colors={{28,108,200}, {238,46,47}}); - +createPlot(id=1, position={15, 15, 884, 547}, y={"kp.y", "T.y", "L.y"}, range={0.0, 1.0, 0.0, 2.5}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}, {0,140,72}}); +createPlot(id=1, position={15, 15, 884, 547}, y={"PIGai.k"}, range={0.0, 1.0, 0.15000000000000002, 0.35000000000000003}, grid=true, subPlot=102, colors={{28,108,200}}); \ No newline at end of file diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mos index 2e9831d228c..64a9f22d8ac 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mos @@ -1,4 +1,3 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIIntegralTime", method="Cvode", tolerance=1e-06, resultFile="PIIntegralTime"); -createPlot(id=1, position={95, 95, 1484, 920}, y={"PIIntTim.T", "PIIntTim.L"}, range={0.0, 1.0, 0.2, 1.2}, grid=true, subPlot=1, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={95, 95, 1484, 920}, y={"PIIntTim.Ti", "RefDat.y[5]"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=2, colors={{28,108,200}, {238,46,47}}); - +createPlot(id=1, position={75, 75, 884, 547}, y={"T.y", "L.y"}, range={0.0, 1.0, 0.2, 1.2}, grid=true, subPlot=101, colors={{238,46,47}, {0,140,72}}); +createPlot(id=1, position={75, 75, 884, 547}, y={"PIIntTim.Ti"}, range={0.0, 1.0, 0.4, 1.0}, grid=true, subPlot=102, colors={{28,108,200}}); \ No newline at end of file diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Controller.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Controller.mos index 0f751da3b8c..d4e1a6f4c73 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Controller.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Controller.mos @@ -1,6 +1,7 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.Controller", method="Cvode", tolerance=1e-06, stopTime=1.0, resultFile="Controller"); -createPlot(id=1, position={75, 75, 1484, 920}, y={"relCon.u_m"}, range={0.0, 1.0, -1.5, 1.5}, grid=true, subPlot=1, colors={{28,108,200}}); +createPlot(id=1, position={24, 24, 1148, 620}, y={"relCon.u_m"}, range={0.0, 1.0, -1.5, 1.5}, grid=true, subPlot=101, colors={{28,108,200}}); plotExpression(apply(Controller[end].relCon.u_s-0.4), false, "controller[end].relCon.u_s-deaBan", 1); plotExpression(apply(Controller[end].relCon.u_s+0.4), false, "controller[end].relCon.u_s+deaBan", 1); -createPlot(id=1, position={75, 75, 1484, 920}, y={"relCon.y"}, range={0.0, 1.0, -1.0, 1.5}, grid=true, subPlot=2, colors={{28,108,200}}); - +createPlot(id=1, position={15, 15, 1148, 620}, y={"relRes.y"}, range={0.0, 1.0, -1.0, 2.0}, grid=true, subPlot=102, colors={{28,108,200}}); +createPlot(id=1, position={15, 15, 1148, 620}, y={"relCon.y"}, range={0.0, 1.0, -2.0, 2.0}, grid=true, subPlot=103, colors={{28,108,200}}); +createPlot(id=1, position={15, 15, 1148, 620}, y={"relCon.yErr", "relCon.yOn"}, range={0.0, 1.0, -2.0, 2.0}, grid=true, subPlot=104, colors={{28,108,200}, {238,46,47}}); \ No newline at end of file diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mos index aa3b467abbe..882ce315616 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mos @@ -1,4 +1,4 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.HalfPeriodRatio", method="Cvode", tolerance=1e-06, resultFile="HalfPeriodRatio"); -createPlot(id=1, position={15, 15, 1742, 1559}, y={"halPerRat.tOn", "halPerRat.tOff"}, range={0.0, 1.0, -0.5, 3.5}, grid=true, subPlot=1, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={15, 15, 1742, 1559}, y={"halPerRat.rho"}, range={0.0, 1.0, 0.95, 1.55}, grid=true, subPlot=2, colors={{28,108,200}}); - +createPlot(id=1, position={75, 75, 884, 547}, y={"tOn.y", "tOff.y"}, range={0.0, 1.0, -0.5, 1.0}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={75, 75, 884, 547}, y={"halPerRat.triSta", "halPerRat.triEnd"}, range={0.0, 1.0, -0.5, 1.5}, grid=true, subPlot=102, colors={{28,108,200}, {28,108,200}}); +createPlot(id=1, position={75, 75, 884, 547}, y={"halPerRat.rho"}, range={0.0, 1.0, 0.0, 4.0}, grid=true, subPlot=103, colors={{28,108,200}}); \ No newline at end of file diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mos index a75db5216c7..8203665c552 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mos @@ -1,5 +1,3 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.NormalizedTimeDelay", method="Cvode", tolerance=1e-06, resultFile="NormalizedTimeDelay"); -createPlot(id=1, position={75, 75, 1484, 920}, y={"norTimDel.rho"}, range={0.0, 1.0, -0.5, 2.5}, grid=true, subPlot=1, colors={{28,108,200}}); -createPlot(id=1, position={95, 95, 1484, 920}, y={"norTimDel.tau", "RefDat.y[2]"}, range={0.0, 1.0, 0.0, 2.5}, grid=true, subPlot=2, colors={{28,108,200}, {238,46,47}}); - - +createPlot(id=1, position={35, 35, 884, 547}, y={"rho.y"}, range={0.0, 1.0, 0.5, 2.5}, grid=true, subPlot=101, colors={{28,108,200}}); +createPlot(id=1, position={35, 35, 884, 547}, y={"norTimDel.tau"}, range={0.0, 1.0, 0.2, 1.2}, grid=true, subPlot=102, colors={{28,108,200}}); \ No newline at end of file diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mos index 5c2834657c8..0847c8a703a 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mos @@ -1,4 +1,3 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.OnOffPeriod", method="Cvode", tolerance=1e-06, resultFile="OnOffPeriod"); -createPlot(id=1, position={35, 35, 1688, 1527}, y={"onOffPer.On"}, range={0.0, 1.0, -0.1, 1.1}, grid=true, subPlot=1, colors={{28,108,200}}); -createPlot(id=1, position={35, 35, 1688, 1527}, y={"onOffPer.tOn", "onOffPer.tOff"}, range={0.0, 1.0, -0.1, 0.7}, grid=true, subPlot=2, colors={{238,46,47}, {28,108,200}}); - +createPlot(id=1, position={30, 0, 930, 617}, y={"relRes.y"}, range={0.0, 1.0, -0.2, 1.2000000000000002}, grid=true, subPlot=101, colors={{28,108,200}}); +createPlot(id=1, position={30, 0, 930, 617}, y={"onOffPer.tOn", "onOffPer.tOff"}, range={0.0, 1.0, -0.2, 0.8}, grid=true, subPlot=102, colors={{238,46,47}, {28,108,200}}); \ No newline at end of file diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mos index aaccfcd132e..f229ce18ab3 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mos @@ -1,6 +1,5 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.ResponseProcess", method="Cvode", tolerance=1e-06, resultFile="ResponseProcess"); -createPlot(id=1, position={75, 75, 1869, 1435}, y={"relRes.y[1]"}, range={0.0, 1.0, -0.5, 1.5}, grid=true, subPlot=1, colors={{28,108,200}}); -createPlot(id=1, position={75, 75, 1869, 1435}, y={"resPro.tOn", "resPro.tOff"}, range={0.0, 1.0, -0.5, 1.0}, grid=true, subPlot=2, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={75, 75, 1869, 1435}, y={"resPro.triEnd","resPro.triSta"}, range={0.0, 1.0, -0.5, 1.5}, grid=true, subPlot=3, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={75, 75, 1869, 1435}, y={"resPro.tau"}, range={0.0, 1.0, 0.0, 1.5}, grid=true, subPlot=4, colors={{28,108,200}}); - +createPlot(id=1, position={37, 37, 1082, 571}, y={"relRes.y"}, range={0.0, 1.0, -1.0, 2.0}, grid=true, subPlot=101, colors={{28,108,200}}); +createPlot(id=1, position={37, 37, 1082, 571}, y={"resPro.tOn", "resPro.tOff"}, range={0.0, 1.0, -1.0, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={37, 37, 1082, 571}, y={"resPro.triEnd", "resPro.triSta"}, range={0.0, 1.0, -1.0, 2.0}, grid=true, subPlot=103, colors={{28,108,200}, {28,108,200}}); +createPlot(id=1, position={37, 37, 1082, 571}, y={"resPro.tau"}, range={0.0, 1.0, 0.0, 2.0}, grid=true, subPlot=104, colors={{28,108,200}}); \ No newline at end of file diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mos index cb778627842..2a0a1bdc8dd 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mos @@ -1,3 +1,6 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation.ControlProcessModel", method="Cvode", tolerance=1e-06, resultFile="ControlProcessModel"); -createPlot(id=1, position={95, 95, 1484, 920}, y={"conProMod.T", "RefDat.y[5]"}, range={0.0, 1.0, 0.75, 1.05}, grid=true, subPlot=1, colors={{28,108,200}, {238,46,47}}, timeUnit="s"); -createPlot(id=1, position={95, 95, 1484, 920}, y={"conProMod.L", "RefDat.y[6]"}, range={0.0, 1.0, 0.75, 1.05}, grid=true, subPlot=2, colors={{28,108,200}, {238,46,47}}, timeUnit="s"); +createPlot(id=1, position={10, -9, 710, 687}, y={"tunSta.y", "tunEnd.y"}, range={0.0, 1.0, -1.0, 2.0}, grid=true, subPlot=101, colors={{28,108,200}, {28,108,200}}); +createPlot(id=1, position={10, -9, 710, 687}, y={"u.y", "ratioLT.y"}, range={0.0, 1.0, 0.0, 2.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={10, -9, 710, 687}, y={"tOn.y", "tOff.y"}, range={0.0, 1.0, -1.0, 1.0}, grid=true, subPlot=103, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={10, -9, 710, 687}, y={"conProMod.k"}, range={0.0, 1.0, 0.0, 20.0}, grid=true, subPlot=104, colors={{28,108,200}}); +createPlot(id=1, position={10, -9, 710, 687}, y={"conProMod.T", "conProMod.L"}, range={0.0, 1.0, 0.0, 2.0}, grid=true, subPlot=105, colors={{238,46,47}, {0,140,72}}); \ No newline at end of file diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mos index 6421781c4a3..4176bede4e9 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mos @@ -1,5 +1,6 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation.Gain", method="Cvode", tolerance=1e-06, resultFile="Gain"); -createPlot(id=1, position={55, 55, 1753, 1433}, y={"u.y[1]"}, range={0.0, 1.0, 0.4, 1.2}, grid=true, subPlot=1, colors={{28,108,200}}); -createPlot(id=1, position={55, 55, 1753, 1433}, y={"tOn.y[1]", "tOff.y[1]"}, range={0.0, 1.0, -0.5, 1.0}, grid=true, subPlot=2, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={55, 55, 1753, 1433}, y={"tunSta.y[1]"}, range={0.0, 1.0, -0.5, 1.5}, grid=true, subPlot=3, colors={{28,108,200}}); -createPlot(id=1, position={55, 55, 1753, 1433}, y={"gai.k"}, range={0.0, 1.0, -0.5, 1.5}, grid=true, subPlot=4, colors={{28,108,200}}); +createPlot(id=1, position={34, 9, 995, 662}, y={"u.y"}, range={0.0, 1.0, 0.0, 1.5}, grid=true, subPlot=101, colors={{28,108,200}}); +createPlot(id=1, position={34, 9, 995, 662}, y={"tOn.y"}, range={0.0, 1.0, 0.0, 0.4}, grid=true, subPlot=102, colors={{28,108,200}}); +createPlot(id=1, position={34, 9, 995, 662}, y={"tOff.y"}, range={0.0, 1.0, -1.0, 1.0}, grid=true, subPlot=103, colors={{28,108,200}}); +createPlot(id=1, position={34, 9, 995, 662}, y={"tunSta.y"}, range={0.0, 1.0, -1.0, 2.0}, grid=true, subPlot=104, colors={{28,108,200}}); +createPlot(id=1, position={34, 9, 995, 662}, y={"gai.k"}, range={0.0, 1.0, -1000.0, 1000.0}, grid=true, subPlot=105, colors={{28,108,200}}); \ No newline at end of file diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mos index c7e2bede17c..532f901efaf 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mos @@ -1,4 +1,6 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation.TimeConstantDelay", method="Cvode", tolerance=1e-06, resultFile="TimeConstantDelay"); -createPlot(id=1, position={35, 35, 1484, 920}, y={"timConDel.T", "RefDat.y[4]"}, range={0.0, 1.0, 0.4, 1.6}, grid=true, subPlot=1, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={35, 35, 1484, 920}, y={"timConDel.L", "RefDat.y[5]"}, range={0.0, 1.0, 0.0, 0.8}, grid=true, subPlot=2, colors={{28,108,200}, {238,46,47}}); - +createPlot(id=1, position={15, 15, 1101, 667}, y={"tOn.y"}, range={0.0, 1.0, -0.1, 0.20000000000000004}, grid=true, subPlot=101, colors={{28,108,200}}); +createPlot(id=1, position={15, 15, 1101, 667}, y={"k.y"}, range={0.0, 1.0, 0.8, 1.2000000000000002}, grid=true, subPlot=102, colors={{28,108,200}}); +createPlot(id=1, position={15, 15, 1101, 667}, y={"ratioLT.y"}, range={0.0, 1.0, 0.20000000000000004, 0.5000000000000001}, grid=true, subPlot=103, colors={{28,108,200}}); +createPlot(id=1, position={15, 15, 1101, 667}, y={"timConDel.T"}, range={0.0, 1.0, -0.1, 0.20000000000000004}, grid=true, subPlot=104, colors={{28,108,200}}); +createPlot(id=1, position={15, 15, 1101, 667}, y={"timConDel.L"}, range={0.0, 1.0, -0.05, 0.05}, grid=true, subPlot=105, colors={{28,108,200}}); \ No newline at end of file diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mos index aa5bf929c1c..746336ecd8e 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mos @@ -1,5 +1,5 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIDWithFirstOrderAMIGO", stopTime=10000, method="Cvode", tolerance=1e-06, resultFile="PIDWithFirstOrderAMIGO"); -createPlot(id=1, position={95, 95, 1494, 1014}, y={"PID.u_s", "PID.u_m"}, range={0.0, 10000.0, -0.5, 1.5}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={95, 95, 1494, 1014}, y={"PIDWitTun.u_s", "PIDWitTun.u_m"}, range={0.0, 10000.0, -0.5, 1.5}, autoscale=false, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={95, 95, 1494, 1014}, y={"resSig.y"}, range={0.0, 10000.0, -0.5, 1.5}, autoscale=false, grid=true, subPlot=103, colors={{28,108,200}}); - +createPlot(id=1, position={58, 0, 1212, 639}, y={"PID.u_s", "PID.u_m"}, range={0.0, 10000.0, -0.5, 1.5}, autoscale=false, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={58, 0, 1212, 639}, y={"PIDWitTun.u_s", "PIDWitTun.u_m"}, range={0.0, 10000.0, -1.0, 2.0}, autoscale=false, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={58, 0, 1212, 639}, y={"autTunSig.y"}, range={0.0, 10000.0, -1.0, 2.0}, autoscale=false, grid=true, subPlot=103, colors={{28,108,200}}); +createPlot(id=1, position={58, 0, 1212, 639}, y={"PIDWitTun.conProMod.triSta", "PIDWitTun.conProMod.triEnd"}, range={0.0, 10000.0, -1.0, 2.0}, autoscale=false, grid=true, subPlot=104, colors={{28,108,200}, {28,108,200}}); \ No newline at end of file diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mos index 991b79a130c..e8d9a4f280b 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mos @@ -1,5 +1,5 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIWithFirstOrderAMIGO", stopTime=10000, method="Cvode", tolerance=1e-06, resultFile="PIWithFirstOrderAMIGO"); -createPlot(id=1, position={95, 95, 1494, 1014}, y={"PI.u_s", "PI.u_m"}, range={0.0, 10000.0, -0.5, 1.5}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={95, 95, 1494, 1014}, y={"PIWitTun.u_s", "PIWitTun.u_m"}, range={0.0, 10000.0, -0.5, 1.5}, autoscale=false, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={95, 95, 1494, 1014}, y={"resSig.y"}, range={0.0, 10000.0, -0.5, 1.5}, autoscale=false, grid=true, subPlot=103, colors={{28,108,200}}); - +createPlot(id=1, position={30, -20, 776, 525}, y={"PI.u_s", "PI.u_m"}, range={0.0, 10000.0, -0.5, 1.5}, autoscale=false, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={30, -20, 776, 525}, y={"PIWitTun.u_s", "PIWitTun.u_m"}, range={0.0, 10000.0, -2.0, 2.0}, autoscale=false, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={30, -20, 776, 525}, y={"autTunSig.y"}, range={0.0, 10000.0, -1.0, 2.0}, autoscale=false, grid=true, subPlot=103, colors={{28,108,200}}); +createPlot(id=1, position={30, -20, 776, 525}, y={"PIWitTun.conProMod.triSta", "PIWitTun.conProMod.triEnd"}, range={0.0, 10000.0, -1.0, 2.0}, autoscale=false, grid=true, subPlot=104, colors={{28,108,200}, {28,108,200}}); \ No newline at end of file diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PI.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PI.mos index 3a09b145cf4..77a1355d2ae 100644 --- a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PI.mos +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PI.mos @@ -1,7 +1,8 @@ compareVars := { + "kp.y", + "T.y", + "L.y", "PI.k", - "RefDat.y[4]", - "PI.Ti", - "RefDat.y[5]" + "PI.Ti" }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PID.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PID.mos index 88884746984..740f43f9e5f 100644 --- a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PID.mos +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PID.mos @@ -1,9 +1,9 @@ compareVars := { + "kp.y", + "T.y", + "L.y", "PID.k", - "RefDat.y[4]", "PID.Ti", - "RefDat.y[5]", - "PID.Td", - "RefDat.y[6]" + "PID.Td" }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDDerivativeTime.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDDerivativeTime.mos index ce4a3de13f7..93f2e57a4dc 100644 --- a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDDerivativeTime.mos +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDDerivativeTime.mos @@ -1,7 +1,6 @@ compareVars := { - "PIDDerTim.T", - "PIDDerTim.L", - "RefDat.y[6]", + "T.y", + "L.y", "PIDDerTim.Td" }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDGain.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDGain.mos index 5ff7ba0e9de..0c289566e5d 100644 --- a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDGain.mos +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDGain.mos @@ -1,8 +1,7 @@ compareVars := { - "PIDGai.kp", - "PIDGai.T", - "PIDGai.L", - "PIDGai.k", - "RefDat.y[4]" + "kp.y", + "T.y", + "L.y", + "PIDGai.k" }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDIntegralTime.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDIntegralTime.mos index 3c2f71043da..d72c9de6bb6 100644 --- a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDIntegralTime.mos +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDIntegralTime.mos @@ -1,7 +1,6 @@ compareVars := { - "PIDIntTim.T", - "PIDIntTim.L", - "PIDIntTim.Ti", - "RefDat.y[5]" + "T.y", + "L.y", + "PIDIntTim.Ti" }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIGain.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIGain.mos index 13622aadd34..e40a2627179 100644 --- a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIGain.mos +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIGain.mos @@ -1,8 +1,7 @@ compareVars := { - "PIGai.kp", - "PIGai.T", - "PIGai.L", - "PIGai.k", - "RefDat.y[4]" + "kp.y", + "T.y", + "L.y", + "PIGai.k" }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIIntegralTime.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIIntegralTime.mos index 1d03b91d2a5..2cb6ac67412 100644 --- a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIIntegralTime.mos +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIIntegralTime.mos @@ -1,7 +1,6 @@ compareVars := { - "PIIntTim.T", - "PIIntTim.L", - "PIIntTim.Ti", - "RefDat.y[5]" + "T.y", + "L.y", + "PIIntTim.Ti" }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.Controller.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.Controller.mos index af76d746497..13d10ca0a1c 100644 --- a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.Controller.mos +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.Controller.mos @@ -1,5 +1,8 @@ compareVars := { "relCon.u_m", - "relCon.y" + "relRes.y", + "relCon.y", + "relCon.yErr", + "relCon.yOn" }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.HalfPeriodRatio.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.HalfPeriodRatio.mos index bf9da570447..b2a7753f795 100644 --- a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.HalfPeriodRatio.mos +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.HalfPeriodRatio.mos @@ -1,6 +1,8 @@ compareVars := { - "halPerRat.tOn", - "halPerRat.tOff", + "tOn.y", + "tOff.y", + "halPerRat.triSta", + "halPerRat.triEnd", "halPerRat.rho" }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.NormalizedTimeDelay.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.NormalizedTimeDelay.mos index eb51aa56850..2fd11ea858d 100644 --- a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.NormalizedTimeDelay.mos +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.NormalizedTimeDelay.mos @@ -1,6 +1,5 @@ compareVars := { - "norTimDel.rho", - "norTimDel.tau", - "RefDat.y[2]" + "rho.y", + "norTimDel.tau" }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.OnOffPeriod.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.OnOffPeriod.mos index 22cc6bbd842..e179cbec4c8 100644 --- a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.OnOffPeriod.mos +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.OnOffPeriod.mos @@ -1,6 +1,6 @@ compareVars := { - "onOffPer.On", + "relRes.y", "onOffPer.tOn", "onOffPer.tOff" }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.ResponseProcess.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.ResponseProcess.mos index b23b588f5e6..953c9b46153 100644 --- a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.ResponseProcess.mos +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.ResponseProcess.mos @@ -1,6 +1,6 @@ compareVars := { - "relRes.y[1]", + "relRes.y", "resPro.tOn", "resPro.tOff", "resPro.triEnd", diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation.ControlProcessModel.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation.ControlProcessModel.mos index bdcb5cc8c5b..9598baced42 100644 --- a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation.ControlProcessModel.mos +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation.ControlProcessModel.mos @@ -1,7 +1,12 @@ compareVars := { + "tunSta.y", + "tunEnd.y", + "u.y", + "ratioLT.y", + "tOn.y", + "tOff.y", + "conProMod.k", "conProMod.T", - "RefDat.y[5]", - "conProMod.L", - "RefDat.y[6]" + "conProMod.L" }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation.Gain.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation.Gain.mos index ce97a8c517e..dee5840e998 100644 --- a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation.Gain.mos +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation.Gain.mos @@ -1,8 +1,8 @@ compareVars := { - "u.y[1]", - "tOn.y[1]", - "tOff.y[1]", - "tunSta.y[1]", + "u.y", + "tOn.y", + "tOff.y", + "tunSta.y", "gai.k" }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation.TimeConstantDelay.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation.TimeConstantDelay.mos index 2ce020bfed5..17a27021194 100644 --- a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation.TimeConstantDelay.mos +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation.TimeConstantDelay.mos @@ -1,7 +1,8 @@ compareVars := { + "tOn.y", + "k.y", + "ratioLT.y", "timConDel.T", - "RefDat.y[4]", - "timConDel.L", - "RefDat.y[5]" + "timConDel.L" }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIDWithFirstOrderAMIGO.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIDWithFirstOrderAMIGO.mos index 2d59b52e587..5b262360594 100644 --- a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIDWithFirstOrderAMIGO.mos +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIDWithFirstOrderAMIGO.mos @@ -4,5 +4,7 @@ compareVars := "PID.u_m", "PIDWitTun.u_s", "PIDWitTun.u_m", - "resSig.y" + "autTunSig.y", + "PIDWitTun.conProMod.triSta", + "PIDWitTun.conProMod.triEnd" }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIWithFirstOrderAMIGO.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIWithFirstOrderAMIGO.mos index 7d82c10e9aa..4238ae355f9 100644 --- a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIWithFirstOrderAMIGO.mos +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIWithFirstOrderAMIGO.mos @@ -4,5 +4,7 @@ compareVars := "PI.u_m", "PIWitTun.u_s", "PIWitTun.u_m", - "resSig.y" + "autTunSig.y", + "PIWitTun.conProMod.triSta", + "PIWitTun.conProMod.triEnd" }; From 8e8c29f2df683e836416bef65074aefaaa6bc71e Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Sun, 18 Jun 2023 23:50:07 -0400 Subject: [PATCH 082/214] update the reference dataset --- ...thAutotuning_AutoTuner_AMIGO_Validation_PI.txt | 7 ++++--- ...hAutotuning_AutoTuner_AMIGO_Validation_PID.txt | 8 ++++---- ...toTuner_AMIGO_Validation_PIDDerivativeTime.txt | 7 +++---- ...otuning_AutoTuner_AMIGO_Validation_PIDGain.txt | 9 ++++----- ...AutoTuner_AMIGO_Validation_PIDIntegralTime.txt | 7 +++---- ...totuning_AutoTuner_AMIGO_Validation_PIGain.txt | 9 ++++----- ..._AutoTuner_AMIGO_Validation_PIIntegralTime.txt | 9 ++++----- ...WithAutotuning_Relay_Validation_Controller.txt | 9 ++++++--- ...utotuning_Relay_Validation_HalfPeriodRatio.txt | 10 ++++++---- ...uning_Relay_Validation_NormalizedTimeDelay.txt | 7 +++---- ...ithAutotuning_Relay_Validation_OnOffPeriod.txt | 8 ++++---- ...utotuning_Relay_Validation_ResponseProcess.txt | 14 +++++++------- ...Timedelayed_Validation_ControlProcessModel.txt | 15 ++++++++++----- ...tion_FirstOrderTimedelayed_Validation_Gain.txt | 12 ++++++------ ...erTimedelayed_Validation_TimeConstantDelay.txt | 11 ++++++----- ...totuning_Validation_PIDWithFirstOrderAMIGO.txt | 10 ++++++---- ...utotuning_Validation_PIWithFirstOrderAMIGO.txt | 10 ++++++---- 17 files changed, 86 insertions(+), 76 deletions(-) diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PI.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PI.txt index 83e69554d6f..f4293b01120 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PI.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PI.txt @@ -1,4 +1,4 @@ -last-generated=2023-04-06 +last-generated=2023-06-18 statistics-simulation= { "linear": " ", @@ -6,7 +6,8 @@ statistics-simulation= "numerical Jacobians": "0" } time=[0e+00, 1e+00] +kp.y=[1e+00, 1.009999990686771e+00, 1.019999981373543e+00, 1.029999972060313e+00, 1.039999962747139e+00, 1.049999951571236e+00, 1.059999944120708e+00, 1.07000005215405e+00, 1.080000044703457e+00, 1.090000029802376e+00, 1.100000022351764e+00, 1.110000014901152e+00, 1.120000007450541e+00, 1.129999999999929e+00, 1.139999985098848e+00, 1.149999970197766e+00, 1.159999970197624e+00, 1.169999955296543e+00, 1.179999940395462e+00, 1.190000059604609e+00, 1.20000004470335e+00, 1.210000044703386e+00, 1.220000029802305e+00, 1.230000014901223e+00, 1.240000014901081e+00, 1.25e+00, 1.259999999999858e+00, 1.269999970197838e+00, 1.279999970197695e+00, 1.289999970198051e+00, 1.299999940395533e+00, 1.309999940395391e+00, 1.320000059604538e+00, 1.330000029801736e+00, 1.340000029802376e+00, 1.350000029802234e+00, 1.360000000000213e+00, 1.370000000000071e+00, 1.379999999999929e+00, 1.389999999999787e+00, 1.399999970197766e+00, 1.409999970197624e+00, 1.419999970198264e+00, 1.429999940395462e+00, 1.440000059604609e+00, 1.450000059604467e+00, 1.460000029801949e+00, 1.470000029802305e+00, 1.480000029802162e+00, 1.490000000000142e+00, 1.5e+00, 1.509999999999716e+00, 1.519999999999432e+00, 1.529999999999147e+00, 1.539999940395995e+00, 1.549999940395711e+00, 1.559999940395355e+00, 1.570000059604432e+00, 1.580000059604147e+00, 1.590000059603863e+00, 1.60000000000071e+00, 1.610000000000426e+00, 1.620000000000142e+00, 1.629999999999858e+00, 1.639999999999574e+00, 1.64999999999929e+00, 1.659999940396137e+00, 1.669999940395853e+00, 1.679999940395568e+00, 1.690000059604645e+00, 1.700000059604289e+00, 1.710000059604005e+00, 1.720000000000853e+00, 1.730000000000568e+00, 1.740000000000284e+00, 1.75e+00, 1.759999999999716e+00, 1.769999999999432e+00, 1.779999999999147e+00, 1.789999940395995e+00, 1.799999940395711e+00, 1.809999940395355e+00, 1.820000059604432e+00, 1.830000059604147e+00, 1.840000059603863e+00, 1.85000000000071e+00, 1.860000000000426e+00, 1.870000000000142e+00, 1.879999999999858e+00, 1.889999999999574e+00, 1.89999999999929e+00, 1.909999940396137e+00, 1.919999940395853e+00, 1.929999940395568e+00, 1.940000059604645e+00, 1.950000059604289e+00, 1.960000059604005e+00, 1.970000000000853e+00, 1.980000000000568e+00, 1.990000000000284e+00, 2e+00] +T.y=[5e-01, 5.049999953433857e-01, 5.099999906867714e-01, 5.149999860301567e-01, 5.199999813735693e-01, 5.24999975785618e-01, 5.29999972060354e-01, 5.350000260770249e-01, 5.400000223517285e-01, 5.450000149011879e-01, 5.50000011175882e-01, 5.550000074505762e-01, 5.600000037252704e-01, 5.649999999999645e-01, 5.699999925494239e-01, 5.749999850988832e-01, 5.799999850988121e-01, 5.849999776482715e-01, 5.899999701977309e-01, 5.950000298023046e-01, 6.000000223516752e-01, 6.050000223516929e-01, 6.100000149011523e-01, 6.150000074506117e-01, 6.200000074505406e-01, 6.25e-01, 6.29999999999929e-01, 6.349999850989188e-01, 6.399999850988477e-01, 6.449999850990253e-01, 6.499999701977665e-01, 6.549999701976954e-01, 6.600000298022691e-01, 6.650000149008681e-01, 6.700000149011879e-01, 6.750000149011168e-01, 6.800000000001065e-01, 6.850000000000355e-01, 6.899999999999645e-01, 6.949999999998935e-01, 6.999999850988832e-01, 7.049999850988121e-01, 7.099999850991319e-01, 7.149999701977309e-01, 7.200000298023046e-01, 7.250000298022335e-01, 7.300000149009747e-01, 7.350000149011523e-01, 7.400000149010812e-01, 7.45000000000071e-01, 7.5e-01, 7.549999999998579e-01, 7.599999999997158e-01, 7.649999999995737e-01, 7.699999701979974e-01, 7.749999701978553e-01, 7.799999701976776e-01, 7.850000298022158e-01, 7.900000298020737e-01, 7.950000298019316e-01, 8.000000000003552e-01, 8.050000000002131e-01, 8.10000000000071e-01, 8.14999999999929e-01, 8.199999999997869e-01, 8.249999999996448e-01, 8.299999701980684e-01, 8.349999701979263e-01, 8.399999701977842e-01, 8.450000298023224e-01, 8.500000298021447e-01, 8.550000298020026e-01, 8.600000000004263e-01, 8.650000000002842e-01, 8.700000000001421e-01, 8.75e-01, 8.799999999998579e-01, 8.849999999997158e-01, 8.899999999995737e-01, 8.949999701979974e-01, 8.999999701978553e-01, 9.049999701976776e-01, 9.100000298022158e-01, 9.150000298020737e-01, 9.200000298019316e-01, 9.250000000003552e-01, 9.300000000002131e-01, 9.35000000000071e-01, 9.39999999999929e-01, 9.449999999997869e-01, 9.499999999996448e-01, 9.549999701980684e-01, 9.599999701979263e-01, 9.649999701977842e-01, 9.700000298023224e-01, 9.750000298021447e-01, 9.800000298020026e-01, 9.850000000004263e-01, 9.900000000002842e-01, 9.950000000001421e-01, 1e+00] +L.y=[3.00000011920929e-01, 3.030000031664979e-01, 3.059999944120668e-01, 3.089999856576355e-01, 3.120000067055137e-01, 3.149999973922931e-01, 3.179999891966649e-01, 3.210000096857531e-01, 3.240000014901241e-01, 3.269999910593406e-01, 3.300000126659803e-01, 3.33000004470351e-01, 3.359999962747217e-01, 3.389999880790924e-01, 3.42000007450578e-01, 3.449999970197411e-01, 3.479999910593193e-01, 3.510000104308049e-01, 3.53999999999968e-01, 3.569999940395462e-01, 3.600000134110318e-01, 3.630000074505122e-01, 3.659999970197731e-01, 3.689999865889985e-01, 3.720000104307569e-01, 3.75e-01, 3.779999940395782e-01, 3.810000089406488e-01, 3.840000029802269e-01, 3.86999997019805e-01, 3.899999821187309e-01, 3.930000059604538e-01, 3.96000000000032e-01, 3.989999850989756e-01, 4.020000089406807e-01, 4.050000029802589e-01, 4.079999880792203e-01, 4.110000119209076e-01, 4.140000059604858e-01, 4.170000000000639e-01, 4.19999985098901e-01, 4.230000089406594e-01, 4.260000029802908e-01, 4.289999880791456e-01, 4.320000119209041e-01, 4.350000059605177e-01, 4.379999910593903e-01, 4.410000149011488e-01, 4.440000089405848e-01, 4.469999940394929e-01, 4.49999988079071e-01, 4.530000119207869e-01, 4.560000059604645e-01, 4.59e-01, 4.620000059604645e-01, 4.65e-01, 4.679999940395497e-01, 4.70999988079071e-01, 4.740000119206803e-01, 4.770000059604645e-01, 4.799999821189618e-01, 4.830000059604645e-01, 4.86e-01, 4.889999940395355e-01, 4.920000178811803e-01, 4.950000119205737e-01, 4.97999988079071e-01, 5.009999821188552e-01, 5.04000005960571e-01, 5.070000298023082e-01, 5.099999940393579e-01, 5.130000178810736e-01, 5.159999642376395e-01, 5.189999880793552e-01, 5.220000119207868e-01, 5.249999761581421e-01, 5.279999999998579e-01, 5.310000238415737e-01, 5.339999880794973e-01, 5.369999940398553e-01, 5.400000178812158e-01, 5.429999821186208e-01, 5.460000059603579e-01, 5.490000298020737e-01, 5.519999940399263e-01, 5.550000000003552e-01, 5.580000238416447e-01, 5.609999880791421e-01, 5.640000119208579e-01, 5.669999761583553e-01, 5.699999999996448e-01, 5.730000059600737e-01, 5.759999701979263e-01, 5.789999940396421e-01, 5.820000178813792e-01, 5.849999821187842e-01, 5.880000059601447e-01, 5.910000119205027e-01, 5.939999761584263e-01, 5.970000000001421e-01, 6.000000238418579e-01] PI.k=[3.427083194255829e-01, 3.393151759351885e-01, 3.359885512312877e-01, 3.327265379651081e-01, 3.295272287879297e-01, 3.263888957436638e-01, 3.233097489565795e-01, 3.202881515919868e-01, 3.173225218774036e-01, 3.144113133751546e-01, 3.115530316289475e-01, 3.087462483181639e-01, 3.059895925359474e-01, 3.032817231754192e-01, 3.006213308955236e-01, 2.980072513794458e-01, 2.954382291283917e-01, 2.929131095125426e-01, 2.904307859889563e-01, 2.87990182062168e-01, 2.855902917337069e-01, 2.83230034964896e-01, 2.80908465111399e-01, 2.786246547629217e-01, 2.763776767237978e-01, 2.741666734218597e-01, 2.719907442042355e-01, 2.698490940513938e-01, 2.677408757323145e-01, 2.656653804310025e-01, 2.636218095193805e-01, 2.616094057560394e-01, 2.596275196334218e-01, 2.576754416636275e-01, 2.557524747532071e-01, 2.538580287231854e-01, 2.519914236387794e-01, 2.501520821230496e-01, 2.483393690362323e-01, 2.465527479346059e-01, 2.447916726773723e-01, 2.430555516286001e-01, 2.413438983357397e-01, 2.39656181343727e-01, 2.379918988584401e-01, 2.363505791094309e-01, 2.347317351424633e-01, 2.331349251766394e-01, 2.315596772358271e-01, 2.300055935819328e-01, 2.284722179174423e-01, 2.269591525783839e-01, 2.254660101292155e-01, 2.239923733365712e-01, 2.225378782802999e-01, 2.211021499971469e-01, 2.196848246836937e-01, 2.182855596147481e-01, 2.169040120607019e-01, 2.155398243923085e-01, 2.141927065620691e-01, 2.128623146874381e-01, 2.115483588254002e-01, 2.102505111511907e-01, 2.089684885416811e-01, 2.077020227735896e-01, 2.064508083334731e-01, 2.052145769863259e-01, 2.039930531137161e-01, 2.027859982970915e-01, 2.015931294150367e-01, 2.004142229472307e-01, 1.992490324775822e-01, 1.980973056962994e-01, 1.969588111717359e-01, 1.958333402872086e-01, 1.947206397246824e-01, 1.936205306669547e-01, 1.9253277469502e-01, 1.914571695654425e-01, 1.903935236440403e-01, 1.893416198604744e-01, 1.883012794016939e-01, 1.872723085509738e-01, 1.862545284931821e-01, 1.852477514800648e-01, 1.842517866968949e-01, 1.832664911656741e-01, 1.822916711718399e-01, 1.813271628020862e-01, 1.803728021423963e-01, 1.794284457789326e-01, 1.784939185415396e-01, 1.775690919787531e-01, 1.766537872768098e-01, 1.75747855424508e-01, 1.748511921117281e-01, 1.739636237876566e-01, 1.730850206614606e-01, 1.722152390396732e-01, 1.713541597127914e-01] -RefDat.y[4]=[3.429999947547913e-01, 3.398999869130577e-01, 3.368000088736398e-01, 3.337000010319031e-01, 3.30599993190166e-01, 3.27499985925856e-01, 3.244000073090146e-01, 3.213000000447048e-01, 3.181999916255684e-01, 3.151000153183516e-01, 3.120000068992423e-01, 3.093999920725853e-01, 3.068000071227286e-01, 3.041999923706296e-01, 3.016000093579262e-01, 2.989999965429004e-01, 2.964000096559173e-01, 2.937999968409448e-01, 2.912000138282413e-01, 2.885999971389892e-01, 2.860000141262857e-01, 2.838000044703464e-01, 2.815999982118603e-01, 2.793999919533742e-01, 2.772000122189506e-01, 2.750000059604645e-01, 2.727999964237185e-01, 2.705999934434923e-01, 2.684000137090509e-01, 2.662000041723226e-01, 2.640000011920964e-01, 2.621000115632758e-01, 2.601999924898905e-01, 2.583000088809533e-01, 2.563999898076212e-01, 2.54500000536416e-01, 2.526000169275678e-01, 2.506999978542534e-01, 2.487999936819226e-01, 2.469000044106819e-01, 2.450000059008412e-01, 2.433000051856057e-01, 2.416000045895635e-01, 2.398999941587416e-01, 2.381999935626994e-01, 2.364999929666572e-01, 2.347999974369965e-01, 2.330999968409544e-01, 2.313999962449122e-01, 2.297000007152515e-01, 2.280000001192093e-01, 2.266000048875667e-01, 2.251999947549049e-01, 2.237999995231202e-01, 2.223999977350555e-01, 2.21000002503324e-01, 2.196000072717624e-01, 2.181999971390197e-01, 2.168000019073238e-01, 2.153999917747153e-01, 2.140000048874388e-01, 2.127999978541902e-01, 2.116000061988688e-01, 2.103999996423863e-01, 2.091999930859038e-01, 2.080000014305825e-01, 2.068000020264798e-01, 2.055999954701216e-01, 2.044000038146759e-01, 2.031999972581849e-01, 2.020000056027833e-01, 2.007999990463896e-01, 1.995999996422869e-01, 1.984000079869656e-01, 1.972000014304831e-01, 1.959999948740005e-01, 1.948000032186792e-01, 1.935999966621967e-01, 1.923999901057142e-01, 1.912000056027726e-01, 1.899999990462901e-01, 1.88999995827682e-01, 1.879999928474959e-01, 1.870000047683716e-01, 1.860000017881394e-01, 1.850000047683716e-01, 1.840000017881394e-01, 1.829999988079071e-01, 1.819999958276749e-01, 1.809999928475492e-01, 1.800000050067546e-01, 1.79100009178959e-01, 1.782000079869229e-01, 1.773000067948869e-01, 1.764000056028267e-01, 1.755000044107259e-01, 1.746000032186188e-01, 1.737000073908054e-01, 1.728000061987694e-01, 1.719000050067333e-01, 1.710000038146973e-01] PI.Ti=[4.688059687614441e-01, 4.734940231894267e-01, 4.781820776174092e-01, 4.828701618477139e-01, 4.875582162756968e-01, 4.922462698304613e-01, 4.969343251316619e-01, 5.016223786864307e-01, 5.063104637899213e-01, 5.10998485796012e-01, 5.156865708994577e-01, 5.203746560029922e-01, 5.250626815019174e-01, 5.297507666053275e-01, 5.344387886114182e-01, 5.391268702219761e-01, 5.438148992138602e-01, 5.485029808244891e-01, 5.531910624350115e-01, 5.578790914268956e-01, 5.625671730374713e-01, 5.672552020293553e-01, 5.71943283639931e-01, 5.766313652505066e-01, 5.813193942423907e-01, 5.860074758529663e-01, 5.906955048448503e-01, 5.953835794694728e-01, 6.000716680660017e-01, 6.047596970578858e-01, 6.094477716825082e-01, 6.141358006744633e-01, 6.18823889270708e-01, 6.235119638955435e-01, 6.281999928875343e-01, 6.328880814837788e-01, 6.375760965043604e-01, 6.42264185100463e-01, 6.46952214092347e-01, 6.51640302688876e-01, 6.563283773134984e-01, 6.610164063053824e-01, 6.657044949015205e-01, 6.703925099221021e-01, 6.750805985184178e-01, 6.797686871145914e-01, 6.84456702135173e-01, 6.891447907314177e-01, 6.938328197233372e-01, 6.985208943479597e-01, 7.032089829444885e-01, 7.078970119363059e-01, 7.125851005321998e-01, 7.172731295245857e-01, 7.219611901776515e-01, 7.266492191698242e-01, 7.313373077659689e-01, 7.360253963621802e-01, 7.407134253542108e-01, 7.454015139498914e-01, 7.500895149998046e-01, 7.547776035959826e-01, 7.594656921920185e-01, 7.64153721183836e-01, 7.688418097798719e-01, 7.735298387721157e-01, 7.782178994251815e-01, 7.829059880216437e-01, 7.875940170136743e-01, 7.922821056098855e-01, 7.969701346017408e-01, 8.016582231975635e-01, 8.063462838512688e-01, 8.110343128436547e-01, 8.157224014395486e-01, 8.20410430431366e-01, 8.250985190275439e-01, 8.297865480196457e-01, 8.344746366161079e-01, 8.391626972691737e-01, 8.438507262613464e-01, 8.485388148574201e-01, 8.532268438492708e-01, 8.57914932445733e-01, 8.626030210414136e-01, 8.672910220913268e-01, 8.719791106870785e-01, 8.766671396790381e-01, 8.813552282752161e-01, 8.860433168713941e-01, 8.907313458636379e-01, 8.954194065167037e-01, 9.001074355090185e-01, 9.047955241049833e-01, 9.094836127014078e-01, 9.14171641693263e-01, 9.188597302890857e-01, 9.235477313389989e-01, 9.282358199346085e-01, 9.329238489267102e-01, 9.376119375228882e-01] -RefDat.y[5]=[4.690000116825104e-01, 4.736999870397178e-01, 4.78399992199241e-01, 4.830999973587672e-01, 4.87800002518294e-01, 4.92500006802382e-01, 4.972000128373469e-01, 5.019000171214303e-01, 5.066000231563718e-01, 5.113000256895609e-01, 5.159999721199547e-01, 5.206999781549045e-01, 5.253999841898987e-01, 5.30099990224893e-01, 5.347999927580466e-01, 5.394999952911647e-01, 5.442000048280172e-01, 5.489000073611531e-01, 5.536000098942889e-01, 5.583000194310705e-01, 5.630000219642775e-01, 5.676000148415429e-01, 5.722000008344625e-01, 5.767999868273822e-01, 5.813999796748049e-01, 5.860000252723694e-01, 5.906000181197921e-01, 5.951999972582087e-01, 5.997999901056315e-01, 6.043999829530542e-01, 6.090000216961156e-01, 6.136999715090234e-01, 6.183999810458051e-01, 6.23099976575615e-01, 6.277999861121834e-01, 6.324999956489293e-01, 6.371999911783485e-01, 6.41900000715201e-01, 6.466000102519115e-01, 6.513000197884798e-01, 6.560000153183253e-01, 6.607000248550713e-01, 6.654000343916396e-01, 6.70099970317018e-01, 6.747999798536575e-01, 6.7949998939051e-01, 6.841999849201779e-01, 6.888999944567817e-01, 6.936000039936343e-01, 6.982999995230534e-01, 7.03000009059906e-01, 7.077000185964076e-01, 7.124000281329091e-01, 7.171000376694108e-01, 7.218000191925997e-01, 7.26499969125096e-01, 7.311999786615642e-01, 7.358999881983123e-01, 7.405999977350981e-01, 7.453000072718838e-01, 7.499999887942201e-01, 7.54699998331006e-01, 7.594000078677918e-01, 7.641000174044354e-01, 7.688000269409371e-01, 7.735000364774387e-01, 7.781999583966223e-01, 7.828999679331239e-01, 7.875999774696255e-01, 7.922999870062315e-01, 7.969999965429839e-01, 8.017000060797697e-01, 8.06399987602106e-01, 8.110999971388918e-01, 8.158000066756775e-01, 8.205000162124634e-01, 8.25200025748965e-01, 8.299000352854665e-01, 8.34599985218176e-01, 8.392999667411518e-01, 8.439999762776533e-01, 8.486999858141215e-01, 8.533999953508696e-01, 8.581000048876555e-01, 8.628000144244412e-01, 8.674999959467775e-01, 8.722000054835634e-01, 8.769000150203492e-01, 8.816000245569928e-01, 8.863000340934944e-01, 8.909999840260618e-01, 8.956999655491796e-01, 9.003999750856813e-01, 9.050999846221829e-01, 9.097999941587889e-01, 9.145000036955413e-01, 9.19200013232327e-01, 9.238999947546633e-01, 9.286000042914492e-01, 9.333000138282349e-01, 9.380000233650208e-01] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PID.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PID.txt index ce74494122b..0dea7daa285 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PID.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PID.txt @@ -1,4 +1,4 @@ -last-generated=2023-04-06 +last-generated=2023-06-18 statistics-simulation= { "linear": " ", @@ -6,9 +6,9 @@ statistics-simulation= "numerical Jacobians": "0" } time=[0e+00, 1e+00] +kp.y=[1e+00, 1.009999990686771e+00, 1.019999981373543e+00, 1.029999972060313e+00, 1.039999962747139e+00, 1.049999951571236e+00, 1.059999944120708e+00, 1.07000005215405e+00, 1.080000044703457e+00, 1.090000029802376e+00, 1.100000022351764e+00, 1.110000014901152e+00, 1.120000007450541e+00, 1.129999999999929e+00, 1.139999985098848e+00, 1.149999970197766e+00, 1.159999970197624e+00, 1.169999955296543e+00, 1.179999940395462e+00, 1.190000059604609e+00, 1.20000004470335e+00, 1.210000044703386e+00, 1.220000029802305e+00, 1.230000014901223e+00, 1.240000014901081e+00, 1.25e+00, 1.259999999999858e+00, 1.269999970197838e+00, 1.279999970197695e+00, 1.289999970198051e+00, 1.299999940395533e+00, 1.309999940395391e+00, 1.320000059604538e+00, 1.330000029801736e+00, 1.340000029802376e+00, 1.350000029802234e+00, 1.360000000000213e+00, 1.370000000000071e+00, 1.379999999999929e+00, 1.389999999999787e+00, 1.399999970197766e+00, 1.409999970197624e+00, 1.419999970198264e+00, 1.429999940395462e+00, 1.440000059604609e+00, 1.450000059604467e+00, 1.460000029801949e+00, 1.470000029802305e+00, 1.480000029802162e+00, 1.490000000000142e+00, 1.5e+00, 1.509999999999716e+00, 1.519999999999432e+00, 1.529999999999147e+00, 1.539999940395995e+00, 1.549999940395711e+00, 1.559999940395355e+00, 1.570000059604432e+00, 1.580000059604147e+00, 1.590000059603863e+00, 1.60000000000071e+00, 1.610000000000426e+00, 1.620000000000142e+00, 1.629999999999858e+00, 1.639999999999574e+00, 1.64999999999929e+00, 1.659999940396137e+00, 1.669999940395853e+00, 1.679999940395568e+00, 1.690000059604645e+00, 1.700000059604289e+00, 1.710000059604005e+00, 1.720000000000853e+00, 1.730000000000568e+00, 1.740000000000284e+00, 1.75e+00, 1.759999999999716e+00, 1.769999999999432e+00, 1.779999999999147e+00, 1.789999940395995e+00, 1.799999940395711e+00, 1.809999940395355e+00, 1.820000059604432e+00, 1.830000059604147e+00, 1.840000059603863e+00, 1.85000000000071e+00, 1.860000000000426e+00, 1.870000000000142e+00, 1.879999999999858e+00, 1.889999999999574e+00, 1.89999999999929e+00, 1.909999940396137e+00, 1.919999940395853e+00, 1.929999940395568e+00, 1.940000059604645e+00, 1.950000059604289e+00, 1.960000059604005e+00, 1.970000000000853e+00, 1.980000000000568e+00, 1.990000000000284e+00, 2e+00] +T.y=[5e-01, 5.049999953433857e-01, 5.099999906867714e-01, 5.149999860301567e-01, 5.199999813735693e-01, 5.24999975785618e-01, 5.29999972060354e-01, 5.350000260770249e-01, 5.400000223517285e-01, 5.450000149011879e-01, 5.50000011175882e-01, 5.550000074505762e-01, 5.600000037252704e-01, 5.649999999999645e-01, 5.699999925494239e-01, 5.749999850988832e-01, 5.799999850988121e-01, 5.849999776482715e-01, 5.899999701977309e-01, 5.950000298023046e-01, 6.000000223516752e-01, 6.050000223516929e-01, 6.100000149011523e-01, 6.150000074506117e-01, 6.200000074505406e-01, 6.25e-01, 6.29999999999929e-01, 6.349999850989188e-01, 6.399999850988477e-01, 6.449999850990253e-01, 6.499999701977665e-01, 6.549999701976954e-01, 6.600000298022691e-01, 6.650000149008681e-01, 6.700000149011879e-01, 6.750000149011168e-01, 6.800000000001065e-01, 6.850000000000355e-01, 6.899999999999645e-01, 6.949999999998935e-01, 6.999999850988832e-01, 7.049999850988121e-01, 7.099999850991319e-01, 7.149999701977309e-01, 7.200000298023046e-01, 7.250000298022335e-01, 7.300000149009747e-01, 7.350000149011523e-01, 7.400000149010812e-01, 7.45000000000071e-01, 7.5e-01, 7.549999999998579e-01, 7.599999999997158e-01, 7.649999999995737e-01, 7.699999701979974e-01, 7.749999701978553e-01, 7.799999701976776e-01, 7.850000298022158e-01, 7.900000298020737e-01, 7.950000298019316e-01, 8.000000000003552e-01, 8.050000000002131e-01, 8.10000000000071e-01, 8.14999999999929e-01, 8.199999999997869e-01, 8.249999999996448e-01, 8.299999701980684e-01, 8.349999701979263e-01, 8.399999701977842e-01, 8.450000298023224e-01, 8.500000298021447e-01, 8.550000298020026e-01, 8.600000000004263e-01, 8.650000000002842e-01, 8.700000000001421e-01, 8.75e-01, 8.799999999998579e-01, 8.849999999997158e-01, 8.899999999995737e-01, 8.949999701979974e-01, 8.999999701978553e-01, 9.049999701976776e-01, 9.100000298022158e-01, 9.150000298020737e-01, 9.200000298019316e-01, 9.250000000003552e-01, 9.300000000002131e-01, 9.35000000000071e-01, 9.39999999999929e-01, 9.449999999997869e-01, 9.499999999996448e-01, 9.549999701980684e-01, 9.599999701979263e-01, 9.649999701977842e-01, 9.700000298023224e-01, 9.750000298021447e-01, 9.800000298020026e-01, 9.850000000004263e-01, 9.900000000002842e-01, 9.950000000001421e-01, 1e+00] +L.y=[3.00000011920929e-01, 3.030000031664979e-01, 3.059999944120668e-01, 3.089999856576355e-01, 3.120000067055137e-01, 3.149999973922931e-01, 3.179999891966649e-01, 3.210000096857531e-01, 3.240000014901241e-01, 3.269999910593406e-01, 3.300000126659803e-01, 3.33000004470351e-01, 3.359999962747217e-01, 3.389999880790924e-01, 3.42000007450578e-01, 3.449999970197411e-01, 3.479999910593193e-01, 3.510000104308049e-01, 3.53999999999968e-01, 3.569999940395462e-01, 3.600000134110318e-01, 3.630000074505122e-01, 3.659999970197731e-01, 3.689999865889985e-01, 3.720000104307569e-01, 3.75e-01, 3.779999940395782e-01, 3.810000089406488e-01, 3.840000029802269e-01, 3.86999997019805e-01, 3.899999821187309e-01, 3.930000059604538e-01, 3.96000000000032e-01, 3.989999850989756e-01, 4.020000089406807e-01, 4.050000029802589e-01, 4.079999880792203e-01, 4.110000119209076e-01, 4.140000059604858e-01, 4.170000000000639e-01, 4.19999985098901e-01, 4.230000089406594e-01, 4.260000029802908e-01, 4.289999880791456e-01, 4.320000119209041e-01, 4.350000059605177e-01, 4.379999910593903e-01, 4.410000149011488e-01, 4.440000089405848e-01, 4.469999940394929e-01, 4.49999988079071e-01, 4.530000119207869e-01, 4.560000059604645e-01, 4.59e-01, 4.620000059604645e-01, 4.65e-01, 4.679999940395497e-01, 4.70999988079071e-01, 4.740000119206803e-01, 4.770000059604645e-01, 4.799999821189618e-01, 4.830000059604645e-01, 4.86e-01, 4.889999940395355e-01, 4.920000178811803e-01, 4.950000119205737e-01, 4.97999988079071e-01, 5.009999821188552e-01, 5.04000005960571e-01, 5.070000298023082e-01, 5.099999940393579e-01, 5.130000178810736e-01, 5.159999642376395e-01, 5.189999880793552e-01, 5.220000119207868e-01, 5.249999761581421e-01, 5.279999999998579e-01, 5.310000238415737e-01, 5.339999880794973e-01, 5.369999940398553e-01, 5.400000178812158e-01, 5.429999821186208e-01, 5.460000059603579e-01, 5.490000298020737e-01, 5.519999940399263e-01, 5.550000000003552e-01, 5.580000238416447e-01, 5.609999880791421e-01, 5.640000119208579e-01, 5.669999761583553e-01, 5.699999999996448e-01, 5.730000059600737e-01, 5.759999701979263e-01, 5.789999940396421e-01, 5.820000178813792e-01, 5.849999821187842e-01, 5.880000059601447e-01, 5.910000119205027e-01, 5.939999761584263e-01, 5.970000000001421e-01, 6.000000238418579e-01] PID.k=[9.49999988079071e-01, 9.405940769025434e-01, 9.313725229004063e-01, 9.223300808635801e-01, 9.134615651875749e-01, 9.047619110817563e-01, 8.962264049656377e-01, 8.878504636381082e-01, 8.796296105153333e-01, 8.71559622768467e-01, 8.636363756456097e-01, 8.558558817090551e-01, 8.482142666567333e-01, 8.407079542032606e-01, 8.333333139016039e-01, 8.260869426703776e-01, 8.189654921122889e-01, 8.119658244165794e-01, 8.050847698456679e-01, 7.983193381553978e-01, 7.916666885042356e-01, 7.851239400353422e-01, 7.786885492357827e-01, 7.723577048795445e-01, 7.661290135671943e-01, 7.599999904632568e-01, 7.539682331331621e-01, 7.480315033309721e-01, 7.421875006922803e-01, 7.364340973019762e-01, 7.307692237257306e-01, 7.25190819631675e-01, 7.196969947021409e-01, 7.142857383683391e-01, 7.089552302236118e-01, 7.037036983937234e-01, 6.985294296415383e-01, 6.934306645721287e-01, 6.884058094114541e-01, 6.834532548285637e-01, 6.785714059197273e-01, 6.737588626962995e-01, 6.690140900905474e-01, 6.643356714144705e-01, 6.597222078859937e-01, 6.551724022483081e-01, 6.506849564600254e-01, 6.462585324775614e-01, 6.418918920778675e-01, 6.375839155050956e-01, 6.333333253860474e-01, 6.291390617743208e-01, 6.249999921676779e-01, 6.209150436791022e-01, 6.168831076858616e-01, 6.129032420625347e-01, 6.089743385097797e-01, 6.050955625658969e-01, 6.012658413399742e-01, 5.974842807573385e-01, 5.937500088581863e-01, 5.900621466672895e-01, 5.864197629090305e-01, 5.82822082724022e-01, 5.792682716451055e-01, 5.757575548052202e-01, 5.722891778869896e-01, 5.688622650798894e-01, 5.654761815333291e-01, 5.621301523871165e-01, 5.588235219916508e-01, 5.555555750832368e-01, 5.523256155435241e-01, 5.491329492144925e-01, 5.459769994176956e-01, 5.428571701049805e-01, 5.397727460257254e-01, 5.367231311249566e-01, 5.337078485638103e-01, 5.307262603555559e-01, 5.277777945222628e-01, 5.248618728883461e-01, 5.219780186189303e-01, 5.191256952679401e-01, 5.163043663895729e-01, 5.135135120838201e-01, 5.107526818498416e-01, 5.080214155766563e-01, 5.053191768240243e-01, 5.026454887535085e-01, 4.999999937324086e-01, 4.973822006403005e-01, 4.947916610380556e-01, 4.922279733798309e-01, 4.896907204338057e-01, 4.871794849684796e-01, 4.846938795485985e-01, 4.822335015305675e-01, 4.797979937564277e-01, 4.773869239343934e-01, 4.749999940395355e-01] -RefDat.y[4]=[9.49999988079071e-01, 9.413999913200723e-01, 9.327999945610738e-01, 9.241999978020756e-01, 9.156000010430764e-01, 9.070000058859627e-01, 8.984000075250791e-01, 8.898000123679659e-01, 8.812000140070846e-01, 8.726000220536259e-01, 8.640000236928077e-01, 8.568000193118914e-01, 8.496000151395989e-01, 8.424000109672888e-01, 8.352000121593433e-01, 8.280000133513978e-01, 8.208000038147228e-01, 8.136000050067773e-01, 8.064000061988319e-01, 7.991999966621569e-01, 7.919999978542115e-01, 7.858999927580835e-01, 7.797999970793811e-01, 7.737000014006786e-01, 7.675999966323768e-01, 7.615000009536743e-01, 7.553999961853723e-01, 7.493000095962694e-01, 7.432000048279676e-01, 7.371000000596656e-01, 7.310000134705626e-01, 7.257999790192119e-01, 7.206000052452812e-01, 7.153999873640732e-01, 7.102000135898228e-01, 7.049999802113184e-01, 6.998000219343643e-01, 6.94599988556002e-01, 6.894000147818581e-01, 6.841999814034958e-01, 6.790000231265417e-01, 6.743999703168944e-01, 6.697999774694716e-01, 6.65199998331055e-01, 6.606000054836323e-01, 6.560000126362096e-01, 6.51400033497793e-01, 6.467999810457254e-01, 6.421999881983027e-01, 6.376000090598861e-01, 6.330000162124634e-01, 6.291000209806786e-01, 6.251999661448175e-01, 6.21299970913317e-01, 6.173999989268286e-01, 6.135000036953281e-01, 6.096000084638553e-01, 6.05700013232327e-01, 6.018000180003292e-01, 5.978999631646813e-01, 5.939999911789033e-01, 5.905000021456607e-01, 5.870000140666607e-01, 5.835000259875185e-01, 5.799999783040158e-01, 5.764999902250159e-01, 5.730000230071974e-01, 5.695000349281975e-01, 5.659999872445527e-01, 5.624999991655278e-01, 5.590000115633189e-01, 5.558999710328141e-01, 5.528000085830262e-01, 5.497000276565268e-01, 5.465999871253825e-01, 5.435000061988831e-01, 5.404000252723836e-01, 5.372999847412393e-01, 5.342000038147399e-01, 5.310999817609467e-01, 5.280000008344472e-01, 5.252000100135717e-01, 5.224000195501955e-01, 5.195999694826209e-01, 5.167999790194777e-01, 5.140000052449245e-01, 5.112000147817813e-01, 5.084000243186382e-01, 5.055999742508503e-01, 5.027999837877072e-01, 4.999999940397131e-01, 4.975000089405013e-01, 4.950000089405724e-01, 4.925000089406434e-01, 4.900000089406612e-01, 4.875000089406079e-01, 4.850000089405369e-01, 4.824999940397487e-01, 4.799999940396776e-01, 4.774999940394645e-01, 4.749999940395355e-01] PID.Ti=[4.457142949104309e-01, 4.501714409393911e-01, 4.546285571660355e-01, 4.590857031949988e-01, 4.635428492239625e-01, 4.679999944227125e-01, 4.724571412818696e-01, 4.769142864806326e-01, 4.813714333397884e-01, 4.858285768781091e-01, 4.902857237372955e-01, 4.94742870596473e-01, 4.991999876533459e-01, 5.036571643147126e-01, 5.081142780508264e-01, 5.125714513914428e-01, 5.170285717691993e-01, 5.214856855052242e-01, 5.259428588457873e-01, 5.303999792235438e-01, 5.348571525641601e-01, 5.393142729419166e-01, 5.437714462824974e-01, 5.482285600185046e-01, 5.526857400007459e-01, 5.571428537368774e-01, 5.616000337189944e-01, 5.660571408134655e-01, 5.705142611912575e-01, 5.749714411736231e-01, 5.794285482681653e-01, 5.838857282502111e-01, 5.883428486279676e-01, 5.928000153267993e-01, 5.972571357045556e-01, 6.017143156867791e-01, 6.061714227811437e-01, 6.106285431590422e-01, 6.150857231413013e-01, 6.195428435190578e-01, 6.240000102178894e-01, 6.284571305956458e-01, 6.329143105776561e-01, 6.373714176722338e-01, 6.41828597654564e-01, 6.462857180323914e-01, 6.50742825126827e-01, 6.552000051089795e-01, 6.596571254867359e-01, 6.641142921855676e-01, 6.68571412563324e-01, 6.730285925453776e-01, 6.774857129233549e-01, 6.819428929048401e-01, 6.863999867166426e-01, 6.908571666989805e-01, 6.953142870766419e-01, 6.997714074543666e-01, 7.042285874367045e-01, 7.086857078143975e-01, 7.131428612299922e-01, 7.175999816081116e-01, 7.220571615900231e-01, 7.265142819677162e-01, 7.309714619496277e-01, 7.354285823277471e-01, 7.398856761394785e-01, 7.443428561210348e-01, 7.48799976498941e-01, 7.532571564810263e-01, 7.577142768587588e-01, 7.621714568404572e-01, 7.666285506520465e-01, 7.710857306343843e-01, 7.755428510120774e-01, 7.799999713897705e-01, 7.844571513721084e-01, 7.889142717498014e-01, 7.933714517321393e-01, 7.978285455437286e-01, 8.02285725525427e-01, 8.067428459030884e-01, 8.112000258852448e-01, 8.15657146263151e-01, 8.201143262447073e-01, 8.245714200564387e-01, 8.290285404345581e-01, 8.334857204164696e-01, 8.379428407941627e-01, 8.424000207760742e-01, 8.468571411541936e-01, 8.513142945697882e-01, 8.557714149474813e-01, 8.602285949298192e-01, 8.646857153075439e-01, 8.691428356852053e-01, 8.736000156675432e-01, 8.780571094793457e-01, 8.825142894608309e-01, 8.869714098388082e-01, 8.914285898208618e-01] -RefDat.y[5]=[4.460000097751617e-01, 4.503999949485067e-01, 4.54800009924174e-01, 4.591999950975186e-01, 4.636000100731862e-01, 4.679999944269647e-01, 4.724000102221985e-01, 4.767999945759767e-01, 4.812000103712092e-01, 4.85599993085859e-01, 4.900000088810912e-01, 4.945000114738937e-01, 4.990000140815953e-01, 5.034999868870457e-01, 5.080000159442341e-01, 5.124999853969553e-01, 5.17000021159593e-01, 5.214999906122965e-01, 5.260000196694316e-01, 5.304999958277086e-01, 5.350000248848971e-01, 5.393999843835869e-01, 5.437999969005591e-01, 5.482000094175314e-01, 5.526000284910234e-01, 5.569999814033508e-01, 5.614000004768428e-01, 5.658000064372952e-01, 5.702000255107873e-01, 5.745999849796345e-01, 5.789999909400869e-01, 5.835000265836379e-01, 5.880000027419149e-01, 5.924999654891159e-01, 5.970000012516469e-01, 6.01499977409924e-01, 6.059999997613789e-01, 6.104999759197981e-01, 6.150000116824358e-01, 6.19499987840855e-01, 6.240000101923099e-01, 6.28499986350587e-01, 6.33000022113118e-01, 6.374999848605322e-01, 6.420000206231697e-01, 6.464999967815179e-01, 6.510000191329729e-01, 6.554999952912499e-01, 6.600000310538521e-01, 6.644999938012661e-01, 6.690000295639038e-01, 6.733999890326885e-01, 6.77800008106118e-01, 6.822000271795475e-01, 6.866000200272886e-01, 6.909999794960733e-01, 6.953999985694715e-01, 6.998000176429322e-01, 7.042000367158643e-01, 7.085999961851464e-01, 7.129999890328874e-01, 7.174999649527886e-01, 7.220000007152202e-01, 7.264999768734334e-01, 7.31000012635865e-01, 7.354999887945044e-01, 7.399999977348282e-01, 7.444999738935386e-01, 7.490000096558992e-01, 7.534999858141442e-01, 7.58000021457601e-01, 7.623999809263857e-01, 7.667999737741268e-01, 7.711999928475564e-01, 7.756000119209858e-01, 7.799999713897705e-01, 7.843999904632e-01, 7.888000095366294e-01, 7.93200028610059e-01, 7.975999618537948e-01, 8.019999809265848e-01, 8.065000165700416e-01, 8.109999927282866e-01, 8.155000284906472e-01, 8.200000046493576e-01, 8.245000135896814e-01, 8.289999897483208e-01, 8.335000255107524e-01, 8.380000016689656e-01, 8.424999778271788e-01, 8.470000133512984e-01, 8.514000061990394e-01, 8.557999656683215e-01, 8.601999847412536e-01, 8.646000038147142e-01, 8.690000228881125e-01, 8.733999823568972e-01, 8.777999752046383e-01, 8.821999942780678e-01, 8.866000133514973e-01, 8.90999972820282e-01] PID.Td=[1.271186470985413e-01, 1.283898353860783e-01, 1.296610236736153e-01, 1.309321970599961e-01, 1.322033853475348e-01, 1.334745733982963e-01, 1.347457619226122e-01, 1.360169499733681e-01, 1.372881384976758e-01, 1.385593260748808e-01, 1.398305145992018e-01, 1.411016882223615e-01, 1.423728767466825e-01, 1.436440652710035e-01, 1.449152528481996e-01, 1.461864404253867e-01, 1.474576298968104e-01, 1.487288174740287e-01, 1.500000050512203e-01, 1.512711796215094e-01, 1.525423671987233e-01, 1.538135566701514e-01, 1.55084744247343e-01, 1.563559318245346e-01, 1.57627121295945e-01, 1.588983088731766e-01, 1.601694983445558e-01, 1.614406840275598e-01, 1.627118585978578e-01, 1.639830480692993e-01, 1.65254233752321e-01, 1.665254232236825e-01, 1.677966126950796e-01, 1.690677983780658e-01, 1.703389878495161e-01, 1.71610177320922e-01, 1.728813481028448e-01, 1.74152537574224e-01, 1.754237270456388e-01, 1.766949165170891e-01, 1.77966102200022e-01, 1.792372916714457e-01, 1.80508481142825e-01, 1.817796668258556e-01, 1.830508413961447e-01, 1.84322030867595e-01, 1.855932165505902e-01, 1.868644060219783e-01, 1.881355954934286e-01, 1.894067811763616e-01, 1.906779706478119e-01, 1.919491601191731e-01, 1.932203346895152e-01, 1.944915241609474e-01, 1.957627060556177e-01, 1.970338955269789e-01, 1.983050849983133e-01, 1.995762744697013e-01, 2.008474639410625e-01, 2.021186534124237e-01, 2.033898204061459e-01, 2.046610098775072e-01, 2.059321993488684e-01, 2.072033888202651e-01, 2.084745782916973e-01, 2.09745767762952e-01, 2.1101694965764e-01, 2.122881391290722e-01, 2.135593136993966e-01, 2.148305031707846e-01, 2.161016926422078e-01, 2.1737288211364e-01, 2.186440640081505e-01, 2.199152534795827e-01, 2.211864429510149e-01, 2.224576324224472e-01, 2.237288218938084e-01, 2.249999964641505e-01, 2.262711859355828e-01, 2.275423678302531e-01, 2.288135573015254e-01, 2.300847467729487e-01, 2.313559362443366e-01, 2.326271257156978e-01, 2.33898315187059e-01, 2.351694821807813e-01, 2.364406716521425e-01, 2.377118611235037e-01, 2.389830505949004e-01, 2.402542400663326e-01, 2.415254295375873e-01, 2.427966114322753e-01, 2.440678009037076e-01, 2.453389754740319e-01, 2.466101649454199e-01, 2.478813544168431e-01, 2.491525438882753e-01, 2.504237257827858e-01, 2.51694915254218e-01, 2.529661047256503e-01, 2.542372941970825e-01] -RefDat.y[6]=[1.270000040531158e-01, 1.282999962858867e-01, 1.296000034198155e-01, 1.308999956525896e-01, 1.322000027865151e-01, 1.334999947771447e-01, 1.348000021532147e-01, 1.360999941438443e-01, 1.374000015199139e-01, 1.386999930262656e-01, 1.400000004023351e-01, 1.412999928772479e-01, 1.42600000253313e-01, 1.439000076293825e-01, 1.451999991357342e-01, 1.465000055432027e-01, 1.47799998986712e-01, 1.491000053942116e-01, 1.503999969005766e-01, 1.517000052452027e-01, 1.529999967515544e-01, 1.542000033378523e-01, 1.55399993205078e-01, 1.565999979734471e-01, 1.578000045299466e-01, 1.589999943971634e-01, 1.602000009536629e-01, 1.614000039339193e-01, 1.625999955892577e-01, 1.638000021457573e-01, 1.650000051259248e-01, 1.662999984502853e-01, 1.676000067949114e-01, 1.688999963641499e-01, 1.702000047087494e-01, 1.714999981522409e-01, 1.72800002622534e-01, 1.740999960661055e-01, 1.754000044107316e-01, 1.766999978543031e-01, 1.780000023245518e-01, 1.792999957680878e-01, 1.806000041126873e-01, 1.818999936819258e-01, 1.832000020265519e-01, 1.844999954701056e-01, 1.857999999404165e-01, 1.870999933838903e-01, 1.884000017285075e-01, 1.897000061988361e-01, 1.909999996423721e-01, 1.922000061988546e-01, 1.933999978541759e-01, 1.946000044106584e-01, 1.958000038146014e-01, 1.969999954700825e-01, 1.982000020265565e-01, 1.993999936819396e-01, 2.006000002383688e-01, 2.018000067948514e-01, 2.029999912977929e-01, 2.042999994040175e-01, 2.055999928474639e-01, 2.069000011920716e-01, 2.081999946356246e-01, 2.095000029801257e-01, 2.108000035762005e-01, 2.120999970198424e-01, 2.134000053643967e-01, 2.146999988079057e-01, 2.160000071525041e-01, 2.173000005959505e-01, 2.186000011920076e-01, 2.198999946356672e-01, 2.212000029802038e-01, 2.224999964237213e-01, 2.23800004768329e-01, 2.250999982119175e-01, 2.26400006556383e-01, 2.276999922514921e-01, 2.290000005960997e-01, 2.302999940395369e-01, 2.316000023841538e-01, 2.328999958277246e-01, 2.342000041722079e-01, 2.35499989867317e-01, 2.367999982119246e-01, 2.381000065564967e-01, 2.393999999999787e-01, 2.407000083445863e-01, 2.420000015496497e-01, 2.432000009537525e-01, 2.443999926090738e-01, 2.455999991655563e-01, 2.468000057220473e-01, 2.479999973773601e-01, 2.492000039338426e-01, 2.504000033379454e-01, 2.515999949932667e-01, 2.52799986648588e-01, 2.540000081062317e-01] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PIDDerivativeTime.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PIDDerivativeTime.txt index d8258a5f80f..f453c316783 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PIDDerivativeTime.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PIDDerivativeTime.txt @@ -1,4 +1,4 @@ -last-generated=2023-04-06 +last-generated=2023-06-18 statistics-simulation= { "linear": " ", @@ -6,7 +6,6 @@ statistics-simulation= "numerical Jacobians": "0" } time=[0e+00, 1e+00] -PIDDerTim.T=[5e-01, 5.049999953433857e-01, 5.099999906867714e-01, 5.149999860301567e-01, 5.199999813735693e-01, 5.24999975785618e-01, 5.29999972060354e-01, 5.350000260770249e-01, 5.400000223517285e-01, 5.450000149011879e-01, 5.50000011175882e-01, 5.550000074505762e-01, 5.600000037252704e-01, 5.649999999999645e-01, 5.699999925494239e-01, 5.749999850988832e-01, 5.799999850988121e-01, 5.849999776482715e-01, 5.899999701977309e-01, 5.950000298023046e-01, 6.000000223516752e-01, 6.050000223516929e-01, 6.100000149011523e-01, 6.150000074506117e-01, 6.200000074505406e-01, 6.25e-01, 6.29999999999929e-01, 6.349999850989188e-01, 6.399999850988477e-01, 6.449999850990253e-01, 6.499999701977665e-01, 6.549999701976954e-01, 6.600000298022691e-01, 6.650000149008681e-01, 6.700000149011879e-01, 6.750000149011168e-01, 6.800000000001065e-01, 6.850000000000355e-01, 6.899999999999645e-01, 6.949999999998935e-01, 6.999999850988832e-01, 7.049999850988121e-01, 7.099999850991319e-01, 7.149999701977309e-01, 7.200000298023046e-01, 7.250000298022335e-01, 7.300000149009747e-01, 7.350000149011523e-01, 7.400000149010812e-01, 7.45000000000071e-01, 7.5e-01, 7.549999999998579e-01, 7.599999999997158e-01, 7.649999999995737e-01, 7.699999701979974e-01, 7.749999701978553e-01, 7.799999701976776e-01, 7.850000298022158e-01, 7.900000298020737e-01, 7.950000298019316e-01, 8.000000000003552e-01, 8.050000000002131e-01, 8.10000000000071e-01, 8.14999999999929e-01, 8.199999999997869e-01, 8.249999999996448e-01, 8.299999701980684e-01, 8.349999701979263e-01, 8.399999701977842e-01, 8.450000298023224e-01, 8.500000298021447e-01, 8.550000298020026e-01, 8.600000000004263e-01, 8.650000000002842e-01, 8.700000000001421e-01, 8.75e-01, 8.799999999998579e-01, 8.849999999997158e-01, 8.899999999995737e-01, 8.949999701979974e-01, 8.999999701978553e-01, 9.049999701976776e-01, 9.100000298022158e-01, 9.150000298020737e-01, 9.200000298019316e-01, 9.250000000003552e-01, 9.300000000002131e-01, 9.35000000000071e-01, 9.39999999999929e-01, 9.449999999997869e-01, 9.499999999996448e-01, 9.549999701980684e-01, 9.599999701979263e-01, 9.649999701977842e-01, 9.700000298023224e-01, 9.750000298021447e-01, 9.800000298020026e-01, 9.850000000004263e-01, 9.900000000002842e-01, 9.950000000001421e-01, 1e+00] -PIDDerTim.L=[3.00000011920929e-01, 3.030000031664979e-01, 3.059999944120668e-01, 3.089999856576355e-01, 3.120000067055137e-01, 3.149999973922931e-01, 3.179999891966649e-01, 3.210000096857531e-01, 3.240000014901241e-01, 3.269999910593406e-01, 3.300000126659803e-01, 3.33000004470351e-01, 3.359999962747217e-01, 3.389999880790924e-01, 3.42000007450578e-01, 3.449999970197411e-01, 3.479999910593193e-01, 3.510000104308049e-01, 3.53999999999968e-01, 3.569999940395462e-01, 3.600000134110318e-01, 3.630000074505122e-01, 3.659999970197731e-01, 3.689999865889985e-01, 3.720000104307569e-01, 3.75e-01, 3.779999940395782e-01, 3.810000089406488e-01, 3.840000029802269e-01, 3.86999997019805e-01, 3.899999821187309e-01, 3.930000059604538e-01, 3.96000000000032e-01, 3.989999850989756e-01, 4.020000089406807e-01, 4.050000029802589e-01, 4.079999880792203e-01, 4.110000119209076e-01, 4.140000059604858e-01, 4.170000000000639e-01, 4.19999985098901e-01, 4.230000089406594e-01, 4.260000029802908e-01, 4.289999880791456e-01, 4.320000119209041e-01, 4.350000059605177e-01, 4.379999910593903e-01, 4.410000149011488e-01, 4.440000089405848e-01, 4.469999940394929e-01, 4.49999988079071e-01, 4.530000119207869e-01, 4.560000059604645e-01, 4.59e-01, 4.620000059604645e-01, 4.65e-01, 4.679999940395497e-01, 4.70999988079071e-01, 4.740000119206803e-01, 4.770000059604645e-01, 4.799999821189618e-01, 4.830000059604645e-01, 4.86e-01, 4.889999940395355e-01, 4.920000178811803e-01, 4.950000119205737e-01, 4.97999988079071e-01, 5.009999821188552e-01, 5.04000005960571e-01, 5.070000298023082e-01, 5.099999940393579e-01, 5.130000178810736e-01, 5.159999642376395e-01, 5.189999880793552e-01, 5.220000119207868e-01, 5.249999761581421e-01, 5.279999999998579e-01, 5.310000238415737e-01, 5.339999880794973e-01, 5.369999940398553e-01, 5.400000178812158e-01, 5.429999821186208e-01, 5.460000059603579e-01, 5.490000298020737e-01, 5.519999940399263e-01, 5.550000000003552e-01, 5.580000238416447e-01, 5.609999880791421e-01, 5.640000119208579e-01, 5.669999761583553e-01, 5.699999999996448e-01, 5.730000059600737e-01, 5.759999701979263e-01, 5.789999940396421e-01, 5.820000178813792e-01, 5.849999821187842e-01, 5.880000059601447e-01, 5.910000119205027e-01, 5.939999761584263e-01, 5.970000000001421e-01, 6.000000238418579e-01] -RefDat.y[6]=[1.270000040531158e-01, 1.282999962858867e-01, 1.296000034198155e-01, 1.308999956525896e-01, 1.322000027865151e-01, 1.334999947771447e-01, 1.348000021532147e-01, 1.360999941438443e-01, 1.374000015199139e-01, 1.386999930262656e-01, 1.400000004023351e-01, 1.412999928772479e-01, 1.42600000253313e-01, 1.439000076293825e-01, 1.451999991357342e-01, 1.465000055432027e-01, 1.47799998986712e-01, 1.491000053942116e-01, 1.503999969005766e-01, 1.517000052452027e-01, 1.529999967515544e-01, 1.542000033378523e-01, 1.55399993205078e-01, 1.565999979734471e-01, 1.578000045299466e-01, 1.589999943971634e-01, 1.602000009536629e-01, 1.614000039339193e-01, 1.625999955892577e-01, 1.638000021457573e-01, 1.650000051259248e-01, 1.662999984502853e-01, 1.676000067949114e-01, 1.688999963641499e-01, 1.702000047087494e-01, 1.714999981522409e-01, 1.72800002622534e-01, 1.740999960661055e-01, 1.754000044107316e-01, 1.766999978543031e-01, 1.780000023245518e-01, 1.792999957680878e-01, 1.806000041126873e-01, 1.818999936819258e-01, 1.832000020265519e-01, 1.844999954701056e-01, 1.857999999404165e-01, 1.870999933838903e-01, 1.884000017285075e-01, 1.897000061988361e-01, 1.909999996423721e-01, 1.922000061988546e-01, 1.933999978541759e-01, 1.946000044106584e-01, 1.958000038146014e-01, 1.969999954700825e-01, 1.982000020265565e-01, 1.993999936819396e-01, 2.006000002383688e-01, 2.018000067948514e-01, 2.029999912977929e-01, 2.042999994040175e-01, 2.055999928474639e-01, 2.069000011920716e-01, 2.081999946356246e-01, 2.095000029801257e-01, 2.108000035762005e-01, 2.120999970198424e-01, 2.134000053643967e-01, 2.146999988079057e-01, 2.160000071525041e-01, 2.173000005959505e-01, 2.186000011920076e-01, 2.198999946356672e-01, 2.212000029802038e-01, 2.224999964237213e-01, 2.23800004768329e-01, 2.250999982119175e-01, 2.26400006556383e-01, 2.276999922514921e-01, 2.290000005960997e-01, 2.302999940395369e-01, 2.316000023841538e-01, 2.328999958277246e-01, 2.342000041722079e-01, 2.35499989867317e-01, 2.367999982119246e-01, 2.381000065564967e-01, 2.393999999999787e-01, 2.407000083445863e-01, 2.420000015496497e-01, 2.432000009537525e-01, 2.443999926090738e-01, 2.455999991655563e-01, 2.468000057220473e-01, 2.479999973773601e-01, 2.492000039338426e-01, 2.504000033379454e-01, 2.515999949932667e-01, 2.52799986648588e-01, 2.540000081062317e-01] +T.y=[5e-01, 5.049999953433857e-01, 5.099999906867714e-01, 5.149999860301567e-01, 5.199999813735693e-01, 5.24999975785618e-01, 5.29999972060354e-01, 5.350000260770249e-01, 5.400000223517285e-01, 5.450000149011879e-01, 5.50000011175882e-01, 5.550000074505762e-01, 5.600000037252704e-01, 5.649999999999645e-01, 5.699999925494239e-01, 5.749999850988832e-01, 5.799999850988121e-01, 5.849999776482715e-01, 5.899999701977309e-01, 5.950000298023046e-01, 6.000000223516752e-01, 6.050000223516929e-01, 6.100000149011523e-01, 6.150000074506117e-01, 6.200000074505406e-01, 6.25e-01, 6.29999999999929e-01, 6.349999850989188e-01, 6.399999850988477e-01, 6.449999850990253e-01, 6.499999701977665e-01, 6.549999701976954e-01, 6.600000298022691e-01, 6.650000149008681e-01, 6.700000149011879e-01, 6.750000149011168e-01, 6.800000000001065e-01, 6.850000000000355e-01, 6.899999999999645e-01, 6.949999999998935e-01, 6.999999850988832e-01, 7.049999850988121e-01, 7.099999850991319e-01, 7.149999701977309e-01, 7.200000298023046e-01, 7.250000298022335e-01, 7.300000149009747e-01, 7.350000149011523e-01, 7.400000149010812e-01, 7.45000000000071e-01, 7.5e-01, 7.549999999998579e-01, 7.599999999997158e-01, 7.649999999995737e-01, 7.699999701979974e-01, 7.749999701978553e-01, 7.799999701976776e-01, 7.850000298022158e-01, 7.900000298020737e-01, 7.950000298019316e-01, 8.000000000003552e-01, 8.050000000002131e-01, 8.10000000000071e-01, 8.14999999999929e-01, 8.199999999997869e-01, 8.249999999996448e-01, 8.299999701980684e-01, 8.349999701979263e-01, 8.399999701977842e-01, 8.450000298023224e-01, 8.500000298021447e-01, 8.550000298020026e-01, 8.600000000004263e-01, 8.650000000002842e-01, 8.700000000001421e-01, 8.75e-01, 8.799999999998579e-01, 8.849999999997158e-01, 8.899999999995737e-01, 8.949999701979974e-01, 8.999999701978553e-01, 9.049999701976776e-01, 9.100000298022158e-01, 9.150000298020737e-01, 9.200000298019316e-01, 9.250000000003552e-01, 9.300000000002131e-01, 9.35000000000071e-01, 9.39999999999929e-01, 9.449999999997869e-01, 9.499999999996448e-01, 9.549999701980684e-01, 9.599999701979263e-01, 9.649999701977842e-01, 9.700000298023224e-01, 9.750000298021447e-01, 9.800000298020026e-01, 9.850000000004263e-01, 9.900000000002842e-01, 9.950000000001421e-01, 1e+00] +L.y=[3.00000011920929e-01, 3.030000031664979e-01, 3.059999944120668e-01, 3.089999856576355e-01, 3.120000067055137e-01, 3.149999973922931e-01, 3.179999891966649e-01, 3.210000096857531e-01, 3.240000014901241e-01, 3.269999910593406e-01, 3.300000126659803e-01, 3.33000004470351e-01, 3.359999962747217e-01, 3.389999880790924e-01, 3.42000007450578e-01, 3.449999970197411e-01, 3.479999910593193e-01, 3.510000104308049e-01, 3.53999999999968e-01, 3.569999940395462e-01, 3.600000134110318e-01, 3.630000074505122e-01, 3.659999970197731e-01, 3.689999865889985e-01, 3.720000104307569e-01, 3.75e-01, 3.779999940395782e-01, 3.810000089406488e-01, 3.840000029802269e-01, 3.86999997019805e-01, 3.899999821187309e-01, 3.930000059604538e-01, 3.96000000000032e-01, 3.989999850989756e-01, 4.020000089406807e-01, 4.050000029802589e-01, 4.079999880792203e-01, 4.110000119209076e-01, 4.140000059604858e-01, 4.170000000000639e-01, 4.19999985098901e-01, 4.230000089406594e-01, 4.260000029802908e-01, 4.289999880791456e-01, 4.320000119209041e-01, 4.350000059605177e-01, 4.379999910593903e-01, 4.410000149011488e-01, 4.440000089405848e-01, 4.469999940394929e-01, 4.49999988079071e-01, 4.530000119207869e-01, 4.560000059604645e-01, 4.59e-01, 4.620000059604645e-01, 4.65e-01, 4.679999940395497e-01, 4.70999988079071e-01, 4.740000119206803e-01, 4.770000059604645e-01, 4.799999821189618e-01, 4.830000059604645e-01, 4.86e-01, 4.889999940395355e-01, 4.920000178811803e-01, 4.950000119205737e-01, 4.97999988079071e-01, 5.009999821188552e-01, 5.04000005960571e-01, 5.070000298023082e-01, 5.099999940393579e-01, 5.130000178810736e-01, 5.159999642376395e-01, 5.189999880793552e-01, 5.220000119207868e-01, 5.249999761581421e-01, 5.279999999998579e-01, 5.310000238415737e-01, 5.339999880794973e-01, 5.369999940398553e-01, 5.400000178812158e-01, 5.429999821186208e-01, 5.460000059603579e-01, 5.490000298020737e-01, 5.519999940399263e-01, 5.550000000003552e-01, 5.580000238416447e-01, 5.609999880791421e-01, 5.640000119208579e-01, 5.669999761583553e-01, 5.699999999996448e-01, 5.730000059600737e-01, 5.759999701979263e-01, 5.789999940396421e-01, 5.820000178813792e-01, 5.849999821187842e-01, 5.880000059601447e-01, 5.910000119205027e-01, 5.939999761584263e-01, 5.970000000001421e-01, 6.000000238418579e-01] PIDDerTim.Td=[1.271186470985413e-01, 1.283898353860783e-01, 1.296610236736153e-01, 1.309321970599961e-01, 1.322033853475348e-01, 1.334745733982963e-01, 1.347457619226122e-01, 1.360169499733681e-01, 1.372881384976758e-01, 1.385593260748808e-01, 1.398305145992018e-01, 1.411016882223615e-01, 1.423728767466825e-01, 1.436440652710035e-01, 1.449152528481996e-01, 1.461864404253867e-01, 1.474576298968104e-01, 1.487288174740287e-01, 1.500000050512203e-01, 1.512711796215094e-01, 1.525423671987233e-01, 1.538135566701514e-01, 1.55084744247343e-01, 1.563559318245346e-01, 1.57627121295945e-01, 1.588983088731766e-01, 1.601694983445558e-01, 1.614406840275598e-01, 1.627118585978578e-01, 1.639830480692993e-01, 1.65254233752321e-01, 1.665254232236825e-01, 1.677966126950796e-01, 1.690677983780658e-01, 1.703389878495161e-01, 1.71610177320922e-01, 1.728813481028448e-01, 1.74152537574224e-01, 1.754237270456388e-01, 1.766949165170891e-01, 1.77966102200022e-01, 1.792372916714457e-01, 1.80508481142825e-01, 1.817796668258556e-01, 1.830508413961447e-01, 1.84322030867595e-01, 1.855932165505902e-01, 1.868644060219783e-01, 1.881355954934286e-01, 1.894067811763616e-01, 1.906779706478119e-01, 1.919491601191731e-01, 1.932203346895152e-01, 1.944915241609474e-01, 1.957627060556177e-01, 1.970338955269789e-01, 1.983050849983133e-01, 1.995762744697013e-01, 2.008474639410625e-01, 2.021186534124237e-01, 2.033898204061459e-01, 2.046610098775072e-01, 2.059321993488684e-01, 2.072033888202651e-01, 2.084745782916973e-01, 2.09745767762952e-01, 2.1101694965764e-01, 2.122881391290722e-01, 2.135593136993966e-01, 2.148305031707846e-01, 2.161016926422078e-01, 2.1737288211364e-01, 2.186440640081505e-01, 2.199152534795827e-01, 2.211864429510149e-01, 2.224576324224472e-01, 2.237288218938084e-01, 2.249999964641505e-01, 2.262711859355828e-01, 2.275423678302531e-01, 2.288135573015254e-01, 2.300847467729487e-01, 2.313559362443366e-01, 2.326271257156978e-01, 2.33898315187059e-01, 2.351694821807813e-01, 2.364406716521425e-01, 2.377118611235037e-01, 2.389830505949004e-01, 2.402542400663326e-01, 2.415254295375873e-01, 2.427966114322753e-01, 2.440678009037076e-01, 2.453389754740319e-01, 2.466101649454199e-01, 2.478813544168431e-01, 2.491525438882753e-01, 2.504237257827858e-01, 2.51694915254218e-01, 2.529661047256503e-01, 2.542372941970825e-01] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PIDGain.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PIDGain.txt index 279f717e9c7..388b1f45764 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PIDGain.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PIDGain.txt @@ -1,4 +1,4 @@ -last-generated=2023-04-06 +last-generated=2023-06-18 statistics-simulation= { "linear": " ", @@ -6,8 +6,7 @@ statistics-simulation= "numerical Jacobians": "0" } time=[0e+00, 1e+00] -PIDGai.kp=[1e+00, 1.009999990686771e+00, 1.019999981373543e+00, 1.029999972060313e+00, 1.039999962747139e+00, 1.049999951571236e+00, 1.059999944120708e+00, 1.07000005215405e+00, 1.080000044703457e+00, 1.090000029802376e+00, 1.100000022351764e+00, 1.110000014901152e+00, 1.120000007450541e+00, 1.129999999999929e+00, 1.139999985098848e+00, 1.149999970197766e+00, 1.159999970197624e+00, 1.169999955296543e+00, 1.179999940395462e+00, 1.190000059604609e+00, 1.20000004470335e+00, 1.210000044703386e+00, 1.220000029802305e+00, 1.230000014901223e+00, 1.240000014901081e+00, 1.25e+00, 1.259999999999858e+00, 1.269999970197838e+00, 1.279999970197695e+00, 1.289999970198051e+00, 1.299999940395533e+00, 1.309999940395391e+00, 1.320000059604538e+00, 1.330000029801736e+00, 1.340000029802376e+00, 1.350000029802234e+00, 1.360000000000213e+00, 1.370000000000071e+00, 1.379999999999929e+00, 1.389999999999787e+00, 1.399999970197766e+00, 1.409999970197624e+00, 1.419999970198264e+00, 1.429999940395462e+00, 1.440000059604609e+00, 1.450000059604467e+00, 1.460000029801949e+00, 1.470000029802305e+00, 1.480000029802162e+00, 1.490000000000142e+00, 1.5e+00, 1.509999999999716e+00, 1.519999999999432e+00, 1.529999999999147e+00, 1.539999940395995e+00, 1.549999940395711e+00, 1.559999940395355e+00, 1.570000059604432e+00, 1.580000059604147e+00, 1.590000059603863e+00, 1.60000000000071e+00, 1.610000000000426e+00, 1.620000000000142e+00, 1.629999999999858e+00, 1.639999999999574e+00, 1.64999999999929e+00, 1.659999940396137e+00, 1.669999940395853e+00, 1.679999940395568e+00, 1.690000059604645e+00, 1.700000059604289e+00, 1.710000059604005e+00, 1.720000000000853e+00, 1.730000000000568e+00, 1.740000000000284e+00, 1.75e+00, 1.759999999999716e+00, 1.769999999999432e+00, 1.779999999999147e+00, 1.789999940395995e+00, 1.799999940395711e+00, 1.809999940395355e+00, 1.820000059604432e+00, 1.830000059604147e+00, 1.840000059603863e+00, 1.85000000000071e+00, 1.860000000000426e+00, 1.870000000000142e+00, 1.879999999999858e+00, 1.889999999999574e+00, 1.89999999999929e+00, 1.909999940396137e+00, 1.919999940395853e+00, 1.929999940395568e+00, 1.940000059604645e+00, 1.950000059604289e+00, 1.960000059604005e+00, 1.970000000000853e+00, 1.980000000000568e+00, 1.990000000000284e+00, 2e+00] -PIDGai.T=[5e-01, 5.049999953433857e-01, 5.099999906867714e-01, 5.149999860301567e-01, 5.199999813735693e-01, 5.24999975785618e-01, 5.29999972060354e-01, 5.350000260770249e-01, 5.400000223517285e-01, 5.450000149011879e-01, 5.50000011175882e-01, 5.550000074505762e-01, 5.600000037252704e-01, 5.649999999999645e-01, 5.699999925494239e-01, 5.749999850988832e-01, 5.799999850988121e-01, 5.849999776482715e-01, 5.899999701977309e-01, 5.950000298023046e-01, 6.000000223516752e-01, 6.050000223516929e-01, 6.100000149011523e-01, 6.150000074506117e-01, 6.200000074505406e-01, 6.25e-01, 6.29999999999929e-01, 6.349999850989188e-01, 6.399999850988477e-01, 6.449999850990253e-01, 6.499999701977665e-01, 6.549999701976954e-01, 6.600000298022691e-01, 6.650000149008681e-01, 6.700000149011879e-01, 6.750000149011168e-01, 6.800000000001065e-01, 6.850000000000355e-01, 6.899999999999645e-01, 6.949999999998935e-01, 6.999999850988832e-01, 7.049999850988121e-01, 7.099999850991319e-01, 7.149999701977309e-01, 7.200000298023046e-01, 7.250000298022335e-01, 7.300000149009747e-01, 7.350000149011523e-01, 7.400000149010812e-01, 7.45000000000071e-01, 7.5e-01, 7.549999999998579e-01, 7.599999999997158e-01, 7.649999999995737e-01, 7.699999701979974e-01, 7.749999701978553e-01, 7.799999701976776e-01, 7.850000298022158e-01, 7.900000298020737e-01, 7.950000298019316e-01, 8.000000000003552e-01, 8.050000000002131e-01, 8.10000000000071e-01, 8.14999999999929e-01, 8.199999999997869e-01, 8.249999999996448e-01, 8.299999701980684e-01, 8.349999701979263e-01, 8.399999701977842e-01, 8.450000298023224e-01, 8.500000298021447e-01, 8.550000298020026e-01, 8.600000000004263e-01, 8.650000000002842e-01, 8.700000000001421e-01, 8.75e-01, 8.799999999998579e-01, 8.849999999997158e-01, 8.899999999995737e-01, 8.949999701979974e-01, 8.999999701978553e-01, 9.049999701976776e-01, 9.100000298022158e-01, 9.150000298020737e-01, 9.200000298019316e-01, 9.250000000003552e-01, 9.300000000002131e-01, 9.35000000000071e-01, 9.39999999999929e-01, 9.449999999997869e-01, 9.499999999996448e-01, 9.549999701980684e-01, 9.599999701979263e-01, 9.649999701977842e-01, 9.700000298023224e-01, 9.750000298021447e-01, 9.800000298020026e-01, 9.850000000004263e-01, 9.900000000002842e-01, 9.950000000001421e-01, 1e+00] -PIDGai.L=[3.00000011920929e-01, 3.030000031664979e-01, 3.059999944120668e-01, 3.089999856576355e-01, 3.120000067055137e-01, 3.149999973922931e-01, 3.179999891966649e-01, 3.210000096857531e-01, 3.240000014901241e-01, 3.269999910593406e-01, 3.300000126659803e-01, 3.33000004470351e-01, 3.359999962747217e-01, 3.389999880790924e-01, 3.42000007450578e-01, 3.449999970197411e-01, 3.479999910593193e-01, 3.510000104308049e-01, 3.53999999999968e-01, 3.569999940395462e-01, 3.600000134110318e-01, 3.630000074505122e-01, 3.659999970197731e-01, 3.689999865889985e-01, 3.720000104307569e-01, 3.75e-01, 3.779999940395782e-01, 3.810000089406488e-01, 3.840000029802269e-01, 3.86999997019805e-01, 3.899999821187309e-01, 3.930000059604538e-01, 3.96000000000032e-01, 3.989999850989756e-01, 4.020000089406807e-01, 4.050000029802589e-01, 4.079999880792203e-01, 4.110000119209076e-01, 4.140000059604858e-01, 4.170000000000639e-01, 4.19999985098901e-01, 4.230000089406594e-01, 4.260000029802908e-01, 4.289999880791456e-01, 4.320000119209041e-01, 4.350000059605177e-01, 4.379999910593903e-01, 4.410000149011488e-01, 4.440000089405848e-01, 4.469999940394929e-01, 4.49999988079071e-01, 4.530000119207869e-01, 4.560000059604645e-01, 4.59e-01, 4.620000059604645e-01, 4.65e-01, 4.679999940395497e-01, 4.70999988079071e-01, 4.740000119206803e-01, 4.770000059604645e-01, 4.799999821189618e-01, 4.830000059604645e-01, 4.86e-01, 4.889999940395355e-01, 4.920000178811803e-01, 4.950000119205737e-01, 4.97999988079071e-01, 5.009999821188552e-01, 5.04000005960571e-01, 5.070000298023082e-01, 5.099999940393579e-01, 5.130000178810736e-01, 5.159999642376395e-01, 5.189999880793552e-01, 5.220000119207868e-01, 5.249999761581421e-01, 5.279999999998579e-01, 5.310000238415737e-01, 5.339999880794973e-01, 5.369999940398553e-01, 5.400000178812158e-01, 5.429999821186208e-01, 5.460000059603579e-01, 5.490000298020737e-01, 5.519999940399263e-01, 5.550000000003552e-01, 5.580000238416447e-01, 5.609999880791421e-01, 5.640000119208579e-01, 5.669999761583553e-01, 5.699999999996448e-01, 5.730000059600737e-01, 5.759999701979263e-01, 5.789999940396421e-01, 5.820000178813792e-01, 5.849999821187842e-01, 5.880000059601447e-01, 5.910000119205027e-01, 5.939999761584263e-01, 5.970000000001421e-01, 6.000000238418579e-01] +kp.y=[1e+00, 1.009999990686771e+00, 1.019999981373543e+00, 1.029999972060313e+00, 1.039999962747139e+00, 1.049999951571236e+00, 1.059999944120708e+00, 1.07000005215405e+00, 1.080000044703457e+00, 1.090000029802376e+00, 1.100000022351764e+00, 1.110000014901152e+00, 1.120000007450541e+00, 1.129999999999929e+00, 1.139999985098848e+00, 1.149999970197766e+00, 1.159999970197624e+00, 1.169999955296543e+00, 1.179999940395462e+00, 1.190000059604609e+00, 1.20000004470335e+00, 1.210000044703386e+00, 1.220000029802305e+00, 1.230000014901223e+00, 1.240000014901081e+00, 1.25e+00, 1.259999999999858e+00, 1.269999970197838e+00, 1.279999970197695e+00, 1.289999970198051e+00, 1.299999940395533e+00, 1.309999940395391e+00, 1.320000059604538e+00, 1.330000029801736e+00, 1.340000029802376e+00, 1.350000029802234e+00, 1.360000000000213e+00, 1.370000000000071e+00, 1.379999999999929e+00, 1.389999999999787e+00, 1.399999970197766e+00, 1.409999970197624e+00, 1.419999970198264e+00, 1.429999940395462e+00, 1.440000059604609e+00, 1.450000059604467e+00, 1.460000029801949e+00, 1.470000029802305e+00, 1.480000029802162e+00, 1.490000000000142e+00, 1.5e+00, 1.509999999999716e+00, 1.519999999999432e+00, 1.529999999999147e+00, 1.539999940395995e+00, 1.549999940395711e+00, 1.559999940395355e+00, 1.570000059604432e+00, 1.580000059604147e+00, 1.590000059603863e+00, 1.60000000000071e+00, 1.610000000000426e+00, 1.620000000000142e+00, 1.629999999999858e+00, 1.639999999999574e+00, 1.64999999999929e+00, 1.659999940396137e+00, 1.669999940395853e+00, 1.679999940395568e+00, 1.690000059604645e+00, 1.700000059604289e+00, 1.710000059604005e+00, 1.720000000000853e+00, 1.730000000000568e+00, 1.740000000000284e+00, 1.75e+00, 1.759999999999716e+00, 1.769999999999432e+00, 1.779999999999147e+00, 1.789999940395995e+00, 1.799999940395711e+00, 1.809999940395355e+00, 1.820000059604432e+00, 1.830000059604147e+00, 1.840000059603863e+00, 1.85000000000071e+00, 1.860000000000426e+00, 1.870000000000142e+00, 1.879999999999858e+00, 1.889999999999574e+00, 1.89999999999929e+00, 1.909999940396137e+00, 1.919999940395853e+00, 1.929999940395568e+00, 1.940000059604645e+00, 1.950000059604289e+00, 1.960000059604005e+00, 1.970000000000853e+00, 1.980000000000568e+00, 1.990000000000284e+00, 2e+00] +T.y=[5e-01, 5.049999953433857e-01, 5.099999906867714e-01, 5.149999860301567e-01, 5.199999813735693e-01, 5.24999975785618e-01, 5.29999972060354e-01, 5.350000260770249e-01, 5.400000223517285e-01, 5.450000149011879e-01, 5.50000011175882e-01, 5.550000074505762e-01, 5.600000037252704e-01, 5.649999999999645e-01, 5.699999925494239e-01, 5.749999850988832e-01, 5.799999850988121e-01, 5.849999776482715e-01, 5.899999701977309e-01, 5.950000298023046e-01, 6.000000223516752e-01, 6.050000223516929e-01, 6.100000149011523e-01, 6.150000074506117e-01, 6.200000074505406e-01, 6.25e-01, 6.29999999999929e-01, 6.349999850989188e-01, 6.399999850988477e-01, 6.449999850990253e-01, 6.499999701977665e-01, 6.549999701976954e-01, 6.600000298022691e-01, 6.650000149008681e-01, 6.700000149011879e-01, 6.750000149011168e-01, 6.800000000001065e-01, 6.850000000000355e-01, 6.899999999999645e-01, 6.949999999998935e-01, 6.999999850988832e-01, 7.049999850988121e-01, 7.099999850991319e-01, 7.149999701977309e-01, 7.200000298023046e-01, 7.250000298022335e-01, 7.300000149009747e-01, 7.350000149011523e-01, 7.400000149010812e-01, 7.45000000000071e-01, 7.5e-01, 7.549999999998579e-01, 7.599999999997158e-01, 7.649999999995737e-01, 7.699999701979974e-01, 7.749999701978553e-01, 7.799999701976776e-01, 7.850000298022158e-01, 7.900000298020737e-01, 7.950000298019316e-01, 8.000000000003552e-01, 8.050000000002131e-01, 8.10000000000071e-01, 8.14999999999929e-01, 8.199999999997869e-01, 8.249999999996448e-01, 8.299999701980684e-01, 8.349999701979263e-01, 8.399999701977842e-01, 8.450000298023224e-01, 8.500000298021447e-01, 8.550000298020026e-01, 8.600000000004263e-01, 8.650000000002842e-01, 8.700000000001421e-01, 8.75e-01, 8.799999999998579e-01, 8.849999999997158e-01, 8.899999999995737e-01, 8.949999701979974e-01, 8.999999701978553e-01, 9.049999701976776e-01, 9.100000298022158e-01, 9.150000298020737e-01, 9.200000298019316e-01, 9.250000000003552e-01, 9.300000000002131e-01, 9.35000000000071e-01, 9.39999999999929e-01, 9.449999999997869e-01, 9.499999999996448e-01, 9.549999701980684e-01, 9.599999701979263e-01, 9.649999701977842e-01, 9.700000298023224e-01, 9.750000298021447e-01, 9.800000298020026e-01, 9.850000000004263e-01, 9.900000000002842e-01, 9.950000000001421e-01, 1e+00] +L.y=[3.00000011920929e-01, 3.030000031664979e-01, 3.059999944120668e-01, 3.089999856576355e-01, 3.120000067055137e-01, 3.149999973922931e-01, 3.179999891966649e-01, 3.210000096857531e-01, 3.240000014901241e-01, 3.269999910593406e-01, 3.300000126659803e-01, 3.33000004470351e-01, 3.359999962747217e-01, 3.389999880790924e-01, 3.42000007450578e-01, 3.449999970197411e-01, 3.479999910593193e-01, 3.510000104308049e-01, 3.53999999999968e-01, 3.569999940395462e-01, 3.600000134110318e-01, 3.630000074505122e-01, 3.659999970197731e-01, 3.689999865889985e-01, 3.720000104307569e-01, 3.75e-01, 3.779999940395782e-01, 3.810000089406488e-01, 3.840000029802269e-01, 3.86999997019805e-01, 3.899999821187309e-01, 3.930000059604538e-01, 3.96000000000032e-01, 3.989999850989756e-01, 4.020000089406807e-01, 4.050000029802589e-01, 4.079999880792203e-01, 4.110000119209076e-01, 4.140000059604858e-01, 4.170000000000639e-01, 4.19999985098901e-01, 4.230000089406594e-01, 4.260000029802908e-01, 4.289999880791456e-01, 4.320000119209041e-01, 4.350000059605177e-01, 4.379999910593903e-01, 4.410000149011488e-01, 4.440000089405848e-01, 4.469999940394929e-01, 4.49999988079071e-01, 4.530000119207869e-01, 4.560000059604645e-01, 4.59e-01, 4.620000059604645e-01, 4.65e-01, 4.679999940395497e-01, 4.70999988079071e-01, 4.740000119206803e-01, 4.770000059604645e-01, 4.799999821189618e-01, 4.830000059604645e-01, 4.86e-01, 4.889999940395355e-01, 4.920000178811803e-01, 4.950000119205737e-01, 4.97999988079071e-01, 5.009999821188552e-01, 5.04000005960571e-01, 5.070000298023082e-01, 5.099999940393579e-01, 5.130000178810736e-01, 5.159999642376395e-01, 5.189999880793552e-01, 5.220000119207868e-01, 5.249999761581421e-01, 5.279999999998579e-01, 5.310000238415737e-01, 5.339999880794973e-01, 5.369999940398553e-01, 5.400000178812158e-01, 5.429999821186208e-01, 5.460000059603579e-01, 5.490000298020737e-01, 5.519999940399263e-01, 5.550000000003552e-01, 5.580000238416447e-01, 5.609999880791421e-01, 5.640000119208579e-01, 5.669999761583553e-01, 5.699999999996448e-01, 5.730000059600737e-01, 5.759999701979263e-01, 5.789999940396421e-01, 5.820000178813792e-01, 5.849999821187842e-01, 5.880000059601447e-01, 5.910000119205027e-01, 5.939999761584263e-01, 5.970000000001421e-01, 6.000000238418579e-01] PIDGai.k=[9.49999988079071e-01, 9.405940769025434e-01, 9.313725229004063e-01, 9.223300808635801e-01, 9.134615651875749e-01, 9.047619110817563e-01, 8.962264049656377e-01, 8.878504636381082e-01, 8.796296105153333e-01, 8.71559622768467e-01, 8.636363756456097e-01, 8.558558817090551e-01, 8.482142666567333e-01, 8.407079542032606e-01, 8.333333139016039e-01, 8.260869426703776e-01, 8.189654921122889e-01, 8.119658244165794e-01, 8.050847698456679e-01, 7.983193381553978e-01, 7.916666885042356e-01, 7.851239400353422e-01, 7.786885492357827e-01, 7.723577048795445e-01, 7.661290135671943e-01, 7.599999904632568e-01, 7.539682331331621e-01, 7.480315033309721e-01, 7.421875006922803e-01, 7.364340973019762e-01, 7.307692237257306e-01, 7.25190819631675e-01, 7.196969947021409e-01, 7.142857383683391e-01, 7.089552302236118e-01, 7.037036983937234e-01, 6.985294296415383e-01, 6.934306645721287e-01, 6.884058094114541e-01, 6.834532548285637e-01, 6.785714059197273e-01, 6.737588626962995e-01, 6.690140900905474e-01, 6.643356714144705e-01, 6.597222078859937e-01, 6.551724022483081e-01, 6.506849564600254e-01, 6.462585324775614e-01, 6.418918920778675e-01, 6.375839155050956e-01, 6.333333253860474e-01, 6.291390617743208e-01, 6.249999921676779e-01, 6.209150436791022e-01, 6.168831076858616e-01, 6.129032420625347e-01, 6.089743385097797e-01, 6.050955625658969e-01, 6.012658413399742e-01, 5.974842807573385e-01, 5.937500088581863e-01, 5.900621466672895e-01, 5.864197629090305e-01, 5.82822082724022e-01, 5.792682716451055e-01, 5.757575548052202e-01, 5.722891778869896e-01, 5.688622650798894e-01, 5.654761815333291e-01, 5.621301523871165e-01, 5.588235219916508e-01, 5.555555750832368e-01, 5.523256155435241e-01, 5.491329492144925e-01, 5.459769994176956e-01, 5.428571701049805e-01, 5.397727460257254e-01, 5.367231311249566e-01, 5.337078485638103e-01, 5.307262603555559e-01, 5.277777945222628e-01, 5.248618728883461e-01, 5.219780186189303e-01, 5.191256952679401e-01, 5.163043663895729e-01, 5.135135120838201e-01, 5.107526818498416e-01, 5.080214155766563e-01, 5.053191768240243e-01, 5.026454887535085e-01, 4.999999937324086e-01, 4.973822006403005e-01, 4.947916610380556e-01, 4.922279733798309e-01, 4.896907204338057e-01, 4.871794849684796e-01, 4.846938795485985e-01, 4.822335015305675e-01, 4.797979937564277e-01, 4.773869239343934e-01, 4.749999940395355e-01] -RefDat.y[4]=[9.49999988079071e-01, 9.413999913200723e-01, 9.327999945610738e-01, 9.241999978020756e-01, 9.156000010430764e-01, 9.070000058859627e-01, 8.984000075250791e-01, 8.898000123679659e-01, 8.812000140070846e-01, 8.726000220536259e-01, 8.640000236928077e-01, 8.568000193118914e-01, 8.496000151395989e-01, 8.424000109672888e-01, 8.352000121593433e-01, 8.280000133513978e-01, 8.208000038147228e-01, 8.136000050067773e-01, 8.064000061988319e-01, 7.991999966621569e-01, 7.919999978542115e-01, 7.858999927580835e-01, 7.797999970793811e-01, 7.737000014006786e-01, 7.675999966323768e-01, 7.615000009536743e-01, 7.553999961853723e-01, 7.493000095962694e-01, 7.432000048279676e-01, 7.371000000596656e-01, 7.310000134705626e-01, 7.257999790192119e-01, 7.206000052452812e-01, 7.153999873640732e-01, 7.102000135898228e-01, 7.049999802113184e-01, 6.998000219343643e-01, 6.94599988556002e-01, 6.894000147818581e-01, 6.841999814034958e-01, 6.790000231265417e-01, 6.743999703168944e-01, 6.697999774694716e-01, 6.65199998331055e-01, 6.606000054836323e-01, 6.560000126362096e-01, 6.51400033497793e-01, 6.467999810457254e-01, 6.421999881983027e-01, 6.376000090598861e-01, 6.330000162124634e-01, 6.291000209806786e-01, 6.251999661448175e-01, 6.21299970913317e-01, 6.173999989268286e-01, 6.135000036953281e-01, 6.096000084638553e-01, 6.05700013232327e-01, 6.018000180003292e-01, 5.978999631646813e-01, 5.939999911789033e-01, 5.905000021456607e-01, 5.870000140666607e-01, 5.835000259875185e-01, 5.799999783040158e-01, 5.764999902250159e-01, 5.730000230071974e-01, 5.695000349281975e-01, 5.659999872445527e-01, 5.624999991655278e-01, 5.590000115633189e-01, 5.558999710328141e-01, 5.528000085830262e-01, 5.497000276565268e-01, 5.465999871253825e-01, 5.435000061988831e-01, 5.404000252723836e-01, 5.372999847412393e-01, 5.342000038147399e-01, 5.310999817609467e-01, 5.280000008344472e-01, 5.252000100135717e-01, 5.224000195501955e-01, 5.195999694826209e-01, 5.167999790194777e-01, 5.140000052449245e-01, 5.112000147817813e-01, 5.084000243186382e-01, 5.055999742508503e-01, 5.027999837877072e-01, 4.999999940397131e-01, 4.975000089405013e-01, 4.950000089405724e-01, 4.925000089406434e-01, 4.900000089406612e-01, 4.875000089406079e-01, 4.850000089405369e-01, 4.824999940397487e-01, 4.799999940396776e-01, 4.774999940394645e-01, 4.749999940395355e-01] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PIDIntegralTime.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PIDIntegralTime.txt index 8004f01f3d4..e8db31dd5bc 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PIDIntegralTime.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PIDIntegralTime.txt @@ -1,4 +1,4 @@ -last-generated=2023-04-06 +last-generated=2023-06-18 statistics-simulation= { "linear": " ", @@ -6,7 +6,6 @@ statistics-simulation= "numerical Jacobians": "0" } time=[0e+00, 1e+00] -PIDIntTim.T=[5e-01, 5.049999953433857e-01, 5.099999906867714e-01, 5.149999860301567e-01, 5.199999813735693e-01, 5.24999975785618e-01, 5.29999972060354e-01, 5.350000260770249e-01, 5.400000223517285e-01, 5.450000149011879e-01, 5.50000011175882e-01, 5.550000074505762e-01, 5.600000037252704e-01, 5.649999999999645e-01, 5.699999925494239e-01, 5.749999850988832e-01, 5.799999850988121e-01, 5.849999776482715e-01, 5.899999701977309e-01, 5.950000298023046e-01, 6.000000223516752e-01, 6.050000223516929e-01, 6.100000149011523e-01, 6.150000074506117e-01, 6.200000074505406e-01, 6.25e-01, 6.29999999999929e-01, 6.349999850989188e-01, 6.399999850988477e-01, 6.449999850990253e-01, 6.499999701977665e-01, 6.549999701976954e-01, 6.600000298022691e-01, 6.650000149008681e-01, 6.700000149011879e-01, 6.750000149011168e-01, 6.800000000001065e-01, 6.850000000000355e-01, 6.899999999999645e-01, 6.949999999998935e-01, 6.999999850988832e-01, 7.049999850988121e-01, 7.099999850991319e-01, 7.149999701977309e-01, 7.200000298023046e-01, 7.250000298022335e-01, 7.300000149009747e-01, 7.350000149011523e-01, 7.400000149010812e-01, 7.45000000000071e-01, 7.5e-01, 7.549999999998579e-01, 7.599999999997158e-01, 7.649999999995737e-01, 7.699999701979974e-01, 7.749999701978553e-01, 7.799999701976776e-01, 7.850000298022158e-01, 7.900000298020737e-01, 7.950000298019316e-01, 8.000000000003552e-01, 8.050000000002131e-01, 8.10000000000071e-01, 8.14999999999929e-01, 8.199999999997869e-01, 8.249999999996448e-01, 8.299999701980684e-01, 8.349999701979263e-01, 8.399999701977842e-01, 8.450000298023224e-01, 8.500000298021447e-01, 8.550000298020026e-01, 8.600000000004263e-01, 8.650000000002842e-01, 8.700000000001421e-01, 8.75e-01, 8.799999999998579e-01, 8.849999999997158e-01, 8.899999999995737e-01, 8.949999701979974e-01, 8.999999701978553e-01, 9.049999701976776e-01, 9.100000298022158e-01, 9.150000298020737e-01, 9.200000298019316e-01, 9.250000000003552e-01, 9.300000000002131e-01, 9.35000000000071e-01, 9.39999999999929e-01, 9.449999999997869e-01, 9.499999999996448e-01, 9.549999701980684e-01, 9.599999701979263e-01, 9.649999701977842e-01, 9.700000298023224e-01, 9.750000298021447e-01, 9.800000298020026e-01, 9.850000000004263e-01, 9.900000000002842e-01, 9.950000000001421e-01, 1e+00] -PIDIntTim.L=[3.00000011920929e-01, 3.030000031664979e-01, 3.059999944120668e-01, 3.089999856576355e-01, 3.120000067055137e-01, 3.149999973922931e-01, 3.179999891966649e-01, 3.210000096857531e-01, 3.240000014901241e-01, 3.269999910593406e-01, 3.300000126659803e-01, 3.33000004470351e-01, 3.359999962747217e-01, 3.389999880790924e-01, 3.42000007450578e-01, 3.449999970197411e-01, 3.479999910593193e-01, 3.510000104308049e-01, 3.53999999999968e-01, 3.569999940395462e-01, 3.600000134110318e-01, 3.630000074505122e-01, 3.659999970197731e-01, 3.689999865889985e-01, 3.720000104307569e-01, 3.75e-01, 3.779999940395782e-01, 3.810000089406488e-01, 3.840000029802269e-01, 3.86999997019805e-01, 3.899999821187309e-01, 3.930000059604538e-01, 3.96000000000032e-01, 3.989999850989756e-01, 4.020000089406807e-01, 4.050000029802589e-01, 4.079999880792203e-01, 4.110000119209076e-01, 4.140000059604858e-01, 4.170000000000639e-01, 4.19999985098901e-01, 4.230000089406594e-01, 4.260000029802908e-01, 4.289999880791456e-01, 4.320000119209041e-01, 4.350000059605177e-01, 4.379999910593903e-01, 4.410000149011488e-01, 4.440000089405848e-01, 4.469999940394929e-01, 4.49999988079071e-01, 4.530000119207869e-01, 4.560000059604645e-01, 4.59e-01, 4.620000059604645e-01, 4.65e-01, 4.679999940395497e-01, 4.70999988079071e-01, 4.740000119206803e-01, 4.770000059604645e-01, 4.799999821189618e-01, 4.830000059604645e-01, 4.86e-01, 4.889999940395355e-01, 4.920000178811803e-01, 4.950000119205737e-01, 4.97999988079071e-01, 5.009999821188552e-01, 5.04000005960571e-01, 5.070000298023082e-01, 5.099999940393579e-01, 5.130000178810736e-01, 5.159999642376395e-01, 5.189999880793552e-01, 5.220000119207868e-01, 5.249999761581421e-01, 5.279999999998579e-01, 5.310000238415737e-01, 5.339999880794973e-01, 5.369999940398553e-01, 5.400000178812158e-01, 5.429999821186208e-01, 5.460000059603579e-01, 5.490000298020737e-01, 5.519999940399263e-01, 5.550000000003552e-01, 5.580000238416447e-01, 5.609999880791421e-01, 5.640000119208579e-01, 5.669999761583553e-01, 5.699999999996448e-01, 5.730000059600737e-01, 5.759999701979263e-01, 5.789999940396421e-01, 5.820000178813792e-01, 5.849999821187842e-01, 5.880000059601447e-01, 5.910000119205027e-01, 5.939999761584263e-01, 5.970000000001421e-01, 6.000000238418579e-01] +T.y=[5e-01, 5.049999953433857e-01, 5.099999906867714e-01, 5.149999860301567e-01, 5.199999813735693e-01, 5.24999975785618e-01, 5.29999972060354e-01, 5.350000260770249e-01, 5.400000223517285e-01, 5.450000149011879e-01, 5.50000011175882e-01, 5.550000074505762e-01, 5.600000037252704e-01, 5.649999999999645e-01, 5.699999925494239e-01, 5.749999850988832e-01, 5.799999850988121e-01, 5.849999776482715e-01, 5.899999701977309e-01, 5.950000298023046e-01, 6.000000223516752e-01, 6.050000223516929e-01, 6.100000149011523e-01, 6.150000074506117e-01, 6.200000074505406e-01, 6.25e-01, 6.29999999999929e-01, 6.349999850989188e-01, 6.399999850988477e-01, 6.449999850990253e-01, 6.499999701977665e-01, 6.549999701976954e-01, 6.600000298022691e-01, 6.650000149008681e-01, 6.700000149011879e-01, 6.750000149011168e-01, 6.800000000001065e-01, 6.850000000000355e-01, 6.899999999999645e-01, 6.949999999998935e-01, 6.999999850988832e-01, 7.049999850988121e-01, 7.099999850991319e-01, 7.149999701977309e-01, 7.200000298023046e-01, 7.250000298022335e-01, 7.300000149009747e-01, 7.350000149011523e-01, 7.400000149010812e-01, 7.45000000000071e-01, 7.5e-01, 7.549999999998579e-01, 7.599999999997158e-01, 7.649999999995737e-01, 7.699999701979974e-01, 7.749999701978553e-01, 7.799999701976776e-01, 7.850000298022158e-01, 7.900000298020737e-01, 7.950000298019316e-01, 8.000000000003552e-01, 8.050000000002131e-01, 8.10000000000071e-01, 8.14999999999929e-01, 8.199999999997869e-01, 8.249999999996448e-01, 8.299999701980684e-01, 8.349999701979263e-01, 8.399999701977842e-01, 8.450000298023224e-01, 8.500000298021447e-01, 8.550000298020026e-01, 8.600000000004263e-01, 8.650000000002842e-01, 8.700000000001421e-01, 8.75e-01, 8.799999999998579e-01, 8.849999999997158e-01, 8.899999999995737e-01, 8.949999701979974e-01, 8.999999701978553e-01, 9.049999701976776e-01, 9.100000298022158e-01, 9.150000298020737e-01, 9.200000298019316e-01, 9.250000000003552e-01, 9.300000000002131e-01, 9.35000000000071e-01, 9.39999999999929e-01, 9.449999999997869e-01, 9.499999999996448e-01, 9.549999701980684e-01, 9.599999701979263e-01, 9.649999701977842e-01, 9.700000298023224e-01, 9.750000298021447e-01, 9.800000298020026e-01, 9.850000000004263e-01, 9.900000000002842e-01, 9.950000000001421e-01, 1e+00] +L.y=[3.00000011920929e-01, 3.030000031664979e-01, 3.059999944120668e-01, 3.089999856576355e-01, 3.120000067055137e-01, 3.149999973922931e-01, 3.179999891966649e-01, 3.210000096857531e-01, 3.240000014901241e-01, 3.269999910593406e-01, 3.300000126659803e-01, 3.33000004470351e-01, 3.359999962747217e-01, 3.389999880790924e-01, 3.42000007450578e-01, 3.449999970197411e-01, 3.479999910593193e-01, 3.510000104308049e-01, 3.53999999999968e-01, 3.569999940395462e-01, 3.600000134110318e-01, 3.630000074505122e-01, 3.659999970197731e-01, 3.689999865889985e-01, 3.720000104307569e-01, 3.75e-01, 3.779999940395782e-01, 3.810000089406488e-01, 3.840000029802269e-01, 3.86999997019805e-01, 3.899999821187309e-01, 3.930000059604538e-01, 3.96000000000032e-01, 3.989999850989756e-01, 4.020000089406807e-01, 4.050000029802589e-01, 4.079999880792203e-01, 4.110000119209076e-01, 4.140000059604858e-01, 4.170000000000639e-01, 4.19999985098901e-01, 4.230000089406594e-01, 4.260000029802908e-01, 4.289999880791456e-01, 4.320000119209041e-01, 4.350000059605177e-01, 4.379999910593903e-01, 4.410000149011488e-01, 4.440000089405848e-01, 4.469999940394929e-01, 4.49999988079071e-01, 4.530000119207869e-01, 4.560000059604645e-01, 4.59e-01, 4.620000059604645e-01, 4.65e-01, 4.679999940395497e-01, 4.70999988079071e-01, 4.740000119206803e-01, 4.770000059604645e-01, 4.799999821189618e-01, 4.830000059604645e-01, 4.86e-01, 4.889999940395355e-01, 4.920000178811803e-01, 4.950000119205737e-01, 4.97999988079071e-01, 5.009999821188552e-01, 5.04000005960571e-01, 5.070000298023082e-01, 5.099999940393579e-01, 5.130000178810736e-01, 5.159999642376395e-01, 5.189999880793552e-01, 5.220000119207868e-01, 5.249999761581421e-01, 5.279999999998579e-01, 5.310000238415737e-01, 5.339999880794973e-01, 5.369999940398553e-01, 5.400000178812158e-01, 5.429999821186208e-01, 5.460000059603579e-01, 5.490000298020737e-01, 5.519999940399263e-01, 5.550000000003552e-01, 5.580000238416447e-01, 5.609999880791421e-01, 5.640000119208579e-01, 5.669999761583553e-01, 5.699999999996448e-01, 5.730000059600737e-01, 5.759999701979263e-01, 5.789999940396421e-01, 5.820000178813792e-01, 5.849999821187842e-01, 5.880000059601447e-01, 5.910000119205027e-01, 5.939999761584263e-01, 5.970000000001421e-01, 6.000000238418579e-01] PIDIntTim.Ti=[4.457142949104309e-01, 4.501714409393911e-01, 4.546285571660355e-01, 4.590857031949988e-01, 4.635428492239625e-01, 4.679999944227125e-01, 4.724571412818696e-01, 4.769142864806326e-01, 4.813714333397884e-01, 4.858285768781091e-01, 4.902857237372955e-01, 4.94742870596473e-01, 4.991999876533459e-01, 5.036571643147126e-01, 5.081142780508264e-01, 5.125714513914428e-01, 5.170285717691993e-01, 5.214856855052242e-01, 5.259428588457873e-01, 5.303999792235438e-01, 5.348571525641601e-01, 5.393142729419166e-01, 5.437714462824974e-01, 5.482285600185046e-01, 5.526857400007459e-01, 5.571428537368774e-01, 5.616000337189944e-01, 5.660571408134655e-01, 5.705142611912575e-01, 5.749714411736231e-01, 5.794285482681653e-01, 5.838857282502111e-01, 5.883428486279676e-01, 5.928000153267993e-01, 5.972571357045556e-01, 6.017143156867791e-01, 6.061714227811437e-01, 6.106285431590422e-01, 6.150857231413013e-01, 6.195428435190578e-01, 6.240000102178894e-01, 6.284571305956458e-01, 6.329143105776561e-01, 6.373714176722338e-01, 6.41828597654564e-01, 6.462857180323914e-01, 6.50742825126827e-01, 6.552000051089795e-01, 6.596571254867359e-01, 6.641142921855676e-01, 6.68571412563324e-01, 6.730285925453776e-01, 6.774857129233549e-01, 6.819428929048401e-01, 6.863999867166426e-01, 6.908571666989805e-01, 6.953142870766419e-01, 6.997714074543666e-01, 7.042285874367045e-01, 7.086857078143975e-01, 7.131428612299922e-01, 7.175999816081116e-01, 7.220571615900231e-01, 7.265142819677162e-01, 7.309714619496277e-01, 7.354285823277471e-01, 7.398856761394785e-01, 7.443428561210348e-01, 7.48799976498941e-01, 7.532571564810263e-01, 7.577142768587588e-01, 7.621714568404572e-01, 7.666285506520465e-01, 7.710857306343843e-01, 7.755428510120774e-01, 7.799999713897705e-01, 7.844571513721084e-01, 7.889142717498014e-01, 7.933714517321393e-01, 7.978285455437286e-01, 8.02285725525427e-01, 8.067428459030884e-01, 8.112000258852448e-01, 8.15657146263151e-01, 8.201143262447073e-01, 8.245714200564387e-01, 8.290285404345581e-01, 8.334857204164696e-01, 8.379428407941627e-01, 8.424000207760742e-01, 8.468571411541936e-01, 8.513142945697882e-01, 8.557714149474813e-01, 8.602285949298192e-01, 8.646857153075439e-01, 8.691428356852053e-01, 8.736000156675432e-01, 8.780571094793457e-01, 8.825142894608309e-01, 8.869714098388082e-01, 8.914285898208618e-01] -RefDat.y[5]=[4.460000097751617e-01, 4.503999949485067e-01, 4.54800009924174e-01, 4.591999950975186e-01, 4.636000100731862e-01, 4.679999944269647e-01, 4.724000102221985e-01, 4.767999945759767e-01, 4.812000103712092e-01, 4.85599993085859e-01, 4.900000088810912e-01, 4.945000114738937e-01, 4.990000140815953e-01, 5.034999868870457e-01, 5.080000159442341e-01, 5.124999853969553e-01, 5.17000021159593e-01, 5.214999906122965e-01, 5.260000196694316e-01, 5.304999958277086e-01, 5.350000248848971e-01, 5.393999843835869e-01, 5.437999969005591e-01, 5.482000094175314e-01, 5.526000284910234e-01, 5.569999814033508e-01, 5.614000004768428e-01, 5.658000064372952e-01, 5.702000255107873e-01, 5.745999849796345e-01, 5.789999909400869e-01, 5.835000265836379e-01, 5.880000027419149e-01, 5.924999654891159e-01, 5.970000012516469e-01, 6.01499977409924e-01, 6.059999997613789e-01, 6.104999759197981e-01, 6.150000116824358e-01, 6.19499987840855e-01, 6.240000101923099e-01, 6.28499986350587e-01, 6.33000022113118e-01, 6.374999848605322e-01, 6.420000206231697e-01, 6.464999967815179e-01, 6.510000191329729e-01, 6.554999952912499e-01, 6.600000310538521e-01, 6.644999938012661e-01, 6.690000295639038e-01, 6.733999890326885e-01, 6.77800008106118e-01, 6.822000271795475e-01, 6.866000200272886e-01, 6.909999794960733e-01, 6.953999985694715e-01, 6.998000176429322e-01, 7.042000367158643e-01, 7.085999961851464e-01, 7.129999890328874e-01, 7.174999649527886e-01, 7.220000007152202e-01, 7.264999768734334e-01, 7.31000012635865e-01, 7.354999887945044e-01, 7.399999977348282e-01, 7.444999738935386e-01, 7.490000096558992e-01, 7.534999858141442e-01, 7.58000021457601e-01, 7.623999809263857e-01, 7.667999737741268e-01, 7.711999928475564e-01, 7.756000119209858e-01, 7.799999713897705e-01, 7.843999904632e-01, 7.888000095366294e-01, 7.93200028610059e-01, 7.975999618537948e-01, 8.019999809265848e-01, 8.065000165700416e-01, 8.109999927282866e-01, 8.155000284906472e-01, 8.200000046493576e-01, 8.245000135896814e-01, 8.289999897483208e-01, 8.335000255107524e-01, 8.380000016689656e-01, 8.424999778271788e-01, 8.470000133512984e-01, 8.514000061990394e-01, 8.557999656683215e-01, 8.601999847412536e-01, 8.646000038147142e-01, 8.690000228881125e-01, 8.733999823568972e-01, 8.777999752046383e-01, 8.821999942780678e-01, 8.866000133514973e-01, 8.90999972820282e-01] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PIGain.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PIGain.txt index 8b8efe91fd6..46792491a4e 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PIGain.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PIGain.txt @@ -1,4 +1,4 @@ -last-generated=2023-04-06 +last-generated=2023-06-18 statistics-simulation= { "linear": " ", @@ -6,8 +6,7 @@ statistics-simulation= "numerical Jacobians": "0" } time=[0e+00, 1e+00] -PIGai.kp=[1e+00, 1.009999990686771e+00, 1.019999981373543e+00, 1.029999972060313e+00, 1.039999962747139e+00, 1.049999951571236e+00, 1.059999944120708e+00, 1.07000005215405e+00, 1.080000044703457e+00, 1.090000029802376e+00, 1.100000022351764e+00, 1.110000014901152e+00, 1.120000007450541e+00, 1.129999999999929e+00, 1.139999985098848e+00, 1.149999970197766e+00, 1.159999970197624e+00, 1.169999955296543e+00, 1.179999940395462e+00, 1.190000059604609e+00, 1.20000004470335e+00, 1.210000044703386e+00, 1.220000029802305e+00, 1.230000014901223e+00, 1.240000014901081e+00, 1.25e+00, 1.259999999999858e+00, 1.269999970197838e+00, 1.279999970197695e+00, 1.289999970198051e+00, 1.299999940395533e+00, 1.309999940395391e+00, 1.320000059604538e+00, 1.330000029801736e+00, 1.340000029802376e+00, 1.350000029802234e+00, 1.360000000000213e+00, 1.370000000000071e+00, 1.379999999999929e+00, 1.389999999999787e+00, 1.399999970197766e+00, 1.409999970197624e+00, 1.419999970198264e+00, 1.429999940395462e+00, 1.440000059604609e+00, 1.450000059604467e+00, 1.460000029801949e+00, 1.470000029802305e+00, 1.480000029802162e+00, 1.490000000000142e+00, 1.5e+00, 1.509999999999716e+00, 1.519999999999432e+00, 1.529999999999147e+00, 1.539999940395995e+00, 1.549999940395711e+00, 1.559999940395355e+00, 1.570000059604432e+00, 1.580000059604147e+00, 1.590000059603863e+00, 1.60000000000071e+00, 1.610000000000426e+00, 1.620000000000142e+00, 1.629999999999858e+00, 1.639999999999574e+00, 1.64999999999929e+00, 1.659999940396137e+00, 1.669999940395853e+00, 1.679999940395568e+00, 1.690000059604645e+00, 1.700000059604289e+00, 1.710000059604005e+00, 1.720000000000853e+00, 1.730000000000568e+00, 1.740000000000284e+00, 1.75e+00, 1.759999999999716e+00, 1.769999999999432e+00, 1.779999999999147e+00, 1.789999940395995e+00, 1.799999940395711e+00, 1.809999940395355e+00, 1.820000059604432e+00, 1.830000059604147e+00, 1.840000059603863e+00, 1.85000000000071e+00, 1.860000000000426e+00, 1.870000000000142e+00, 1.879999999999858e+00, 1.889999999999574e+00, 1.89999999999929e+00, 1.909999940396137e+00, 1.919999940395853e+00, 1.929999940395568e+00, 1.940000059604645e+00, 1.950000059604289e+00, 1.960000059604005e+00, 1.970000000000853e+00, 1.980000000000568e+00, 1.990000000000284e+00, 2e+00] -PIGai.T=[5e-01, 5.049999953433857e-01, 5.099999906867714e-01, 5.149999860301567e-01, 5.199999813735693e-01, 5.24999975785618e-01, 5.29999972060354e-01, 5.350000260770249e-01, 5.400000223517285e-01, 5.450000149011879e-01, 5.50000011175882e-01, 5.550000074505762e-01, 5.600000037252704e-01, 5.649999999999645e-01, 5.699999925494239e-01, 5.749999850988832e-01, 5.799999850988121e-01, 5.849999776482715e-01, 5.899999701977309e-01, 5.950000298023046e-01, 6.000000223516752e-01, 6.050000223516929e-01, 6.100000149011523e-01, 6.150000074506117e-01, 6.200000074505406e-01, 6.25e-01, 6.29999999999929e-01, 6.349999850989188e-01, 6.399999850988477e-01, 6.449999850990253e-01, 6.499999701977665e-01, 6.549999701976954e-01, 6.600000298022691e-01, 6.650000149008681e-01, 6.700000149011879e-01, 6.750000149011168e-01, 6.800000000001065e-01, 6.850000000000355e-01, 6.899999999999645e-01, 6.949999999998935e-01, 6.999999850988832e-01, 7.049999850988121e-01, 7.099999850991319e-01, 7.149999701977309e-01, 7.200000298023046e-01, 7.250000298022335e-01, 7.300000149009747e-01, 7.350000149011523e-01, 7.400000149010812e-01, 7.45000000000071e-01, 7.5e-01, 7.549999999998579e-01, 7.599999999997158e-01, 7.649999999995737e-01, 7.699999701979974e-01, 7.749999701978553e-01, 7.799999701976776e-01, 7.850000298022158e-01, 7.900000298020737e-01, 7.950000298019316e-01, 8.000000000003552e-01, 8.050000000002131e-01, 8.10000000000071e-01, 8.14999999999929e-01, 8.199999999997869e-01, 8.249999999996448e-01, 8.299999701980684e-01, 8.349999701979263e-01, 8.399999701977842e-01, 8.450000298023224e-01, 8.500000298021447e-01, 8.550000298020026e-01, 8.600000000004263e-01, 8.650000000002842e-01, 8.700000000001421e-01, 8.75e-01, 8.799999999998579e-01, 8.849999999997158e-01, 8.899999999995737e-01, 8.949999701979974e-01, 8.999999701978553e-01, 9.049999701976776e-01, 9.100000298022158e-01, 9.150000298020737e-01, 9.200000298019316e-01, 9.250000000003552e-01, 9.300000000002131e-01, 9.35000000000071e-01, 9.39999999999929e-01, 9.449999999997869e-01, 9.499999999996448e-01, 9.549999701980684e-01, 9.599999701979263e-01, 9.649999701977842e-01, 9.700000298023224e-01, 9.750000298021447e-01, 9.800000298020026e-01, 9.850000000004263e-01, 9.900000000002842e-01, 9.950000000001421e-01, 1e+00] -PIGai.L=[3.00000011920929e-01, 3.030000031664979e-01, 3.059999944120668e-01, 3.089999856576355e-01, 3.120000067055137e-01, 3.149999973922931e-01, 3.179999891966649e-01, 3.210000096857531e-01, 3.240000014901241e-01, 3.269999910593406e-01, 3.300000126659803e-01, 3.33000004470351e-01, 3.359999962747217e-01, 3.389999880790924e-01, 3.42000007450578e-01, 3.449999970197411e-01, 3.479999910593193e-01, 3.510000104308049e-01, 3.53999999999968e-01, 3.569999940395462e-01, 3.600000134110318e-01, 3.630000074505122e-01, 3.659999970197731e-01, 3.689999865889985e-01, 3.720000104307569e-01, 3.75e-01, 3.779999940395782e-01, 3.810000089406488e-01, 3.840000029802269e-01, 3.86999997019805e-01, 3.899999821187309e-01, 3.930000059604538e-01, 3.96000000000032e-01, 3.989999850989756e-01, 4.020000089406807e-01, 4.050000029802589e-01, 4.079999880792203e-01, 4.110000119209076e-01, 4.140000059604858e-01, 4.170000000000639e-01, 4.19999985098901e-01, 4.230000089406594e-01, 4.260000029802908e-01, 4.289999880791456e-01, 4.320000119209041e-01, 4.350000059605177e-01, 4.379999910593903e-01, 4.410000149011488e-01, 4.440000089405848e-01, 4.469999940394929e-01, 4.49999988079071e-01, 4.530000119207869e-01, 4.560000059604645e-01, 4.59e-01, 4.620000059604645e-01, 4.65e-01, 4.679999940395497e-01, 4.70999988079071e-01, 4.740000119206803e-01, 4.770000059604645e-01, 4.799999821189618e-01, 4.830000059604645e-01, 4.86e-01, 4.889999940395355e-01, 4.920000178811803e-01, 4.950000119205737e-01, 4.97999988079071e-01, 5.009999821188552e-01, 5.04000005960571e-01, 5.070000298023082e-01, 5.099999940393579e-01, 5.130000178810736e-01, 5.159999642376395e-01, 5.189999880793552e-01, 5.220000119207868e-01, 5.249999761581421e-01, 5.279999999998579e-01, 5.310000238415737e-01, 5.339999880794973e-01, 5.369999940398553e-01, 5.400000178812158e-01, 5.429999821186208e-01, 5.460000059603579e-01, 5.490000298020737e-01, 5.519999940399263e-01, 5.550000000003552e-01, 5.580000238416447e-01, 5.609999880791421e-01, 5.640000119208579e-01, 5.669999761583553e-01, 5.699999999996448e-01, 5.730000059600737e-01, 5.759999701979263e-01, 5.789999940396421e-01, 5.820000178813792e-01, 5.849999821187842e-01, 5.880000059601447e-01, 5.910000119205027e-01, 5.939999761584263e-01, 5.970000000001421e-01, 6.000000238418579e-01] +kp.y=[1e+00, 1.009999990686771e+00, 1.019999981373543e+00, 1.029999972060313e+00, 1.039999962747139e+00, 1.049999951571236e+00, 1.059999944120708e+00, 1.07000005215405e+00, 1.080000044703457e+00, 1.090000029802376e+00, 1.100000022351764e+00, 1.110000014901152e+00, 1.120000007450541e+00, 1.129999999999929e+00, 1.139999985098848e+00, 1.149999970197766e+00, 1.159999970197624e+00, 1.169999955296543e+00, 1.179999940395462e+00, 1.190000059604609e+00, 1.20000004470335e+00, 1.210000044703386e+00, 1.220000029802305e+00, 1.230000014901223e+00, 1.240000014901081e+00, 1.25e+00, 1.259999999999858e+00, 1.269999970197838e+00, 1.279999970197695e+00, 1.289999970198051e+00, 1.299999940395533e+00, 1.309999940395391e+00, 1.320000059604538e+00, 1.330000029801736e+00, 1.340000029802376e+00, 1.350000029802234e+00, 1.360000000000213e+00, 1.370000000000071e+00, 1.379999999999929e+00, 1.389999999999787e+00, 1.399999970197766e+00, 1.409999970197624e+00, 1.419999970198264e+00, 1.429999940395462e+00, 1.440000059604609e+00, 1.450000059604467e+00, 1.460000029801949e+00, 1.470000029802305e+00, 1.480000029802162e+00, 1.490000000000142e+00, 1.5e+00, 1.509999999999716e+00, 1.519999999999432e+00, 1.529999999999147e+00, 1.539999940395995e+00, 1.549999940395711e+00, 1.559999940395355e+00, 1.570000059604432e+00, 1.580000059604147e+00, 1.590000059603863e+00, 1.60000000000071e+00, 1.610000000000426e+00, 1.620000000000142e+00, 1.629999999999858e+00, 1.639999999999574e+00, 1.64999999999929e+00, 1.659999940396137e+00, 1.669999940395853e+00, 1.679999940395568e+00, 1.690000059604645e+00, 1.700000059604289e+00, 1.710000059604005e+00, 1.720000000000853e+00, 1.730000000000568e+00, 1.740000000000284e+00, 1.75e+00, 1.759999999999716e+00, 1.769999999999432e+00, 1.779999999999147e+00, 1.789999940395995e+00, 1.799999940395711e+00, 1.809999940395355e+00, 1.820000059604432e+00, 1.830000059604147e+00, 1.840000059603863e+00, 1.85000000000071e+00, 1.860000000000426e+00, 1.870000000000142e+00, 1.879999999999858e+00, 1.889999999999574e+00, 1.89999999999929e+00, 1.909999940396137e+00, 1.919999940395853e+00, 1.929999940395568e+00, 1.940000059604645e+00, 1.950000059604289e+00, 1.960000059604005e+00, 1.970000000000853e+00, 1.980000000000568e+00, 1.990000000000284e+00, 2e+00] +T.y=[5e-01, 5.049999953433857e-01, 5.099999906867714e-01, 5.149999860301567e-01, 5.199999813735693e-01, 5.24999975785618e-01, 5.29999972060354e-01, 5.350000260770249e-01, 5.400000223517285e-01, 5.450000149011879e-01, 5.50000011175882e-01, 5.550000074505762e-01, 5.600000037252704e-01, 5.649999999999645e-01, 5.699999925494239e-01, 5.749999850988832e-01, 5.799999850988121e-01, 5.849999776482715e-01, 5.899999701977309e-01, 5.950000298023046e-01, 6.000000223516752e-01, 6.050000223516929e-01, 6.100000149011523e-01, 6.150000074506117e-01, 6.200000074505406e-01, 6.25e-01, 6.29999999999929e-01, 6.349999850989188e-01, 6.399999850988477e-01, 6.449999850990253e-01, 6.499999701977665e-01, 6.549999701976954e-01, 6.600000298022691e-01, 6.650000149008681e-01, 6.700000149011879e-01, 6.750000149011168e-01, 6.800000000001065e-01, 6.850000000000355e-01, 6.899999999999645e-01, 6.949999999998935e-01, 6.999999850988832e-01, 7.049999850988121e-01, 7.099999850991319e-01, 7.149999701977309e-01, 7.200000298023046e-01, 7.250000298022335e-01, 7.300000149009747e-01, 7.350000149011523e-01, 7.400000149010812e-01, 7.45000000000071e-01, 7.5e-01, 7.549999999998579e-01, 7.599999999997158e-01, 7.649999999995737e-01, 7.699999701979974e-01, 7.749999701978553e-01, 7.799999701976776e-01, 7.850000298022158e-01, 7.900000298020737e-01, 7.950000298019316e-01, 8.000000000003552e-01, 8.050000000002131e-01, 8.10000000000071e-01, 8.14999999999929e-01, 8.199999999997869e-01, 8.249999999996448e-01, 8.299999701980684e-01, 8.349999701979263e-01, 8.399999701977842e-01, 8.450000298023224e-01, 8.500000298021447e-01, 8.550000298020026e-01, 8.600000000004263e-01, 8.650000000002842e-01, 8.700000000001421e-01, 8.75e-01, 8.799999999998579e-01, 8.849999999997158e-01, 8.899999999995737e-01, 8.949999701979974e-01, 8.999999701978553e-01, 9.049999701976776e-01, 9.100000298022158e-01, 9.150000298020737e-01, 9.200000298019316e-01, 9.250000000003552e-01, 9.300000000002131e-01, 9.35000000000071e-01, 9.39999999999929e-01, 9.449999999997869e-01, 9.499999999996448e-01, 9.549999701980684e-01, 9.599999701979263e-01, 9.649999701977842e-01, 9.700000298023224e-01, 9.750000298021447e-01, 9.800000298020026e-01, 9.850000000004263e-01, 9.900000000002842e-01, 9.950000000001421e-01, 1e+00] +L.y=[3.00000011920929e-01, 3.030000031664979e-01, 3.059999944120668e-01, 3.089999856576355e-01, 3.120000067055137e-01, 3.149999973922931e-01, 3.179999891966649e-01, 3.210000096857531e-01, 3.240000014901241e-01, 3.269999910593406e-01, 3.300000126659803e-01, 3.33000004470351e-01, 3.359999962747217e-01, 3.389999880790924e-01, 3.42000007450578e-01, 3.449999970197411e-01, 3.479999910593193e-01, 3.510000104308049e-01, 3.53999999999968e-01, 3.569999940395462e-01, 3.600000134110318e-01, 3.630000074505122e-01, 3.659999970197731e-01, 3.689999865889985e-01, 3.720000104307569e-01, 3.75e-01, 3.779999940395782e-01, 3.810000089406488e-01, 3.840000029802269e-01, 3.86999997019805e-01, 3.899999821187309e-01, 3.930000059604538e-01, 3.96000000000032e-01, 3.989999850989756e-01, 4.020000089406807e-01, 4.050000029802589e-01, 4.079999880792203e-01, 4.110000119209076e-01, 4.140000059604858e-01, 4.170000000000639e-01, 4.19999985098901e-01, 4.230000089406594e-01, 4.260000029802908e-01, 4.289999880791456e-01, 4.320000119209041e-01, 4.350000059605177e-01, 4.379999910593903e-01, 4.410000149011488e-01, 4.440000089405848e-01, 4.469999940394929e-01, 4.49999988079071e-01, 4.530000119207869e-01, 4.560000059604645e-01, 4.59e-01, 4.620000059604645e-01, 4.65e-01, 4.679999940395497e-01, 4.70999988079071e-01, 4.740000119206803e-01, 4.770000059604645e-01, 4.799999821189618e-01, 4.830000059604645e-01, 4.86e-01, 4.889999940395355e-01, 4.920000178811803e-01, 4.950000119205737e-01, 4.97999988079071e-01, 5.009999821188552e-01, 5.04000005960571e-01, 5.070000298023082e-01, 5.099999940393579e-01, 5.130000178810736e-01, 5.159999642376395e-01, 5.189999880793552e-01, 5.220000119207868e-01, 5.249999761581421e-01, 5.279999999998579e-01, 5.310000238415737e-01, 5.339999880794973e-01, 5.369999940398553e-01, 5.400000178812158e-01, 5.429999821186208e-01, 5.460000059603579e-01, 5.490000298020737e-01, 5.519999940399263e-01, 5.550000000003552e-01, 5.580000238416447e-01, 5.609999880791421e-01, 5.640000119208579e-01, 5.669999761583553e-01, 5.699999999996448e-01, 5.730000059600737e-01, 5.759999701979263e-01, 5.789999940396421e-01, 5.820000178813792e-01, 5.849999821187842e-01, 5.880000059601447e-01, 5.910000119205027e-01, 5.939999761584263e-01, 5.970000000001421e-01, 6.000000238418579e-01] PIGai.k=[3.427083194255829e-01, 3.393151759351885e-01, 3.359885512312877e-01, 3.327265379651081e-01, 3.295272287879297e-01, 3.263888957436638e-01, 3.233097489565795e-01, 3.202881515919868e-01, 3.173225218774036e-01, 3.144113133751546e-01, 3.115530316289475e-01, 3.087462483181639e-01, 3.059895925359474e-01, 3.032817231754192e-01, 3.006213308955236e-01, 2.980072513794458e-01, 2.954382291283917e-01, 2.929131095125426e-01, 2.904307859889563e-01, 2.87990182062168e-01, 2.855902917337069e-01, 2.83230034964896e-01, 2.80908465111399e-01, 2.786246547629217e-01, 2.763776767237978e-01, 2.741666734218597e-01, 2.719907442042355e-01, 2.698490940513938e-01, 2.677408757323145e-01, 2.656653804310025e-01, 2.636218095193805e-01, 2.616094057560394e-01, 2.596275196334218e-01, 2.576754416636275e-01, 2.557524747532071e-01, 2.538580287231854e-01, 2.519914236387794e-01, 2.501520821230496e-01, 2.483393690362323e-01, 2.465527479346059e-01, 2.447916726773723e-01, 2.430555516286001e-01, 2.413438983357397e-01, 2.39656181343727e-01, 2.379918988584401e-01, 2.363505791094309e-01, 2.347317351424633e-01, 2.331349251766394e-01, 2.315596772358271e-01, 2.300055935819328e-01, 2.284722179174423e-01, 2.269591525783839e-01, 2.254660101292155e-01, 2.239923733365712e-01, 2.225378782802999e-01, 2.211021499971469e-01, 2.196848246836937e-01, 2.182855596147481e-01, 2.169040120607019e-01, 2.155398243923085e-01, 2.141927065620691e-01, 2.128623146874381e-01, 2.115483588254002e-01, 2.102505111511907e-01, 2.089684885416811e-01, 2.077020227735896e-01, 2.064508083334731e-01, 2.052145769863259e-01, 2.039930531137161e-01, 2.027859982970915e-01, 2.015931294150367e-01, 2.004142229472307e-01, 1.992490324775822e-01, 1.980973056962994e-01, 1.969588111717359e-01, 1.958333402872086e-01, 1.947206397246824e-01, 1.936205306669547e-01, 1.9253277469502e-01, 1.914571695654425e-01, 1.903935236440403e-01, 1.893416198604744e-01, 1.883012794016939e-01, 1.872723085509738e-01, 1.862545284931821e-01, 1.852477514800648e-01, 1.842517866968949e-01, 1.832664911656741e-01, 1.822916711718399e-01, 1.813271628020862e-01, 1.803728021423963e-01, 1.794284457789326e-01, 1.784939185415396e-01, 1.775690919787531e-01, 1.766537872768098e-01, 1.75747855424508e-01, 1.748511921117281e-01, 1.739636237876566e-01, 1.730850206614606e-01, 1.722152390396732e-01, 1.713541597127914e-01] -RefDat.y[4]=[3.429999947547913e-01, 3.398999869130577e-01, 3.368000088736398e-01, 3.337000010319031e-01, 3.30599993190166e-01, 3.27499985925856e-01, 3.244000073090146e-01, 3.213000000447048e-01, 3.181999916255684e-01, 3.151000153183516e-01, 3.120000068992423e-01, 3.093999920725853e-01, 3.068000071227286e-01, 3.041999923706296e-01, 3.016000093579262e-01, 2.989999965429004e-01, 2.964000096559173e-01, 2.937999968409448e-01, 2.912000138282413e-01, 2.885999971389892e-01, 2.860000141262857e-01, 2.838000044703464e-01, 2.815999982118603e-01, 2.793999919533742e-01, 2.772000122189506e-01, 2.750000059604645e-01, 2.727999964237185e-01, 2.705999934434923e-01, 2.684000137090509e-01, 2.662000041723226e-01, 2.640000011920964e-01, 2.621000115632758e-01, 2.601999924898905e-01, 2.583000088809533e-01, 2.563999898076212e-01, 2.54500000536416e-01, 2.526000169275678e-01, 2.506999978542534e-01, 2.487999936819226e-01, 2.469000044106819e-01, 2.450000059008412e-01, 2.433000051856057e-01, 2.416000045895635e-01, 2.398999941587416e-01, 2.381999935626994e-01, 2.364999929666572e-01, 2.347999974369965e-01, 2.330999968409544e-01, 2.313999962449122e-01, 2.297000007152515e-01, 2.280000001192093e-01, 2.266000048875667e-01, 2.251999947549049e-01, 2.237999995231202e-01, 2.223999977350555e-01, 2.21000002503324e-01, 2.196000072717624e-01, 2.181999971390197e-01, 2.168000019073238e-01, 2.153999917747153e-01, 2.140000048874388e-01, 2.127999978541902e-01, 2.116000061988688e-01, 2.103999996423863e-01, 2.091999930859038e-01, 2.080000014305825e-01, 2.068000020264798e-01, 2.055999954701216e-01, 2.044000038146759e-01, 2.031999972581849e-01, 2.020000056027833e-01, 2.007999990463896e-01, 1.995999996422869e-01, 1.984000079869656e-01, 1.972000014304831e-01, 1.959999948740005e-01, 1.948000032186792e-01, 1.935999966621967e-01, 1.923999901057142e-01, 1.912000056027726e-01, 1.899999990462901e-01, 1.88999995827682e-01, 1.879999928474959e-01, 1.870000047683716e-01, 1.860000017881394e-01, 1.850000047683716e-01, 1.840000017881394e-01, 1.829999988079071e-01, 1.819999958276749e-01, 1.809999928475492e-01, 1.800000050067546e-01, 1.79100009178959e-01, 1.782000079869229e-01, 1.773000067948869e-01, 1.764000056028267e-01, 1.755000044107259e-01, 1.746000032186188e-01, 1.737000073908054e-01, 1.728000061987694e-01, 1.719000050067333e-01, 1.710000038146973e-01] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PIIntegralTime.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PIIntegralTime.txt index db8144b4bda..7716daa5e81 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PIIntegralTime.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_AutoTuner_AMIGO_Validation_PIIntegralTime.txt @@ -1,4 +1,4 @@ -last-generated=2023-04-06 +last-generated=2023-06-18 statistics-simulation= { "linear": " ", @@ -6,7 +6,6 @@ statistics-simulation= "numerical Jacobians": "0" } time=[0e+00, 1e+00] -PIIntTim.T=[5e-01, 5.049999953433857e-01, 5.099999906867714e-01, 5.149999860301567e-01, 5.199999813735693e-01, 5.24999975785618e-01, 5.29999972060354e-01, 5.350000260770249e-01, 5.400000223517285e-01, 5.450000149011879e-01, 5.50000011175882e-01, 5.550000074505762e-01, 5.600000037252704e-01, 5.649999999999645e-01, 5.699999925494239e-01, 5.749999850988832e-01, 5.799999850988121e-01, 5.849999776482715e-01, 5.899999701977309e-01, 5.950000298023046e-01, 6.000000223516752e-01, 6.050000223516929e-01, 6.100000149011523e-01, 6.150000074506117e-01, 6.200000074505406e-01, 6.25e-01, 6.29999999999929e-01, 6.349999850989188e-01, 6.399999850988477e-01, 6.449999850990253e-01, 6.499999701977665e-01, 6.549999701976954e-01, 6.600000298022691e-01, 6.650000149008681e-01, 6.700000149011879e-01, 6.750000149011168e-01, 6.800000000001065e-01, 6.850000000000355e-01, 6.899999999999645e-01, 6.949999999998935e-01, 6.999999850988832e-01, 7.049999850988121e-01, 7.099999850991319e-01, 7.149999701977309e-01, 7.200000298023046e-01, 7.250000298022335e-01, 7.300000149009747e-01, 7.350000149011523e-01, 7.400000149010812e-01, 7.45000000000071e-01, 7.5e-01, 7.549999999998579e-01, 7.599999999997158e-01, 7.649999999995737e-01, 7.699999701979974e-01, 7.749999701978553e-01, 7.799999701976776e-01, 7.850000298022158e-01, 7.900000298020737e-01, 7.950000298019316e-01, 8.000000000003552e-01, 8.050000000002131e-01, 8.10000000000071e-01, 8.14999999999929e-01, 8.199999999997869e-01, 8.249999999996448e-01, 8.299999701980684e-01, 8.349999701979263e-01, 8.399999701977842e-01, 8.450000298023224e-01, 8.500000298021447e-01, 8.550000298020026e-01, 8.600000000004263e-01, 8.650000000002842e-01, 8.700000000001421e-01, 8.75e-01, 8.799999999998579e-01, 8.849999999997158e-01, 8.899999999995737e-01, 8.949999701979974e-01, 8.999999701978553e-01, 9.049999701976776e-01, 9.100000298022158e-01, 9.150000298020737e-01, 9.200000298019316e-01, 9.250000000003552e-01, 9.300000000002131e-01, 9.35000000000071e-01, 9.39999999999929e-01, 9.449999999997869e-01, 9.499999999996448e-01, 9.549999701980684e-01, 9.599999701979263e-01, 9.649999701977842e-01, 9.700000298023224e-01, 9.750000298021447e-01, 9.800000298020026e-01, 9.850000000004263e-01, 9.900000000002842e-01, 9.950000000001421e-01, 1e+00] -PIIntTim.L=[3.00000011920929e-01, 3.030000031664979e-01, 3.059999944120668e-01, 3.089999856576355e-01, 3.120000067055137e-01, 3.149999973922931e-01, 3.179999891966649e-01, 3.210000096857531e-01, 3.240000014901241e-01, 3.269999910593406e-01, 3.300000126659803e-01, 3.33000004470351e-01, 3.359999962747217e-01, 3.389999880790924e-01, 3.42000007450578e-01, 3.449999970197411e-01, 3.479999910593193e-01, 3.510000104308049e-01, 3.53999999999968e-01, 3.569999940395462e-01, 3.600000134110318e-01, 3.63367350849591e-01, 3.663265410612901e-01, 3.692857014707645e-01, 3.722448960919941e-01, 3.752040863037109e-01, 3.781632809248606e-01, 3.811224369249822e-01, 3.84081631546114e-01, 3.870408261672814e-01, 3.89999982167403e-01, 3.930000059604538e-01, 3.96000000000032e-01, 3.989999850989756e-01, 4.020000089406807e-01, 4.050000029802589e-01, 4.079999880792203e-01, 4.110000119209076e-01, 4.140000059604858e-01, 4.170000000000639e-01, 4.19999985098901e-01, 4.230000089406594e-01, 4.260000029802908e-01, 4.289999880791456e-01, 4.320000119209041e-01, 4.350000059605177e-01, 4.379999910593903e-01, 4.410000149011488e-01, 4.440000089405848e-01, 4.469999940394929e-01, 4.49999988079071e-01, 4.530000119207869e-01, 4.560000059604645e-01, 4.59e-01, 4.620000059604645e-01, 4.65e-01, 4.679999940395497e-01, 4.70999988079071e-01, 4.740000119206803e-01, 4.770000059604645e-01, 4.799999821189618e-01, 4.830000059604645e-01, 4.86e-01, 4.889999940395355e-01, 4.920000178811803e-01, 4.950000119205737e-01, 4.97999988079071e-01, 5.009999821188552e-01, 5.04000005960571e-01, 5.070000298023082e-01, 5.099999940393579e-01, 5.130000178810736e-01, 5.159999642376395e-01, 5.189999880793552e-01, 5.220000119207868e-01, 5.249999761581421e-01, 5.279999999998579e-01, 5.310000238415737e-01, 5.339999880794973e-01, 5.369999940398553e-01, 5.400000178812158e-01, 5.429999821186208e-01, 5.460000059603579e-01, 5.490000298020737e-01, 5.519999940399263e-01, 5.550000000003552e-01, 5.580000238416447e-01, 5.609999880791421e-01, 5.640000119208579e-01, 5.669999761583553e-01, 5.699999999996448e-01, 5.730000059600737e-01, 5.759999701979263e-01, 5.789999940396421e-01, 5.820000178813792e-01, 5.849999821187842e-01, 5.880000059601447e-01, 5.910000119205027e-01, 5.939999761584263e-01, 5.970000000001421e-01, 6.000000238418579e-01] -PIIntTim.Ti=[4.688059687614441e-01, 4.734940231894267e-01, 4.781820776174092e-01, 4.828701618477139e-01, 4.875582162756968e-01, 4.922462698304613e-01, 4.969343251316619e-01, 5.016223786864307e-01, 5.063104637899213e-01, 5.10998485796012e-01, 5.156865708994577e-01, 5.203746560029922e-01, 5.250626815019174e-01, 5.297507666053275e-01, 5.344387886114182e-01, 5.391268702219761e-01, 5.438148992138602e-01, 5.485029808244891e-01, 5.531910624350115e-01, 5.578790914268956e-01, 5.625671730374713e-01, 5.673205883197889e-01, 5.720013981676988e-01, 5.766822080156087e-01, 5.813630248383694e-01, 5.860437750816345e-01, 5.907245919043954e-01, 5.954053947774542e-01, 6.000861519955702e-01, 6.047669688183311e-01, 6.0944777169139e-01, 6.141358006744633e-01, 6.18823889270708e-01, 6.235119638955435e-01, 6.281999928875343e-01, 6.328880814837788e-01, 6.375760965043604e-01, 6.42264185100463e-01, 6.46952214092347e-01, 6.51640302688876e-01, 6.563283773134984e-01, 6.610164063053824e-01, 6.657044949015205e-01, 6.703925099221021e-01, 6.750805985184178e-01, 6.797686871145914e-01, 6.84456702135173e-01, 6.891447907314177e-01, 6.938328197233372e-01, 6.985208943479597e-01, 7.032089829444885e-01, 7.078970119363059e-01, 7.125851005321998e-01, 7.172731295245857e-01, 7.219611901776515e-01, 7.266492191698242e-01, 7.313373077659689e-01, 7.360253963621802e-01, 7.407134253542108e-01, 7.454015139498914e-01, 7.500895149998046e-01, 7.547776035959826e-01, 7.594656921920185e-01, 7.64153721183836e-01, 7.688418097798719e-01, 7.735298387721157e-01, 7.782178994251815e-01, 7.829059880216437e-01, 7.875940170136743e-01, 7.922821056098855e-01, 7.969701346017408e-01, 8.016582231975635e-01, 8.063462838512688e-01, 8.110343128436547e-01, 8.157224014395486e-01, 8.20410430431366e-01, 8.250985190275439e-01, 8.297865480196457e-01, 8.344746366161079e-01, 8.391626972691737e-01, 8.438507262613464e-01, 8.485388148574201e-01, 8.532268438492708e-01, 8.57914932445733e-01, 8.626030210414136e-01, 8.672910220913268e-01, 8.719791106870785e-01, 8.766671396790381e-01, 8.813552282752161e-01, 8.860433168713941e-01, 8.907313458636379e-01, 8.954194065167037e-01, 9.001074355090185e-01, 9.047955241049833e-01, 9.094836127014078e-01, 9.14171641693263e-01, 9.188597302890857e-01, 9.235477313389989e-01, 9.282358199346085e-01, 9.329238489267102e-01, 9.376119375228882e-01] -RefDat.y[5]=[4.690000116825104e-01, 4.736999870397178e-01, 4.78399992199241e-01, 4.830999973587672e-01, 4.87800002518294e-01, 4.92500006802382e-01, 4.972000128373469e-01, 5.019000171214303e-01, 5.066000231563718e-01, 5.113000256895609e-01, 5.159999721199547e-01, 5.206999781549045e-01, 5.253999841898987e-01, 5.30099990224893e-01, 5.347999927580466e-01, 5.394999952911647e-01, 5.442000048280172e-01, 5.489000073611531e-01, 5.536000098942889e-01, 5.583000194310705e-01, 5.630000219642775e-01, 5.676734477586304e-01, 5.722653275241416e-01, 5.768571476850791e-01, 5.814489746884938e-01, 5.860407948493958e-01, 5.90632681457171e-01, 5.952244947758445e-01, 5.998163217792591e-01, 6.044081487826738e-01, 6.090000217057079e-01, 6.136999715090234e-01, 6.183999810458051e-01, 6.23099976575615e-01, 6.277999861121834e-01, 6.324999956489293e-01, 6.371999911783485e-01, 6.41900000715201e-01, 6.466000102519115e-01, 6.513000197884798e-01, 6.560000153183253e-01, 6.607000248550713e-01, 6.654000343916396e-01, 6.70099970317018e-01, 6.747999798536575e-01, 6.7949998939051e-01, 6.841999849201779e-01, 6.888999944567817e-01, 6.936000039936343e-01, 6.982999995230534e-01, 7.03000009059906e-01, 7.077000185964076e-01, 7.124000281329091e-01, 7.171000376694108e-01, 7.218000191925997e-01, 7.26499969125096e-01, 7.311999786615642e-01, 7.358999881983123e-01, 7.405999977350981e-01, 7.453000072718838e-01, 7.499999887942201e-01, 7.54699998331006e-01, 7.594000078677918e-01, 7.641000174044354e-01, 7.688000269409371e-01, 7.735000364774387e-01, 7.781999583966223e-01, 7.828999679331239e-01, 7.875999774696255e-01, 7.922999870062315e-01, 7.969999965429839e-01, 8.017000060797697e-01, 8.06399987602106e-01, 8.110999971388918e-01, 8.158000066756775e-01, 8.205000162124634e-01, 8.25200025748965e-01, 8.299000352854665e-01, 8.34599985218176e-01, 8.392999667411518e-01, 8.439999762776533e-01, 8.486999858141215e-01, 8.533999953508696e-01, 8.581000048876555e-01, 8.628000144244412e-01, 8.674999959467775e-01, 8.722000054835634e-01, 8.769000150203492e-01, 8.816000245569928e-01, 8.863000340934944e-01, 8.909999840260618e-01, 8.956999655491796e-01, 9.003999750856813e-01, 9.050999846221829e-01, 9.097999941587889e-01, 9.145000036955413e-01, 9.19200013232327e-01, 9.238999947546633e-01, 9.286000042914492e-01, 9.333000138282349e-01, 9.380000233650208e-01] +T.y=[5e-01, 5.049999953433857e-01, 5.099999906867714e-01, 5.149999860301567e-01, 5.199999813735693e-01, 5.24999975785618e-01, 5.29999972060354e-01, 5.350000260770249e-01, 5.400000223517285e-01, 5.450000149011879e-01, 5.50000011175882e-01, 5.550000074505762e-01, 5.600000037252704e-01, 5.649999999999645e-01, 5.699999925494239e-01, 5.749999850988832e-01, 5.799999850988121e-01, 5.849999776482715e-01, 5.899999701977309e-01, 5.950000298023046e-01, 6.000000223516752e-01, 6.050000223516929e-01, 6.100000149011523e-01, 6.150000074506117e-01, 6.200000074505406e-01, 6.25e-01, 6.29999999999929e-01, 6.349999850989188e-01, 6.399999850988477e-01, 6.449999850990253e-01, 6.499999701977665e-01, 6.549999701976954e-01, 6.600000298022691e-01, 6.650000149008681e-01, 6.700000149011879e-01, 6.750000149011168e-01, 6.800000000001065e-01, 6.850000000000355e-01, 6.899999999999645e-01, 6.949999999998935e-01, 6.999999850988832e-01, 7.049999850988121e-01, 7.099999850991319e-01, 7.149999701977309e-01, 7.200000298023046e-01, 7.250000298022335e-01, 7.300000149009747e-01, 7.350000149011523e-01, 7.400000149010812e-01, 7.45000000000071e-01, 7.5e-01, 7.549999999998579e-01, 7.599999999997158e-01, 7.649999999995737e-01, 7.699999701979974e-01, 7.749999701978553e-01, 7.799999701976776e-01, 7.850000298022158e-01, 7.900000298020737e-01, 7.950000298019316e-01, 8.000000000003552e-01, 8.050000000002131e-01, 8.10000000000071e-01, 8.14999999999929e-01, 8.199999999997869e-01, 8.249999999996448e-01, 8.299999701980684e-01, 8.349999701979263e-01, 8.399999701977842e-01, 8.450000298023224e-01, 8.500000298021447e-01, 8.550000298020026e-01, 8.600000000004263e-01, 8.650000000002842e-01, 8.700000000001421e-01, 8.75e-01, 8.799999999998579e-01, 8.849999999997158e-01, 8.899999999995737e-01, 8.949999701979974e-01, 8.999999701978553e-01, 9.049999701976776e-01, 9.100000298022158e-01, 9.150000298020737e-01, 9.200000298019316e-01, 9.250000000003552e-01, 9.300000000002131e-01, 9.35000000000071e-01, 9.39999999999929e-01, 9.449999999997869e-01, 9.499999999996448e-01, 9.549999701980684e-01, 9.599999701979263e-01, 9.649999701977842e-01, 9.700000298023224e-01, 9.750000298021447e-01, 9.800000298020026e-01, 9.850000000004263e-01, 9.900000000002842e-01, 9.950000000001421e-01, 1e+00] +L.y=[3.00000011920929e-01, 3.030000031664979e-01, 3.059999944120668e-01, 3.089999856576355e-01, 3.120000067055137e-01, 3.149999973922931e-01, 3.179999891966649e-01, 3.210000096857531e-01, 3.240000014901241e-01, 3.269999910593406e-01, 3.300000126659803e-01, 3.33000004470351e-01, 3.359999962747217e-01, 3.389999880790924e-01, 3.42000007450578e-01, 3.449999970197411e-01, 3.479999910593193e-01, 3.510000104308049e-01, 3.53999999999968e-01, 3.569999940395462e-01, 3.600000134110318e-01, 3.630000074505122e-01, 3.659999970197731e-01, 3.689999865889985e-01, 3.720000104307569e-01, 3.75e-01, 3.779999940395782e-01, 3.810000089406488e-01, 3.840000029802269e-01, 3.86999997019805e-01, 3.899999821187309e-01, 3.930000059604538e-01, 3.96000000000032e-01, 3.989999850989756e-01, 4.020000089406807e-01, 4.050000029802589e-01, 4.079999880792203e-01, 4.110000119209076e-01, 4.140000059604858e-01, 4.170000000000639e-01, 4.19999985098901e-01, 4.230000089406594e-01, 4.260000029802908e-01, 4.289999880791456e-01, 4.320000119209041e-01, 4.350000059605177e-01, 4.379999910593903e-01, 4.410000149011488e-01, 4.440000089405848e-01, 4.469999940394929e-01, 4.49999988079071e-01, 4.530000119207869e-01, 4.560000059604645e-01, 4.59e-01, 4.620000059604645e-01, 4.65e-01, 4.679999940395497e-01, 4.70999988079071e-01, 4.740000119206803e-01, 4.770000059604645e-01, 4.799999821189618e-01, 4.830000059604645e-01, 4.86e-01, 4.889999940395355e-01, 4.920000178811803e-01, 4.950000119205737e-01, 4.97999988079071e-01, 5.009999821188552e-01, 5.04000005960571e-01, 5.070000298023082e-01, 5.099999940393579e-01, 5.130000178810736e-01, 5.159999642376395e-01, 5.189999880793552e-01, 5.220000119207868e-01, 5.249999761581421e-01, 5.279999999998579e-01, 5.310000238415737e-01, 5.339999880794973e-01, 5.369999940398553e-01, 5.400000178812158e-01, 5.429999821186208e-01, 5.460000059603579e-01, 5.490000298020737e-01, 5.519999940399263e-01, 5.550000000003552e-01, 5.580000238416447e-01, 5.609999880791421e-01, 5.640000119208579e-01, 5.669999761583553e-01, 5.699999999996448e-01, 5.730000059600737e-01, 5.759999701979263e-01, 5.789999940396421e-01, 5.820000178813792e-01, 5.849999821187842e-01, 5.880000059601447e-01, 5.910000119205027e-01, 5.939999761584263e-01, 5.970000000001421e-01, 6.000000238418579e-01] +PIIntTim.Ti=[4.688059687614441e-01, 4.734940231894267e-01, 4.781820776174092e-01, 4.828701618477139e-01, 4.875582162756968e-01, 4.922462698304613e-01, 4.969343251316619e-01, 5.016223786864307e-01, 5.063104637899213e-01, 5.10998485796012e-01, 5.156865708994577e-01, 5.203746560029922e-01, 5.250626815019174e-01, 5.297507666053275e-01, 5.344387886114182e-01, 5.391268702219761e-01, 5.438148992138602e-01, 5.485029808244891e-01, 5.531910624350115e-01, 5.578790914268956e-01, 5.625671730374713e-01, 5.672552020293553e-01, 5.71943283639931e-01, 5.766313652505066e-01, 5.813193942423907e-01, 5.860074758529663e-01, 5.906955048448503e-01, 5.953835794694728e-01, 6.000716680660017e-01, 6.047596970578858e-01, 6.094477716825082e-01, 6.141358006744633e-01, 6.18823889270708e-01, 6.235119638955435e-01, 6.281999928875343e-01, 6.328880814837788e-01, 6.375760965043604e-01, 6.42264185100463e-01, 6.46952214092347e-01, 6.51640302688876e-01, 6.563283773134984e-01, 6.610164063053824e-01, 6.657044949015205e-01, 6.703925099221021e-01, 6.750805985184178e-01, 6.797686871145914e-01, 6.84456702135173e-01, 6.891447907314177e-01, 6.938328197233372e-01, 6.985208943479597e-01, 7.032089829444885e-01, 7.078970119363059e-01, 7.125851005321998e-01, 7.172731295245857e-01, 7.219611901776515e-01, 7.266492191698242e-01, 7.313373077659689e-01, 7.360253963621802e-01, 7.407134253542108e-01, 7.454015139498914e-01, 7.500895149998046e-01, 7.547776035959826e-01, 7.594656921920185e-01, 7.64153721183836e-01, 7.688418097798719e-01, 7.735298387721157e-01, 7.782178994251815e-01, 7.829059880216437e-01, 7.875940170136743e-01, 7.922821056098855e-01, 7.969701346017408e-01, 8.016582231975635e-01, 8.063462838512688e-01, 8.110343128436547e-01, 8.157224014395486e-01, 8.20410430431366e-01, 8.250985190275439e-01, 8.297865480196457e-01, 8.344746366161079e-01, 8.391626972691737e-01, 8.438507262613464e-01, 8.485388148574201e-01, 8.532268438492708e-01, 8.57914932445733e-01, 8.626030210414136e-01, 8.672910220913268e-01, 8.719791106870785e-01, 8.766671396790381e-01, 8.813552282752161e-01, 8.860433168713941e-01, 8.907313458636379e-01, 8.954194065167037e-01, 9.001074355090185e-01, 9.047955241049833e-01, 9.094836127014078e-01, 9.14171641693263e-01, 9.188597302890857e-01, 9.235477313389989e-01, 9.282358199346085e-01, 9.329238489267102e-01, 9.376119375228882e-01] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_Controller.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_Controller.txt index 17400669983..f5c8e0b76e6 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_Controller.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_Controller.txt @@ -1,4 +1,4 @@ -last-generated=2023-04-06 +last-generated=2023-06-18 statistics-simulation= { "linear": " ", @@ -6,5 +6,8 @@ statistics-simulation= "numerical Jacobians": "0" } time=[0e+00, 1e+00] -relCon.u_m=[0e+00, 1.253332374497156e-01, 2.486898953308248e-01, 3.681245524153801e-01, 4.817536869061769e-01, 5.877852363451299e-01, 6.845471384320703e-01, 7.705132340994622e-01, 8.443279384363055e-01, 9.048270386715103e-01, 9.510565340027346e-01, 9.822872294183655e-01, 9.980267303235079e-01, 9.980267241165655e-01, 9.822872294183655e-01, 9.510565622604734e-01, 9.048270386715103e-01, 8.443279384363054e-01, 7.705132929390851e-01, 6.845471041974797e-01, 5.877852740064528e-01, 4.8175360443844e-01, 3.681245306244136e-01, 2.486899405222956e-01, 1.253331676890714e-01, -2.097981390461576e-15, -1.253333533635595e-01, -2.486897589136873e-01, -3.681245306244139e-01, -4.817537683762683e-01, -5.877851217017483e-01, -6.845471041974797e-01, -7.705132929390851e-01, -8.443278366018112e-01, -9.048270386715105e-01, -9.510565622604733e-01, -9.822871922079218e-01, -9.980267241165655e-01, -9.980267241165655e-01, -9.822871922079218e-01, -9.510565622604733e-01, -9.048270386715105e-01, -8.443278366018112e-01, -7.705132929390851e-01, -6.845471041974797e-01, -5.877851217017483e-01, -4.817537683762683e-01, -3.681245306244139e-01, -2.486897589136873e-01, -1.253333533635595e-01, 4.195962780923152e-15, 1.253333533617908e-01, 2.486901212847727e-01, 3.68124877196207e-01, 4.817534392344727e-01, 5.877851217035711e-01, 6.845471041971509e-01, 7.70513292938244e-01, 8.443280367726912e-01, 9.048271948735948e-01, 9.510564438597915e-01, 9.822871922084567e-01, 9.980267241166327e-01, 9.980267241166327e-01, 9.822871922084567e-01, 9.510564438597915e-01, 9.048271948735948e-01, 8.443280367726912e-01, 7.70513292938244e-01, 6.845471041971509e-01, 5.877851217035711e-01, 4.817534392344727e-01, 3.68124877196207e-01, 2.486901212847727e-01, 1.253333533617908e-01, -6.738033169476553e-15, -1.253333533617908e-01, -2.486901212847727e-01, -3.68124877196207e-01, -4.817534392344727e-01, -5.877851217035711e-01, -6.845471041971509e-01, -7.70513292938244e-01, -8.443280367726912e-01, -9.048271948735948e-01, -9.510564438597915e-01, -9.822871922084567e-01, -9.980267241166327e-01, -9.980267241166327e-01, -9.822871922084567e-01, -9.510564438597915e-01, -9.048271948735948e-01, -8.443280367726912e-01, -7.70513292938244e-01, -6.845471041971509e-01, -5.877851217035711e-01, -4.817534392344727e-01, -3.68124877196207e-01, -2.486901212847727e-01, -1.253333533617908e-01, -4.898587410340671e-16] -relCon.y=[1e+00, 1e+00, 1e+00, 1e+00, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +relCon.u_m=[0e+00, 1.253332374497156e-01, 2.486898953308248e-01, 3.681245524153801e-01, 4.817536869061769e-01, 5.877852363451299e-01, 6.845471384320703e-01, 7.705132340994622e-01, 8.443279384363055e-01, 9.048270386715103e-01, 9.510565340027346e-01, 9.822872294183655e-01, 9.980267303235079e-01, 9.980267241165655e-01, 9.822872294183655e-01, 9.510565622604734e-01, 9.048270386715103e-01, 8.443279384363054e-01, 7.705132929390851e-01, 6.845471041974797e-01, 5.877852740064528e-01, 4.8175360443844e-01, 3.681245306244136e-01, 2.486899405222956e-01, 1.253331676890714e-01, -2.097981390461576e-15, -1.253333533635595e-01, -2.486897589136873e-01, -3.681245306244139e-01, -4.817537683762683e-01, -5.877851217017483e-01, -6.845471041974797e-01, -7.705132929390851e-01, -8.443278366018112e-01, -9.048270386715105e-01, -9.510565622604733e-01, -9.822871922079218e-01, -9.980267241165655e-01, -9.980267241165655e-01, -9.822871922079218e-01, -9.510565622604733e-01, -9.048270386715105e-01, -8.443278366018112e-01, -7.705132929390851e-01, -6.845471041974797e-01, -5.877851217017483e-01, -4.817537683762683e-01, -3.681245306244139e-01, -2.486897589136873e-01, -1.253333533635595e-01, -2.449293705170336e-16, 1.253333533617908e-01, 2.486901212847727e-01, 3.68124877196207e-01, 4.817534392344727e-01, 5.877851217035711e-01, 6.845471041971509e-01, 7.70513292938244e-01, 8.443280367726912e-01, 9.048271948735948e-01, 9.510564438597915e-01, 9.822871922084567e-01, 9.980267241166327e-01, 9.980267241166327e-01, 9.822871922084567e-01, 9.510564438597915e-01, 9.048271948735948e-01, 8.443280367726912e-01, 7.70513292938244e-01, 6.845471041971509e-01, 5.877851217035711e-01, 4.817534392344727e-01, 3.68124877196207e-01, 2.486901212847727e-01, 1.253333533617908e-01, -6.738033169476553e-15, -1.253333533617908e-01, -2.486901212847727e-01, -3.68124877196207e-01, -4.817534392344727e-01, -5.877851217035711e-01, -6.845471041971509e-01, -7.70513292938244e-01, -8.443280367726912e-01, -9.048271948735948e-01, -9.510564438597915e-01, -9.822871922084567e-01, -9.980267241166327e-01, -9.980267241166327e-01, -9.822871922084567e-01, -9.510564438597915e-01, -9.048271948735948e-01, -8.443280367726912e-01, -7.70513292938244e-01, -6.845471041971509e-01, -5.877851217035711e-01, -4.817534392344727e-01, -3.68124877196207e-01, -2.486901212847727e-01, -1.253333533617908e-01, -4.898587410340671e-16] +relRes.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +relCon.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +relCon.yErr=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.253333533617908e-01, 2.486901212847727e-01, 3.68124877196207e-01, 4.817534392344727e-01, 5.877851217035711e-01, 6.845471041971509e-01, 7.70513292938244e-01, 8.443280367726912e-01, 9.048271948735948e-01, 9.510564438597915e-01, 9.822871922084567e-01, 9.980267241166327e-01, 9.980267241166327e-01, 9.822871922084567e-01, 9.510564438597915e-01, 9.048271948735948e-01, 8.443280367726912e-01, 7.70513292938244e-01, 6.845471041971509e-01, 5.877851217035711e-01, 4.817534392344727e-01, 3.68124877196207e-01, 2.486901212847727e-01, 1.253333533617908e-01, -6.738033169476553e-15, -1.253333533617908e-01, -2.486901212847727e-01, -3.68124877196207e-01, -4.817534392344727e-01, -5.877851217035711e-01, -6.845471041971509e-01, -7.70513292938244e-01, -8.443280367726912e-01, -9.048271948735948e-01, -9.510564438597915e-01, -9.822871922084567e-01, -9.980267241166327e-01, -9.980267241166327e-01, -9.822871922084567e-01, -9.510564438597915e-01, -9.048271948735948e-01, -8.443280367726912e-01, -7.70513292938244e-01, -6.845471041971509e-01, -5.877851217035711e-01, -4.817534392344727e-01, -3.68124877196207e-01, -2.486901212847727e-01, -1.253333533617908e-01, -4.898587410340671e-16] +relCon.yOn=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_HalfPeriodRatio.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_HalfPeriodRatio.txt index 362233e2fc4..1af20e46789 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_HalfPeriodRatio.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_HalfPeriodRatio.txt @@ -1,4 +1,4 @@ -last-generated=2023-04-06 +last-generated=2023-06-18 statistics-simulation= { "linear": " ", @@ -6,6 +6,8 @@ statistics-simulation= "numerical Jacobians": "0" } time=[0e+00, 1e+00] -halPerRat.tOn=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1.000008344508995e+00, 2e+00, 2e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00, 6e+00] -halPerRat.tOff=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.788109067992328e-05, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00, 3e+00] -halPerRat.rho=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1.000004172254497e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00] +tOn.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01] +tOff.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.172254420929029e-06, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01] +halPerRat.triSta=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +halPerRat.triEnd=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +halPerRat.rho=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 3.5e+00, 3.5e+00, 3.5e+00, 3.5e+00, 3.5e+00, 3.5e+00, 3.5e+00, 3.5e+00, 3.5e+00, 3.5e+00, 3.5e+00, 3.5e+00, 3.5e+00, 3.5e+00, 3.5e+00, 3.5e+00, 3.5e+00, 3.5e+00, 3.5e+00, 3.5e+00] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_NormalizedTimeDelay.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_NormalizedTimeDelay.txt index 9c78c6e60c0..cd5fbdcdf0c 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_NormalizedTimeDelay.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_NormalizedTimeDelay.txt @@ -1,4 +1,4 @@ -last-generated=2023-04-06 +last-generated=2023-06-18 statistics-simulation= { "linear": " ", @@ -6,6 +6,5 @@ statistics-simulation= "numerical Jacobians": "0" } time=[0e+00, 1e+00] -norTimDel.rho=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1.00000298018178e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 1.5e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00] -norTimDel.tau=[2.051282167434692e+00, 2.051282167434692e+00, 2.051282167434692e+00, 2.051282167434692e+00, 2.051282167434692e+00, 2.051282167434692e+00, 2.051282167434692e+00, 2.051282167434692e+00, 2.051282167434692e+00, 2.051282167434692e+00, 2.051282167434692e+00, 2.051282167434692e+00, 2.051282167434692e+00, 2.051282167434692e+00, 2.051282167434692e+00, 2.051282167434692e+00, 2.051282167434692e+00, 2.051282167434692e+00, 2.051282167434692e+00, 2.051282167434692e+00, 2.051282167434692e+00, 2.051282167434692e+00, 2.051282167434692e+00, 2.051282167434692e+00, 2.051282167434692e+00, 2.051282167434692e+00, 2.051282167434692e+00, 2.051282167434692e+00, 2.051282167434692e+00, 2.051282167434692e+00, 2.051282167434692e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999982668447268e-01, 7.092198729515076e-01, 7.092198729515076e-01, 7.092198729515076e-01, 7.092198729515076e-01, 7.092198729515076e-01, 7.092198729515076e-01, 7.092198729515076e-01, 7.092198729515076e-01, 7.092198729515076e-01, 7.092198729515076e-01, 7.092198729515076e-01, 7.092198729515076e-01, 7.092198729515076e-01, 7.092198729515076e-01, 7.092198729515076e-01, 4.938271641731262e-01, 4.938271641731262e-01, 4.938271641731262e-01, 4.938271641731262e-01, 4.938271641731262e-01, 4.938271641731262e-01, 4.938271641731262e-01, 4.938271641731262e-01, 4.938271641731262e-01, 4.938271641731262e-01, 4.938271641731262e-01, 4.938271641731262e-01, 4.938271641731262e-01, 4.938271641731262e-01, 4.938271641731262e-01] -RefDat.y[2]=[2.051000118255615e+00, 2.051000118255615e+00, 2.051000118255615e+00, 2.051000118255615e+00, 2.051000118255615e+00, 2.051000118255615e+00, 2.051000118255615e+00, 2.051000118255615e+00, 2.051000118255615e+00, 2.051000118255615e+00, 2.051000118255615e+00, 2.051000118255615e+00, 2.051000118255615e+00, 2.051000118255615e+00, 2.051000118255615e+00, 2.051000118255615e+00, 2.051000118255615e+00, 2.051000118255615e+00, 2.051000118255615e+00, 2.051000118255615e+00, 2.051000118255615e+00, 2.051000118255615e+00, 2.051000118255615e+00, 2.051000118255615e+00, 2.051000118255615e+00, 2.051000118255615e+00, 2.051000118255615e+00, 2.051000118255615e+00, 2.051000118255615e+00, 2.051000118255615e+00, 2.051000118255615e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999982655341529e-01, 7.089999914169312e-01, 7.089999914169312e-01, 7.089999914169312e-01, 7.089999914169312e-01, 7.089999914169312e-01, 7.089999914169312e-01, 7.089999914169312e-01, 7.089999914169312e-01, 7.089999914169312e-01, 7.089999914169312e-01, 7.089999914169312e-01, 7.089999914169312e-01, 7.089999914169312e-01, 7.089999914169312e-01, 7.089999914169312e-01, 4.939999878406525e-01, 4.939999878406525e-01, 4.939999878406525e-01, 4.939999878406525e-01, 4.939999878406525e-01, 4.939999878406525e-01, 4.939999878406525e-01, 4.939999878406525e-01, 4.939999878406525e-01, 4.939999878406525e-01, 4.939999878406525e-01, 4.939999878406525e-01, 4.939999878406525e-01, 4.939999878406525e-01, 4.939999878406525e-01] +rho.y=[2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 2e+00, 1.99999403963644e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +norTimDel.tau=[3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703703582286835e-01, 3.703741110502566e-01, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_OnOffPeriod.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_OnOffPeriod.txt index 5028bffd326..2d4d5a36bba 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_OnOffPeriod.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_OnOffPeriod.txt @@ -1,4 +1,4 @@ -last-generated=2023-04-06 +last-generated=2023-06-18 statistics-simulation= { "linear": " ", @@ -6,6 +6,6 @@ statistics-simulation= "numerical Jacobians": "0" } time=[0e+00, 1e+00] -onOffPer.On=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5.960363559974428e-06, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999916554910049e-01, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] -onOffPer.tOn=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000002518253337e-01, 1.299999952316284e-01, 1.299999952316284e-01, 1.299999952316284e-01, 1.299999952316284e-01, 1.299999952316284e-01, 1.299999952316284e-01, 1.299999952316284e-01, 1.299999952316284e-01, 1.299999952316284e-01, 1.299999952316284e-01, 1.299999952316284e-01, 1.299999952316284e-01, 1.299999952316284e-01, 1.299999952316284e-01, 1.299999952316284e-01, 1.299999952316284e-01, 1.299999952316284e-01] -onOffPer.tOff=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 3.576218278090798e-06, 6.000000238418579e-01, 6.000000238418579e-01, 6.000000238418579e-01, 6.000000238418579e-01, 6.000000238418579e-01, 6.000000238418579e-01, 6.000000238418579e-01, 6.000000238418579e-01, 6.000000238418579e-01, 6.000000238418579e-01, 6.000000238418579e-01, 6.000000238418579e-01, 6.000000238418579e-01, 6.000000238418579e-01, 6.000000238418579e-01, 1.999999955296516e-02, 1.999999955296516e-02, 1.999999955296516e-02, 1.999999955296516e-02, 1.999999955296516e-02, 1.999999955296516e-02, 1.999999955296516e-02, 1.999999955296516e-02, 1.999999955296516e-02, 1.999999955296516e-02, 1.999999955296516e-02, 1.999999955296516e-02, 1.999999955296516e-02, 1.999999955296516e-02, 1.999999955296516e-02] +relRes.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999993294478573e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5.960363559974428e-06, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +onOffPer.tOn=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.023312766277112e-08, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01] +onOffPer.tOff=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 3.81463259311995e-06, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_ResponseProcess.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_ResponseProcess.txt index 7f36a3357f5..b582cea650b 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_ResponseProcess.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_ResponseProcess.txt @@ -1,4 +1,4 @@ -last-generated=2023-04-06 +last-generated=2023-06-18 statistics-simulation= { "linear": " ", @@ -6,9 +6,9 @@ statistics-simulation= "numerical Jacobians": "0" } time=[0e+00, 1e+00] -relRes.y[1]=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5.960363559974428e-06, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999916554910049e-01, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] -resPro.tOn=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000002518253337e-01, 1.299999952316284e-01, 1.299999952316284e-01, 1.299999952316284e-01, 1.299999952316284e-01, 1.299999952316284e-01, 1.299999952316284e-01, 1.299999952316284e-01, 1.299999952316284e-01, 1.299999952316284e-01, 1.299999952316284e-01, 1.299999952316284e-01, 1.299999952316284e-01, 1.299999952316284e-01, 1.299999952316284e-01, 1.299999952316284e-01, 1.299999952316284e-01, 1.299999952316284e-01] -resPro.tOff=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 3.576218278090798e-06, 6.000000238418579e-01, 6.000000238418579e-01, 6.000000238418579e-01, 6.000000238418579e-01, 6.000000238418579e-01, 6.000000238418579e-01, 6.000000238418579e-01, 6.000000238418579e-01, 6.000000238418579e-01, 6.000000238418579e-01, 6.000000238418579e-01, 6.000000238418579e-01, 6.000000238418579e-01, 6.000000238418579e-01, 6.000000238418579e-01, 1.999999955296516e-02, 1.999999955296516e-02, 1.999999955296516e-02, 1.999999955296516e-02, 1.999999955296516e-02, 1.999999955296516e-02, 1.999999955296516e-02, 1.999999955296516e-02, 1.999999955296516e-02, 1.999999955296516e-02, 1.999999955296516e-02, 1.999999955296516e-02, 1.999999955296516e-02, 1.999999955296516e-02, 1.999999955296516e-02] -resPro.triEnd=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 8.344508995066242e-06, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] -resPro.triSta=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] -resPro.tau=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999920096721993e-01, 4.244482144713402e-02, 4.244482144713402e-02, 4.244482144713402e-02, 4.244482144713402e-02, 4.244482144713402e-02, 4.244482144713402e-02, 4.244482144713402e-02, 4.244482144713402e-02, 4.244482144713402e-02, 4.244482144713402e-02, 4.244482144713402e-02, 4.244482144713402e-02, 4.244482144713402e-02, 4.244482144713402e-02, 4.244482144713402e-02, 4.244482144713402e-02, 4.244482144713402e-02] +relRes.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999993294478573e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5.960363559974428e-06, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +resPro.tOn=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.023312766277112e-08, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01] +resPro.tOff=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 3.81463259311995e-06, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01] +resPro.triEnd=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +resPro.triSta=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 6.705521427008603e-07, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +resPro.tau=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1.219512224197388e-01, 1.219512224197388e-01, 1.219512224197388e-01, 1.219512224197388e-01, 1.219512224197388e-01, 1.219512224197388e-01, 1.219512224197388e-01, 1.219512224197388e-01, 1.219512224197388e-01, 1.219512224197388e-01, 1.219512224197388e-01, 1.219512224197388e-01, 1.219512224197388e-01, 1.219512224197388e-01] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_Validation_ControlProcessModel.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_Validation_ControlProcessModel.txt index 72460788584..acbd0d89c54 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_Validation_ControlProcessModel.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_Validation_ControlProcessModel.txt @@ -1,4 +1,4 @@ -last-generated=2023-04-06 +last-generated=2023-06-18 statistics-simulation= { "linear": " ", @@ -7,7 +7,12 @@ statistics-simulation= "numerical Jacobians": "0" } time=[0e+00, 1e+00] -conProMod.T=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.99998581020444e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01] -RefDat.y[5]=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999985814336176e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01] -conProMod.L=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.99998581020444e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01, 7.619307041168213e-01] -RefDat.y[6]=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999985814336176e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01, 7.620000243186951e-01] +tunSta.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +tunEnd.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +u.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999940396364123e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01] +ratioLT.y=[3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.000003695480519e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01] +tOn.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01] +tOff.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01] +conProMod.k=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1.129032230377197e+01, 1.129032230377197e+01, 1.129032230377197e+01, 1.129032230377197e+01, 1.129032230377197e+01, 1.129032230377197e+01, 1.129032230377197e+01, 1.129032230377197e+01, 1.129032230377197e+01, 1.129032230377197e+01, 1.129032230377197e+01, 1.129032230377197e+01, 1.129032230377197e+01, 1.129032230377197e+01, 1.129032230377197e+01, 1.129032230377197e+01, 1.129032230377197e+01, 1.129032230377197e+01, 1.129032230377197e+01, 1.129032230377197e+01] +conProMod.T=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2.127405554056168e-01, 2.127405554056168e-01, 2.127405554056168e-01, 2.127405554056168e-01, 2.127405554056168e-01, 2.127405554056168e-01, 2.127405554056168e-01, 2.127405554056168e-01, 2.127405554056168e-01, 2.127405554056168e-01, 2.127405554056168e-01, 2.127405554056168e-01, 2.127405554056168e-01, 2.127405554056168e-01, 2.127405554056168e-01, 2.127405554056168e-01, 2.127405554056168e-01, 2.127405554056168e-01, 2.127405554056168e-01, 2.127405554056168e-01] +conProMod.L=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.117452800273895e-02, 9.117452800273895e-02, 9.117452800273895e-02, 9.117452800273895e-02, 9.117452800273895e-02, 9.117452800273895e-02, 9.117452800273895e-02, 9.117452800273895e-02, 9.117452800273895e-02, 9.117452800273895e-02, 9.117452800273895e-02, 9.117452800273895e-02, 9.117452800273895e-02, 9.117452800273895e-02, 9.117452800273895e-02, 9.117452800273895e-02, 9.117452800273895e-02, 9.117452800273895e-02, 9.117452800273895e-02, 9.117452800273895e-02] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_Validation_Gain.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_Validation_Gain.txt index 61c07ac8be3..6f0ed04f521 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_Validation_Gain.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_Validation_Gain.txt @@ -1,4 +1,4 @@ -last-generated=2023-04-06 +last-generated=2023-06-18 statistics-simulation= { "linear": " ", @@ -7,8 +7,8 @@ statistics-simulation= "numerical Jacobians": "0" } time=[0e+00, 1e+00] -u.y[1]=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5.000041722544976e-01, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999940396364123e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01] -tOn.y[1]=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 9.999964386828665e-02, 7.000000029802322e-02, 7.000000029802322e-02, 7.000000029802322e-02, 7.000000029802322e-02, 7.000000029802322e-02, 7.000000029802322e-02, 7.000000029802322e-02, 7.000000029802322e-02, 7.000000029802322e-02, 7.000000029802322e-02] -tOff.y[1]=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 6.091491725557235e-06, 7.300000190734863e-01, 7.300000190734863e-01, 7.300000190734863e-01, 7.300000190734863e-01, 7.300000190734863e-01, 7.300000190734863e-01, 7.300000190734863e-01, 7.300000190734863e-01, 7.300000190734863e-01, 7.300000190734863e-01, 7.300000190734863e-01, 7.300000190734863e-01, 7.300000190734863e-01, 7.300000190734863e-01, 7.300000190734863e-01, 7.300000190734863e-01, 7.300000190734863e-01] -tunSta.y[1]=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] -gai.k=[1e+00, 1.000000022351738e+09, 2.000000044703476e+09, 3.000000067055152e+09, 4.000000089406952e+09, 4.999999925494206e+09, 6.000000134110429e+09, 6.999999970197628e+09, 8.000000178813572e+09, 9.000000154371941e+09, 9.999999850989073e+09, 5.000000372528364e-02, 1.000000149011312e-01, 1.500000298022514e-01, 2.000000000000045e-01, 2.49999970197722e-01, 3.000000298022691e-01, 3.499999850988655e-01, 3.999999701976776e-01, 4.5e-01, 4.999999850988833e-01, 5.500000447033858e-01, 6.000000298023046e-01, 6.499999552965786e-01, 7.000000149010812e-01, 7.5e-01, 8.000000596045027e-01, 8.499999701975178e-01, 8.999999701976955e-01, 9.50000029802198e-01, 9.999999403955329e-01, 1.049999940395391e+00, 1.100000059604538e+00, 1.149999910593228e+00, 1.200000029802376e+00, 1.250000029802234e+00, 1.299999880790923e+00, 1.350000000000071e+00, 1.399999999999929e+00, 1.450000119209077e+00, 1.499999970197766e+00, 1.549999970197624e+00, 1.600000089406772e+00, 1.649999940395462e+00, 1.700000059604609e+00, 1.750000059604467e+00, 1.799999910593157e+00, 1.850000029802304e+00, 1.900000029802162e+00, 1.950000000000142e+00, 2e+00, 2.049999999999148e+00, 2.099999999998295e+00, 2.150000238416022e+00, 2.199999940397274e+00, 2.249999940396421e+00, 2.299999940395213e+00, 2.349999940394715e+00, 2.400000178812442e+00, 2.450000178811589e+00, 2.499999880792842e+00, 2.549999880791989e+00, 2.599999880791137e+00, 2.650000119208863e+00, 2.700000119208011e+00, 2.750000119207158e+00, 2.799999821188411e+00, 2.849999821187558e+00, 2.900000059605285e+00, 2.950000059604787e+00, 3.000000059603579e+00, 3.050000059602726e+00, 3.099999761583978e+00, 3.150000000001705e+00, 3.200000000000852e+00, 3.25e+00, 3.299999999999148e+00, 3.349999999998295e+00, 3.400000238416022e+00, 3.449999940397274e+00, 3.499999940396421e+00, 3.549999940395213e+00, 3.599999940394715e+00, 3.649958081550767e+00, -1.41509447457449e+00, -1.452830105459542e+00, -1.490565961263091e+00, -1.52830181706664e+00, -1.566037792079478e+00, -1.603773647883027e+00, -1.641507464163597e+00, -1.491525367155602e+00, -1.508474560107653e+00, -1.525423753059705e+00, -1.542372826802586e+00, -1.559322019754517e+00, -1.576271212706568e+00, -1.593220304635363e+00, -1.610169497587414e+00, -1.627118571330744e+00, -1.644067764282227e+00] +u.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999940396364123e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01] +tOn.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01] +tOff.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01] +tunSta.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +gai.k=[1e+00, 1.100000022351738e+01, 2.100000044703476e+01, 3.100000067055152e+01, 4.100000089406952e+01, 5.099999925494207e+01, 6.100000134110429e+01, 7.099999970197628e+01, 8.100000178813572e+01, 9.099999642372856e+01, 1.009999985098869e+02, 4.9504953593305e-02, 9.900991456340306e-02, 1.485148755335023e-01, 1.98019799619625e-01, 2.475247237057474e-01, 2.970297215598233e-01, 3.465346307447847e-01, 3.960395697320684e-01, 4.455445526850186e-01, 4.95049491672267e-01, 5.445545044275039e-01, 5.940594136124653e-01, 6.435643227974267e-01, 6.930693057505012e-01, 7.425742745399475e-01, 7.920792574928622e-01, 8.415840929098704e-01, 8.910890758627851e-01, 9.405941184203442e-01, 9.900989538373525e-01, 1.039603936790338e+00, 1.089108979347613e+00, 1.138613755160581e+00, 1.188118797717643e+00, 1.237623840275131e+00, 1.287128616088098e+00, 1.336633658645089e+00, 1.386138581993644e+00, 1.435643624551487e+00, 1.485148519572536e+00, 1.53465344292109e+00, 1.584158485478152e+00, 1.633663380499983e+00, 1.683168303848537e+00, 1.73267334640567e+00, 1.782178122218637e+00, 1.831683164775983e+00, 1.881188207333188e+00, 1.930692983146155e+00, 1.98019802570343e+00, 2.029702949051281e+00, 2.079207991608421e+00, 2.128713034165561e+00, 2.178217781653509e+00, 2.227722824210649e+00, 2.277227628349142e+00, 2.32673267090635e+00, 2.37623771346349e+00, 2.42574275602063e+00, 2.475247503508578e+00, 2.524752307648844e+00, 2.574257350204279e+00, 2.623762392761419e+00, 2.673267435318559e+00, 2.722772477872857e+00, 2.772276986948194e+00, 2.821782029504198e+00, 2.871287072059348e+00, 2.92079211461684e+00, 2.970297157172207e+00, 3.019802199728211e+00, 3.069306708803548e+00, 3.118811751357277e+00, 3.168316793914417e+00, 3.217821836471558e+00, 3.267326879027561e+00, 3.316831683167259e+00, 3.366336725724399e+00, 3.415841473212347e+00, 3.465346515769487e+00, -1.445783128700034e+00, -1.485943822974971e+00, -1.526104517249623e+00, -1.566265211524275e+00, -1.606425666426816e+00, -1.6465862414936e+00, -1.686746935768253e+00, -1.726907630043189e+00, -1.767068324317557e+00, -1.807228970718071e+00, -1.827309198170052e+00, -1.847389545307378e+00, -1.867469892444704e+00, -1.887550239582173e+00, -1.907630586719357e+00, -1.927710933856683e+00, -1.947791161306959e+00, -1.9678713892367e+00, -1.987951736374026e+00, -2.008032083511353e+00] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_Validation_TimeConstantDelay.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_Validation_TimeConstantDelay.txt index 2dfaa6be3ed..0011b96b0ca 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_Validation_TimeConstantDelay.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_Validation_TimeConstantDelay.txt @@ -1,4 +1,4 @@ -last-generated=2023-04-06 +last-generated=2023-06-18 statistics-simulation= { "linear": " ", @@ -6,7 +6,8 @@ statistics-simulation= "numerical Jacobians": "0" } time=[0e+00, 1e+00] -timConDel.T=[7.535837292671204e-01, 7.535837292671204e-01, 7.535837292671204e-01, 7.535837292671204e-01, 7.535837292671204e-01, 7.535837292671204e-01, 7.535837292671204e-01, 7.535837292671204e-01, 7.535837292671204e-01, 7.535837292671204e-01, 7.535837292671204e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525817394256592e-01, 8.525806639837914e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721486668846094e-01, 5.747795104980469e-01, 5.747795104980469e-01, 1.344298958778381e+00, 1.344298958778381e+00, 1.344298958778381e+00, 1.344298958778381e+00, 1.344298958778381e+00, 1.344298958778381e+00, 1.344298958778381e+00, 1.344298958778381e+00, 1.344298958778381e+00, 1.344298958778381e+00, 1.344298958778381e+00, 1.344298958778381e+00, 1.344298958778381e+00, 1.344298958778381e+00, 1.344298958778381e+00] -RefDat.y[4]=[7.540000081062317e-01, 7.540000081062317e-01, 7.540000081062317e-01, 7.540000081062317e-01, 7.540000081062317e-01, 7.540000081062317e-01, 7.540000081062317e-01, 7.540000081062317e-01, 7.540000081062317e-01, 7.540000081062317e-01, 7.540000081062317e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529999852180481e-01, 8.529989063922778e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.719991815226976e-01, 5.74999988079071e-01, 5.74999988079071e-01, 1.343999981880188e+00, 1.343999981880188e+00, 1.343999981880188e+00, 1.343999981880188e+00, 1.343999981880188e+00, 1.343999981880188e+00, 1.343999981880188e+00, 1.343999981880188e+00, 1.343999981880188e+00, 1.343999981880188e+00, 1.343999981880188e+00, 1.343999981880188e+00, 1.343999981880188e+00, 1.343999981880188e+00, 1.343999981880188e+00] -timConDel.L=[2.260751128196716e-01, 2.260751128196716e-01, 2.260751128196716e-01, 2.260751128196716e-01, 2.260751128196716e-01, 2.260751128196716e-01, 2.260751128196716e-01, 2.260751128196716e-01, 2.260751128196716e-01, 2.260751128196716e-01, 2.260751128196716e-01, 3.360747396945953e-01, 3.360747396945953e-01, 3.360747396945953e-01, 3.360747396945953e-01, 3.360747396945953e-01, 3.360747396945953e-01, 3.360747396945953e-01, 3.360747396945953e-01, 3.360747396945953e-01, 3.360747396945953e-01, 3.360747396945953e-01, 3.360747396945953e-01, 3.360747396945953e-01, 3.360747396945953e-01, 3.360747396945953e-01, 3.360747396945953e-01, 3.360747396945953e-01, 3.360747396945953e-01, 3.360747396945953e-01, 3.360747396945953e-01, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525817096233368e-02, 8.525966592027019e-02, 3.360747396945953e-01, 3.360747396945953e-01, 3.360747396945953e-01, 3.360747396945953e-01, 3.360747396945953e-01, 3.360747396945953e-01, 3.360747396945953e-01, 3.360747396945953e-01, 3.360747396945953e-01, 3.360747396945953e-01, 3.360747396945953e-01, 3.360747396945953e-01, 3.360757723181433e-01, 4.598236083984375e-01, 4.598236083984375e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01, 6.721494793891907e-01] -RefDat.y[5]=[2.259999960660934e-01, 2.259999960660934e-01, 2.259999960660934e-01, 2.259999960660934e-01, 2.259999960660934e-01, 2.259999960660934e-01, 2.259999960660934e-01, 2.259999960660934e-01, 2.259999960660934e-01, 2.259999960660934e-01, 2.259999960660934e-01, 3.35999995470047e-01, 3.35999995470047e-01, 3.35999995470047e-01, 3.35999995470047e-01, 3.35999995470047e-01, 3.35999995470047e-01, 3.35999995470047e-01, 3.35999995470047e-01, 3.35999995470047e-01, 3.35999995470047e-01, 3.35999995470047e-01, 3.35999995470047e-01, 3.35999995470047e-01, 3.35999995470047e-01, 3.35999995470047e-01, 3.35999995470047e-01, 3.35999995470047e-01, 3.35999995470047e-01, 3.35999995470047e-01, 3.35999995470047e-01, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.500000089406967e-02, 8.50014969452909e-02, 3.35999995470047e-01, 3.35999995470047e-01, 3.35999995470047e-01, 3.35999995470047e-01, 3.35999995470047e-01, 3.35999995470047e-01, 3.35999995470047e-01, 3.35999995470047e-01, 3.35999995470047e-01, 3.35999995470047e-01, 3.35999995470047e-01, 3.35999995470047e-01, 3.360010301892698e-01, 4.600000083446503e-01, 4.600000083446503e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01, 6.71999990940094e-01] +tOn.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01] +k.y=[1e+00, 1e+00] +ratioLT.y=[3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.000003695480519e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01] +timConDel.T=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.53583532054474e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02] +timConDel.L=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.26075317592644e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIDWithFirstOrderAMIGO.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIDWithFirstOrderAMIGO.txt index eb7c613bedb..1476f5904fd 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIDWithFirstOrderAMIGO.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIDWithFirstOrderAMIGO.txt @@ -1,4 +1,4 @@ -last-generated=2023-04-06 +last-generated=2023-06-18 statistics-simulation= { "linear": " ", @@ -8,7 +8,9 @@ statistics-simulation= } time=[0e+00, 1e+04] PID.u_s=[8.00000011920929e-01, 8.00000011920929e-01] -PID.u_m=[7.200000286102295e-01, 7.999961972236633e-01, 8.00000011920929e-01, 9.997047185897827e-01, 9.997542500495911e-01, 1.353038940578699e-02, 8.857408602125361e-07, 3.679669458023306e-09, 9.999660849571228e-01, 1.000000238418579e+00, 1.831817673519254e-03, -4.376551601126266e-07, -3.086363165039074e-08, 9.999957084655762e-01, 9.999999403953552e-01, 2.479994727764279e-04, -1.764262975711972e-07, 9.864661693572999e-01, 9.999984502792358e-01, 1.000000238418579e+00, 3.37569581461139e-05, -1.531296902612667e-07, 9.981683492660522e-01, 9.999999403953552e-01, 1.00000011920929e+00, 4.782652922585839e-06, 6.361457849379804e-08, 9.997518658638e-01, 9.999997615814209e-01, 1.353305298835039e-02, 6.810040531490813e-07, 5.165457039879584e-08, 9.999655485153198e-01, 1e+00, 1.832396141253376e-03, 6.068140692150337e-07, -7.690858438991199e-08, 9.999955296516418e-01, 1e+00, 2.482716517988592e-04, -6.328367874175456e-08, 9.864668250083923e-01, 9.999991655349731e-01, 1.00000011920929e+00, 3.372831270098686e-05, 3.373774859483092e-08, 9.981687068939209e-01, 9.999999403953552e-01, 1.00000011920929e+00, 4.778414222528227e-06, 6.64355894741675e-08, 9.997522234916687e-01, 9.999995231628418e-01, 1.353304088115692e-02, 6.783279786759522e-07, 6.301085875293211e-08, 9.999650716781616e-01, 9.999998807907104e-01, 1.831485773436725e-03, -3.620476363153102e-08, 3.025162342851218e-08, 9.999959468841553e-01, 9.999998807907104e-01, 2.482726704329252e-04, -6.531460172709558e-08, 9.864665865898132e-01, 9.999988675117493e-01, 9.999998807907104e-01, 3.372812352608758e-05, 3.565445538810754e-08, 9.981690049171448e-01, 9.999999403953552e-01, 9.999997615814209e-01, 4.674082902056398e-06, 1.378034539811779e-07, 9.997523427009583e-01, 9.999998807907104e-01, 1.353303622454405e-02, 6.771534231120313e-07, 7.043469452128193e-08, 9.999664425849915e-01, 1e+00, 1.831492292694747e-03, -1.129223647922117e-07, 3.704376894120287e-08, 9.999950528144836e-01, 1e+00, 2.482762211002409e-04, -7.298008597445005e-08, 9.864667057991028e-01, 9.999994039535522e-01, 1e+00, 3.372755600139499e-05, 4.042295387307604e-08, 9.981687664985657e-01, 9.999996423721313e-01, 1e+00, 4.769191491504898e-06, 7.418010028459321e-08, 9.997516870498657e-01, 1.000000715255737e+00] +PID.u_m=[7.200000286102295e-01, 7.999955415725708e-01, 8.00000011920929e-01, 9.998812675476074e-01, 9.999308586120605e-01, 1.35326012969017e-02, 7.544281288573984e-07, -1.620563416793161e-08, 9.999659657478333e-01, 1.000000357627869e+00, 1.831946196034551e-03, -1.746274449487828e-07, -5.609168685083432e-09, 9.999949336051941e-01, 1e+00, 2.480100665707141e-04, -3.585540753192618e-08, 9.864667057991029e-01, 9.999995827674866e-01, 1e+00, 3.373355139046907e-05, 2.50190019812635e-08, 9.98167872428894e-01, 9.999999403953552e-01, 1e+00, 4.743972112919437e-06, -2.480660725723283e-07, 9.997516870498657e-01, 1e+00, 1.353300828486681e-02, 6.803470000704692e-07, -5.640788103278283e-08, 9.999660849571228e-01, 9.999998807907104e-01, 1.831486006267333e-03, -3.732870013095635e-08, 1.908020763607965e-08, 9.999951720237732e-01, 9.999998807907104e-01, 2.48188734985888e-04, 3.217139621369824e-08, 9.864668846130371e-01, 9.999992251396179e-01, 1e+00, 3.372893115738407e-05, 2.197630877276424e-08, 9.981679320335388e-01, 9.999998807907104e-01, 1e+00, 4.769079168909229e-06, 7.429161996697076e-08, 9.997523427009583e-01, 9.999999403953552e-01, 1.353302784264088e-02, 1.034865135807195e-06, -3.435196793688533e-09, 9.999656081199646e-01, 1.000000476837158e+00, 1.831485773436725e-03, -3.617385146981178e-08, 3.050061181397723e-08, 9.999945759773254e-01, 1e+00, 2.482747659087181e-04, -6.974792654546036e-08, 9.864667057991028e-01, 9.999992251396179e-01, 1.000000357627869e+00, 3.369602563907262e-05, 3.903253897874272e-08, 9.981673955917358e-01, 9.999998211860657e-01, 1e+00, 4.767383416037774e-06, 7.603664897715134e-08, 9.997503757476807e-01, 1.00000011920929e+00, 1.353302784264088e-02, 1.032252612276352e-06, 7.175890459620859e-08, 9.999659657478333e-01, 9.999999403953552e-01, 1.831659930758178e-03, 1.311786519408997e-07, -8.21852594867778e-08, 9.99995231628418e-01, 9.999998807907104e-01, 2.481871633790433e-04, 1.744355060395719e-08, 9.864668846130371e-01, 9.999992251396179e-01, 1e+00, 3.380886846571229e-05, 3.752766986053757e-08, 9.981676936149597e-01, 9.999998211860657e-01, 1e+00, 4.767782684211852e-06, 7.561517634258053e-08, 9.99751091003418e-01, 9.999998807907104e-01] PIDWitTun.u_s=[8.00000011920929e-01, 8.00000011920929e-01] -PIDWitTun.u_m=[8.999999761581421e-01, 9.99995231628418e-01, 1e+00, -9.972719848155975e-02, -1.000000312924385e-01, 9.851129055023193e-01, 9.999990463256836e-01, 1e+00, 7.412599921226501e-01, 7.412511706352234e-01, 8.219661712646484e-01, 8.221143484115601e-01, 8.221142888069153e-01, 7.949288487434387e-01, 7.949287295341492e-01, 8.02881121635437e-01, 8.028831481933594e-01, 7.998949885368347e-01, 7.998539805412292e-01, 7.998539805412292e-01, 8.005301356315613e-01, 8.005301356315613e-01, 8.001304268836975e-01, 8.001297116279602e-01, 8.001297116279602e-01, 8.00144374370575e-01, 8.00144374370575e-01, 8.000690937042236e-01, 8.000690340995789e-01, 8.000496625900269e-01, 8.000494241714478e-01, 8.000494241714478e-01, 8.000285625457764e-01, 8.000285625457764e-01, 8.000184297561646e-01, 8.000183701515198e-01, 8.000183701515198e-01, 8.00011157989502e-01, 8.00011157989502e-01, 8.000069856643677e-01, 8.000069856643677e-01, 8.000043630599976e-01, 8.000043034553528e-01, 8.000043034553528e-01, 8.000026941299438e-01, 8.000026941299438e-01, 8.000016808509827e-01, 8.000016808509827e-01, 8.000016808509827e-01, 8.000010251998901e-01, 8.000010251998901e-01, 8.000006675720215e-01, 8.000006675720215e-01, 8.000004291534424e-01, 8.000003695487976e-01, 8.000003695487976e-01, 8.000002503395081e-01, 8.000002503395081e-01, 8.000001311302185e-01, 8.000001311302185e-01, 8.000001311302185e-01, 8.000000715255737e-01, 8.000000715255737e-01, 8.000000715255737e-01, 8.000000715255737e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01] -resSig.y=[0e+00, 0e+00] +PIDWitTun.u_m=[7.200000286102295e-01, 7.999955415725708e-01, 8.00000011920929e-01, 9.998812675476074e-01, 9.999308586120605e-01, 1.35326012969017e-02, 7.544281288573984e-07, -1.620563416793161e-08, 9.999659657478333e-01, 1.000000357627869e+00, 1.831946196034551e-03, -1.746274449487828e-07, -5.609168685083432e-09, 9.999949336051941e-01, 1e+00, -9.972719103097916e-02, -1.000000387430191e-01, 9.851133823394777e-01, 9.999995231628418e-01, 1e+00, 7.412633299827576e-01, 7.412546277046204e-01, 8.219677209854126e-01, 8.221158385276794e-01, 8.221158385276794e-01, 7.949301600456238e-01, 7.949300408363342e-01, 8.028817772865295e-01, 8.028837442398071e-01, 7.998954653739929e-01, 7.998544573783875e-01, 7.998544573783875e-01, 8.005303740501404e-01, 8.005304336547852e-01, 8.001306056976318e-01, 8.001298904418945e-01, 8.001298904418945e-01, 8.001444935798645e-01, 8.001444935798645e-01, 8.000691533088684e-01, 8.000690937042236e-01, 8.000497221946716e-01, 8.000494837760925e-01, 8.000494837760925e-01, 8.000285625457764e-01, 8.000285625457764e-01, 8.000184297561646e-01, 8.000183701515198e-01, 8.000183701515198e-01, 8.000112175941467e-01, 8.000112175941467e-01, 8.000070452690125e-01, 8.000069856643677e-01, 8.000043630599976e-01, 8.000043034553528e-01, 8.000043034553528e-01, 8.000026941299438e-01, 8.000026941299438e-01, 8.000016808509827e-01, 8.000016808509827e-01, 8.000016808509827e-01, 8.000010251998901e-01, 8.000010251998901e-01, 8.000006675720215e-01, 8.000006675720215e-01, 8.000004291534424e-01, 8.000003695487976e-01, 8.000003695487976e-01, 8.000002503395081e-01, 8.000002503395081e-01, 8.000001311302185e-01, 8.000001311302185e-01, 8.000001311302185e-01, 8.000000715255737e-01, 8.000000715255737e-01, 8.000000715255737e-01, 8.000000715255737e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01] +autTunSig.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +PIDWitTun.conProMod.triSta=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +PIDWitTun.conProMod.triEnd=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIWithFirstOrderAMIGO.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIWithFirstOrderAMIGO.txt index d30d037e1b7..2129f0075d6 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIWithFirstOrderAMIGO.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIWithFirstOrderAMIGO.txt @@ -1,4 +1,4 @@ -last-generated=2023-04-06 +last-generated=2023-06-18 statistics-simulation= { "linear": " ", @@ -8,7 +8,9 @@ statistics-simulation= } time=[0e+00, 1e+04] PI.u_s=[8.00000011920929e-01, 8.00000011920929e-01] -PI.u_m=[7.200000286102295e-01, 7.999963164329529e-01, 8.00000011920929e-01, 9.993212819099426e-01, 9.993707537651062e-01, 1.352495327591896e-02, 8.742280215301435e-07, -1.705985575028988e-08, 9.999662041664124e-01, 1e+00, 1.831496367231011e-03, 2.1658214777176e-08, -5.232301814039886e-10, 9.999952912330627e-01, 9.999997615814209e-01, 2.480033726897091e-04, 1.846915864689436e-08, 9.864668250083924e-01, 9.999994039535522e-01, 9.999999403953552e-01, 3.366969031048939e-05, 3.118373399502161e-07, 9.981674551963806e-01, 1e+00, 1e+00, 4.608750259649241e-06, 1.292929709961754e-07, 9.997518658638e-01, 1.000000238418579e+00, 1.353342551738024e-02, 6.908467753419245e-07, -5.563046023837614e-09, 9.999658465385437e-01, 9.999999403953552e-01, 1.831729547120595e-03, 1.431403120477626e-07, -9.129115241535146e-09, 9.999946355819702e-01, 1.000000476837158e+00, 2.480999391991645e-04, 8.081905811252454e-09, 9.864668846130371e-01, 9.999993443489075e-01, 1.000000238418579e+00, 3.368150646565482e-05, 9.76109362227362e-08, 9.981681704521179e-01, 9.999998807907104e-01, 9.999998211860657e-01, 4.636767243937356e-06, -1.204396493648119e-08, 9.997515082359314e-01, 9.999999403953552e-01, 1.353336870670319e-02, 6.55940993965487e-07, 2.03799945808214e-08, 9.999662041664124e-01, 1e+00, 1.831738278269768e-03, 6.195759993943284e-08, 4.04614546312132e-08, 9.999953508377075e-01, 9.999998807907104e-01, 2.481031697243452e-04, -1.281417993936884e-08, 9.864668250083923e-01, 9.999990463256836e-01, 9.999999403953552e-01, 3.368512989254536e-05, -1.343482125548662e-07, 9.981679320335388e-01, 9.999999403953552e-01, 1e+00, 4.60327100881841e-06, 1.312607711412284e-08, 9.997515678405762e-01, 9.999998211860657e-01, 1.353310141712427e-02, 7.88596764778049e-07, -3.108836210685695e-08, 9.999660849571228e-01, 1.000000357627869e+00, 1.831959350965917e-03, 6.154350984388657e-08, -1.488118250847492e-08, 9.99995231628418e-01, 1.000000238418579e+00, 2.482739510014653e-04, -2.07279995834142e-07, 9.864667057991028e-01, 9.999992251396179e-01, 1.000000238418579e+00, 3.374562584212981e-05, -1.613613243023337e-08, 9.981681108474731e-01, 9.999998807907104e-01, 1e+00, 4.80275730296853e-06, 5.183790818819034e-08, 9.997517466545105e-01, 1.00000011920929e+00] +PI.u_m=[7.200000286102295e-01, 7.999961376190186e-01, 8.00000011920929e-01, 9.998272657394409e-01, 9.998775124549866e-01, 1.353192888200283e-02, 7.044694143587549e-07, -1.624311352088624e-08, 9.999662041664124e-01, 1e+00, 1.831627800129354e-03, 1.174558228456135e-08, -1.596621856947422e-08, 9.999952912330627e-01, 9.999999403953552e-01, 2.479427785146981e-04, 1.547823984537899e-07, 9.864667654037477e-01, 9.999990463256836e-01, 1e+00, 3.365099837537855e-05, 1.871863588576161e-07, 9.981684684753418e-01, 9.999999403953552e-01, 9.999998807907104e-01, 4.708157575805672e-06, 6.267776342383513e-08, 9.997517466545105e-01, 1.000000238418579e+00, 1.353328954428434e-02, 4.744856028082722e-07, 2.79575598227666e-08, 9.99966025352478e-01, 9.999998807907104e-01, 1.831788802519405e-03, 8.866322787071113e-08, 4.018970400920807e-08, 9.99995231628418e-01, 1.00000011920929e+00, 2.480732509866357e-04, -8.948609320214018e-08, 9.86466646194458e-01, 9.999991655349731e-01, 1e+00, 3.366012970218435e-05, 1.287418527340378e-08, 9.981671571731567e-01, 9.999999403953552e-01, 9.999999403953552e-01, 4.650941264117137e-06, -1.541569538687781e-08, 9.997513890266418e-01, 1.000000596046448e+00, 1.353329420089722e-02, 7.33242302430881e-07, 1.131794924447149e-08, 9.999663233757019e-01, 9.999999403953552e-01, 1.832212787121534e-03, 2.612571563531674e-07, -8.717022126347729e-08, 9.999953508377075e-01, 1e+00, 2.481269475538284e-04, 1.470376620460456e-08, 9.864668250083923e-01, 9.999988079071045e-01, 1e+00, 3.372562787262589e-05, 2.141854160698369e-08, 9.981682896614075e-01, 1e+00, 1e+00, 4.805667231266852e-06, 3.411778592976589e-08, 9.997519254684448e-01, 1.000000476837158e+00, 1.353315077722073e-02, 7.385342541965656e-07, -1.627288881422828e-08, 9.999663233757019e-01, 1e+00, 1.83211057446897e-03, 2.923441684288264e-07, -2.282751410120909e-07, 9.999949932098389e-01, 1e+00, 2.479832037352026e-04, -3.272837716394861e-07, 9.864670634269714e-01, 9.999990463256836e-01, 1.000000357627869e+00, 3.367843601154163e-05, 3.413169302746155e-09, 9.98168408870697e-01, 9.999998211860657e-01, 1e+00, 4.599201020027976e-06, 4.707466416675743e-09, 9.997507333755493e-01, 9.999998807907104e-01] PIWitTun.u_s=[8.00000011920929e-01, 8.00000011920929e-01] -PIWitTun.u_m=[8.999999761581421e-01, 9.999954104423523e-01, 1e+00, -9.972716122865677e-02, -9.999996423721313e-02, 9.851132035255432e-01, 9.999990463256836e-01, 1e+00, 6.143437027931213e-01, 6.143306493759155e-01, 7.517758011817932e-01, 7.520279884338379e-01, 7.520279884338379e-01, 7.522224187850952e-01, 7.522224187850952e-01, 7.728264927864075e-01, 7.728316187858582e-01, 7.813777327537537e-01, 7.814949750900269e-01, 7.814949750900269e-01, 7.881967425346375e-01, 7.881969213485718e-01, 7.922887802124023e-01, 7.92296290397644e-01, 7.92296290397644e-01, 7.95012891292572e-01, 7.95012891292572e-01, 7.967617511749268e-01, 7.967621684074402e-01, 7.978845834732056e-01, 7.979000210762024e-01, 7.979000210762024e-01, 7.986374497413635e-01, 7.986375093460083e-01, 7.991152405738831e-01, 7.991161346435547e-01, 7.991161346435547e-01, 7.994265556335449e-01, 7.994265556335449e-01, 7.99627959728241e-01, 7.99627959728241e-01, 7.997568845748901e-01, 7.997586727142334e-01, 7.997586727142334e-01, 7.99843430519104e-01, 7.99843430519104e-01, 7.998983263969421e-01, 7.998984456062317e-01, 7.998984456062317e-01, 7.999340891838074e-01, 7.999340891838074e-01, 7.999572157859802e-01, 7.99957275390625e-01, 7.999720573425293e-01, 7.999722361564636e-01, 7.999722361564636e-01, 7.999820113182068e-01, 7.999820113182068e-01, 7.99988329410553e-01, 7.99988329410553e-01, 7.99988329410553e-01, 7.999924421310425e-01, 7.999924421310425e-01, 7.999950647354126e-01, 7.999950647354126e-01, 7.999967932701111e-01, 7.999967932701111e-01, 7.999967932701111e-01, 7.999979257583618e-01, 7.999979257583618e-01, 7.999986410140991e-01, 7.999986410140991e-01, 7.999986410140991e-01, 7.999991178512573e-01, 7.999991178512573e-01, 7.999994158744812e-01, 7.999994158744812e-01, 7.999996542930603e-01, 7.999996542930603e-01, 7.999996542930603e-01, 7.999997735023499e-01, 7.999997735023499e-01, 7.999998331069946e-01, 7.999998331069946e-01, 7.999998331069946e-01, 7.999998927116394e-01, 7.999998927116394e-01, 7.999999523162842e-01, 7.999999523162842e-01, 7.999999523162842e-01, 7.999999523162842e-01, 7.999999523162842e-01, 7.999999523162842e-01, 7.999999523162842e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01] -resSig.y=[0e+00, 0e+00] +PIWitTun.u_m=[7.200000286102295e-01, 7.999961376190186e-01, 8.00000011920929e-01, 9.998272657394409e-01, 9.998775124549866e-01, 1.353192888200283e-02, 7.044694143587549e-07, -1.624311352088624e-08, 9.999662041664124e-01, 1e+00, 1.831627800129354e-03, 1.174558228456135e-08, -1.596621856947422e-08, 9.999952912330627e-01, 9.999999403953552e-01, -9.972726553678513e-02, -9.999983012676239e-02, 9.851134419441224e-01, 9.99998927116394e-01, 1.00000011920929e+00, 6.143606901168823e-01, 6.143478155136108e-01, 7.517821192741394e-01, 7.520342469215393e-01, 7.520342469215393e-01, 7.522276043891907e-01, 7.522276043891907e-01, 7.728294730186462e-01, 7.728345990180969e-01, 7.813796997070312e-01, 7.814969420433044e-01, 7.814969420433044e-01, 7.88197934627533e-01, 7.881981730461121e-01, 7.922895550727844e-01, 7.922970652580261e-01, 7.922970652580261e-01, 7.950133681297302e-01, 7.950133681297302e-01, 7.967620491981506e-01, 7.967624664306641e-01, 7.978848218917847e-01, 7.979001998901367e-01, 7.979001998901367e-01, 7.986375689506531e-01, 7.986376285552979e-01, 7.991153001785278e-01, 7.991161942481995e-01, 7.991161942481995e-01, 7.994266152381897e-01, 7.994266152381897e-01, 7.99627959728241e-01, 7.996280193328857e-01, 7.997568845748901e-01, 7.997586727142334e-01, 7.997586727142334e-01, 7.99843430519104e-01, 7.99843430519104e-01, 7.998983263969421e-01, 7.998984456062317e-01, 7.998984456062317e-01, 7.999340891838074e-01, 7.999340891838074e-01, 7.99957275390625e-01, 7.99957275390625e-01, 7.999720573425293e-01, 7.999722957611084e-01, 7.999722957611084e-01, 7.999820113182068e-01, 7.999820113182068e-01, 7.99988329410553e-01, 7.99988329410553e-01, 7.99988329410553e-01, 7.999924421310425e-01, 7.999924421310425e-01, 7.999950647354126e-01, 7.999950647354126e-01, 7.999967932701111e-01, 7.999967932701111e-01, 7.999967932701111e-01, 7.999979257583618e-01, 7.999979257583618e-01, 7.999986410140991e-01, 7.999986410140991e-01, 7.999986410140991e-01, 7.999991178512573e-01, 7.999991178512573e-01, 7.999994158744812e-01, 7.999994158744812e-01, 7.999996542930603e-01, 7.999996542930603e-01, 7.999996542930603e-01, 7.999997735023499e-01, 7.999997735023499e-01, 7.999998331069946e-01, 7.999998331069946e-01, 7.999998331069946e-01, 7.999998927116394e-01, 7.999998927116394e-01, 7.999999523162842e-01, 7.999999523162842e-01] +autTunSig.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +PIWitTun.conProMod.triSta=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +PIWitTun.conProMod.triEnd=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] From 4567527fe91912bdcb2752620a17877ea68c82dc Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Mon, 19 Jun 2023 10:58:10 -0400 Subject: [PATCH 083/214] minor updates to model doc --- .../AutoTuner/AMIGO/Validation/PI.mo | 2 +- .../AutoTuner/AMIGO/Validation/PID.mo | 2 +- .../AMIGO/Validation/PIDDerivativeTime.mo | 2 +- .../AutoTuner/AMIGO/Validation/PIDGain.mo | 2 +- .../AMIGO/Validation/PIDIntegralTime.mo | 2 +- .../AutoTuner/AMIGO/Validation/PIGain.mo | 2 +- .../AMIGO/Validation/PIIntegralTime.mo | 2 +- .../PIDWithAutotuning/FirstOrderAMIGO.mo | 2 +- .../Relay/ResponseProcess.mo | 4 ++-- .../Relay/Validation/Controller.mo | 12 ++++++++--- .../Relay/Validation/HalfPeriodRatio.mo | 21 ++++++++++++++++--- .../Relay/Validation/NormalizedTimeDelay.mo | 3 +++ .../Relay/Validation/OnOffPeriod.mo | 18 +++++++++++++--- .../Relay/Validation/ResponseProcess.mo | 10 ++++++--- .../FirstOrderTimedelayed/Gain.mo | 2 +- .../Validation/ControlProcessModel.mo | 17 +++++++++++++-- .../FirstOrderTimedelayed/Validation/Gain.mo | 4 ++++ .../Validation/TimeConstantDelay.mo | 5 +++++ 18 files changed, 87 insertions(+), 25 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo index e60d0723c60..599d40774fe 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo @@ -63,7 +63,7 @@ Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PI.

                    The input kp varies from 1 to 2, input T varies from 0.5 to 1, -input L varies from 0.3 to 0.6. +and input L varies from 0.3 to 0.6.

                    ")); end PI; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo index 4009c70574e..e4b0d12571e 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo @@ -63,7 +63,7 @@ Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PID.

                    The input kp varies from 1 to 2, input T varies from 0.5 to 1, -input L varies from 0.3 to 0.6. +and input L varies from 0.3 to 0.6.

                    ")); end PID; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mo index fe5e6d08d91..0bc570a8108 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mo @@ -56,7 +56,7 @@ Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIDDerivative

                    The input input T varies from 0.5 to 1, -input L varies from 0.3 to 0.6. +and input L varies from 0.3 to 0.6.

                    ")); end PIDDerivativeTime; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mo index d0cf0a72582..d53bd7dc9a5 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mo @@ -63,7 +63,7 @@ Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIDGain.

                    The input kp varies from 1 to 2, input T varies from 0.5 to 1, -input L varies from 0.3 to 0.6. +and input L varies from 0.3 to 0.6.

                    ")); end PIDGain; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mo index 394b3f1066e..1d0e237913e 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mo @@ -56,7 +56,7 @@ Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIDIntegralTi

                    The input input T varies from 0.5 to 1, -input L varies from 0.3 to 0.6. +and input L varies from 0.3 to 0.6.

                    ")); end PIDIntegralTime; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mo index f3c5ac7881f..9aef8581054 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mo @@ -63,7 +63,7 @@ Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIGain.

                    The input kp varies from 1 to 2, input T varies from 0.5 to 1, -input L varies from 0.3 to 0.6. +and input L varies from 0.3 to 0.6.

                    ")); end PIGain; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mo index 1e2fdf36ebc..d392e7bc437 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mo @@ -56,7 +56,7 @@ Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIIntegralTim

                    The input input T varies from 0.5 to 1, -input L varies from 0.3 to 0.6. +and input L varies from 0.3 to 0.6.

                    ")); end PIIntegralTime; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index 51054bb55c8..d2f7237733b 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -167,7 +167,7 @@ equation annotation (Line(points={{58,-28},{52,-28},{52,16},{42,16}}, color={0,0,127})); connect(swi.u1,PID. y) annotation (Line(points={{58,-12},{40,-12},{40,-40},{22, -40}}, color={0,0,127})); - connect(resPro.On, rel.yOn) annotation (Line(points={{22,34},{58,34},{58,4},{42, + connect(resPro.on, rel.yOn) annotation (Line(points={{22,34},{58,34},{58,4},{42, 4}}, color={255,0,255})); connect(modTim.y, resPro.tim) annotation (Line(points={{58,70},{40,70},{40,46}, {22,46}}, color={0,0,127})); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo index c2ef09c737e..c0e35b2730c 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo @@ -5,7 +5,7 @@ block ResponseProcess "Higher value for the output"; parameter Real yLow(min=1E-6) = 0.5 "Lower value for the output"; - Buildings.Controls.OBC.CDL.Interfaces.BooleanInput On + Buildings.Controls.OBC.CDL.Interfaces.BooleanInput on "Relay switch signal" annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); @@ -50,7 +50,7 @@ protected annotation (Placement(transformation(extent={{40,0},{60,20}}))); equation - connect(onOffPer.on, On) annotation (Line(points={{-82,4},{-90,4},{-90,-60},{ + connect(onOffPer.on,on) annotation (Line(points={{-82,4},{-90,4},{-90,-60},{ -120,-60}}, color={255,0,255})); connect(onOffPer.tim, tim) annotation (Line(points={{-82,16},{-90,16},{-90,60}, {-120,60}}, color={0,0,127})); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Controller.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Controller.mo index 8e2e450834b..2a21b0b9d53 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Controller.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Controller.mo @@ -9,17 +9,17 @@ model Controller "Test model for a relay controller" annotation (Placement(transformation(extent={{-60,-90},{-40,-70}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.Constant con(k=0) "Setpoint" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); - Buildings.Controls.OBC.CDL.Logical.Sources.Pulse relRes( + Buildings.Controls.OBC.CDL.Logical.Sources.Pulse enaSig( width=0.5, period=1, - shift=-0.5) "Mimic the response for a relay controller" + shift=-0.5) "Enable signal" annotation (Placement(transformation(extent={{-60,-50},{-40,-30}}))); equation connect(con.y, relCon.u_s) annotation (Line(points={{-38,0},{-12,0}}, color={0,0,127})); connect(sin.y, relCon.u_m) annotation (Line(points={{-38,-80},{0,-80},{0,-12}}, color={0,0,127})); - connect(relRes.y, relCon.trigger) + connect(enaSig.y, relCon.trigger) annotation (Line(points={{-38,-40},{-6,-40},{-6,-12}}, color={255,0,255})); annotation ( experiment( @@ -56,5 +56,11 @@ Validation test for the block Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Controller.

                    +

                    +The input signal, sin, mimics the response of a control process. +In the first half of the test period, the relay controller is disabled, its output remains unchanged +from the initial values. +In the rest time, the relay controller is enabled and its output changes based on sin. +

                    ")); end Controller; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mo index 4f89d0706a8..b6120b42f41 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mo @@ -12,17 +12,17 @@ model HalfPeriodRatio "Test model for calculating the half period ratio" Buildings.Controls.OBC.CDL.Continuous.Sources.Pulse tOnSig2( amplitude=-0.1, - width=0.8, + width=0.9, period=1, offset=0.1) "Block that generates signals for forming the signal of the length of On period" annotation (Placement(transformation(extent={{-80,60},{-60,80}}))); Buildings.Controls.OBC.CDL.Continuous.Add tOn "Blocks that generates the length of the on period" annotation (Placement(transformation(extent={{-34,40},{-14,60}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.Pulse tOff( - amplitude=-0.7, + amplitude=-0.5, width=0.7, period=1, - offset=0.7) "The length of the off period" + offset=0.5) "The length of the off period" annotation (Placement(transformation(extent={{-80,-40},{-60,-20}}))); equation connect(tOff.y, halPerRat.tOff) annotation (Line(points={{-58,-30},{0,-30},{0, @@ -68,6 +68,21 @@ First implementation
                    Validation test for the block Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.HalfPeriodRatio. +This example mimics an output from a relay controller.

                    +
                      +
                    • +At 0.1s, the output switches from On to Off. +The length of the On period becomes 0.1s. +
                    • +
                    • +At 0.7s, the output switches to On. +The length of the Off period becomes 0.5s. +
                    • +
                    • +At 0.9s, the output switches to Off. +The length of the On period becomes 0.2s. +
                    • +
                    ")); end HalfPeriodRatio; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mo index 3aaf7ca3d97..4c9034b519f 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mo @@ -48,5 +48,8 @@ Validation test for the block Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.NormalizedTimeDelay.

                    +

                    +The input rho is a step signal that changes from 2 to 1 at 0.7s. +

                    ")); end NormalizedTimeDelay; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mo index 2334879c502..304d3501279 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mo @@ -6,15 +6,15 @@ model OnOffPeriod "Test model for calculating the length of the on period and th Buildings.Controls.OBC.CDL.Continuous.Sources.ModelTime modTim "Simulation time" annotation (Placement(transformation(extent={{-60,10},{-40,30}}))); - Buildings.Controls.OBC.CDL.Logical.Sources.Pulse relRes( + Buildings.Controls.OBC.CDL.Logical.Sources.Pulse enaSig( width=0.2, period=0.8, - shift=-0.1) "Mimic the response for a relay controller" + shift=-0.1) "Enable signal" annotation (Placement(transformation(extent={{-60,-20},{-40,0}}))); equation connect(modTim.y, onOffPer.tim) annotation (Line(points={{-38,20},{-20,20},{-20, 6},{-12,6}}, color={0,0,127})); - connect(relRes.y, onOffPer.on) annotation (Line(points={{-38,-10},{-20,-10},{-20, + connect(enaSig.y, onOffPer.on) annotation (Line(points={{-38,-10},{-20,-10},{-20, -6},{-12,-6}}, color={255,0,255})); annotation ( experiment( @@ -52,5 +52,17 @@ Validation test for the block Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.OnOffPeriod.

                    +This example considers an output from a relay controller, enaSig. +
                      +
                    • +At 0.06s, enaSig switches from On to Off. +
                    • +
                    • +At 0.7s, enaSig switches to On. +
                    • +
                    • +At 0.86s, enaSig switches to Off. +
                    • +
                    ")); end OnOffPeriod; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mo index a6e85dcf7b8..c001eb4e6cc 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mo @@ -6,15 +6,15 @@ model ResponseProcess "Test model for processing the response of a relay control Buildings.Controls.OBC.CDL.Continuous.Sources.ModelTime modTim "Simulation time" annotation (Placement(transformation(extent={{-60,10},{-40,30}}))); - Buildings.Controls.OBC.CDL.Logical.Sources.Pulse relRes( + Buildings.Controls.OBC.CDL.Logical.Sources.Pulse enaSig( width=0.2, period=0.8, - shift=-0.1) "Mimic the response for a relay controller" + shift=-0.1) "Enable signal" annotation (Placement(transformation(extent={{-60,-30},{-40,-10}}))); equation connect(modTim.y, resPro.tim) annotation (Line(points={{-38,20},{-20,20},{-20, 6},{-12,6}}, color={0,0,127})); - connect(relRes.y, resPro.On) annotation (Line(points={{-38,-20},{-20,-20},{-20, + connect(enaSig.y,resPro.on) annotation (Line(points={{-38,-20},{-20,-20},{-20, -6},{-12,-6}}, color={255,0,255})); annotation ( experiment( @@ -52,5 +52,9 @@ Validation test for the block Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.ResponseProcess.

                    +

                    +This testing scenario in this example is the same to that in +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.OnOffPeriod. +

                    ")); end ResponseProcess; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Gain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Gain.mo index 31ee0ddd7a0..496dc8c03aa 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Gain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Gain.mo @@ -101,7 +101,7 @@ k = Iy/Iu,

                    where Iy and Iu are the integral of the process -output and the integrals of the relay output, respectively. +output and the integral of the relay output, respectively.

                    Iy is calculated by

                    Iy = ∫ u(t) dt;

                    diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo index e0ffb121aa5..4ed30f4fc19 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo @@ -32,9 +32,9 @@ model ControlProcessModel shift=-0.9) "Mimicking the signal for the tuning period starts" annotation (Placement(transformation(extent={{-80,-60},{-60,-40}}))); Buildings.Controls.OBC.CDL.Logical.Sources.Pulse tunEnd( - width=0.2, + width=0.1, period=1, - shift=0.8) "Mimicking the signal for the tuning period ends" + shift=0.9) "Mimicking the signal for the tuning period ends" annotation (Placement(transformation(extent={{-80,-100},{-60,-80}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.Pulse ratioLT( amplitude=-0.1, @@ -91,5 +91,18 @@ Validation test for the block Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.ControlProcessModel.

                    +This example considers an output from a relay controller, which is described below: +
                      +
                    • +At 0.1s, the output switches from On to Off. +
                    • +
                    • +At 0.8s, the output switches to On. +
                    • +
                    • +At 0.9s, the output switches to Off. +
                    • +
                    +This output triggers an autotuning process that lasts from 0.1s to 0.8s. ")); end ControlProcessModel; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mo index b65dd85756b..6ce0f941e0d 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mo @@ -73,5 +73,9 @@ Validation test for the block Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Gain.

                    +

                    +This testing scenario in this example is the same to that in +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation.ControlProcessModel. +

                    ")); end Gain; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mo index 18b1f4a7bba..fab096b6201 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mo @@ -64,5 +64,10 @@ Validation test for the block Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.TimeConstantDelay.

                    +

                    +Input tOn changes from 0 to 0.1 at 0.1s, +Input k is constant, +Input ratioLT changes twice, from 0.3 to 0.4 at 0.32s and from 0.4 to 0.3 at 0.8s. +

                    ")); end TimeConstantDelay; From 67a8ee064d421bc0e23cfc2dd6f1f80f9d34e8ad Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Mon, 19 Jun 2023 10:59:03 -0400 Subject: [PATCH 084/214] update script and reference dataset --- ...s_PIDWithAutotuning_Relay_Validation_Controller.txt | 4 ++-- ...WithAutotuning_Relay_Validation_HalfPeriodRatio.txt | 10 +++++----- ...Autotuning_Relay_Validation_NormalizedTimeDelay.txt | 2 +- ..._PIDWithAutotuning_Relay_Validation_OnOffPeriod.txt | 4 ++-- ...WithAutotuning_Relay_Validation_ResponseProcess.txt | 4 ++-- ...OrderTimedelayed_Validation_ControlProcessModel.txt | 10 +++++----- ...ification_FirstOrderTimedelayed_Validation_Gain.txt | 2 +- ...stOrderTimedelayed_Validation_TimeConstantDelay.txt | 2 +- ...ithAutotuning_Validation_PIDWithFirstOrderAMIGO.txt | 2 +- ...WithAutotuning_Validation_PIWithFirstOrderAMIGO.txt | 2 +- .../PIDWithAutotuning/Relay/Validation/Controller.mos | 2 +- .../PIDWithAutotuning/Relay/Validation/OnOffPeriod.mos | 2 +- .../Relay/Validation/ResponseProcess.mos | 2 +- ...s.PIDWithAutotuning.Relay.Validation.Controller.mos | 2 +- ....PIDWithAutotuning.Relay.Validation.OnOffPeriod.mos | 2 +- ...WithAutotuning.Relay.Validation.ResponseProcess.mos | 2 +- 16 files changed, 27 insertions(+), 27 deletions(-) diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_Controller.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_Controller.txt index f5c8e0b76e6..0334feb6123 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_Controller.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_Controller.txt @@ -1,4 +1,4 @@ -last-generated=2023-06-18 +last-generated=2023-06-19 statistics-simulation= { "linear": " ", @@ -7,7 +7,7 @@ statistics-simulation= } time=[0e+00, 1e+00] relCon.u_m=[0e+00, 1.253332374497156e-01, 2.486898953308248e-01, 3.681245524153801e-01, 4.817536869061769e-01, 5.877852363451299e-01, 6.845471384320703e-01, 7.705132340994622e-01, 8.443279384363055e-01, 9.048270386715103e-01, 9.510565340027346e-01, 9.822872294183655e-01, 9.980267303235079e-01, 9.980267241165655e-01, 9.822872294183655e-01, 9.510565622604734e-01, 9.048270386715103e-01, 8.443279384363054e-01, 7.705132929390851e-01, 6.845471041974797e-01, 5.877852740064528e-01, 4.8175360443844e-01, 3.681245306244136e-01, 2.486899405222956e-01, 1.253331676890714e-01, -2.097981390461576e-15, -1.253333533635595e-01, -2.486897589136873e-01, -3.681245306244139e-01, -4.817537683762683e-01, -5.877851217017483e-01, -6.845471041974797e-01, -7.705132929390851e-01, -8.443278366018112e-01, -9.048270386715105e-01, -9.510565622604733e-01, -9.822871922079218e-01, -9.980267241165655e-01, -9.980267241165655e-01, -9.822871922079218e-01, -9.510565622604733e-01, -9.048270386715105e-01, -8.443278366018112e-01, -7.705132929390851e-01, -6.845471041974797e-01, -5.877851217017483e-01, -4.817537683762683e-01, -3.681245306244139e-01, -2.486897589136873e-01, -1.253333533635595e-01, -2.449293705170336e-16, 1.253333533617908e-01, 2.486901212847727e-01, 3.68124877196207e-01, 4.817534392344727e-01, 5.877851217035711e-01, 6.845471041971509e-01, 7.70513292938244e-01, 8.443280367726912e-01, 9.048271948735948e-01, 9.510564438597915e-01, 9.822871922084567e-01, 9.980267241166327e-01, 9.980267241166327e-01, 9.822871922084567e-01, 9.510564438597915e-01, 9.048271948735948e-01, 8.443280367726912e-01, 7.70513292938244e-01, 6.845471041971509e-01, 5.877851217035711e-01, 4.817534392344727e-01, 3.68124877196207e-01, 2.486901212847727e-01, 1.253333533617908e-01, -6.738033169476553e-15, -1.253333533617908e-01, -2.486901212847727e-01, -3.68124877196207e-01, -4.817534392344727e-01, -5.877851217035711e-01, -6.845471041971509e-01, -7.70513292938244e-01, -8.443280367726912e-01, -9.048271948735948e-01, -9.510564438597915e-01, -9.822871922084567e-01, -9.980267241166327e-01, -9.980267241166327e-01, -9.822871922084567e-01, -9.510564438597915e-01, -9.048271948735948e-01, -8.443280367726912e-01, -7.70513292938244e-01, -6.845471041971509e-01, -5.877851217035711e-01, -4.817534392344727e-01, -3.68124877196207e-01, -2.486901212847727e-01, -1.253333533617908e-01, -4.898587410340671e-16] -relRes.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +enaSig.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] relCon.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] relCon.yErr=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.253333533617908e-01, 2.486901212847727e-01, 3.68124877196207e-01, 4.817534392344727e-01, 5.877851217035711e-01, 6.845471041971509e-01, 7.70513292938244e-01, 8.443280367726912e-01, 9.048271948735948e-01, 9.510564438597915e-01, 9.822871922084567e-01, 9.980267241166327e-01, 9.980267241166327e-01, 9.822871922084567e-01, 9.510564438597915e-01, 9.048271948735948e-01, 8.443280367726912e-01, 7.70513292938244e-01, 6.845471041971509e-01, 5.877851217035711e-01, 4.817534392344727e-01, 3.68124877196207e-01, 2.486901212847727e-01, 1.253333533617908e-01, -6.738033169476553e-15, -1.253333533617908e-01, -2.486901212847727e-01, -3.68124877196207e-01, -4.817534392344727e-01, -5.877851217035711e-01, -6.845471041971509e-01, -7.70513292938244e-01, -8.443280367726912e-01, -9.048271948735948e-01, -9.510564438597915e-01, -9.822871922084567e-01, -9.980267241166327e-01, -9.980267241166327e-01, -9.822871922084567e-01, -9.510564438597915e-01, -9.048271948735948e-01, -8.443280367726912e-01, -7.70513292938244e-01, -6.845471041971509e-01, -5.877851217035711e-01, -4.817534392344727e-01, -3.68124877196207e-01, -2.486901212847727e-01, -1.253333533617908e-01, -4.898587410340671e-16] relCon.yOn=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_HalfPeriodRatio.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_HalfPeriodRatio.txt index 1af20e46789..da9f642e55e 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_HalfPeriodRatio.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_HalfPeriodRatio.txt @@ -1,4 +1,4 @@ -last-generated=2023-06-18 +last-generated=2023-06-19 statistics-simulation= { "linear": " ", @@ -6,8 +6,8 @@ statistics-simulation= "numerical Jacobians": "0" } time=[0e+00, 1e+00] -tOn.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01] -tOff.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.172254420929029e-06, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01] +tOn.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000011935628514e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01] +tOff.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 2.980181779987214e-06, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01] halPerRat.triSta=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] -halPerRat.triEnd=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] -halPerRat.rho=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 3.5e+00, 3.5e+00, 3.5e+00, 3.5e+00, 3.5e+00, 3.5e+00, 3.5e+00, 3.5e+00, 3.5e+00, 3.5e+00, 3.5e+00, 3.5e+00, 3.5e+00, 3.5e+00, 3.5e+00, 3.5e+00, 3.5e+00, 3.5e+00, 3.5e+00, 3.5e+00] +halPerRat.triEnd=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.192072717545907e-05, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +halPerRat.rho=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1.000017881090763e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_NormalizedTimeDelay.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_NormalizedTimeDelay.txt index cd5fbdcdf0c..a89aab746ea 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_NormalizedTimeDelay.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_NormalizedTimeDelay.txt @@ -1,4 +1,4 @@ -last-generated=2023-06-18 +last-generated=2023-06-19 statistics-simulation= { "linear": " ", diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_OnOffPeriod.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_OnOffPeriod.txt index 2d4d5a36bba..0b439f748c2 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_OnOffPeriod.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_OnOffPeriod.txt @@ -1,4 +1,4 @@ -last-generated=2023-06-18 +last-generated=2023-06-19 statistics-simulation= { "linear": " ", @@ -6,6 +6,6 @@ statistics-simulation= "numerical Jacobians": "0" } time=[0e+00, 1e+00] -relRes.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999993294478573e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5.960363559974428e-06, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +enaSig.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999993294478573e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5.960363559974428e-06, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] onOffPer.tOn=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.023312766277112e-08, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01] onOffPer.tOff=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 3.81463259311995e-06, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_ResponseProcess.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_ResponseProcess.txt index b582cea650b..f5267a25af1 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_ResponseProcess.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_ResponseProcess.txt @@ -1,4 +1,4 @@ -last-generated=2023-06-18 +last-generated=2023-06-19 statistics-simulation= { "linear": " ", @@ -6,7 +6,7 @@ statistics-simulation= "numerical Jacobians": "0" } time=[0e+00, 1e+00] -relRes.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999993294478573e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5.960363559974428e-06, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +enaSig.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999993294478573e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5.960363559974428e-06, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] resPro.tOn=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.023312766277112e-08, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01] resPro.tOff=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 3.81463259311995e-06, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01] resPro.triEnd=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_Validation_ControlProcessModel.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_Validation_ControlProcessModel.txt index acbd0d89c54..22f60190507 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_Validation_ControlProcessModel.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_Validation_ControlProcessModel.txt @@ -1,4 +1,4 @@ -last-generated=2023-06-18 +last-generated=2023-06-19 statistics-simulation= { "linear": " ", @@ -8,11 +8,11 @@ statistics-simulation= } time=[0e+00, 1e+00] tunSta.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] -tunEnd.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +tunEnd.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.192072717545907e-05, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] u.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999940396364123e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01] ratioLT.y=[3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.000003695480519e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01] tOn.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01] tOff.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01, 6.99999988079071e-01] -conProMod.k=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1.129032230377197e+01, 1.129032230377197e+01, 1.129032230377197e+01, 1.129032230377197e+01, 1.129032230377197e+01, 1.129032230377197e+01, 1.129032230377197e+01, 1.129032230377197e+01, 1.129032230377197e+01, 1.129032230377197e+01, 1.129032230377197e+01, 1.129032230377197e+01, 1.129032230377197e+01, 1.129032230377197e+01, 1.129032230377197e+01, 1.129032230377197e+01, 1.129032230377197e+01, 1.129032230377197e+01, 1.129032230377197e+01, 1.129032230377197e+01] -conProMod.T=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2.127405554056168e-01, 2.127405554056168e-01, 2.127405554056168e-01, 2.127405554056168e-01, 2.127405554056168e-01, 2.127405554056168e-01, 2.127405554056168e-01, 2.127405554056168e-01, 2.127405554056168e-01, 2.127405554056168e-01, 2.127405554056168e-01, 2.127405554056168e-01, 2.127405554056168e-01, 2.127405554056168e-01, 2.127405554056168e-01, 2.127405554056168e-01, 2.127405554056168e-01, 2.127405554056168e-01, 2.127405554056168e-01, 2.127405554056168e-01] -conProMod.L=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.117452800273895e-02, 9.117452800273895e-02, 9.117452800273895e-02, 9.117452800273895e-02, 9.117452800273895e-02, 9.117452800273895e-02, 9.117452800273895e-02, 9.117452800273895e-02, 9.117452800273895e-02, 9.117452800273895e-02, 9.117452800273895e-02, 9.117452800273895e-02, 9.117452800273895e-02, 9.117452800273895e-02, 9.117452800273895e-02, 9.117452800273895e-02, 9.117452800273895e-02, 9.117452800273895e-02, 9.117452800273895e-02, 9.117452800273895e-02] +conProMod.k=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1.000161122092163e+00, 1.451612949371338e+01, 1.451612949371338e+01, 1.451612949371338e+01, 1.451612949371338e+01, 1.451612949371338e+01, 1.451612949371338e+01, 1.451612949371338e+01, 1.451612949371338e+01, 1.451612949371338e+01, 1.451612949371338e+01] +conProMod.T=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999906239893537e-01, 2.134699076414108e-01, 2.134699076414108e-01, 2.134699076414108e-01, 2.134699076414108e-01, 2.134699076414108e-01, 2.134699076414108e-01, 2.134699076414108e-01, 2.134699076414108e-01, 2.134699076414108e-01, 2.134699076414108e-01] +conProMod.L=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.9998916986561e-01, 9.14871022105217e-02, 9.14871022105217e-02, 9.14871022105217e-02, 9.14871022105217e-02, 9.14871022105217e-02, 9.14871022105217e-02, 9.14871022105217e-02, 9.14871022105217e-02, 9.14871022105217e-02, 9.14871022105217e-02] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_Validation_Gain.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_Validation_Gain.txt index 6f0ed04f521..5db81d42a4d 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_Validation_Gain.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_Validation_Gain.txt @@ -1,4 +1,4 @@ -last-generated=2023-06-18 +last-generated=2023-06-19 statistics-simulation= { "linear": " ", diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_Validation_TimeConstantDelay.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_Validation_TimeConstantDelay.txt index 0011b96b0ca..1116b078fee 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_Validation_TimeConstantDelay.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_Validation_TimeConstantDelay.txt @@ -1,4 +1,4 @@ -last-generated=2023-06-18 +last-generated=2023-06-19 statistics-simulation= { "linear": " ", diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIDWithFirstOrderAMIGO.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIDWithFirstOrderAMIGO.txt index 1476f5904fd..0cdd8143fed 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIDWithFirstOrderAMIGO.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIDWithFirstOrderAMIGO.txt @@ -1,4 +1,4 @@ -last-generated=2023-06-18 +last-generated=2023-06-19 statistics-simulation= { "linear": " ", diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIWithFirstOrderAMIGO.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIWithFirstOrderAMIGO.txt index 2129f0075d6..93959185893 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIWithFirstOrderAMIGO.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIWithFirstOrderAMIGO.txt @@ -1,4 +1,4 @@ -last-generated=2023-06-18 +last-generated=2023-06-19 statistics-simulation= { "linear": " ", diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Controller.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Controller.mos index d4e1a6f4c73..ec5423133e8 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Controller.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Controller.mos @@ -2,6 +2,6 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validati createPlot(id=1, position={24, 24, 1148, 620}, y={"relCon.u_m"}, range={0.0, 1.0, -1.5, 1.5}, grid=true, subPlot=101, colors={{28,108,200}}); plotExpression(apply(Controller[end].relCon.u_s-0.4), false, "controller[end].relCon.u_s-deaBan", 1); plotExpression(apply(Controller[end].relCon.u_s+0.4), false, "controller[end].relCon.u_s+deaBan", 1); -createPlot(id=1, position={15, 15, 1148, 620}, y={"relRes.y"}, range={0.0, 1.0, -1.0, 2.0}, grid=true, subPlot=102, colors={{28,108,200}}); +createPlot(id=1, position={15, 15, 1148, 620}, y={"enaSig.y"}, range={0.0, 1.0, -1.0, 2.0}, grid=true, subPlot=102, colors={{28,108,200}}); createPlot(id=1, position={15, 15, 1148, 620}, y={"relCon.y"}, range={0.0, 1.0, -2.0, 2.0}, grid=true, subPlot=103, colors={{28,108,200}}); createPlot(id=1, position={15, 15, 1148, 620}, y={"relCon.yErr", "relCon.yOn"}, range={0.0, 1.0, -2.0, 2.0}, grid=true, subPlot=104, colors={{28,108,200}, {238,46,47}}); \ No newline at end of file diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mos index 0847c8a703a..2af52ba7b2f 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mos @@ -1,3 +1,3 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.OnOffPeriod", method="Cvode", tolerance=1e-06, resultFile="OnOffPeriod"); -createPlot(id=1, position={30, 0, 930, 617}, y={"relRes.y"}, range={0.0, 1.0, -0.2, 1.2000000000000002}, grid=true, subPlot=101, colors={{28,108,200}}); +createPlot(id=1, position={30, 0, 930, 617}, y={"enaSig.y"}, range={0.0, 1.0, -0.2, 1.2000000000000002}, grid=true, subPlot=101, colors={{28,108,200}}); createPlot(id=1, position={30, 0, 930, 617}, y={"onOffPer.tOn", "onOffPer.tOff"}, range={0.0, 1.0, -0.2, 0.8}, grid=true, subPlot=102, colors={{238,46,47}, {28,108,200}}); \ No newline at end of file diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mos index f229ce18ab3..09f68a3e67a 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mos @@ -1,5 +1,5 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.ResponseProcess", method="Cvode", tolerance=1e-06, resultFile="ResponseProcess"); -createPlot(id=1, position={37, 37, 1082, 571}, y={"relRes.y"}, range={0.0, 1.0, -1.0, 2.0}, grid=true, subPlot=101, colors={{28,108,200}}); +createPlot(id=1, position={37, 37, 1082, 571}, y={"enaSig.y"}, range={0.0, 1.0, -1.0, 2.0}, grid=true, subPlot=101, colors={{28,108,200}}); createPlot(id=1, position={37, 37, 1082, 571}, y={"resPro.tOn", "resPro.tOff"}, range={0.0, 1.0, -1.0, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); createPlot(id=1, position={37, 37, 1082, 571}, y={"resPro.triEnd", "resPro.triSta"}, range={0.0, 1.0, -1.0, 2.0}, grid=true, subPlot=103, colors={{28,108,200}, {28,108,200}}); createPlot(id=1, position={37, 37, 1082, 571}, y={"resPro.tau"}, range={0.0, 1.0, 0.0, 2.0}, grid=true, subPlot=104, colors={{28,108,200}}); \ No newline at end of file diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.Controller.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.Controller.mos index 13d10ca0a1c..39f12c5b1e3 100644 --- a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.Controller.mos +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.Controller.mos @@ -1,7 +1,7 @@ compareVars := { "relCon.u_m", - "relRes.y", + "enaSig.y", "relCon.y", "relCon.yErr", "relCon.yOn" diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.OnOffPeriod.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.OnOffPeriod.mos index e179cbec4c8..9bc71a0449e 100644 --- a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.OnOffPeriod.mos +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.OnOffPeriod.mos @@ -1,6 +1,6 @@ compareVars := { - "relRes.y", + "enaSig.y", "onOffPer.tOn", "onOffPer.tOff" }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.ResponseProcess.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.ResponseProcess.mos index 953c9b46153..e3c10cf17d3 100644 --- a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.ResponseProcess.mos +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.ResponseProcess.mos @@ -1,6 +1,6 @@ compareVars := { - "relRes.y", + "enaSig.y", "resPro.tOn", "resPro.tOff", "resPro.triEnd", From 84425c1370e497be3d91aa6167c7d845bba72deb Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Mon, 19 Jun 2023 15:09:19 -0400 Subject: [PATCH 085/214] update the input port name --- .../OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo | 10 +++++----- .../Validation/PIWithFirstOrderAMIGO.mo | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index d2f7237733b..ce5b2cd6913 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -71,7 +71,7 @@ block FirstOrderAMIGO extent={{-20,-20},{20,20}}, rotation=90, origin={-60,-120}))); - Buildings.Controls.OBC.CDL.Interfaces.BooleanInput triAutTun + Buildings.Controls.OBC.CDL.Interfaces.BooleanInput triTun "Starts the autotuning when trigger becomes true" annotation (Placement( transformation( extent={{-20,-20},{20,20}}, @@ -220,14 +220,14 @@ equation color={0,0,127})); connect(u_m, PID.u_m) annotation (Line(points={{0,-120},{0,-96},{10,-96},{10, -52}}, color={0,0,127})); - connect(rel.trigger, triAutTun) annotation (Line(points={{24,-2},{24,-82},{60, - -82},{60,-120}}, color={255,0,255})); + connect(rel.trigger, triTun) annotation (Line(points={{24,-2},{24,-82},{60,-82}, + {60,-120}}, color={255,0,255})); connect(or1.u1, resPro.triEnd) annotation (Line(points={{58,-60},{52,-60},{52, -50},{46,-50},{46,-20},{-10,-20},{-10,32},{-2,32}}, color={255,0,255})); connect(or1.y, swi.u2) annotation (Line(points={{82,-60},{90,-60},{90,-40},{ 48,-40},{48,-20},{58,-20}}, color={255,0,255})); - connect(not1.u, triAutTun) annotation (Line(points={{28,-68},{24,-68},{24,-82}, - {60,-82},{60,-120}}, color={255,0,255})); + connect(not1.u, triTun) annotation (Line(points={{28,-68},{24,-68},{24,-82},{ + 60,-82},{60,-120}}, color={255,0,255})); connect(not1.y, or1.u2) annotation (Line(points={{52,-68},{58,-68}}, color={255,0,255})); annotation (Documentation(info=" diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo index eb2356743de..a685834ffc3 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo @@ -84,7 +84,7 @@ equation {40,20},{40,86},{58,86}}, color={0,0,127})); connect(derivative2.u, uniDel2.y) annotation (Line(points={{82,-50},{92,-50}, {92,-66},{40,-66},{40,-20},{32,-20}}, color={0,0,127})); - connect(autTunSig.y, PIWitTun.triAutTun) + connect(autTunSig.y, PIWitTun.triTun) annotation (Line(points={{-58,-50},{-4,-50},{-4,-32}}, color={255,0,255})); annotation ( experiment( From 74c50228b4f64bdeb1e519491ddefc3753a8e043 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Mon, 19 Jun 2023 15:35:47 -0400 Subject: [PATCH 086/214] update model doc --- .../Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo | 12 ++++++------ .../Relay/Validation/HalfPeriodRatio.mo | 12 ++++++------ .../Relay/Validation/NormalizedTimeDelay.mo | 2 +- .../Relay/Validation/OnOffPeriod.mo | 6 +++--- .../Validation/ControlProcessModel.mo | 8 ++++---- .../Validation/TimeConstantDelay.mo | 4 ++-- .../Validation/PIDWithFirstOrderAMIGO.mo | 8 ++++---- 7 files changed, 26 insertions(+), 26 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index ce5b2cd6913..2e435c9c2ff 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -63,7 +63,7 @@ block FirstOrderAMIGO annotation (Placement(transformation(origin={0,-120}, extent={{20,-20},{-20,20}},rotation=270), iconTransformation(extent={{20,-20},{-20,20}},rotation=270,origin={0,-120}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanInput triRes - "Resets the controller output when trigger becomes true" annotation ( + "Connector for reseting the controller output" annotation ( Placement(transformation( extent={{-20,-20},{20,20}}, rotation=90, @@ -72,7 +72,7 @@ block FirstOrderAMIGO rotation=90, origin={-60,-120}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanInput triTun - "Starts the autotuning when trigger becomes true" annotation (Placement( + "Connector for starting the autotuning" annotation (Placement( transformation( extent={{-20,-20},{20,20}}, rotation=90, @@ -136,7 +136,7 @@ block FirstOrderAMIGO Buildings.Controls.OBC.CDL.Logical.Or or1 "Switch the block output to the output from the PID controller when the autotuning is disabled or is completed " annotation (Placement(transformation(extent={{60,-70},{80,-50}}))); - Buildings.Controls.OBC.CDL.Logical.Not not1 "when autotuning is disabled" + Buildings.Controls.OBC.CDL.Logical.Not not1 "Becomes true when the autotuning is disabled" annotation (Placement(transformation(extent={{30,-78},{50,-58}}))); protected final parameter Boolean with_D=controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PID or controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PD @@ -226,8 +226,8 @@ equation -50},{46,-50},{46,-20},{-10,-20},{-10,32},{-2,32}}, color={255,0,255})); connect(or1.y, swi.u2) annotation (Line(points={{82,-60},{90,-60},{90,-40},{ 48,-40},{48,-20},{58,-20}}, color={255,0,255})); - connect(not1.u, triTun) annotation (Line(points={{28,-68},{24,-68},{24,-82},{ - 60,-82},{60,-120}}, color={255,0,255})); + connect(not1.u, triTun) annotation (Line(points={{28,-68},{24,-68},{24,-82},{60, + -82},{60,-120}}, color={255,0,255})); connect(not1.y, or1.u2) annotation (Line(points={{52,-68},{58,-68}}, color={255,0,255})); annotation (Documentation(info=" @@ -249,7 +249,7 @@ PID controller.

                    Brief guidance

                    To use this block, connect it to the control loop. -It will start the PID tuning process whenever the value of the boolean input signal triAutTun changes from +It will start the PID tuning process whenever the value of the boolean input signal triTun changes from false to true. During the PID tuning process, the control loop is controlled by a relay feedback controller. The PID tuning process will end automatically based on the algorithm defined diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mo index b6120b42f41..4040579b2c1 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mo @@ -72,16 +72,16 @@ This example mimics an output from a relay controller.

                    • -At 0.1s, the output switches from On to Off. -The length of the On period becomes 0.1s. +At 0.1s, the output switches from On to Off. +The length of the On period becomes 0.1s.
                    • -At 0.7s, the output switches to On. -The length of the Off period becomes 0.5s. +At 0.7s, the output switches to On. +The length of the Off period becomes 0.5s.
                    • -At 0.9s, the output switches to Off. -The length of the On period becomes 0.2s. +At 0.9s, the output switches to Off. +The length of the On period becomes 0.2s.
                    ")); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mo index 4c9034b519f..1fc7d6f14d4 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mo @@ -49,7 +49,7 @@ Validation test for the block Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.NormalizedTimeDelay.

                    -The input rho is a step signal that changes from 2 to 1 at 0.7s. +The input rho is a step signal that changes from 2 to 1 at 0.7s.

                    ")); end NormalizedTimeDelay; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mo index 304d3501279..7f292d5261b 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mo @@ -55,13 +55,13 @@ Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.OnOffPeriod. This example considers an output from a relay controller, enaSig.
                    • -At 0.06s, enaSig switches from On to Off. +At 0.06s, enaSig switches from On to Off.
                    • -At 0.7s, enaSig switches to On. +At 0.7s, enaSig switches to On.
                    • -At 0.86s, enaSig switches to Off. +At 0.86s, enaSig switches to Off.
                    ")); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo index 4ed30f4fc19..65fa99429ec 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo @@ -94,15 +94,15 @@ Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrd This example considers an output from a relay controller, which is described below:
                    • -At 0.1s, the output switches from On to Off. +At 0.1s, the output switches from On to Off.
                    • -At 0.8s, the output switches to On. +At 0.8s, the output switches to On.
                    • -At 0.9s, the output switches to Off. +At 0.9s, the output switches to Off.
                    -This output triggers an autotuning process that lasts from 0.1s to 0.8s. +This output triggers an autotuning process that lasts from 0.1s to 0.9s. ")); end ControlProcessModel; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mo index fab096b6201..48875b095fe 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mo @@ -65,9 +65,9 @@ Validation test for the block Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.TimeConstantDelay.

                    -Input tOn changes from 0 to 0.1 at 0.1s, +Input tOn changes from 0 to 0.1 at 0.1s, Input k is constant, -Input ratioLT changes twice, from 0.3 to 0.4 at 0.32s and from 0.4 to 0.3 at 0.8s. +Input ratioLT changes twice, from 0.3 to 0.4 at 0.32s and from 0.4 to 0.3 at 0.8s.

                    ")); end TimeConstantDelay; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo index 32704bc294e..951340c9e32 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo @@ -4,7 +4,7 @@ model PIDWithFirstOrderAMIGO "Test model for an autotuning PID controller" "Setpoint value" annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.FirstOrderAMIGO PIDWitTun( - controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PID) + controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PID) "PID controller with an autotuning feature" annotation (Placement(transformation(extent={{-20,-30},{0,-10}}))); Buildings.Controls.OBC.CDL.Continuous.PIDWithReset PID( @@ -83,7 +83,7 @@ equation {40,20},{40,86},{58,86}}, color={0,0,127})); connect(derivative2.u, uniDel2.y) annotation (Line(points={{82,-50},{92,-50}, {92,-66},{40,-66},{40,-20},{32,-20}}, color={0,0,127})); - connect(autTunSig.y, PIDWitTun.triAutTun) + connect(autTunSig.y, PIDWitTun.triTun) annotation (Line(points={{-58,-50},{-4,-50},{-4,-32}}, color={255,0,255})); annotation ( experiment( @@ -104,11 +104,11 @@ to that of a normal PID controller (PID) with prescribed gains.

                    Both PID controllers are connected with a first-order control process. -At the beginning (simulation time is less than 1000s), the outputs from those two PID controllers +At the beginning (simulation time is less than 1000s), the outputs from those two PID controllers are the same as their prescribed gains.

                    -Once the autotuning starts at 1000s, the outputs of the two PID controllers become different. +Once the autotuning starts at 1000s, the outputs of the two PID controllers become different. After the tuning completes, under the control of PIDWitTun, the value of the controlled variable is close to the setpoint after the tuning period ends (PIDWitTun.resPro.triEnd = true). On the contrary, PID has a poor control performance, From 2c8e2f399bfd993005588aec1bb95b0796ad869f Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Mon, 19 Jun 2023 16:57:23 -0400 Subject: [PATCH 087/214] add baseclasses and model icon --- .../{ => BaseClasses}/PIDDerivativeTime.mo | 2 +- .../AMIGO/{ => BaseClasses}/PIDGain.mo | 2 +- .../{ => BaseClasses}/PIDIntegralTime.mo | 2 +- .../AMIGO/{ => BaseClasses}/PIGain.mo | 2 +- .../AMIGO/{ => BaseClasses}/PIIntegralTime.mo | 2 +- .../Validation/PIDDerivativeTime.mo | 6 +-- .../{ => BaseClasses}/Validation/PIDGain.mo | 7 +-- .../Validation/PIDIntegralTime.mo | 6 +-- .../{ => BaseClasses}/Validation/PIGain.mo | 7 +-- .../Validation/PIIntegralTime.mo | 6 +-- .../AMIGO/BaseClasses/Validation/package.mo | 32 +++++++++++ .../BaseClasses/Validation/package.order | 5 ++ .../AutoTuner/AMIGO/BaseClasses/package.mo | 16 ++++++ .../AutoTuner/AMIGO/BaseClasses/package.order | 6 +++ .../PIDWithAutotuning/AutoTuner/AMIGO/PI.mo | 39 ++++++++++++-- .../PIDWithAutotuning/AutoTuner/AMIGO/PID.mo | 54 +++++++++++++++++-- .../AutoTuner/AMIGO/Validation/package.order | 5 -- .../AutoTuner/AMIGO/package.mo | 2 +- .../AutoTuner/AMIGO/package.order | 6 +-- .../{ => BaseClasses}/HalfPeriodRatio.mo | 2 +- .../{ => BaseClasses}/NormalizedTimeDelay.mo | 2 +- .../Relay/{ => BaseClasses}/OnOffPeriod.mo | 5 +- .../Validation/HalfPeriodRatio.mo | 7 +-- .../Validation/NormalizedTimeDelay.mo | 7 +-- .../Validation/OnOffPeriod.mo | 7 +-- .../Relay/BaseClasses/Validation/package.mo | 32 +++++++++++ .../BaseClasses/Validation/package.order | 3 ++ .../Relay/BaseClasses/package.mo | 15 ++++++ .../Relay/BaseClasses/package.order | 4 ++ .../PIDWithAutotuning/Relay/Controller.mo | 27 +++++++++- .../Relay/ResponseProcess.mo | 21 ++++++-- .../Relay/Validation/package.order | 3 -- .../PIDWithAutotuning/Relay/package.order | 4 +- .../{ => BaseClasses}/Gain.mo | 2 +- .../{ => BaseClasses}/TimeConstantDelay.mo | 2 +- .../{ => BaseClasses}/Validation/Gain.mo | 6 +-- .../Validation/TimeConstantDelay.mo | 6 +-- .../BaseClasses/Validation/package.mo | 32 +++++++++++ .../BaseClasses/Validation/package.order | 2 + .../BaseClasses/package.mo | 15 ++++++ .../BaseClasses/package.order | 3 ++ .../ControlProcessModel.mo | 22 ++++++-- .../Validation/package.order | 2 - .../FirstOrderTimedelayed/package.order | 3 +- .../Validation/PIDDerivativeTime.mos | 2 +- .../{ => BaseClasses}/Validation/PIDGain.mos | 2 +- .../Validation/PIDIntegralTime.mos | 2 +- .../{ => BaseClasses}/Validation/PIGain.mos | 2 +- .../Validation/PIIntegralTime.mos | 2 +- .../Validation/HalfPeriodRatio.mos | 2 +- .../Validation/NormalizedTimeDelay.mos | 2 +- .../Validation/OnOffPeriod.mos | 2 +- .../{ => BaseClasses}/Validation/Gain.mos | 2 +- .../Validation/TimeConstantDelay.mos | 2 +- 54 files changed, 373 insertions(+), 88 deletions(-) rename Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/{ => BaseClasses}/PIDDerivativeTime.mo (99%) rename Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/{ => BaseClasses}/PIDGain.mo (99%) rename Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/{ => BaseClasses}/PIDIntegralTime.mo (99%) rename Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/{ => BaseClasses}/PIGain.mo (99%) rename Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/{ => BaseClasses}/PIIntegralTime.mo (99%) rename Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/{ => BaseClasses}/Validation/PIDDerivativeTime.mo (92%) rename Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/{ => BaseClasses}/Validation/PIDGain.mo (91%) rename Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/{ => BaseClasses}/Validation/PIDIntegralTime.mo (92%) rename Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/{ => BaseClasses}/Validation/PIGain.mo (91%) rename Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/{ => BaseClasses}/Validation/PIIntegralTime.mo (92%) create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/Validation/package.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/Validation/package.order create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/package.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/package.order rename Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/{ => BaseClasses}/HalfPeriodRatio.mo (99%) rename Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/{ => BaseClasses}/NormalizedTimeDelay.mo (98%) rename Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/{ => BaseClasses}/OnOffPeriod.mo (97%) rename Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/{ => BaseClasses}/Validation/HalfPeriodRatio.mo (91%) rename Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/{ => BaseClasses}/Validation/NormalizedTimeDelay.mo (85%) rename Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/{ => BaseClasses}/Validation/OnOffPeriod.mo (89%) create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/package.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/package.order create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/package.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/package.order rename Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/{ => BaseClasses}/Gain.mo (99%) rename Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/{ => BaseClasses}/TimeConstantDelay.mo (99%) rename Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/{ => BaseClasses}/Validation/Gain.mo (94%) rename Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/{ => BaseClasses}/Validation/TimeConstantDelay.mo (93%) create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/package.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/package.order create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/package.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/package.order rename Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/{ => BaseClasses}/Validation/PIDDerivativeTime.mos (75%) rename Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/{ => BaseClasses}/Validation/PIDGain.mos (77%) rename Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/{ => BaseClasses}/Validation/PIDIntegralTime.mos (74%) rename Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/{ => BaseClasses}/Validation/PIGain.mos (79%) rename Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/{ => BaseClasses}/Validation/PIIntegralTime.mos (74%) rename Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/{ => BaseClasses}/Validation/HalfPeriodRatio.mos (82%) rename Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/{ => BaseClasses}/Validation/NormalizedTimeDelay.mos (73%) rename Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/{ => BaseClasses}/Validation/OnOffPeriod.mos (78%) rename Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/{ => BaseClasses}/Validation/Gain.mos (85%) rename Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/{ => BaseClasses}/Validation/TimeConstantDelay.mos (84%) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDDerivativeTime.mo similarity index 99% rename from Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo rename to Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDDerivativeTime.mo index 3a96221e7b1..c54150ee467 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDDerivativeTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDDerivativeTime.mo @@ -1,4 +1,4 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.BaseClasses; block PIDDerivativeTime "Identify the derivative time of a PID controller" Buildings.Controls.OBC.CDL.Interfaces.RealInput T( final quantity="Time", diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDGain.mo similarity index 99% rename from Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo rename to Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDGain.mo index 07aabcb55f9..a55cae2fdbd 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDGain.mo @@ -1,4 +1,4 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.BaseClasses; block PIDGain "Identify the control gain of a PID controller" Buildings.Controls.OBC.CDL.Interfaces.RealInput kp( final min=1E-6) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDIntegralTime.mo similarity index 99% rename from Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo rename to Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDIntegralTime.mo index b8d00bf80ee..8c0451879b9 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIDIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDIntegralTime.mo @@ -1,4 +1,4 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.BaseClasses; block PIDIntegralTime "Identify the integral time of a PID controller" Buildings.Controls.OBC.CDL.Interfaces.RealInput T( final quantity="Time", diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIGain.mo similarity index 99% rename from Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo rename to Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIGain.mo index 1d001af242c..7225c81cdb8 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIGain.mo @@ -1,4 +1,4 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.BaseClasses; block PIGain "Identify the control gain of a PI controller" Buildings.Controls.OBC.CDL.Interfaces.RealInput kp( final min=1E-6) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIIntegralTime.mo similarity index 99% rename from Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo rename to Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIIntegralTime.mo index a6fb5e22e2e..d533846414d 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PIIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIIntegralTime.mo @@ -1,4 +1,4 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.BaseClasses; block PIIntegralTime "Identify the integral time of a PI controller" Buildings.Controls.OBC.CDL.Interfaces.RealInput T( final quantity="Time", diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/Validation/PIDDerivativeTime.mo similarity index 92% rename from Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mo rename to Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/Validation/PIDDerivativeTime.mo index 0bc570a8108..e728797a31c 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/Validation/PIDDerivativeTime.mo @@ -1,6 +1,6 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.BaseClasses.Validation; model PIDDerivativeTime "Test model for calculating the integral time for a PID controller" - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIDDerivativeTime + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.BaseClasses.PIDDerivativeTime PIDDerTim "Blocks that calculates the integral time" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp T( @@ -23,7 +23,7 @@ equation StopTime=1.0, Tolerance=1e-06), __Dymola_Commands( - file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDDerivativeTime.mos" "Simulate and plot"), + file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/Validation/PIDDerivativeTime.mos" "Simulate and plot"), Icon( coordinateSystem( preserveAspectRatio=false, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/Validation/PIDGain.mo similarity index 91% rename from Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mo rename to Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/Validation/PIDGain.mo index d53bd7dc9a5..8fe182d2a8f 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/Validation/PIDGain.mo @@ -1,6 +1,7 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.BaseClasses.Validation; model PIDGain "Test model for calculating the control gain for a PID controller" - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIDGain PIDGai + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.BaseClasses.PIDGain + PIDGai "Blocks that calculates the control gain" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp kp( @@ -30,7 +31,7 @@ equation StopTime=1.0, Tolerance=1e-06), __Dymola_Commands( - file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDGain.mos" "Simulate and plot"), + file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/Validation/PIDGain.mos" "Simulate and plot"), Icon( coordinateSystem( preserveAspectRatio=false, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/Validation/PIDIntegralTime.mo similarity index 92% rename from Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mo rename to Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/Validation/PIDIntegralTime.mo index 1d0e237913e..d3192b3d196 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/Validation/PIDIntegralTime.mo @@ -1,6 +1,6 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.BaseClasses.Validation; model PIDIntegralTime "Test model for calculating the integral time for a PID controller" - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIDIntegralTime + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.BaseClasses.PIDIntegralTime PIDIntTim "Blocks that calculates the integral time" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp T( @@ -23,7 +23,7 @@ equation StopTime=1.0, Tolerance=1e-06), __Dymola_Commands( - file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIDIntegralTime.mos" "Simulate and plot"), + file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/Validation/PIDIntegralTime.mos" "Simulate and plot"), Icon( coordinateSystem( preserveAspectRatio=false, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/Validation/PIGain.mo similarity index 91% rename from Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mo rename to Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/Validation/PIGain.mo index 9aef8581054..63326899d79 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/Validation/PIGain.mo @@ -1,6 +1,7 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.BaseClasses.Validation; model PIGain "Test model for calculating the gain for a PI controller" - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIGain PIGai + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.BaseClasses.PIGain + PIGai "Blocks that calculates the gain" annotation (Placement(transformation(extent={{-8,-10},{12,10}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp kp( @@ -30,7 +31,7 @@ equation StopTime=1.0, Tolerance=1e-06), __Dymola_Commands( - file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIGain.mos" "Simulate and plot"), + file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/Validation/PIGain.mos" "Simulate and plot"), Icon( coordinateSystem( preserveAspectRatio=false, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/Validation/PIIntegralTime.mo similarity index 92% rename from Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mo rename to Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/Validation/PIIntegralTime.mo index d392e7bc437..000aa749bd0 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/Validation/PIIntegralTime.mo @@ -1,6 +1,6 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.BaseClasses.Validation; model PIIntegralTime "Test model for calculating the integral time for a PI controller" - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIIntegralTime + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.BaseClasses.PIIntegralTime PIIntTim "Block that calculates the integral time" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp T( @@ -23,7 +23,7 @@ equation StopTime=1.0, Tolerance=1e-06), __Dymola_Commands( - file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PIIntegralTime.mos" "Simulate and plot"), + file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/Validation/PIIntegralTime.mos" "Simulate and plot"), Icon( coordinateSystem( preserveAspectRatio=false, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/Validation/package.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/Validation/package.mo new file mode 100644 index 00000000000..c8dd1298762 --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/Validation/package.mo @@ -0,0 +1,32 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.BaseClasses; +package Validation "Collection of models that validate the blocks in the AutoTuner" + annotation ( + preferredView="info", + Documentation( + info=" +

                    +This package contains models that validate the blocks in + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO. +

                    +"), + Icon( + graphics={ + Rectangle( + lineColor={200,200,200}, + fillColor={248,248,248}, + fillPattern=FillPattern.HorizontalCylinder, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Rectangle( + lineColor={128,128,128}, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Polygon( + origin={8.0,14.0}, + lineColor={78,138,73}, + fillColor={78,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-58.0,46.0},{42.0,-14.0},{-58.0,-74.0},{-58.0,46.0}})})); +end Validation; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/Validation/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/Validation/package.order new file mode 100644 index 00000000000..9f634d6f87d --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/Validation/package.order @@ -0,0 +1,5 @@ +PIDDerivativeTime +PIDGain +PIDIntegralTime +PIGain +PIIntegralTime diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/package.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/package.mo new file mode 100644 index 00000000000..3809bd0307f --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/package.mo @@ -0,0 +1,16 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; +package BaseClasses "Package with base classes" + +annotation (Icon(graphics={ + Rectangle( + lineColor={200,200,200}, + fillColor={248,248,248}, + fillPattern=FillPattern.HorizontalCylinder, + extent={{-100,-100},{100,100}}, + radius=25.0), + Ellipse( + extent={{-30,-32},{30,28}}, + lineColor={128,128,128}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid)})); +end BaseClasses; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/package.order new file mode 100644 index 00000000000..78e8f68fed7 --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/package.order @@ -0,0 +1,6 @@ +PIDDerivativeTime +PIDGain +PIDIntegralTime +PIGain +PIIntegralTime +Validation diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PI.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PI.mo index 1b220aa4f3b..625337e4297 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PI.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PI.mo @@ -31,10 +31,10 @@ block PI "Identify control gain and integral time of a PI controller" annotation (Placement(transformation(extent={{100,-50},{140,-10}}), iconTransformation(extent={{100,-80},{140,-40}}))); protected - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIGain gai + BaseClasses.PIGain gai "Block that calculates the control gain" annotation (Placement(transformation(extent={{-10,20},{10,40}}))); - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIIntegralTime + BaseClasses.PIIntegralTime intTim "Block that calculates the integral time" annotation (Placement(transformation(extent={{-10,-40},{10,-20}}))); @@ -63,7 +63,40 @@ equation Text( extent={{-100,140},{100,100}}, textString="%name", - textColor={0,0,255})}), Diagram(coordinateSystem(preserveAspectRatio=false)), + textColor={0,0,255}), + Text( + visible=(controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PI), + extent={{-16,-12},{84,-52}}, + lineColor={0,0,0}, + textString="PI", + fillPattern=FillPattern.Solid, + fillColor={175,175,175}), + Polygon( + points={{12,-30},{-10,-22},{-10,-38},{12,-30}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Polygon( + points={{32,-14},{24,8},{40,8},{32,-14}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Line(points={{32,8},{32,44}}, color={28,108,200}), + Line(points={{-42,-30},{-10,-30}}, color={28,108,200}), + Text( + visible=(controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PI), + extent={{-18,80},{82,40}}, + lineColor={0,0,0}, + fillPattern=FillPattern.Solid, + fillColor={175,175,175}, + textString="k"), + Text( + visible=(controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PI), + extent={{-116,-10},{-16,-50}}, + lineColor={0,0,0}, + fillPattern=FillPattern.Solid, + fillColor={175,175,175}, + textString="Ti")}), Diagram(coordinateSystem(preserveAspectRatio=false)), Documentation(revisions="
                    • diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo index 17f4b5b3091..abc935e1561 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo @@ -37,13 +37,13 @@ block PID "Identify control gain, integral time, and derivative time of the PID annotation (Placement(transformation(extent={{100,-80},{140,-40}}), iconTransformation(extent={{100,-90},{140,-50}}))); protected - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIDGain gai + BaseClasses.PIDGain gai "Block that calculates the control gain" annotation (Placement(transformation(extent={{-10,40},{10,60}}))); - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIDIntegralTime + BaseClasses.PIDIntegralTime intTim "Block that calculates the integral time" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PIDDerivativeTime + BaseClasses.PIDDerivativeTime derTim "Block that calculates the derivative time" annotation (Placement(transformation(extent={{-10,-70},{10,-50}}))); @@ -78,7 +78,53 @@ equation Text( extent={{-154,148},{146,108}}, textString="%name", - textColor={0,0,255})}), Diagram(coordinateSystem(preserveAspectRatio=false)), + textColor={0,0,255}), + Text( + visible=(controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PI), + extent={{-16,20},{84,-20}}, + lineColor={0,0,0}, + fillPattern=FillPattern.Solid, + fillColor={175,175,175}, + textString="PID"), + Polygon( + points={{32,22},{24,44},{40,44},{32,22}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Polygon( + points={{0,2},{-22,10},{-22,-6},{0,2}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Line(points={{32,44},{32,68}}, color={28,108,200}), + Polygon( + points={{32,-22},{24,-44},{40,-44},{32,-22}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Line(points={{-22,2},{-48,2}}, color={28,108,200}), + Line(points={{32,-44},{32,-62}}, color={28,108,200}), + Text( + visible=(controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PI), + extent={{-16,102},{84,62}}, + lineColor={0,0,0}, + fillPattern=FillPattern.Solid, + fillColor={175,175,175}, + textString="k"), + Text( + visible=(controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PI), + extent={{-116,26},{-16,-14}}, + lineColor={0,0,0}, + fillPattern=FillPattern.Solid, + fillColor={175,175,175}, + textString="Ti"), + Text( + visible=(controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PI), + extent={{-18,-62},{82,-102}}, + lineColor={0,0,0}, + fillPattern=FillPattern.Solid, + fillColor={175,175,175}, + textString="Td")}), Diagram(coordinateSystem(preserveAspectRatio=false)), Documentation(revisions="
                      • diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/package.order index 1bc46e27a85..d2760571513 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/package.order +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/package.order @@ -1,7 +1,2 @@ PI PID -PIDDerivativeTime -PIDGain -PIDIntegralTime -PIGain -PIIntegralTime diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.mo index 418a217c1b5..3adc6c3c6d2 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.mo @@ -1,4 +1,4 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner; package AMIGO "Package with components related to AMIGO tuner" annotation (Documentation(info="

                        diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.order index 28500d43222..f1b640e9dd7 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.order +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.order @@ -1,8 +1,4 @@ PI PID -PIDDerivativeTime -PIDGain -PIDIntegralTime -PIGain -PIIntegralTime Validation +BaseClasses diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/HalfPeriodRatio.mo similarity index 99% rename from Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo rename to Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/HalfPeriodRatio.mo index 02169c9466b..1d65edae4f5 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/HalfPeriodRatio.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/HalfPeriodRatio.mo @@ -1,4 +1,4 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses; block HalfPeriodRatio "Calculate the half period ratio of a response from a relay controller" Buildings.Controls.OBC.CDL.Interfaces.RealInput tOn( diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/NormalizedTimeDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/NormalizedTimeDelay.mo similarity index 98% rename from Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/NormalizedTimeDelay.mo rename to Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/NormalizedTimeDelay.mo index 914ab692487..27b42998383 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/NormalizedTimeDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/NormalizedTimeDelay.mo @@ -1,4 +1,4 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses; block NormalizedTimeDelay "Calculate the normalized time delay of a response from a relay controller" parameter Real gamma(min=1+1E-6) = 4 diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/OnOffPeriod.mo similarity index 97% rename from Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo rename to Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/OnOffPeriod.mo index 41915085900..17ed5aabeec 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/OnOffPeriod.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/OnOffPeriod.mo @@ -1,6 +1,5 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay; -block OnOffPeriod - "Calculate the lengths of the on period and the off period" +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses; +block OnOffPeriod "Calculate the lengths of the on period and the off period" Buildings.Controls.OBC.CDL.Interfaces.RealInput tim( final quantity="Time", final unit="s") diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/HalfPeriodRatio.mo similarity index 91% rename from Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mo rename to Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/HalfPeriodRatio.mo index 4040579b2c1..7f45e8a6d13 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/HalfPeriodRatio.mo @@ -1,6 +1,7 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.Validation; model HalfPeriodRatio "Test model for calculating the half period ratio" - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.HalfPeriodRatio halPerRat + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.HalfPeriodRatio + halPerRat "Calculate the half period ratio based on a response from a relay controller" annotation (Placement(transformation(extent={{22,-10},{42,10}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.Pulse tOnSig1( @@ -38,7 +39,7 @@ equation StopTime=1.0, Tolerance=1e-06), __Dymola_Commands( - file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/HalfPeriodRatio.mos" "Simulate and plot"), + file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/HalfPeriodRatio.mos" "Simulate and plot"), Icon( coordinateSystem( preserveAspectRatio=false, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/NormalizedTimeDelay.mo similarity index 85% rename from Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mo rename to Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/NormalizedTimeDelay.mo index 1fc7d6f14d4..f9cc485d4a9 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/NormalizedTimeDelay.mo @@ -1,6 +1,7 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.Validation; model NormalizedTimeDelay "Test model for calculating the normalized time delay" - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.NormalizedTimeDelay norTimDel(gamma=3) + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.NormalizedTimeDelay + norTimDel(gamma=3) "Calculate the normalized time delay based on a response from a relay controller" annotation (Placement(transformation(extent={{-8,-10},{12,10}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.Pulse rho( @@ -17,7 +18,7 @@ equation StopTime=1.0, Tolerance=1e-06), __Dymola_Commands( - file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/NormalizedTimeDelay.mos" "Simulate and plot"), + file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/NormalizedTimeDelay.mos" "Simulate and plot"), Icon( coordinateSystem( preserveAspectRatio=false, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/OnOffPeriod.mo similarity index 89% rename from Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mo rename to Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/OnOffPeriod.mo index 7f292d5261b..2d6415eeac9 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/OnOffPeriod.mo @@ -1,6 +1,7 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.Validation; model OnOffPeriod "Test model for calculating the length of the on period and the off period" - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.OnOffPeriod onOffPer + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.OnOffPeriod + onOffPer "Calculate the length of the on period and the off period based on a response from a relay controller" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.ModelTime modTim @@ -21,7 +22,7 @@ equation StopTime=1.0, Tolerance=1e-06), __Dymola_Commands( - file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/OnOffPeriod.mos" "Simulate and plot"), + file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/OnOffPeriod.mos" "Simulate and plot"), Icon( coordinateSystem( preserveAspectRatio=false, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/package.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/package.mo new file mode 100644 index 00000000000..d573c4efdd4 --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/package.mo @@ -0,0 +1,32 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses; +package Validation "Collection of models that validate the blocks of the Relay" + annotation ( + preferredView="info", + Documentation( + info=" +

                        +This package contains models that validate the blocks in + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay. +

                        +"), + Icon( + graphics={ + Rectangle( + lineColor={200,200,200}, + fillColor={248,248,248}, + fillPattern=FillPattern.HorizontalCylinder, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Rectangle( + lineColor={128,128,128}, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Polygon( + origin={8.0,14.0}, + lineColor={78,138,73}, + fillColor={78,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-58.0,46.0},{42.0,-14.0},{-58.0,-74.0},{-58.0,46.0}})})); +end Validation; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/package.order new file mode 100644 index 00000000000..7703640e3c5 --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/package.order @@ -0,0 +1,3 @@ +HalfPeriodRatio +NormalizedTimeDelay +OnOffPeriod diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/package.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/package.mo new file mode 100644 index 00000000000..dee5d91475b --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/package.mo @@ -0,0 +1,15 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay; +package BaseClasses "Package with base classes" + annotation (Icon(graphics={ + Rectangle( + lineColor={200,200,200}, + fillColor={248,248,248}, + fillPattern=FillPattern.HorizontalCylinder, + extent={{-100,-100},{100,100}}, + radius=25.0), + Ellipse( + extent={{-30,-32},{30,28}}, + lineColor={128,128,128}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid)})); +end BaseClasses; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/package.order new file mode 100644 index 00000000000..0115a1667b5 --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/package.order @@ -0,0 +1,4 @@ +HalfPeriodRatio +NormalizedTimeDelay +OnOffPeriod +Validation diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo index efa8c6c2b5a..d116f1f8055 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo @@ -95,7 +95,32 @@ equation Text( extent={{-100,140},{100,100}}, textString="%name", - textColor={0,0,255})}), Diagram( + textColor={0,0,255}), + Polygon( + points={{-70,92},{-78,70},{-62,70},{-70,92}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Polygon( + points={{84,-70},{62,-62},{62,-78},{84,-70}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Line( + points={{-70,78},{-70,-90}}, + color={192,192,192}), + Line( + points={{-80,-70},{80,-70}}, + color={192,192,192}), + Text( + visible=(controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PI), + extent={{-62,-10},{84,-52}}, + lineColor={0,0,0}, + fillPattern=FillPattern.Solid, + fillColor={175,175,175}, + textString="Relay"), + Line(points={{-70,24},{-34,24},{-34,58},{38,58},{38,24},{66,24}}, color + ={28,108,200})}), Diagram( coordinateSystem(preserveAspectRatio=false)), Documentation(info="

                        diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo index c0e35b2730c..86a870771a6 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo @@ -38,13 +38,13 @@ block ResponseProcess annotation (Placement(transformation(extent={{100,-10},{140,30}}), iconTransformation(extent={{100,-20},{140,20}}))); protected - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.OnOffPeriod onOffPer + BaseClasses.OnOffPeriod onOffPer "Block that calculates the length of the on period and the off period" annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.HalfPeriodRatio halPerRatio + BaseClasses.HalfPeriodRatio halPerRatio "Block that calculates the half period ratio" annotation (Placement(transformation(extent={{-20,0},{0,20}}))); - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.NormalizedTimeDelay norTimDel( + BaseClasses.NormalizedTimeDelay norTimDel( final gamma=max(yHig, yLow)/min(yLow, yHig)) "Block that calculates the normalized time delay" annotation (Placement(transformation(extent={{40,0},{60,20}}))); @@ -81,7 +81,20 @@ equation Text( extent={{-100,140},{100,100}}, textString="%name", - textColor={0,0,255})}), Diagram(coordinateSystem(preserveAspectRatio=false)), + textColor={0,0,255}), + Polygon( + points={{-54,56},{-62,34},{-46,34},{-54,56}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Polygon( + points={{34,-58},{26,-36},{42,-36},{34,-58}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Line(points={{-54,60},{30,60},{34,60},{34,-36}}, color={28,108,200}), + Line(points={{-54,34},{-54,-64},{36,-64}}, color={28,108,200})}), + Diagram(coordinateSystem(preserveAspectRatio=false)), Documentation(revisions="

                        • diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/package.order index a7cbca10e80..74d73a22bb1 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/package.order +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/package.order @@ -1,5 +1,2 @@ Controller -HalfPeriodRatio -NormalizedTimeDelay -OnOffPeriod ResponseProcess diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/package.order index 0286df4ced5..432d970ed3e 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/package.order +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/package.order @@ -1,6 +1,4 @@ Controller -HalfPeriodRatio -NormalizedTimeDelay -OnOffPeriod ResponseProcess Validation +BaseClasses diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Gain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Gain.mo similarity index 99% rename from Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Gain.mo rename to Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Gain.mo index 496dc8c03aa..99b278f5820 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Gain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Gain.mo @@ -1,4 +1,4 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.BaseClasses; block Gain "Identify the gain of a first order time delayed model" parameter Real yHig(min=1E-6) = 1 "Higher value for the output (assuming the reference output is 0)"; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/TimeConstantDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/TimeConstantDelay.mo similarity index 99% rename from Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/TimeConstantDelay.mo rename to Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/TimeConstantDelay.mo index 567dc432a3f..80a69fa9504 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/TimeConstantDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/TimeConstantDelay.mo @@ -1,4 +1,4 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.BaseClasses; block TimeConstantDelay "Calculate the time constant and the time delay of a first order time delayed model" parameter Real yHig(min=1E-6) = 1 diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/Gain.mo similarity index 94% rename from Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mo rename to Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/Gain.mo index 6ce0f941e0d..fcea1729878 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/Gain.mo @@ -1,6 +1,6 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.BaseClasses.Validation; model Gain "Test model for identifying the gain of the control process" - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Gain + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.BaseClasses.Gain gai "Block that calculate the gain of a first-order model" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.Pulse u( @@ -43,7 +43,7 @@ equation StopTime=1.0, Tolerance=1e-06), __Dymola_Commands( - file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/Gain.mos" "Simulate and plot"), + file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/Gain.mos" "Simulate and plot"), Icon( coordinateSystem( preserveAspectRatio=false, extent={{-100,-100},{100,100}}), diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/TimeConstantDelay.mo similarity index 93% rename from Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mo rename to Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/TimeConstantDelay.mo index 48875b095fe..9206b4ac63f 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/TimeConstantDelay.mo @@ -1,6 +1,6 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.BaseClasses.Validation; model TimeConstantDelay "Test model for identifying the the time constant and the time delay of the control process" - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.TimeConstantDelay + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.BaseClasses.TimeConstantDelay timConDel(yLow=0.1) "Block that calculates the time constant and the time delay of a first-order model" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); @@ -34,7 +34,7 @@ equation StopTime=1.0, Tolerance=1e-06), __Dymola_Commands( - file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/TimeConstantDelay.mos" "Simulate and plot"), + file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/TimeConstantDelay.mos" "Simulate and plot"), Icon( coordinateSystem( preserveAspectRatio=false, extent={{-100,-100},{100,100}}), diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/package.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/package.mo new file mode 100644 index 00000000000..6af0e1d4e1f --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/package.mo @@ -0,0 +1,32 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.BaseClasses; +package Validation "Collection of models that validate the blocks in the FirstOrderTimedelayed" + annotation ( + preferredView="info", + Documentation( + info=" +

                          +This package contains models that validate the blocks in + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning. +

                          +"), + Icon( + graphics={ + Rectangle( + lineColor={200,200,200}, + fillColor={248,248,248}, + fillPattern=FillPattern.HorizontalCylinder, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Rectangle( + lineColor={128,128,128}, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Polygon( + origin={8.0,14.0}, + lineColor={78,138,73}, + fillColor={78,138,73}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{-58.0,46.0},{42.0,-14.0},{-58.0,-74.0},{-58.0,46.0}})})); +end Validation; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/package.order new file mode 100644 index 00000000000..5154064169d --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/package.order @@ -0,0 +1,2 @@ +Gain +TimeConstantDelay diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/package.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/package.mo new file mode 100644 index 00000000000..fb3e509e9a8 --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/package.mo @@ -0,0 +1,15 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed; +package BaseClasses "Package with base classes" + annotation (Icon(graphics={ + Rectangle( + lineColor={200,200,200}, + fillColor={248,248,248}, + fillPattern=FillPattern.HorizontalCylinder, + extent={{-100,-100},{100,100}}, + radius=25.0), + Ellipse( + extent={{-30,-32},{30,28}}, + lineColor={128,128,128}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid)})); +end BaseClasses; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/package.order new file mode 100644 index 00000000000..0fb2c6ea90f --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/package.order @@ -0,0 +1,3 @@ +Gain +TimeConstantDelay +Validation diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo index 9da4bc183cc..4bb9351e1f8 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo @@ -72,12 +72,12 @@ protected Buildings.Controls.OBC.CDL.Continuous.Divide div "The output of samtau divided by that of addPar" annotation (Placement(transformation(extent={{12,-30},{32,-10}}))); - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Gain gain( + BaseClasses.Gain gain( final yHig=yHig, final yLow=yLow) "Block that calculates the gain" annotation (Placement(transformation(extent={{-84,10},{-64,30}}))); - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.TimeConstantDelay + BaseClasses.TimeConstantDelay timConDel( final yHig=yHig, final yLow=yLow, @@ -178,7 +178,23 @@ equation Text( extent={{-100,140},{100,100}}, textString="%name", - textColor={0,0,255})}), Diagram(coordinateSystem(preserveAspectRatio=false)), + textColor={0,0,255}), + Polygon( + points={{-68,76},{-76,54},{-60,54},{-68,76}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Polygon( + points={{80,-74},{58,-66},{58,-82},{80,-74}}, + lineColor={192,192,192}, + fillColor={192,192,192}, + fillPattern=FillPattern.Solid), + Line(points={{-68,56},{-68,-94}}, color={28,108,200}), + Line(points={{58,-74},{-90,-74}}, color={28,108,200}), + Line(points={{-52,-74},{-46,-48},{-26,-14},{0,10},{28,28},{48,34},{62, + 34}}, color={28,108,200}), + Line(points={{-58,36},{82,36}}, color={28,108,200})}), + Diagram(coordinateSystem(preserveAspectRatio=false)), Documentation(revisions=" ", info=" -

                          This block calculates the model parameters of a first-order time-delayed model. +

                          This block calculates the model parameters of a first-order time delayed model. Specifically, it employs Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.BaseClasses.Gain and Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.BaseClasses.TimeConstantDelay diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/package.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/package.mo index dba3b46c501..2abd28f11cd 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/package.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/package.mo @@ -6,8 +6,8 @@ package Validation "Collection of models that validate the blocks in the FirstOr info="

                          This package contains models that validate the blocks in - -Buildings.Controls.OBC.Utilities.PIDWithAutotuning. + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.

                          "), Icon( diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/package.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/package.mo index c944b1881c4..1e58b2ef78e 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/package.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/package.mo @@ -1,6 +1,6 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification; -package FirstOrderTimedelayed "Package with components related to a first-order time-delayed model" +package FirstOrderTimedelayed "Package with components related to a first-order time delayed model" annotation (Documentation(info=" -

                          This package contains the blocks to identify the parameters of a first-order time-delayed model.

                          +

                          This package contains the blocks to identify the parameters of a first-order time delayed model.

                          ")); end FirstOrderTimedelayed; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/package.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/package.mo index e707f43f26f..f92bed5ec40 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/package.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/package.mo @@ -1,5 +1,5 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning; -package SystemIdentification "Package with blocks for identifying a system model of control process" +package SystemIdentification "Package with blocks for identifying a system model of the control process" annotation (Documentation(info="

                          This package contains blocks that conduct the system identification of the control process. From 560b2eecbe82870cb40aa54527c0a6a10c33a0b1 Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Fri, 30 Jun 2023 13:28:25 -0700 Subject: [PATCH 096/214] cleaned BOM --- .../AutoTuner/AMIGO/BaseClasses/PIDDerivativeTime.mo | 2 +- .../PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDGain.mo | 2 +- .../AutoTuner/AMIGO/BaseClasses/PIDIntegralTime.mo | 2 +- .../PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIGain.mo | 2 +- .../AutoTuner/AMIGO/BaseClasses/PIIntegralTime.mo | 2 +- .../OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.mo | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDDerivativeTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDDerivativeTime.mo index a1f86e5919f..6a7542c518f 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDDerivativeTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDDerivativeTime.mo @@ -1,4 +1,4 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.BaseClasses; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.BaseClasses; block PIDDerivativeTime "Identify the derivative time of a PID controller" Buildings.Controls.OBC.CDL.Interfaces.RealInput T( final quantity="Time", diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDGain.mo index 6545aa0a342..f2aea05e286 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDGain.mo @@ -1,4 +1,4 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.BaseClasses; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.BaseClasses; block PIDGain "Identify the control gain of a PID controller" Buildings.Controls.OBC.CDL.Interfaces.RealInput kp( final min=1E-6) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDIntegralTime.mo index a8cfb04e561..1124b1945d9 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDIntegralTime.mo @@ -1,4 +1,4 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.BaseClasses; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.BaseClasses; block PIDIntegralTime "Identify the integral time of a PID controller" Buildings.Controls.OBC.CDL.Interfaces.RealInput T( final quantity="Time", diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIGain.mo index 9ece5f70a2c..3e34901762e 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIGain.mo @@ -1,4 +1,4 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.BaseClasses; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.BaseClasses; block PIGain "Identify the control gain of a PI controller" Buildings.Controls.OBC.CDL.Interfaces.RealInput kp( final min=1E-6) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIIntegralTime.mo index d533846414d..a7e491e954f 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIIntegralTime.mo @@ -1,4 +1,4 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.BaseClasses; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.BaseClasses; block PIIntegralTime "Identify the integral time of a PI controller" Buildings.Controls.OBC.CDL.Interfaces.RealInput T( final quantity="Time", diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.mo index ab70ff9ff42..e1de702c5c8 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.mo @@ -1,4 +1,4 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner; package AMIGO "Package with components related to AMIGO tuners" annotation (Documentation(info="

                          From 1d8ee1d3b8811f8a265723fdd72b17648bb440c8 Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Fri, 30 Jun 2023 14:01:34 -0700 Subject: [PATCH 097/214] deleted obsolete OMC script --- ...tuning.AutoTuner.AMIGO.Validation.PIDDerivativeTime.mos | 6 ------ ...IDWithAutotuning.AutoTuner.AMIGO.Validation.PIDGain.mos | 7 ------- ...totuning.AutoTuner.AMIGO.Validation.PIDIntegralTime.mos | 6 ------ ...PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIGain.mos | 7 ------- ...utotuning.AutoTuner.AMIGO.Validation.PIIntegralTime.mos | 6 ------ 5 files changed, 32 deletions(-) delete mode 100644 Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDDerivativeTime.mos delete mode 100644 Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDGain.mos delete mode 100644 Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDIntegralTime.mos delete mode 100644 Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIGain.mos delete mode 100644 Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIIntegralTime.mos diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDDerivativeTime.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDDerivativeTime.mos deleted file mode 100644 index 93f2e57a4dc..00000000000 --- a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDDerivativeTime.mos +++ /dev/null @@ -1,6 +0,0 @@ -compareVars := - { - "T.y", - "L.y", - "PIDDerTim.Td" - }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDGain.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDGain.mos deleted file mode 100644 index 0c289566e5d..00000000000 --- a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDGain.mos +++ /dev/null @@ -1,7 +0,0 @@ -compareVars := - { - "kp.y", - "T.y", - "L.y", - "PIDGai.k" - }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDIntegralTime.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDIntegralTime.mos deleted file mode 100644 index d72c9de6bb6..00000000000 --- a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIDIntegralTime.mos +++ /dev/null @@ -1,6 +0,0 @@ -compareVars := - { - "T.y", - "L.y", - "PIDIntTim.Ti" - }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIGain.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIGain.mos deleted file mode 100644 index e40a2627179..00000000000 --- a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIGain.mos +++ /dev/null @@ -1,7 +0,0 @@ -compareVars := - { - "kp.y", - "T.y", - "L.y", - "PIGai.k" - }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIIntegralTime.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIIntegralTime.mos deleted file mode 100644 index 2cb6ac67412..00000000000 --- a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation.PIIntegralTime.mos +++ /dev/null @@ -1,6 +0,0 @@ -compareVars := - { - "T.y", - "L.y", - "PIIntTim.Ti" - }; From 39fb78356b530e70dab1d34aea1d3a39d64e8752 Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Fri, 30 Jun 2023 14:21:13 -0700 Subject: [PATCH 098/214] deleted obsolete OMC script --- ...PIDWithAutotuning.Relay.Validation.HalfPeriodRatio.mos | 8 -------- ...ithAutotuning.Relay.Validation.NormalizedTimeDelay.mos | 5 ----- ...ies.PIDWithAutotuning.Relay.Validation.OnOffPeriod.mos | 6 ------ ...entification.FirstOrderTimedelayed.Validation.Gain.mos | 8 -------- ...FirstOrderTimedelayed.Validation.TimeConstantDelay.mos | 8 -------- 5 files changed, 35 deletions(-) delete mode 100644 Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.HalfPeriodRatio.mos delete mode 100644 Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.NormalizedTimeDelay.mos delete mode 100644 Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.OnOffPeriod.mos delete mode 100644 Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation.Gain.mos delete mode 100644 Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation.TimeConstantDelay.mos diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.HalfPeriodRatio.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.HalfPeriodRatio.mos deleted file mode 100644 index b2a7753f795..00000000000 --- a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.HalfPeriodRatio.mos +++ /dev/null @@ -1,8 +0,0 @@ -compareVars := - { - "tOn.y", - "tOff.y", - "halPerRat.triSta", - "halPerRat.triEnd", - "halPerRat.rho" - }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.NormalizedTimeDelay.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.NormalizedTimeDelay.mos deleted file mode 100644 index 2fd11ea858d..00000000000 --- a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.NormalizedTimeDelay.mos +++ /dev/null @@ -1,5 +0,0 @@ -compareVars := - { - "rho.y", - "norTimDel.tau" - }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.OnOffPeriod.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.OnOffPeriod.mos deleted file mode 100644 index 9bc71a0449e..00000000000 --- a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.OnOffPeriod.mos +++ /dev/null @@ -1,6 +0,0 @@ -compareVars := - { - "enaSig.y", - "onOffPer.tOn", - "onOffPer.tOff" - }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation.Gain.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation.Gain.mos deleted file mode 100644 index dee5840e998..00000000000 --- a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation.Gain.mos +++ /dev/null @@ -1,8 +0,0 @@ -compareVars := - { - "u.y", - "tOn.y", - "tOff.y", - "tunSta.y", - "gai.k" - }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation.TimeConstantDelay.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation.TimeConstantDelay.mos deleted file mode 100644 index 17a27021194..00000000000 --- a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation.TimeConstantDelay.mos +++ /dev/null @@ -1,8 +0,0 @@ -compareVars := - { - "tOn.y", - "k.y", - "ratioLT.y", - "timConDel.T", - "timConDel.L" - }; From 3b449637393edd3f43e15be43c7719b9c3b1b567 Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Wed, 5 Jul 2023 11:37:05 -0700 Subject: [PATCH 099/214] modified format --- .../PIDWithAutotuning/FirstOrderAMIGO.mo | 41 ++++++------------- 1 file changed, 13 insertions(+), 28 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index 55583323160..ff825ea7da5 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -63,23 +63,13 @@ block FirstOrderAMIGO annotation (Placement(transformation(origin={0,-120}, extent={{20,-20},{-20,20}},rotation=270), iconTransformation(extent={{20,-20},{-20,20}},rotation=270,origin={0,-120}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanInput triRes - "Connector for reseting the controller output" annotation ( - Placement(transformation( - extent={{-20,-20},{20,20}}, - rotation=90, - origin={-60,-120}), iconTransformation( - extent={{-20,-20},{20,20}}, - rotation=90, - origin={-60,-120}))); + "Connector for reseting the controller output" + annotation (Placement(transformation(extent={{-20,-20},{20,20}},rotation=90,origin={-60,-120}), + iconTransformation(extent={{-20,-20},{20,20}},rotation=90,origin={-60,-120}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanInput triTun - "Connector for starting the autotuning" annotation (Placement( - transformation( - extent={{-20,-20},{20,20}}, - rotation=90, - origin={60,-120}), iconTransformation( - extent={{-20,-20},{20,20}}, - rotation=90, - origin={60,-120}))); + "Connector for starting the autotuning" + annotation (Placement(transformation(extent={{-20,-20},{20,20}},rotation=90,origin={60,-120}), + iconTransformation(extent={{-20,-20},{20,20}},rotation=90,origin={60,-120}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput y "Connector for actuator output signal" annotation (Placement(transformation(extent={{100,-20},{140,20}}),iconTransformation(extent={{100,-20},{140,20}}))); @@ -162,7 +152,7 @@ equation connect(samTd.y,PID. Td) annotation (Line(points={{-18,-70},{-6,-70},{-6,-44}, {-2,-44}}, color={0,0,127})); connect(rel.u_m, u_m) annotation (Line(points={{30,-2},{30,-60},{10,-60},{10, - -96},{0,-96},{0,-120}}, color={0,0,127})); + -96},{0,-96},{0,-120}}, color={0,0,127})); connect(swi.u3, rel.y) annotation (Line(points={{58,-28},{52,-28},{52,16},{42,16}}, color={0,0,127})); connect(swi.u1,PID. y) annotation (Line(points={{58,-12},{40,-12},{40,-40},{22, @@ -180,12 +170,11 @@ equation connect(rel.yErr, conProMod.u) annotation (Line(points={{42,10},{48,10},{48,58}, {-18,58}}, color={0,0,127})); connect(PIDPar.kp, conProMod.k) - annotation (Line(points={{-58,56},{-50,56},{-50,56},{-42,56}}, color={0,0,127})); + annotation (Line(points={{-58,56},{-50,56},{-50,56},{-42,56}}, color={0,0,127})); connect(PIDPar.T, conProMod.T) annotation (Line(points={{-58,50},{-42,50}}, color={0,0,127})); connect(PIDPar.L, conProMod.L) annotation (Line(points={{-58,44},{-54,44},{ - -54,44},{-42,44}}, - color={0,0,127})); + -54,44},{-42,44}}, color={0,0,127})); connect(PIDPar.k, samk.u) annotation (Line(points={{-82,57},{-94,57},{-94,-20}, {-42,-20}}, color={0,0,127})); connect(PIDPar.Ti, samTi.u) annotation (Line(points={{-82,50},{-90,50},{-90,-50}, @@ -199,25 +188,21 @@ equation connect(PIPar.k, samk.u) annotation (Line(points={{-82,86},{-94,86},{-94,-20}, {-42,-20}}, color={0,0,127})); connect(PIPar.Ti, samTi.u) annotation (Line(points={{-82,74},{-90,74},{-90, - -50},{-82,-50}}, - color={0,0,127})); + -50},{-82,-50}}, color={0,0,127})); connect(resPro.triEnd, conProMod.triEnd) annotation (Line(points={{-2,32},{-36, 32},{-36,38}}, color={255,0,255})); connect(resPro.triSta, conProMod.triSta) annotation (Line(points={{-2,36},{-24, 36},{-24,38}}, color={255,0,255})); connect(resPro.triEnd, samTi.trigger) annotation (Line(points={{-2,32},{-10, - 32},{-10,10},{-70,10},{-70,-38}}, - color={255,0,255})); + 32},{-10,10},{-70,10},{-70,-38}}, color={255,0,255})); connect(resPro.triEnd, samk.trigger) annotation (Line(points={{-2,32},{-10,32}, {-10,10},{-30,10},{-30,-8}},color={255,0,255})); connect(resPro.triEnd, samTd.trigger) annotation (Line(points={{-2,32},{-10, - 32},{-10,-44},{-30,-44},{-30,-58}}, - color={255,0,255})); + 32},{-10,-44},{-30,-44},{-30,-58}}, color={255,0,255})); connect(PIDPar.Td, samTd.u) annotation (Line(points={{-82,43},{-86,43},{-86,-70}, {-42,-70}}, color={0,0,127})); connect(swi.y, y) - annotation (Line(points={{82,-20},{90,-20},{90,0},{120,0}}, - color={0,0,127})); + annotation (Line(points={{82,-20},{90,-20},{90,0},{120,0}}, color={0,0,127})); connect(u_m, PID.u_m) annotation (Line(points={{0,-120},{0,-96},{10,-96},{10, -52}}, color={0,0,127})); connect(rel.trigger, triTun) annotation (Line(points={{24,-2},{24,-82},{60,-82}, From e626a1e5372e4e487b3671d6f34210ef4ec0c796 Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Tue, 18 Jul 2023 12:54:35 -0700 Subject: [PATCH 100/214] cleaning up the documentation and comments --- .../AMIGO/BaseClasses/PIDDerivativeTime.mo | 43 +++++----- .../AMIGO/BaseClasses/PIDIntegralTime.mo | 13 ++- .../AutoTuner/AMIGO/BaseClasses/PIGain.mo | 22 +++--- .../AMIGO/BaseClasses/PIIntegralTime.mo | 34 ++++---- .../AutoTuner/AMIGO/Validation/PI.mo | 8 +- .../AutoTuner/AMIGO/Validation/PID.mo | 11 ++- .../PIDWithAutotuning/FirstOrderAMIGO.mo | 53 +++++++------ .../BaseClasses/Validation/HalfPeriodRatio.mo | 6 +- .../PIDWithAutotuning/Relay/Controller.mo | 79 ++++++++++--------- .../Relay/ResponseProcess.mo | 14 ++-- 10 files changed, 153 insertions(+), 130 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDDerivativeTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDDerivativeTime.mo index 6a7542c518f..804842a3c30 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDDerivativeTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDDerivativeTime.mo @@ -24,40 +24,39 @@ block PIDDerivativeTime "Identify the derivative time of a PID controller" protected Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai1( final k=0.3) - "Block that calculates the product of 0.3 and the input" - annotation (Placement(transformation(extent={{-80,-70},{-60,-50}}))); + "Block that calculates the product of a constant and the input" + annotation (Placement(transformation(extent={{-60,-70},{-40,-50}}))); Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai2( final k=0.5) - "Block that calculates the product of 0.5 and the input" - annotation (Placement(transformation(extent={{-80,30},{-60,50}}))); + "Block that calculates the product of a constant and the input" + annotation (Placement(transformation(extent={{-60,50},{-40,70}}))); Buildings.Controls.OBC.CDL.Continuous.Multiply mul "Block that calculates the product of the two inputs" - annotation (Placement(transformation(extent={{-40,0},{-20,20}}))); + annotation (Placement(transformation(extent={{0,10},{20,30}}))); Buildings.Controls.OBC.CDL.Continuous.Add add "Block that calculates the sum of the two inputs" - annotation (Placement(transformation(extent={{-40,-64},{-20,-44}}))); + annotation (Placement(transformation(extent={{0,-50},{20,-30}}))); Buildings.Controls.OBC.CDL.Continuous.Divide div "Block that calculates input 1 divided by input 2" - annotation (Placement(transformation(extent={{20,-10},{40,10}}))); + annotation (Placement(transformation(extent={{60,-10},{80,10}}))); equation - connect(div.y, Td) annotation (Line(points={{42,0},{120,0}}, color={0,0,127})); - connect(gai1.u, L) annotation (Line(points={{-82,-60},{-96,-60},{-96,-60},{-120, - -60}}, color={0,0,127})); - connect(gai1.y, add.u2) annotation (Line(points={{-58,-60},{-42,-60}}, - color={0,0,127})); - connect(add.u1, T) annotation (Line(points={{-42,-48},{-48,-48},{-48,60},{ - -120,60}}, color={0,0,127})); - connect(gai2.u, T) annotation (Line(points={{-82,40},{-90,40},{-90,60},{-120, + connect(div.y, Td) annotation (Line(points={{82,0},{120,0}}, color={0,0,127})); + connect(gai1.u, L) annotation (Line(points={{-62,-60},{-120,-60}}, + color={0,0,127})); + connect(gai1.y, add.u2) annotation (Line(points={{-38,-60},{-20,-60},{-20,-46}, + {-2,-46}}, color={0,0,127})); + connect(add.u1, T) annotation (Line(points={{-2,-34},{-80,-34},{-80,60},{-120, 60}}, color={0,0,127})); - connect(mul.u2, L) annotation (Line(points={{-42,4},{-90,4},{-90,-60},{-120, - -60}}, color={0,0,127})); - connect(gai2.y, mul.u1) annotation (Line(points={{-58,40},{-52,40},{-52,16},{ - -42,16}}, color={0,0,127})); - connect(mul.y, div.u1) annotation (Line(points={{-18,10},{2,10},{2,6},{18,6}}, + connect(gai2.u, T) annotation (Line(points={{-62,60},{-120,60}}, color={0,0,127})); + connect(mul.u2, L) annotation (Line(points={{-2,14},{-70,14},{-70,-60},{-120,-60}}, + color={0,0,127})); + connect(gai2.y, mul.u1) annotation (Line(points={{-38,60},{-20,60},{-20,26},{-2, + 26}}, color={0,0,127})); + connect(mul.y, div.u1) annotation (Line(points={{22,20},{40,20},{40,6},{58,6}}, color={0,0,127})); - connect(div.u2, add.y) annotation (Line(points={{18,-6},{12,-6},{12,-54},{-18, - -54}}, color={0,0,127})); + connect(div.u2, add.y) annotation (Line(points={{58,-6},{40,-6},{40,-40},{22,-40}}, + color={0,0,127})); annotation (defaultComponentName = "PIDDerTim", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDIntegralTime.mo index 1124b1945d9..df211dfb4e5 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDIntegralTime.mo @@ -22,25 +22,25 @@ block PIDIntegralTime "Identify the integral time of a PID controller" annotation (Placement(transformation(extent={{100,-20},{140,20}}))); protected Buildings.Controls.OBC.CDL.Continuous.Add add1 - "Block that calculates the sum of the time delay and the product of 0.1 and the input time constant" + "Block that calculates the sum of the two inputs" annotation (Placement(transformation(extent={{-20,-40},{0,-20}}))); Buildings.Controls.OBC.CDL.Continuous.Add add2 - "Block that calculates the sum of the output of gai1 and the product of 0.8 and the input time constant" + "Block that calculates the sum of the two inputs" annotation (Placement(transformation(extent={{-20,10},{0,30}}))); Buildings.Controls.OBC.CDL.Continuous.Divide div "Block that calculates input 1 divided by input 2" annotation (Placement(transformation(extent={{20,-10},{40,10}}))); Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai1( final k=0.4) - "Block that calculates the product of 0.4 and the time delay" + "Block that calculates the product of a constant and the input" annotation (Placement(transformation(extent={{-80,-20},{-60,0}}))); Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai2( final k=0.8) - "Block that calculates the product of 0.8 and the input time constant" + "Block that calculates the product of a constant and the input" annotation (Placement(transformation(extent={{-80,50},{-60,70}}))); Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai3( final k=0.1) - "Block that calculates the product of 0.1 and the input time constant" + "Block that calculates the product of a constant and the input" annotation (Placement(transformation(extent={{-80,10},{-60,30}}))); Buildings.Controls.OBC.CDL.Continuous.Multiply mul "Block that calculates the two inputs" @@ -64,8 +64,7 @@ equation connect(div.y, mul.u1) annotation (Line(points={{42,0},{48,0},{48,6},{58,6}}, color={0,0,127})); connect(mul.u2, L) annotation (Line(points={{58,-6},{50,-6},{50,-60},{-120, - -60}}, - color={0,0,127})); + -60}}, color={0,0,127})); connect(mul.y, Ti) annotation (Line(points={{82,0},{120,0}}, color={0,0,127})); connect(div.u2, add1.y) annotation (Line(points={{18,-6},{10,-6},{10,-30},{2, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIGain.mo index 3e34901762e..0f52b391aeb 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIGain.mo @@ -22,6 +22,7 @@ block PIGain "Identify the control gain of a PI controller" Buildings.Controls.OBC.CDL.Interfaces.RealOutput k "Control gain of a PI controller" annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + protected Buildings.Controls.OBC.CDL.Continuous.Add add1 "Calculate the sum of the time constant and the time delay" @@ -30,13 +31,13 @@ protected "Calculate the sum of the two inputs" annotation (Placement(transformation(extent={{20,20},{40,40}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.Constant const1(final k=0.35) - "Constant value 0.35" + "Constant value" annotation (Placement(transformation(extent={{0,-90},{20,-70}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.Constant const2(final k=0.15) - "Constant value 0.15" + "Constant value" annotation (Placement(transformation(extent={{-80,70},{-60,90}}))); Buildings.Controls.OBC.CDL.Continuous.Divide div1 - "Block that calculates 0.15 divided by the control gain" + "Block that calculates input 1 divided by input 2" annotation (Placement(transformation(extent={{-40,40},{-20,60}}))); Buildings.Controls.OBC.CDL.Continuous.Divide div2 "Block that calculates input 1 divided by input 2" @@ -78,22 +79,20 @@ equation connect(mul1.u2, add1.y) annotation (Line(points={{-22,-36},{-32,-36},{-32, -30},{-38,-30}}, color={0,0,127})); connect(div2.u2, mul1.y) annotation (Line(points={{18,-56},{10,-56},{10,-30}, - {2,-30}}, - color={0,0,127})); + {2,-30}}, color={0,0,127})); connect(div2.u1, mul4.y) annotation (Line(points={{18,-44},{-20,-44},{-20,-70}, {-38,-70}}, color={0,0,127})); connect(mul2.u1, kp) annotation (Line(points={{-62,26},{-80,26},{-80,60},{ - -120,60}}, color={0,0,127})); + -120,60}}, color={0,0,127})); connect(mul2.u2, L) annotation (Line(points={{-62,14},{-80,14},{-80,-76},{ - -120,-76}}, color={0,0,127})); + -120,-76}}, color={0,0,127})); connect(div3.u2, mul2.y) annotation (Line(points={{-22,4},{-30,4},{-30,20},{ -38,20}}, color={0,0,127})); connect(div3.u1, T) annotation (Line(points={{-22,16},{-34,16},{-34,0},{-120, - 0}}, - color={0,0,127})); + 0}}, color={0,0,127})); connect(mul3.u1, div3.y) annotation (Line(points={{18,6},{10,6},{10,10},{2,10}}, color={0,0,127})); connect(const2.y, div1.u1) annotation (Line(points={{-58,80},{-50,80},{-50,56}, - {-42,56}}, color={0,0,127})); + {-42,56}}, color={0,0,127})); connect(add2.u2, mul3.y) annotation (Line(points={{18,24},{10,24},{10,16},{48, 16},{48,0},{42,0}}, color={0,0,127})); connect(add2.y, k) annotation (Line(points={{42,30},{60,30},{60,0},{120,0}}, @@ -104,7 +103,8 @@ equation {58,-38}}, color={0,0,127})); connect(sub.y, mul3.u2) annotation (Line(points={{82,-44},{90,-44},{90,-22},{ 10,-22},{10,-6},{18,-6}}, color={0,0,127})); - annotation (defaultComponentName = "PIGai", + +annotation (defaultComponentName = "PIGai", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-100,-100},{100,100}}, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIIntegralTime.mo index a7e491e954f..4e8aa714f00 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIIntegralTime.mo @@ -34,17 +34,21 @@ protected Buildings.Controls.OBC.CDL.Continuous.Divide div "Block that calculates the input 1 divided by input 2" annotation (Placement(transformation(extent={{0,-4},{20,16}}))); - Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai1(final k=12) - "Block that mutiples the time delay by 12" + Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai1( + final k=12) + "Block that calculates products of a constant and the input" annotation (Placement(transformation(extent={{-40,-70},{-20,-50}}))); - Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai2(final k=7) - "Block that mutiples the time delay by 7" + Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai2( + final k=7) + "Block that calculates products of a constant and the input" annotation (Placement(transformation(extent={{-80,-90},{-60,-70}}))); - Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai3(final k=13) - "Block that mutiples the output of mul3 by 13" + Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai3( + final k=13) + "Block that calculates products of a constant and the input" annotation (Placement(transformation(extent={{-20,70},{-40,90}}))); - Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai4(final k=0.35) - "Block that mutiples the time delay by 0.35" + Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai4( + final k=0.35) + "Block that calculates products of a constant and the input" annotation (Placement(transformation(extent={{-80,-30},{-60,-10}}))); Buildings.Controls.OBC.CDL.Continuous.Multiply mul1 "Block that calculates the product of the two inputs" @@ -61,9 +65,9 @@ protected equation connect(add2.y, Ti) - annotation (Line(points={{82,0},{120,0}}, color={0,0,127})); + annotation (Line(points={{82,0},{120,0}}, color={0,0,127})); connect(gai4.u, L) annotation (Line(points={{-82,-20},{-92,-20},{-92,-60},{-120, - -60}}, color={0,0,127})); + -60}}, color={0,0,127})); connect(mul3.u1, T) annotation (Line(points={{-62,66},{-90,66},{-90,60},{-120, 60}}, color={0,0,127})); connect(mul3.u2, T) annotation (Line(points={{-62,54},{-90,54},{-90,60},{-120, @@ -79,27 +83,27 @@ equation connect(gai2.y, mul2.u2) annotation (Line(points={{-58,-80},{-6,-80},{-6,-56}, {-2,-56}}, color={0,0,127})); connect(mul2.u1, L) annotation (Line(points={{-2,-44},{-92,-44},{-92,-60},{-120, - -60}}, color={0,0,127})); + -60}}, color={0,0,127})); connect(gai3.u, mul3.y) annotation (Line(points={{-18,80},{-12,80},{-12,60},{ -38,60}}, color={0,0,127})); connect(add1.u1, mul3.y) annotation (Line(points={{-2,60},{-38,60}}, - color={0,0,127})); + color={0,0,127})); connect(mul1.y, add1.u2) annotation (Line(points={{-18,30},{-10,30},{-10,48}, {-2,48}}, color={0,0,127})); connect(mul2.y, add3.u2) annotation (Line(points={{22,-50},{58,-50}}, - color={0,0,127})); + color={0,0,127})); connect(add3.u1, add1.y) annotation (Line(points={{58,-38},{32,-38},{32,54},{ 22,54}}, color={0,0,127})); connect(add3.y, div.u2) annotation (Line(points={{82,-44},{90,-44},{90,-24},{ -8,-24},{-8,0},{-2,0}},color={0,0,127})); connect(div.y, add2.u1) - annotation (Line(points={{22,6},{58,6}}, color={0,0,127})); + annotation (Line(points={{22,6},{58,6}}, color={0,0,127})); connect(add2.u2, gai4.y) annotation (Line(points={{58,-6},{48,-6},{48,-20},{ -58,-20}}, color={0,0,127})); connect(mul4.u2, L) annotation (Line(points={{-82,6},{-92,6},{-92,-60},{-120, -60}}, color={0,0,127})); connect(gai3.y, mul4.u1) annotation (Line(points={{-42,80},{-94,80},{-94,18}, - {-82,18}}, color={0,0,127})); + {-82,18}}, color={0,0,127})); connect(mul4.y, div.u1) annotation (Line(points={{-58,12},{-2,12}}, color={0,0,127})); annotation (defaultComponentName = "PIIntTim", diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo index 3dd18145f93..d35de7acd8b 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo @@ -66,7 +66,13 @@ Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PI.

                          The input kp varies from 1 to 2, input T varies from 0.5 to 1, -and input L varies from 0.3 to 0.6. +and input L varies from 0.3 to 0.6. The control gain and +the time constant of the integral term are calculated based on the equations shown in + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.AutoTuner.BaseClasses.AMIGO.PIGain +and + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.AutoTuner.AMIGO.BaseClasses.PIIntegralTime.

                          ")); end PI; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo index dd1f2ee76f8..18814ae9e15 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo @@ -66,7 +66,16 @@ Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PID.

                          The input kp varies from 1 to 2, input T varies from 0.5 to 1, -and input L varies from 0.3 to 0.6. +and input L varies from 0.3 to 0.6. The control gain, +time constant of the integral term and time constant of the derivative term are calculated +based on the equations shown in + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.AutoTuner.BaseClasses.AMIGO.PIDGain, + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.AutoTuner.AMIGO.BaseClasses.PIDIntegralTime, +and + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.AutoTuner.AMIGO.BaseClasses.PIDDerivativeTime.

                          ")); end PID; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index ff825ea7da5..21a8605e11f 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -31,30 +31,7 @@ block FirstOrderAMIGO parameter Real y_reset=xi_start "Value to which the controller output is reset if the boolean trigger has a rising edge" annotation (Dialog(enable=controllerType == CDL.Types.SimpleController.PI or controllerType == CDL.Types.SimpleController.PID,group="Integrator reset")); - final parameter Real k_start( - min=100*Buildings.Controls.OBC.CDL.Constants.eps)=1 - "Start value of the gain of controller" - annotation (Dialog(group="Control gains")); - final parameter Real Ti_start( - final quantity="Time", - final unit="s", - min=100*Buildings.Controls.OBC.CDL.Constants.eps)=0.5 - "Start value of the time constant of integrator block" - annotation (Dialog(group="Control gains",enable=controllerType == CDL.Types.SimpleController.PI or controllerType == CDL.Types.SimpleController.PID)); - final parameter Real Td_start( - final quantity="Time", - final unit="s", - min=100*Buildings.Controls.OBC.CDL.Constants.eps)=0.1 - "Start value of the time constant of derivative block" - annotation (Dialog(group="Control gains",enable=controllerType == CDL.Types.SimpleController.PD or controllerType == CDL.Types.SimpleController.PID)); - final parameter Real yHig(min=1E-6) = 1 - "Higher value for the relay output"; - final parameter Real yLow(min=1E-6) = 0.1 - "Lower value for the relay output"; - final parameter Real deaBan(min=1E-6) = 0.1 - "Deadband for holding the output value"; - final parameter Real yRef(min=1E-6) = 0.8 - "Reference output for the tuning process"; + Buildings.Controls.OBC.CDL.Interfaces.RealInput u_s "Connector of setpoint input signal" annotation (Placement(transformation(extent={{-140,-20},{-100,20}}),iconTransformation(extent={{-140,-20},{-100,20}}))); @@ -126,9 +103,35 @@ block FirstOrderAMIGO Buildings.Controls.OBC.CDL.Logical.Or or1 "Switch the block output to the output from the PID controller when the autotuning is disabled or is completed " annotation (Placement(transformation(extent={{60,-70},{80,-50}}))); - Buildings.Controls.OBC.CDL.Logical.Not not1 "Becomes true when the autotuning is disabled" + Buildings.Controls.OBC.CDL.Logical.Not not1 + "Becomes true when the autotuning is disabled" annotation (Placement(transformation(extent={{30,-78},{50,-58}}))); + protected + final parameter Real k_start( + min=100*Buildings.Controls.OBC.CDL.Constants.eps)=1 + "Start value of the gain of controller" + annotation (Dialog(group="Control gains")); + final parameter Real Ti_start( + final quantity="Time", + final unit="s", + min=100*Buildings.Controls.OBC.CDL.Constants.eps)=0.5 + "Start value of the time constant of integrator block" + annotation (Dialog(group="Control gains",enable=controllerType == CDL.Types.SimpleController.PI or controllerType == CDL.Types.SimpleController.PID)); + final parameter Real Td_start( + final quantity="Time", + final unit="s", + min=100*Buildings.Controls.OBC.CDL.Constants.eps)=0.1 + "Start value of the time constant of derivative block" + annotation (Dialog(group="Control gains",enable=controllerType == CDL.Types.SimpleController.PD or controllerType == CDL.Types.SimpleController.PID)); + final parameter Real yHig(min=1E-6) = 1 + "Higher value for the relay output"; + final parameter Real yLow(min=1E-6) = 0.1 + "Lower value for the relay output"; + final parameter Real deaBan(min=1E-6) = 0.1 + "Deadband for holding the output value"; + final parameter Real yRef(min=1E-6) = 0.8 + "Reference output for the tuning process"; final parameter Boolean with_D=controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PID or controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PD "Boolean flag to enable derivative action" annotation (Evaluate=true,HideResult=true); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/HalfPeriodRatio.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/HalfPeriodRatio.mo index dc78039ffb5..ff661764c45 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/HalfPeriodRatio.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/HalfPeriodRatio.mo @@ -3,7 +3,7 @@ model HalfPeriodRatio "Test model for calculating the half period ratio" Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.HalfPeriodRatio halPerRat "Calculate the half period ratio" - annotation (Placement(transformation(extent={{22,-10},{42,10}}))); + annotation (Placement(transformation(extent={{20,-10},{40,10}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.Pulse tOnSig1( amplitude=-0.1, width=0.2, @@ -31,13 +31,13 @@ model HalfPeriodRatio "Test model for calculating the half period ratio" annotation (Placement(transformation(extent={{-80,-40},{-60,-20}}))); equation connect(tOff.y, halPerRat.tOff) annotation (Line(points={{-58,-30},{0,-30},{0, - -6},{20,-6}}, color={0,0,127})); + -6},{18,-6}}, color={0,0,127})); connect(tOnSig2.y, tOn.u1) annotation (Line(points={{-58,70},{-40,70},{-40,56}, {-36,56}}, color={0,0,127})); connect(tOnSig1.y, tOn.u2) annotation (Line(points={{-58,30},{-40,30},{-40,44}, {-36,44}}, color={0,0,127})); connect(tOn.y, halPerRat.tOn) - annotation (Line(points={{-12,50},{0,50},{0,6},{20,6}}, color={0,0,127})); + annotation (Line(points={{-12,50},{0,50},{0,6},{18,6}}, color={0,0,127})); annotation ( experiment( StopTime=1.0, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo index ddbc0af5e8d..cdeafd30ac8 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo @@ -14,10 +14,11 @@ block Controller Buildings.Controls.OBC.CDL.Interfaces.RealInput u_m "Measurement input signal" annotation (Placement(transformation(origin={0,-120},extent={{20,-20},{-20,20}},rotation=270), - iconTransformation(extent={{20,-20},{-20,20}},rotation=270,origin={0,-120}))); + iconTransformation(extent={{20,-20},{-20,20}},rotation=270,origin={0,-120}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanInput trigger "Resets the controller output when trigger becomes true" - annotation (Placement(transformation(extent={{-20,-20},{20,20}},rotation=90,origin={-80,-120}), iconTransformation(extent={{-20,-20},{20,20}},rotation=90,origin={-60,-120}))); + annotation (Placement(transformation(extent={{-20,-20},{20,20}},rotation=90,origin={-80,-120}), + iconTransformation(extent={{-20,-20},{20,20}},rotation=90,origin={-60,-120}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput y "Control output" annotation (Placement(transformation(extent={{100,40},{140,80}}))); @@ -30,28 +31,28 @@ block Controller iconTransformation(extent={{100,-20},{140,20}}))); protected Buildings.Controls.OBC.CDL.Logical.OnOffController greMeaSet( - final bandwidth=deaBan*2, final pre_y_start=true) + final bandwidth=deaBan*2, + final pre_y_start=true) "Check if the measured value is larger than the reference, by default the relay control is on" - annotation (Placement(transformation(extent={{-20,-10},{0,10}}))); + annotation (Placement(transformation(extent={{0,-10},{20,10}}))); Buildings.Controls.OBC.CDL.Continuous.Switch swi "Switch between a higher value and a lower value" annotation (Placement(transformation(extent={{60,-10},{80,10}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.Constant higVal( final k=yHig) "Higher value for the output" - annotation (Placement(transformation(extent={{-20,50},{0,70}}))); + annotation (Placement(transformation(extent={{0,50},{20,70}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.Constant lowVal( final k=-yLow) "Lower value for the output" - annotation (Placement(transformation(extent={{-20,-50},{0,-30}}))); + annotation (Placement(transformation(extent={{0,-50},{20,-30}}))); Buildings.Controls.OBC.CDL.Continuous.Subtract conErr "Control error (set point - measurement)" annotation (Placement(transformation(extent={{-60,10},{-40,30}}))); Buildings.Controls.OBC.CDL.Continuous.Switch swi1 "Switch between a higher value and a lower value" - annotation (Placement(transformation(extent={{10,-10},{-10,10}}, - rotation=-90, - origin={-48,-48}))); + annotation (Placement(transformation(extent={{-10,-10},{10,10}}, + origin={-50,-50}))); initial equation assert( yHig-yLow>1E-6, @@ -62,29 +63,29 @@ equation connect(swi.y, y) annotation (Line(points={{82,0},{88,0},{88,60},{120,60}}, color={0,0,127})); connect(greMeaSet.reference, u_s) - annotation (Line(points={{-22,6},{-40,6},{-40,0},{-120,0}}, color={0,0,127})); + annotation (Line(points={{-2,6},{-40,6},{-40,0},{-120,0}}, color={0,0,127})); connect(higVal.y, swi.u1) - annotation (Line(points={{2,60},{20,60},{20,8},{58,8}}, color={0,0,127})); - connect(lowVal.y, swi.u3) annotation (Line(points={{2,-40},{20,-40},{20,-8},{58, - -8}}, color={0,0,127})); - connect(yOn, swi.u2) annotation (Line(points={{120,-60},{40,-60},{40,0},{58,0}}, + annotation (Line(points={{22,60},{40,60},{40,8},{58,8}},color={0,0,127})); + connect(lowVal.y, swi.u3) annotation (Line(points={{22,-40},{40,-40},{40,-8},{ + 58,-8}}, color={0,0,127})); + connect(yOn, swi.u2) annotation (Line(points={{120,-60},{50,-60},{50,0},{58,0}}, color={255,0,255})); connect(conErr.y, yErr) annotation (Line(points={{-38,20},{120,20}}, - color={0,0,127})); + color={0,0,127})); connect(greMeaSet.y, swi.u2) - annotation (Line(points={{2,0},{58,0}}, color={255,0,255})); - connect(conErr.u2, u_s) annotation (Line(points={{-62,14},{-80,14},{-80,0},{ - -120,0}}, color={0,0,127})); - connect(swi1.u2, trigger) annotation (Line(points={{-48,-60},{-48,-80},{-80, - -80},{-80,-120}}, color={255,0,255})); - connect(swi1.y, greMeaSet.u) - annotation (Line(points={{-48,-36},{-48,-6},{-22,-6}}, color={0,0,127})); - connect(swi1.u1, u_m) annotation (Line(points={{-40,-60},{-40,-80},{0,-80},{0, - -120}}, color={0,0,127})); - connect(swi1.u3, u_s) annotation (Line(points={{-56,-60},{-56,-70},{-80,-70}, - {-80,0},{-120,0}}, color={0,0,127})); - connect(conErr.u1, greMeaSet.u) annotation (Line(points={{-62,26},{-94,26},{ - -94,-20},{-48,-20},{-48,-6},{-22,-6}}, color={0,0,127})); + annotation (Line(points={{22,0},{58,0}},color={255,0,255})); + connect(conErr.u2, u_s) annotation (Line(points={{-62,14},{-90,14},{-90,0},{-120, + 0}}, color={0,0,127})); + connect(swi1.u3, u_s) annotation (Line(points={{-62,-58},{-90,-58},{-90,0},{-120, + 0}}, color={0,0,127})); + connect(swi1.y, greMeaSet.u) annotation (Line(points={{-38,-50},{-20,-50},{-20, + -6},{-2,-6}}, color={0,0,127})); + connect(swi1.y, conErr.u1) annotation (Line(points={{-38,-50},{-20,-50},{-20,-6}, + {-70,-6},{-70,26},{-62,26}}, color={0,0,127})); + connect(trigger, swi1.u2) annotation (Line(points={{-80,-120},{-80,-50},{-62,-50}}, + color={255,0,255})); + connect(u_m, swi1.u1) annotation (Line(points={{0,-120},{0,-80},{-70,-80},{-70, + -42},{-62,-42}}, color={0,0,127})); annotation (defaultComponentName = "relCon", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( @@ -119,35 +120,37 @@ equation fillPattern=FillPattern.Solid, fillColor={175,175,175}, textString="Relay"), - Line(points={{-70,24},{-34,24},{-34,58},{38,58},{38,24},{66,24}}, color= - {28,108,200})}), Diagram( + Line(points={{-70,24},{-34,24},{-34,58},{38,58},{38,24},{66,24}}, color + ={28,108,200})}), Diagram( coordinateSystem(preserveAspectRatio=false)), Documentation(info="

                          This block generates a real control output y, a -boolean control switch output yOn, and the control error +boolean control switch output yOn, and the control error yErr. They are calculated as below:

                          • -yErr = us(t) - um(t), +yErr = u_s - u_m,
                          • -if yErr < - δ and trigger is true, then y(t) = yhig, yOn(t) = true, +if yErr < -deaBan and trigger is true, +then y = yHig, yOn = true,
                          • -if yErr > δ and trigger is true, then y(t) = -ylow, yOn(t) = false, +if yErr > deaBan and trigger is true, +then y = -yLow, yOn = false,
                          • -else, y(t) and yOn(t) are kept unchanged, +else, y and yOn are kept unchanged,
                          -

                          where δ is a dead band, yhig -and ylow +

                          where deaBan is a dead band, yHig +and yLow are the higher value and the lower value of the output y, respectively.

                          -Note that this block generates an asymmetric output, meaning yhig ≠ ylow. +Note that this block generates an asymmetric output, meaning yHig ≠ yLow.

                          References

                          Josefin Berner (2017) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo index 89b45f21abe..55ece93f1fa 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo @@ -1,12 +1,12 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay; block ResponseProcess - "Calculate the lengths of the On period and the Off period, the half period ratio, as well as the times when the tuning starts and ends" + "Calculate the lengths of the on and off period, the half period ratio, and the times when the tuning starts and ends" parameter Real yHig(min=1E-6) = 1 "Higher value for the output"; parameter Real yLow(min=1E-6) = 0.5 "Lower value for the output"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput on - "Relay switch signal" + "Relay switch. True: tuning on perid, False: tuning off period" annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput tim( @@ -19,22 +19,22 @@ block ResponseProcess final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) - "Length for the On period" + "Length of the on period" annotation (Placement(transformation(extent={{100,60},{140,100}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput tOff( final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) - "length for the Off period" + "Length of the off period" annotation (Placement(transformation(extent={{100,20},{140,60}}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput triSta - "A boolean signal, true if the tuning starts" + "True: the tuning starts" annotation (Placement(transformation(extent={{100,-60},{140,-20}}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput triEnd - "A boolean signal, true if the tuning ends" + "True: the tuning ends" annotation (Placement(transformation(extent={{100,-100},{140,-60}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput tau - "A real signal of the normalized time delay" + "Normalized time delay" annotation (Placement(transformation(extent={{100,-10},{140,30}}), iconTransformation(extent={{100,-20},{140,20}}))); protected From 896a65a24262a48286d4bb3e5252c2fb8e0f62a2 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Sun, 23 Jul 2023 17:44:10 -0400 Subject: [PATCH 101/214] update model doc --- .../AMIGO/BaseClasses/PIDDerivativeTime.mo | 12 +-- .../AutoTuner/AMIGO/BaseClasses/PIDGain.mo | 9 +- .../AMIGO/BaseClasses/PIDIntegralTime.mo | 7 +- .../AutoTuner/AMIGO/BaseClasses/PIGain.mo | 11 +-- .../AMIGO/BaseClasses/PIIntegralTime.mo | 7 +- .../PIDWithAutotuning/AutoTuner/AMIGO/PID.mo | 5 +- .../AutoTuner/AMIGO/Validation/PI.mo | 5 +- .../AutoTuner/AMIGO/Validation/PID.mo | 5 +- .../AutoTuner/AMIGO/package.mo | 6 +- .../PIDWithAutotuning/FirstOrderAMIGO.mo | 15 ++-- .../Relay/BaseClasses/HalfPeriodRatio.mo | 78 ++++++------------ .../Relay/BaseClasses/NormalizedTimeDelay.mo | 2 +- .../Relay/BaseClasses/OnOffPeriod.mo | 46 ++++++----- .../BaseClasses/Validation/HalfPeriodRatio.mo | 13 ++- .../BaseClasses/Validation/OnOffPeriod.mo | 19 ++--- .../PIDWithAutotuning/Relay/Controller.mo | 12 +-- .../Relay/ResponseProcess.mo | 12 +-- .../Relay/Validation/ResponseProcess.mo | 9 +- .../FirstOrderTimedelayed/BaseClasses/Gain.mo | 8 +- .../BaseClasses/TimeConstantDelay.mo | 2 +- .../ControlProcessModel.mo | 27 +++--- .../Validation/PIDWithFirstOrderAMIGO.mo | 5 +- .../Validation/PIWithFirstOrderAMIGO.mo | 3 +- .../PIDWithAutotuning/Relay/Onoff.png | Bin 0 -> 9672 bytes .../PIDWithAutotuning/Relay/algorithm.png | Bin 0 -> 10516 bytes 25 files changed, 139 insertions(+), 179 deletions(-) create mode 100644 Buildings/Resources/Images/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Onoff.png create mode 100644 Buildings/Resources/Images/Controls/OBC/Utilities/PIDWithAutotuning/Relay/algorithm.png diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDDerivativeTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDDerivativeTime.mo index 804842a3c30..f8c379e5380 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDDerivativeTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDDerivativeTime.mo @@ -45,7 +45,7 @@ equation connect(gai1.u, L) annotation (Line(points={{-62,-60},{-120,-60}}, color={0,0,127})); connect(gai1.y, add.u2) annotation (Line(points={{-38,-60},{-20,-60},{-20,-46}, - {-2,-46}}, color={0,0,127})); + {-2,-46}}, color={0,0,127})); connect(add.u1, T) annotation (Line(points={{-2,-34},{-80,-34},{-80,60},{-120, 60}}, color={0,0,127})); connect(gai2.u, T) annotation (Line(points={{-62,60},{-120,60}}, color={0,0,127})); @@ -76,18 +76,14 @@ First implementation

                        ", info=" -

                        This block calculates the derivative time of a PID controller, based on a reduced-order model, -i.e., a first-order time-delayed model, that approximates the control process.

                        +

                        This block calculates the derivative time of a PID controller.

                        Main equations

                        -

                        -The main equation is -

                        Td = 0.5 L T/(0.3 L + T),

                        -where T is the time constant of the first-order time-delayed model -and L is the time delay of the first-order time-delayed model. +where T is the time constant of the first-order time delayed model +and L is the time delay of the first-order time delayed model.

                        References

                        diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDGain.mo index f2aea05e286..1821ed49967 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDGain.mo @@ -84,16 +84,13 @@ First implementation
                        ", info="

                        This block calculates the control gain of a PID model.

                        Main equations

                        -

                        -The main equation is -

                        k = 1/kp + (0.2 + 0.45 T/L),

                        -where kp is the gain of the first-order time-delayed model, -T is the time constant of the first-order time-delayed model, -and L is the time delay of the first-order time-delayed model. +where kp is the gain of the first-order time delayed model, +T is the time constant of the first-order time delayed model, +and L is the time delay of the first-order time delayed model.

                        References

                        diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDIntegralTime.mo index df211dfb4e5..e732252160b 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDIntegralTime.mo @@ -92,15 +92,12 @@ First implementation
                        ", info="

                        This block calculates the integral time of a PID model.

                        Main equations

                        -

                        -The main equation is -

                        Ti = L (0.4 L + 0.8 T)/(L + 0.1 T),

                        -where T is the time constant of the first-order time-delayed model -and L is the time delay of the first-order time-delayed model. +where T is the time constant of the first-order time delayed model +and L is the time delay of the first-order time delayed model.

                        References

                        diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIGain.mo index 0f52b391aeb..1013e694cea 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIGain.mo @@ -123,18 +123,15 @@ First implementation

                      ", info=" -

                      This block calculates the control gain of a PI model, k

                      +

                      This block calculates the control gain of a PI model

                      Main equations

                      -

                      -The main equation is -

                      k = 0.15/kp + (0.35-LT/(L+T)2)(T/kp/L),

                      -where kp is the gain of the first-order time-delayed model, -T is the time constant of the first-order time-delayed model, and -L is the time delay of the first-order time-delayed model. +where kp is the gain of the first-order time delayed model, +T is the time constant of the first-order time delayed model, and +L is the time delay of the first-order time delayed model.

                      References

                      diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIIntegralTime.mo index 4e8aa714f00..53fafdb4646 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIIntegralTime.mo @@ -127,15 +127,12 @@ First implementation
                      ", info="

                      This block calculates the integral time of a PI model

                      Main equations

                      -

                      -The main equation is -

                      Ti = 0.35 L + 13 L T2/(T2 + 12 L T + 7 L2),

                      -where T is the time constant of the first-order time-delayed model -and L is the time delay of the first-order time-delayed model. +where T is the time constant of the first-order time delayed model +and L is the time delay of the first-order time delayed model.

                      References

                      diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo index fd2bff50891..648711f5a50 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo @@ -48,8 +48,9 @@ protected annotation (Placement(transformation(extent={{-10,-70},{10,-50}}))); equation - connect(derTim.Td, Td) annotation (Line(points={{12,-60},{120,-60}}, - color={0,0,127})); + connect(derTim.Td, Td) + annotation (Line(points={{12,-60},{120,-60}}, + color={0,0,127})); connect(intTim.Ti, Ti) annotation (Line(points={{12,0},{120,0}}, color={0,0,127})); connect(gai.k, k) annotation (Line(points={{12,50},{120,50}}, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo index d35de7acd8b..5fc19ec35a7 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo @@ -66,7 +66,10 @@ Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PI.

                      The input kp varies from 1 to 2, input T varies from 0.5 to 1, -and input L varies from 0.3 to 0.6. The control gain and +and input L varies from 0.3 to 0.6. +

                      +

                      +The control gain and the time constant of the integral term are calculated based on the equations shown in Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.AutoTuner.BaseClasses.AMIGO.PIGain diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo index 18814ae9e15..37a49a9d642 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo @@ -66,7 +66,10 @@ Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PID.

                      The input kp varies from 1 to 2, input T varies from 0.5 to 1, -and input L varies from 0.3 to 0.6. The control gain, +and input L varies from 0.3 to 0.6. +

                      +

                      +The control gain, time constant of the integral term and time constant of the derivative term are calculated based on the equations shown in diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.mo index e1de702c5c8..88411f53e1d 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.mo @@ -1,9 +1,9 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner; package AMIGO "Package with components related to AMIGO tuners" annotation (Documentation(info="

                      -This package contains the blocks to implement AMIGO (approximate M-constrained integral gain optimization) tuners. -Those AMIGO tuners calculates the parameters of PI/PID controllers based on the parameters of reduced order models. +This package contains the blocks to implement an AMIGO (approximate M-constrained integral gain optimization) tuner. +The AMIGO tuner calculates the parameters of PI/PID controllers based on the parameters of reduced order models. Those reduced order models approximate the control process.

                      References

                      diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index 21a8605e11f..6d344f95bdf 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -98,7 +98,7 @@ block FirstOrderAMIGO final yHig=yHig - yRef, final yLow=yRef + yLow, final deaBan=deaBan) - "Calculates the parameters of a first-order time-delayed model" + "Calculates the parameters of a first-order time delayed model" annotation (Placement(transformation(extent={{-20,40},{-40,60}}))); Buildings.Controls.OBC.CDL.Logical.Or or1 "Switch the block output to the output from the PID controller when the autotuning is disabled or is completed " @@ -222,10 +222,10 @@ equation

                      This block implements a rule-based PID tuning method. Specifically, this PID tuning method approximates the control process with a -first-order delay (FOD) model. -It then determines the parameters of this FOD model based on the responses of +first-order time delayed (FOTD) model. +It then determines the parameters of this FOTD model based on the responses of the control process to an asymmetric relay feedback. -After that, taking the parameters of this FOD mode as inputs, this PID tuning +After that, taking the parameters of this FOTD mode as inputs, this PID tuning method calculates the PID parameters with an Approximate M-constrained Integral Gain Optimization (AMIGO) Tuner. This block is built based on @@ -237,13 +237,12 @@ PID controller.

                      Brief guidance

                      To use this block, connect it to the control loop. -It will start the PID tuning process whenever the value of the boolean input signal triTun changes from +This block starts the PID tuning process when the value of the boolean input signal triTun changes from false to true. Before the PID tuning process starts, the control loop is controlled by a PI or PID controller. During the PID tuning process, the control loop is controlled by a relay feedback controller. -The PID tuning process will end automatically based on the algorithm defined -in -Buildings.Controls.OBC.Utilities.PIDWithAutotuning.BaseClasses.Relay.HalfPeriodRatio. +The PID tuning process will end automatically (see details in +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.BaseClasses.Relay.HalfPeriodRatio). Starting from then, the control loop is controlled by a PI or PID controller.

                      diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/HalfPeriodRatio.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/HalfPeriodRatio.mo index 1d65edae4f5..328975f2201 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/HalfPeriodRatio.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/HalfPeriodRatio.mo @@ -5,14 +5,14 @@ block HalfPeriodRatio final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) - "Length for the on period" + "Length for the On period" annotation (Placement(transformation(extent={{-140,60},{-100,100}}), iconTransformation(extent={{-140,40},{-100,80}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput tOff( final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) - "Length for the off period" + "Length for the Off period" annotation (Placement(transformation(extent={{-140,-90},{-100,-50}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput rho @@ -29,10 +29,10 @@ block HalfPeriodRatio iconTransformation(extent={{100,-80},{140,-40}}))); protected Buildings.Controls.OBC.CDL.Continuous.Min tMin - "Minimum value of the length for the on and off period " + "Minimum value of the length for the on and Off period " annotation (Placement(transformation(extent={{-80,30},{-60,50}}))); Buildings.Controls.OBC.CDL.Continuous.Greater gretOntOff - "Check if both the length for the on period and the length for the off period are larger than 0" + "Check if both the length for the On period and the length for theoff period are larger than 0" annotation (Placement(transformation(extent={{-20,50},{0,30}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.Constant minLen( final k=0) @@ -50,38 +50,38 @@ protected "Block that samples the tmin when tmin is larger than 0" annotation (Placement(transformation(extent={{20,30},{40,10}}))); Buildings.Controls.OBC.CDL.Continuous.Greater tInc - "Block that checks if either the length for the on period or the length for the off period increases after they both becomes positive" + "Block that checks if either the length for the On period or the length for theoff period increases after they both becomes positive" annotation (Placement(transformation(extent={{30,-40},{50,-20}}))); Buildings.Controls.OBC.CDL.Continuous.Min mintOntOff - "Block that finds the smaller one between the length for the on period and the length for the off period" + "Block that finds the smaller one between the length for the On period and the length for theoff period" annotation (Placement(transformation(extent={{-20,-80},{0,-60}}))); Buildings.Controls.OBC.CDL.Continuous.Max maxtOntOff - "Block that finds the larger one between the length for the on period and the length for the off period" + "Block that finds the larger one between the length for the On period and the length for theoff period" annotation (Placement(transformation(extent={{-20,70},{0,90}}))); Buildings.Controls.OBC.CDL.Continuous.Divide halPerRat "Block that calculates the half period ratio" annotation (Placement(transformation(extent={{60,70},{80,90}}))); Buildings.Controls.OBC.CDL.Continuous.Add addtOntOff - "Block that calculates the sum of the length for the on period and the length for the off period" + "Block that calculates the sum of the length for the On period and the length for theoff period" annotation (Placement(transformation(extent={{-80,-40},{-60,-20}}))); Buildings.Controls.OBC.CDL.Continuous.Multiply mul - "Block that detects if the the length for the on period or the length for the off period changes after both of them are larger than 0" + "Block that detects if the the length for the On period or the length for theoff period changes after both of them are larger than 0" annotation (Placement(transformation(extent={{-34,-40},{-14,-20}}))); Buildings.Controls.OBC.CDL.Continuous.Greater gretmaxtOntOff - "Block that checks if either the length for the on period or the length for the off period is larger than 0" + "Block that checks if either the length for the On period or the length for theoff period is larger than 0" annotation (Placement(transformation(extent={{-20,10},{0,-10}}))); Buildings.Controls.OBC.CDL.Continuous.Less tDec - "Block that checks if either the length for the on period or the length for the off period decreases after they both becomes positive" + "Block that checks if either the length for the On period or the length for theoff period decreases after they both becomes positive" annotation (Placement(transformation(extent={{30,-90},{50,-70}}))); Buildings.Controls.OBC.CDL.Logical.Or tCha - "Block that checks if the length for the on period or the length for the off period changes" + "Block that checks if the length for the On period or the length for theoff period changes" annotation (Placement(transformation(extent={{70,-40},{90,-20}}))); equation connect(tMin.u1, tOn) annotation (Line(points={{-82,46},{-94,46},{-94,80},{-120, - 80}}, color={0,0,127})); + 80}}, color={0,0,127})); connect(tMin.u2, tOff) annotation (Line(points={{-82,34},{-88,34},{-88,-70},{-120, - -70}}, color={0,0,127})); + -70}}, color={0,0,127})); connect(minLen.y, gretOntOff.u2) annotation (Line(points={{-58,10},{-40,10},{ -40,48},{-22,48}},color={0,0,127})); connect(tOnSam.u, tOn) @@ -121,7 +121,7 @@ equation connect(gretOntOff.u1,tMin. y) annotation (Line(points={{-22,40},{-58,40}}, color={0,0,127})); connect(mul.u1,tMin. y) annotation (Line(points={{-36,-24},{-44,-24},{-44,40}, - {-58,40}}, color={0,0,127})); + {-58,40}}, color={0,0,127})); connect(mul.u2,addtOntOff. y) annotation (Line(points={{-36,-36},{-40,-36},{ -40,-30},{-58,-30}}, color={0,0,127})); connect(mul.y, tInc.u1) @@ -129,7 +129,7 @@ equation connect(tDec.u1, mul.y) annotation (Line(points={{28,-80},{10,-80},{10,-30},{ -12,-30}}, color={0,0,127})); connect(samAddtOntOff.u, mul.y) annotation (Line(points={{18,20},{10,20},{10, - -30},{-12,-30}}, color={0,0,127})); + -30},{-12,-30}}, color={0,0,127})); connect(tOnSam.trigger, tCha.y) annotation (Line(points={{-70,68},{-70,60},{ 94,60},{94,-30},{92,-30}}, color={255,0,255})); connect(triEnd, tCha.y) @@ -166,52 +166,28 @@ First implementation

                      This block calculates the half-period ratio of the output from a relay controller.

                      -

                      Main equations

                      ρ = max(ton,toff)/ min(ton,toff),

                      where ton and toff are the -lengths of the on period and the off period, respectively. -

                      -

                      -An on period is defined as the period when the switch output of the relay controller is +lengths of the On period and the Off period, respectively. +An On period is defined as the period when the relay switch output of the relay controller is true. -Likewise, an off period is defined as the period when the switch output is false. -See details of the switch output in +Likewise, an Off period is defined as the period when the relay switch output is false. +See details of the relay switch output in Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Controller.

                      -

                      -Note that only the first on period and the first off period are considered. -

                      -

                      Algorithm

                      -

                      -The algorithm for calculating ρ is as follows: -

                      -
                      Step 1: detects when the tuning period begins.
                      -

                      -The tuning period is triggered to begin when either ton -or toff is larger than 0. -In this implementation, we detect the beginning time by monitoring the sum of -ton and toff. -

                      - -
                      Step 2: detects when both ton and toff -are larger than 0.
                      -

                      -We then record the value of the minimum value between -(ton+toff)*min(ton,toff) -at the moment when both ton and toff -become positive. -

                      -
                      Step 3: detects when the tuning period ends.

                      +This block also detects when a PID tuning period should start and end. +Specifically, the tuning period is triggered to begin when either ton +or toff becomes positive. The tuning period is triggered to end when either ton -or toff changes after they become positive. -In this implementation, we detect the end time by checking if the value of -(ton+toff)*min(ton,toff) -is different from the output of step 2. +or toff changes after the tuning period starts, as illustrated below: +

                      +

                      +\"image\"

                      References

                      diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/NormalizedTimeDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/NormalizedTimeDelay.mo index 605730f67d2..3c3760fc872 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/NormalizedTimeDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/NormalizedTimeDelay.mo @@ -93,7 +93,7 @@ First implementation
                    ", info="

                    -This block calculates the normalized time delay of the responses from a relay controller. +This block calculates the normalized time delay of the output from a relay controller.

                    Main equations

                    diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/OnOffPeriod.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/OnOffPeriod.mo index 17ed5aabeec..3657091a883 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/OnOffPeriod.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/OnOffPeriod.mo @@ -1,5 +1,5 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses; -block OnOffPeriod "Calculate the lengths of the on period and the off period" +block OnOffPeriod "Calculate the lengths of the On period and the Off period" Buildings.Controls.OBC.CDL.Interfaces.RealInput tim( final quantity="Time", final unit="s") @@ -14,14 +14,14 @@ block OnOffPeriod "Calculate the lengths of the on period and the off period" final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) - "Length for the off period" + "Length for the Off period" annotation (Placement(transformation(extent={{100,-50},{140,-10}}), iconTransformation(extent={{102,-60},{142,-20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput tOn( final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) - "Length for the on period" + "Length for the On period" annotation (Placement(transformation(extent={{100,20},{140,60}}))); protected Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler timOn @@ -34,25 +34,25 @@ protected "Relay switch off" annotation (Placement(transformation(extent={{-80,-80},{-60,-60}}))); Buildings.Controls.OBC.CDL.Continuous.Subtract lenOffCal - "Block that calculates the horizon length for the off period" + "Block that calculates the horizon length for the Off period" annotation (Placement(transformation(extent={{10,-40},{30,-20}}))); Buildings.Controls.OBC.CDL.Continuous.Subtract lenOnCal - "Block that calculates the horizon length for the on period" + "Block that calculates the horizon length for the On period" annotation (Placement(transformation(extent={{10,30},{30,50}}))); Buildings.Controls.OBC.CDL.Continuous.Greater greTimOff - "Trigger the action to record the horizon length for the off period" + "Trigger the action to record the horizon length for the Off period" annotation (Placement(transformation(extent={{50,-80},{70,-60}}))); Buildings.Controls.OBC.CDL.Continuous.Greater greTimOn - "Trigger the action to record the horizon length for the on period" + "Trigger the action to record the horizon length for the On period" annotation (Placement(transformation(extent={{50,60},{70,80}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.Constant minLen(final k=0) "Minimum value for the horizon length" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler timOffRec - "Record the horizon length for the off period" + "Record the horizon length for the Off period" annotation (Placement(transformation(extent={{70,-40},{90,-20}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler timOnRec - "Record the horizon length for the on period" + "Record the horizon length for the On period" annotation (Placement(transformation(extent={{70,50},{90,30}}))); equation @@ -63,23 +63,21 @@ equation connect(timOn.trigger,on) annotation (Line(points={{-40,28},{-40,20},{-90,20}, {-90,-70},{-120,-70}}, color={255,0,255})); connect(lenOffCal.u1, timOn.y) annotation (Line(points={{8,-24},{0,-24},{0,40}, - {-28,40}}, color={0,0,127})); + {-28,40}},color={0,0,127})); connect(lenOnCal.u2, timOn.y) annotation (Line(points={{8,34},{0,34},{0,40},{-28,40}}, color={0,0,127})); connect(lenOnCal.u1, timOff.y) annotation (Line(points={{8,46},{-10,46},{-10, - -40},{-28,-40}}, - color={0,0,127})); + -40},{-28,-40}},color={0,0,127})); connect(lenOffCal.u2, timOff.y) annotation (Line(points={{8,-36},{-10,-36},{ - -10,-40},{-28,-40}}, - color={0,0,127})); + -10,-40},{-28,-40}},color={0,0,127})); connect(minLen.y, greTimOn.u2) annotation (Line(points={{-38,0},{-20,0},{-20,62},{48,62}}, color={0,0,127})); connect(lenOnCal.y, greTimOn.u1) annotation (Line(points={{32,40},{40,40},{40, - 70},{48,70}}, color={0,0,127})); + 70},{48,70}},color={0,0,127})); connect(greTimOff.u2, greTimOn.u2) annotation (Line(points={{48,-78},{-20,-78}, {-20,62},{48,62}}, color={0,0,127})); connect(lenOffCal.y, greTimOff.u1) annotation (Line(points={{32,-30},{40,-30}, - {40,-70},{48,-70}}, color={0,0,127})); + {40,-70},{48,-70}},color={0,0,127})); connect(greTimOff.y, timOffRec.trigger) annotation (Line(points={{72,-70},{80,-70},{80,-42}}, color={255,0,255})); connect(greTimOn.y, timOnRec.trigger) @@ -87,7 +85,7 @@ equation connect(timOn.u, tim) annotation (Line(points={{-52,40},{-120,40}}, color={0,0,127})); connect(timOff.u, tim) annotation (Line(points={{-52,-40},{-80,-40},{-80,40}, - {-120,40}}, color={0,0,127})); + {-120,40}},color={0,0,127})); connect(timOnRec.y, tOn) annotation (Line(points={{92,40},{120,40}}, color={0,0,127})); connect(timOffRec.y, tOff) annotation (Line(points={{92,-30},{120,-30}}, @@ -117,10 +115,16 @@ First implementation
                    ", info="

                    -This block processes a relay switch output signal and calculates the length of -the on period (when the relay switch signal becomes true), -and the length of the off period (when the relay switch signal becomes -false), respectively. +This block processes a relay switch output and calculates the length of +the On period, tOn, and the length of the Off period, tOff, as shown below. +

                    +

                    +\"image\" +

                    +

                    +Note that tOn is sampled when the relay switch output becomes false. +Likewise, tOff is sampled when the relay switch output becomes true. +

                    References

                    Josefin Berner (2017) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/HalfPeriodRatio.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/HalfPeriodRatio.mo index ff661764c45..14c9885e879 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/HalfPeriodRatio.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/HalfPeriodRatio.mo @@ -6,7 +6,7 @@ model HalfPeriodRatio "Test model for calculating the half period ratio" annotation (Placement(transformation(extent={{20,-10},{40,10}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.Pulse tOnSig1( amplitude=-0.1, - width=0.2, + width=0.1, period=1, offset=0.1) "Block that generates signals for forming the signal of the length of On period" @@ -73,20 +73,17 @@ First implementation
                    Validation test for the block Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.HalfPeriodRatio. -This example mimics an output from a relay controller.

                    • -At 0.1s, the output switches from On to Off. -The length of the On period becomes 0.1s. +At 0.1s, the length of the On period becomes 0.1s, triggering the training period to start.
                    • -At 0.7s, the output switches to On. -The length of the Off period becomes 0.5s. +At 0.7s, the length of the Off period becomes 0.5s.
                    • -At 0.9s, the output switches to Off. -The length of the On period becomes 0.2s. +At 0.9s, the length of the On period changes from 0.1s to 0.9s while that of the Off period remains 0.5s. +This triggers the training period to end.
                    ")); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/OnOffPeriod.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/OnOffPeriod.mo index 204c898fcee..f15f733e88c 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/OnOffPeriod.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/OnOffPeriod.mo @@ -1,21 +1,20 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.Validation; -model OnOffPeriod "Test model for calculating the length of the on period and the off period" +model OnOffPeriod "Test model for calculating the length of the On period and the Off period" Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.OnOffPeriod - onOffPer "Calculate the length of the on period and the off period" + onOffPer "Calculate the length of the On period and the Off period" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.ModelTime modTim "Simulation time" annotation (Placement(transformation(extent={{-60,10},{-40,30}}))); - Buildings.Controls.OBC.CDL.Logical.Sources.Pulse enaSig( + Buildings.Controls.OBC.CDL.Logical.Sources.Pulse relSwi( width=0.2, period=0.8, - shift=-0.1) - "Enable signal" + shift=-0.1) "Control switch output" annotation (Placement(transformation(extent={{-60,-20},{-40,0}}))); equation connect(modTim.y, onOffPer.tim) annotation (Line(points={{-38,20},{-20,20},{-20, 6},{-12,6}}, color={0,0,127})); - connect(enaSig.y, onOffPer.on) annotation (Line(points={{-38,-10},{-20,-10},{-20, + connect(relSwi.y, onOffPer.on) annotation (Line(points={{-38,-10},{-20,-10},{-20, -6},{-12,-6}}, color={255,0,255})); annotation ( experiment( @@ -53,16 +52,16 @@ Validation test for the block Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.OnOffPeriod.

                    -This example considers an output from a relay controller, enaSig. +This example considers a relay switch output from a relay controller, relSwi.
                    • -At 0.06s, enaSig switches from On to Off. +At 0.06s, relSwi changes from On to Off.
                    • -At 0.7s, enaSig switches to On. +At 0.7s, relSwi changes into On.
                    • -At 0.86s, enaSig switches to Off. +At 0.86s, relSwi changes into Off.
                    ")); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo index cdeafd30ac8..98afb5c65fe 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo @@ -16,14 +16,14 @@ block Controller annotation (Placement(transformation(origin={0,-120},extent={{20,-20},{-20,20}},rotation=270), iconTransformation(extent={{20,-20},{-20,20}},rotation=270,origin={0,-120}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanInput trigger - "Resets the controller output when trigger becomes true" + "Connector for enabling the relay controller" annotation (Placement(transformation(extent={{-20,-20},{20,20}},rotation=90,origin={-80,-120}), iconTransformation(extent={{-20,-20},{20,20}},rotation=90,origin={-60,-120}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput y "Control output" annotation (Placement(transformation(extent={{100,40},{140,80}}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput yOn - "Control switch output" + "Relay switch output, true when control output switches to the higher value" annotation (Placement(transformation(extent={{100,-80},{140,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput yErr "Control error" @@ -120,13 +120,13 @@ equation fillPattern=FillPattern.Solid, fillColor={175,175,175}, textString="Relay"), - Line(points={{-70,24},{-34,24},{-34,58},{38,58},{38,24},{66,24}}, color - ={28,108,200})}), Diagram( + Line(points={{-70,24},{-34,24},{-34,58},{38,58},{38,24},{66,24}}, color= + {28,108,200})}), Diagram( coordinateSystem(preserveAspectRatio=false)), Documentation(info="

                    This block generates a real control output y, a -boolean control switch output yOn, and the control error +boolean relay switch output yOn, and the control error yErr. They are calculated as below:

                      @@ -142,7 +142,7 @@ if yErr > deaBan and trigger is true, then y = -yLow, yOn = false,
                    • -else, y and yOn are kept unchanged, +else, y and yOn are kept as the initial values,

                    where deaBan is a dead band, yHig diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo index 55ece93f1fa..fc7b8ce9c9a 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo @@ -1,12 +1,12 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay; block ResponseProcess - "Calculate the lengths of the on and off period, the half period ratio, and the times when the tuning starts and ends" + "Calculate the lengths of the on andoff period, the half period ratio, and the times when the tuning starts and ends" parameter Real yHig(min=1E-6) = 1 "Higher value for the output"; parameter Real yLow(min=1E-6) = 0.5 "Lower value for the output"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput on - "Relay switch. True: tuning on perid, False: tuning off period" + "Relay switch. True: tuning on perid, False: tuningoff period" annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput tim( @@ -19,13 +19,13 @@ block ResponseProcess final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) - "Length of the on period" + "Length of the On period" annotation (Placement(transformation(extent={{100,60},{140,100}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput tOff( final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) - "Length of the off period" + "Length of the Off period" annotation (Placement(transformation(extent={{100,20},{140,60}}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput triSta "True: the tuning starts" @@ -108,10 +108,10 @@ This block processes a relay switch output signal and calculates:

                    1. -the length of the On period (when the relay switch signal becomes true); +the length of the On period;
                    2. -the length of the Off period (when the relay switch signal becomes false); +the length of the Off period;
                    3. the normalized time delay of the responses; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mo index 2f0f6a0a40a..9d3aa03438a 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mo @@ -3,21 +3,20 @@ model ResponseProcess "Test model for processing the response of a relay control Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.ResponseProcess resPro( yHig=1, yLow=0.2) - "Calculate the length of the on period and the off period" + "Calculate the length of the On period and the Off period" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.ModelTime modTim "Simulation time" annotation (Placement(transformation(extent={{-60,10},{-40,30}}))); - Buildings.Controls.OBC.CDL.Logical.Sources.Pulse enaSig( + Buildings.Controls.OBC.CDL.Logical.Sources.Pulse relSwi( width=0.2, period=0.8, - shift=-0.1) - "Enable signal" + shift=-0.1) "Control switch output" annotation (Placement(transformation(extent={{-60,-30},{-40,-10}}))); equation connect(modTim.y, resPro.tim) annotation (Line(points={{-38,20},{-20,20},{-20, 6},{-12,6}}, color={0,0,127})); - connect(enaSig.y,resPro.on) annotation (Line(points={{-38,-20},{-20,-20},{-20, + connect(relSwi.y,resPro.on) annotation (Line(points={{-38,-20},{-20,-20},{-20, -6},{-12,-6}}, color={255,0,255})); annotation ( experiment( diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Gain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Gain.mo index 16f8844d83f..fa9df8ea02f 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Gain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Gain.mo @@ -61,15 +61,15 @@ equation connect(refRelOut.y, Iy.y_reset_in) annotation (Line(points={{-38,20},{-20,20}, {-20,32},{-12,32}}, color={0,0,127})); connect(Iy.trigger, triSta) annotation (Line(points={{0,28},{0,-120}}, - color={255,0,255})); + color={255,0,255})); connect(divIyIu.u1, Iy.y) annotation (Line(points={{58,6},{40,6},{40,40},{12, 40}}, color={0,0,127})); connect(Iu.y, addPar.u) annotation (Line(points={{-18,-40},{18,-40}},color={0,0,127})); connect(addPar.y, divIyIu.u2) annotation (Line(points={{42,-40},{50,-40},{50, - -6},{58,-6}}, color={0,0,127})); + -6},{58,-6}}, color={0,0,127})); connect(divIyIu.y, k) annotation (Line(points={{82,0},{120,0}}, color={0,0,127})); connect(gaiOnyHig.u, tOn) annotation (Line(points={{-82,-20},{-120,-20}}, - color={0,0,127})); + color={0,0,127})); connect(gaiOnyHig.y, Iu.u1) annotation (Line(points={{-58,-20},{-50,-20},{-50, -34},{-42,-34}}, color={0,0,127})); connect(gaiOffyLow.u, tOff) @@ -117,7 +117,7 @@ where yhig and ylow are the higher value and the lower value of the relay control output, respectively. yref is the reference value of the relay output. ton and toff are the length of the On -period and the off period, respectively. +period and the Off period, respectively.

                      During an On period, the relay switch signal becomes true. diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/TimeConstantDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/TimeConstantDelay.mo index 98a819f6b5b..83bff171f04 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/TimeConstantDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/TimeConstantDelay.mo @@ -110,7 +110,7 @@ equation connect(div2.u1, add1.y) annotation (Line(points={{58,-64},{54,-64},{54,-48}, {84,-48},{84,-30},{82,-30}},color={0,0,127})); connect(tOn, div3.u1) annotation (Line(points={{-120,76},{-42,76}}, - color={0,0,127})); + color={0,0,127})); connect(div3.u2, log.y) annotation (Line(points={{-42,64},{-46,64},{-46,-90},{ -42,-90}}, color={0,0,127})); connect(div3.y, T) annotation (Line(points={{-18,70},{120,70}}, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo index badbc440dc1..fec5f5bacce 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo @@ -11,14 +11,14 @@ block ControlProcessModel final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) - "Length for the on period" + "Length for the On period" annotation (Placement(transformation(extent={{-140,20},{-100,60}}), iconTransformation(extent={{-140,20},{-100,60}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput tOff( final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) - "Length for the off period" + "Length for the Off period" annotation (Placement(transformation(extent={{-140,-40},{-100,0}}), iconTransformation(extent={{-140,-60},{-100,-20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput tau( @@ -117,42 +117,39 @@ equation connect(gain.tOff, tOff) annotation (Line(points={{-86,12},{-94,12},{-94,-20}, {-120,-20}}, color={0,0,127})); connect(gain.triSta, triSta) annotation (Line(points={{-74,8},{-74,-120}}, - color={255,0,255})); + color={255,0,255})); connect(timConDel.T, samT.u) annotation (Line(points={{22,26},{60,26},{60,20},{68,20}}, - color={0,0,127})); + color={0,0,127})); connect(samT.y, T) annotation (Line(points={{92,20},{120,20}}, - color={0,0,127})); + color={0,0,127})); connect(samT.trigger, triEnd) annotation (Line(points={{80,8},{80,-120}}, - color={255,0,255})); + color={255,0,255})); connect(L, samL.y) annotation (Line(points={{120,-60},{72,-60}}, color={0,0,127})); connect(samL.u, timConDel.L) annotation (Line(points={{48,-60},{44,-60},{44,14}, {22,14}}, color={0,0,127})); connect(samL.trigger, triEnd) annotation (Line(points={{60,-72},{60,-90},{80, - -90},{80,-120}}, - color={255,0,255})); + -90},{80,-120}},color={255,0,255})); connect(samk.y, timConDel.k) annotation (Line(points={{-32,20},{-2,20}}, - color={0,0,127})); + color={0,0,127})); connect(samk.trigger, triEnd) annotation (Line(points={{-44,8},{-44,-90},{80, -90},{80,-120}}, color={255,0,255})); connect(gain.k, samk.u) - annotation (Line(points={{-62,20},{-56,20}}, - color={0,0,127})); + annotacolor={0,0,127})); connect(samk.y, k) annotation (Line(points={{-32,20},{-20,20},{-20,70},{120, 70}}, color={0,0,127})); connect(timConDel.tOn, samtOn.y) annotation (Line(points={{-2,26},{-28,26},{ - -28,60},{-48,60}}, - color={0,0,127})); + -28,60},{-48,60}},color={0,0,127})); connect(samtOn.u, tOn) annotation (Line(points={{-72,60},{-94,60},{-94,40},{-120,40}}, - color={0,0,127})); + color={0,0,127})); connect(samtOn.trigger, triEnd) annotation (Line(points={{-60,48},{-60,-20},{ -44,-20},{-44,-90},{80,-90},{80,-120}}, - color={255,0,255})); + color={255,0,255})); connect(gai.y, addPar.u) annotation (Line(points={{-14,-60},{-10,-60}}, color={0,0,127})); connect(tau, samtau.u) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo index b68858b7d0f..3a8eb4c53de 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo @@ -71,14 +71,13 @@ equation connect(sub2.u1, uniDel2.y) annotation (Line(points={{58,-4},{40,-4},{40,-20}, {32,-20}}, color={0,0,127})); connect(derivative2.y,sub2. u2) annotation (Line(points={{58,-50},{52,-50},{ - 52,-16},{58,-16}}, - color={0,0,127})); + 52,-16},{58,-16}}, color={0,0,127})); connect(sub2.y, PIDWitTun.u_m) annotation (Line(points={{82,-10},{88,-10}, {88,-26},{46,-26},{46,-38},{-10,-38},{-10,-32}}, color={0,0,127})); connect(derivative2.k, derivative1.k) annotation (Line(points={{82,-42},{92,-42}, {92,44},{80,44}}, color={0,0,127})); connect(derivative2.T, T.y) annotation (Line(points={{82,-46},{148,-46},{148, - -10},{158,-10}}, color={0,0,127})); + -10},{158,-10}}, color={0,0,127})); connect(derivative1.u, sub1.u1) annotation (Line(points={{80,36},{88,36},{88,20}, {40,20},{40,86},{58,86}}, color={0,0,127})); connect(derivative2.u, uniDel2.y) annotation (Line(points={{82,-50},{92,-50}, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo index a685834ffc3..59ccc51e097 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo @@ -72,8 +72,7 @@ equation connect(sub2.u1, uniDel2.y) annotation (Line(points={{58,-4},{40,-4},{40,-20}, {32,-20}}, color={0,0,127})); connect(derivative2.y,sub2. u2) annotation (Line(points={{58,-50},{52,-50},{ - 52,-16},{58,-16}}, - color={0,0,127})); + 52,-16},{58,-16}}, color={0,0,127})); connect(sub2.y, PIWitTun.u_m) annotation (Line(points={{82,-10},{88,-10},{88, -26},{46,-26},{46,-38},{-10,-38},{-10,-32}}, color={0,0,127})); connect(derivative2.k, derivative1.k) annotation (Line(points={{82,-42},{92,-42}, diff --git a/Buildings/Resources/Images/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Onoff.png b/Buildings/Resources/Images/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Onoff.png new file mode 100644 index 0000000000000000000000000000000000000000..8df6d9259ae532c5dc442cd898fcbad69cd6adf5 GIT binary patch literal 9672 zcmd5?cT`i|mJdw`9YPUAN`O$L_a-%z2mt}$13apMCcJo!{AepL@;?=AyAa9W^I42n3=- z7{JXyAW|3zMAAt`21quA+d6@NBmrjn+MvpQt`*>c+)WFq1p-xP&>T8b0BuVbjV|c| z^5g&E_1|{+BZQ;d|EC83Tm3%<|Fi-Uxc~ox@qe;RH0#&#$IHLo{FDB_D*Pq+H`V^N z`_JF}0~SbuX##s9o_pKm1z2LEL7*hWjXN4%ManLZ)hLF5!vU^)gy zCRR4~)7(5zejy=IF-aw5H8l-QO&z$d0Rm}aYiI9p+1d4)8_L@U9S{^85*8kLJvur% zEN=MI~hwPoF)1QCnC4s-da5xw)may`%F@S9ed}yZ*tU;gQkti4QZM zKFt#5msVE4d|O-J*!uBvckkfv*HJ?HksW{sj5e?d0D)v$h<_x)S8P85L;i?>Yh4O; z{8oTz7Sy-s(&x(rkay2Y1A~Hg9<6`*==*v-dtNF1-?+s6{P_dIV;9&O z7zlF4#zA#-A9OY_eoZ4qH#(2hg-ZPs3xp=}p%VkMuUt&3K9ouje7(veKPz~z6tPUMx^Fak#f#Lq^(9Ql zVp**X%)+xuo<09|9RB7Vtwgn_S+0xx0>-86<*mXZ@XsYC#Vyn35Rz-2P|jZ0QN6P~ zDj(z@8P;=}1;yJp?8e_2-W;mI-jb3;RBN8LJC^)`M&nh3ioiX6aUz96-;dVF9(J>v z2+?up*JcmtF2f#>m6;UyfeYvrDJEBLW|r$23<)xyrE;K8@2x1_YkAT}BV*v^yduS+ zZz*uvomv@LgFQY}OiGdN+p=$2_IXYD1UkE56nU(f7Wk(Ds;_?1%yGR)Q4 zHD+63Lbb{n&&;sT8`5!OyiuX9i{y7=6Nc2PGQH;fJF(rN)n^2+xCE-Z_q`IG8ug=) z3*+~u6~ZnCbHR|Rg^EE42>MNy%(dbgzdn-NIpdcD@RI8j@2)N>WVEcri-`%-56Zj^-x!Ba(OTRn@xg|r$6K|- ziA}VL)@g22b}D7MecWYMh+nfcj%ldNEmfnZcl@Ab2r&CnsU%?=Ra@~t!l}-=s z<7y7wDNs7c?2k_u*=1}maKDl{bfOi0?B^)>?%Lc@!yNU`bC#^g8G{G|$hUrx@deF` z@(!c+14fQy@9q_|&T6hxPjPC}&q}-VCvA@Oi%@p@zZ;7`Fm!Bno~VQA6_@+HsIj+i zrY#ALd*)9$j6y9t|)nSWd8 z96&Vm%rE#WRM&SAm5#*y+07)Z-#NEZhZSCK*gy;eKJ8{7_E{e39Fx&D{EE9b;^4sLS@l z^f2AMGCAqB!6EVxQo+Le`CQ92PjH_zUUfG4h5JpZk+|Ke;kZ1^0JyLY3n9Q+W%Nq8jOwR!qa9rW^(}VvH$1tzusmB9aJt`!KAvp18W^ z2mi9K{ze9=Gh*eK=fdBjPQQZn@rU?!q|M>PXjQfEkBL_Hv~7^q99;nf>5->~UkO%X z{;8}zzqWS7N}ev;Ki!<#;-^=C@b#^)P`|nXq`5#Tg4ggccYzs5c{MrDw`>lgR&}Oa{;+C&X?7`1+n<#qlfT*RVa`JG^kk~@zb)uGB2)m)` z7rre9m>hA_B(~VmS`!W2)j|T!0#DZfZj5u8khH!+yX|U=b}i{G)0*K76VgALFvEkd zhg2XO)g2qb`1K9gS3CJY^B;l1NHLDFj@97U+SE%w8b;29$4rOtjCW+38dmrSbvDLN zHu`*K(fXljk8PhU!t{KLAE##E4AmYwl$z2a{WU_l9DzlQFI*0`b_q~j5v!F`x}SDb z9s49Vt&XSY>!^lZ^bM}>QM)u$(tZ4kLRSup$cV}wE`F*-C89pmQ*&brX-Yb`YH5A= zZ_=-POU}G8m-sRp_J}eu#XF}{nf+p%W*fPUOb6UPqF-+q89n=wd_`ACm6tggN-iEX zTKt*Mq4%YyzvC=bOgz|*XQ*1l(7;nn=Cg#>7RMFT=6nnuLw{OcOYc~nA!t#04ttb{)rJ zOQn0p`F2bfp8QvpD|!}}4^h(Qbtac|jHx`M&-`@+E>rX4?uhxXrc8yr)BYLTLChZC zZ}(>(%QXei6PaUmFc}4>3rsu)_c0cwli@!9x)1vd%Wc1A5+t=` zVDZEf{oeyh?BMY?(ng!d{=#j1p}Xq0kqJB9yvuRH$1KViI?qJ~3UjKm(l~GMZ8E@HO=m>=deTqm?XVmn!K!D2LEA}5S6_8sj+HNZenuc4n$xPv)i z5ANW&aY>1X=hZeJJZWo`Mv8qIO$6w0gFljtXEbT^6z4o$GQ<2Cf?}X(zcSHM(4K85 zE50PuVwV&8m$HQqorY!&mj+cW)SsRh6qgn)2sFvJ=TlQZ4O)T#oMpXL2^oC0=@|)5 z`U_mNCzA7o^MJ~ELVI$49C45qd!e%?7PlAa2*9xame_~N;}=7NcDbO-mx-_}xao44 z#Jd(ZgntVvlT;bSyUr3+ehavLXOnb&e%^~x)gVrWs7d@X;P_)3Bv24}(c&dwF++Sp>}@~KADKfHpaJ&lKLX57rA zi`@Sl+u^4k7xi++CPh#Vu{_m{1wV5caG%QMwz0 zrYt5ubd0(4i3SJ_5F#Nkg{$;Bc3@b*210#7pod-Lg;A??3szjNb+uT^6CV+pM1DYI zjhBv>$B4N^>e~bF16;#BttmeDwwR+%)5D&i{)fX4?{|If?rX(PKgLwJl1_&Zb2qv$ zBPkR5rmbgEX;vK~7pB280=i=yV^8uKI9HBS#X}QMW~zo z_g56e3Q(^}kxIQ)qS*rx4iFN6Ja~<|nx1sIC3ZlR#5=@u>xgpk>0)anbvBiM$)3!D z$M=~a0FKAAi0N=*JitxQU+*!FlFT>ZCkdLouA*K6mbynD8DnoY<75zht+b}ys^@%$ zA*AWb_4op1Uw|@G)jExuTuk zPnbjDWhoA4qceLit0%^cDJ$;60S_^;bH!i>55M7PgyGwV4~Lx zGznYYLPb#KK{etML{qQPtBiL@y$ zVwLF|WBlR4{6_b`I0PHY=weMxZH51VHp>+8&|L-!uvc?8Zo2y&2|xtYH2V>bHU*#~ zS=4lB9b(narmpDj1v~0FV6BzF=>l4>jNSz;obB(UuJat{WqBcNvQ1JNo~H` zrNKr$fso^ICNb!$$MFxgFnx zZfgxNy^+iEHx?DZkeo}L>HIm>jpF>F!6?^!_lQ*?5WuFH9i>T9?(c2JXG0f+Kj;f- zZ$2Z-!*MgN=yl2VMEf9RTYkhMXEf|o2-ef;A*+lhv{5!^O-Saw^MFI|2CH$SRVA5$ z_ULs5XT&uRXqD2(^|^=}SIXKeksJq_b)x(aMtXq&m8aiJJ|l*|AfpRmjUCL*Z>{BM z_4VUM(Vg9=eK;WSGQ!xxr!< z3QU0j@?}-v<%Jg~)j*~sQ!Ew*4ap=$;85ARS^+|X#m59Gr7e|{!jflZz!pO+AY~9e z9Nctp0)vtX9N^*zOCv^gxsiy#!fZrWWyt1}CzzC2w9o?+rw9C1Csi#6k&ypGqG?Bd z@~;f~b~?=aq*Kj*&R|h-mSG?IV17m7q!G*8KN6H!slF{;R`d_}|JAMc-MNMCpZnl{ zlp#@7YUOWk=V1Xm9^qAw#e?4x@_$z-(FY0n`&d_O5s5yWqoBRM`gbwaqgMX4d{KyB zhdxC{CW-oweq6#OgqR!$%T+YJ#h=Q1ikd^PdgzMgtr+D?ZNIDR3agBvO9{f{)(ls< z^KX{CSfAbMFvg0TzFfM<^rt$TcUKDB#s$Jx-WG}e;o7v@8{s7{0vB1j$njfKkoB1) z<^>FKOD<{k4@7lk1sk`$V7d5qVL*i%i zq*n9pGuX@Yr~bfrl&SMr_`HWSnzSJTiPH)C?KKCV`73BNQZT%|v{p&pB_)NgU6YBR00zv1pJWY#GP3A@VP7XID@gG({=n9Pcw>>B`!vL zX$Ov{cb^bP*keUcqL7wNrcxLe)N=p)AJI(~vvHO*mF`Tk>^hjm$pXkBE>I=frZN~E z_eV5o+Wnzf-N$k{5SYsjrtw=ZG!Wi>$wfzT#uk(b2f(Ii6RnExo#N)!A3de0gFTknyYpH+l5)u3 zo*{&{{4KEU!YkBq;11nFnat$FOm}tQeVeGdn`JV&?GKVa%w9un@xVG8xSA4C%1vC3 ziDfd9G){V>rw-)Gih7!pa``Q=xk-||w&|2@6A>|m*mDFDxc4A%EE|5I{)|w#8{)u3 z;LONq+Rywo8LI63f?sx_;(#CT-Lrt79<&eujYAz%Mi&m8rk~P_Pd>0<);o`w-mfxe zGVl-nQAI!k13?mMfgR#?!jojt@9)t(c!i1g0(SUM<}F8Fm=x2%Gdtu&%Z8zffaQ=n zU~G|6Qwe1>trK2 zO|PnZ?+ga;e#C*oE`RgT{BT- zO-Q8i$dJJK)H0F92fd#k(-Y0U-f$@P*qYu@133A*AqPzA*}}9ky8Bvsv`Xg*kwu6i zh@G?v_W63kGQU;Ea?(1VZMN@+NRA)=yD+>SutTFrw!MWLq!Ywxzstkf%kH-Ic(%*K z4gI4+W%1<=lMC)^Twb2ccg3`=ATH0DGy*04=UbTO_zBm$$L6mS_>*rhI4C%Ms*`M> zG3EDiZyVs9$1#oyXuW(M2dM23o&##n2|IwA|E>bQJo4kJT}qP7eef5)kTh+`zTBRi z!k%toNPxj?XoI5pYW-%6Y%y7zVJ&~iisMUqtrSfsZ`5BQJcEsUM5%G z0*6HQ`$juemNTsCaVVRawkXR$YM$8{9!*zC->lY;&URQ~c;rs&Q5)oiwvS?4{Og_) ztGU&m8yNNxXUQXS+lbJT!mI8}6^Cl2wk~#%$YraLi?VB_R%cUEe8FE7vqKt|ZsF|1 z4Rg7T2#INk`px&R?hp8-sYj?2U-CK}E91K)&R^RhbEf&egl--hpG!YczsHlv zp2!1rc)#=rE_Js-(8XE^f@%lS`4PNUA{W`dO379W`+ai@E+re-B%bT4Fb5pOO8%tOQbLBuG6TFE+QW%J~cFPR3ZKc&UuvgKkHr?QcbGWlupZiD`Y?n5^PYE$ZO z(DiVk?#;Vno^9hv7gLzNh^||Tkp!DX@arP(iL%^N+AyvZ-bp@J!ZY}2X-Z{LA{f^# z!sz)W@n~SfKA{q3;M)5k`MU6+=U}ga1YI1Yb3W|#HRLWQlSjc`dDs~muAgSAY!<6o zg^~5TswE;kmi}-xuCA{Bu!j8&WqgkH_v<);P|F_XK<&45GiXt#L`VH03H_5Sh`$BP zx$VjMC7d&rEmxj3e>S+1F-K_42*)D0e9aHdRi&;LUVRDGtLvvq!L-)Gk$29%g+vD7 z|Ke1`B;GM;TkvQUYu+@hvH);!sp zf(NCwAfPB0ye=bwK6@~A_LsjBWdrg+zC&-|K6sS0kY!o@Bw>t@b&N`+D)-H&IKEGb z0~b z@K|F#GG=C=q$DD3c7>h$Vya2+axn55@en}eh351y?xCiExPym>Zm;W8#afX%8{CG? zR(u#?*FOL3n1IO#`5s~>_m_MxG3(}VFV&o7V~?eQ>y9>MP34@5fjzq$G4jCMYxun} zMBR|nku$PiE{6qPmn0#szj^_4rH?VUA0@9;pl|&gW^3G}y@$ek+itN?P0d|kkwG{Z z@1D!9f9wIh`oK{}1$Tvp$FmgU*qTN+ps!=RHTnklE^3_gGel>mTX+7IifffEWRz_q zXG^fJkcG+&oM2^3U2?I=-wI`Rv)7dkse?>W20!yrdr@=iJl)(vSSoVa&G%!;K7$@Waf4p8=0a~U*Inde5uM6}q44*lv-~JrRJtfaq$4F&G>M+<_Sq7YwXu6!L>`5S=48CoVua_du z2**O{=!;q0O=6fz$W`_bKiY0xz8bfT(hIz74up96a-WCsDX~fTNQ3>Sd1Cve-h{7bc3_dFyI=Q?zvYSx-ia+&OFiL;S2ZmtDF8i+!T& zJHOP}RCI+OGQV**HT^kzRD946|3hFmu~ebOTnamPSH+ z?cjJg*dgfm#sF6*(62`WOIhlU)hB76Dy;T>oZ6Uu z1r`fZy8@9{bW{~eOAjp~m!Z-+kQpXF6A3n1xvcoP+xAjRz#+UM%f9Eo^NSK=3kiq) asGD{O;5+Y|Mc}tDAcU?lyi)se?0*1~DItge literal 0 HcmV?d00001 diff --git a/Buildings/Resources/Images/Controls/OBC/Utilities/PIDWithAutotuning/Relay/algorithm.png b/Buildings/Resources/Images/Controls/OBC/Utilities/PIDWithAutotuning/Relay/algorithm.png new file mode 100644 index 0000000000000000000000000000000000000000..25617c41edd4bfc9f940e9bbcf20543be5e7aa47 GIT binary patch literal 10516 zcmeHtc{r49`>;r8Y%M55TArfEma=3Ip;D-18H|iA%vi$M_cd#qK|&=djNOee)(P1{ z7-sC1b*wd(!Tj!-=lP!R_Z{!^e!u6>?>N5KVP>xTyw3f+uJgQ>`;no(F4sZ9gG@|J zT-UE%y~D)BOa?z%>?|N820hXN{_OL(qpQhO*ex^%KJ0hUxTV3wRFVYQv1SFI$%Z$L zw83B6KluM!v_F7X-J1WE!(aGdu6f?kzstnDpY;HQlj|rS|B2s3Ma3ngq-9l9uUxrhWa8|G z_6rON2?=`?`yBJK09#cL{xvie@s~Sc=aB>ERzl5@}o%F3so|m-lT+z_1Lj-N*K@N)jh(gF( zw9#lDgqfF;k*C>|`v$9x+x!E^J01f^4=UP33Mp=m8fdbgis1bxUjaUe29Vq{&5(iw zJW9wwh7|hCoDk|;+m8*pMdgcr$TaBs@N&t@X`+8@VE+iW%eEtzgv;c_8O5GiI4Y`& zXJo8%t1vgUMJKv)ZSUn0-rhV%q-=EPS5wzGMCK8S+jaRox+jNR zxxefso~yt%z_&gcRiCu~8Jc|*5hfJp_cx$e@s?9#a5gTH*N&b-W13}>q9#QAXy7oRC&TRGk z^A>S}jzdGXIdWxob-G2L-~ZG*n|srPk!S6*{g?xW3s`L=V`}VDy8xR7yT%RFZh6DP zprO?BBO9f zu1=kVhrwKnQVz5_CA=&cRI5Z)hKaDJ-xFqgN)}kP02-)Q+EDC`E=BBp_dV9Br65)*i z8VK_$R8D?HX|&n#G=5ALiJNbKLp^-RnZ2w4n4LWPF8SCe&-j`%9muQW?a-9YL_|id z!ouv`@n_a`LOqX8Eiwi0S!XyoK)aNNGHR3fVn=h9rU_yM+2**k51F$0?@&*K^>p-4#WD$Tsk>R%|#$NqCDKMO#37BVHZH z?Uj>P5QsdZhVJ@|%?qc*C`J9IlE;%ruOG9F>5LmJ;-3#yMAnidWyvOh)$G!cO}t*M z$9W*zZ#@6xjl+9q40D*5K4ehvqTcNX_54aLC8Q9#zOQ>#)e_$z@-@aEk%2>&@(RLZioHJbNzeAFwZj)L3u_|Sw5FS#&s-$e~Ktf#jLbhl5)g=7GXJ; z2ve(g%dc2AxLV4Ncxj9s4{TG-4B6U8b;`S5r8@3<4n?*~uHM61hCKq?ikC$5h)4cX? z@nVz%eo692q-GZ3TElqD)(2*KU?e=-KET;sK!l~O5N{d4OF~O7O`Vx2rGuD9Ku{-- z-O!Yj8q)ySfk5Xif)qbxL5kq#({pokG30&3TrFGirIx9{2ev~~d#CLccBGg^u=Yw+ zN=rFwi6s|;)0mFVZ=%XRuBTX#Le4IGY8gkBi^fmsP`(JG+>W0uC*2YD;gMk%01@k3 zFyx%03UkI6YOoWxigy$HN!sxZk)YfnQ=~$xZ*w;S)octT^(2#FB$LgHE)gTz7SdFh zYvjY|X1&IhPI%|`0aXLiz~`K((=J=&4dxAtB%@Z--*595P2T{GaE|R=>G8Cg7ij!Y z&ZjLvOn2VTgWP~pl`;nm6-#=(u`FqWdztU7Z`oa$+v9g36yoc?Cz7SyZx`SA4Ct6I zn_fVfXbv@M?d5a{rU+8R`G)rnxPZ>vWxm@7v41JR`TW!alzH3(85obQ%Bz@#CU4+G zZZ6BWiiNj?p!i5A>JTi!rZ|dATvsJ#=wUyokvQC1*>40!zS`<#>;(8%8#H3V@$Y^n zX-(`)iT8mhfC0e$-~%cv?nqG(jk^0^j0zA}+rIb-X$TE84V-FeCY96?r(AMB_ZUi= zrsW1o8)bLZl;U1w6_t*nISWxdIiX&*y&B0V*tk`f@UT^VmB_Ae)ZM`Tf|svgVvf%# z8W}}=FZ2dKS705PQP}6r==vK7JPxRXb6`pyr0xXFJT&PcnUX4Yz2f`>I|^Pdh)v55 zhTY~G=J3KvWv4i;;>f>rB_y5eT}NCj$%x`v#MS807UwE)DodQQen^qZZHwYB%(TPT zB`*&=&bYs>y1BUP1cYfXA$HA7Mfr)B+^*U-d|s3e&kEI`emyByy{eI^W6wR^hSPEvniy+(no^kh*@oczMc$eG~V$% zb{XRHt?z`dqE|=d^+M?GH!O~)^kc~U3LyUbcjdEEoW*+;&v>k&)-ZLU?Is&JUV=u# z7YH{7WL%UM=IwneiZ_WP@M1q1S$%h`+!Pf@c4VQV>g_do?p#tmRuMpLs zi%(eYv2g-g^(QJuF&CDs#bJ+91dGuNGm@FS2kuI8G1F`SDqB| z=|oH4hm?`sx765Ad=~3~pTNxfIVS;?u5~ksmXjtA=AG|9*+=Jkmt;;n@naBxxj9J= zx_|w>sH`qTcq`UKfq6=bu5zG>3Nhe}o`}+!UVm8Hz7C1@?JCMJMc z7UV3}{-eUseiJ)nfqmW@^xR-0TOy{^zYL$9PhOr9+QpavaSpHMLmJT*_%8!zrA-ZM zEe<9Q#9VJb6#oV&6MQ_RF^(@-8*E_hWcb=mMD+=E|~xEx;m>7dm^ zOk9)qm35~MefKY^Oi9u$T`l zi;qlU#IYOpYi4QOLxI!EFG*d{q2K_Q;_m6HCep|!*wisJ7lCpbYcdE}DT(mY)rfME zZ?T#DU{(h0IBD5S1;}s3^kSC^V3$rvBc)Ae@D%1g9rW;?5Zzd={9vnBeh=1029HpU zlZN%`rp3Q#kY^-!#2*^V7#^2@pL}P6AF3QB+?1C<){EVzm~c#!#PHnxqb@^?cue@EgW2HI zO?g=;N97ag>T055(Rn!ys1NYrvA4%Wk|<6mqjp!Z9Wh!tF%b_`SigZ(%p;{d;~@|L?jTkE35USMb*h_1OF%y+(EdzdnU zhRR<#oB8a{1Ynd^Aq*AO;oV?}K%X%6T>Q2?ReMw~t85g~{qaEIwj^Lh+mw@Fb)id; z!R-cLOy5|>-=Yg)(vQesbJ=-IJPs8p``N(r*ibT78(G}wvJ9<;kOCcFlf8mz(;i`* zHm?%H$ad*iV7k|Nij_{PtEfe7EdLFQaCrlPbRCTAPaaurLjU-*7SUq(+NBXz{d&l* zOus{FTNy7vSM9`QVSi<4oG%s;pYqhb84ZB`nZ>D`da`-}9&h}-_DG&L%2i4Pf>#B( z7YqBpAucuJ{ zLJg3boVlLndq3_@;VUw;S4Xm^5QDa!M7->$~u zmV`qCFm-~FRMQ?=)#2Wj9lULp)4Z3&=GLxpc;+-xdgdGqtL~&^UDS|S9)^jXp{ED* z3h6})?stJm4Ie%K3?e}Ne%pp}-sF+ber1+W<5&l9qBWvFKXVQPvVPM^)Ma1X8!u6n zryNTd8W%nUeH4tg5|OUkPfvR`21Tgm5k2BoUcYR;jsJc^QUc%dZ&$q;Ci-l}lYxm> zws?PlD)pfJ>&L?j;(t^C{X_k4xrxxN@RglRG7cY%8PGY^$I$HLdov{NMKKUsTmaB~ z8W1&JR>%#@H(k>FJtNDB?7e*S6e?=rb<@y%iX+dyh-J>v-}Ay`2}hags@$mb(<{!k z*TU#N3r&?JnapT=_g4_~yHH0oD*;_Zjn>T}Ja!7tFc8*4MhsV=2J`|3l zvk>O_twqsQMvu2yOZS#ycvTsWn0SY=E)iu|G%STaKsWmg5mI%pCYTlpEq_>cZtOT+ zDP7=*f1^7sts&a{jX-4!t7tX_zA2*f$mSe}s>)9ASF3bH$?wC+dr z$|o=~Tz4DA9aJpz!G+sJv@a@7V#&cTnbO7|uCSE$4O3w$gJ{}U$-NPLi7;_@zId>w zSe84V_@Yvip3In9Hxr_Gfy+*E&n??F!;fAnDKGWtt@z57Ncl#~HeypQq~tgIG4o=c zAUIc@=#m8=q)qBcbQIoqFCW2`^P?bfWUt1;jPx%&ccQ=ZD^~{M&Hqpa@5VBDKxe>3 zv{T=SV?fIT`DP3akP2I?Obb9QuB+cc1V?KKJ$xAtyciud7T2*y`B z6U}QxN-~z^-+Vw9kER44u|95JBK(00cbZD3R~OmTXh3cVmX(kL5XLM7DYN&G(){1! z^0SX-mI+%}$W8Gvuo@KZcK(!Q&5qjM77=Clue-E}R7(Geel3C7wn9q+RIJa@DVDc- zMDm0w;g;X<9-3jxgn46&tVcT+F?}$uJAup!=NlY2aN3z@6Vc!I+H4N*%y4Ol^>g_M zOHQ0MwNKEvGI_l5&CF6^)3<|pqe-7<>TW+wX%~fOrYVf#7iyX>C^h-X(ImG{~d6#n*1@ic2yzm7ZeqIjyQ~N(VYX?2 z`EqZQw}bmoAC862F}j2G@#;|$oHQ(^69vXTu*#Gv7q;mlwFDd4U;@LaR03x@uHS^k zXWW`f5Xu@9O5LC*u?$nmkY|zs3jE%ZI9T4>dcsq-)#9l)otq8^m2K@7aVEfE?-&Qnj)7Gpdw>wpU~nX&2zK(Y&*82`n`Uo z$n{8YH5MN9ob~a*2UF=KPHkx^WF^h89vHPy(A-S{)31hl6_bAT3YIRvuDWfSEss+^)0?12)cT=E#3pt%z8yzj0@Fo!;wJOuxuzir(7+lGN9r9U zDoNLHO@PkR0J+cBT?vEF2%T+>BpYo-k$Vwba32mZZa?=!CaBT@<1(g8*DOgDVimQQ_h{N3}##N z%oB!(&~0lpvIkUAwv0{I$BSV+z8-B*vv2em7RFC#jR~#k@GCNeoY{P=5MBF3o0~q+ zKC`QR>pJE7AF}_rM$0v={dY?5g|xcsTK7EY20T<*)x%IZK`PT|p(5z_L!OXkiSFoTS1+Uh(xt5q3P>wkp89kbZ?9Z%Ibl-1`6yZ@UHpCe zU@;LTp9CJi7`&g95_Pd7AhDS72(Y?p)=H-UBHX$|Lu<}NNX`HxlSD7N4DgZQTOR>o z;`U*$Cn_&o={vepV<}KzeKaMR{7X$W!qs(pdF(S-dauN6M9NE7wdH1iPat>Qvwqk? zLH>Me=jK@BYq98pYF&dz=-vYyvPC7s^@w@{0dOKWH`|a3ENzs2ieQ;$LAO7Wj1CSO zM~D2bQh$>!EWEG{y?Q|bsn8L~<%(1nGRVDCp)BAGRMpag==%sy@b)LVx&kdAkwp2C z-T(cx7^y#l&h80$%32B~4Nox_1Qb3-lW?2LFyf`hT`mb^{0P_rF7^AB>x_e-0tM#8yJF*3Co|85gJGizgv}V@)OoVb()XpikVX&oZ`4aG zip=y4XFab0SCmm zD@}7nNFKR1Dr}Yd6|Hs#VK2YAlqlVXF0q3D1c8@jGC9?t2sAL(b93IeVMepF2cV`Q zYOpIMih)WmSA4FL9}I+7W{3TpGj*y7>5156M^AA+st-WX?Sy+>`DVB5HGa8*eafRa*!g19d3F)aU3qc0!?aS^}gUkEWjv&zTRY5(J zhpkJnyRIra2Ea0lngGH@zB;G}{fso^*>TH%Rye7^-?{)zRhBl_kSpLsfe*^+1lLRLD9Ru? z<1d3F!7dT%#=1f2WvIIE-iC)oW2I{+V9adpk-+RRNZ(&7x6QmnN0=8K&I41RN$-M~80NAkZ!L>EhE`t>i$tlb(-ieIJG*(h)$h}L``5Ed>Ame+2BwD* z=peT}ngqu`d4;G2DU_M1FM*!iTFuPNGD&VMy!8qBbR-^4BKWi$HGgtq>p+CsFKEx(IaJ#kuIiYR zR4;E|T&BS4k3E_$sldHWu;M7Se9KfMmgh@Eb}8+!)e7^EP)^H9KDsCT+?+US)%+9x zDUXmcJup~YbKC%kTWS#BpkTMcDrd*@05)!j(N2m38&zj04c(iy(y_9!drejrp3)QHP J3pMYD{TGl)`#Jys literal 0 HcmV?d00001 From 751f1edf14f7acb1a59e8e0e926199623b7996b6 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Sun, 23 Jul 2023 17:45:59 -0400 Subject: [PATCH 102/214] update the example scripts --- .../Relay/BaseClasses/Validation/OnOffPeriod.mos | 2 +- .../PIDWithAutotuning/Relay/Validation/ResponseProcess.mos | 2 +- ...DWithAutotuning.Relay.BaseClasses.Validation.OnOffPeriod.mos | 2 +- ...ities.PIDWithAutotuning.Relay.Validation.ResponseProcess.mos | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/OnOffPeriod.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/OnOffPeriod.mos index 1cbc2e8b50b..d6316aac2ff 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/OnOffPeriod.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/OnOffPeriod.mos @@ -1,3 +1,3 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.Validation.OnOffPeriod", method="Cvode", tolerance=1e-06, resultFile="OnOffPeriod"); -createPlot(id=1, position={30, 0, 930, 617}, y={"enaSig.y"}, range={0.0, 1.0, -0.2, 1.2000000000000002}, grid=true, subPlot=101, colors={{28,108,200}}); +createPlot(id=1, position={30, 0, 930, 617}, y={"relSwi.y"}, range={0.0, 1.0, -0.2, 1.2000000000000002}, grid=true, subPlot=101, colors={{28,108,200}}); createPlot(id=1, position={30, 0, 930, 617}, y={"onOffPer.tOn", "onOffPer.tOff"}, range={0.0, 1.0, -0.2, 0.8}, grid=true, subPlot=102, colors={{238,46,47}, {28,108,200}}); \ No newline at end of file diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mos index 09f68a3e67a..bb89e852a3c 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mos @@ -1,5 +1,5 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.ResponseProcess", method="Cvode", tolerance=1e-06, resultFile="ResponseProcess"); -createPlot(id=1, position={37, 37, 1082, 571}, y={"enaSig.y"}, range={0.0, 1.0, -1.0, 2.0}, grid=true, subPlot=101, colors={{28,108,200}}); +createPlot(id=1, position={37, 37, 1082, 571}, y={"relSwi.y"}, range={0.0, 1.0, -1.0, 2.0}, grid=true, subPlot=101, colors={{28,108,200}}); createPlot(id=1, position={37, 37, 1082, 571}, y={"resPro.tOn", "resPro.tOff"}, range={0.0, 1.0, -1.0, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); createPlot(id=1, position={37, 37, 1082, 571}, y={"resPro.triEnd", "resPro.triSta"}, range={0.0, 1.0, -1.0, 2.0}, grid=true, subPlot=103, colors={{28,108,200}, {28,108,200}}); createPlot(id=1, position={37, 37, 1082, 571}, y={"resPro.tau"}, range={0.0, 1.0, 0.0, 2.0}, grid=true, subPlot=104, colors={{28,108,200}}); \ No newline at end of file diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.Validation.OnOffPeriod.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.Validation.OnOffPeriod.mos index 9bc71a0449e..0a831ed5ff0 100644 --- a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.Validation.OnOffPeriod.mos +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.Validation.OnOffPeriod.mos @@ -1,6 +1,6 @@ compareVars := { - "enaSig.y", + "relSwi.y", "onOffPer.tOn", "onOffPer.tOff" }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.ResponseProcess.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.ResponseProcess.mos index e3c10cf17d3..15b2f3a4ed3 100644 --- a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.ResponseProcess.mos +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.ResponseProcess.mos @@ -1,6 +1,6 @@ compareVars := { - "enaSig.y", + "relSwi.y", "resPro.tOn", "resPro.tOff", "resPro.triEnd", From 38916f111ffe7aa86a7eb8aca68aa047185c6816 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Sun, 23 Jul 2023 17:46:22 -0400 Subject: [PATCH 103/214] update the reference dataset --- ...otuning_Relay_BaseClasses_Validation_HalfPeriodRatio.txt | 6 +++--- ...hAutotuning_Relay_BaseClasses_Validation_OnOffPeriod.txt | 4 ++-- ...s_PIDWithAutotuning_Relay_Validation_ResponseProcess.txt | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_BaseClasses_Validation_HalfPeriodRatio.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_BaseClasses_Validation_HalfPeriodRatio.txt index da9f642e55e..dc37037cfa3 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_BaseClasses_Validation_HalfPeriodRatio.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_BaseClasses_Validation_HalfPeriodRatio.txt @@ -1,4 +1,4 @@ -last-generated=2023-06-19 +last-generated=2023-07-22 statistics-simulation= { "linear": " ", @@ -6,8 +6,8 @@ statistics-simulation= "numerical Jacobians": "0" } time=[0e+00, 1e+00] -tOn.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000011935628514e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01] +tOn.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000011935628514e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01] tOff.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 2.980181779987214e-06, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01] -halPerRat.triSta=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +halPerRat.triSta=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] halPerRat.triEnd=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.192072717545907e-05, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] halPerRat.rho=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1.000017881090763e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00, 2.5e+00] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_BaseClasses_Validation_OnOffPeriod.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_BaseClasses_Validation_OnOffPeriod.txt index 0b439f748c2..0f211c78dbf 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_BaseClasses_Validation_OnOffPeriod.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_BaseClasses_Validation_OnOffPeriod.txt @@ -1,4 +1,4 @@ -last-generated=2023-06-19 +last-generated=2023-07-22 statistics-simulation= { "linear": " ", @@ -6,6 +6,6 @@ statistics-simulation= "numerical Jacobians": "0" } time=[0e+00, 1e+00] -enaSig.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999993294478573e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5.960363559974428e-06, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +relSwi.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999993294478573e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5.960363559974428e-06, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] onOffPer.tOn=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.023312766277112e-08, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01] onOffPer.tOff=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 3.81463259311995e-06, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_ResponseProcess.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_ResponseProcess.txt index f5267a25af1..1eb4c1cb253 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_ResponseProcess.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_ResponseProcess.txt @@ -1,4 +1,4 @@ -last-generated=2023-06-19 +last-generated=2023-07-23 statistics-simulation= { "linear": " ", @@ -6,7 +6,7 @@ statistics-simulation= "numerical Jacobians": "0" } time=[0e+00, 1e+00] -enaSig.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999993294478573e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5.960363559974428e-06, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +relSwi.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999993294478573e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5.960363559974428e-06, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] resPro.tOn=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.023312766277112e-08, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01] resPro.tOff=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 3.81463259311995e-06, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01] resPro.triEnd=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] From 8f2f408f93115023287c5a172ac4402ee5e63bb3 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Mon, 24 Jul 2023 23:15:30 -0400 Subject: [PATCH 104/214] minor changes to the model doc --- .../AMIGO/BaseClasses/PIDIntegralTime.mo | 2 +- .../AutoTuner/AMIGO/BaseClasses/PIGain.mo | 4 ++-- .../PIDWithAutotuning/AutoTuner/AMIGO/PI.mo | 2 +- .../PIDWithAutotuning/AutoTuner/AMIGO/PID.mo | 2 +- .../PIDWithAutotuning/FirstOrderAMIGO.mo | 16 +++++++++------- .../Relay/BaseClasses/HalfPeriodRatio.mo | 2 +- .../PIDWithAutotuning/Relay/ResponseProcess.mo | 14 +++++++------- .../BaseClasses/TimeConstantDelay.mo | 2 +- .../FirstOrderTimedelayed/ControlProcessModel.mo | 2 +- 9 files changed, 24 insertions(+), 22 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDIntegralTime.mo index e732252160b..5c0469ccd7b 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDIntegralTime.mo @@ -54,7 +54,7 @@ equation connect(gai2.u, T) annotation (Line(points={{-82,60},{-120,60}}, color={0,0,127})); connect(gai1.y, add2.u2) annotation (Line(points={{-58,-10},{-30,-10},{-30,14}, - {-22,14}}, color={0,0,127})); + {-22,14}}, color={0,0,127})); connect(add2.u1, gai2.y) annotation (Line(points={{-22,26},{-30,26},{-30,60}, {-58,60}}, color={0,0,127})); connect(add1.u2, L) annotation (Line(points={{-22,-36},{-90,-36},{-90,-60},{ diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIGain.mo index 1013e694cea..ebcdce7df94 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIGain.mo @@ -65,7 +65,7 @@ equation connect(div1.u2, kp) annotation (Line(points={{-42,44},{-80,44},{-80,60},{ -120,60}}, color={0,0,127})); connect(add2.u1, div1.y) annotation (Line(points={{18,36},{0,36},{0,50},{-18, - 50}}, color={0,0,127})); + 50}}, color={0,0,127})); connect(add1.u1, T) annotation (Line(points={{-62,-24},{-90,-24},{-90,0},{ -120,0}}, color={0,0,127})); connect(add1.u2, L) annotation (Line(points={{-62,-36},{-80,-36},{-80,-76},{ @@ -87,7 +87,7 @@ equation connect(mul2.u2, L) annotation (Line(points={{-62,14},{-80,14},{-80,-76},{ -120,-76}}, color={0,0,127})); connect(div3.u2, mul2.y) annotation (Line(points={{-22,4},{-30,4},{-30,20},{ - -38,20}}, color={0,0,127})); + -38,20}}, color={0,0,127})); connect(div3.u1, T) annotation (Line(points={{-22,16},{-34,16},{-34,0},{-120, 0}}, color={0,0,127})); connect(mul3.u1, div3.y) annotation (Line(points={{18,6},{10,6},{10,10},{2,10}}, color={0,0,127})); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PI.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PI.mo index 7ddad8c0546..e90d5f33e9f 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PI.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PI.mo @@ -90,7 +90,7 @@ equation extent={{-116,-10},{-16,-50}}, fillPattern=FillPattern.Solid, fillColor={175,175,175}, - textString="Ti")}), Diagram(coordinateSystem(preserveAspectRatio=false)), + textString="Ti")}), Diagram(coordinateSystem(preserveAspectRatio=false)), Documentation(revisions="

                      • diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo index 648711f5a50..8918f37119c 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo @@ -119,7 +119,7 @@ equation extent={{-18,-62},{82,-102}}, fillPattern=FillPattern.Solid, fillColor={175,175,175}, - textString="Td")}), Diagram(coordinateSystem(preserveAspectRatio=false)), + textString="Td")}), Diagram(coordinateSystem(preserveAspectRatio=false)), Documentation(revisions="
                        • diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index 6d344f95bdf..e5b4a53d5e7 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -1,6 +1,6 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning; block FirstOrderAMIGO - "An autotuning PID controller with an AMIGO tuner and a first-order time delayed system model" + "An autotuning PID controller with an AMIGO tuner that employs a first-order time delayed system model" parameter Buildings.Controls.OBC.CDL.Types.SimpleController controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PI "Type of controller"; parameter Real r( @@ -183,7 +183,7 @@ equation connect(PIDPar.Ti, samTi.u) annotation (Line(points={{-82,50},{-90,50},{-90,-50}, {-82,-50}}, color={0,0,127})); connect(PIPar.kp, conProMod.k) annotation (Line(points={{-58,86},{-46,86},{ - -46,56},{-42,56}}, color={0,0,127})); + -46,56},{-42,56}}, color={0,0,127})); connect(PIPar.T, conProMod.T) annotation (Line(points={{-58,80},{-50,80},{-50, 50},{-42,50}}, color={0,0,127})); connect(PIPar.L, conProMod.L) annotation (Line(points={{-58,74},{-54,74},{-54, @@ -236,14 +236,16 @@ PID controller.

                          Brief guidance

                          -To use this block, connect it to the control loop. +To use this block, connect it with a control loop. This block starts the PID tuning process when the value of the boolean input signal triTun changes from false to true. -Before the PID tuning process starts, the control loop is controlled by a PI or PID controller. -During the PID tuning process, the control loop is controlled by a relay feedback controller. -The PID tuning process will end automatically (see details in +Before the PID tuning process starts, this block is equivalent to +Buildings.Controls.OBC.CDL.Continuous.PIDWithReset. +During the PID tuning process, this block changes into a relay controller (see +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Controller). +The PID tuning process ends automatically (see details in Buildings.Controls.OBC.Utilities.PIDWithAutotuning.BaseClasses.Relay.HalfPeriodRatio). -Starting from then, the control loop is controlled by a PI or PID controller. +Since then, this block turns back to a PID controller but with tuned PID parameters.

                          Note that the output of this block is limited from 0 to 1. diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/HalfPeriodRatio.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/HalfPeriodRatio.mo index 328975f2201..ad2deaaf0b5 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/HalfPeriodRatio.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/HalfPeriodRatio.mo @@ -105,7 +105,7 @@ equation connect(halPerRat.y, rho) annotation (Line(points={{82,80},{120,80}}, color={0,0,127})); connect(addtOntOff.u2, tOff) annotation (Line(points={{-82,-36},{-88,-36},{-88, - -70},{-120,-70}}, color={0,0,127})); + -70},{-120,-70}}, color={0,0,127})); connect(addtOntOff.u1, tOn) annotation (Line(points={{-82,-24},{-94,-24},{-94, 80},{-120,80}}, color={0,0,127})); connect(gretmaxtOntOff.y, triSta) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo index fc7b8ce9c9a..efd36089ae9 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo @@ -55,21 +55,21 @@ equation connect(onOffPer.tim, tim) annotation (Line(points={{-82,16},{-90,16},{-90,60}, {-120,60}}, color={0,0,127})); connect(onOffPer.tOn, halPerRatio.tOn) annotation (Line(points={{-58,14},{-40, - 14},{-40,16},{-22,16}}, color={0,0,127})); + 14},{-40,16},{-22,16}}, color={0,0,127})); connect(onOffPer.tOff, halPerRatio.tOff) annotation (Line(points={{-57.8,6},{ - -30,6},{-30,4},{-22,4}}, color={0,0,127})); + -30,6},{-30,4},{-22,4}}, color={0,0,127})); connect(halPerRatio.rho, norTimDel.rho) annotation (Line(points={{2,16},{30, - 16},{30,10},{38,10}}, color={0,0,127})); + 16},{30,10},{38,10}}, color={0,0,127})); connect(tOn, halPerRatio.tOn) annotation (Line(points={{120,80},{-40,80},{-40, - 16},{-22,16}}, color={0,0,127})); + 16},{-22,16}}, color={0,0,127})); connect(tOff, halPerRatio.tOff) annotation (Line(points={{120,40},{-30,40},{ - -30,4},{-22,4}}, color={0,0,127})); + -30,4},{-22,4}}, color={0,0,127})); connect(norTimDel.tau, tau) annotation (Line(points={{62,10},{120,10}}, color={0,0,127})); connect(triEnd, halPerRatio.triEnd) annotation (Line(points={{120,-80},{10, - -80},{10,4},{2,4}}, color={255,0,255})); + -80},{10,4},{2,4}}, color={255,0,255})); connect(triSta, halPerRatio.triSta) annotation (Line(points={{120,-40},{20, - -40},{20,10},{2,10}}, color={255,0,255})); + -40},{20,10},{2,10}}, color={255,0,255})); annotation ( defaultComponentName = "resPro", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/TimeConstantDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/TimeConstantDelay.mo index 83bff171f04..2ef0cd3ec72 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/TimeConstantDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/TimeConstantDelay.mo @@ -127,7 +127,7 @@ equation connect(log.u, div2.y) annotation (Line(points={{-18,-90},{86,-90},{86,-70},{ 82,-70}}, color={0,0,127})); connect(absk.y, div1.u2) annotation (Line(points={{-58,0},{-20,0},{-20,-26},{ - -2,-26}}, color={0,0,127})); + -2,-26}}, color={0,0,127})); connect(yHigSig.y, sub1.u1) annotation (Line(points={{-58,40},{-52,40},{-52, -64},{18,-64}}, color={0,0,127})); annotation ( diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo index fec5f5bacce..6dc8a6be0a8 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo @@ -113,7 +113,7 @@ equation 80}}, color={0,0,127})); connect(gain.tOn, tOn) annotation (Line(points={{-86,20},{-94,20},{-94,40},{ - -120,40}}, color={0,0,127})); + -120,40}}, color={0,0,127})); connect(gain.tOff, tOff) annotation (Line(points={{-86,12},{-94,12},{-94,-20}, {-120,-20}}, color={0,0,127})); connect(gain.triSta, triSta) annotation (Line(points={{-74,8},{-74,-120}}, From 4b78fe16aad0b2002f873831a134ef3e741255c3 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Tue, 25 Jul 2023 10:47:45 -0400 Subject: [PATCH 105/214] model doc update --- .../PIDWithAutotuning/FirstOrderAMIGO.mo | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index e5b4a53d5e7..0f4565fdb0c 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -6,10 +6,10 @@ block FirstOrderAMIGO parameter Real r( min=100*CDL.Constants.eps)=1 "Typical range of control error, used for scaling the control error"; - parameter Real yMax=1 + final parameter Real yMax=1 "Upper limit of output" annotation (Dialog(group="Limits")); - parameter Real yMin=0 + final parameter Real yMin=0 "Lower limit of output" annotation (Dialog(group="Limits")); parameter Real Ni( @@ -230,26 +230,28 @@ method calculates the PID parameters with an Approximate M-constrained Integral This block is built based on Buildings.Controls.OBC.Utilities.PIDWithInputGains -and inherits all the parameters of the latter. However, through the parameter +and inherits most of the parameters of the latter. However, through the parameter controllerType, the controller can only be configured as PI or PID controller. +In addition, the output of this block is limited from 0 to 1. +

                          +

                          +Note that the autotuning can be performed only once.

                          Brief guidance

                          To use this block, connect it with a control loop. This block starts the PID tuning process when the value of the boolean input signal triTun changes from false to true. -Before the PID tuning process starts, this block is equivalent to -Buildings.Controls.OBC.CDL.Continuous.PIDWithReset. -During the PID tuning process, this block changes into a relay controller (see +Before the PID tuning process starts, this block is equivalent to +Buildings.Controls.OBC.Utilities.PIDWithInputGains. +During the PID tuning process, the output of the block changes into that of a relay controller (see Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Controller). The PID tuning process ends automatically (see details in Buildings.Controls.OBC.Utilities.PIDWithAutotuning.BaseClasses.Relay.HalfPeriodRatio). Since then, this block turns back to a PID controller but with tuned PID parameters.

                          -

                          -Note that the output of this block is limited from 0 to 1. -

                          +

                          References

                          J. Berner (2017). From b597094015e141a1c62c88ea06e265679b988ac6 Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Fri, 28 Jul 2023 13:51:43 -0700 Subject: [PATCH 106/214] removed BOM --- .../OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.mo | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.mo index 88411f53e1d..6b24c941b22 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.mo @@ -1,4 +1,4 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner; package AMIGO "Package with components related to AMIGO tuners" annotation (Documentation(info="

                          From c8d7087e9556476623c5fd905f79aa9455b6985c Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Fri, 28 Jul 2023 15:32:19 -0700 Subject: [PATCH 107/214] improved documentation --- .../PIDWithAutotuning/AutoTuner/AMIGO/PID.mo | 2 +- .../Relay/BaseClasses/HalfPeriodRatio.mo | 16 +- .../Relay/BaseClasses/OnOffPeriod.mo | 4 +- .../BaseClasses/Validation/HalfPeriodRatio.mo | 9 +- .../Validation/NormalizedTimeDelay.mo | 4 +- .../PIDWithAutotuning/Relay/Controller.mo | 4 +- .../Relay/ResponseProcess.mo | 2 +- .../BaseClasses/TimeConstantDelay.mo | 7 +- .../Validation/TimeConstantDelay.mo | 4 +- .../ControlProcessModel.mo | 47 +- .../Relay/BaseClasses/OnOff.png | Bin 0 -> 12914 bytes .../Relay/BaseClasses/OnOff.svg | 472 ++++++++++++++++++ .../Relay/BaseClasses/algorithm.png | Bin 0 -> 19912 bytes .../Relay/BaseClasses/algorithm.svg | 449 +++++++++++++++++ .../PIDWithAutotuning/Relay/Onoff.png | Bin 9672 -> 0 bytes .../PIDWithAutotuning/Relay/algorithm.png | Bin 10516 -> 0 bytes .../Validation/TimeConstantDelay.mos | 10 +- 17 files changed, 980 insertions(+), 50 deletions(-) create mode 100644 Buildings/Resources/Images/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/OnOff.png create mode 100644 Buildings/Resources/Images/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/OnOff.svg create mode 100644 Buildings/Resources/Images/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/algorithm.png create mode 100644 Buildings/Resources/Images/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/algorithm.svg delete mode 100644 Buildings/Resources/Images/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Onoff.png delete mode 100644 Buildings/Resources/Images/Controls/OBC/Utilities/PIDWithAutotuning/Relay/algorithm.png diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo index 8918f37119c..621c305ffd9 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo @@ -48,7 +48,7 @@ protected annotation (Placement(transformation(extent={{-10,-70},{10,-50}}))); equation - connect(derTim.Td, Td) + connect(derTim.Td, Td) annotation (Line(points={{12,-60},{120,-60}}, color={0,0,127})); connect(intTim.Ti, Ti) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/HalfPeriodRatio.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/HalfPeriodRatio.mo index ad2deaaf0b5..1cd6c315233 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/HalfPeriodRatio.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/HalfPeriodRatio.mo @@ -38,12 +38,12 @@ protected final k=0) "Minimum value for the horizon length" annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); - Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler tOnSam(final y_start= - Buildings.Controls.OBC.CDL.Constants.eps) + Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler tOnSam( + final y_start=Buildings.Controls.OBC.CDL.Constants.eps) "Block that samples tOn when the tuning period ends" annotation (Placement(transformation(extent={{-80,70},{-60,90}}))); - Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler tOffSam(final y_start= - Buildings.Controls.OBC.CDL.Constants.eps) + Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler tOffSam( + final y_start=Buildings.Controls.OBC.CDL.Constants.eps) "Block that samples tOff when the tuning period ends" annotation (Placement(transformation(extent={{-80,-60},{-60,-80}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samAddtOntOff @@ -175,10 +175,10 @@ lengths of the On period and the Off period, respectively. An On period is defined as the period when the relay switch output of the relay controller is true. Likewise, an Off period is defined as the period when the relay switch output is false. -See details of the relay switch output in +See details of the relay switch output in + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Controller.

                          -

                          This block also detects when a PID tuning period should start and end. Specifically, the tuning period is triggered to begin when either ton @@ -186,8 +186,8 @@ or toff becomes positive. The tuning period is triggered to end when either ton or toff changes after the tuning period starts, as illustrated below:

                          -

                          -\"image\" +

                          +\"image\"

                          References

                          diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/OnOffPeriod.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/OnOffPeriod.mo index 3657091a883..ce58c3f0c51 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/OnOffPeriod.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/OnOffPeriod.mo @@ -118,8 +118,8 @@ First implementation
                          This block processes a relay switch output and calculates the length of the On period, tOn, and the length of the Off period, tOff, as shown below.

                          -

                          -\"image\" +

                          +\"image\"

                          Note that tOn is sampled when the relay switch output becomes false. diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/HalfPeriodRatio.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/HalfPeriodRatio.mo index 14c9885e879..d98898a9c54 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/HalfPeriodRatio.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/HalfPeriodRatio.mo @@ -76,13 +76,16 @@ Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.HalfPeriodR

                          • -At 0.1s, the length of the On period becomes 0.1s, triggering the training period to start. +At 0.1s, the length of the On period is sampled and it becomes 0.1s, +triggering the training period to start.
                          • -At 0.7s, the length of the Off period becomes 0.5s. +At 0.7s, the length of the Off period becomes is sampled +and it becomes 0.5s.
                          • -At 0.9s, the length of the On period changes from 0.1s to 0.9s while that of the Off period remains 0.5s. +At 0.9s, the length of the On period changes from 0.1s to 0.9s +while that of the Off period remains 0.5s. This triggers the training period to end.
                          diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/NormalizedTimeDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/NormalizedTimeDelay.mo index aba2d92ab16..ef33d42ca63 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/NormalizedTimeDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/NormalizedTimeDelay.mo @@ -2,7 +2,7 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.Vali model NormalizedTimeDelay "Test model for calculating the normalized time delay" Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.NormalizedTimeDelay norTimDel(gamma=3) "Calculate the normalized time delay" - annotation (Placement(transformation(extent={{-8,-10},{12,10}}))); + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Buildings.Controls.OBC.CDL.Continuous.Sources.Pulse rho( amplitude=1, width=0.7, @@ -12,7 +12,7 @@ model NormalizedTimeDelay "Test model for calculating the normalized time delay" annotation (Placement(transformation(extent={{-50,-10},{-30,10}}))); equation connect(rho.y, norTimDel.rho) - annotation (Line(points={{-28,0},{-10,0}}, color={0,0,127})); + annotation (Line(points={{-28,0},{-12,0}}, color={0,0,127})); annotation ( experiment( StopTime=1.0, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo index 98afb5c65fe..de387db0da7 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo @@ -120,8 +120,8 @@ equation fillPattern=FillPattern.Solid, fillColor={175,175,175}, textString="Relay"), - Line(points={{-70,24},{-34,24},{-34,58},{38,58},{38,24},{66,24}}, color= - {28,108,200})}), Diagram( + Line(points={{-70,24},{-34,24},{-34,58},{38,58},{38,24},{66,24}}, color + ={28,108,200})}), Diagram( coordinateSystem(preserveAspectRatio=false)), Documentation(info="

                          diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo index efd36089ae9..08e85830e74 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo @@ -6,7 +6,7 @@ block ResponseProcess parameter Real yLow(min=1E-6) = 0.5 "Lower value for the output"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput on - "Relay switch. True: tuning on perid, False: tuningoff period" + "Relay switch. True: tuning on perid, False: tuning off period" annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput tim( diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/TimeConstantDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/TimeConstantDelay.mo index 2ef0cd3ec72..339a1456aa6 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/TimeConstantDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/TimeConstantDelay.mo @@ -18,7 +18,7 @@ block TimeConstantDelay "Gain" annotation (Placement(transformation(extent={{-140,-20},{-100,20}}), iconTransformation(extent={{-140,-20},{-100,20}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealInput ratioLT + Buildings.Controls.OBC.CDL.Interfaces.RealInput rat "Ratio between the time constant and the time delay" annotation (Placement(transformation(extent={{-140,-70},{-100,-30}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); @@ -85,7 +85,7 @@ protected equation connect(absk.u, k) annotation (Line(points={{-82,0},{-120,0}}, color={0,0,127})); - connect(ratioLT, exp.u) + connect(rat, exp.u) annotation (Line(points={{-120,-50},{-82,-50}}, color={0,0,127})); connect(relDeaBan.y, div1.u1) annotation (Line(points={{22,40},{28,40},{28,0}, {-4,0},{-4,-14},{-2,-14}}, color={0,0,127})); @@ -116,8 +116,7 @@ equation connect(div3.y, T) annotation (Line(points={{-18,70},{120,70}}, color={0,0,127})); connect(mul2.u2, T) annotation (Line(points={{-2,78},{-10,78},{-10,70},{120, - 70}}, - color={0,0,127})); + 70}}, color={0,0,127})); connect(mul2.u1, exp.u) annotation (Line(points={{-2,90},{-90,90},{-90,-50},{-82, -50}}, color={0,0,127})); connect(mul2.y, L) annotation (Line(points={{22,84},{92,84},{92,-60},{120,-60}}, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/TimeConstantDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/TimeConstantDelay.mo index 6cc7db7289d..41fcc681a3f 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/TimeConstantDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/TimeConstantDelay.mo @@ -27,8 +27,8 @@ equation 6},{-12,6}}, color={0,0,127})); connect(k.y, timConDel.k) annotation (Line(points={{-38,0},{-12,0}}, color={0,0,127})); - connect(ratioLT.y, timConDel.ratioLT) annotation (Line(points={{-38,-40},{-20, - -40},{-20,-6},{-12,-6}}, color={0,0,127})); + connect(ratioLT.y, timConDel.rat) annotation (Line(points={{-38,-40},{-20,-40}, + {-20,-6},{-12,-6}}, color={0,0,127})); annotation ( experiment( StopTime=1.0, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo index 6dc8a6be0a8..871b949f93d 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo @@ -100,7 +100,8 @@ protected final y_start=1) "Block that samples the time constant when the tuning period ends" annotation (Placement(transformation(extent={{70,10},{90,30}}))); - Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samtau(final y_start=0.5) + Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samtau( + final y_start=0.5) "Block that samples the normalized time delay when the tuning period ends" annotation (Placement(transformation(extent={{-70,-70},{-50,-50}}))); Buildings.Controls.OBC.CDL.Continuous.MultiplyByParameter gai( @@ -110,8 +111,7 @@ protected equation connect(gain.u, u) annotation (Line(points={{-86,28},{-88,28},{-88,80},{-120, - 80}}, - color={0,0,127})); + 80}}, color={0,0,127})); connect(gain.tOn, tOn) annotation (Line(points={{-86,20},{-94,20},{-94,40},{ -120,40}}, color={0,0,127})); connect(gain.tOff, tOff) annotation (Line(points={{-86,12},{-94,12},{-94,-20}, @@ -137,19 +137,15 @@ equation color={0,0,127})); connect(samk.trigger, triEnd) annotation (Line(points={{-44,8},{-44,-90},{80, -90},{80,-120}}, color={255,0,255})); - connect(gain.k, samk.u) - annotacolor={0,0,127})); connect(samk.y, k) annotation (Line(points={{-32,20},{-20,20},{-20,70},{120, - 70}}, - color={0,0,127})); + 70}}, color={0,0,127})); connect(timConDel.tOn, samtOn.y) annotation (Line(points={{-2,26},{-28,26},{ -28,60},{-48,60}},color={0,0,127})); connect(samtOn.u, tOn) annotation (Line(points={{-72,60},{-94,60},{-94,40},{-120,40}}, color={0,0,127})); connect(samtOn.trigger, triEnd) annotation (Line(points={{-60,48},{-60,-20},{ - -44,-20},{-44,-90},{80,-90},{80,-120}}, - color={255,0,255})); + -44,-20},{-44,-90},{80,-90},{80,-120}}, color={255,0,255})); connect(gai.y, addPar.u) annotation (Line(points={{-14,-60},{-10,-60}}, color={0,0,127})); connect(tau, samtau.u) @@ -162,9 +158,11 @@ equation -60,-90},{-60,-72}}, color={255,0,255})); connect(addPar.y, div.u2) annotation (Line(points={{14,-60},{20,-60},{20,-40}, {6,-40},{6,-26},{10,-26}}, color={0,0,127})); - connect(div.y, timConDel.ratioLT) annotation (Line(points={{34,-20},{36,-20}, - {36,0},{-12,0},{-12,14},{-2,14}}, color={0,0,127})); - annotation ( + connect(div.y, timConDel.rat) annotation (Line(points={{34,-20},{36,-20},{36, + 0},{-12,0},{-12,14},{-2,14}}, color={0,0,127})); + connect(gain.k, samk.u) + annotation (Line(points={{-62,20},{-56,20}}, color={0,0,127})); +annotation ( defaultComponentName = "conProMod", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( @@ -192,7 +190,7 @@ equation 34}}, color={28,108,200}), Line(points={{-58,36},{82,36}}, color={28,108,200}, pattern=LinePattern.Dash)}), - Diagram(coordinateSystem(preserveAspectRatio=false)), + Diagram(coordinateSystem(preserveAspectRatio=false)), Documentation(revisions="

                          • @@ -201,17 +199,26 @@ First implementation
                          ", info=" -

                          This block calculates the model parameters of a first-order time delayed model. -Specifically, it employs -Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.BaseClasses.Gain and +

                          +This block calculates the model parameters of a first-order time delayed model. +Specifically, it employs + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.BaseClasses.Gain +and + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.BaseClasses.TimeConstantDelay -to identify the gain and the time constant/the time delay, respectively.

                          -

                          This block is inactive by default and is active once the tuning period starts, i.e., triSta becomes true; -It then calculates the model parameters at the time when the tuning period ends, i.e., triEnd becomes true. +to identify the gain, the time constant and the time delay, respectively. +

                          +

                          +The calculations are disabled by default. They will be enabled once the tuning period starts, +i.e., triSta becomes true; +It then calculates the model parameters at the time when the tuning period ends, +i.e., triEnd becomes true.

                          Refer to -Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Controller for detailed explanation of the parameters yHig, yLow, and deaBan. +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Controller for detailed explanation +of the parameters yHig, yLow, and deaBan.

                          ")); end ControlProcessModel; diff --git a/Buildings/Resources/Images/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/OnOff.png b/Buildings/Resources/Images/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/OnOff.png new file mode 100644 index 0000000000000000000000000000000000000000..9076999be0ff3110d052b3ebcabddcadd66e11b2 GIT binary patch literal 12914 zcmd^mXH-*N*kuS1e5HeQ=>ZJAgH#I$p*N{gqzDL7q<5k(3eqHWX$k?POOp;)X@V39 zDj+RVjUc@flDW>zn(xP~S!-t2{Q4#;#a)7dM}}&Z^T0QXfLln5OW-5&l50Hp_dkBRHUSWb@W;O|vPHP4Ab5}? zP}@4t-1k9X$o+vG&A^^rM2-;uBKko&+M++9iS zyAA9C;Xu!wpTzklhF!TIP;0tSo=}EXt`q8=PuDa_woWci?zktW(X2pG>=fjjOq1j3 zIudM3Y*P;5;kJxQ1rp4 zVKI8+vn`*GGvO7b32_J4we%r?0009%C-mgEP$-fYayI@rTo?d&6N>s{V$);oVy^@G zv9u_4l){}ho*oJ!Y|c@cWQMB&=1ilz;YgRVwtm-HG~ps|FZI__!1yZ^*%Gz|F6+rJtE8T(FWa?9X=`OYxV4g6pmd-AM9s7}~Z0`$vNG)DVdQ`r{vut=50X57OfzA7TeL+tTr>A1Y_%aUYC@}+<(lu$Hu~1W-{V0 z>nD}BW&B!7hgWR;XwHEU_*NaQ(t4<6bl)ozm&ly9UwBp88Yl|FGP+G3_mH65qHRkn&CN4A-CgNxIM=_-7lH7cYe`jc3i9f|fJY2#g-9k||$0;l=q4+d+=>j@!su zD|_4LVAb?jZv}1ys&ud2a#9s|soa4lV6_q{D4xgW^= z+*yYUwVJ|5$)joSPKD2Ee&+phukbz*Qc*C@OM=Rsbli|`s9Vsb3re)XY4T#ohG1kMHF_(@r;1z;@zRL{7ORXb>rif3E8kJHE z+)~8yec5uvVcy0`i0kk0nJtQ&Hhb5348!`Je&z%cS6C0d-B^m7f6>c7c}`GZJMkM* z2;0!v&&i1)my1PeWn%;6Vefo0hZoHr*ZqVEPbNUFkvmu({?uDR4W+T1c3=ox&;5*% zXce<>&X47jfn^z|bhKBI;ps861czIlj#;i8^^_&0a5~DD$zH4GNoh#d*Y%ANUJ3>J z@cB-Hjx?NHi+V&Pp-BHuVb7!7>6hJOd{L#bJ+PD;?KH)Zj zZ`dDXmS8YuMh)1--+Yr-I^||KE~S!oiHZ1ppk46v_0&eZ_V681LFoIE1gAek7THfP zuSyyWa+?w9;`UGd2S3VaF4Bfg&3bd1r#}A}Hw&hc+IiemMPJh*&51L=l&{RR5Bs=; zmyAu}iEO_92sOqtX~ZuHLo6(fdfoCUKzW&({~SZa*a6JxEM|ds_U>LnC~!kGBGi#iuet3{@;2 zL6t2wFe>wOb9d1_m-ff`5GwrK^zin3?*(98!7BD)Z`Vp){O`9!0@7MupHli%1WsF% zIQp*48KUOnWz?qRNSyGRmGSCVM^UQDao^wbevA@A{!TE0GROBEZ40#P(D|y6mIEWD zWS$jg8Vx9~I5tfpNDb;q9`+uqA$>nM?I4TDbt4fd>P@&r%|@4UvSpHU;y?23Zgj$y z?=Iw?c34Ql%hY3PO}fqLF)rT@euv51nrqxnT1&3&?s*I5N@DP;xx z!UUi85VH7T6%IyCH1c8_!!{WM)!ECQNz69vCk!(2a*n%Am10y&`mJHFy?18{!t<>g zmzVK8r#Y`!;_IctTCi80zkM%OxO}Mm`elzHe@ym^aEqYT>fEs&$W=XYgBHZoa}Q%;0|VhT(DY0Xnv>2l?Y7{(@mazvD_u?P%^kbdv9gAKf4TI88&ZPb z^(uZ`dnYQ5V&Ac=cBxnOaKSB<5kx#G#5nd_zOv`&qQeCo)q^fiRQfZn=Jni+_J*Ax zonQR9;#`xO=o#pCWt7jdz&`7jaNGOhd#Zy>j#zpI&Fu1o*!6CUa`2)mzj+twB$WOc z7kN_oAYd}e7aFY{xg~2JUyop8tWh3~))99Ou@Aq<%xMcmn&&=`cf<1v5u=0|NY9iQ z^5mm4KYSRuvb4A{j{i~oj}~8$XLunT`HSn8nR$p87t z`N(ZDE}Lut;%&64AeT7JwWj7w$_#U{R0ZesF@$Isy0pwTOa%d~B|Do_OkBjMm@8ZA zOw94&_T=Km$v!|MEYjU7E4IZ%M`6@I6mUDRXTetc@*y{&8bdRNY- zY%nMd?m2ftvAcQ>ednv4tDUfwPZOGN?bd8ZV*p1oF(>%Lb;=HuP(>CQ1^;YP5~!^i zPt>Yn`?r2M}n~=)+ zQ6aV5OJgC>r&U7u%M5#ZXFuFmA=moT;wyGRIr{19mrD7p%x_28)4jz$$$m=NvgZba zAc{G@o{K?(z93wlJKM+R;lWiS3jR?^A=?00Y)DE_+?|=5T7H2h57oi@f|5rK2zd2N zrd#f5e-~~NS5V=hs;&9d!N=XgS<;?_@|K+_mVR;u1@#0t* zdQ@^e5GW6YFlN`pqjwr;c=D@%`iM#pRkFkozfm6i3DnPK^0YIe{I1EDWHLP?#s%ejzi65L`8)Sa0#aPB&({P7LTp!sl?b-5+?NzeKAKY#k31dWzKxBuL< z2NzH7)Y*BQS(Q3FSBpZBqrPy^HjY5%{NCtJHG|y&9jCc(;$)m-+E|NiNl94yj*|Xf zc8N@K*!Zo5W6w=8izX&Ur%Xe(X9G~byq34K*M^7%W&f}_Hu6D`mFj2NMJCO?UGN>T5}ne}Ju(1ih9JCJXvp*ph#$I0=Z3Kb4w z76h7hxE)o)x+pX~_a(PR`*=3IqD7c|Q2?4+={CI$3HI?%#rMTdF9q$#<1i0V3bDQM zyUYdR$QajlcOLH*Hr+#>6YyK_9cjhe)&AL$nD zy9-T88dN7YT%ItKg%Gk#^D;9GAv|R==M^I(ZzloT5_2jf`m0_*;t*7FmZO0~!d74Q z(}UZ=26bMdNHe8F=T*z*5Wa~YUx(pNF`r&Uz`)ThGzJev>}aNw$B2($@gG`2I?h02 z@Oyo9q$e1e*^l7W6$is?X0K0v-tY&@rti#M!)4tEn2HYp=HW)+>fZu=SY7qs_te3W z*q5$VHx%g`*7-Xa8_4-05U!Kv43Dq5PV&vtHZ+=<$SMtkxj5+VQSc|9=iVJ3Ps;$; zFQ=LO=jyKRNj5A(NNlJT3y5J&PX0SpaAYMdIWrP%!37frQ9$u;t~7h}7veBKq@~l~ z$maV_AObw>1+>ucZ_iK(|2a><{N#XG!W`(TX~nxCEGTR{V%IQ7 z52SmmxN^8YKWZ0tw!zH;7dO5igp;*Wgqm+xTIy?xL~Cqw_qsb|7q%^f!_Be{HiIZJ z8V$5NUQV35{l_6VNvHd`OhgP9&cG=Kce-Fed}B_e6PDMsK>v{+70o|C|ih5-9e zd=~WZnS?M}zMaM(+#Bl0yz3SsQ8SpnX;>2BzCBU*N)Nm{*k7{J_3H8ZC<=tc+M(95 zK~s=zD&fqG7@P355c6) zu9e%gT8ZB%z)10I;>bCePW4Pe;QMOjp}EToQDsJm*v{wykppKWU}7zj>7{TI z!i#u_Q%c{UfbYlO@Rhot;m6D!o$Xf#v0yLciG^3naqRr2>EC_$oUucssO*A?W?haW()PeN?B(Y zHYn_iGq^QMdI8Mfp46A#XMUr-_*cgA1zvOpDTuZQ{LWd%cg|~*9)Ma>N_03sYj3<- zIVQ3{XoLB~Sfdt@`I$VO=ENeg{Vt`jNcldS`GV+PMMez$Zom+C?wF&!|GazNZ#O4_ zLw+{vblW_wFgjgw4DH;{DmE z<(j_Pvl$O^u$;D7<;T4ByD+)vSR#xX9!D`w$TqU>=E^#`gEIe;Sc=Hd(<-*ixnmB_ zpslZ1;Bs6zi#nZ}Zgp*kqzu=K1D;CFb#kpKi@P_jRjkn%V2*g8mil!@29#yx$MhB% z6%V6wr~GS%)vf)Brp}xFuAKI=r^;DmIBM>>hzWGSZCX7izig9l<5V~e0cji2Qjss0 zrft=a$-t?)!S!f9wi38D)84yhH}Olj>#@A(*N^hUJxy%oGA4l!R5Ydn@AW*5(6oG9 zTdi7JkZZV|Eo`eZyz*hb5wD!eKG!Z?Lq#Q}o}_}T{AVyn_s@k2x8n!gF5O)^gTWZG zmL$F8${Gj%=;Xls+Xnp4evReo1TKne85}-346oD=ip;pfHpR)}Cd|C7zZbr?Wia?n zwAL6!a)_S81#lW{iJNg9oKf#(Ci~<-ZTMzC5LRLI>G? zEz^7wGD4!9QL_(~UF|N|OXa*Z|Eio?Q^#QS(fjKYx6;UbC071uxg@6_Tg=6{Ige&O z7^SXmHdC+ZrbR9cU-`_`>h^r(Hy3UNVRT!mM0E=vWmBbkRhozo`MT1?O} zN+^n7lobsO^=b3p`((GfuKLYf%~{EU!#29nZ=#M$V@Ko1n}w76 zSMN+hb{pri*ze6fq%m$B0)(|TMjw}$D?n2Cph`$HX=x5r4alq}2ur`48vw2O0J*0v ztS{wXQDnKQCB^C00r%c0iyIX-O>VJW|?*!^y&#EHq z8IvpSqUfO;N1!6(q%n}^F@$H`BWd_C@9;X??0*io7D?`kKXNZ=2H^C3i&J#BfFY9LTvKeUyorB_r`Je2};0a$+C4?QxEw5cC zA#weHFDgKPua0L_59EXj=UfxAd$|r)m~(HLGK2mLiw}2!3g*MRnLRJ-02Q4EvCbMGL@EG|sKm}66i#K2)HVWYzfs2Ht zstVI}Xb+i@h^>Pqr3R#vvlS8=mR%@<#6mqgDTSq=isU|j_M(jWpP-phPxHnc zDG4ur4bL#1T-(7*YTEtjf?BssWtuF8=d)W#dD0}c04o&jycyn5@0&^Xr@Bbuz2XiJ z9VaP}Ox<_Hy>qa-6}52(gc2FK1!%h0ou7rXWy{UL%7JKm9=q3`nRDcDK#2+cs4t7t zeWxJ@E3K$UvdJ>eAq*s`s^--M%ayr(pi8|n@oXfN+F*+#E@G|fi;toF>3ca^^7Q&W zJ7<#yc_uINmeON=h+MdJcJ!`#ah!69I3pzn840Lc75zvV~GihnS>^*V&=sGaFI*ETd|D@X{lI{;w#iw5kPZ{nV@ ztV`(+K0=lHsrVI)LV11%34K*6+yXi0uE(u9F%v;0%(7QJq-5rbvs9sMHklGxBH1Do zW~=5hlV)Lp#!wcZkiFV{Z+C^_>jgR>8{`qpiRFe>tv);xE9duA93Y!?)ptfN&m>v9 z{!wubvH=77Lv8-E>p(QH9Z%Ut{E`tu{Z6F5@Mf-8{OVSW!DeRTZDej+U*$VcM0|X5 zB`5NU$F~!A!r!hWLhwoK>i===t z{C}ZO>iHy)b!V@1z2i@uon&{e_&Jypmq0&k7`O!#0E>gIDQFC*w6v*e6*(0|m9ay} z7{>Fa{`r^FN41L#CqeDTTfBHRz%JH2-o79}6GF%7*)N2=7zA7ir&JT+^@4t;c@4Z& z8uSK8d~V-^XB(KQj(Gc=MLIPb|I{L;n?t+_kX8TUehMcWoV@eXeqM+b#(nO3-#ENN zE)haaKF&yzVlx!#W_!Sp_fpR+x7KF~1Y7eO?jITFOv$vZMuP3Ok0(*|jAVCU_vpnf zAE)9GB%38R=LsJKX>Y7b6YjHAp7!>$aC9Qn7t#&MheW2Hl-ysYt6O|IJx{pFS+pEq zMwmzSK#k>BeU(0{bR-ltIdSa+uI^3_qQ@1itBPcWMyp2RLyPjO^QQh6=VnA>TdS~X z5QLaY7;~y`2F4Ul+&?8pJ=g!8)+1RuAz}M~12+L0MP1vU^RA9Pq&*r(SW#6blNW?h@tec=TZ>zKB=w}ySaT^0l!n89Uhz*U=Qd4 z(S1%<@wsmIe1MewpW$Jjvi>MZOYlaeduVr%GVc3T=6#pvl(t0 zME^0w+i)?;`D{@xSUmpI4NxTzx5pI=ie^3pltwo~Wg2OnZ3&!lg!A~Uj}?H`WLtW| z_as?kCbIrf(5p4o`Yfa+HiQNqBD!>k_V-k7Qd|!MFWhS)O+Gpq&z@d~AhFniM$NiuyxNPA|JR*1PC}S7!KWoB-~4gUnw5s-%FB#G^6KdiQJU!CacEg-z@q1V zwPoER4M~s~^FGI8+FQodl$iLZBC8bkx%{%!{A#-{HJX>Kg}LTmx%gb)(Y>t#?#W%V zA0elZeC?)61O9>h{B#F;CW%}-D4W>=G@N~cGEg*Glh0=xmy3NXBW*gdk5~4*G_|sk zpHY*@hafyT*(34E#1X4lRu%OIy;M85)%)1f-LTE;45&|WK&6(`W1If{BLQf7V|?>7 zOkqIXRTlNElmdDF^}XodIvw}eJk@N4xp{d$Dum78?Q0X|L6KpRLCSnD{xmzy*R3%y zFow%>WpD9we??c#h@p<%hi}K=h(JWLjm&wVNwfs##+&@9%Ga0_wX_s{+Mll?Bd3=C z`#b|h9C+*ZT55eazDH(_{A}97azMHZQ;wOVexdKIWd(XS7kf39CTP><)n%S#p@vQZ zd{y4tK0ebG_+tHno#D6`Et{T@i3l;q-}Y~|tl%P|Q)ZdP`rkKl?GE1j9$53WWi$0^ zjHK|LrI^BLicN=Nsq@bU)+rDO4rE~_)vj7eRrLzuVJ5x;e2&P z7G}&wP_5@3oQiG1>``6WIy83nFV{@AbStGCxd3aIzl@@4F(XkxeIMO|4%CWSe~^t9 zG6>mVPOOhA!z6tTp)nXJYU^{n&&yYKT6-f9pDA%OO6i@_yQ}rTCPn+CCP_>+B1%nR z-)Z}j3f9H;Vhp_1j;yu2n_lPMB*Yv#<3e$PoRga*Z9$V$ih9*!MXk@PGJvPN;_mDd zkBYghlai&|%3?;?Y5Z^W!E%B=)(d{eg;_Jc_UpR-mi^Vuc46`uMu?gWrgY(+mfxQq3%EUirbf zS$IcAbckM$M(ME;zNPE{eaT4#7XeTL3V=4?4{XH8h|!L!^u;(9>EaE|&n^&MhI+g& zu^pHL4aCJ-#)2ToR`3PpXRkA&@9M=Umx6w0krBSx?Cdk5>#<&pQfYbV!4N|IdT9)d z0Pk{yuNLHBC(X}h5nT`UVi2WMMtI}017XC)hm3_+A9|GF5;+a{mu@e)e{@&Bx<~D5 zSSJ@@S5T|W-b#L=N9ATkCF!y={`#c-a_G$4uT3QGVS;8|g+!gn77dIvSG(~j=&LbE zPtQKfFV#)B{m8JRZp}ZbI={ap^+N$w8Xvpb1&{+`@i?~&)5r*q9> z{hH^|wH?Lc&tCR8Zr~roQ!!{AjE71RZtHbqh}BV-gFmKiX6f7OB@m4A<*~ZS8p^!?q5awk>~KrO0q-41ziJs*Av3YF7dW z3xk~3(ZldAr2@x{oPLU(S-S1K?1<|!uu>0g+!Vk9%qHZr@$$9*t5_`4p@+URQhT)` zCSRMziLzC!G|{qLM&f{%dqGJ`3B@iS5yT(Ef`j9LGLZj=K-U@OZ*KSRBGBysE3@YZ z*&6)CGPlFzJs&)p02Y~sP6JRPsJMh?b+~6ANPa0lca|L&5J~g*e0-3^3qVk4T@KfM z&@KKt4Z|-doyICYTEqJ}ICS)};Wn?>P|Vx@=CI@B`H$#!u zWpCUXn&6GeL}QFNa&)P)t^z7syo z?qQbmeNSPek6({<_Ym*SBHN}I6J#~)$iHMV#t&KFQ0 z`pGBn;Za-C&c6ATLihlEhKR+HH<29YZ2-ws{aZ^I@=VmKT(*Pe@b&>&HilOt8#DE8 z##!L7$R(DSY5sZ@6LtQmIO15|PkKjN;FI<9OScLkKK$*G!_ZfA&3(YMC3SO@!2JH% zn@9+<608RvmUC!He?i{xH|R><{)|^gXp6tm5y~Z!n2hgq#?S3^1>6N*9a%rW{5@!FGRugqNWgZD(Q6F$Z*ri$ebBBl|RX zra$uRzNjR!NQzZ4ZCdcbEq?Wv*z_M55xLNiMdxrml_}AJm^At(q_HkOfdwCD7XC&N zzvO<{*h1Re9u&eq|NJ+X*Agms;UENI6JH$Ue+=qB*i^)?KYuy)1GC zU;S_GdW>`6k_5d4zf1rUxHHZXg4CdygJs_s1TZsrK%FIQD%DLJJo4!(MQAOB5o`;}Dr9>zn2c5O zo*dbU&`!9(rR$8X370H`sTN=a)@iy{XJy{MB32u`bSkC~HzpbZHthKn*>QHpbw*|0 zX&$g!&5UZ?F7c8c4`|biuJBSBNam~N+%aj8+3_=9zym$8C9y8ChN^F$f?6{TapU{i zq3-kJ9}=0Q0OUe5!neFEfD024^5wL$jbt=MFxDozIy1J=SeJL|Dsnf_G~8B=EW1VY z&FLB21mVh^&W*SzVIE;yLiGO+d3v$nyl05}j^6LjN=696MEg`29-Nw-p$ z4>$d;ZUg4x;xm1P4)4@gS(;^o0e~HQre)rH3qbUFzlw;rOkIz!P5=Bnblj1_Jo#9t z{fQ!_L%Kr|)xu2*gD*M%$WtrVJdLnw%JTR(MUbd^;#((H+`Y$DEOsOm`2I%|#=kNw zX(;&7Fi-mM-3zlBh1Kll2N}sS2sxHeK|dQ&62&`w6)?$# zbt-0Zl^w>;N7MIogljc(7gZ83N{!SgB5S8Ie+AGVwL`HUoO+2vHWhOdLSdhoC4@K% zT5`m(OE%~63wk^*?y||~ps{kz6a`LJa?ER=CW~A^^98qQQ!Rr1%@7+qe z#{FW7aruS@jrXm<83PIjy`=j#3G9PkI!%7CCFI`TV2o+&VX;m*nUT_=kP(5l(AP_X zwGY@cth4MtC*-S9g)LxzhKa4gQFW^oF`PX#XsF8)M#QfDAX&uF*nvB9`L$(Q zj3*p2%jLhKow+l)&7-~>j1#3~^nXP85-DDqxgV=kov@Qr z>Dma0HHS6ol6P5fquKml)6&d}cI4S+FwO;d&euV%Om}jfMr|REion+TdWG-;2-o`j zNl554wRHIq_^9<-fL7etNbXdk z-6g5!@`u$fgFIT+k2M*$#_qS{)f1-f`WdXvqA@83e6ZYLfo<3f)ASW(js{2a#V4pL zos!2A-r5u*d1P|fwhFK~^-Rk|mfo7JRccjAi-N-!s`0AUH(2zY;>6`fO~(8cMKVd~ z0#*JaCoJ#YTJ2OR*g&I6Qy$?gE7Q1E1M~vcRKokQPdzDwFvo-CQ@?=?@FRnS5ZGap zUPFC6%RZgyaX(CTVs&!U7UzMh0{CIVQTK8FSKo>wqlE3y9vr_8I)W8VwB(4m-e;O{%u{xQyPrz&GPgG|tC~!-;5nsczjbj$DpuvursMnBYwl3Dr70=8i zC-C~o(h$68et#d15gl8<+25;GP_=j8&uOnAa1PS?V$VkT^Z>s~3+6UXZdE38m(Oaq zn=phz_Iu&{G$UM9FPdfC|2@@CRN~I|G~F`t``dj|!j}iRI*bG0MNyBrWF8%XPNeDM z-6v}mfoh5D9a!|=hLibYBPWFO$S3jQyk#nY{ywg7;ck^ktw@=$?*#Hbm4zPq>)jbw zT%K0;AU&$U$%%zs`QcTV5Q8fFIKO2?lwrrmzr8I%-#{BvRwT-lDZ#g~rFRnaQ>i_@% literal 0 HcmV?d00001 diff --git a/Buildings/Resources/Images/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/OnOff.svg b/Buildings/Resources/Images/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/OnOff.svg new file mode 100644 index 00000000000..677392e9229 --- /dev/null +++ b/Buildings/Resources/Images/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/OnOff.svg @@ -0,0 +1,472 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Time Relay Switch Output True False + + + + + + tOff tOn tOff On period diff --git a/Buildings/Resources/Images/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/algorithm.png b/Buildings/Resources/Images/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/algorithm.png new file mode 100644 index 0000000000000000000000000000000000000000..49a18a11db41af1d00287983d9d41ecd7911f478 GIT binary patch literal 19912 zcmeFZcQl;e_b)!93!)QU)aXQyAVTz#h%yL<5h6y3-pwFEv}hsG@{X1;Vn#2)5G4qL z7!wQKlt9hwnMx)I8pY-8jGZUVaz5fDAt1?&iRLjKl5Bi07%gMBT3D`x+;Gy`Nh z_o0@SfFc=@M#@+T_LuqXY0b6zY|G88(P74V_9xd*w*$+y7wpEk&VS;MMiDVcs9P9T3WYI%6rEq$RLPFTQ7DEOEJR(`Pj4T*Kd1jOU+4XNIF2w-K}pxM!XCn zcSPQmFeC|op7Bj65pJ3EOdU^IP_I28LvgZI&Roty2^8 zQd;i0XPCIjC~D6%E-p59&h&GKz$enOyLj4bS9ZvYh2e?}ZY7mh&=i5h^BJ89BD`U6F2mD*KqtUg4(yPmI`gEW-nw)OAHWk)352_>QTR*FxZ6~O}q_p3Wj zlqb|Y1lQBMRn6{_UTvG2cK0BFW+os#J+>YM1?<(eg?VHFe|Hx3B)!T4Xa)p@K}7;k zipVBph3QoCV4v>F`7h=fcBpgj9xx?&b5sWjv_SW$5>q{eEf=Wk%t|sR?JUa3%E|WT zoE~@_h2Ilys1}R=T&FUrpu_aDYkS>?+rLV3tjwcT-f`LF`nU5uOm#EiDB>PYutugK za%XU^6ED+BY-sRvZva~i#>{{Bo*6BzK$B6dz#QsS(`7PKbt`He>u;d>@| zIN7&OePvwIY9>oo4mgJxenp&k2djVk>{o3BkK6HY37T(hc`KQQU-w^P@1mM@*Q0mp z1t&2?GxV9s#W(kk%O)27;*Vk`4~b{a9bH-LcXhOJf}}!y4n>kJL#sQ>8B z{8TaTRy1Z9QBTE|BQ7#@fCNX0}>U`e!P-u{ei;n}RrP zy`<2@Yq4~Io<61VrDFK$wK9gkN%Bs%SIXKOXqz6~bDw){L#%04^Z#=L3I^ zDg-Nf(18T^r$Z4E#?;iq0}f@Z?~$NN_eijjoZkCGBR=!7<5*-_*wNe}qq>Hkp8n&@ z>e3u;tZTHO$mXVsT8Vqy-Ep_Yui>tOLadAmYRx?LOm05jSG_6>jzjLAC40MCYT*tg z2V4b-RxyGOdZwTIzgl^mN=>d0I)ZH(EtbAV(oDXvA;V|gc(5uVvzZ95(A6_BEp6H` zkPIuok|Y9Xow|@+9=^|2(N8Iae-2Aj+aBigh zlX9Wy@4F57BlpRpW6X>E)U29DJC*R~I}YF($Dcc+tJNF?5U6>&@{Y>TB>c)qG&@ za*|B~EpKX)ECq)gDyxq&q=<7KXKq>p#`QNqV1q*K&#b26iX=dJ?fRa^e#^g+lvtk0 zEzFgz-6ET=?pK?6-TH4WN_G|m`1n#oib}n)k;KymkJD|&Xxu2+p^EeU6b1~z&{2{F zx~YWb!qS{y(W?gj@hE%Rr)@$QllZeyYru!KIwrHQzj5-~;)Jt^_(( z6!{M>%I*!x4*j0tKV!f)Nnr?&QJp`RUrvYxR5bP{e{BIK$OYI0pWnV4T)IZ;zANC$ zVx3kVz|BTCu|d^b_FDgcpIa$+acp$-DUzO~P%gOWs~~IyzpEJ74Mq$dXm@^A@p={g zW@^2&Sb&~>QSJyfBF+g4u5f=Q!uwG(wmKbb^qXyHt28js;k)EhQ% zk~KXn^^EO|>2OKQ#+lZ#tKoZo({rxnpv4h2arNWJLG4_Yv-b0kcvgsl`MiX@I5%j_ z8u=27gryN%E-h13^^}1;*|-@-IQNHH3gLT(KAZ}g{=Sm@>a0Js*C0dH>aUgTXzK_+ zZf;AOQiXeuHW|R{824J)p%3G36HP`LIkSV}5hJF1r!OY{*uuAd7$ImLjr&Wk%0pQ* zEkwV5{K0rbx~GO4YgL{5b)a>M)c@0#a$WbIeC5jCZubgz^a*FKpLXGwq^>j1^NJ3C zV)Ulh$@!rZTzmOhiXRUQterZFDQRBBnqV68{5$mTV$q zN;ZYx{!|JQx^l5nP{G&{!ZTxi{B(p#MCvR5R0Eaw!wHr%luTK37Egd|)f6Vh1J)Lhm9zO5VkT{Qt zd0B&@be_$7=LfA6uyCwWC~B=zMO=sI4U{tfaeFo4*?F^e^||@^)q+Y5t<3hRzTkAp zU5Wb7aBAwJlhi+N8(*P4q{=^h)2X0BN|gHAkqViL0Ro=2@3Sqk#yX=gwusUEZYhga zFIN|#6_p=F&1U|e5{Vdl#@|E>a#5k*%$+X#*7dJRhVfbWS%2fI&Qov-2@tm@y(Q+K z^kn?o*T$$`Ag+j}2Gv{#EK?)!}2>?Vp4fKQLi zpDM$$U;4J_EpD!`j(^c{h~cQ=zTS!<0-Yd zEqSiv78;)kW_0Ti2mX0PYKT-={9Kp|inUu{#aaP;oG@Jat=4BEng8=*3-P0SyA#rK zrS51~HKLU&Wx*}>`PxH{dG)V{shwkl^|A(->I!a}Q>9x3nPy>K=lxP=-G9P9nz&WK6osb$tWHJ4ekU#DZ`iea+*oh$8$pvNeF&SZ zm4Hyy_SMzh#1#g*GBwQ z@&5b-IvjnGRkkd#EEVlOUst{VXVch!qLtI; zTx__^`vtuP*u0%wNCL9h`3ECs@69%Ndy-n5aG2dZsi1NG$~BU@HBXU+>*`J`ZU>woEmmFev$4V%uV&_fweB z2+O{<5YRi>?OCTiRIVR#-5X_s`8&}%Wq?0(6CVy?3u$a5Z-Pp8Els5Iwdg01P5G-w zu=JTU)zDQm&l9$)Zr1Hj2#%7D>4TdN)p@MyK*tgJ&*gE6Wc|WWMMON> zahW%DPn1PVe&~qOOTZtT7a7+29;S=PP$IA%hViU4opUP`V&ChI^Ft`%U@drnMA0h_FK`tKHChhu?2OMWBlE=-@p|$AtzGF;%Nv9CEZ*a!@bIH}Rj*{cWx|~FF;ZA$Cze#Eb(=lP0cG#}8L!q9;=;cyMw+1SU6PqMg536-;nFZKA z?1Oa&)_mt%IBym5NMtnqsso!#vDii;wzpY#AbHhNYD@@~efNNgL*mUw5vZ<^b6KM< zLBVc%RASw?TVg)j)Yk3^qq%nVPhv!mjG_2#HdzFGZrb+q4EI3w-ntDU8W10A1!Zli~f zF?eEPfNC&y`?l7qGc?mrt0*n=IRAi{B%0QS+_8pqb8J^Ktmms*MCa2hM-H@-$wc-J zHP?#BB2jOgQN}2hd3&!gIrH^jAtNup=)g>ZISLCEUw*;d!Eji(g!mUXES{V^fAaCY z&GS%RyTQDh5{35A?uN(Jxp5T*E%ah~hE<_+3!?;Y!#6=&ZEf}GJIR>P{Z4&Pq3+>s z;T7305@9fW_0Cy}UyH*s2-PU0$5WTkGChJR>6pbV<&7b`F${R&M^i<&3ouVl+|f@n z9Ydpj4&AF;Qi`xI9gW&fg{a8dJF>M(5$?^~#-ts9gs0Xz;}yS>QoX{KR(+E2UinMh zNi<`I+Hna%IUI1~Ka4cN1WPM2(tbUC+QnBPDAJnL~Gk5{_W=W z++a%WDbfDYy{(5Z4B{iiIw#`JTm1=t^=Cs*^GeXI^D+?15en3mMJ<%lF|TOE_!=to z)oUE&SYhQwEtN%cCJV2>Fq~?0y>wpkX9$Gyrx$7{peBr%D)3x$>x*~I_>DtnQjV09 zH=Pq^8j#9*QH$V*aSae`I1kR|FD(S?Eysc#Gnd_a{D><4iIgZNETX-!qR{TPD}gtp z5LMA(D!?j#j1c%pQu6xn<9n#)%Hr^HjI9!L){g;3j|Ogwr}tOlC!=eklh-V1RWZWF zfgg#ZcZcj7<{ejrn&ohNzx!_v{z_IY{I+@;AYIP&!#g_hwD%+X(~1g$H`%;=OTrNe z2j8ijc&iGm6VH!XD{3+qNlqNF$k9XXsF{F9QPhG3T*0Zr2R(b{{M}zBH1b zcjT6huUds>cnqsLd0OwI7GqV=qOW1-rPqH0T$y@i%O<13&W>SUT&oqadxT7rB0pCc zLCzsU7foC9p&rn#-a|#Lcg$jB|?Q`l}$i|zcM@hF--UDe2*~GD$tzQ#8K`!*GzauG`xU% zsc>e)TvlKgYr9hrOz#g%h_GmB+VH3B-WL?N7cSJmOB}q!AGuM)aOf_x-9&g54hjuN zWo4kr)80I3AO7Gu;(t~>-CfIuur;u8oH!hdFRTOKj$iU;C3Ac0fd5*(1mR+N>qiutV;8to4AG6TCf` zvLlFjpmaK8yov3gZIoqe(i1nBU~>qA-pt2E@$9w*gAO)Xf1iBKUtrw3`Zwlu`{1O5 zIPH2g>(>V&haW4U0j$x$H7GL1Env#n6NEd8kii+uD?$j1Nto3nzLVeTF{&vmF@!=- zAx^oKTd5&$e%zFP6D7~GTTttc%Cn&cwLHzDI)LM}Z)RepysjB;E#!h%>?;n0y z4rroFXtf-(o5OlR8_UY?99)QtNjuevFY3lqdJColgH&Qhbn2_X=v=w2WvNHpYF*lI zc8V19U!9mVQ#lkW@u%kNMQ@*V5HnKf9LKjjRoZg%k|L21LH58YhOHkPxQ5Ut5iQy4 zMG3ka92D|Ige4I=h9y7MP#YFIDvl<@g5JguK&c19#Udi>F4X=}aTAF+S<&M$#}!9r z_3k&-;f-4rzt{Xi)Xq zN1SViR4oA$T&0R}M5#fb((FwRnM+GGG;Vbb90F7198{!1zBvH9NX z_Po2r!?j}10#+h|)fBv+HC%yYv+%_3V@uO2?iC6Z`MAxf&;@UAvv1uFL9qP*5wp8?{)w zEo+-+FL>ywO0hgDO%ak006ZahUyez{Sqv36*os-!30P_IRoiQBO2F}>4Y&>&(jFOp zd1Tu*MEA{5L}IfdIPsPkAK&4oL_0&Xax`Nc8H6^+kTKmZyvxLmY{dXSnET1(N zhjyKbvNis}r+tcz^_5gbn+{4~7^dxjlZ9D4r()_q#@3Du)JUjB+;A!=l9cX5d3o|B zz%nhOkUc-?zKQWmQ}P~MAxbRg1?WR!1BXO&j(^5K8ft(erEI^;^zF7Baz+mFLMYmr z=)SdeDY_z|WF(uebHKrjR_S$oFR5U@rq^A(ppsI*z7B{Z&^?4=&8JPTd?AYtpynPG z7c}}gsG_Zm&#ydBZ{WNVkJdI$)w-R@Eg*LL|5?7owZc=LrrL~0y{CR--{_&L*IrL$QHD4<$x<^c>{#30?2$qxis?HpJjEB@sPH}~BZrtxZ z-t>VSQgT=d=1_amD+HK60%tclD=F-c&WcO~5zs*%FJQS`Q{CEbwh*WM56p=9$wA^L zr$I&?&c^G>wqh;qe?ajzY#|je{^ekY2p#qHAKv(c$y0)VvO~VcNi*tY*x67})yZLN zmwpcp>zuYm`uRnMZjlvHwnPwVW^#;eUTB`6x>?2ushk6AWZ*OZk8J*Jk|!#ux3g`VsHPn3I4_@oj&?*b4yM#01;mm3@EP^CKJhkEjdHmcn^}7DS$@T6c&M$+71c^$I zbenxz)M@V|9%J7r^esW(4dxwb6Tzo|fu5Yt`HSC(pJ2%5m1|rzg9gBV|KOcJ)m321 z^1UG4_;!CJ5N?D&Cnf!YK^*akUpq*^G4{CAa%u)LP7F0Gkof~gLaxI1hW!P^8|>M# zqBBHKXtFf|G*`%!xI!GKrC)bHi>@-ArsQ1Ns`pIUADzhESIx{nzINiPM9-bxv-w>FB2TjMA=NzU@XxrudzotoEQUFa6Q0{_7x zexXLiVPm%f|4g4$h{sXZhbKNvjohI~3cL}ISBt{%I?;Qv?5WpCZs?$XxLmnnxTTHM zV_v0rbaf?4e(H$I;`71v4G=mYB`h1UPPFgH`iFLMkUUL|Xj1{Zi`~X&p83JazNZlm zo1HT&w)vO+!Jpb&UTr^WjIgEq=|Nj3c{CT8YQx$J)mfddRhGW)?zYmt|GIB~1pmBl zWZ;n~v)*yUzG6Q=Y+2EF+0y`DVm3QwquV;Pwlut!RL--2o3;_CaP4(JITA1TTmwaT zxt4U|)b*~dba1T=f4U(X0UXQt3rJHU2#$cSj*M!k_K2_+1#ms%kGA{Luy!}j{x2>+ z`_*)-&X&;OKiI;T#vNyEQeWQhD`Ou*qHdoLMp(3mt0I~n9XX<&Y@6>_N#!MsA-VM+ z35RMHJZCI>b4=flL{Kp{tfwmZ2-SNeYf2CKDopq$PRHH1`@S}&O*WQ2R3k@|Re|?@ zu4R{ce!fG5Z$Jb?UYQT87q7UMgU@-K+s4C&n*=+J+t)~YnPux?z zohXMELp9^$5#~ALxU#sWkE*`c_^H&XeDuH90+?e=TOU9)J0HUqH>W4u!ccP0Bo%Jh zq&lN|edydd@>(7ig$e|zI}o($5~iSv{(T%w1I5vM2<*^|*a+7QIx|a>cN)N(?HsEUnka(4# zJ0ZIRWhtu*(8S-hpuGk8dn&;yX07()OL?&~LYhvlOR%u;dw)lh`d}EkpT1puJ=o~O5|a3F ztD&s3HAY3`l)KpSS7=dW?B^QBY@~d!t&CtZ$0rhfWSp-*PcbS#)>b!|G5o;^1nkPH zHvK}N(H)WTSq@gj%!stXOi_x}sElPakeBrlz{@{pRuh<8)s2=19kOgb#U}E++8G~l zFYp(#&E#p=eH~rBN1e9Ty`d}mIEc8()&1@f-R9_@?T6)Wqbw)AsY-o3cLhaVi%jk7 z9}nw(H!y8oHfdmSh*+3{%;M|Iy;k>`vUFW6S9&^FMUMEiBQ$a>y40Hamj}KC<0jXV zHr-J}tAVIyZBzTRr`Dj!=&<}&R;zV``=1is*YgV-9n2r-Rj@%|5c#gPMxmz1pSwFv zv4a!OZmTPe^-{XZqSsB-XA=0jA(dPU5*hhz_v%EaAt>bE(n3Yu=UdZJgZASjvEeh- z1jb=w{`~y_d+%d%Yw~DS^x7ywJ3M1R%Do+3tUJzBw*%I*e!w5iiV0L*)La{-hQE-{ zQ5|R&N}DA9@b*(Ddn@+~d2UXG{O??v6P4QX!Q&_Gsq`uJ-DuOg2nWSRT8wC46?(W! z-(VzkY^Vw;k9m;iNy8w~BQ9MS#aSu1(jnJr7m;B=c>_ZNWF&4$2cqMi`47p|fj56w|;gJCny@bA@j z5X*U03LXFcGy@=M5k}R`a6vfIJ?XD{S(e{I!}6H~A{A-6=RKhv<7~VnNzL+ITqx*?tJKFPuk`gR&B_Y+2cO;J7N!>j$ zu5)A8DUYuTa;gh@xTCIz-abD&=w$EeT8**&@;+au`gn^1<)jdvl#sGs zO$pBHtPd1OB?f9f8n{xXB)byU3G$mTNTq&Y0@ha2;`v**k z-qiSQ?C0u9Un{qM@2EdatnO3{D62qH;u#-Ml}r72P(;M2UfffJe`qs|7o3WhJRK8R zgtl4L1l#J)vcK4!I+9e-7sj7&E>%m&Z!R13BM2O2eAc;hVnI6in0wJ5ApCn+!z}KGx3mXS6)C>D0GX>qW78H z-aT8McwAVI?n!$k2Meb-cBwJO0hV>b;wC&gAmQIW~ zOV;G-Fn3#?c2coliswhH)4RTc2!_L~o!~z-{1b#bc=7*xmx2Cc@d$c( z=&(p3z0veitB1rmI(fUoBV~*El)0v8evG#LL-f(mhhK#zcD2{a9wsVo=~EfvI+hX( zx?>flB$%`AT$?1puD^tnvzRsKr3R?qaynTw)GFlv)b;7{1dKLZ1?KL}0;AO|`>kr0F{T7|chQuGpKnlvL_c#@ye%&FCg1mGCnT+e0?W+osZO)MW-g%72vwSGQx4Wy> zK3e`n|Lxg{CQ!)0Ymwe8S6;%~%FVIx4_@i2dRxoftJ~UoKg1xEJuHw{wYOPb8F?+l zE!b)m797zf<#6qCTioU38MUk|Vn`F+5)^XD9KWxnwe-|)rEQ%84(&~hGgB!8k^|tL ztN1;Ar)?!rJdiQ?KDdA%_T*iU!yA|9=yEq|WPqdfPey`5z(IN{#}z}M*lc|bt1b4a z=nQ`%;rgY$e1D+^057W}9}7@!O^Mug|C-K^A=cvo321nzE5% zl>=JjJDtT@_=16jQ*JM(+`*p??A?GMTWjA?vb?(mSm5te@tFRNWBQG2d)2M7IF?y= zltkAY-?3-1(aQ!Rh0`zRi1Y8kZ%NUI#kFL4-Ol@GEa)PY!H;+*%IUV^G+j~o#o6K3 zU*X*A0}tW)FCJje@YS?Djw7ny#4E$z5}{S38L~h7NJ>*?5C78JKi0;6@;J^wr!uY^ z!G*lgY+-es#j)2C`j=E#vMEnbqkSr3!i)zSe9s#s;*1P1G79lNJ}Wtl$R@tl_1Lhp zGRKFH4cpIHl408jy|Lo8c0fG^9|Ck#bwnIr}v(m9@CS{E^mH zp_$iTkJzGRlgP2jy(gT7J`aI1oQ7Y-X+Nulu4NMh$8q`O`75cy4#xc*@hQ=H}@-b05`VpoNT!oqIuRNVM{TZJ#I8 zKh%j}=RwefykZE*G~i*jS|Cod!hajrOC?HsI2j&LL&!;qF1n@4zdY@?TxWz|0EFb7oIrg2b#IZzTdJu9d<2*zBLS?jH zXXw&v9S1>rp!gC(BR2Gtr0f>4n4g}v%J)3-@xjS0X;iwf;*SG!Ev=WEqkPX`lirD6 z8-IBOF_d#W3N`@1J(toI;exfsIs8iONn^S~}%=%5KWz&~j%-6k_s01(Dl@o91$|ro*#`+Y_0= z>ho`}B!G;+u#%Fl#RmR0JNz1FW(uy|RetUx!>2BH1nNoNsKM5qw!uTz}hI%kF4 zzsaBk)HCD}S-37dQ!x}28jcO7Q}AU>*;_PP-eYx5)mP+&Z?KhXAB;;3e$l6W>Uzb0 zn}^!aMA!bOMC(g9?c%zNm&%qj@j+V1ZufY0&hOW(P(oJUGwQv4CGL8G*B0?9PnwnS z(@VGEboHy~JCAL|?~IqfSTHVP04kP5oNb|p(Yq}}F4g0|+3F_$DOSEI)i9q#>Dr93 z6Q%pJZUj}sdBA$2!+KpitiSofjq`0WPhYw7x%y1rl%U&bcFZ%;UDjRCYQRT5GS!@` zw}QwIe1e4QFi(H>XUYO{_@gv_ z40K)(CAMCMH}assB{>+Z6e~SX3Zky>%3Wuk5k-l*lEXX3U8~o6sTIz8jq&eX++eUz z;_);>3S?9yy?$3LtbK%WUVCDwxmho9=?30PcZ8qL6f1}PJ`Eh68iI^)1do_t6x7{_ zD`4i2yFs2QcBf{&VUV8whxlpNmcC^+yo(R-o?txln!514-Cn)!w5-Xa8=9CN4qJ1n<$aoD>F8 zFLN=CMUzt4YY$*3>UqT8=-s4VE}E^&PtIsTt!zEBNeR{BLK0Tere^6WfjqcNEoi(s zGa21gJarwiek~$L8N&MK@nr3OXHr0xO}?*W1)CUGFejDT`}K8Rap)VKzH=owoQ?iI z)RY^bzPKzMpufvw{V47Do+Z~FK?Ol>7HE?YIfo+V<UDufrh z^67`U?eZ7T@!!uFmqMq^fK2wHR`H(;sMGS+G*09iniHezb6gtnnD{_=!+Nz!aQOZj#Y_vx zLbApI#E+~)rn%)yq&NjPrr!>shEUe4BI2+a*pWLC??e!O$V3D&A{SwYea<#-E>Lks z^@!**E0Bl^%{*Q?npQ+eAo`I7=$Rr~FMI7E=9ExMRPlJ`xn)ewbR zjpW3pzr$*=w=rW;3=;{G*tuXQ?ZP1@C_PKPlxXEo>Y4XPbGib#zzEGm3B`djJHEae z%p&twpvEaXLNjZ(=I;q)5HY$kSwdHJQ{^1oA7}~OYwJ3AlbXs23SfOnF3INySQmSz zI@(|0nFKcCigfG1A-$_sW(w!bpqDG(8z2gx`3J;^2w+TgCdwRBR^dxrvQ8yFd5)iP zyL_5B$2VRp|Ay-GD-Am>cH=hf`{Dex!PmVWU*}xV5_ky2i7AuX%RQZch%Ns{ikhax zQ;jUG|=amOz})rkEhw>Ujw%nis)eHIS^!e+8Ni`cqFSli7Pqo$o=v zmCHNB0)(pQq>JRn1pC~*n`S`s3UD~}iSY7CtlWnZ^iaCJD7G3U%Rd}z-2ReFEU1V^ zARQ(uBccN;Bj1QeZC@Y$N~9!?=&u4m@lio~)};1?qzA|nT;?dqzo~XW<(4bbqYdsN zis-+^!HG7!sWheBJHpuSXrzN z_KiojXOnxav2vG&WLRJNjs&{)s%QPI8coiXoz=iSfZs2qZ+>1Q{8PR53|e;<3^)4@ z%6duTwzd$ZG+nMPI*(_q-{EH%9uR`}ZHa7LQIHEp&}6qbHccgtUqBG+n3aLy=O~04 z_5~IM6$I+x`NKguNs0L~S0HToYY=X??aHebsTUrA`Dwa>(CTP(MzNNTd`@1ayK*CO z>ldN6TNHsZsS2zI^cK5SRA_FC_xv@_gwYRhZ(cn*O5YK+rtfJO;LiH2?-ye|MO{`L zl!nuYtD~qVzjhTKMU-Z34TcCV8|q5Bt_h@&;eHaQC6|SMcJNT93sicXok8$^E}C!i zEf>oxe!!@AlOm8Cf>7nvbz3I3)DF+5g=aso(;EM~g4CGs2YIRCRS)4?+d&IK>0`1s~Vg&n7BX*#U`t zL){7DvYW9X9D!HMx|9pPVnT*$qSOG_>A%>kI2ePhKo}vG(GTow&=|b|>>rqwszWOb z;X+VwBT^)Sp&8PzW3OWO(TAQqTrA1#@&E*{7!5~AIZ z>-CnCHXq*V01NM!$endU$MI8MZF^%DYaG3*J3L8CO}f|F)sYpOsCko2Z1X^B!?-;h z09@5<*zR~AjJVDSTN>PDc4l#j825bU(;aUAx_uAKV)hcDDxh_)X!i6C+`u}*c)PMc zN!QJ`VYBQ4Cldb8;{+h^|7K+ReTzt$c87AF#AY zd40GK|Aw|o5`jFBG7CiQ(R~IyHYH7D%HpJk+dF1ky4qg`MatiGk#PZPUJ?4^*}LC> zjS_2S$xkMtNe4&crQg0&Nq?yMktn7grBGO9_)Az#pT z+y%4i2C{FgcEv7ZC$Q9YYdQEmBW!1ik5PwyAWP#kPdEE`F~vnh!?0da#$j@BNQQ0s z>8#`JL}h*M`E5`^rJ+W!T)iX+xK~)Cy&^fuaqZQ{mg0#kmJO?qy$NBRVa7cVSoCaHq5D8G^64E6F8RCC31Ln$({(lrEyQndwz<{!kx%~|u; z$^@};cnU~<)G-c#(xE>ehaqh~+5c(iBIZZ(z>1`O;^9q<-&vPsb{y^=nTglmqH97- zWrt=}Wr8jawQL{g-xnU%mOYXbWXtj+(|YOJft?GTDP@@81m%#yNthUhGex%_Er3Ia zg~2*7b43%Peb9P$t?ih^7|0{BXct@h7U$hskrm$C6atOviPP_Y2TZVLCsW z?2{~V8AESd;@H{PkN=CFuPqM(Q+XJZ?UC$xSF{q*!f2iWHR;C9a=u6^oBs zIrO%#ZK$J2j7Vl4&WNwH&AR+_zNgg~=^Zj3`nz^Q;JQ17gJ&sSv{)Z{G%aI}F zX8J?NVVbNcdGA#ogXOEY7m^-$#OYO}Z!;nEJn}OLjd_p<-XKnEfn?WilHFdBv0-eN zmCN12wsLaRD?cHv-|Wvg(;Qid2ca5YTQS*VAQaPVcsuX=M->j`M**ZS92GlgF!YZy zzl>LeF4g8H%fGTssClMLizi!VmZRo~+jE4AGcRU|V8t$bZ6*y(0eWS(YH&Bi35hqv zwsa9szpG?O+hW60#@z5vX$Rm(8f&$m!nO=hI|XJ^3H!)j*l-WZ zJtr?#X(|p+CkJ@GvPW3xo#J1RkA2RN9vyX*drvlGwy%?Np_PXN>h1#H83RLj<-mcF zb27$-H*FjVcakqW0nN%F@QN$}NTIa64FrWAk0;d@?7!4~Ect~jl&L3U0N16}NT&X! zDz+LZF1SKNpCTtJ1EBqX;x-HECE|@f-QZiTyN))+y`hT(qU6LUsx#>*+3UkINu;&C zw;1`JU2vcPrm?$nGSYjBZ&X}9T*G!fX6Rui1;~!Brc7XnC@Ysc0&y3q`z8MA@{fZK zjDS8}z0^B}*qQ&W>1#4=z~iKlDN<(>8wyxnCUCL33^aQ7#m?_cE?YMv*8nXG7&m(Z z(s@hKyS6I-d(Xf%a;fXyt*6TGJpU!EfS2Co*ILQ_2mh0>zzG!pTaw$k7wa?`|Agc* zy$H}F5RAAzym&A7GNW|Was$OYz7Qt>#I9lG4fsg8_Zi4AAh6PnnxKTJEE~plh+HI> z^eF;QPppg2up5_if8iK~iko}+qA*iij?k=Cc-rNZ3r-Oz1*o)t%R>{NFnPf)#bN~= zy8t67UFfM1+$@3#+-rG`aUkZ0)7h zC6ZY5|Jwu$>1l|=-(G%?9^%E9D)#RS^uyecedyXu>7|SwV6}fWH}bkrV|Ud6LYLv< zeY(q>IYqmgexv)cZ8&A9?7z)5Mf(R2L>Ty6u3jGTxC&4Nkh)wbK=1wa#Xd8v&=$aI zxwW?#@HM=*Qyz{bfx>iFE!}`Qu&v`91&?=YL0_iJOfa{?+cT83T6Q` zl|oiW0m%XG35>}JGy~@t?iXA8zZ;((boFv-7UZul=J5})OnO43#Gu4{N@IQb#%k^(;8i>>c*ozScg+Xm#lSBQNL>6bfOLgE z`4mauXRhPJ;nGnI12hgGToV7v&g5N=#Z9dC^%kR_x4IXYMVEwbGKy5hMDzMz>@#)p zPr8s+RcWR`=0KV2VL}_6-^sHbH3ceui0Nn*DnwH8X3=VZG^j{qd9$e7c&~q6U6XTUbWa zM>LBNfrt#^?gY#T&cuDK?ZgiutXDgTYEkK1@oZh$_3yBYJAVZ|5=J)1YVbPL~xzM`)2bf*U`rR0?Vtsx=#RQu7 zvAZ}$T(JaEl9BTC7G#D&-3~MvX)ZP&*+^x;&rSl*yfoN9zRe%Grf#H6kwb{^Wc3Wd z^or= z(6K|2G&#}O*bc$$j=Az-l^h9U)qqw@qQ{Hu;I{Kc9|qUD>HQb|S0imDzugk{Gt;BZ zI`ask-q57z0^4Z*V>gzYf%pY6rv>tK-x>cI69@t$`>UGB1U9NU{UtK9RV&Gl%wqV& zQ=DRR3baOS*BzN&PIz{+2rFQpM-mR~y)94K#z&OZx}&*o{KzW3=+GXd6H@Je{shyw z6_^f|?zvG$F{~rM4o19NeWXJRMe0>|6e4QM!5mFO9^ehdnVTqqd&oE~=DfD|jzFy0 z2wlIaU`_pvtQee0G^X)u`>nH>m1)$E2FORf2%v<^*ZyslsT1KX1UCK#TfD|x7in|V z-O{+s@FK$Z1#8G!$fr89;OGEe=;n>j)|v34?7YhG2PwY!IH1T&xo$;gk>2?@BeP~4 zpyq&Rxs5wo(Zlnq#pouJ7f|iQ^m{_C@zCQ?`F?4~6X(Qj(@XksxQCQZyA68; zGcITfm;GA`xNcdl9FCF)xk-r|!3sEqd3NjlzgBDqU|iY4VX%v&@#Q?cpDR`kXmsUu zYNs}{b6D+3;YpIH5Tod)c|_8;%BZ#d#F{T~$_y%kT3$=T9*azf$C+2%CQC?ORbdNc z%6f&K=AAKu&yBr?Skt}}W{K^HN~l9$Ut@LHo}=#4Zsba)F^_oBXAlZ!y71rs`lM)& zCXB`@YexUueue%TKVWvS}P_F-? zZvO{aR$-Zy&@y$b*_*SHqK6L@WfoV0i8zQRK+7N?9dLQepR%+>n?syHoJV9w_Qwgh zz6v;x+#x7b0L_I~P}rly4k8tA_NM8UCy<_zJR(^^7`5+FD)gWFNZJ-U+>lNgcqfeJ zMhjZp9G0r&hDv&|U(qkzW~Vx#sHgi&g`%VeU+p5=&O~$*ye$;0m_$te*%9Jv80Lb^ zgrAXHNK_$h#F)uD z-p@NjwZE-{ExA`qgE$00cG!Fe8@c01M)YNJkb}4aC#S>5eBV4t?(LH=qsPcWWIsl@ z&AD#p%9@`V?#BJXstJ&iqQfa4D!mYq!M(>zZ74JQK@!o`$2aU#Ww=k1IYrZ#Pn{<#RFmi39c`TJ?PxOLJcc~ zy@3ia<`Gx2qBxN%qkj40`wPehfyQm+lwm_)gHM|OOK6-KuwQ(&t1zGr^6PHUQPpF| zd*g%7=~5}yc+i2G7e7w*APi*&fYs7F75^a`^fNut(JDY|G)1cCBQXr&$rhy^{#v)R zHHQr>W!3*OXx+Zz2yC*#E3shbdsthDg}_t5E!Zr{QT>2}u^ZrRk@ZWvd`trF z#7ZQ-3k<CQg{YbWs#@BlCpE9rO&c(=&@<+>Yq1=twa26!-%)(q_7 z)-UVw{UmS~usC*{zQ7@Fn_ICqEe8Q>0pqYzEx%3tv+}xOfzr0X0PKA~fqho-^LYhe zA7BS}{CBax>%@}pTtq~qii(w(yy4alN!j-ump(YQeui7W1$JYLx5s#rwlm76wJ}-W zt$z+U9P1hyKi>H%`8y12oEqQ$R<}<89Fwwdl42z$V1Y&eTpU@q4)AtD9s(?oi8n@G z*`>V)d_R`|x7;?x+L){Yyq0plSKaaBmcXi};@eNhN`F*hA|fJnQ_H~QOW+c$H_P(C z?!ad*?WEW~r2><$uu_|!1H-Tz`mtD}Qy&CHeFH0@SpfVPE0O8$@-PATn(7871>ggh zex_SD5cnJ$yXHz@T`UL~2HfnneE}=s@O)r0-MzOzyZ5#VRssU)fk{uozuANCe9gdm zz$1j8Z#*cxB9b-|8@O^Xa1G(-q`*W(MCziJfyqq?`y4=60uog!FbRMY5{`GCOFJ*N z-j`mSov_aqkz-aPFew11Mvl3uTYoWaOHiWwJn7Q+jjZ>9Nm||^Juvx!TmKHwE0)#^ z>tYYe%SxbZwbg8~x~5vikE1}2-f*~8kTB;Dvr1txPyZd10qOTQJ)QTh@K_(ww!tifjWeUiTNNuIn2a@= zP0QOx73RSkLF+-_eEW|}2!o6@upn#>*7!DwFQFKckT#9MMsYXtw(|GjCbKtoK9fA52*N6m@*nawj4pQifu^at?OuzW}y&>-rFmOgfw5y>ikX z9OhtSj6{_)z*>@x2nTJ88WPFJWmp&C4Sn2R_CInG3MbV#9=emUG7nu)oVkSUa7C*z^JlOhhW6#;+nB zGl#IcBi^&51=tHXn*Z0{-J>)Rg;5xOTd@-CBBaa?T!CQrV4cQ2h${(Lh@}Lq4H1zL z5L`kEQ3M-*8Ve;BXC&rlA_;^@c%L$pOET4bbMJTW$y@yvNgHmGjG1>*%)E|`J0@@3 zWeuE1OcpI=>B3LN=Vd!h9*gVuQ?6Z;S&KT!oOvN9p!OLqv&^&m<(xdUdvlEGlAN0Z zl0#D=1;Ya=23m|Zs{SMg&ng6Fr3>GYzK{kvDR#T~oenvD_HD|TXJ8jN1op_*>vr+| zTXLSt#~=48Ns<<{K_13m43{n>Ns^XopJe3xwh5e(*_?}s5t1ZHOL9Y&F0O!6;F2tn z49L + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Tuning Period Time tOff becomespositive Relay Switch Output True False tOff changesafter the tuningperiod starts + diff --git a/Buildings/Resources/Images/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Onoff.png b/Buildings/Resources/Images/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Onoff.png deleted file mode 100644 index 8df6d9259ae532c5dc442cd898fcbad69cd6adf5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9672 zcmd5?cT`i|mJdw`9YPUAN`O$L_a-%z2mt}$13apMCcJo!{AepL@;?=AyAa9W^I42n3=- z7{JXyAW|3zMAAt`21quA+d6@NBmrjn+MvpQt`*>c+)WFq1p-xP&>T8b0BuVbjV|c| z^5g&E_1|{+BZQ;d|EC83Tm3%<|Fi-Uxc~ox@qe;RH0#&#$IHLo{FDB_D*Pq+H`V^N z`_JF}0~SbuX##s9o_pKm1z2LEL7*hWjXN4%ManLZ)hLF5!vU^)gy zCRR4~)7(5zejy=IF-aw5H8l-QO&z$d0Rm}aYiI9p+1d4)8_L@U9S{^85*8kLJvur% zEN=MI~hwPoF)1QCnC4s-da5xw)may`%F@S9ed}yZ*tU;gQkti4QZM zKFt#5msVE4d|O-J*!uBvckkfv*HJ?HksW{sj5e?d0D)v$h<_x)S8P85L;i?>Yh4O; z{8oTz7Sy-s(&x(rkay2Y1A~Hg9<6`*==*v-dtNF1-?+s6{P_dIV;9&O z7zlF4#zA#-A9OY_eoZ4qH#(2hg-ZPs3xp=}p%VkMuUt&3K9ouje7(veKPz~z6tPUMx^Fak#f#Lq^(9Ql zVp**X%)+xuo<09|9RB7Vtwgn_S+0xx0>-86<*mXZ@XsYC#Vyn35Rz-2P|jZ0QN6P~ zDj(z@8P;=}1;yJp?8e_2-W;mI-jb3;RBN8LJC^)`M&nh3ioiX6aUz96-;dVF9(J>v z2+?up*JcmtF2f#>m6;UyfeYvrDJEBLW|r$23<)xyrE;K8@2x1_YkAT}BV*v^yduS+ zZz*uvomv@LgFQY}OiGdN+p=$2_IXYD1UkE56nU(f7Wk(Ds;_?1%yGR)Q4 zHD+63Lbb{n&&;sT8`5!OyiuX9i{y7=6Nc2PGQH;fJF(rN)n^2+xCE-Z_q`IG8ug=) z3*+~u6~ZnCbHR|Rg^EE42>MNy%(dbgzdn-NIpdcD@RI8j@2)N>WVEcri-`%-56Zj^-x!Ba(OTRn@xg|r$6K|- ziA}VL)@g22b}D7MecWYMh+nfcj%ldNEmfnZcl@Ab2r&CnsU%?=Ra@~t!l}-=s z<7y7wDNs7c?2k_u*=1}maKDl{bfOi0?B^)>?%Lc@!yNU`bC#^g8G{G|$hUrx@deF` z@(!c+14fQy@9q_|&T6hxPjPC}&q}-VCvA@Oi%@p@zZ;7`Fm!Bno~VQA6_@+HsIj+i zrY#ALd*)9$j6y9t|)nSWd8 z96&Vm%rE#WRM&SAm5#*y+07)Z-#NEZhZSCK*gy;eKJ8{7_E{e39Fx&D{EE9b;^4sLS@l z^f2AMGCAqB!6EVxQo+Le`CQ92PjH_zUUfG4h5JpZk+|Ke;kZ1^0JyLY3n9Q+W%Nq8jOwR!qa9rW^(}VvH$1tzusmB9aJt`!KAvp18W^ z2mi9K{ze9=Gh*eK=fdBjPQQZn@rU?!q|M>PXjQfEkBL_Hv~7^q99;nf>5->~UkO%X z{;8}zzqWS7N}ev;Ki!<#;-^=C@b#^)P`|nXq`5#Tg4ggccYzs5c{MrDw`>lgR&}Oa{;+C&X?7`1+n<#qlfT*RVa`JG^kk~@zb)uGB2)m)` z7rre9m>hA_B(~VmS`!W2)j|T!0#DZfZj5u8khH!+yX|U=b}i{G)0*K76VgALFvEkd zhg2XO)g2qb`1K9gS3CJY^B;l1NHLDFj@97U+SE%w8b;29$4rOtjCW+38dmrSbvDLN zHu`*K(fXljk8PhU!t{KLAE##E4AmYwl$z2a{WU_l9DzlQFI*0`b_q~j5v!F`x}SDb z9s49Vt&XSY>!^lZ^bM}>QM)u$(tZ4kLRSup$cV}wE`F*-C89pmQ*&brX-Yb`YH5A= zZ_=-POU}G8m-sRp_J}eu#XF}{nf+p%W*fPUOb6UPqF-+q89n=wd_`ACm6tggN-iEX zTKt*Mq4%YyzvC=bOgz|*XQ*1l(7;nn=Cg#>7RMFT=6nnuLw{OcOYc~nA!t#04ttb{)rJ zOQn0p`F2bfp8QvpD|!}}4^h(Qbtac|jHx`M&-`@+E>rX4?uhxXrc8yr)BYLTLChZC zZ}(>(%QXei6PaUmFc}4>3rsu)_c0cwli@!9x)1vd%Wc1A5+t=` zVDZEf{oeyh?BMY?(ng!d{=#j1p}Xq0kqJB9yvuRH$1KViI?qJ~3UjKm(l~GMZ8E@HO=m>=deTqm?XVmn!K!D2LEA}5S6_8sj+HNZenuc4n$xPv)i z5ANW&aY>1X=hZeJJZWo`Mv8qIO$6w0gFljtXEbT^6z4o$GQ<2Cf?}X(zcSHM(4K85 zE50PuVwV&8m$HQqorY!&mj+cW)SsRh6qgn)2sFvJ=TlQZ4O)T#oMpXL2^oC0=@|)5 z`U_mNCzA7o^MJ~ELVI$49C45qd!e%?7PlAa2*9xame_~N;}=7NcDbO-mx-_}xao44 z#Jd(ZgntVvlT;bSyUr3+ehavLXOnb&e%^~x)gVrWs7d@X;P_)3Bv24}(c&dwF++Sp>}@~KADKfHpaJ&lKLX57rA zi`@Sl+u^4k7xi++CPh#Vu{_m{1wV5caG%QMwz0 zrYt5ubd0(4i3SJ_5F#Nkg{$;Bc3@b*210#7pod-Lg;A??3szjNb+uT^6CV+pM1DYI zjhBv>$B4N^>e~bF16;#BttmeDwwR+%)5D&i{)fX4?{|If?rX(PKgLwJl1_&Zb2qv$ zBPkR5rmbgEX;vK~7pB280=i=yV^8uKI9HBS#X}QMW~zo z_g56e3Q(^}kxIQ)qS*rx4iFN6Ja~<|nx1sIC3ZlR#5=@u>xgpk>0)anbvBiM$)3!D z$M=~a0FKAAi0N=*JitxQU+*!FlFT>ZCkdLouA*K6mbynD8DnoY<75zht+b}ys^@%$ zA*AWb_4op1Uw|@G)jExuTuk zPnbjDWhoA4qceLit0%^cDJ$;60S_^;bH!i>55M7PgyGwV4~Lx zGznYYLPb#KK{etML{qQPtBiL@y$ zVwLF|WBlR4{6_b`I0PHY=weMxZH51VHp>+8&|L-!uvc?8Zo2y&2|xtYH2V>bHU*#~ zS=4lB9b(narmpDj1v~0FV6BzF=>l4>jNSz;obB(UuJat{WqBcNvQ1JNo~H` zrNKr$fso^ICNb!$$MFxgFnx zZfgxNy^+iEHx?DZkeo}L>HIm>jpF>F!6?^!_lQ*?5WuFH9i>T9?(c2JXG0f+Kj;f- zZ$2Z-!*MgN=yl2VMEf9RTYkhMXEf|o2-ef;A*+lhv{5!^O-Saw^MFI|2CH$SRVA5$ z_ULs5XT&uRXqD2(^|^=}SIXKeksJq_b)x(aMtXq&m8aiJJ|l*|AfpRmjUCL*Z>{BM z_4VUM(Vg9=eK;WSGQ!xxr!< z3QU0j@?}-v<%Jg~)j*~sQ!Ew*4ap=$;85ARS^+|X#m59Gr7e|{!jflZz!pO+AY~9e z9Nctp0)vtX9N^*zOCv^gxsiy#!fZrWWyt1}CzzC2w9o?+rw9C1Csi#6k&ypGqG?Bd z@~;f~b~?=aq*Kj*&R|h-mSG?IV17m7q!G*8KN6H!slF{;R`d_}|JAMc-MNMCpZnl{ zlp#@7YUOWk=V1Xm9^qAw#e?4x@_$z-(FY0n`&d_O5s5yWqoBRM`gbwaqgMX4d{KyB zhdxC{CW-oweq6#OgqR!$%T+YJ#h=Q1ikd^PdgzMgtr+D?ZNIDR3agBvO9{f{)(ls< z^KX{CSfAbMFvg0TzFfM<^rt$TcUKDB#s$Jx-WG}e;o7v@8{s7{0vB1j$njfKkoB1) z<^>FKOD<{k4@7lk1sk`$V7d5qVL*i%i zq*n9pGuX@Yr~bfrl&SMr_`HWSnzSJTiPH)C?KKCV`73BNQZT%|v{p&pB_)NgU6YBR00zv1pJWY#GP3A@VP7XID@gG({=n9Pcw>>B`!vL zX$Ov{cb^bP*keUcqL7wNrcxLe)N=p)AJI(~vvHO*mF`Tk>^hjm$pXkBE>I=frZN~E z_eV5o+Wnzf-N$k{5SYsjrtw=ZG!Wi>$wfzT#uk(b2f(Ii6RnExo#N)!A3de0gFTknyYpH+l5)u3 zo*{&{{4KEU!YkBq;11nFnat$FOm}tQeVeGdn`JV&?GKVa%w9un@xVG8xSA4C%1vC3 ziDfd9G){V>rw-)Gih7!pa``Q=xk-||w&|2@6A>|m*mDFDxc4A%EE|5I{)|w#8{)u3 z;LONq+Rywo8LI63f?sx_;(#CT-Lrt79<&eujYAz%Mi&m8rk~P_Pd>0<);o`w-mfxe zGVl-nQAI!k13?mMfgR#?!jojt@9)t(c!i1g0(SUM<}F8Fm=x2%Gdtu&%Z8zffaQ=n zU~G|6Qwe1>trK2 zO|PnZ?+ga;e#C*oE`RgT{BT- zO-Q8i$dJJK)H0F92fd#k(-Y0U-f$@P*qYu@133A*AqPzA*}}9ky8Bvsv`Xg*kwu6i zh@G?v_W63kGQU;Ea?(1VZMN@+NRA)=yD+>SutTFrw!MWLq!Ywxzstkf%kH-Ic(%*K z4gI4+W%1<=lMC)^Twb2ccg3`=ATH0DGy*04=UbTO_zBm$$L6mS_>*rhI4C%Ms*`M> zG3EDiZyVs9$1#oyXuW(M2dM23o&##n2|IwA|E>bQJo4kJT}qP7eef5)kTh+`zTBRi z!k%toNPxj?XoI5pYW-%6Y%y7zVJ&~iisMUqtrSfsZ`5BQJcEsUM5%G z0*6HQ`$juemNTsCaVVRawkXR$YM$8{9!*zC->lY;&URQ~c;rs&Q5)oiwvS?4{Og_) ztGU&m8yNNxXUQXS+lbJT!mI8}6^Cl2wk~#%$YraLi?VB_R%cUEe8FE7vqKt|ZsF|1 z4Rg7T2#INk`px&R?hp8-sYj?2U-CK}E91K)&R^RhbEf&egl--hpG!YczsHlv zp2!1rc)#=rE_Js-(8XE^f@%lS`4PNUA{W`dO379W`+ai@E+re-B%bT4Fb5pOO8%tOQbLBuG6TFE+QW%J~cFPR3ZKc&UuvgKkHr?QcbGWlupZiD`Y?n5^PYE$ZO z(DiVk?#;Vno^9hv7gLzNh^||Tkp!DX@arP(iL%^N+AyvZ-bp@J!ZY}2X-Z{LA{f^# z!sz)W@n~SfKA{q3;M)5k`MU6+=U}ga1YI1Yb3W|#HRLWQlSjc`dDs~muAgSAY!<6o zg^~5TswE;kmi}-xuCA{Bu!j8&WqgkH_v<);P|F_XK<&45GiXt#L`VH03H_5Sh`$BP zx$VjMC7d&rEmxj3e>S+1F-K_42*)D0e9aHdRi&;LUVRDGtLvvq!L-)Gk$29%g+vD7 z|Ke1`B;GM;TkvQUYu+@hvH);!sp zf(NCwAfPB0ye=bwK6@~A_LsjBWdrg+zC&-|K6sS0kY!o@Bw>t@b&N`+D)-H&IKEGb z0~b z@K|F#GG=C=q$DD3c7>h$Vya2+axn55@en}eh351y?xCiExPym>Zm;W8#afX%8{CG? zR(u#?*FOL3n1IO#`5s~>_m_MxG3(}VFV&o7V~?eQ>y9>MP34@5fjzq$G4jCMYxun} zMBR|nku$PiE{6qPmn0#szj^_4rH?VUA0@9;pl|&gW^3G}y@$ek+itN?P0d|kkwG{Z z@1D!9f9wIh`oK{}1$Tvp$FmgU*qTN+ps!=RHTnklE^3_gGel>mTX+7IifffEWRz_q zXG^fJkcG+&oM2^3U2?I=-wI`Rv)7dkse?>W20!yrdr@=iJl)(vSSoVa&G%!;K7$@Waf4p8=0a~U*Inde5uM6}q44*lv-~JrRJtfaq$4F&G>M+<_Sq7YwXu6!L>`5S=48CoVua_du z2**O{=!;q0O=6fz$W`_bKiY0xz8bfT(hIz74up96a-WCsDX~fTNQ3>Sd1Cve-h{7bc3_dFyI=Q?zvYSx-ia+&OFiL;S2ZmtDF8i+!T& zJHOP}RCI+OGQV**HT^kzRD946|3hFmu~ebOTnamPSH+ z?cjJg*dgfm#sF6*(62`WOIhlU)hB76Dy;T>oZ6Uu z1r`fZy8@9{bW{~eOAjp~m!Z-+kQpXF6A3n1xvcoP+xAjRz#+UM%f9Eo^NSK=3kiq) asGD{O;5+Y|Mc}tDAcU?lyi)se?0*1~DItge diff --git a/Buildings/Resources/Images/Controls/OBC/Utilities/PIDWithAutotuning/Relay/algorithm.png b/Buildings/Resources/Images/Controls/OBC/Utilities/PIDWithAutotuning/Relay/algorithm.png deleted file mode 100644 index 25617c41edd4bfc9f940e9bbcf20543be5e7aa47..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10516 zcmeHtc{r49`>;r8Y%M55TArfEma=3Ip;D-18H|iA%vi$M_cd#qK|&=djNOee)(P1{ z7-sC1b*wd(!Tj!-=lP!R_Z{!^e!u6>?>N5KVP>xTyw3f+uJgQ>`;no(F4sZ9gG@|J zT-UE%y~D)BOa?z%>?|N820hXN{_OL(qpQhO*ex^%KJ0hUxTV3wRFVYQv1SFI$%Z$L zw83B6KluM!v_F7X-J1WE!(aGdu6f?kzstnDpY;HQlj|rS|B2s3Ma3ngq-9l9uUxrhWa8|G z_6rON2?=`?`yBJK09#cL{xvie@s~Sc=aB>ERzl5@}o%F3so|m-lT+z_1Lj-N*K@N)jh(gF( zw9#lDgqfF;k*C>|`v$9x+x!E^J01f^4=UP33Mp=m8fdbgis1bxUjaUe29Vq{&5(iw zJW9wwh7|hCoDk|;+m8*pMdgcr$TaBs@N&t@X`+8@VE+iW%eEtzgv;c_8O5GiI4Y`& zXJo8%t1vgUMJKv)ZSUn0-rhV%q-=EPS5wzGMCK8S+jaRox+jNR zxxefso~yt%z_&gcRiCu~8Jc|*5hfJp_cx$e@s?9#a5gTH*N&b-W13}>q9#QAXy7oRC&TRGk z^A>S}jzdGXIdWxob-G2L-~ZG*n|srPk!S6*{g?xW3s`L=V`}VDy8xR7yT%RFZh6DP zprO?BBO9f zu1=kVhrwKnQVz5_CA=&cRI5Z)hKaDJ-xFqgN)}kP02-)Q+EDC`E=BBp_dV9Br65)*i z8VK_$R8D?HX|&n#G=5ALiJNbKLp^-RnZ2w4n4LWPF8SCe&-j`%9muQW?a-9YL_|id z!ouv`@n_a`LOqX8Eiwi0S!XyoK)aNNGHR3fVn=h9rU_yM+2**k51F$0?@&*K^>p-4#WD$Tsk>R%|#$NqCDKMO#37BVHZH z?Uj>P5QsdZhVJ@|%?qc*C`J9IlE;%ruOG9F>5LmJ;-3#yMAnidWyvOh)$G!cO}t*M z$9W*zZ#@6xjl+9q40D*5K4ehvqTcNX_54aLC8Q9#zOQ>#)e_$z@-@aEk%2>&@(RLZioHJbNzeAFwZj)L3u_|Sw5FS#&s-$e~Ktf#jLbhl5)g=7GXJ; z2ve(g%dc2AxLV4Ncxj9s4{TG-4B6U8b;`S5r8@3<4n?*~uHM61hCKq?ikC$5h)4cX? z@nVz%eo692q-GZ3TElqD)(2*KU?e=-KET;sK!l~O5N{d4OF~O7O`Vx2rGuD9Ku{-- z-O!Yj8q)ySfk5Xif)qbxL5kq#({pokG30&3TrFGirIx9{2ev~~d#CLccBGg^u=Yw+ zN=rFwi6s|;)0mFVZ=%XRuBTX#Le4IGY8gkBi^fmsP`(JG+>W0uC*2YD;gMk%01@k3 zFyx%03UkI6YOoWxigy$HN!sxZk)YfnQ=~$xZ*w;S)octT^(2#FB$LgHE)gTz7SdFh zYvjY|X1&IhPI%|`0aXLiz~`K((=J=&4dxAtB%@Z--*595P2T{GaE|R=>G8Cg7ij!Y z&ZjLvOn2VTgWP~pl`;nm6-#=(u`FqWdztU7Z`oa$+v9g36yoc?Cz7SyZx`SA4Ct6I zn_fVfXbv@M?d5a{rU+8R`G)rnxPZ>vWxm@7v41JR`TW!alzH3(85obQ%Bz@#CU4+G zZZ6BWiiNj?p!i5A>JTi!rZ|dATvsJ#=wUyokvQC1*>40!zS`<#>;(8%8#H3V@$Y^n zX-(`)iT8mhfC0e$-~%cv?nqG(jk^0^j0zA}+rIb-X$TE84V-FeCY96?r(AMB_ZUi= zrsW1o8)bLZl;U1w6_t*nISWxdIiX&*y&B0V*tk`f@UT^VmB_Ae)ZM`Tf|svgVvf%# z8W}}=FZ2dKS705PQP}6r==vK7JPxRXb6`pyr0xXFJT&PcnUX4Yz2f`>I|^Pdh)v55 zhTY~G=J3KvWv4i;;>f>rB_y5eT}NCj$%x`v#MS807UwE)DodQQen^qZZHwYB%(TPT zB`*&=&bYs>y1BUP1cYfXA$HA7Mfr)B+^*U-d|s3e&kEI`emyByy{eI^W6wR^hSPEvniy+(no^kh*@oczMc$eG~V$% zb{XRHt?z`dqE|=d^+M?GH!O~)^kc~U3LyUbcjdEEoW*+;&v>k&)-ZLU?Is&JUV=u# z7YH{7WL%UM=IwneiZ_WP@M1q1S$%h`+!Pf@c4VQV>g_do?p#tmRuMpLs zi%(eYv2g-g^(QJuF&CDs#bJ+91dGuNGm@FS2kuI8G1F`SDqB| z=|oH4hm?`sx765Ad=~3~pTNxfIVS;?u5~ksmXjtA=AG|9*+=Jkmt;;n@naBxxj9J= zx_|w>sH`qTcq`UKfq6=bu5zG>3Nhe}o`}+!UVm8Hz7C1@?JCMJMc z7UV3}{-eUseiJ)nfqmW@^xR-0TOy{^zYL$9PhOr9+QpavaSpHMLmJT*_%8!zrA-ZM zEe<9Q#9VJb6#oV&6MQ_RF^(@-8*E_hWcb=mMD+=E|~xEx;m>7dm^ zOk9)qm35~MefKY^Oi9u$T`l zi;qlU#IYOpYi4QOLxI!EFG*d{q2K_Q;_m6HCep|!*wisJ7lCpbYcdE}DT(mY)rfME zZ?T#DU{(h0IBD5S1;}s3^kSC^V3$rvBc)Ae@D%1g9rW;?5Zzd={9vnBeh=1029HpU zlZN%`rp3Q#kY^-!#2*^V7#^2@pL}P6AF3QB+?1C<){EVzm~c#!#PHnxqb@^?cue@EgW2HI zO?g=;N97ag>T055(Rn!ys1NYrvA4%Wk|<6mqjp!Z9Wh!tF%b_`SigZ(%p;{d;~@|L?jTkE35USMb*h_1OF%y+(EdzdnU zhRR<#oB8a{1Ynd^Aq*AO;oV?}K%X%6T>Q2?ReMw~t85g~{qaEIwj^Lh+mw@Fb)id; z!R-cLOy5|>-=Yg)(vQesbJ=-IJPs8p``N(r*ibT78(G}wvJ9<;kOCcFlf8mz(;i`* zHm?%H$ad*iV7k|Nij_{PtEfe7EdLFQaCrlPbRCTAPaaurLjU-*7SUq(+NBXz{d&l* zOus{FTNy7vSM9`QVSi<4oG%s;pYqhb84ZB`nZ>D`da`-}9&h}-_DG&L%2i4Pf>#B( z7YqBpAucuJ{ zLJg3boVlLndq3_@;VUw;S4Xm^5QDa!M7->$~u zmV`qCFm-~FRMQ?=)#2Wj9lULp)4Z3&=GLxpc;+-xdgdGqtL~&^UDS|S9)^jXp{ED* z3h6})?stJm4Ie%K3?e}Ne%pp}-sF+ber1+W<5&l9qBWvFKXVQPvVPM^)Ma1X8!u6n zryNTd8W%nUeH4tg5|OUkPfvR`21Tgm5k2BoUcYR;jsJc^QUc%dZ&$q;Ci-l}lYxm> zws?PlD)pfJ>&L?j;(t^C{X_k4xrxxN@RglRG7cY%8PGY^$I$HLdov{NMKKUsTmaB~ z8W1&JR>%#@H(k>FJtNDB?7e*S6e?=rb<@y%iX+dyh-J>v-}Ay`2}hags@$mb(<{!k z*TU#N3r&?JnapT=_g4_~yHH0oD*;_Zjn>T}Ja!7tFc8*4MhsV=2J`|3l zvk>O_twqsQMvu2yOZS#ycvTsWn0SY=E)iu|G%STaKsWmg5mI%pCYTlpEq_>cZtOT+ zDP7=*f1^7sts&a{jX-4!t7tX_zA2*f$mSe}s>)9ASF3bH$?wC+dr z$|o=~Tz4DA9aJpz!G+sJv@a@7V#&cTnbO7|uCSE$4O3w$gJ{}U$-NPLi7;_@zId>w zSe84V_@Yvip3In9Hxr_Gfy+*E&n??F!;fAnDKGWtt@z57Ncl#~HeypQq~tgIG4o=c zAUIc@=#m8=q)qBcbQIoqFCW2`^P?bfWUt1;jPx%&ccQ=ZD^~{M&Hqpa@5VBDKxe>3 zv{T=SV?fIT`DP3akP2I?Obb9QuB+cc1V?KKJ$xAtyciud7T2*y`B z6U}QxN-~z^-+Vw9kER44u|95JBK(00cbZD3R~OmTXh3cVmX(kL5XLM7DYN&G(){1! z^0SX-mI+%}$W8Gvuo@KZcK(!Q&5qjM77=Clue-E}R7(Geel3C7wn9q+RIJa@DVDc- zMDm0w;g;X<9-3jxgn46&tVcT+F?}$uJAup!=NlY2aN3z@6Vc!I+H4N*%y4Ol^>g_M zOHQ0MwNKEvGI_l5&CF6^)3<|pqe-7<>TW+wX%~fOrYVf#7iyX>C^h-X(ImG{~d6#n*1@ic2yzm7ZeqIjyQ~N(VYX?2 z`EqZQw}bmoAC862F}j2G@#;|$oHQ(^69vXTu*#Gv7q;mlwFDd4U;@LaR03x@uHS^k zXWW`f5Xu@9O5LC*u?$nmkY|zs3jE%ZI9T4>dcsq-)#9l)otq8^m2K@7aVEfE?-&Qnj)7Gpdw>wpU~nX&2zK(Y&*82`n`Uo z$n{8YH5MN9ob~a*2UF=KPHkx^WF^h89vHPy(A-S{)31hl6_bAT3YIRvuDWfSEss+^)0?12)cT=E#3pt%z8yzj0@Fo!;wJOuxuzir(7+lGN9r9U zDoNLHO@PkR0J+cBT?vEF2%T+>BpYo-k$Vwba32mZZa?=!CaBT@<1(g8*DOgDVimQQ_h{N3}##N z%oB!(&~0lpvIkUAwv0{I$BSV+z8-B*vv2em7RFC#jR~#k@GCNeoY{P=5MBF3o0~q+ zKC`QR>pJE7AF}_rM$0v={dY?5g|xcsTK7EY20T<*)x%IZK`PT|p(5z_L!OXkiSFoTS1+Uh(xt5q3P>wkp89kbZ?9Z%Ibl-1`6yZ@UHpCe zU@;LTp9CJi7`&g95_Pd7AhDS72(Y?p)=H-UBHX$|Lu<}NNX`HxlSD7N4DgZQTOR>o z;`U*$Cn_&o={vepV<}KzeKaMR{7X$W!qs(pdF(S-dauN6M9NE7wdH1iPat>Qvwqk? zLH>Me=jK@BYq98pYF&dz=-vYyvPC7s^@w@{0dOKWH`|a3ENzs2ieQ;$LAO7Wj1CSO zM~D2bQh$>!EWEG{y?Q|bsn8L~<%(1nGRVDCp)BAGRMpag==%sy@b)LVx&kdAkwp2C z-T(cx7^y#l&h80$%32B~4Nox_1Qb3-lW?2LFyf`hT`mb^{0P_rF7^AB>x_e-0tM#8yJF*3Co|85gJGizgv}V@)OoVb()XpikVX&oZ`4aG zip=y4XFab0SCmm zD@}7nNFKR1Dr}Yd6|Hs#VK2YAlqlVXF0q3D1c8@jGC9?t2sAL(b93IeVMepF2cV`Q zYOpIMih)WmSA4FL9}I+7W{3TpGj*y7>5156M^AA+st-WX?Sy+>`DVB5HGa8*eafRa*!g19d3F)aU3qc0!?aS^}gUkEWjv&zTRY5(J zhpkJnyRIra2Ea0lngGH@zB;G}{fso^*>TH%Rye7^-?{)zRhBl_kSpLsfe*^+1lLRLD9Ru? z<1d3F!7dT%#=1f2WvIIE-iC)oW2I{+V9adpk-+RRNZ(&7x6QmnN0=8K&I41RN$-M~80NAkZ!L>EhE`t>i$tlb(-ieIJG*(h)$h}L``5Ed>Ame+2BwD* z=peT}ngqu`d4;G2DU_M1FM*!iTFuPNGD&VMy!8qBbR-^4BKWi$HGgtq>p+CsFKEx(IaJ#kuIiYR zR4;E|T&BS4k3E_$sldHWu;M7Se9KfMmgh@Eb}8+!)e7^EP)^H9KDsCT+?+US)%+9x zDUXmcJup~YbKC%kTWS#BpkTMcDrd*@05)!j(N2m38&zj04c(iy(y_9!drejrp3)QHP J3pMYD{TGl)`#Jys diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/TimeConstantDelay.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/TimeConstantDelay.mos index 13d8afd483d..f2ce5275f20 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/TimeConstantDelay.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/TimeConstantDelay.mos @@ -1,6 +1,6 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.BaseClasses.Validation.TimeConstantDelay", method="Cvode", tolerance=1e-06, resultFile="TimeConstantDelay"); -createPlot(id=1, position={15, 15, 1101, 667}, y={"tOn.y"}, range={0.0, 1.0, -0.1, 0.20000000000000004}, grid=true, subPlot=101, colors={{28,108,200}}); -createPlot(id=1, position={15, 15, 1101, 667}, y={"k.y"}, range={0.0, 1.0, 0.8, 1.2000000000000002}, grid=true, subPlot=102, colors={{28,108,200}}); -createPlot(id=1, position={15, 15, 1101, 667}, y={"ratioLT.y"}, range={0.0, 1.0, 0.20000000000000004, 0.5000000000000001}, grid=true, subPlot=103, colors={{28,108,200}}); -createPlot(id=1, position={15, 15, 1101, 667}, y={"timConDel.T"}, range={0.0, 1.0, -0.1, 0.20000000000000004}, grid=true, subPlot=104, colors={{28,108,200}}); -createPlot(id=1, position={15, 15, 1101, 667}, y={"timConDel.L"}, range={0.0, 1.0, -0.05, 0.05}, grid=true, subPlot=105, colors={{28,108,200}}); \ No newline at end of file +createPlot(id=1, position={15, 15, 1101, 667}, y={"tOn.y"}, range={0.0, 1.0, -0.1, 0.2}, grid=true, subPlot=101, colors={{28,108,200}}); +createPlot(id=1, position={15, 15, 1101, 667}, y={"k.y"}, range={0.0, 1.0, 0.8, 1.2}, grid=true, subPlot=102, colors={{28,108,200}}); +createPlot(id=1, position={15, 15, 1101, 667}, y={"ratioLT.y"}, range={0.0, 1.0, 0.2, 0.5}, grid=true, subPlot=103, colors={{28,108,200}}); +createPlot(id=1, position={15, 15, 1101, 667}, y={"timConDel.T"}, range={0.0, 1.0, -0.1, 0.2}, grid=true, subPlot=104, colors={{28,108,200}}); +createPlot(id=1, position={15, 15, 1101, 667}, y={"timConDel.L"}, range={0.0, 1.0, -0.05, 0.05}, grid=true, subPlot=105, colors={{28,108,200}}); From fc329738a7453b3e8eafe1180cf3a734cf3657bc Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Fri, 18 Aug 2023 15:16:02 -0700 Subject: [PATCH 108/214] added controller type --- .../PIDWithAutotuning/FirstOrderAMIGO.mo | 38 +++++++++---------- .../Types/SimpleController.mo | 33 ++++++++++++++++ .../PIDWithAutotuning/Types/package.mo | 37 ++++++++++++++++++ .../PIDWithAutotuning/Types/package.order | 1 + .../Validation/PIDWithFirstOrderAMIGO.mo | 2 +- .../Validation/PIWithFirstOrderAMIGO.mo | 6 +-- .../Utilities/PIDWithAutotuning/package.order | 1 + 7 files changed, 95 insertions(+), 23 deletions(-) create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Types/SimpleController.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Types/package.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Types/package.order diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index 0f4565fdb0c..e5600f14c3b 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -1,7 +1,7 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning; block FirstOrderAMIGO "An autotuning PID controller with an AMIGO tuner that employs a first-order time delayed system model" - parameter Buildings.Controls.OBC.CDL.Types.SimpleController controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PI + parameter Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController controllerType=Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PI "Type of controller"; parameter Real r( min=100*CDL.Constants.eps)=1 @@ -15,22 +15,22 @@ block FirstOrderAMIGO parameter Real Ni( min=100*CDL.Constants.eps)=0.9 "Ni*Ti is time constant of anti-windup compensation" - annotation (Dialog(tab="Advanced",group="Integrator anti-windup",enable=controllerType == CDL.Types.SimpleController.PI or controllerType ==CDL.Types.SimpleController.PID)); + annotation (Dialog(tab="Advanced",group="Integrator anti-windup")); parameter Real Nd( min=100*CDL.Constants.eps)=10 "The higher Nd, the more ideal the derivative block" - annotation (Dialog(tab="Advanced",group="Derivative block",enable=controllerType == CDL.Types.SimpleController.PD or controllerType ==CDL.Types.SimpleController.PID)); + annotation (Dialog(tab="Advanced",group="Derivative block",enable=controllerType ==Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PID)); parameter Real xi_start=0 "Initial value of integrator state" - annotation (Dialog(tab="Advanced",group="Initialization",enable=controllerType == CDL.Types.SimpleController.PI or controllerType == CDL.Types.SimpleController.PID)); + annotation (Dialog(tab="Advanced",group="Initialization")); parameter Real yd_start=0 "Initial value of derivative output" - annotation (Dialog(tab="Advanced",group="Initialization",enable=controllerType == CDL.Types.SimpleController.PD or controllerType == CDL.Types.SimpleController.PID)); + annotation (Dialog(tab="Advanced",group="Initialization",enable=controllerType == Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PID)); parameter Boolean reverseActing=true "Set to true for reverse acting, or false for direct acting control action"; parameter Real y_reset=xi_start "Value to which the controller output is reset if the boolean trigger has a rising edge" - annotation (Dialog(enable=controllerType == CDL.Types.SimpleController.PI or controllerType == CDL.Types.SimpleController.PID,group="Integrator reset")); + annotation (Dialog(group="Integrator reset")); Buildings.Controls.OBC.CDL.Interfaces.RealInput u_s "Connector of setpoint input signal" @@ -54,7 +54,7 @@ block FirstOrderAMIGO "Simulation time" annotation (Placement(transformation(extent={{80,60},{60,80}}))); Buildings.Controls.OBC.Utilities.PIDWithInputGains PID( - final controllerType=controllerType, + final controllerType=conTyp, final r=r, final yMax=yMax, final yMin=yMin, @@ -117,13 +117,13 @@ protected final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps)=0.5 "Start value of the time constant of integrator block" - annotation (Dialog(group="Control gains",enable=controllerType == CDL.Types.SimpleController.PI or controllerType == CDL.Types.SimpleController.PID)); + annotation (Dialog(group="Control gains")); final parameter Real Td_start( final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps)=0.1 "Start value of the time constant of derivative block" - annotation (Dialog(group="Control gains",enable=controllerType == CDL.Types.SimpleController.PD or controllerType == CDL.Types.SimpleController.PID)); + annotation (Dialog(group="Control gains",enable=controllerType == Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PID)); final parameter Real yHig(min=1E-6) = 1 "Higher value for the relay output"; final parameter Real yLow(min=1E-6) = 0.1 @@ -132,14 +132,14 @@ protected "Deadband for holding the output value"; final parameter Real yRef(min=1E-6) = 0.8 "Reference output for the tuning process"; - final parameter Boolean with_D=controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PID or controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PD + final parameter Boolean with_D=controllerType == Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PID "Boolean flag to enable derivative action" annotation (Evaluate=true,HideResult=true); - -initial equation - assert( - controllerType <> Buildings.Controls.OBC.CDL.Types.SimpleController.PD and controllerType <> Buildings.Controls.OBC.CDL.Types.SimpleController.P, - "Only PI and PID are supported"); + final parameter Buildings.Controls.OBC.CDL.Types.SimpleController conTyp = + if controllerType==Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PI + then Buildings.Controls.OBC.CDL.Types.SimpleController.PI + else Buildings.Controls.OBC.CDL.Types.SimpleController.PID + "Type of controller"; equation connect(PID.u_s, u_s) annotation (Line(points={{-2,-40},{-54,-40},{-54,0},{-120, @@ -208,14 +208,14 @@ equation annotation (Line(points={{82,-20},{90,-20},{90,0},{120,0}}, color={0,0,127})); connect(u_m, PID.u_m) annotation (Line(points={{0,-120},{0,-96},{10,-96},{10, -52}}, color={0,0,127})); - connect(rel.trigger, triTun) annotation (Line(points={{24,-2},{24,-82},{60,-82}, + connect(rel.trigger, triTun) annotation (Line(points={{24,-2},{24,-90},{60,-90}, {60,-120}}, color={255,0,255})); connect(or1.u1, resPro.triEnd) annotation (Line(points={{58,-60},{52,-60},{52, -50},{46,-50},{46,-20},{-10,-20},{-10,32},{-2,32}}, color={255,0,255})); connect(or1.y, swi.u2) annotation (Line(points={{82,-60},{90,-60},{90,-40},{ 48,-40},{48,-20},{58,-20}}, color={255,0,255})); - connect(not1.u, triTun) annotation (Line(points={{28,-68},{24,-68},{24,-82},{60, - -82},{60,-120}}, color={255,0,255})); + connect(not1.u, triTun) annotation (Line(points={{28,-68},{24,-68},{24,-90},{60, + -90},{60,-120}}, color={255,0,255})); connect(not1.y, or1.u2) annotation (Line(points={{52,-68},{58,-68}}, color={255,0,255})); annotation (Documentation(info=" @@ -285,7 +285,7 @@ First implementation
                          fillPattern=FillPattern.Solid), Text( extent={{-26,-22},{74,-62}}, - textString= if controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PID then "PID" else "PI", + textString= if controllerType == Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PID then "PID" else "PI", fillPattern=FillPattern.Solid, fillColor={175,175,175}), Polygon( diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Types/SimpleController.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Types/SimpleController.mo new file mode 100644 index 00000000000..cb0908a8339 --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Types/SimpleController.mo @@ -0,0 +1,33 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types; +type SimpleController = enumeration( + PI + "PI controller", + PID + "PID controller") + "Enumeration defining PI, or PID simple controller type" + annotation (Evaluate=true,Documentation(info=" +

                          +Enumeration to define the type of the controller. +Possible values are: +

                          + + + + + + + + +
                          EnumerationDescription
                          PI +Controller with proportional and integral terms. +
                          PID +Controller with proportional, integral and derivative terms. +
                          +",revisions=" +
                            +
                          • +August 18, 2023, by Jianjun Hu:
                            +First implementation. +
                          • +
                          +")); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Types/package.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Types/package.mo new file mode 100644 index 00000000000..fb5d1ef551f --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Types/package.mo @@ -0,0 +1,37 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning; +package Types "Package with type definitions" + annotation ( + Documentation( + info=" +

                          +This package contains type definitions. +

                          +"), + Icon( + graphics={ + Rectangle( + lineColor={200,200,200}, + fillColor={248,248,248}, + fillPattern=FillPattern.HorizontalCylinder, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Rectangle( + lineColor={128,128,128}, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Polygon( + origin={-12.167,-23}, + fillColor={128,128,128}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{12.167,65},{14.167,93},{36.167,89},{24.167,20},{4.167,-30},{14.167,-30},{24.167,-30},{24.167,-40},{-5.833,-50},{-15.833,-30},{4.167,20},{12.167,65}}, + smooth=Smooth.Bezier, + lineColor={0,0,0}), + Polygon( + origin={2.7403,1.6673}, + fillColor={128,128,128}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + points={{49.2597,22.3327},{31.2597,24.3327},{7.2597,18.3327},{-26.7403,10.3327},{-46.7403,14.3327},{-48.7403,6.3327},{-32.7403,0.3327},{-6.7403,4.3327},{33.2597,14.3327},{49.2597,14.3327},{49.2597,22.3327}}, + smooth=Smooth.Bezier)})); +end Types; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Types/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Types/package.order new file mode 100644 index 00000000000..10fd40ffff6 --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Types/package.order @@ -0,0 +1 @@ +SimpleController diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo index 3a8eb4c53de..a8af62ee9c5 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo @@ -4,7 +4,7 @@ model PIDWithFirstOrderAMIGO "Test model for an autotuning PID controller" "Setpoint value" annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.FirstOrderAMIGO PIDWitTun( - controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PID) + controllerType=Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PID) "PID controller with an autotuning feature" annotation (Placement(transformation(extent={{-20,-30},{0,-10}}))); Buildings.Controls.OBC.CDL.Continuous.PIDWithReset PID( diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo index 59ccc51e097..2b067b2c18d 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo @@ -4,7 +4,7 @@ model PIWithFirstOrderAMIGO "Test model for an autotuning PI controller" "Setpoint value" annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.FirstOrderAMIGO PIWitTun( - controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PI) + controllerType=Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PI) "PI controller with an autotuning feature" annotation (Placement(transformation(extent={{-20,-30},{0,-10}}))); Buildings.Controls.OBC.CDL.Continuous.PIDWithReset PI( @@ -40,12 +40,12 @@ model PIWithFirstOrderAMIGO "Test model for an autotuning PI controller" Buildings.Controls.OBC.CDL.Continuous.Derivative derivative2 "A derivative block that is used to mimic the first order process 2" annotation (Placement(transformation(extent={{80,-60},{60,-40}}))); - - CDL.Logical.Sources.Pulse autTunSig( + Buildings.Controls.OBC.CDL.Logical.Sources.Pulse autTunSig( width=0.9, period=10000, shift=-9000) "Signal for enabling the autotuning" annotation (Placement(transformation(extent={{-80,-60},{-60,-40}}))); + equation connect(resSig.y, PI.trigger) annotation (Line(points={{-58,70},{-30,70},{-30, 40},{-16,40},{-16,48}}, color={255,0,255})); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/package.order index 3833c69659b..6019a200cf9 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/package.order +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/package.order @@ -2,4 +2,5 @@ FirstOrderAMIGO AutoTuner Relay SystemIdentification +Types Validation From 45bc87478722911629202d63a167679a91b31ffe Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Mon, 11 Sep 2023 16:39:50 -0700 Subject: [PATCH 109/214] corrected order file --- Buildings/Controls/OBC/Utilities/PIDWithAutotuning/package.order | 1 - 1 file changed, 1 deletion(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/package.order index 51da254d51f..6019a200cf9 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/package.order +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/package.order @@ -4,4 +4,3 @@ Relay SystemIdentification Types Validation -FirstOrderAMIGO_test From 11d95961466ba0288df694ac02060e36148477de Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Tue, 19 Sep 2023 18:32:18 -0400 Subject: [PATCH 110/214] add reset to the tuning process --- .../PIDWithAutotuning/FirstOrderAMIGO.mo | 79 +++++---- .../Relay/BaseClasses/HalfPeriodRatio.mo | 138 +++------------ .../Relay/BaseClasses/NormalizedTimeDelay.mo | 1 + .../Relay/BaseClasses/OnOffPeriod.mo | 116 ++++++------- .../BaseClasses/SamplerWithResetThreshold.mo | 95 +++++++++++ .../Relay/BaseClasses/TunMonitor.mo | 160 ++++++++++++++++++ .../BaseClasses/Validation/HalfPeriodRatio.mo | 30 ++-- .../BaseClasses/Validation/OnOffPeriod.mo | 11 +- .../Validation/SamplerWithResetThreshold.mo | 69 ++++++++ .../BaseClasses/Validation/TunMonitor.mo | 105 ++++++++++++ .../BaseClasses/Validation/package.order | 2 + .../Relay/BaseClasses/package.order | 2 + .../PIDWithAutotuning/Relay/Controller.mo | 13 +- .../Relay/ResponseProcess.mo | 58 ++++--- .../Relay/Validation/ResponseProcess.mo | 41 ++++- 15 files changed, 660 insertions(+), 260 deletions(-) create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/SamplerWithResetThreshold.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/TunMonitor.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/SamplerWithResetThreshold.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/TunMonitor.mo diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index 84e188af2db..917a00d82b7 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -4,7 +4,7 @@ block FirstOrderAMIGO parameter Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController controllerType=Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PI "Type of controller"; parameter Real r( - min=100*CDL.Constants.eps)=1 + min=100*Buildings.Controls.OBC.CDL.Constants.eps)=1 "Typical range of control error, used for scaling the control error"; final parameter Real yMax=1 "Upper limit of output" @@ -13,11 +13,11 @@ block FirstOrderAMIGO "Lower limit of output" annotation (Dialog(group="Limits")); parameter Real Ni( - min=100*CDL.Constants.eps)=0.9 + min=100*Buildings.Controls.OBC.CDL.Constants.eps)=0.9 "Ni*Ti is time constant of anti-windup compensation" annotation (Dialog(tab="Advanced",group="Integrator anti-windup")); parameter Real Nd( - min=100*CDL.Constants.eps)=10 + min=100*Buildings.Controls.OBC.CDL.Constants.eps)=10 "The higher Nd, the more ideal the derivative block" annotation (Dialog(tab="Advanced",group="Derivative block",enable=controllerType ==Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PID)); parameter Real xi_start=0 @@ -31,7 +31,6 @@ block FirstOrderAMIGO parameter Real y_reset=xi_start "Value to which the controller output is reset if the boolean trigger has a rising edge" annotation (Dialog(group="Integrator reset")); - Buildings.Controls.OBC.CDL.Interfaces.RealInput u_s "Connector of setpoint input signal" annotation (Placement(transformation(extent={{-140,-20},{-100,20}}),iconTransformation(extent={{-140,-20},{-100,20}}))); @@ -52,7 +51,7 @@ block FirstOrderAMIGO annotation (Placement(transformation(extent={{100,-20},{140,20}}),iconTransformation(extent={{100,-20},{140,20}}))); Buildings.Controls.OBC.CDL.Reals.Sources.ModelTime modTim "Simulation time" - annotation (Placement(transformation(extent={{80,70},{60,90}}))); + annotation (Placement(transformation(extent={{-10,60},{10,80}}))); Buildings.Controls.OBC.Utilities.PIDWithInputGains PID( final controllerType=conTyp, final r=r, @@ -100,12 +99,15 @@ block FirstOrderAMIGO final deaBan=deaBan) "Calculates the parameters of a first-order time delayed model" annotation (Placement(transformation(extent={{-20,40},{-40,60}}))); - Buildings.Controls.OBC.CDL.Logical.Or or1 - "Switch the block output to the output from the PID controller when the autotuning is disabled or is completed " - annotation (Placement(transformation(extent={{60,-70},{80,-50}}))); - Buildings.Controls.OBC.CDL.Logical.Not not1 - "Becomes true when the autotuning is disabled" - annotation (Placement(transformation(extent={{30,-78},{50,-58}}))); + Buildings.Controls.OBC.CDL.Logical.Latch inTunPro + "True: it is in tuning process" + annotation (Placement(transformation(extent={{40,-80},{60,-60}}))); + Buildings.Controls.OBC.CDL.Logical.Nand nand + "Check if the tuning is ongoing while a tuning request is received" + annotation (Placement(transformation(extent={{90,60},{70,80}}))); + Buildings.Controls.OBC.CDL.Utilities.Assert assMes(final message="A tuning is ongoin and the tuning request is ignored") + "Error message when the tuning is ongoing while a tuning request is received" + annotation (Placement(transformation(extent={{60,60},{40,80}}))); protected final parameter Real k_start( @@ -156,13 +158,9 @@ equation {-2,-44}}, color={0,0,127})); connect(rel.u_m, u_m) annotation (Line(points={{30,-2},{30,-60},{10,-60},{10, -96},{0,-96},{0,-120}}, color={0,0,127})); - connect(swi.u3, rel.y) - annotation (Line(points={{58,-28},{52,-28},{52,16},{42,16}}, color={0,0,127})); - connect(swi.u1,PID. y) annotation (Line(points={{58,-12},{40,-12},{40,-40},{22, - -40}}, color={0,0,127})); - connect(resPro.on, rel.yOn) annotation (Line(points={{22,34},{58,34},{58,4},{42, + connect(resPro.on, rel.yOn) annotation (Line(points={{22,40},{58,40},{58,4},{42, 4}}, color={255,0,255})); - connect(modTim.y, resPro.tim) annotation (Line(points={{58,80},{40,80},{40,46}, + connect(modTim.y, resPro.tim) annotation (Line(points={{12,70},{28,70},{28,46}, {22,46}}, color={0,0,127})); connect(resPro.tau, conProMod.tau) annotation (Line(points={{-2,40},{-10,40},{ -10,42},{-18,42}}, color={0,0,127})); @@ -208,16 +206,26 @@ equation annotation (Line(points={{82,-20},{90,-20},{90,0},{120,0}}, color={0,0,127})); connect(u_m, PID.u_m) annotation (Line(points={{0,-120},{0,-96},{10,-96},{10, -52}}, color={0,0,127})); - connect(rel.trigger, triTun) annotation (Line(points={{24,-2},{24,-90},{60,-90}, + connect(rel.y, swi.u1) annotation (Line(points={{42,16},{54,16},{54,-12},{58,-12}}, + color={0,0,127})); + connect(swi.u3, PID.y) annotation (Line(points={{58,-28},{40,-28},{40,-40},{22, + -40}}, color={0,0,127})); + connect(inTunPro.y, swi.u2) annotation (Line(points={{62,-70},{68,-70},{68,-40}, + {52,-40},{52,-20},{58,-20}}, color={255,0,255})); + connect(inTunPro.u, triTun) annotation (Line(points={{38,-70},{30,-70},{30,-92}, + {60,-92},{60,-120}}, color={255,0,255})); + connect(inTunPro.clr, resPro.triEnd) annotation (Line(points={{38,-76},{-10,-76}, + {-10,32},{-2,32}}, color={255,0,255})); + connect(rel.trigger, triTun) annotation (Line(points={{24,-2},{24,-92},{60,-92}, {60,-120}}, color={255,0,255})); - connect(or1.u1, resPro.triEnd) annotation (Line(points={{58,-60},{52,-60},{52, - -50},{46,-50},{46,-20},{-10,-20},{-10,32},{-2,32}}, color={255,0,255})); - connect(or1.y, swi.u2) annotation (Line(points={{82,-60},{90,-60},{90,-40},{ - 48,-40},{48,-20},{58,-20}}, color={255,0,255})); - connect(not1.u, triTun) annotation (Line(points={{28,-68},{24,-68},{24,-90},{60, - -90},{60,-120}}, color={255,0,255})); - connect(not1.y, or1.u2) - annotation (Line(points={{52,-68},{58,-68}}, color={255,0,255})); + connect(resPro.trigger, triTun) annotation (Line(points={{22,34},{96,34},{96,-92}, + {60,-92},{60,-120}}, color={255,0,255})); + connect(nand.y, assMes.u) + annotation (Line(points={{68,70},{62,70}}, color={255,0,255})); + connect(nand.u2, triTun) annotation (Line(points={{92,62},{96,62},{96,-92},{60, + -92},{60,-120}}, color={255,0,255})); + connect(nand.u1, inTunPro.y) annotation (Line(points={{92,70},{98,70},{98,-70}, + {62,-70}}, color={255,0,255})); annotation (Documentation(info="

                          This block implements a rule-based PID tuning method. @@ -235,24 +243,25 @@ and inherits most of the parameters of the latter. However, through the paramete PID controller. In addition, the output of this block is limited from 0 to 1.

                          -

                          -Note that a new autotuning can be performed only when the triTun -is true and the old tuning has finished. -

                          +

                          Brief guidance

                          To use this block, connect it with a control loop. -This block starts the PID tuning process when the value of the boolean input signal triTun changes from -false to true. Before the PID tuning process starts, this block is equivalent to Buildings.Controls.OBC.Utilities.PIDWithInputGains. -During the PID tuning process, the output of the block changes into that of a relay controller (see +This block starts the PID tuning process when a request for performing auto-tuning occurs, i.e., the value of the boolean input signal triTun changes from +false to true. +During the auto-tuning process, the output of the block changes into that of a relay controller (see Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Controller). -The PID tuning process ends automatically (see details in -Buildings.Controls.OBC.Utilities.PIDWithAutotuning.BaseClasses.Relay.HalfPeriodRatio). +The PID tuning process ends automatically (see details in +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.BaseClasses.Relay.TunMonitor). Since then, this block turns back to a PID controller but with tuned PID parameters.

                          +

                          +Note: If an auto-tuning is ongoing, i.e., inTunPro.y is true, a request for performing auto-tuning will be ignored. +

                          +

                          References

                          J. Berner (2017). diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/HalfPeriodRatio.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/HalfPeriodRatio.mo index 2b60643f791..d5294cc3d7c 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/HalfPeriodRatio.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/HalfPeriodRatio.mo @@ -15,29 +15,16 @@ block HalfPeriodRatio "Length for the Off period" annotation (Placement(transformation(extent={{-140,-90},{-100,-50}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); + Buildings.Controls.OBC.CDL.Interfaces.BooleanInput TunEnd + "True: the tuning process ends" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}), + iconTransformation(extent={{-140,-20},{-100,20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput rho "Real signal of the half period ratio" - annotation (Placement(transformation(extent={{100,60},{140,100}}), - iconTransformation(extent={{100,40},{140,80}}))); - Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput triSta - "A boolean signal, true if the tuning starts" annotation (Placement(transformation(extent={{100,-20},{140,20}}), iconTransformation(extent={{100,-20},{140,20}}))); - Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput triEnd - "A boolean signal, true if the tuning completes" - annotation (Placement(transformation(extent={{100,-50},{140,-10}}), - iconTransformation(extent={{100,-80},{140,-40}}))); + protected - Buildings.Controls.OBC.CDL.Reals.Min tMin - "Minimum value of the length for the on and Off period " - annotation (Placement(transformation(extent={{-80,30},{-60,50}}))); - Buildings.Controls.OBC.CDL.Reals.Greater gretOntOff - "Check if both the length for the On period and the length for theoff period are larger than 0" - annotation (Placement(transformation(extent={{-20,50},{0,30}}))); - Buildings.Controls.OBC.CDL.Reals.Sources.Constant minLen( - final k=0) - "Minimum value for the horizon length" - annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler tOnSam( final y_start=Buildings.Controls.OBC.CDL.Constants.eps) "Block that samples tOn when the tuning period ends" @@ -46,100 +33,41 @@ protected final y_start=Buildings.Controls.OBC.CDL.Constants.eps) "Block that samples tOff when the tuning period ends" annotation (Placement(transformation(extent={{-80,-60},{-60,-80}}))); - Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samAddtOntOff - "Block that samples the tmin when tmin is larger than 0" - annotation (Placement(transformation(extent={{20,30},{40,10}}))); - Buildings.Controls.OBC.CDL.Reals.Greater tInc - "Block that checks if either the length for the On period or the length for theoff period increases after they both becomes positive" - annotation (Placement(transformation(extent={{30,-40},{50,-20}}))); Buildings.Controls.OBC.CDL.Reals.Min mintOntOff "Block that finds the smaller one between the length for the On period and the length for theoff period" - annotation (Placement(transformation(extent={{-20,-80},{0,-60}}))); + annotation (Placement(transformation(extent={{-20,-30},{0,-10}}))); Buildings.Controls.OBC.CDL.Reals.Max maxtOntOff "Block that finds the larger one between the length for the On period and the length for theoff period" - annotation (Placement(transformation(extent={{-20,70},{0,90}}))); + annotation (Placement(transformation(extent={{-18,30},{2,50}}))); Buildings.Controls.OBC.CDL.Reals.Divide halPerRat "Block that calculates the half period ratio" - annotation (Placement(transformation(extent={{60,70},{80,90}}))); - Buildings.Controls.OBC.CDL.Reals.Add addtOntOff - "Block that calculates the sum of the length for the On period and the length for theoff period" - annotation (Placement(transformation(extent={{-80,-40},{-60,-20}}))); - Buildings.Controls.OBC.CDL.Reals.Multiply mul - "Block that detects if the the length for the On period or the length for theoff period changes after both of them are larger than 0" - annotation (Placement(transformation(extent={{-34,-40},{-14,-20}}))); - Buildings.Controls.OBC.CDL.Reals.Greater gretmaxtOntOff - "Block that checks if either the length for the On period or the length for theoff period is larger than 0" - annotation (Placement(transformation(extent={{-20,10},{0,-10}}))); - Buildings.Controls.OBC.CDL.Reals.Less tDec - "Block that checks if either the length for the On period or the length for theoff period decreases after they both becomes positive" - annotation (Placement(transformation(extent={{30,-90},{50,-70}}))); - Buildings.Controls.OBC.CDL.Logical.Or tCha - "Block that checks if the length for the On period or the length for theoff period changes" - annotation (Placement(transformation(extent={{70,-40},{90,-20}}))); + annotation (Placement(transformation(extent={{40,-10},{60,10}}))); equation - connect(tMin.u1, tOn) annotation (Line(points={{-82,46},{-94,46},{-94,80},{-120, - 80}}, color={0,0,127})); - connect(tMin.u2, tOff) annotation (Line(points={{-82,34},{-88,34},{-88,-70},{-120, - -70}}, color={0,0,127})); - connect(minLen.y, gretOntOff.u2) annotation (Line(points={{-58,10},{-40,10},{ - -40,48},{-22,48}},color={0,0,127})); connect(tOnSam.u, tOn) annotation (Line(points={{-82,80},{-120,80}}, color={0,0,127})); connect(tOffSam.u, tOff) annotation (Line(points={{-82,-70},{-120,-70}}, color={0,0,127})); - connect(samAddtOntOff.y, tInc.u2) annotation (Line(points={{42,20},{60,20},{ - 60,-6},{18,-6},{18,-38},{28,-38}}, color={0,0,127})); - connect(gretOntOff.y, samAddtOntOff.trigger) annotation (Line(points={{2,40},{ - 30,40},{30,32}}, color={255,0,255})); - connect(tOnSam.y, maxtOntOff.u1) annotation (Line(points={{-58,80},{-52,80},{ - -52,86},{-22,86}}, color={0,0,127})); - connect(maxtOntOff.u2, tOffSam.y) annotation (Line(points={{-22,74},{-48,74}, - {-48,-70},{-58,-70}}, color={0,0,127})); - connect(mintOntOff.u2, tOffSam.y) annotation (Line(points={{-22,-76},{-48,-76}, - {-48,-70},{-58,-70}}, color={0,0,127})); - connect(maxtOntOff.y, halPerRat.u1) annotation (Line(points={{2,80},{52,80},{ - 52,86},{58,86}}, color={0,0,127})); - connect(halPerRat.u2, mintOntOff.y) annotation (Line(points={{58,74},{14,74}, - {14,-70},{2,-70}}, color={0,0,127})); - connect(halPerRat.y, rho) annotation (Line(points={{82,80},{120,80}}, - color={0,0,127})); - connect(addtOntOff.u2, tOff) annotation (Line(points={{-82,-36},{-88,-36},{-88, - -70},{-120,-70}}, color={0,0,127})); - connect(addtOntOff.u1, tOn) annotation (Line(points={{-82,-24},{-94,-24},{-94, - 80},{-120,80}}, color={0,0,127})); - connect(gretmaxtOntOff.y, triSta) - annotation (Line(points={{2,0},{120,0}}, color={255,0,255})); - connect(tCha.u1, tInc.y) - annotation (Line(points={{68,-30},{52,-30}}, color={255,0,255})); - connect(samAddtOntOff.y, tDec.u2) annotation (Line(points={{42,20},{60,20},{ - 60,-6},{18,-6},{18,-88},{28,-88}}, color={0,0,127})); - connect(gretmaxtOntOff.u1,addtOntOff. y) annotation (Line(points={{-22,0},{ - -40,0},{-40,-30},{-58,-30}}, color={0,0,127})); - connect(gretmaxtOntOff.u2, minLen.y) annotation (Line(points={{-22,8},{-40,8}, - {-40,10},{-58,10}},color={0,0,127})); - connect(gretOntOff.u1,tMin. y) annotation (Line(points={{-22,40},{-58,40}}, - color={0,0,127})); - connect(mul.u1,tMin. y) annotation (Line(points={{-36,-24},{-44,-24},{-44,40}, - {-58,40}}, color={0,0,127})); - connect(mul.u2,addtOntOff. y) annotation (Line(points={{-36,-36},{-40,-36},{ - -40,-30},{-58,-30}}, color={0,0,127})); - connect(mul.y, tInc.u1) - annotation (Line(points={{-12,-30},{28,-30}}, color={0,0,127})); - connect(tDec.u1, mul.y) annotation (Line(points={{28,-80},{10,-80},{10,-30},{ - -12,-30}}, color={0,0,127})); - connect(samAddtOntOff.u, mul.y) annotation (Line(points={{18,20},{10,20},{10, - -30},{-12,-30}}, color={0,0,127})); - connect(tOnSam.trigger, tCha.y) annotation (Line(points={{-70,68},{-70,60},{ - 94,60},{94,-30},{92,-30}}, color={255,0,255})); - connect(triEnd, tCha.y) - annotation (Line(points={{120,-30},{92,-30}}, color={255,0,255})); - connect(tOnSam.y, mintOntOff.u1) annotation (Line(points={{-58,80},{-52,80},{ - -52,-64},{-22,-64}}, color={0,0,127})); - connect(tCha.y, tOffSam.trigger) annotation (Line(points={{92,-30},{94,-30},{ - 94,-54},{-70,-54},{-70,-58}}, color={255,0,255})); - connect(tDec.y, tCha.u2) annotation (Line(points={{52,-80},{60,-80},{60,-38}, - {68,-38}}, color={255,0,255})); + connect(tOnSam.y, maxtOntOff.u1) annotation (Line(points={{-58,80},{-52,80},{-52, + 46},{-20,46}}, color={0,0,127})); + connect(maxtOntOff.u2, tOffSam.y) annotation (Line(points={{-20,34},{-40,34},{ + -40,-70},{-58,-70}}, color={0,0,127})); + connect(mintOntOff.u2, tOffSam.y) annotation (Line(points={{-22,-26},{-40,-26}, + {-40,-70},{-58,-70}}, color={0,0,127})); + connect(maxtOntOff.y, halPerRat.u1) annotation (Line(points={{4,40},{32,40},{32, + 6},{38,6}}, color={0,0,127})); + connect(halPerRat.u2, mintOntOff.y) annotation (Line(points={{38,-6},{10,-6},{ + 10,-20},{2,-20}}, color={0,0,127})); + connect(halPerRat.y, rho) annotation (Line(points={{62,0},{102,0},{102,0},{120, + 0}}, color={0,0,127})); + connect(tOnSam.y, mintOntOff.u1) + annotation (Line(points={{-58,80},{-52,80},{-52, + 46},{-28,46},{-28,-14},{-22,-14}}, + color={0,0,127})); + connect(tOnSam.trigger, TunEnd) + annotation (Line(points={{-70,68},{-70,0},{-120,0}}, color={255,0,255})); + connect(tOffSam.trigger, TunEnd) + annotation (Line(points={{-70,-58},{-70,0},{-120,0}}, color={255,0,255})); annotation (defaultComponentName = "halPerRat", Diagram( coordinateSystem( @@ -179,16 +107,6 @@ See details of the relay switch output in Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Controller.

                          -

                          -This block also detects when a PID tuning period should start and end. -Specifically, the tuning period is triggered to begin when either ton -or toff becomes positive. -The tuning period is triggered to end when either ton -or toff changes after the tuning period starts, as illustrated below: -

                          -

                          -\"image\" -

                          References

                          Josefin Berner (2017) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/NormalizedTimeDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/NormalizedTimeDelay.mo index c592b4c835a..f47d372d3ea 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/NormalizedTimeDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/NormalizedTimeDelay.mo @@ -10,6 +10,7 @@ block NormalizedTimeDelay Buildings.Controls.OBC.CDL.Interfaces.RealOutput tau "Normalized time delay" annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + protected Buildings.Controls.OBC.CDL.Reals.AddParameter addPar1( final p=-1) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/OnOffPeriod.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/OnOffPeriod.mo index aa17a6de1b5..fd98ab50cba 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/OnOffPeriod.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/OnOffPeriod.mo @@ -4,19 +4,23 @@ block OnOffPeriod "Calculate the lengths of the On period and the Off period" final quantity="Time", final unit="s") "Simulation time" - annotation (Placement(transformation(extent={{-140,20},{-100,60}}), + annotation (Placement(transformation(extent={{-140,40},{-100,80}}), iconTransformation(extent={{-140,40},{-100,80}}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanInput on - "Relay switch signal" - annotation (Placement(transformation(extent={{-140,-90},{-100,-50}}), - iconTransformation(extent={{-140,-80},{-100,-40}}))); + "Relay switch signal" + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}), + iconTransformation(extent={{-140,-20},{-100,20}}))); + Buildings.Controls.OBC.CDL.Interfaces.BooleanInput trigger + "Reset the output when trigger becomes true" annotation (Placement( + transformation(extent={{-140,-80},{-100,-40}}), iconTransformation( + extent={{-140,-80},{-100,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput tOff( final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Length for the Off period" - annotation (Placement(transformation(extent={{100,-50},{140,-10}}), - iconTransformation(extent={{102,-60},{142,-20}}))); + annotation (Placement(transformation(extent={{100,-60},{140,-20}}), + iconTransformation(extent={{100,-60},{140,-20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput tOn( final quantity="Time", final unit="s", @@ -29,71 +33,57 @@ protected annotation (Placement(transformation(extent={{-50,30},{-30,50}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler timOff "Simulation time when the input signal becomes off (False)" - annotation (Placement(transformation(extent={{-50,-50},{-30,-30}}))); - Buildings.Controls.OBC.CDL.Logical.Not Off - "Relay switch off" - annotation (Placement(transformation(extent={{-80,-80},{-60,-60}}))); + annotation (Placement(transformation(extent={{-50,-10},{-30,10}}))); Buildings.Controls.OBC.CDL.Reals.Subtract lenOffCal "Block that calculates the horizon length for the Off period" - annotation (Placement(transformation(extent={{10,-40},{30,-20}}))); + annotation (Placement(transformation(extent={{10,-50},{30,-30}}))); Buildings.Controls.OBC.CDL.Reals.Subtract lenOnCal "Block that calculates the horizon length for the On period" - annotation (Placement(transformation(extent={{10,30},{30,50}}))); - Buildings.Controls.OBC.CDL.Reals.Greater greTimOff - "Trigger the action to record the horizon length for the Off period" - annotation (Placement(transformation(extent={{50,-80},{70,-60}}))); - Buildings.Controls.OBC.CDL.Reals.Greater greTimOn - "Trigger the action to record the horizon length for the On period" - annotation (Placement(transformation(extent={{50,60},{70,80}}))); - Buildings.Controls.OBC.CDL.Reals.Sources.Constant minLen(final k=0) - "Minimum value for the horizon length" - annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); - Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler timOffRec - "Record the horizon length for the Off period" - annotation (Placement(transformation(extent={{70,-40},{90,-20}}))); - Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler timOnRec - "Record the horizon length for the On period" - annotation (Placement(transformation(extent={{70,50},{90,30}}))); + annotation (Placement(transformation(extent={{12,30},{32,50}}))); + Buildings.Controls.OBC.CDL.Logical.Not not1 + "True: the relay output switch to false" + annotation (Placement(transformation(extent={{-80,-30},{-60,-10}}))); + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.SamplerWithResetThreshold timOnRec( + final lowLim=0, final y_reset=0) + "Sampling the On time" + annotation (Placement(transformation(extent={{60,30},{80,50}}))); + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.SamplerWithResetThreshold timOffRec( + final lowLim=0, final y_reset=0) + "Sampling the Off time" + annotation (Placement(transformation(extent={{60,-50},{80,-30}}))); equation - connect(Off.u,on) annotation (Line(points={{-82,-70},{-120,-70}}, - color={255,0,255})); - connect(Off.y, timOff.trigger) annotation (Line(points={{-58,-70},{-40,-70},{ - -40,-52}}, color={255,0,255})); - connect(timOn.trigger,on) annotation (Line(points={{-40,28},{-40,20},{-90,20}, - {-90,-70},{-120,-70}}, color={255,0,255})); - connect(lenOffCal.u1, timOn.y) annotation (Line(points={{8,-24},{0,-24},{0,40}, + connect(lenOffCal.u1, timOn.y) annotation (Line(points={{8,-34},{0,-34},{0,40}, {-28,40}},color={0,0,127})); connect(lenOnCal.u2, timOn.y) - annotation (Line(points={{8,34},{0,34},{0,40},{-28,40}}, color={0,0,127})); - connect(lenOnCal.u1, timOff.y) annotation (Line(points={{8,46},{-10,46},{-10, - -40},{-28,-40}},color={0,0,127})); - connect(lenOffCal.u2, timOff.y) annotation (Line(points={{8,-36},{-10,-36},{ - -10,-40},{-28,-40}},color={0,0,127})); - connect(minLen.y, greTimOn.u2) - annotation (Line(points={{-38,0},{-20,0},{-20,62},{48,62}}, color={0,0,127})); - connect(lenOnCal.y, greTimOn.u1) annotation (Line(points={{32,40},{40,40},{40, - 70},{48,70}},color={0,0,127})); - connect(greTimOff.u2, greTimOn.u2) annotation (Line(points={{48,-78},{-20,-78}, - {-20,62},{48,62}}, color={0,0,127})); - connect(lenOffCal.y, greTimOff.u1) annotation (Line(points={{32,-30},{40,-30}, - {40,-70},{48,-70}},color={0,0,127})); - connect(greTimOff.y, timOffRec.trigger) - annotation (Line(points={{72,-70},{80,-70},{80,-42}}, color={255,0,255})); - connect(greTimOn.y, timOnRec.trigger) - annotation (Line(points={{72,70},{80,70},{80,52}}, color={255,0,255})); - connect(timOn.u, tim) annotation (Line(points={{-52,40},{-120,40}}, - color={0,0,127})); - connect(timOff.u, tim) annotation (Line(points={{-52,-40},{-80,-40},{-80,40}, - {-120,40}},color={0,0,127})); - connect(timOnRec.y, tOn) annotation (Line(points={{92,40},{120,40}}, - color={0,0,127})); - connect(timOffRec.y, tOff) annotation (Line(points={{92,-30},{120,-30}}, - color={0,0,127})); - connect(lenOffCal.y, timOffRec.u) - annotation (Line(points={{32,-30},{68,-30}}, color={0,0,127})); - connect(lenOnCal.y, timOnRec.u) - annotation (Line(points={{32,40},{68,40}}, color={0,0,127})); + annotation (Line(points={{10,34},{0,34},{0,40},{-28,40}},color={0,0,127})); + connect(lenOnCal.u1, timOff.y) annotation (Line(points={{10,46},{-4,46},{-4,0}, + {-28,0}}, color={0,0,127})); + connect(lenOffCal.u2, timOff.y) annotation (Line(points={{8,-46},{-14,-46},{-14, + 0},{-28,0}}, color={0,0,127})); + connect(timOn.u, tim) annotation (Line(points={{-52,40},{-80,40},{-80,60},{-120, + 60}}, color={0,0,127})); + connect(timOff.u, tim) annotation (Line(points={{-52,0},{-60,0},{-60,40},{-80, + 40},{-80,60},{-120,60}}, + color={0,0,127})); + connect(timOn.trigger, on) annotation (Line(points={{-40,28},{-40,20},{-86,20}, + {-86,0},{-120,0}}, color={255,0,255})); + connect(not1.u, on) annotation (Line(points={{-82,-20},{-92,-20},{-92,0},{-120, + 0}}, color={255,0,255})); + connect(not1.y, timOff.trigger) annotation (Line(points={{-58,-20},{-40,-20},{ + -40,-12}}, color={255,0,255})); + connect(timOnRec.y, tOn) + annotation (Line(points={{82,40},{120,40}}, color={0,0,127})); + connect(timOffRec.y, tOff) + annotation (Line(points={{82,-40},{120,-40}}, color={0,0,127})); + connect(lenOnCal.y, timOnRec.u) annotation (Line(points={{34,40},{46,40},{46,46}, + {58,46}}, color={0,0,127})); + connect(lenOffCal.y, timOffRec.u) annotation (Line(points={{32,-40},{48,-40},{ + 48,-34},{58,-34}}, color={0,0,127})); + connect(timOnRec.trigger, trigger) annotation (Line(points={{58,34},{40,34},{40, + -60},{-120,-60}}, color={255,0,255})); + connect(timOffRec.trigger, trigger) annotation (Line(points={{58,-46},{52,-46}, + {52,-60},{-120,-60}}, color={255,0,255})); annotation ( defaultComponentName = "onOffPer", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/SamplerWithResetThreshold.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/SamplerWithResetThreshold.mo new file mode 100644 index 00000000000..ea43f4204f7 --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/SamplerWithResetThreshold.mo @@ -0,0 +1,95 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses; +block SamplerWithResetThreshold + "Sampler with a reset and a threshold" + parameter Real lowLim = 1 + "Lower limit for triggering the sampling"; + parameter Real y_reset = 1 + "The value of y when the reset occurs"; + Buildings.Controls.OBC.CDL.Interfaces.RealInput u + "Input real signal" + annotation (Placement(transformation(extent={{-140,40},{-100,80}}), + iconTransformation(extent={{-140,40},{-100,80}}))); + Buildings.Controls.OBC.CDL.Interfaces.BooleanInput trigger + "Resets the output when trigger becomes true" annotation (Placement( + transformation(extent={{-140,-80},{-100,-40}}), iconTransformation( + extent={{-140,-80},{-100,-40}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput y + "Sampling output" + annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + +protected + Buildings.Controls.OBC.CDL.Reals.Sources.Constant thr(final k=lowLim) + "Threshold" + annotation (Placement(transformation(extent={{-80,-10},{-60,10}}))); + Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler yRec(final y_start=y_reset) + "Record the input when sampling is triggered" + annotation (Placement(transformation(extent={{60,10},{80,-10}}))); + Buildings.Controls.OBC.CDL.Reals.Sources.Constant reset(final k=y_reset) + "Reset value" + annotation (Placement(transformation(extent={{-80,-90},{-60,-70}}))); + Buildings.Controls.OBC.CDL.Logical.Or samTri "Sampling trigger" + annotation (Placement(transformation(extent={{40,40},{60,60}}))); + Buildings.Controls.OBC.CDL.Reals.Greater gre(final h=0) + "Check if the input signal is larger than the threshold" + annotation (Placement(transformation(extent={{-32,20},{-12,40}}))); + Buildings.Controls.OBC.CDL.Reals.Switch swi + "Switch between sampling the input signal and the reset value" + annotation (Placement(transformation(extent={{-16,10},{4,-10}}))); + Buildings.Controls.OBC.CDL.Logical.Edge edgRes(final pre_u_start=false) + "Detect if the reset is triggered" + annotation (Placement(transformation(extent={{-80,-50},{-60,-30}}))); + Buildings.Controls.OBC.CDL.Logical.Edge edgThr(final pre_u_start=false) + "Detect if the threshold is exceeded" + annotation (Placement(transformation(extent={{0,40},{20,60}}))); +equation + connect(yRec.y, y) annotation (Line(points={{82,0},{106,0},{106,0},{120,0}}, + color={0,0,127})); + connect(thr.y, gre.u2) annotation (Line(points={{-58,0},{-40,0},{-40,22},{-34, + 22}}, color={0,0,127})); + connect(gre.u1, u) annotation (Line(points={{-34,30},{-46,30},{-46,60},{-120, + 60}}, color={0,0,127})); + connect(yRec.u, swi.y) + annotation (Line(points={{58,0},{6,0}}, color={0,0,127})); + connect(edgRes.u, trigger) annotation (Line(points={{-82,-40},{-92,-40},{-92, + -60},{-120,-60}}, color={255,0,255})); + connect(edgRes.y, swi.u2) annotation (Line(points={{-58,-40},{-32,-40},{-32,0}, + {-18,0}}, color={255,0,255})); + connect(swi.u3, u) + annotation (Line(points={{-18,8},{-46,8},{-46,60},{-120,60}}, + color={0,0,127})); + connect(swi.u1, reset.y) annotation (Line(points={{-18,-8},{-26,-8},{-26,-80}, + {-58,-80}}, color={0,0,127})); + connect(samTri.u2, edgRes.y) annotation (Line(points={{38,42},{30,42},{30,-40}, + {-58,-40}}, color={255,0,255})); + connect(samTri.y, yRec.trigger) + annotation (Line(points={{62,50},{70,50},{70,12}}, color={255,0,255})); + connect(edgThr.y, samTri.u1) + annotation (Line(points={{22,50},{38,50}}, color={255,0,255})); + connect(edgThr.u, gre.y) annotation (Line(points={{-2,50},{-8,50},{-8,30},{ + -10,30}}, color={255,0,255})); + annotation ( + defaultComponentName = "samResThr", + Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-100,140},{100,100}}, + textString="%name", + textColor={0,0,255})}), Diagram(coordinateSystem(preserveAspectRatio=false)), + Documentation(revisions=" +

                            +
                          • +June 1, 2022, by Sen Huang:
                            +First implementation
                            +
                          • +
                          +", info=" +

                          +This block samples the input real signal u when u is larger than a threshold. +On the other hand, when the input boolean signal trigger becomes true, the output y is reset to a default value. +

                          +")); +end SamplerWithResetThreshold; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/TunMonitor.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/TunMonitor.mo new file mode 100644 index 00000000000..bf3d0900854 --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/TunMonitor.mo @@ -0,0 +1,160 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses; +block TunMonitor "Monitor the tuning process" + Buildings.Controls.OBC.CDL.Interfaces.RealInput tOn( + final quantity="Time", + final unit="s", + min=100*Buildings.Controls.OBC.CDL.Constants.eps) + "Length for the On period" + annotation (Placement(transformation(extent={{-140,60},{-100,100}}), + iconTransformation(extent={{-140,40},{-100,80}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealInput tOff( + final quantity="Time", + final unit="s", + min=100*Buildings.Controls.OBC.CDL.Constants.eps) + "Length for the Off period" + annotation (Placement(transformation(extent={{-140,-90},{-100,-50}}), + iconTransformation(extent={{-140,-80},{-100,-40}}))); + Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput triSta + "A boolean signal, true if the tuning starts" + annotation (Placement(transformation(extent={{100,40},{140,80}}), + iconTransformation(extent={{100,40},{140,80}}))); + Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput triEnd + "A boolean signal, true if the tuning completes" + annotation (Placement(transformation(extent={{100,-80},{140,-40}}), + iconTransformation(extent={{100,-80},{140,-40}}))); + +protected + Buildings.Controls.OBC.CDL.Reals.Max tMax "Maximum value of the length for the on and Off period " + annotation (Placement(transformation(extent={{-80,60},{-60,80}}))); + Buildings.Controls.OBC.CDL.Reals.Greater gretOnOrtOff + "Check if either the length for the On period or the length for the off period are larger than 0" + annotation (Placement(transformation(extent={{-40,40},{-20,60}}))); + Buildings.Controls.OBC.CDL.Reals.Sources.Constant minLen( + final k=0) + "Minimum value for the horizon length" + annotation (Placement(transformation(extent={{-80,20},{-60,40}}))); + Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samAddtOntOff + "Block that samples the tmin when tmin is larger than 0" + annotation (Placement(transformation(extent={{-20,-10},{0,10}}))); + Buildings.Controls.OBC.CDL.Reals.Greater tInc + "Block that checks if either the length for the On period or the length for theoff period increases after they both becomes positive" + annotation (Placement(transformation(extent={{20,20},{40,40}}))); + Buildings.Controls.OBC.CDL.Reals.Add addtOntOff + "Block that calculates the sum of the length for the On period and the length for theoff period" + annotation (Placement(transformation(extent={{-80,-40},{-60,-20}}))); + Buildings.Controls.OBC.CDL.Reals.Less tDec + "Block that checks if either the length for the On period or the length for theoff period decreases after they both becomes positive" + annotation (Placement(transformation(extent={{20,-40},{40,-20}}))); + Buildings.Controls.OBC.CDL.Logical.Or tCha + "Block that checks if the length for the On period or the length for theoff period changes" + annotation (Placement(transformation(extent={{50,-10},{70,10}}))); + Buildings.Controls.OBC.CDL.Logical.Edge edgTunSta + "Detect if the tuning process starts" + annotation (Placement(transformation(extent={{60,50},{80,70}}))); + Buildings.Controls.OBC.CDL.Logical.Edge edgTunEnd + "Detect if the tuning process ends" + annotation (Placement(transformation(extent={{60,-70},{80,-50}}))); + Buildings.Controls.OBC.CDL.Reals.Multiply mul + "Calculate the product of two inputs" + annotation (Placement(transformation(extent={{-40,-40},{-20,-20}}))); + Buildings.Controls.OBC.CDL.Reals.Min tMin + "Minimum value of the length for the on and Off period" + annotation (Placement(transformation(extent={{-80,-80},{-60,-60}}))); + Buildings.Controls.OBC.CDL.Reals.Greater gretOnAndtOff + "Check if both the length for the On period and the length for the off period are larger than 0" + annotation (Placement(transformation(extent={{-40,-80},{-20,-60}}))); +equation + connect(tMax.u1, tOn) annotation (Line(points={{-82,76},{-94,76},{-94,80},{ + -120,80}}, + color={0,0,127})); + connect(tMax.u2, tOff) annotation (Line(points={{-82,64},{-94,64},{-94,-70},{ + -120,-70}}, + color={0,0,127})); + connect(minLen.y, gretOnOrtOff.u2) annotation (Line(points={{-58,30},{-50,30}, + {-50,42},{-42,42}}, color={0,0,127})); + connect(samAddtOntOff.y, tInc.u2) annotation (Line(points={{2,0},{10,0},{10,22}, + {18,22}}, color={0,0,127})); + connect(addtOntOff.u2, tOff) annotation (Line(points={{-82,-36},{-88,-36},{-88, + -70},{-120,-70}}, color={0,0,127})); + connect(addtOntOff.u1, tOn) annotation (Line(points={{-82,-24},{-94,-24},{-94, + 80},{-120,80}}, color={0,0,127})); + connect(tCha.u1, tInc.y) + annotation (Line(points={{48,0},{42,0},{42,30}}, + color={255,0,255})); + connect(samAddtOntOff.y, tDec.u2) annotation (Line(points={{2,0},{10,0},{10,-38}, + {18,-38}}, color={0,0,127})); + connect(gretOnOrtOff.u1, tMax.y) annotation (Line(points={{-42,50},{-52,50},{ + -52,70},{-58,70}}, + color={0,0,127})); + connect(tDec.y, tCha.u2) annotation (Line(points={{42,-30},{42,-8},{48,-8}}, + color={255,0,255})); + connect(edgTunSta.y, triSta) annotation (Line(points={{82,60},{88,60},{88,60}, + {120,60}}, + color={255,0,255})); + connect(tCha.y, edgTunEnd.u) annotation (Line(points={{72,0},{80,0},{80,-40},{ + 52,-40},{52,-60},{58,-60}}, color={255,0,255})); + connect(edgTunEnd.y, triEnd) annotation (Line(points={{82,-60},{92,-60},{92,-60}, + {120,-60}}, color={255,0,255})); + connect(tMin.u1, tOn) annotation (Line(points={{-82,-64},{-94,-64},{-94,80},{-120, + 80}}, color={0,0,127})); + connect(tMin.u2, tOff) annotation (Line(points={{-82,-76},{-88,-76},{-88,-70}, + {-120,-70}}, color={0,0,127})); + connect(tMin.y, gretOnAndtOff.u1) + annotation (Line(points={{-58,-70},{-42,-70}}, color={0,0,127})); + connect(gretOnAndtOff.u2, minLen.y) annotation (Line(points={{-42,-78},{-50, + -78},{-50,30},{-58,30}}, + color={0,0,127})); + connect(gretOnOrtOff.y, edgTunSta.u) annotation (Line(points={{-18,50},{50,50}, + {50,60},{58,60}},color={255,0,255})); + connect(gretOnAndtOff.y, samAddtOntOff.trigger) annotation (Line(points={{-18, + -70},{-10,-70},{-10,-12}}, color={255,0,255})); + connect(addtOntOff.y, mul.u1) annotation (Line(points={{-58,-30},{-54,-30},{-54, + -24},{-42,-24}}, color={0,0,127})); + connect(mul.u2, tMin.y) annotation (Line(points={{-42,-36},{-54,-36},{-54,-70}, + {-58,-70}}, color={0,0,127})); + connect(mul.y, tDec.u1) + annotation (Line(points={{-18,-30},{18,-30}}, color={0,0,127})); + connect(tInc.u1, mul.y) annotation (Line(points={{18,30},{6,30},{6,-30},{-18,-30}}, + color={0,0,127})); + connect(samAddtOntOff.u, mul.y) annotation (Line(points={{-22,0},{-32,0},{-32, + -14},{-14,-14},{-14,-30},{-18,-30}}, color={0,0,127})); + annotation (defaultComponentName = "tunMon", + Diagram( + coordinateSystem( + extent={{-100,-100},{100,100}})), + Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{100, + 100}}), graphics={ + Rectangle( + extent={{-100,-100},{100,100}}, + lineColor={0,0,127}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid), + Text( + extent={{-100,140},{100,100}}, + textString="%name", + textColor={0,0,255})}), + Documentation(revisions=" +
                            +
                          • +June 1, 2022, by Sen Huang:
                            +First implementation
                            +
                          • +
                          +", info=" +

                          +This block detects when a PID tuning period should start and end. +Specifically, the tuning period is triggered to begin when either ton +or toff becomes positive. +The tuning period is triggered to end when either ton +or toff changes after the tuning period starts, as illustrated below: +

                          +

                          +\"image\" +

                          + +

                          References

                          +

                          Josefin Berner (2017) +\"Automatic Controller Tuning using Relay-based Model Identification.\" +Department of Automatic Control, Lund Institute of Technology, Lund University.

                          +")); +end TunMonitor; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/HalfPeriodRatio.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/HalfPeriodRatio.mo index 3adbad7ddd6..654b4738b16 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/HalfPeriodRatio.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/HalfPeriodRatio.mo @@ -28,16 +28,20 @@ model HalfPeriodRatio "Test model for calculating the half period ratio" period=1, offset=0.5) "The length of the Off period" - annotation (Placement(transformation(extent={{-80,-40},{-60,-20}}))); + annotation (Placement(transformation(extent={{-80,-70},{-60,-50}}))); + Buildings.Controls.OBC.CDL.Logical.Sources.SampleTrigger samTri(period=1, shift=0.9) + annotation (Placement(transformation(extent={{-80,-20},{-60,0}}))); equation - connect(tOff.y, halPerRat.tOff) annotation (Line(points={{-58,-30},{0,-30},{0, - -6},{18,-6}}, color={0,0,127})); + connect(tOff.y, halPerRat.tOff) annotation (Line(points={{-58,-60},{12,-60},{ + 12,-6},{18,-6}}, color={0,0,127})); connect(tOnSig2.y, tOn.u1) annotation (Line(points={{-58,70},{-40,70},{-40,56}, {-36,56}}, color={0,0,127})); connect(tOnSig1.y, tOn.u2) annotation (Line(points={{-58,30},{-40,30},{-40,44}, {-36,44}}, color={0,0,127})); connect(tOn.y, halPerRat.tOn) annotation (Line(points={{-12,50},{0,50},{0,6},{18,6}}, color={0,0,127})); + connect(samTri.y, halPerRat.TunEnd) annotation (Line(points={{-58,-10},{0,-10}, + {0,0},{18,0}}, color={255,0,255})); annotation ( experiment( StopTime=1.0, @@ -74,20 +78,10 @@ Validation test for the block Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.HalfPeriodRatio.

                          -
                            -
                          • -At 0.1s, the length of the On period is sampled and it becomes 0.1s, -triggering the training period to start. -
                          • -
                          • -At 0.7s, the length of the Off period becomes is sampled -and it becomes 0.5s. -
                          • -
                          • -At 0.9s, the length of the On period changes from 0.1s to 0.9s -while that of the Off period remains 0.5s. -This triggers the training period to end. -
                          • -
                          +

                          +This testing scenario in this example is the same as that in +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.Validation.TunMonitor. +The lengths of the On period and the Off period are sampled at 0.9s to calculate the half period ratio. +

                          ")); end HalfPeriodRatio; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/OnOffPeriod.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/OnOffPeriod.mo index b9fbc389596..e088cffd22d 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/OnOffPeriod.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/OnOffPeriod.mo @@ -11,11 +11,18 @@ model OnOffPeriod "Test model for calculating the length of the On period and th period=0.8, shift=-0.1) "Control switch output" annotation (Placement(transformation(extent={{-60,-20},{-40,0}}))); + Buildings.Controls.OBC.CDL.Logical.Sources.Pulse retSig( + width=0.1, + period=1, + shift=-0.1) "Reset signal" + annotation (Placement(transformation(extent={{-60,-60},{-40,-40}}))); equation connect(modTim.y, onOffPer.tim) annotation (Line(points={{-38,20},{-20,20},{-20, 6},{-12,6}}, color={0,0,127})); - connect(relSwi.y, onOffPer.on) annotation (Line(points={{-38,-10},{-20,-10},{-20, - -6},{-12,-6}}, color={255,0,255})); + connect(relSwi.y, onOffPer.on) annotation (Line(points={{-38,-10},{-20,-10},{ + -20,0},{-12,0}}, color={255,0,255})); + connect(onOffPer.trigger, retSig.y) annotation (Line(points={{-12,-6},{-16,-6}, + {-16,-50},{-38,-50}}, color={255,0,255})); annotation ( experiment( StopTime=1.0, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/SamplerWithResetThreshold.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/SamplerWithResetThreshold.mo new file mode 100644 index 00000000000..44c63bf00ec --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/SamplerWithResetThreshold.mo @@ -0,0 +1,69 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.Validation; +model SamplerWithResetThreshold + "Test model for a sampler with a reset and a threshold" + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.SamplerWithResetThreshold + sam(lowLim=0, y_reset=0) "Sampler" + annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + Buildings.Controls.OBC.CDL.Logical.Sources.Pulse resSig( + width=0.1, + period=1, + shift=-0.1) "Reset signal" + annotation (Placement(transformation(extent={{-60,-50},{-40,-30}}))); + Buildings.Controls.OBC.CDL.Reals.Sources.Pulse u( + amplitude=1, + width=0.7, + period=0.5, + offset=-0.5) "Singal to be sampled" + annotation (Placement(transformation(extent={{-60,20},{-40,40}}))); +equation + connect(u.y, sam.u) annotation (Line(points={{-38,30},{-20,30},{-20,6},{-12,6}}, + color={0,0,127})); + connect(resSig.y, sam.trigger) annotation (Line(points={{-38,-40},{-20,-40},{-20, + -6},{-12,-6}}, color={255,0,255})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/SamplerWithResetThreshold.mos" "Simulate and plot"), + 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)), + Documentation(revisions=" +
                            +
                          • +June 1, 2022, by Sen Huang:
                            +First implementation
                            +
                          • +
                          +", info=" +

                          +Validation test for the block + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.SamplerWithResetThreshold. +

                          +This example considers a real input, u, and a boolean input, resSig +
                            +
                          • +At 0.5s, u changes from 0 to 1, triggering the sampling; +
                          • +
                          • +At 0.9s, resSig changes into On, triggering the reset. +
                          • +
                          +")); +end SamplerWithResetThreshold; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/TunMonitor.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/TunMonitor.mo new file mode 100644 index 00000000000..4b4f6aedbfb --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/TunMonitor.mo @@ -0,0 +1,105 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.Validation; +model TunMonitor "Test model for the tuning period management" + Buildings.Controls.OBC.CDL.Reals.Sources.Pulse tOnSig1( + amplitude=-0.1, + width=0.1, + period=1, + offset=0.1) + "Block that generates signals for forming the signal of the length of On period" + annotation (Placement(transformation(extent={{-80,20},{-60,40}}))); + + Buildings.Controls.OBC.CDL.Reals.Sources.Pulse tOnSig2( + amplitude=-0.1, + width=0.9, + period=1, + offset=0.1) + "Block that generates signals for forming the signal of the length of On period" + annotation (Placement(transformation(extent={{-80,60},{-60,80}}))); + Buildings.Controls.OBC.CDL.Reals.Add tOn + "The length of the On period" + annotation (Placement(transformation(extent={{-34,40},{-14,60}}))); + Buildings.Controls.OBC.CDL.Reals.Sources.Pulse tOff( + amplitude=-0.5, + width=0.7, + period=1, + offset=0.5) + "The length of the Off period" + annotation (Placement(transformation(extent={{-80,-40},{-60,-20}}))); + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.TunMonitor + tunMan "Manage the tuning process" + annotation (Placement(transformation(extent={{20,-10},{40,10}}))); + Buildings.Controls.OBC.CDL.Logical.Latch tunSta "Display when tuning process starts" + annotation (Placement(transformation(extent={{60,20},{80,40}}))); + Buildings.Controls.OBC.CDL.Logical.Latch tunEnd "Display when tuning process ends" + annotation (Placement(transformation(extent={{60,-40},{80,-20}}))); + Buildings.Controls.OBC.CDL.Logical.Sources.Constant con(k=false) "False signal" + annotation (Placement(transformation(extent={{-20,-70},{0,-50}}))); +equation + connect(tOnSig2.y, tOn.u1) annotation (Line(points={{-58,70},{-40,70},{-40,56}, + {-36,56}}, color={0,0,127})); + connect(tOnSig1.y, tOn.u2) annotation (Line(points={{-58,30},{-40,30},{-40,44}, + {-36,44}}, color={0,0,127})); + connect(tunMan.tOn, tOn.y) + annotation (Line(points={{18,6},{0,6},{0,50},{-12,50}}, color={0,0,127})); + connect(tunMan.tOff, tOff.y) annotation (Line(points={{18,-6},{0,-6},{0,-30}, + {-58,-30}}, color={0,0,127})); + connect(con.y, tunSta.clr) annotation (Line(points={{2,-60},{52,-60},{52,24}, + {58,24}}, color={255,0,255})); + connect(tunEnd.clr, con.y) annotation (Line(points={{58,-36},{52,-36},{52,-60}, + {2,-60}}, color={255,0,255})); + connect(tunMan.triSta, tunSta.u) annotation (Line(points={{42,6},{48,6},{48, + 30},{58,30}}, color={255,0,255})); + connect(tunMan.triEnd, tunEnd.u) annotation (Line(points={{42,-6},{48,-6},{48, + -30},{58,-30}}, color={255,0,255})); + annotation ( + experiment( + StopTime=1.0, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/TunMonitor.mos" "Simulate and plot"), + 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)), + Documentation(revisions=" +
                            +
                          • +June 1, 2022, by Sen Huang:
                            +First implementation
                            +
                          • +
                          +", info=" +

                          +Validation test for the block + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.TunMonitor. +

                          +
                            +
                          • +At 0.1s, the length of the On period becomes 0.1s, +triggering the training period to start. +
                          • +
                          • +At 0.7s, the length of the Off period becomes 0.5s. +
                          • +
                          • +At 0.9s, the length of the On period changes from 0.1s to 0.9s +while that of the Off period remains 0.5s. +This triggers the tuning period to end. +
                          • +
                          +")); +end TunMonitor; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/package.order index 7703640e3c5..9b1c887574a 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/package.order +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/package.order @@ -1,3 +1,5 @@ HalfPeriodRatio NormalizedTimeDelay OnOffPeriod +SamplerWithResetThreshold +TunMonitor diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/package.order index 0115a1667b5..710b86ac453 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/package.order +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/package.order @@ -1,4 +1,6 @@ HalfPeriodRatio NormalizedTimeDelay OnOffPeriod +SamplerWithResetThreshold +TunMonitor Validation diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo index 48dacbe542b..b272584a088 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo @@ -14,11 +14,11 @@ block Controller Buildings.Controls.OBC.CDL.Interfaces.RealInput u_m "Measurement input signal" annotation (Placement(transformation(origin={0,-120},extent={{20,-20},{-20,20}},rotation=270), - iconTransformation(extent={{20,-20},{-20,20}},rotation=270,origin={0,-120}))); + iconTransformation(extent={{20,-20},{-20,20}},rotation=270,origin={0,-120}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanInput trigger "Connector for enabling the relay controller" annotation (Placement(transformation(extent={{-20,-20},{20,20}},rotation=90,origin={-80,-120}), - iconTransformation(extent={{-20,-20},{20,20}},rotation=90,origin={-60,-120}))); + iconTransformation(extent={{-20,-20},{20,20}},rotation=90,origin={-60,-120}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput y "Control output" annotation (Placement(transformation(extent={{100,40},{140,80}}))); @@ -28,7 +28,8 @@ block Controller Buildings.Controls.OBC.CDL.Interfaces.RealOutput yErr "Control error" annotation (Placement(transformation(extent={{100,0},{140,40}}), - iconTransformation(extent={{100,-20},{140,20}}))); + iconTransformation(extent={{100,-20},{140,20}}))); + protected Buildings.Controls.OBC.CDL.Logical.OnOffController greMeaSet( final bandwidth=deaBan*2, @@ -52,7 +53,7 @@ protected Buildings.Controls.OBC.CDL.Reals.Switch swi1 "Switch between a higher value and a lower value" annotation (Placement(transformation(extent={{-10,-10},{10,10}}, - origin={-50,-50}))); + origin={-50,-50}))); initial equation assert( yHig-yLow>1E-6, @@ -120,8 +121,8 @@ equation fillPattern=FillPattern.Solid, fillColor={175,175,175}, textString="Relay"), - Line(points={{-70,24},{-34,24},{-34,58},{38,58},{38,24},{66,24}}, color - ={28,108,200})}), Diagram( + Line(points={{-70,24},{-34,24},{-34,58},{38,58},{38,24},{66,24}}, color= + {28,108,200})}), Diagram( coordinateSystem(preserveAspectRatio=false)), Documentation(info="

                          diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo index 08e85830e74..c2926be0d64 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo @@ -7,14 +7,18 @@ block ResponseProcess "Lower value for the output"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput on "Relay switch. True: tuning on perid, False: tuning off period" - annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), - iconTransformation(extent={{-140,-80},{-100,-40}}))); + annotation (Placement(transformation(extent={{-140,-20},{-100,20}}), + iconTransformation(extent={{-140,-20},{-100,20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput tim( final quantity="Time", final unit="s") "Simulation time" annotation (Placement(transformation(extent={{-140,40},{-100,80}}), iconTransformation(extent={{-140,40},{-100,80}}))); + Buildings.Controls.OBC.CDL.Interfaces.BooleanInput trigger + "Reset the output when trigger becomes true" annotation (Placement( + transformation(extent={{-140,-80},{-100,-40}}), iconTransformation( + extent={{-140,-80},{-100,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput tOn( final quantity="Time", final unit="s", @@ -37,39 +41,51 @@ block ResponseProcess "Normalized time delay" annotation (Placement(transformation(extent={{100,-10},{140,30}}), iconTransformation(extent={{100,-20},{140,20}}))); + protected Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.OnOffPeriod onOffPer "Block that calculates the length of the On period and the Off period" annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.HalfPeriodRatio halPerRatio "Block that calculates the half period ratio" - annotation (Placement(transformation(extent={{-20,0},{0,20}}))); + annotation (Placement(transformation(extent={{0,0},{20,20}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.NormalizedTimeDelay norTimDel( final gamma=max(yHig, yLow)/min(yLow, yHig)) "Block that calculates the normalized time delay" annotation (Placement(transformation(extent={{40,0},{60,20}}))); + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.TunMonitor TunMon + "Block that detects when the tuning period starts and ends" + annotation (Placement(transformation(extent={{-40,-40},{-20,-20}}))); equation - connect(onOffPer.on,on) annotation (Line(points={{-82,4},{-90,4},{-90,-60},{ - -120,-60}}, color={255,0,255})); + connect(onOffPer.on,on) annotation (Line(points={{-82,10},{-96,10},{-96,0},{-120, + 0}}, color={255,0,255})); connect(onOffPer.tim, tim) annotation (Line(points={{-82,16},{-90,16},{-90,60}, {-120,60}}, color={0,0,127})); connect(onOffPer.tOn, halPerRatio.tOn) annotation (Line(points={{-58,14},{-40, - 14},{-40,16},{-22,16}}, color={0,0,127})); - connect(onOffPer.tOff, halPerRatio.tOff) annotation (Line(points={{-57.8,6},{ - -30,6},{-30,4},{-22,4}}, color={0,0,127})); - connect(halPerRatio.rho, norTimDel.rho) annotation (Line(points={{2,16},{30, - 16},{30,10},{38,10}}, color={0,0,127})); + 14},{-40,16},{-2,16}}, color={0,0,127})); + connect(onOffPer.tOff, halPerRatio.tOff) annotation (Line(points={{-58,6},{-30, + 6},{-30,4},{-2,4}}, color={0,0,127})); + connect(halPerRatio.rho, norTimDel.rho) annotation (Line(points={{22,10},{38,10}}, + color={0,0,127})); connect(tOn, halPerRatio.tOn) annotation (Line(points={{120,80},{-40,80},{-40, - 16},{-22,16}}, color={0,0,127})); - connect(tOff, halPerRatio.tOff) annotation (Line(points={{120,40},{-30,40},{ - -30,4},{-22,4}}, color={0,0,127})); + 16},{-2,16}}, color={0,0,127})); + connect(tOff, halPerRatio.tOff) annotation (Line(points={{120,40},{-30,40},{-30, + 4},{-2,4}}, color={0,0,127})); connect(norTimDel.tau, tau) annotation (Line(points={{62,10},{120,10}}, - color={0,0,127})); - connect(triEnd, halPerRatio.triEnd) annotation (Line(points={{120,-80},{10, - -80},{10,4},{2,4}}, color={255,0,255})); - connect(triSta, halPerRatio.triSta) annotation (Line(points={{120,-40},{20, - -40},{20,10},{2,10}}, color={255,0,255})); + color={0,0,127})); + connect(TunMon.triSta, triSta) annotation (Line(points={{-18,-24},{80,-24},{80, + -40},{120,-40}}, color={255,0,255})); + connect(TunMon.triEnd, triEnd) annotation (Line(points={{-18,-36},{60,-36},{60, + -80},{120,-80}}, color={255,0,255})); + connect(TunMon.tOn, onOffPer.tOn) annotation (Line(points={{-42,-24},{-52,-24}, + {-52,14},{-58,14}}, color={0,0,127})); + connect(TunMon.tOff, onOffPer.tOff) annotation (Line(points={{-42,-36},{-56,-36}, + {-56,6},{-58,6}}, color={0,0,127})); + connect(halPerRatio.TunEnd, TunMon.triEnd) annotation (Line(points={{-2,10},{-10, + 10},{-10,-36},{-18,-36}}, color={255,0,255})); + connect(onOffPer.trigger, trigger) annotation (Line(points={{-82,4},{-90,4},{-90, + -60},{-120,-60}}, color={255,0,255})); annotation ( defaultComponentName = "resPro", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ @@ -94,7 +110,7 @@ equation fillPattern=FillPattern.Solid), Line(points={{-54,60},{30,60},{34,60},{34,-36}}, color={28,108,200}), Line(points={{-54,34},{-54,-64},{36,-64}}, color={28,108,200})}), - Diagram(coordinateSystem(preserveAspectRatio=false)), + Diagram(coordinateSystem(preserveAspectRatio=false)), Documentation(revisions="

                          ")); end ResponseProcess; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mo index 5ece54bf163..3c1101229a0 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mo @@ -1,8 +1,8 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation; model ResponseProcess "Test model for processing the response of a relay controller" Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.ResponseProcess resPro( - yHig=1, - yLow=0.2) + final yHig=1, + final yLow=0.2) "Calculate the length of the On period and the Off period" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Buildings.Controls.OBC.CDL.Reals.Sources.ModelTime modTim @@ -11,13 +11,40 @@ model ResponseProcess "Test model for processing the response of a relay control Buildings.Controls.OBC.CDL.Logical.Sources.Pulse relSwi( width=0.2, period=0.8, - shift=-0.1) "Control switch output" + shift=-0.1) + "Control switch output" annotation (Placement(transformation(extent={{-60,-30},{-40,-10}}))); + Buildings.Controls.OBC.CDL.Logical.Sources.Pulse resSig( + width=0.1, + period=1, + shift=-0.1) + "Reset signal" + annotation (Placement(transformation(extent={{-60,-70},{-40,-50}}))); + Buildings.Controls.OBC.CDL.Logical.Latch tunSta + "Display when tuning process starts" + annotation (Placement(transformation(extent={{60,-2},{80,18}}))); + Buildings.Controls.OBC.CDL.Logical.Latch tunEnd + "Display when tuning process ends" + annotation (Placement(transformation(extent={{60,-40},{80,-20}}))); + Buildings.Controls.OBC.CDL.Logical.Sources.Constant con(final k=false) + "False signal" + annotation (Placement(transformation(extent={{0,-80},{20,-60}}))); equation connect(modTim.y, resPro.tim) annotation (Line(points={{-38,20},{-20,20},{-20, 6},{-12,6}}, color={0,0,127})); - connect(relSwi.y,resPro.on) annotation (Line(points={{-38,-20},{-20,-20},{-20, - -6},{-12,-6}}, color={255,0,255})); + connect(relSwi.y,resPro.on) annotation (Line(points={{-38,-20},{-20,-20},{ + -20,0},{-12,0}}, + color={255,0,255})); + connect(resSig.y, resPro.trigger) annotation (Line(points={{-38,-60},{-16,-60}, + {-16,-6},{-12,-6}}, color={255,0,255})); + connect(resPro.triSta, tunSta.u) annotation (Line(points={{12,-4},{40,-4},{40, + 8},{58,8}}, color={255,0,255})); + connect(tunEnd.u, resPro.triEnd) annotation (Line(points={{58,-30},{38,-30},{38, + -8},{12,-8}}, color={255,0,255})); + connect(tunSta.clr, con.y) annotation (Line(points={{58,2},{48,2},{48,-70},{22, + -70}}, color={255,0,255})); + connect(tunEnd.clr, con.y) annotation (Line(points={{58,-36},{54,-36},{54,-70}, + {22,-70}}, color={255,0,255})); annotation ( experiment( StopTime=1.0, @@ -55,8 +82,8 @@ Validation test for the block Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.ResponseProcess.

                          -This testing scenario in this example is the same to that in -Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.Validation.OnOffPeriod. +This testing scenario in this example is the same as that in +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.Validation.TunMonitor.

                          ")); end ResponseProcess; From 6300092b5d78eade0445973e45e08106309aa57c Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Tue, 19 Sep 2023 18:33:41 -0400 Subject: [PATCH 111/214] update the scripts and reference dataset --- ...ning_Relay_BaseClasses_Validation_OnOffPeriod.txt | 7 ++++--- ...eClasses_Validation_SamplerWithResetThreshold.txt | 11 +++++++++++ ...uning_Relay_BaseClasses_Validation_TunMonitor.txt | 12 ++++++++++++ ...PIDWithAutotuning_Relay_Validation_Controller.txt | 2 +- ...thAutotuning_Relay_Validation_ResponseProcess.txt | 11 ++++++----- ...tOrderTimedelayed_BaseClasses_Validation_Gain.txt | 2 +- ...ayed_BaseClasses_Validation_TimeConstantDelay.txt | 2 +- ...derTimedelayed_Validation_ControlProcessModel.txt | 2 +- ...hAutotuning_Validation_PIDWithFirstOrderAMIGO.txt | 5 ++--- ...thAutotuning_Validation_PIWithFirstOrderAMIGO.txt | 5 ++--- .../Relay/BaseClasses/Validation/HalfPeriodRatio.mos | 3 +-- .../Relay/BaseClasses/Validation/OnOffPeriod.mos | 4 ++-- .../Validation/SamplerWithResetThreshold.mos | 4 ++++ .../Relay/BaseClasses/Validation/TunMonitor.mos | 3 +++ .../Relay/Validation/ResponseProcess.mos | 2 +- .../Validation/PIDWithFirstOrderAMIGO.mos | 6 +++--- .../Validation/PIWithFirstOrderAMIGO.mos | 6 +++--- ....Relay.BaseClasses.Validation.HalfPeriodRatio.mos | 2 -- ...ning.Relay.BaseClasses.Validation.OnOffPeriod.mos | 1 + ...eClasses.Validation.SamplerWithResetThreshold.mos | 6 ++++++ ...uning.Relay.BaseClasses.Validation.TunMonitor.mos | 7 +++++++ ...thAutotuning.Relay.Validation.ResponseProcess.mos | 5 +++-- ...hAutotuning.Validation.PIDWithFirstOrderAMIGO.mos | 3 +-- ...thAutotuning.Validation.PIWithFirstOrderAMIGO.mos | 3 +-- 24 files changed, 77 insertions(+), 37 deletions(-) create mode 100644 Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_BaseClasses_Validation_SamplerWithResetThreshold.txt create mode 100644 Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_BaseClasses_Validation_TunMonitor.txt create mode 100644 Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/SamplerWithResetThreshold.mos create mode 100644 Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/TunMonitor.mos create mode 100644 Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.Validation.SamplerWithResetThreshold.mos create mode 100644 Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.Validation.TunMonitor.mos diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_BaseClasses_Validation_OnOffPeriod.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_BaseClasses_Validation_OnOffPeriod.txt index 0f211c78dbf..2d90c999a6a 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_BaseClasses_Validation_OnOffPeriod.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_BaseClasses_Validation_OnOffPeriod.txt @@ -1,4 +1,4 @@ -last-generated=2023-07-22 +last-generated=2023-09-19 statistics-simulation= { "linear": " ", @@ -7,5 +7,6 @@ statistics-simulation= } time=[0e+00, 1e+00] relSwi.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999993294478573e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5.960363559974428e-06, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] -onOffPer.tOn=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.023312766277112e-08, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01] -onOffPer.tOff=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 3.81463259311995e-06, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01] +retSig.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.192072717545907e-05, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +onOffPer.tOn=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.023312766277112e-08, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599980891074159e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +onOffPer.tOff=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 3.81463259311995e-06, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399923564296635e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_BaseClasses_Validation_SamplerWithResetThreshold.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_BaseClasses_Validation_SamplerWithResetThreshold.txt new file mode 100644 index 00000000000..8aca2fd0a2c --- /dev/null +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_BaseClasses_Validation_SamplerWithResetThreshold.txt @@ -0,0 +1,11 @@ +last-generated=2023-09-19 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +u.y=[5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 4.999970197738119e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01] +resSig.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.192072717545907e-05, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +sam.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 4.999940396364123e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_BaseClasses_Validation_TunMonitor.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_BaseClasses_Validation_TunMonitor.txt new file mode 100644 index 00000000000..b11dfade752 --- /dev/null +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_BaseClasses_Validation_TunMonitor.txt @@ -0,0 +1,12 @@ +last-generated=2023-09-19 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+00] +tOn.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000011935628514e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01] +tOff.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 2.980181779987214e-06, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01] +tunSta.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +tunEnd.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.192072717545907e-05, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_Controller.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_Controller.txt index 0334feb6123..80ad6940503 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_Controller.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_Controller.txt @@ -1,4 +1,4 @@ -last-generated=2023-06-19 +last-generated=2023-09-19 statistics-simulation= { "linear": " ", diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_ResponseProcess.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_ResponseProcess.txt index 1eb4c1cb253..8a13b588b61 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_ResponseProcess.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_ResponseProcess.txt @@ -1,4 +1,4 @@ -last-generated=2023-07-23 +last-generated=2023-09-19 statistics-simulation= { "linear": " ", @@ -7,8 +7,9 @@ statistics-simulation= } time=[0e+00, 1e+00] relSwi.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.999993294478573e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 5.960363559974428e-06, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] -resPro.tOn=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.023312766277112e-08, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01] -resPro.tOff=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 3.81463259311995e-06, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01] -resPro.triEnd=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] -resPro.triSta=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 6.705521427008603e-07, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +resPro.tOn=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.023312766277112e-08, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 5.999999865889549e-02, 1.599999964237213e-01, 1.599999964237213e-01, 1.599999964237213e-01, 1.599980891074159e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +resPro.tOff=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 3.81463259311995e-06, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399999856948853e-01, 6.399923564296635e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +tunSta.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 6.705521427008603e-07, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +tunEnd.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +resSig.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.192072717545907e-05, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] resPro.tau=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1.219512224197388e-01, 1.219512224197388e-01, 1.219512224197388e-01, 1.219512224197388e-01, 1.219512224197388e-01, 1.219512224197388e-01, 1.219512224197388e-01, 1.219512224197388e-01, 1.219512224197388e-01, 1.219512224197388e-01, 1.219512224197388e-01, 1.219512224197388e-01, 1.219512224197388e-01, 1.219512224197388e-01] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_BaseClasses_Validation_Gain.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_BaseClasses_Validation_Gain.txt index 5db81d42a4d..e7340fd1ce5 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_BaseClasses_Validation_Gain.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_BaseClasses_Validation_Gain.txt @@ -1,4 +1,4 @@ -last-generated=2023-06-19 +last-generated=2023-09-19 statistics-simulation= { "linear": " ", diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_BaseClasses_Validation_TimeConstantDelay.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_BaseClasses_Validation_TimeConstantDelay.txt index 1116b078fee..f47b7d401e8 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_BaseClasses_Validation_TimeConstantDelay.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_BaseClasses_Validation_TimeConstantDelay.txt @@ -1,4 +1,4 @@ -last-generated=2023-06-19 +last-generated=2023-09-19 statistics-simulation= { "linear": " ", diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_Validation_ControlProcessModel.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_Validation_ControlProcessModel.txt index 22f60190507..2a819467dfe 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_Validation_ControlProcessModel.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_Validation_ControlProcessModel.txt @@ -1,4 +1,4 @@ -last-generated=2023-06-19 +last-generated=2023-09-19 statistics-simulation= { "linear": " ", diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIDWithFirstOrderAMIGO.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIDWithFirstOrderAMIGO.txt index 0cdd8143fed..3f0333dad0a 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIDWithFirstOrderAMIGO.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIDWithFirstOrderAMIGO.txt @@ -1,4 +1,4 @@ -last-generated=2023-06-19 +last-generated=2023-09-19 statistics-simulation= { "linear": " ", @@ -12,5 +12,4 @@ PID.u_m=[7.200000286102295e-01, 7.999955415725708e-01, 8.00000011920929e-01, 9.9 PIDWitTun.u_s=[8.00000011920929e-01, 8.00000011920929e-01] PIDWitTun.u_m=[7.200000286102295e-01, 7.999955415725708e-01, 8.00000011920929e-01, 9.998812675476074e-01, 9.999308586120605e-01, 1.35326012969017e-02, 7.544281288573984e-07, -1.620563416793161e-08, 9.999659657478333e-01, 1.000000357627869e+00, 1.831946196034551e-03, -1.746274449487828e-07, -5.609168685083432e-09, 9.999949336051941e-01, 1e+00, -9.972719103097916e-02, -1.000000387430191e-01, 9.851133823394777e-01, 9.999995231628418e-01, 1e+00, 7.412633299827576e-01, 7.412546277046204e-01, 8.219677209854126e-01, 8.221158385276794e-01, 8.221158385276794e-01, 7.949301600456238e-01, 7.949300408363342e-01, 8.028817772865295e-01, 8.028837442398071e-01, 7.998954653739929e-01, 7.998544573783875e-01, 7.998544573783875e-01, 8.005303740501404e-01, 8.005304336547852e-01, 8.001306056976318e-01, 8.001298904418945e-01, 8.001298904418945e-01, 8.001444935798645e-01, 8.001444935798645e-01, 8.000691533088684e-01, 8.000690937042236e-01, 8.000497221946716e-01, 8.000494837760925e-01, 8.000494837760925e-01, 8.000285625457764e-01, 8.000285625457764e-01, 8.000184297561646e-01, 8.000183701515198e-01, 8.000183701515198e-01, 8.000112175941467e-01, 8.000112175941467e-01, 8.000070452690125e-01, 8.000069856643677e-01, 8.000043630599976e-01, 8.000043034553528e-01, 8.000043034553528e-01, 8.000026941299438e-01, 8.000026941299438e-01, 8.000016808509827e-01, 8.000016808509827e-01, 8.000016808509827e-01, 8.000010251998901e-01, 8.000010251998901e-01, 8.000006675720215e-01, 8.000006675720215e-01, 8.000004291534424e-01, 8.000003695487976e-01, 8.000003695487976e-01, 8.000002503395081e-01, 8.000002503395081e-01, 8.000001311302185e-01, 8.000001311302185e-01, 8.000001311302185e-01, 8.000000715255737e-01, 8.000000715255737e-01, 8.000000715255737e-01, 8.000000715255737e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01] autTunSig.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] -PIDWitTun.conProMod.triSta=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] -PIDWitTun.conProMod.triEnd=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +PIDWitTun.inTunPro.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIWithFirstOrderAMIGO.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIWithFirstOrderAMIGO.txt index 93959185893..2b4513c9165 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIWithFirstOrderAMIGO.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIWithFirstOrderAMIGO.txt @@ -1,4 +1,4 @@ -last-generated=2023-06-19 +last-generated=2023-09-19 statistics-simulation= { "linear": " ", @@ -12,5 +12,4 @@ PI.u_m=[7.200000286102295e-01, 7.999961376190186e-01, 8.00000011920929e-01, 9.99 PIWitTun.u_s=[8.00000011920929e-01, 8.00000011920929e-01] PIWitTun.u_m=[7.200000286102295e-01, 7.999961376190186e-01, 8.00000011920929e-01, 9.998272657394409e-01, 9.998775124549866e-01, 1.353192888200283e-02, 7.044694143587549e-07, -1.624311352088624e-08, 9.999662041664124e-01, 1e+00, 1.831627800129354e-03, 1.174558228456135e-08, -1.596621856947422e-08, 9.999952912330627e-01, 9.999999403953552e-01, -9.972726553678513e-02, -9.999983012676239e-02, 9.851134419441224e-01, 9.99998927116394e-01, 1.00000011920929e+00, 6.143606901168823e-01, 6.143478155136108e-01, 7.517821192741394e-01, 7.520342469215393e-01, 7.520342469215393e-01, 7.522276043891907e-01, 7.522276043891907e-01, 7.728294730186462e-01, 7.728345990180969e-01, 7.813796997070312e-01, 7.814969420433044e-01, 7.814969420433044e-01, 7.88197934627533e-01, 7.881981730461121e-01, 7.922895550727844e-01, 7.922970652580261e-01, 7.922970652580261e-01, 7.950133681297302e-01, 7.950133681297302e-01, 7.967620491981506e-01, 7.967624664306641e-01, 7.978848218917847e-01, 7.979001998901367e-01, 7.979001998901367e-01, 7.986375689506531e-01, 7.986376285552979e-01, 7.991153001785278e-01, 7.991161942481995e-01, 7.991161942481995e-01, 7.994266152381897e-01, 7.994266152381897e-01, 7.99627959728241e-01, 7.996280193328857e-01, 7.997568845748901e-01, 7.997586727142334e-01, 7.997586727142334e-01, 7.99843430519104e-01, 7.99843430519104e-01, 7.998983263969421e-01, 7.998984456062317e-01, 7.998984456062317e-01, 7.999340891838074e-01, 7.999340891838074e-01, 7.99957275390625e-01, 7.99957275390625e-01, 7.999720573425293e-01, 7.999722957611084e-01, 7.999722957611084e-01, 7.999820113182068e-01, 7.999820113182068e-01, 7.99988329410553e-01, 7.99988329410553e-01, 7.99988329410553e-01, 7.999924421310425e-01, 7.999924421310425e-01, 7.999950647354126e-01, 7.999950647354126e-01, 7.999967932701111e-01, 7.999967932701111e-01, 7.999967932701111e-01, 7.999979257583618e-01, 7.999979257583618e-01, 7.999986410140991e-01, 7.999986410140991e-01, 7.999986410140991e-01, 7.999991178512573e-01, 7.999991178512573e-01, 7.999994158744812e-01, 7.999994158744812e-01, 7.999996542930603e-01, 7.999996542930603e-01, 7.999996542930603e-01, 7.999997735023499e-01, 7.999997735023499e-01, 7.999998331069946e-01, 7.999998331069946e-01, 7.999998331069946e-01, 7.999998927116394e-01, 7.999998927116394e-01, 7.999999523162842e-01, 7.999999523162842e-01] autTunSig.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] -PIWitTun.conProMod.triSta=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] -PIWitTun.conProMod.triEnd=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +PIWitTun.inTunPro.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/HalfPeriodRatio.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/HalfPeriodRatio.mos index 4c85c2af374..d54b42bf646 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/HalfPeriodRatio.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/HalfPeriodRatio.mos @@ -1,4 +1,3 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.Validation.HalfPeriodRatio", method="Cvode", tolerance=1e-06, resultFile="HalfPeriodRatio"); createPlot(id=1, position={75, 75, 884, 547}, y={"tOn.y", "tOff.y"}, range={0.0, 1.0, -0.5, 1.0}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={75, 75, 884, 547}, y={"halPerRat.triSta", "halPerRat.triEnd"}, range={0.0, 1.0, -0.5, 1.5}, grid=true, subPlot=102, colors={{28,108,200}, {28,108,200}}); -createPlot(id=1, position={75, 75, 884, 547}, y={"halPerRat.rho"}, range={0.0, 1.0, 0.0, 4.0}, grid=true, subPlot=103, colors={{28,108,200}}); \ No newline at end of file +createPlot(id=1, position={75, 75, 884, 547}, y={"halPerRat.rho"}, range={0.0, 1.0, 0.0, 4.0}, grid=true, subPlot=102, colors={{28,108,200}}); \ No newline at end of file diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/OnOffPeriod.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/OnOffPeriod.mos index d6316aac2ff..3b4f87329f1 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/OnOffPeriod.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/OnOffPeriod.mos @@ -1,3 +1,3 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.Validation.OnOffPeriod", method="Cvode", tolerance=1e-06, resultFile="OnOffPeriod"); -createPlot(id=1, position={30, 0, 930, 617}, y={"relSwi.y"}, range={0.0, 1.0, -0.2, 1.2000000000000002}, grid=true, subPlot=101, colors={{28,108,200}}); -createPlot(id=1, position={30, 0, 930, 617}, y={"onOffPer.tOn", "onOffPer.tOff"}, range={0.0, 1.0, -0.2, 0.8}, grid=true, subPlot=102, colors={{238,46,47}, {28,108,200}}); \ No newline at end of file +createPlot(id=1, position={15, -71, 930, 617}, y={"relSwi.y", "retSig.y"}, range={0.0, 1.0, -0.2, 1.2000000000000002}, grid=true, subPlot=101, colors={{28,108,200}, {28,108,200}}); +createPlot(id=1, position={15, -71, 930, 617}, y={"onOffPer.tOn", "onOffPer.tOff"}, range={0.0, 1.0, -0.2, 0.8}, grid=true, subPlot=102, colors={{238,46,47}, {28,108,200}}) \ No newline at end of file diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/SamplerWithResetThreshold.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/SamplerWithResetThreshold.mos new file mode 100644 index 00000000000..3322a561a12 --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/SamplerWithResetThreshold.mos @@ -0,0 +1,4 @@ +simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.Validation.SamplerWithResetThreshold", method="Cvode", tolerance=1e-06,resultFile="SamplerWithResetThreshold"); +createPlot(id=1, position={35, 35, 884, 547}, y={"u.y"}, range={0.0, 1.0, -1.0, 1.0}, grid=true, subPlot=101, colors={{28,108,200}}); +createPlot(id=1, position={35, 35, 884, 547}, y={"resSig.y"}, range={0.0, 1.0, -1.0, 2.0}, grid=true, subPlot=102, colors={{28,108,200}}); +createPlot(id=1, position={35, 35, 884, 547}, y={"sam.y"}, range={0.0, 1.0, -0.5, 1.0}, grid=true, subPlot=103, colors={{28,108,200}}); \ No newline at end of file diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/TunMonitor.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/TunMonitor.mos new file mode 100644 index 00000000000..ec30dd94b5b --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/TunMonitor.mos @@ -0,0 +1,3 @@ +simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.Validation.TunMonitor", method="Cvode", tolerance=1e-06,resultFile="TunMonitor"); +createPlot(id=1, position={0, 0, 1392, 452}, y={"tOn.y", "tOff.y"}, range={0.0, 1.0, -0.2, 0.6000000000000001}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={0, 0, 1392, 452}, y={"tunSta.y", "tunEnd.y"}, range={0.0, 1.0, -0.5, 1.5}, grid=true, subPlot=102, colors={{28,108,200}, {28,108,200}}); \ No newline at end of file diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mos index bb89e852a3c..d175ef306d3 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mos @@ -1,5 +1,5 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.ResponseProcess", method="Cvode", tolerance=1e-06, resultFile="ResponseProcess"); createPlot(id=1, position={37, 37, 1082, 571}, y={"relSwi.y"}, range={0.0, 1.0, -1.0, 2.0}, grid=true, subPlot=101, colors={{28,108,200}}); createPlot(id=1, position={37, 37, 1082, 571}, y={"resPro.tOn", "resPro.tOff"}, range={0.0, 1.0, -1.0, 1.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={37, 37, 1082, 571}, y={"resPro.triEnd", "resPro.triSta"}, range={0.0, 1.0, -1.0, 2.0}, grid=true, subPlot=103, colors={{28,108,200}, {28,108,200}}); +createPlot(id=1, position={15, 15, 1082, 571}, y={"tunSta.y", "tunEnd.y", "resSig.y"}, range={0.0, 1.0, -1.0, 2.0}, grid=true, subPlot=103, colors={{28,108,200}, {28,108,200}, {28,108,200}}); createPlot(id=1, position={37, 37, 1082, 571}, y={"resPro.tau"}, range={0.0, 1.0, 0.0, 2.0}, grid=true, subPlot=104, colors={{28,108,200}}); \ No newline at end of file diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mos index 746336ecd8e..3e41e35f80c 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mos @@ -1,5 +1,5 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIDWithFirstOrderAMIGO", stopTime=10000, method="Cvode", tolerance=1e-06, resultFile="PIDWithFirstOrderAMIGO"); -createPlot(id=1, position={58, 0, 1212, 639}, y={"PID.u_s", "PID.u_m"}, range={0.0, 10000.0, -0.5, 1.5}, autoscale=false, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={58, 0, 1212, 639}, y={"PIDWitTun.u_s", "PIDWitTun.u_m"}, range={0.0, 10000.0, -1.0, 2.0}, autoscale=false, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={58, 0, 1212, 639}, y={"PID.u_s", "PID.u_m"}, range={0.0, 10000.0, -0.5, 1.5}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={58, 0, 1212, 639}, y={"PIDWitTun.u_s", "PIDWitTun.u_m"}, range={0.0, 10000.0, -1.0, 2.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); createPlot(id=1, position={58, 0, 1212, 639}, y={"autTunSig.y"}, range={0.0, 10000.0, -1.0, 2.0}, autoscale=false, grid=true, subPlot=103, colors={{28,108,200}}); -createPlot(id=1, position={58, 0, 1212, 639}, y={"PIDWitTun.conProMod.triSta", "PIDWitTun.conProMod.triEnd"}, range={0.0, 10000.0, -1.0, 2.0}, autoscale=false, grid=true, subPlot=104, colors={{28,108,200}, {28,108,200}}); \ No newline at end of file +createPlot(id=1, position={55, 55, 1212, 639}, y={"PIDWitTun.inTunPro.y"}, range={0.0, 10000.0, -2.0, 2.0}, grid=true, subPlot=104, colors={{28,108,200}}); \ No newline at end of file diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mos index e8d9a4f280b..46ffd50b945 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mos @@ -1,5 +1,5 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIWithFirstOrderAMIGO", stopTime=10000, method="Cvode", tolerance=1e-06, resultFile="PIWithFirstOrderAMIGO"); -createPlot(id=1, position={30, -20, 776, 525}, y={"PI.u_s", "PI.u_m"}, range={0.0, 10000.0, -0.5, 1.5}, autoscale=false, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={30, -20, 776, 525}, y={"PIWitTun.u_s", "PIWitTun.u_m"}, range={0.0, 10000.0, -2.0, 2.0}, autoscale=false, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={30, -20, 776, 525}, y={"PI.u_s", "PI.u_m"}, range={0.0, 10000.0, -0.5, 1.5}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={30, -20, 776, 525}, y={"PIWitTun.u_s", "PIWitTun.u_m"}, range={0.0, 10000.0, -2.0, 2.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); createPlot(id=1, position={30, -20, 776, 525}, y={"autTunSig.y"}, range={0.0, 10000.0, -1.0, 2.0}, autoscale=false, grid=true, subPlot=103, colors={{28,108,200}}); -createPlot(id=1, position={30, -20, 776, 525}, y={"PIWitTun.conProMod.triSta", "PIWitTun.conProMod.triEnd"}, range={0.0, 10000.0, -1.0, 2.0}, autoscale=false, grid=true, subPlot=104, colors={{28,108,200}, {28,108,200}}); \ No newline at end of file +createPlot(id=1, position={55, 55, 1212, 639}, y={"PIWitTun.inTunPro.y"}, range={0.0, 10000.0, -2.0, 2.0}, grid=true, subPlot=104, colors={{28,108,200}}); \ No newline at end of file diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.Validation.HalfPeriodRatio.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.Validation.HalfPeriodRatio.mos index b2a7753f795..562887bd9dd 100644 --- a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.Validation.HalfPeriodRatio.mos +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.Validation.HalfPeriodRatio.mos @@ -2,7 +2,5 @@ compareVars := { "tOn.y", "tOff.y", - "halPerRat.triSta", - "halPerRat.triEnd", "halPerRat.rho" }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.Validation.OnOffPeriod.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.Validation.OnOffPeriod.mos index 0a831ed5ff0..359ef28523a 100644 --- a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.Validation.OnOffPeriod.mos +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.Validation.OnOffPeriod.mos @@ -1,6 +1,7 @@ compareVars := { "relSwi.y", + "retSig.y", "onOffPer.tOn", "onOffPer.tOff" }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.Validation.SamplerWithResetThreshold.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.Validation.SamplerWithResetThreshold.mos new file mode 100644 index 00000000000..8f4b043a072 --- /dev/null +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.Validation.SamplerWithResetThreshold.mos @@ -0,0 +1,6 @@ +compareVars := + { + "u.y", + "resSig.y", + "sam.y" + }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.Validation.TunMonitor.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.Validation.TunMonitor.mos new file mode 100644 index 00000000000..43549dd6882 --- /dev/null +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.Validation.TunMonitor.mos @@ -0,0 +1,7 @@ +compareVars := + { + "tOn.y", + "tOff.y", + "tunSta.y", + "tunEnd.y" + }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.ResponseProcess.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.ResponseProcess.mos index 15b2f3a4ed3..e0bb8fa3ee3 100644 --- a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.ResponseProcess.mos +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.ResponseProcess.mos @@ -3,7 +3,8 @@ compareVars := "relSwi.y", "resPro.tOn", "resPro.tOff", - "resPro.triEnd", - "resPro.triSta", + "tunSta.y", + "tunEnd.y", + "resSig.y", "resPro.tau" }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIDWithFirstOrderAMIGO.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIDWithFirstOrderAMIGO.mos index 5b262360594..ff0449fee61 100644 --- a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIDWithFirstOrderAMIGO.mos +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIDWithFirstOrderAMIGO.mos @@ -5,6 +5,5 @@ compareVars := "PIDWitTun.u_s", "PIDWitTun.u_m", "autTunSig.y", - "PIDWitTun.conProMod.triSta", - "PIDWitTun.conProMod.triEnd" + "PIDWitTun.inTunPro.y" }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIWithFirstOrderAMIGO.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIWithFirstOrderAMIGO.mos index 4238ae355f9..10830307f53 100644 --- a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIWithFirstOrderAMIGO.mos +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIWithFirstOrderAMIGO.mos @@ -5,6 +5,5 @@ compareVars := "PIWitTun.u_s", "PIWitTun.u_m", "autTunSig.y", - "PIWitTun.conProMod.triSta", - "PIWitTun.conProMod.triEnd" + "PIWitTun.inTunPro.y" }; From e8ea074b4be07704dee5140d4441f21cc9294b7d Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Tue, 19 Sep 2023 22:29:49 -0400 Subject: [PATCH 112/214] improve the doc --- .../PIDWithAutotuning/FirstOrderAMIGO.mo | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index 917a00d82b7..b4d935883c6 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -100,13 +100,13 @@ block FirstOrderAMIGO "Calculates the parameters of a first-order time delayed model" annotation (Placement(transformation(extent={{-20,40},{-40,60}}))); Buildings.Controls.OBC.CDL.Logical.Latch inTunPro - "True: it is in tuning process" + "True: it is in an autotuning process" annotation (Placement(transformation(extent={{40,-80},{60,-60}}))); Buildings.Controls.OBC.CDL.Logical.Nand nand - "Check if the tuning is ongoing while a tuning request is received" + "Check if an autotuning is ongoing while a new autotuning request is received" annotation (Placement(transformation(extent={{90,60},{70,80}}))); - Buildings.Controls.OBC.CDL.Utilities.Assert assMes(final message="A tuning is ongoin and the tuning request is ignored") - "Error message when the tuning is ongoing while a tuning request is received" + Buildings.Controls.OBC.CDL.Utilities.Assert assMes(final message="An autotuning is ongoing and an autotuning request is ignored") + "Error message when an autotuning tuning is ongoing while a new autotuning request is received" annotation (Placement(transformation(extent={{60,60},{40,80}}))); protected @@ -137,7 +137,7 @@ protected final parameter Boolean with_D=controllerType == Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PID "Boolean flag to enable derivative action" annotation (Evaluate=true,HideResult=true); - final parameter Buildings.Controls.OBC.CDL.Types.SimpleController conTyp = + final parameter Buildings.Controls.OBC.CDL.Types.SimpleController conTyp= if controllerType==Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PI then Buildings.Controls.OBC.CDL.Types.SimpleController.PI else Buildings.Controls.OBC.CDL.Types.SimpleController.PID @@ -249,9 +249,9 @@ In addition, the output of this block is limited from 0 to 1. To use this block, connect it with a control loop. Before the PID tuning process starts, this block is equivalent to Buildings.Controls.OBC.Utilities.PIDWithInputGains. -This block starts the PID tuning process when a request for performing auto-tuning occurs, i.e., the value of the boolean input signal triTun changes from +This block starts the PID tuning process when a request for performing autotuning occurs, i.e., the value of the boolean input signal triTun changes from false to true. -During the auto-tuning process, the output of the block changes into that of a relay controller (see +During the autotuning process, the output of the block changes into that of a relay controller (see Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Controller). The PID tuning process ends automatically (see details in Buildings.Controls.OBC.Utilities.PIDWithAutotuning.BaseClasses.Relay.TunMonitor). @@ -259,7 +259,7 @@ Since then, this block turns back to a PID controller but with tuned PID paramet

                          -Note: If an auto-tuning is ongoing, i.e., inTunPro.y is true, a request for performing auto-tuning will be ignored. +Note: If an autotuning is ongoing, i.e., inTunPro.y is true, a request for performing autotuning will be ignored.

                          References

                          From 0809e927e278d9e748b6a025b31bc1d7ad58e85a Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Wed, 20 Sep 2023 17:06:48 -0700 Subject: [PATCH 113/214] renamed class --- .../Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo | 2 +- .../BaseClasses/{TunMonitor.mo => TuningMonitor.mo} | 4 ++-- .../Relay/BaseClasses/Validation/HalfPeriodRatio.mo | 2 +- .../Validation/{TunMonitor.mo => TuningMonitor.mo} | 12 ++++++------ .../Relay/BaseClasses/Validation/package.order | 2 +- .../Relay/BaseClasses/package.order | 2 +- .../Utilities/PIDWithAutotuning/Relay/Controller.mo | 6 +++--- .../PIDWithAutotuning/Relay/ResponseProcess.mo | 8 ++++---- .../Relay/Validation/ResponseProcess.mo | 2 +- ...g_Relay_BaseClasses_Validation_TuningMonitor.txt} | 0 .../Validation/{TunMonitor.mos => TuningMonitor.mos} | 6 +++--- ...g.Relay.BaseClasses.Validation.TuningMonitor.mos} | 0 12 files changed, 23 insertions(+), 23 deletions(-) rename Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/{TunMonitor.mo => TuningMonitor.mo} (99%) rename Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/{TunMonitor.mo => TuningMonitor.mo} (95%) rename Buildings/Resources/ReferenceResults/Dymola/{Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_BaseClasses_Validation_TunMonitor.txt => Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_BaseClasses_Validation_TuningMonitor.txt} (100%) rename Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/{TunMonitor.mos => TuningMonitor.mos} (50%) rename Buildings/Resources/Scripts/OpenModelica/compareVars/{Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.Validation.TunMonitor.mos => Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.Validation.TuningMonitor.mos} (100%) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index b4d935883c6..24020b8febc 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -253,7 +253,7 @@ This block starts the PID tuning process when a request for performing autotunin false to true. During the autotuning process, the output of the block changes into that of a relay controller (see Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Controller). -The PID tuning process ends automatically (see details in +The PID tuning process ends automatically (see details in Buildings.Controls.OBC.Utilities.PIDWithAutotuning.BaseClasses.Relay.TunMonitor). Since then, this block turns back to a PID controller but with tuned PID parameters.

                          diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/TunMonitor.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/TuningMonitor.mo similarity index 99% rename from Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/TunMonitor.mo rename to Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/TuningMonitor.mo index bf3d0900854..60f3f1df7b1 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/TunMonitor.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/TuningMonitor.mo @@ -1,5 +1,5 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses; -block TunMonitor "Monitor the tuning process" +block TuningMonitor "Monitor the tuning process" Buildings.Controls.OBC.CDL.Interfaces.RealInput tOn( final quantity="Time", final unit="s", @@ -157,4 +157,4 @@ or toff changes after the tuning period starts, as illus \"Automatic Controller Tuning using Relay-based Model Identification.\" Department of Automatic Control, Lund Institute of Technology, Lund University.

                          ")); -end TunMonitor; +end TuningMonitor; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/HalfPeriodRatio.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/HalfPeriodRatio.mo index 654b4738b16..bd31dd38a63 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/HalfPeriodRatio.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/HalfPeriodRatio.mo @@ -79,7 +79,7 @@ Validation test for the block Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.HalfPeriodRatio.

                          -This testing scenario in this example is the same as that in +This testing scenario in this example is the same as that in Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.Validation.TunMonitor. The lengths of the On period and the Off period are sampled at 0.9s to calculate the half period ratio.

                          diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/TunMonitor.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/TuningMonitor.mo similarity index 95% rename from Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/TunMonitor.mo rename to Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/TuningMonitor.mo index 4b4f6aedbfb..eb3f3292e29 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/TunMonitor.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/TuningMonitor.mo @@ -1,5 +1,5 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.Validation; -model TunMonitor "Test model for the tuning period management" +model TuningMonitor "Test model for the tuning period management" Buildings.Controls.OBC.CDL.Reals.Sources.Pulse tOnSig1( amplitude=-0.1, width=0.1, @@ -25,7 +25,7 @@ model TunMonitor "Test model for the tuning period management" offset=0.5) "The length of the Off period" annotation (Placement(transformation(extent={{-80,-40},{-60,-20}}))); - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.TunMonitor + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.TuningMonitor tunMan "Manage the tuning process" annotation (Placement(transformation(extent={{20,-10},{40,10}}))); Buildings.Controls.OBC.CDL.Logical.Latch tunSta "Display when tuning process starts" @@ -56,7 +56,7 @@ equation StopTime=1.0, Tolerance=1e-06), __Dymola_Commands( - file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/TunMonitor.mos" "Simulate and plot"), + file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/TuningMonitor.mos" "Simulate and plot"), Icon( coordinateSystem( preserveAspectRatio=false, @@ -84,8 +84,8 @@ First implementation
                          ", info="

                          Validation test for the block - -Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.TunMonitor. + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.TuningMonitor.

                          • @@ -102,4 +102,4 @@ This triggers the tuning period to end.
                          ")); -end TunMonitor; +end TuningMonitor; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/package.order index 9b1c887574a..07bed6f4f00 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/package.order +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/package.order @@ -2,4 +2,4 @@ HalfPeriodRatio NormalizedTimeDelay OnOffPeriod SamplerWithResetThreshold -TunMonitor +TuningMonitor diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/package.order index 710b86ac453..db7cea3e9e5 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/package.order +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/package.order @@ -2,5 +2,5 @@ HalfPeriodRatio NormalizedTimeDelay OnOffPeriod SamplerWithResetThreshold -TunMonitor +TuningMonitor Validation diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo index b272584a088..250f782b247 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo @@ -29,7 +29,7 @@ block Controller "Control error" annotation (Placement(transformation(extent={{100,0},{140,40}}), iconTransformation(extent={{100,-20},{140,20}}))); - + protected Buildings.Controls.OBC.CDL.Logical.OnOffController greMeaSet( final bandwidth=deaBan*2, @@ -121,8 +121,8 @@ equation fillPattern=FillPattern.Solid, fillColor={175,175,175}, textString="Relay"), - Line(points={{-70,24},{-34,24},{-34,58},{38,58},{38,24},{66,24}}, color= - {28,108,200})}), Diagram( + Line(points={{-70,24},{-34,24},{-34,58},{38,58},{38,24},{66,24}}, color + ={28,108,200})}), Diagram( coordinateSystem(preserveAspectRatio=false)), Documentation(info="

                          diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo index c2926be0d64..0a7464ad876 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo @@ -53,8 +53,8 @@ protected final gamma=max(yHig, yLow)/min(yLow, yHig)) "Block that calculates the normalized time delay" annotation (Placement(transformation(extent={{40,0},{60,20}}))); - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.TunMonitor TunMon - "Block that detects when the tuning period starts and ends" + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.TuningMonitor + TunMon "Block that detects when the tuning period starts and ends" annotation (Placement(transformation(extent={{-40,-40},{-20,-20}}))); equation @@ -153,8 +153,8 @@ Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.NormalizedT Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.OnOffPeriod.

                        • - -Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.TunMonitor. + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.TuningMonitor.
                        ")); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mo index 3c1101229a0..22853711572 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mo @@ -82,7 +82,7 @@ Validation test for the block Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.ResponseProcess.

                        -This testing scenario in this example is the same as that in +This testing scenario in this example is the same as that in Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.Validation.TunMonitor.

                        ")); diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_BaseClasses_Validation_TunMonitor.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_BaseClasses_Validation_TuningMonitor.txt similarity index 100% rename from Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_BaseClasses_Validation_TunMonitor.txt rename to Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_BaseClasses_Validation_TuningMonitor.txt diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/TunMonitor.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/TuningMonitor.mos similarity index 50% rename from Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/TunMonitor.mos rename to Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/TuningMonitor.mos index ec30dd94b5b..0825b99350a 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/TunMonitor.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/TuningMonitor.mos @@ -1,3 +1,3 @@ -simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.Validation.TunMonitor", method="Cvode", tolerance=1e-06,resultFile="TunMonitor"); -createPlot(id=1, position={0, 0, 1392, 452}, y={"tOn.y", "tOff.y"}, range={0.0, 1.0, -0.2, 0.6000000000000001}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={0, 0, 1392, 452}, y={"tunSta.y", "tunEnd.y"}, range={0.0, 1.0, -0.5, 1.5}, grid=true, subPlot=102, colors={{28,108,200}, {28,108,200}}); \ No newline at end of file +simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.Validation.TuningMonitor", method="Cvode", tolerance=1e-06,resultFile="TunMonitor"); +createPlot(id=1, position={0, 0, 1392, 452}, y={"tOn.y", "tOff.y"}, range={0.0, 1.0, -0.2, 0.6}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); +createPlot(id=1, position={0, 0, 1392, 452}, y={"tunSta.y", "tunEnd.y"}, range={0.0, 1.0, -0.5, 1.5}, grid=true, subPlot=102, colors={{28,108,200}, {28,108,200}}); diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.Validation.TunMonitor.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.Validation.TuningMonitor.mos similarity index 100% rename from Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.Validation.TunMonitor.mos rename to Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.Validation.TuningMonitor.mos From 7700fad7e78c682e5a20cc992b44c73e4d0099b3 Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Thu, 21 Sep 2023 12:51:25 -0700 Subject: [PATCH 114/214] added instance comment --- .../Relay/BaseClasses/HalfPeriodRatio.mo | 16 +++++++++------- .../BaseClasses/Validation/HalfPeriodRatio.mo | 1 + 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/HalfPeriodRatio.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/HalfPeriodRatio.mo index d5294cc3d7c..9db8bb29e07 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/HalfPeriodRatio.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/HalfPeriodRatio.mo @@ -38,7 +38,7 @@ protected annotation (Placement(transformation(extent={{-20,-30},{0,-10}}))); Buildings.Controls.OBC.CDL.Reals.Max maxtOntOff "Block that finds the larger one between the length for the On period and the length for theoff period" - annotation (Placement(transformation(extent={{-18,30},{2,50}}))); + annotation (Placement(transformation(extent={{-20,30},{0,50}}))); Buildings.Controls.OBC.CDL.Reals.Divide halPerRat "Block that calculates the half period ratio" annotation (Placement(transformation(extent={{40,-10},{60,10}}))); @@ -48,14 +48,16 @@ equation annotation (Line(points={{-82,80},{-120,80}}, color={0,0,127})); connect(tOffSam.u, tOff) annotation (Line(points={{-82,-70},{-120,-70}}, color={0,0,127})); - connect(tOnSam.y, maxtOntOff.u1) annotation (Line(points={{-58,80},{-52,80},{-52, - 46},{-20,46}}, color={0,0,127})); - connect(maxtOntOff.u2, tOffSam.y) annotation (Line(points={{-20,34},{-40,34},{ - -40,-70},{-58,-70}}, color={0,0,127})); + connect(tOnSam.y, maxtOntOff.u1) annotation (Line(points={{-58,80},{-52,80},{ + -52,46},{-22,46}}, + color={0,0,127})); + connect(maxtOntOff.u2, tOffSam.y) annotation (Line(points={{-22,34},{-40,34}, + {-40,-70},{-58,-70}},color={0,0,127})); connect(mintOntOff.u2, tOffSam.y) annotation (Line(points={{-22,-26},{-40,-26}, {-40,-70},{-58,-70}}, color={0,0,127})); - connect(maxtOntOff.y, halPerRat.u1) annotation (Line(points={{4,40},{32,40},{32, - 6},{38,6}}, color={0,0,127})); + connect(maxtOntOff.y, halPerRat.u1) annotation (Line(points={{2,40},{32,40},{ + 32,6},{38,6}}, + color={0,0,127})); connect(halPerRat.u2, mintOntOff.y) annotation (Line(points={{38,-6},{10,-6},{ 10,-20},{2,-20}}, color={0,0,127})); connect(halPerRat.y, rho) annotation (Line(points={{62,0},{102,0},{102,0},{120, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/HalfPeriodRatio.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/HalfPeriodRatio.mo index bd31dd38a63..8adc7c53ee5 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/HalfPeriodRatio.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/HalfPeriodRatio.mo @@ -30,6 +30,7 @@ model HalfPeriodRatio "Test model for calculating the half period ratio" "The length of the Off period" annotation (Placement(transformation(extent={{-80,-70},{-60,-50}}))); Buildings.Controls.OBC.CDL.Logical.Sources.SampleTrigger samTri(period=1, shift=0.9) + "True endi sampling" annotation (Placement(transformation(extent={{-80,-20},{-60,0}}))); equation connect(tOff.y, halPerRat.tOff) annotation (Line(points={{-58,-60},{12,-60},{ From 0ea31696c30133c8d9884ac5c1afc8001efc0142 Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Thu, 21 Sep 2023 14:57:51 -0700 Subject: [PATCH 115/214] updated revision note --- .../BaseClasses/SamplerWithResetThreshold.mo | 8 +++---- .../Relay/BaseClasses/TuningMonitor.mo | 23 ++++++++----------- .../Validation/SamplerWithResetThreshold.mo | 2 +- .../BaseClasses/Validation/TuningMonitor.mo | 2 +- 4 files changed, 16 insertions(+), 19 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/SamplerWithResetThreshold.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/SamplerWithResetThreshold.mo index ea43f4204f7..7fe57e1be7c 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/SamplerWithResetThreshold.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/SamplerWithResetThreshold.mo @@ -10,9 +10,9 @@ block SamplerWithResetThreshold annotation (Placement(transformation(extent={{-140,40},{-100,80}}), iconTransformation(extent={{-140,40},{-100,80}}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanInput trigger - "Resets the output when trigger becomes true" annotation (Placement( - transformation(extent={{-140,-80},{-100,-40}}), iconTransformation( - extent={{-140,-80},{-100,-40}}))); + "Resets the output when trigger becomes true" + annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), + iconTransformation(extent={{-140,-80},{-100,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput y "Sampling output" annotation (Placement(transformation(extent={{100,-20},{140,20}}))); @@ -82,7 +82,7 @@ equation Documentation(revisions="
                        • -June 1, 2022, by Sen Huang:
                          +September 20, 2023, by Sen Huang:
                          First implementation
                        diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/TuningMonitor.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/TuningMonitor.mo index 60f3f1df7b1..5175888d0fd 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/TuningMonitor.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/TuningMonitor.mo @@ -63,13 +63,12 @@ protected Buildings.Controls.OBC.CDL.Reals.Greater gretOnAndtOff "Check if both the length for the On period and the length for the off period are larger than 0" annotation (Placement(transformation(extent={{-40,-80},{-20,-60}}))); + equation connect(tMax.u1, tOn) annotation (Line(points={{-82,76},{-94,76},{-94,80},{ - -120,80}}, - color={0,0,127})); + -120,80}}, color={0,0,127})); connect(tMax.u2, tOff) annotation (Line(points={{-82,64},{-94,64},{-94,-70},{ - -120,-70}}, - color={0,0,127})); + -120,-70}}, color={0,0,127})); connect(minLen.y, gretOnOrtOff.u2) annotation (Line(points={{-58,30},{-50,30}, {-50,42},{-42,42}}, color={0,0,127})); connect(samAddtOntOff.y, tInc.u2) annotation (Line(points={{2,0},{10,0},{10,22}, @@ -84,13 +83,11 @@ equation connect(samAddtOntOff.y, tDec.u2) annotation (Line(points={{2,0},{10,0},{10,-38}, {18,-38}}, color={0,0,127})); connect(gretOnOrtOff.u1, tMax.y) annotation (Line(points={{-42,50},{-52,50},{ - -52,70},{-58,70}}, - color={0,0,127})); + -52,70},{-58,70}}, color={0,0,127})); connect(tDec.y, tCha.u2) annotation (Line(points={{42,-30},{42,-8},{48,-8}}, - color={255,0,255})); + color={255,0,255})); connect(edgTunSta.y, triSta) annotation (Line(points={{82,60},{88,60},{88,60}, - {120,60}}, - color={255,0,255})); + {120,60}}, color={255,0,255})); connect(tCha.y, edgTunEnd.u) annotation (Line(points={{72,0},{80,0},{80,-40},{ 52,-40},{52,-60},{58,-60}}, color={255,0,255})); connect(edgTunEnd.y, triEnd) annotation (Line(points={{82,-60},{92,-60},{92,-60}, @@ -102,8 +99,7 @@ equation connect(tMin.y, gretOnAndtOff.u1) annotation (Line(points={{-58,-70},{-42,-70}}, color={0,0,127})); connect(gretOnAndtOff.u2, minLen.y) annotation (Line(points={{-42,-78},{-50, - -78},{-50,30},{-58,30}}, - color={0,0,127})); + -78},{-50,30},{-58,30}}, color={0,0,127})); connect(gretOnOrtOff.y, edgTunSta.u) annotation (Line(points={{-18,50},{50,50}, {50,60},{58,60}},color={255,0,255})); connect(gretOnAndtOff.y, samAddtOntOff.trigger) annotation (Line(points={{-18, @@ -118,7 +114,8 @@ equation color={0,0,127})); connect(samAddtOntOff.u, mul.y) annotation (Line(points={{-22,0},{-32,0},{-32, -14},{-14,-14},{-14,-30},{-18,-30}}, color={0,0,127})); - annotation (defaultComponentName = "tunMon", + +annotation (defaultComponentName = "tunMon", Diagram( coordinateSystem( extent={{-100,-100},{100,100}})), @@ -136,7 +133,7 @@ equation Documentation(revisions="
                        • -June 1, 2022, by Sen Huang:
                          +September 20, 2023, by Sen Huang:
                          First implementation
                        diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/SamplerWithResetThreshold.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/SamplerWithResetThreshold.mo index 44c63bf00ec..2928afa6b7b 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/SamplerWithResetThreshold.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/SamplerWithResetThreshold.mo @@ -46,7 +46,7 @@ equation Documentation(revisions="
                        • -June 1, 2022, by Sen Huang:
                          +September 20, 2023, by Sen Huang:
                          First implementation
                        diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/TuningMonitor.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/TuningMonitor.mo index eb3f3292e29..a53a8c6c72a 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/TuningMonitor.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/TuningMonitor.mo @@ -77,7 +77,7 @@ equation Documentation(revisions="
                        • -June 1, 2022, by Sen Huang:
                          +September 20, 2023, by Sen Huang:
                          First implementation
                        From 5bd2846dcfb06e9f3ae15fe2d58a2fa9a8528dc8 Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Thu, 28 Sep 2023 14:09:31 -0700 Subject: [PATCH 116/214] improved validation model to show retriggering tuning process --- .../Validation/PIDWithFirstOrderAMIGO.mo | 12 ++++++++---- .../Validation/PIWithFirstOrderAMIGO.mo | 6 +++--- ...hAutotuning_Validation_PIDWithFirstOrderAMIGO.txt | 10 +++++----- ...thAutotuning_Validation_PIWithFirstOrderAMIGO.txt | 10 +++++----- 4 files changed, 21 insertions(+), 17 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo index cfd515de717..83f59375d23 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo @@ -42,8 +42,8 @@ model PIDWithFirstOrderAMIGO "Test model for an autotuning PID controller" annotation (Placement(transformation(extent={{80,-60},{60,-40}}))); Buildings.Controls.OBC.CDL.Logical.Sources.Pulse autTunSig( width=0.9, - period=10000, - shift=-9000) "Signal for enabling the autotuning" + period=6000, + shift=500) "Signal for enabling the autotuning" annotation (Placement(transformation(extent={{-80,-60},{-60,-40}}))); equation connect(resSig.y, PID.trigger) annotation (Line(points={{-58,70},{-30,70},{-30, @@ -103,16 +103,20 @@ to that of a normal PID controller (PID) with prescribed gains.

                        Both PID controllers are connected with a first-order control process. -At the beginning (0s-1000s), the outputs from those two PID controllers +At the beginning (0s-500s), the outputs from those two PID controllers are identical as their prescribed gains are the same.

                        -Once the autotuning starts at 1000s, the outputs of the two PID controllers become different. +Once the autotuning starts at 500s, the outputs of the two PID controllers become different. After the tuning completes, under the control of PIDWitTun, the value of the controlled variable is close to the setpoint after the tuning period ends (PIDWitTun.resPro.triEnd = true). On the contrary, PID has a poor control performance, i.e., the value of the controlled variable oscillates.

                        +

                        +The example also shows that the autotunning process can be retriggered +when the input triTun becomes true. +

                        ", revisions="
                          diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo index 9f38bced416..6c33d31da0e 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo @@ -42,8 +42,8 @@ model PIWithFirstOrderAMIGO "Test model for an autotuning PI controller" annotation (Placement(transformation(extent={{80,-60},{60,-40}}))); Buildings.Controls.OBC.CDL.Logical.Sources.Pulse autTunSig( width=0.9, - period=10000, - shift=-9000) "Signal for enabling the autotuning" + period=6000, + shift=500) "Signal for enabling the autotuning" annotation (Placement(transformation(extent={{-80,-60},{-60,-40}}))); equation @@ -99,7 +99,7 @@ Validation test for the block Buildings.Controls.OBC.Utilities.PIDWithAutotuning.FirstOrderAMIGO.

                          -This example is almost identical to +This example is similar as Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIDWithFirstOrderAMIGO. However, an autotuning PI controller rather than an autotuning PID controller is considered in this example.

                          diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIDWithFirstOrderAMIGO.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIDWithFirstOrderAMIGO.txt index 3f0333dad0a..a6de6989b01 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIDWithFirstOrderAMIGO.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIDWithFirstOrderAMIGO.txt @@ -1,4 +1,4 @@ -last-generated=2023-09-19 +last-generated=2023-09-28 statistics-simulation= { "linear": " ", @@ -8,8 +8,8 @@ statistics-simulation= } time=[0e+00, 1e+04] PID.u_s=[8.00000011920929e-01, 8.00000011920929e-01] -PID.u_m=[7.200000286102295e-01, 7.999955415725708e-01, 8.00000011920929e-01, 9.998812675476074e-01, 9.999308586120605e-01, 1.35326012969017e-02, 7.544281288573984e-07, -1.620563416793161e-08, 9.999659657478333e-01, 1.000000357627869e+00, 1.831946196034551e-03, -1.746274449487828e-07, -5.609168685083432e-09, 9.999949336051941e-01, 1e+00, 2.480100665707141e-04, -3.585540753192618e-08, 9.864667057991029e-01, 9.999995827674866e-01, 1e+00, 3.373355139046907e-05, 2.50190019812635e-08, 9.98167872428894e-01, 9.999999403953552e-01, 1e+00, 4.743972112919437e-06, -2.480660725723283e-07, 9.997516870498657e-01, 1e+00, 1.353300828486681e-02, 6.803470000704692e-07, -5.640788103278283e-08, 9.999660849571228e-01, 9.999998807907104e-01, 1.831486006267333e-03, -3.732870013095635e-08, 1.908020763607965e-08, 9.999951720237732e-01, 9.999998807907104e-01, 2.48188734985888e-04, 3.217139621369824e-08, 9.864668846130371e-01, 9.999992251396179e-01, 1e+00, 3.372893115738407e-05, 2.197630877276424e-08, 9.981679320335388e-01, 9.999998807907104e-01, 1e+00, 4.769079168909229e-06, 7.429161996697076e-08, 9.997523427009583e-01, 9.999999403953552e-01, 1.353302784264088e-02, 1.034865135807195e-06, -3.435196793688533e-09, 9.999656081199646e-01, 1.000000476837158e+00, 1.831485773436725e-03, -3.617385146981178e-08, 3.050061181397723e-08, 9.999945759773254e-01, 1e+00, 2.482747659087181e-04, -6.974792654546036e-08, 9.864667057991028e-01, 9.999992251396179e-01, 1.000000357627869e+00, 3.369602563907262e-05, 3.903253897874272e-08, 9.981673955917358e-01, 9.999998211860657e-01, 1e+00, 4.767383416037774e-06, 7.603664897715134e-08, 9.997503757476807e-01, 1.00000011920929e+00, 1.353302784264088e-02, 1.032252612276352e-06, 7.175890459620859e-08, 9.999659657478333e-01, 9.999999403953552e-01, 1.831659930758178e-03, 1.311786519408997e-07, -8.21852594867778e-08, 9.99995231628418e-01, 9.999998807907104e-01, 2.481871633790433e-04, 1.744355060395719e-08, 9.864668846130371e-01, 9.999992251396179e-01, 1e+00, 3.380886846571229e-05, 3.752766986053757e-08, 9.981676936149597e-01, 9.999998211860657e-01, 1e+00, 4.767782684211852e-06, 7.561517634258053e-08, 9.99751091003418e-01, 9.999998807907104e-01] +PID.u_m=[7.200000286102295e-01, 7.999955415725708e-01, 8.00000011920929e-01, 9.998812675476074e-01, 9.999308586120605e-01, 1.35326012969017e-02, 6.440500328608323e-07, 5.875592457016523e-09, 9.999662637710571e-01, 1e+00, 1.831764704547822e-03, 2.342568024005232e-07, 3.603535025931137e-09, 9.999949336051941e-01, 1.00000011920929e+00, 2.480908297002316e-04, 1.595457987946247e-08, 9.864665865898133e-01, 9.999992251396179e-01, 1e+00, 3.365114389453083e-05, -2.422762435116965e-08, 9.981680512428284e-01, 9.999989867210388e-01, 1e+00, 4.310262738727033e-06, 2.328992820821441e-08, 9.997521042823792e-01, 1e+00, 1.35330380871892e-02, 6.79178299378691e-07, 5.870391106554962e-08, 9.999662637710571e-01, 1e+00, 1.831486239097976e-03, -3.691763694746442e-08, 2.421544209596505e-08, 9.999949932098389e-01, 1.00000011920929e+00, 2.481888514012098e-04, 2.742204401329218e-07, 9.86466646194458e-01, 9.999990463256836e-01, 1.000000357627869e+00, 3.372815262991935e-05, 3.534541903604804e-08, 9.981674551963806e-01, 9.999998807907104e-01, 1.00000011920929e+00, 4.776772584591527e-06, 6.763659854414072e-08, 9.997515082359314e-01, 9.999998211860657e-01, 1.35330380871892e-02, 6.777574981242651e-07, 6.637635152628718e-08, 9.999660849571228e-01, 9.999998807907104e-01, 1.8314867047593e-03, -3.725519093222829e-08, -6.732372992424018e-10, 9.999946355819702e-01, 1.00000011920929e+00, 2.48274503974244e-04, -6.918997286220474e-08, 9.864673614501953e-01, 9.999998211860657e-01, 9.999999403953552e-01, 3.363205541972871e-05, 2.555656308799375e-08, 9.981688261032104e-01, 1.000000357627869e+00, 1e+00, 4.579071628540987e-06, -1.041051547190364e-07, 9.997515082359314e-01, 1e+00, 1.353293657302856e-02, 8.939209124037006e-07, 8.830804532067305e-09, 9.999662041664124e-01, 1.00000011920929e+00, 1.831797766499221e-03, 2.47536121378289e-07, 2.051977361361423e-07, 9.999948740005493e-01, 9.999998807907104e-01, 2.481013943906873e-04, 1.673911924626736e-07, 9.864643812179565e-01, 9.999995827674866e-01, 1e+00, 3.373266372364014e-05, -1.096864554739341e-08, 9.981688261032104e-01, 1e+00, 9.999999403953552e-01, 4.647220521292184e-06, 1.295071854201524e-07, 9.997513294219971e-01, 1.000000834465027e+00] PIDWitTun.u_s=[8.00000011920929e-01, 8.00000011920929e-01] -PIDWitTun.u_m=[7.200000286102295e-01, 7.999955415725708e-01, 8.00000011920929e-01, 9.998812675476074e-01, 9.999308586120605e-01, 1.35326012969017e-02, 7.544281288573984e-07, -1.620563416793161e-08, 9.999659657478333e-01, 1.000000357627869e+00, 1.831946196034551e-03, -1.746274449487828e-07, -5.609168685083432e-09, 9.999949336051941e-01, 1e+00, -9.972719103097916e-02, -1.000000387430191e-01, 9.851133823394777e-01, 9.999995231628418e-01, 1e+00, 7.412633299827576e-01, 7.412546277046204e-01, 8.219677209854126e-01, 8.221158385276794e-01, 8.221158385276794e-01, 7.949301600456238e-01, 7.949300408363342e-01, 8.028817772865295e-01, 8.028837442398071e-01, 7.998954653739929e-01, 7.998544573783875e-01, 7.998544573783875e-01, 8.005303740501404e-01, 8.005304336547852e-01, 8.001306056976318e-01, 8.001298904418945e-01, 8.001298904418945e-01, 8.001444935798645e-01, 8.001444935798645e-01, 8.000691533088684e-01, 8.000690937042236e-01, 8.000497221946716e-01, 8.000494837760925e-01, 8.000494837760925e-01, 8.000285625457764e-01, 8.000285625457764e-01, 8.000184297561646e-01, 8.000183701515198e-01, 8.000183701515198e-01, 8.000112175941467e-01, 8.000112175941467e-01, 8.000070452690125e-01, 8.000069856643677e-01, 8.000043630599976e-01, 8.000043034553528e-01, 8.000043034553528e-01, 8.000026941299438e-01, 8.000026941299438e-01, 8.000016808509827e-01, 8.000016808509827e-01, 8.000016808509827e-01, 8.000010251998901e-01, 8.000010251998901e-01, 8.000006675720215e-01, 8.000006675720215e-01, 8.000004291534424e-01, 8.000003695487976e-01, 8.000003695487976e-01, 8.000002503395081e-01, 8.000002503395081e-01, 8.000001311302185e-01, 8.000001311302185e-01, 8.000001311302185e-01, 8.000000715255737e-01, 8.000000715255737e-01, 8.000000715255737e-01, 8.000000715255737e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01] -autTunSig.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] -PIDWitTun.inTunPro.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +PIDWitTun.u_m=[7.200000286102295e-01, 7.999955415725708e-01, 8.00000011920929e-01, 9.998812675476074e-01, 9.999308586120605e-01, 1.35326012969017e-02, 6.440500328608323e-07, 5.875593789284153e-09, 9.999662637710571e-01, 1e+00, -9.798505902290344e-02, -9.999974071979523e-02, -9.999999403953552e-02, 9.999944567680359e-01, 1.00000011920929e+00, 7.413181066513062e-01, 7.412539124488831e-01, 8.210213184356689e-01, 8.221156001091003e-01, 8.221156597137451e-01, 7.949307560920715e-01, 7.949298620223999e-01, 8.028690814971924e-01, 8.028836846351624e-01, 8.028836846351624e-01, 7.998543977737427e-01, 7.998543977737427e-01, 8.005301952362061e-01, 8.005303740501404e-01, 8.001352548599243e-01, 8.001298308372498e-01, 8.001298308372498e-01, 8.001444339752197e-01, 8.001444339752197e-01, 8.00069272518158e-01, 8.000690937042236e-01, 8.000690937042236e-01, 8.000494241714478e-01, 8.000494241714478e-01, 8.000285625457764e-01, 8.000285625457764e-01, 8.000185489654541e-01, 8.000183701515198e-01, 8.000183701515198e-01, 8.000112175941467e-01, 8.000112175941467e-01, 8.000070452690125e-01, 8.000069856643677e-01, 8.000069856643677e-01, 8.000043034553528e-01, 8.000043034553528e-01, 8.000026941299438e-01, 8.000026941299438e-01, 8.000016808509827e-01, 8.000016808509827e-01, 8.000016808509827e-01, 8.000010251998901e-01, 8.000010251998901e-01, 8.000006675720215e-01, 8.000006675720215e-01, 8.000006675720215e-01, 8.000003695487976e-01, 8.000003695487976e-01, 8.000002503395081e-01, 8.000002503395081e-01, 8.000001311302185e-01, 8.000001311302185e-01, 8.000001311302185e-01, -9.996972978115082e-02, -9.999997913837433e-02, 9.979857206344604e-01, 1.000000357627869e+00, 1e+00, -9.99949648976326e-02, -1.000001132488251e-01, 9.997266530990601e-01, 1e+00, 8.396642208099365e-01, 8.374648094177246e-01, 8.374646306037903e-01, 8.508558869361877e-01, 8.508563041687012e-01, 8.227573037147522e-01, 8.227057456970215e-01, 8.227057456970215e-01, 8.169187903404236e-01, 8.169187903404236e-01, 8.095905780792236e-01, 8.095887303352356e-01, 8.062845468521118e-01, 8.062391877174377e-01, 8.062391877174377e-01, 8.037776947021484e-01, 8.037775754928589e-01, 8.023759126663208e-01, 8.023733496665955e-01, 8.023733496665955e-01, 8.014628291130066e-01, 8.014628291130066e-01, 8.009107112884521e-01, 8.009105324745178e-01] +autTunSig.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +PIDWitTun.inTunPro.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIWithFirstOrderAMIGO.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIWithFirstOrderAMIGO.txt index 2b4513c9165..197f974056b 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIWithFirstOrderAMIGO.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIWithFirstOrderAMIGO.txt @@ -1,4 +1,4 @@ -last-generated=2023-09-19 +last-generated=2023-09-28 statistics-simulation= { "linear": " ", @@ -8,8 +8,8 @@ statistics-simulation= } time=[0e+00, 1e+04] PI.u_s=[8.00000011920929e-01, 8.00000011920929e-01] -PI.u_m=[7.200000286102295e-01, 7.999961376190186e-01, 8.00000011920929e-01, 9.998272657394409e-01, 9.998775124549866e-01, 1.353192888200283e-02, 7.044694143587549e-07, -1.624311352088624e-08, 9.999662041664124e-01, 1e+00, 1.831627800129354e-03, 1.174558228456135e-08, -1.596621856947422e-08, 9.999952912330627e-01, 9.999999403953552e-01, 2.479427785146981e-04, 1.547823984537899e-07, 9.864667654037477e-01, 9.999990463256836e-01, 1e+00, 3.365099837537855e-05, 1.871863588576161e-07, 9.981684684753418e-01, 9.999999403953552e-01, 9.999998807907104e-01, 4.708157575805672e-06, 6.267776342383513e-08, 9.997517466545105e-01, 1.000000238418579e+00, 1.353328954428434e-02, 4.744856028082722e-07, 2.79575598227666e-08, 9.99966025352478e-01, 9.999998807907104e-01, 1.831788802519405e-03, 8.866322787071113e-08, 4.018970400920807e-08, 9.99995231628418e-01, 1.00000011920929e+00, 2.480732509866357e-04, -8.948609320214018e-08, 9.86466646194458e-01, 9.999991655349731e-01, 1e+00, 3.366012970218435e-05, 1.287418527340378e-08, 9.981671571731567e-01, 9.999999403953552e-01, 9.999999403953552e-01, 4.650941264117137e-06, -1.541569538687781e-08, 9.997513890266418e-01, 1.000000596046448e+00, 1.353329420089722e-02, 7.33242302430881e-07, 1.131794924447149e-08, 9.999663233757019e-01, 9.999999403953552e-01, 1.832212787121534e-03, 2.612571563531674e-07, -8.717022126347729e-08, 9.999953508377075e-01, 1e+00, 2.481269475538284e-04, 1.470376620460456e-08, 9.864668250083923e-01, 9.999988079071045e-01, 1e+00, 3.372562787262589e-05, 2.141854160698369e-08, 9.981682896614075e-01, 1e+00, 1e+00, 4.805667231266852e-06, 3.411778592976589e-08, 9.997519254684448e-01, 1.000000476837158e+00, 1.353315077722073e-02, 7.385342541965656e-07, -1.627288881422828e-08, 9.999663233757019e-01, 1e+00, 1.83211057446897e-03, 2.923441684288264e-07, -2.282751410120909e-07, 9.999949932098389e-01, 1e+00, 2.479832037352026e-04, -3.272837716394861e-07, 9.864670634269714e-01, 9.999990463256836e-01, 1.000000357627869e+00, 3.367843601154163e-05, 3.413169302746155e-09, 9.98168408870697e-01, 9.999998211860657e-01, 1e+00, 4.599201020027976e-06, 4.707466416675743e-09, 9.997507333755493e-01, 9.999998807907104e-01] +PI.u_m=[7.200000286102295e-01, 7.999961376190186e-01, 8.00000011920929e-01, 9.998272657394409e-01, 9.998775124549866e-01, 1.353192888200283e-02, 5.326713790054782e-07, 2.259544018556895e-08, 9.999662637710571e-01, 9.999999403953552e-01, 1.831752131693065e-03, 2.861204961845942e-07, 6.948661201988671e-09, 9.999954104423523e-01, 1.00000011920929e+00, 2.480107068549842e-04, -1.373155189554609e-08, 9.864668250083924e-01, 9.999985098838806e-01, 9.999999403953552e-01, 3.368727266206406e-05, -1.602480637075132e-07, 9.981690645217896e-01, 9.999997615814209e-01, 1e+00, 4.824462848773692e-06, 1.304893437747978e-08, 9.997515082359314e-01, 1e+00, 1.353311352431774e-02, 7.172010896283609e-07, 7.390228518033837e-08, 9.999662637710571e-01, 9.999999403953552e-01, 1.831901143304968e-03, 7.758598741247624e-08, 2.735835558098643e-08, 9.999953508377075e-01, 9.999999403953552e-01, 2.485316945239902e-04, -9.416259771910518e-09, 9.864668846130371e-01, 9.999993443489075e-01, 9.999999403953552e-01, 3.366324381204322e-05, 8.379893756682577e-08, 9.981687664985657e-01, 1e+00, 1e+00, 4.828313649340998e-06, 2.987365022022459e-08, 9.997518658638e-01, 9.99999463558197e-01, 1.353335194289684e-02, 6.54611710615427e-07, -1.783012493206115e-07, 9.999659061431885e-01, 1.000000357627869e+00, 1.832093810662627e-03, -1.196961534333241e-07, 1.418564377075882e-08, 9.999953508377075e-01, 1e+00, 2.486180164851248e-04, 4.432009603760889e-08, 9.86466646194458e-01, 9.999999403953552e-01, 9.999998807907104e-01, 3.390988058526867e-05, -3.931775438560409e-08, 9.981682896614075e-01, 9.999999403953552e-01, 1e+00, 4.597538463713136e-06, -8.867510281618252e-09, 9.997518062591553e-01, 1.000000834465027e+00, 1.353317592293024e-02, 5.527988946596452e-07, -1.175889750015813e-07, 9.999662637710571e-01, 9.999998807907104e-01, 1.83188496157527e-03, 2.402917118615733e-07, -6.69072903747292e-08, 9.999948740005493e-01, 1e+00, 2.480522380210459e-04, 6.159049803500238e-08, 9.864668250083923e-01, 9.999993443489075e-01, 1e+00, 3.36502525897231e-05, 1.18948833005561e-07, 9.981675744056702e-01, 9.999998211860657e-01, 9.999997615814209e-01, 4.725679900730029e-06, 1.557069850832704e-08, 9.997518062591553e-01, 1e+00] PIWitTun.u_s=[8.00000011920929e-01, 8.00000011920929e-01] -PIWitTun.u_m=[7.200000286102295e-01, 7.999961376190186e-01, 8.00000011920929e-01, 9.998272657394409e-01, 9.998775124549866e-01, 1.353192888200283e-02, 7.044694143587549e-07, -1.624311352088624e-08, 9.999662041664124e-01, 1e+00, 1.831627800129354e-03, 1.174558228456135e-08, -1.596621856947422e-08, 9.999952912330627e-01, 9.999999403953552e-01, -9.972726553678513e-02, -9.999983012676239e-02, 9.851134419441224e-01, 9.99998927116394e-01, 1.00000011920929e+00, 6.143606901168823e-01, 6.143478155136108e-01, 7.517821192741394e-01, 7.520342469215393e-01, 7.520342469215393e-01, 7.522276043891907e-01, 7.522276043891907e-01, 7.728294730186462e-01, 7.728345990180969e-01, 7.813796997070312e-01, 7.814969420433044e-01, 7.814969420433044e-01, 7.88197934627533e-01, 7.881981730461121e-01, 7.922895550727844e-01, 7.922970652580261e-01, 7.922970652580261e-01, 7.950133681297302e-01, 7.950133681297302e-01, 7.967620491981506e-01, 7.967624664306641e-01, 7.978848218917847e-01, 7.979001998901367e-01, 7.979001998901367e-01, 7.986375689506531e-01, 7.986376285552979e-01, 7.991153001785278e-01, 7.991161942481995e-01, 7.991161942481995e-01, 7.994266152381897e-01, 7.994266152381897e-01, 7.99627959728241e-01, 7.996280193328857e-01, 7.997568845748901e-01, 7.997586727142334e-01, 7.997586727142334e-01, 7.99843430519104e-01, 7.99843430519104e-01, 7.998983263969421e-01, 7.998984456062317e-01, 7.998984456062317e-01, 7.999340891838074e-01, 7.999340891838074e-01, 7.99957275390625e-01, 7.99957275390625e-01, 7.999720573425293e-01, 7.999722957611084e-01, 7.999722957611084e-01, 7.999820113182068e-01, 7.999820113182068e-01, 7.99988329410553e-01, 7.99988329410553e-01, 7.99988329410553e-01, 7.999924421310425e-01, 7.999924421310425e-01, 7.999950647354126e-01, 7.999950647354126e-01, 7.999967932701111e-01, 7.999967932701111e-01, 7.999967932701111e-01, 7.999979257583618e-01, 7.999979257583618e-01, 7.999986410140991e-01, 7.999986410140991e-01, 7.999986410140991e-01, 7.999991178512573e-01, 7.999991178512573e-01, 7.999994158744812e-01, 7.999994158744812e-01, 7.999996542930603e-01, 7.999996542930603e-01, 7.999996542930603e-01, 7.999997735023499e-01, 7.999997735023499e-01, 7.999998331069946e-01, 7.999998331069946e-01, 7.999998331069946e-01, 7.999998927116394e-01, 7.999998927116394e-01, 7.999999523162842e-01, 7.999999523162842e-01] -autTunSig.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] -PIWitTun.inTunPro.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +PIWitTun.u_m=[7.200000286102295e-01, 7.999961376190186e-01, 8.00000011920929e-01, 9.998272657394409e-01, 9.998775124549866e-01, 1.353192888200283e-02, 5.326713790054782e-07, 2.259544018556895e-08, 9.999662637710571e-01, 9.999999403953552e-01, -9.798507392406464e-02, -9.999968856573105e-02, -9.999999403953552e-02, 9.999949336051941e-01, 1.00000011920929e+00, 6.144447922706604e-01, 6.143491268157959e-01, 7.501715421676636e-01, 7.520346641540527e-01, 7.520348429679871e-01, 7.522280812263489e-01, 7.522280812263489e-01, 7.727971076965332e-01, 7.72834837436676e-01, 7.72834837436676e-01, 7.81497061252594e-01, 7.814971208572388e-01, 7.881966233253479e-01, 7.881982922554016e-01, 7.922416925430298e-01, 7.922971844673157e-01, 7.922971844673157e-01, 7.950133681297302e-01, 7.95013427734375e-01, 7.96759307384491e-01, 7.967625260353088e-01, 7.967625260353088e-01, 7.979001998901367e-01, 7.979001998901367e-01, 7.986374497413635e-01, 7.986376285552979e-01, 7.991096973419189e-01, 7.991161942481995e-01, 7.991161942481995e-01, 7.994266152381897e-01, 7.994266152381897e-01, 7.996276617050171e-01, 7.996280193328857e-01, 7.996280193328857e-01, 7.997586727142334e-01, 7.997586727142334e-01, 7.99843430519104e-01, 7.99843430519104e-01, 7.998976707458496e-01, 7.998984456062317e-01, 7.998984456062317e-01, 7.999340891838074e-01, 7.999340891838074e-01, 7.999572157859802e-01, 7.99957275390625e-01, 7.99957275390625e-01, 7.999722957611084e-01, 7.999722957611084e-01, 7.999820113182068e-01, 7.999820113182068e-01, 7.999882698059082e-01, 7.99988329410553e-01, 7.99988329410553e-01, 9.999932050704956e-01, 1e+00, -9.798509627580643e-02, -9.999990463256836e-02, -1.000000014901161e-01, 9.999949336051941e-01, 1e+00, 8.536804914474487e-01, 8.536440134048462e-01, 8.523020148277283e-01, 8.522835969924927e-01, 8.522835969924927e-01, 8.29795241355896e-01, 8.297944664955139e-01, 8.202488422393799e-01, 8.202313184738159e-01, 8.202313184738159e-01, 8.128827214241028e-01, 8.128827214241028e-01, 8.083930015563965e-01, 8.083919286727905e-01, 8.054624199867249e-01, 8.054221868515015e-01, 8.054221868515015e-01, 8.035137057304382e-01, 8.035136461257935e-01, 8.022767305374146e-01, 8.022744655609131e-01, 8.022744655609131e-01, 8.014729022979736e-01, 8.014729022979736e-01, 8.009538054466248e-01, 8.009536862373352e-01] +autTunSig.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +PIWitTun.inTunPro.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] From 71767175e5c95ce01118edaab5c0dc0bbfaba507 Mon Sep 17 00:00:00 2001 From: Michael Wetter Date: Mon, 23 Oct 2023 08:56:44 -0700 Subject: [PATCH 117/214] Revised models --- .../AMIGO/BaseClasses/Validation/PIDGain.mo | 13 +- .../AMIGO/BaseClasses/Validation/PIGain.mo | 13 +- .../PIDWithAutotuning/FirstOrderAMIGO.mo | 130 ++++++++++-------- .../ControlProcessModel.mo | 4 +- .../Validation/ControlProcessModel.mo | 4 + .../Validation/PIDWithFirstOrderAMIGO.mo | 59 ++++---- 6 files changed, 125 insertions(+), 98 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/Validation/PIDGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/Validation/PIDGain.mo index b3a428965c5..263e111c59c 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/Validation/PIDGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/Validation/PIDGain.mo @@ -14,20 +14,21 @@ model PIDGain "Test model for calculating the control gain for a PID controller" offset=0.5, height=0.5) "Time constant of a first order time-delayed model" - annotation (Placement(transformation(extent={{-60,-20},{-40,0}}))); + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Ramp L( duration=1, offset=0.3, height=0.3) "Time delay of a first order time-delayed model" - annotation (Placement(transformation(extent={{-60,-60},{-40,-40}}))); + annotation (Placement(transformation(extent={{-60,-40},{-40,-20}}))); equation connect(kp.y, PIDGai.kp) annotation (Line(points={{-38,30},{-20,30},{-20,6},{-12, 6}}, color={0,0,127})); - connect(T.y, PIDGai.T) annotation (Line(points={{-38,-10},{-20,-10},{-20,0},{-12, - 0}}, color={0,0,127})); - connect(PIDGai.L, L.y) annotation (Line(points={{-12,-6},{-18,-6},{-18,-50},{-38, - -50}}, color={0,0,127})); + connect(T.y, PIDGai.T) annotation (Line(points={{-38,0},{-12,0}}, + color={0,0,127})); + connect(PIDGai.L, L.y) annotation (Line(points={{-12,-6},{-18,-6},{-18,-30},{ + -38,-30}}, + color={0,0,127})); annotation ( experiment( StopTime=1.0, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/Validation/PIGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/Validation/PIGain.mo index 6044edd0458..d3ea7a755c3 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/Validation/PIGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/Validation/PIGain.mo @@ -15,18 +15,19 @@ model PIGain "Test model for calculating the gain for a PI controller" offset=0.5, height=0.5) "Time constant of a first order time-delayed model" - annotation (Placement(transformation(extent={{-60,-20},{-40,0}}))); + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Ramp L( duration=1, offset=0.3, height=0.3) "Time delay of a first order time-delayed model" - annotation (Placement(transformation(extent={{-60,-60},{-40,-40}}))); + annotation (Placement(transformation(extent={{-60,-40},{-40,-20}}))); equation - connect(L.y, PIGai.L) annotation (Line(points={{-38,-50},{-20,-50},{-20,-6},{-10, - -6}}, color={0,0,127})); - connect(T.y, PIGai.T) annotation (Line(points={{-38,-10},{-28,-10},{-28,0},{-10, - 0}}, color={0,0,127})); + connect(L.y, PIGai.L) annotation (Line(points={{-38,-30},{-20,-30},{-20,-6},{ + -10,-6}}, + color={0,0,127})); + connect(T.y, PIGai.T) annotation (Line(points={{-38,0},{-10,0}}, + color={0,0,127})); connect(kp.y, PIGai.kp) annotation (Line(points={{-38,30},{-20,30},{-20,6},{-10, 6}}, color={0,0,127})); annotation ( diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index 24020b8febc..eb66b1bd164 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -1,8 +1,28 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning; block FirstOrderAMIGO "An autotuning PID controller with an AMIGO tuner that employs a first-order time delayed system model" - parameter Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController controllerType=Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PI + parameter Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController controllerType= + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PI "Type of controller"; + + parameter Real k_start( + min=100*Buildings.Controls.OBC.CDL.Constants.eps)=1 + "Start value of the gain of controller" + annotation (Dialog(group="Initial control gains, used prior to first tuning")); + parameter Real Ti_start( + final quantity="Time", + final unit="s", + min=100*Buildings.Controls.OBC.CDL.Constants.eps)=0.5 + "Start value of the time constant of integrator block" + annotation (Dialog(group="Initial control gains, used prior to first tuning")); + parameter Real Td_start( + final quantity="Time", + final unit="s", + min=100*Buildings.Controls.OBC.CDL.Constants.eps)=0.1 + "Start value of the time constant of derivative block" + annotation (Dialog(group="Initial control gains, used prior to first tuning", + enable=controllerType == Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PID)); + parameter Real r( min=100*Buildings.Controls.OBC.CDL.Constants.eps)=1 "Typical range of control error, used for scaling the control error"; @@ -51,7 +71,7 @@ block FirstOrderAMIGO annotation (Placement(transformation(extent={{100,-20},{140,20}}),iconTransformation(extent={{100,-20},{140,20}}))); Buildings.Controls.OBC.CDL.Reals.Sources.ModelTime modTim "Simulation time" - annotation (Placement(transformation(extent={{-10,60},{10,80}}))); + annotation (Placement(transformation(extent={{-10,70},{10,90}}))); Buildings.Controls.OBC.Utilities.PIDWithInputGains PID( final controllerType=conTyp, final r=r, @@ -65,16 +85,16 @@ block FirstOrderAMIGO final y_reset=xi_start) "PID controller with the gains as inputs" annotation (Placement(transformation(extent={{0,-50},{20,-30}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PID PIDPar - if with_D "Parameters of a PID controller" + if with_D "Autotuner of gains for a PID controller" annotation (Placement(transformation(extent={{-60,40},{-80,60}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PI PIPar - if not with_D "Parameters of a PI controller" + if not with_D "Autotuner of gains for a PI controller" annotation (Placement(transformation(extent={{-60,70},{-80,90}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Controller rel( final yHig=yHig, final yLow=yLow, final deaBan=deaBan) "Relay controller" - annotation (Placement(transformation(extent={{20,0},{40,20}}))); + annotation (Placement(transformation(extent={{0,-10},{20,10}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.ResponseProcess resPro( final yHig=yHig - yRef, final yLow=yRef + yLow) @@ -83,13 +103,13 @@ block FirstOrderAMIGO Buildings.Controls.OBC.CDL.Reals.Switch swi "Switch between a PID controller and a relay controller" annotation (Placement(transformation(extent={{60,-30},{80,-10}}))); - Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samk(y_start=k_start) - "Recording the control gain" + Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samk(final y_start=k_start) + "Recording the proportional control gain" annotation (Placement(transformation(extent={{-40,-10},{-20,-30}}))); - Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samTi(y_start=Ti_start) + Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samTi(final y_start=Ti_start) "Recording the integral time" annotation (Placement(transformation(extent={{-80,-40},{-60,-60}}))); - Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samTd(y_start=Td_start) if with_D + Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samTd(final y_start=Td_start) if with_D "Recording the derivative time" annotation (Placement(transformation(extent={{-40,-60},{-20,-80}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.ControlProcessModel @@ -100,32 +120,17 @@ block FirstOrderAMIGO "Calculates the parameters of a first-order time delayed model" annotation (Placement(transformation(extent={{-20,40},{-40,60}}))); Buildings.Controls.OBC.CDL.Logical.Latch inTunPro - "True: it is in an autotuning process" + "Outputs true if the controller is conducting the autotuning process" annotation (Placement(transformation(extent={{40,-80},{60,-60}}))); Buildings.Controls.OBC.CDL.Logical.Nand nand "Check if an autotuning is ongoing while a new autotuning request is received" annotation (Placement(transformation(extent={{90,60},{70,80}}))); - Buildings.Controls.OBC.CDL.Utilities.Assert assMes(final message="An autotuning is ongoing and an autotuning request is ignored") + Buildings.Controls.OBC.CDL.Utilities.Assert assMes( + message="An autotuning is ongoing and an autotuning request is ignored.") "Error message when an autotuning tuning is ongoing while a new autotuning request is received" annotation (Placement(transformation(extent={{60,60},{40,80}}))); protected - final parameter Real k_start( - min=100*Buildings.Controls.OBC.CDL.Constants.eps)=1 - "Start value of the gain of controller" - annotation (Dialog(group="Control gains")); - final parameter Real Ti_start( - final quantity="Time", - final unit="s", - min=100*Buildings.Controls.OBC.CDL.Constants.eps)=0.5 - "Start value of the time constant of integrator block" - annotation (Dialog(group="Control gains")); - final parameter Real Td_start( - final quantity="Time", - final unit="s", - min=100*Buildings.Controls.OBC.CDL.Constants.eps)=0.1 - "Start value of the time constant of derivative block" - annotation (Dialog(group="Control gains",enable=controllerType == Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PID)); final parameter Real yHig(min=1E-6) = 1 "Higher value for the relay output"; final parameter Real yLow(min=1E-6) = 0.1 @@ -146,7 +151,7 @@ protected equation connect(PID.u_s, u_s) annotation (Line(points={{-2,-40},{-54,-40},{-54,0},{-120, 0}}, color={0,0,127})); - connect(rel.u_s, u_s) annotation (Line(points={{18,10},{0,10},{0,0},{-120,0}}, + connect(rel.u_s, u_s) annotation (Line(points={{-2,0},{-120,0}}, color={0,0,127})); connect(PID.trigger, triRes) annotation (Line(points={{4,-52},{4,-90},{-60,-90}, {-60,-120}}, color={255,0,255})); @@ -156,11 +161,12 @@ equation {-58,-50}}, color={0,0,127})); connect(samTd.y,PID. Td) annotation (Line(points={{-18,-70},{-6,-70},{-6,-44}, {-2,-44}}, color={0,0,127})); - connect(rel.u_m, u_m) annotation (Line(points={{30,-2},{30,-60},{10,-60},{10, - -96},{0,-96},{0,-120}}, color={0,0,127})); - connect(resPro.on, rel.yOn) annotation (Line(points={{22,40},{58,40},{58,4},{42, - 4}}, color={255,0,255})); - connect(modTim.y, resPro.tim) annotation (Line(points={{12,70},{28,70},{28,46}, + connect(rel.u_m, u_m) annotation (Line(points={{10,-12},{10,-22},{28,-22},{28, + -92},{0,-92},{0,-120}}, color={0,0,127})); + connect(resPro.on, rel.yOn) annotation (Line(points={{22,40},{58,40},{58,-6},{ + 22,-6}}, + color={255,0,255})); + connect(modTim.y, resPro.tim) annotation (Line(points={{12,80},{28,80},{28,46}, {22,46}}, color={0,0,127})); connect(resPro.tau, conProMod.tau) annotation (Line(points={{-2,40},{-10,40},{ -10,42},{-18,42}}, color={0,0,127})); @@ -168,7 +174,7 @@ equation {-10,44},{-2,44}}, color={0,0,127})); connect(resPro.tOn, conProMod.tOn) annotation (Line(points={{-2,48},{-10,48},{ -10,54},{-18,54}}, color={0,0,127})); - connect(rel.yErr, conProMod.u) annotation (Line(points={{42,10},{48,10},{48,58}, + connect(rel.yErr, conProMod.u) annotation (Line(points={{22,0},{48,0},{48,58}, {-18,58}}, color={0,0,127})); connect(PIDPar.kp, conProMod.k) annotation (Line(points={{-58,56},{-50,56},{-50,56},{-42,56}}, color={0,0,127})); @@ -204,9 +210,9 @@ equation {-42,-70}}, color={0,0,127})); connect(swi.y, y) annotation (Line(points={{82,-20},{90,-20},{90,0},{120,0}}, color={0,0,127})); - connect(u_m, PID.u_m) annotation (Line(points={{0,-120},{0,-96},{10,-96},{10, - -52}}, color={0,0,127})); - connect(rel.y, swi.u1) annotation (Line(points={{42,16},{54,16},{54,-12},{58,-12}}, + connect(u_m, PID.u_m) annotation (Line(points={{0,-120},{0,-92},{10,-92},{10,-52}}, + color={0,0,127})); + connect(rel.y, swi.u1) annotation (Line(points={{22,6},{54,6},{54,-12},{58,-12}}, color={0,0,127})); connect(swi.u3, PID.y) annotation (Line(points={{58,-28},{40,-28},{40,-40},{22, -40}}, color={0,0,127})); @@ -216,8 +222,9 @@ equation {60,-92},{60,-120}}, color={255,0,255})); connect(inTunPro.clr, resPro.triEnd) annotation (Line(points={{38,-76},{-10,-76}, {-10,32},{-2,32}}, color={255,0,255})); - connect(rel.trigger, triTun) annotation (Line(points={{24,-2},{24,-92},{60,-92}, - {60,-120}}, color={255,0,255})); + connect(rel.trigger, triTun) annotation (Line(points={{4,-12},{4,-20},{30,-20}, + {30,-92},{60,-92},{60,-120}}, + color={255,0,255})); connect(resPro.trigger, triTun) annotation (Line(points={{22,34},{96,34},{96,-92}, {60,-92},{60,-120}}, color={255,0,255})); connect(nand.y, assMes.u) @@ -229,37 +236,45 @@ equation annotation (Documentation(info="

                          This block implements a rule-based PID tuning method. -Specifically, this PID tuning method approximates the control process with a +

                          +

                          +The PID tuning method approximates the control process with a first-order time delayed (FOTD) model. -It then determines the parameters of this FOTD model based on the responses of +It then determines the gain and delay of this FOTD model based on the responses of the control process to an asymmetric relay feedback. -After that, taking the parameters of this FOTD mode as inputs, this PID tuning -method calculates the PID parameters with an Approximate M-constrained Integral Gain Optimization (AMIGO) Tuner. -This block is built based on +After that, taking the gain and delay of this FOTD mode as inputs, this PID tuning +method calculates the PID gains with an Approximate M-constrained Integral Gain Optimization (AMIGO) Tuner. +

                          +

                          +This block is implemented using Buildings.Controls.OBC.Utilities.PIDWithInputGains -and inherits most of the parameters of the latter. However, through the parameter +and inherits most of its configuration. However, through the parameter controllerType, the controller can only be configured as PI or PID controller. -In addition, the output of this block is limited from 0 to 1. +In addition, the output of this block is limited from 0 to 1.

                          Brief guidance

                          -To use this block, connect it with a control loop. +To use this block, place it in an control loop as any other PI controller. Before the PID tuning process starts, this block is equivalent to Buildings.Controls.OBC.Utilities.PIDWithInputGains. -This block starts the PID tuning process when a request for performing autotuning occurs, i.e., the value of the boolean input signal triTun changes from +This block starts the PID tuning process when a request for performing autotuning occurs, i.e., +when the value of the boolean input signal triTun changes from false to true. -During the autotuning process, the output of the block changes into that of a relay controller (see +During the autotuning process, the output of the block changes into that of a relay controller +(see Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Controller). -The PID tuning process ends automatically (see details in -Buildings.Controls.OBC.Utilities.PIDWithAutotuning.BaseClasses.Relay.TunMonitor). -Since then, this block turns back to a PID controller but with tuned PID parameters. +The PID tuning process ends automatically +(see details in +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.BaseClasses.Relay.TunMonitor), +at which point this block turns back to a PI controller but with tuned PI parameters.

                          -Note: If an autotuning is ongoing, i.e., inTunPro.y is true, a request for performing autotuning will be ignored. +Note: If an autotuning is ongoing, i.e., inTunPro.y = true, +a request for performing autotuning will be ignored.

                          References

                          @@ -272,6 +287,11 @@ Department of Automatic Control, Lund University. ", revisions="
                          • +October 23, 2023, by Michael Wetter:
                            +Revised implmenentation. Made initial control gains public so that a stable operation can be made +prior to the first tuning. +
                          • +
                          • June 1, 2022, by Sen Huang:
                            First implementation
                          • @@ -295,7 +315,7 @@ First implementation
                            fillPattern=FillPattern.Solid), Text( extent={{-26,-22},{74,-62}}, - textString= if controllerType == Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PID then "PID" else "PI", + textString= if controllerType == Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PI then "PI" else "P", fillPattern=FillPattern.Solid, fillColor={175,175,175}), Polygon( @@ -324,7 +344,7 @@ First implementation
                            points={{6,56},{68,56}}, color={0,0,0}), Rectangle( - extent={{100,-100},{84,-100}}, + extent=DynamicSelect({{100,-100},{84,-100}},{{100,-100},{84,-100+(y-yMin)/(yMax-yMin)*200}}), fillColor={175,175,175}, fillPattern=FillPattern.Solid, pattern=LinePattern.None, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo index d267fcc2431..271a3941e5b 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo @@ -211,9 +211,9 @@ to identify the gain, the time constant and the time delay, respectively.

                            The calculations are disabled by default. They will be enabled once the tuning period starts, -i.e., triSta becomes true; +i.e., triSta becomes true. It then calculates the model parameters at the time when the tuning period ends, -i.e., triEnd becomes true. +i.e., triEnd becomes true.

                            Refer to diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo index 6e9a3b88688..afaa9d11fb3 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo @@ -93,7 +93,9 @@ Validation test for the block Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.ControlProcessModel.

                            +

                            This example considers an output from a relay controller, which is described below: +

                            • At 0.1s, the output switches from On to Off. @@ -105,6 +107,8 @@ At 0.8s, the output switches to On. At 0.9s, the output switches to Off.
                            +

                            This output triggers an autotuning process that lasts from 0.1s to 0.9s. +

                            ")); end ControlProcessModel; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo index 83f59375d23..6df9089c8b5 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo @@ -24,22 +24,22 @@ model PIDWithFirstOrderAMIGO "Test model for an autotuning PID controller" annotation (Placement(transformation(extent={{10,50},{30,70}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant k(k=1) "Gain of the first order process" - annotation (Placement(transformation(extent={{180,20},{160,40}}))); + annotation (Placement(transformation(extent={{10,10},{30,30}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant T(k=10) "Time constant of the first order process" - annotation (Placement(transformation(extent={{180,-20},{160,0}}))); + annotation (Placement(transformation(extent={{10,-66},{30,-46}}))); Buildings.Controls.OBC.CDL.Reals.Subtract sub1 "A subtract block that is used to mimic the first order process 1" - annotation (Placement(transformation(extent={{60,70},{80,90}}))); + annotation (Placement(transformation(extent={{100,70},{120,90}}))); Buildings.Controls.OBC.CDL.Reals.Subtract sub2 "A subtract block that is used to mimic the first order process 2" - annotation (Placement(transformation(extent={{60,-20},{80,0}}))); + annotation (Placement(transformation(extent={{100,-20},{120,0}}))); Buildings.Controls.OBC.CDL.Reals.Derivative derivative1 "A derivative block that is used to mimic the first order process 1" - annotation (Placement(transformation(extent={{78,26},{58,46}}))); + annotation (Placement(transformation(extent={{60,10},{80,30}}))); Buildings.Controls.OBC.CDL.Reals.Derivative derivative2 "A derivative block that is used to mimic the first order process 2" - annotation (Placement(transformation(extent={{80,-60},{60,-40}}))); + annotation (Placement(transformation(extent={{60,-70},{80,-50}}))); Buildings.Controls.OBC.CDL.Logical.Sources.Pulse autTunSig( width=0.9, period=6000, @@ -58,32 +58,33 @@ equation annotation (Line(points={{2,-20},{8,-20}}, color={0,0,127})); connect(uniDel1.u, PID.y) annotation (Line(points={{8,60},{2,60}}, color={0,0,127})); - connect(uniDel1.y, sub1.u1) annotation (Line(points={{32,60},{40,60},{40,86},{ - 58,86}}, color={0,0,127})); - connect(k.y, derivative1.k) annotation (Line(points={{158,30},{148,30},{148,44}, - {80,44}}, color={0,0,127})); - connect(derivative1.T, T.y) annotation (Line(points={{80,40},{112,40},{112,-46}, - {148,-46},{148,-10},{158,-10}}, color={0,0,127})); - connect(derivative1.y, sub1.u2) annotation (Line(points={{56,36},{50,36},{50,74}, - {58,74}}, color={0,0,127})); - connect(sub1.y, PID.u_m) annotation (Line(points={{82,80},{88,80},{88,54},{46,54}, - {46,42},{-10,42},{-10,48}}, color={0,0,127})); - connect(sub2.u1, uniDel2.y) annotation (Line(points={{58,-4},{40,-4},{40,-20}, + connect(uniDel1.y, sub1.u1) annotation (Line(points={{32,60},{54,60},{54,86}, + {98,86}},color={0,0,127})); + connect(k.y, derivative1.k) annotation (Line(points={{32,20},{44,20},{44,28}, + {58,28}}, color={0,0,127})); + connect(derivative1.T, T.y) annotation (Line(points={{58,24},{48,24},{48,-56}, + {32,-56}}, color={0,0,127})); + connect(derivative1.y, sub1.u2) annotation (Line(points={{82,20},{92,20},{92, + 74},{98,74}}, + color={0,0,127})); + connect(sub1.y, PID.u_m) annotation (Line(points={{122,80},{132,80},{132,40}, + {-10,40},{-10,48}}, color={0,0,127})); + connect(sub2.u1, uniDel2.y) annotation (Line(points={{98,-4},{54,-4},{54,-20}, {32,-20}}, color={0,0,127})); - connect(derivative2.y,sub2. u2) annotation (Line(points={{58,-50},{52,-50},{ - 52,-16},{58,-16}}, color={0,0,127})); - connect(sub2.y, PIDWitTun.u_m) annotation (Line(points={{82,-10},{88,-10}, - {88,-26},{46,-26},{46,-38},{-10,-38},{-10,-32}}, color={0,0,127})); - connect(derivative2.k, derivative1.k) annotation (Line(points={{82,-42},{92,-42}, - {92,44},{80,44}}, color={0,0,127})); - connect(derivative2.T, T.y) annotation (Line(points={{82,-46},{148,-46},{148, - -10},{158,-10}}, color={0,0,127})); - connect(derivative1.u, sub1.u1) annotation (Line(points={{80,36},{88,36},{88,20}, - {40,20},{40,86},{58,86}}, color={0,0,127})); - connect(derivative2.u, uniDel2.y) annotation (Line(points={{82,-50},{92,-50}, - {92,-66},{40,-66},{40,-20},{32,-20}}, color={0,0,127})); + connect(derivative2.y,sub2. u2) annotation (Line(points={{82,-60},{90,-60},{ + 90,-16},{98,-16}}, color={0,0,127})); + connect(sub2.y, PIDWitTun.u_m) annotation (Line(points={{122,-10},{132,-10},{ + 132,-36},{-10,-36},{-10,-32}}, color={0,0,127})); + connect(derivative2.T, T.y) annotation (Line(points={{58,-56},{32,-56}}, + color={0,0,127})); + connect(derivative1.u, sub1.u1) annotation (Line(points={{58,20},{54,20},{54, + 86},{98,86}}, color={0,0,127})); + connect(derivative2.u, uniDel2.y) annotation (Line(points={{58,-60},{54,-60}, + {54,-20},{32,-20}}, color={0,0,127})); connect(autTunSig.y, PIDWitTun.triTun) annotation (Line(points={{-58,-50},{-4,-50},{-4,-32}}, color={255,0,255})); + connect(k.y, derivative2.k) annotation (Line(points={{32,20},{50,20},{50,-52}, + {58,-52}}, color={0,0,127})); annotation ( experiment( StopTime=10000, From bd77a97c8f9c5b83ed3e687807a56b1d5da95ba1 Mon Sep 17 00:00:00 2001 From: Michael Wetter Date: Mon, 23 Oct 2023 09:43:11 -0700 Subject: [PATCH 118/214] Revised model, added dynamic display --- Buildings/Controls/OBC/CDL/Reals/PID.mo | 12 +- .../Controls/OBC/CDL/Reals/PIDWithReset.mo | 12 +- .../PIDWithAutotuning/FirstOrderAMIGO.mo | 251 +++++++++++------- .../Validation/PIDWithFirstOrderAMIGO.mo | 58 ++-- 4 files changed, 206 insertions(+), 127 deletions(-) diff --git a/Buildings/Controls/OBC/CDL/Reals/PID.mo b/Buildings/Controls/OBC/CDL/Reals/PID.mo index a4c9131963a..4a78ca6353e 100644 --- a/Buildings/Controls/OBC/CDL/Reals/PID.mo +++ b/Buildings/Controls/OBC/CDL/Reals/PID.mo @@ -296,7 +296,13 @@ equation fillColor={175,175,175}, fillPattern=FillPattern.Solid, pattern=LinePattern.None, - lineColor={0,0,0})}), + lineColor={0,0,0}), + Text( + extent={{226,60},{106,10}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(y, + leftJustified=false, + significantDigits=3)))}), Diagram( coordinateSystem( extent={{-220,-200},{220,200}}), graphics={Rectangle( @@ -483,6 +489,10 @@ American Society of Heating Refrigerating and Air-Conditioning Engineers Inc. At revisions="
                            • +October 23, 2023, by Michael Wetter:
                              +Added value of control output y to icon. +
                            • +
                            • May 20, 2022, by Michael Wetter:
                              Refactored implementation to use new derivative block from CDL package.
                              This is for diff --git a/Buildings/Controls/OBC/CDL/Reals/PIDWithReset.mo b/Buildings/Controls/OBC/CDL/Reals/PIDWithReset.mo index d8dbc5384e1..55ce9649972 100644 --- a/Buildings/Controls/OBC/CDL/Reals/PIDWithReset.mo +++ b/Buildings/Controls/OBC/CDL/Reals/PIDWithReset.mo @@ -308,7 +308,13 @@ equation fillColor={175,175,175}, fillPattern=FillPattern.Solid, pattern=LinePattern.None, - lineColor={0,0,0})}), + lineColor={0,0,0}), + Text( + extent={{226,60},{106,10}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(y, + leftJustified=false, + significantDigits=3)))}), Diagram( coordinateSystem( extent={{-220,-200},{220,200}}), graphics={Rectangle( @@ -487,6 +493,10 @@ American Society of Heating Refrigerating and Air-Conditioning Engineers Inc. At revisions="
                              • +October 23, 2023, by Michael Wetter:
                                +Added value of control output y to icon. +
                              • +
                              • May 20, 2022, by Michael Wetter:
                                Refactored implementation to use new derivative block from CDL package.
                                This is for diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index eb66b1bd164..bd07f39f720 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -53,7 +53,7 @@ block FirstOrderAMIGO annotation (Dialog(group="Integrator reset")); Buildings.Controls.OBC.CDL.Interfaces.RealInput u_s "Connector of setpoint input signal" - annotation (Placement(transformation(extent={{-140,-20},{-100,20}}),iconTransformation(extent={{-140,-20},{-100,20}}))); + annotation (Placement(transformation(extent={{-220,-20},{-180,20}}),iconTransformation(extent={{-140,-20},{-100,20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput u_m "Connector of measurement input signal" annotation (Placement(transformation(origin={0,-120}, extent={{20,-20},{-20,20}},rotation=270), @@ -68,11 +68,11 @@ block FirstOrderAMIGO iconTransformation(extent={{-20,-20},{20,20}},rotation=90,origin={60,-120}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput y "Connector for actuator output signal" - annotation (Placement(transformation(extent={{100,-20},{140,20}}),iconTransformation(extent={{100,-20},{140,20}}))); + annotation (Placement(transformation(extent={{180,-20},{220,20}}),iconTransformation(extent={{100,-20},{140,20}}))); Buildings.Controls.OBC.CDL.Reals.Sources.ModelTime modTim "Simulation time" - annotation (Placement(transformation(extent={{-10,70},{10,90}}))); - Buildings.Controls.OBC.Utilities.PIDWithInputGains PID( + annotation (Placement(transformation(extent={{-40,60},{-20,80}}))); + Buildings.Controls.OBC.Utilities.PIDWithInputGains con( final controllerType=conTyp, final r=r, final yMax=yMax, @@ -82,53 +82,53 @@ block FirstOrderAMIGO final xi_start=xi_start, final yd_start=yd_start, final reverseActing=reverseActing, - final y_reset=xi_start) "PID controller with the gains as inputs" - annotation (Placement(transformation(extent={{0,-50},{20,-30}}))); + final y_reset=xi_start) "PI or P controller with the gains as inputs" + annotation (Placement(transformation(extent={{-40,-50},{-20,-30}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PID PIDPar if with_D "Autotuner of gains for a PID controller" - annotation (Placement(transformation(extent={{-60,40},{-80,60}}))); + annotation (Placement(transformation(extent={{80,30},{100,50}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PI PIPar if not with_D "Autotuner of gains for a PI controller" - annotation (Placement(transformation(extent={{-60,70},{-80,90}}))); + annotation (Placement(transformation(extent={{80,60},{100,80}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Controller rel( final yHig=yHig, final yLow=yLow, final deaBan=deaBan) "Relay controller" - annotation (Placement(transformation(extent={{0,-10},{20,10}}))); + annotation (Placement(transformation(extent={{-40,30},{-20,50}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.ResponseProcess resPro( final yHig=yHig - yRef, final yLow=yRef + yLow) "Identify the on and off period length, the half period ratio, and the moments when the tuning starts and ends" - annotation (Placement(transformation(extent={{20,30},{0,50}}))); + annotation (Placement(transformation(extent={{0,30},{20,50}}))); Buildings.Controls.OBC.CDL.Reals.Switch swi "Switch between a PID controller and a relay controller" - annotation (Placement(transformation(extent={{60,-30},{80,-10}}))); + annotation (Placement(transformation(extent={{140,-10},{160,10}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samk(final y_start=k_start) "Recording the proportional control gain" - annotation (Placement(transformation(extent={{-40,-10},{-20,-30}}))); + annotation (Placement(transformation(extent={{-120,-10},{-100,-30}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samTi(final y_start=Ti_start) "Recording the integral time" - annotation (Placement(transformation(extent={{-80,-40},{-60,-60}}))); + annotation (Placement(transformation(extent={{-120,-40},{-100,-60}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samTd(final y_start=Td_start) if with_D "Recording the derivative time" - annotation (Placement(transformation(extent={{-40,-60},{-20,-80}}))); + annotation (Placement(transformation(extent={{-120,-70},{-100,-90}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.ControlProcessModel conProMod( final yHig=yHig - yRef, final yLow=yRef + yLow, final deaBan=deaBan) "Calculates the parameters of a first-order time delayed model" - annotation (Placement(transformation(extent={{-20,40},{-40,60}}))); + annotation (Placement(transformation(extent={{40,30},{60,50}}))); Buildings.Controls.OBC.CDL.Logical.Latch inTunPro "Outputs true if the controller is conducting the autotuning process" - annotation (Placement(transformation(extent={{40,-80},{60,-60}}))); + annotation (Placement(transformation(extent={{20,-80},{40,-60}}))); Buildings.Controls.OBC.CDL.Logical.Nand nand "Check if an autotuning is ongoing while a new autotuning request is received" - annotation (Placement(transformation(extent={{90,60},{70,80}}))); + annotation (Placement(transformation(extent={{120,-90},{140,-70}}))); Buildings.Controls.OBC.CDL.Utilities.Assert assMes( message="An autotuning is ongoing and an autotuning request is ignored.") "Error message when an autotuning tuning is ongoing while a new autotuning request is received" - annotation (Placement(transformation(extent={{60,60},{40,80}}))); + annotation (Placement(transformation(extent={{148,-90},{168,-70}}))); protected final parameter Real yHig(min=1E-6) = 1 @@ -149,90 +149,108 @@ protected "Type of controller"; equation - connect(PID.u_s, u_s) annotation (Line(points={{-2,-40},{-54,-40},{-54,0},{-120, + connect(con.u_s, u_s) annotation (Line(points={{-42,-40},{-48,-40},{-48,0},{-200, 0}}, color={0,0,127})); - connect(rel.u_s, u_s) annotation (Line(points={{-2,0},{-120,0}}, - color={0,0,127})); - connect(PID.trigger, triRes) annotation (Line(points={{4,-52},{4,-90},{-60,-90}, - {-60,-120}}, color={255,0,255})); - connect(samk.y,PID. k) annotation (Line(points={{-18,-20},{-14,-20},{-14,-32}, - {-2,-32}}, color={0,0,127})); - connect(PID.Ti, samTi.y) annotation (Line(points={{-2,-36},{-14,-36},{-14,-50}, - {-58,-50}}, color={0,0,127})); - connect(samTd.y,PID. Td) annotation (Line(points={{-18,-70},{-6,-70},{-6,-44}, - {-2,-44}}, color={0,0,127})); - connect(rel.u_m, u_m) annotation (Line(points={{10,-12},{10,-22},{28,-22},{28, - -92},{0,-92},{0,-120}}, color={0,0,127})); - connect(resPro.on, rel.yOn) annotation (Line(points={{22,40},{58,40},{58,-6},{ - 22,-6}}, + connect(rel.u_s, u_s) annotation (Line(points={{-42,40},{-122,40},{-122,0},{-200, + 0}}, color={0,0,127})); + connect(con.trigger, triRes) annotation (Line(points={{-36,-52},{-36,-90},{-60, + -90},{-60,-120}}, + color={255,0,255})); + connect(samk.y,con. k) annotation (Line(points={{-98,-20},{-74,-20},{-74,-32}, + {-42,-32}},color={0,0,127})); + connect(con.Ti, samTi.y) annotation (Line(points={{-42,-36},{-74,-36},{-74,-50}, + {-98,-50}}, color={0,0,127})); + connect(samTd.y,con. Td) annotation (Line(points={{-98,-80},{-66,-80},{-66,-44}, + {-42,-44}},color={0,0,127})); + connect(rel.u_m, u_m) annotation (Line(points={{-30,28},{-30,-22},{0,-22},{0,-120}}, + color={0,0,127})); + connect(resPro.on, rel.yOn) annotation (Line(points={{-2,40},{-10,40},{-10,34}, + {-18,34}}, color={255,0,255})); - connect(modTim.y, resPro.tim) annotation (Line(points={{12,80},{28,80},{28,46}, - {22,46}}, color={0,0,127})); - connect(resPro.tau, conProMod.tau) annotation (Line(points={{-2,40},{-10,40},{ - -10,42},{-18,42}}, color={0,0,127})); - connect(conProMod.tOff, resPro.tOff) annotation (Line(points={{-18,46},{-10,46}, - {-10,44},{-2,44}}, color={0,0,127})); - connect(resPro.tOn, conProMod.tOn) annotation (Line(points={{-2,48},{-10,48},{ - -10,54},{-18,54}}, color={0,0,127})); - connect(rel.yErr, conProMod.u) annotation (Line(points={{22,0},{48,0},{48,58}, - {-18,58}}, color={0,0,127})); + connect(modTim.y, resPro.tim) annotation (Line(points={{-18,70},{-10,70},{-10, + 46},{-2,46}}, + color={0,0,127})); + connect(resPro.tau, conProMod.tau) annotation (Line(points={{22,40},{28,40},{28, + 32},{38,32}}, color={0,0,127})); + connect(conProMod.tOff, resPro.tOff) annotation (Line(points={{38,36},{30,36}, + {30,44},{22,44}}, color={0,0,127})); + connect(resPro.tOn, conProMod.tOn) annotation (Line(points={{22,48},{32,48},{32, + 44},{38,44}}, color={0,0,127})); + connect(rel.yErr, conProMod.u) annotation (Line(points={{-18,40},{-12,40},{-12, + 60},{34,60},{34,48},{38,48}}, + color={0,0,127})); connect(PIDPar.kp, conProMod.k) - annotation (Line(points={{-58,56},{-50,56},{-50,56},{-42,56}}, color={0,0,127})); + annotation (Line(points={{78,46},{62,46}}, color={0,0,127})); connect(PIDPar.T, conProMod.T) - annotation (Line(points={{-58,50},{-42,50}}, color={0,0,127})); - connect(PIDPar.L, conProMod.L) annotation (Line(points={{-58,44},{-54,44},{ - -54,44},{-42,44}}, color={0,0,127})); - connect(PIDPar.k, samk.u) annotation (Line(points={{-82,57},{-94,57},{-94,-20}, - {-42,-20}}, color={0,0,127})); - connect(PIDPar.Ti, samTi.u) annotation (Line(points={{-82,50},{-90,50},{-90,-50}, - {-82,-50}}, color={0,0,127})); - connect(PIPar.kp, conProMod.k) annotation (Line(points={{-58,86},{-46,86},{ - -46,56},{-42,56}}, color={0,0,127})); - connect(PIPar.T, conProMod.T) annotation (Line(points={{-58,80},{-50,80},{-50, - 50},{-42,50}}, color={0,0,127})); - connect(PIPar.L, conProMod.L) annotation (Line(points={{-58,74},{-54,74},{-54, - 44},{-42,44}}, color={0,0,127})); - connect(PIPar.k, samk.u) annotation (Line(points={{-82,86},{-94,86},{-94,-20}, - {-42,-20}}, color={0,0,127})); - connect(PIPar.Ti, samTi.u) annotation (Line(points={{-82,74},{-90,74},{-90, - -50},{-82,-50}}, color={0,0,127})); - connect(resPro.triEnd, conProMod.triEnd) annotation (Line(points={{-2,32},{-36, - 32},{-36,38}}, color={255,0,255})); - connect(resPro.triSta, conProMod.triSta) annotation (Line(points={{-2,36},{-24, - 36},{-24,38}}, color={255,0,255})); - connect(resPro.triEnd, samTi.trigger) annotation (Line(points={{-2,32},{-10, - 32},{-10,10},{-70,10},{-70,-38}}, color={255,0,255})); - connect(resPro.triEnd, samk.trigger) annotation (Line(points={{-2,32},{-10,32}, - {-10,10},{-30,10},{-30,-8}},color={255,0,255})); - connect(resPro.triEnd, samTd.trigger) annotation (Line(points={{-2,32},{-10, - 32},{-10,-44},{-30,-44},{-30,-58}}, color={255,0,255})); - connect(PIDPar.Td, samTd.u) annotation (Line(points={{-82,43},{-86,43},{-86,-70}, - {-42,-70}}, color={0,0,127})); + annotation (Line(points={{78,40},{62,40}}, color={0,0,127})); + connect(PIDPar.L, conProMod.L) annotation (Line(points={{78,34},{62,34}}, + color={0,0,127})); + connect(PIDPar.k, samk.u) annotation (Line(points={{102,47},{110,47},{110,96}, + {-148,96},{-148,-20},{-122,-20}}, + color={0,0,127})); + connect(PIDPar.Ti, samTi.u) annotation (Line(points={{102,40},{112,40},{112,98}, + {-150,98},{-150,-50},{-122,-50}}, + color={0,0,127})); + connect(PIPar.kp, conProMod.k) annotation (Line(points={{78,76},{70,76},{70,46}, + {62,46}}, color={0,0,127})); + connect(PIPar.T, conProMod.T) annotation (Line(points={{78,70},{72,70},{72,40}, + {62,40}}, color={0,0,127})); + connect(PIPar.L, conProMod.L) annotation (Line(points={{78,64},{74,64},{74,34}, + {62,34}}, color={0,0,127})); + connect(PIPar.k, samk.u) annotation (Line(points={{102,76},{110,76},{110,96},{ + -148,96},{-148,-20},{-122,-20}}, + color={0,0,127})); + connect(PIPar.Ti, samTi.u) annotation (Line(points={{102,64},{112,64},{112,98}, + {-150,98},{-150,-50},{-122,-50}}, + color={0,0,127})); + connect(resPro.triEnd, conProMod.triEnd) annotation (Line(points={{22,32},{24, + 32},{24,20},{56,20},{56,28}}, + color={255,0,255})); + connect(resPro.triSta, conProMod.triSta) annotation (Line(points={{22,36},{26, + 36},{26,22},{44,22},{44,28}}, + color={255,0,255})); + connect(resPro.triEnd, samTi.trigger) annotation (Line(points={{22,32},{24,32}, + {24,20},{-126,20},{-126,-36},{-110,-36},{-110,-38}}, + color={255,0,255})); + connect(resPro.triEnd, samk.trigger) annotation (Line(points={{22,32},{24,32}, + {24,20},{-126,20},{-126,-6},{-110,-6},{-110,-8}}, + color={255,0,255})); + connect(resPro.triEnd, samTd.trigger) annotation (Line(points={{22,32},{24,32}, + {24,20},{-126,20},{-126,-66},{-110,-66},{-110,-68}}, + color={255,0,255})); + connect(PIDPar.Td, samTd.u) annotation (Line(points={{102,33},{114,33},{114,94}, + {-146,94},{-146,-80},{-122,-80}}, + color={0,0,127})); connect(swi.y, y) - annotation (Line(points={{82,-20},{90,-20},{90,0},{120,0}}, color={0,0,127})); - connect(u_m, PID.u_m) annotation (Line(points={{0,-120},{0,-92},{10,-92},{10,-52}}, - color={0,0,127})); - connect(rel.y, swi.u1) annotation (Line(points={{22,6},{54,6},{54,-12},{58,-12}}, + annotation (Line(points={{162,0},{200,0}}, color={0,0,127})); + connect(u_m,con. u_m) annotation (Line(points={{0,-120},{0,-90},{-30,-90},{-30, + -52}}, color={0,0,127})); + connect(rel.y, swi.u1) annotation (Line(points={{-18,46},{-16,46},{-16,88},{130, + 88},{130,8},{138,8}}, color={0,0,127})); - connect(swi.u3, PID.y) annotation (Line(points={{58,-28},{40,-28},{40,-40},{22, + connect(swi.u3,con. y) annotation (Line(points={{138,-8},{128,-8},{128,-40},{-18, -40}}, color={0,0,127})); - connect(inTunPro.y, swi.u2) annotation (Line(points={{62,-70},{68,-70},{68,-40}, - {52,-40},{52,-20},{58,-20}}, color={255,0,255})); - connect(inTunPro.u, triTun) annotation (Line(points={{38,-70},{30,-70},{30,-92}, - {60,-92},{60,-120}}, color={255,0,255})); - connect(inTunPro.clr, resPro.triEnd) annotation (Line(points={{38,-76},{-10,-76}, - {-10,32},{-2,32}}, color={255,0,255})); - connect(rel.trigger, triTun) annotation (Line(points={{4,-12},{4,-20},{30,-20}, - {30,-92},{60,-92},{60,-120}}, + connect(inTunPro.y, swi.u2) annotation (Line(points={{42,-70},{50,-70},{50,0}, + {138,0}}, color={255,0,255})); + connect(inTunPro.u, triTun) annotation (Line(points={{18,-70},{8,-70},{8,-88}, + {60,-88},{60,-120}}, color={255,0,255})); + connect(inTunPro.clr, resPro.triEnd) annotation (Line(points={{18,-76},{12,-76}, + {12,20},{24,20},{24,32},{22,32}}, + color={255,0,255})); + connect(rel.trigger, triTun) annotation (Line(points={{-36,28},{-36,-20},{8,-20}, + {8,-88},{60,-88},{60,-120}}, color={255,0,255})); - connect(resPro.trigger, triTun) annotation (Line(points={{22,34},{96,34},{96,-92}, - {60,-92},{60,-120}}, color={255,0,255})); + connect(resPro.trigger, triTun) annotation (Line(points={{-2,34},{-8,34},{-8,-20}, + {8,-20},{8,-88},{60,-88},{60,-120}}, + color={255,0,255})); connect(nand.y, assMes.u) - annotation (Line(points={{68,70},{62,70}}, color={255,0,255})); - connect(nand.u2, triTun) annotation (Line(points={{92,62},{96,62},{96,-92},{60, - -92},{60,-120}}, color={255,0,255})); - connect(nand.u1, inTunPro.y) annotation (Line(points={{92,70},{98,70},{98,-70}, - {62,-70}}, color={255,0,255})); + annotation (Line(points={{142,-80},{146,-80}}, + color={255,0,255})); + connect(nand.u2, triTun) annotation (Line(points={{118,-88},{60,-88},{60,-120}}, + color={255,0,255})); + connect(nand.u1, inTunPro.y) annotation (Line(points={{118,-80},{114,-80},{114, + -70},{42,-70}}, + color={255,0,255})); annotation (Documentation(info="

                                This block implements a rule-based PID tuning method. @@ -298,7 +316,8 @@ First implementation

                              "), defaultComponentName = "PIDWitTun", - Icon(graphics={ + Icon(coordinateSystem(extent={{-100,-100},{100,100}}), + graphics={ Text( extent={{-100,140},{100,100}}, textString="%name", @@ -314,8 +333,8 @@ First implementation
                              fillColor={255,255,255}, fillPattern=FillPattern.Solid), Text( - extent={{-26,-22},{74,-62}}, - textString= if controllerType == Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PI then "PI" else "P", + extent={{-26,102},{74,62}}, + textString= if controllerType == Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PID then "PID" else "PI", fillPattern=FillPattern.Solid, fillColor={175,175,175}), Polygon( @@ -348,5 +367,43 @@ First implementation
                              fillColor={175,175,175}, fillPattern=FillPattern.Solid, pattern=LinePattern.None, - lineColor={0,0,0})})); + lineColor={0,0,0}), + Text( + extent={{226,60},{106,10}}, + textColor={0,0,0}, + textString=DynamicSelect("",String(y, + leftJustified=false, + significantDigits=3))), + Text( + extent={{62,70},{-58,20}}, + textColor={0,0,0}, + textString=DynamicSelect( + "k = " + String(k_start, + leftJustified=false, + significantDigits=3), + "k = " + String(con.k, + leftJustified=false, + significantDigits=3))), + Text( + extent={{62,22},{-58,-28}}, + textColor={0,0,0}, + textString=DynamicSelect( + "Ti = " + String(Ti_start, + leftJustified=false, + significantDigits=3), + "Ti = " + String(con.Ti, + leftJustified=false, + significantDigits=3))), + Text( + visible = controllerType == Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PID, + extent={{60,-22},{-60,-72}}, + textColor={0,0,0}, + textString=DynamicSelect( + "Td = " + String(Td_start, + leftJustified=false, + significantDigits=3), + "Td = " + String(con.Td, + leftJustified=false, + significantDigits=3)))}), + Diagram(coordinateSystem(extent={{-180,-100},{180,100}}))); end FirstOrderAMIGO; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo index 6df9089c8b5..94c8f27279b 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo @@ -18,10 +18,10 @@ model PIDWithFirstOrderAMIGO "Test model for an autotuning PID controller" annotation (Placement(transformation(extent={{-80,60},{-60,80}}))); Buildings.Controls.OBC.CDL.Discrete.UnitDelay uniDel2(samplePeriod=240) "A delay process for control process 2" - annotation (Placement(transformation(extent={{10,-30},{30,-10}}))); + annotation (Placement(transformation(extent={{20,-30},{40,-10}}))); Buildings.Controls.OBC.CDL.Discrete.UnitDelay uniDel1(samplePeriod=240) "A delay process for control process 1" - annotation (Placement(transformation(extent={{10,50},{30,70}}))); + annotation (Placement(transformation(extent={{20,50},{40,70}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant k(k=1) "Gain of the first order process" annotation (Placement(transformation(extent={{10,10},{30,30}}))); @@ -30,16 +30,16 @@ model PIDWithFirstOrderAMIGO "Test model for an autotuning PID controller" annotation (Placement(transformation(extent={{10,-66},{30,-46}}))); Buildings.Controls.OBC.CDL.Reals.Subtract sub1 "A subtract block that is used to mimic the first order process 1" - annotation (Placement(transformation(extent={{100,70},{120,90}}))); + annotation (Placement(transformation(extent={{120,70},{140,90}}))); Buildings.Controls.OBC.CDL.Reals.Subtract sub2 "A subtract block that is used to mimic the first order process 2" - annotation (Placement(transformation(extent={{100,-20},{120,0}}))); + annotation (Placement(transformation(extent={{120,-20},{140,0}}))); Buildings.Controls.OBC.CDL.Reals.Derivative derivative1 "A derivative block that is used to mimic the first order process 1" - annotation (Placement(transformation(extent={{60,10},{80,30}}))); + annotation (Placement(transformation(extent={{80,10},{100,30}}))); Buildings.Controls.OBC.CDL.Reals.Derivative derivative2 "A derivative block that is used to mimic the first order process 2" - annotation (Placement(transformation(extent={{60,-70},{80,-50}}))); + annotation (Placement(transformation(extent={{80,-70},{100,-50}}))); Buildings.Controls.OBC.CDL.Logical.Sources.Pulse autTunSig( width=0.9, period=6000, @@ -55,36 +55,38 @@ equation connect(SetPoint.y, PID.u_s) annotation (Line(points={{-58,10},{-48,10},{-48,60}, {-22,60}}, color={0,0,127})); connect(PIDWitTun.y, uniDel2.u) - annotation (Line(points={{2,-20},{8,-20}}, color={0,0,127})); + annotation (Line(points={{2,-20},{18,-20}},color={0,0,127})); connect(uniDel1.u, PID.y) - annotation (Line(points={{8,60},{2,60}}, color={0,0,127})); - connect(uniDel1.y, sub1.u1) annotation (Line(points={{32,60},{54,60},{54,86}, - {98,86}},color={0,0,127})); + annotation (Line(points={{18,60},{2,60}},color={0,0,127})); + connect(uniDel1.y, sub1.u1) annotation (Line(points={{42,60},{54,60},{54,86}, + {118,86}}, + color={0,0,127})); connect(k.y, derivative1.k) annotation (Line(points={{32,20},{44,20},{44,28}, - {58,28}}, color={0,0,127})); - connect(derivative1.T, T.y) annotation (Line(points={{58,24},{48,24},{48,-56}, + {78,28}}, color={0,0,127})); + connect(derivative1.T, T.y) annotation (Line(points={{78,24},{60,24},{60,-56}, {32,-56}}, color={0,0,127})); - connect(derivative1.y, sub1.u2) annotation (Line(points={{82,20},{92,20},{92, - 74},{98,74}}, + connect(derivative1.y, sub1.u2) annotation (Line(points={{102,20},{112,20},{ + 112,74},{118,74}}, color={0,0,127})); - connect(sub1.y, PID.u_m) annotation (Line(points={{122,80},{132,80},{132,40}, + connect(sub1.y, PID.u_m) annotation (Line(points={{142,80},{150,80},{150,40}, {-10,40},{-10,48}}, color={0,0,127})); - connect(sub2.u1, uniDel2.y) annotation (Line(points={{98,-4},{54,-4},{54,-20}, - {32,-20}}, color={0,0,127})); - connect(derivative2.y,sub2. u2) annotation (Line(points={{82,-60},{90,-60},{ - 90,-16},{98,-16}}, color={0,0,127})); - connect(sub2.y, PIDWitTun.u_m) annotation (Line(points={{122,-10},{132,-10},{ - 132,-36},{-10,-36},{-10,-32}}, color={0,0,127})); - connect(derivative2.T, T.y) annotation (Line(points={{58,-56},{32,-56}}, + connect(sub2.u1, uniDel2.y) annotation (Line(points={{118,-4},{64,-4},{64,-20}, + {42,-20}}, color={0,0,127})); + connect(derivative2.y,sub2. u2) annotation (Line(points={{102,-60},{110,-60}, + {110,-16},{118,-16}}, + color={0,0,127})); + connect(sub2.y, PIDWitTun.u_m) annotation (Line(points={{142,-10},{152,-10},{ + 152,-36},{-10,-36},{-10,-32}}, color={0,0,127})); + connect(derivative2.T, T.y) annotation (Line(points={{78,-56},{32,-56}}, color={0,0,127})); - connect(derivative1.u, sub1.u1) annotation (Line(points={{58,20},{54,20},{54, - 86},{98,86}}, color={0,0,127})); - connect(derivative2.u, uniDel2.y) annotation (Line(points={{58,-60},{54,-60}, - {54,-20},{32,-20}}, color={0,0,127})); + connect(derivative1.u, sub1.u1) annotation (Line(points={{78,20},{72,20},{72, + 86},{118,86}}, color={0,0,127})); + connect(derivative2.u, uniDel2.y) annotation (Line(points={{78,-60},{64,-60}, + {64,-20},{42,-20}}, color={0,0,127})); connect(autTunSig.y, PIDWitTun.triTun) annotation (Line(points={{-58,-50},{-4,-50},{-4,-32}}, color={255,0,255})); - connect(k.y, derivative2.k) annotation (Line(points={{32,20},{50,20},{50,-52}, - {58,-52}}, color={0,0,127})); + connect(k.y, derivative2.k) annotation (Line(points={{32,20},{68,20},{68,-52}, + {78,-52}}, color={0,0,127})); annotation ( experiment( StopTime=10000, From ea3ed17b1eb0e35fdb933e196a8ac75de3d70e2e Mon Sep 17 00:00:00 2001 From: Michael Wetter Date: Mon, 23 Oct 2023 11:13:32 -0700 Subject: [PATCH 119/214] Added output variables --- ...hAutotuning_Validation_PIDWithFirstOrderAMIGO.txt | 6 +++++- ...thAutotuning_Validation_PIWithFirstOrderAMIGO.txt | 5 ++++- .../Validation/PIDWithFirstOrderAMIGO.mos | 12 ++++++++---- .../Validation/PIWithFirstOrderAMIGO.mos | 12 ++++++++---- ...hAutotuning.Validation.PIDWithFirstOrderAMIGO.mos | 6 +++++- ...thAutotuning.Validation.PIWithFirstOrderAMIGO.mos | 5 ++++- 6 files changed, 34 insertions(+), 12 deletions(-) diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIDWithFirstOrderAMIGO.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIDWithFirstOrderAMIGO.txt index a6de6989b01..10020a11524 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIDWithFirstOrderAMIGO.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIDWithFirstOrderAMIGO.txt @@ -1,4 +1,4 @@ -last-generated=2023-09-28 +last-generated=2023-10-23 statistics-simulation= { "linear": " ", @@ -13,3 +13,7 @@ PIDWitTun.u_s=[8.00000011920929e-01, 8.00000011920929e-01] PIDWitTun.u_m=[7.200000286102295e-01, 7.999955415725708e-01, 8.00000011920929e-01, 9.998812675476074e-01, 9.999308586120605e-01, 1.35326012969017e-02, 6.440500328608323e-07, 5.875593789284153e-09, 9.999662637710571e-01, 1e+00, -9.798505902290344e-02, -9.999974071979523e-02, -9.999999403953552e-02, 9.999944567680359e-01, 1.00000011920929e+00, 7.413181066513062e-01, 7.412539124488831e-01, 8.210213184356689e-01, 8.221156001091003e-01, 8.221156597137451e-01, 7.949307560920715e-01, 7.949298620223999e-01, 8.028690814971924e-01, 8.028836846351624e-01, 8.028836846351624e-01, 7.998543977737427e-01, 7.998543977737427e-01, 8.005301952362061e-01, 8.005303740501404e-01, 8.001352548599243e-01, 8.001298308372498e-01, 8.001298308372498e-01, 8.001444339752197e-01, 8.001444339752197e-01, 8.00069272518158e-01, 8.000690937042236e-01, 8.000690937042236e-01, 8.000494241714478e-01, 8.000494241714478e-01, 8.000285625457764e-01, 8.000285625457764e-01, 8.000185489654541e-01, 8.000183701515198e-01, 8.000183701515198e-01, 8.000112175941467e-01, 8.000112175941467e-01, 8.000070452690125e-01, 8.000069856643677e-01, 8.000069856643677e-01, 8.000043034553528e-01, 8.000043034553528e-01, 8.000026941299438e-01, 8.000026941299438e-01, 8.000016808509827e-01, 8.000016808509827e-01, 8.000016808509827e-01, 8.000010251998901e-01, 8.000010251998901e-01, 8.000006675720215e-01, 8.000006675720215e-01, 8.000006675720215e-01, 8.000003695487976e-01, 8.000003695487976e-01, 8.000002503395081e-01, 8.000002503395081e-01, 8.000001311302185e-01, 8.000001311302185e-01, 8.000001311302185e-01, -9.996972978115082e-02, -9.999997913837433e-02, 9.979857206344604e-01, 1.000000357627869e+00, 1e+00, -9.99949648976326e-02, -1.000001132488251e-01, 9.997266530990601e-01, 1e+00, 8.396642208099365e-01, 8.374648094177246e-01, 8.374646306037903e-01, 8.508558869361877e-01, 8.508563041687012e-01, 8.227573037147522e-01, 8.227057456970215e-01, 8.227057456970215e-01, 8.169187903404236e-01, 8.169187903404236e-01, 8.095905780792236e-01, 8.095887303352356e-01, 8.062845468521118e-01, 8.062391877174377e-01, 8.062391877174377e-01, 8.037776947021484e-01, 8.037775754928589e-01, 8.023759126663208e-01, 8.023733496665955e-01, 8.023733496665955e-01, 8.014628291130066e-01, 8.014628291130066e-01, 8.009107112884521e-01, 8.009105324745178e-01] autTunSig.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] PIDWitTun.inTunPro.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +PIDWitTun.con.y=[0e+00, 1e+00, 9.999293684959412e-01, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 7.997606992721558e-01, 7.579698562622069e-01, 8.000104427337646e-01, 8.1229567527771e-01, 8.052711486816406e-01, 8.004751205444336e-01, 7.958540320396423e-01, 8.011884689331055e-01, 8.022480010986328e-01, 8.010618090629578e-01, 8.004569411277771e-01, 7.998543977737427e-01, 8.00487756729126e-01, 8.005182147026062e-01, 8.00329327583313e-01, 8.002185225486755e-01, 8.00203263759613e-01, 8.001770377159119e-01, 8.001498579978943e-01, 8.001173734664917e-01, 8.000872135162354e-01, 8.000783324241638e-01, 8.000639081001282e-01, 8.000494241714478e-01, 8.000430464744568e-01, 8.000326752662659e-01, 8.000291585922241e-01, 8.000231981277466e-01, 8.000196218490601e-01, 8.000158071517944e-01, 8.000119924545288e-01, 8.000107407569885e-01, 8.000084161758423e-01, 8.000072836875916e-01, 8.000057935714722e-01, 8.000043034553528e-01, 8.000039458274841e-01, 8.000030517578125e-01, 8.000026941299438e-01, 8.000020980834961e-01, 8.000018000602722e-01, 8.000014424324036e-01, 8.000010848045349e-01, 8.000009655952454e-01, 8.00000786781311e-01, 8.000006675720215e-01, 8.000005483627319e-01, 8.000003695487976e-01, 8.000003695487976e-01, 8.000003099441528e-01, 8.000002503395081e-01, 8.000001907348633e-01, 8.000001907348633e-01, 8.000001311302185e-01, 8.000001311302185e-01, 1e+00, 1e+00, 9.162839651107788e-01, 8.741718530654907e-01, 8.323820233345032e-01, 1e+00, 1e+00, 9.126843214035034e-01, 8.708786964416504e-01, 8.677628040313721e-01, 8.602451682090759e-01, 8.524211645126343e-01, 8.396989703178406e-01, 8.290781974792479e-01, 8.263952136039734e-01, 8.21660578250885e-01, 8.169187903404236e-01, 8.145353198051453e-01, 8.110020756721497e-01, 8.098434209823608e-01, 8.078411817550659e-01, 8.066378235816956e-01, 8.053411841392517e-01, 8.040381669998169e-01, 8.036355972290039e-01, 8.028466701507568e-01, 8.024537563323975e-01, 8.01958441734314e-01, 8.014628291130066e-01, 8.01338255405426e-01, 8.010327219963074e-01, 8.009061813354492e-01, 8.007160425186157e-01] +PIDWitTun.con.k=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.007837891578674e-01, 2.007837891578674e-01, 2.007837891578674e-01, 2.007837891578674e-01, 2.007837891578674e-01, 2.007837891578674e-01, 2.007837891578674e-01, 2.007837891578674e-01, 2.007837891578674e-01, 2.007837891578674e-01, 2.007837891578674e-01, 2.007837891578674e-01, 2.007837891578674e-01, 2.007837891578674e-01, 2.007837891578674e-01, 2.007837891578674e-01, 2.007837891578674e-01, 2.007837891578674e-01, 2.007837891578674e-01, 2.007837891578674e-01, 2.007837891578674e-01, 2.007837891578674e-01, 2.007837891578674e-01, 2.007837891578674e-01, 2.007837891578674e-01, 2.007837891578674e-01, 2.007837891578674e-01, 2.007837891578674e-01] +PIDWitTun.con.Ti=[5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.614346313476562e+01, 9.614346313476562e+01, 9.614346313476562e+01, 9.614346313476562e+01, 9.614346313476562e+01, 9.614346313476562e+01, 9.614346313476562e+01, 9.614346313476562e+01, 9.614346313476562e+01, 9.614346313476562e+01, 9.614346313476562e+01, 9.614346313476562e+01, 9.614346313476562e+01, 9.614346313476562e+01, 9.614346313476562e+01, 9.614346313476562e+01, 9.614346313476562e+01, 9.614346313476562e+01, 9.614346313476562e+01, 9.614346313476562e+01, 9.614346313476562e+01, 9.614346313476562e+01, 9.614346313476562e+01, 9.614346313476562e+01, 9.614346313476562e+01, 9.614346313476562e+01, 9.614346313476562e+01, 9.614346313476562e+01] +PIDWitTun.con.Td=[1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.98236095905304e+00, 1.98236095905304e+00, 1.98236095905304e+00, 1.98236095905304e+00, 1.98236095905304e+00, 1.98236095905304e+00, 1.98236095905304e+00, 1.98236095905304e+00, 1.98236095905304e+00, 1.98236095905304e+00, 1.98236095905304e+00, 1.98236095905304e+00, 1.98236095905304e+00, 1.98236095905304e+00, 1.98236095905304e+00, 1.98236095905304e+00, 1.98236095905304e+00, 1.98236095905304e+00, 1.98236095905304e+00, 1.98236095905304e+00, 1.98236095905304e+00, 1.98236095905304e+00, 1.98236095905304e+00, 1.98236095905304e+00, 1.98236095905304e+00, 1.98236095905304e+00, 1.98236095905304e+00, 1.98236095905304e+00] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIWithFirstOrderAMIGO.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIWithFirstOrderAMIGO.txt index 197f974056b..ec2e5c0a31a 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIWithFirstOrderAMIGO.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIWithFirstOrderAMIGO.txt @@ -1,4 +1,4 @@ -last-generated=2023-09-28 +last-generated=2023-10-23 statistics-simulation= { "linear": " ", @@ -13,3 +13,6 @@ PIWitTun.u_s=[8.00000011920929e-01, 8.00000011920929e-01] PIWitTun.u_m=[7.200000286102295e-01, 7.999961376190186e-01, 8.00000011920929e-01, 9.998272657394409e-01, 9.998775124549866e-01, 1.353192888200283e-02, 5.326713790054782e-07, 2.259544018556895e-08, 9.999662637710571e-01, 9.999999403953552e-01, -9.798507392406464e-02, -9.999968856573105e-02, -9.999999403953552e-02, 9.999949336051941e-01, 1.00000011920929e+00, 6.144447922706604e-01, 6.143491268157959e-01, 7.501715421676636e-01, 7.520346641540527e-01, 7.520348429679871e-01, 7.522280812263489e-01, 7.522280812263489e-01, 7.727971076965332e-01, 7.72834837436676e-01, 7.72834837436676e-01, 7.81497061252594e-01, 7.814971208572388e-01, 7.881966233253479e-01, 7.881982922554016e-01, 7.922416925430298e-01, 7.922971844673157e-01, 7.922971844673157e-01, 7.950133681297302e-01, 7.95013427734375e-01, 7.96759307384491e-01, 7.967625260353088e-01, 7.967625260353088e-01, 7.979001998901367e-01, 7.979001998901367e-01, 7.986374497413635e-01, 7.986376285552979e-01, 7.991096973419189e-01, 7.991161942481995e-01, 7.991161942481995e-01, 7.994266152381897e-01, 7.994266152381897e-01, 7.996276617050171e-01, 7.996280193328857e-01, 7.996280193328857e-01, 7.997586727142334e-01, 7.997586727142334e-01, 7.99843430519104e-01, 7.99843430519104e-01, 7.998976707458496e-01, 7.998984456062317e-01, 7.998984456062317e-01, 7.999340891838074e-01, 7.999340891838074e-01, 7.999572157859802e-01, 7.99957275390625e-01, 7.99957275390625e-01, 7.999722957611084e-01, 7.999722957611084e-01, 7.999820113182068e-01, 7.999820113182068e-01, 7.999882698059082e-01, 7.99988329410553e-01, 7.99988329410553e-01, 9.999932050704956e-01, 1e+00, -9.798509627580643e-02, -9.999990463256836e-02, -1.000000014901161e-01, 9.999949336051941e-01, 1e+00, 8.536804914474487e-01, 8.536440134048462e-01, 8.523020148277283e-01, 8.522835969924927e-01, 8.522835969924927e-01, 8.29795241355896e-01, 8.297944664955139e-01, 8.202488422393799e-01, 8.202313184738159e-01, 8.202313184738159e-01, 8.128827214241028e-01, 8.128827214241028e-01, 8.083930015563965e-01, 8.083919286727905e-01, 8.054624199867249e-01, 8.054221868515015e-01, 8.054221868515015e-01, 8.035137057304382e-01, 8.035136461257935e-01, 8.022767305374146e-01, 8.022744655609131e-01, 8.022744655609131e-01, 8.014729022979736e-01, 8.014729022979736e-01, 8.009538054466248e-01, 8.009536862373352e-01] autTunSig.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] PIWitTun.inTunPro.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +PIWitTun.con.y=[7.999999821186066e-02, 1e+00, 9.999678134918213e-01, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 6.647452116012573e-01, 6.287478208541869e-01, 6.918767690658569e-01, 7.25303590297699e-01, 7.334831953048706e-01, 7.418685555458069e-01, 7.505014538764954e-01, 7.59077787399292e-01, 7.676759362220764e-01, 7.717235684394836e-01, 7.766078114509583e-01, 7.814971208572388e-01, 7.835359573364258e-01, 7.868661880493164e-01, 7.884739637374878e-01, 7.905978560447693e-01, 7.919707894325256e-01, 7.933498024940491e-01, 7.947361469268799e-01, 7.953265309333801e-01, 7.962239980697632e-01, 7.967352867126465e-01, 7.973175048828125e-01, 7.979001998901367e-01, 7.981085181236267e-01, 7.984864711761475e-01, 7.986748218536377e-01, 7.989200353622437e-01, 7.990775108337402e-01, 7.992357611656189e-01, 7.993947863578796e-01, 7.994629144668579e-01, 7.995660901069641e-01, 7.996248006820679e-01, 7.996917366981506e-01, 7.997586727142334e-01, 7.997826337814331e-01, 7.998260855674744e-01, 7.998477220535278e-01, 7.998759150505066e-01, 7.998939752578735e-01, 7.9991215467453e-01, 7.999304533004761e-01, 7.999382615089417e-01, 7.99950122833252e-01, 7.999568581581116e-01, 7.999645471572876e-01, 7.999722957611084e-01, 7.999750375747681e-01, 7.999799847602844e-01, 7.99982488155365e-01, 7.999857664108276e-01, 7.9998779296875e-01, 7.999898791313171e-01, 7.999920248985291e-01, 7.413787245750424e-01, 7.053810954093936e-01, 9.122946858406067e-01, 1e+00, 1e+00, 9.0428227186203e-01, 8.681119680404663e-01, 8.697413206100464e-01, 8.600447773933411e-01, 8.505938649177551e-01, 8.411409258842468e-01, 8.316855430603027e-01, 8.288524150848389e-01, 8.234642744064331e-01, 8.201979398727417e-01, 8.165414929389954e-01, 8.128827214241028e-01, 8.116536140441895e-01, 8.093238472938538e-01, 8.081538677215576e-01, 8.066363334655762e-01, 8.056655526161194e-01, 8.046903610229492e-01, 8.037097454071045e-01, 8.032911419868469e-01, 8.026557564735413e-01, 8.022952675819397e-01, 8.018842339515686e-01, 8.014729022979736e-01, 8.0132657289505e-01, 8.010601997375488e-01, 8.009279370307922e-01, 8.00755500793457e-01] +PIWitTun.con.k=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.516000777482986e-01, 1.516000777482986e-01, 1.516000777482986e-01, 1.516000777482986e-01, 1.516000777482986e-01, 1.516000777482986e-01, 1.516000777482986e-01, 1.516000777482986e-01, 1.516000777482986e-01, 1.516000777482986e-01, 1.516000777482986e-01, 1.516000777482986e-01, 1.516000777482986e-01, 1.516000777482986e-01, 1.516000777482986e-01, 1.516000777482986e-01, 1.516000777482986e-01, 1.516000777482986e-01, 1.516000777482986e-01, 1.516000777482986e-01, 1.516000777482986e-01, 1.516000777482986e-01, 1.516000777482986e-01, 1.516000777482986e-01, 1.516000777482986e-01, 1.516000777482986e-01, 1.516000777482986e-01, 1.516000777482986e-01] +PIWitTun.con.Ti=[5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382736968994141e+01, 8.382736968994141e+01, 8.382736968994141e+01, 8.382736968994141e+01, 8.382736968994141e+01, 8.382736968994141e+01, 8.382736968994141e+01, 8.382736968994141e+01, 8.382736968994141e+01, 8.382736968994141e+01, 8.382736968994141e+01, 8.382736968994141e+01, 8.382736968994141e+01, 8.382736968994141e+01, 8.382736968994141e+01, 8.382736968994141e+01, 8.382736968994141e+01, 8.382736968994141e+01, 8.382736968994141e+01, 8.382736968994141e+01, 8.382736968994141e+01, 8.382736968994141e+01, 8.382736968994141e+01, 8.382736968994141e+01, 8.382736968994141e+01, 8.382736968994141e+01, 8.382736968994141e+01, 8.382736968994141e+01] diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mos index 3e41e35f80c..408bc153552 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mos @@ -1,5 +1,9 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIDWithFirstOrderAMIGO", stopTime=10000, method="Cvode", tolerance=1e-06, resultFile="PIDWithFirstOrderAMIGO"); -createPlot(id=1, position={58, 0, 1212, 639}, y={"PID.u_s", "PID.u_m"}, range={0.0, 10000.0, -0.5, 1.5}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={58, 0, 1212, 639}, y={"PIDWitTun.u_s", "PIDWitTun.u_m"}, range={0.0, 10000.0, -1.0, 2.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={58, 0, 1212, 639}, y={"autTunSig.y"}, range={0.0, 10000.0, -1.0, 2.0}, autoscale=false, grid=true, subPlot=103, colors={{28,108,200}}); -createPlot(id=1, position={55, 55, 1212, 639}, y={"PIDWitTun.inTunPro.y"}, range={0.0, 10000.0, -2.0, 2.0}, grid=true, subPlot=104, colors={{28,108,200}}); \ No newline at end of file +createPlot(id=1, position={58, 0, 954, 958}, y={"PID.u_s", "PID.u_m"}, range={0.0, 10000.0, -1.0, 2.0}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}, timeUnit="s"); +createPlot(id=1, position={58, 0, 954, 958}, y={"PIDWitTun.u_s", "PIDWitTun.u_m"}, range={0.0, 10000.0, -1.0, 2.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}, timeUnit="s"); +createPlot(id=1, position={58, 0, 954, 958}, y={"autTunSig.y"}, range={0.0, 10000.0, -1.0, 2.0}, grid=true, subPlot=103, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=1, position={58, 0, 954, 958}, y={"PIDWitTun.inTunPro.y"}, range={0.0, 10000.0, -1.0, 2.0}, grid=true, subPlot=104, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=2, position={1048, 3, 697, 956}, y={"PIDWitTun.con.y"}, range={0.0, 10000.0, -1.0, 2.0}, grid=true, subPlot=101, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=2, position={1048, 3, 697, 956}, y={"PIDWitTun.con.k"}, range={0.0, 10000.0, 0.0, 1.5}, grid=true, subPlot=102, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=2, position={1048, 3, 697, 956}, y={"PIDWitTun.con.Ti"}, range={0.0, 10000.0, -50.0, 100.0}, grid=true, subPlot=103, colors={{28,108,200}}, timeUnit="s", displayUnits={"s"}); +createPlot(id=2, position={1048, 3, 697, 956}, y={"PIDWitTun.con.Td"}, range={0.0, 10000.0, 0.0, 3.0}, grid=true, subPlot=104, colors={{28,108,200}}, timeUnit="s", displayUnits={"s"}); diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mos index 46ffd50b945..f1fe2c1e0aa 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mos @@ -1,5 +1,9 @@ simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIWithFirstOrderAMIGO", stopTime=10000, method="Cvode", tolerance=1e-06, resultFile="PIWithFirstOrderAMIGO"); -createPlot(id=1, position={30, -20, 776, 525}, y={"PI.u_s", "PI.u_m"}, range={0.0, 10000.0, -0.5, 1.5}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={30, -20, 776, 525}, y={"PIWitTun.u_s", "PIWitTun.u_m"}, range={0.0, 10000.0, -2.0, 2.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); -createPlot(id=1, position={30, -20, 776, 525}, y={"autTunSig.y"}, range={0.0, 10000.0, -1.0, 2.0}, autoscale=false, grid=true, subPlot=103, colors={{28,108,200}}); -createPlot(id=1, position={55, 55, 1212, 639}, y={"PIWitTun.inTunPro.y"}, range={0.0, 10000.0, -2.0, 2.0}, grid=true, subPlot=104, colors={{28,108,200}}); \ No newline at end of file +createPlot(id=1, position={58, 0, 954, 958}, y={"PI.u_s", "PI.u_m"}, range={0.0, 10000.0, -1.0, 2.0}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}, timeUnit="s"); +createPlot(id=1, position={58, 0, 954, 958}, y={"PIWitTun.u_s", "PIWitTun.u_m"}, range={0.0, 10000.0, -1.0, 2.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}, timeUnit="s"); +createPlot(id=1, position={58, 0, 954, 958}, y={"autTunSig.y"}, range={0.0, 10000.0, -1.0, 2.0}, grid=true, subPlot=103, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=1, position={58, 0, 954, 958}, y={"PIWitTun.inTunPro.y"}, range={0.0, 10000.0, -1.0, 2.0}, grid=true, subPlot=104, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=2, position={1048, 3, 697, 956}, y={"PIWitTun.con.y"}, range={0.0, 10000.0, -1.0, 2.0}, grid=true, subPlot=101, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=2, position={1048, 3, 697, 956}, y={"PIWitTun.con.k"}, range={0.0, 10000.0, 0.0, 1.5}, grid=true, subPlot=102, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=2, position={1048, 3, 697, 956}, y={"PIWitTun.con.Ti"}, range={0.0, 10000.0, -50.0, 100.0}, grid=true, subPlot=103, colors={{28,108,200}}, timeUnit="s", displayUnits={"s"}); + diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIDWithFirstOrderAMIGO.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIDWithFirstOrderAMIGO.mos index ff0449fee61..5f591c78f3b 100644 --- a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIDWithFirstOrderAMIGO.mos +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIDWithFirstOrderAMIGO.mos @@ -5,5 +5,9 @@ compareVars := "PIDWitTun.u_s", "PIDWitTun.u_m", "autTunSig.y", - "PIDWitTun.inTunPro.y" + "PIDWitTun.inTunPro.y", + "PIDWitTun.con.y", + "PIDWitTun.con.k", + "PIDWitTun.con.Ti", + "PIDWitTun.con.Td" }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIWithFirstOrderAMIGO.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIWithFirstOrderAMIGO.mos index 10830307f53..30175c0011f 100644 --- a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIWithFirstOrderAMIGO.mos +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIWithFirstOrderAMIGO.mos @@ -5,5 +5,8 @@ compareVars := "PIWitTun.u_s", "PIWitTun.u_m", "autTunSig.y", - "PIWitTun.inTunPro.y" + "PIWitTun.inTunPro.y", + "PIWitTun.con.y", + "PIWitTun.con.k", + "PIWitTun.con.Ti" }; From fed5f5ad3cf79eae9038178de85f1a32afc2469a Mon Sep 17 00:00:00 2001 From: Michael Wetter Date: Mon, 23 Oct 2023 11:21:34 -0700 Subject: [PATCH 120/214] Corrected wrong annotation --- .../OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo | 1 - .../Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo | 1 - 2 files changed, 2 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo index 621c305ffd9..806c6e4b9e1 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo @@ -104,7 +104,6 @@ equation Line(points={{-22,2},{-48,2}}, color={28,108,200}), Line(points={{32,-44},{32,-62}}, color={28,108,200}), Text( - visible=(controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PI), extent={{-16,102},{84,62}}, lineColor={0,0,0}, fillPattern=FillPattern.Solid, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo index 250f782b247..1eb7043e5db 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo @@ -115,7 +115,6 @@ equation points={{-80,-70},{80,-70}}, color={192,192,192}), Text( - visible=(controllerType == Buildings.Controls.OBC.CDL.Types.SimpleController.PI), extent={{-62,-10},{84,-52}}, lineColor={0,0,0}, fillPattern=FillPattern.Solid, From 3809c8835e8bec853b331b7a37e632413dfd1a27 Mon Sep 17 00:00:00 2001 From: Michael Wetter Date: Mon, 23 Oct 2023 11:23:13 -0700 Subject: [PATCH 121/214] Added icon for OMEdit --- .../PIDWithAutotuning/AutoTuner/package.mo | 37 ++++++++++++++++++- .../PIDWithAutotuning/Relay/package.mo | 37 ++++++++++++++++++- .../SystemIdentification/package.mo | 37 ++++++++++++++++++- 3 files changed, 108 insertions(+), 3 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/package.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/package.mo index 0a77e55aa96..870fa8ecf9b 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/package.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/package.mo @@ -4,5 +4,40 @@ annotation (Documentation(info="

                              This package contains blocks for calculating the PID gains based on identified system models of the control process.

                              -")); +"), + Icon( + graphics={ + Rectangle( + lineColor={200,200,200}, + fillColor={248,248,248}, + fillPattern=FillPattern.HorizontalCylinder, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Rectangle( + lineColor={128,128,128}, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Ellipse( + origin={10.0,10.0}, + fillColor={76,76,76}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + extent={{-80.0,-80.0},{-20.0,-20.0}}), + Ellipse( + origin={10.0,10.0}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + extent={{0.0,-80.0},{60.0,-20.0}}), + Ellipse( + origin={10.0,10.0}, + fillColor={128,128,128}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + extent={{0.0,0.0},{60.0,60.0}}), + Ellipse( + origin={10.0,10.0}, + lineColor={128,128,128}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-80.0,0.0},{-20.0,60.0}})})); end AutoTuner; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/package.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/package.mo index 08e302fae4b..5909e527237 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/package.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/package.mo @@ -4,5 +4,40 @@ annotation (Documentation(info="

                              This package contains blocks related to a relay controller.

                              -")); +"), + Icon( + graphics={ + Rectangle( + lineColor={200,200,200}, + fillColor={248,248,248}, + fillPattern=FillPattern.HorizontalCylinder, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Rectangle( + lineColor={128,128,128}, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Ellipse( + origin={10.0,10.0}, + fillColor={76,76,76}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + extent={{-80.0,-80.0},{-20.0,-20.0}}), + Ellipse( + origin={10.0,10.0}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + extent={{0.0,-80.0},{60.0,-20.0}}), + Ellipse( + origin={10.0,10.0}, + fillColor={128,128,128}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + extent={{0.0,0.0},{60.0,60.0}}), + Ellipse( + origin={10.0,10.0}, + lineColor={128,128,128}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-80.0,0.0},{-20.0,60.0}})})); end Relay; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/package.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/package.mo index f92bed5ec40..56f036ba70d 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/package.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/package.mo @@ -4,5 +4,40 @@ annotation (Documentation(info="

                              This package contains blocks that conduct the system identification of the control process.

                              -")); +"), + Icon( + graphics={ + Rectangle( + lineColor={200,200,200}, + fillColor={248,248,248}, + fillPattern=FillPattern.HorizontalCylinder, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Rectangle( + lineColor={128,128,128}, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Ellipse( + origin={10.0,10.0}, + fillColor={76,76,76}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + extent={{-80.0,-80.0},{-20.0,-20.0}}), + Ellipse( + origin={10.0,10.0}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + extent={{0.0,-80.0},{60.0,-20.0}}), + Ellipse( + origin={10.0,10.0}, + fillColor={128,128,128}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + extent={{0.0,0.0},{60.0,60.0}}), + Ellipse( + origin={10.0,10.0}, + lineColor={128,128,128}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-80.0,0.0},{-20.0,60.0}})})); end SystemIdentification; From dd3afdeb3cee560f7c5d7256d9e1f83b8bc14bad Mon Sep 17 00:00:00 2001 From: Michael Wetter Date: Mon, 23 Oct 2023 11:40:16 -0700 Subject: [PATCH 122/214] Corrected wrong annotation --- .../OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo | 2 +- .../OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo index 806c6e4b9e1..f5d9786fd33 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo @@ -105,7 +105,7 @@ equation Line(points={{32,-44},{32,-62}}, color={28,108,200}), Text( extent={{-16,102},{84,62}}, - lineColor={0,0,0}, + textColor={0,0,0}, fillPattern=FillPattern.Solid, fillColor={175,175,175}, textString="k"), diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo index 1eb7043e5db..76e816758dd 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo @@ -116,7 +116,7 @@ equation color={192,192,192}), Text( extent={{-62,-10},{84,-52}}, - lineColor={0,0,0}, + textColor={0,0,0}, fillPattern=FillPattern.Solid, fillColor={175,175,175}, textString="Relay"), From b84979c806bb4d6ba706c773d2e1295e221ab5f4 Mon Sep 17 00:00:00 2001 From: Michael Wetter Date: Mon, 23 Oct 2023 11:41:18 -0700 Subject: [PATCH 123/214] Added icon for OMEdit --- .../AutoTuner/AMIGO/package.mo | 37 ++++++++++++++++++- .../FirstOrderTimedelayed/package.mo | 37 ++++++++++++++++++- 2 files changed, 72 insertions(+), 2 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.mo index 6b24c941b22..472fdec88a7 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.mo @@ -17,5 +17,40 @@ Journal of Process Control 24.5 (2014): 568-577. \"Revisiting the Ziegler–Nichols step response method for PID control.\" Journal of process control 14.6 (2004): 635-650.

                              -")); +"), + Icon( + graphics={ + Rectangle( + lineColor={200,200,200}, + fillColor={248,248,248}, + fillPattern=FillPattern.HorizontalCylinder, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Rectangle( + lineColor={128,128,128}, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Ellipse( + origin={10.0,10.0}, + fillColor={76,76,76}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + extent={{-80.0,-80.0},{-20.0,-20.0}}), + Ellipse( + origin={10.0,10.0}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + extent={{0.0,-80.0},{60.0,-20.0}}), + Ellipse( + origin={10.0,10.0}, + fillColor={128,128,128}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + extent={{0.0,0.0},{60.0,60.0}}), + Ellipse( + origin={10.0,10.0}, + lineColor={128,128,128}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-80.0,0.0},{-20.0,60.0}})})); end AMIGO; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/package.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/package.mo index 1e58b2ef78e..8e22ff8322c 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/package.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/package.mo @@ -2,5 +2,40 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification; package FirstOrderTimedelayed "Package with components related to a first-order time delayed model" annotation (Documentation(info="

                              This package contains the blocks to identify the parameters of a first-order time delayed model.

                              -")); +"), + Icon( + graphics={ + Rectangle( + lineColor={200,200,200}, + fillColor={248,248,248}, + fillPattern=FillPattern.HorizontalCylinder, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Rectangle( + lineColor={128,128,128}, + extent={{-100.0,-100.0},{100.0,100.0}}, + radius=25.0), + Ellipse( + origin={10.0,10.0}, + fillColor={76,76,76}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + extent={{-80.0,-80.0},{-20.0,-20.0}}), + Ellipse( + origin={10.0,10.0}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + extent={{0.0,-80.0},{60.0,-20.0}}), + Ellipse( + origin={10.0,10.0}, + fillColor={128,128,128}, + pattern=LinePattern.None, + fillPattern=FillPattern.Solid, + extent={{0.0,0.0},{60.0,60.0}}), + Ellipse( + origin={10.0,10.0}, + lineColor={128,128,128}, + fillColor={255,255,255}, + fillPattern=FillPattern.Solid, + extent={{-80.0,0.0},{-20.0,60.0}})})); end FirstOrderTimedelayed; From 3ddeb66d9aa61358757069548cee4a2da23252dc Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Thu, 26 Oct 2023 16:44:39 -0700 Subject: [PATCH 124/214] corrected text --- .../Relay/BaseClasses/TuningMonitor.mo | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/TuningMonitor.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/TuningMonitor.mo index 5175888d0fd..9b9b3515dfb 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/TuningMonitor.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/TuningMonitor.mo @@ -40,7 +40,7 @@ protected "Block that checks if either the length for the On period or the length for theoff period increases after they both becomes positive" annotation (Placement(transformation(extent={{20,20},{40,40}}))); Buildings.Controls.OBC.CDL.Reals.Add addtOntOff - "Block that calculates the sum of the length for the On period and the length for theoff period" + "Block that calculates the sum of the length for the On period and the length for the Off period" annotation (Placement(transformation(extent={{-80,-40},{-60,-20}}))); Buildings.Controls.OBC.CDL.Reals.Less tDec "Block that checks if either the length for the On period or the length for theoff period decreases after they both becomes positive" @@ -67,14 +67,15 @@ protected equation connect(tMax.u1, tOn) annotation (Line(points={{-82,76},{-94,76},{-94,80},{ -120,80}}, color={0,0,127})); - connect(tMax.u2, tOff) annotation (Line(points={{-82,64},{-94,64},{-94,-70},{ + connect(tMax.u2, tOff) annotation (Line(points={{-82,64},{-90,64},{-90,-70},{ -120,-70}}, color={0,0,127})); connect(minLen.y, gretOnOrtOff.u2) annotation (Line(points={{-58,30},{-50,30}, {-50,42},{-42,42}}, color={0,0,127})); connect(samAddtOntOff.y, tInc.u2) annotation (Line(points={{2,0},{10,0},{10,22}, {18,22}}, color={0,0,127})); - connect(addtOntOff.u2, tOff) annotation (Line(points={{-82,-36},{-88,-36},{-88, - -70},{-120,-70}}, color={0,0,127})); + connect(addtOntOff.u2, tOff) annotation (Line(points={{-82,-36},{-90,-36},{ + -90,-70},{-120,-70}}, + color={0,0,127})); connect(addtOntOff.u1, tOn) annotation (Line(points={{-82,-24},{-94,-24},{-94, 80},{-120,80}}, color={0,0,127})); connect(tCha.u1, tInc.y) @@ -94,7 +95,7 @@ equation {120,-60}}, color={255,0,255})); connect(tMin.u1, tOn) annotation (Line(points={{-82,-64},{-94,-64},{-94,80},{-120, 80}}, color={0,0,127})); - connect(tMin.u2, tOff) annotation (Line(points={{-82,-76},{-88,-76},{-88,-70}, + connect(tMin.u2, tOff) annotation (Line(points={{-82,-76},{-90,-76},{-90,-70}, {-120,-70}}, color={0,0,127})); connect(tMin.y, gretOnAndtOff.u1) annotation (Line(points={{-58,-70},{-42,-70}}, color={0,0,127})); From f23f77af1e797b76737ce1d26ce99933cb6b640e Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Tue, 31 Oct 2023 10:15:55 -0700 Subject: [PATCH 125/214] improved graphic [ci skip] --- .../Relay/BaseClasses/TuningMonitor.mo | 3 +- .../Validation/PIWithFirstOrderAMIGO.mo | 39 +++++++++++-------- 2 files changed, 24 insertions(+), 18 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/TuningMonitor.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/TuningMonitor.mo index 9b9b3515dfb..6ed9d4295b8 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/TuningMonitor.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/TuningMonitor.mo @@ -29,8 +29,7 @@ protected Buildings.Controls.OBC.CDL.Reals.Greater gretOnOrtOff "Check if either the length for the On period or the length for the off period are larger than 0" annotation (Placement(transformation(extent={{-40,40},{-20,60}}))); - Buildings.Controls.OBC.CDL.Reals.Sources.Constant minLen( - final k=0) + Buildings.Controls.OBC.CDL.Reals.Sources.Constant minLen(final k=1e-5) "Minimum value for the horizon length" annotation (Placement(transformation(extent={{-80,20},{-60,40}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samAddtOntOff diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo index 6c33d31da0e..d717473e630 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo @@ -36,7 +36,7 @@ model PIWithFirstOrderAMIGO "Test model for an autotuning PI controller" annotation (Placement(transformation(extent={{60,-20},{80,0}}))); Buildings.Controls.OBC.CDL.Reals.Derivative derivative1 "A derivative block that is used to mimic the first order process 1" - annotation (Placement(transformation(extent={{78,26},{58,46}}))); + annotation (Placement(transformation(extent={{80,30},{60,50}}))); Buildings.Controls.OBC.CDL.Reals.Derivative derivative2 "A derivative block that is used to mimic the first order process 2" annotation (Placement(transformation(extent={{80,-60},{60,-40}}))); @@ -49,8 +49,9 @@ model PIWithFirstOrderAMIGO "Test model for an autotuning PI controller" equation connect(resSig.y, PI.trigger) annotation (Line(points={{-58,70},{-30,70},{-30, 40},{-16,40},{-16,48}}, color={255,0,255})); - connect(PIWitTun.triRes, PI.trigger) annotation (Line(points={{-16,-32},{-16,-38}, - {-30,-38},{-30,40},{-16,40},{-16,48}}, color={255,0,255})); + connect(PIWitTun.triRes, PI.trigger) annotation (Line(points={{-16,-32},{-16, + -40},{-30,-40},{-30,40},{-16,40},{-16,48}}, + color={255,0,255})); connect(PIWitTun.u_s, PI.u_s) annotation (Line(points={{-22,-20},{-48,-20},{-48, 60},{-22,60}}, color={0,0,127})); connect(SetPoint.y, PI.u_s) annotation (Line(points={{-58,10},{-48,10},{-48,60}, @@ -61,26 +62,32 @@ equation annotation (Line(points={{8,60},{2,60}}, color={0,0,127})); connect(uniDel1.y, sub1.u1) annotation (Line(points={{32,60},{40,60},{40,86},{ 58,86}}, color={0,0,127})); - connect(k.y, derivative1.k) annotation (Line(points={{158,30},{148,30},{148,44}, - {80,44}}, color={0,0,127})); - connect(derivative1.T, T.y) annotation (Line(points={{80,40},{112,40},{112,-46}, - {148,-46},{148,-10},{158,-10}}, color={0,0,127})); - connect(derivative1.y, sub1.u2) annotation (Line(points={{56,36},{50,36},{50,74}, - {58,74}}, color={0,0,127})); - connect(sub1.y, PI.u_m) annotation (Line(points={{82,80},{88,80},{88,54},{46,54}, - {46,42},{-10,42},{-10,48}}, color={0,0,127})); + connect(k.y, derivative1.k) annotation (Line(points={{158,30},{148,30},{148, + 48},{82,48}}, + color={0,0,127})); + connect(derivative1.T, T.y) annotation (Line(points={{82,44},{112,44},{112, + -46},{148,-46},{148,-10},{158,-10}}, + color={0,0,127})); + connect(derivative1.y, sub1.u2) annotation (Line(points={{58,40},{50,40},{50, + 74},{58,74}}, + color={0,0,127})); + connect(sub1.y, PI.u_m) annotation (Line(points={{82,80},{88,80},{88,60},{46, + 60},{46,40},{-10,40},{-10,48}}, + color={0,0,127})); connect(sub2.u1, uniDel2.y) annotation (Line(points={{58,-4},{40,-4},{40,-20}, {32,-20}}, color={0,0,127})); connect(derivative2.y,sub2. u2) annotation (Line(points={{58,-50},{52,-50},{ 52,-16},{58,-16}}, color={0,0,127})); connect(sub2.y, PIWitTun.u_m) annotation (Line(points={{82,-10},{88,-10},{88, - -26},{46,-26},{46,-38},{-10,-38},{-10,-32}}, color={0,0,127})); - connect(derivative2.k, derivative1.k) annotation (Line(points={{82,-42},{92,-42}, - {92,44},{80,44}}, color={0,0,127})); + -28},{46,-28},{46,-40},{-10,-40},{-10,-32}}, color={0,0,127})); + connect(derivative2.k, derivative1.k) annotation (Line(points={{82,-42},{92, + -42},{92,48},{82,48}}, + color={0,0,127})); connect(derivative2.T, T.y) annotation (Line(points={{82,-46},{148,-46},{148, -10},{158,-10}}, color={0,0,127})); - connect(derivative1.u, sub1.u1) annotation (Line(points={{80,36},{88,36},{88,20}, - {40,20},{40,86},{58,86}}, color={0,0,127})); + connect(derivative1.u, sub1.u1) annotation (Line(points={{82,40},{88,40},{88, + 20},{40,20},{40,86},{58,86}}, + color={0,0,127})); connect(derivative2.u, uniDel2.y) annotation (Line(points={{82,-50},{92,-50}, {92,-66},{40,-66},{40,-20},{32,-20}}, color={0,0,127})); connect(autTunSig.y, PIWitTun.triTun) From 370c893d5a6dc6d68b84211dc581616e15c64793 Mon Sep 17 00:00:00 2001 From: Michael Wetter Date: Wed, 1 Nov 2023 12:15:05 -0700 Subject: [PATCH 126/214] Changed component layout, changed TunMon to tunMon --- .../BaseClasses/SamplerWithResetThreshold.mo | 31 +++++++++---------- .../Relay/BaseClasses/TuningMonitor.mo | 18 +++++------ .../Relay/ResponseProcess.mo | 12 +++---- 3 files changed, 28 insertions(+), 33 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/SamplerWithResetThreshold.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/SamplerWithResetThreshold.mo index 7fe57e1be7c..cc7ed58cde0 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/SamplerWithResetThreshold.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/SamplerWithResetThreshold.mo @@ -20,53 +20,50 @@ block SamplerWithResetThreshold protected Buildings.Controls.OBC.CDL.Reals.Sources.Constant thr(final k=lowLim) "Threshold" - annotation (Placement(transformation(extent={{-80,-10},{-60,10}}))); + annotation (Placement(transformation(origin = {0, 42}, extent = {{-80, -10}, {-60, 10}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler yRec(final y_start=y_reset) "Record the input when sampling is triggered" annotation (Placement(transformation(extent={{60,10},{80,-10}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant reset(final k=y_reset) "Reset value" - annotation (Placement(transformation(extent={{-80,-90},{-60,-70}}))); + annotation (Placement(transformation(origin = {0, 72}, extent = {{-80, -90}, {-60, -70}}))); Buildings.Controls.OBC.CDL.Logical.Or samTri "Sampling trigger" annotation (Placement(transformation(extent={{40,40},{60,60}}))); Buildings.Controls.OBC.CDL.Reals.Greater gre(final h=0) "Check if the input signal is larger than the threshold" - annotation (Placement(transformation(extent={{-32,20},{-12,40}}))); + annotation (Placement(transformation(origin = {0, 20}, extent = {{-32, 20}, {-12, 40}}))); Buildings.Controls.OBC.CDL.Reals.Switch swi "Switch between sampling the input signal and the reset value" annotation (Placement(transformation(extent={{-16,10},{4,-10}}))); Buildings.Controls.OBC.CDL.Logical.Edge edgRes(final pre_u_start=false) "Detect if the reset is triggered" - annotation (Placement(transformation(extent={{-80,-50},{-60,-30}}))); + annotation (Placement(transformation(origin = {0, -20}, extent = {{-80, -50}, {-60, -30}}))); Buildings.Controls.OBC.CDL.Logical.Edge edgThr(final pre_u_start=false) "Detect if the threshold is exceeded" annotation (Placement(transformation(extent={{0,40},{20,60}}))); equation connect(yRec.y, y) annotation (Line(points={{82,0},{106,0},{106,0},{120,0}}, color={0,0,127})); - connect(thr.y, gre.u2) annotation (Line(points={{-58,0},{-40,0},{-40,22},{-34, - 22}}, color={0,0,127})); - connect(gre.u1, u) annotation (Line(points={{-34,30},{-46,30},{-46,60},{-120, + connect(thr.y, gre.u2) annotation (Line(points={{-58, 42},{-34, + 42}}, color={0,0,127})); + connect(gre.u1, u) annotation (Line(points={{-34,50},{-46,50},{-46,60},{-120, 60}}, color={0,0,127})); connect(yRec.u, swi.y) annotation (Line(points={{58,0},{6,0}}, color={0,0,127})); - connect(edgRes.u, trigger) annotation (Line(points={{-82,-40},{-92,-40},{-92, - -60},{-120,-60}}, color={255,0,255})); - connect(edgRes.y, swi.u2) annotation (Line(points={{-58,-40},{-32,-40},{-32,0}, + connect(edgRes.u, trigger) annotation (Line(points={{-82, -60},{-120,-60}}, color={255,0,255})); + connect(edgRes.y, swi.u2) annotation (Line(points={{-58,-60},{-32,-60},{-32,0}, {-18,0}}, color={255,0,255})); connect(swi.u3, u) annotation (Line(points={{-18,8},{-46,8},{-46,60},{-120,60}}, color={0,0,127})); - connect(swi.u1, reset.y) annotation (Line(points={{-18,-8},{-26,-8},{-26,-80}, - {-58,-80}}, color={0,0,127})); - connect(samTri.u2, edgRes.y) annotation (Line(points={{38,42},{30,42},{30,-40}, - {-58,-40}}, color={255,0,255})); + connect(swi.u1, reset.y) annotation (Line(points={{-18,-8},{-58, -8}}, color={0,0,127})); + connect(samTri.u2, edgRes.y) annotation (Line(points={{38,42},{30,42},{30,-60}, + {-58,-60}}, color={255,0,255})); connect(samTri.y, yRec.trigger) annotation (Line(points={{62,50},{70,50},{70,12}}, color={255,0,255})); connect(edgThr.y, samTri.u1) annotation (Line(points={{22,50},{38,50}}, color={255,0,255})); - connect(edgThr.u, gre.y) annotation (Line(points={{-2,50},{-8,50},{-8,30},{ - -10,30}}, color={255,0,255})); + connect(edgThr.u, gre.y) annotation (Line(points={{-2,50},{-10, 50}}, color={255,0,255})); annotation ( defaultComponentName = "samResThr", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ @@ -92,4 +89,4 @@ This block samples the input real signal u when u is l On the other hand, when the input boolean signal trigger becomes true, the output y is reset to a default value.

                              ")); -end SamplerWithResetThreshold; +end SamplerWithResetThreshold; \ No newline at end of file diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/TuningMonitor.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/TuningMonitor.mo index 6ed9d4295b8..0c6e8296da8 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/TuningMonitor.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/TuningMonitor.mo @@ -25,10 +25,10 @@ block TuningMonitor "Monitor the tuning process" protected Buildings.Controls.OBC.CDL.Reals.Max tMax "Maximum value of the length for the on and Off period " - annotation (Placement(transformation(extent={{-80,60},{-60,80}}))); + annotation (Placement(transformation(origin = {0, -10}, extent = {{-80, 60}, {-60, 80}}))); Buildings.Controls.OBC.CDL.Reals.Greater gretOnOrtOff "Check if either the length for the On period or the length for the off period are larger than 0" - annotation (Placement(transformation(extent={{-40,40},{-20,60}}))); + annotation (Placement(transformation(origin = {0, 10}, extent = {{-40, 40}, {-20, 60}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant minLen(final k=1e-5) "Minimum value for the horizon length" annotation (Placement(transformation(extent={{-80,20},{-60,40}}))); @@ -64,12 +64,12 @@ protected annotation (Placement(transformation(extent={{-40,-80},{-20,-60}}))); equation - connect(tMax.u1, tOn) annotation (Line(points={{-82,76},{-94,76},{-94,80},{ + connect(tMax.u1, tOn) annotation (Line(points={{-82,66},{-94,66},{-94,80},{ -120,80}}, color={0,0,127})); - connect(tMax.u2, tOff) annotation (Line(points={{-82,64},{-90,64},{-90,-70},{ + connect(tMax.u2, tOff) annotation (Line(points={{-82,54},{-90,54},{-90,-70},{ -120,-70}}, color={0,0,127})); connect(minLen.y, gretOnOrtOff.u2) annotation (Line(points={{-58,30},{-50,30}, - {-50,42},{-42,42}}, color={0,0,127})); + {-50,52},{-42,52}}, color={0,0,127})); connect(samAddtOntOff.y, tInc.u2) annotation (Line(points={{2,0},{10,0},{10,22}, {18,22}}, color={0,0,127})); connect(addtOntOff.u2, tOff) annotation (Line(points={{-82,-36},{-90,-36},{ @@ -82,8 +82,7 @@ equation color={255,0,255})); connect(samAddtOntOff.y, tDec.u2) annotation (Line(points={{2,0},{10,0},{10,-38}, {18,-38}}, color={0,0,127})); - connect(gretOnOrtOff.u1, tMax.y) annotation (Line(points={{-42,50},{-52,50},{ - -52,70},{-58,70}}, color={0,0,127})); + connect(gretOnOrtOff.u1, tMax.y) annotation (Line(points={{-42,60},{-58, 60}}, color={0,0,127})); connect(tDec.y, tCha.u2) annotation (Line(points={{42,-30},{42,-8},{48,-8}}, color={255,0,255})); connect(edgTunSta.y, triSta) annotation (Line(points={{82,60},{88,60},{88,60}, @@ -100,8 +99,7 @@ equation annotation (Line(points={{-58,-70},{-42,-70}}, color={0,0,127})); connect(gretOnAndtOff.u2, minLen.y) annotation (Line(points={{-42,-78},{-50, -78},{-50,30},{-58,30}}, color={0,0,127})); - connect(gretOnOrtOff.y, edgTunSta.u) annotation (Line(points={{-18,50},{50,50}, - {50,60},{58,60}},color={255,0,255})); + connect(gretOnOrtOff.y, edgTunSta.u) annotation (Line(points={{-18, 60},{58,60}},color={255,0,255})); connect(gretOnAndtOff.y, samAddtOntOff.trigger) annotation (Line(points={{-18, -70},{-10,-70},{-10,-12}}, color={255,0,255})); connect(addtOntOff.y, mul.u1) annotation (Line(points={{-58,-30},{-54,-30},{-54, @@ -154,4 +152,4 @@ or toff changes after the tuning period starts, as illus \"Automatic Controller Tuning using Relay-based Model Identification.\" Department of Automatic Control, Lund Institute of Technology, Lund University.

                              ")); -end TuningMonitor; +end TuningMonitor; \ No newline at end of file diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo index 0a7464ad876..18d36f60e3b 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo @@ -54,7 +54,7 @@ protected "Block that calculates the normalized time delay" annotation (Placement(transformation(extent={{40,0},{60,20}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.TuningMonitor - TunMon "Block that detects when the tuning period starts and ends" + tunMon "Block that detects when the tuning period starts and ends" annotation (Placement(transformation(extent={{-40,-40},{-20,-20}}))); equation @@ -74,15 +74,15 @@ equation 4},{-2,4}}, color={0,0,127})); connect(norTimDel.tau, tau) annotation (Line(points={{62,10},{120,10}}, color={0,0,127})); - connect(TunMon.triSta, triSta) annotation (Line(points={{-18,-24},{80,-24},{80, + connect(tunMon.triSta, triSta) annotation (Line(points={{-18,-24},{80,-24},{80, -40},{120,-40}}, color={255,0,255})); - connect(TunMon.triEnd, triEnd) annotation (Line(points={{-18,-36},{60,-36},{60, + connect(tunMon.triEnd, triEnd) annotation (Line(points={{-18,-36},{60,-36},{60, -80},{120,-80}}, color={255,0,255})); - connect(TunMon.tOn, onOffPer.tOn) annotation (Line(points={{-42,-24},{-52,-24}, + connect(tunMon.tOn, onOffPer.tOn) annotation (Line(points={{-42,-24},{-52,-24}, {-52,14},{-58,14}}, color={0,0,127})); - connect(TunMon.tOff, onOffPer.tOff) annotation (Line(points={{-42,-36},{-56,-36}, + connect(tunMon.tOff, onOffPer.tOff) annotation (Line(points={{-42,-36},{-56,-36}, {-56,6},{-58,6}}, color={0,0,127})); - connect(halPerRatio.TunEnd, TunMon.triEnd) annotation (Line(points={{-2,10},{-10, + connect(halPerRatio.TunEnd, tunMon.triEnd) annotation (Line(points={{-2,10},{-10, 10},{-10,-36},{-18,-36}}, color={255,0,255})); connect(onOffPer.trigger, trigger) annotation (Line(points={{-82,4},{-90,4},{-90, -60},{-120,-60}}, color={255,0,255})); From 933502e87b20f89d387a152e2df03df850e812f4 Mon Sep 17 00:00:00 2001 From: Michael Wetter Date: Wed, 1 Nov 2023 12:19:42 -0700 Subject: [PATCH 127/214] Changed minimum length to 1 ms rather than 0.01 ms, and introduced it as a constant --- .../PIDWithAutotuning/Relay/BaseClasses/TuningMonitor.mo | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/TuningMonitor.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/TuningMonitor.mo index 0c6e8296da8..46cf09705ed 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/TuningMonitor.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/TuningMonitor.mo @@ -1,5 +1,7 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses; block TuningMonitor "Monitor the tuning process" + constant Modelica.Units.SI.Time minHorLen = 1E-3 + "Minimum value for horizon length, used to guard against rounding errors"; Buildings.Controls.OBC.CDL.Interfaces.RealInput tOn( final quantity="Time", final unit="s", @@ -29,7 +31,7 @@ protected Buildings.Controls.OBC.CDL.Reals.Greater gretOnOrtOff "Check if either the length for the On period or the length for the off period are larger than 0" annotation (Placement(transformation(origin = {0, 10}, extent = {{-40, 40}, {-20, 60}}))); - Buildings.Controls.OBC.CDL.Reals.Sources.Constant minLen(final k=1e-5) + Buildings.Controls.OBC.CDL.Reals.Sources.Constant minLen(final k=minHorLen) "Minimum value for the horizon length" annotation (Placement(transformation(extent={{-80,20},{-60,40}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samAddtOntOff @@ -152,4 +154,4 @@ or toff changes after the tuning period starts, as illus \"Automatic Controller Tuning using Relay-based Model Identification.\" Department of Automatic Control, Lund Institute of Technology, Lund University.

                              ")); -end TuningMonitor; \ No newline at end of file +end TuningMonitor; From 05f681eb4fb53f7660fd3dc725a319f1c8f5e710 Mon Sep 17 00:00:00 2001 From: Michael Wetter Date: Wed, 1 Nov 2023 12:36:23 -0700 Subject: [PATCH 128/214] Corrected English and used consistent names --- .../Relay/BaseClasses/HalfPeriodRatio.mo | 10 +++++----- .../Relay/BaseClasses/OnOffPeriod.mo | 16 ++++++++-------- .../Relay/BaseClasses/TuningMonitor.mo | 18 +++++++++--------- .../BaseClasses/Validation/HalfPeriodRatio.mo | 6 +++--- .../BaseClasses/Validation/OnOffPeriod.mo | 4 ++-- .../BaseClasses/Validation/TuningMonitor.mo | 12 ++++++------ .../PIDWithAutotuning/Relay/ResponseProcess.mo | 10 +++++----- .../Relay/Validation/ResponseProcess.mo | 2 +- .../FirstOrderTimedelayed/BaseClasses/Gain.mo | 8 ++++---- .../BaseClasses/TimeConstantDelay.mo | 4 ++-- .../BaseClasses/Validation/Gain.mo | 4 ++-- .../Validation/TimeConstantDelay.mo | 2 +- .../ControlProcessModel.mo | 4 ++-- .../Validation/ControlProcessModel.mo | 4 ++-- 14 files changed, 52 insertions(+), 52 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/HalfPeriodRatio.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/HalfPeriodRatio.mo index 9db8bb29e07..d3a1bda7966 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/HalfPeriodRatio.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/HalfPeriodRatio.mo @@ -5,14 +5,14 @@ block HalfPeriodRatio final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) - "Length for the On period" + "Length for the on period" annotation (Placement(transformation(extent={{-140,60},{-100,100}}), iconTransformation(extent={{-140,40},{-100,80}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput tOff( final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) - "Length for the Off period" + "Length for the off period" annotation (Placement(transformation(extent={{-140,-90},{-100,-50}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanInput TunEnd @@ -34,10 +34,10 @@ protected "Block that samples tOff when the tuning period ends" annotation (Placement(transformation(extent={{-80,-60},{-60,-80}}))); Buildings.Controls.OBC.CDL.Reals.Min mintOntOff - "Block that finds the smaller one between the length for the On period and the length for theoff period" + "Block that finds the smaller one between the length for the on period and the length for the off period" annotation (Placement(transformation(extent={{-20,-30},{0,-10}}))); Buildings.Controls.OBC.CDL.Reals.Max maxtOntOff - "Block that finds the larger one between the length for the On period and the length for theoff period" + "Block that finds the larger one between the length for the on period and the length for the off period" annotation (Placement(transformation(extent={{-20,30},{0,50}}))); Buildings.Controls.OBC.CDL.Reals.Divide halPerRat "Block that calculates the half period ratio" @@ -101,7 +101,7 @@ This block calculates the half-period ratio of the output from a relay controlle

                              where ton and toff are the -lengths of the On period and the Off period, respectively. +lengths of the on period and the off period, respectively. An On period is defined as the period when the relay switch output of the relay controller is true. Likewise, an Off period is defined as the period when the relay switch output is false. diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/OnOffPeriod.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/OnOffPeriod.mo index fd98ab50cba..e4aac2523e0 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/OnOffPeriod.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/OnOffPeriod.mo @@ -1,5 +1,5 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses; -block OnOffPeriod "Calculate the lengths of the On period and the Off period" +block OnOffPeriod "Calculate the lengths of the on period and the off period" Buildings.Controls.OBC.CDL.Interfaces.RealInput tim( final quantity="Time", final unit="s") @@ -18,14 +18,14 @@ block OnOffPeriod "Calculate the lengths of the On period and the Off period" final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) - "Length for the Off period" + "Length for the off period" annotation (Placement(transformation(extent={{100,-60},{140,-20}}), iconTransformation(extent={{100,-60},{140,-20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput tOn( final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) - "Length for the On period" + "Length for the on period" annotation (Placement(transformation(extent={{100,20},{140,60}}))); protected Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler timOn @@ -35,21 +35,21 @@ protected "Simulation time when the input signal becomes off (False)" annotation (Placement(transformation(extent={{-50,-10},{-30,10}}))); Buildings.Controls.OBC.CDL.Reals.Subtract lenOffCal - "Block that calculates the horizon length for the Off period" + "Block that calculates the horizon length for the off period" annotation (Placement(transformation(extent={{10,-50},{30,-30}}))); Buildings.Controls.OBC.CDL.Reals.Subtract lenOnCal - "Block that calculates the horizon length for the On period" + "Block that calculates the horizon length for the on period" annotation (Placement(transformation(extent={{12,30},{32,50}}))); Buildings.Controls.OBC.CDL.Logical.Not not1 "True: the relay output switch to false" annotation (Placement(transformation(extent={{-80,-30},{-60,-10}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.SamplerWithResetThreshold timOnRec( final lowLim=0, final y_reset=0) - "Sampling the On time" + "Sampling the on time" annotation (Placement(transformation(extent={{60,30},{80,50}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.SamplerWithResetThreshold timOffRec( final lowLim=0, final y_reset=0) - "Sampling the Off time" + "Sampling the off time" annotation (Placement(transformation(extent={{60,-50},{80,-30}}))); equation @@ -106,7 +106,7 @@ First implementation
                              ", info="

                              This block processes a relay switch output and calculates the length of -the On period, tOn, and the length of the Off period, tOff, as shown below. +the on period, tOn, and the length of the off period, tOff, as shown below.

                              \"image\" diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/TuningMonitor.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/TuningMonitor.mo index 46cf09705ed..d7323db9585 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/TuningMonitor.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/TuningMonitor.mo @@ -1,19 +1,19 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses; block TuningMonitor "Monitor the tuning process" - constant Modelica.Units.SI.Time minHorLen = 1E-3 + constant Modelica.Units.SI.Time minHorLen = 1E-5 "Minimum value for horizon length, used to guard against rounding errors"; Buildings.Controls.OBC.CDL.Interfaces.RealInput tOn( final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) - "Length for the On period" + "Length for the on period" annotation (Placement(transformation(extent={{-140,60},{-100,100}}), iconTransformation(extent={{-140,40},{-100,80}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput tOff( final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) - "Length for the Off period" + "Length for the off period" annotation (Placement(transformation(extent={{-140,-90},{-100,-50}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput triSta @@ -29,7 +29,7 @@ protected Buildings.Controls.OBC.CDL.Reals.Max tMax "Maximum value of the length for the on and Off period " annotation (Placement(transformation(origin = {0, -10}, extent = {{-80, 60}, {-60, 80}}))); Buildings.Controls.OBC.CDL.Reals.Greater gretOnOrtOff - "Check if either the length for the On period or the length for the off period are larger than 0" + "Check if either the length for the on period or the length for the off period are larger than 0" annotation (Placement(transformation(origin = {0, 10}, extent = {{-40, 40}, {-20, 60}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant minLen(final k=minHorLen) "Minimum value for the horizon length" @@ -38,16 +38,16 @@ protected "Block that samples the tmin when tmin is larger than 0" annotation (Placement(transformation(extent={{-20,-10},{0,10}}))); Buildings.Controls.OBC.CDL.Reals.Greater tInc - "Block that checks if either the length for the On period or the length for theoff period increases after they both becomes positive" + "Block that checks if either the length for the on period or the length for the off period increases after they both become positive" annotation (Placement(transformation(extent={{20,20},{40,40}}))); Buildings.Controls.OBC.CDL.Reals.Add addtOntOff - "Block that calculates the sum of the length for the On period and the length for the Off period" + "Block that calculates the sum of the length for the on period and the length for the off period" annotation (Placement(transformation(extent={{-80,-40},{-60,-20}}))); Buildings.Controls.OBC.CDL.Reals.Less tDec - "Block that checks if either the length for the On period or the length for theoff period decreases after they both becomes positive" + "Block that checks if either the length for the on period or the length for the off period decreases after they both become positive" annotation (Placement(transformation(extent={{20,-40},{40,-20}}))); Buildings.Controls.OBC.CDL.Logical.Or tCha - "Block that checks if the length for the On period or the length for theoff period changes" + "Block that checks if the length for the on period or the length for the off period changes" annotation (Placement(transformation(extent={{50,-10},{70,10}}))); Buildings.Controls.OBC.CDL.Logical.Edge edgTunSta "Detect if the tuning process starts" @@ -62,7 +62,7 @@ protected "Minimum value of the length for the on and Off period" annotation (Placement(transformation(extent={{-80,-80},{-60,-60}}))); Buildings.Controls.OBC.CDL.Reals.Greater gretOnAndtOff - "Check if both the length for the On period and the length for the off period are larger than 0" + "Check if both the length for the on period and the length for the off period are larger than 0" annotation (Placement(transformation(extent={{-40,-80},{-20,-60}}))); equation diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/HalfPeriodRatio.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/HalfPeriodRatio.mo index 8adc7c53ee5..1ad2a66148d 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/HalfPeriodRatio.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/HalfPeriodRatio.mo @@ -20,14 +20,14 @@ model HalfPeriodRatio "Test model for calculating the half period ratio" "Block that generates signals for forming the signal of the length of On period" annotation (Placement(transformation(extent={{-80,60},{-60,80}}))); Buildings.Controls.OBC.CDL.Reals.Add tOn - "The length of the On period" + "The length of the on period" annotation (Placement(transformation(extent={{-34,40},{-14,60}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Pulse tOff( amplitude=-0.5, width=0.7, period=1, offset=0.5) - "The length of the Off period" + "The length of the off period" annotation (Placement(transformation(extent={{-80,-70},{-60,-50}}))); Buildings.Controls.OBC.CDL.Logical.Sources.SampleTrigger samTri(period=1, shift=0.9) "True endi sampling" @@ -82,7 +82,7 @@ Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.HalfPeriodR

                              This testing scenario in this example is the same as that in Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.Validation.TunMonitor. -The lengths of the On period and the Off period are sampled at 0.9s to calculate the half period ratio. +The lengths of the on period and the off period are sampled at 0.9s to calculate the half period ratio.

                              ")); end HalfPeriodRatio; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/OnOffPeriod.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/OnOffPeriod.mo index e088cffd22d..ddbe2db50f0 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/OnOffPeriod.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/OnOffPeriod.mo @@ -1,7 +1,7 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.Validation; -model OnOffPeriod "Test model for calculating the length of the On period and the Off period" +model OnOffPeriod "Test model for calculating the length of the on period and the off period" Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.OnOffPeriod - onOffPer "Calculate the length of the On period and the Off period" + onOffPer "Calculate the length of the on period and the off period" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Buildings.Controls.OBC.CDL.Reals.Sources.ModelTime modTim "Simulation time" diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/TuningMonitor.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/TuningMonitor.mo index a53a8c6c72a..c9d40c50d93 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/TuningMonitor.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/TuningMonitor.mo @@ -16,14 +16,14 @@ model TuningMonitor "Test model for the tuning period management" "Block that generates signals for forming the signal of the length of On period" annotation (Placement(transformation(extent={{-80,60},{-60,80}}))); Buildings.Controls.OBC.CDL.Reals.Add tOn - "The length of the On period" + "The length of the on period" annotation (Placement(transformation(extent={{-34,40},{-14,60}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Pulse tOff( amplitude=-0.5, width=0.7, period=1, offset=0.5) - "The length of the Off period" + "The length of the off period" annotation (Placement(transformation(extent={{-80,-40},{-60,-20}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.TuningMonitor tunMan "Manage the tuning process" @@ -89,15 +89,15 @@ Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.TuningMonit

                              • -At 0.1s, the length of the On period becomes 0.1s, +At 0.1s, the length of the on period becomes 0.1s, triggering the training period to start.
                              • -At 0.7s, the length of the Off period becomes 0.5s. +At 0.7s, the length of the off period becomes 0.5s.
                              • -At 0.9s, the length of the On period changes from 0.1s to 0.9s -while that of the Off period remains 0.5s. +At 0.9s, the length of the on period changes from 0.1s to 0.9s +while that of the off period remains 0.5s. This triggers the tuning period to end.
                              diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo index 18d36f60e3b..029e0622c1d 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo @@ -23,13 +23,13 @@ block ResponseProcess final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) - "Length of the On period" + "Length of the on period" annotation (Placement(transformation(extent={{100,60},{140,100}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput tOff( final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) - "Length of the Off period" + "Length of the off period" annotation (Placement(transformation(extent={{100,20},{140,60}}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput triSta "True: the tuning starts" @@ -44,7 +44,7 @@ block ResponseProcess protected Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.OnOffPeriod onOffPer - "Block that calculates the length of the On period and the Off period" + "Block that calculates the length of the on period and the off period" annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.HalfPeriodRatio halPerRatio "Block that calculates the half period ratio" @@ -124,10 +124,10 @@ This block processes a relay switch output signal and calculates:

                              1. -the length of the On period; +the length of the on period;
                              2. -the length of the Off period; +the length of the off period;
                              3. the normalized time delay of the responses; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mo index 22853711572..5d859824c89 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mo @@ -3,7 +3,7 @@ model ResponseProcess "Test model for processing the response of a relay control Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.ResponseProcess resPro( final yHig=1, final yLow=0.2) - "Calculate the length of the On period and the Off period" + "Calculate the length of the on period and the off period" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Buildings.Controls.OBC.CDL.Reals.Sources.ModelTime modTim "Simulation time" diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Gain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Gain.mo index c71a190c4ed..c293960ad99 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Gain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Gain.mo @@ -12,14 +12,14 @@ block Gain "Identify the gain of a first order time delayed model" final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) - "Length for the On period" + "Length for the on period" annotation (Placement(transformation(extent={{-140,-40},{-100,0}}), iconTransformation(extent={{-140,-20},{-100,20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput tOff( final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) - "Length for the Off period" + "Length for the off period" annotation (Placement(transformation(extent={{-140,-100},{-100,-60}}), iconTransformation(extent={{-140,-100},{-100,-60}}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanInput triSta @@ -116,8 +116,8 @@ Iu = ton (yhig - yref)+ toffyhig and ylow are the higher value and the lower value of the relay control output, respectively. yref is the reference value of the relay output. -ton and toff are the length of the On -period and the Off period, respectively. +ton and toff are the length of the on +period and the off period, respectively.

                                During an On period, the relay switch signal becomes true. diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/TimeConstantDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/TimeConstantDelay.mo index 320ae3fd071..657baa73673 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/TimeConstantDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/TimeConstantDelay.mo @@ -11,7 +11,7 @@ block TimeConstantDelay final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) - "Length for the On period" + "Length for the on period" annotation (Placement(transformation(extent={{-140,56},{-100,96}}), iconTransformation(extent={{-140,40},{-100,80}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput k @@ -162,7 +162,7 @@ T = ton/(ln((δ/|k|-yhig+exp(τ/(1 - τ))(y where yhig and ylow are the higher value and the lower value of the relay control output, respectively. -ton is the length of the On period. +ton is the length of the on period. δ is the dead band of a relay controller. k is the gain of the first-order time delayed model. τ is the normalized time delay. diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/Gain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/Gain.mo index e36e65ba184..d4251ecb888 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/Gain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/Gain.mo @@ -16,14 +16,14 @@ model Gain "Test model for identifying the gain of the control process" width=0.1, period=1, offset=0.1) - "The length of the On period" + "The length of the on period" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Pulse tOff( amplitude=-0.7, width=0.8, period=1, offset=0.7) - "The length of the Off period" + "The length of the off period" annotation (Placement(transformation(extent={{-60,-50},{-40,-30}}))); Buildings.Controls.OBC.CDL.Logical.Sources.Pulse tunSta( width=0.9, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/TimeConstantDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/TimeConstantDelay.mo index 1b8ea125a3e..b4a38577532 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/TimeConstantDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/TimeConstantDelay.mo @@ -12,7 +12,7 @@ model TimeConstantDelay "Test model for identifying the the time constant and th width=0.1, period=1, offset=0.1) - "The length of the On period" + "The length of the on period" annotation (Placement(transformation(extent={{-60,30},{-40,50}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Pulse ratioLT( amplitude=-0.1, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo index 271a3941e5b..b4c1497b8ae 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo @@ -11,14 +11,14 @@ block ControlProcessModel final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) - "Length for the On period" + "Length for the on period" annotation (Placement(transformation(extent={{-140,20},{-100,60}}), iconTransformation(extent={{-140,20},{-100,60}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput tOff( final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) - "Length for the Off period" + "Length for the off period" annotation (Placement(transformation(extent={{-140,-40},{-100,0}}), iconTransformation(extent={{-140,-60},{-100,-20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput tau( diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo index afaa9d11fb3..08a1f4072b8 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo @@ -17,14 +17,14 @@ model ControlProcessModel width=0.1, period=1, offset=0.1) - "The length of the On period" + "The length of the on period" annotation (Placement(transformation(extent={{-80,42},{-60,62}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Pulse tOff( amplitude=-0.7, width=0.8, period=1, offset=0.7) - "The length of the Off period" + "The length of the off period" annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); Buildings.Controls.OBC.CDL.Logical.Sources.Pulse tunSta( width=0.9, From 74dc25da6d6b13d9aa42fada8004d3700fdb3b8d Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Wed, 1 Nov 2023 14:56:44 -0700 Subject: [PATCH 129/214] improved real comparison to avoid results difference between dymola and om --- .../Relay/BaseClasses/TuningMonitor.mo | 161 ++++++++++-------- 1 file changed, 87 insertions(+), 74 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/TuningMonitor.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/TuningMonitor.mo index d7323db9585..e5bb64a041e 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/TuningMonitor.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/TuningMonitor.mo @@ -7,118 +7,131 @@ block TuningMonitor "Monitor the tuning process" final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Length for the on period" - annotation (Placement(transformation(extent={{-140,60},{-100,100}}), + annotation (Placement(transformation(extent={{-200,60},{-160,100}}), iconTransformation(extent={{-140,40},{-100,80}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput tOff( final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Length for the off period" - annotation (Placement(transformation(extent={{-140,-90},{-100,-50}}), + annotation (Placement(transformation(extent={{-200,-100},{-160,-60}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput triSta "A boolean signal, true if the tuning starts" - annotation (Placement(transformation(extent={{100,40},{140,80}}), + annotation (Placement(transformation(extent={{160,40},{200,80}}), iconTransformation(extent={{100,40},{140,80}}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput triEnd "A boolean signal, true if the tuning completes" - annotation (Placement(transformation(extent={{100,-80},{140,-40}}), + annotation (Placement(transformation(extent={{160,-20},{200,20}}), iconTransformation(extent={{100,-80},{140,-40}}))); protected - Buildings.Controls.OBC.CDL.Reals.Max tMax "Maximum value of the length for the on and Off period " - annotation (Placement(transformation(origin = {0, -10}, extent = {{-80, 60}, {-60, 80}}))); - Buildings.Controls.OBC.CDL.Reals.Greater gretOnOrtOff + Buildings.Controls.OBC.CDL.Reals.Max tMax + "Maximum value of the length for the on and Off period " + annotation (Placement(transformation(origin={-50,-10}, extent = {{-80, 60}, {-60, 80}}))); + Buildings.Controls.OBC.CDL.Reals.Greater greThr "Check if either the length for the on period or the length for the off period are larger than 0" - annotation (Placement(transformation(origin = {0, 10}, extent = {{-40, 40}, {-20, 60}}))); - Buildings.Controls.OBC.CDL.Reals.Sources.Constant minLen(final k=minHorLen) + annotation (Placement(transformation(origin={-40,10}, extent = {{-40, 40}, {-20, 60}}))); + Buildings.Controls.OBC.CDL.Reals.Sources.Constant minLen( + final k=minHorLen) "Minimum value for the horizon length" - annotation (Placement(transformation(extent={{-80,20},{-60,40}}))); + annotation (Placement(transformation(extent={{-140,90},{-120,110}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samAddtOntOff - "Block that samples the tmin when tmin is larger than 0" - annotation (Placement(transformation(extent={{-20,-10},{0,10}}))); + "Sample the minimum period when the minimum period is greater than 0" + annotation (Placement(transformation(extent={{-40,-20},{-20,0}}))); Buildings.Controls.OBC.CDL.Reals.Greater tInc - "Block that checks if either the length for the on period or the length for the off period increases after they both become positive" - annotation (Placement(transformation(extent={{20,20},{40,40}}))); + "Check if either the length for the on period or the length for the off period increases after they both become positive" + annotation (Placement(transformation(extent={{40,20},{60,40}}))); Buildings.Controls.OBC.CDL.Reals.Add addtOntOff "Block that calculates the sum of the length for the on period and the length for the off period" - annotation (Placement(transformation(extent={{-80,-40},{-60,-20}}))); - Buildings.Controls.OBC.CDL.Reals.Less tDec - "Block that checks if either the length for the on period or the length for the off period decreases after they both become positive" - annotation (Placement(transformation(extent={{20,-40},{40,-20}}))); + annotation (Placement(transformation(extent={{-130,-20},{-110,0}}))); + Buildings.Controls.OBC.CDL.Reals.Greater tDec + "Check if either the length for the on period or the length for the off period decreases after they both become positive" + annotation (Placement(transformation(extent={{40,-70},{60,-50}}))); Buildings.Controls.OBC.CDL.Logical.Or tCha "Block that checks if the length for the on period or the length for the off period changes" - annotation (Placement(transformation(extent={{50,-10},{70,10}}))); + annotation (Placement(transformation(extent={{80,-10},{100,10}}))); Buildings.Controls.OBC.CDL.Logical.Edge edgTunSta "Detect if the tuning process starts" - annotation (Placement(transformation(extent={{60,50},{80,70}}))); + annotation (Placement(transformation(extent={{120,50},{140,70}}))); Buildings.Controls.OBC.CDL.Logical.Edge edgTunEnd "Detect if the tuning process ends" - annotation (Placement(transformation(extent={{60,-70},{80,-50}}))); + annotation (Placement(transformation(extent={{120,-10},{140,10}}))); Buildings.Controls.OBC.CDL.Reals.Multiply mul "Calculate the product of two inputs" - annotation (Placement(transformation(extent={{-40,-40},{-20,-20}}))); + annotation (Placement(transformation(extent={{-80,-20},{-60,0}}))); Buildings.Controls.OBC.CDL.Reals.Min tMin "Minimum value of the length for the on and Off period" - annotation (Placement(transformation(extent={{-80,-80},{-60,-60}}))); - Buildings.Controls.OBC.CDL.Reals.Greater gretOnAndtOff + annotation (Placement(transformation(extent={{-130,-90},{-110,-70}}))); + Buildings.Controls.OBC.CDL.Reals.Greater greThr1 "Check if both the length for the on period and the length for the off period are larger than 0" - annotation (Placement(transformation(extent={{-40,-80},{-20,-60}}))); + annotation (Placement(transformation(extent={{-80,-90},{-60,-70}}))); + Buildings.Controls.OBC.CDL.Reals.Subtract sub "Find the input difference" + annotation (Placement(transformation(extent={{0,20},{20,40}}))); + Buildings.Controls.OBC.CDL.Reals.Subtract sub1 "Find the input difference" + annotation (Placement(transformation(extent={{0,-70},{20,-50}}))); equation - connect(tMax.u1, tOn) annotation (Line(points={{-82,66},{-94,66},{-94,80},{ - -120,80}}, color={0,0,127})); - connect(tMax.u2, tOff) annotation (Line(points={{-82,54},{-90,54},{-90,-70},{ - -120,-70}}, color={0,0,127})); - connect(minLen.y, gretOnOrtOff.u2) annotation (Line(points={{-58,30},{-50,30}, - {-50,52},{-42,52}}, color={0,0,127})); - connect(samAddtOntOff.y, tInc.u2) annotation (Line(points={{2,0},{10,0},{10,22}, - {18,22}}, color={0,0,127})); - connect(addtOntOff.u2, tOff) annotation (Line(points={{-82,-36},{-90,-36},{ - -90,-70},{-120,-70}}, - color={0,0,127})); - connect(addtOntOff.u1, tOn) annotation (Line(points={{-82,-24},{-94,-24},{-94, - 80},{-120,80}}, color={0,0,127})); - connect(tCha.u1, tInc.y) - annotation (Line(points={{48,0},{42,0},{42,30}}, + connect(tMax.u1, tOn) annotation (Line(points={{-132,66},{-150,66},{-150,80},{ + -180,80}}, color={0,0,127})); + connect(tMax.u2, tOff) annotation (Line(points={{-132,54},{-140,54},{-140,-80}, + {-180,-80}},color={0,0,127})); + connect(addtOntOff.u2, tOff) annotation (Line(points={{-132,-16},{-140,-16},{-140, + -80},{-180,-80}}, color={0,0,127})); + connect(addtOntOff.u1, tOn) annotation (Line(points={{-132,-4},{-150,-4},{-150, + 80},{-180,80}}, color={0,0,127})); + connect(edgTunSta.y, triSta) annotation (Line(points={{142,60},{180,60}}, + color={255,0,255})); + connect(tCha.y, edgTunEnd.u) annotation (Line(points={{102,0},{118,0}}, color={255,0,255})); - connect(samAddtOntOff.y, tDec.u2) annotation (Line(points={{2,0},{10,0},{10,-38}, - {18,-38}}, color={0,0,127})); - connect(gretOnOrtOff.u1, tMax.y) annotation (Line(points={{-42,60},{-58, 60}}, color={0,0,127})); - connect(tDec.y, tCha.u2) annotation (Line(points={{42,-30},{42,-8},{48,-8}}, - color={255,0,255})); - connect(edgTunSta.y, triSta) annotation (Line(points={{82,60},{88,60},{88,60}, - {120,60}}, color={255,0,255})); - connect(tCha.y, edgTunEnd.u) annotation (Line(points={{72,0},{80,0},{80,-40},{ - 52,-40},{52,-60},{58,-60}}, color={255,0,255})); - connect(edgTunEnd.y, triEnd) annotation (Line(points={{82,-60},{92,-60},{92,-60}, - {120,-60}}, color={255,0,255})); - connect(tMin.u1, tOn) annotation (Line(points={{-82,-64},{-94,-64},{-94,80},{-120, - 80}}, color={0,0,127})); - connect(tMin.u2, tOff) annotation (Line(points={{-82,-76},{-90,-76},{-90,-70}, - {-120,-70}}, color={0,0,127})); - connect(tMin.y, gretOnAndtOff.u1) - annotation (Line(points={{-58,-70},{-42,-70}}, color={0,0,127})); - connect(gretOnAndtOff.u2, minLen.y) annotation (Line(points={{-42,-78},{-50, - -78},{-50,30},{-58,30}}, color={0,0,127})); - connect(gretOnOrtOff.y, edgTunSta.u) annotation (Line(points={{-18, 60},{58,60}},color={255,0,255})); - connect(gretOnAndtOff.y, samAddtOntOff.trigger) annotation (Line(points={{-18, - -70},{-10,-70},{-10,-12}}, color={255,0,255})); - connect(addtOntOff.y, mul.u1) annotation (Line(points={{-58,-30},{-54,-30},{-54, - -24},{-42,-24}}, color={0,0,127})); - connect(mul.u2, tMin.y) annotation (Line(points={{-42,-36},{-54,-36},{-54,-70}, - {-58,-70}}, color={0,0,127})); - connect(mul.y, tDec.u1) - annotation (Line(points={{-18,-30},{18,-30}}, color={0,0,127})); - connect(tInc.u1, mul.y) annotation (Line(points={{18,30},{6,30},{6,-30},{-18,-30}}, - color={0,0,127})); - connect(samAddtOntOff.u, mul.y) annotation (Line(points={{-22,0},{-32,0},{-32, - -14},{-14,-14},{-14,-30},{-18,-30}}, color={0,0,127})); - + connect(edgTunEnd.y, triEnd) annotation (Line(points={{142,0},{180,0}}, + color={255,0,255})); + connect(tMin.u1, tOn) annotation (Line(points={{-132,-74},{-150,-74},{-150,80}, + {-180,80}}, color={0,0,127})); + connect(tMin.u2, tOff) annotation (Line(points={{-132,-86},{-140,-86},{-140,-80}, + {-180,-80}}, color={0,0,127})); + connect(greThr.y, edgTunSta.u) + annotation (Line(points={{-58,60},{118,60}}, color={255,0,255})); + connect(greThr1.y, samAddtOntOff.trigger) annotation (Line(points={{-58,-80},{ + -30,-80},{-30,-22}}, color={255,0,255})); + connect(addtOntOff.y, mul.u1) annotation (Line(points={{-108,-10},{-100,-10},{ + -100,-4},{-82,-4}}, color={0,0,127})); + connect(mul.u2, tMin.y) annotation (Line(points={{-82,-16},{-100,-16},{-100,-80}, + {-108,-80}},color={0,0,127})); + connect(samAddtOntOff.u, mul.y) annotation (Line(points={{-42,-10},{-58,-10}}, + color={0,0,127})); + connect(tInc.y, tCha.u1) annotation (Line(points={{62,30},{70,30},{70,0},{78,0}}, + color={255,0,255})); + connect(tDec.y, tCha.u2) annotation (Line(points={{62,-60},{70,-60},{70,-8},{78, + -8}}, color={255,0,255})); + connect(samAddtOntOff.y, sub.u2) annotation (Line(points={{-18,-10},{-10,-10}, + {-10,24},{-2,24}}, color={0,0,127})); + connect(mul.y, sub.u1) annotation (Line(points={{-58,-10},{-50,-10},{-50,36},{ + -2,36}}, color={0,0,127})); + connect(samAddtOntOff.y, sub1.u1) annotation (Line(points={{-18,-10},{-10,-10}, + {-10,-54},{-2,-54}}, color={0,0,127})); + connect(mul.y, sub1.u2) annotation (Line(points={{-58,-10},{-50,-10},{-50,-66}, + {-2,-66}}, color={0,0,127})); + connect(tMax.y, greThr.u1) + annotation (Line(points={{-108,60},{-82,60}}, color={0,0,127})); + connect(tMin.y, greThr1.u1) + annotation (Line(points={{-108,-80},{-82,-80}}, color={0,0,127})); + connect(minLen.y, greThr.u2) annotation (Line(points={{-118,100},{-90,100},{-90, + 52},{-82,52}}, color={0,0,127})); + connect(minLen.y, greThr1.u2) annotation (Line(points={{-118,100},{-90,100},{-90, + -88},{-82,-88}}, color={0,0,127})); + connect(sub.y, tInc.u1) + annotation (Line(points={{22,30},{38,30}}, color={0,0,127})); + connect(sub1.y, tDec.u1) + annotation (Line(points={{22,-60},{38,-60}}, color={0,0,127})); + connect(minLen.y, tInc.u2) annotation (Line(points={{-118,100},{30,100},{30,22}, + {38,22}}, color={0,0,127})); + connect(minLen.y, tDec.u2) annotation (Line(points={{-118,100},{30,100},{30,-68}, + {38,-68}}, color={0,0,127})); annotation (defaultComponentName = "tunMon", Diagram( coordinateSystem( - extent={{-100,-100},{100,100}})), + extent={{-160,-120},{160,120}})), Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{100, 100}}), graphics={ Rectangle( From ca7da6afafa3dc928d27c1c7ebbd0c571dfbbc18 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Mon, 27 Nov 2023 21:30:21 -0500 Subject: [PATCH 130/214] add supports for direct acting --- .../PIDWithAutotuning/FirstOrderAMIGO.mo | 4 +- .../PIDWithAutotuning/Relay/Controller.mo | 40 +++-- .../DirectActingPIDWithFirstOrderAMIGO.mo | 150 ++++++++++++++++++ .../DirectActingPIWithFirstOrderAMIGO.mo | 150 ++++++++++++++++++ .../Validation/PIDWithFirstOrderAMIGO.mo | 5 +- .../Validation/PIWithFirstOrderAMIGO.mo | 2 +- .../Validation/package.order | 2 + ...ion_DirectActingPIDWithFirstOrderAMIGO.txt | 19 +++ ...tion_DirectActingPIWithFirstOrderAMIGO.txt | 18 +++ ...ning_Validation_PIDWithFirstOrderAMIGO.txt | 14 +- ...uning_Validation_PIWithFirstOrderAMIGO.txt | 12 +- .../DirectActingPIDWithFirstOrderAMIGO.mos | 9 ++ .../DirectActingPIWithFirstOrderAMIGO.mos | 8 + ...ion.DirectActingPIDWithFirstOrderAMIGO.mos | 13 ++ ...tion.DirectActingPIWithFirstOrderAMIGO.mos | 12 ++ 15 files changed, 430 insertions(+), 28 deletions(-) create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIDWithFirstOrderAMIGO.mo create mode 100644 Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIWithFirstOrderAMIGO.mo create mode 100644 Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_DirectActingPIDWithFirstOrderAMIGO.txt create mode 100644 Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_DirectActingPIWithFirstOrderAMIGO.txt create mode 100644 Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIDWithFirstOrderAMIGO.mos create mode 100644 Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIWithFirstOrderAMIGO.mos create mode 100644 Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.DirectActingPIDWithFirstOrderAMIGO.mos create mode 100644 Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.DirectActingPIWithFirstOrderAMIGO.mos diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index bd07f39f720..dcd782c19e0 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -93,7 +93,9 @@ block FirstOrderAMIGO Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Controller rel( final yHig=yHig, final yLow=yLow, - final deaBan=deaBan) "Relay controller" + final deaBan=deaBan, + reverseActing=reverseActing) + "Relay controller" annotation (Placement(transformation(extent={{-40,30},{-20,50}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.ResponseProcess resPro( final yHig=yHig - yRef, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo index 76e816758dd..b3020a924bc 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo @@ -7,6 +7,9 @@ block Controller "Lower value for the output"; parameter Real deaBan(min=1E-6) = 0.5 "Deadband for holding the output value"; + parameter Boolean reverseActing=true + "Set to true for reverse acting, or false for direct acting control action"; + Buildings.Controls.OBC.CDL.Interfaces.RealInput u_s "Setpoint input signal" annotation (Placement(transformation(extent={{-140,-20},{-100,20}}), @@ -63,8 +66,6 @@ initial equation equation connect(swi.y, y) annotation (Line(points={{82,0},{88,0},{88,60},{120,60}}, color={0,0,127})); - connect(greMeaSet.reference, u_s) - annotation (Line(points={{-2,6},{-40,6},{-40,0},{-120,0}}, color={0,0,127})); connect(higVal.y, swi.u1) annotation (Line(points={{22,60},{40,60},{40,8},{58,8}},color={0,0,127})); connect(lowVal.y, swi.u3) annotation (Line(points={{22,-40},{40,-40},{40,-8},{ @@ -75,18 +76,33 @@ equation color={0,0,127})); connect(greMeaSet.y, swi.u2) annotation (Line(points={{22,0},{58,0}},color={255,0,255})); - connect(conErr.u2, u_s) annotation (Line(points={{-62,14},{-90,14},{-90,0},{-120, - 0}}, color={0,0,127})); connect(swi1.u3, u_s) annotation (Line(points={{-62,-58},{-90,-58},{-90,0},{-120, 0}}, color={0,0,127})); - connect(swi1.y, greMeaSet.u) annotation (Line(points={{-38,-50},{-20,-50},{-20, - -6},{-2,-6}}, color={0,0,127})); - connect(swi1.y, conErr.u1) annotation (Line(points={{-38,-50},{-20,-50},{-20,-6}, - {-70,-6},{-70,26},{-62,26}}, color={0,0,127})); + connect(trigger, swi1.u2) annotation (Line(points={{-80,-120},{-80,-50},{-62,-50}}, color={255,0,255})); connect(u_m, swi1.u1) annotation (Line(points={{0,-120},{0,-80},{-70,-80},{-70, -42},{-62,-42}}, color={0,0,127})); + connect(swi1.y, conErr.u1) annotation (Line(points={{-38,-50},{-20,-50},{-20,-6}, + {-70,-6},{-70,26},{-62,26}}, color={0,0,127})); + connect(conErr.u2, u_s) annotation (Line(points={{-62,14},{-90,14},{-90,0},{-120, + 0}}, color={0,0,127})); + if reverseActing then + + connect(greMeaSet.reference, u_s) + annotation (Line(points={{-2,6},{-40,6},{-40,0},{-120,0}}, color={0,0,127})); + connect(swi1.y, greMeaSet.u) annotation (Line(points={{-38,-50},{-20,-50},{-20, + -6},{-2,-6}}, color={0,0,127})); + + else + + connect(greMeaSet.reference, swi1.y) + annotation (Line(points={{-2,6},{-40,6},{-40,-50},{-38,-50}}, + color={0,0,127})); + connect(u_s, greMeaSet.u) annotation (Line(points={{-120,0},{-20,0},{-20,-6}, + {-2,-6}}, color={0,0,127})); + + end if; annotation (defaultComponentName = "relCon", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( @@ -131,15 +147,17 @@ boolean relay switch output yOn, and the control error

                                • -yErr = u_s - u_m, +yErr = u_m - u_s,
                                • if yErr < -deaBan and trigger is true, -then y = yHig, yOn = true, +then y = yHig (-yLow if the parameter reverseActing = false), yOn = true + (false if the reverseActing = false),
                                • if yErr > deaBan and trigger is true, -then y = -yLow, yOn = false, +then y = -yLow (yHig if the reverseActing = false), +yOn = false (true if the reverseActing = false),
                                • else, y and yOn are kept as the initial values, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIDWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIDWithFirstOrderAMIGO.mo new file mode 100644 index 00000000000..986a1ddf0f2 --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIDWithFirstOrderAMIGO.mo @@ -0,0 +1,150 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation; +model DirectActingPIDWithFirstOrderAMIGO + "Test model for an autotuning reversed PID controller" + Buildings.Controls.OBC.CDL.Reals.Sources.Constant SetPoint(k=0.8) + "Setpoint value" + annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.FirstOrderAMIGO PIDWitTun( + controllerType=Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PID, + reverseActing=false) "PID controller with an autotuning feature" + annotation (Placement(transformation(extent={{-20,-30},{0,-10}}))); + Buildings.Controls.OBC.CDL.Reals.PIDWithReset PID( + controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PID, + k=1, + Ti=0.5, + Td=0.1, + reverseActing=false) "PID controller with constant gains" + annotation (Placement(transformation(extent={{-20,50},{0,70}}))); + Buildings.Controls.OBC.CDL.Logical.Sources.Constant resSig(k=false) + "Reset signal" + annotation (Placement(transformation(extent={{-80,60},{-60,80}}))); + Buildings.Controls.OBC.CDL.Discrete.UnitDelay uniDel2(samplePeriod=240) + "A delay process for control process 2" + annotation (Placement(transformation(extent={{38,-30},{58,-10}}))); + Buildings.Controls.OBC.CDL.Discrete.UnitDelay uniDel1(samplePeriod=240) + "A delay process for control process 1" + annotation (Placement(transformation(extent={{50,50},{70,70}}))); + Buildings.Controls.OBC.CDL.Reals.Sources.Constant k(k=10) + "Gain of the first order process" + annotation (Placement(transformation(extent={{32,10},{52,30}}))); + Buildings.Controls.OBC.CDL.Reals.Sources.Constant T(k=10) + "Time constant of the first order process" + annotation (Placement(transformation(extent={{10,-66},{30,-46}}))); + Buildings.Controls.OBC.CDL.Reals.Subtract sub1 + "A subtract block that is used to mimic the first order process 1" + annotation (Placement(transformation(extent={{134,70},{154,90}}))); + Buildings.Controls.OBC.CDL.Reals.Subtract sub2 + "A subtract block that is used to mimic the first order process 2" + annotation (Placement(transformation(extent={{134,-20},{154,0}}))); + Buildings.Controls.OBC.CDL.Reals.Derivative derivative1 + "A derivative block that is used to mimic the first order process 1" + annotation (Placement(transformation(extent={{94,10},{114,30}}))); + Buildings.Controls.OBC.CDL.Reals.Derivative derivative2 + "A derivative block that is used to mimic the first order process 2" + annotation (Placement(transformation(extent={{80,-70},{100,-50}}))); + Buildings.Controls.OBC.CDL.Logical.Sources.Pulse autTunSig( + width=0.9, + period=6000, + shift=500) "Signal for enabling the autotuning" + annotation (Placement(transformation(extent={{-80,-60},{-60,-40}}))); + Buildings.Controls.OBC.CDL.Reals.Subtract sub3 + "A subtract block that is used to mimic the direct acting in the first order process 1" + annotation (Placement(transformation(extent={{14,50},{34,70}}))); + Buildings.Controls.OBC.CDL.Reals.Sources.Constant const(k=1) + "constant value 1" + annotation (Placement(transformation(extent={{-40,110},{-20,130}}))); + Buildings.Controls.OBC.CDL.Reals.Subtract sub4 + "A subtract block that is used to mimic the direct acting in the first order process 2" + annotation (Placement(transformation(extent={{12,-30},{32,-10}}))); +equation + connect(resSig.y, PID.trigger) annotation (Line(points={{-58,70},{-30,70},{-30, + 40},{-16,40},{-16,48}}, color={255,0,255})); + connect(PIDWitTun.triRes, PID.trigger) annotation (Line(points={{-16,-32},{-16, + -38},{-30,-38},{-30,40},{-16,40},{-16,48}}, color={255,0,255})); + connect(PIDWitTun.u_s, PID.u_s) annotation (Line(points={{-22,-20},{-48,-20}, + {-48,60},{-22,60}}, color={0,0,127})); + connect(SetPoint.y, PID.u_s) annotation (Line(points={{-58,10},{-48,10},{-48,60}, + {-22,60}}, color={0,0,127})); + connect(uniDel1.y, sub1.u1) annotation (Line(points={{72,60},{86,60},{86,86}, + {132,86}}, + color={0,0,127})); + connect(k.y, derivative1.k) annotation (Line(points={{54,20},{58,20},{58,28},{ + 92,28}}, color={0,0,127})); + connect(derivative1.T, T.y) annotation (Line(points={{92,24},{74,24},{74,-56}, + {32,-56}}, color={0,0,127})); + connect(derivative1.y, sub1.u2) annotation (Line(points={{116,20},{126,20},{ + 126,74},{132,74}}, + color={0,0,127})); + connect(sub1.y, PID.u_m) annotation (Line(points={{156,80},{164,80},{164,40}, + {-10,40},{-10,48}}, color={0,0,127})); + connect(sub2.u1, uniDel2.y) annotation (Line(points={{132,-4},{64,-4},{64,-20}, + {60,-20}}, color={0,0,127})); + connect(derivative2.y,sub2. u2) annotation (Line(points={{102,-60},{110,-60}, + {110,-16},{132,-16}}, + color={0,0,127})); + connect(sub2.y, PIDWitTun.u_m) annotation (Line(points={{156,-10},{156,-36},{ + -10,-36},{-10,-32}}, color={0,0,127})); + connect(derivative2.T, T.y) annotation (Line(points={{78,-56},{32,-56}}, + color={0,0,127})); + connect(derivative1.u, sub1.u1) annotation (Line(points={{92,20},{86,20},{86, + 86},{132,86}}, color={0,0,127})); + connect(derivative2.u, uniDel2.y) annotation (Line(points={{78,-60},{64,-60},{ + 64,-20},{60,-20}}, color={0,0,127})); + connect(autTunSig.y, PIDWitTun.triTun) + annotation (Line(points={{-58,-50},{-4,-50},{-4,-32}}, color={255,0,255})); + connect(k.y, derivative2.k) annotation (Line(points={{54,20},{68,20},{68,-52}, + {78,-52}}, color={0,0,127})); + connect(const.y, sub3.u1) annotation (Line(points={{-18,120},{4,120},{4,66},{ + 12,66}}, color={0,0,127})); + connect(PID.y, sub3.u2) + annotation (Line(points={{2,60},{6,60},{6,54},{12,54}}, color={0,0,127})); + connect(sub3.y, uniDel1.u) + annotation (Line(points={{36,60},{48,60}}, color={0,0,127})); + connect(PIDWitTun.y, sub4.u2) annotation (Line(points={{2,-20},{8,-20},{8,-26}, + {10,-26}}, color={0,0,127})); + connect(uniDel2.u, sub4.y) + annotation (Line(points={{36,-20},{34,-20}}, color={0,0,127})); + connect(sub4.u1, const.y) annotation (Line(points={{10,-14},{4,-14},{4,120},{-18, + 120}}, color={0,0,127})); + annotation ( + experiment( + StopTime=10000, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIDWithFirstOrderAMIGO.mos" "Simulate and plot"), + Documentation( + info=" +

                                  +Validation test for the block + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.FirstOrderAMIGO. +

                                  +

                                  +This example is similar as +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIDWithFirstOrderAMIGO. +However, PI controllers with direct acting are considered. +

                                  +", + revisions=" +
                                    +
                                  • +June 1, 2022, by Sen Huang:
                                    +First implementation
                                    +
                                  • +
                                  +"), + Icon( + 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(extent={{-100,-80},{200,140}}))); +end DirectActingPIDWithFirstOrderAMIGO; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIWithFirstOrderAMIGO.mo new file mode 100644 index 00000000000..d3b25cd429b --- /dev/null +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIWithFirstOrderAMIGO.mo @@ -0,0 +1,150 @@ +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation; +model DirectActingPIWithFirstOrderAMIGO + "Test model for an autotuning reversed PID controller with direct acting" + Buildings.Controls.OBC.CDL.Reals.Sources.Constant SetPoint(k=0.8) + "Setpoint value" + annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.FirstOrderAMIGO PIWitTun( + controllerType=Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PID, + reverseActing=false) "PI controller with an autotuning feature" + annotation (Placement(transformation(extent={{-20,-30},{0,-10}}))); + Buildings.Controls.OBC.CDL.Reals.PIDWithReset PI( + controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PID, + k=1, + Ti=0.5, + Td=0.1, + reverseActing=false) "PI controller with constant gains" + annotation (Placement(transformation(extent={{-20,50},{0,70}}))); + Buildings.Controls.OBC.CDL.Logical.Sources.Constant resSig(k=false) + "Reset signal" + annotation (Placement(transformation(extent={{-80,60},{-60,80}}))); + Buildings.Controls.OBC.CDL.Discrete.UnitDelay uniDel2(samplePeriod=240) + "A delay process for control process 2" + annotation (Placement(transformation(extent={{38,-30},{58,-10}}))); + Buildings.Controls.OBC.CDL.Discrete.UnitDelay uniDel1(samplePeriod=240) + "A delay process for control process 1" + annotation (Placement(transformation(extent={{50,50},{70,70}}))); + Buildings.Controls.OBC.CDL.Reals.Sources.Constant k(k=10) + "Gain of the first order process" + annotation (Placement(transformation(extent={{32,10},{52,30}}))); + Buildings.Controls.OBC.CDL.Reals.Sources.Constant T(k=10) + "Time constant of the first order process" + annotation (Placement(transformation(extent={{10,-66},{30,-46}}))); + Buildings.Controls.OBC.CDL.Reals.Subtract sub1 + "A subtract block that is used to mimic the first order process 1" + annotation (Placement(transformation(extent={{134,70},{154,90}}))); + Buildings.Controls.OBC.CDL.Reals.Subtract sub2 + "A subtract block that is used to mimic the first order process 2" + annotation (Placement(transformation(extent={{134,-20},{154,0}}))); + Buildings.Controls.OBC.CDL.Reals.Derivative derivative1 + "A derivative block that is used to mimic the first order process 1" + annotation (Placement(transformation(extent={{94,10},{114,30}}))); + Buildings.Controls.OBC.CDL.Reals.Derivative derivative2 + "A derivative block that is used to mimic the first order process 2" + annotation (Placement(transformation(extent={{80,-70},{100,-50}}))); + Buildings.Controls.OBC.CDL.Logical.Sources.Pulse autTunSig( + width=0.9, + period=6000, + shift=500) "Signal for enabling the autotuning" + annotation (Placement(transformation(extent={{-80,-60},{-60,-40}}))); + Buildings.Controls.OBC.CDL.Reals.Subtract sub3 + "A subtract block that is used to mimic the direct acting in the first order process 1" + annotation (Placement(transformation(extent={{14,50},{34,70}}))); + Buildings.Controls.OBC.CDL.Reals.Sources.Constant const(k=1) + "constant value 1" + annotation (Placement(transformation(extent={{-40,110},{-20,130}}))); + Buildings.Controls.OBC.CDL.Reals.Subtract sub4 + "A subtract block that is used to mimic the direct acting in the first order process 2" + annotation (Placement(transformation(extent={{12,-30},{32,-10}}))); +equation + connect(resSig.y, PI.trigger) annotation (Line(points={{-58,70},{-30,70},{-30, + 40},{-16,40},{-16,48}}, color={255,0,255})); + connect(PIWitTun.triRes, PI.trigger) annotation (Line(points={{-16,-32},{-16,-38}, + {-30,-38},{-30,40},{-16,40},{-16,48}}, color={255,0,255})); + connect(PIWitTun.u_s, PI.u_s) annotation (Line(points={{-22,-20},{-48,-20},{-48, + 60},{-22,60}}, color={0,0,127})); + connect(SetPoint.y, PI.u_s) annotation (Line(points={{-58,10},{-48,10},{-48,60}, + {-22,60}}, color={0,0,127})); + connect(uniDel1.y, sub1.u1) annotation (Line(points={{72,60},{86,60},{86,86}, + {132,86}}, + color={0,0,127})); + connect(k.y, derivative1.k) annotation (Line(points={{54,20},{58,20},{58,28},{ + 92,28}}, color={0,0,127})); + connect(derivative1.T, T.y) annotation (Line(points={{92,24},{74,24},{74,-56}, + {32,-56}}, color={0,0,127})); + connect(derivative1.y, sub1.u2) annotation (Line(points={{116,20},{126,20},{ + 126,74},{132,74}}, + color={0,0,127})); + connect(sub1.y, PI.u_m) annotation (Line(points={{156,80},{164,80},{164,40},{-10, + 40},{-10,48}}, color={0,0,127})); + connect(sub2.u1, uniDel2.y) annotation (Line(points={{132,-4},{64,-4},{64,-20}, + {60,-20}}, color={0,0,127})); + connect(derivative2.y,sub2. u2) annotation (Line(points={{102,-60},{110,-60}, + {110,-16},{132,-16}}, + color={0,0,127})); + connect(sub2.y, PIWitTun.u_m) annotation (Line(points={{156,-10},{156,-36},{-10, + -36},{-10,-32}}, color={0,0,127})); + connect(derivative2.T, T.y) annotation (Line(points={{78,-56},{32,-56}}, + color={0,0,127})); + connect(derivative1.u, sub1.u1) annotation (Line(points={{92,20},{86,20},{86, + 86},{132,86}}, color={0,0,127})); + connect(derivative2.u, uniDel2.y) annotation (Line(points={{78,-60},{64,-60},{ + 64,-20},{60,-20}}, color={0,0,127})); + connect(autTunSig.y, PIWitTun.triTun) + annotation (Line(points={{-58,-50},{-4,-50},{-4,-32}}, color={255,0,255})); + connect(k.y, derivative2.k) annotation (Line(points={{54,20},{68,20},{68,-52}, + {78,-52}}, color={0,0,127})); + connect(const.y, sub3.u1) annotation (Line(points={{-18,120},{4,120},{4,66},{ + 12,66}}, color={0,0,127})); + connect(PI.y, sub3.u2) + annotation (Line(points={{2,60},{6,60},{6,54},{12,54}}, color={0,0,127})); + connect(sub3.y, uniDel1.u) + annotation (Line(points={{36,60},{48,60}}, color={0,0,127})); + connect(PIWitTun.y, sub4.u2) annotation (Line(points={{2,-20},{8,-20},{8,-26}, + {10,-26}}, color={0,0,127})); + connect(uniDel2.u, sub4.y) + annotation (Line(points={{36,-20},{34,-20}}, color={0,0,127})); + connect(sub4.u1, const.y) annotation (Line(points={{10,-14},{4,-14},{4,120},{-18, + 120}}, color={0,0,127})); + annotation ( + experiment( + StopTime=10000, + Tolerance=1e-06), + __Dymola_Commands( + file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIWithFirstOrderAMIGO.mos" "Simulate and plot"), + Documentation( + info=" +

                                  +Validation test for the block + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.FirstOrderAMIGO. +

                                  +

                                  +This example is similar as +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIWithFirstOrderAMIGO. +However, PI controllers with direct acting are considered. +

                                  +", + revisions=" +
                                    +
                                  • +June 1, 2022, by Sen Huang:
                                    +First implementation
                                    +
                                  • +
                                  +"), + Icon( + 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(extent={{-100,-80},{200,140}}))); +end DirectActingPIWithFirstOrderAMIGO; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo index 94c8f27279b..b699ac3db70 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo @@ -11,7 +11,8 @@ model PIDWithFirstOrderAMIGO "Test model for an autotuning PID controller" controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PID, k=1, Ti=0.5, - Td=0.1) "PID controller with constant gains" + Td=0.1) + "PID controller with constant gains" annotation (Placement(transformation(extent={{-20,50},{0,70}}))); Buildings.Controls.OBC.CDL.Logical.Sources.Constant resSig(k=false) "Reset signal" @@ -22,7 +23,7 @@ model PIDWithFirstOrderAMIGO "Test model for an autotuning PID controller" Buildings.Controls.OBC.CDL.Discrete.UnitDelay uniDel1(samplePeriod=240) "A delay process for control process 1" annotation (Placement(transformation(extent={{20,50},{40,70}}))); - Buildings.Controls.OBC.CDL.Reals.Sources.Constant k(k=1) + Buildings.Controls.OBC.CDL.Reals.Sources.Constant k(k=10) "Gain of the first order process" annotation (Placement(transformation(extent={{10,10},{30,30}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant T(k=10) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo index d717473e630..841dbd69e04 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo @@ -22,7 +22,7 @@ model PIWithFirstOrderAMIGO "Test model for an autotuning PI controller" Buildings.Controls.OBC.CDL.Discrete.UnitDelay uniDel2(samplePeriod=240) "A delay process for control process 2" annotation (Placement(transformation(extent={{10,-30},{30,-10}}))); - Buildings.Controls.OBC.CDL.Reals.Sources.Constant k(k=1) + Buildings.Controls.OBC.CDL.Reals.Sources.Constant k(k=10) "Gain of the first order process" annotation (Placement(transformation(extent={{180,20},{160,40}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant T(k=10) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/package.order index 0ef0859fce0..a0219aae1f8 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/package.order +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/package.order @@ -1,2 +1,4 @@ PIDWithFirstOrderAMIGO PIWithFirstOrderAMIGO +DirectActingPIDWithFirstOrderAMIGO +DirectActingPIWithFirstOrderAMIGO diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_DirectActingPIDWithFirstOrderAMIGO.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_DirectActingPIDWithFirstOrderAMIGO.txt new file mode 100644 index 00000000000..7adb0a1a016 --- /dev/null +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_DirectActingPIDWithFirstOrderAMIGO.txt @@ -0,0 +1,19 @@ +last-generated=2023-11-27 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "number of continuous time states": "7", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+04] +PID.u_s=[8.00000011920929e-01, 8.00000011920929e-01] +PID.u_m=[0e+00, 9.999529123306274e-01, 9.999995827674866e-01, 2.481618896126747e-03, -9.209431368617516e-07, 8.646680116653442e-01, 9.99992847442627e-01, 1.00000011920929e+00, 3.353178035467863e-04, 3.680234499370272e-07, 9.816855192184448e-01, 9.999986886978149e-01, 1.000000953674316e+00, 4.565741255646572e-05, -4.240747273342963e-07, 9.975219368934631e-01, 9.999996423721313e-01, 1.353366672992693e-01, 5.513567884918302e-06, 2.54376487873742e-07, 9.996645450592041e-01, 1.000000596046448e+00, 1.831774786114693e-02, 2.402083055130788e-06, 5.558368343372422e-07, 9.999493360519409e-01, 1.000000238418579e+00, 2.481072442606091e-03, -1.297765038543698e-06, 8.646639585494995e-01, 9.999890327453613e-01, 9.999999403953552e-01, 3.359213296789676e-04, -6.529444362968206e-08, 9.816862940788272e-01, 1.000000357627869e+00, 9.999993443489075e-01, 4.355499550001696e-05, -5.849470881003072e-07, 9.975262880325317e-01, 9.999997019767761e-01, 1.353341490030289e-01, 9.991781553253531e-06, -2.128344249285874e-06, 9.99663770198822e-01, 9.999992847442627e-01, 1.831896044313908e-02, 2.87289367406629e-06, -1.280822402804915e-06, 9.999557733535767e-01, 9.999999403953552e-01, 2.486077137291431e-03, 8.352884606210864e-08, 8.64664614200592e-01, 9.999970197677612e-01, 1.000000834465027e+00, 3.373299550730604e-04, 1.213078121509264e-06, 9.816852211952209e-01, 1.000000476837158e+00, 1e+00, 4.607145456247963e-05, 3.206718304227252e-07, 9.975227117538452e-01, 1.000001072883606e+00, 1.353338807821274e-01, 6.247963938221801e-06, -2.61645732280158e-06, 9.996637105941772e-01, 9.999999403953552e-01, 1.831003651022911e-02, 2.663874511199538e-06, -1.604295789547905e-06, 9.999539852142334e-01, 1.00000011920929e+00, 2.477718517184258e-03, 7.125596823698288e-08, 8.64664614200592e-01, 9.999963641166687e-01, 1e+00, 3.376349632162601e-04, 2.511874299670913e-06, 9.816854000091553e-01, 9.999997019767761e-01, 9.999982118606567e-01, 4.373506089905277e-05, 3.956753857892181e-07, 9.975239038467407e-01, 9.999996423721313e-01, 1.353354007005692e-01, 6.581487014045706e-06, -3.031005633147288e-07, 9.996647238731384e-01, 1.000000476837158e+00, 1.831415854394436e-02, -3.91474550553994e-08, -1.483704892280002e-07, 9.999539852142334e-01, 1e+00, 2.480224473401904e-03, 4.515759997048008e-07] +PIDWitTun.u_s=[8.00000011920929e-01, 8.00000011920929e-01] +PIDWitTun.u_m=[0e+00, 9.999529123306274e-01, 9.999995827674866e-01, 2.481618896126747e-03, -9.209431368617516e-07, 8.646680116653442e-01, 9.99992847442627e-01, 1.00000011920929e+00, 3.353178035467863e-04, 3.680234499370272e-07, 1.079854011535645e+00, 1.099998593330383e+00, 1.100001096725464e+00, 5.022315235692076e-05, -4.664821915412131e-07, 9.975219368934631e-01, 9.999996423721313e-01, 6.662226319313044e-01, 6.13982081413269e-01, 6.139800548553467e-01, 9.217122793197632e-01, 9.218156933784485e-01, 7.070821523666382e-01, 7.030758261680603e-01, 7.030754089355469e-01, 8.689492344856262e-01, 8.689576983451843e-01, 7.480440139770508e-01, 7.477431297302246e-01, 8.259584903717041e-01, 8.381996154785156e-01, 8.382006287574768e-01, 7.715213894844055e-01, 7.7149897813797e-01, 8.201120495796204e-01, 8.210189342498779e-01, 8.210188746452332e-01, 7.84398078918457e-01, 7.843964695930481e-01, 8.114728927612305e-01, 8.115400671958923e-01, 7.941663265228271e-01, 7.914472222328186e-01, 7.914469838142395e-01, 8.063263893127441e-01, 8.063313961029053e-01, 7.955118417739868e-01, 7.953099608421326e-01, 7.953099012374878e-01, 8.034725189208984e-01, 8.034728765487671e-01, 7.974428534507751e-01, 7.974278330802917e-01, 8.012989163398743e-01, 8.019047975540161e-01, 8.019048571586609e-01, 7.985904216766357e-01, 7.98589289188385e-01, 8.009997606277466e-01, 8.01044762134552e-01, 8.01044762134552e-01, 7.992263436317444e-01, 7.992262840270996e-01, 8.005696535110474e-01, 8.005729913711548e-01, 7.997106313705444e-01, 7.995756268501282e-01, 7.995756268501282e-01, 2.688951208256079e-04, 6.088590964737912e-08, 1.079859018325806e+00, 1.099997043609619e+00, 1.100001811981201e+00, 5.061423507868312e-05, -1.225616728106615e-07, 9.975222945213318e-01, 9.999999403953552e-01, 7.589147090911865e-01, 7.211815714836121e-01, 7.211805582046509e-01, 8.893374800682068e-01, 8.893938660621643e-01, 7.477635145187378e-01, 7.451212406158447e-01, 7.451214790344238e-01, 8.465710282325745e-01, 8.465753793716431e-01, 7.672640085220337e-01, 7.670671343803406e-01, 8.177893161773682e-01, 8.257278800010681e-01, 8.257282972335815e-01, 7.810003757476807e-01, 7.809852957725525e-01, 8.138757348060608e-01, 8.144893646240234e-01, 8.144893646240234e-01, 7.891457080841064e-01, 7.891445159912109e-01, 8.081621527671814e-01, 8.082094788551331e-01] +autTunSig.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +PIDWitTun.inTunPro.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +PIDWitTun.con.y=[0e+00, 1e+00, 1e+00, 0e+00, 0e+00, 3.339030146598816e-01, 1e+00, 1e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 2.935444116592407e-01, 0e+00, 2.359967529773712e-01, 3.188047111034393e-01, 2.245716452598573e-01, 1.719591170549393e-01, 9.381375461816788e-02, 2.150962501764297e-01, 2.662199437618256e-01, 2.105190604925156e-01, 1.717598885297775e-01, 1.310423612594604e-01, 2.117044627666473e-01, 2.406691908836365e-01, 2.011675089597702e-01, 1.7936173081398e-01, 1.991785168647766e-01, 2.092439830303192e-01, 2.252914607524872e-01, 1.981272399425507e-01, 1.861650198698044e-01, 1.983869373798371e-01, 2.067735195159912e-01, 2.156035304069519e-01, 1.976361572742462e-01, 1.910819560289383e-01, 1.998595148324966e-01, 2.04674631357193e-01, 2.00244203209877e-01, 1.979801803827286e-01, 1.943872272968292e-01, 2.004368603229523e-01, 2.030942142009735e-01, 2.003689557313919e-01, 1.984973698854446e-01, 1.965270936489105e-01, 2.005298137664795e-01, 2.019885927438736e-01, 2.000328451395035e-01, 1.98959618806839e-01, 1.999463886022568e-01, 2.004504650831223e-01, 2.012506723403931e-01, 1.999029368162155e-01, 1.99310839176178e-01, 1.999179273843765e-01, 2.00334832072258e-01, 2.007737159729004e-01, 1.998820155858994e-01, 1.995570063591003e-01, 1.999927014112473e-01, 2.002317756414413e-01, 2.000119537115097e-01, 1.998996436595917e-01, 1.997213810682297e-01, 0e+00, 0e+00, 1.599705666303635e-01, 2.761540710926056e-01, 4.021807312965393e-01, 0e+00, 0e+00, 1.26780703663826e-01, 2.10644543170929e-01, 1.638688296079636e-01, 1.509064137935638e-01, 1.173226088285446e-01, 1.939653754234314e-01, 2.320247888565067e-01, 1.987468898296356e-01, 1.768081188201904e-01, 1.534245610237122e-01, 2.05151692032814e-01, 2.249947339296341e-01, 1.994225382804871e-01, 1.854977011680603e-01, 1.992357969284058e-01, 2.058597207069397e-01, 2.168221324682236e-01, 1.984656602144241e-01, 1.903718709945679e-01, 1.988433450460434e-01, 2.046816647052765e-01, 2.108554691076279e-01, 1.982655078172684e-01, 1.936407089233398e-01, 1.999057978391647e-01, 2.033779472112656e-01] +PIDWitTun.con.k=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01] +PIDWitTun.con.Ti=[5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01] +PIDWitTun.con.Td=[1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.943826293945312e+01, 1.943826293945312e+01, 1.943826293945312e+01, 1.943826293945312e+01, 1.943826293945312e+01, 1.943826293945312e+01, 1.943826293945312e+01, 1.943826293945312e+01, 1.943826293945312e+01, 1.943826293945312e+01, 1.943826293945312e+01, 1.943826293945312e+01, 1.943826293945312e+01, 1.943826293945312e+01, 1.943826293945312e+01, 1.943826293945312e+01, 1.943826293945312e+01, 1.943826293945312e+01, 1.943826293945312e+01, 1.943826293945312e+01, 1.943826293945312e+01, 1.943826293945312e+01, 1.943826293945312e+01, 1.943826293945312e+01, 1.943826293945312e+01, 1.943826293945312e+01, 1.943826293945312e+01, 1.943826293945312e+01] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_DirectActingPIWithFirstOrderAMIGO.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_DirectActingPIWithFirstOrderAMIGO.txt new file mode 100644 index 00000000000..11d3807fbde --- /dev/null +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_DirectActingPIWithFirstOrderAMIGO.txt @@ -0,0 +1,18 @@ +last-generated=2023-11-27 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "number of continuous time states": "7", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+04] +PI.u_s=[8.00000011920929e-01, 8.00000011920929e-01] +PI.u_m=[0e+00, 9.999529123306274e-01, 9.999995827674866e-01, 2.481618896126747e-03, -9.209431368617516e-07, 8.646680116653442e-01, 9.99992847442627e-01, 1.00000011920929e+00, 3.353178035467863e-04, 3.680234499370272e-07, 9.816855192184448e-01, 9.999986886978149e-01, 1.000000953674316e+00, 4.565741255646572e-05, -4.240747273342963e-07, 9.975219368934631e-01, 9.999996423721313e-01, 1.353366672992693e-01, 5.513567884918302e-06, 2.54376487873742e-07, 9.996645450592041e-01, 1.000000596046448e+00, 1.831774786114693e-02, 2.402083055130788e-06, 5.558368343372422e-07, 9.999493360519409e-01, 1.000000238418579e+00, 2.481072442606091e-03, -1.297765038543698e-06, 8.646639585494995e-01, 9.999890327453613e-01, 9.999999403953552e-01, 3.359213296789676e-04, -6.529444362968206e-08, 9.816862940788272e-01, 1.000000357627869e+00, 9.999993443489075e-01, 4.355499550001696e-05, -5.849470881003072e-07, 9.975262880325317e-01, 9.999997019767761e-01, 1.353341490030289e-01, 9.991781553253531e-06, -2.128344249285874e-06, 9.99663770198822e-01, 9.999992847442627e-01, 1.831896044313908e-02, 2.87289367406629e-06, -1.280822402804915e-06, 9.999557733535767e-01, 9.999999403953552e-01, 2.486077137291431e-03, 8.352884606210864e-08, 8.64664614200592e-01, 9.999970197677612e-01, 1.000000834465027e+00, 3.373299550730604e-04, 1.213078121509264e-06, 9.816852211952209e-01, 1.000000476837158e+00, 1e+00, 4.607145456247963e-05, 3.206718304227252e-07, 9.975227117538452e-01, 1.000001072883606e+00, 1.353338807821274e-01, 6.247963938221801e-06, -2.61645732280158e-06, 9.996637105941772e-01, 9.999999403953552e-01, 1.831003651022911e-02, 2.663874511199538e-06, -1.604295789547905e-06, 9.999539852142334e-01, 1.00000011920929e+00, 2.477718517184258e-03, 7.125596823698288e-08, 8.64664614200592e-01, 9.999963641166687e-01, 1e+00, 3.376349632162601e-04, 2.511874299670913e-06, 9.816854000091553e-01, 9.999997019767761e-01, 9.999982118606567e-01, 4.373506089905277e-05, 3.956753857892181e-07, 9.975239038467407e-01, 9.999996423721313e-01, 1.353354007005692e-01, 6.581487014045706e-06, -3.031005633147288e-07, 9.996647238731384e-01, 1.000000476837158e+00, 1.831415854394436e-02, -3.91474550553994e-08, -1.483704892280002e-07, 9.999539852142334e-01, 1e+00, 2.480224473401904e-03, 4.515759997048008e-07] +PIWitTun.u_s=[8.00000011920929e-01, 8.00000011920929e-01] +PIWitTun.u_m=[0e+00, 9.999529123306274e-01, 9.999995827674866e-01, 2.481618896126747e-03, -9.209431368617516e-07, 8.646680116653442e-01, 9.99992847442627e-01, 1.00000011920929e+00, 3.353178035467863e-04, 3.680234499370272e-07, 1.079854011535645e+00, 1.099998593330383e+00, 1.100001096725464e+00, 5.022315235692076e-05, -4.664821915412131e-07, 9.975219368934631e-01, 9.999996423721313e-01, 6.662226319313044e-01, 6.13982081413269e-01, 6.139800548553467e-01, 9.217122793197632e-01, 9.218156933784485e-01, 7.070821523666382e-01, 7.030758261680603e-01, 7.030754089355469e-01, 8.689492344856262e-01, 8.689576983451843e-01, 7.480440139770508e-01, 7.477431297302246e-01, 8.259584903717041e-01, 8.381996154785156e-01, 8.382006287574768e-01, 7.715213894844055e-01, 7.7149897813797e-01, 8.201120495796204e-01, 8.210189342498779e-01, 8.210188746452332e-01, 7.84398078918457e-01, 7.843964695930481e-01, 8.114728927612305e-01, 8.115400671958923e-01, 7.941663265228271e-01, 7.914472222328186e-01, 7.914469838142395e-01, 8.063263893127441e-01, 8.063313961029053e-01, 7.955118417739868e-01, 7.953099608421326e-01, 7.953099012374878e-01, 8.034725189208984e-01, 8.034728765487671e-01, 7.974428534507751e-01, 7.974278330802917e-01, 8.012989163398743e-01, 8.019047975540161e-01, 8.019048571586609e-01, 7.985904216766357e-01, 7.98589289188385e-01, 8.009997606277466e-01, 8.01044762134552e-01, 8.01044762134552e-01, 7.992263436317444e-01, 7.992262840270996e-01, 8.005696535110474e-01, 8.005729913711548e-01, 7.997106313705444e-01, 7.995756268501282e-01, 7.995756268501282e-01, 2.688951208256079e-04, 6.088590964737912e-08, 1.079859018325806e+00, 1.099997043609619e+00, 1.100001811981201e+00, 5.061423507868312e-05, -1.225616728106615e-07, 9.975222945213318e-01, 9.999999403953552e-01, 7.589147090911865e-01, 7.211815714836121e-01, 7.211805582046509e-01, 8.893374800682068e-01, 8.893938660621643e-01, 7.477635145187378e-01, 7.451212406158447e-01, 7.451214790344238e-01, 8.465710282325745e-01, 8.465753793716431e-01, 7.672640085220337e-01, 7.670671343803406e-01, 8.177893161773682e-01, 8.257278800010681e-01, 8.257282972335815e-01, 7.810003757476807e-01, 7.809852957725525e-01, 8.138757348060608e-01, 8.144893646240234e-01, 8.144893646240234e-01, 7.891457080841064e-01, 7.891445159912109e-01, 8.081621527671814e-01, 8.082094788551331e-01] +autTunSig.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +PIWitTun.inTunPro.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +PIWitTun.con.y=[0e+00, 1e+00, 1e+00, 0e+00, 0e+00, 3.339030146598816e-01, 1e+00, 1e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 2.935444116592407e-01, 0e+00, 2.359967529773712e-01, 3.188047111034393e-01, 2.245716452598573e-01, 1.719591170549393e-01, 9.381375461816788e-02, 2.150962501764297e-01, 2.662199437618256e-01, 2.105190604925156e-01, 1.717598885297775e-01, 1.310423612594604e-01, 2.117044627666473e-01, 2.406691908836365e-01, 2.011675089597702e-01, 1.7936173081398e-01, 1.991785168647766e-01, 2.092439830303192e-01, 2.252914607524872e-01, 1.981272399425507e-01, 1.861650198698044e-01, 1.983869373798371e-01, 2.067735195159912e-01, 2.156035304069519e-01, 1.976361572742462e-01, 1.910819560289383e-01, 1.998595148324966e-01, 2.04674631357193e-01, 2.00244203209877e-01, 1.979801803827286e-01, 1.943872272968292e-01, 2.004368603229523e-01, 2.030942142009735e-01, 2.003689557313919e-01, 1.984973698854446e-01, 1.965270936489105e-01, 2.005298137664795e-01, 2.019885927438736e-01, 2.000328451395035e-01, 1.98959618806839e-01, 1.999463886022568e-01, 2.004504650831223e-01, 2.012506723403931e-01, 1.999029368162155e-01, 1.99310839176178e-01, 1.999179273843765e-01, 2.00334832072258e-01, 2.007737159729004e-01, 1.998820155858994e-01, 1.995570063591003e-01, 1.999927014112473e-01, 2.002317756414413e-01, 2.000119537115097e-01, 1.998996436595917e-01, 1.997213810682297e-01, 0e+00, 0e+00, 1.599705666303635e-01, 2.761540710926056e-01, 4.021807312965393e-01, 0e+00, 0e+00, 1.26780703663826e-01, 2.10644543170929e-01, 1.638688296079636e-01, 1.509064137935638e-01, 1.173226088285446e-01, 1.939653754234314e-01, 2.320247888565067e-01, 1.987468898296356e-01, 1.768081188201904e-01, 1.534245610237122e-01, 2.05151692032814e-01, 2.249947339296341e-01, 1.994225382804871e-01, 1.854977011680603e-01, 1.992357969284058e-01, 2.058597207069397e-01, 2.168221324682236e-01, 1.984656602144241e-01, 1.903718709945679e-01, 1.988433450460434e-01, 2.046816647052765e-01, 2.108554691076279e-01, 1.982655078172684e-01, 1.936407089233398e-01, 1.999057978391647e-01, 2.033779472112656e-01] +PIWitTun.con.k=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01] +PIWitTun.con.Ti=[5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIDWithFirstOrderAMIGO.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIDWithFirstOrderAMIGO.txt index 10020a11524..13494ce7865 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIDWithFirstOrderAMIGO.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIDWithFirstOrderAMIGO.txt @@ -1,4 +1,4 @@ -last-generated=2023-10-23 +last-generated=2023-11-27 statistics-simulation= { "linear": " ", @@ -8,12 +8,12 @@ statistics-simulation= } time=[0e+00, 1e+04] PID.u_s=[8.00000011920929e-01, 8.00000011920929e-01] -PID.u_m=[7.200000286102295e-01, 7.999955415725708e-01, 8.00000011920929e-01, 9.998812675476074e-01, 9.999308586120605e-01, 1.35326012969017e-02, 6.440500328608323e-07, 5.875592457016523e-09, 9.999662637710571e-01, 1e+00, 1.831764704547822e-03, 2.342568024005232e-07, 3.603535025931137e-09, 9.999949336051941e-01, 1.00000011920929e+00, 2.480908297002316e-04, 1.595457987946247e-08, 9.864665865898133e-01, 9.999992251396179e-01, 1e+00, 3.365114389453083e-05, -2.422762435116965e-08, 9.981680512428284e-01, 9.999989867210388e-01, 1e+00, 4.310262738727033e-06, 2.328992820821441e-08, 9.997521042823792e-01, 1e+00, 1.35330380871892e-02, 6.79178299378691e-07, 5.870391106554962e-08, 9.999662637710571e-01, 1e+00, 1.831486239097976e-03, -3.691763694746442e-08, 2.421544209596505e-08, 9.999949932098389e-01, 1.00000011920929e+00, 2.481888514012098e-04, 2.742204401329218e-07, 9.86466646194458e-01, 9.999990463256836e-01, 1.000000357627869e+00, 3.372815262991935e-05, 3.534541903604804e-08, 9.981674551963806e-01, 9.999998807907104e-01, 1.00000011920929e+00, 4.776772584591527e-06, 6.763659854414072e-08, 9.997515082359314e-01, 9.999998211860657e-01, 1.35330380871892e-02, 6.777574981242651e-07, 6.637635152628718e-08, 9.999660849571228e-01, 9.999998807907104e-01, 1.8314867047593e-03, -3.725519093222829e-08, -6.732372992424018e-10, 9.999946355819702e-01, 1.00000011920929e+00, 2.48274503974244e-04, -6.918997286220474e-08, 9.864673614501953e-01, 9.999998211860657e-01, 9.999999403953552e-01, 3.363205541972871e-05, 2.555656308799375e-08, 9.981688261032104e-01, 1.000000357627869e+00, 1e+00, 4.579071628540987e-06, -1.041051547190364e-07, 9.997515082359314e-01, 1e+00, 1.353293657302856e-02, 8.939209124037006e-07, 8.830804532067305e-09, 9.999662041664124e-01, 1.00000011920929e+00, 1.831797766499221e-03, 2.47536121378289e-07, 2.051977361361423e-07, 9.999948740005493e-01, 9.999998807907104e-01, 2.481013943906873e-04, 1.673911924626736e-07, 9.864643812179565e-01, 9.999995827674866e-01, 1e+00, 3.373266372364014e-05, -1.096864554739341e-08, 9.981688261032104e-01, 1e+00, 9.999999403953552e-01, 4.647220521292184e-06, 1.295071854201524e-07, 9.997513294219971e-01, 1.000000834465027e+00] +PID.u_m=[0e+00, 7.999616265296936e-01, 7.999999523162842e-01, 9.993995428085327e-01, 9.998931288719177e-01, 1.353196501731873e-01, 6.851807938801358e-06, 4.755698768122096e-08, 9.996631741523743e-01, 9.999991059303284e-01, 1.831701956689358e-02, 1.315645818067424e-06, 2.102755125577005e-08, 9.999539256095886e-01, 1.000000357627869e+00, 2.478852169588208e-03, -1.725271545183205e-06, 8.646631836891188e-01, 9.999935030937195e-01, 9.999998807907104e-01, 3.35057353368029e-04, 1.695530755796426e-07, 9.816850423812866e-01, 9.999963641166687e-01, 9.999998211860657e-01, 4.682367216446437e-05, -1.11080464648694e-06, 9.975189566612244e-01, 9.999994039535522e-01, 1.353355646133423e-01, 8.407040695601609e-06, -4.501294483816309e-07, 9.996635317802429e-01, 1.000003337860107e+00, 1.831684820353949e-02, 3.143840672237275e-07, -2.133990939512387e-08, 9.999529123306274e-01, 1.00000011920929e+00, 2.482477342709899e-03, -1.313355824095197e-06, 8.646672964096069e-01, 9.999929070472717e-01, 9.999974966049194e-01, 3.329318133182824e-04, 1.962771136732044e-07, 9.816854000091553e-01, 9.999986290931702e-01, 1.000000238418579e+00, 4.66817436972633e-05, -4.433775870893442e-07, 9.975200295448303e-01, 9.999988079071045e-01, 1.353356242179871e-01, 1.033534317684826e-05, -1.659521217334259e-06, 9.996665120124817e-01, 1e+00, 1.831833645701408e-02, 8.511050282322685e-07, -6.314481737490496e-08, 9.999518394470215e-01, 9.999987483024597e-01, 2.480369294062257e-03, -1.966419631571625e-07, 8.646665811538696e-01, 9.999902844429016e-01, 1.000000238418579e+00, 3.360889968462157e-04, 2.214600698379314e-07, 9.816839694976807e-01, 9.999991655349731e-01, 1e+00, 4.846336742048152e-05, -1.058844532053627e-06, 9.97522234916687e-01, 9.999990463256836e-01, 1.353340595960617e-01, 1.003264242172008e-05, -4.976898253516993e-07, 9.996680021286011e-01, 1.000000238418579e+00, 1.831334643065929e-02, 5.747455134041957e-07, 2.466122737132537e-07, 9.999580979347229e-01, 9.99999463558197e-01, 2.481831237673759e-03, -2.273754034831654e-06, 8.646650314331055e-01, 9.999917149543762e-01, 9.999995231628418e-01, 3.33912146743387e-04, 2.028893277383759e-06, 9.81684684753418e-01, 1.000000476837158e+00, 1.00000011920929e+00, 4.661795173888095e-05, 2.272254278068431e-07, 9.975208640098572e-01, 9.999994039535522e-01] PIDWitTun.u_s=[8.00000011920929e-01, 8.00000011920929e-01] -PIDWitTun.u_m=[7.200000286102295e-01, 7.999955415725708e-01, 8.00000011920929e-01, 9.998812675476074e-01, 9.999308586120605e-01, 1.35326012969017e-02, 6.440500328608323e-07, 5.875593789284153e-09, 9.999662637710571e-01, 1e+00, -9.798505902290344e-02, -9.999974071979523e-02, -9.999999403953552e-02, 9.999944567680359e-01, 1.00000011920929e+00, 7.413181066513062e-01, 7.412539124488831e-01, 8.210213184356689e-01, 8.221156001091003e-01, 8.221156597137451e-01, 7.949307560920715e-01, 7.949298620223999e-01, 8.028690814971924e-01, 8.028836846351624e-01, 8.028836846351624e-01, 7.998543977737427e-01, 7.998543977737427e-01, 8.005301952362061e-01, 8.005303740501404e-01, 8.001352548599243e-01, 8.001298308372498e-01, 8.001298308372498e-01, 8.001444339752197e-01, 8.001444339752197e-01, 8.00069272518158e-01, 8.000690937042236e-01, 8.000690937042236e-01, 8.000494241714478e-01, 8.000494241714478e-01, 8.000285625457764e-01, 8.000285625457764e-01, 8.000185489654541e-01, 8.000183701515198e-01, 8.000183701515198e-01, 8.000112175941467e-01, 8.000112175941467e-01, 8.000070452690125e-01, 8.000069856643677e-01, 8.000069856643677e-01, 8.000043034553528e-01, 8.000043034553528e-01, 8.000026941299438e-01, 8.000026941299438e-01, 8.000016808509827e-01, 8.000016808509827e-01, 8.000016808509827e-01, 8.000010251998901e-01, 8.000010251998901e-01, 8.000006675720215e-01, 8.000006675720215e-01, 8.000006675720215e-01, 8.000003695487976e-01, 8.000003695487976e-01, 8.000002503395081e-01, 8.000002503395081e-01, 8.000001311302185e-01, 8.000001311302185e-01, 8.000001311302185e-01, -9.996972978115082e-02, -9.999997913837433e-02, 9.979857206344604e-01, 1.000000357627869e+00, 1e+00, -9.99949648976326e-02, -1.000001132488251e-01, 9.997266530990601e-01, 1e+00, 8.396642208099365e-01, 8.374648094177246e-01, 8.374646306037903e-01, 8.508558869361877e-01, 8.508563041687012e-01, 8.227573037147522e-01, 8.227057456970215e-01, 8.227057456970215e-01, 8.169187903404236e-01, 8.169187903404236e-01, 8.095905780792236e-01, 8.095887303352356e-01, 8.062845468521118e-01, 8.062391877174377e-01, 8.062391877174377e-01, 8.037776947021484e-01, 8.037775754928589e-01, 8.023759126663208e-01, 8.023733496665955e-01, 8.023733496665955e-01, 8.014628291130066e-01, 8.014628291130066e-01, 8.009107112884521e-01, 8.009105324745178e-01] +PIDWitTun.u_m=[0e+00, 7.999616265296936e-01, 7.999999523162842e-01, 9.993996024131775e-01, 9.998931288719177e-01, 1.353196501731873e-01, 6.851807938801358e-06, 4.755695570679785e-08, 9.996631741523743e-01, 9.999991059303284e-01, -7.985127717256546e-02, -9.999855607748032e-02, -9.999997913837433e-02, 9.999493360519409e-01, 1.000000357627869e+00, 9.261211752891541e-02, 9.035567939281464e-02, 5.745506286621102e-01, 6.503327488899231e-01, 6.503363847732544e-01, 6.178590059280396e-01, 6.178480982780457e-01, 7.194294929504395e-01, 7.213242650032043e-01, 7.21324622631073e-01, 7.424807548522949e-01, 7.424817681312561e-01, 7.687986493110657e-01, 7.688640952110291e-01, 7.786269783973694e-01, 7.801550030708313e-01, 7.801550626754761e-01, 7.884552478790283e-01, 7.884581089019775e-01, 7.9285728931427e-01, 7.929393649101257e-01, 7.929393649101257e-01, 7.958003878593445e-01, 7.958005666732788e-01, 7.974589467048645e-01, 7.97463059425354e-01, 7.983428835868835e-01, 7.984806299209595e-01, 7.984806299209595e-01, 7.990854382514954e-01, 7.990856766700745e-01, 7.994444966316223e-01, 7.994512319564819e-01, 7.994512319564819e-01, 7.996701598167419e-01, 7.996701598167419e-01, 7.998015880584717e-01, 7.998018860816956e-01, 7.998702526092529e-01, 7.998809814453125e-01, 7.998809814453125e-01, 7.999284863471985e-01, 7.999284863471985e-01, 7.999565005302429e-01, 7.999570369720459e-01, 7.999570369720459e-01, 7.999742031097412e-01, 7.999742031097412e-01, 7.999844551086426e-01, 7.999845147132874e-01, 7.999898195266724e-01, 7.99990713596344e-01, 7.99990713596344e-01, 9.999327659606934e-01, 9.999999403953552e-01, -7.9852394759655e-02, -9.99990776181221e-02, -1.000000089406967e-01, 9.999467134475708e-01, 1.000001192092896e+00, 8.242629766464233e-01, 8.238266706466675e-01, 8.437286019325256e-01, 8.468433618545532e-01, 8.468436002731323e-01, 8.172461986541748e-01, 8.172363638877869e-01, 8.141170740127563e-01, 8.140588998794556e-01, 8.140588998794556e-01, 8.072172999382019e-01, 8.07217001914978e-01, 8.047668933868408e-01, 8.047608137130737e-01, 8.029993176460266e-01, 8.027236461639404e-01, 8.027236461639404e-01, 8.016865849494934e-01, 8.016862869262695e-01, 8.010112047195435e-01, 8.009986281394958e-01, 8.009986281394958e-01, 8.006062507629395e-01, 8.006062507629395e-01, 8.003635406494141e-01, 8.003629446029663e-01] autTunSig.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] PIDWitTun.inTunPro.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] -PIDWitTun.con.y=[0e+00, 1e+00, 9.999293684959412e-01, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 7.997606992721558e-01, 7.579698562622069e-01, 8.000104427337646e-01, 8.1229567527771e-01, 8.052711486816406e-01, 8.004751205444336e-01, 7.958540320396423e-01, 8.011884689331055e-01, 8.022480010986328e-01, 8.010618090629578e-01, 8.004569411277771e-01, 7.998543977737427e-01, 8.00487756729126e-01, 8.005182147026062e-01, 8.00329327583313e-01, 8.002185225486755e-01, 8.00203263759613e-01, 8.001770377159119e-01, 8.001498579978943e-01, 8.001173734664917e-01, 8.000872135162354e-01, 8.000783324241638e-01, 8.000639081001282e-01, 8.000494241714478e-01, 8.000430464744568e-01, 8.000326752662659e-01, 8.000291585922241e-01, 8.000231981277466e-01, 8.000196218490601e-01, 8.000158071517944e-01, 8.000119924545288e-01, 8.000107407569885e-01, 8.000084161758423e-01, 8.000072836875916e-01, 8.000057935714722e-01, 8.000043034553528e-01, 8.000039458274841e-01, 8.000030517578125e-01, 8.000026941299438e-01, 8.000020980834961e-01, 8.000018000602722e-01, 8.000014424324036e-01, 8.000010848045349e-01, 8.000009655952454e-01, 8.00000786781311e-01, 8.000006675720215e-01, 8.000005483627319e-01, 8.000003695487976e-01, 8.000003695487976e-01, 8.000003099441528e-01, 8.000002503395081e-01, 8.000001907348633e-01, 8.000001907348633e-01, 8.000001311302185e-01, 8.000001311302185e-01, 1e+00, 1e+00, 9.162839651107788e-01, 8.741718530654907e-01, 8.323820233345032e-01, 1e+00, 1e+00, 9.126843214035034e-01, 8.708786964416504e-01, 8.677628040313721e-01, 8.602451682090759e-01, 8.524211645126343e-01, 8.396989703178406e-01, 8.290781974792479e-01, 8.263952136039734e-01, 8.21660578250885e-01, 8.169187903404236e-01, 8.145353198051453e-01, 8.110020756721497e-01, 8.098434209823608e-01, 8.078411817550659e-01, 8.066378235816956e-01, 8.053411841392517e-01, 8.040381669998169e-01, 8.036355972290039e-01, 8.028466701507568e-01, 8.024537563323975e-01, 8.01958441734314e-01, 8.014628291130066e-01, 8.01338255405426e-01, 8.010327219963074e-01, 8.009061813354492e-01, 8.007160425186157e-01] -PIDWitTun.con.k=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.011361569166183e-01, 2.007837891578674e-01, 2.007837891578674e-01, 2.007837891578674e-01, 2.007837891578674e-01, 2.007837891578674e-01, 2.007837891578674e-01, 2.007837891578674e-01, 2.007837891578674e-01, 2.007837891578674e-01, 2.007837891578674e-01, 2.007837891578674e-01, 2.007837891578674e-01, 2.007837891578674e-01, 2.007837891578674e-01, 2.007837891578674e-01, 2.007837891578674e-01, 2.007837891578674e-01, 2.007837891578674e-01, 2.007837891578674e-01, 2.007837891578674e-01, 2.007837891578674e-01, 2.007837891578674e-01, 2.007837891578674e-01, 2.007837891578674e-01, 2.007837891578674e-01, 2.007837891578674e-01, 2.007837891578674e-01, 2.007837891578674e-01] -PIDWitTun.con.Ti=[5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.626056671142578e+01, 9.614346313476562e+01, 9.614346313476562e+01, 9.614346313476562e+01, 9.614346313476562e+01, 9.614346313476562e+01, 9.614346313476562e+01, 9.614346313476562e+01, 9.614346313476562e+01, 9.614346313476562e+01, 9.614346313476562e+01, 9.614346313476562e+01, 9.614346313476562e+01, 9.614346313476562e+01, 9.614346313476562e+01, 9.614346313476562e+01, 9.614346313476562e+01, 9.614346313476562e+01, 9.614346313476562e+01, 9.614346313476562e+01, 9.614346313476562e+01, 9.614346313476562e+01, 9.614346313476562e+01, 9.614346313476562e+01, 9.614346313476562e+01, 9.614346313476562e+01, 9.614346313476562e+01, 9.614346313476562e+01, 9.614346313476562e+01] -PIDWitTun.con.Td=[1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.000452637672424e+00, 1.98236095905304e+00, 1.98236095905304e+00, 1.98236095905304e+00, 1.98236095905304e+00, 1.98236095905304e+00, 1.98236095905304e+00, 1.98236095905304e+00, 1.98236095905304e+00, 1.98236095905304e+00, 1.98236095905304e+00, 1.98236095905304e+00, 1.98236095905304e+00, 1.98236095905304e+00, 1.98236095905304e+00, 1.98236095905304e+00, 1.98236095905304e+00, 1.98236095905304e+00, 1.98236095905304e+00, 1.98236095905304e+00, 1.98236095905304e+00, 1.98236095905304e+00, 1.98236095905304e+00, 1.98236095905304e+00, 1.98236095905304e+00, 1.98236095905304e+00, 1.98236095905304e+00, 1.98236095905304e+00, 1.98236095905304e+00] +PIDWitTun.con.y=[8.00000011920929e-01, 1e+00, 9.998882412910461e-01, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1.524276882410049e-01, 1.081026941537856e-01, 3.686712980270386e-01, 5.244081616401672e-01, 4.893028736114508e-01, 5.780085921287537e-01, 6.112086772918701e-01, 6.566866636276245e-01, 6.970824003219604e-01, 7.061752676963806e-01, 7.250301837921143e-01, 7.424817085266113e-01, 7.510016560554504e-01, 7.637607455253601e-01, 7.676751613616943e-01, 7.746300101280212e-01, 7.776545882225037e-01, 7.831757664680481e-01, 7.875776886940002e-01, 7.888410687446594e-01, 7.914032936096191e-01, 7.926074862480164e-01, 7.942343950271606e-01, 7.958005666732788e-01, 7.961588501930237e-01, 7.97090470790863e-01, 7.974646687507629e-01, 7.980304360389709e-01, 7.982432842254639e-01, 7.986811995506287e-01, 7.990182638168335e-01, 7.991265654563904e-01, 7.993295192718506e-01, 7.994217276573181e-01, 7.995483875274658e-01, 7.996701598167419e-01, 7.996994256973267e-01, 7.997726202011108e-01, 7.998016476631165e-01, 7.99845814704895e-01, 7.998625636100769e-01, 7.998968362808228e-01, 7.999232411384583e-01, 7.999316453933716e-01, 7.999475002288818e-01, 7.999547719955444e-01, 7.999646663665771e-01, 7.999742031097412e-01, 7.999764680862427e-01, 7.999821901321411e-01, 7.999844551086426e-01, 7.999879121780396e-01, 7.999892234802246e-01, 7.999919056892395e-01, 7.999939918518066e-01, 7.24393248558044e-01, 6.800802350044255e-01, 9.476311206817627e-01, 1e+00, 1e+00, 8.859264850616455e-01, 8.415757417678833e-01, 8.565272688865662e-01, 8.510725498199463e-01, 8.388975858688354e-01, 8.297075629234314e-01, 8.193148970603943e-01, 8.201811909675598e-01, 8.163533210754395e-01, 8.134776949882507e-01, 8.103361129760742e-01, 8.07217001914978e-01, 8.070025444030762e-01, 8.054012656211853e-01, 8.046271800994873e-01, 8.035686016082764e-01, 8.031221032142639e-01, 8.024113774299622e-01, 8.018071055412292e-01, 8.015973567962646e-01, 8.0122309923172e-01, 8.010542392730713e-01, 8.008278012275696e-01, 8.006062507629395e-01, 8.005512952804565e-01, 8.004167675971985e-01, 8.003641963005066e-01, 8.002834320068359e-01] +PIDWitTun.con.k=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.248485088348389e-01, 2.248485088348389e-01, 2.248485088348389e-01, 2.248485088348389e-01, 2.248485088348389e-01, 2.248485088348389e-01, 2.248485088348389e-01, 2.248485088348389e-01, 2.248485088348389e-01, 2.248485088348389e-01, 2.248485088348389e-01, 2.248485088348389e-01, 2.248485088348389e-01, 2.248485088348389e-01, 2.248485088348389e-01, 2.248485088348389e-01, 2.248485088348389e-01, 2.248485088348389e-01, 2.248485088348389e-01, 2.248485088348389e-01, 2.248485088348389e-01, 2.248485088348389e-01, 2.248485088348389e-01, 2.248485088348389e-01, 2.248485088348389e-01, 2.248485088348389e-01, 2.248485088348389e-01, 2.248485088348389e-01] +PIDWitTun.con.Ti=[5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.013471450805664e+02, 1.013471450805664e+02, 1.013471450805664e+02, 1.013471450805664e+02, 1.013471450805664e+02, 1.013471450805664e+02, 1.013471450805664e+02, 1.013471450805664e+02, 1.013471450805664e+02, 1.013471450805664e+02, 1.013471450805664e+02, 1.013471450805664e+02, 1.013471450805664e+02, 1.013471450805664e+02, 1.013471450805664e+02, 1.013471450805664e+02, 1.013471450805664e+02, 1.013471450805664e+02, 1.013471450805664e+02, 1.013471450805664e+02, 1.013471450805664e+02, 1.013471450805664e+02, 1.013471450805664e+02, 1.013471450805664e+02, 1.013471450805664e+02, 1.013471450805664e+02, 1.013471450805664e+02, 1.013471450805664e+02] +PIDWitTun.con.Td=[1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.075896644592285e+01, 2.075896644592285e+01, 2.075896644592285e+01, 2.075896644592285e+01, 2.075896644592285e+01, 2.075896644592285e+01, 2.075896644592285e+01, 2.075896644592285e+01, 2.075896644592285e+01, 2.075896644592285e+01, 2.075896644592285e+01, 2.075896644592285e+01, 2.075896644592285e+01, 2.075896644592285e+01, 2.075896644592285e+01, 2.075896644592285e+01, 2.075896644592285e+01, 2.075896644592285e+01, 2.075896644592285e+01, 2.075896644592285e+01, 2.075896644592285e+01, 2.075896644592285e+01, 2.075896644592285e+01, 2.075896644592285e+01, 2.075896644592285e+01, 2.075896644592285e+01, 2.075896644592285e+01, 2.075896644592285e+01] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIWithFirstOrderAMIGO.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIWithFirstOrderAMIGO.txt index ec2e5c0a31a..d1f0564fa53 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIWithFirstOrderAMIGO.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIWithFirstOrderAMIGO.txt @@ -1,4 +1,4 @@ -last-generated=2023-10-23 +last-generated=2023-11-27 statistics-simulation= { "linear": " ", @@ -8,11 +8,11 @@ statistics-simulation= } time=[0e+00, 1e+04] PI.u_s=[8.00000011920929e-01, 8.00000011920929e-01] -PI.u_m=[7.200000286102295e-01, 7.999961376190186e-01, 8.00000011920929e-01, 9.998272657394409e-01, 9.998775124549866e-01, 1.353192888200283e-02, 5.326713790054782e-07, 2.259544018556895e-08, 9.999662637710571e-01, 9.999999403953552e-01, 1.831752131693065e-03, 2.861204961845942e-07, 6.948661201988671e-09, 9.999954104423523e-01, 1.00000011920929e+00, 2.480107068549842e-04, -1.373155189554609e-08, 9.864668250083924e-01, 9.999985098838806e-01, 9.999999403953552e-01, 3.368727266206406e-05, -1.602480637075132e-07, 9.981690645217896e-01, 9.999997615814209e-01, 1e+00, 4.824462848773692e-06, 1.304893437747978e-08, 9.997515082359314e-01, 1e+00, 1.353311352431774e-02, 7.172010896283609e-07, 7.390228518033837e-08, 9.999662637710571e-01, 9.999999403953552e-01, 1.831901143304968e-03, 7.758598741247624e-08, 2.735835558098643e-08, 9.999953508377075e-01, 9.999999403953552e-01, 2.485316945239902e-04, -9.416259771910518e-09, 9.864668846130371e-01, 9.999993443489075e-01, 9.999999403953552e-01, 3.366324381204322e-05, 8.379893756682577e-08, 9.981687664985657e-01, 1e+00, 1e+00, 4.828313649340998e-06, 2.987365022022459e-08, 9.997518658638e-01, 9.99999463558197e-01, 1.353335194289684e-02, 6.54611710615427e-07, -1.783012493206115e-07, 9.999659061431885e-01, 1.000000357627869e+00, 1.832093810662627e-03, -1.196961534333241e-07, 1.418564377075882e-08, 9.999953508377075e-01, 1e+00, 2.486180164851248e-04, 4.432009603760889e-08, 9.86466646194458e-01, 9.999999403953552e-01, 9.999998807907104e-01, 3.390988058526867e-05, -3.931775438560409e-08, 9.981682896614075e-01, 9.999999403953552e-01, 1e+00, 4.597538463713136e-06, -8.867510281618252e-09, 9.997518062591553e-01, 1.000000834465027e+00, 1.353317592293024e-02, 5.527988946596452e-07, -1.175889750015813e-07, 9.999662637710571e-01, 9.999998807907104e-01, 1.83188496157527e-03, 2.402917118615733e-07, -6.69072903747292e-08, 9.999948740005493e-01, 1e+00, 2.480522380210459e-04, 6.159049803500238e-08, 9.864668250083923e-01, 9.999993443489075e-01, 1e+00, 3.36502525897231e-05, 1.18948833005561e-07, 9.981675744056702e-01, 9.999998211860657e-01, 9.999997615814209e-01, 4.725679900730029e-06, 1.557069850832704e-08, 9.997518062591553e-01, 1e+00] +PI.u_m=[0e+00, 7.999613285064697e-01, 7.999998927116394e-01, 9.993249773979187e-01, 9.998183846473694e-01, 1.353093683719635e-01, 8.184672878996935e-06, 1.224560719492726e-06, 9.996612668037415e-01, 1.00000011920929e+00, 1.831605099141598e-02, 1.067165953827498e-06, -8.352562730351565e-08, 9.999488592147827e-01, 1.00000011920929e+00, 2.480595605447888e-03, 1.908314288812107e-06, 8.64668965339662e-01, 9.999897480010986e-01, 1.000002026557922e+00, 3.360485716257244e-04, -7.040729315122007e-07, 9.816854000091553e-01, 9.999992847442627e-01, 1.000000238418579e+00, 4.630057082977146e-05, 2.03595277525892e-06, 9.975259304046631e-01, 9.999973773956299e-01, 1.353321075439453e-01, 6.625230980716879e-06, 1.10339328784903e-07, 9.996681809425354e-01, 9.999977350234985e-01, 1.83164514601227e-02, 7.532439667556901e-07, -7.770736942802614e-08, 9.999510645866394e-01, 9.999999403953552e-01, 2.480918075889349e-03, 4.587218711549212e-07, 8.646659851074219e-01, 9.999925494194031e-01, 1.000000715255737e+00, 3.365180746186525e-04, 7.656259271016097e-08, 9.816745519638062e-01, 1.00000011920929e+00, 9.999999403953552e-01, 4.717896808870137e-05, 1.142659300512605e-07, 9.97530460357666e-01, 9.999994039535522e-01, 1.35333389043808e-01, 6.895077603985555e-06, 9.572113768285817e-09, 9.996634125709534e-01, 1.000003099441528e+00, 1.831984892487526e-02, 1.317246187682031e-06, -1.446918815872777e-07, 9.999543428421021e-01, 9.999978542327881e-01, 2.480831230059266e-03, 1.816982120317334e-07, 8.646711111068726e-01, 9.999862909317017e-01, 1.000000834465027e+00, 3.366625751368569e-04, 1.499120259040861e-07, 9.816842675209045e-01, 9.999991655349731e-01, 1e+00, 4.693740993388928e-05, -2.674643155842205e-07, 9.97524082660675e-01, 9.999994039535522e-01, 1.353356689214706e-01, 9.458044587518089e-06, -3.753690407393151e-07, 9.996687769889832e-01, 9.999980330467224e-01, 1.831101812422276e-02, 1.874063997320263e-07, -5.246774321676639e-07, 9.999561905860901e-01, 9.999985694885254e-01, 2.481806790456176e-03, 3.756725391212967e-06, 8.646728992462158e-01, 9.999894499778748e-01, 1.000000476837158e+00, 3.364414733368903e-04, -5.283280302137427e-08, 9.816861152648926e-01, 9.999992847442627e-01, 9.999993443489075e-01, 4.798597365152091e-05, 2.843148649844807e-06, 9.975267648696899e-01, 9.999982118606567e-01] PIWitTun.u_s=[8.00000011920929e-01, 8.00000011920929e-01] -PIWitTun.u_m=[7.200000286102295e-01, 7.999961376190186e-01, 8.00000011920929e-01, 9.998272657394409e-01, 9.998775124549866e-01, 1.353192888200283e-02, 5.326713790054782e-07, 2.259544018556895e-08, 9.999662637710571e-01, 9.999999403953552e-01, -9.798507392406464e-02, -9.999968856573105e-02, -9.999999403953552e-02, 9.999949336051941e-01, 1.00000011920929e+00, 6.144447922706604e-01, 6.143491268157959e-01, 7.501715421676636e-01, 7.520346641540527e-01, 7.520348429679871e-01, 7.522280812263489e-01, 7.522280812263489e-01, 7.727971076965332e-01, 7.72834837436676e-01, 7.72834837436676e-01, 7.81497061252594e-01, 7.814971208572388e-01, 7.881966233253479e-01, 7.881982922554016e-01, 7.922416925430298e-01, 7.922971844673157e-01, 7.922971844673157e-01, 7.950133681297302e-01, 7.95013427734375e-01, 7.96759307384491e-01, 7.967625260353088e-01, 7.967625260353088e-01, 7.979001998901367e-01, 7.979001998901367e-01, 7.986374497413635e-01, 7.986376285552979e-01, 7.991096973419189e-01, 7.991161942481995e-01, 7.991161942481995e-01, 7.994266152381897e-01, 7.994266152381897e-01, 7.996276617050171e-01, 7.996280193328857e-01, 7.996280193328857e-01, 7.997586727142334e-01, 7.997586727142334e-01, 7.99843430519104e-01, 7.99843430519104e-01, 7.998976707458496e-01, 7.998984456062317e-01, 7.998984456062317e-01, 7.999340891838074e-01, 7.999340891838074e-01, 7.999572157859802e-01, 7.99957275390625e-01, 7.99957275390625e-01, 7.999722957611084e-01, 7.999722957611084e-01, 7.999820113182068e-01, 7.999820113182068e-01, 7.999882698059082e-01, 7.99988329410553e-01, 7.99988329410553e-01, 9.999932050704956e-01, 1e+00, -9.798509627580643e-02, -9.999990463256836e-02, -1.000000014901161e-01, 9.999949336051941e-01, 1e+00, 8.536804914474487e-01, 8.536440134048462e-01, 8.523020148277283e-01, 8.522835969924927e-01, 8.522835969924927e-01, 8.29795241355896e-01, 8.297944664955139e-01, 8.202488422393799e-01, 8.202313184738159e-01, 8.202313184738159e-01, 8.128827214241028e-01, 8.128827214241028e-01, 8.083930015563965e-01, 8.083919286727905e-01, 8.054624199867249e-01, 8.054221868515015e-01, 8.054221868515015e-01, 8.035137057304382e-01, 8.035136461257935e-01, 8.022767305374146e-01, 8.022744655609131e-01, 8.022744655609131e-01, 8.014729022979736e-01, 8.014729022979736e-01, 8.009538054466248e-01, 8.009536862373352e-01] +PIWitTun.u_m=[0e+00, 7.999613285064697e-01, 7.999998927116394e-01, 9.993249773979187e-01, 9.998183846473694e-01, 1.353093683719635e-01, 8.184672878996935e-06, 1.224560719492726e-06, 9.996612668037415e-01, 1.00000011920929e+00, -7.985234260559082e-02, -9.999882429838181e-02, -1.000000908970833e-01, 9.99943733215332e-01, 1.00000011920929e+00, 1.09543964266777e-01, 1.073313131928444e-01, 5.112127661705024e-01, 5.744205117225647e-01, 5.744262933731079e-01, 6.227872371673584e-01, 6.228035092353821e-01, 7.029169201850891e-01, 7.044114470481873e-01, 7.04411506652832e-01, 7.408342957496643e-01, 7.408359050750732e-01, 7.652484774589539e-01, 7.653089761734009e-01, 7.773481011390686e-01, 7.792323231697083e-01, 7.79232382774353e-01, 7.876642942428589e-01, 7.876670956611633e-01, 7.925620079040527e-01, 7.926533222198486e-01, 7.926533222198486e-01, 7.956287264823914e-01, 7.956288456916809e-01, 7.973936200141907e-01, 7.973980307579041e-01, 7.983088493347168e-01, 7.984514236450195e-01, 7.984514236450195e-01, 7.99078106880188e-01, 7.990782856941223e-01, 7.994446158409119e-01, 7.994514107704163e-01, 7.994514107704163e-01, 7.996734976768494e-01, 7.996734976768494e-01, 7.998053431510925e-01, 7.998057007789612e-01, 7.998737096786499e-01, 7.998843193054199e-01, 7.998843193054199e-01, 7.999311685562134e-01, 7.999311685562134e-01, 7.999585270881653e-01, 7.999590039253235e-01, 7.999590039253235e-01, 7.999756336212158e-01, 7.999756336212158e-01, 7.999854683876038e-01, 7.999854683876038e-01, 7.999905943870544e-01, 7.999913692474365e-01, 7.999913692474365e-01, 9.999326467514038e-01, 9.999999403953552e-01, -7.985270023345947e-02, -9.999909996986389e-02, -1.000000014901161e-01, 9.999483823776245e-01, 1.000000238418579e+00, 8.543342351913452e-01, 8.539727926254272e-01, 8.491872549057007e-01, 8.484383225440979e-01, 8.484382629394531e-01, 8.252913355827332e-01, 8.252837061882019e-01, 8.163015246391296e-01, 8.16133975982666e-01, 8.16133975982666e-01, 8.094805479049683e-01, 8.094802498817444e-01, 8.057648539543152e-01, 8.057556748390198e-01, 8.037608861923218e-01, 8.034487366676331e-01, 8.034487366676331e-01, 8.020777702331543e-01, 8.020773530006409e-01, 8.012638092041016e-01, 8.012486100196838e-01, 8.012486100196838e-01, 8.007512092590332e-01, 8.007511496543884e-01, 8.004524707794189e-01, 8.004517555236816e-01] autTunSig.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] PIWitTun.inTunPro.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] -PIWitTun.con.y=[7.999999821186066e-02, 1e+00, 9.999678134918213e-01, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 6.647452116012573e-01, 6.287478208541869e-01, 6.918767690658569e-01, 7.25303590297699e-01, 7.334831953048706e-01, 7.418685555458069e-01, 7.505014538764954e-01, 7.59077787399292e-01, 7.676759362220764e-01, 7.717235684394836e-01, 7.766078114509583e-01, 7.814971208572388e-01, 7.835359573364258e-01, 7.868661880493164e-01, 7.884739637374878e-01, 7.905978560447693e-01, 7.919707894325256e-01, 7.933498024940491e-01, 7.947361469268799e-01, 7.953265309333801e-01, 7.962239980697632e-01, 7.967352867126465e-01, 7.973175048828125e-01, 7.979001998901367e-01, 7.981085181236267e-01, 7.984864711761475e-01, 7.986748218536377e-01, 7.989200353622437e-01, 7.990775108337402e-01, 7.992357611656189e-01, 7.993947863578796e-01, 7.994629144668579e-01, 7.995660901069641e-01, 7.996248006820679e-01, 7.996917366981506e-01, 7.997586727142334e-01, 7.997826337814331e-01, 7.998260855674744e-01, 7.998477220535278e-01, 7.998759150505066e-01, 7.998939752578735e-01, 7.9991215467453e-01, 7.999304533004761e-01, 7.999382615089417e-01, 7.99950122833252e-01, 7.999568581581116e-01, 7.999645471572876e-01, 7.999722957611084e-01, 7.999750375747681e-01, 7.999799847602844e-01, 7.99982488155365e-01, 7.999857664108276e-01, 7.9998779296875e-01, 7.999898791313171e-01, 7.999920248985291e-01, 7.413787245750424e-01, 7.053810954093936e-01, 9.122946858406067e-01, 1e+00, 1e+00, 9.0428227186203e-01, 8.681119680404663e-01, 8.697413206100464e-01, 8.600447773933411e-01, 8.505938649177551e-01, 8.411409258842468e-01, 8.316855430603027e-01, 8.288524150848389e-01, 8.234642744064331e-01, 8.201979398727417e-01, 8.165414929389954e-01, 8.128827214241028e-01, 8.116536140441895e-01, 8.093238472938538e-01, 8.081538677215576e-01, 8.066363334655762e-01, 8.056655526161194e-01, 8.046903610229492e-01, 8.037097454071045e-01, 8.032911419868469e-01, 8.026557564735413e-01, 8.022952675819397e-01, 8.018842339515686e-01, 8.014729022979736e-01, 8.0132657289505e-01, 8.010601997375488e-01, 8.009279370307922e-01, 8.00755500793457e-01] -PIWitTun.con.k=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.508773267269135e-01, 1.516000777482986e-01, 1.516000777482986e-01, 1.516000777482986e-01, 1.516000777482986e-01, 1.516000777482986e-01, 1.516000777482986e-01, 1.516000777482986e-01, 1.516000777482986e-01, 1.516000777482986e-01, 1.516000777482986e-01, 1.516000777482986e-01, 1.516000777482986e-01, 1.516000777482986e-01, 1.516000777482986e-01, 1.516000777482986e-01, 1.516000777482986e-01, 1.516000777482986e-01, 1.516000777482986e-01, 1.516000777482986e-01, 1.516000777482986e-01, 1.516000777482986e-01, 1.516000777482986e-01, 1.516000777482986e-01, 1.516000777482986e-01, 1.516000777482986e-01, 1.516000777482986e-01, 1.516000777482986e-01, 1.516000777482986e-01] -PIWitTun.con.Ti=[5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382839202880859e+01, 8.382736968994141e+01, 8.382736968994141e+01, 8.382736968994141e+01, 8.382736968994141e+01, 8.382736968994141e+01, 8.382736968994141e+01, 8.382736968994141e+01, 8.382736968994141e+01, 8.382736968994141e+01, 8.382736968994141e+01, 8.382736968994141e+01, 8.382736968994141e+01, 8.382736968994141e+01, 8.382736968994141e+01, 8.382736968994141e+01, 8.382736968994141e+01, 8.382736968994141e+01, 8.382736968994141e+01, 8.382736968994141e+01, 8.382736968994141e+01, 8.382736968994141e+01, 8.382736968994141e+01, 8.382736968994141e+01, 8.382736968994141e+01, 8.382736968994141e+01, 8.382736968994141e+01, 8.382736968994141e+01, 8.382736968994141e+01] +PIWitTun.con.y=[8.00000011920929e-01, 1e+00, 9.999609589576721e-01, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1.654285043478012e-01, 1.239270716905593e-01, 3.15449059009552e-01, 4.594592750072479e-01, 5.284975171089172e-01, 5.666446089744568e-01, 6.134434342384338e-01, 6.455934047698975e-01, 6.823538541793823e-01, 7.013773918151855e-01, 7.210043668746948e-01, 7.40835964679718e-01, 7.481247186660767e-01, 7.603991627693176e-01, 7.662855386734009e-01, 7.734745740890503e-01, 7.784460783004761e-01, 7.824967503547668e-01, 7.868053913116455e-01, 7.885597944259644e-01, 7.911180853843689e-01, 7.925929427146912e-01, 7.941046357154846e-01, 7.956288456916809e-01, 7.961284518241882e-01, 7.97035276889801e-01, 7.974803447723389e-01, 7.980195879936218e-01, 7.983909845352173e-01, 7.986927628517151e-01, 7.990140318870544e-01, 7.99145519733429e-01, 7.993366718292236e-01, 7.994468212127686e-01, 7.995597124099731e-01, 7.996734976768494e-01, 7.997108101844788e-01, 7.997785806655884e-01, 7.99811840057373e-01, 7.998520731925964e-01, 7.998798489570618e-01, 7.999023795127869e-01, 7.999263405799866e-01, 7.999361753463745e-01, 7.999504804611206e-01, 7.999587059020996e-01, 7.999671101570129e-01, 7.999756336212158e-01, 7.999783754348755e-01, 7.999834418296814e-01, 7.99985945224762e-01, 7.999889254570007e-01, 7.999910116195679e-01, 7.999926805496216e-01, 7.999945282936096e-01, 7.394298315048214e-01, 6.979268789291385e-01, 8.955410122871399e-01, 1e+00, 1e+00, 9.11681056022644e-01, 8.704586625099182e-01, 8.684061765670776e-01, 8.57336163520813e-01, 8.471353054046631e-01, 8.372619152069092e-01, 8.272800445556641e-01, 8.244693875312805e-01, 8.192601799964905e-01, 8.161055445671082e-01, 8.128050565719604e-01, 8.094802498817444e-01, 8.084906935691833e-01, 8.065370917320251e-01, 8.055823445320129e-01, 8.043975830078125e-01, 8.035956025123596e-01, 8.029301762580872e-01, 8.022194504737854e-01, 8.019335269927979e-01, 8.015055060386658e-01, 8.012635707855225e-01, 8.010084629058838e-01, 8.007511496543884e-01, 8.00668478012085e-01, 8.005136847496033e-01, 8.00439178943634e-01, 8.003461956977844e-01] +PIWitTun.con.k=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.655071228742599e-01, 1.655071228742599e-01, 1.655071228742599e-01, 1.655071228742599e-01, 1.655071228742599e-01, 1.655071228742599e-01, 1.655071228742599e-01, 1.655071228742599e-01, 1.655071228742599e-01, 1.655071228742599e-01, 1.655071228742599e-01, 1.655071228742599e-01, 1.655071228742599e-01, 1.655071228742599e-01, 1.655071228742599e-01, 1.655071228742599e-01, 1.655071228742599e-01, 1.655071228742599e-01, 1.655071228742599e-01, 1.655071228742599e-01, 1.655071228742599e-01, 1.655071228742599e-01, 1.655071228742599e-01, 1.655071228742599e-01, 1.655071228742599e-01, 1.655071228742599e-01, 1.655071228742599e-01, 1.655071228742599e-01] +PIWitTun.con.Ti=[5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 8.031418609619141e+01, 8.031418609619141e+01, 8.031418609619141e+01, 8.031418609619141e+01, 8.031418609619141e+01, 8.031418609619141e+01, 8.031418609619141e+01, 8.031418609619141e+01, 8.031418609619141e+01, 8.031418609619141e+01, 8.031418609619141e+01, 8.031418609619141e+01, 8.031418609619141e+01, 8.031418609619141e+01, 8.031418609619141e+01, 8.031418609619141e+01, 8.031418609619141e+01, 8.031418609619141e+01, 8.031418609619141e+01, 8.031418609619141e+01, 8.031418609619141e+01, 8.031418609619141e+01, 8.031418609619141e+01, 8.031418609619141e+01, 8.031418609619141e+01, 8.031418609619141e+01, 8.031418609619141e+01, 8.031418609619141e+01] diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIDWithFirstOrderAMIGO.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIDWithFirstOrderAMIGO.mos new file mode 100644 index 00000000000..cf385fd75f9 --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIDWithFirstOrderAMIGO.mos @@ -0,0 +1,9 @@ +simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.DirectActingPIDWithFirstOrderAMIGO", stopTime=10000, method="Cvode", tolerance=1e-06, resultFile="PIDWithFirstOrderAMIGO"); +createPlot(id=1, position={58, 0, 954, 958}, y={"PID.u_s", "PID.u_m"}, range={0.0, 10000.0, -1.0, 2.0}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}, timeUnit="s"); +createPlot(id=1, position={58, 0, 954, 958}, y={"PIDWitTun.u_s", "PIDWitTun.u_m"}, range={0.0, 10000.0, -1.0, 2.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}, timeUnit="s"); +createPlot(id=1, position={58, 0, 954, 958}, y={"autTunSig.y"}, range={0.0, 10000.0, -1.0, 2.0}, grid=true, subPlot=103, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=1, position={58, 0, 954, 958}, y={"PIDWitTun.inTunPro.y"}, range={0.0, 10000.0, -1.0, 2.0}, grid=true, subPlot=104, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=2, position={1048, 3, 697, 956}, y={"PIDWitTun.con.y"}, range={0.0, 10000.0, -1.0, 2.0}, grid=true, subPlot=101, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=2, position={1048, 3, 697, 956}, y={"PIDWitTun.con.k"}, range={0.0, 10000.0, 0.0, 1.5}, grid=true, subPlot=102, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=2, position={1048, 3, 697, 956}, y={"PIDWitTun.con.Ti"}, range={0.0, 10000.0, -50.0, 100.0}, grid=true, subPlot=103, colors={{28,108,200}}, timeUnit="s", displayUnits={"s"}); +createPlot(id=2, position={1048, 3, 697, 956}, y={"PIDWitTun.con.Td"}, range={0.0, 10000.0, 0.0, 3.0}, grid=true, subPlot=104, colors={{28,108,200}}, timeUnit="s", displayUnits={"s"}); \ No newline at end of file diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIWithFirstOrderAMIGO.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIWithFirstOrderAMIGO.mos new file mode 100644 index 00000000000..600022cf508 --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIWithFirstOrderAMIGO.mos @@ -0,0 +1,8 @@ +simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.DirectActingPIWithFirstOrderAMIGO", stopTime=10000, method="Cvode", tolerance=1e-06, resultFile="PIWithFirstOrderAMIGO"); +createPlot(id=1, position={58, 0, 954, 958}, y={"PI.u_s", "PI.u_m"}, range={0.0, 10000.0, -1.0, 2.0}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}, timeUnit="s"); +createPlot(id=1, position={58, 0, 954, 958}, y={"PIWitTun.u_s", "PIWitTun.u_m"}, range={0.0, 10000.0, -1.0, 2.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}, timeUnit="s"); +createPlot(id=1, position={58, 0, 954, 958}, y={"autTunSig.y"}, range={0.0, 10000.0, -1.0, 2.0}, grid=true, subPlot=103, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=1, position={58, 0, 954, 958}, y={"PIWitTun.inTunPro.y"}, range={0.0, 10000.0, -1.0, 2.0}, grid=true, subPlot=104, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=2, position={1048, 3, 697, 956}, y={"PIWitTun.con.y"}, range={0.0, 10000.0, -1.0, 2.0}, grid=true, subPlot=101, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=2, position={1048, 3, 697, 956}, y={"PIWitTun.con.k"}, range={0.0, 10000.0, 0.0, 1.5}, grid=true, subPlot=102, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=2, position={1048, 3, 697, 956}, y={"PIWitTun.con.Ti"}, range={0.0, 10000.0, -50.0, 100.0}, grid=true, subPlot=103, colors={{28,108,200}}, timeUnit="s", displayUnits={"s"}); \ No newline at end of file diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.DirectActingPIDWithFirstOrderAMIGO.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.DirectActingPIDWithFirstOrderAMIGO.mos new file mode 100644 index 00000000000..5f591c78f3b --- /dev/null +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.DirectActingPIDWithFirstOrderAMIGO.mos @@ -0,0 +1,13 @@ +compareVars := + { + "PID.u_s", + "PID.u_m", + "PIDWitTun.u_s", + "PIDWitTun.u_m", + "autTunSig.y", + "PIDWitTun.inTunPro.y", + "PIDWitTun.con.y", + "PIDWitTun.con.k", + "PIDWitTun.con.Ti", + "PIDWitTun.con.Td" + }; diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.DirectActingPIWithFirstOrderAMIGO.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.DirectActingPIWithFirstOrderAMIGO.mos new file mode 100644 index 00000000000..30175c0011f --- /dev/null +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.DirectActingPIWithFirstOrderAMIGO.mos @@ -0,0 +1,12 @@ +compareVars := + { + "PI.u_s", + "PI.u_m", + "PIWitTun.u_s", + "PIWitTun.u_m", + "autTunSig.y", + "PIWitTun.inTunPro.y", + "PIWitTun.con.y", + "PIWitTun.con.k", + "PIWitTun.con.Ti" + }; From 064c9eba4fbb070f304b5106378de453a99835fd Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Tue, 28 Nov 2023 15:32:28 -0500 Subject: [PATCH 131/214] add one more realistic control example --- .../WetCoilCounterFlowPControlAutoTuning.mo | 220 ++++++++++++++++++ .../HeatExchangers/Examples/package.order | 1 + 2 files changed, 221 insertions(+) create mode 100644 Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo diff --git a/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo b/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo new file mode 100644 index 00000000000..184b3cba57d --- /dev/null +++ b/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo @@ -0,0 +1,220 @@ +within Buildings.Fluid.HeatExchangers.Examples; +model WetCoilCounterFlowPControlAutoTuning + "Model that demonstrates use of a heat exchanger with condensation and with feedback control" + extends Modelica.Icons.Example; + package Medium1 = Buildings.Media.Water; + package Medium2 = Buildings.Media.Air; + parameter Modelica.Units.SI.Temperature T_a1_nominal=5 + 273.15; + parameter Modelica.Units.SI.Temperature T_b1_nominal=10 + 273.15; + parameter Modelica.Units.SI.Temperature T_a2_nominal=30 + 273.15; + parameter Modelica.Units.SI.Temperature T_b2_nominal=15 + 273.15; + parameter Modelica.Units.SI.MassFlowRate m1_flow_nominal=0.1 + "Nominal mass flow rate medium 1"; + parameter Modelica.Units.SI.MassFlowRate m2_flow_nominal=m1_flow_nominal*4200 + /1000*(T_a1_nominal - T_b1_nominal)/(T_b2_nominal - T_a2_nominal) + "Nominal mass flow rate medium 2"; + Buildings.Fluid.Sources.Boundary_pT sin_2( + redeclare package Medium = Medium2, + nPorts=1, + use_p_in=false, + p(displayUnit="Pa") = 101325, + T=303.15) annotation (Placement(transformation(extent={{-80,10},{-60,30}}))); + Buildings.Fluid.Sources.Boundary_pT sou_2( + redeclare package Medium = Medium2, + nPorts=1, + T=T_a2_nominal, + X={0.02,1 - 0.02}, + use_T_in=true, + use_X_in=true, + p(displayUnit="Pa") = 101325 + 300) annotation (Placement(transformation( + extent={{140,10},{120,30}}))); + Buildings.Fluid.Sources.Boundary_pT sin_1( + redeclare package Medium = Medium1, + nPorts=1, + use_p_in=false, + p=300000, + T=293.15) annotation (Placement(transformation(extent={{140,50},{120,70}}))); + Buildings.Fluid.Sources.Boundary_pT sou_1( + redeclare package Medium = Medium1, + nPorts=1, + use_T_in=true, + p=300000 + 12000) + annotation (Placement(transformation(extent={{-40,50},{-20, + 70}}))); + Buildings.Fluid.FixedResistances.PressureDrop res_2( + from_dp=true, + redeclare package Medium = Medium2, + dp_nominal=100, + m_flow_nominal=m2_flow_nominal) + annotation (Placement(transformation(extent={{-20,10},{-40,30}}))); + Buildings.Fluid.FixedResistances.PressureDrop res_1( + from_dp=true, + redeclare package Medium = Medium1, + dp_nominal=3000, + m_flow_nominal=m1_flow_nominal) + annotation (Placement(transformation(extent={{90,50},{110,70}}))); + Buildings.Fluid.Sensors.TemperatureTwoPort temSen(redeclare package Medium = + Medium2, m_flow_nominal=m2_flow_nominal) + annotation (Placement(transformation(extent={{20,10},{0,30}}))); + Buildings.Fluid.Actuators.Valves.TwoWayEqualPercentage val( + redeclare package Medium = Medium1, + m_flow_nominal=m1_flow_nominal, + dpValve_nominal=6000) "Valve model" annotation (Placement( + transformation(extent={{30,50},{50,70}}))); + Modelica.Blocks.Sources.TimeTable TSet(table=[0,288.15; 600,288.15; 600, + 298.15; 1200,298.15; 1800,283.15; 2400,283.15; 2400,288.15]) + "Setpoint temperature" annotation (Placement(transformation(extent={{-80,90}, + {-60,110}}))); + Buildings.Fluid.HeatExchangers.WetCoilCounterFlow hex( + redeclare package Medium1 = Medium1, + redeclare package Medium2 = Medium2, + m1_flow_nominal=m1_flow_nominal, + m2_flow_nominal=m2_flow_nominal, + dp2_nominal(displayUnit="Pa") = 200, + allowFlowReversal1=true, + allowFlowReversal2=true, + dp1_nominal(displayUnit="Pa") = 3000, + UA_nominal=2*m1_flow_nominal*4200*(T_a1_nominal - T_b1_nominal)/ + Buildings.Fluid.HeatExchangers.BaseClasses.lmtd( + T_a1_nominal, + T_b1_nominal, + T_a2_nominal, + T_b2_nominal), + show_T=true, + energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial) + annotation (Placement(transformation(extent={{60, + 16},{80,36}}))); + Modelica.Blocks.Sources.Constant const(k=0.8) + annotation (Placement(transformation(extent={{100,-70},{120,-50}}))); + Buildings.Utilities.Psychrometrics.X_pTphi x_pTphi(use_p_in=false) + annotation (Placement(transformation(extent={{150,-42},{170,-22}}))); + Modelica.Blocks.Sources.Constant const1(k=T_a2_nominal) + annotation (Placement(transformation(extent={{100,-38},{120,-18}}))); + Controls.OBC.Utilities.PIDWithAutotuning.FirstOrderAMIGO + con(controllerType=Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PI, + reverseActing=false) + "Controller" + annotation (Placement(transformation(extent={{0,90},{20,110}}))); + Modelica.Blocks.Sources.Ramp TWat( + height=30, + offset=T_a1_nominal, + startTime=300, + duration=2000) "Water temperature, raised to high value at t=3000 s" + annotation (Placement(transformation(extent={{-80,54},{-60,74}}))); + Controls.OBC.CDL.Logical.Sources.Constant resSig(k=false) + "Reset signal" + annotation (Placement(transformation(extent={{-80,160},{-60,180}}))); + Controls.OBC.CDL.Logical.Sources.Pulse autTunSig( + width=0.9, + period=4000, + shift=400) "Signal for enabling the autotuning" + annotation (Placement(transformation(extent={{20,160},{40,180}}))); + Controls.OBC.CDL.Reals.MultiplyByParameter gai(k=310) + annotation (Placement(transformation(extent={{-38,94},{-26,106}}))); + Controls.OBC.CDL.Reals.MultiplyByParameter gai1(k=310) annotation (Placement( + transformation( + extent={{6,-6},{-6,6}}, + rotation=-90, + origin={10,48}))); +equation + connect(hex.port_b1, res_1.port_a) annotation (Line(points={{80,32},{86,32},{ + 86,60},{90,60}}, color={0,127,255})); + connect(val.port_b, hex.port_a1) annotation (Line(points={{50,60},{52,60},{52, + 32},{60,32}}, color={0,127,255})); + connect(sou_1.ports[1], val.port_a) annotation (Line( + points={{-20,60},{30,60}}, + color={0,127,255}, + smooth=Smooth.None)); + connect(sin_1.ports[1], res_1.port_b) annotation (Line( + points={{120,60},{110,60}}, + color={0,127,255}, + smooth=Smooth.None)); + connect(sin_2.ports[1], res_2.port_b) annotation (Line( + points={{-60,20},{-40,20}}, + color={0,127,255}, + smooth=Smooth.None)); + connect(sou_2.ports[1], hex.port_a2) annotation (Line( + points={{120,20},{80,20}}, + color={0,127,255}, + smooth=Smooth.None)); + connect(hex.port_b2, temSen.port_a) annotation (Line( + points={{60,20},{20,20}}, + color={0,127,255}, + smooth=Smooth.None)); + connect(temSen.port_b, res_2.port_a) annotation (Line( + points={{-5.55112e-16,20},{-20,20}}, + color={0,127,255}, + smooth=Smooth.None)); + connect(x_pTphi.X, sou_2.X_in) annotation (Line( + points={{171,-32},{178,-32},{178,-34},{186,-34},{186,16},{142,16}}, + color={0,0,127}, + smooth=Smooth.None)); + connect(const.y, x_pTphi.phi) annotation (Line( + points={{121,-60},{136,-60},{136,-38},{148,-38}}, + color={0,0,127}, + smooth=Smooth.None)); + connect(const1.y, x_pTphi.T) annotation (Line( + points={{121,-28},{134,-28},{134,-32},{148,-32}}, + color={0,0,127}, + smooth=Smooth.None)); + connect(const1.y, sou_2.T_in) annotation (Line( + points={{121,-28},{134,-28},{134,0},{160,0},{160,24},{142,24}}, + color={0,0,127}, + smooth=Smooth.None)); + connect(TWat.y, sou_1.T_in) annotation (Line( + points={{-59,64},{-42,64}}, + color={0,0,127}, + smooth=Smooth.None)); + connect(con.y, val.y) annotation (Line( + points={{22,100},{40,100},{40,72}}, + color={0,0,127}, + smooth=Smooth.None)); + connect(resSig.y, con.triRes) annotation (Line(points={{-58,170},{-8,170},{-8, + 82},{4,82},{4,88}}, color={255,0,255})); + connect(autTunSig.y, con.triTun) annotation (Line(points={{42,170},{74,170},{ + 74,82},{16,82},{16,88}}, color={255,0,255})); + connect(TSet.y, gai.u) + annotation (Line(points={{-59,100},{-39.2,100}}, color={0,0,127})); + connect(gai.y, con.u_s) + annotation (Line(points={{-24.8,100},{-2,100}}, color={0,0,127})); + connect(gai1.u, temSen.T) + annotation (Line(points={{10,40.8},{10,31}}, color={0,0,127})); + connect(gai1.y, con.u_m) + annotation (Line(points={{10,55.2},{10,88}}, color={0,0,127})); + annotation (Diagram(coordinateSystem(preserveAspectRatio=true, extent={{-100, + -100},{200,200}})), +experiment(Tolerance=1e-6, StopTime=3600), +__Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControl.mos" + "Simulate and plot"), +Documentation(info=" +

                                  +This example is identical to + +Buildings.Fluid.HeatExchangers.Examples.WetCoilCounterFlowMassFlow except that the PI controller +is replaced by an autotuning PI controller. +

                                  +", +revisions=" +
                                    +
                                  • +November 28, 2023, by Sen Huang:
                                    +Replaced the PI controller with an autotuning PI controller. +
                                  • +
                                  • +December 22, 2014 by Michael Wetter:
                                    +Removed Modelica.Fluid.System +to address issue +#311. +
                                  • +
                                  • +March 1, 2013, by Michael Wetter:
                                    +Added nominal pressure drop for valve as +this parameter no longer has a default value. +
                                  • +
                                  • +May 27, 2010, by Michael Wetter:
                                    +First implementation. +
                                  • +
                                  +")); +end WetCoilCounterFlowPControlAutoTuning; diff --git a/Buildings/Fluid/HeatExchangers/Examples/package.order b/Buildings/Fluid/HeatExchangers/Examples/package.order index 2ad9a3f6d95..0555f4a8258 100644 --- a/Buildings/Fluid/HeatExchangers/Examples/package.order +++ b/Buildings/Fluid/HeatExchangers/Examples/package.order @@ -11,6 +11,7 @@ WaterCooler_T WaterHeater_T WaterHeater_u WetCoilCounterFlowMassFlow +WetCoilCounterFlowPControlAutoTuning WetCoilCounterFlowPControl WetCoilDiscretizedMassFlow WetCoilDiscretizedPControl From e8959f3344d8d5a4d065639399d73aab83fbdec9 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Wed, 29 Nov 2023 13:18:59 -0500 Subject: [PATCH 132/214] clean up and add scripts/reference data --- .../PIDWithAutotuning/FirstOrderAMIGO.mo | 17 +++----- .../FirstOrderTimedelayed/BaseClasses/Gain.mo | 18 ++++----- .../DirectActingPIDWithFirstOrderAMIGO.mo | 8 ++-- .../DirectActingPIWithFirstOrderAMIGO.mo | 11 ++---- .../Validation/PIDWithFirstOrderAMIGO.mo | 8 ++-- .../Validation/PIWithFirstOrderAMIGO.mo | 8 ++-- .../WetCoilCounterFlowPControlAutoTuning.mo | 39 +++++++------------ ...s_WetCoilCounterFlowPControlAutoTuning.txt | 19 +++++++++ .../WetCoilCounterFlowPControlAutoTuning.mos | 5 +++ ...s.WetCoilCounterFlowPControlAutoTuning.mos | 8 ++++ 10 files changed, 74 insertions(+), 67 deletions(-) create mode 100644 Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_HeatExchangers_Examples_WetCoilCounterFlowPControlAutoTuning.txt create mode 100644 Buildings/Resources/Scripts/Dymola/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mos create mode 100644 Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.HeatExchangers.Examples.WetCoilCounterFlowPControlAutoTuning.mos diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index dcd782c19e0..b9dc2bb4f79 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -4,7 +4,6 @@ block FirstOrderAMIGO parameter Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController controllerType= Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PI "Type of controller"; - parameter Real k_start( min=100*Buildings.Controls.OBC.CDL.Constants.eps)=1 "Start value of the gain of controller" @@ -22,7 +21,6 @@ block FirstOrderAMIGO "Start value of the time constant of derivative block" annotation (Dialog(group="Initial control gains, used prior to first tuning", enable=controllerType == Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PID)); - parameter Real r( min=100*Buildings.Controls.OBC.CDL.Constants.eps)=1 "Typical range of control error, used for scaling the control error"; @@ -151,7 +149,7 @@ protected "Type of controller"; equation - connect(con.u_s, u_s) annotation (Line(points={{-42,-40},{-48,-40},{-48,0},{-200, + connect(con.u_s, u_s) annotation (Line(points={{-42,-40},{-48,-40},{-48,0},{-200, 0}}, color={0,0,127})); connect(rel.u_s, u_s) annotation (Line(points={{-42,40},{-122,40},{-122,0},{-200, 0}}, color={0,0,127})); @@ -181,10 +179,8 @@ equation connect(rel.yErr, conProMod.u) annotation (Line(points={{-18,40},{-12,40},{-12, 60},{34,60},{34,48},{38,48}}, color={0,0,127})); - connect(PIDPar.kp, conProMod.k) - annotation (Line(points={{78,46},{62,46}}, color={0,0,127})); - connect(PIDPar.T, conProMod.T) - annotation (Line(points={{78,40},{62,40}}, color={0,0,127})); + connect(PIDPar.kp, conProMod.k) annotation (Line(points={{78,46},{62,46}}, color={0,0,127})); + connect(PIDPar.T, conProMod.T) annotation (Line(points={{78,40},{62,40}}, color={0,0,127})); connect(PIDPar.L, conProMod.L) annotation (Line(points={{78,34},{62,34}}, color={0,0,127})); connect(PIDPar.k, samk.u) annotation (Line(points={{102,47},{110,47},{110,96}, @@ -223,8 +219,7 @@ equation connect(PIDPar.Td, samTd.u) annotation (Line(points={{102,33},{114,33},{114,94}, {-146,94},{-146,-80},{-122,-80}}, color={0,0,127})); - connect(swi.y, y) - annotation (Line(points={{162,0},{200,0}}, color={0,0,127})); + connect(swi.y, y) annotation (Line(points={{162,0},{200,0}}, color={0,0,127})); connect(u_m,con. u_m) annotation (Line(points={{0,-120},{0,-90},{-30,-90},{-30, -52}}, color={0,0,127})); connect(rel.y, swi.u1) annotation (Line(points={{-18,46},{-16,46},{-16,88},{130, @@ -245,9 +240,7 @@ equation connect(resPro.trigger, triTun) annotation (Line(points={{-2,34},{-8,34},{-8,-20}, {8,-20},{8,-88},{60,-88},{60,-120}}, color={255,0,255})); - connect(nand.y, assMes.u) - annotation (Line(points={{142,-80},{146,-80}}, - color={255,0,255})); + connect(nand.y, assMes.u) annotation (Line(points={{142,-80},{146,-80}}, color={255,0,255})); connect(nand.u2, triTun) annotation (Line(points={{118,-88},{60,-88},{60,-120}}, color={255,0,255})); connect(nand.u1, inTunPro.y) annotation (Line(points={{118,-80},{114,-80},{114, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Gain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Gain.mo index c293960ad99..909059a5713 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Gain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Gain.mo @@ -38,14 +38,13 @@ protected "Integral of the process output" annotation (Placement(transformation(extent={{-10,30},{10,50}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant refRelOut( - final k=0) - "Reference value of the relay control output" + final k=0) "Reference value of the relay control output" annotation (Placement(transformation(extent={{-60,10},{-40,30}}))); Buildings.Controls.OBC.CDL.Reals.Divide divIyIu "Calculate the gain" - annotation (Placement(transformation(extent={{60,-10},{80,10}}))); + annotation (Placement(transformation(extent={{40,-10},{60,10}}))); Buildings.Controls.OBC.CDL.Reals.AddParameter addPar(final p=1E-3) "Block that avoids a divide-by-zero error" - annotation (Placement(transformation(extent={{20,-50},{40,-30}}))); + annotation (Placement(transformation(extent={{8,-50},{28,-30}}))); Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter gaiOnyHig( final k=yHig) "Product of tOn and yHig" @@ -62,12 +61,11 @@ equation {-20,32},{-12,32}}, color={0,0,127})); connect(Iy.trigger, triSta) annotation (Line(points={{0,28},{0,-120}}, color={255,0,255})); - connect(divIyIu.u1, Iy.y) annotation (Line(points={{58,6},{40,6},{40,40},{12, + connect(divIyIu.u1, Iy.y) annotation (Line(points={{38,6},{18,6},{18,40},{12, 40}}, color={0,0,127})); - connect(Iu.y, addPar.u) annotation (Line(points={{-18,-40},{18,-40}},color={0,0,127})); - connect(addPar.y, divIyIu.u2) annotation (Line(points={{42,-40},{50,-40},{50, - -6},{58,-6}}, color={0,0,127})); - connect(divIyIu.y, k) annotation (Line(points={{82,0},{120,0}}, color={0,0,127})); + connect(Iu.y, addPar.u) annotation (Line(points={{-18,-40},{6,-40}}, color={0,0,127})); + connect(addPar.y, divIyIu.u2) annotation (Line(points={{30,-40},{32,-40},{32, + -6},{38,-6}}, color={0,0,127})); connect(gaiOnyHig.u, tOn) annotation (Line(points={{-82,-20},{-120,-20}}, color={0,0,127})); connect(gaiOnyHig.y, Iu.u1) annotation (Line(points={{-58,-20},{-50,-20},{-50, @@ -76,6 +74,8 @@ equation annotation (Line(points={{-82,-80},{-120,-80}}, color={0,0,127})); connect(gaiOffyLow.y, Iu.u2) annotation (Line(points={{-58,-80},{-50,-80},{-50, -46},{-42,-46}}, color={0,0,127})); + connect(divIyIu.y, k) + annotation (Line(points={{62,0},{120,0}}, color={0,0,127})); annotation ( defaultComponentName = "gai", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIDWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIDWithFirstOrderAMIGO.mo index 986a1ddf0f2..23671498557 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIDWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIDWithFirstOrderAMIGO.mo @@ -1,6 +1,6 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation; model DirectActingPIDWithFirstOrderAMIGO - "Test model for an autotuning reversed PID controller" + "Test model for an autotuning direct-acting PID controller" Buildings.Controls.OBC.CDL.Reals.Sources.Constant SetPoint(k=0.8) "Setpoint value" annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); @@ -48,13 +48,13 @@ model DirectActingPIDWithFirstOrderAMIGO shift=500) "Signal for enabling the autotuning" annotation (Placement(transformation(extent={{-80,-60},{-60,-40}}))); Buildings.Controls.OBC.CDL.Reals.Subtract sub3 - "A subtract block that is used to mimic the direct acting in the first order process 1" + "A subtract block that is used to mimic the direct-acting in the first order process 1" annotation (Placement(transformation(extent={{14,50},{34,70}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant const(k=1) "constant value 1" annotation (Placement(transformation(extent={{-40,110},{-20,130}}))); Buildings.Controls.OBC.CDL.Reals.Subtract sub4 - "A subtract block that is used to mimic the direct acting in the first order process 2" + "A subtract block that is used to mimic the direct-acting in the first order process 2" annotation (Placement(transformation(extent={{12,-30},{32,-10}}))); equation connect(resSig.y, PID.trigger) annotation (Line(points={{-58,70},{-30,70},{-30, @@ -122,7 +122,7 @@ Buildings.Controls.OBC.Utilities.PIDWithAutotuning.FirstOrderAMIGO.

                                  This example is similar as Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIDWithFirstOrderAMIGO. -However, PI controllers with direct acting are considered. +However, PID controllers with direct acting are considered.

                                  ", revisions=" diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIWithFirstOrderAMIGO.mo index d3b25cd429b..78b0b680856 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIWithFirstOrderAMIGO.mo @@ -89,21 +89,18 @@ equation connect(derivative1.u, sub1.u1) annotation (Line(points={{92,20},{86,20},{86, 86},{132,86}}, color={0,0,127})); connect(derivative2.u, uniDel2.y) annotation (Line(points={{78,-60},{64,-60},{ - 64,-20},{60,-20}}, color={0,0,127})); - connect(autTunSig.y, PIWitTun.triTun) - annotation (Line(points={{-58,-50},{-4,-50},{-4,-32}}, color={255,0,255})); + 64,-20},{60,-20}}, color={0,0,127})); + connect(autTunSig.y, PIWitTun.triTun) annotation (Line(points={{-58,-50},{-4,-50},{-4,-32}}, color={255,0,255})); connect(k.y, derivative2.k) annotation (Line(points={{54,20},{68,20},{68,-52}, {78,-52}}, color={0,0,127})); connect(const.y, sub3.u1) annotation (Line(points={{-18,120},{4,120},{4,66},{ 12,66}}, color={0,0,127})); - connect(PI.y, sub3.u2) - annotation (Line(points={{2,60},{6,60},{6,54},{12,54}}, color={0,0,127})); + connect(PI.y, sub3.u2) annotation (Line(points={{2,60},{6,60},{6,54},{12,54}}, color={0,0,127})); connect(sub3.y, uniDel1.u) annotation (Line(points={{36,60},{48,60}}, color={0,0,127})); connect(PIWitTun.y, sub4.u2) annotation (Line(points={{2,-20},{8,-20},{8,-26}, {10,-26}}, color={0,0,127})); - connect(uniDel2.u, sub4.y) - annotation (Line(points={{36,-20},{34,-20}}, color={0,0,127})); + connect(uniDel2.u, sub4.y) annotation (Line(points={{36,-20},{34,-20}}, color={0,0,127})); connect(sub4.u1, const.y) annotation (Line(points={{10,-14},{4,-14},{4,120},{-18, 120}}, color={0,0,127})); annotation ( diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo index b699ac3db70..ee461a0aaaf 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo @@ -1,5 +1,5 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation; -model PIDWithFirstOrderAMIGO "Test model for an autotuning PID controller" +model PIDWithFirstOrderAMIGO "Test model for an autotuning reverse-acting PID controller" Buildings.Controls.OBC.CDL.Reals.Sources.Constant SetPoint(k=0.8) "Setpoint value" annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); @@ -55,10 +55,8 @@ equation {-48,60},{-22,60}}, color={0,0,127})); connect(SetPoint.y, PID.u_s) annotation (Line(points={{-58,10},{-48,10},{-48,60}, {-22,60}}, color={0,0,127})); - connect(PIDWitTun.y, uniDel2.u) - annotation (Line(points={{2,-20},{18,-20}},color={0,0,127})); - connect(uniDel1.u, PID.y) - annotation (Line(points={{18,60},{2,60}},color={0,0,127})); + connect(PIDWitTun.y, uniDel2.u) annotation (Line(points={{2,-20},{18,-20}},color={0,0,127})); + connect(uniDel1.u, PID.y) annotation (Line(points={{18,60},{2,60}},color={0,0,127})); connect(uniDel1.y, sub1.u1) annotation (Line(points={{42,60},{54,60},{54,86}, {118,86}}, color={0,0,127})); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo index 841dbd69e04..f17b227319b 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo @@ -1,5 +1,5 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation; -model PIWithFirstOrderAMIGO "Test model for an autotuning PI controller" +model PIWithFirstOrderAMIGO "Test model for an autotuning reverse-acting PI controller" Buildings.Controls.OBC.CDL.Reals.Sources.Constant SetPoint(k=0.8) "Setpoint value" annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); @@ -56,10 +56,8 @@ equation 60},{-22,60}}, color={0,0,127})); connect(SetPoint.y, PI.u_s) annotation (Line(points={{-58,10},{-48,10},{-48,60}, {-22,60}}, color={0,0,127})); - connect(PIWitTun.y, uniDel2.u) - annotation (Line(points={{2,-20},{8,-20}}, color={0,0,127})); - connect(uniDel1.u, PI.y) - annotation (Line(points={{8,60},{2,60}}, color={0,0,127})); + connect(PIWitTun.y, uniDel2.u) annotation (Line(points={{2,-20},{8,-20}}, color={0,0,127})); + connect(uniDel1.u, PI.y) annotation (Line(points={{8,60},{2,60}}, color={0,0,127})); connect(uniDel1.y, sub1.u1) annotation (Line(points={{32,60},{40,60},{40,86},{ 58,86}}, color={0,0,127})); connect(k.y, derivative1.k) annotation (Line(points={{158,30},{148,30},{148, diff --git a/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo b/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo index 184b3cba57d..93c959cd27d 100644 --- a/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo +++ b/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo @@ -1,6 +1,6 @@ within Buildings.Fluid.HeatExchangers.Examples; model WetCoilCounterFlowPControlAutoTuning - "Model that demonstrates use of a heat exchanger with condensation and with feedback control" + "Model that demonstrates use of a heat exchanger with condensation and with autotuning feedback control" extends Modelica.Icons.Example; package Medium1 = Buildings.Media.Water; package Medium2 = Buildings.Media.Air; @@ -82,18 +82,17 @@ model WetCoilCounterFlowPControlAutoTuning T_b2_nominal), show_T=true, energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial) - annotation (Placement(transformation(extent={{60, - 16},{80,36}}))); + annotation (Placement(transformation(extent={{60,16},{80,36}}))); Modelica.Blocks.Sources.Constant const(k=0.8) annotation (Placement(transformation(extent={{100,-70},{120,-50}}))); Buildings.Utilities.Psychrometrics.X_pTphi x_pTphi(use_p_in=false) annotation (Placement(transformation(extent={{150,-42},{170,-22}}))); Modelica.Blocks.Sources.Constant const1(k=T_a2_nominal) annotation (Placement(transformation(extent={{100,-38},{120,-18}}))); - Controls.OBC.Utilities.PIDWithAutotuning.FirstOrderAMIGO - con(controllerType=Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PI, + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.FirstOrderAMIGO + con(controllerType=Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PI, reverseActing=false) - "Controller" + "Controller" annotation (Placement(transformation(extent={{0,90},{20,110}}))); Modelica.Blocks.Sources.Ramp TWat( height=30, @@ -101,21 +100,15 @@ model WetCoilCounterFlowPControlAutoTuning startTime=300, duration=2000) "Water temperature, raised to high value at t=3000 s" annotation (Placement(transformation(extent={{-80,54},{-60,74}}))); - Controls.OBC.CDL.Logical.Sources.Constant resSig(k=false) + Buildings.Controls.OBC.CDL.Logical.Sources.Constant resSig(k=false) "Reset signal" annotation (Placement(transformation(extent={{-80,160},{-60,180}}))); - Controls.OBC.CDL.Logical.Sources.Pulse autTunSig( + Buildings.Controls.OBC.CDL.Logical.Sources.Pulse autTunSig( width=0.9, period=4000, - shift=400) "Signal for enabling the autotuning" + shift=400) + "Signal for enabling the autotuning" annotation (Placement(transformation(extent={{20,160},{40,180}}))); - Controls.OBC.CDL.Reals.MultiplyByParameter gai(k=310) - annotation (Placement(transformation(extent={{-38,94},{-26,106}}))); - Controls.OBC.CDL.Reals.MultiplyByParameter gai1(k=310) annotation (Placement( - transformation( - extent={{6,-6},{-6,6}}, - rotation=-90, - origin={10,48}))); equation connect(hex.port_b1, res_1.port_a) annotation (Line(points={{80,32},{86,32},{ 86,60},{90,60}}, color={0,127,255})); @@ -173,18 +166,14 @@ equation 82},{4,82},{4,88}}, color={255,0,255})); connect(autTunSig.y, con.triTun) annotation (Line(points={{42,170},{74,170},{ 74,82},{16,82},{16,88}}, color={255,0,255})); - connect(TSet.y, gai.u) - annotation (Line(points={{-59,100},{-39.2,100}}, color={0,0,127})); - connect(gai.y, con.u_s) - annotation (Line(points={{-24.8,100},{-2,100}}, color={0,0,127})); - connect(gai1.u, temSen.T) - annotation (Line(points={{10,40.8},{10,31}}, color={0,0,127})); - connect(gai1.y, con.u_m) - annotation (Line(points={{10,55.2},{10,88}}, color={0,0,127})); + connect(TSet.y, con.u_s) + annotation (Line(points={{-59,100},{-2,100}}, color={0,0,127})); + connect(temSen.T, con.u_m) + annotation (Line(points={{10,31},{10,88}}, color={0,0,127})); annotation (Diagram(coordinateSystem(preserveAspectRatio=true, extent={{-100, -100},{200,200}})), experiment(Tolerance=1e-6, StopTime=3600), -__Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControl.mos" +__Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mos" "Simulate and plot"), Documentation(info="

                                  diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_HeatExchangers_Examples_WetCoilCounterFlowPControlAutoTuning.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_HeatExchangers_Examples_WetCoilCounterFlowPControlAutoTuning.txt new file mode 100644 index 00000000000..db97e07360d --- /dev/null +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_HeatExchangers_Examples_WetCoilCounterFlowPControlAutoTuning.txt @@ -0,0 +1,19 @@ +last-generated=2023-11-29 +statistics-initialization= +{ + "nonlinear": "1", + "numerical Jacobians": "0" +} +statistics-simulation= +{ + "linear": "0", + "nonlinear": "0, 1", + "number of continuous time states": "22", + "numerical Jacobians": "0" +} +time=[0e+00, 3.6e+03] +con.inTunPro.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +con.u_s=[2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.975499877929688e+02, 2.966499938964844e+02, 2.9575e+02, 2.948500061035156e+02, 2.939500122070312e+02, 2.930499877929688e+02, 2.921499938964844e+02, 2.9125e+02, 2.903500061035156e+02, 2.894500122070312e+02, 2.885499877929688e+02, 2.876499938964844e+02, 2.8675e+02, 2.858500061035156e+02, 2.849500122070312e+02, 2.840499877929688e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02] +con.u_m=[2.931499938964844e+02, 2.910510559082031e+02, 2.910257263183594e+02, 2.91025634765625e+02, 2.910256042480469e+02, 2.910256042480469e+02, 2.910256042480469e+02, 2.910256042480469e+02, 2.910256042480469e+02, 2.911280517578125e+02, 2.913913879394531e+02, 2.916562805175781e+02, 2.919188842773438e+02, 2.921793518066406e+02, 2.924376525878906e+02, 2.926937561035156e+02, 2.929476928710938e+02, 2.938930969238281e+02, 2.991171569824219e+02, 2.963918762207031e+02, 2.970014343261719e+02, 2.984321594238281e+02, 2.986525268554688e+02, 2.984044494628906e+02, 2.981784057617188e+02, 2.981526794433594e+02, 2.982163391113281e+02, 2.9825732421875e+02, 2.982629699707031e+02, 2.98259033203125e+02, 2.982613220214844e+02, 2.982702941894531e+02, 2.982818603515625e+02, 2.982944030761719e+02, 2.982897033691406e+02, 2.980036010742188e+02, 2.977161560058594e+02, 2.978146362304688e+02, 2.980079345703125e+02, 2.982131652832031e+02, 2.984141540527344e+02, 2.986123657226562e+02, 2.988089599609375e+02, 2.990047912597656e+02, 2.992059631347656e+02, 2.994114685058594e+02, 2.99672607421875e+02, 3.000567016601562e+02, 3.004470520019531e+02, 3.008374328613281e+02, 3.012278442382812e+02, 3.016182250976562e+02, 3.020086364746094e+02, 3.023990173339844e+02, 3.027894287109375e+02, 3.031798400878906e+02, 3.035702209472656e+02, 3.039606323242188e+02, 3.043510131835938e+02, 3.047414245605469e+02, 3.051318054199219e+02, 3.05522216796875e+02, 3.0591259765625e+02, 3.063030090332031e+02, 3.066910095214844e+02, 3.067642822265625e+02, 3.067647705078125e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02] +con.PIPar.k=[2.5e-01, 2.5e-01, 2.5e-01, 2.5e-01, 2.5e-01, 2.5e-01, 2.5e-01, 2.5e-01, 2.5e-01, 2.5e-01, 2.5e-01, 2.5e-01, 2.5e-01, 2.5e-01, 2.5e-01, 2.5e-01, 2.5e-01, 2.5e-01, 2.5e-01, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02] +con.PIPar.Ti=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01] diff --git a/Buildings/Resources/Scripts/Dymola/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mos b/Buildings/Resources/Scripts/Dymola/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mos new file mode 100644 index 00000000000..c1cd8a830ec --- /dev/null +++ b/Buildings/Resources/Scripts/Dymola/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mos @@ -0,0 +1,5 @@ +simulateModel("Buildings.Fluid.HeatExchangers.Examples.WetCoilCounterFlowPControlAutoTuning", stopTime=3600, method="CVode", tolerance=1e-6, resultFile="WetCoilCounterFlowPControlAutoTuning"); +createPlot(id=4, position={35, 10, 741, 638}, y={"con.inTunPro.y"}, range={0.0, 3600.0, -0.5, 1.5}, grid=true, subPlot=101, colors={{28,108,200}}, timeUnit="s"); +createPlot(id=4, position={35, 10, 741, 638}, y={"con.u_s", "con.u_m"}, range={0.0, 3600.0, 280.0, 310.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}, timeUnit="s"); +createPlot(id=4, position={35, 10, 741, 638}, y={"con.PIPar.k", "con.PIPar.Ti"}, range={0.0, 3600.0, -5.0, 15.0}, grid=true, subPlot=103, colors={{28,108,200}, {238,46,47}}, timeUnit="s", displayUnits={"", "s"}); + diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.HeatExchangers.Examples.WetCoilCounterFlowPControlAutoTuning.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.HeatExchangers.Examples.WetCoilCounterFlowPControlAutoTuning.mos new file mode 100644 index 00000000000..157d5af3379 --- /dev/null +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.HeatExchangers.Examples.WetCoilCounterFlowPControlAutoTuning.mos @@ -0,0 +1,8 @@ +compareVars := + { + "con.inTunPro.y", + "con.u_s", + "con.u_m", + "con.PIPar.k", + "con.PIPar.Ti" + }; From 9934e8b7bb9bcc4ae2f39ed7ab3d0580c83e5535 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Fri, 1 Dec 2023 14:35:09 -0500 Subject: [PATCH 133/214] model doc update --- .../PIDWithAutotuning/FirstOrderAMIGO.mo | 4 ++-- .../PIDWithAutotuning/Relay/Controller.mo | 22 +++++++++---------- .../DirectActingPIDWithFirstOrderAMIGO.mo | 6 ++--- .../DirectActingPIWithFirstOrderAMIGO.mo | 6 ++--- .../Validation/PIDWithFirstOrderAMIGO.mo | 3 ++- .../Validation/PIWithFirstOrderAMIGO.mo | 3 ++- 6 files changed, 23 insertions(+), 21 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index b9dc2bb4f79..8163c75b8a0 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -270,7 +270,7 @@ In addition, the output of this block is limited from 0 to 1.

                                  Brief guidance

                                  -To use this block, place it in an control loop as any other PI controller. +To use this block, place it in an control loop as any other PID controller. Before the PID tuning process starts, this block is equivalent to Buildings.Controls.OBC.Utilities.PIDWithInputGains. This block starts the PID tuning process when a request for performing autotuning occurs, i.e., @@ -282,7 +282,7 @@ Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Controller). The PID tuning process ends automatically (see details in Buildings.Controls.OBC.Utilities.PIDWithAutotuning.BaseClasses.Relay.TunMonitor), -at which point this block turns back to a PI controller but with tuned PI parameters. +at which point this block turns back to a PID controller but with tuned PID parameters.

                                  diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo index b3020a924bc..c763ad57649 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo @@ -78,7 +78,6 @@ equation annotation (Line(points={{22,0},{58,0}},color={255,0,255})); connect(swi1.u3, u_s) annotation (Line(points={{-62,-58},{-90,-58},{-90,0},{-120, 0}}, color={0,0,127})); - connect(trigger, swi1.u2) annotation (Line(points={{-80,-120},{-80,-50},{-62,-50}}, color={255,0,255})); connect(u_m, swi1.u1) annotation (Line(points={{0,-120},{0,-80},{-70,-80},{-70, @@ -88,20 +87,15 @@ equation connect(conErr.u2, u_s) annotation (Line(points={{-62,14},{-90,14},{-90,0},{-120, 0}}, color={0,0,127})); if reverseActing then - connect(greMeaSet.reference, u_s) - annotation (Line(points={{-2,6},{-40,6},{-40,0},{-120,0}}, color={0,0,127})); + annotation (Line(points={{-2,6},{-40,6},{-40,0},{-120,0}},color={0,0,127})); connect(swi1.y, greMeaSet.u) annotation (Line(points={{-38,-50},{-20,-50},{-20, -6},{-2,-6}}, color={0,0,127})); - else - connect(greMeaSet.reference, swi1.y) - annotation (Line(points={{-2,6},{-40,6},{-40,-50},{-38,-50}}, - color={0,0,127})); + annotation (Line(points={{-2,6},{-40,6},{-40,-50},{-38,-50}},color={0,0,127})); connect(u_s, greMeaSet.u) annotation (Line(points={{-120,0},{-20,0},{-20,-6}, - {-2,-6}}, color={0,0,127})); - + {-2,-6}}, color={0,0,127})); end if; annotation (defaultComponentName = "relCon", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ @@ -136,8 +130,8 @@ equation fillPattern=FillPattern.Solid, fillColor={175,175,175}, textString="Relay"), - Line(points={{-70,24},{-34,24},{-34,58},{38,58},{38,24},{66,24}}, color - ={28,108,200})}), Diagram( + Line(points={{-70,24},{-34,24},{-34,58},{38,58},{38,24},{66,24}}, color= + {28,108,200})}), Diagram( coordinateSystem(preserveAspectRatio=false)), Documentation(info="

                                  @@ -177,6 +171,12 @@ Department of Automatic Control, Lund Institute of Technology, Lund University.< ", revisions="

                                  • +December 1, 2023, by Sen Huang:
                                    +Add a parameter reverseActing
                                    +
                                  • +
                                  +
                                    +
                                  • June 1, 2022, by Sen Huang:
                                    First implementation
                                  • diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIDWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIDWithFirstOrderAMIGO.mo index 23671498557..3523565a388 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIDWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIDWithFirstOrderAMIGO.mo @@ -122,14 +122,14 @@ Buildings.Controls.OBC.Utilities.PIDWithAutotuning.FirstOrderAMIGO.

                                    This example is similar as Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIDWithFirstOrderAMIGO. -However, PID controllers with direct acting are considered. +However, direct-acting PID controllers are considered.

                                    ", revisions="
                                    • -June 1, 2022, by Sen Huang:
                                      -First implementation
                                      +December 1, 2023, by Sen Huang:
                                      +
                                      First implementation
                                    "), diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIWithFirstOrderAMIGO.mo index 78b0b680856..fc1afeab6f6 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIWithFirstOrderAMIGO.mo @@ -1,6 +1,6 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation; model DirectActingPIWithFirstOrderAMIGO - "Test model for an autotuning reversed PID controller with direct acting" + "Test model for an autotuning direct-acting PI controller" Buildings.Controls.OBC.CDL.Reals.Sources.Constant SetPoint(k=0.8) "Setpoint value" annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); @@ -119,13 +119,13 @@ Buildings.Controls.OBC.Utilities.PIDWithAutotuning.FirstOrderAMIGO.

                                    This example is similar as Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIWithFirstOrderAMIGO. -However, PI controllers with direct acting are considered. +However, direct-acting PI controllers are considered.

                                    ", revisions="
                                    • -June 1, 2022, by Sen Huang:
                                      +December 1, 2023, by Sen Huang:
                                      First implementation
                                    diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo index ee461a0aaaf..ec82ca20f8b 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo @@ -1,5 +1,6 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation; -model PIDWithFirstOrderAMIGO "Test model for an autotuning reverse-acting PID controller" +model PIDWithFirstOrderAMIGO + "Test model for an autotuning reverse-acting PID controller" Buildings.Controls.OBC.CDL.Reals.Sources.Constant SetPoint(k=0.8) "Setpoint value" annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo index f17b227319b..908923bb5b6 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo @@ -1,5 +1,6 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation; -model PIWithFirstOrderAMIGO "Test model for an autotuning reverse-acting PI controller" +model PIWithFirstOrderAMIGO + "Test model for an autotuning reverse-acting PI controller" Buildings.Controls.OBC.CDL.Reals.Sources.Constant SetPoint(k=0.8) "Setpoint value" annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); From 488eee780439a8d60aefee46a662e282309919b9 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Fri, 1 Dec 2023 14:58:27 -0500 Subject: [PATCH 134/214] cleanup --- .../PIDWithAutotuning/FirstOrderAMIGO.mo | 71 ++++++++----------- .../DirectActingPIDWithFirstOrderAMIGO.mo | 22 +++--- .../DirectActingPIWithFirstOrderAMIGO.mo | 18 +++-- .../Validation/PIDWithFirstOrderAMIGO.mo | 24 +++---- .../Validation/PIWithFirstOrderAMIGO.mo | 26 +++---- .../Validation/package.order | 4 +- .../WetCoilCounterFlowPControlAutoTuning.mo | 2 +- 7 files changed, 70 insertions(+), 97 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index 8163c75b8a0..9a7288c85ed 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -154,8 +154,7 @@ equation connect(rel.u_s, u_s) annotation (Line(points={{-42,40},{-122,40},{-122,0},{-200, 0}}, color={0,0,127})); connect(con.trigger, triRes) annotation (Line(points={{-36,-52},{-36,-90},{-60, - -90},{-60,-120}}, - color={255,0,255})); + -90},{-60,-120}},color={255,0,255})); connect(samk.y,con. k) annotation (Line(points={{-98,-20},{-74,-20},{-74,-32}, {-42,-32}},color={0,0,127})); connect(con.Ti, samTi.y) annotation (Line(points={{-42,-36},{-74,-36},{-74,-50}, @@ -163,62 +162,52 @@ equation connect(samTd.y,con. Td) annotation (Line(points={{-98,-80},{-66,-80},{-66,-44}, {-42,-44}},color={0,0,127})); connect(rel.u_m, u_m) annotation (Line(points={{-30,28},{-30,-22},{0,-22},{0,-120}}, - color={0,0,127})); + color={0,0,127})); connect(resPro.on, rel.yOn) annotation (Line(points={{-2,40},{-10,40},{-10,34}, - {-18,34}}, - color={255,0,255})); + {-18,34}},color={255,0,255})); connect(modTim.y, resPro.tim) annotation (Line(points={{-18,70},{-10,70},{-10, - 46},{-2,46}}, - color={0,0,127})); + 46},{-2,46}},color={0,0,127})); connect(resPro.tau, conProMod.tau) annotation (Line(points={{22,40},{28,40},{28, - 32},{38,32}}, color={0,0,127})); + 32},{38,32}},color={0,0,127})); connect(conProMod.tOff, resPro.tOff) annotation (Line(points={{38,36},{30,36}, - {30,44},{22,44}}, color={0,0,127})); + {30,44},{22,44}},color={0,0,127})); connect(resPro.tOn, conProMod.tOn) annotation (Line(points={{22,48},{32,48},{32, - 44},{38,44}}, color={0,0,127})); + 44},{38,44}},color={0,0,127})); connect(rel.yErr, conProMod.u) annotation (Line(points={{-18,40},{-12,40},{-12, - 60},{34,60},{34,48},{38,48}}, - color={0,0,127})); + 60},{34,60},{34,48},{38,48}},color={0,0,127})); connect(PIDPar.kp, conProMod.k) annotation (Line(points={{78,46},{62,46}}, color={0,0,127})); connect(PIDPar.T, conProMod.T) annotation (Line(points={{78,40},{62,40}}, color={0,0,127})); - connect(PIDPar.L, conProMod.L) annotation (Line(points={{78,34},{62,34}}, - color={0,0,127})); + connect(PIDPar.L, conProMod.L) annotation (Line(points={{78,34},{62,34}}, color={0,0,127})); connect(PIDPar.k, samk.u) annotation (Line(points={{102,47},{110,47},{110,96}, - {-148,96},{-148,-20},{-122,-20}}, - color={0,0,127})); + {-148,96},{-148,-20},{-122,-20}},color={0,0,127})); connect(PIDPar.Ti, samTi.u) annotation (Line(points={{102,40},{112,40},{112,98}, - {-150,98},{-150,-50},{-122,-50}}, - color={0,0,127})); + {-150,98},{-150,-50},{-122,-50}},color={0,0,127})); connect(PIPar.kp, conProMod.k) annotation (Line(points={{78,76},{70,76},{70,46}, - {62,46}}, color={0,0,127})); + {62,46}},color={0,0,127})); connect(PIPar.T, conProMod.T) annotation (Line(points={{78,70},{72,70},{72,40}, - {62,40}}, color={0,0,127})); + {62,40}}, color={0,0,127})); connect(PIPar.L, conProMod.L) annotation (Line(points={{78,64},{74,64},{74,34}, - {62,34}}, color={0,0,127})); + {62,34}},color={0,0,127})); connect(PIPar.k, samk.u) annotation (Line(points={{102,76},{110,76},{110,96},{ - -148,96},{-148,-20},{-122,-20}}, - color={0,0,127})); + -148,96},{-148,-20},{-122,-20}}, color={0,0,127})); connect(PIPar.Ti, samTi.u) annotation (Line(points={{102,64},{112,64},{112,98}, - {-150,98},{-150,-50},{-122,-50}}, - color={0,0,127})); + {-150,98},{-150,-50},{-122,-50}}, color={0,0,127})); connect(resPro.triEnd, conProMod.triEnd) annotation (Line(points={{22,32},{24, - 32},{24,20},{56,20},{56,28}}, - color={255,0,255})); + 32},{24,20},{56,20},{56,28}}, color={255,0,255})); connect(resPro.triSta, conProMod.triSta) annotation (Line(points={{22,36},{26, - 36},{26,22},{44,22},{44,28}}, - color={255,0,255})); + 36},{26,22},{44,22},{44,28}}, color={255,0,255})); connect(resPro.triEnd, samTi.trigger) annotation (Line(points={{22,32},{24,32}, {24,20},{-126,20},{-126,-36},{-110,-36},{-110,-38}}, - color={255,0,255})); + color={255,0,255})); connect(resPro.triEnd, samk.trigger) annotation (Line(points={{22,32},{24,32}, {24,20},{-126,20},{-126,-6},{-110,-6},{-110,-8}}, - color={255,0,255})); + color={255,0,255})); connect(resPro.triEnd, samTd.trigger) annotation (Line(points={{22,32},{24,32}, {24,20},{-126,20},{-126,-66},{-110,-66},{-110,-68}}, - color={255,0,255})); + color={255,0,255})); connect(PIDPar.Td, samTd.u) annotation (Line(points={{102,33},{114,33},{114,94}, {-146,94},{-146,-80},{-122,-80}}, - color={0,0,127})); + color={0,0,127})); connect(swi.y, y) annotation (Line(points={{162,0},{200,0}}, color={0,0,127})); connect(u_m,con. u_m) annotation (Line(points={{0,-120},{0,-90},{-30,-90},{-30, -52}}, color={0,0,127})); @@ -228,24 +217,20 @@ equation connect(swi.u3,con. y) annotation (Line(points={{138,-8},{128,-8},{128,-40},{-18, -40}}, color={0,0,127})); connect(inTunPro.y, swi.u2) annotation (Line(points={{42,-70},{50,-70},{50,0}, - {138,0}}, color={255,0,255})); + {138,0}}, color={255,0,255})); connect(inTunPro.u, triTun) annotation (Line(points={{18,-70},{8,-70},{8,-88}, {60,-88},{60,-120}}, color={255,0,255})); connect(inTunPro.clr, resPro.triEnd) annotation (Line(points={{18,-76},{12,-76}, - {12,20},{24,20},{24,32},{22,32}}, - color={255,0,255})); + {12,20},{24,20},{24,32},{22,32}},color={255,0,255})); connect(rel.trigger, triTun) annotation (Line(points={{-36,28},{-36,-20},{8,-20}, - {8,-88},{60,-88},{60,-120}}, - color={255,0,255})); + {8,-88},{60,-88},{60,-120}},color={255,0,255})); connect(resPro.trigger, triTun) annotation (Line(points={{-2,34},{-8,34},{-8,-20}, - {8,-20},{8,-88},{60,-88},{60,-120}}, - color={255,0,255})); + {8,-20},{8,-88},{60,-88},{60,-120}},color={255,0,255})); connect(nand.y, assMes.u) annotation (Line(points={{142,-80},{146,-80}}, color={255,0,255})); connect(nand.u2, triTun) annotation (Line(points={{118,-88},{60,-88},{60,-120}}, - color={255,0,255})); + color={255,0,255})); connect(nand.u1, inTunPro.y) annotation (Line(points={{118,-80},{114,-80},{114, - -70},{42,-70}}, - color={255,0,255})); + -70},{42,-70}},color={255,0,255})); annotation (Documentation(info="

                                    This block implements a rule-based PID tuning method. diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIDWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIDWithFirstOrderAMIGO.mo index 3523565a388..1aaeea296fd 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIDWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIDWithFirstOrderAMIGO.mo @@ -45,7 +45,8 @@ model DirectActingPIDWithFirstOrderAMIGO Buildings.Controls.OBC.CDL.Logical.Sources.Pulse autTunSig( width=0.9, period=6000, - shift=500) "Signal for enabling the autotuning" + shift=500) + "Signal for enabling the autotuning" annotation (Placement(transformation(extent={{-80,-60},{-60,-40}}))); Buildings.Controls.OBC.CDL.Reals.Subtract sub3 "A subtract block that is used to mimic the direct-acting in the first order process 1" @@ -66,30 +67,27 @@ equation connect(SetPoint.y, PID.u_s) annotation (Line(points={{-58,10},{-48,10},{-48,60}, {-22,60}}, color={0,0,127})); connect(uniDel1.y, sub1.u1) annotation (Line(points={{72,60},{86,60},{86,86}, - {132,86}}, - color={0,0,127})); + {132,86}}, color={0,0,127})); connect(k.y, derivative1.k) annotation (Line(points={{54,20},{58,20},{58,28},{ 92,28}}, color={0,0,127})); connect(derivative1.T, T.y) annotation (Line(points={{92,24},{74,24},{74,-56}, - {32,-56}}, color={0,0,127})); + {32,-56}}, color={0,0,127})); connect(derivative1.y, sub1.u2) annotation (Line(points={{116,20},{126,20},{ - 126,74},{132,74}}, - color={0,0,127})); + 126,74},{132,74}}, color={0,0,127})); connect(sub1.y, PID.u_m) annotation (Line(points={{156,80},{164,80},{164,40}, {-10,40},{-10,48}}, color={0,0,127})); connect(sub2.u1, uniDel2.y) annotation (Line(points={{132,-4},{64,-4},{64,-20}, {60,-20}}, color={0,0,127})); connect(derivative2.y,sub2. u2) annotation (Line(points={{102,-60},{110,-60}, - {110,-16},{132,-16}}, - color={0,0,127})); + {110,-16},{132,-16}},color={0,0,127})); connect(sub2.y, PIDWitTun.u_m) annotation (Line(points={{156,-10},{156,-36},{ - -10,-36},{-10,-32}}, color={0,0,127})); + -10,-36},{-10,-32}}, color={0,0,127})); connect(derivative2.T, T.y) annotation (Line(points={{78,-56},{32,-56}}, - color={0,0,127})); + color={0,0,127})); connect(derivative1.u, sub1.u1) annotation (Line(points={{92,20},{86,20},{86, - 86},{132,86}}, color={0,0,127})); + 86},{132,86}}, color={0,0,127})); connect(derivative2.u, uniDel2.y) annotation (Line(points={{78,-60},{64,-60},{ - 64,-20},{60,-20}}, color={0,0,127})); + 64,-20},{60,-20}}, color={0,0,127})); connect(autTunSig.y, PIDWitTun.triTun) annotation (Line(points={{-58,-50},{-4,-50},{-4,-32}}, color={255,0,255})); connect(k.y, derivative2.k) annotation (Line(points={{54,20},{68,20},{68,-52}, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIWithFirstOrderAMIGO.mo index fc1afeab6f6..e55f25368c1 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIWithFirstOrderAMIGO.mo @@ -45,7 +45,8 @@ model DirectActingPIWithFirstOrderAMIGO Buildings.Controls.OBC.CDL.Logical.Sources.Pulse autTunSig( width=0.9, period=6000, - shift=500) "Signal for enabling the autotuning" + shift=500) + "Signal for enabling the autotuning" annotation (Placement(transformation(extent={{-80,-60},{-60,-40}}))); Buildings.Controls.OBC.CDL.Reals.Subtract sub3 "A subtract block that is used to mimic the direct acting in the first order process 1" @@ -66,28 +67,25 @@ equation connect(SetPoint.y, PI.u_s) annotation (Line(points={{-58,10},{-48,10},{-48,60}, {-22,60}}, color={0,0,127})); connect(uniDel1.y, sub1.u1) annotation (Line(points={{72,60},{86,60},{86,86}, - {132,86}}, - color={0,0,127})); + {132,86}}, color={0,0,127})); connect(k.y, derivative1.k) annotation (Line(points={{54,20},{58,20},{58,28},{ 92,28}}, color={0,0,127})); connect(derivative1.T, T.y) annotation (Line(points={{92,24},{74,24},{74,-56}, - {32,-56}}, color={0,0,127})); + {32,-56}}, color={0,0,127})); connect(derivative1.y, sub1.u2) annotation (Line(points={{116,20},{126,20},{ - 126,74},{132,74}}, - color={0,0,127})); + 126,74},{132,74}}, color={0,0,127})); connect(sub1.y, PI.u_m) annotation (Line(points={{156,80},{164,80},{164,40},{-10, 40},{-10,48}}, color={0,0,127})); connect(sub2.u1, uniDel2.y) annotation (Line(points={{132,-4},{64,-4},{64,-20}, {60,-20}}, color={0,0,127})); connect(derivative2.y,sub2. u2) annotation (Line(points={{102,-60},{110,-60}, - {110,-16},{132,-16}}, - color={0,0,127})); + {110,-16},{132,-16}}, color={0,0,127})); connect(sub2.y, PIWitTun.u_m) annotation (Line(points={{156,-10},{156,-36},{-10, -36},{-10,-32}}, color={0,0,127})); connect(derivative2.T, T.y) annotation (Line(points={{78,-56},{32,-56}}, - color={0,0,127})); + color={0,0,127})); connect(derivative1.u, sub1.u1) annotation (Line(points={{92,20},{86,20},{86, - 86},{132,86}}, color={0,0,127})); + 86},{132,86}}, color={0,0,127})); connect(derivative2.u, uniDel2.y) annotation (Line(points={{78,-60},{64,-60},{ 64,-20},{60,-20}}, color={0,0,127})); connect(autTunSig.y, PIWitTun.triTun) annotation (Line(points={{-58,-50},{-4,-50},{-4,-32}}, color={255,0,255})); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo index ec82ca20f8b..a38cc1c3269 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo @@ -45,7 +45,8 @@ model PIDWithFirstOrderAMIGO Buildings.Controls.OBC.CDL.Logical.Sources.Pulse autTunSig( width=0.9, period=6000, - shift=500) "Signal for enabling the autotuning" + shift=500) + "Signal for enabling the autotuning" annotation (Placement(transformation(extent={{-80,-60},{-60,-40}}))); equation connect(resSig.y, PID.trigger) annotation (Line(points={{-58,70},{-30,70},{-30, @@ -59,30 +60,27 @@ equation connect(PIDWitTun.y, uniDel2.u) annotation (Line(points={{2,-20},{18,-20}},color={0,0,127})); connect(uniDel1.u, PID.y) annotation (Line(points={{18,60},{2,60}},color={0,0,127})); connect(uniDel1.y, sub1.u1) annotation (Line(points={{42,60},{54,60},{54,86}, - {118,86}}, - color={0,0,127})); + {118,86}}, color={0,0,127})); connect(k.y, derivative1.k) annotation (Line(points={{32,20},{44,20},{44,28}, {78,28}}, color={0,0,127})); connect(derivative1.T, T.y) annotation (Line(points={{78,24},{60,24},{60,-56}, - {32,-56}}, color={0,0,127})); + {32,-56}}, color={0,0,127})); connect(derivative1.y, sub1.u2) annotation (Line(points={{102,20},{112,20},{ - 112,74},{118,74}}, - color={0,0,127})); + 112,74},{118,74}}, color={0,0,127})); connect(sub1.y, PID.u_m) annotation (Line(points={{142,80},{150,80},{150,40}, - {-10,40},{-10,48}}, color={0,0,127})); + {-10,40},{-10,48}}, color={0,0,127})); connect(sub2.u1, uniDel2.y) annotation (Line(points={{118,-4},{64,-4},{64,-20}, {42,-20}}, color={0,0,127})); connect(derivative2.y,sub2. u2) annotation (Line(points={{102,-60},{110,-60}, - {110,-16},{118,-16}}, - color={0,0,127})); + {110,-16},{118,-16}}, color={0,0,127})); connect(sub2.y, PIDWitTun.u_m) annotation (Line(points={{142,-10},{152,-10},{ - 152,-36},{-10,-36},{-10,-32}}, color={0,0,127})); + 152,-36},{-10,-36},{-10,-32}}, color={0,0,127})); connect(derivative2.T, T.y) annotation (Line(points={{78,-56},{32,-56}}, - color={0,0,127})); + color={0,0,127})); connect(derivative1.u, sub1.u1) annotation (Line(points={{78,20},{72,20},{72, - 86},{118,86}}, color={0,0,127})); + 86},{118,86}}, color={0,0,127})); connect(derivative2.u, uniDel2.y) annotation (Line(points={{78,-60},{64,-60}, - {64,-20},{42,-20}}, color={0,0,127})); + {64,-20},{42,-20}}, color={0,0,127})); connect(autTunSig.y, PIDWitTun.triTun) annotation (Line(points={{-58,-50},{-4,-50},{-4,-32}}, color={255,0,255})); connect(k.y, derivative2.k) annotation (Line(points={{32,20},{68,20},{68,-52}, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo index 908923bb5b6..06e8f292d08 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo @@ -44,15 +44,15 @@ model PIWithFirstOrderAMIGO Buildings.Controls.OBC.CDL.Logical.Sources.Pulse autTunSig( width=0.9, period=6000, - shift=500) "Signal for enabling the autotuning" + shift=500) + "Signal for enabling the autotuning" annotation (Placement(transformation(extent={{-80,-60},{-60,-40}}))); equation connect(resSig.y, PI.trigger) annotation (Line(points={{-58,70},{-30,70},{-30, 40},{-16,40},{-16,48}}, color={255,0,255})); connect(PIWitTun.triRes, PI.trigger) annotation (Line(points={{-16,-32},{-16, - -40},{-30,-40},{-30,40},{-16,40},{-16,48}}, - color={255,0,255})); + -40},{-30,-40},{-30,40},{-16,40},{-16,48}}, color={255,0,255})); connect(PIWitTun.u_s, PI.u_s) annotation (Line(points={{-22,-20},{-48,-20},{-48, 60},{-22,60}}, color={0,0,127})); connect(SetPoint.y, PI.u_s) annotation (Line(points={{-58,10},{-48,10},{-48,60}, @@ -62,17 +62,13 @@ equation connect(uniDel1.y, sub1.u1) annotation (Line(points={{32,60},{40,60},{40,86},{ 58,86}}, color={0,0,127})); connect(k.y, derivative1.k) annotation (Line(points={{158,30},{148,30},{148, - 48},{82,48}}, - color={0,0,127})); + 48},{82,48}}, color={0,0,127})); connect(derivative1.T, T.y) annotation (Line(points={{82,44},{112,44},{112, - -46},{148,-46},{148,-10},{158,-10}}, - color={0,0,127})); + -46},{148,-46},{148,-10},{158,-10}}, color={0,0,127})); connect(derivative1.y, sub1.u2) annotation (Line(points={{58,40},{50,40},{50, - 74},{58,74}}, - color={0,0,127})); + 74},{58,74}}, color={0,0,127})); connect(sub1.y, PI.u_m) annotation (Line(points={{82,80},{88,80},{88,60},{46, - 60},{46,40},{-10,40},{-10,48}}, - color={0,0,127})); + 60},{46,40},{-10,40},{-10,48}}, color={0,0,127})); connect(sub2.u1, uniDel2.y) annotation (Line(points={{58,-4},{40,-4},{40,-20}, {32,-20}}, color={0,0,127})); connect(derivative2.y,sub2. u2) annotation (Line(points={{58,-50},{52,-50},{ @@ -80,13 +76,11 @@ equation connect(sub2.y, PIWitTun.u_m) annotation (Line(points={{82,-10},{88,-10},{88, -28},{46,-28},{46,-40},{-10,-40},{-10,-32}}, color={0,0,127})); connect(derivative2.k, derivative1.k) annotation (Line(points={{82,-42},{92, - -42},{92,48},{82,48}}, - color={0,0,127})); + -42},{92,48},{82,48}}, color={0,0,127})); connect(derivative2.T, T.y) annotation (Line(points={{82,-46},{148,-46},{148, - -10},{158,-10}}, color={0,0,127})); + -10},{158,-10}}, color={0,0,127})); connect(derivative1.u, sub1.u1) annotation (Line(points={{82,40},{88,40},{88, - 20},{40,20},{40,86},{58,86}}, - color={0,0,127})); + 20},{40,20},{40,86},{58,86}}, color={0,0,127})); connect(derivative2.u, uniDel2.y) annotation (Line(points={{82,-50},{92,-50}, {92,-66},{40,-66},{40,-20},{32,-20}}, color={0,0,127})); connect(autTunSig.y, PIWitTun.triTun) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/package.order index a0219aae1f8..0ac7743d4f1 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/package.order +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/package.order @@ -1,4 +1,4 @@ -PIDWithFirstOrderAMIGO -PIWithFirstOrderAMIGO DirectActingPIDWithFirstOrderAMIGO DirectActingPIWithFirstOrderAMIGO +PIDWithFirstOrderAMIGO +PIWithFirstOrderAMIGO diff --git a/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo b/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo index 93c959cd27d..636730659a9 100644 --- a/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo +++ b/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo @@ -158,7 +158,7 @@ equation points={{-59,64},{-42,64}}, color={0,0,127}, smooth=Smooth.None)); - connect(con.y, val.y) annotation (Line( + connect(con.y, val.y) annotation (Line( points={{22,100},{40,100},{40,72}}, color={0,0,127}, smooth=Smooth.None)); From a9116ca0936f78499818c902f5c1978cf5aa5127 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Fri, 1 Dec 2023 16:37:09 -0500 Subject: [PATCH 135/214] update the model doc --- .../Examples/WetCoilCounterFlowPControlAutoTuning.mo | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo b/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo index 636730659a9..6287eb7b7f6 100644 --- a/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo +++ b/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo @@ -182,6 +182,12 @@ This example is identical to Buildings.Fluid.HeatExchangers.Examples.WetCoilCounterFlowMassFlow except that the PI controller is replaced by an autotuning PI controller.

                                    +

                                    +The autotuning is triggered at 400s and stops automatically. +When it stops, the tuned PI parameters are put into effect to replace the default parameter values. +For details of the autotuning, refer to +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.FirstOrderAMIGO. +

                                    ", revisions="
                                      From 6cc4a3110a330812f04dd9869fa7c8cf337176d3 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Fri, 1 Dec 2023 16:37:30 -0500 Subject: [PATCH 136/214] fix false alarms --- .../PIDWithAutotuning/FirstOrderAMIGO.mo | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index 9a7288c85ed..b0b6350d595 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -129,6 +129,12 @@ block FirstOrderAMIGO message="An autotuning is ongoing and an autotuning request is ignored.") "Error message when an autotuning tuning is ongoing while a new autotuning request is received" annotation (Placement(transformation(extent={{148,-90},{168,-70}}))); + Buildings.Controls.OBC.CDL.Logical.Edge edgReq + "True only when a new request is received" + annotation (Placement(transformation(extent={{80,-80},{100,-60}}))); + Buildings.Controls.OBC.CDL.Logical.TrueDelay tunStaDel(final delayTime=0.001) + "A small time delay for the autotuning start time to avoid false alerts" + annotation (Placement(transformation(extent={{80,-40},{100,-20}}))); protected final parameter Real yHig(min=1E-6) = 1 @@ -214,7 +220,7 @@ equation connect(rel.y, swi.u1) annotation (Line(points={{-18,46},{-16,46},{-16,88},{130, 88},{130,8},{138,8}}, color={0,0,127})); - connect(swi.u3,con. y) annotation (Line(points={{138,-8},{128,-8},{128,-40},{-18, + connect(swi.u3,con. y) annotation (Line(points={{138,-8},{60,-8},{60,-40},{-18, -40}}, color={0,0,127})); connect(inTunPro.y, swi.u2) annotation (Line(points={{42,-70},{50,-70},{50,0}, {138,0}}, color={255,0,255})); @@ -227,10 +233,14 @@ equation connect(resPro.trigger, triTun) annotation (Line(points={{-2,34},{-8,34},{-8,-20}, {8,-20},{8,-88},{60,-88},{60,-120}},color={255,0,255})); connect(nand.y, assMes.u) annotation (Line(points={{142,-80},{146,-80}}, color={255,0,255})); - connect(nand.u2, triTun) annotation (Line(points={{118,-88},{60,-88},{60,-120}}, - color={255,0,255})); - connect(nand.u1, inTunPro.y) annotation (Line(points={{118,-80},{114,-80},{114, - -70},{42,-70}},color={255,0,255})); + connect(nand.u2, edgReq.y) annotation (Line(points={{118,-88},{110,-88},{110,-70}, + {102,-70}}, color={255,0,255})); + connect(edgReq.u, triTun) annotation (Line(points={{78,-70},{70,-70},{70,-88}, + {60,-88},{60,-120}}, color={255,0,255})); + connect(tunStaDel.y, nand.u1) annotation (Line(points={{102,-30},{112,-30},{112, + -80},{118,-80}}, color={255,0,255})); + connect(tunStaDel.u, inTunPro.y) annotation (Line(points={{78,-30},{62,-30},{62, + -70},{42,-70}}, color={255,0,255})); annotation (Documentation(info="

                                      This block implements a rule-based PID tuning method. From b228299855d2a38710282b564ebf68bec519185e Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Wed, 6 Dec 2023 17:40:08 -0500 Subject: [PATCH 137/214] add final --- .../Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index b0b6350d595..1345d4bbc09 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -92,7 +92,7 @@ block FirstOrderAMIGO final yHig=yHig, final yLow=yLow, final deaBan=deaBan, - reverseActing=reverseActing) + final reverseActing=reverseActing) "Relay controller" annotation (Placement(transformation(extent={{-40,30},{-20,50}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.ResponseProcess resPro( From 635481bccb4c02a3780625533d0d1029a6a1f173 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Wed, 6 Dec 2023 17:40:37 -0500 Subject: [PATCH 138/214] remove if in the equation --- .../PIDWithAutotuning/Relay/Controller.mo | 76 ++++++++++++------- 1 file changed, 47 insertions(+), 29 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo index c763ad57649..12042947dca 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo @@ -34,10 +34,10 @@ block Controller iconTransformation(extent={{100,-20},{140,20}}))); protected - Buildings.Controls.OBC.CDL.Logical.OnOffController greMeaSet( - final bandwidth=deaBan*2, - final pre_y_start=true) - "Check if the measured value is larger than the reference, by default the relay control is on" + Buildings.Controls.OBC.CDL.Logical.OnOffController greSetMea( + final bandwidth= deaBan*2, + final pre_y_start=true) if reverseActing + "Check if the reference is larger than the measured value, by default the relay control is on" annotation (Placement(transformation(extent={{0,-10},{20,10}}))); Buildings.Controls.OBC.CDL.Reals.Switch swi "Switch between a higher value and a lower value" @@ -45,11 +45,11 @@ protected Buildings.Controls.OBC.CDL.Reals.Sources.Constant higVal( final k=yHig) "Higher value for the output" - annotation (Placement(transformation(extent={{0,50},{20,70}}))); + annotation (Placement(transformation(extent={{0,70},{20,90}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant lowVal( final k=-yLow) "Lower value for the output" - annotation (Placement(transformation(extent={{0,-50},{20,-30}}))); + annotation (Placement(transformation(extent={{0,-70},{20,-50}}))); Buildings.Controls.OBC.CDL.Reals.Subtract conErr "Control error (set point - measurement)" annotation (Placement(transformation(extent={{-60,10},{-40,30}}))); @@ -57,6 +57,11 @@ protected "Switch between a higher value and a lower value" annotation (Placement(transformation(extent={{-10,-10},{10,10}}, origin={-50,-50}))); + Buildings.Controls.OBC.CDL.Logical.OnOffController greMeaSet( + final bandwidth=deaBan*2, + final pre_y_start=true) if not reverseActing + "Check if the measured value is larger than the reference, by default the relay control is on" + annotation (Placement(transformation(extent={{0,-40},{20,-20}}))); initial equation assert( yHig-yLow>1E-6, @@ -67,36 +72,37 @@ equation connect(swi.y, y) annotation (Line(points={{82,0},{88,0},{88,60},{120,60}}, color={0,0,127})); connect(higVal.y, swi.u1) - annotation (Line(points={{22,60},{40,60},{40,8},{58,8}},color={0,0,127})); - connect(lowVal.y, swi.u3) annotation (Line(points={{22,-40},{40,-40},{40,-8},{ + annotation (Line(points={{22,80},{30,80},{30,8},{58,8}},color={0,0,127})); + connect(lowVal.y, swi.u3) annotation (Line(points={{22,-60},{40,-60},{40,-8},{ 58,-8}}, color={0,0,127})); - connect(yOn, swi.u2) annotation (Line(points={{120,-60},{50,-60},{50,0},{58,0}}, - color={255,0,255})); connect(conErr.y, yErr) annotation (Line(points={{-38,20},{120,20}}, color={0,0,127})); - connect(greMeaSet.y, swi.u2) - annotation (Line(points={{22,0},{58,0}},color={255,0,255})); + connect(greSetMea.y, swi.u2) + annotation (Line(points={{22,0},{58,0}}, color={255,0,255})); connect(swi1.u3, u_s) annotation (Line(points={{-62,-58},{-90,-58},{-90,0},{-120, 0}}, color={0,0,127})); connect(trigger, swi1.u2) annotation (Line(points={{-80,-120},{-80,-50},{-62,-50}}, color={255,0,255})); connect(u_m, swi1.u1) annotation (Line(points={{0,-120},{0,-80},{-70,-80},{-70, -42},{-62,-42}}, color={0,0,127})); - connect(swi1.y, conErr.u1) annotation (Line(points={{-38,-50},{-20,-50},{-20,-6}, - {-70,-6},{-70,26},{-62,26}}, color={0,0,127})); + connect(swi1.y, conErr.u1) annotation (Line(points={{-38,-50},{-20,-50},{-20, + -4},{-70,-4},{-70,26},{-62,26}}, color={0,0,127})); connect(conErr.u2, u_s) annotation (Line(points={{-62,14},{-90,14},{-90,0},{-120, 0}}, color={0,0,127})); - if reverseActing then - connect(greMeaSet.reference, u_s) - annotation (Line(points={{-2,6},{-40,6},{-40,0},{-120,0}},color={0,0,127})); - connect(swi1.y, greMeaSet.u) annotation (Line(points={{-38,-50},{-20,-50},{-20, + connect(greSetMea.reference, u_s) annotation (Line(points={{-2,6},{-40,6},{-40, + 0},{-120,0}}, color={0,0,127})); + connect(swi1.y, greSetMea.u) annotation (Line(points={{-38,-50},{-20,-50},{-20, -6},{-2,-6}}, color={0,0,127})); - else - connect(greMeaSet.reference, swi1.y) - annotation (Line(points={{-2,6},{-40,6},{-40,-50},{-38,-50}},color={0,0,127})); - connect(u_s, greMeaSet.u) annotation (Line(points={{-120,0},{-20,0},{-20,-6}, - {-2,-6}}, color={0,0,127})); - end if; + connect(greMeaSet.reference, swi1.y) annotation (Line(points={{-2,-24},{-16,-24}, + {-16,-50},{-38,-50}}, color={0,0,127})); + connect(greMeaSet.u, u_s) annotation (Line(points={{-2,-36},{-40,-36},{-40,0}, + {-120,0}}, color={0,0,127})); + connect(greMeaSet.y, swi.u2) annotation (Line(points={{22,-30},{32,-30},{32,0}, + {58,0}}, color={255,0,255})); + connect(greMeaSet.y, yOn) annotation (Line(points={{22,-30},{52,-30},{52,-60}, + {120,-60}}, color={255,0,255})); + connect(greSetMea.y, yOn) annotation (Line(points={{22,0},{52,0},{52,-60},{120, + -60}}, color={255,0,255})); annotation (defaultComponentName = "relCon", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( @@ -141,17 +147,29 @@ boolean relay switch output yOn, and the control error

                                      • +if the parameter reverseActing = false +
                                          +
                                        • yErr = u_m - u_s,
                                        • +
                                        +
                                      • +
                                      • +else +
                                          +
                                        • +yErr = u_s - u_m , +
                                        • +
                                        +
                                      • if yErr < -deaBan and trigger is true, -then y = yHig (-yLow if the parameter reverseActing = false), yOn = true - (false if the reverseActing = false), +then y = yHig, yOn = true,
                                      • -if yErr > deaBan and trigger is true, -then y = -yLow (yHig if the reverseActing = false), -yOn = false (true if the reverseActing = false), +else if yErr > deaBan and trigger is true, +then y = -yLow, +yOn = false,
                                      • else, y and yOn are kept as the initial values, From 7fd01d435a1f4cc36e66002da70a4c2ab9d84985 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Wed, 6 Dec 2023 17:41:54 -0500 Subject: [PATCH 139/214] model rename --- .../DirectActingPIDWithFirstOrderAMIGO.mo | 2 +- .../DirectActingPIWithFirstOrderAMIGO.mo | 2 +- ...=> ReverseActingPIDWithFirstOrderAMIGO.mo} | 8 ++++---- ... => ReverseActingPIWithFirstOrderAMIGO.mo} | 8 ++++---- .../Validation/package.order | 4 ++-- ...ning_Validation_PIDWithFirstOrderAMIGO.txt | 19 ------------------- ...uning_Validation_PIWithFirstOrderAMIGO.txt | 18 ------------------ ...on_ReverseActingPIDWithFirstOrderAMIGO.txt | 19 +++++++++++++++++++ ...ion_ReverseActingPIWithFirstOrderAMIGO.txt | 18 ++++++++++++++++++ ...> ReverseActingPIDWithFirstOrderAMIGO.mos} | 2 +- ...=> ReverseActingPIWithFirstOrderAMIGO.mos} | 2 +- ...n.ReverseActingPIDWithFirstOrderAMIGO.mos} | 0 ...on.ReverseActingPIWithFirstOrderAMIGO.mos} | 0 13 files changed, 51 insertions(+), 51 deletions(-) rename Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/{PIDWithFirstOrderAMIGO.mo => ReverseActingPIDWithFirstOrderAMIGO.mo} (96%) rename Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/{PIWithFirstOrderAMIGO.mo => ReverseActingPIWithFirstOrderAMIGO.mo} (96%) delete mode 100644 Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIDWithFirstOrderAMIGO.txt delete mode 100644 Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIWithFirstOrderAMIGO.txt create mode 100644 Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_ReverseActingPIDWithFirstOrderAMIGO.txt create mode 100644 Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_ReverseActingPIWithFirstOrderAMIGO.txt rename Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/{PIDWithFirstOrderAMIGO.mos => ReverseActingPIDWithFirstOrderAMIGO.mos} (90%) rename Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/{PIWithFirstOrderAMIGO.mos => ReverseActingPIWithFirstOrderAMIGO.mos} (89%) rename Buildings/Resources/Scripts/OpenModelica/compareVars/{Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIDWithFirstOrderAMIGO.mos => Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.ReverseActingPIDWithFirstOrderAMIGO.mos} (100%) rename Buildings/Resources/Scripts/OpenModelica/compareVars/{Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIWithFirstOrderAMIGO.mos => Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.ReverseActingPIWithFirstOrderAMIGO.mos} (100%) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIDWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIDWithFirstOrderAMIGO.mo index 1aaeea296fd..a31dca991d5 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIDWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIDWithFirstOrderAMIGO.mo @@ -45,7 +45,7 @@ model DirectActingPIDWithFirstOrderAMIGO Buildings.Controls.OBC.CDL.Logical.Sources.Pulse autTunSig( width=0.9, period=6000, - shift=500) + shift=500) "Signal for enabling the autotuning" annotation (Placement(transformation(extent={{-80,-60},{-60,-40}}))); Buildings.Controls.OBC.CDL.Reals.Subtract sub3 diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIWithFirstOrderAMIGO.mo index e55f25368c1..5ab468045ed 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIWithFirstOrderAMIGO.mo @@ -45,7 +45,7 @@ model DirectActingPIWithFirstOrderAMIGO Buildings.Controls.OBC.CDL.Logical.Sources.Pulse autTunSig( width=0.9, period=6000, - shift=500) + shift=500) "Signal for enabling the autotuning" annotation (Placement(transformation(extent={{-80,-60},{-60,-40}}))); Buildings.Controls.OBC.CDL.Reals.Subtract sub3 diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/ReverseActingPIDWithFirstOrderAMIGO.mo similarity index 96% rename from Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo rename to Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/ReverseActingPIDWithFirstOrderAMIGO.mo index a38cc1c3269..55523f4186c 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/ReverseActingPIDWithFirstOrderAMIGO.mo @@ -1,6 +1,6 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation; -model PIDWithFirstOrderAMIGO - "Test model for an autotuning reverse-acting PID controller" +model ReverseActingPIDWithFirstOrderAMIGO + "Test model for an autotuning reverse-acting PID controller" Buildings.Controls.OBC.CDL.Reals.Sources.Constant SetPoint(k=0.8) "Setpoint value" annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); @@ -90,7 +90,7 @@ equation StopTime=10000, Tolerance=1e-06), __Dymola_Commands( - file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mos" "Simulate and plot"), + file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/ReverseActingPIDWithFirstOrderAMIGO.mos" "Simulate and plot"), Documentation( info="

                                        @@ -141,4 +141,4 @@ First implementation
                                        fillPattern=FillPattern.Solid, points={{-36,60},{64,0},{-36,-60},{-36,60}})}), Diagram(coordinateSystem(extent={{-100,-80},{200,100}}))); -end PIDWithFirstOrderAMIGO; +end ReverseActingPIDWithFirstOrderAMIGO; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/ReverseActingPIWithFirstOrderAMIGO.mo similarity index 96% rename from Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo rename to Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/ReverseActingPIWithFirstOrderAMIGO.mo index 06e8f292d08..dde92bd9468 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/ReverseActingPIWithFirstOrderAMIGO.mo @@ -1,6 +1,6 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation; -model PIWithFirstOrderAMIGO - "Test model for an autotuning reverse-acting PI controller" +model ReverseActingPIWithFirstOrderAMIGO + "Test model for an autotuning reverse-acting PI controller" Buildings.Controls.OBC.CDL.Reals.Sources.Constant SetPoint(k=0.8) "Setpoint value" annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); @@ -90,7 +90,7 @@ equation StopTime=10000, Tolerance=1e-06), __Dymola_Commands( - file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mos" "Simulate and plot"), + file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/ReverseActingPIWithFirstOrderAMIGO.mos" "Simulate and plot"), Documentation( info="

                                        @@ -126,4 +126,4 @@ First implementation
                                        fillPattern=FillPattern.Solid, points={{-36,60},{64,0},{-36,-60},{-36,60}})}), Diagram(coordinateSystem(extent={{-100,-80},{200,100}}))); -end PIWithFirstOrderAMIGO; +end ReverseActingPIWithFirstOrderAMIGO; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/package.order index 0ac7743d4f1..21a08e34ef7 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/package.order +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/package.order @@ -1,4 +1,4 @@ DirectActingPIDWithFirstOrderAMIGO DirectActingPIWithFirstOrderAMIGO -PIDWithFirstOrderAMIGO -PIWithFirstOrderAMIGO +ReverseActingPIDWithFirstOrderAMIGO +ReverseActingPIWithFirstOrderAMIGO diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIDWithFirstOrderAMIGO.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIDWithFirstOrderAMIGO.txt deleted file mode 100644 index 13494ce7865..00000000000 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIDWithFirstOrderAMIGO.txt +++ /dev/null @@ -1,19 +0,0 @@ -last-generated=2023-11-27 -statistics-simulation= -{ - "linear": " ", - "nonlinear": " ", - "number of continuous time states": "7", - "numerical Jacobians": "0" -} -time=[0e+00, 1e+04] -PID.u_s=[8.00000011920929e-01, 8.00000011920929e-01] -PID.u_m=[0e+00, 7.999616265296936e-01, 7.999999523162842e-01, 9.993995428085327e-01, 9.998931288719177e-01, 1.353196501731873e-01, 6.851807938801358e-06, 4.755698768122096e-08, 9.996631741523743e-01, 9.999991059303284e-01, 1.831701956689358e-02, 1.315645818067424e-06, 2.102755125577005e-08, 9.999539256095886e-01, 1.000000357627869e+00, 2.478852169588208e-03, -1.725271545183205e-06, 8.646631836891188e-01, 9.999935030937195e-01, 9.999998807907104e-01, 3.35057353368029e-04, 1.695530755796426e-07, 9.816850423812866e-01, 9.999963641166687e-01, 9.999998211860657e-01, 4.682367216446437e-05, -1.11080464648694e-06, 9.975189566612244e-01, 9.999994039535522e-01, 1.353355646133423e-01, 8.407040695601609e-06, -4.501294483816309e-07, 9.996635317802429e-01, 1.000003337860107e+00, 1.831684820353949e-02, 3.143840672237275e-07, -2.133990939512387e-08, 9.999529123306274e-01, 1.00000011920929e+00, 2.482477342709899e-03, -1.313355824095197e-06, 8.646672964096069e-01, 9.999929070472717e-01, 9.999974966049194e-01, 3.329318133182824e-04, 1.962771136732044e-07, 9.816854000091553e-01, 9.999986290931702e-01, 1.000000238418579e+00, 4.66817436972633e-05, -4.433775870893442e-07, 9.975200295448303e-01, 9.999988079071045e-01, 1.353356242179871e-01, 1.033534317684826e-05, -1.659521217334259e-06, 9.996665120124817e-01, 1e+00, 1.831833645701408e-02, 8.511050282322685e-07, -6.314481737490496e-08, 9.999518394470215e-01, 9.999987483024597e-01, 2.480369294062257e-03, -1.966419631571625e-07, 8.646665811538696e-01, 9.999902844429016e-01, 1.000000238418579e+00, 3.360889968462157e-04, 2.214600698379314e-07, 9.816839694976807e-01, 9.999991655349731e-01, 1e+00, 4.846336742048152e-05, -1.058844532053627e-06, 9.97522234916687e-01, 9.999990463256836e-01, 1.353340595960617e-01, 1.003264242172008e-05, -4.976898253516993e-07, 9.996680021286011e-01, 1.000000238418579e+00, 1.831334643065929e-02, 5.747455134041957e-07, 2.466122737132537e-07, 9.999580979347229e-01, 9.99999463558197e-01, 2.481831237673759e-03, -2.273754034831654e-06, 8.646650314331055e-01, 9.999917149543762e-01, 9.999995231628418e-01, 3.33912146743387e-04, 2.028893277383759e-06, 9.81684684753418e-01, 1.000000476837158e+00, 1.00000011920929e+00, 4.661795173888095e-05, 2.272254278068431e-07, 9.975208640098572e-01, 9.999994039535522e-01] -PIDWitTun.u_s=[8.00000011920929e-01, 8.00000011920929e-01] -PIDWitTun.u_m=[0e+00, 7.999616265296936e-01, 7.999999523162842e-01, 9.993996024131775e-01, 9.998931288719177e-01, 1.353196501731873e-01, 6.851807938801358e-06, 4.755695570679785e-08, 9.996631741523743e-01, 9.999991059303284e-01, -7.985127717256546e-02, -9.999855607748032e-02, -9.999997913837433e-02, 9.999493360519409e-01, 1.000000357627869e+00, 9.261211752891541e-02, 9.035567939281464e-02, 5.745506286621102e-01, 6.503327488899231e-01, 6.503363847732544e-01, 6.178590059280396e-01, 6.178480982780457e-01, 7.194294929504395e-01, 7.213242650032043e-01, 7.21324622631073e-01, 7.424807548522949e-01, 7.424817681312561e-01, 7.687986493110657e-01, 7.688640952110291e-01, 7.786269783973694e-01, 7.801550030708313e-01, 7.801550626754761e-01, 7.884552478790283e-01, 7.884581089019775e-01, 7.9285728931427e-01, 7.929393649101257e-01, 7.929393649101257e-01, 7.958003878593445e-01, 7.958005666732788e-01, 7.974589467048645e-01, 7.97463059425354e-01, 7.983428835868835e-01, 7.984806299209595e-01, 7.984806299209595e-01, 7.990854382514954e-01, 7.990856766700745e-01, 7.994444966316223e-01, 7.994512319564819e-01, 7.994512319564819e-01, 7.996701598167419e-01, 7.996701598167419e-01, 7.998015880584717e-01, 7.998018860816956e-01, 7.998702526092529e-01, 7.998809814453125e-01, 7.998809814453125e-01, 7.999284863471985e-01, 7.999284863471985e-01, 7.999565005302429e-01, 7.999570369720459e-01, 7.999570369720459e-01, 7.999742031097412e-01, 7.999742031097412e-01, 7.999844551086426e-01, 7.999845147132874e-01, 7.999898195266724e-01, 7.99990713596344e-01, 7.99990713596344e-01, 9.999327659606934e-01, 9.999999403953552e-01, -7.9852394759655e-02, -9.99990776181221e-02, -1.000000089406967e-01, 9.999467134475708e-01, 1.000001192092896e+00, 8.242629766464233e-01, 8.238266706466675e-01, 8.437286019325256e-01, 8.468433618545532e-01, 8.468436002731323e-01, 8.172461986541748e-01, 8.172363638877869e-01, 8.141170740127563e-01, 8.140588998794556e-01, 8.140588998794556e-01, 8.072172999382019e-01, 8.07217001914978e-01, 8.047668933868408e-01, 8.047608137130737e-01, 8.029993176460266e-01, 8.027236461639404e-01, 8.027236461639404e-01, 8.016865849494934e-01, 8.016862869262695e-01, 8.010112047195435e-01, 8.009986281394958e-01, 8.009986281394958e-01, 8.006062507629395e-01, 8.006062507629395e-01, 8.003635406494141e-01, 8.003629446029663e-01] -autTunSig.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] -PIDWitTun.inTunPro.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] -PIDWitTun.con.y=[8.00000011920929e-01, 1e+00, 9.998882412910461e-01, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1.524276882410049e-01, 1.081026941537856e-01, 3.686712980270386e-01, 5.244081616401672e-01, 4.893028736114508e-01, 5.780085921287537e-01, 6.112086772918701e-01, 6.566866636276245e-01, 6.970824003219604e-01, 7.061752676963806e-01, 7.250301837921143e-01, 7.424817085266113e-01, 7.510016560554504e-01, 7.637607455253601e-01, 7.676751613616943e-01, 7.746300101280212e-01, 7.776545882225037e-01, 7.831757664680481e-01, 7.875776886940002e-01, 7.888410687446594e-01, 7.914032936096191e-01, 7.926074862480164e-01, 7.942343950271606e-01, 7.958005666732788e-01, 7.961588501930237e-01, 7.97090470790863e-01, 7.974646687507629e-01, 7.980304360389709e-01, 7.982432842254639e-01, 7.986811995506287e-01, 7.990182638168335e-01, 7.991265654563904e-01, 7.993295192718506e-01, 7.994217276573181e-01, 7.995483875274658e-01, 7.996701598167419e-01, 7.996994256973267e-01, 7.997726202011108e-01, 7.998016476631165e-01, 7.99845814704895e-01, 7.998625636100769e-01, 7.998968362808228e-01, 7.999232411384583e-01, 7.999316453933716e-01, 7.999475002288818e-01, 7.999547719955444e-01, 7.999646663665771e-01, 7.999742031097412e-01, 7.999764680862427e-01, 7.999821901321411e-01, 7.999844551086426e-01, 7.999879121780396e-01, 7.999892234802246e-01, 7.999919056892395e-01, 7.999939918518066e-01, 7.24393248558044e-01, 6.800802350044255e-01, 9.476311206817627e-01, 1e+00, 1e+00, 8.859264850616455e-01, 8.415757417678833e-01, 8.565272688865662e-01, 8.510725498199463e-01, 8.388975858688354e-01, 8.297075629234314e-01, 8.193148970603943e-01, 8.201811909675598e-01, 8.163533210754395e-01, 8.134776949882507e-01, 8.103361129760742e-01, 8.07217001914978e-01, 8.070025444030762e-01, 8.054012656211853e-01, 8.046271800994873e-01, 8.035686016082764e-01, 8.031221032142639e-01, 8.024113774299622e-01, 8.018071055412292e-01, 8.015973567962646e-01, 8.0122309923172e-01, 8.010542392730713e-01, 8.008278012275696e-01, 8.006062507629395e-01, 8.005512952804565e-01, 8.004167675971985e-01, 8.003641963005066e-01, 8.002834320068359e-01] -PIDWitTun.con.k=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.224778980016708e-01, 2.248485088348389e-01, 2.248485088348389e-01, 2.248485088348389e-01, 2.248485088348389e-01, 2.248485088348389e-01, 2.248485088348389e-01, 2.248485088348389e-01, 2.248485088348389e-01, 2.248485088348389e-01, 2.248485088348389e-01, 2.248485088348389e-01, 2.248485088348389e-01, 2.248485088348389e-01, 2.248485088348389e-01, 2.248485088348389e-01, 2.248485088348389e-01, 2.248485088348389e-01, 2.248485088348389e-01, 2.248485088348389e-01, 2.248485088348389e-01, 2.248485088348389e-01, 2.248485088348389e-01, 2.248485088348389e-01, 2.248485088348389e-01, 2.248485088348389e-01, 2.248485088348389e-01, 2.248485088348389e-01, 2.248485088348389e-01] -PIDWitTun.con.Ti=[5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.002993698120117e+02, 1.013471450805664e+02, 1.013471450805664e+02, 1.013471450805664e+02, 1.013471450805664e+02, 1.013471450805664e+02, 1.013471450805664e+02, 1.013471450805664e+02, 1.013471450805664e+02, 1.013471450805664e+02, 1.013471450805664e+02, 1.013471450805664e+02, 1.013471450805664e+02, 1.013471450805664e+02, 1.013471450805664e+02, 1.013471450805664e+02, 1.013471450805664e+02, 1.013471450805664e+02, 1.013471450805664e+02, 1.013471450805664e+02, 1.013471450805664e+02, 1.013471450805664e+02, 1.013471450805664e+02, 1.013471450805664e+02, 1.013471450805664e+02, 1.013471450805664e+02, 1.013471450805664e+02, 1.013471450805664e+02, 1.013471450805664e+02] -PIDWitTun.con.Td=[1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.972771644592285e+01, 2.075896644592285e+01, 2.075896644592285e+01, 2.075896644592285e+01, 2.075896644592285e+01, 2.075896644592285e+01, 2.075896644592285e+01, 2.075896644592285e+01, 2.075896644592285e+01, 2.075896644592285e+01, 2.075896644592285e+01, 2.075896644592285e+01, 2.075896644592285e+01, 2.075896644592285e+01, 2.075896644592285e+01, 2.075896644592285e+01, 2.075896644592285e+01, 2.075896644592285e+01, 2.075896644592285e+01, 2.075896644592285e+01, 2.075896644592285e+01, 2.075896644592285e+01, 2.075896644592285e+01, 2.075896644592285e+01, 2.075896644592285e+01, 2.075896644592285e+01, 2.075896644592285e+01, 2.075896644592285e+01, 2.075896644592285e+01] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIWithFirstOrderAMIGO.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIWithFirstOrderAMIGO.txt deleted file mode 100644 index d1f0564fa53..00000000000 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_PIWithFirstOrderAMIGO.txt +++ /dev/null @@ -1,18 +0,0 @@ -last-generated=2023-11-27 -statistics-simulation= -{ - "linear": " ", - "nonlinear": " ", - "number of continuous time states": "5", - "numerical Jacobians": "0" -} -time=[0e+00, 1e+04] -PI.u_s=[8.00000011920929e-01, 8.00000011920929e-01] -PI.u_m=[0e+00, 7.999613285064697e-01, 7.999998927116394e-01, 9.993249773979187e-01, 9.998183846473694e-01, 1.353093683719635e-01, 8.184672878996935e-06, 1.224560719492726e-06, 9.996612668037415e-01, 1.00000011920929e+00, 1.831605099141598e-02, 1.067165953827498e-06, -8.352562730351565e-08, 9.999488592147827e-01, 1.00000011920929e+00, 2.480595605447888e-03, 1.908314288812107e-06, 8.64668965339662e-01, 9.999897480010986e-01, 1.000002026557922e+00, 3.360485716257244e-04, -7.040729315122007e-07, 9.816854000091553e-01, 9.999992847442627e-01, 1.000000238418579e+00, 4.630057082977146e-05, 2.03595277525892e-06, 9.975259304046631e-01, 9.999973773956299e-01, 1.353321075439453e-01, 6.625230980716879e-06, 1.10339328784903e-07, 9.996681809425354e-01, 9.999977350234985e-01, 1.83164514601227e-02, 7.532439667556901e-07, -7.770736942802614e-08, 9.999510645866394e-01, 9.999999403953552e-01, 2.480918075889349e-03, 4.587218711549212e-07, 8.646659851074219e-01, 9.999925494194031e-01, 1.000000715255737e+00, 3.365180746186525e-04, 7.656259271016097e-08, 9.816745519638062e-01, 1.00000011920929e+00, 9.999999403953552e-01, 4.717896808870137e-05, 1.142659300512605e-07, 9.97530460357666e-01, 9.999994039535522e-01, 1.35333389043808e-01, 6.895077603985555e-06, 9.572113768285817e-09, 9.996634125709534e-01, 1.000003099441528e+00, 1.831984892487526e-02, 1.317246187682031e-06, -1.446918815872777e-07, 9.999543428421021e-01, 9.999978542327881e-01, 2.480831230059266e-03, 1.816982120317334e-07, 8.646711111068726e-01, 9.999862909317017e-01, 1.000000834465027e+00, 3.366625751368569e-04, 1.499120259040861e-07, 9.816842675209045e-01, 9.999991655349731e-01, 1e+00, 4.693740993388928e-05, -2.674643155842205e-07, 9.97524082660675e-01, 9.999994039535522e-01, 1.353356689214706e-01, 9.458044587518089e-06, -3.753690407393151e-07, 9.996687769889832e-01, 9.999980330467224e-01, 1.831101812422276e-02, 1.874063997320263e-07, -5.246774321676639e-07, 9.999561905860901e-01, 9.999985694885254e-01, 2.481806790456176e-03, 3.756725391212967e-06, 8.646728992462158e-01, 9.999894499778748e-01, 1.000000476837158e+00, 3.364414733368903e-04, -5.283280302137427e-08, 9.816861152648926e-01, 9.999992847442627e-01, 9.999993443489075e-01, 4.798597365152091e-05, 2.843148649844807e-06, 9.975267648696899e-01, 9.999982118606567e-01] -PIWitTun.u_s=[8.00000011920929e-01, 8.00000011920929e-01] -PIWitTun.u_m=[0e+00, 7.999613285064697e-01, 7.999998927116394e-01, 9.993249773979187e-01, 9.998183846473694e-01, 1.353093683719635e-01, 8.184672878996935e-06, 1.224560719492726e-06, 9.996612668037415e-01, 1.00000011920929e+00, -7.985234260559082e-02, -9.999882429838181e-02, -1.000000908970833e-01, 9.99943733215332e-01, 1.00000011920929e+00, 1.09543964266777e-01, 1.073313131928444e-01, 5.112127661705024e-01, 5.744205117225647e-01, 5.744262933731079e-01, 6.227872371673584e-01, 6.228035092353821e-01, 7.029169201850891e-01, 7.044114470481873e-01, 7.04411506652832e-01, 7.408342957496643e-01, 7.408359050750732e-01, 7.652484774589539e-01, 7.653089761734009e-01, 7.773481011390686e-01, 7.792323231697083e-01, 7.79232382774353e-01, 7.876642942428589e-01, 7.876670956611633e-01, 7.925620079040527e-01, 7.926533222198486e-01, 7.926533222198486e-01, 7.956287264823914e-01, 7.956288456916809e-01, 7.973936200141907e-01, 7.973980307579041e-01, 7.983088493347168e-01, 7.984514236450195e-01, 7.984514236450195e-01, 7.99078106880188e-01, 7.990782856941223e-01, 7.994446158409119e-01, 7.994514107704163e-01, 7.994514107704163e-01, 7.996734976768494e-01, 7.996734976768494e-01, 7.998053431510925e-01, 7.998057007789612e-01, 7.998737096786499e-01, 7.998843193054199e-01, 7.998843193054199e-01, 7.999311685562134e-01, 7.999311685562134e-01, 7.999585270881653e-01, 7.999590039253235e-01, 7.999590039253235e-01, 7.999756336212158e-01, 7.999756336212158e-01, 7.999854683876038e-01, 7.999854683876038e-01, 7.999905943870544e-01, 7.999913692474365e-01, 7.999913692474365e-01, 9.999326467514038e-01, 9.999999403953552e-01, -7.985270023345947e-02, -9.999909996986389e-02, -1.000000014901161e-01, 9.999483823776245e-01, 1.000000238418579e+00, 8.543342351913452e-01, 8.539727926254272e-01, 8.491872549057007e-01, 8.484383225440979e-01, 8.484382629394531e-01, 8.252913355827332e-01, 8.252837061882019e-01, 8.163015246391296e-01, 8.16133975982666e-01, 8.16133975982666e-01, 8.094805479049683e-01, 8.094802498817444e-01, 8.057648539543152e-01, 8.057556748390198e-01, 8.037608861923218e-01, 8.034487366676331e-01, 8.034487366676331e-01, 8.020777702331543e-01, 8.020773530006409e-01, 8.012638092041016e-01, 8.012486100196838e-01, 8.012486100196838e-01, 8.007512092590332e-01, 8.007511496543884e-01, 8.004524707794189e-01, 8.004517555236816e-01] -autTunSig.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] -PIWitTun.inTunPro.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] -PIWitTun.con.y=[8.00000011920929e-01, 1e+00, 9.999609589576721e-01, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1.654285043478012e-01, 1.239270716905593e-01, 3.15449059009552e-01, 4.594592750072479e-01, 5.284975171089172e-01, 5.666446089744568e-01, 6.134434342384338e-01, 6.455934047698975e-01, 6.823538541793823e-01, 7.013773918151855e-01, 7.210043668746948e-01, 7.40835964679718e-01, 7.481247186660767e-01, 7.603991627693176e-01, 7.662855386734009e-01, 7.734745740890503e-01, 7.784460783004761e-01, 7.824967503547668e-01, 7.868053913116455e-01, 7.885597944259644e-01, 7.911180853843689e-01, 7.925929427146912e-01, 7.941046357154846e-01, 7.956288456916809e-01, 7.961284518241882e-01, 7.97035276889801e-01, 7.974803447723389e-01, 7.980195879936218e-01, 7.983909845352173e-01, 7.986927628517151e-01, 7.990140318870544e-01, 7.99145519733429e-01, 7.993366718292236e-01, 7.994468212127686e-01, 7.995597124099731e-01, 7.996734976768494e-01, 7.997108101844788e-01, 7.997785806655884e-01, 7.99811840057373e-01, 7.998520731925964e-01, 7.998798489570618e-01, 7.999023795127869e-01, 7.999263405799866e-01, 7.999361753463745e-01, 7.999504804611206e-01, 7.999587059020996e-01, 7.999671101570129e-01, 7.999756336212158e-01, 7.999783754348755e-01, 7.999834418296814e-01, 7.99985945224762e-01, 7.999889254570007e-01, 7.999910116195679e-01, 7.999926805496216e-01, 7.999945282936096e-01, 7.394298315048214e-01, 6.979268789291385e-01, 8.955410122871399e-01, 1e+00, 1e+00, 9.11681056022644e-01, 8.704586625099182e-01, 8.684061765670776e-01, 8.57336163520813e-01, 8.471353054046631e-01, 8.372619152069092e-01, 8.272800445556641e-01, 8.244693875312805e-01, 8.192601799964905e-01, 8.161055445671082e-01, 8.128050565719604e-01, 8.094802498817444e-01, 8.084906935691833e-01, 8.065370917320251e-01, 8.055823445320129e-01, 8.043975830078125e-01, 8.035956025123596e-01, 8.029301762580872e-01, 8.022194504737854e-01, 8.019335269927979e-01, 8.015055060386658e-01, 8.012635707855225e-01, 8.010084629058838e-01, 8.007511496543884e-01, 8.00668478012085e-01, 8.005136847496033e-01, 8.00439178943634e-01, 8.003461956977844e-01] -PIWitTun.con.k=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.576374620199203e-01, 1.655071228742599e-01, 1.655071228742599e-01, 1.655071228742599e-01, 1.655071228742599e-01, 1.655071228742599e-01, 1.655071228742599e-01, 1.655071228742599e-01, 1.655071228742599e-01, 1.655071228742599e-01, 1.655071228742599e-01, 1.655071228742599e-01, 1.655071228742599e-01, 1.655071228742599e-01, 1.655071228742599e-01, 1.655071228742599e-01, 1.655071228742599e-01, 1.655071228742599e-01, 1.655071228742599e-01, 1.655071228742599e-01, 1.655071228742599e-01, 1.655071228742599e-01, 1.655071228742599e-01, 1.655071228742599e-01, 1.655071228742599e-01, 1.655071228742599e-01, 1.655071228742599e-01, 1.655071228742599e-01, 1.655071228742599e-01] -PIWitTun.con.Ti=[5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 7.598137664794922e+01, 8.031418609619141e+01, 8.031418609619141e+01, 8.031418609619141e+01, 8.031418609619141e+01, 8.031418609619141e+01, 8.031418609619141e+01, 8.031418609619141e+01, 8.031418609619141e+01, 8.031418609619141e+01, 8.031418609619141e+01, 8.031418609619141e+01, 8.031418609619141e+01, 8.031418609619141e+01, 8.031418609619141e+01, 8.031418609619141e+01, 8.031418609619141e+01, 8.031418609619141e+01, 8.031418609619141e+01, 8.031418609619141e+01, 8.031418609619141e+01, 8.031418609619141e+01, 8.031418609619141e+01, 8.031418609619141e+01, 8.031418609619141e+01, 8.031418609619141e+01, 8.031418609619141e+01, 8.031418609619141e+01, 8.031418609619141e+01] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_ReverseActingPIDWithFirstOrderAMIGO.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_ReverseActingPIDWithFirstOrderAMIGO.txt new file mode 100644 index 00000000000..810b4dea907 --- /dev/null +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_ReverseActingPIDWithFirstOrderAMIGO.txt @@ -0,0 +1,19 @@ +last-generated=2023-12-06 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "number of continuous time states": "7", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+04] +PID.u_s=[8.00000011920929e-01, 8.00000011920929e-01] +PID.u_m=[0e+00, 7.999616265296936e-01, 7.999999523162842e-01, 9.993995428085327e-01, 9.998931288719177e-01, 1.353196501731873e-01, 7.387421646853909e-06, -8.588997246761294e-08, 9.996626377105713e-01, 9.999998211860657e-01, 1.831911504268646e-02, 1.068781330104684e-06, -8.706638965350066e-08, 9.999533891677856e-01, 1.00000011920929e+00, 2.479576040059328e-03, 1.121746208809782e-06, 8.646638989448561e-01, 9.999935030937195e-01, 9.999998211860657e-01, 3.375628730282187e-04, -6.60414301023593e-08, 9.816861748695374e-01, 9.99996542930603e-01, 9.999983906745911e-01, 4.730629734694958e-05, 2.078003035421716e-06, 9.975242018699646e-01, 9.999957680702209e-01, 1.353354752063751e-01, 9.875457180896774e-06, -7.394492484991133e-08, 9.996583461761475e-01, 9.999992251396179e-01, 1.831531524658167e-02, 7.9140846764858e-07, 7.73227725403558e-07, 9.999507069587708e-01, 9.999967813491821e-01, 2.477406291291118e-03, -6.851237088767448e-08, 8.646674156188965e-01, 9.999933242797852e-01, 1.00000011920929e+00, 3.37351142661646e-04, -7.121252565411851e-07, 9.816848635673523e-01, 9.999986290931702e-01, 1.000000238418579e+00, 4.623251516022719e-05, -2.070803759579576e-07, 9.975234866142273e-01, 1.000000238418579e+00, 1.353340446949005e-01, 9.325593055109493e-06, -2.736818203175062e-07, 9.996649622917175e-01, 1.000001192092896e+00, 1.831496879458427e-02, 4.971052476321347e-07, 9.243087184529486e-09, 9.999537467956543e-01, 1e+00, 2.481590025126934e-03, -1.843162294790091e-06, 8.646670579910278e-01, 9.999902248382568e-01, 1.00000011920929e+00, 3.360872215125578e-04, -1.963165004781334e-06, 9.816852807998657e-01, 9.999991059303284e-01, 1e+00, 4.846314550377429e-05, -1.058807583831367e-06, 9.975221753120422e-01, 1.000000596046448e+00, 1.353335380554199e-01, 8.785174031800125e-06, 8.739137768998262e-08, 9.996626377105713e-01, 9.999991059303284e-01, 1.831316389143467e-02, 1.061952616510098e-06, 4.57016369637131e-07, 9.999481439590454e-01, 1e+00, 2.481908304616809e-03, 5.923861863266211e-07, 8.646659851074219e-01, 9.99992311000824e-01, 1.000001311302185e+00, 3.35133052431047e-04, -1.853045432653744e-06, 9.816846251487732e-01, 1.000001907348633e+00, 9.999998211860657e-01, 4.604455534717999e-05, 1.709470325295115e-06, 9.975236058235168e-01, 1.000000238418579e+00] +PIDWitTun.u_s=[8.00000011920929e-01, 8.00000011920929e-01] +PIDWitTun.u_m=[0e+00, 7.999616265296936e-01, 7.999999523162842e-01, 9.993996024131775e-01, 9.998931288719177e-01, 1.353196501731873e-01, 7.387421646853909e-06, -8.588997246761294e-08, 9.996626377105713e-01, 9.999998211860657e-01, -7.984897494316101e-02, -9.999882429838181e-02, -1.000000983476639e-01, 9.999487400054932e-01, 1.00000011920929e+00, 9.26082655787468e-02, 9.035374969244003e-02, 5.7454800605774e-01, 6.503300070762634e-01, 6.503335237503052e-01, 6.178581118583679e-01, 6.178471446037292e-01, 7.194286584854126e-01, 7.213233709335327e-01, 7.21323549747467e-01, 7.424801588058472e-01, 7.424811124801636e-01, 7.687985301017761e-01, 7.688637375831604e-01, 7.786267995834351e-01, 7.801547646522522e-01, 7.801548838615417e-01, 7.884551286697388e-01, 7.88457989692688e-01, 7.928572297096252e-01, 7.92939305305481e-01, 7.92939305305481e-01, 7.958003878593445e-01, 7.95800507068634e-01, 7.974588871002197e-01, 7.97463059425354e-01, 7.983428835868835e-01, 7.984805703163147e-01, 7.984805703163147e-01, 7.990854382514954e-01, 7.990856170654297e-01, 7.994444966316223e-01, 7.994512319564819e-01, 7.994512319564819e-01, 7.996701002120972e-01, 7.996701598167419e-01, 7.998015880584717e-01, 7.998018860816956e-01, 7.998702526092529e-01, 7.998809814453125e-01, 7.998809814453125e-01, 7.999284863471985e-01, 7.999284863471985e-01, 7.999565005302429e-01, 7.999570369720459e-01, 7.999570369720459e-01, 7.999742031097412e-01, 7.999742031097412e-01, 7.999844551086426e-01, 7.999845147132874e-01, 7.999898195266724e-01, 7.99990713596344e-01, 7.99990713596344e-01, 9.999327659606934e-01, 1.000000357627869e+00, -7.985378801822662e-02, -9.999904036521912e-02, -1.000000089406967e-01, 9.999467134475708e-01, 1.000001192092896e+00, 8.242793083190918e-01, 8.238427639007568e-01, 8.437345623970032e-01, 8.468477129936218e-01, 8.468478918075562e-01, 8.172508478164673e-01, 8.172408938407898e-01, 8.141192197799683e-01, 8.140609860420227e-01, 8.140609860420227e-01, 8.072188496589661e-01, 8.072184920310974e-01, 8.047677278518677e-01, 8.047616481781006e-01, 8.029998540878296e-01, 8.027241230010986e-01, 8.027241230010986e-01, 8.016868829727173e-01, 8.016865253448486e-01, 8.010113835334778e-01, 8.009988069534302e-01, 8.009988069534302e-01, 8.00606369972229e-01, 8.00606369972229e-01, 8.003636598587036e-01, 8.003630042076111e-01] +autTunSig.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +PIDWitTun.inTunPro.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +PIDWitTun.con.y=[8.00000011920929e-01, 1e+00, 9.998882412910461e-01, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1.524225324392319e-01, 1.080979034304618e-01, 3.686680495738983e-01, 5.244071483612061e-01, 4.89300966262818e-01, 5.780069231987e-01, 6.112075448036194e-01, 6.56685471534729e-01, 6.970813274383545e-01, 7.061745524406433e-01, 7.250295877456665e-01, 7.424811720848083e-01, 7.51001238822937e-01, 7.637604475021362e-01, 7.6767498254776e-01, 7.746297121047974e-01, 7.776544690132141e-01, 7.831755876541138e-01, 7.875775694847107e-01, 7.888409495353699e-01, 7.914032340049744e-01, 7.926073670387268e-01, 7.942343354225159e-01, 7.95800507068634e-01, 7.961587905883789e-01, 7.970904111862183e-01, 7.974646091461182e-01, 7.980304360389709e-01, 7.982432842254639e-01, 7.986811995506287e-01, 7.990182638168335e-01, 7.991265654563904e-01, 7.993295192718506e-01, 7.994217276573181e-01, 7.995483875274658e-01, 7.996701598167419e-01, 7.996994256973267e-01, 7.997726202011108e-01, 7.998016476631165e-01, 7.99845814704895e-01, 7.998625636100769e-01, 7.998968362808228e-01, 7.999232411384583e-01, 7.999316453933716e-01, 7.999475002288818e-01, 7.999547719955444e-01, 7.999646663665771e-01, 7.999742031097412e-01, 7.999764680862427e-01, 7.999821901321411e-01, 7.999844551086426e-01, 7.999879121780396e-01, 7.999892234802246e-01, 7.999919056892395e-01, 7.999939918518066e-01, 7.243933677673335e-01, 6.800807714462285e-01, 9.476300477981567e-01, 1e+00, 1e+00, 8.85942816734314e-01, 8.415921330451965e-01, 8.565381169319153e-01, 8.510796427726746e-01, 8.389047980308533e-01, 8.297131657600403e-01, 8.193196058273315e-01, 8.201848864555359e-01, 8.163560032844543e-01, 8.134800791740417e-01, 8.10338020324707e-01, 8.072184920310974e-01, 8.070038557052612e-01, 8.054022192955017e-01, 8.046280145645142e-01, 8.035692572593689e-01, 8.031226396560669e-01, 8.024117946624756e-01, 8.018074035644531e-01, 8.015976548194885e-01, 8.012233376502991e-01, 8.010544180870056e-01, 8.008279800415039e-01, 8.00606369972229e-01, 8.005513548851013e-01, 8.004168272018433e-01, 8.003642559051514e-01, 8.002834916114807e-01] +PIDWitTun.con.k=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.248483598232269e-01, 2.248483598232269e-01, 2.248483598232269e-01, 2.248483598232269e-01, 2.248483598232269e-01, 2.248483598232269e-01, 2.248483598232269e-01, 2.248483598232269e-01, 2.248483598232269e-01, 2.248483598232269e-01, 2.248483598232269e-01, 2.248483598232269e-01, 2.248483598232269e-01, 2.248483598232269e-01, 2.248483598232269e-01, 2.248483598232269e-01, 2.248483598232269e-01, 2.248483598232269e-01, 2.248483598232269e-01, 2.248483598232269e-01, 2.248483598232269e-01, 2.248483598232269e-01, 2.248483598232269e-01, 2.248483598232269e-01, 2.248483598232269e-01, 2.248483598232269e-01, 2.248483598232269e-01, 2.248483598232269e-01] +PIDWitTun.con.Ti=[5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.013471145629883e+02, 1.013471145629883e+02, 1.013471145629883e+02, 1.013471145629883e+02, 1.013471145629883e+02, 1.013471145629883e+02, 1.013471145629883e+02, 1.013471145629883e+02, 1.013471145629883e+02, 1.013471145629883e+02, 1.013471145629883e+02, 1.013471145629883e+02, 1.013471145629883e+02, 1.013471145629883e+02, 1.013471145629883e+02, 1.013471145629883e+02, 1.013471145629883e+02, 1.013471145629883e+02, 1.013471145629883e+02, 1.013471145629883e+02, 1.013471145629883e+02, 1.013471145629883e+02, 1.013471145629883e+02, 1.013471145629883e+02, 1.013471145629883e+02, 1.013471145629883e+02, 1.013471145629883e+02, 1.013471145629883e+02] +PIDWitTun.con.Td=[1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.075888633728027e+01, 2.075888633728027e+01, 2.075888633728027e+01, 2.075888633728027e+01, 2.075888633728027e+01, 2.075888633728027e+01, 2.075888633728027e+01, 2.075888633728027e+01, 2.075888633728027e+01, 2.075888633728027e+01, 2.075888633728027e+01, 2.075888633728027e+01, 2.075888633728027e+01, 2.075888633728027e+01, 2.075888633728027e+01, 2.075888633728027e+01, 2.075888633728027e+01, 2.075888633728027e+01, 2.075888633728027e+01, 2.075888633728027e+01, 2.075888633728027e+01, 2.075888633728027e+01, 2.075888633728027e+01, 2.075888633728027e+01, 2.075888633728027e+01, 2.075888633728027e+01, 2.075888633728027e+01, 2.075888633728027e+01] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_ReverseActingPIWithFirstOrderAMIGO.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_ReverseActingPIWithFirstOrderAMIGO.txt new file mode 100644 index 00000000000..93ae9aabbe0 --- /dev/null +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_ReverseActingPIWithFirstOrderAMIGO.txt @@ -0,0 +1,18 @@ +last-generated=2023-12-06 +statistics-simulation= +{ + "linear": " ", + "nonlinear": " ", + "number of continuous time states": "5", + "numerical Jacobians": "0" +} +time=[0e+00, 1e+04] +PI.u_s=[8.00000011920929e-01, 8.00000011920929e-01] +PI.u_m=[0e+00, 7.999613285064697e-01, 7.999998927116394e-01, 9.993249773979187e-01, 9.998183846473694e-01, 1.353093683719635e-01, 8.515467925462872e-06, -6.112286854431464e-08, 9.996612071990967e-01, 1e+00, 1.831970550119877e-02, 1.269126414626953e-06, -9.207912654574102e-08, 9.999585747718811e-01, 9.999988675117493e-01, 2.48028477653861e-03, -2.508132013190334e-07, 8.646663427352919e-01, 9.999977946281433e-01, 1.000000476837158e+00, 3.370603080838919e-04, 2.367633129551905e-07, 9.816855192184448e-01, 9.999983906745911e-01, 9.999998807907104e-01, 4.276327672414482e-05, -3.569005002646009e-08, 9.975234270095825e-01, 9.999994039535522e-01, 1.353351771831512e-01, 6.743606263626134e-06, -1.979775703375708e-07, 9.996554255485535e-01, 9.999986290931702e-01, 1.831582374870741e-02, 7.781505928505794e-07, -1.03922545235946e-07, 9.999563694000244e-01, 1.000000953674316e+00, 2.484253142029047e-03, -7.954121201692033e-07, 8.646655678749084e-01, 9.999925494194031e-01, 1.000000238418579e+00, 3.385374438948929e-04, -5.895987698067984e-08, 9.816806316375732e-01, 9.999963045120239e-01, 9.999974966049194e-01, 5.031171895097941e-05, -1.520526097920083e-06, 9.975247979164124e-01, 1.00000262260437e+00, 1.353289633989334e-01, 8.183475983969402e-06, -4.299174918287463e-07, 9.99663233757019e-01, 1.000001430511475e+00, 1.831613481044769e-02, 1.382595314680657e-06, -1.608066781955131e-07, 9.999553561210632e-01, 9.999995231628418e-01, 2.48058675788343e-03, -9.909015261655441e-07, 8.64669144153595e-01, 9.999868273735046e-01, 1.000001311302185e+00, 3.366621385794001e-04, 1.500396962228475e-07, 9.816856384277344e-01, 9.99998927116394e-01, 1e+00, 4.693805749411695e-05, -2.753301941993413e-07, 9.975259304046631e-01, 1e+00, 1.353321224451065e-01, 8.922480446926784e-06, -5.896998231946782e-07, 9.99667227268219e-01, 9.999924302101135e-01, 1.831679046154022e-02, -1.205465764542168e-06, -1.679391630204918e-07, 9.999531507492065e-01, 1.000000953674316e+00, 2.481523202732205e-03, 5.261513447152311e-09, 8.646730184555054e-01, 9.999914765357971e-01, 9.999998807907104e-01, 3.420602006372064e-04, -2.416264237581345e-07, 9.816855192184448e-01, 9.999979734420776e-01, 1e+00, 4.276737672626041e-05, 1.054520595289432e-07, 9.97525155544281e-01, 9.999986886978149e-01] +PIWitTun.u_s=[8.00000011920929e-01, 8.00000011920929e-01] +PIWitTun.u_m=[0e+00, 7.999613285064697e-01, 7.999998927116394e-01, 9.993249773979187e-01, 9.998183846473694e-01, 1.353093683719635e-01, 8.515467925462872e-06, -6.112286854431464e-08, 9.996612071990967e-01, 1e+00, -7.984831929206848e-02, -9.99986007809639e-02, -1.000000983476639e-01, 9.999544620513916e-01, 9.999987483024597e-01, 1.095525026321411e-01, 1.073382198810577e-01, 5.112158656120307e-01, 5.744279026985168e-01, 5.744290947914124e-01, 6.227896809577942e-01, 6.228059530258179e-01, 7.029182910919189e-01, 7.044127583503723e-01, 7.044128775596619e-01, 7.408353090286255e-01, 7.408368587493896e-01, 7.652489542961121e-01, 7.653095126152039e-01, 7.773483991622925e-01, 7.792326211929321e-01, 7.792326807975769e-01, 7.876644134521484e-01, 7.876672744750977e-01, 7.925621271133423e-01, 7.926534414291382e-01, 7.926534414291382e-01, 7.956287860870361e-01, 7.956289052963257e-01, 7.973936796188354e-01, 7.973980903625488e-01, 7.983089089393616e-01, 7.984514236450195e-01, 7.984514832496643e-01, 7.99078106880188e-01, 7.990783452987671e-01, 7.994446158409119e-01, 7.994514107704163e-01, 7.994514107704163e-01, 7.996734976768494e-01, 7.996734976768494e-01, 7.998053431510925e-01, 7.998057007789612e-01, 7.998737096786499e-01, 7.998843193054199e-01, 7.998843193054199e-01, 7.999311685562134e-01, 7.999311685562134e-01, 7.999585270881653e-01, 7.999590039253235e-01, 7.999590039253235e-01, 7.999756336212158e-01, 7.999756336212158e-01, 7.999854683876038e-01, 7.999854683876038e-01, 7.999905943870544e-01, 7.999913692474365e-01, 7.999913692474365e-01, 9.999326467514038e-01, 9.999999403953552e-01, -7.985420525074005e-02, -9.999882429838181e-02, -1.000000014901161e-01, 9.999483823776245e-01, 1.000000357627869e+00, 8.543278574943542e-01, 8.539665937423706e-01, 8.49184513092041e-01, 8.484360575675964e-01, 8.484360575675964e-01, 8.252896666526794e-01, 8.252821564674377e-01, 8.16300630569458e-01, 8.161330223083496e-01, 8.161330819129944e-01, 8.094800114631653e-01, 8.094796538352966e-01, 8.057645559310913e-01, 8.057553172111511e-01, 8.037607073783875e-01, 8.034485578536987e-01, 8.03448498249054e-01, 8.020776510238647e-01, 8.020771741867065e-01, 8.012637495994568e-01, 8.012485504150391e-01, 8.012485504150391e-01, 8.007511496543884e-01, 8.007511496543884e-01, 8.004524707794189e-01, 8.004516959190369e-01] +autTunSig.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +PIWitTun.inTunPro.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +PIWitTun.con.y=[8.00000011920929e-01, 1e+00, 9.999609589576721e-01, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1.654360443353653e-01, 1.239362657070159e-01, 3.154558539390564e-01, 4.594644904136658e-01, 5.285016298294067e-01, 5.666474103927612e-01, 6.134461760520935e-01, 6.455956101417542e-01, 6.823555827140808e-01, 7.013788223266602e-01, 7.210055589675903e-01, 7.408368587493896e-01, 7.481254935264587e-01, 7.603997588157654e-01, 7.662860751152039e-01, 7.734749317169189e-01, 7.784463763237e-01, 7.824970483779907e-01, 7.868055701255798e-01, 7.885599732398987e-01, 7.911182641983032e-01, 7.925930619239807e-01, 7.941047549247742e-01, 7.956289052963257e-01, 7.96128511428833e-01, 7.970353364944458e-01, 7.974804043769836e-01, 7.980195879936218e-01, 7.983910441398621e-01, 7.986927628517151e-01, 7.990140318870544e-01, 7.99145519733429e-01, 7.993366718292236e-01, 7.994468212127686e-01, 7.995597124099731e-01, 7.996734976768494e-01, 7.997108697891235e-01, 7.997785806655884e-01, 7.99811840057373e-01, 7.998520731925964e-01, 7.998798489570618e-01, 7.999023795127869e-01, 7.999263405799866e-01, 7.999361753463745e-01, 7.999504804611206e-01, 7.999587059020996e-01, 7.999671101570129e-01, 7.999756336212158e-01, 7.999783754348755e-01, 7.999834418296814e-01, 7.99985945224762e-01, 7.999889254570007e-01, 7.999910116195679e-01, 7.999926805496216e-01, 7.999945282936096e-01, 7.394297719001767e-01, 6.979268789291385e-01, 8.95541250705719e-01, 1e+00, 1e+00, 9.116749167442322e-01, 8.704525232315063e-01, 8.684017658233643e-01, 8.573329448699951e-01, 8.47132682800293e-01, 8.372597098350525e-01, 8.272782564163208e-01, 8.244678974151611e-01, 8.192590475082397e-01, 8.161045908927917e-01, 8.128042817115784e-01, 8.094796538352966e-01, 8.084901571273804e-01, 8.065367341041565e-01, 8.055819869041443e-01, 8.043973445892334e-01, 8.035954236984253e-01, 8.029299974441528e-01, 8.022193312644958e-01, 8.019334077835083e-01, 8.015053868293762e-01, 8.012635111808777e-01, 8.01008403301239e-01, 8.007511496543884e-01, 8.006684184074402e-01, 8.005136251449585e-01, 8.004391193389893e-01, 8.003461360931396e-01] +PIWitTun.con.k=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.65507048368454e-01, 1.65507048368454e-01, 1.65507048368454e-01, 1.65507048368454e-01, 1.65507048368454e-01, 1.65507048368454e-01, 1.65507048368454e-01, 1.65507048368454e-01, 1.65507048368454e-01, 1.65507048368454e-01, 1.65507048368454e-01, 1.65507048368454e-01, 1.65507048368454e-01, 1.65507048368454e-01, 1.65507048368454e-01, 1.65507048368454e-01, 1.65507048368454e-01, 1.65507048368454e-01, 1.65507048368454e-01, 1.65507048368454e-01, 1.65507048368454e-01, 1.65507048368454e-01, 1.65507048368454e-01, 1.65507048368454e-01, 1.65507048368454e-01, 1.65507048368454e-01, 1.65507048368454e-01, 1.65507048368454e-01] +PIWitTun.con.Ti=[5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 8.031419372558594e+01, 8.031419372558594e+01, 8.031419372558594e+01, 8.031419372558594e+01, 8.031419372558594e+01, 8.031419372558594e+01, 8.031419372558594e+01, 8.031419372558594e+01, 8.031419372558594e+01, 8.031419372558594e+01, 8.031419372558594e+01, 8.031419372558594e+01, 8.031419372558594e+01, 8.031419372558594e+01, 8.031419372558594e+01, 8.031419372558594e+01, 8.031419372558594e+01, 8.031419372558594e+01, 8.031419372558594e+01, 8.031419372558594e+01, 8.031419372558594e+01, 8.031419372558594e+01, 8.031419372558594e+01, 8.031419372558594e+01, 8.031419372558594e+01, 8.031419372558594e+01, 8.031419372558594e+01, 8.031419372558594e+01] diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/ReverseActingPIDWithFirstOrderAMIGO.mos similarity index 90% rename from Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mos rename to Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/ReverseActingPIDWithFirstOrderAMIGO.mos index 408bc153552..70e7fe90b18 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIDWithFirstOrderAMIGO.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/ReverseActingPIDWithFirstOrderAMIGO.mos @@ -1,4 +1,4 @@ -simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIDWithFirstOrderAMIGO", stopTime=10000, method="Cvode", tolerance=1e-06, resultFile="PIDWithFirstOrderAMIGO"); +simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.ReverseActingPIDWithFirstOrderAMIGO", stopTime=10000, method="Cvode", tolerance=1e-06, resultFile="ReverseActingPIDWithFirstOrderAMIGO"); createPlot(id=1, position={58, 0, 954, 958}, y={"PID.u_s", "PID.u_m"}, range={0.0, 10000.0, -1.0, 2.0}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}, timeUnit="s"); createPlot(id=1, position={58, 0, 954, 958}, y={"PIDWitTun.u_s", "PIDWitTun.u_m"}, range={0.0, 10000.0, -1.0, 2.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}, timeUnit="s"); createPlot(id=1, position={58, 0, 954, 958}, y={"autTunSig.y"}, range={0.0, 10000.0, -1.0, 2.0}, grid=true, subPlot=103, colors={{28,108,200}}, timeUnit="s"); diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/ReverseActingPIWithFirstOrderAMIGO.mos similarity index 89% rename from Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mos rename to Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/ReverseActingPIWithFirstOrderAMIGO.mos index f1fe2c1e0aa..4e3d14af4d9 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/PIWithFirstOrderAMIGO.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/ReverseActingPIWithFirstOrderAMIGO.mos @@ -1,4 +1,4 @@ -simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIWithFirstOrderAMIGO", stopTime=10000, method="Cvode", tolerance=1e-06, resultFile="PIWithFirstOrderAMIGO"); +simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.ReverseActingPIWithFirstOrderAMIGO", stopTime=10000, method="Cvode", tolerance=1e-06, resultFile="ReverseActingPIWithFirstOrderAMIGO"); createPlot(id=1, position={58, 0, 954, 958}, y={"PI.u_s", "PI.u_m"}, range={0.0, 10000.0, -1.0, 2.0}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}, timeUnit="s"); createPlot(id=1, position={58, 0, 954, 958}, y={"PIWitTun.u_s", "PIWitTun.u_m"}, range={0.0, 10000.0, -1.0, 2.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}, timeUnit="s"); createPlot(id=1, position={58, 0, 954, 958}, y={"autTunSig.y"}, range={0.0, 10000.0, -1.0, 2.0}, grid=true, subPlot=103, colors={{28,108,200}}, timeUnit="s"); diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIDWithFirstOrderAMIGO.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.ReverseActingPIDWithFirstOrderAMIGO.mos similarity index 100% rename from Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIDWithFirstOrderAMIGO.mos rename to Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.ReverseActingPIDWithFirstOrderAMIGO.mos diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIWithFirstOrderAMIGO.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.ReverseActingPIWithFirstOrderAMIGO.mos similarity index 100% rename from Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIWithFirstOrderAMIGO.mos rename to Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.ReverseActingPIWithFirstOrderAMIGO.mos From 3500494a3cf498628e3d60aaeb55c55e389472a5 Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Thu, 14 Dec 2023 16:04:06 -0800 Subject: [PATCH 140/214] reimplemented on-off controller as the OnOffController will be obsolete --- .../PIDWithAutotuning/Relay/Controller.mo | 140 +++++++++++------- 1 file changed, 83 insertions(+), 57 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo index 12042947dca..b5ae105e3f5 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo @@ -1,9 +1,12 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay; block Controller "Output relay signals for tuning PID controllers" - parameter Real yHig(min=1E-6) = 1 + parameter Real yHig( + final min=1E-6) = 1 "Higher value for the relay output"; - parameter Real yLow(min=1E-6) = 0.5 + parameter Real yLow( + final min=1E-6, + final max=yHig) = 0.5 "Lower value for the output"; parameter Real deaBan(min=1E-6) = 0.5 "Deadband for holding the output value"; @@ -24,85 +27,110 @@ block Controller iconTransformation(extent={{-20,-20},{20,20}},rotation=90,origin={-60,-120}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput y "Control output" - annotation (Placement(transformation(extent={{100,40},{140,80}}))); + annotation (Placement(transformation(extent={{100,30},{140,70}}), + iconTransformation(extent={{100,40},{140,80}}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput yOn "Relay switch output, true when control output switches to the higher value" annotation (Placement(transformation(extent={{100,-80},{140,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput yErr "Control error" - annotation (Placement(transformation(extent={{100,0},{140,40}}), + annotation (Placement(transformation(extent={{100,-10},{140,30}}), iconTransformation(extent={{100,-20},{140,20}}))); protected - Buildings.Controls.OBC.CDL.Logical.OnOffController greSetMea( - final bandwidth= deaBan*2, - final pre_y_start=true) if reverseActing - "Check if the reference is larger than the measured value, by default the relay control is on" - annotation (Placement(transformation(extent={{0,-10},{20,10}}))); Buildings.Controls.OBC.CDL.Reals.Switch swi "Switch between a higher value and a lower value" - annotation (Placement(transformation(extent={{60,-10},{80,10}}))); + annotation (Placement(transformation(extent={{60,40},{80,60}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant higVal( final k=yHig) "Higher value for the output" - annotation (Placement(transformation(extent={{0,70},{20,90}}))); + annotation (Placement(transformation(extent={{-80,70},{-60,90}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant lowVal( final k=-yLow) "Lower value for the output" - annotation (Placement(transformation(extent={{0,-70},{20,-50}}))); + annotation (Placement(transformation(extent={{-80,20},{-60,40}}))); Buildings.Controls.OBC.CDL.Reals.Subtract conErr "Control error (set point - measurement)" - annotation (Placement(transformation(extent={{-60,10},{-40,30}}))); + annotation (Placement(transformation(extent={{40,0},{60,20}}))); Buildings.Controls.OBC.CDL.Reals.Switch swi1 "Switch between a higher value and a lower value" annotation (Placement(transformation(extent={{-10,-10},{10,10}}, - origin={-50,-50}))); - Buildings.Controls.OBC.CDL.Logical.OnOffController greMeaSet( - final bandwidth=deaBan*2, - final pre_y_start=true) if not reverseActing + origin={-50,-60}))); + Buildings.Controls.OBC.CDL.Reals.Subtract sub + if reverseActing "Inputs difference" + annotation (Placement(transformation(extent={{0,-50},{20,-30}}))); + Buildings.Controls.OBC.CDL.Reals.Hysteresis hys( + final uLow=-deaBa, + final uHigh=deaBa, + final pre_y_start=true) "Check if the measured value is larger than the reference, by default the relay control is on" - annotation (Placement(transformation(extent={{0,-40},{20,-20}}))); -initial equation - assert( - yHig-yLow>1E-6, - "In " + getInstanceName() + "The higher value for the relay output should - be larger than that of the lower value."); + annotation (Placement(transformation(extent={{40,-60},{60,-40}}))); + Buildings.Controls.OBC.CDL.Reals.Subtract sub1 + if not reverseActing "Inputs difference" + annotation (Placement(transformation(extent={{0,-80},{20,-60}}))); + Buildings.Controls.OBC.CDL.Reals.Greater gre + "Check if the higher value is greater than the lower value" + annotation (Placement(transformation(extent={{0,70},{20,90}}))); + Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter gai( + final k=-1) "Gain" + annotation (Placement(transformation(extent={{-40,40},{-20,60}}))); + Buildings.Controls.OBC.CDL.Utilities.Assert assMes( + final message="Warning: The higher value for the relay output should be greater than that of the lower value.") + "Warning when the higher value is set to be less than the lower value" + annotation (Placement(transformation(extent={{40,70},{60,90}}))); equation connect(swi.y, y) - annotation (Line(points={{82,0},{88,0},{88,60},{120,60}}, color={0,0,127})); + annotation (Line(points={{82,50},{120,50}}, color={0,0,127})); connect(higVal.y, swi.u1) - annotation (Line(points={{22,80},{30,80},{30,8},{58,8}},color={0,0,127})); - connect(lowVal.y, swi.u3) annotation (Line(points={{22,-60},{40,-60},{40,-8},{ - 58,-8}}, color={0,0,127})); - connect(conErr.y, yErr) annotation (Line(points={{-38,20},{120,20}}, + annotation (Line(points={{-58,80},{-20,80},{-20,58},{58,58}},color={0,0,127})); + connect(lowVal.y, swi.u3) annotation (Line(points={{-58,30},{-20,30},{-20,42}, + {58,42}}, + color={0,0,127})); + connect(conErr.y, yErr) annotation (Line(points={{62,10},{120,10}}, color={0,0,127})); - connect(greSetMea.y, swi.u2) - annotation (Line(points={{22,0},{58,0}}, color={255,0,255})); - connect(swi1.u3, u_s) annotation (Line(points={{-62,-58},{-90,-58},{-90,0},{-120, - 0}}, color={0,0,127})); - connect(trigger, swi1.u2) annotation (Line(points={{-80,-120},{-80,-50},{-62,-50}}, + connect(swi1.u3, u_s) annotation (Line(points={{-62,-68},{-90,-68},{-90,0},{ + -120,0}}, + color={0,0,127})); + connect(trigger, swi1.u2) annotation (Line(points={{-80,-120},{-80,-60},{-62, + -60}}, + color={255,0,255})); + connect(u_m, swi1.u1) annotation (Line(points={{0,-120},{0,-90},{-70,-90},{ + -70,-52},{-62,-52}}, + color={0,0,127})); + connect(swi1.y, conErr.u1) annotation (Line(points={{-38,-60},{-20,-60},{-20, + 16},{38,16}}, color={0,0,127})); + connect(conErr.u2, u_s) annotation (Line(points={{38,4},{-42,4},{-42,0},{ + -120,0}}, + color={0,0,127})); + connect(sub1.y, hys.u) annotation (Line(points={{22,-70},{30,-70},{30,-50},{ + 38,-50}}, + color={0,0,127})); + connect(sub.y, hys.u) annotation (Line(points={{22,-40},{30,-40},{30,-50},{38, + -50}}, color={0,0,127})); + connect(u_s, sub.u1) annotation (Line(points={{-120,0},{-90,0},{-90,-34},{-2, + -34}}, + color={0,0,127})); + connect(u_s, sub1.u2) annotation (Line(points={{-120,0},{-90,0},{-90,-76},{-2, + -76}}, color={0,0,127})); + connect(swi1.y, sub.u2) annotation (Line(points={{-38,-60},{-20,-60},{-20,-46}, + {-2,-46}}, color={0,0,127})); + connect(swi1.y, sub1.u1) annotation (Line(points={{-38,-60},{-20,-60},{-20, + -64},{-2,-64}}, + color={0,0,127})); + connect(hys.y, swi.u2) annotation (Line(points={{62,-50},{80,-50},{80,30},{50, + 30},{50,50},{58,50}}, color={255,0,255})); + connect(gre.y, assMes.u) + annotation (Line(points={{22,80},{38,80}}, color={255,0,255})); + connect(lowVal.y, gai.u) annotation (Line(points={{-58,30},{-50,30},{-50,50},{ + -42,50}}, color={0,0,127})); + connect(gai.y, gre.u2) annotation (Line(points={{-18,50},{-10,50},{-10,72},{-2, + 72}}, color={0,0,127})); + connect(higVal.y, gre.u1) + annotation (Line(points={{-58,80},{-2,80}}, color={0,0,127})); + connect(hys.y, yOn) annotation (Line(points={{62,-50},{80,-50},{80,-60},{120, + -60}}, color={255,0,255})); - connect(u_m, swi1.u1) annotation (Line(points={{0,-120},{0,-80},{-70,-80},{-70, - -42},{-62,-42}}, color={0,0,127})); - connect(swi1.y, conErr.u1) annotation (Line(points={{-38,-50},{-20,-50},{-20, - -4},{-70,-4},{-70,26},{-62,26}}, color={0,0,127})); - connect(conErr.u2, u_s) annotation (Line(points={{-62,14},{-90,14},{-90,0},{-120, - 0}}, color={0,0,127})); - connect(greSetMea.reference, u_s) annotation (Line(points={{-2,6},{-40,6},{-40, - 0},{-120,0}}, color={0,0,127})); - connect(swi1.y, greSetMea.u) annotation (Line(points={{-38,-50},{-20,-50},{-20, - -6},{-2,-6}}, color={0,0,127})); - connect(greMeaSet.reference, swi1.y) annotation (Line(points={{-2,-24},{-16,-24}, - {-16,-50},{-38,-50}}, color={0,0,127})); - connect(greMeaSet.u, u_s) annotation (Line(points={{-2,-36},{-40,-36},{-40,0}, - {-120,0}}, color={0,0,127})); - connect(greMeaSet.y, swi.u2) annotation (Line(points={{22,-30},{32,-30},{32,0}, - {58,0}}, color={255,0,255})); - connect(greMeaSet.y, yOn) annotation (Line(points={{22,-30},{52,-30},{52,-60}, - {120,-60}}, color={255,0,255})); - connect(greSetMea.y, yOn) annotation (Line(points={{22,0},{52,0},{52,-60},{120, - -60}}, color={255,0,255})); annotation (defaultComponentName = "relCon", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( @@ -136,8 +164,8 @@ equation fillPattern=FillPattern.Solid, fillColor={175,175,175}, textString="Relay"), - Line(points={{-70,24},{-34,24},{-34,58},{38,58},{38,24},{66,24}}, color= - {28,108,200})}), Diagram( + Line(points={{-70,24},{-34,24},{-34,58},{38,58},{38,24},{66,24}}, color + ={28,108,200})}), Diagram( coordinateSystem(preserveAspectRatio=false)), Documentation(info="

                                        @@ -192,8 +220,6 @@ Department of Automatic Control, Lund Institute of Technology, Lund University.< December 1, 2023, by Sen Huang:
                                        Add a parameter reverseActing

                                      • -
                                      -
                                      • June 1, 2022, by Sen Huang:
                                        First implementation
                                        From faa2108d4e91d5deb26dd86a1ba67030cf308483 Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Thu, 14 Dec 2023 16:13:35 -0800 Subject: [PATCH 141/214] corrected package order [ci skip] --- Buildings/Fluid/HeatExchangers/Examples/package.order | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Buildings/Fluid/HeatExchangers/Examples/package.order b/Buildings/Fluid/HeatExchangers/Examples/package.order index 0555f4a8258..064e542d431 100644 --- a/Buildings/Fluid/HeatExchangers/Examples/package.order +++ b/Buildings/Fluid/HeatExchangers/Examples/package.order @@ -11,8 +11,8 @@ WaterCooler_T WaterHeater_T WaterHeater_u WetCoilCounterFlowMassFlow -WetCoilCounterFlowPControlAutoTuning WetCoilCounterFlowPControl +WetCoilCounterFlowPControlAutoTuning WetCoilDiscretizedMassFlow WetCoilDiscretizedPControl WetCoilEffectivenessNTUMassFlow From 598133577f55d30e5904dc130b368e53167915bb Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Thu, 14 Dec 2023 21:57:01 -0500 Subject: [PATCH 142/214] fix the model doc --- .../PIDWithAutotuning/Relay/Controller.mo | 36 ++++++++++--------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo index b5ae105e3f5..342225573d8 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo @@ -49,7 +49,7 @@ protected final k=-yLow) "Lower value for the output" annotation (Placement(transformation(extent={{-80,20},{-60,40}}))); - Buildings.Controls.OBC.CDL.Reals.Subtract conErr +Buildings.Controls.OBC.CDL.Reals.Subtract conErr "Control error (set point - measurement)" annotation (Placement(transformation(extent={{40,0},{60,20}}))); Buildings.Controls.OBC.CDL.Reals.Switch swi1 @@ -57,16 +57,16 @@ protected annotation (Placement(transformation(extent={{-10,-10},{10,10}}, origin={-50,-60}))); Buildings.Controls.OBC.CDL.Reals.Subtract sub - if reverseActing "Inputs difference" + if reverseActing "Inputs difference for reverse acting" annotation (Placement(transformation(extent={{0,-50},{20,-30}}))); Buildings.Controls.OBC.CDL.Reals.Hysteresis hys( - final uLow=-deaBa, - final uHigh=deaBa, + final uLow=-deaBan, + final uHigh=deaBan, final pre_y_start=true) "Check if the measured value is larger than the reference, by default the relay control is on" annotation (Placement(transformation(extent={{40,-60},{60,-40}}))); Buildings.Controls.OBC.CDL.Reals.Subtract sub1 - if not reverseActing "Inputs difference" + if not reverseActing "Inputs difference for direct acting" annotation (Placement(transformation(extent={{0,-80},{20,-60}}))); Buildings.Controls.OBC.CDL.Reals.Greater gre "Check if the higher value is greater than the lower value" @@ -86,9 +86,9 @@ equation annotation (Line(points={{-58,80},{-20,80},{-20,58},{58,58}},color={0,0,127})); connect(lowVal.y, swi.u3) annotation (Line(points={{-58,30},{-20,30},{-20,42}, {58,42}}, - color={0,0,127})); +color={0,0,127})); connect(conErr.y, yErr) annotation (Line(points={{62,10},{120,10}}, - color={0,0,127})); + color={0,0,127})); connect(swi1.u3, u_s) annotation (Line(points={{-62,-68},{-90,-68},{-90,0},{ -120,0}}, color={0,0,127})); @@ -98,7 +98,7 @@ equation connect(u_m, swi1.u1) annotation (Line(points={{0,-120},{0,-90},{-70,-90},{ -70,-52},{-62,-52}}, color={0,0,127})); - connect(swi1.y, conErr.u1) annotation (Line(points={{-38,-60},{-20,-60},{-20, + connect(swi1.y, conErr.u1) annotation (Line(points={{-38,-60},{-20,-60},{-20, 16},{38,16}}, color={0,0,127})); connect(conErr.u2, u_s) annotation (Line(points={{38,4},{-42,4},{-42,0},{ -120,0}}, @@ -131,7 +131,7 @@ equation connect(hys.y, yOn) annotation (Line(points={{62,-50},{80,-50},{80,-60},{120, -60}}, color={255,0,255})); - annotation (defaultComponentName = "relCon", + annotation (defaultComponentName = "relCon", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-100,-100},{100,100}}, @@ -164,21 +164,25 @@ equation fillPattern=FillPattern.Solid, fillColor={175,175,175}, textString="Relay"), - Line(points={{-70,24},{-34,24},{-34,58},{38,58},{38,24},{66,24}}, color - ={28,108,200})}), Diagram( + Line(points={{-70,24},{-34,24},{-34,58},{38,58},{38,24},{66,24}}, color= + {28,108,200})}), Diagram( coordinateSystem(preserveAspectRatio=false)), Documentation(info="

                                        This block generates a real control output y, a -boolean relay switch output yOn, and the control error +boolean relay switch output yOn, a input difference +yDif, and the control error yErr. They are calculated as below:

                                        • +yErr = u_s - u_m, +
                                        • +
                                        • if the parameter reverseActing = false
                                          • -yErr = u_m - u_s, +yDif = - yErr,
                                        • @@ -186,16 +190,16 @@ if the parameter reverseActing = false else
                                          • -yErr = u_s - u_m , +yDif = yErr,
                                        • -if yErr < -deaBan and trigger is true, +if yDif < -deaBan and trigger is true, then y = yHig, yOn = true,
                                        • -else if yErr > deaBan and trigger is true, +else if yDif > deaBan and trigger is true, then y = -yLow, yOn = false,
                                        • From 7d11d8472fe69ce72ef4b7a3f9f5d93103180048 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Fri, 15 Dec 2023 08:45:58 -0500 Subject: [PATCH 143/214] minor format fix --- .../PIDWithAutotuning/Relay/Controller.mo | 28 +++++++------------ 1 file changed, 10 insertions(+), 18 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo index 342225573d8..0f72647011d 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo @@ -49,7 +49,7 @@ protected final k=-yLow) "Lower value for the output" annotation (Placement(transformation(extent={{-80,20},{-60,40}}))); -Buildings.Controls.OBC.CDL.Reals.Subtract conErr + Buildings.Controls.OBC.CDL.Reals.Subtract conErr "Control error (set point - measurement)" annotation (Placement(transformation(extent={{40,0},{60,20}}))); Buildings.Controls.OBC.CDL.Reals.Switch swi1 @@ -85,39 +85,31 @@ equation connect(higVal.y, swi.u1) annotation (Line(points={{-58,80},{-20,80},{-20,58},{58,58}},color={0,0,127})); connect(lowVal.y, swi.u3) annotation (Line(points={{-58,30},{-20,30},{-20,42}, - {58,42}}, -color={0,0,127})); + {58,42}},color={0,0,127})); connect(conErr.y, yErr) annotation (Line(points={{62,10},{120,10}}, color={0,0,127})); connect(swi1.u3, u_s) annotation (Line(points={{-62,-68},{-90,-68},{-90,0},{ - -120,0}}, - color={0,0,127})); + -120,0}},color={0,0,127})); connect(trigger, swi1.u2) annotation (Line(points={{-80,-120},{-80,-60},{-62, - -60}}, - color={255,0,255})); + -60}},color={255,0,255})); connect(u_m, swi1.u1) annotation (Line(points={{0,-120},{0,-90},{-70,-90},{ - -70,-52},{-62,-52}}, - color={0,0,127})); + -70,-52},{-62,-52}},color={0,0,127})); connect(swi1.y, conErr.u1) annotation (Line(points={{-38,-60},{-20,-60},{-20, 16},{38,16}}, color={0,0,127})); - connect(conErr.u2, u_s) annotation (Line(points={{38,4},{-42,4},{-42,0},{ - -120,0}}, - color={0,0,127})); + connect(conErr.u2, u_s) annotation (Line(points={{38,4},{-42,4},{-42,0},{ + -120,0}},color={0,0,127})); connect(sub1.y, hys.u) annotation (Line(points={{22,-70},{30,-70},{30,-50},{ - 38,-50}}, - color={0,0,127})); + 38,-50}},color={0,0,127})); connect(sub.y, hys.u) annotation (Line(points={{22,-40},{30,-40},{30,-50},{38, -50}}, color={0,0,127})); connect(u_s, sub.u1) annotation (Line(points={{-120,0},{-90,0},{-90,-34},{-2, - -34}}, - color={0,0,127})); + -34}},color={0,0,127})); connect(u_s, sub1.u2) annotation (Line(points={{-120,0},{-90,0},{-90,-76},{-2, -76}}, color={0,0,127})); connect(swi1.y, sub.u2) annotation (Line(points={{-38,-60},{-20,-60},{-20,-46}, {-2,-46}}, color={0,0,127})); connect(swi1.y, sub1.u1) annotation (Line(points={{-38,-60},{-20,-60},{-20, - -64},{-2,-64}}, - color={0,0,127})); + -64},{-2,-64}},color={0,0,127})); connect(hys.y, swi.u2) annotation (Line(points={{62,-50},{80,-50},{80,30},{50, 30},{50,50},{58,50}}, color={255,0,255})); connect(gre.y, assMes.u) From 7ecfcfbc837740a9515da193b2387b61e6da86ca Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Fri, 15 Dec 2023 09:16:33 -0500 Subject: [PATCH 144/214] model doc fix --- .../Utilities/PIDWithAutotuning/Relay/Controller.mo | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo index 0f72647011d..7a7e9525dcb 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo @@ -50,7 +50,7 @@ protected "Lower value for the output" annotation (Placement(transformation(extent={{-80,20},{-60,40}}))); Buildings.Controls.OBC.CDL.Reals.Subtract conErr - "Control error (set point - measurement)" + "Control error (measurement - set point)" annotation (Placement(transformation(extent={{40,0},{60,20}}))); Buildings.Controls.OBC.CDL.Reals.Switch swi1 "Switch between a higher value and a lower value" @@ -162,16 +162,16 @@ equation Documentation(info="

                                          This block generates a real control output y, a -boolean relay switch output yOn, a input difference -yDif, and the control error +boolean relay switch output yOn, an input difference +yDif, and a control error yErr. They are calculated as below:

                                          • -yErr = u_s - u_m, +yErr = u_m - u_s,
                                          • -if the parameter reverseActing = false +if the parameter reverseActing = true
                                            • yDif = - yErr, From bf463d90a6e65e4d04b138b86a04b0a2efd48b2c Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Fri, 15 Dec 2023 09:19:20 -0500 Subject: [PATCH 145/214] remove extra space --- .../OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo index 7a7e9525dcb..619d2071d18 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo @@ -121,8 +121,7 @@ equation connect(higVal.y, gre.u1) annotation (Line(points={{-58,80},{-2,80}}, color={0,0,127})); connect(hys.y, yOn) annotation (Line(points={{62,-50},{80,-50},{80,-60},{120, - -60}}, - color={255,0,255})); + -60}},color={255,0,255})); annotation (defaultComponentName = "relCon", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( From e9cab007d0ddbd2c9a82af2e11de313cecdee954 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Fri, 15 Dec 2023 15:57:50 -0500 Subject: [PATCH 146/214] correct the definition of control error --- .../PIDWithAutotuning/FirstOrderAMIGO.mo | 7 ++-- .../PIDWithAutotuning/Relay/Controller.mo | 37 +++++++------------ .../FirstOrderTimedelayed/BaseClasses/Gain.mo | 33 +++++++++++++---- .../BaseClasses/Validation/Gain.mo | 2 +- .../ControlProcessModel.mo | 5 ++- .../Validation/ControlProcessModel.mo | 3 +- 6 files changed, 50 insertions(+), 37 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index 1345d4bbc09..9cf8136dc42 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -116,7 +116,8 @@ block FirstOrderAMIGO conProMod( final yHig=yHig - yRef, final yLow=yRef + yLow, - final deaBan=deaBan) + final deaBan=deaBan, + final reverseActing=reverseActing) "Calculates the parameters of a first-order time delayed model" annotation (Placement(transformation(extent={{40,30},{60,50}}))); Buildings.Controls.OBC.CDL.Logical.Latch inTunPro @@ -179,8 +180,8 @@ equation {30,44},{22,44}},color={0,0,127})); connect(resPro.tOn, conProMod.tOn) annotation (Line(points={{22,48},{32,48},{32, 44},{38,44}},color={0,0,127})); - connect(rel.yErr, conProMod.u) annotation (Line(points={{-18,40},{-12,40},{-12, - 60},{34,60},{34,48},{38,48}},color={0,0,127})); + connect(rel.yDiff, conProMod.u) annotation (Line(points={{-18,40},{-12,40},{-12, + 60},{34,60},{34,48},{38,48}}, color={0,0,127})); connect(PIDPar.kp, conProMod.k) annotation (Line(points={{78,46},{62,46}}, color={0,0,127})); connect(PIDPar.T, conProMod.T) annotation (Line(points={{78,40},{62,40}}, color={0,0,127})); connect(PIDPar.L, conProMod.L) annotation (Line(points={{78,34},{62,34}}, color={0,0,127})); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo index 619d2071d18..20946ace0d4 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo @@ -32,10 +32,9 @@ block Controller Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput yOn "Relay switch output, true when control output switches to the higher value" annotation (Placement(transformation(extent={{100,-80},{140,-40}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealOutput yErr - "Control error" + Buildings.Controls.OBC.CDL.Interfaces.RealOutput yDiff "Input difference" annotation (Placement(transformation(extent={{100,-10},{140,30}}), - iconTransformation(extent={{100,-20},{140,20}}))); + iconTransformation(extent={{100,-20},{140,20}}))); protected Buildings.Controls.OBC.CDL.Reals.Switch swi @@ -49,9 +48,6 @@ protected final k=-yLow) "Lower value for the output" annotation (Placement(transformation(extent={{-80,20},{-60,40}}))); - Buildings.Controls.OBC.CDL.Reals.Subtract conErr - "Control error (measurement - set point)" - annotation (Placement(transformation(extent={{40,0},{60,20}}))); Buildings.Controls.OBC.CDL.Reals.Switch swi1 "Switch between a higher value and a lower value" annotation (Placement(transformation(extent={{-10,-10},{10,10}}, @@ -63,7 +59,7 @@ protected final uLow=-deaBan, final uHigh=deaBan, final pre_y_start=true) - "Check if the measured value is larger than the reference, by default the relay control is on" + "Check if the input difference exceeds the thresholds, by default the relay control is on" annotation (Placement(transformation(extent={{40,-60},{60,-40}}))); Buildings.Controls.OBC.CDL.Reals.Subtract sub1 if not reverseActing "Inputs difference for direct acting" @@ -86,18 +82,12 @@ equation annotation (Line(points={{-58,80},{-20,80},{-20,58},{58,58}},color={0,0,127})); connect(lowVal.y, swi.u3) annotation (Line(points={{-58,30},{-20,30},{-20,42}, {58,42}},color={0,0,127})); - connect(conErr.y, yErr) annotation (Line(points={{62,10},{120,10}}, - color={0,0,127})); connect(swi1.u3, u_s) annotation (Line(points={{-62,-68},{-90,-68},{-90,0},{ -120,0}},color={0,0,127})); connect(trigger, swi1.u2) annotation (Line(points={{-80,-120},{-80,-60},{-62, -60}},color={255,0,255})); connect(u_m, swi1.u1) annotation (Line(points={{0,-120},{0,-90},{-70,-90},{ -70,-52},{-62,-52}},color={0,0,127})); - connect(swi1.y, conErr.u1) annotation (Line(points={{-38,-60},{-20,-60},{-20, - 16},{38,16}}, color={0,0,127})); - connect(conErr.u2, u_s) annotation (Line(points={{38,4},{-42,4},{-42,0},{ - -120,0}},color={0,0,127})); connect(sub1.y, hys.u) annotation (Line(points={{22,-70},{30,-70},{30,-50},{ 38,-50}},color={0,0,127})); connect(sub.y, hys.u) annotation (Line(points={{22,-40},{30,-40},{30,-50},{38, @@ -122,6 +112,10 @@ equation annotation (Line(points={{-58,80},{-2,80}}, color={0,0,127})); connect(hys.y, yOn) annotation (Line(points={{62,-50},{80,-50},{80,-60},{120, -60}},color={255,0,255})); + connect(yDiff, sub.y) annotation (Line(points={{120,10},{36,10},{36,-40},{22, + -40}}, color={0,0,127})); + connect(sub1.y, yDiff) annotation (Line(points={{22,-70},{36,-70},{36,10},{ + 120,10}}, color={0,0,127})); annotation (defaultComponentName = "relCon", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( @@ -161,19 +155,16 @@ equation Documentation(info="

                                              This block generates a real control output y, a -boolean relay switch output yOn, an input difference -yDif, and a control error -yErr. They are calculated as below: +boolean relay switch output yOn, +and an input difference yDiff. +They are calculated as below:

                                              • -yErr = u_m - u_s, -
                                              • -
                                              • if the parameter reverseActing = true
                                                • -yDif = - yErr, +yDiff = u_s - u_m,
                                              • @@ -181,16 +172,16 @@ if the parameter reverseActing = true else
                                                • -yDif = yErr, +yDiff = u_m - u_s,
                                              • -if yDif < -deaBan and trigger is true, +if yDiff > deaBan and trigger is true, then y = yHig, yOn = true,
                                              • -else if yDif > deaBan and trigger is true, +else if yDiff < -deaBan and trigger is true, then y = -yLow, yOn = false,
                                              • diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Gain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Gain.mo index 909059a5713..26fe105beba 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Gain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Gain.mo @@ -4,6 +4,8 @@ block Gain "Identify the gain of a first order time delayed model" "Higher value for the output (assuming the reference output is 0)"; parameter Real yLow(min=1E-6) = 0.5 "Lower value for the output (assuming the reference output is 0)"; + parameter Boolean reverseActing=true + "Set to true for reverse acting, or false for direct acting control action"; Buildings.Controls.OBC.CDL.Interfaces.RealInput u "Relay controller output" annotation (Placement(transformation(extent={{-140,20},{-100,60}}), @@ -39,7 +41,7 @@ protected annotation (Placement(transformation(extent={{-10,30},{10,50}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant refRelOut( final k=0) "Reference value of the relay control output" - annotation (Placement(transformation(extent={{-60,10},{-40,30}}))); + annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); Buildings.Controls.OBC.CDL.Reals.Divide divIyIu "Calculate the gain" annotation (Placement(transformation(extent={{40,-10},{60,10}}))); Buildings.Controls.OBC.CDL.Reals.AddParameter addPar(final p=1E-3) @@ -53,12 +55,17 @@ protected final k=-yLow) "Product of tOff and yLow" annotation (Placement(transformation(extent={{-80,-90},{-60,-70}}))); - + Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter gai1(final k=-1) + if reverseActing + "Negative sign for reverse acting" + annotation (Placement(transformation(extent={{-60,70},{-40,90}}))); + Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter gai2(final k=1) + if not reverseActing + "Positive sign for direct acting" + annotation (Placement(transformation(extent={{-60,30},{-40,50}}))); equation - connect(Iy.u, u) annotation (Line(points={{-12,40},{-120,40}}, - color={0,0,127})); - connect(refRelOut.y, Iy.y_reset_in) annotation (Line(points={{-38,20},{-20,20}, - {-20,32},{-12,32}}, color={0,0,127})); + connect(refRelOut.y, Iy.y_reset_in) annotation (Line(points={{-38,0},{-20,0},{ + -20,32},{-12,32}}, color={0,0,127})); connect(Iy.trigger, triSta) annotation (Line(points={{0,28},{0,-120}}, color={255,0,255})); connect(divIyIu.u1, Iy.y) annotation (Line(points={{38,6},{18,6},{18,40},{12, @@ -76,6 +83,14 @@ equation -46},{-42,-46}}, color={0,0,127})); connect(divIyIu.y, k) annotation (Line(points={{62,0},{120,0}}, color={0,0,127})); + connect(gai2.u, u) + annotation (Line(points={{-62,40},{-120,40}}, color={0,0,127})); + connect(gai2.y, Iy.u) + annotation (Line(points={{-38,40},{-12,40}}, color={0,0,127})); + connect(gai1.y, Iy.u) annotation (Line(points={{-38,80},{-20,80},{-20,40},{ + -12,40}}, color={0,0,127})); + connect(gai1.u, u) annotation (Line(points={{-62,80},{-80,80},{-80,40},{-120, + 40}}, color={0,0,127})); annotation ( defaultComponentName = "gai", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ @@ -106,8 +121,10 @@ where Iy and Iu are the integral of the proc output and the integral of the relay output, respectively.

                                                Iy is calculated by

                                                -

                                                Iy = ∫ u(t) dt;

                                                -

                                                where u is the process output.

                                                +

                                                Iy = ∫ -u(t) dt;

                                                +

                                                where u is the input difference of a relay controller, see details in +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Controller +

                                                Iu is calculated by

                                                Iu = ton (yhig - yref)+ toff(-ylow - yref), diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/Gain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/Gain.mo index d4251ecb888..fff0e1f3aed 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/Gain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/Gain.mo @@ -1,7 +1,7 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.BaseClasses.Validation; model Gain "Test model for identifying the gain of the control process" Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.BaseClasses.Gain - gai + gai(reverseActing=false) "Block that calculates the gain of a first-order model" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Pulse u( diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo index b4c1497b8ae..89667f4c95a 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo @@ -7,6 +7,8 @@ block ControlProcessModel "Lower value for the output"; parameter Real deaBan(min=0) = 0.5 "Deadband for holding the output value"; + parameter Boolean reverseActing=true + "Set to true for reverse acting, or false for direct acting control action"; Buildings.Controls.OBC.CDL.Interfaces.RealInput tOn( final quantity="Time", final unit="s", @@ -74,7 +76,8 @@ protected annotation (Placement(transformation(extent={{12,-30},{32,-10}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.BaseClasses.Gain gain( final yHig=yHig, - final yLow=yLow) + final yLow=yLow, + final reverseActing = reverseActing) "Block that calculates the gain" annotation (Placement(transformation(extent={{-84,10},{-64,30}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.BaseClasses.TimeConstantDelay diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo index 08a1f4072b8..420c309fca4 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo @@ -2,7 +2,8 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.F model ControlProcessModel "Test model for identifying the reduced-order model of the control process" Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.ControlProcessModel - conProMod(yLow=0.1, deaBan=0.05) + conProMod(yLow=0.1, deaBan=0.05, + reverseActing=false) "Calculate the parameters of a first-order model" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Pulse u( From 8f68c8c0d2b216914515a315f2d8ef80e15f15d4 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Fri, 15 Dec 2023 15:58:41 -0500 Subject: [PATCH 147/214] plot script and ref data update --- .../Utilities/PIDWithAutotuning/Relay/Validation/Controller.mos | 2 +- ....Utilities.PIDWithAutotuning.Relay.Validation.Controller.mos | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Controller.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Controller.mos index ec5423133e8..b40e52e278a 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Controller.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Controller.mos @@ -4,4 +4,4 @@ plotExpression(apply(Controller[end].relCon.u_s-0.4), false, "controller[end].re plotExpression(apply(Controller[end].relCon.u_s+0.4), false, "controller[end].relCon.u_s+deaBan", 1); createPlot(id=1, position={15, 15, 1148, 620}, y={"enaSig.y"}, range={0.0, 1.0, -1.0, 2.0}, grid=true, subPlot=102, colors={{28,108,200}}); createPlot(id=1, position={15, 15, 1148, 620}, y={"relCon.y"}, range={0.0, 1.0, -2.0, 2.0}, grid=true, subPlot=103, colors={{28,108,200}}); -createPlot(id=1, position={15, 15, 1148, 620}, y={"relCon.yErr", "relCon.yOn"}, range={0.0, 1.0, -2.0, 2.0}, grid=true, subPlot=104, colors={{28,108,200}, {238,46,47}}); \ No newline at end of file +createPlot(id=1, position={15, 15, 1148, 620}, y={"relCon.yDiff", "relCon.yOn"}, range={0.0, 1.0, -2.0, 2.0}, grid=true, subPlot=104, colors={{28,108,200}, {238,46,47}}); \ No newline at end of file diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.Controller.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.Controller.mos index 39f12c5b1e3..bf63a686995 100644 --- a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.Controller.mos +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.Controller.mos @@ -3,6 +3,6 @@ compareVars := "relCon.u_m", "enaSig.y", "relCon.y", - "relCon.yErr", + "relCon.yDiff", "relCon.yOn" }; From 2560b3731f9415ac15e9cce0ffd7c8d10b0ded7d Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Fri, 15 Dec 2023 15:47:32 -0800 Subject: [PATCH 148/214] improved documentation and the implementation --- .../PIDWithAutotuning/FirstOrderAMIGO.mo | 2 +- .../PIDWithAutotuning/Relay/Controller.mo | 144 +++++++++--------- .../FirstOrderTimedelayed/BaseClasses/Gain.mo | 56 +++---- ...Autotuning_Relay_Validation_Controller.txt | 6 +- .../Relay/Validation/Controller.mos | 2 +- ...Autotuning.Relay.Validation.Controller.mos | 2 +- 6 files changed, 100 insertions(+), 112 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index 9cf8136dc42..7bd4d5d263c 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -180,7 +180,7 @@ equation {30,44},{22,44}},color={0,0,127})); connect(resPro.tOn, conProMod.tOn) annotation (Line(points={{22,48},{32,48},{32, 44},{38,44}},color={0,0,127})); - connect(rel.yDiff, conProMod.u) annotation (Line(points={{-18,40},{-12,40},{-12, + connect(rel.yDif, conProMod.u) annotation (Line(points={{-18,40},{-12,40},{-12, 60},{34,60},{34,48},{38,48}}, color={0,0,127})); connect(PIDPar.kp, conProMod.k) annotation (Line(points={{78,46},{62,46}}, color={0,0,127})); connect(PIDPar.T, conProMod.T) annotation (Line(points={{78,40},{62,40}}, color={0,0,127})); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo index 20946ace0d4..3827565415b 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo @@ -7,7 +7,7 @@ block Controller parameter Real yLow( final min=1E-6, final max=yHig) = 0.5 - "Lower value for the output"; + "Lower value for the relay output"; parameter Real deaBan(min=1E-6) = 0.5 "Deadband for holding the output value"; parameter Boolean reverseActing=true @@ -31,9 +31,10 @@ block Controller iconTransformation(extent={{100,40},{140,80}}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput yOn "Relay switch output, true when control output switches to the higher value" - annotation (Placement(transformation(extent={{100,-80},{140,-40}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealOutput yDiff "Input difference" - annotation (Placement(transformation(extent={{100,-10},{140,30}}), + annotation (Placement(transformation(extent={{100,-80},{140,-40}}), + iconTransformation(extent={{100,-80},{140,-40}}))); + Buildings.Controls.OBC.CDL.Interfaces.RealOutput yDif "Input difference" + annotation (Placement(transformation(extent={{100,-20},{140,20}}), iconTransformation(extent={{100,-20},{140,20}}))); protected @@ -47,76 +48,79 @@ protected Buildings.Controls.OBC.CDL.Reals.Sources.Constant lowVal( final k=-yLow) "Lower value for the output" - annotation (Placement(transformation(extent={{-80,20},{-60,40}}))); + annotation (Placement(transformation(extent={{-80,10},{-60,30}}))); Buildings.Controls.OBC.CDL.Reals.Switch swi1 "Switch between a higher value and a lower value" annotation (Placement(transformation(extent={{-10,-10},{10,10}}, - origin={-50,-60}))); - Buildings.Controls.OBC.CDL.Reals.Subtract sub - if reverseActing "Inputs difference for reverse acting" - annotation (Placement(transformation(extent={{0,-50},{20,-30}}))); + origin={-50,-40}))); + Buildings.Controls.OBC.CDL.Reals.Subtract revActErr if reverseActing + "Control error when reverse acting, setpoint - measurement" + annotation (Placement(transformation(extent={{-20,-30},{0,-10}}))); Buildings.Controls.OBC.CDL.Reals.Hysteresis hys( final uLow=-deaBan, final uHigh=deaBan, final pre_y_start=true) "Check if the input difference exceeds the thresholds, by default the relay control is on" - annotation (Placement(transformation(extent={{40,-60},{60,-40}}))); - Buildings.Controls.OBC.CDL.Reals.Subtract sub1 - if not reverseActing "Inputs difference for direct acting" - annotation (Placement(transformation(extent={{0,-80},{20,-60}}))); + annotation (Placement(transformation(extent={{20,-70},{40,-50}}))); + Buildings.Controls.OBC.CDL.Reals.Subtract dirActErr if not reverseActing + "Control error when direct acting, measurement - setpoint" + annotation (Placement(transformation(extent={{-20,-80},{0,-60}}))); Buildings.Controls.OBC.CDL.Reals.Greater gre "Check if the higher value is greater than the lower value" annotation (Placement(transformation(extent={{0,70},{20,90}}))); Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter gai( final k=-1) "Gain" - annotation (Placement(transformation(extent={{-40,40},{-20,60}}))); + annotation (Placement(transformation(extent={{-40,30},{-20,50}}))); Buildings.Controls.OBC.CDL.Utilities.Assert assMes( final message="Warning: The higher value for the relay output should be greater than that of the lower value.") "Warning when the higher value is set to be less than the lower value" annotation (Placement(transformation(extent={{40,70},{60,90}}))); - + Buildings.Controls.OBC.CDL.Reals.Subtract meaSetDif + "Inputs difference, (measurement - setpoint)" + annotation (Placement(transformation(extent={{60,-10},{80,10}}))); equation connect(swi.y, y) annotation (Line(points={{82,50},{120,50}}, color={0,0,127})); connect(higVal.y, swi.u1) annotation (Line(points={{-58,80},{-20,80},{-20,58},{58,58}},color={0,0,127})); - connect(lowVal.y, swi.u3) annotation (Line(points={{-58,30},{-20,30},{-20,42}, - {58,42}},color={0,0,127})); - connect(swi1.u3, u_s) annotation (Line(points={{-62,-68},{-90,-68},{-90,0},{ - -120,0}},color={0,0,127})); - connect(trigger, swi1.u2) annotation (Line(points={{-80,-120},{-80,-60},{-62, - -60}},color={255,0,255})); - connect(u_m, swi1.u1) annotation (Line(points={{0,-120},{0,-90},{-70,-90},{ - -70,-52},{-62,-52}},color={0,0,127})); - connect(sub1.y, hys.u) annotation (Line(points={{22,-70},{30,-70},{30,-50},{ - 38,-50}},color={0,0,127})); - connect(sub.y, hys.u) annotation (Line(points={{22,-40},{30,-40},{30,-50},{38, - -50}}, color={0,0,127})); - connect(u_s, sub.u1) annotation (Line(points={{-120,0},{-90,0},{-90,-34},{-2, - -34}},color={0,0,127})); - connect(u_s, sub1.u2) annotation (Line(points={{-120,0},{-90,0},{-90,-76},{-2, - -76}}, color={0,0,127})); - connect(swi1.y, sub.u2) annotation (Line(points={{-38,-60},{-20,-60},{-20,-46}, - {-2,-46}}, color={0,0,127})); - connect(swi1.y, sub1.u1) annotation (Line(points={{-38,-60},{-20,-60},{-20, - -64},{-2,-64}},color={0,0,127})); - connect(hys.y, swi.u2) annotation (Line(points={{62,-50},{80,-50},{80,30},{50, - 30},{50,50},{58,50}}, color={255,0,255})); + connect(lowVal.y, swi.u3) annotation (Line(points={{-58,20},{0,20},{0,42},{58, + 42}}, color={0,0,127})); + connect(swi1.u3, u_s) annotation (Line(points={{-62,-48},{-90,-48},{-90,0},{-120, + 0}}, color={0,0,127})); + connect(trigger, swi1.u2) annotation (Line(points={{-80,-120},{-80,-40},{-62,-40}}, + color={255,0,255})); + connect(u_m, swi1.u1) annotation (Line(points={{0,-120},{0,-90},{-70,-90},{-70, + -32},{-62,-32}}, color={0,0,127})); + connect(dirActErr.y, hys.u) annotation (Line(points={{2,-70},{10,-70},{10,-60}, + {18,-60}}, color={0,0,127})); + connect(revActErr.y, hys.u) annotation (Line(points={{2,-20},{10,-20},{10,-60}, + {18,-60}}, color={0,0,127})); + connect(u_s, revActErr.u1) annotation (Line(points={{-120,0},{-90,0},{-90,-14}, + {-22,-14}}, color={0,0,127})); + connect(u_s, dirActErr.u2) annotation (Line(points={{-120,0},{-90,0},{-90,-76}, + {-22,-76}}, color={0,0,127})); + connect(swi1.y, revActErr.u2) annotation (Line(points={{-38,-40},{-30,-40},{-30, + -26},{-22,-26}}, color={0,0,127})); + connect(swi1.y, dirActErr.u1) annotation (Line(points={{-38,-40},{-30,-40},{-30, + -64},{-22,-64}}, color={0,0,127})); + connect(hys.y, swi.u2) annotation (Line(points={{42,-60},{50,-60},{50,50},{58, + 50}}, color={255,0,255})); connect(gre.y, assMes.u) annotation (Line(points={{22,80},{38,80}}, color={255,0,255})); - connect(lowVal.y, gai.u) annotation (Line(points={{-58,30},{-50,30},{-50,50},{ - -42,50}}, color={0,0,127})); - connect(gai.y, gre.u2) annotation (Line(points={{-18,50},{-10,50},{-10,72},{-2, + connect(lowVal.y, gai.u) annotation (Line(points={{-58,20},{-50,20},{-50,40},{ + -42,40}}, color={0,0,127})); + connect(gai.y, gre.u2) annotation (Line(points={{-18,40},{-10,40},{-10,72},{-2, 72}}, color={0,0,127})); connect(higVal.y, gre.u1) annotation (Line(points={{-58,80},{-2,80}}, color={0,0,127})); - connect(hys.y, yOn) annotation (Line(points={{62,-50},{80,-50},{80,-60},{120, - -60}},color={255,0,255})); - connect(yDiff, sub.y) annotation (Line(points={{120,10},{36,10},{36,-40},{22, - -40}}, color={0,0,127})); - connect(sub1.y, yDiff) annotation (Line(points={{22,-70},{36,-70},{36,10},{ - 120,10}}, color={0,0,127})); - annotation (defaultComponentName = "relCon", + connect(hys.y, yOn) annotation (Line(points={{42,-60},{120,-60}}, color={255,0,255})); + connect(swi1.y, meaSetDif.u1) annotation (Line(points={{-38,-40},{20,-40},{20, + 6},{58,6}}, color={0,0,127})); + connect(u_s, meaSetDif.u2) annotation (Line(points={{-120,0},{40,0},{40,-6},{58, + -6}}, color={0,0,127})); + connect(meaSetDif.y, yDif) + annotation (Line(points={{82,0},{120,0}}, color={0,0,127})); +annotation (defaultComponentName = "relCon", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( extent={{-100,-100},{100,100}}, @@ -149,47 +153,45 @@ equation fillPattern=FillPattern.Solid, fillColor={175,175,175}, textString="Relay"), - Line(points={{-70,24},{-34,24},{-34,58},{38,58},{38,24},{66,24}}, color= - {28,108,200})}), Diagram( + Line(points={{-70,24},{-34,24},{-34,58},{38,58},{38,24},{66,24}}, color + ={28,108,200})}), Diagram( coordinateSystem(preserveAspectRatio=false)), Documentation(info="

                                                -This block generates a real control output y, a -boolean relay switch output yOn, -and an input difference yDiff. -They are calculated as below: +This block generates a relay output yDif which equals to +u_m - u_s. It also generates the control output y, +and a boolean relay switch output yOn, +which are calculated as below. +

                                                +

                                                +Step 1: calculate control error,

                                                • -if the parameter reverseActing = true -
                                                    -
                                                  • -yDiff = u_s - u_m, +If the parameter reverseActing = true, then the control error +(err = u_s - u_m), +else the contorl error (err = u_m - u_s).
                                                  -
                                                • -
                                                • -else +

                                                  +Step 2: calculate y and yOn, +

                                                  • -yDiff = u_m - u_s, -
                                                  • -
                                                  +If err > deaBan and trigger is true, +then y = yHig and yOn = true,
                                                • -if yDiff > deaBan and trigger is true, -then y = yHig, yOn = true, -
                                                • -
                                                • -else if yDiff < -deaBan and trigger is true, -then y = -yLow, +else if err < -deaBan and trigger is true, +then y = -yLow and yOn = false,
                                                • -else, y and yOn are kept as the initial values, +else, y and yOn are kept as the initial values.
                                                -

                                                where deaBan is a dead band, yHig +

                                                +where deaBan is a dead band, yHig and yLow are the higher value and the lower value of the output y, respectively.

                                                diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Gain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Gain.mo index 26fe105beba..79b93c7189e 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Gain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Gain.mo @@ -7,15 +7,15 @@ block Gain "Identify the gain of a first order time delayed model" parameter Boolean reverseActing=true "Set to true for reverse acting, or false for direct acting control action"; Buildings.Controls.OBC.CDL.Interfaces.RealInput u - "Relay controller output" - annotation (Placement(transformation(extent={{-140,20},{-100,60}}), + "Relay controller output, (measurement - setpoint)" + annotation (Placement(transformation(extent={{-140,50},{-100,90}}), iconTransformation(extent={{-140,60},{-100,100}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput tOn( final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Length for the on period" - annotation (Placement(transformation(extent={{-140,-40},{-100,0}}), + annotation (Placement(transformation(extent={{-140,-30},{-100,10}}), iconTransformation(extent={{-140,-20},{-100,20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput tOff( final quantity="Time", @@ -38,59 +38,45 @@ protected Buildings.Controls.OBC.CDL.Reals.IntegratorWithReset Iy( final k=1, final y_start=1E-3) "Integral of the process output" - annotation (Placement(transformation(extent={{-10,30},{10,50}}))); + annotation (Placement(transformation(extent={{-10,60},{10,80}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant refRelOut( final k=0) "Reference value of the relay control output" - annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); + annotation (Placement(transformation(extent={{-60,30},{-40,50}}))); Buildings.Controls.OBC.CDL.Reals.Divide divIyIu "Calculate the gain" - annotation (Placement(transformation(extent={{40,-10},{60,10}}))); + annotation (Placement(transformation(extent={{60,-10},{80,10}}))); Buildings.Controls.OBC.CDL.Reals.AddParameter addPar(final p=1E-3) "Block that avoids a divide-by-zero error" - annotation (Placement(transformation(extent={{8,-50},{28,-30}}))); + annotation (Placement(transformation(extent={{20,-50},{40,-30}}))); Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter gaiOnyHig( final k=yHig) "Product of tOn and yHig" - annotation (Placement(transformation(extent={{-80,-30},{-60,-10}}))); + annotation (Placement(transformation(extent={{-80,-20},{-60,0}}))); Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter gaiOffyLow( final k=-yLow) "Product of tOff and yLow" annotation (Placement(transformation(extent={{-80,-90},{-60,-70}}))); - Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter gai1(final k=-1) - if reverseActing - "Negative sign for reverse acting" - annotation (Placement(transformation(extent={{-60,70},{-40,90}}))); - Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter gai2(final k=1) - if not reverseActing - "Positive sign for direct acting" - annotation (Placement(transformation(extent={{-60,30},{-40,50}}))); equation - connect(refRelOut.y, Iy.y_reset_in) annotation (Line(points={{-38,0},{-20,0},{ - -20,32},{-12,32}}, color={0,0,127})); - connect(Iy.trigger, triSta) annotation (Line(points={{0,28},{0,-120}}, + connect(refRelOut.y, Iy.y_reset_in) annotation (Line(points={{-38,40},{-20,40}, + {-20,62},{-12,62}}, color={0,0,127})); + connect(Iy.trigger, triSta) annotation (Line(points={{0,58},{0,-120}}, color={255,0,255})); - connect(divIyIu.u1, Iy.y) annotation (Line(points={{38,6},{18,6},{18,40},{12, - 40}}, color={0,0,127})); - connect(Iu.y, addPar.u) annotation (Line(points={{-18,-40},{6,-40}}, color={0,0,127})); - connect(addPar.y, divIyIu.u2) annotation (Line(points={{30,-40},{32,-40},{32, - -6},{38,-6}}, color={0,0,127})); - connect(gaiOnyHig.u, tOn) annotation (Line(points={{-82,-20},{-120,-20}}, + connect(divIyIu.u1, Iy.y) annotation (Line(points={{58,6},{20,6},{20,70},{12, + 70}}, color={0,0,127})); + connect(Iu.y, addPar.u) annotation (Line(points={{-18,-40},{18,-40}},color={0,0,127})); + connect(addPar.y, divIyIu.u2) annotation (Line(points={{42,-40},{50,-40},{50, + -6},{58,-6}}, color={0,0,127})); + connect(gaiOnyHig.u, tOn) annotation (Line(points={{-82,-10},{-120,-10}}, color={0,0,127})); - connect(gaiOnyHig.y, Iu.u1) annotation (Line(points={{-58,-20},{-50,-20},{-50, + connect(gaiOnyHig.y, Iu.u1) annotation (Line(points={{-58,-10},{-50,-10},{-50, -34},{-42,-34}}, color={0,0,127})); connect(gaiOffyLow.u, tOff) annotation (Line(points={{-82,-80},{-120,-80}}, color={0,0,127})); connect(gaiOffyLow.y, Iu.u2) annotation (Line(points={{-58,-80},{-50,-80},{-50, -46},{-42,-46}}, color={0,0,127})); connect(divIyIu.y, k) - annotation (Line(points={{62,0},{120,0}}, color={0,0,127})); - connect(gai2.u, u) - annotation (Line(points={{-62,40},{-120,40}}, color={0,0,127})); - connect(gai2.y, Iy.u) - annotation (Line(points={{-38,40},{-12,40}}, color={0,0,127})); - connect(gai1.y, Iy.u) annotation (Line(points={{-38,80},{-20,80},{-20,40},{ - -12,40}}, color={0,0,127})); - connect(gai1.u, u) annotation (Line(points={{-62,80},{-80,80},{-80,40},{-120, - 40}}, color={0,0,127})); + annotation (Line(points={{82,0},{120,0}}, color={0,0,127})); + connect(u, Iy.u) + annotation (Line(points={{-120,70},{-12,70}}, color={0,0,127})); annotation ( defaultComponentName = "gai", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_Controller.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_Controller.txt index 80ad6940503..1ff4fa84eac 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_Controller.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_Controller.txt @@ -1,4 +1,4 @@ -last-generated=2023-09-19 +last-generated=2023-12-15 statistics-simulation= { "linear": " ", @@ -6,8 +6,8 @@ statistics-simulation= "numerical Jacobians": "0" } time=[0e+00, 1e+00] -relCon.u_m=[0e+00, 1.253332374497156e-01, 2.486898953308248e-01, 3.681245524153801e-01, 4.817536869061769e-01, 5.877852363451299e-01, 6.845471384320703e-01, 7.705132340994622e-01, 8.443279384363055e-01, 9.048270386715103e-01, 9.510565340027346e-01, 9.822872294183655e-01, 9.980267303235079e-01, 9.980267241165655e-01, 9.822872294183655e-01, 9.510565622604734e-01, 9.048270386715103e-01, 8.443279384363054e-01, 7.705132929390851e-01, 6.845471041974797e-01, 5.877852740064528e-01, 4.8175360443844e-01, 3.681245306244136e-01, 2.486899405222956e-01, 1.253331676890714e-01, -2.097981390461576e-15, -1.253333533635595e-01, -2.486897589136873e-01, -3.681245306244139e-01, -4.817537683762683e-01, -5.877851217017483e-01, -6.845471041974797e-01, -7.705132929390851e-01, -8.443278366018112e-01, -9.048270386715105e-01, -9.510565622604733e-01, -9.822871922079218e-01, -9.980267241165655e-01, -9.980267241165655e-01, -9.822871922079218e-01, -9.510565622604733e-01, -9.048270386715105e-01, -8.443278366018112e-01, -7.705132929390851e-01, -6.845471041974797e-01, -5.877851217017483e-01, -4.817537683762683e-01, -3.681245306244139e-01, -2.486897589136873e-01, -1.253333533635595e-01, -2.449293705170336e-16, 1.253333533617908e-01, 2.486901212847727e-01, 3.68124877196207e-01, 4.817534392344727e-01, 5.877851217035711e-01, 6.845471041971509e-01, 7.70513292938244e-01, 8.443280367726912e-01, 9.048271948735948e-01, 9.510564438597915e-01, 9.822871922084567e-01, 9.980267241166327e-01, 9.980267241166327e-01, 9.822871922084567e-01, 9.510564438597915e-01, 9.048271948735948e-01, 8.443280367726912e-01, 7.70513292938244e-01, 6.845471041971509e-01, 5.877851217035711e-01, 4.817534392344727e-01, 3.68124877196207e-01, 2.486901212847727e-01, 1.253333533617908e-01, -6.738033169476553e-15, -1.253333533617908e-01, -2.486901212847727e-01, -3.68124877196207e-01, -4.817534392344727e-01, -5.877851217035711e-01, -6.845471041971509e-01, -7.70513292938244e-01, -8.443280367726912e-01, -9.048271948735948e-01, -9.510564438597915e-01, -9.822871922084567e-01, -9.980267241166327e-01, -9.980267241166327e-01, -9.822871922084567e-01, -9.510564438597915e-01, -9.048271948735948e-01, -8.443280367726912e-01, -7.70513292938244e-01, -6.845471041971509e-01, -5.877851217035711e-01, -4.817534392344727e-01, -3.68124877196207e-01, -2.486901212847727e-01, -1.253333533617908e-01, -4.898587410340671e-16] +relCon.u_m=[0e+00, 1.253332374497156e-01, 2.486898953308248e-01, 3.681245524153801e-01, 4.817536869061769e-01, 5.877852363451299e-01, 6.845471384320703e-01, 7.705132340994622e-01, 8.443279384363055e-01, 9.048270386715103e-01, 9.510565340027346e-01, 9.822872294183655e-01, 9.980267303235079e-01, 9.980267241165655e-01, 9.822872294183655e-01, 9.510565622604734e-01, 9.048270386715103e-01, 8.443279384363054e-01, 7.705132929390851e-01, 6.845471041974797e-01, 5.877852740064528e-01, 4.8175360443844e-01, 3.681245306244136e-01, 2.486899405222956e-01, 1.253331676890714e-01, 1.224646852585168e-16, -1.253333533635595e-01, -2.486897589136873e-01, -3.681245306244139e-01, -4.817537683762683e-01, -5.877851217017483e-01, -6.845471041974797e-01, -7.705132929390851e-01, -8.443278366018112e-01, -9.048270386715105e-01, -9.510565622604733e-01, -9.822871922079218e-01, -9.980267241165655e-01, -9.980267241165655e-01, -9.822871922079218e-01, -9.510565622604733e-01, -9.048270386715105e-01, -8.443278366018112e-01, -7.705132929390851e-01, -6.845471041974797e-01, -5.877851217017483e-01, -4.817537683762683e-01, -3.681245306244139e-01, -2.486897589136873e-01, -1.253333533635595e-01, -2.449293705170336e-16, 1.253333533617908e-01, 2.486901212847727e-01, 3.68124877196207e-01, 4.817534392344727e-01, 5.877851217035711e-01, 6.845471041971509e-01, 7.70513292938244e-01, 8.443280367726912e-01, 9.048271948735948e-01, 9.510564438597915e-01, 9.822871922084567e-01, 9.980267241166327e-01, 9.980267241166327e-01, 9.822871922084567e-01, 9.510564438597915e-01, 9.048271948735948e-01, 8.443280367726912e-01, 7.70513292938244e-01, 6.845471041971509e-01, 5.877851217035711e-01, 4.817534392344727e-01, 3.68124877196207e-01, 2.486901212847727e-01, 1.253333533617908e-01, 3.673940293057708e-16, -1.253333533617908e-01, -2.486901212847727e-01, -3.68124877196207e-01, -4.817534392344727e-01, -5.877851217035711e-01, -6.845471041971509e-01, -7.70513292938244e-01, -8.443280367726912e-01, -9.048271948735948e-01, -9.510564438597915e-01, -9.822871922084567e-01, -9.980267241166327e-01, -9.980267241166327e-01, -9.822871922084567e-01, -9.510564438597915e-01, -9.048271948735948e-01, -8.443280367726912e-01, -7.70513292938244e-01, -6.845471041971509e-01, -5.877851217035711e-01, -4.817534392344727e-01, -3.68124877196207e-01, -2.486901212847727e-01, -1.253333533617908e-01, -4.898587410340671e-16] enaSig.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] relCon.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] -relCon.yErr=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.253333533617908e-01, 2.486901212847727e-01, 3.68124877196207e-01, 4.817534392344727e-01, 5.877851217035711e-01, 6.845471041971509e-01, 7.70513292938244e-01, 8.443280367726912e-01, 9.048271948735948e-01, 9.510564438597915e-01, 9.822871922084567e-01, 9.980267241166327e-01, 9.980267241166327e-01, 9.822871922084567e-01, 9.510564438597915e-01, 9.048271948735948e-01, 8.443280367726912e-01, 7.70513292938244e-01, 6.845471041971509e-01, 5.877851217035711e-01, 4.817534392344727e-01, 3.68124877196207e-01, 2.486901212847727e-01, 1.253333533617908e-01, -6.738033169476553e-15, -1.253333533617908e-01, -2.486901212847727e-01, -3.68124877196207e-01, -4.817534392344727e-01, -5.877851217035711e-01, -6.845471041971509e-01, -7.70513292938244e-01, -8.443280367726912e-01, -9.048271948735948e-01, -9.510564438597915e-01, -9.822871922084567e-01, -9.980267241166327e-01, -9.980267241166327e-01, -9.822871922084567e-01, -9.510564438597915e-01, -9.048271948735948e-01, -8.443280367726912e-01, -7.70513292938244e-01, -6.845471041971509e-01, -5.877851217035711e-01, -4.817534392344727e-01, -3.68124877196207e-01, -2.486901212847727e-01, -1.253333533617908e-01, -4.898587410340671e-16] +relCon.yDif=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.253333533617908e-01, 2.486901212847727e-01, 3.68124877196207e-01, 4.817534392344727e-01, 5.877851217035711e-01, 6.845471041971509e-01, 7.70513292938244e-01, 8.443280367726912e-01, 9.048271948735948e-01, 9.510564438597915e-01, 9.822871922084567e-01, 9.980267241166327e-01, 9.980267241166327e-01, 9.822871922084567e-01, 9.510564438597915e-01, 9.048271948735948e-01, 8.443280367726912e-01, 7.70513292938244e-01, 6.845471041971509e-01, 5.877851217035711e-01, 4.817534392344727e-01, 3.68124877196207e-01, 2.486901212847727e-01, 1.253333533617908e-01, 3.673940293057708e-16, -1.253333533617908e-01, -2.486901212847727e-01, -3.68124877196207e-01, -4.817534392344727e-01, -5.877851217035711e-01, -6.845471041971509e-01, -7.70513292938244e-01, -8.443280367726912e-01, -9.048271948735948e-01, -9.510564438597915e-01, -9.822871922084567e-01, -9.980267241166327e-01, -9.980267241166327e-01, -9.822871922084567e-01, -9.510564438597915e-01, -9.048271948735948e-01, -8.443280367726912e-01, -7.70513292938244e-01, -6.845471041971509e-01, -5.877851217035711e-01, -4.817534392344727e-01, -3.68124877196207e-01, -2.486901212847727e-01, -1.253333533617908e-01, -4.898587410340671e-16] relCon.yOn=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Controller.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Controller.mos index b40e52e278a..9409ddb272d 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Controller.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/Controller.mos @@ -4,4 +4,4 @@ plotExpression(apply(Controller[end].relCon.u_s-0.4), false, "controller[end].re plotExpression(apply(Controller[end].relCon.u_s+0.4), false, "controller[end].relCon.u_s+deaBan", 1); createPlot(id=1, position={15, 15, 1148, 620}, y={"enaSig.y"}, range={0.0, 1.0, -1.0, 2.0}, grid=true, subPlot=102, colors={{28,108,200}}); createPlot(id=1, position={15, 15, 1148, 620}, y={"relCon.y"}, range={0.0, 1.0, -2.0, 2.0}, grid=true, subPlot=103, colors={{28,108,200}}); -createPlot(id=1, position={15, 15, 1148, 620}, y={"relCon.yDiff", "relCon.yOn"}, range={0.0, 1.0, -2.0, 2.0}, grid=true, subPlot=104, colors={{28,108,200}, {238,46,47}}); \ No newline at end of file +createPlot(id=1, position={15, 15, 1148, 620}, y={"relCon.yDif", "relCon.yOn"}, range={0.0, 1.0, -2.0, 2.0}, grid=true, subPlot=104, colors={{28,108,200}, {238,46,47}}); diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.Controller.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.Controller.mos index bf63a686995..cc9780d497a 100644 --- a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.Controller.mos +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Validation.Controller.mos @@ -3,6 +3,6 @@ compareVars := "relCon.u_m", "enaSig.y", "relCon.y", - "relCon.yDiff", + "relCon.yDif", "relCon.yOn" }; From 52e5fdcdb4490963a3069bc68a39bd081b3dc0f0 Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Fri, 15 Dec 2023 15:49:18 -0800 Subject: [PATCH 149/214] updated comments --- .../OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo index 3827565415b..f01aad3e761 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo @@ -33,7 +33,8 @@ block Controller "Relay switch output, true when control output switches to the higher value" annotation (Placement(transformation(extent={{100,-80},{140,-40}}), iconTransformation(extent={{100,-80},{140,-40}}))); - Buildings.Controls.OBC.CDL.Interfaces.RealOutput yDif "Input difference" + Buildings.Controls.OBC.CDL.Interfaces.RealOutput yDif + "Input difference, measurement - setpoint" annotation (Placement(transformation(extent={{100,-20},{140,20}}), iconTransformation(extent={{100,-20},{140,20}}))); From 2d2f14a893ce69f2a0fe3991338b802be69aeebe Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Fri, 15 Dec 2023 22:41:26 -0500 Subject: [PATCH 150/214] fix model doc --- .../FirstOrderTimedelayed/BaseClasses/Gain.mo | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Gain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Gain.mo index 79b93c7189e..511bad4bfb2 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Gain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Gain.mo @@ -107,9 +107,10 @@ where Iy and Iu are the integral of the proc output and the integral of the relay output, respectively.

                                                Iy is calculated by

                                                -

                                                Iy = ∫ -u(t) dt;

                                                -

                                                where u is the input difference of a relay controller, see details in -Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Controller +

                                                +Iy = ∫ (u_m(t) - u_s(t)) dt;

                                                +

                                                +where u_m and u_s are the measurement and setpoint of a relay controller at t, respectively.

                                                Iu is calculated by

                                                From 3365ad52af99c507df7fd775464a8931e7bbd9d1 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Sun, 17 Dec 2023 20:52:51 -0500 Subject: [PATCH 151/214] revert the changes to system identification --- .../Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo | 3 +-- .../FirstOrderTimedelayed/BaseClasses/Gain.mo | 12 ++++-------- .../BaseClasses/Validation/Gain.mo | 2 +- .../FirstOrderTimedelayed/ControlProcessModel.mo | 5 +---- .../Validation/ControlProcessModel.mo | 3 +-- 5 files changed, 8 insertions(+), 17 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index 7bd4d5d263c..fe7135917be 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -116,8 +116,7 @@ block FirstOrderAMIGO conProMod( final yHig=yHig - yRef, final yLow=yRef + yLow, - final deaBan=deaBan, - final reverseActing=reverseActing) + final deaBan=deaBan) "Calculates the parameters of a first-order time delayed model" annotation (Placement(transformation(extent={{40,30},{60,50}}))); Buildings.Controls.OBC.CDL.Logical.Latch inTunPro diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Gain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Gain.mo index 511bad4bfb2..7a085576c22 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Gain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Gain.mo @@ -4,8 +4,6 @@ block Gain "Identify the gain of a first order time delayed model" "Higher value for the output (assuming the reference output is 0)"; parameter Real yLow(min=1E-6) = 0.5 "Lower value for the output (assuming the reference output is 0)"; - parameter Boolean reverseActing=true - "Set to true for reverse acting, or false for direct acting control action"; Buildings.Controls.OBC.CDL.Interfaces.RealInput u "Relay controller output, (measurement - setpoint)" annotation (Placement(transformation(extent={{-140,50},{-100,90}}), @@ -102,15 +100,13 @@ First implementation

                                                k = Iy/Iu,

                                                -

                                                -where Iy and Iu are the integral of the process -output and the integral of the relay output, respectively. -

                                                +

                                                Iy is calculated by

                                                -Iy = ∫ (u_m(t) - u_s(t)) dt;

                                                +Iy = ∫ u(t) dt;

                                                -where u_m and u_s are the measurement and setpoint of a relay controller at t, respectively. +where u(t) is the relay output at t (see details in +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Controller).

                                                Iu is calculated by

                                                diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/Gain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/Gain.mo index fff0e1f3aed..d4251ecb888 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/Gain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/Gain.mo @@ -1,7 +1,7 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.BaseClasses.Validation; model Gain "Test model for identifying the gain of the control process" Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.BaseClasses.Gain - gai(reverseActing=false) + gai "Block that calculates the gain of a first-order model" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Pulse u( diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo index 89667f4c95a..b4c1497b8ae 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo @@ -7,8 +7,6 @@ block ControlProcessModel "Lower value for the output"; parameter Real deaBan(min=0) = 0.5 "Deadband for holding the output value"; - parameter Boolean reverseActing=true - "Set to true for reverse acting, or false for direct acting control action"; Buildings.Controls.OBC.CDL.Interfaces.RealInput tOn( final quantity="Time", final unit="s", @@ -76,8 +74,7 @@ protected annotation (Placement(transformation(extent={{12,-30},{32,-10}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.BaseClasses.Gain gain( final yHig=yHig, - final yLow=yLow, - final reverseActing = reverseActing) + final yLow=yLow) "Block that calculates the gain" annotation (Placement(transformation(extent={{-84,10},{-64,30}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.BaseClasses.TimeConstantDelay diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo index 420c309fca4..08a1f4072b8 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo @@ -2,8 +2,7 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.F model ControlProcessModel "Test model for identifying the reduced-order model of the control process" Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.ControlProcessModel - conProMod(yLow=0.1, deaBan=0.05, - reverseActing=false) + conProMod(yLow=0.1, deaBan=0.05) "Calculate the parameters of a first-order model" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Pulse u( From 5188025017a9170c34f3185e32fde7bdc4cbc683 Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Wed, 20 Dec 2023 16:26:53 -0800 Subject: [PATCH 152/214] improved graphical --- .../PIDWithAutotuning/FirstOrderAMIGO.mo | 166 +++++++++--------- .../Relay/BaseClasses/HalfPeriodRatio.mo | 43 +++-- .../Relay/BaseClasses/NormalizedTimeDelay.mo | 41 +++-- .../Relay/BaseClasses/OnOffPeriod.mo | 33 ++-- .../BaseClasses/SamplerWithResetThreshold.mo | 75 ++++---- .../Relay/ResponseProcess.mo | 60 ++++--- .../BaseClasses/TimeConstantDelay.mo | 142 ++++++++------- .../ControlProcessModel.mo | 117 ++++++------ .../Validation/ControlProcessModel.mo | 34 ++-- .../DirectActingPIDWithFirstOrderAMIGO.mo | 90 +++++----- .../DirectActingPIWithFirstOrderAMIGO.mo | 106 ++++++----- .../ReverseActingPIDWithFirstOrderAMIGO.mo | 16 +- 12 files changed, 475 insertions(+), 448 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index fe7135917be..7d7b4a5ab42 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -54,7 +54,7 @@ block FirstOrderAMIGO annotation (Placement(transformation(extent={{-220,-20},{-180,20}}),iconTransformation(extent={{-140,-20},{-100,20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput u_m "Connector of measurement input signal" - annotation (Placement(transformation(origin={0,-120}, extent={{20,-20},{-20,20}},rotation=270), + annotation (Placement(transformation(origin={-20,-120},extent={{20,-20},{-20,20}},rotation=270), iconTransformation(extent={{20,-20},{-20,20}},rotation=270,origin={0,-120}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanInput triRes "Connector for reseting the controller output" @@ -69,7 +69,7 @@ block FirstOrderAMIGO annotation (Placement(transformation(extent={{180,-20},{220,20}}),iconTransformation(extent={{100,-20},{140,20}}))); Buildings.Controls.OBC.CDL.Reals.Sources.ModelTime modTim "Simulation time" - annotation (Placement(transformation(extent={{-40,60},{-20,80}}))); + annotation (Placement(transformation(extent={{-60,60},{-40,80}}))); Buildings.Controls.OBC.Utilities.PIDWithInputGains con( final controllerType=conTyp, final r=r, @@ -81,10 +81,10 @@ block FirstOrderAMIGO final yd_start=yd_start, final reverseActing=reverseActing, final y_reset=xi_start) "PI or P controller with the gains as inputs" - annotation (Placement(transformation(extent={{-40,-50},{-20,-30}}))); + annotation (Placement(transformation(extent={{-50,-50},{-30,-30}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PID PIDPar if with_D "Autotuner of gains for a PID controller" - annotation (Placement(transformation(extent={{80,30},{100,50}}))); + annotation (Placement(transformation(extent={{80,20},{100,40}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PI PIPar if not with_D "Autotuner of gains for a PI controller" annotation (Placement(transformation(extent={{80,60},{100,80}}))); @@ -94,7 +94,7 @@ block FirstOrderAMIGO final deaBan=deaBan, final reverseActing=reverseActing) "Relay controller" - annotation (Placement(transformation(extent={{-40,30},{-20,50}}))); + annotation (Placement(transformation(extent={{-50,20},{-30,40}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.ResponseProcess resPro( final yHig=yHig - yRef, final yLow=yRef + yLow) @@ -105,30 +105,30 @@ block FirstOrderAMIGO annotation (Placement(transformation(extent={{140,-10},{160,10}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samk(final y_start=k_start) "Recording the proportional control gain" - annotation (Placement(transformation(extent={{-120,-10},{-100,-30}}))); + annotation (Placement(transformation(extent={{-100,-10},{-80,-30}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samTi(final y_start=Ti_start) "Recording the integral time" annotation (Placement(transformation(extent={{-120,-40},{-100,-60}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samTd(final y_start=Td_start) if with_D "Recording the derivative time" - annotation (Placement(transformation(extent={{-120,-70},{-100,-90}}))); + annotation (Placement(transformation(extent={{-140,-70},{-120,-90}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.ControlProcessModel conProMod( final yHig=yHig - yRef, final yLow=yRef + yLow, final deaBan=deaBan) "Calculates the parameters of a first-order time delayed model" - annotation (Placement(transformation(extent={{40,30},{60,50}}))); + annotation (Placement(transformation(extent={{40,60},{60,80}}))); Buildings.Controls.OBC.CDL.Logical.Latch inTunPro "Outputs true if the controller is conducting the autotuning process" - annotation (Placement(transformation(extent={{20,-80},{40,-60}}))); + annotation (Placement(transformation(extent={{20,-30},{40,-10}}))); Buildings.Controls.OBC.CDL.Logical.Nand nand "Check if an autotuning is ongoing while a new autotuning request is received" - annotation (Placement(transformation(extent={{120,-90},{140,-70}}))); + annotation (Placement(transformation(extent={{120,-72},{140,-52}}))); Buildings.Controls.OBC.CDL.Utilities.Assert assMes( message="An autotuning is ongoing and an autotuning request is ignored.") "Error message when an autotuning tuning is ongoing while a new autotuning request is received" - annotation (Placement(transformation(extent={{148,-90},{168,-70}}))); + annotation (Placement(transformation(extent={{148,-72},{168,-52}}))); Buildings.Controls.OBC.CDL.Logical.Edge edgReq "True only when a new request is received" annotation (Placement(transformation(extent={{80,-80},{100,-60}}))); @@ -155,92 +155,90 @@ protected "Type of controller"; equation - connect(con.u_s, u_s) annotation (Line(points={{-42,-40},{-48,-40},{-48,0},{-200, + connect(con.u_s, u_s) annotation (Line(points={{-52,-40},{-60,-40},{-60,0},{-200, 0}}, color={0,0,127})); - connect(rel.u_s, u_s) annotation (Line(points={{-42,40},{-122,40},{-122,0},{-200, + connect(rel.u_s, u_s) annotation (Line(points={{-52,30},{-160,30},{-160,0},{-200, 0}}, color={0,0,127})); - connect(con.trigger, triRes) annotation (Line(points={{-36,-52},{-36,-90},{-60, + connect(con.trigger, triRes) annotation (Line(points={{-46,-52},{-46,-90},{-60, -90},{-60,-120}},color={255,0,255})); - connect(samk.y,con. k) annotation (Line(points={{-98,-20},{-74,-20},{-74,-32}, - {-42,-32}},color={0,0,127})); - connect(con.Ti, samTi.y) annotation (Line(points={{-42,-36},{-74,-36},{-74,-50}, + connect(samk.y,con. k) annotation (Line(points={{-78,-20},{-66,-20},{-66,-32}, + {-52,-32}},color={0,0,127})); + connect(con.Ti, samTi.y) annotation (Line(points={{-52,-36},{-66,-36},{-66,-50}, {-98,-50}}, color={0,0,127})); - connect(samTd.y,con. Td) annotation (Line(points={{-98,-80},{-66,-80},{-66,-44}, - {-42,-44}},color={0,0,127})); - connect(rel.u_m, u_m) annotation (Line(points={{-30,28},{-30,-22},{0,-22},{0,-120}}, - color={0,0,127})); - connect(resPro.on, rel.yOn) annotation (Line(points={{-2,40},{-10,40},{-10,34}, - {-18,34}},color={255,0,255})); - connect(modTim.y, resPro.tim) annotation (Line(points={{-18,70},{-10,70},{-10, + connect(samTd.y,con. Td) annotation (Line(points={{-118,-80},{-60,-80},{-60,-44}, + {-52,-44}},color={0,0,127})); + connect(rel.u_m, u_m) annotation (Line(points={{-40,18},{-40,-10},{-20,-10},{-20, + -120}}, color={0,0,127})); + connect(resPro.on, rel.yOn) annotation (Line(points={{-2,40},{-10,40},{-10,24}, + {-28,24}},color={255,0,255})); + connect(modTim.y, resPro.tim) annotation (Line(points={{-38,70},{-26,70},{-26, 46},{-2,46}},color={0,0,127})); - connect(resPro.tau, conProMod.tau) annotation (Line(points={{22,40},{28,40},{28, - 32},{38,32}},color={0,0,127})); - connect(conProMod.tOff, resPro.tOff) annotation (Line(points={{38,36},{30,36}, + connect(resPro.tau, conProMod.tau) annotation (Line(points={{22,40},{34,40},{34, + 62},{38,62}},color={0,0,127})); + connect(conProMod.tOff, resPro.tOff) annotation (Line(points={{38,66},{30,66}, {30,44},{22,44}},color={0,0,127})); - connect(resPro.tOn, conProMod.tOn) annotation (Line(points={{22,48},{32,48},{32, - 44},{38,44}},color={0,0,127})); - connect(rel.yDif, conProMod.u) annotation (Line(points={{-18,40},{-12,40},{-12, - 60},{34,60},{34,48},{38,48}}, color={0,0,127})); - connect(PIDPar.kp, conProMod.k) annotation (Line(points={{78,46},{62,46}}, color={0,0,127})); - connect(PIDPar.T, conProMod.T) annotation (Line(points={{78,40},{62,40}}, color={0,0,127})); - connect(PIDPar.L, conProMod.L) annotation (Line(points={{78,34},{62,34}}, color={0,0,127})); - connect(PIDPar.k, samk.u) annotation (Line(points={{102,47},{110,47},{110,96}, - {-148,96},{-148,-20},{-122,-20}},color={0,0,127})); - connect(PIDPar.Ti, samTi.u) annotation (Line(points={{102,40},{112,40},{112,98}, + connect(resPro.tOn, conProMod.tOn) annotation (Line(points={{22,48},{26,48},{26, + 74},{38,74}},color={0,0,127})); + connect(rel.yDif, conProMod.u) annotation (Line(points={{-28,30},{-14,30},{-14, + 78},{38,78}}, color={0,0,127})); + connect(PIDPar.kp, conProMod.k) annotation (Line(points={{78,36},{66,36},{66,76}, + {62,76}}, color={0,0,127})); + connect(PIDPar.T, conProMod.T) annotation (Line(points={{78,30},{70,30},{70,70}, + {62,70}}, color={0,0,127})); + connect(PIDPar.L, conProMod.L) annotation (Line(points={{78,24},{74,24},{74,64}, + {62,64}}, color={0,0,127})); + connect(PIDPar.k, samk.u) annotation (Line(points={{102,37},{110,37},{110,96}, + {-148,96},{-148,-20},{-102,-20}},color={0,0,127})); + connect(PIDPar.Ti, samTi.u) annotation (Line(points={{102,30},{112,30},{112,98}, {-150,98},{-150,-50},{-122,-50}},color={0,0,127})); - connect(PIPar.kp, conProMod.k) annotation (Line(points={{78,76},{70,76},{70,46}, - {62,46}},color={0,0,127})); - connect(PIPar.T, conProMod.T) annotation (Line(points={{78,70},{72,70},{72,40}, - {62,40}}, color={0,0,127})); - connect(PIPar.L, conProMod.L) annotation (Line(points={{78,64},{74,64},{74,34}, - {62,34}},color={0,0,127})); + connect(PIPar.kp, conProMod.k) annotation (Line(points={{78,76},{62,76}}, + color={0,0,127})); + connect(PIPar.T, conProMod.T) annotation (Line(points={{78,70},{62,70}}, + color={0,0,127})); + connect(PIPar.L, conProMod.L) annotation (Line(points={{78,64},{62,64}}, + color={0,0,127})); connect(PIPar.k, samk.u) annotation (Line(points={{102,76},{110,76},{110,96},{ - -148,96},{-148,-20},{-122,-20}}, color={0,0,127})); + -148,96},{-148,-20},{-102,-20}}, color={0,0,127})); connect(PIPar.Ti, samTi.u) annotation (Line(points={{102,64},{112,64},{112,98}, {-150,98},{-150,-50},{-122,-50}}, color={0,0,127})); - connect(resPro.triEnd, conProMod.triEnd) annotation (Line(points={{22,32},{24, - 32},{24,20},{56,20},{56,28}}, color={255,0,255})); - connect(resPro.triSta, conProMod.triSta) annotation (Line(points={{22,36},{26, - 36},{26,22},{44,22},{44,28}}, color={255,0,255})); - connect(resPro.triEnd, samTi.trigger) annotation (Line(points={{22,32},{24,32}, - {24,20},{-126,20},{-126,-36},{-110,-36},{-110,-38}}, - color={255,0,255})); - connect(resPro.triEnd, samk.trigger) annotation (Line(points={{22,32},{24,32}, - {24,20},{-126,20},{-126,-6},{-110,-6},{-110,-8}}, - color={255,0,255})); - connect(resPro.triEnd, samTd.trigger) annotation (Line(points={{22,32},{24,32}, - {24,20},{-126,20},{-126,-66},{-110,-66},{-110,-68}}, - color={255,0,255})); - connect(PIDPar.Td, samTd.u) annotation (Line(points={{102,33},{114,33},{114,94}, - {-146,94},{-146,-80},{-122,-80}}, - color={0,0,127})); + connect(resPro.triEnd, conProMod.triEnd) annotation (Line(points={{22,32},{56, + 32},{56,58}}, color={255,0,255})); + connect(resPro.triSta, conProMod.triSta) annotation (Line(points={{22,36},{44, + 36},{44,58}}, color={255,0,255})); + connect(resPro.triEnd, samTi.trigger) annotation (Line(points={{22,32},{30,32}, + {30,10},{-110,10},{-110,-38}}, color={255,0,255})); + connect(resPro.triEnd, samk.trigger) annotation (Line(points={{22,32},{30,32}, + {30,10},{-90,10},{-90,-8}}, color={255,0,255})); + connect(resPro.triEnd, samTd.trigger) annotation (Line(points={{22,32},{30,32}, + {30,10},{-130,10},{-130,-68}}, color={255,0,255})); + connect(PIDPar.Td, samTd.u) annotation (Line(points={{102,23},{114,23},{114,94}, + {-146,94},{-146,-80},{-142,-80}}, color={0,0,127})); connect(swi.y, y) annotation (Line(points={{162,0},{200,0}}, color={0,0,127})); - connect(u_m,con. u_m) annotation (Line(points={{0,-120},{0,-90},{-30,-90},{-30, - -52}}, color={0,0,127})); - connect(rel.y, swi.u1) annotation (Line(points={{-18,46},{-16,46},{-16,88},{130, - 88},{130,8},{138,8}}, - color={0,0,127})); - connect(swi.u3,con. y) annotation (Line(points={{138,-8},{60,-8},{60,-40},{-18, + connect(u_m,con. u_m) annotation (Line(points={{-20,-120},{-20,-90},{-40,-90}, + {-40,-52}}, color={0,0,127})); + connect(rel.y, swi.u1) annotation (Line(points={{-28,36},{-20,36},{-20,88},{130, + 88},{130,8},{138,8}}, color={0,0,127})); + connect(swi.u3,con. y) annotation (Line(points={{138,-8},{60,-8},{60,-40},{-28, -40}}, color={0,0,127})); - connect(inTunPro.y, swi.u2) annotation (Line(points={{42,-70},{50,-70},{50,0}, + connect(inTunPro.y, swi.u2) annotation (Line(points={{42,-20},{50,-20},{50,0}, {138,0}}, color={255,0,255})); - connect(inTunPro.u, triTun) annotation (Line(points={{18,-70},{8,-70},{8,-88}, - {60,-88},{60,-120}}, color={255,0,255})); - connect(inTunPro.clr, resPro.triEnd) annotation (Line(points={{18,-76},{12,-76}, - {12,20},{24,20},{24,32},{22,32}},color={255,0,255})); - connect(rel.trigger, triTun) annotation (Line(points={{-36,28},{-36,-20},{8,-20}, - {8,-88},{60,-88},{60,-120}},color={255,0,255})); - connect(resPro.trigger, triTun) annotation (Line(points={{-2,34},{-8,34},{-8,-20}, - {8,-20},{8,-88},{60,-88},{60,-120}},color={255,0,255})); - connect(nand.y, assMes.u) annotation (Line(points={{142,-80},{146,-80}}, color={255,0,255})); - connect(nand.u2, edgReq.y) annotation (Line(points={{118,-88},{110,-88},{110,-70}, - {102,-70}}, color={255,0,255})); - connect(edgReq.u, triTun) annotation (Line(points={{78,-70},{70,-70},{70,-88}, - {60,-88},{60,-120}}, color={255,0,255})); - connect(tunStaDel.y, nand.u1) annotation (Line(points={{102,-30},{112,-30},{112, - -80},{118,-80}}, color={255,0,255})); - connect(tunStaDel.u, inTunPro.y) annotation (Line(points={{78,-30},{62,-30},{62, - -70},{42,-70}}, color={255,0,255})); + connect(inTunPro.u, triTun) annotation (Line(points={{18,-20},{-6,-20},{-6,-70}, + {60,-70},{60,-120}}, color={255,0,255})); + connect(inTunPro.clr, resPro.triEnd) annotation (Line(points={{18,-26},{12,-26}, + {12,10},{30,10},{30,32},{22,32}},color={255,0,255})); + connect(rel.trigger, triTun) annotation (Line(points={{-46,18},{-46,0},{-6,0}, + {-6,-70},{60,-70},{60,-120}}, color={255,0,255})); + connect(resPro.trigger, triTun) annotation (Line(points={{-2,34},{-6,34},{-6,-70}, + {60,-70},{60,-120}}, color={255,0,255})); + connect(nand.y, assMes.u) annotation (Line(points={{142,-62},{146,-62}}, color={255,0,255})); + connect(nand.u2, edgReq.y) + annotation (Line(points={{118,-70},{102,-70}}, color={255,0,255})); + connect(edgReq.u, triTun) + annotation (Line(points={{78,-70},{60,-70},{60,-120}}, color={255,0,255})); + connect(tunStaDel.y, nand.u1) annotation (Line(points={{102,-30},{110,-30},{110, + -62},{118,-62}}, color={255,0,255})); + connect(tunStaDel.u, inTunPro.y) annotation (Line(points={{78,-30},{50,-30},{50, + -20},{42,-20}}, color={255,0,255})); annotation (Documentation(info="

                                                This block implements a rule-based PID tuning method. diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/HalfPeriodRatio.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/HalfPeriodRatio.mo index d3a1bda7966..8df5b9b5013 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/HalfPeriodRatio.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/HalfPeriodRatio.mo @@ -32,44 +32,41 @@ protected Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler tOffSam( final y_start=Buildings.Controls.OBC.CDL.Constants.eps) "Block that samples tOff when the tuning period ends" - annotation (Placement(transformation(extent={{-80,-60},{-60,-80}}))); + annotation (Placement(transformation(extent={{-60,-80},{-40,-60}}))); Buildings.Controls.OBC.CDL.Reals.Min mintOntOff "Block that finds the smaller one between the length for the on period and the length for the off period" - annotation (Placement(transformation(extent={{-20,-30},{0,-10}}))); + annotation (Placement(transformation(extent={{0,-50},{20,-30}}))); Buildings.Controls.OBC.CDL.Reals.Max maxtOntOff "Block that finds the larger one between the length for the on period and the length for the off period" - annotation (Placement(transformation(extent={{-20,30},{0,50}}))); + annotation (Placement(transformation(extent={{0,30},{20,50}}))); Buildings.Controls.OBC.CDL.Reals.Divide halPerRat "Block that calculates the half period ratio" - annotation (Placement(transformation(extent={{40,-10},{60,10}}))); + annotation (Placement(transformation(extent={{60,-10},{80,10}}))); equation connect(tOnSam.u, tOn) annotation (Line(points={{-82,80},{-120,80}}, color={0,0,127})); connect(tOffSam.u, tOff) - annotation (Line(points={{-82,-70},{-120,-70}}, color={0,0,127})); - connect(tOnSam.y, maxtOntOff.u1) annotation (Line(points={{-58,80},{-52,80},{ - -52,46},{-22,46}}, - color={0,0,127})); - connect(maxtOntOff.u2, tOffSam.y) annotation (Line(points={{-22,34},{-40,34}, - {-40,-70},{-58,-70}},color={0,0,127})); - connect(mintOntOff.u2, tOffSam.y) annotation (Line(points={{-22,-26},{-40,-26}, - {-40,-70},{-58,-70}}, color={0,0,127})); - connect(maxtOntOff.y, halPerRat.u1) annotation (Line(points={{2,40},{32,40},{ - 32,6},{38,6}}, - color={0,0,127})); - connect(halPerRat.u2, mintOntOff.y) annotation (Line(points={{38,-6},{10,-6},{ - 10,-20},{2,-20}}, color={0,0,127})); - connect(halPerRat.y, rho) annotation (Line(points={{62,0},{102,0},{102,0},{120, - 0}}, color={0,0,127})); + annotation (Line(points={{-62,-70},{-120,-70}}, color={0,0,127})); + connect(tOnSam.y, maxtOntOff.u1) annotation (Line(points={{-58,80},{-40,80},{-40, + 46},{-2,46}}, color={0,0,127})); + connect(maxtOntOff.u2, tOffSam.y) annotation (Line(points={{-2,34},{-20,34},{-20, + -70},{-38,-70}}, color={0,0,127})); + connect(mintOntOff.u2, tOffSam.y) annotation (Line(points={{-2,-46},{-20,-46}, + {-20,-70},{-38,-70}}, color={0,0,127})); + connect(maxtOntOff.y, halPerRat.u1) annotation (Line(points={{22,40},{40,40},{ + 40,6},{58,6}}, color={0,0,127})); + connect(halPerRat.u2, mintOntOff.y) annotation (Line(points={{58,-6},{40,-6},{ + 40,-40},{22,-40}},color={0,0,127})); + connect(halPerRat.y, rho) annotation (Line(points={{82,0},{120,0}}, + color={0,0,127})); connect(tOnSam.y, mintOntOff.u1) - annotation (Line(points={{-58,80},{-52,80},{-52, - 46},{-28,46},{-28,-14},{-22,-14}}, + annotation (Line(points={{-58,80},{-40,80},{-40,-34},{-2,-34}}, color={0,0,127})); connect(tOnSam.trigger, TunEnd) annotation (Line(points={{-70,68},{-70,0},{-120,0}}, color={255,0,255})); - connect(tOffSam.trigger, TunEnd) - annotation (Line(points={{-70,-58},{-70,0},{-120,0}}, color={255,0,255})); + connect(TunEnd, tOffSam.trigger) annotation (Line(points={{-120,0},{-70,0},{-70, + -90},{-50,-90},{-50,-82}}, color={255,0,255})); annotation (defaultComponentName = "halPerRat", Diagram( coordinateSystem( diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/NormalizedTimeDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/NormalizedTimeDelay.mo index f47d372d3ea..9928679df61 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/NormalizedTimeDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/NormalizedTimeDelay.mo @@ -26,20 +26,20 @@ protected annotation (Placement(transformation(extent={{-80,70},{-60,90}}))); Buildings.Controls.OBC.CDL.Reals.Divide div "Block that calculates the normalized time delay" - annotation (Placement(transformation(extent={{40,-10},{60,10}}))); + annotation (Placement(transformation(extent={{60,-10},{80,10}}))); Buildings.Controls.OBC.CDL.Reals.Subtract subGamRho "Block that calculates the difference between the asymmetry level of the relay controller and the half period ratio" - annotation (Placement(transformation(extent={{0,10},{20,30}}))); + annotation (Placement(transformation(extent={{20,10},{40,30}}))); Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter gai( final k=0.35) "Gain for the half period ratio" annotation (Placement(transformation(extent={{-80,-70},{-60,-50}}))); Buildings.Controls.OBC.CDL.Reals.Multiply mul "Block that calculates the product of the two inputs" - annotation (Placement(transformation(extent={{0,-48},{20,-28}}))); + annotation (Placement(transformation(extent={{20,-48},{40,-28}}))); Buildings.Controls.OBC.CDL.Utilities.Assert assMes( - final message="Increasing the asymmetry level to avoid negative values for the time delay.") - "Error message when asymmetry level is less than the half period ratio" + final message="Warning: the asymmetry level of the relay controller is lower than the half period ratio. Increase the level.") + "Warning message when asymmetry level is less than the half period ratio" annotation (Placement(transformation(extent={{60,50},{80,70}}))); Buildings.Controls.OBC.CDL.Reals.Greater gre( final h=1e-6) @@ -47,27 +47,30 @@ protected annotation (Placement(transformation(extent={{-20,50},{0,70}}))); equation - connect(subGamRho.u1, asyLev.y) annotation (Line(points={{-2,26},{-52,26},{-52, - 80},{-58,80}}, color={0,0,127})); - connect(subGamRho.u2, rho) annotation (Line(points={{-2,14},{-42,14},{-42,20}, - {-94,20},{-94,0},{-120,0}}, color={0,0,127})); + connect(subGamRho.u1, asyLev.y) annotation (Line(points={{18,26},{-50,26},{ + -50,80},{-58,80}}, + color={0,0,127})); + connect(subGamRho.u2, rho) annotation (Line(points={{18,14},{-94,14},{-94,0}, + {-120,0}}, color={0,0,127})); connect(gai.u, rho) annotation (Line(points={{-82,-60},{-94,-60},{-94,0},{-120, 0}}, color={0,0,127})); connect(div.u1, subGamRho.y) - annotation (Line(points={{38,6},{30,6},{30,20},{22,20}}, color={0,0,127})); - connect(div.u2, mul.y) annotation (Line(points={{38,-6},{30,-6},{30,-38},{22,-38}}, + annotation (Line(points={{58,6},{50,6},{50,20},{42,20}}, color={0,0,127})); + connect(div.u2, mul.y) annotation (Line(points={{58,-6},{50,-6},{50,-38},{42, + -38}}, color={0,0,127})); connect(div.y, tau) - annotation (Line(points={{62,0},{120,0}}, color={0,0,127})); + annotation (Line(points={{82,0},{120,0}}, color={0,0,127})); connect(gai.y, addPar2.u) annotation (Line(points={{-58,-60},{-42,-60}}, color={0,0,127})); - connect(addPar2.y, mul.u2) annotation (Line(points={{-18,-60},{-10,-60},{-10,-44}, - {-2,-44}}, color={0,0,127})); - connect(addPar1.u, asyLev.y) annotation (Line(points={{-42,-10},{-52,-10},{-52, - 80},{-58,80}}, color={0,0,127})); - connect(addPar1.y, mul.u1) annotation (Line(points={{-18,-10},{-10,-10},{-10,-32}, - {-2,-32}}, color={0,0,127})); - connect(asyLev.y, gre.u1) annotation (Line(points={{-58,80},{-52,80},{-52,60}, + connect(addPar2.y, mul.u2) annotation (Line(points={{-18,-60},{0,-60},{0,-44}, + {18,-44}}, color={0,0,127})); + connect(addPar1.u, asyLev.y) annotation (Line(points={{-42,-10},{-50,-10},{ + -50,80},{-58,80}}, + color={0,0,127})); + connect(addPar1.y, mul.u1) annotation (Line(points={{-18,-10},{0,-10},{0,-32}, + {18,-32}}, color={0,0,127})); + connect(asyLev.y, gre.u1) annotation (Line(points={{-58,80},{-50,80},{-50,60}, {-22,60}}, color={0,0,127})); connect(rho, gre.u2) annotation (Line(points={{-120,0},{-94,0},{-94,52},{-22,52}}, color={0,0,127})); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/OnOffPeriod.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/OnOffPeriod.mo index e4aac2523e0..e92e7f7b8ec 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/OnOffPeriod.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/OnOffPeriod.mo @@ -4,7 +4,7 @@ block OnOffPeriod "Calculate the lengths of the on period and the off period" final quantity="Time", final unit="s") "Simulation time" - annotation (Placement(transformation(extent={{-140,40},{-100,80}}), + annotation (Placement(transformation(extent={{-140,20},{-100,60}}), iconTransformation(extent={{-140,40},{-100,80}}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanInput on "Relay switch signal" @@ -57,17 +57,19 @@ equation {-28,40}},color={0,0,127})); connect(lenOnCal.u2, timOn.y) annotation (Line(points={{10,34},{0,34},{0,40},{-28,40}},color={0,0,127})); - connect(lenOnCal.u1, timOff.y) annotation (Line(points={{10,46},{-4,46},{-4,0}, - {-28,0}}, color={0,0,127})); - connect(lenOffCal.u2, timOff.y) annotation (Line(points={{8,-46},{-14,-46},{-14, - 0},{-28,0}}, color={0,0,127})); - connect(timOn.u, tim) annotation (Line(points={{-52,40},{-80,40},{-80,60},{-120, - 60}}, color={0,0,127})); - connect(timOff.u, tim) annotation (Line(points={{-52,0},{-60,0},{-60,40},{-80, - 40},{-80,60},{-120,60}}, + connect(lenOnCal.u1, timOff.y) annotation (Line(points={{10,46},{-20,46},{-20, + 0},{-28,0}}, + color={0,0,127})); + connect(lenOffCal.u2, timOff.y) annotation (Line(points={{8,-46},{-20,-46},{ + -20,0},{-28,0}}, + color={0,0,127})); + connect(timOn.u, tim) annotation (Line(points={{-52,40},{-120,40}}, + color={0,0,127})); + connect(timOff.u, tim) annotation (Line(points={{-52,0},{-60,0},{-60,40},{ + -120,40}}, color={0,0,127})); - connect(timOn.trigger, on) annotation (Line(points={{-40,28},{-40,20},{-86,20}, - {-86,0},{-120,0}}, color={255,0,255})); + connect(timOn.trigger, on) annotation (Line(points={{-40,28},{-40,20},{-92,20}, + {-92,0},{-120,0}}, color={255,0,255})); connect(not1.u, on) annotation (Line(points={{-82,-20},{-92,-20},{-92,0},{-120, 0}}, color={255,0,255})); connect(not1.y, timOff.trigger) annotation (Line(points={{-58,-20},{-40,-20},{ @@ -76,14 +78,15 @@ equation annotation (Line(points={{82,40},{120,40}}, color={0,0,127})); connect(timOffRec.y, tOff) annotation (Line(points={{82,-40},{120,-40}}, color={0,0,127})); - connect(lenOnCal.y, timOnRec.u) annotation (Line(points={{34,40},{46,40},{46,46}, - {58,46}}, color={0,0,127})); + connect(lenOnCal.y, timOnRec.u) annotation (Line(points={{34,40},{40,40},{40, + 46},{58,46}}, + color={0,0,127})); connect(lenOffCal.y, timOffRec.u) annotation (Line(points={{32,-40},{48,-40},{ 48,-34},{58,-34}}, color={0,0,127})); connect(timOnRec.trigger, trigger) annotation (Line(points={{58,34},{40,34},{40, -60},{-120,-60}}, color={255,0,255})); - connect(timOffRec.trigger, trigger) annotation (Line(points={{58,-46},{52,-46}, - {52,-60},{-120,-60}}, color={255,0,255})); + connect(timOffRec.trigger, trigger) annotation (Line(points={{58,-46},{40,-46}, + {40,-60},{-120,-60}}, color={255,0,255})); annotation ( defaultComponentName = "onOffPer", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/SamplerWithResetThreshold.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/SamplerWithResetThreshold.mo index cc7ed58cde0..0500f8060f7 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/SamplerWithResetThreshold.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/SamplerWithResetThreshold.mo @@ -7,63 +7,70 @@ block SamplerWithResetThreshold "The value of y when the reset occurs"; Buildings.Controls.OBC.CDL.Interfaces.RealInput u "Input real signal" - annotation (Placement(transformation(extent={{-140,40},{-100,80}}), + annotation (Placement(transformation(extent={{-140,-10},{-100,30}}), iconTransformation(extent={{-140,40},{-100,80}}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanInput trigger "Resets the output when trigger becomes true" - annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), + annotation (Placement(transformation(extent={{-140,-100},{-100,-60}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput y "Sampling output" - annotation (Placement(transformation(extent={{100,-20},{140,20}}))); + annotation (Placement(transformation(extent={{100,30},{140,70}}), + iconTransformation(extent={{100,-20},{140,20}}))); protected Buildings.Controls.OBC.CDL.Reals.Sources.Constant thr(final k=lowLim) "Threshold" - annotation (Placement(transformation(origin = {0, 42}, extent = {{-80, -10}, {-60, 10}}))); - Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler yRec(final y_start=y_reset) + annotation (Placement(transformation(extent={{-80,-38},{-60,-18}}))); + Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler yRec( + final y_start=y_reset) "Record the input when sampling is triggered" - annotation (Placement(transformation(extent={{60,10},{80,-10}}))); - Buildings.Controls.OBC.CDL.Reals.Sources.Constant reset(final k=y_reset) + annotation (Placement(transformation(extent={{60,40},{80,60}}))); + Buildings.Controls.OBC.CDL.Reals.Sources.Constant reset( + final k=y_reset) "Reset value" - annotation (Placement(transformation(origin = {0, 72}, extent = {{-80, -90}, {-60, -70}}))); + annotation (Placement(transformation(origin={0,148}, extent={{-80,-90},{-60,-70}}))); Buildings.Controls.OBC.CDL.Logical.Or samTri "Sampling trigger" - annotation (Placement(transformation(extent={{40,40},{60,60}}))); - Buildings.Controls.OBC.CDL.Reals.Greater gre(final h=0) + annotation (Placement(transformation(extent={{40,-30},{60,-10}}))); + Buildings.Controls.OBC.CDL.Reals.Greater gre( + final h=0) "Check if the input signal is larger than the threshold" - annotation (Placement(transformation(origin = {0, 20}, extent = {{-32, 20}, {-12, 40}}))); + annotation (Placement(transformation(origin={-8,-50}, extent={{-32,20},{-12,40}}))); Buildings.Controls.OBC.CDL.Reals.Switch swi "Switch between sampling the input signal and the reset value" - annotation (Placement(transformation(extent={{-16,10},{4,-10}}))); - Buildings.Controls.OBC.CDL.Logical.Edge edgRes(final pre_u_start=false) + annotation (Placement(transformation(extent={{0,40},{20,60}}))); + Buildings.Controls.OBC.CDL.Logical.Edge edgRes( + final pre_u_start=false) "Detect if the reset is triggered" - annotation (Placement(transformation(origin = {0, -20}, extent = {{-80, -50}, {-60, -30}}))); - Buildings.Controls.OBC.CDL.Logical.Edge edgThr(final pre_u_start=false) + annotation (Placement(transformation(origin={0,-40}, extent={{-80,-50},{-60,-30}}))); + Buildings.Controls.OBC.CDL.Logical.Edge edgThr( + final pre_u_start=false) "Detect if the threshold is exceeded" - annotation (Placement(transformation(extent={{0,40},{20,60}}))); + annotation (Placement(transformation(extent={{0,-30},{20,-10}}))); equation - connect(yRec.y, y) annotation (Line(points={{82,0},{106,0},{106,0},{120,0}}, - color={0,0,127})); - connect(thr.y, gre.u2) annotation (Line(points={{-58, 42},{-34, - 42}}, color={0,0,127})); - connect(gre.u1, u) annotation (Line(points={{-34,50},{-46,50},{-46,60},{-120, - 60}}, color={0,0,127})); + connect(yRec.y, y) annotation (Line(points={{82,50},{120,50}}, + color={0,0,127})); + connect(thr.y, gre.u2) annotation (Line(points={{-58,-28},{-42,-28}}, + color={0,0,127})); + connect(gre.u1, u) annotation (Line(points={{-42,-20},{-50,-20},{-50,10},{-120, + 10}}, color={0,0,127})); connect(yRec.u, swi.y) - annotation (Line(points={{58,0},{6,0}}, color={0,0,127})); - connect(edgRes.u, trigger) annotation (Line(points={{-82, -60},{-120,-60}}, color={255,0,255})); - connect(edgRes.y, swi.u2) annotation (Line(points={{-58,-60},{-32,-60},{-32,0}, - {-18,0}}, color={255,0,255})); + annotation (Line(points={{58,50},{22,50}}, color={0,0,127})); + connect(edgRes.u, trigger) annotation (Line(points={{-82,-80},{-120,-80}}, color={255,0,255})); + connect(edgRes.y, swi.u2) annotation (Line(points={{-58,-80},{-10,-80},{-10,50}, + {-2,50}}, color={255,0,255})); connect(swi.u3, u) - annotation (Line(points={{-18,8},{-46,8},{-46,60},{-120,60}}, + annotation (Line(points={{-2,42},{-50,42},{-50,10},{-120,10}}, color={0,0,127})); - connect(swi.u1, reset.y) annotation (Line(points={{-18,-8},{-58, -8}}, color={0,0,127})); - connect(samTri.u2, edgRes.y) annotation (Line(points={{38,42},{30,42},{30,-60}, - {-58,-60}}, color={255,0,255})); + connect(swi.u1, reset.y) annotation (Line(points={{-2,58},{-40,58},{-40,68},{-58, + 68}}, color={0,0,127})); + connect(samTri.u2, edgRes.y) annotation (Line(points={{38,-28},{30,-28},{30,-80}, + {-58,-80}}, color={255,0,255})); connect(samTri.y, yRec.trigger) - annotation (Line(points={{62,50},{70,50},{70,12}}, color={255,0,255})); + annotation (Line(points={{62,-20},{70,-20},{70,38}}, color={255,0,255})); connect(edgThr.y, samTri.u1) - annotation (Line(points={{22,50},{38,50}}, color={255,0,255})); - connect(edgThr.u, gre.y) annotation (Line(points={{-2,50},{-10, 50}}, color={255,0,255})); + annotation (Line(points={{22,-20},{38,-20}}, color={255,0,255})); + connect(edgThr.u, gre.y) annotation (Line(points={{-2,-20},{-18,-20}},color={255,0,255})); annotation ( defaultComponentName = "samResThr", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ @@ -89,4 +96,4 @@ This block samples the input real signal u when u is l On the other hand, when the input boolean signal trigger becomes true, the output y is reset to a default value.

                                                ")); -end SamplerWithResetThreshold; \ No newline at end of file +end SamplerWithResetThreshold; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo index 029e0622c1d..1e7bdac79ab 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo @@ -39,53 +39,57 @@ block ResponseProcess annotation (Placement(transformation(extent={{100,-100},{140,-60}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput tau "Normalized time delay" - annotation (Placement(transformation(extent={{100,-10},{140,30}}), + annotation (Placement(transformation(extent={{100,-20},{140,20}}), iconTransformation(extent={{100,-20},{140,20}}))); protected Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.OnOffPeriod onOffPer "Block that calculates the length of the on period and the off period" - annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); + annotation (Placement(transformation(extent={{-80,-10},{-60,10}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.HalfPeriodRatio halPerRatio "Block that calculates the half period ratio" - annotation (Placement(transformation(extent={{0,0},{20,20}}))); + annotation (Placement(transformation(extent={{20,-10},{40,10}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.NormalizedTimeDelay norTimDel( final gamma=max(yHig, yLow)/min(yLow, yHig)) "Block that calculates the normalized time delay" - annotation (Placement(transformation(extent={{40,0},{60,20}}))); + annotation (Placement(transformation(extent={{60,-10},{80,10}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.TuningMonitor tunMon "Block that detects when the tuning period starts and ends" - annotation (Placement(transformation(extent={{-40,-40},{-20,-20}}))); + annotation (Placement(transformation(extent={{-20,-50},{0,-30}}))); equation - connect(onOffPer.on,on) annotation (Line(points={{-82,10},{-96,10},{-96,0},{-120, - 0}}, color={255,0,255})); - connect(onOffPer.tim, tim) annotation (Line(points={{-82,16},{-90,16},{-90,60}, + connect(onOffPer.on,on) annotation (Line(points={{-82,0},{-120,0}}, + color={255,0,255})); + connect(onOffPer.tim, tim) annotation (Line(points={{-82,6},{-90,6},{-90,60}, {-120,60}}, color={0,0,127})); - connect(onOffPer.tOn, halPerRatio.tOn) annotation (Line(points={{-58,14},{-40, - 14},{-40,16},{-2,16}}, color={0,0,127})); - connect(onOffPer.tOff, halPerRatio.tOff) annotation (Line(points={{-58,6},{-30, - 6},{-30,4},{-2,4}}, color={0,0,127})); - connect(halPerRatio.rho, norTimDel.rho) annotation (Line(points={{22,10},{38,10}}, + connect(onOffPer.tOn, halPerRatio.tOn) annotation (Line(points={{-58,4},{-30, + 4},{-30,6},{18,6}}, color={0,0,127})); + connect(onOffPer.tOff, halPerRatio.tOff) annotation (Line(points={{-58,-4},{ + -40,-4},{-40,-6},{18,-6}}, + color={0,0,127})); + connect(halPerRatio.rho, norTimDel.rho) annotation (Line(points={{42,0},{58,0}}, color={0,0,127})); - connect(tOn, halPerRatio.tOn) annotation (Line(points={{120,80},{-40,80},{-40, - 16},{-2,16}}, color={0,0,127})); - connect(tOff, halPerRatio.tOff) annotation (Line(points={{120,40},{-30,40},{-30, - 4},{-2,4}}, color={0,0,127})); - connect(norTimDel.tau, tau) annotation (Line(points={{62,10},{120,10}}, + connect(tOn, halPerRatio.tOn) annotation (Line(points={{120,80},{-30,80},{-30, + 6},{18,6}}, color={0,0,127})); + connect(tOff, halPerRatio.tOff) annotation (Line(points={{120,40},{-40,40},{ + -40,-6},{18,-6}}, + color={0,0,127})); + connect(norTimDel.tau, tau) annotation (Line(points={{82,0},{120,0}}, color={0,0,127})); - connect(tunMon.triSta, triSta) annotation (Line(points={{-18,-24},{80,-24},{80, + connect(tunMon.triSta, triSta) annotation (Line(points={{2,-34},{80,-34},{80, -40},{120,-40}}, color={255,0,255})); - connect(tunMon.triEnd, triEnd) annotation (Line(points={{-18,-36},{60,-36},{60, + connect(tunMon.triEnd, triEnd) annotation (Line(points={{2,-46},{60,-46},{60, -80},{120,-80}}, color={255,0,255})); - connect(tunMon.tOn, onOffPer.tOn) annotation (Line(points={{-42,-24},{-52,-24}, - {-52,14},{-58,14}}, color={0,0,127})); - connect(tunMon.tOff, onOffPer.tOff) annotation (Line(points={{-42,-36},{-56,-36}, - {-56,6},{-58,6}}, color={0,0,127})); - connect(halPerRatio.TunEnd, tunMon.triEnd) annotation (Line(points={{-2,10},{-10, - 10},{-10,-36},{-18,-36}}, color={255,0,255})); - connect(onOffPer.trigger, trigger) annotation (Line(points={{-82,4},{-90,4},{-90, - -60},{-120,-60}}, color={255,0,255})); + connect(tunMon.tOn, onOffPer.tOn) annotation (Line(points={{-22,-34},{-30,-34}, + {-30,4},{-58,4}}, color={0,0,127})); + connect(tunMon.tOff, onOffPer.tOff) annotation (Line(points={{-22,-46},{-40, + -46},{-40,-4},{-58,-4}}, + color={0,0,127})); + connect(halPerRatio.TunEnd, tunMon.triEnd) annotation (Line(points={{18,0},{ + 10,0},{10,-46},{2,-46}}, color={255,0,255})); + connect(onOffPer.trigger, trigger) annotation (Line(points={{-82,-6},{-90,-6}, + {-90,-60},{-120,-60}}, + color={255,0,255})); annotation ( defaultComponentName = "resPro", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/TimeConstantDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/TimeConstantDelay.mo index 657baa73673..e59c4e412f7 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/TimeConstantDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/TimeConstantDelay.mo @@ -12,126 +12,131 @@ block TimeConstantDelay final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Length for the on period" - annotation (Placement(transformation(extent={{-140,56},{-100,96}}), - iconTransformation(extent={{-140,40},{-100,80}}))); + annotation (Placement(transformation(extent={{-220,90},{-180,130}}), + iconTransformation(extent={{-140,40},{-100,80}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput k "Gain" - annotation (Placement(transformation(extent={{-140,-20},{-100,20}}), + annotation (Placement(transformation(extent={{-220,-20},{-180,20}}), iconTransformation(extent={{-140,-20},{-100,20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput rat "Ratio between the time constant and the time delay" - annotation (Placement(transformation(extent={{-140,-70},{-100,-30}}), + annotation (Placement(transformation(extent={{-220,-90},{-180,-50}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput T( final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Time constant" - annotation (Placement(transformation(extent={{100,50},{140,90}}), + annotation (Placement(transformation(extent={{180,80},{220,120}}), iconTransformation(extent={{100,40},{140,80}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput L( final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Time delay" - annotation (Placement(transformation(extent={{100,-80},{140,-40}}), + annotation (Placement(transformation(extent={{180,-80},{220,-40}}), iconTransformation(extent={{100,-80},{140,-40}}))); + protected Buildings.Controls.OBC.CDL.Reals.Abs absk "Absoulte value of the gain" - annotation (Placement(transformation(extent={{-80,-10},{-60,10}}))); + annotation (Placement(transformation(extent={{-160,-10},{-140,10}}))); Buildings.Controls.OBC.CDL.Reals.Exp exp "Exponential value of the ratio between time constant and the time delay" - annotation (Placement(transformation(extent={{-80,-60},{-60,-40}}))); - Buildings.Controls.OBC.CDL.Reals.Sources.Constant yHigSig(k=yHig) + annotation (Placement(transformation(extent={{-160,-80},{-140,-60}}))); + Buildings.Controls.OBC.CDL.Reals.Sources.Constant yHigSig( + final k=yHig) "Higher value for the output" - annotation (Placement(transformation(extent={{-80,30},{-60,50}}))); - Buildings.Controls.OBC.CDL.Reals.Sources.Constant yLowSig(k=yLow) + annotation (Placement(transformation(extent={{-160,50},{-140,70}}))); + Buildings.Controls.OBC.CDL.Reals.Sources.Constant yLowSig( + final k=yLow) "Lower value for the output" - annotation (Placement(transformation(extent={{-40,30},{-20,50}}))); - Buildings.Controls.OBC.CDL.Reals.Sources.Constant relDeaBan(k=deaBan) + annotation (Placement(transformation(extent={{-100,50},{-80,70}}))); + Buildings.Controls.OBC.CDL.Reals.Sources.Constant relDeaBan( + final k=deaBan) "Dead band of the relay controller" - annotation (Placement(transformation(extent={{0,30},{20,50}}))); + annotation (Placement(transformation(extent={{-100,-10},{-80,10}}))); Buildings.Controls.OBC.CDL.Reals.Add add1 "Sum of the inputs" - annotation (Placement(transformation(extent={{60,-40},{80,-20}}))); + annotation (Placement(transformation(extent={{80,-30},{100,-10}}))); Buildings.Controls.OBC.CDL.Reals.Add add2 "Sum of the higher value for the output and the lower value for the output" - annotation (Placement(transformation(extent={{34,0},{54,20}}))); + annotation (Placement(transformation(extent={{-60,20},{-40,40}}))); Buildings.Controls.OBC.CDL.Reals.Divide div1 "Quotient of dead band divided by the absolute value of the gain" - annotation (Placement(transformation(extent={{0,-30},{20,-10}}))); + annotation (Placement(transformation(extent={{-20,-30},{0,-10}}))); Buildings.Controls.OBC.CDL.Reals.Divide div2 "Blocks that calculates input 1 by input 2" - annotation (Placement(transformation(extent={{60,-80},{80,-60}}))); + annotation (Placement(transformation(extent={{120,-80},{140,-60}}))); Buildings.Controls.OBC.CDL.Reals.Divide div3 "Blocks that calculates the time constant" - annotation (Placement(transformation(extent={{-40,60},{-20,80}}))); + annotation (Placement(transformation(extent={{40,90},{60,110}}))); Buildings.Controls.OBC.CDL.Reals.Multiply mul1 "Product of the two inputs" - annotation (Placement(transformation(extent={{60,30},{80,50}}))); + annotation (Placement(transformation(extent={{40,40},{60,60}}))); Buildings.Controls.OBC.CDL.Reals.Multiply mul2 "Blocks that calculates time delay" - annotation (Placement(transformation(extent={{0,74},{20,94}}))); + annotation (Placement(transformation(extent={{100,110},{120,130}}))); Buildings.Controls.OBC.CDL.Reals.Subtract sub1 "Blocks that calculates the difference of the two inputs" - annotation (Placement(transformation(extent={{20,-80},{40,-60}}))); + annotation (Placement(transformation(extent={{40,-100},{60,-80}}))); Buildings.Controls.OBC.CDL.Reals.Subtract sub2 "Blocks that calculates the difference of the two inputs" - annotation (Placement(transformation(extent={{30,-50},{50,-30}}))); + annotation (Placement(transformation(extent={{40,-50},{60,-30}}))); Buildings.Controls.OBC.CDL.Reals.Log log "Natural logarithm of the input" - annotation (Placement(transformation(extent={{-20,-100},{-40,-80}}))); + annotation (Placement(transformation(extent={{-40,-120},{-20,-100}}))); equation connect(absk.u, k) - annotation (Line(points={{-82,0},{-120,0}}, color={0,0,127})); + annotation (Line(points={{-162,0},{-200,0}},color={0,0,127})); connect(rat, exp.u) - annotation (Line(points={{-120,-50},{-82,-50}}, color={0,0,127})); - connect(relDeaBan.y, div1.u1) annotation (Line(points={{22,40},{28,40},{28,0}, - {-4,0},{-4,-14},{-2,-14}}, color={0,0,127})); - connect(sub2.u1, div1.y) annotation (Line(points={{28,-34},{26,-34},{26,-20},{ - 22,-20}}, color={0,0,127})); - connect(sub2.u2, yLowSig.y) annotation (Line(points={{28,-46},{-12,-46},{-12,40}, - {-18,40}}, color={0,0,127})); - connect(yHigSig.y, add2.u1) annotation (Line(points={{-58,40},{-52,40},{-52,16}, - {32,16}}, color={0,0,127})); - connect(add2.u2, yLowSig.y) annotation (Line(points={{32,4},{-12,4},{-12,40},{ - -18,40}}, color={0,0,127})); - connect(add2.y, mul1.u2) annotation (Line(points={{56,10},{72,10},{72,24},{54, - 24},{54,34},{58,34}}, color={0,0,127})); - connect(exp.y, mul1.u1) annotation (Line(points={{-58,-50},{-8,-50},{-8,60},{ - 52,60},{52,46},{58,46}}, color={0,0,127})); - connect(sub2.y, add1.u2) annotation (Line(points={{52,-40},{54,-40},{54,-36},{ - 58,-36}}, color={0,0,127})); - connect(add1.u1, mul1.y) annotation (Line(points={{58,-24},{52,-24},{52,-6},{86, - -6},{86,40},{82,40}}, color={0,0,127})); - connect(sub1.y, div2.u2) annotation (Line(points={{42,-70},{48,-70},{48,-76}, - {58,-76}}, color={0,0,127})); - connect(div2.u1, add1.y) annotation (Line(points={{58,-64},{54,-64},{54,-48}, - {84,-48},{84,-30},{82,-30}},color={0,0,127})); - connect(tOn, div3.u1) annotation (Line(points={{-120,76},{-42,76}}, + annotation (Line(points={{-200,-70},{-162,-70}},color={0,0,127})); + connect(relDeaBan.y, div1.u1) annotation (Line(points={{-78,0},{-40,0},{-40,-14}, + {-22,-14}}, color={0,0,127})); + connect(sub2.u1, div1.y) annotation (Line(points={{38,-34},{10,-34},{10,-20},{ + 2,-20}}, color={0,0,127})); + connect(sub2.u2, yLowSig.y) annotation (Line(points={{38,-46},{-70,-46},{-70,60}, + {-78,60}}, color={0,0,127})); + connect(yHigSig.y, add2.u1) annotation (Line(points={{-138,60},{-130,60},{-130, + 36},{-62,36}}, color={0,0,127})); + connect(add2.u2, yLowSig.y) annotation (Line(points={{-62,24},{-70,24},{-70,60}, + {-78,60}},color={0,0,127})); + connect(add2.y, mul1.u2) annotation (Line(points={{-38,30},{0,30},{0,44},{38,44}}, color={0,0,127})); - connect(div3.u2, log.y) annotation (Line(points={{-42,64},{-46,64},{-46,-90},{ - -42,-90}}, color={0,0,127})); - connect(div3.y, T) annotation (Line(points={{-18,70},{120,70}}, - color={0,0,127})); - connect(mul2.u2, T) annotation (Line(points={{-2,78},{-10,78},{-10,70},{120, - 70}}, color={0,0,127})); - connect(mul2.u1, exp.u) annotation (Line(points={{-2,90},{-90,90},{-90,-50},{-82, - -50}}, color={0,0,127})); - connect(mul2.y, L) annotation (Line(points={{22,84},{92,84},{92,-60},{120,-60}}, + connect(exp.y, mul1.u1) annotation (Line(points={{-138,-70},{-30,-70},{-30,56}, + {38,56}}, color={0,0,127})); + connect(sub2.y, add1.u2) annotation (Line(points={{62,-40},{70,-40},{70,-26},{ + 78,-26}}, color={0,0,127})); + connect(add1.u1, mul1.y) annotation (Line(points={{78,-14},{70,-14},{70,50},{62, + 50}}, color={0,0,127})); + connect(sub1.y, div2.u2) annotation (Line(points={{62,-90},{80,-90},{80,-76},{ + 118,-76}}, color={0,0,127})); + connect(div2.u1, add1.y) annotation (Line(points={{118,-64},{110,-64},{110,-20}, + {102,-20}}, color={0,0,127})); + connect(tOn, div3.u1) annotation (Line(points={{-200,110},{-140,110},{-140,106}, + {38,106}}, color={0,0,127})); + connect(div3.y, T) annotation (Line(points={{62,100},{200,100}}, color={0,0,127})); - connect(sub1.u2, div1.y) annotation (Line(points={{18,-76},{10,-76},{10,-34}, - {26,-34},{26,-20},{22,-20}},color={0,0,127})); - connect(log.u, div2.y) annotation (Line(points={{-18,-90},{86,-90},{86,-70},{ - 82,-70}}, color={0,0,127})); - connect(absk.y, div1.u2) annotation (Line(points={{-58,0},{-20,0},{-20,-26},{ - -2,-26}}, color={0,0,127})); - connect(yHigSig.y, sub1.u1) annotation (Line(points={{-58,40},{-52,40},{-52, - -64},{18,-64}}, color={0,0,127})); + connect(mul2.u2, T) annotation (Line(points={{98,114},{80,114},{80,100},{200,100}}, + color={0,0,127})); + connect(mul2.u1, exp.u) annotation (Line(points={{98,126},{-170,126},{-170,-70}, + {-162,-70}}, color={0,0,127})); + connect(mul2.y, L) annotation (Line(points={{122,120},{160,120},{160,-60},{200, + -60}}, color={0,0,127})); + connect(sub1.u2, div1.y) annotation (Line(points={{38,-96},{10,-96},{10,-20},{ + 2,-20}}, color={0,0,127})); + connect(absk.y, div1.u2) annotation (Line(points={{-138,0},{-110,0},{-110,-26}, + {-22,-26}},color={0,0,127})); + connect(yHigSig.y, sub1.u1) annotation (Line(points={{-138,60},{-130,60},{-130, + -84},{38,-84}}, color={0,0,127})); + connect(log.y, div3.u2) annotation (Line(points={{-18,-110},{20,-110},{20,94}, + {38,94}}, color={0,0,127})); + connect(div2.y, log.u) annotation (Line(points={{142,-70},{160,-70},{160,-130}, + {-60,-130},{-60,-110},{-42,-110}}, color={0,0,127})); annotation ( defaultComponentName = "timConDel", - Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{100,100}}), + graphics={ Rectangle( extent={{-100,-100},{100,100}}, lineColor={0,0,127}, @@ -140,7 +145,8 @@ equation Text( extent={{-100,140},{100,100}}, textString="%name", - textColor={0,0,255})}), Diagram(coordinateSystem(preserveAspectRatio=false)), + textColor={0,0,255})}), Diagram(coordinateSystem(preserveAspectRatio=false, extent={ + {-180,-140},{180,140}})), Documentation(revisions="
                                                • diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo index b4c1497b8ae..64b079aba70 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo @@ -12,159 +12,158 @@ block ControlProcessModel final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Length for the on period" - annotation (Placement(transformation(extent={{-140,20},{-100,60}}), + annotation (Placement(transformation(extent={{-200,20},{-160,60}}), iconTransformation(extent={{-140,20},{-100,60}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput tOff( final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Length for the off period" - annotation (Placement(transformation(extent={{-140,-40},{-100,0}}), + annotation (Placement(transformation(extent={{-200,-40},{-160,0}}), iconTransformation(extent={{-140,-60},{-100,-20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput tau( final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Normalized time delay" - annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), + annotation (Placement(transformation(extent={{-200,-80},{-160,-40}}), iconTransformation(extent={{-140,-100},{-100,-60}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput u "Output of a relay controller" - annotation (Placement(transformation(extent={{-140,60},{-100,100}}), + annotation (Placement(transformation(extent={{-200,60},{-160,100}}), iconTransformation(extent={{-140,60},{-100,100}}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanInput triSta "Relay tuning status, true if the tuning starts" annotation (Placement(transformation(extent={{-20,-20},{20,20}}, - rotation=90, origin={-74,-120}), iconTransformation( + rotation=90, origin={-110,-120}),iconTransformation( extent={{-20,-20},{20,20}}, rotation=90, origin={-60,-120}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanInput triEnd "Relay tuning status, true if the tuning ends" annotation (Placement(transformation(extent={{-20,-20},{20,20}}, - rotation=90, origin={80,-120}), iconTransformation( + rotation=90, origin={130,-120}),iconTransformation( extent={{-20,-20},{20,20}}, rotation=90, origin={60,-120}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput k "Gain" - annotation (Placement(transformation(extent={{100,50},{140,90}}), + annotation (Placement(transformation(extent={{160,50},{200,90}}), iconTransformation(extent={{100,40},{140,80}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput T( final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Time constant" - annotation (Placement(transformation(extent={{100,0},{140,40}}), + annotation (Placement(transformation(extent={{160,0},{200,40}}), iconTransformation(extent={{100,-20},{140,20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput L( final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Time delay" - annotation (Placement(transformation(extent={{100,-80},{140,-40}}), + annotation (Placement(transformation(extent={{160,-80},{200,-40}}), iconTransformation(extent={{100,-80},{140,-40}}))); protected Buildings.Controls.OBC.CDL.Reals.AddParameter addPar( final p=1) "Block that calculates the difference between 1 and the normalized time delay" - annotation (Placement(transformation(extent={{-8,-70},{12,-50}}))); + annotation (Placement(transformation(extent={{-40,-70},{-20,-50}}))); Buildings.Controls.OBC.CDL.Reals.Divide div "The output of samtau divided by that of addPar" - annotation (Placement(transformation(extent={{12,-30},{32,-10}}))); + annotation (Placement(transformation(extent={{20,-30},{40,-10}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.BaseClasses.Gain gain( final yHig=yHig, final yLow=yLow) "Block that calculates the gain" - annotation (Placement(transformation(extent={{-84,10},{-64,30}}))); + annotation (Placement(transformation(extent={{-120,10},{-100,30}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.BaseClasses.TimeConstantDelay timConDel( final yHig=yHig, final yLow=yLow, deaBan=deaBan) "Block that calculate the time constant and the time delay" - annotation (Placement(transformation(extent={{0,10},{20,30}}))); + annotation (Placement(transformation(extent={{60,10},{80,30}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samk( final y_start=1) "Block that samples the gain when the tuning period ends" - annotation (Placement(transformation(extent={{-54,10},{-34,30}}))); + annotation (Placement(transformation(extent={{-60,10},{-40,30}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samL( final y_start=1) "Block that samples the time delay when the tuning period ends" - annotation (Placement(transformation(extent={{50,-70},{70,-50}}))); + annotation (Placement(transformation(extent={{100,-70},{120,-50}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samtOn( final y_start=1) "Block that samples the length of the on period when the tuning period ends" - annotation (Placement(transformation(extent={{-70,50},{-50,70}}))); + annotation (Placement(transformation(extent={{-20,50},{0,70}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samT( final y_start=1) "Block that samples the time constant when the tuning period ends" - annotation (Placement(transformation(extent={{70,10},{90,30}}))); + annotation (Placement(transformation(extent={{120,10},{140,30}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samtau( final y_start=0.5) "Block that samples the normalized time delay when the tuning period ends" - annotation (Placement(transformation(extent={{-70,-70},{-50,-50}}))); + annotation (Placement(transformation(extent={{-140,-70},{-120,-50}}))); Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter gai( final k=-1) "Product of the normalized time delay and -1" - annotation (Placement(transformation(extent={{-36,-70},{-16,-50}}))); + annotation (Placement(transformation(extent={{-80,-70},{-60,-50}}))); equation - connect(gain.u, u) annotation (Line(points={{-86,28},{-88,28},{-88,80},{-120, + connect(gain.u, u) annotation (Line(points={{-122,28},{-140,28},{-140,80},{-180, 80}}, color={0,0,127})); - connect(gain.tOn, tOn) annotation (Line(points={{-86,20},{-94,20},{-94,40},{ - -120,40}}, color={0,0,127})); - connect(gain.tOff, tOff) annotation (Line(points={{-86,12},{-94,12},{-94,-20}, - {-120,-20}}, color={0,0,127})); - connect(gain.triSta, triSta) annotation (Line(points={{-74,8},{-74,-120}}, + connect(gain.tOn, tOn) annotation (Line(points={{-122,20},{-150,20},{-150,40}, + {-180,40}},color={0,0,127})); + connect(gain.tOff, tOff) annotation (Line(points={{-122,12},{-150,12},{-150,-20}, + {-180,-20}}, color={0,0,127})); + connect(gain.triSta, triSta) annotation (Line(points={{-110,8},{-110,-120}}, color={255,0,255})); connect(timConDel.T, samT.u) - annotation (Line(points={{22,26},{60,26},{60,20},{68,20}}, - color={0,0,127})); + annotation (Line(points={{82,26},{100,26},{100,20},{118,20}}, color={0,0,127})); connect(samT.y, T) - annotation (Line(points={{92,20},{120,20}}, - color={0,0,127})); - connect(samT.trigger, triEnd) annotation (Line(points={{80,8},{80,-120}}, + annotation (Line(points={{142,20},{180,20}}, color={0,0,127})); + connect(samT.trigger, triEnd) annotation (Line(points={{130,8},{130,-120}}, color={255,0,255})); connect(L, samL.y) - annotation (Line(points={{120,-60},{72,-60}}, color={0,0,127})); - connect(samL.u, timConDel.L) annotation (Line(points={{48,-60},{44,-60},{44,14}, - {22,14}}, color={0,0,127})); - connect(samL.trigger, triEnd) annotation (Line(points={{60,-72},{60,-90},{80, - -90},{80,-120}},color={255,0,255})); + annotation (Line(points={{180,-60},{122,-60}},color={0,0,127})); + connect(samL.u, timConDel.L) annotation (Line(points={{98,-60},{90,-60},{90,14}, + {82,14}}, color={0,0,127})); + connect(samL.trigger, triEnd) annotation (Line(points={{110,-72},{110,-90},{130, + -90},{130,-120}}, color={255,0,255})); connect(samk.y, timConDel.k) - annotation (Line(points={{-32,20},{-2,20}}, + annotation (Line(points={{-38,20},{58,20}}, color={0,0,127})); - connect(samk.trigger, triEnd) annotation (Line(points={{-44,8},{-44,-90},{80, - -90},{80,-120}}, color={255,0,255})); - connect(samk.y, k) annotation (Line(points={{-32,20},{-20,20},{-20,70},{120, - 70}}, color={0,0,127})); - connect(timConDel.tOn, samtOn.y) annotation (Line(points={{-2,26},{-28,26},{ - -28,60},{-48,60}},color={0,0,127})); + connect(samk.trigger, triEnd) annotation (Line(points={{-50,8},{-50,-90},{130, + -90},{130,-120}},color={255,0,255})); + connect(samk.y, k) annotation (Line(points={{-38,20},{40,20},{40,70},{180,70}}, + color={0,0,127})); + connect(timConDel.tOn, samtOn.y) annotation (Line(points={{58,26},{20,26},{20, + 60},{2,60}}, color={0,0,127})); connect(samtOn.u, tOn) - annotation (Line(points={{-72,60},{-94,60},{-94,40},{-120,40}}, + annotation (Line(points={{-22,60},{-150,60},{-150,40},{-180,40}}, color={0,0,127})); - connect(samtOn.trigger, triEnd) annotation (Line(points={{-60,48},{-60,-20},{ - -44,-20},{-44,-90},{80,-90},{80,-120}}, color={255,0,255})); + connect(samtOn.trigger, triEnd) annotation (Line(points={{-10,48},{-10,-90},{130, + -90},{130,-120}}, color={255,0,255})); connect(gai.y, addPar.u) - annotation (Line(points={{-14,-60},{-10,-60}}, color={0,0,127})); + annotation (Line(points={{-58,-60},{-42,-60}}, color={0,0,127})); connect(tau, samtau.u) - annotation (Line(points={{-120,-60},{-72,-60}}, color={0,0,127})); + annotation (Line(points={{-180,-60},{-142,-60}},color={0,0,127})); connect(samtau.y, gai.u) - annotation (Line(points={{-48,-60},{-38,-60}}, color={0,0,127})); - connect(samtau.y, div.u1) annotation (Line(points={{-48,-60},{-40,-60},{-40, - -14},{10,-14}}, color={0,0,127})); - connect(triEnd, samtau.trigger) annotation (Line(points={{80,-120},{80,-90},{ - -60,-90},{-60,-72}}, color={255,0,255})); - connect(addPar.y, div.u2) annotation (Line(points={{14,-60},{20,-60},{20,-40}, - {6,-40},{6,-26},{10,-26}}, color={0,0,127})); - connect(div.y, timConDel.rat) annotation (Line(points={{34,-20},{36,-20},{36, - 0},{-12,0},{-12,14},{-2,14}}, color={0,0,127})); + annotation (Line(points={{-118,-60},{-82,-60}},color={0,0,127})); + connect(samtau.y, div.u1) annotation (Line(points={{-118,-60},{-100,-60},{-100, + -14},{18,-14}}, color={0,0,127})); + connect(triEnd, samtau.trigger) annotation (Line(points={{130,-120},{130,-90}, + {-130,-90},{-130,-72}}, color={255,0,255})); + connect(addPar.y, div.u2) annotation (Line(points={{-18,-60},{0,-60},{0,-26},{ + 18,-26}}, color={0,0,127})); + connect(div.y, timConDel.rat) annotation (Line(points={{42,-20},{50,-20},{50,14}, + {58,14}}, color={0,0,127})); connect(gain.k, samk.u) - annotation (Line(points={{-62,20},{-56,20}}, color={0,0,127})); + annotation (Line(points={{-98,20},{-62,20}}, color={0,0,127})); annotation ( defaultComponentName = "conProMod", - Icon(coordinateSystem(preserveAspectRatio=false), graphics={ + Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{100, + 100}}), graphics={ Rectangle( extent={{-100,-100},{100,100}}, lineColor={0,0,127}, @@ -190,7 +189,7 @@ annotation ( 34}}, color={28,108,200}), Line(points={{-58,36},{82,36}}, color={28,108,200}, pattern=LinePattern.Dash)}), - Diagram(coordinateSystem(preserveAspectRatio=false)), + Diagram(coordinateSystem(preserveAspectRatio=false, extent={{-160,-100},{160,100}})), Documentation(revisions="
                                                  • diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo index 08a1f4072b8..3880c899f23 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo @@ -4,60 +4,60 @@ model ControlProcessModel Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.ControlProcessModel conProMod(yLow=0.1, deaBan=0.05) "Calculate the parameters of a first-order model" - annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); + annotation (Placement(transformation(extent={{40,-10},{60,10}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Pulse u( amplitude=0.5, width=0.125, period=0.8, offset=0.5) "The response of a relay controller" - annotation (Placement(transformation(extent={{-80,80},{-60,100}}))); + annotation (Placement(transformation(extent={{-40,70},{-20,90}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Pulse tOn( amplitude=-0.1, width=0.1, period=1, offset=0.1) "The length of the on period" - annotation (Placement(transformation(extent={{-80,42},{-60,62}}))); + annotation (Placement(transformation(extent={{-80,40},{-60,60}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Pulse tOff( amplitude=-0.7, width=0.8, period=1, offset=0.7) "The length of the off period" - annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); + annotation (Placement(transformation(extent={{-40,10},{-20,30}}))); Buildings.Controls.OBC.CDL.Logical.Sources.Pulse tunSta( width=0.9, period=1, shift=-0.9) "The signal for the tuning period starts" - annotation (Placement(transformation(extent={{-80,-60},{-60,-40}}))); + annotation (Placement(transformation(extent={{-40,-50},{-20,-30}}))); Buildings.Controls.OBC.CDL.Logical.Sources.Pulse tunEnd( width=0.1, period=1, shift=0.9) "The signal for the tuning period ends" - annotation (Placement(transformation(extent={{-80,-100},{-60,-80}}))); + annotation (Placement(transformation(extent={{-80,-80},{-60,-60}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Pulse ratioLT( amplitude=-0.1, width=0.4, period=0.8, offset=0.4) "Ratio between the time constant and the time delay" - annotation (Placement(transformation(extent={{-48,-40},{-28,-20}}))); + annotation (Placement(transformation(extent={{-80,-20},{-60,0}}))); equation connect(tunSta.y, conProMod.triSta) - annotation (Line(points={{-58,-50},{-6,-50},{-6,-12}}, color={255,0,255})); + annotation (Line(points={{-18,-40},{44,-40},{44,-12}}, color={255,0,255})); connect(conProMod.triEnd, tunEnd.y) - annotation (Line(points={{6,-12},{6,-90},{-58,-90}}, color={255,0,255})); - connect(u.y, conProMod.u) annotation (Line(points={{-58,90},{-20,90},{-20,8},{ - -12,8}}, color={0,0,127})); - connect(tOn.y, conProMod.tOn) annotation (Line(points={{-58,52},{-30,52},{-30, - 4},{-12,4}}, color={0,0,127})); - connect(conProMod.tOff, tOff.y) annotation (Line(points={{-12,-4},{-40,-4},{-40, - 10},{-58,10}}, color={0,0,127})); - connect(ratioLT.y, conProMod.tau) annotation (Line(points={{-26,-30},{-20,-30}, - {-20,-8},{-12,-8}}, color={0,0,127})); + annotation (Line(points={{56,-12},{56,-70},{-58,-70}}, color={255,0,255})); + connect(u.y, conProMod.u) annotation (Line(points={{-18,80},{20,80},{20,8},{38, + 8}}, color={0,0,127})); + connect(tOn.y, conProMod.tOn) annotation (Line(points={{-58,50},{10,50},{10,4}, + {38,4}}, color={0,0,127})); + connect(conProMod.tOff, tOff.y) annotation (Line(points={{38,-4},{0,-4},{0,20}, + {-18,20}}, color={0,0,127})); + connect(ratioLT.y, conProMod.tau) annotation (Line(points={{-58,-10},{-20,-10}, + {-20,-8},{38,-8}}, color={0,0,127})); annotation ( experiment( StopTime=1.0, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIDWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIDWithFirstOrderAMIGO.mo index a31dca991d5..20bb0651bfd 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIDWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIDWithFirstOrderAMIGO.mo @@ -20,28 +20,28 @@ model DirectActingPIDWithFirstOrderAMIGO annotation (Placement(transformation(extent={{-80,60},{-60,80}}))); Buildings.Controls.OBC.CDL.Discrete.UnitDelay uniDel2(samplePeriod=240) "A delay process for control process 2" - annotation (Placement(transformation(extent={{38,-30},{58,-10}}))); + annotation (Placement(transformation(extent={{60,-30},{80,-10}}))); Buildings.Controls.OBC.CDL.Discrete.UnitDelay uniDel1(samplePeriod=240) "A delay process for control process 1" - annotation (Placement(transformation(extent={{50,50},{70,70}}))); + annotation (Placement(transformation(extent={{60,50},{80,70}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant k(k=10) "Gain of the first order process" - annotation (Placement(transformation(extent={{32,10},{52,30}}))); + annotation (Placement(transformation(extent={{60,10},{80,30}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant T(k=10) "Time constant of the first order process" annotation (Placement(transformation(extent={{10,-66},{30,-46}}))); Buildings.Controls.OBC.CDL.Reals.Subtract sub1 "A subtract block that is used to mimic the first order process 1" - annotation (Placement(transformation(extent={{134,70},{154,90}}))); + annotation (Placement(transformation(extent={{160,70},{180,90}}))); Buildings.Controls.OBC.CDL.Reals.Subtract sub2 "A subtract block that is used to mimic the first order process 2" - annotation (Placement(transformation(extent={{134,-20},{154,0}}))); + annotation (Placement(transformation(extent={{160,-20},{180,0}}))); Buildings.Controls.OBC.CDL.Reals.Derivative derivative1 "A derivative block that is used to mimic the first order process 1" - annotation (Placement(transformation(extent={{94,10},{114,30}}))); + annotation (Placement(transformation(extent={{120,10},{140,30}}))); Buildings.Controls.OBC.CDL.Reals.Derivative derivative2 "A derivative block that is used to mimic the first order process 2" - annotation (Placement(transformation(extent={{80,-70},{100,-50}}))); + annotation (Placement(transformation(extent={{120,-70},{140,-50}}))); Buildings.Controls.OBC.CDL.Logical.Sources.Pulse autTunSig( width=0.9, period=6000, @@ -50,60 +50,60 @@ model DirectActingPIDWithFirstOrderAMIGO annotation (Placement(transformation(extent={{-80,-60},{-60,-40}}))); Buildings.Controls.OBC.CDL.Reals.Subtract sub3 "A subtract block that is used to mimic the direct-acting in the first order process 1" - annotation (Placement(transformation(extent={{14,50},{34,70}}))); + annotation (Placement(transformation(extent={{20,56},{40,76}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant const(k=1) "constant value 1" annotation (Placement(transformation(extent={{-40,110},{-20,130}}))); Buildings.Controls.OBC.CDL.Reals.Subtract sub4 "A subtract block that is used to mimic the direct-acting in the first order process 2" - annotation (Placement(transformation(extent={{12,-30},{32,-10}}))); + annotation (Placement(transformation(extent={{20,-24},{40,-4}}))); equation - connect(resSig.y, PID.trigger) annotation (Line(points={{-58,70},{-30,70},{-30, + connect(resSig.y, PID.trigger) annotation (Line(points={{-58,70},{-40,70},{-40, 40},{-16,40},{-16,48}}, color={255,0,255})); - connect(PIDWitTun.triRes, PID.trigger) annotation (Line(points={{-16,-32},{-16, - -38},{-30,-38},{-30,40},{-16,40},{-16,48}}, color={255,0,255})); - connect(PIDWitTun.u_s, PID.u_s) annotation (Line(points={{-22,-20},{-48,-20}, - {-48,60},{-22,60}}, color={0,0,127})); - connect(SetPoint.y, PID.u_s) annotation (Line(points={{-58,10},{-48,10},{-48,60}, + connect(SetPoint.y, PID.u_s) annotation (Line(points={{-58,10},{-50,10},{-50,60}, {-22,60}}, color={0,0,127})); - connect(uniDel1.y, sub1.u1) annotation (Line(points={{72,60},{86,60},{86,86}, - {132,86}}, color={0,0,127})); - connect(k.y, derivative1.k) annotation (Line(points={{54,20},{58,20},{58,28},{ - 92,28}}, color={0,0,127})); - connect(derivative1.T, T.y) annotation (Line(points={{92,24},{74,24},{74,-56}, + connect(uniDel1.y, sub1.u1) annotation (Line(points={{82,60},{100,60},{100,86}, + {158,86}}, color={0,0,127})); + connect(k.y, derivative1.k) annotation (Line(points={{82,20},{90,20},{90,28},{ + 118,28}}, color={0,0,127})); + connect(derivative1.T, T.y) annotation (Line(points={{118,24},{110,24},{110,-56}, {32,-56}}, color={0,0,127})); - connect(derivative1.y, sub1.u2) annotation (Line(points={{116,20},{126,20},{ - 126,74},{132,74}}, color={0,0,127})); - connect(sub1.y, PID.u_m) annotation (Line(points={{156,80},{164,80},{164,40}, - {-10,40},{-10,48}}, color={0,0,127})); - connect(sub2.u1, uniDel2.y) annotation (Line(points={{132,-4},{64,-4},{64,-20}, - {60,-20}}, color={0,0,127})); - connect(derivative2.y,sub2. u2) annotation (Line(points={{102,-60},{110,-60}, - {110,-16},{132,-16}},color={0,0,127})); - connect(sub2.y, PIDWitTun.u_m) annotation (Line(points={{156,-10},{156,-36},{ - -10,-36},{-10,-32}}, color={0,0,127})); - connect(derivative2.T, T.y) annotation (Line(points={{78,-56},{32,-56}}, + connect(derivative1.y, sub1.u2) annotation (Line(points={{142,20},{150,20},{150, + 74},{158,74}}, color={0,0,127})); + connect(sub1.y, PID.u_m) annotation (Line(points={{182,80},{190,80},{190,40},{ + -10,40},{-10,48}}, color={0,0,127})); + connect(sub2.u1, uniDel2.y) annotation (Line(points={{158,-4},{100,-4},{100,-20}, + {82,-20}}, color={0,0,127})); + connect(derivative2.y,sub2. u2) annotation (Line(points={{142,-60},{150,-60},{ + 150,-16},{158,-16}}, color={0,0,127})); + connect(sub2.y, PIDWitTun.u_m) annotation (Line(points={{182,-10},{190,-10},{190, + -40},{-10,-40},{-10,-32}}, color={0,0,127})); + connect(derivative2.T, T.y) annotation (Line(points={{118,-56},{32,-56}}, color={0,0,127})); - connect(derivative1.u, sub1.u1) annotation (Line(points={{92,20},{86,20},{86, - 86},{132,86}}, color={0,0,127})); - connect(derivative2.u, uniDel2.y) annotation (Line(points={{78,-60},{64,-60},{ - 64,-20},{60,-20}}, color={0,0,127})); + connect(derivative1.u, sub1.u1) annotation (Line(points={{118,20},{100,20},{100, + 86},{158,86}}, color={0,0,127})); + connect(derivative2.u, uniDel2.y) annotation (Line(points={{118,-60},{100,-60}, + {100,-20},{82,-20}}, color={0,0,127})); connect(autTunSig.y, PIDWitTun.triTun) annotation (Line(points={{-58,-50},{-4,-50},{-4,-32}}, color={255,0,255})); - connect(k.y, derivative2.k) annotation (Line(points={{54,20},{68,20},{68,-52}, - {78,-52}}, color={0,0,127})); - connect(const.y, sub3.u1) annotation (Line(points={{-18,120},{4,120},{4,66},{ - 12,66}}, color={0,0,127})); + connect(k.y, derivative2.k) annotation (Line(points={{82,20},{90,20},{90,-52}, + {118,-52}},color={0,0,127})); + connect(const.y, sub3.u1) annotation (Line(points={{-18,120},{10,120},{10,72}, + {18,72}},color={0,0,127})); connect(PID.y, sub3.u2) - annotation (Line(points={{2,60},{6,60},{6,54},{12,54}}, color={0,0,127})); + annotation (Line(points={{2,60},{18,60}}, color={0,0,127})); connect(sub3.y, uniDel1.u) - annotation (Line(points={{36,60},{48,60}}, color={0,0,127})); - connect(PIDWitTun.y, sub4.u2) annotation (Line(points={{2,-20},{8,-20},{8,-26}, - {10,-26}}, color={0,0,127})); + annotation (Line(points={{42,66},{50,66},{50,60},{58,60}}, color={0,0,127})); + connect(PIDWitTun.y, sub4.u2) annotation (Line(points={{2,-20},{18,-20}}, + color={0,0,127})); connect(uniDel2.u, sub4.y) - annotation (Line(points={{36,-20},{34,-20}}, color={0,0,127})); - connect(sub4.u1, const.y) annotation (Line(points={{10,-14},{4,-14},{4,120},{-18, + annotation (Line(points={{58,-20},{50,-20},{50,-14},{42,-14}}, color={0,0,127})); + connect(sub4.u1, const.y) annotation (Line(points={{18,-8},{10,-8},{10,120},{-18, 120}}, color={0,0,127})); + connect(resSig.y, PIDWitTun.triRes) annotation (Line(points={{-58,70},{-40,70}, + {-40,-40},{-16,-40},{-16,-32}}, color={255,0,255})); + connect(SetPoint.y, PIDWitTun.u_s) annotation (Line(points={{-58,10},{-50,10}, + {-50,-20},{-22,-20}}, color={0,0,127})); annotation ( experiment( StopTime=10000, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIWithFirstOrderAMIGO.mo index 5ab468045ed..6ed48452366 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIWithFirstOrderAMIGO.mo @@ -20,28 +20,28 @@ model DirectActingPIWithFirstOrderAMIGO annotation (Placement(transformation(extent={{-80,60},{-60,80}}))); Buildings.Controls.OBC.CDL.Discrete.UnitDelay uniDel2(samplePeriod=240) "A delay process for control process 2" - annotation (Placement(transformation(extent={{38,-30},{58,-10}}))); + annotation (Placement(transformation(extent={{60,-30},{80,-10}}))); Buildings.Controls.OBC.CDL.Discrete.UnitDelay uniDel1(samplePeriod=240) "A delay process for control process 1" - annotation (Placement(transformation(extent={{50,50},{70,70}}))); + annotation (Placement(transformation(extent={{60,50},{80,70}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant k(k=10) "Gain of the first order process" - annotation (Placement(transformation(extent={{32,10},{52,30}}))); + annotation (Placement(transformation(extent={{60,10},{80,30}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant T(k=10) "Time constant of the first order process" annotation (Placement(transformation(extent={{10,-66},{30,-46}}))); Buildings.Controls.OBC.CDL.Reals.Subtract sub1 "A subtract block that is used to mimic the first order process 1" - annotation (Placement(transformation(extent={{134,70},{154,90}}))); + annotation (Placement(transformation(extent={{160,70},{180,90}}))); Buildings.Controls.OBC.CDL.Reals.Subtract sub2 "A subtract block that is used to mimic the first order process 2" - annotation (Placement(transformation(extent={{134,-20},{154,0}}))); + annotation (Placement(transformation(extent={{160,-20},{180,0}}))); Buildings.Controls.OBC.CDL.Reals.Derivative derivative1 "A derivative block that is used to mimic the first order process 1" - annotation (Placement(transformation(extent={{94,10},{114,30}}))); + annotation (Placement(transformation(extent={{120,10},{140,30}}))); Buildings.Controls.OBC.CDL.Reals.Derivative derivative2 "A derivative block that is used to mimic the first order process 2" - annotation (Placement(transformation(extent={{80,-70},{100,-50}}))); + annotation (Placement(transformation(extent={{120,-70},{140,-50}}))); Buildings.Controls.OBC.CDL.Logical.Sources.Pulse autTunSig( width=0.9, period=6000, @@ -50,57 +50,67 @@ model DirectActingPIWithFirstOrderAMIGO annotation (Placement(transformation(extent={{-80,-60},{-60,-40}}))); Buildings.Controls.OBC.CDL.Reals.Subtract sub3 "A subtract block that is used to mimic the direct acting in the first order process 1" - annotation (Placement(transformation(extent={{14,50},{34,70}}))); + annotation (Placement(transformation(extent={{20,56},{40,76}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant const(k=1) "constant value 1" annotation (Placement(transformation(extent={{-40,110},{-20,130}}))); Buildings.Controls.OBC.CDL.Reals.Subtract sub4 "A subtract block that is used to mimic the direct acting in the first order process 2" - annotation (Placement(transformation(extent={{12,-30},{32,-10}}))); + annotation (Placement(transformation(extent={{20,-24},{40,-4}}))); equation - connect(resSig.y, PI.trigger) annotation (Line(points={{-58,70},{-30,70},{-30, + connect(resSig.y, PI.trigger) annotation (Line(points={{-58,70},{-40,70},{-40, 40},{-16,40},{-16,48}}, color={255,0,255})); - connect(PIWitTun.triRes, PI.trigger) annotation (Line(points={{-16,-32},{-16,-38}, - {-30,-38},{-30,40},{-16,40},{-16,48}}, color={255,0,255})); - connect(PIWitTun.u_s, PI.u_s) annotation (Line(points={{-22,-20},{-48,-20},{-48, - 60},{-22,60}}, color={0,0,127})); - connect(SetPoint.y, PI.u_s) annotation (Line(points={{-58,10},{-48,10},{-48,60}, - {-22,60}}, color={0,0,127})); - connect(uniDel1.y, sub1.u1) annotation (Line(points={{72,60},{86,60},{86,86}, - {132,86}}, color={0,0,127})); - connect(k.y, derivative1.k) annotation (Line(points={{54,20},{58,20},{58,28},{ - 92,28}}, color={0,0,127})); - connect(derivative1.T, T.y) annotation (Line(points={{92,24},{74,24},{74,-56}, - {32,-56}}, color={0,0,127})); - connect(derivative1.y, sub1.u2) annotation (Line(points={{116,20},{126,20},{ - 126,74},{132,74}}, color={0,0,127})); - connect(sub1.y, PI.u_m) annotation (Line(points={{156,80},{164,80},{164,40},{-10, - 40},{-10,48}}, color={0,0,127})); - connect(sub2.u1, uniDel2.y) annotation (Line(points={{132,-4},{64,-4},{64,-20}, - {60,-20}}, color={0,0,127})); - connect(derivative2.y,sub2. u2) annotation (Line(points={{102,-60},{110,-60}, - {110,-16},{132,-16}}, color={0,0,127})); - connect(sub2.y, PIWitTun.u_m) annotation (Line(points={{156,-10},{156,-36},{-10, - -36},{-10,-32}}, color={0,0,127})); - connect(derivative2.T, T.y) annotation (Line(points={{78,-56},{32,-56}}, + connect(SetPoint.y, PI.u_s) annotation (Line(points={{-58,10},{-50,10},{-50, + 60},{-22,60}}, + color={0,0,127})); + connect(uniDel1.y, sub1.u1) annotation (Line(points={{82,60},{110,60},{110,86}, + {158,86}}, color={0,0,127})); + connect(k.y, derivative1.k) annotation (Line(points={{82,20},{90,20},{90,28}, + {118,28}},color={0,0,127})); + connect(derivative1.T, T.y) annotation (Line(points={{118,24},{100,24},{100, + -56},{32,-56}}, + color={0,0,127})); + connect(derivative1.y, sub1.u2) annotation (Line(points={{142,20},{150,20},{ + 150,74},{158,74}}, color={0,0,127})); + connect(sub1.y, PI.u_m) annotation (Line(points={{182,80},{190,80},{190,40},{ + -10,40},{-10,48}}, + color={0,0,127})); + connect(sub2.u1, uniDel2.y) annotation (Line(points={{158,-4},{110,-4},{110, + -20},{82,-20}}, + color={0,0,127})); + connect(derivative2.y,sub2. u2) annotation (Line(points={{142,-60},{150,-60}, + {150,-16},{158,-16}}, color={0,0,127})); + connect(sub2.y, PIWitTun.u_m) annotation (Line(points={{182,-10},{190,-10},{ + 190,-40},{-10,-40},{-10,-32}}, + color={0,0,127})); + connect(derivative2.T, T.y) annotation (Line(points={{118,-56},{32,-56}}, color={0,0,127})); - connect(derivative1.u, sub1.u1) annotation (Line(points={{92,20},{86,20},{86, - 86},{132,86}}, color={0,0,127})); - connect(derivative2.u, uniDel2.y) annotation (Line(points={{78,-60},{64,-60},{ - 64,-20},{60,-20}}, color={0,0,127})); + connect(derivative1.u, sub1.u1) annotation (Line(points={{118,20},{110,20},{ + 110,86},{158,86}}, + color={0,0,127})); + connect(derivative2.u, uniDel2.y) annotation (Line(points={{118,-60},{110,-60}, + {110,-20},{82,-20}}, + color={0,0,127})); connect(autTunSig.y, PIWitTun.triTun) annotation (Line(points={{-58,-50},{-4,-50},{-4,-32}}, color={255,0,255})); - connect(k.y, derivative2.k) annotation (Line(points={{54,20},{68,20},{68,-52}, - {78,-52}}, color={0,0,127})); - connect(const.y, sub3.u1) annotation (Line(points={{-18,120},{4,120},{4,66},{ - 12,66}}, color={0,0,127})); - connect(PI.y, sub3.u2) annotation (Line(points={{2,60},{6,60},{6,54},{12,54}}, color={0,0,127})); + connect(k.y, derivative2.k) annotation (Line(points={{82,20},{90,20},{90,-52}, + {118,-52}},color={0,0,127})); + connect(const.y, sub3.u1) annotation (Line(points={{-18,120},{10,120},{10,72}, + {18,72}},color={0,0,127})); + connect(PI.y, sub3.u2) annotation (Line(points={{2,60},{18,60}}, color={0,0,127})); connect(sub3.y, uniDel1.u) - annotation (Line(points={{36,60},{48,60}}, color={0,0,127})); - connect(PIWitTun.y, sub4.u2) annotation (Line(points={{2,-20},{8,-20},{8,-26}, - {10,-26}}, color={0,0,127})); - connect(uniDel2.u, sub4.y) annotation (Line(points={{36,-20},{34,-20}}, color={0,0,127})); - connect(sub4.u1, const.y) annotation (Line(points={{10,-14},{4,-14},{4,120},{-18, - 120}}, color={0,0,127})); + annotation (Line(points={{42,66},{50,66},{50,60},{58,60}}, + color={0,0,127})); + connect(PIWitTun.y, sub4.u2) annotation (Line(points={{2,-20},{18,-20}}, + color={0,0,127})); + connect(uniDel2.u, sub4.y) annotation (Line(points={{58,-20},{50,-20},{50,-14}, + {42,-14}}, color={0,0,127})); + connect(sub4.u1, const.y) annotation (Line(points={{18,-8},{10,-8},{10,120},{ + -18,120}}, + color={0,0,127})); + connect(resSig.y, PIWitTun.triRes) annotation (Line(points={{-58,70},{-40,70}, + {-40,-40},{-16,-40},{-16,-32}}, color={255,0,255})); + connect(SetPoint.y, PIWitTun.u_s) annotation (Line(points={{-58,10},{-50,10}, + {-50,-20},{-22,-20}}, color={0,0,127})); annotation ( experiment( StopTime=10000, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/ReverseActingPIDWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/ReverseActingPIDWithFirstOrderAMIGO.mo index 55523f4186c..70a29b6d30c 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/ReverseActingPIDWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/ReverseActingPIDWithFirstOrderAMIGO.mo @@ -59,17 +59,17 @@ equation {-22,60}}, color={0,0,127})); connect(PIDWitTun.y, uniDel2.u) annotation (Line(points={{2,-20},{18,-20}},color={0,0,127})); connect(uniDel1.u, PID.y) annotation (Line(points={{18,60},{2,60}},color={0,0,127})); - connect(uniDel1.y, sub1.u1) annotation (Line(points={{42,60},{54,60},{54,86}, + connect(uniDel1.y, sub1.u1) annotation (Line(points={{42,60},{72,60},{72,86}, {118,86}}, color={0,0,127})); - connect(k.y, derivative1.k) annotation (Line(points={{32,20},{44,20},{44,28}, + connect(k.y, derivative1.k) annotation (Line(points={{32,20},{68,20},{68,28}, {78,28}}, color={0,0,127})); - connect(derivative1.T, T.y) annotation (Line(points={{78,24},{60,24},{60,-56}, + connect(derivative1.T, T.y) annotation (Line(points={{78,24},{52,24},{52,-56}, {32,-56}}, color={0,0,127})); connect(derivative1.y, sub1.u2) annotation (Line(points={{102,20},{112,20},{ 112,74},{118,74}}, color={0,0,127})); connect(sub1.y, PID.u_m) annotation (Line(points={{142,80},{150,80},{150,40}, {-10,40},{-10,48}}, color={0,0,127})); - connect(sub2.u1, uniDel2.y) annotation (Line(points={{118,-4},{64,-4},{64,-20}, + connect(sub2.u1, uniDel2.y) annotation (Line(points={{118,-4},{60,-4},{60,-20}, {42,-20}}, color={0,0,127})); connect(derivative2.y,sub2. u2) annotation (Line(points={{102,-60},{110,-60}, {110,-16},{118,-16}}, color={0,0,127})); @@ -77,14 +77,14 @@ equation 152,-36},{-10,-36},{-10,-32}}, color={0,0,127})); connect(derivative2.T, T.y) annotation (Line(points={{78,-56},{32,-56}}, color={0,0,127})); - connect(derivative1.u, sub1.u1) annotation (Line(points={{78,20},{72,20},{72, - 86},{118,86}}, color={0,0,127})); - connect(derivative2.u, uniDel2.y) annotation (Line(points={{78,-60},{64,-60}, - {64,-20},{42,-20}}, color={0,0,127})); + connect(derivative2.u, uniDel2.y) annotation (Line(points={{78,-60},{60,-60}, + {60,-20},{42,-20}}, color={0,0,127})); connect(autTunSig.y, PIDWitTun.triTun) annotation (Line(points={{-58,-50},{-4,-50},{-4,-32}}, color={255,0,255})); connect(k.y, derivative2.k) annotation (Line(points={{32,20},{68,20},{68,-52}, {78,-52}}, color={0,0,127})); + connect(uniDel1.y, derivative1.u) annotation (Line(points={{42,60},{72,60},{ + 72,20},{78,20}}, color={0,0,127})); annotation ( experiment( StopTime=10000, From 5638a1ff94fbf8eda2d675bb7d19792f6e06904d Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Wed, 20 Dec 2023 16:30:37 -0800 Subject: [PATCH 153/214] updated release note --- Buildings/package.mo | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/Buildings/package.mo b/Buildings/package.mo index 93b374c254f..4e5c0308837 100644 --- a/Buildings/package.mo +++ b/Buildings/package.mo @@ -217,6 +217,12 @@ Version 11.0.0 is ... The following new libraries have been added:

                                                    + + +
                                                    Buildings.Controls.OBC.Utilities.PIDWithAutotuning + Package that contains components for the PID controller that can + autotune the control gain and time constants. +
                                                    Buildings.Examples.Tutorial.SimpleHouse Tutorial for how to build a simple system model. @@ -283,7 +289,7 @@ have been improved in a
                                                    Buildings.Templates.Components.Fans.ArrayVariable Refactored with flow rate multiplier.
                                                    - This is for #3536. + This is for #3536.
                                                    Buildings.ThermalZones.ReducedOrder @@ -368,10 +374,10 @@ have been improved in a Buildings.Templates.Components.Valves The models in these packages have been retired and replaced - with two container classes within Buildings.Templates.Components.Actuators - that cover all equipment types, and allow the flow characteristic to be specified - with one parameter.
                                                    - This is for #3539. + with two container classes within Buildings.Templates.Components.Actuators + that cover all equipment types, and allow the flow characteristic to be specified + with one parameter.
                                                    + This is for #3539.
                                                    xxx @@ -504,12 +510,6 @@ See also obc.lbl.gov. The following new libraries have been added:

                                                    - - - - - - - - diff --git a/Buildings/UsersGuide/ReleaseNotes/Version_12_0_0.mo b/Buildings/UsersGuide/ReleaseNotes/Version_12_0_0.mo index 7b43b152c30..92aa6e95339 100644 --- a/Buildings/UsersGuide/ReleaseNotes/Version_12_0_0.mo +++ b/Buildings/UsersGuide/ReleaseNotes/Version_12_0_0.mo @@ -30,6 +30,15 @@ The following new components have been added to existing libraries:

                                                    Buildings.Controls.OBC.Utilities.PIDWithAutotuning - Package that contains components for the PID controller that can - autotune the control gain and time constants. -
                                                    Buildings.Templates Package that contains templates for HVAC systems with control sequences From be5273aebced46514c7026953349fcc360e416ff Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Wed, 20 Dec 2023 16:40:07 -0800 Subject: [PATCH 154/214] fixed broken links --- .../Validation/DirectActingPIDWithFirstOrderAMIGO.mo | 4 ++-- .../Validation/DirectActingPIWithFirstOrderAMIGO.mo | 4 ++-- .../Validation/ReverseActingPIWithFirstOrderAMIGO.mo | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIDWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIDWithFirstOrderAMIGO.mo index 20bb0651bfd..c1f062d2594 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIDWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIDWithFirstOrderAMIGO.mo @@ -118,8 +118,8 @@ Validation test for the block Buildings.Controls.OBC.Utilities.PIDWithAutotuning.FirstOrderAMIGO.

                                                    -This example is similar as -Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIDWithFirstOrderAMIGO. +This example is similar as +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.ReverseActingPIDWithFirstOrderAMIGO. However, direct-acting PID controllers are considered.

                                                    ", diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIWithFirstOrderAMIGO.mo index 6ed48452366..20b3ba8e58a 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIWithFirstOrderAMIGO.mo @@ -125,8 +125,8 @@ Validation test for the block Buildings.Controls.OBC.Utilities.PIDWithAutotuning.FirstOrderAMIGO.

                                                    -This example is similar as -Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIWithFirstOrderAMIGO. +This example is similar as +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.ReverseActingPIWithFirstOrderAMIGO. However, direct-acting PI controllers are considered.

                                                    ", diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/ReverseActingPIWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/ReverseActingPIWithFirstOrderAMIGO.mo index dde92bd9468..11035c57778 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/ReverseActingPIWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/ReverseActingPIWithFirstOrderAMIGO.mo @@ -99,8 +99,8 @@ Validation test for the block Buildings.Controls.OBC.Utilities.PIDWithAutotuning.FirstOrderAMIGO.

                                                    -This example is similar as -Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.PIDWithFirstOrderAMIGO. +This example is similar as +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.ReverseActingPIDWithFirstOrderAMIGO. However, an autotuning PI controller rather than an autotuning PID controller is considered in this example.

                                                    ", From f66192ca6445f115341414d205c0e516ab309674 Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Wed, 20 Dec 2023 16:51:32 -0800 Subject: [PATCH 155/214] resized the font --- .../PIDWithAutotuning/FirstOrderAMIGO.mo | 22 +++++++------------ 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index 7d7b4a5ab42..9ae850f222e 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -1,23 +1,17 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning; block FirstOrderAMIGO "An autotuning PID controller with an AMIGO tuner that employs a first-order time delayed system model" - parameter Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController controllerType= - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PI + parameter Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController controllerType=Buildings.Controls.OBC.Utilities.PIDWithAutotuning + .Types.SimpleController.PI "Type of controller"; parameter Real k_start( min=100*Buildings.Controls.OBC.CDL.Constants.eps)=1 "Start value of the gain of controller" annotation (Dialog(group="Initial control gains, used prior to first tuning")); - parameter Real Ti_start( - final quantity="Time", - final unit="s", - min=100*Buildings.Controls.OBC.CDL.Constants.eps)=0.5 + parameter Real Ti_start(unit="s")=0.5 "Start value of the time constant of integrator block" annotation (Dialog(group="Initial control gains, used prior to first tuning")); - parameter Real Td_start( - final quantity="Time", - final unit="s", - min=100*Buildings.Controls.OBC.CDL.Constants.eps)=0.1 + parameter Real Td_start(unit="s")=0.1 "Start value of the time constant of derivative block" annotation (Dialog(group="Initial control gains, used prior to first tuning", enable=controllerType == Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PID)); @@ -321,7 +315,7 @@ First implementation
                                                    fillColor={255,255,255}, fillPattern=FillPattern.Solid), Text( - extent={{-26,102},{74,62}}, + extent={{-56,100},{36,70}}, textString= if controllerType == Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PID then "PID" else "PI", fillPattern=FillPattern.Solid, fillColor={175,175,175}), @@ -363,7 +357,7 @@ First implementation
                                                    leftJustified=false, significantDigits=3))), Text( - extent={{62,70},{-58,20}}, + extent={{24,50},{-74,12}}, textColor={0,0,0}, textString=DynamicSelect( "k = " + String(k_start, @@ -373,7 +367,7 @@ First implementation
                                                    leftJustified=false, significantDigits=3))), Text( - extent={{62,22},{-58,-28}}, + extent={{40,8},{-68,-28}}, textColor={0,0,0}, textString=DynamicSelect( "Ti = " + String(Ti_start, @@ -384,7 +378,7 @@ First implementation
                                                    significantDigits=3))), Text( visible = controllerType == Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PID, - extent={{60,-22},{-60,-72}}, + extent={{44,-34},{-62,-70}}, textColor={0,0,0}, textString=DynamicSelect( "Td = " + String(Td_start, From 6e3739caf8a0cc5cd22c7a22c3ee04638542d6d3 Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Fri, 22 Dec 2023 13:54:35 -0800 Subject: [PATCH 156/214] changed the nominal flow and water temperature [ci skip] --- .../WetCoilCounterFlowPControlAutoTuning.mo | 31 +++++-------------- .../WetCoilCounterFlowPControlAutoTuning.mos | 8 ++--- 2 files changed, 12 insertions(+), 27 deletions(-) diff --git a/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo b/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo index 6287eb7b7f6..2aa4e75f341 100644 --- a/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo +++ b/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo @@ -10,7 +10,7 @@ model WetCoilCounterFlowPControlAutoTuning parameter Modelica.Units.SI.Temperature T_b2_nominal=15 + 273.15; parameter Modelica.Units.SI.MassFlowRate m1_flow_nominal=0.1 "Nominal mass flow rate medium 1"; - parameter Modelica.Units.SI.MassFlowRate m2_flow_nominal=m1_flow_nominal*4200 + parameter Modelica.Units.SI.MassFlowRate m2_flow_nominal=0.2*m1_flow_nominal*4200 /1000*(T_a1_nominal - T_b1_nominal)/(T_b2_nominal - T_a2_nominal) "Nominal mass flow rate medium 2"; Buildings.Fluid.Sources.Boundary_pT sin_2( @@ -90,12 +90,12 @@ model WetCoilCounterFlowPControlAutoTuning Modelica.Blocks.Sources.Constant const1(k=T_a2_nominal) annotation (Placement(transformation(extent={{100,-38},{120,-18}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.FirstOrderAMIGO - con(controllerType=Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PI, - reverseActing=false) + con(controllerType=Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PI, final + reverseActing=false) "Controller" annotation (Placement(transformation(extent={{0,90},{20,110}}))); Modelica.Blocks.Sources.Ramp TWat( - height=30, + height=5, offset=T_a1_nominal, startTime=300, duration=2000) "Water temperature, raised to high value at t=3000 s" @@ -162,10 +162,10 @@ equation points={{22,100},{40,100},{40,72}}, color={0,0,127}, smooth=Smooth.None)); - connect(resSig.y, con.triRes) annotation (Line(points={{-58,170},{-8,170},{-8, - 82},{4,82},{4,88}}, color={255,0,255})); - connect(autTunSig.y, con.triTun) annotation (Line(points={{42,170},{74,170},{ - 74,82},{16,82},{16,88}}, color={255,0,255})); + connect(resSig.y, con.triRes) annotation (Line(points={{-58,170},{-20,170},{-20, + 80},{4,80},{4,88}}, color={255,0,255})); + connect(autTunSig.y, con.triTun) annotation (Line(points={{42,170},{74,170},{74, + 80},{16,80},{16,88}}, color={255,0,255})); connect(TSet.y, con.u_s) annotation (Line(points={{-59,100},{-2,100}}, color={0,0,127})); connect(temSen.T, con.u_m) @@ -195,21 +195,6 @@ revisions=" November 28, 2023, by Sen Huang:
                                                    Replaced the PI controller with an autotuning PI controller. -
                                                  • -December 22, 2014 by Michael Wetter:
                                                    -Removed Modelica.Fluid.System -to address issue -#311. -
                                                  • -
                                                  • -March 1, 2013, by Michael Wetter:
                                                    -Added nominal pressure drop for valve as -this parameter no longer has a default value. -
                                                  • -
                                                  • -May 27, 2010, by Michael Wetter:
                                                    -First implementation. -
                                                  • ")); end WetCoilCounterFlowPControlAutoTuning; diff --git a/Buildings/Resources/Scripts/Dymola/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mos b/Buildings/Resources/Scripts/Dymola/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mos index c1cd8a830ec..c047ee4b638 100644 --- a/Buildings/Resources/Scripts/Dymola/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mos +++ b/Buildings/Resources/Scripts/Dymola/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mos @@ -1,5 +1,5 @@ -simulateModel("Buildings.Fluid.HeatExchangers.Examples.WetCoilCounterFlowPControlAutoTuning", stopTime=3600, method="CVode", tolerance=1e-6, resultFile="WetCoilCounterFlowPControlAutoTuning"); -createPlot(id=4, position={35, 10, 741, 638}, y={"con.inTunPro.y"}, range={0.0, 3600.0, -0.5, 1.5}, grid=true, subPlot=101, colors={{28,108,200}}, timeUnit="s"); -createPlot(id=4, position={35, 10, 741, 638}, y={"con.u_s", "con.u_m"}, range={0.0, 3600.0, 280.0, 310.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}, timeUnit="s"); -createPlot(id=4, position={35, 10, 741, 638}, y={"con.PIPar.k", "con.PIPar.Ti"}, range={0.0, 3600.0, -5.0, 15.0}, grid=true, subPlot=103, colors={{28,108,200}, {238,46,47}}, timeUnit="s", displayUnits={"", "s"}); +simulateModel("Buildings.Fluid.HeatExchangers.Examples.WetCoilCounterFlowPControlAutoTuning", stopTime=3600, method="dassl", tolerance=1e-6, resultFile="WetCoilCounterFlowPControlAutoTuning"); +createPlot(id=4, position={11, 21, 1280, 1012}, y={"hex.m1_flow", "hex.m2_flow"}, range={0.0, 3600.0, -0.05, 0.15}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}, timeUnit="s", displayUnits={"kg/s", "kg/s"}); +createPlot(id=4, position={11, 21, 1280, 1012}, y={"con.u_s", "con.u_m"}, range={0.0, 3600.0, 280.0, 300.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}, timeUnit="s"); +createPlot(id=4, position={11, 21, 1280, 1012}, y={"hex.Q1_flow", "hex.Q2_flow", "hex.QLat2_flow", "hex.QSen2_flow"}, range={0.0, 3600.0, -2000.0, 2000.0}, grid=true, subPlot=103, colors={{28,108,200}, {238,46,47}, {0,140,72}, {217,67,180}}, timeUnit="s", displayUnits={"W", "W", "W", "W"}); From 9574d7e7aaa3954c059b7a08d5bb0b245ceeee58 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Mon, 25 Dec 2023 09:13:41 -0500 Subject: [PATCH 157/214] remove the generic pi settings --- .../PIDWithAutotuning/FirstOrderAMIGO.mo | 27 +++++++------- .../PIDWithAutotuning/Relay/Controller.mo | 34 ++++-------------- .../ControlProcessModel.mo | 10 ++++-- .../DirectActingPIDWithFirstOrderAMIGO.mo | 1 + .../DirectActingPIWithFirstOrderAMIGO.mo | 6 ++-- .../WetCoilCounterFlowPControlAutoTuning.mo | 36 ++++++++++++++----- 6 files changed, 61 insertions(+), 53 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index 9ae850f222e..2a51304455c 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -1,8 +1,8 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning; block FirstOrderAMIGO "An autotuning PID controller with an AMIGO tuner that employs a first-order time delayed system model" - parameter Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController controllerType=Buildings.Controls.OBC.Utilities.PIDWithAutotuning - .Types.SimpleController.PI + parameter Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController controllerType=Buildings.Controls.OBC.Utilities.PIDWithAutotuning. + Types.SimpleController.PI "Type of controller"; parameter Real k_start( min=100*Buildings.Controls.OBC.CDL.Constants.eps)=1 @@ -18,6 +18,14 @@ block FirstOrderAMIGO parameter Real r( min=100*Buildings.Controls.OBC.CDL.Constants.eps)=1 "Typical range of control error, used for scaling the control error"; + parameter Real yHig = 1 + "Higher value for the relay output"; + parameter Real yLow = 0.1 + "Lower value for the relay output"; + parameter Real deaBan = 0.1 + "Deadband for holding the output value"; + parameter Real yRef = 0.8 + "Reference output for the tuning process"; final parameter Real yMax=1 "Upper limit of output" annotation (Dialog(group="Limits")); @@ -91,7 +99,7 @@ block FirstOrderAMIGO annotation (Placement(transformation(extent={{-50,20},{-30,40}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.ResponseProcess resPro( final yHig=yHig - yRef, - final yLow=yRef + yLow) + final yLow=yRef - yLow) "Identify the on and off period length, the half period ratio, and the moments when the tuning starts and ends" annotation (Placement(transformation(extent={{0,30},{20,50}}))); Buildings.Controls.OBC.CDL.Reals.Switch swi @@ -109,7 +117,7 @@ block FirstOrderAMIGO Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.ControlProcessModel conProMod( final yHig=yHig - yRef, - final yLow=yRef + yLow, + final yLow=yRef - yLow, final deaBan=deaBan) "Calculates the parameters of a first-order time delayed model" annotation (Placement(transformation(extent={{40,60},{60,80}}))); @@ -131,14 +139,6 @@ block FirstOrderAMIGO annotation (Placement(transformation(extent={{80,-40},{100,-20}}))); protected - final parameter Real yHig(min=1E-6) = 1 - "Higher value for the relay output"; - final parameter Real yLow(min=1E-6) = 0.1 - "Lower value for the relay output"; - final parameter Real deaBan(min=1E-6) = 0.1 - "Deadband for holding the output value"; - final parameter Real yRef(min=1E-6) = 0.8 - "Reference output for the tuning process"; final parameter Boolean with_D=controllerType == Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PID "Boolean flag to enable derivative action" annotation (Evaluate=true,HideResult=true); @@ -276,6 +276,9 @@ at which point this block turns back to a PID controller but with tuned PID para Note: If an autotuning is ongoing, i.e., inTunPro.y = true, a request for performing autotuning will be ignored.

                                                    +

                                                    +In addition, this block requires an asymmetric relay output, meaning yHig - yRef ≠ yRef - yLow. +

                                                    References

                                                    diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo index f01aad3e761..fba20b1d429 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo @@ -47,7 +47,7 @@ protected "Higher value for the output" annotation (Placement(transformation(extent={{-80,70},{-60,90}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant lowVal( - final k=-yLow) + final k=yLow) "Lower value for the output" annotation (Placement(transformation(extent={{-80,10},{-60,30}}))); Buildings.Controls.OBC.CDL.Reals.Switch swi1 @@ -66,16 +66,6 @@ protected Buildings.Controls.OBC.CDL.Reals.Subtract dirActErr if not reverseActing "Control error when direct acting, measurement - setpoint" annotation (Placement(transformation(extent={{-20,-80},{0,-60}}))); - Buildings.Controls.OBC.CDL.Reals.Greater gre - "Check if the higher value is greater than the lower value" - annotation (Placement(transformation(extent={{0,70},{20,90}}))); - Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter gai( - final k=-1) "Gain" - annotation (Placement(transformation(extent={{-40,30},{-20,50}}))); - Buildings.Controls.OBC.CDL.Utilities.Assert assMes( - final message="Warning: The higher value for the relay output should be greater than that of the lower value.") - "Warning when the higher value is set to be less than the lower value" - annotation (Placement(transformation(extent={{40,70},{60,90}}))); Buildings.Controls.OBC.CDL.Reals.Subtract meaSetDif "Inputs difference, (measurement - setpoint)" annotation (Placement(transformation(extent={{60,-10},{80,10}}))); @@ -84,8 +74,8 @@ equation annotation (Line(points={{82,50},{120,50}}, color={0,0,127})); connect(higVal.y, swi.u1) annotation (Line(points={{-58,80},{-20,80},{-20,58},{58,58}},color={0,0,127})); - connect(lowVal.y, swi.u3) annotation (Line(points={{-58,20},{0,20},{0,42},{58, - 42}}, color={0,0,127})); + connect(lowVal.y, swi.u3) annotation (Line(points={{-58,20},{-20,20},{-20,42}, + {58,42}},color={0,0,127})); connect(swi1.u3, u_s) annotation (Line(points={{-62,-48},{-90,-48},{-90,0},{-120, 0}}, color={0,0,127})); connect(trigger, swi1.u2) annotation (Line(points={{-80,-120},{-80,-40},{-62,-40}}, @@ -106,14 +96,6 @@ equation -64},{-22,-64}}, color={0,0,127})); connect(hys.y, swi.u2) annotation (Line(points={{42,-60},{50,-60},{50,50},{58, 50}}, color={255,0,255})); - connect(gre.y, assMes.u) - annotation (Line(points={{22,80},{38,80}}, color={255,0,255})); - connect(lowVal.y, gai.u) annotation (Line(points={{-58,20},{-50,20},{-50,40},{ - -42,40}}, color={0,0,127})); - connect(gai.y, gre.u2) annotation (Line(points={{-18,40},{-10,40},{-10,72},{-2, - 72}}, color={0,0,127})); - connect(higVal.y, gre.u1) - annotation (Line(points={{-58,80},{-2,80}}, color={0,0,127})); connect(hys.y, yOn) annotation (Line(points={{42,-60},{120,-60}}, color={255,0,255})); connect(swi1.y, meaSetDif.u1) annotation (Line(points={{-38,-40},{20,-40},{20, 6},{58,6}}, color={0,0,127})); @@ -154,8 +136,8 @@ annotation (defaultComponentName = "relCon", fillPattern=FillPattern.Solid, fillColor={175,175,175}, textString="Relay"), - Line(points={{-70,24},{-34,24},{-34,58},{38,58},{38,24},{66,24}}, color - ={28,108,200})}), Diagram( + Line(points={{-70,24},{-34,24},{-34,58},{38,58},{38,24},{66,24}}, color= + {28,108,200})}), Diagram( coordinateSystem(preserveAspectRatio=false)), Documentation(info="

                                                    @@ -184,7 +166,7 @@ then y = yHig and yOn = true,

                                                  • else if err < -deaBan and trigger is true, -then y = -yLow and +then y = yLow and yOn = false,
                                                  • @@ -196,9 +178,7 @@ where deaBan is a dead band, yHig and yLow are the higher value and the lower value of the output y, respectively.

                                                    -

                                                    -Note that this block generates an asymmetric output, meaning yHig ≠ yLow. -

                                                    +

                                                    References

                                                    Josefin Berner (2017) \"Automatic Controller Tuning using Relay-based Model Identification.\" diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo index 64b079aba70..9723c7f2a0f 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo @@ -108,7 +108,9 @@ protected final k=-1) "Product of the normalized time delay and -1" annotation (Placement(transformation(extent={{-80,-70},{-60,-50}}))); - + Buildings.Controls.OBC.CDL.Reals.Abs abs1 + "Absolute gain value" + annotation (Placement(transformation(extent={{-90,10},{-70,30}}))); equation connect(gain.u, u) annotation (Line(points={{-122,28},{-140,28},{-140,80},{-180, 80}}, color={0,0,127})); @@ -158,8 +160,10 @@ equation 18,-26}}, color={0,0,127})); connect(div.y, timConDel.rat) annotation (Line(points={{42,-20},{50,-20},{50,14}, {58,14}}, color={0,0,127})); - connect(gain.k, samk.u) - annotation (Line(points={{-98,20},{-62,20}}, color={0,0,127})); + connect(gain.k, abs1.u) + annotation (Line(points={{-98,20},{-92,20}}, color={0,0,127})); + connect(abs1.y, samk.u) + annotation (Line(points={{-68,20},{-62,20}}, color={0,0,127})); annotation ( defaultComponentName = "conProMod", Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{100, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIDWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIDWithFirstOrderAMIGO.mo index c1f062d2594..8b378872c11 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIDWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIDWithFirstOrderAMIGO.mo @@ -6,6 +6,7 @@ model DirectActingPIDWithFirstOrderAMIGO annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.FirstOrderAMIGO PIDWitTun( controllerType=Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PID, + deaBan=0.05, reverseActing=false) "PID controller with an autotuning feature" annotation (Placement(transformation(extent={{-20,-30},{0,-10}}))); Buildings.Controls.OBC.CDL.Reals.PIDWithReset PID( diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIWithFirstOrderAMIGO.mo index 20b3ba8e58a..80502fafcdb 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIWithFirstOrderAMIGO.mo @@ -5,9 +5,11 @@ model DirectActingPIWithFirstOrderAMIGO "Setpoint value" annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.FirstOrderAMIGO PIWitTun( - controllerType=Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PID, - reverseActing=false) "PI controller with an autotuning feature" + controllerType=Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PI, + deaBan=0.05, + reverseActing=false) "PI controller with an autotuning feature" annotation (Placement(transformation(extent={{-20,-30},{0,-10}}))); + Buildings.Controls.OBC.CDL.Reals.PIDWithReset PI( controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PID, k=1, diff --git a/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo b/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo index 2aa4e75f341..55e67b9d0b1 100644 --- a/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo +++ b/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo @@ -59,8 +59,9 @@ model WetCoilCounterFlowPControlAutoTuning Buildings.Fluid.Actuators.Valves.TwoWayEqualPercentage val( redeclare package Medium = Medium1, m_flow_nominal=m1_flow_nominal, - dpValve_nominal=6000) "Valve model" annotation (Placement( - transformation(extent={{30,50},{50,70}}))); + dpValve_nominal=6000) + "Valve model" + annotation (Placement(transformation(extent={{30,50},{50,70}}))); Modelica.Blocks.Sources.TimeTable TSet(table=[0,288.15; 600,288.15; 600, 298.15; 1200,298.15; 1800,283.15; 2400,283.15; 2400,288.15]) "Setpoint temperature" annotation (Placement(transformation(extent={{-80,90}, @@ -90,8 +91,12 @@ model WetCoilCounterFlowPControlAutoTuning Modelica.Blocks.Sources.Constant const1(k=T_a2_nominal) annotation (Placement(transformation(extent={{100,-38},{120,-18}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.FirstOrderAMIGO - con(controllerType=Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PI, final - reverseActing=false) + con(controllerType=Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PI, + yHig=1, + yLow=0.2, + yRef=0.5, + deaBan=1/298.15, + reverseActing=false) "Controller" annotation (Placement(transformation(extent={{0,90},{20,110}}))); Modelica.Blocks.Sources.Ramp TWat( @@ -104,11 +109,19 @@ model WetCoilCounterFlowPControlAutoTuning "Reset signal" annotation (Placement(transformation(extent={{-80,160},{-60,180}}))); Buildings.Controls.OBC.CDL.Logical.Sources.Pulse autTunSig( - width=0.9, + width=0.1, period=4000, shift=400) "Signal for enabling the autotuning" annotation (Placement(transformation(extent={{20,160},{40,180}}))); + Controls.OBC.CDL.Reals.MultiplyByParameter gai1(k=1/298.15) + annotation (Placement(transformation(extent={{-48,92},{-32,108}}))); + Controls.OBC.CDL.Reals.MultiplyByParameter gai2(k=1/298.15) + annotation ( + Placement(transformation( + extent={{-7,-7},{7,7}}, + rotation=90, + origin={11,49}))); equation connect(hex.port_b1, res_1.port_a) annotation (Line(points={{80,32},{86,32},{ 86,60},{90,60}}, color={0,127,255})); @@ -166,10 +179,15 @@ equation 80},{4,80},{4,88}}, color={255,0,255})); connect(autTunSig.y, con.triTun) annotation (Line(points={{42,170},{74,170},{74, 80},{16,80},{16,88}}, color={255,0,255})); - connect(TSet.y, con.u_s) - annotation (Line(points={{-59,100},{-2,100}}, color={0,0,127})); - connect(temSen.T, con.u_m) - annotation (Line(points={{10,31},{10,88}}, color={0,0,127})); + connect(TSet.y, gai1.u) annotation (Line(points={{-59,100},{-49.6,100}}, + color={0,0,127})); + connect(gai1.y, con.u_s) annotation (Line(points={{-30.4,100},{-2,100}}, + color={0,0,127})); + connect(temSen.T, gai2.u) annotation (Line(points={{10,31},{10,35.8},{11,35.8}, + {11,40.6}},color={0,0,127})); + connect(gai2.y, con.u_m) annotation (Line(points={{11,57.4},{11,72.7},{10, + 72.7},{10,88}}, + color={0,0,127})); annotation (Diagram(coordinateSystem(preserveAspectRatio=true, extent={{-100, -100},{200,200}})), experiment(Tolerance=1e-6, StopTime=3600), From 65f2f4453cc4c9c3824495b4d442550d3b951ad3 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Mon, 25 Dec 2023 09:14:31 -0500 Subject: [PATCH 158/214] fix issues in the plotting scripts --- .../Validation/DirectActingPIDWithFirstOrderAMIGO.mos | 2 +- .../Validation/DirectActingPIWithFirstOrderAMIGO.mos | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIDWithFirstOrderAMIGO.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIDWithFirstOrderAMIGO.mos index cf385fd75f9..571cb540fef 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIDWithFirstOrderAMIGO.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIDWithFirstOrderAMIGO.mos @@ -1,4 +1,4 @@ -simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.DirectActingPIDWithFirstOrderAMIGO", stopTime=10000, method="Cvode", tolerance=1e-06, resultFile="PIDWithFirstOrderAMIGO"); +simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.DirectActingPIDWithFirstOrderAMIGO", stopTime=10000, method="Cvode", tolerance=1e-06, resultFile="DirectActingPIDWithFirstOrderAMIGO"); createPlot(id=1, position={58, 0, 954, 958}, y={"PID.u_s", "PID.u_m"}, range={0.0, 10000.0, -1.0, 2.0}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}, timeUnit="s"); createPlot(id=1, position={58, 0, 954, 958}, y={"PIDWitTun.u_s", "PIDWitTun.u_m"}, range={0.0, 10000.0, -1.0, 2.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}, timeUnit="s"); createPlot(id=1, position={58, 0, 954, 958}, y={"autTunSig.y"}, range={0.0, 10000.0, -1.0, 2.0}, grid=true, subPlot=103, colors={{28,108,200}}, timeUnit="s"); diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIWithFirstOrderAMIGO.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIWithFirstOrderAMIGO.mos index 600022cf508..fe04563088a 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIWithFirstOrderAMIGO.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIWithFirstOrderAMIGO.mos @@ -1,4 +1,4 @@ -simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.DirectActingPIWithFirstOrderAMIGO", stopTime=10000, method="Cvode", tolerance=1e-06, resultFile="PIWithFirstOrderAMIGO"); +simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Validation.DirectActingPIWithFirstOrderAMIGO", stopTime=10000, method="Cvode", tolerance=1e-06, resultFile="DirectActingPIWithFirstOrderAMIGO"); createPlot(id=1, position={58, 0, 954, 958}, y={"PI.u_s", "PI.u_m"}, range={0.0, 10000.0, -1.0, 2.0}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}, timeUnit="s"); createPlot(id=1, position={58, 0, 954, 958}, y={"PIWitTun.u_s", "PIWitTun.u_m"}, range={0.0, 10000.0, -1.0, 2.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}, timeUnit="s"); createPlot(id=1, position={58, 0, 954, 958}, y={"autTunSig.y"}, range={0.0, 10000.0, -1.0, 2.0}, grid=true, subPlot=103, colors={{28,108,200}}, timeUnit="s"); From 9eae03f7b68580c7d159fa6fba2844e1b3bd09a8 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Wed, 27 Dec 2023 23:14:45 -0500 Subject: [PATCH 159/214] model doc update --- .../Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo | 9 ++++++++- .../FirstOrderTimedelayed/BaseClasses/Gain.mo | 13 ++++--------- .../BaseClasses/TimeConstantDelay.mo | 8 ++++---- 3 files changed, 16 insertions(+), 14 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index 2a51304455c..6ad574197f7 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -128,7 +128,7 @@ block FirstOrderAMIGO "Check if an autotuning is ongoing while a new autotuning request is received" annotation (Placement(transformation(extent={{120,-72},{140,-52}}))); Buildings.Controls.OBC.CDL.Utilities.Assert assMes( - message="An autotuning is ongoing and an autotuning request is ignored.") + message="*** Warning in " + getInstanceName() + "An autotuning is ongoing and an autotuning request is ignored.") "Error message when an autotuning tuning is ongoing while a new autotuning request is received" annotation (Placement(transformation(extent={{148,-72},{168,-52}}))); Buildings.Controls.OBC.CDL.Logical.Edge edgReq @@ -148,6 +148,13 @@ protected else Buildings.Controls.OBC.CDL.Types.SimpleController.PID "Type of controller"; +initial equation + // check if the relay output is asymmetric. + assert(yHig + yLow - 2*yRef > 1e-3 or yHig + yLow - 2*yRef < -1e-3, + "*** Error in " + getInstanceName() + + ": the relay output needs to be asymmetric. Check the value of yHig, yLow and yRef", + level = AssertionLevel.error); + equation connect(con.u_s, u_s) annotation (Line(points={{-52,-40},{-60,-40},{-60,0},{-200, 0}}, color={0,0,127})); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Gain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Gain.mo index 7a085576c22..7e1438546e6 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Gain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Gain.mo @@ -110,18 +110,13 @@ Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Controller).

                                                    Iu is calculated by

                                                    -Iu = ton (yhig - yref)+ toff(-ylow - yref), +Iu = ton yhig - toffylow,

                                                    -where yhig and ylow are the higher value -and the lower value of the relay control output, respectively. -yref is the reference value of the relay output. +where yhig and ylow are constants related to +an asymmetric relay output. ton and toff are the length of the on -period and the off period, respectively. -

                                                    -

                                                    -During an On period, the relay switch signal becomes true. -During an Off period, the relay switch signal becomes false. +period and the off period of the same asymmetric relay output, respectively.

                                                    References

                                                    Josefin Berner (2017). diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/TimeConstantDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/TimeConstantDelay.mo index e59c4e412f7..de4878e9585 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/TimeConstantDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/TimeConstantDelay.mo @@ -166,10 +166,10 @@ The time constant, T, is calculated by T = ton/(ln((δ/|k|-yhig+exp(τ/(1 - τ))(yhig + ylow))/(yhig-δ/|k|))),

                                                    -where yhig and ylow are the higher value -and the lower value of the relay control output, respectively. -ton is the length of the on period. -δ is the dead band of a relay controller. +where yhig and ylow are constants related to +an asymmetric relay output. +ton is the length of the on period of the same asymmetric relay output. +δ is the dead band of the same asymmetric relay output. k is the gain of the first-order time delayed model. τ is the normalized time delay.

                                                    From 4a43c6c7015695f4627ea69d3bf1e9f3b4a55f6b Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Wed, 27 Dec 2023 23:15:26 -0500 Subject: [PATCH 160/214] add the openmodelica script --- .../Examples/WetCoilCounterFlowPControlAutoTuning.mo | 7 ++++--- ...ers.Examples.WetCoilCounterFlowPControlAutoTuning.mos | 9 ++++++--- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo b/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo index 55e67b9d0b1..6a35d003cd5 100644 --- a/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo +++ b/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo @@ -114,10 +114,11 @@ model WetCoilCounterFlowPControlAutoTuning shift=400) "Signal for enabling the autotuning" annotation (Placement(transformation(extent={{20,160},{40,180}}))); - Controls.OBC.CDL.Reals.MultiplyByParameter gai1(k=1/298.15) + Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter gai1(k=1/298.15) + "normalize the setpoint" annotation (Placement(transformation(extent={{-48,92},{-32,108}}))); - Controls.OBC.CDL.Reals.MultiplyByParameter gai2(k=1/298.15) - annotation ( + Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter gai2(k=1/298.15) + "normalize the measurement" annotation ( Placement(transformation( extent={{-7,-7},{7,7}}, rotation=90, diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.HeatExchangers.Examples.WetCoilCounterFlowPControlAutoTuning.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.HeatExchangers.Examples.WetCoilCounterFlowPControlAutoTuning.mos index 157d5af3379..67fc0e54457 100644 --- a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.HeatExchangers.Examples.WetCoilCounterFlowPControlAutoTuning.mos +++ b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Fluid.HeatExchangers.Examples.WetCoilCounterFlowPControlAutoTuning.mos @@ -1,8 +1,11 @@ compareVars := { - "con.inTunPro.y", + "hex.m1_flow", + "hex.m2_flow", "con.u_s", "con.u_m", - "con.PIPar.k", - "con.PIPar.Ti" + "hex.Q1_flow", + "hex.Q2_flow", + "hex.QLat2_flow", + "hex.QSen2_flow" }; From e663755bf42e93d543b8b86614c97b6ea43316b9 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Wed, 27 Dec 2023 23:16:03 -0500 Subject: [PATCH 161/214] update the reference dataset --- ...WithAutotuning_Relay_Validation_Controller.txt | 8 ++++---- ...utotuning_Relay_Validation_ResponseProcess.txt | 2 +- ...derTimedelayed_BaseClasses_Validation_Gain.txt | 2 +- ...d_BaseClasses_Validation_TimeConstantDelay.txt | 2 +- ...Timedelayed_Validation_ControlProcessModel.txt | 2 +- ...idation_DirectActingPIDWithFirstOrderAMIGO.txt | 14 +++++++------- ...lidation_DirectActingPIWithFirstOrderAMIGO.txt | 14 +++++++------- ...dation_ReverseActingPIDWithFirstOrderAMIGO.txt | 14 +++++++------- ...idation_ReverseActingPIWithFirstOrderAMIGO.txt | 12 ++++++------ ...mples_WetCoilCounterFlowPControlAutoTuning.txt | 15 +++++++++------ 10 files changed, 44 insertions(+), 41 deletions(-) diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_Controller.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_Controller.txt index 1ff4fa84eac..61319bae5a2 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_Controller.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_Controller.txt @@ -1,4 +1,4 @@ -last-generated=2023-12-15 +last-generated=2023-12-27 statistics-simulation= { "linear": " ", @@ -6,8 +6,8 @@ statistics-simulation= "numerical Jacobians": "0" } time=[0e+00, 1e+00] -relCon.u_m=[0e+00, 1.253332374497156e-01, 2.486898953308248e-01, 3.681245524153801e-01, 4.817536869061769e-01, 5.877852363451299e-01, 6.845471384320703e-01, 7.705132340994622e-01, 8.443279384363055e-01, 9.048270386715103e-01, 9.510565340027346e-01, 9.822872294183655e-01, 9.980267303235079e-01, 9.980267241165655e-01, 9.822872294183655e-01, 9.510565622604734e-01, 9.048270386715103e-01, 8.443279384363054e-01, 7.705132929390851e-01, 6.845471041974797e-01, 5.877852740064528e-01, 4.8175360443844e-01, 3.681245306244136e-01, 2.486899405222956e-01, 1.253331676890714e-01, 1.224646852585168e-16, -1.253333533635595e-01, -2.486897589136873e-01, -3.681245306244139e-01, -4.817537683762683e-01, -5.877851217017483e-01, -6.845471041974797e-01, -7.705132929390851e-01, -8.443278366018112e-01, -9.048270386715105e-01, -9.510565622604733e-01, -9.822871922079218e-01, -9.980267241165655e-01, -9.980267241165655e-01, -9.822871922079218e-01, -9.510565622604733e-01, -9.048270386715105e-01, -8.443278366018112e-01, -7.705132929390851e-01, -6.845471041974797e-01, -5.877851217017483e-01, -4.817537683762683e-01, -3.681245306244139e-01, -2.486897589136873e-01, -1.253333533635595e-01, -2.449293705170336e-16, 1.253333533617908e-01, 2.486901212847727e-01, 3.68124877196207e-01, 4.817534392344727e-01, 5.877851217035711e-01, 6.845471041971509e-01, 7.70513292938244e-01, 8.443280367726912e-01, 9.048271948735948e-01, 9.510564438597915e-01, 9.822871922084567e-01, 9.980267241166327e-01, 9.980267241166327e-01, 9.822871922084567e-01, 9.510564438597915e-01, 9.048271948735948e-01, 8.443280367726912e-01, 7.70513292938244e-01, 6.845471041971509e-01, 5.877851217035711e-01, 4.817534392344727e-01, 3.68124877196207e-01, 2.486901212847727e-01, 1.253333533617908e-01, 3.673940293057708e-16, -1.253333533617908e-01, -2.486901212847727e-01, -3.68124877196207e-01, -4.817534392344727e-01, -5.877851217035711e-01, -6.845471041971509e-01, -7.70513292938244e-01, -8.443280367726912e-01, -9.048271948735948e-01, -9.510564438597915e-01, -9.822871922084567e-01, -9.980267241166327e-01, -9.980267241166327e-01, -9.822871922084567e-01, -9.510564438597915e-01, -9.048271948735948e-01, -8.443280367726912e-01, -7.70513292938244e-01, -6.845471041971509e-01, -5.877851217035711e-01, -4.817534392344727e-01, -3.68124877196207e-01, -2.486901212847727e-01, -1.253333533617908e-01, -4.898587410340671e-16] +relCon.u_m=[0e+00, 1.253332374497156e-01, 2.486898953308248e-01, 3.681245524153801e-01, 4.817536869061769e-01, 5.877852363451299e-01, 6.845471384320703e-01, 7.705132340994622e-01, 8.443279384363055e-01, 9.048270386715103e-01, 9.510565340027346e-01, 9.822872294183655e-01, 9.980267303235079e-01, 9.980267241165655e-01, 9.822872294183655e-01, 9.510565622604734e-01, 9.048270386715103e-01, 8.443279384363054e-01, 7.705132929390851e-01, 6.845471041974797e-01, 5.877852740064528e-01, 4.8175360443844e-01, 3.681245306244136e-01, 2.486899405222956e-01, 1.253331676890714e-01, -2.097981390461576e-15, -1.253333533635595e-01, -2.486897589136873e-01, -3.681245306244139e-01, -4.817537683762683e-01, -5.877851217017483e-01, -6.845471041974797e-01, -7.705132929390851e-01, -8.443278366018112e-01, -9.048270386715105e-01, -9.510565622604733e-01, -9.822871922079218e-01, -9.980267241165655e-01, -9.980267241165655e-01, -9.822871922079218e-01, -9.510565622604733e-01, -9.048270386715105e-01, -8.443278366018112e-01, -7.705132929390851e-01, -6.845471041974797e-01, -5.877851217017483e-01, -4.817537683762683e-01, -3.681245306244139e-01, -2.486897589136873e-01, -1.253333533635595e-01, -2.449293705170336e-16, 1.253333533617908e-01, 2.486901212847727e-01, 3.68124877196207e-01, 4.817534392344727e-01, 5.877851217035711e-01, 6.845471041971509e-01, 7.70513292938244e-01, 8.443280367726912e-01, 9.048271948735948e-01, 9.510564438597915e-01, 9.822871922084567e-01, 9.980267241166327e-01, 9.980267241166327e-01, 9.822871922084567e-01, 9.510564438597915e-01, 9.048271948735948e-01, 8.443280367726912e-01, 7.70513292938244e-01, 6.845471041971509e-01, 5.877851217035711e-01, 4.817534392344727e-01, 3.68124877196207e-01, 2.486901212847727e-01, 1.253333533617908e-01, -6.738033169476553e-15, -1.253333533617908e-01, -2.486901212847727e-01, -3.68124877196207e-01, -4.817534392344727e-01, -5.877851217035711e-01, -6.845471041971509e-01, -7.70513292938244e-01, -8.443280367726912e-01, -9.048271948735948e-01, -9.510564438597915e-01, -9.822871922084567e-01, -9.980267241166327e-01, -9.980267241166327e-01, -9.822871922084567e-01, -9.510564438597915e-01, -9.048271948735948e-01, -8.443280367726912e-01, -7.70513292938244e-01, -6.845471041971509e-01, -5.877851217035711e-01, -4.817534392344727e-01, -3.68124877196207e-01, -2.486901212847727e-01, -1.253333533617908e-01, -4.898587410340671e-16] enaSig.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] -relCon.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, -5e-01, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] -relCon.yDif=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.253333533617908e-01, 2.486901212847727e-01, 3.68124877196207e-01, 4.817534392344727e-01, 5.877851217035711e-01, 6.845471041971509e-01, 7.70513292938244e-01, 8.443280367726912e-01, 9.048271948735948e-01, 9.510564438597915e-01, 9.822871922084567e-01, 9.980267241166327e-01, 9.980267241166327e-01, 9.822871922084567e-01, 9.510564438597915e-01, 9.048271948735948e-01, 8.443280367726912e-01, 7.70513292938244e-01, 6.845471041971509e-01, 5.877851217035711e-01, 4.817534392344727e-01, 3.68124877196207e-01, 2.486901212847727e-01, 1.253333533617908e-01, 3.673940293057708e-16, -1.253333533617908e-01, -2.486901212847727e-01, -3.68124877196207e-01, -4.817534392344727e-01, -5.877851217035711e-01, -6.845471041971509e-01, -7.70513292938244e-01, -8.443280367726912e-01, -9.048271948735948e-01, -9.510564438597915e-01, -9.822871922084567e-01, -9.980267241166327e-01, -9.980267241166327e-01, -9.822871922084567e-01, -9.510564438597915e-01, -9.048271948735948e-01, -8.443280367726912e-01, -7.70513292938244e-01, -6.845471041971509e-01, -5.877851217035711e-01, -4.817534392344727e-01, -3.68124877196207e-01, -2.486901212847727e-01, -1.253333533617908e-01, -4.898587410340671e-16] +relCon.y=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] +relCon.yDif=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.253333533617908e-01, 2.486901212847727e-01, 3.68124877196207e-01, 4.817534392344727e-01, 5.877851217035711e-01, 6.845471041971509e-01, 7.70513292938244e-01, 8.443280367726912e-01, 9.048271948735948e-01, 9.510564438597915e-01, 9.822871922084567e-01, 9.980267241166327e-01, 9.980267241166327e-01, 9.822871922084567e-01, 9.510564438597915e-01, 9.048271948735948e-01, 8.443280367726912e-01, 7.70513292938244e-01, 6.845471041971509e-01, 5.877851217035711e-01, 4.817534392344727e-01, 3.68124877196207e-01, 2.486901212847727e-01, 1.253333533617908e-01, -6.738033169476553e-15, -1.253333533617908e-01, -2.486901212847727e-01, -3.68124877196207e-01, -4.817534392344727e-01, -5.877851217035711e-01, -6.845471041971509e-01, -7.70513292938244e-01, -8.443280367726912e-01, -9.048271948735948e-01, -9.510564438597915e-01, -9.822871922084567e-01, -9.980267241166327e-01, -9.980267241166327e-01, -9.822871922084567e-01, -9.510564438597915e-01, -9.048271948735948e-01, -8.443280367726912e-01, -7.70513292938244e-01, -6.845471041971509e-01, -5.877851217035711e-01, -4.817534392344727e-01, -3.68124877196207e-01, -2.486901212847727e-01, -1.253333533617908e-01, -4.898587410340671e-16] relCon.yOn=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_ResponseProcess.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_ResponseProcess.txt index 8a13b588b61..48584f13f7b 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_ResponseProcess.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_ResponseProcess.txt @@ -1,4 +1,4 @@ -last-generated=2023-09-19 +last-generated=2023-12-27 statistics-simulation= { "linear": " ", diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_BaseClasses_Validation_Gain.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_BaseClasses_Validation_Gain.txt index e7340fd1ce5..d4ad37dccc1 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_BaseClasses_Validation_Gain.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_BaseClasses_Validation_Gain.txt @@ -1,4 +1,4 @@ -last-generated=2023-09-19 +last-generated=2023-12-27 statistics-simulation= { "linear": " ", diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_BaseClasses_Validation_TimeConstantDelay.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_BaseClasses_Validation_TimeConstantDelay.txt index f47b7d401e8..3bf5ffdb7d0 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_BaseClasses_Validation_TimeConstantDelay.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_BaseClasses_Validation_TimeConstantDelay.txt @@ -1,4 +1,4 @@ -last-generated=2023-09-19 +last-generated=2023-12-27 statistics-simulation= { "linear": " ", diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_Validation_ControlProcessModel.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_Validation_ControlProcessModel.txt index 2a819467dfe..3b0be415079 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_Validation_ControlProcessModel.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_Validation_ControlProcessModel.txt @@ -1,4 +1,4 @@ -last-generated=2023-09-19 +last-generated=2023-12-27 statistics-simulation= { "linear": " ", diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_DirectActingPIDWithFirstOrderAMIGO.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_DirectActingPIDWithFirstOrderAMIGO.txt index 7adb0a1a016..e94a549a87f 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_DirectActingPIDWithFirstOrderAMIGO.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_DirectActingPIDWithFirstOrderAMIGO.txt @@ -1,4 +1,4 @@ -last-generated=2023-11-27 +last-generated=2023-12-27 statistics-simulation= { "linear": " ", @@ -8,12 +8,12 @@ statistics-simulation= } time=[0e+00, 1e+04] PID.u_s=[8.00000011920929e-01, 8.00000011920929e-01] -PID.u_m=[0e+00, 9.999529123306274e-01, 9.999995827674866e-01, 2.481618896126747e-03, -9.209431368617516e-07, 8.646680116653442e-01, 9.99992847442627e-01, 1.00000011920929e+00, 3.353178035467863e-04, 3.680234499370272e-07, 9.816855192184448e-01, 9.999986886978149e-01, 1.000000953674316e+00, 4.565741255646572e-05, -4.240747273342963e-07, 9.975219368934631e-01, 9.999996423721313e-01, 1.353366672992693e-01, 5.513567884918302e-06, 2.54376487873742e-07, 9.996645450592041e-01, 1.000000596046448e+00, 1.831774786114693e-02, 2.402083055130788e-06, 5.558368343372422e-07, 9.999493360519409e-01, 1.000000238418579e+00, 2.481072442606091e-03, -1.297765038543698e-06, 8.646639585494995e-01, 9.999890327453613e-01, 9.999999403953552e-01, 3.359213296789676e-04, -6.529444362968206e-08, 9.816862940788272e-01, 1.000000357627869e+00, 9.999993443489075e-01, 4.355499550001696e-05, -5.849470881003072e-07, 9.975262880325317e-01, 9.999997019767761e-01, 1.353341490030289e-01, 9.991781553253531e-06, -2.128344249285874e-06, 9.99663770198822e-01, 9.999992847442627e-01, 1.831896044313908e-02, 2.87289367406629e-06, -1.280822402804915e-06, 9.999557733535767e-01, 9.999999403953552e-01, 2.486077137291431e-03, 8.352884606210864e-08, 8.64664614200592e-01, 9.999970197677612e-01, 1.000000834465027e+00, 3.373299550730604e-04, 1.213078121509264e-06, 9.816852211952209e-01, 1.000000476837158e+00, 1e+00, 4.607145456247963e-05, 3.206718304227252e-07, 9.975227117538452e-01, 1.000001072883606e+00, 1.353338807821274e-01, 6.247963938221801e-06, -2.61645732280158e-06, 9.996637105941772e-01, 9.999999403953552e-01, 1.831003651022911e-02, 2.663874511199538e-06, -1.604295789547905e-06, 9.999539852142334e-01, 1.00000011920929e+00, 2.477718517184258e-03, 7.125596823698288e-08, 8.64664614200592e-01, 9.999963641166687e-01, 1e+00, 3.376349632162601e-04, 2.511874299670913e-06, 9.816854000091553e-01, 9.999997019767761e-01, 9.999982118606567e-01, 4.373506089905277e-05, 3.956753857892181e-07, 9.975239038467407e-01, 9.999996423721313e-01, 1.353354007005692e-01, 6.581487014045706e-06, -3.031005633147288e-07, 9.996647238731384e-01, 1.000000476837158e+00, 1.831415854394436e-02, -3.91474550553994e-08, -1.483704892280002e-07, 9.999539852142334e-01, 1e+00, 2.480224473401904e-03, 4.515759997048008e-07] +PID.u_m=[0e+00, 9.999529123306274e-01, 9.999995827674866e-01, 2.481618896126747e-03, -9.209431368617516e-07, 8.646680116653442e-01, 9.999932050704956e-01, 1.000000357627869e+00, 3.358848916832358e-04, 2.940470800183448e-08, 9.816846251487732e-01, 9.999994039535522e-01, 1.000000238418579e+00, 4.761837772093713e-05, -4.693725372817373e-07, 9.975225329399109e-01, 9.999977350234985e-01, 1.35334953665732e-01, 9.581360245647375e-06, -8.016966290824712e-08, 9.996625185012817e-01, 1.000003576278687e+00, 1.831681095063686e-02, 9.703677505967789e-07, -9.673858869518881e-08, 9.999532699584961e-01, 1.000001311302185e+00, 2.48020444996655e-03, 5.787431973658317e-07, 8.646644353866577e-01, 9.999924898147583e-01, 9.999990463256836e-01, 3.363183641340584e-04, -1.521406147730886e-06, 9.816855788230899e-01, 9.999987483024597e-01, 9.999997615814209e-01, 4.613236524164677e-05, -1.432624117114756e-07, 9.975218176841736e-01, 1.000001192092896e+00, 1.353335827589035e-01, 8.202897333831061e-06, 3.429302353197272e-08, 9.996668100357056e-01, 9.999991655349731e-01, 1.831079833209515e-02, -3.45406732549236e-07, 8.919226246462131e-08, 9.999552965164185e-01, 9.999988079071045e-01, 2.479476388543844e-03, -2.450231932016322e-06, 8.646639585494995e-01, 9.999975562095642e-01, 1.00000011920929e+00, 3.391160280443595e-04, 3.861942730054708e-07, 9.816851019859314e-01, 9.999994039535522e-01, 1e+00, 4.637599704437889e-05, 6.116929398558568e-07, 9.975245594978333e-01, 1.000000238418579e+00, 1.353349536657333e-01, 4.588444880937459e-06, 2.202093014602724e-07, 9.99665379524231e-01, 9.999976754188538e-01, 1.831593364477158e-02, 9.826603672991041e-07, 1.700996232756324e-09, 9.999542236328125e-01, 1.000000238418579e+00, 2.485320903360844e-03, 1.252666038453754e-06, 8.646631836891174e-01, 9.999940991401672e-01, 1e+00, 3.374420630279928e-04, -1.317341826734458e-07, 9.816865921020508e-01, 9.999993443489075e-01, 9.999970197677612e-01, 4.620182880898938e-05, -2.096025042419569e-07, 9.975236058235168e-01, 1.000001549720764e+00, 1.353335827589035e-01, 1.06016614154214e-05, 8.934088668866025e-07, 9.996664524078369e-01, 1e+00, 1.831691525876522e-02, 1.390104671372683e-06, 1.391251629456747e-07, 9.999536275863647e-01, 9.999999403953552e-01, 2.478922717273235e-03, -6.034152306710894e-07] PIDWitTun.u_s=[8.00000011920929e-01, 8.00000011920929e-01] -PIDWitTun.u_m=[0e+00, 9.999529123306274e-01, 9.999995827674866e-01, 2.481618896126747e-03, -9.209431368617516e-07, 8.646680116653442e-01, 9.99992847442627e-01, 1.00000011920929e+00, 3.353178035467863e-04, 3.680234499370272e-07, 1.079854011535645e+00, 1.099998593330383e+00, 1.100001096725464e+00, 5.022315235692076e-05, -4.664821915412131e-07, 9.975219368934631e-01, 9.999996423721313e-01, 6.662226319313044e-01, 6.13982081413269e-01, 6.139800548553467e-01, 9.217122793197632e-01, 9.218156933784485e-01, 7.070821523666382e-01, 7.030758261680603e-01, 7.030754089355469e-01, 8.689492344856262e-01, 8.689576983451843e-01, 7.480440139770508e-01, 7.477431297302246e-01, 8.259584903717041e-01, 8.381996154785156e-01, 8.382006287574768e-01, 7.715213894844055e-01, 7.7149897813797e-01, 8.201120495796204e-01, 8.210189342498779e-01, 8.210188746452332e-01, 7.84398078918457e-01, 7.843964695930481e-01, 8.114728927612305e-01, 8.115400671958923e-01, 7.941663265228271e-01, 7.914472222328186e-01, 7.914469838142395e-01, 8.063263893127441e-01, 8.063313961029053e-01, 7.955118417739868e-01, 7.953099608421326e-01, 7.953099012374878e-01, 8.034725189208984e-01, 8.034728765487671e-01, 7.974428534507751e-01, 7.974278330802917e-01, 8.012989163398743e-01, 8.019047975540161e-01, 8.019048571586609e-01, 7.985904216766357e-01, 7.98589289188385e-01, 8.009997606277466e-01, 8.01044762134552e-01, 8.01044762134552e-01, 7.992263436317444e-01, 7.992262840270996e-01, 8.005696535110474e-01, 8.005729913711548e-01, 7.997106313705444e-01, 7.995756268501282e-01, 7.995756268501282e-01, 2.688951208256079e-04, 6.088590964737912e-08, 1.079859018325806e+00, 1.099997043609619e+00, 1.100001811981201e+00, 5.061423507868312e-05, -1.225616728106615e-07, 9.975222945213318e-01, 9.999999403953552e-01, 7.589147090911865e-01, 7.211815714836121e-01, 7.211805582046509e-01, 8.893374800682068e-01, 8.893938660621643e-01, 7.477635145187378e-01, 7.451212406158447e-01, 7.451214790344238e-01, 8.465710282325745e-01, 8.465753793716431e-01, 7.672640085220337e-01, 7.670671343803406e-01, 8.177893161773682e-01, 8.257278800010681e-01, 8.257282972335815e-01, 7.810003757476807e-01, 7.809852957725525e-01, 8.138757348060608e-01, 8.144893646240234e-01, 8.144893646240234e-01, 7.891457080841064e-01, 7.891445159912109e-01, 8.081621527671814e-01, 8.082094788551331e-01] +PIDWitTun.u_m=[0e+00, 9.999529123306274e-01, 9.999995827674866e-01, 2.481618896126747e-03, -9.209431368617516e-07, 8.646680116653442e-01, 9.999932050704956e-01, 1.000000357627869e+00, 3.358848916832358e-04, 2.940470800183448e-08, 8.835161924362183e-01, 8.999994993209839e-01, 9.000002145767212e-01, 4.285653994884342e-05, -4.224352778692216e-07, 7.606544494628906e-01, 7.625418901443481e-01, 6.380224227905271e-01, 6.185340881347656e-01, 6.185327172279358e-01, 7.772369384765625e-01, 7.772910594940186e-01, 7.580716609954834e-01, 7.577130794525146e-01, 7.577130794525146e-01, 7.915868163108826e-01, 7.915884256362915e-01, 7.899034023284912e-01, 7.898992300033569e-01, 7.963193655014038e-01, 7.973241806030273e-01, 7.973242402076721e-01, 7.975345253944397e-01, 7.975345849990845e-01, 7.99177348613739e-01, 7.992079854011536e-01, 7.992079854011536e-01, 7.993872165679932e-01, 7.993872761726379e-01, 7.997738718986511e-01, 7.997748255729675e-01, 7.998359203338623e-01, 7.998454570770264e-01, 7.998454570770264e-01, 7.999374866485596e-01, 7.999375462532043e-01, 7.999601364135742e-01, 7.999605536460876e-01, 7.999605536460876e-01, 7.999829649925232e-01, 7.999829649925232e-01, 7.999898195266724e-01, 7.999898791313171e-01, 7.999946475028992e-01, 7.999953627586365e-01, 7.999953627586365e-01, 7.999973893165588e-01, 7.999973893165588e-01, 7.999987602233887e-01, 7.999987602233887e-01, 7.999987602233887e-01, 7.999992966651917e-01, 7.999992966651917e-01, 7.999996542930603e-01, 7.999996542930603e-01, 7.999997735023499e-01, 7.999998331069946e-01, 7.999998331069946e-01, 8.999665379524231e-01, 8.999997973442078e-01, 1.64843387901783e-02, 8.843942964631424e-07, 1.53089652066285e-09, 8.999587893486023e-01, 9.000002145767212e-01, 9.119789004325867e-01, 9.120087623596191e-01, 8.587151169776917e-01, 8.503739833831787e-01, 8.503736257553101e-01, 8.352669477462769e-01, 8.352618813514709e-01, 8.19701611995697e-01, 8.194113373756409e-01, 8.194113969802856e-01, 8.121026158332825e-01, 8.121022582054138e-01, 8.070738315582275e-01, 8.070613145828247e-01, 8.046444058418274e-01, 8.042661547660828e-01, 8.04266095161438e-01, 8.025308847427368e-01, 8.025302886962891e-01, 8.015339970588684e-01, 8.015154004096985e-01, 8.015154004096985e-01, 8.009029626846313e-01, 8.009029626846313e-01, 8.005403876304626e-01, 8.00539493560791e-01] autTunSig.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] PIDWitTun.inTunPro.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] -PIDWitTun.con.y=[0e+00, 1e+00, 1e+00, 0e+00, 0e+00, 3.339030146598816e-01, 1e+00, 1e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 2.935444116592407e-01, 0e+00, 2.359967529773712e-01, 3.188047111034393e-01, 2.245716452598573e-01, 1.719591170549393e-01, 9.381375461816788e-02, 2.150962501764297e-01, 2.662199437618256e-01, 2.105190604925156e-01, 1.717598885297775e-01, 1.310423612594604e-01, 2.117044627666473e-01, 2.406691908836365e-01, 2.011675089597702e-01, 1.7936173081398e-01, 1.991785168647766e-01, 2.092439830303192e-01, 2.252914607524872e-01, 1.981272399425507e-01, 1.861650198698044e-01, 1.983869373798371e-01, 2.067735195159912e-01, 2.156035304069519e-01, 1.976361572742462e-01, 1.910819560289383e-01, 1.998595148324966e-01, 2.04674631357193e-01, 2.00244203209877e-01, 1.979801803827286e-01, 1.943872272968292e-01, 2.004368603229523e-01, 2.030942142009735e-01, 2.003689557313919e-01, 1.984973698854446e-01, 1.965270936489105e-01, 2.005298137664795e-01, 2.019885927438736e-01, 2.000328451395035e-01, 1.98959618806839e-01, 1.999463886022568e-01, 2.004504650831223e-01, 2.012506723403931e-01, 1.999029368162155e-01, 1.99310839176178e-01, 1.999179273843765e-01, 2.00334832072258e-01, 2.007737159729004e-01, 1.998820155858994e-01, 1.995570063591003e-01, 1.999927014112473e-01, 2.002317756414413e-01, 2.000119537115097e-01, 1.998996436595917e-01, 1.997213810682297e-01, 0e+00, 0e+00, 1.599705666303635e-01, 2.761540710926056e-01, 4.021807312965393e-01, 0e+00, 0e+00, 1.26780703663826e-01, 2.10644543170929e-01, 1.638688296079636e-01, 1.509064137935638e-01, 1.173226088285446e-01, 1.939653754234314e-01, 2.320247888565067e-01, 1.987468898296356e-01, 1.768081188201904e-01, 1.534245610237122e-01, 2.05151692032814e-01, 2.249947339296341e-01, 1.994225382804871e-01, 1.854977011680603e-01, 1.992357969284058e-01, 2.058597207069397e-01, 2.168221324682236e-01, 1.984656602144241e-01, 1.903718709945679e-01, 1.988433450460434e-01, 2.046816647052765e-01, 2.108554691076279e-01, 1.982655078172684e-01, 1.936407089233398e-01, 1.999057978391647e-01, 2.033779472112656e-01] -PIDWitTun.con.k=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01] -PIDWitTun.con.Ti=[5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01] -PIDWitTun.con.Td=[1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.845904541015625e+01, 1.943826293945312e+01, 1.943826293945312e+01, 1.943826293945312e+01, 1.943826293945312e+01, 1.943826293945312e+01, 1.943826293945312e+01, 1.943826293945312e+01, 1.943826293945312e+01, 1.943826293945312e+01, 1.943826293945312e+01, 1.943826293945312e+01, 1.943826293945312e+01, 1.943826293945312e+01, 1.943826293945312e+01, 1.943826293945312e+01, 1.943826293945312e+01, 1.943826293945312e+01, 1.943826293945312e+01, 1.943826293945312e+01, 1.943826293945312e+01, 1.943826293945312e+01, 1.943826293945312e+01, 1.943826293945312e+01, 1.943826293945312e+01, 1.943826293945312e+01, 1.943826293945312e+01, 1.943826293945312e+01, 1.943826293945312e+01] +PIDWitTun.con.y=[0e+00, 1e+00, 1e+00, 0e+00, 0e+00, 3.339030146598816e-01, 1e+00, 1e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 5.630466341972351e-01, 3.304944634437555e-01, 4.028897881507874e-01, 3.901810348033905e-01, 3.203324675559998e-01, 2.860205173492432e-01, 2.332615405321121e-01, 2.529027760028839e-01, 2.462480068206787e-01, 2.326554656028748e-01, 2.207061946392059e-01, 2.084116190671921e-01, 2.135261595249176e-01, 2.110789865255356e-01, 2.079578191041946e-01, 2.050251215696335e-01, 2.051280736923218e-01, 2.033990174531937e-01, 2.026210129261017e-01, 2.019389718770981e-01, 2.012221068143845e-01, 2.011028230190277e-01, 2.00843021273613e-01, 2.006127536296844e-01, 2.004746049642563e-01, 2.002964466810226e-01, 2.002733051776886e-01, 2.002069056034088e-01, 2.001703679561615e-01, 2.001163810491562e-01, 2.000714540481567e-01, 2.000685036182404e-01, 2.000503242015839e-01, 2.000403851270676e-01, 2.000285238027573e-01, 2.00017049908638e-01, 2.000170946121216e-01, 2.00012132525444e-01, 2.000099271535873e-01, 2.000069618225098e-01, 2.00006291270256e-01, 2.000042349100113e-01, 2.000028938055038e-01, 2.000024616718292e-01, 2.000017017126083e-01, 2.000014334917068e-01, 2.000010460615158e-01, 2.000006884336472e-01, 2.000006139278412e-01, 2.000004053115845e-01, 2.000003457069397e-01, 2.000002562999725e-01, 2.000002264976501e-01, 2.000001519918442e-01, 2.000000923871994e-01, 2.456048429012301e-01, 2.746470570564267e-01, 1.658154837787151e-02, 0e+00, 0e+00, 5.709126219153404e-02, 7.915584743022919e-02, 1.051105260848999e-01, 1.298341155052185e-01, 1.356063038110733e-01, 1.513861864805222e-01, 1.625128388404846e-01, 1.681240648031235e-01, 1.759155094623567e-01, 1.791598945856094e-01, 1.836102157831192e-01, 1.878977417945862e-01, 1.891960799694061e-01, 1.918694078922272e-01, 1.929194331169128e-01, 1.944861263036728e-01, 1.951855272054672e-01, 1.963389217853546e-01, 1.9728122651577e-01, 1.975900232791901e-01, 1.981492340564728e-01, 1.984171718358994e-01, 1.987623125314713e-01, 1.990970373153687e-01, 1.991812884807587e-01, 1.993807405233383e-01, 1.994631588459015e-01, 1.995828151702881e-01] +PIDWitTun.con.k=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.101579010486603e-01, 2.101579010486603e-01, 2.101579010486603e-01, 2.101579010486603e-01, 2.101579010486603e-01, 2.101579010486603e-01, 2.101579010486603e-01, 2.101579010486603e-01, 2.101579010486603e-01, 2.101579010486603e-01, 2.101579010486603e-01, 2.101579010486603e-01, 2.101579010486603e-01, 2.101579010486603e-01, 2.101579010486603e-01, 2.101579010486603e-01, 2.101579010486603e-01, 2.101579010486603e-01, 2.101579010486603e-01, 2.101579010486603e-01, 2.101579010486603e-01, 2.101579010486603e-01, 2.101579010486603e-01, 2.101579010486603e-01, 2.101579010486603e-01, 2.101579010486603e-01, 2.101579010486603e-01, 2.101579010486603e-01] +PIDWitTun.con.Ti=[5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 9.514640045166016e+01, 9.514640045166016e+01, 9.514640045166016e+01, 9.514640045166016e+01, 9.514640045166016e+01, 9.514640045166016e+01, 9.514640045166016e+01, 9.514640045166016e+01, 9.514640045166016e+01, 9.514640045166016e+01, 9.514640045166016e+01, 9.514640045166016e+01, 9.514640045166016e+01, 9.514640045166016e+01, 9.514640045166016e+01, 9.514640045166016e+01, 9.514640045166016e+01, 9.514640045166016e+01, 9.514640045166016e+01, 9.514640045166016e+01, 9.514640045166016e+01, 9.514640045166016e+01, 9.514640045166016e+01, 9.514640045166016e+01, 9.514640045166016e+01, 9.514640045166016e+01, 9.514640045166016e+01, 9.514640045166016e+01] +PIDWitTun.con.Td=[1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 2.627090644836426e+01, 2.627090644836426e+01, 2.627090644836426e+01, 2.627090644836426e+01, 2.627090644836426e+01, 2.627090644836426e+01, 2.627090644836426e+01, 2.627090644836426e+01, 2.627090644836426e+01, 2.627090644836426e+01, 2.627090644836426e+01, 2.627090644836426e+01, 2.627090644836426e+01, 2.627090644836426e+01, 2.627090644836426e+01, 2.627090644836426e+01, 2.627090644836426e+01, 2.627090644836426e+01, 2.627090644836426e+01, 2.627090644836426e+01, 2.627090644836426e+01, 2.627090644836426e+01, 2.627090644836426e+01, 2.627090644836426e+01, 2.627090644836426e+01, 2.627090644836426e+01, 2.627090644836426e+01, 2.627090644836426e+01] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_DirectActingPIWithFirstOrderAMIGO.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_DirectActingPIWithFirstOrderAMIGO.txt index 11d3807fbde..73432d884dd 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_DirectActingPIWithFirstOrderAMIGO.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_DirectActingPIWithFirstOrderAMIGO.txt @@ -1,18 +1,18 @@ -last-generated=2023-11-27 +last-generated=2023-12-27 statistics-simulation= { "linear": " ", "nonlinear": " ", - "number of continuous time states": "7", + "number of continuous time states": "6", "numerical Jacobians": "0" } time=[0e+00, 1e+04] PI.u_s=[8.00000011920929e-01, 8.00000011920929e-01] -PI.u_m=[0e+00, 9.999529123306274e-01, 9.999995827674866e-01, 2.481618896126747e-03, -9.209431368617516e-07, 8.646680116653442e-01, 9.99992847442627e-01, 1.00000011920929e+00, 3.353178035467863e-04, 3.680234499370272e-07, 9.816855192184448e-01, 9.999986886978149e-01, 1.000000953674316e+00, 4.565741255646572e-05, -4.240747273342963e-07, 9.975219368934631e-01, 9.999996423721313e-01, 1.353366672992693e-01, 5.513567884918302e-06, 2.54376487873742e-07, 9.996645450592041e-01, 1.000000596046448e+00, 1.831774786114693e-02, 2.402083055130788e-06, 5.558368343372422e-07, 9.999493360519409e-01, 1.000000238418579e+00, 2.481072442606091e-03, -1.297765038543698e-06, 8.646639585494995e-01, 9.999890327453613e-01, 9.999999403953552e-01, 3.359213296789676e-04, -6.529444362968206e-08, 9.816862940788272e-01, 1.000000357627869e+00, 9.999993443489075e-01, 4.355499550001696e-05, -5.849470881003072e-07, 9.975262880325317e-01, 9.999997019767761e-01, 1.353341490030289e-01, 9.991781553253531e-06, -2.128344249285874e-06, 9.99663770198822e-01, 9.999992847442627e-01, 1.831896044313908e-02, 2.87289367406629e-06, -1.280822402804915e-06, 9.999557733535767e-01, 9.999999403953552e-01, 2.486077137291431e-03, 8.352884606210864e-08, 8.64664614200592e-01, 9.999970197677612e-01, 1.000000834465027e+00, 3.373299550730604e-04, 1.213078121509264e-06, 9.816852211952209e-01, 1.000000476837158e+00, 1e+00, 4.607145456247963e-05, 3.206718304227252e-07, 9.975227117538452e-01, 1.000001072883606e+00, 1.353338807821274e-01, 6.247963938221801e-06, -2.61645732280158e-06, 9.996637105941772e-01, 9.999999403953552e-01, 1.831003651022911e-02, 2.663874511199538e-06, -1.604295789547905e-06, 9.999539852142334e-01, 1.00000011920929e+00, 2.477718517184258e-03, 7.125596823698288e-08, 8.64664614200592e-01, 9.999963641166687e-01, 1e+00, 3.376349632162601e-04, 2.511874299670913e-06, 9.816854000091553e-01, 9.999997019767761e-01, 9.999982118606567e-01, 4.373506089905277e-05, 3.956753857892181e-07, 9.975239038467407e-01, 9.999996423721313e-01, 1.353354007005692e-01, 6.581487014045706e-06, -3.031005633147288e-07, 9.996647238731384e-01, 1.000000476837158e+00, 1.831415854394436e-02, -3.91474550553994e-08, -1.483704892280002e-07, 9.999539852142334e-01, 1e+00, 2.480224473401904e-03, 4.515759997048008e-07] +PI.u_m=[0e+00, 9.999547004699707e-01, 1.000000238418579e+00, 2.480137394741178e-03, -2.153460911813454e-07, 8.646676540374756e-01, 9.999932050704956e-01, 1.000000596046448e+00, 3.360328264534473e-04, -1.819523909318832e-08, 9.816848039627075e-01, 9.999990463256836e-01, 9.999995231628418e-01, 4.631499905372038e-05, 1.66708900906086e-07, 9.97524082660675e-01, 1.000003695487976e+00, 1.353332102298723e-01, 8.551610335416626e-06, -8.360113668004487e-08, 9.996616840362549e-01, 1.000002861022949e+00, 1.831654086709023e-02, 7.27236226794048e-07, -2.911429142216093e-08, 9.999535083770752e-01, 1.000000238418579e+00, 2.479862421751022e-03, -1.559150859975484e-06, 8.646684288978577e-01, 9.999932050704956e-01, 9.999995827674866e-01, 3.364877193234861e-04, 2.764544682065662e-08, 9.816818237304691e-01, 9.999982714653015e-01, 1.00000011920929e+00, 4.689610796049237e-05, 7.025527537507514e-08, 9.975205063819885e-01, 1.000000238418579e+00, 1.353349983692169e-01, 8.521654308424331e-06, -3.126183116819448e-07, 9.996613264083862e-01, 1.00000011920929e+00, 1.831790432333946e-02, 2.934876874860493e-06, -3.257808955936525e-08, 9.999547600746155e-01, 1e+00, 2.480624942108989e-03, 1.10450955048691e-07, 8.646685481071472e-01, 9.999921321868896e-01, 9.999998211860657e-01, 3.364789008628446e-04, 4.021998734061877e-08, 9.816821217536926e-01, 1.000002145767212e+00, 9.999992251396179e-01, 4.605128560797311e-05, 4.935427355690081e-08, 9.975223541259766e-01, 1.000001311302185e+00, 1.353337913751602e-01, 2.585666834420408e-06, 2.140551345064523e-07, 9.996639490127563e-01, 9.999997019767761e-01, 1.831408403813839e-02, 7.376625035249162e-07, -6.128479390632435e-10, 9.999551773071289e-01, 9.999997615814209e-01, 2.481865463778377e-03, 5.394439028805209e-08, 8.646684288978577e-01, 9.999927878379822e-01, 9.999988675117493e-01, 3.366093151271343e-04, 1.384296695050709e-07, 9.816855788230896e-01, 9.999998807907104e-01, 1.00000011920929e+00, 4.665494634537026e-05, 2.791634301502199e-07, 9.975269436836243e-01, 1.00000011920929e+00, 1.353332102298737e-01, 8.552294275432359e-06, 2.768251476936712e-07, 9.996631741523743e-01, 1.000001668930054e+00, 1.83132141828537e-02, 4.918724698654842e-06, 6.307139699401887e-08, 9.999521374702454e-01, 9.99998152256012e-01, 2.482534619048238e-03, -2.26219140131434e-06] PIWitTun.u_s=[8.00000011920929e-01, 8.00000011920929e-01] -PIWitTun.u_m=[0e+00, 9.999529123306274e-01, 9.999995827674866e-01, 2.481618896126747e-03, -9.209431368617516e-07, 8.646680116653442e-01, 9.99992847442627e-01, 1.00000011920929e+00, 3.353178035467863e-04, 3.680234499370272e-07, 1.079854011535645e+00, 1.099998593330383e+00, 1.100001096725464e+00, 5.022315235692076e-05, -4.664821915412131e-07, 9.975219368934631e-01, 9.999996423721313e-01, 6.662226319313044e-01, 6.13982081413269e-01, 6.139800548553467e-01, 9.217122793197632e-01, 9.218156933784485e-01, 7.070821523666382e-01, 7.030758261680603e-01, 7.030754089355469e-01, 8.689492344856262e-01, 8.689576983451843e-01, 7.480440139770508e-01, 7.477431297302246e-01, 8.259584903717041e-01, 8.381996154785156e-01, 8.382006287574768e-01, 7.715213894844055e-01, 7.7149897813797e-01, 8.201120495796204e-01, 8.210189342498779e-01, 8.210188746452332e-01, 7.84398078918457e-01, 7.843964695930481e-01, 8.114728927612305e-01, 8.115400671958923e-01, 7.941663265228271e-01, 7.914472222328186e-01, 7.914469838142395e-01, 8.063263893127441e-01, 8.063313961029053e-01, 7.955118417739868e-01, 7.953099608421326e-01, 7.953099012374878e-01, 8.034725189208984e-01, 8.034728765487671e-01, 7.974428534507751e-01, 7.974278330802917e-01, 8.012989163398743e-01, 8.019047975540161e-01, 8.019048571586609e-01, 7.985904216766357e-01, 7.98589289188385e-01, 8.009997606277466e-01, 8.01044762134552e-01, 8.01044762134552e-01, 7.992263436317444e-01, 7.992262840270996e-01, 8.005696535110474e-01, 8.005729913711548e-01, 7.997106313705444e-01, 7.995756268501282e-01, 7.995756268501282e-01, 2.688951208256079e-04, 6.088590964737912e-08, 1.079859018325806e+00, 1.099997043609619e+00, 1.100001811981201e+00, 5.061423507868312e-05, -1.225616728106615e-07, 9.975222945213318e-01, 9.999999403953552e-01, 7.589147090911865e-01, 7.211815714836121e-01, 7.211805582046509e-01, 8.893374800682068e-01, 8.893938660621643e-01, 7.477635145187378e-01, 7.451212406158447e-01, 7.451214790344238e-01, 8.465710282325745e-01, 8.465753793716431e-01, 7.672640085220337e-01, 7.670671343803406e-01, 8.177893161773682e-01, 8.257278800010681e-01, 8.257282972335815e-01, 7.810003757476807e-01, 7.809852957725525e-01, 8.138757348060608e-01, 8.144893646240234e-01, 8.144893646240234e-01, 7.891457080841064e-01, 7.891445159912109e-01, 8.081621527671814e-01, 8.082094788551331e-01] +PIWitTun.u_m=[0e+00, 9.999547004699707e-01, 1.000000238418579e+00, 2.480137394741178e-03, -2.153460911813454e-07, 8.646676540374756e-01, 9.999932050704956e-01, 1.000000596046448e+00, 3.360328264534473e-04, -1.819523909318832e-08, 8.835163116455078e-01, 8.999991416931152e-01, 8.999995589256287e-01, 4.168349914834835e-05, 1.500380051311355e-07, 6.425104737281799e-01, 6.441075801849365e-01, 6.501051783561707e-01, 6.510442495346069e-01, 6.510443091392517e-01, 7.428301572799683e-01, 7.428615093231201e-01, 7.651839852333069e-01, 7.656005024909973e-01, 7.656005024909973e-01, 7.838445901870728e-01, 7.838454842567444e-01, 7.913357019424438e-01, 7.913543581962585e-01, 7.951021790504456e-01, 7.956886887550354e-01, 7.956887483596802e-01, 7.977668642997742e-01, 7.977675199508667e-01, 7.988470196723938e-01, 7.988671660423279e-01, 7.988671660423279e-01, 7.994188666343689e-01, 7.994189262390137e-01, 7.997029423713684e-01, 7.997036576271057e-01, 7.99828827381134e-01, 7.998483777046204e-01, 7.998483777046204e-01, 7.999225258827209e-01, 7.999225854873657e-01, 7.999597191810608e-01, 7.999604344367981e-01, 7.999604344367981e-01, 7.999797463417053e-01, 7.999797463417053e-01, 7.99989640712738e-01, 7.99989640712738e-01, 7.999940514564514e-01, 7.999947071075439e-01, 7.999947071075439e-01, 7.999973297119141e-01, 7.999973297119141e-01, 7.999985814094543e-01, 7.999986410140991e-01, 7.999986410140991e-01, 7.999992966651917e-01, 7.999992966651917e-01, 7.999996542930603e-01, 7.999996542930603e-01, 7.999997735023499e-01, 7.999998331069946e-01, 7.999998331069946e-01, 8.999664187431335e-01, 8.999999761581421e-01, 1.648267544806004e-02, 6.638962304350571e-07, -5.515630729924226e-10, 8.999596834182739e-01, 8.99999737739563e-01, 9.259396195411682e-01, 9.2600417137146e-01, 8.68955135345459e-01, 8.600267171859741e-01, 8.600262999534607e-01, 8.387858867645264e-01, 8.387787342071533e-01, 8.225767612457275e-01, 8.222745060920715e-01, 8.222745060920715e-01, 8.133535981178284e-01, 8.133531808853149e-01, 8.078921437263489e-01, 8.078786134719849e-01, 8.051093220710754e-01, 8.046759366989136e-01, 8.046759366989136e-01, 8.027697205543518e-01, 8.027691245079041e-01, 8.016618490219116e-01, 8.016412258148193e-01, 8.016411662101746e-01, 8.009724617004395e-01, 8.009724020957947e-01, 8.005772233009338e-01, 8.005762100219727e-01] autTunSig.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] PIWitTun.inTunPro.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] -PIWitTun.con.y=[0e+00, 1e+00, 1e+00, 0e+00, 0e+00, 3.339030146598816e-01, 1e+00, 1e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 2.935444116592407e-01, 0e+00, 2.359967529773712e-01, 3.188047111034393e-01, 2.245716452598573e-01, 1.719591170549393e-01, 9.381375461816788e-02, 2.150962501764297e-01, 2.662199437618256e-01, 2.105190604925156e-01, 1.717598885297775e-01, 1.310423612594604e-01, 2.117044627666473e-01, 2.406691908836365e-01, 2.011675089597702e-01, 1.7936173081398e-01, 1.991785168647766e-01, 2.092439830303192e-01, 2.252914607524872e-01, 1.981272399425507e-01, 1.861650198698044e-01, 1.983869373798371e-01, 2.067735195159912e-01, 2.156035304069519e-01, 1.976361572742462e-01, 1.910819560289383e-01, 1.998595148324966e-01, 2.04674631357193e-01, 2.00244203209877e-01, 1.979801803827286e-01, 1.943872272968292e-01, 2.004368603229523e-01, 2.030942142009735e-01, 2.003689557313919e-01, 1.984973698854446e-01, 1.965270936489105e-01, 2.005298137664795e-01, 2.019885927438736e-01, 2.000328451395035e-01, 1.98959618806839e-01, 1.999463886022568e-01, 2.004504650831223e-01, 2.012506723403931e-01, 1.999029368162155e-01, 1.99310839176178e-01, 1.999179273843765e-01, 2.00334832072258e-01, 2.007737159729004e-01, 1.998820155858994e-01, 1.995570063591003e-01, 1.999927014112473e-01, 2.002317756414413e-01, 2.000119537115097e-01, 1.998996436595917e-01, 1.997213810682297e-01, 0e+00, 0e+00, 1.599705666303635e-01, 2.761540710926056e-01, 4.021807312965393e-01, 0e+00, 0e+00, 1.26780703663826e-01, 2.10644543170929e-01, 1.638688296079636e-01, 1.509064137935638e-01, 1.173226088285446e-01, 1.939653754234314e-01, 2.320247888565067e-01, 1.987468898296356e-01, 1.768081188201904e-01, 1.534245610237122e-01, 2.05151692032814e-01, 2.249947339296341e-01, 1.994225382804871e-01, 1.854977011680603e-01, 1.992357969284058e-01, 2.058597207069397e-01, 2.168221324682236e-01, 1.984656602144241e-01, 1.903718709945679e-01, 1.988433450460434e-01, 2.046816647052765e-01, 2.108554691076279e-01, 1.982655078172684e-01, 1.936407089233398e-01, 1.999057978391647e-01, 2.033779472112656e-01] -PIWitTun.con.k=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.5361048579216e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01, 3.568309545516968e-01] -PIWitTun.con.Ti=[5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.417364501953125e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01, 8.374494934082031e+01] +PIWitTun.con.y=[0e+00, 1e+00, 1e+00, 0e+00, 0e+00, 3.34646075963974e-01, 1e+00, 1e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 6.465995311737061e-01, 4.389516413211818e-01, 4.215656816959381e-01, 3.813263773918152e-01, 3.420633375644683e-01, 3.035329580307007e-01, 2.648711204528809e-01, 2.581239640712738e-01, 2.432978451251984e-01, 2.339531928300858e-01, 2.250830233097076e-01, 2.16154545545578e-01, 2.145156860351562e-01, 2.103228569030762e-01, 2.083478718996048e-01, 2.061064690351486e-01, 2.04612135887146e-01, 2.035752534866333e-01, 2.024562656879425e-01, 2.020598351955414e-01, 2.014804929494858e-01, 2.011663466691971e-01, 2.008751332759857e-01, 2.005811035633087e-01, 2.005075067281723e-01, 2.003566920757294e-01, 2.002899646759033e-01, 2.00213149189949e-01, 2.001612633466721e-01, 2.001246511936188e-01, 2.000852972269058e-01, 2.000717371702194e-01, 2.000516355037689e-01, 2.000406682491302e-01, 2.000304907560349e-01, 2.000202238559723e-01, 2.000176906585693e-01, 2.000124305486679e-01, 2.000101059675217e-01, 2.000074237585068e-01, 2.000056207180023e-01, 2.000043392181396e-01, 2.000029683113098e-01, 2.000025063753128e-01, 2.000018060207367e-01, 2.000014185905457e-01, 2.00001060962677e-01, 2.000007033348083e-01, 2.000006139278412e-01, 2.000004351139069e-01, 2.000003457069397e-01, 2.000002562999725e-01, 2.000001966953278e-01, 2.000001519918442e-01, 2.000001072883606e-01, 2.347591817379e-01, 2.607191503047941e-01, 6.954696029424667e-02, 0e+00, 0e+00, 4.501063749194145e-02, 6.571582704782486e-02, 9.301628917455673e-02, 1.191075071692467e-01, 1.350456029176712e-01, 1.463108062744141e-01, 1.587361693382263e-01, 1.648829281330109e-01, 1.729091852903367e-01, 1.774644553661346e-01, 1.820359975099564e-01, 1.866468042135239e-01, 1.882516890764236e-01, 1.91015750169754e-01, 1.923902779817581e-01, 1.940193772315979e-01, 1.951578110456467e-01, 1.960694044828415e-01, 1.970373243093491e-01, 1.974417567253113e-01, 1.98014885187149e-01, 1.983508169651031e-01, 1.986878514289856e-01, 1.990275830030441e-01, 1.991419792175293e-01, 1.993432641029358e-01, 1.99443981051445e-01, 1.99563130736351e-01] +PIWitTun.con.k=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.506453603506088e-01, 1.506453603506088e-01, 1.506453603506088e-01, 1.506453603506088e-01, 1.506453603506088e-01, 1.506453603506088e-01, 1.506453603506088e-01, 1.506453603506088e-01, 1.506453603506088e-01, 1.506453603506088e-01, 1.506453603506088e-01, 1.506453603506088e-01, 1.506453603506088e-01, 1.506453603506088e-01, 1.506453603506088e-01, 1.506453603506088e-01, 1.506453603506088e-01, 1.506453603506088e-01, 1.506453603506088e-01, 1.506453603506088e-01, 1.506453603506088e-01, 1.506453603506088e-01, 1.506453603506088e-01, 1.506453603506088e-01, 1.506453603506088e-01, 1.506453603506088e-01, 1.506453603506088e-01, 1.506453603506088e-01] +PIWitTun.con.Ti=[5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 7.277561187744141e+01, 7.277561187744141e+01, 7.277561187744141e+01, 7.277561187744141e+01, 7.277561187744141e+01, 7.277561187744141e+01, 7.277561187744141e+01, 7.277561187744141e+01, 7.277561187744141e+01, 7.277561187744141e+01, 7.277561187744141e+01, 7.277561187744141e+01, 7.277561187744141e+01, 7.277561187744141e+01, 7.277561187744141e+01, 7.277561187744141e+01, 7.277561187744141e+01, 7.277561187744141e+01, 7.277561187744141e+01, 7.277561187744141e+01, 7.277561187744141e+01, 7.277561187744141e+01, 7.277561187744141e+01, 7.277561187744141e+01, 7.277561187744141e+01, 7.277561187744141e+01, 7.277561187744141e+01, 7.277561187744141e+01] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_ReverseActingPIDWithFirstOrderAMIGO.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_ReverseActingPIDWithFirstOrderAMIGO.txt index 810b4dea907..002c97cddb0 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_ReverseActingPIDWithFirstOrderAMIGO.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_ReverseActingPIDWithFirstOrderAMIGO.txt @@ -1,4 +1,4 @@ -last-generated=2023-12-06 +last-generated=2023-12-27 statistics-simulation= { "linear": " ", @@ -8,12 +8,12 @@ statistics-simulation= } time=[0e+00, 1e+04] PID.u_s=[8.00000011920929e-01, 8.00000011920929e-01] -PID.u_m=[0e+00, 7.999616265296936e-01, 7.999999523162842e-01, 9.993995428085327e-01, 9.998931288719177e-01, 1.353196501731873e-01, 7.387421646853909e-06, -8.588997246761294e-08, 9.996626377105713e-01, 9.999998211860657e-01, 1.831911504268646e-02, 1.068781330104684e-06, -8.706638965350066e-08, 9.999533891677856e-01, 1.00000011920929e+00, 2.479576040059328e-03, 1.121746208809782e-06, 8.646638989448561e-01, 9.999935030937195e-01, 9.999998211860657e-01, 3.375628730282187e-04, -6.60414301023593e-08, 9.816861748695374e-01, 9.99996542930603e-01, 9.999983906745911e-01, 4.730629734694958e-05, 2.078003035421716e-06, 9.975242018699646e-01, 9.999957680702209e-01, 1.353354752063751e-01, 9.875457180896774e-06, -7.394492484991133e-08, 9.996583461761475e-01, 9.999992251396179e-01, 1.831531524658167e-02, 7.9140846764858e-07, 7.73227725403558e-07, 9.999507069587708e-01, 9.999967813491821e-01, 2.477406291291118e-03, -6.851237088767448e-08, 8.646674156188965e-01, 9.999933242797852e-01, 1.00000011920929e+00, 3.37351142661646e-04, -7.121252565411851e-07, 9.816848635673523e-01, 9.999986290931702e-01, 1.000000238418579e+00, 4.623251516022719e-05, -2.070803759579576e-07, 9.975234866142273e-01, 1.000000238418579e+00, 1.353340446949005e-01, 9.325593055109493e-06, -2.736818203175062e-07, 9.996649622917175e-01, 1.000001192092896e+00, 1.831496879458427e-02, 4.971052476321347e-07, 9.243087184529486e-09, 9.999537467956543e-01, 1e+00, 2.481590025126934e-03, -1.843162294790091e-06, 8.646670579910278e-01, 9.999902248382568e-01, 1.00000011920929e+00, 3.360872215125578e-04, -1.963165004781334e-06, 9.816852807998657e-01, 9.999991059303284e-01, 1e+00, 4.846314550377429e-05, -1.058807583831367e-06, 9.975221753120422e-01, 1.000000596046448e+00, 1.353335380554199e-01, 8.785174031800125e-06, 8.739137768998262e-08, 9.996626377105713e-01, 9.999991059303284e-01, 1.831316389143467e-02, 1.061952616510098e-06, 4.57016369637131e-07, 9.999481439590454e-01, 1e+00, 2.481908304616809e-03, 5.923861863266211e-07, 8.646659851074219e-01, 9.99992311000824e-01, 1.000001311302185e+00, 3.35133052431047e-04, -1.853045432653744e-06, 9.816846251487732e-01, 1.000001907348633e+00, 9.999998211860657e-01, 4.604455534717999e-05, 1.709470325295115e-06, 9.975236058235168e-01, 1.000000238418579e+00] +PID.u_m=[0e+00, 7.999616265296936e-01, 7.999999523162842e-01, 9.993995428085327e-01, 9.998931288719177e-01, 1.353196501731873e-01, 7.387421646853909e-06, -8.588997246761294e-08, 9.996626377105713e-01, 9.999998211860657e-01, 1.831966824829578e-02, 4.834202627534978e-06, -5.006759238312952e-07, 9.999547004699707e-01, 1.000000715255737e+00, 2.47983424924314e-03, 2.204088245250091e-09, 8.646645545959486e-01, 9.999932646751404e-01, 9.99999463558197e-01, 3.337576927151531e-04, 3.279294844560354e-07, 9.816855788230896e-01, 9.999987483024597e-01, 9.999998211860657e-01, 4.25909529440105e-05, -4.059635614339641e-07, 9.975248575210571e-01, 9.999971985816956e-01, 1.353336572647095e-01, 7.332919722102815e-06, -5.969320682197576e-07, 9.996594190597534e-01, 1.000000238418579e+00, 1.830529980361426e-02, 3.956107775593409e-06, 4.129413611053678e-08, 9.999537467956543e-01, 9.999983906745911e-01, 2.48045427724719e-03, 2.579474767117063e-07, 8.646659851074219e-01, 9.999947547912598e-01, 9.999991655349731e-01, 3.364323638379574e-04, 1.090465048037004e-06, 9.816851019859314e-01, 9.999983906745911e-01, 9.999986290931702e-01, 4.650036134989932e-05, -1.835115703840984e-08, 9.975230693817139e-01, 1.000000715255737e+00, 1.353355348110199e-01, 8.895517566998024e-06, -1.127353584706725e-06, 9.99664843082428e-01, 1.00000011920929e+00, 1.831884123384953e-02, 2.432082283121417e-06, -2.416350923795108e-07, 9.999532699584961e-01, 9.999990463256836e-01, 2.480230759829283e-03, 4.884291229245719e-07, 8.646670579910278e-01, 9.999942779541016e-01, 1e+00, 3.360958071425425e-04, -3.1121609822553e-07, 9.816845655441284e-01, 9.999992251396179e-01, 1e+00, 4.688418630394153e-05, 1.654726986544119e-07, 9.975248575210571e-01, 9.99998927116394e-01, 1.353338211774826e-01, 8.388154128624592e-06, -1.141527405934539e-07, 9.996664524078369e-01, 9.999967217445374e-01, 1.83118786662817e-02, 1.19047433599917e-06, 1.458716951674432e-06, 9.999538064002991e-01, 1.000000834465027e+00, 2.484367461875081e-03, 2.533093663714681e-07, 8.646670579910278e-01, 9.999938011169434e-01, 1.00000011920929e+00, 3.36484081344679e-04, 2.045086375801475e-07, 9.816862940788269e-01, 9.999982118606567e-01, 1.000001549720764e+00, 4.763563265441917e-05, -1.340348632083987e-07, 9.975219964981079e-01, 9.999992847442627e-01] PIDWitTun.u_s=[8.00000011920929e-01, 8.00000011920929e-01] -PIDWitTun.u_m=[0e+00, 7.999616265296936e-01, 7.999999523162842e-01, 9.993996024131775e-01, 9.998931288719177e-01, 1.353196501731873e-01, 7.387421646853909e-06, -8.588997246761294e-08, 9.996626377105713e-01, 9.999998211860657e-01, -7.984897494316101e-02, -9.999882429838181e-02, -1.000000983476639e-01, 9.999487400054932e-01, 1.00000011920929e+00, 9.26082655787468e-02, 9.035374969244003e-02, 5.7454800605774e-01, 6.503300070762634e-01, 6.503335237503052e-01, 6.178581118583679e-01, 6.178471446037292e-01, 7.194286584854126e-01, 7.213233709335327e-01, 7.21323549747467e-01, 7.424801588058472e-01, 7.424811124801636e-01, 7.687985301017761e-01, 7.688637375831604e-01, 7.786267995834351e-01, 7.801547646522522e-01, 7.801548838615417e-01, 7.884551286697388e-01, 7.88457989692688e-01, 7.928572297096252e-01, 7.92939305305481e-01, 7.92939305305481e-01, 7.958003878593445e-01, 7.95800507068634e-01, 7.974588871002197e-01, 7.97463059425354e-01, 7.983428835868835e-01, 7.984805703163147e-01, 7.984805703163147e-01, 7.990854382514954e-01, 7.990856170654297e-01, 7.994444966316223e-01, 7.994512319564819e-01, 7.994512319564819e-01, 7.996701002120972e-01, 7.996701598167419e-01, 7.998015880584717e-01, 7.998018860816956e-01, 7.998702526092529e-01, 7.998809814453125e-01, 7.998809814453125e-01, 7.999284863471985e-01, 7.999284863471985e-01, 7.999565005302429e-01, 7.999570369720459e-01, 7.999570369720459e-01, 7.999742031097412e-01, 7.999742031097412e-01, 7.999844551086426e-01, 7.999845147132874e-01, 7.999898195266724e-01, 7.99990713596344e-01, 7.99990713596344e-01, 9.999327659606934e-01, 1.000000357627869e+00, -7.985378801822662e-02, -9.999904036521912e-02, -1.000000089406967e-01, 9.999467134475708e-01, 1.000001192092896e+00, 8.242793083190918e-01, 8.238427639007568e-01, 8.437345623970032e-01, 8.468477129936218e-01, 8.468478918075562e-01, 8.172508478164673e-01, 8.172408938407898e-01, 8.141192197799683e-01, 8.140609860420227e-01, 8.140609860420227e-01, 8.072188496589661e-01, 8.072184920310974e-01, 8.047677278518677e-01, 8.047616481781006e-01, 8.029998540878296e-01, 8.027241230010986e-01, 8.027241230010986e-01, 8.016868829727173e-01, 8.016865253448486e-01, 8.010113835334778e-01, 8.009988069534302e-01, 8.009988069534302e-01, 8.00606369972229e-01, 8.00606369972229e-01, 8.003636598587036e-01, 8.003630042076111e-01] +PIDWitTun.u_m=[0e+00, 7.999616265296936e-01, 7.999999523162842e-01, 9.993996024131775e-01, 9.998931288719177e-01, 1.353196501731873e-01, 7.387421646853909e-06, -8.588997246761294e-08, 9.996626377105713e-01, 9.999998211860657e-01, 1.164877042174339e-01, 1.000043526291847e-01, 9.999954700469971e-02, 9.999592304229736e-01, 1.000000596046448e+00, 9.197651594877243e-02, 8.971917629241943e-02, 5.737576484680184e-01, 6.495144963264465e-01, 6.495180130004883e-01, 6.166325211524963e-01, 6.166215538978577e-01, 7.185643315315247e-01, 7.204660773277283e-01, 7.204661965370178e-01, 7.417300343513489e-01, 7.417309284210205e-01, 7.682777643203735e-01, 7.683435082435608e-01, 7.782240509986877e-01, 7.797703742980957e-01, 7.797704935073853e-01, 7.881926894187927e-01, 7.881956100463867e-01, 7.926746606826782e-01, 7.927581667900085e-01, 7.927581667900085e-01, 7.956790924072266e-01, 7.956792712211609e-01, 7.973778247833252e-01, 7.973820567131042e-01, 7.982858419418335e-01, 7.984272837638855e-01, 7.984272837638855e-01, 7.99050509929657e-01, 7.990506887435913e-01, 7.994216084480286e-01, 7.994285225868225e-01, 7.994285225868225e-01, 7.996554374694824e-01, 7.996554374694824e-01, 7.997921109199524e-01, 7.99792468547821e-01, 7.998637557029724e-01, 7.998749017715454e-01, 7.998749017715454e-01, 7.999246120452881e-01, 7.999246120452881e-01, 7.999540567398071e-01, 7.999545931816101e-01, 7.999545931816101e-01, 7.999726533889771e-01, 7.999726533889771e-01, 7.999835014343262e-01, 7.999835014343262e-01, 7.999891638755798e-01, 7.999900579452515e-01, 7.999900579452515e-01, 9.999327659606934e-01, 1.00000011920929e+00, 1.164838746190071e-01, 1.00000686943531e-01, 1.000000014901161e-01, 9.99957799911499e-01, 9.999998807907104e-01, 8.177899718284607e-01, 8.173380494117737e-01, 8.414473533630371e-01, 8.452206254005432e-01, 8.452208638191223e-01, 8.154194355010986e-01, 8.154096007347107e-01, 8.132837414741516e-01, 8.132440447807312e-01, 8.132440447807312e-01, 8.066140413284302e-01, 8.066136837005615e-01, 8.044363260269165e-01, 8.044309020042419e-01, 8.027692437171936e-01, 8.025091886520386e-01, 8.025091886520386e-01, 8.01560640335083e-01, 8.015603423118591e-01, 8.009319305419922e-01, 8.009202480316162e-01, 8.009202480316162e-01, 8.005591034889221e-01, 8.005591034889221e-01, 8.003345727920532e-01, 8.003340363502502e-01] autTunSig.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] PIDWitTun.inTunPro.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] -PIDWitTun.con.y=[8.00000011920929e-01, 1e+00, 9.998882412910461e-01, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1.524225324392319e-01, 1.080979034304618e-01, 3.686680495738983e-01, 5.244071483612061e-01, 4.89300966262818e-01, 5.780069231987e-01, 6.112075448036194e-01, 6.56685471534729e-01, 6.970813274383545e-01, 7.061745524406433e-01, 7.250295877456665e-01, 7.424811720848083e-01, 7.51001238822937e-01, 7.637604475021362e-01, 7.6767498254776e-01, 7.746297121047974e-01, 7.776544690132141e-01, 7.831755876541138e-01, 7.875775694847107e-01, 7.888409495353699e-01, 7.914032340049744e-01, 7.926073670387268e-01, 7.942343354225159e-01, 7.95800507068634e-01, 7.961587905883789e-01, 7.970904111862183e-01, 7.974646091461182e-01, 7.980304360389709e-01, 7.982432842254639e-01, 7.986811995506287e-01, 7.990182638168335e-01, 7.991265654563904e-01, 7.993295192718506e-01, 7.994217276573181e-01, 7.995483875274658e-01, 7.996701598167419e-01, 7.996994256973267e-01, 7.997726202011108e-01, 7.998016476631165e-01, 7.99845814704895e-01, 7.998625636100769e-01, 7.998968362808228e-01, 7.999232411384583e-01, 7.999316453933716e-01, 7.999475002288818e-01, 7.999547719955444e-01, 7.999646663665771e-01, 7.999742031097412e-01, 7.999764680862427e-01, 7.999821901321411e-01, 7.999844551086426e-01, 7.999879121780396e-01, 7.999892234802246e-01, 7.999919056892395e-01, 7.999939918518066e-01, 7.243933677673335e-01, 6.800807714462285e-01, 9.476300477981567e-01, 1e+00, 1e+00, 8.85942816734314e-01, 8.415921330451965e-01, 8.565381169319153e-01, 8.510796427726746e-01, 8.389047980308533e-01, 8.297131657600403e-01, 8.193196058273315e-01, 8.201848864555359e-01, 8.163560032844543e-01, 8.134800791740417e-01, 8.10338020324707e-01, 8.072184920310974e-01, 8.070038557052612e-01, 8.054022192955017e-01, 8.046280145645142e-01, 8.035692572593689e-01, 8.031226396560669e-01, 8.024117946624756e-01, 8.018074035644531e-01, 8.015976548194885e-01, 8.012233376502991e-01, 8.010544180870056e-01, 8.008279800415039e-01, 8.00606369972229e-01, 8.005513548851013e-01, 8.004168272018433e-01, 8.003642559051514e-01, 8.002834916114807e-01] -PIDWitTun.con.k=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.224772721529007e-01, 2.248483598232269e-01, 2.248483598232269e-01, 2.248483598232269e-01, 2.248483598232269e-01, 2.248483598232269e-01, 2.248483598232269e-01, 2.248483598232269e-01, 2.248483598232269e-01, 2.248483598232269e-01, 2.248483598232269e-01, 2.248483598232269e-01, 2.248483598232269e-01, 2.248483598232269e-01, 2.248483598232269e-01, 2.248483598232269e-01, 2.248483598232269e-01, 2.248483598232269e-01, 2.248483598232269e-01, 2.248483598232269e-01, 2.248483598232269e-01, 2.248483598232269e-01, 2.248483598232269e-01, 2.248483598232269e-01, 2.248483598232269e-01, 2.248483598232269e-01, 2.248483598232269e-01, 2.248483598232269e-01, 2.248483598232269e-01] -PIDWitTun.con.Ti=[5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.002992172241211e+02, 1.013471145629883e+02, 1.013471145629883e+02, 1.013471145629883e+02, 1.013471145629883e+02, 1.013471145629883e+02, 1.013471145629883e+02, 1.013471145629883e+02, 1.013471145629883e+02, 1.013471145629883e+02, 1.013471145629883e+02, 1.013471145629883e+02, 1.013471145629883e+02, 1.013471145629883e+02, 1.013471145629883e+02, 1.013471145629883e+02, 1.013471145629883e+02, 1.013471145629883e+02, 1.013471145629883e+02, 1.013471145629883e+02, 1.013471145629883e+02, 1.013471145629883e+02, 1.013471145629883e+02, 1.013471145629883e+02, 1.013471145629883e+02, 1.013471145629883e+02, 1.013471145629883e+02, 1.013471145629883e+02, 1.013471145629883e+02] -PIDWitTun.con.Td=[1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.972751235961914e+01, 2.075888633728027e+01, 2.075888633728027e+01, 2.075888633728027e+01, 2.075888633728027e+01, 2.075888633728027e+01, 2.075888633728027e+01, 2.075888633728027e+01, 2.075888633728027e+01, 2.075888633728027e+01, 2.075888633728027e+01, 2.075888633728027e+01, 2.075888633728027e+01, 2.075888633728027e+01, 2.075888633728027e+01, 2.075888633728027e+01, 2.075888633728027e+01, 2.075888633728027e+01, 2.075888633728027e+01, 2.075888633728027e+01, 2.075888633728027e+01, 2.075888633728027e+01, 2.075888633728027e+01, 2.075888633728027e+01, 2.075888633728027e+01, 2.075888633728027e+01, 2.075888633728027e+01, 2.075888633728027e+01, 2.075888633728027e+01] +PIDWitTun.con.y=[8.00000011920929e-01, 1e+00, 9.998882412910461e-01, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1.515395194292068e-01, 1.073917448520659e-01, 3.689203560352325e-01, 5.239934325218201e-01, 4.829176068305976e-01, 5.76727569103241e-01, 6.099728345870972e-01, 6.556598544120789e-01, 6.961604356765747e-01, 7.050479650497437e-01, 7.241612672805786e-01, 7.417309284210205e-01, 7.503219246864319e-01, 7.631947994232178e-01, 7.671293020248413e-01, 7.741758227348328e-01, 7.771275043487549e-01, 7.828329205513e-01, 7.873018383979797e-01, 7.885835766792297e-01, 7.911935448646545e-01, 7.924119234085083e-01, 7.940794825553894e-01, 7.956792712211609e-01, 7.960456609725952e-01, 7.970002293586731e-01, 7.973828911781311e-01, 7.979646325111389e-01, 7.981732487678528e-01, 7.986338138580322e-01, 7.98981249332428e-01, 7.990928292274475e-01, 7.993026971817017e-01, 7.99397349357605e-01, 7.995291948318481e-01, 7.996554374694824e-01, 7.996858954429626e-01, 7.997620105743408e-01, 7.997921109199524e-01, 7.998382449150085e-01, 7.998549342155457e-01, 7.99891471862793e-01, 7.999191284179688e-01, 7.999279499053955e-01, 7.999445796012878e-01, 7.999521493911743e-01, 7.9996258020401e-01, 7.999726533889771e-01, 7.999750375747681e-01, 7.999811172485352e-01, 7.999835014343262e-01, 7.999871373176575e-01, 7.999884486198425e-01, 7.999913692474365e-01, 7.999935746192932e-01, 7.243354916572566e-01, 6.802086830139165e-01, 9.007906913757324e-01, 1e+00, 1e+00, 8.796066045761108e-01, 8.351336717605591e-01, 8.523387908935547e-01, 8.483063578605652e-01, 8.36073637008667e-01, 8.274804949760437e-01, 8.174213767051697e-01, 8.187323808670044e-01, 8.153007626533508e-01, 8.125213384628296e-01, 8.095598220825195e-01, 8.066136837005615e-01, 8.064907193183899e-01, 8.050193786621094e-01, 8.0428546667099e-01, 8.032976984977722e-01, 8.02889347076416e-01, 8.022301197052002e-01, 8.016719818115234e-01, 8.014757037162781e-01, 8.011285066604614e-01, 8.009730577468872e-01, 8.007637858390808e-01, 8.005591034889221e-01, 8.005081415176392e-01, 8.003838062286377e-01, 8.003354072570801e-01, 8.002609014511108e-01] +PIDWitTun.con.k=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.255657166242599e-01, 2.255657166242599e-01, 2.255657166242599e-01, 2.255657166242599e-01, 2.255657166242599e-01, 2.255657166242599e-01, 2.255657166242599e-01, 2.255657166242599e-01, 2.255657166242599e-01, 2.255657166242599e-01, 2.255657166242599e-01, 2.255657166242599e-01, 2.255657166242599e-01, 2.255657166242599e-01, 2.255657166242599e-01, 2.255657166242599e-01, 2.255657166242599e-01, 2.255657166242599e-01, 2.255657166242599e-01, 2.255657166242599e-01, 2.255657166242599e-01, 2.255657166242599e-01, 2.255657166242599e-01, 2.255657166242599e-01, 2.255657166242599e-01, 2.255657166242599e-01, 2.255657166242599e-01, 2.255657166242599e-01] +PIDWitTun.con.Ti=[5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.014021148681641e+02, 1.014021148681641e+02, 1.014021148681641e+02, 1.014021148681641e+02, 1.014021148681641e+02, 1.014021148681641e+02, 1.014021148681641e+02, 1.014021148681641e+02, 1.014021148681641e+02, 1.014021148681641e+02, 1.014021148681641e+02, 1.014021148681641e+02, 1.014021148681641e+02, 1.014021148681641e+02, 1.014021148681641e+02, 1.014021148681641e+02, 1.014021148681641e+02, 1.014021148681641e+02, 1.014021148681641e+02, 1.014021148681641e+02, 1.014021148681641e+02, 1.014021148681641e+02, 1.014021148681641e+02, 1.014021148681641e+02, 1.014021148681641e+02, 1.014021148681641e+02, 1.014021148681641e+02, 1.014021148681641e+02] +PIDWitTun.con.Td=[1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 2.079292869567871e+01, 2.079292869567871e+01, 2.079292869567871e+01, 2.079292869567871e+01, 2.079292869567871e+01, 2.079292869567871e+01, 2.079292869567871e+01, 2.079292869567871e+01, 2.079292869567871e+01, 2.079292869567871e+01, 2.079292869567871e+01, 2.079292869567871e+01, 2.079292869567871e+01, 2.079292869567871e+01, 2.079292869567871e+01, 2.079292869567871e+01, 2.079292869567871e+01, 2.079292869567871e+01, 2.079292869567871e+01, 2.079292869567871e+01, 2.079292869567871e+01, 2.079292869567871e+01, 2.079292869567871e+01, 2.079292869567871e+01, 2.079292869567871e+01, 2.079292869567871e+01, 2.079292869567871e+01, 2.079292869567871e+01] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_ReverseActingPIWithFirstOrderAMIGO.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_ReverseActingPIWithFirstOrderAMIGO.txt index 93ae9aabbe0..1096e3e78da 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_ReverseActingPIWithFirstOrderAMIGO.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_ReverseActingPIWithFirstOrderAMIGO.txt @@ -1,4 +1,4 @@ -last-generated=2023-12-06 +last-generated=2023-12-27 statistics-simulation= { "linear": " ", @@ -8,11 +8,11 @@ statistics-simulation= } time=[0e+00, 1e+04] PI.u_s=[8.00000011920929e-01, 8.00000011920929e-01] -PI.u_m=[0e+00, 7.999613285064697e-01, 7.999998927116394e-01, 9.993249773979187e-01, 9.998183846473694e-01, 1.353093683719635e-01, 8.515467925462872e-06, -6.112286854431464e-08, 9.996612071990967e-01, 1e+00, 1.831970550119877e-02, 1.269126414626953e-06, -9.207912654574102e-08, 9.999585747718811e-01, 9.999988675117493e-01, 2.48028477653861e-03, -2.508132013190334e-07, 8.646663427352919e-01, 9.999977946281433e-01, 1.000000476837158e+00, 3.370603080838919e-04, 2.367633129551905e-07, 9.816855192184448e-01, 9.999983906745911e-01, 9.999998807907104e-01, 4.276327672414482e-05, -3.569005002646009e-08, 9.975234270095825e-01, 9.999994039535522e-01, 1.353351771831512e-01, 6.743606263626134e-06, -1.979775703375708e-07, 9.996554255485535e-01, 9.999986290931702e-01, 1.831582374870741e-02, 7.781505928505794e-07, -1.03922545235946e-07, 9.999563694000244e-01, 1.000000953674316e+00, 2.484253142029047e-03, -7.954121201692033e-07, 8.646655678749084e-01, 9.999925494194031e-01, 1.000000238418579e+00, 3.385374438948929e-04, -5.895987698067984e-08, 9.816806316375732e-01, 9.999963045120239e-01, 9.999974966049194e-01, 5.031171895097941e-05, -1.520526097920083e-06, 9.975247979164124e-01, 1.00000262260437e+00, 1.353289633989334e-01, 8.183475983969402e-06, -4.299174918287463e-07, 9.99663233757019e-01, 1.000001430511475e+00, 1.831613481044769e-02, 1.382595314680657e-06, -1.608066781955131e-07, 9.999553561210632e-01, 9.999995231628418e-01, 2.48058675788343e-03, -9.909015261655441e-07, 8.64669144153595e-01, 9.999868273735046e-01, 1.000001311302185e+00, 3.366621385794001e-04, 1.500396962228475e-07, 9.816856384277344e-01, 9.99998927116394e-01, 1e+00, 4.693805749411695e-05, -2.753301941993413e-07, 9.975259304046631e-01, 1e+00, 1.353321224451065e-01, 8.922480446926784e-06, -5.896998231946782e-07, 9.99667227268219e-01, 9.999924302101135e-01, 1.831679046154022e-02, -1.205465764542168e-06, -1.679391630204918e-07, 9.999531507492065e-01, 1.000000953674316e+00, 2.481523202732205e-03, 5.261513447152311e-09, 8.646730184555054e-01, 9.999914765357971e-01, 9.999998807907104e-01, 3.420602006372064e-04, -2.416264237581345e-07, 9.816855192184448e-01, 9.999979734420776e-01, 1e+00, 4.276737672626041e-05, 1.054520595289432e-07, 9.97525155544281e-01, 9.999986886978149e-01] +PI.u_m=[0e+00, 7.999613285064697e-01, 7.999998927116394e-01, 9.993249773979187e-01, 9.998183846473694e-01, 1.353093683719635e-01, 8.515467925462872e-06, -6.112286854431464e-08, 9.996612071990967e-01, 1e+00, 1.831640675663948e-02, 3.585656713767094e-06, -1.088986095965083e-06, 9.999516010284424e-01, 9.999998807907104e-01, 2.483054762706161e-03, 2.550067677020706e-07, 8.646687865257277e-01, 9.999935626983643e-01, 9.999987483024597e-01, 3.365527954883873e-04, -2.391876705587492e-07, 9.816850423812866e-01, 9.999976754188538e-01, 9.999993443489075e-01, 4.598808664013632e-05, -6.455787797676749e-07, 9.9752277135849e-01, 9.999984502792358e-01, 1.35334238409996e-01, 1.090974092221586e-05, 1.818365120698218e-07, 9.996650218963623e-01, 1.000004053115845e+00, 1.831482723355257e-02, 3.90146141171499e-07, -1.016840300849253e-08, 9.999534487724304e-01, 9.999992251396179e-01, 2.479846123605967e-03, -3.744482341971889e-07, 8.646664619445801e-01, 9.999966025352478e-01, 1.000000238418579e+00, 3.364288131706417e-04, 2.022560693148989e-06, 9.81685996055603e-01, 9.999985694885254e-01, 9.999999403953552e-01, 4.553687904262915e-05, 1.613062067917781e-06, 9.97525155544281e-01, 1.000003576278687e+00, 1.353279948234558e-01, 6.792089152440894e-06, -2.431281927783857e-06, 9.996663928031921e-01, 9.99998927116394e-01, 1.831826008856297e-02, 1.988393250940135e-06, -5.959201985206164e-07, 9.999491572380066e-01, 9.999993443489075e-01, 2.479707822203636e-03, -6.373462611009018e-07, 8.646739721298218e-01, 9.999976754188538e-01, 9.999997615814209e-01, 3.366610326338428e-04, 1.501398543268802e-07, 9.816861748695374e-01, 9.999986290931702e-01, 1e+00, 4.633676144294441e-05, -3.791090996685398e-09, 9.975242614746094e-01, 9.999997615814209e-01, 1.35339617729187e-01, 7.946585355966818e-06, -6.602337521144364e-08, 9.996647238731384e-01, 1.000001192092896e+00, 1.831847243010998e-02, 1.587499127708725e-06, 1.411180392096867e-06, 9.999547600746155e-01, 1.000000715255737e+00, 2.483277348801494e-03, 9.122286996898765e-07, 8.64672839641571e-01, 9.999873638153076e-01, 1.000000357627869e+00, 3.364580916240811e-04, 2.302583197888453e-06, 9.816856384277344e-01, 9.999977946281433e-01, 9.999935030937195e-01, 4.827310112887062e-05, -2.973822006424598e-07, 9.975244998931885e-01, 9.999999403953552e-01] PIWitTun.u_s=[8.00000011920929e-01, 8.00000011920929e-01] -PIWitTun.u_m=[0e+00, 7.999613285064697e-01, 7.999998927116394e-01, 9.993249773979187e-01, 9.998183846473694e-01, 1.353093683719635e-01, 8.515467925462872e-06, -6.112286854431464e-08, 9.996612071990967e-01, 1e+00, -7.984831929206848e-02, -9.99986007809639e-02, -1.000000983476639e-01, 9.999544620513916e-01, 9.999987483024597e-01, 1.095525026321411e-01, 1.073382198810577e-01, 5.112158656120307e-01, 5.744279026985168e-01, 5.744290947914124e-01, 6.227896809577942e-01, 6.228059530258179e-01, 7.029182910919189e-01, 7.044127583503723e-01, 7.044128775596619e-01, 7.408353090286255e-01, 7.408368587493896e-01, 7.652489542961121e-01, 7.653095126152039e-01, 7.773483991622925e-01, 7.792326211929321e-01, 7.792326807975769e-01, 7.876644134521484e-01, 7.876672744750977e-01, 7.925621271133423e-01, 7.926534414291382e-01, 7.926534414291382e-01, 7.956287860870361e-01, 7.956289052963257e-01, 7.973936796188354e-01, 7.973980903625488e-01, 7.983089089393616e-01, 7.984514236450195e-01, 7.984514832496643e-01, 7.99078106880188e-01, 7.990783452987671e-01, 7.994446158409119e-01, 7.994514107704163e-01, 7.994514107704163e-01, 7.996734976768494e-01, 7.996734976768494e-01, 7.998053431510925e-01, 7.998057007789612e-01, 7.998737096786499e-01, 7.998843193054199e-01, 7.998843193054199e-01, 7.999311685562134e-01, 7.999311685562134e-01, 7.999585270881653e-01, 7.999590039253235e-01, 7.999590039253235e-01, 7.999756336212158e-01, 7.999756336212158e-01, 7.999854683876038e-01, 7.999854683876038e-01, 7.999905943870544e-01, 7.999913692474365e-01, 7.999913692474365e-01, 9.999326467514038e-01, 9.999999403953552e-01, -7.985420525074005e-02, -9.999882429838181e-02, -1.000000014901161e-01, 9.999483823776245e-01, 1.000000357627869e+00, 8.543278574943542e-01, 8.539665937423706e-01, 8.49184513092041e-01, 8.484360575675964e-01, 8.484360575675964e-01, 8.252896666526794e-01, 8.252821564674377e-01, 8.16300630569458e-01, 8.161330223083496e-01, 8.161330819129944e-01, 8.094800114631653e-01, 8.094796538352966e-01, 8.057645559310913e-01, 8.057553172111511e-01, 8.037607073783875e-01, 8.034485578536987e-01, 8.03448498249054e-01, 8.020776510238647e-01, 8.020771741867065e-01, 8.012637495994568e-01, 8.012485504150391e-01, 8.012485504150391e-01, 8.007511496543884e-01, 8.007511496543884e-01, 8.004524707794189e-01, 8.004516959190369e-01] +PIWitTun.u_m=[0e+00, 7.999613285064697e-01, 7.999998927116394e-01, 9.993249773979187e-01, 9.998183846473694e-01, 1.353093683719635e-01, 8.515467925462872e-06, -6.112286854431464e-08, 9.996612071990967e-01, 1e+00, 1.164847612380981e-01, 1.000032275915146e-01, 9.999901801347733e-02, 9.999564290046692e-01, 9.999998807907104e-01, 1.093572527170181e-01, 1.071404591202736e-01, 5.087036490440375e-01, 5.715502500534058e-01, 5.715526938438416e-01, 6.211880445480347e-01, 6.212047934532166e-01, 7.013631463050842e-01, 7.028584480285645e-01, 7.02858567237854e-01, 7.397644519805908e-01, 7.397661805152893e-01, 7.644611597061157e-01, 7.645224332809448e-01, 7.767746448516846e-01, 7.786921858787537e-01, 7.786923050880432e-01, 7.872951030731201e-01, 7.872980237007141e-01, 7.923128008842468e-01, 7.924063801765442e-01, 7.924063801765442e-01, 7.954651117324829e-01, 7.954652905464172e-01, 7.97286331653595e-01, 7.972908616065979e-01, 7.982341051101685e-01, 7.983817458152771e-01, 7.983817458152771e-01, 7.990331053733826e-01, 7.990332841873169e-01, 7.994154095649719e-01, 7.99422562122345e-01, 7.99422562122345e-01, 7.99655020236969e-01, 7.99655020236969e-01, 7.997936010360718e-01, 7.997939586639404e-01, 7.998656630516052e-01, 7.998769283294678e-01, 7.998769283294678e-01, 7.999264597892761e-01, 7.999264597892761e-01, 7.999555468559265e-01, 7.999560832977295e-01, 7.999560832977295e-01, 7.999737858772278e-01, 7.999737858772278e-01, 7.999842762947083e-01, 7.99984335899353e-01, 7.999897599220276e-01, 7.999906539916992e-01, 7.999906539916992e-01, 9.999326467514038e-01, 9.999999403953552e-01, 1.164824590086937e-01, 1.000012084841728e-01, 1.000000014901161e-01, 9.999582767486572e-01, 1e+00, 8.483732938766479e-01, 8.479970097541809e-01, 8.465210795402527e-01, 8.462900519371033e-01, 8.462900519371033e-01, 8.235898613929749e-01, 8.235822319984436e-01, 8.15342128276825e-01, 8.151883482933044e-01, 8.151883482933044e-01, 8.088766932487488e-01, 8.088763952255249e-01, 8.054006099700928e-01, 8.053919672966003e-01, 8.035178184509277e-01, 8.032245635986328e-01, 8.03224503993988e-01, 8.0194091796875e-01, 8.019405007362366e-01, 8.01179051399231e-01, 8.011648058891296e-01, 8.011648058891296e-01, 8.006999492645264e-01, 8.006999492645264e-01, 8.004211187362671e-01, 8.004204034805298e-01] autTunSig.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] PIWitTun.inTunPro.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] -PIWitTun.con.y=[8.00000011920929e-01, 1e+00, 9.999609589576721e-01, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1.654360443353653e-01, 1.239362657070159e-01, 3.154558539390564e-01, 4.594644904136658e-01, 5.285016298294067e-01, 5.666474103927612e-01, 6.134461760520935e-01, 6.455956101417542e-01, 6.823555827140808e-01, 7.013788223266602e-01, 7.210055589675903e-01, 7.408368587493896e-01, 7.481254935264587e-01, 7.603997588157654e-01, 7.662860751152039e-01, 7.734749317169189e-01, 7.784463763237e-01, 7.824970483779907e-01, 7.868055701255798e-01, 7.885599732398987e-01, 7.911182641983032e-01, 7.925930619239807e-01, 7.941047549247742e-01, 7.956289052963257e-01, 7.96128511428833e-01, 7.970353364944458e-01, 7.974804043769836e-01, 7.980195879936218e-01, 7.983910441398621e-01, 7.986927628517151e-01, 7.990140318870544e-01, 7.99145519733429e-01, 7.993366718292236e-01, 7.994468212127686e-01, 7.995597124099731e-01, 7.996734976768494e-01, 7.997108697891235e-01, 7.997785806655884e-01, 7.99811840057373e-01, 7.998520731925964e-01, 7.998798489570618e-01, 7.999023795127869e-01, 7.999263405799866e-01, 7.999361753463745e-01, 7.999504804611206e-01, 7.999587059020996e-01, 7.999671101570129e-01, 7.999756336212158e-01, 7.999783754348755e-01, 7.999834418296814e-01, 7.99985945224762e-01, 7.999889254570007e-01, 7.999910116195679e-01, 7.999926805496216e-01, 7.999945282936096e-01, 7.394297719001767e-01, 6.979268789291385e-01, 8.95541250705719e-01, 1e+00, 1e+00, 9.116749167442322e-01, 8.704525232315063e-01, 8.684017658233643e-01, 8.573329448699951e-01, 8.47132682800293e-01, 8.372597098350525e-01, 8.272782564163208e-01, 8.244678974151611e-01, 8.192590475082397e-01, 8.161045908927917e-01, 8.128042817115784e-01, 8.094796538352966e-01, 8.084901571273804e-01, 8.065367341041565e-01, 8.055819869041443e-01, 8.043973445892334e-01, 8.035954236984253e-01, 8.029299974441528e-01, 8.022193312644958e-01, 8.019334077835083e-01, 8.015053868293762e-01, 8.012635111808777e-01, 8.01008403301239e-01, 8.007511496543884e-01, 8.006684184074402e-01, 8.005136251449585e-01, 8.004391193389893e-01, 8.003461360931396e-01] -PIWitTun.con.k=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.576375067234039e-01, 1.65507048368454e-01, 1.65507048368454e-01, 1.65507048368454e-01, 1.65507048368454e-01, 1.65507048368454e-01, 1.65507048368454e-01, 1.65507048368454e-01, 1.65507048368454e-01, 1.65507048368454e-01, 1.65507048368454e-01, 1.65507048368454e-01, 1.65507048368454e-01, 1.65507048368454e-01, 1.65507048368454e-01, 1.65507048368454e-01, 1.65507048368454e-01, 1.65507048368454e-01, 1.65507048368454e-01, 1.65507048368454e-01, 1.65507048368454e-01, 1.65507048368454e-01, 1.65507048368454e-01, 1.65507048368454e-01, 1.65507048368454e-01, 1.65507048368454e-01, 1.65507048368454e-01, 1.65507048368454e-01, 1.65507048368454e-01] -PIWitTun.con.Ti=[5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 7.598136901855469e+01, 8.031419372558594e+01, 8.031419372558594e+01, 8.031419372558594e+01, 8.031419372558594e+01, 8.031419372558594e+01, 8.031419372558594e+01, 8.031419372558594e+01, 8.031419372558594e+01, 8.031419372558594e+01, 8.031419372558594e+01, 8.031419372558594e+01, 8.031419372558594e+01, 8.031419372558594e+01, 8.031419372558594e+01, 8.031419372558594e+01, 8.031419372558594e+01, 8.031419372558594e+01, 8.031419372558594e+01, 8.031419372558594e+01, 8.031419372558594e+01, 8.031419372558594e+01, 8.031419372558594e+01, 8.031419372558594e+01, 8.031419372558594e+01, 8.031419372558594e+01, 8.031419372558594e+01, 8.031419372558594e+01, 8.031419372558594e+01] +PIWitTun.con.y=[8.00000011920929e-01, 1e+00, 9.999609589576721e-01, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1.648446023464203e-01, 1.236254721879958e-01, 3.142561614513397e-01, 4.573333263397217e-01, 5.262097120285034e-01, 5.647148489952087e-01, 6.117896437644958e-01, 6.439111232757568e-01, 6.807524561882019e-01, 6.999349594116211e-01, 7.197486162185669e-01, 7.397661209106445e-01, 7.471456527709961e-01, 7.595576047897339e-01, 7.655413746833801e-01, 7.728437781333923e-01, 7.778997421264648e-01, 7.820290327072144e-01, 7.864198088645935e-01, 7.882188558578491e-01, 7.908359169960022e-01, 7.923484444618225e-01, 7.939004898071289e-01, 7.954652905464172e-01, 7.959825992584229e-01, 7.969170808792114e-01, 7.973774671554565e-01, 7.979351282119751e-01, 7.983198165893555e-01, 7.986331582069397e-01, 7.989665865898132e-01, 7.99103856086731e-01, 7.993029952049255e-01, 7.99418032169342e-01, 7.995360493659973e-01, 7.996550798416138e-01, 7.996944189071655e-01, 7.997655272483826e-01, 7.998005151748657e-01, 7.998429536819458e-01, 7.998722195625305e-01, 7.998960614204407e-01, 7.999213933944702e-01, 7.999318242073059e-01, 7.999469637870789e-01, 7.999557256698608e-01, 7.999647259712219e-01, 7.999737858772278e-01, 7.999767661094666e-01, 7.999821901321411e-01, 7.999848127365112e-01, 7.999880313873291e-01, 7.999902963638306e-01, 7.999920845031738e-01, 7.999939918518066e-01, 7.397590875625607e-01, 6.985366940498355e-01, 8.519867062568665e-01, 9.984803795814514e-01, 1e+00, 9.058597087860107e-01, 8.645274043083191e-01, 8.640871644020081e-01, 8.542242050170898e-01, 8.445916175842285e-01, 8.350602388381958e-01, 8.254952430725098e-01, 8.229837417602539e-01, 8.181120157241821e-01, 8.151307702064514e-01, 8.120147585868835e-01, 8.088763952255249e-01, 8.079597353935242e-01, 8.061256408691406e-01, 8.052287101745605e-01, 8.041158318519592e-01, 8.033636808395386e-01, 8.027400374412537e-01, 8.020737767219543e-01, 8.018063306808472e-01, 8.014054298400879e-01, 8.011792302131653e-01, 8.009406328201294e-01, 8.006999492645264e-01, 8.006228804588318e-01, 8.004782795906067e-01, 8.004088401794434e-01, 8.003220558166504e-01] +PIWitTun.con.k=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.660253554582596e-01, 1.660253554582596e-01, 1.660253554582596e-01, 1.660253554582596e-01, 1.660253554582596e-01, 1.660253554582596e-01, 1.660253554582596e-01, 1.660253554582596e-01, 1.660253554582596e-01, 1.660253554582596e-01, 1.660253554582596e-01, 1.660253554582596e-01, 1.660253554582596e-01, 1.660253554582596e-01, 1.660253554582596e-01, 1.660253554582596e-01, 1.660253554582596e-01, 1.660253554582596e-01, 1.660253554582596e-01, 1.660253554582596e-01, 1.660253554582596e-01, 1.660253554582596e-01, 1.660253554582596e-01, 1.660253554582596e-01, 1.660253554582596e-01, 1.660253554582596e-01, 1.660253554582596e-01, 1.660253554582596e-01] +PIWitTun.con.Ti=[5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 8.034870910644531e+01, 8.034870910644531e+01, 8.034870910644531e+01, 8.034870910644531e+01, 8.034870910644531e+01, 8.034870910644531e+01, 8.034870910644531e+01, 8.034870910644531e+01, 8.034870910644531e+01, 8.034870910644531e+01, 8.034870910644531e+01, 8.034870910644531e+01, 8.034870910644531e+01, 8.034870910644531e+01, 8.034870910644531e+01, 8.034870910644531e+01, 8.034870910644531e+01, 8.034870910644531e+01, 8.034870910644531e+01, 8.034870910644531e+01, 8.034870910644531e+01, 8.034870910644531e+01, 8.034870910644531e+01, 8.034870910644531e+01, 8.034870910644531e+01, 8.034870910644531e+01, 8.034870910644531e+01, 8.034870910644531e+01] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_HeatExchangers_Examples_WetCoilCounterFlowPControlAutoTuning.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_HeatExchangers_Examples_WetCoilCounterFlowPControlAutoTuning.txt index db97e07360d..448ffac439b 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_HeatExchangers_Examples_WetCoilCounterFlowPControlAutoTuning.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_HeatExchangers_Examples_WetCoilCounterFlowPControlAutoTuning.txt @@ -1,4 +1,4 @@ -last-generated=2023-11-29 +last-generated=2023-12-27 statistics-initialization= { "nonlinear": "1", @@ -12,8 +12,11 @@ statistics-simulation= "numerical Jacobians": "0" } time=[0e+00, 3.6e+03] -con.inTunPro.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] -con.u_s=[2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.975499877929688e+02, 2.966499938964844e+02, 2.9575e+02, 2.948500061035156e+02, 2.939500122070312e+02, 2.930499877929688e+02, 2.921499938964844e+02, 2.9125e+02, 2.903500061035156e+02, 2.894500122070312e+02, 2.885499877929688e+02, 2.876499938964844e+02, 2.8675e+02, 2.858500061035156e+02, 2.849500122070312e+02, 2.840499877929688e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02] -con.u_m=[2.931499938964844e+02, 2.910510559082031e+02, 2.910257263183594e+02, 2.91025634765625e+02, 2.910256042480469e+02, 2.910256042480469e+02, 2.910256042480469e+02, 2.910256042480469e+02, 2.910256042480469e+02, 2.911280517578125e+02, 2.913913879394531e+02, 2.916562805175781e+02, 2.919188842773438e+02, 2.921793518066406e+02, 2.924376525878906e+02, 2.926937561035156e+02, 2.929476928710938e+02, 2.938930969238281e+02, 2.991171569824219e+02, 2.963918762207031e+02, 2.970014343261719e+02, 2.984321594238281e+02, 2.986525268554688e+02, 2.984044494628906e+02, 2.981784057617188e+02, 2.981526794433594e+02, 2.982163391113281e+02, 2.9825732421875e+02, 2.982629699707031e+02, 2.98259033203125e+02, 2.982613220214844e+02, 2.982702941894531e+02, 2.982818603515625e+02, 2.982944030761719e+02, 2.982897033691406e+02, 2.980036010742188e+02, 2.977161560058594e+02, 2.978146362304688e+02, 2.980079345703125e+02, 2.982131652832031e+02, 2.984141540527344e+02, 2.986123657226562e+02, 2.988089599609375e+02, 2.990047912597656e+02, 2.992059631347656e+02, 2.994114685058594e+02, 2.99672607421875e+02, 3.000567016601562e+02, 3.004470520019531e+02, 3.008374328613281e+02, 3.012278442382812e+02, 3.016182250976562e+02, 3.020086364746094e+02, 3.023990173339844e+02, 3.027894287109375e+02, 3.031798400878906e+02, 3.035702209472656e+02, 3.039606323242188e+02, 3.043510131835938e+02, 3.047414245605469e+02, 3.051318054199219e+02, 3.05522216796875e+02, 3.0591259765625e+02, 3.063030090332031e+02, 3.066910095214844e+02, 3.067642822265625e+02, 3.067647705078125e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02, 3.067648010253906e+02] -con.PIPar.k=[2.5e-01, 2.5e-01, 2.5e-01, 2.5e-01, 2.5e-01, 2.5e-01, 2.5e-01, 2.5e-01, 2.5e-01, 2.5e-01, 2.5e-01, 2.5e-01, 2.5e-01, 2.5e-01, 2.5e-01, 2.5e-01, 2.5e-01, 2.5e-01, 2.5e-01, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02, 4.584548249840736e-02] -con.PIPar.Ti=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01, 1.077309417724609e+01] +hex.m1_flow=[1.000000014901161e-01, 6.713392212986946e-03, 4.609356820583344e-02, 3.077268041670322e-02, 5.122898612171412e-03, 2.778949588537216e-02, 5.239159613847733e-02, 6.33652368560433e-03, 1.500152610242367e-02, 6.478667259216309e-02, 9.460465051233768e-03, 8.108191192150116e-03, 4.577145352959633e-02, 1.090262643992901e-02, 4.833446443080901e-02, 2.644460834562778e-02, 1.988287083804607e-02, 1.793741248548031e-02, 9.604043327271938e-03, 7.234490942209959e-03, 6.201530341058969e-03, 5.479591898620129e-03, 4.936738405376673e-03, 4.522836301475763e-03, 4.201448522508144e-03, 3.947670105844736e-03, 3.744407324120402e-03, 3.577984170988202e-03, 3.44115262851119e-03, 3.328684251755476e-03, 3.236115910112858e-03, 3.159894375130534e-03, 3.097197273746133e-03, 3.045769408345222e-03, 3.033856628462672e-03, 3.226557746529579e-03, 3.65147995762527e-03, 4.34383237734437e-03, 5.378595553338528e-03, 6.846769712865353e-03, 8.799842558801174e-03, 1.121142879128456e-02, 1.403180323541164e-02, 1.713730581104755e-02, 2.041006647050381e-02, 2.383864112198353e-02, 2.748910151422024e-02, 3.148200735449791e-02, 3.59913595020771e-02, 4.122336953878403e-02, 4.743793234229088e-02, 5.375610291957855e-02, 5.856028944253922e-02, 6.272456794977188e-02, 6.661199033260348e-02, 7.030034810304644e-02, 7.38407447934151e-02, 7.727954536676407e-02, 8.065427839756012e-02, 8.399295061826706e-02, 8.731558918952942e-02, 9.063545614480972e-02, 9.395944327116013e-02, 9.728797525167465e-02, 9.944619238376617e-02, 9.991779923439026e-02, 9.998920559883118e-02, 9.696650505065918e-02, 8.005448430776596e-02, 6.739494204521179e-02, 5.819506570696831e-02, 5.137604847550392e-02, 4.645515605807304e-02, 4.299626499414444e-02, 4.060073569417e-02, 3.894951939582825e-02, 3.781068697571754e-02, 3.702318295836449e-02, 3.647713735699654e-02, 3.609766811132431e-02, 3.583354130387306e-02, 3.564943373203278e-02, 3.552097082138062e-02, 3.543130680918694e-02, 3.536869212985039e-02, 3.532492741942406e-02, 3.529435023665428e-02, 3.52729894220829e-02, 3.525804355740547e-02, 3.524759411811829e-02, 3.52403037250042e-02, 3.523522987961769e-02, 3.523170575499535e-02, 3.522920608520508e-02, 3.52274514734745e-02, 3.522622585296631e-02, 3.522537276148796e-02, 3.522477671504021e-02, 3.522435575723648e-02, 3.522404283285141e-02, 3.52238193154335e-02] +hex.m2_flow=[3.429285809397697e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02] +con.u_s=[9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.979875683784485e-01, 9.949689507484436e-01, 9.919503331184387e-01, 9.889317750930786e-01, 9.859131574630737e-01, 9.828945398330688e-01, 9.79875922203064e-01, 9.768573045730591e-01, 9.738386869430542e-01, 9.708200693130493e-01, 9.678014516830444e-01, 9.647828340530396e-01, 9.617642164230347e-01, 9.587455987930298e-01, 9.557269811630249e-01, 9.5270836353302e-01, 9.496897459030151e-01, 9.496897459030151e-01, 9.496897459030151e-01, 9.496897459030151e-01, 9.496897459030151e-01, 9.496897459030151e-01, 9.496897459030151e-01, 9.496897459030151e-01, 9.496897459030151e-01, 9.496897459030151e-01, 9.496897459030151e-01, 9.496897459030151e-01, 9.496897459030151e-01, 9.496897459030151e-01, 9.496897459030151e-01, 9.496897459030151e-01, 9.496897459030151e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01] +con.u_m=[9.8322993516922e-01, 9.855209589004517e-01, 9.6319979429245e-01, 9.457401037216187e-01, 9.81812596321106e-01, 9.735061526298523e-01, 9.436869621276855e-01, 9.744679927825928e-01, 9.820005893707275e-01, 9.461206197738647e-01, 9.640190005302429e-01, 9.860496520996094e-01, 9.548030495643616e-01, 9.710031747817993e-01, 9.561476707458496e-01, 9.55560564994812e-01, 9.659904837608337e-01, 9.694740176200867e-01, 9.811996817588806e-01, 9.882063269615173e-01, 9.912822246551514e-01, 9.931224584579468e-01, 9.944230914115906e-01, 9.953948855400085e-01, 9.961523413658142e-01, 9.967615604400635e-01, 9.972444176673889e-01, 9.976418018341064e-01, 9.979872703552246e-01, 9.982870817184448e-01, 9.985473155975342e-01, 9.987732768058777e-01, 9.98969554901123e-01, 9.991400241851807e-01, 9.992809891700745e-01, 9.992926716804504e-01, 9.990577697753906e-01, 9.984680414199829e-01, 9.973715543746948e-01, 9.955587387084961e-01, 9.9273681640625e-01, 9.892358779907227e-01, 9.85308051109314e-01, 9.810731410980225e-01, 9.769466519355774e-01, 9.730902910232544e-01, 9.695562124252319e-01, 9.663258790969849e-01, 9.633578658103943e-01, 9.606278538703918e-01, 9.581409096717834e-01, 9.560858607292175e-01, 9.548903703689575e-01, 9.541952610015869e-01, 9.537325501441956e-01, 9.53414261341095e-01, 9.531989097595215e-01, 9.530594944953918e-01, 9.529775977134705e-01, 9.529406428337097e-01, 9.529399275779724e-01, 9.529691934585571e-01, 9.530240893363953e-01, 9.531012773513794e-01, 9.532369375228882e-01, 9.532346725463867e-01, 9.532278180122375e-01, 9.532841444015503e-01, 9.543644189834595e-01, 9.558640122413635e-01, 9.574835300445557e-01, 9.591550230979919e-01, 9.607468247413635e-01, 9.621375203132629e-01, 9.632695317268372e-01, 9.64145302772522e-01, 9.648001194000244e-01, 9.652790427207947e-01, 9.65624213218689e-01, 9.6587073802948e-01, 9.660455584526062e-01, 9.661689400672913e-01, 9.662559032440186e-01, 9.663169384002686e-01, 9.663597941398621e-01, 9.663898348808289e-01, 9.664108157157898e-01, 9.664255380630493e-01, 9.664358496665955e-01, 9.664430618286133e-01, 9.664481282234192e-01, 9.664516448974609e-01, 9.66454029083252e-01, 9.664557576179504e-01, 9.664569497108459e-01, 9.664578437805176e-01, 9.664584398269653e-01, 9.664588570594788e-01, 9.664590954780579e-01, 9.66459333896637e-01, 9.664595127105713e-01] +hex.Q1_flow=[0e+00, 6.163931274414062e+02, 1.685920532226562e+03, 1.286355712890625e+03, 6.356448364257812e+02, 1.345757202148438e+03, 1.5865185546875e+03, 6.912773437499998e+02, 1.0479150390625e+03, 1.800945068359375e+03, 8.169614868164062e+02, 7.583832397460938e+02, 1.584387451171875e+03, 8.572310791015625e+02, 1.644321899414062e+03, 1.275688598632812e+03, 1.13040087890625e+03, 1.0298603515625e+03, 7.199661254882812e+02, 5.71032470703125e+02, 4.921968078613281e+02, 4.400361633300781e+02, 4.016472778320312e+02, 3.720059509277344e+02, 3.483094177246094e+02, 3.288899841308594e+02, 3.133358154296875e+02, 3.007094116210937e+02, 2.897541809082031e+02, 2.802294921875e+02, 2.719425659179688e+02, 2.647298278808594e+02, 2.584513549804688e+02, 2.529862670898438e+02, 2.488420715332031e+02, 2.505237121582031e+02, 2.617873840332031e+02, 2.865640258789062e+02, 3.301451416015625e+02, 3.992220458984375e+02, 4.990628662109375e+02, 6.13083984375e+02, 7.334096069335938e+02, 8.53134765625e+02, 9.62010986328125e+02, 1.05761328125e+03, 1.1410361328125e+03, 1.214447143554688e+03, 1.279845458984375e+03, 1.3381904296875e+03, 1.389666870117188e+03, 1.4232587890625e+03, 1.438240112304688e+03, 1.448079345703125e+03, 1.455017700195312e+03, 1.459724243164062e+03, 1.46279931640625e+03, 1.464667724609375e+03, 1.465606689453125e+03, 1.465804321289062e+03, 1.465392333984375e+03, 1.464460693359375e+03, 1.463075927734375e+03, 1.461282470703125e+03, 1.456534790039062e+03, 1.457442993164062e+03, 1.457334350585938e+03, 1.443636474609375e+03, 1.407702270507812e+03, 1.3781669921875e+03, 1.3461162109375e+03, 1.313531616210938e+03, 1.283332763671875e+03, 1.257457275390625e+03, 1.23659814453125e+03, 1.220504760742188e+03, 1.208461181640625e+03, 1.199634033203125e+03, 1.19325634765625e+03, 1.188693969726562e+03, 1.185453247070312e+03, 1.183162109375e+03, 1.18154736328125e+03, 1.180412353515625e+03, 1.179615966796875e+03, 1.179057495117188e+03, 1.178666259765625e+03, 1.178392456054688e+03, 1.17820068359375e+03, 1.178066528320312e+03, 1.177972900390625e+03, 1.17790771484375e+03, 1.1778623046875e+03, 1.177830200195312e+03, 1.177807739257812e+03, 1.177791870117188e+03, 1.177780883789062e+03, 1.177773193359375e+03, 1.177767822265625e+03, 1.177763793945312e+03, 1.177760986328125e+03] +hex.Q2_flow=[0e+00, -6.455992431640625e+02, -1.465983642578125e+03, -1.454822143554688e+03, -7.045239868164062e+02, -1.184287963867188e+03, -1.614622924804688e+03, -8.266398925781245e+02, -9.277782592773438e+02, -1.688719116210938e+03, -1.019306396484375e+03, -7.1798974609375e+02, -1.505216064453125e+03, -9.567461547851562e+02, -1.518182495117188e+03, -1.34414501953125e+03, -1.157822387695312e+03, -1.067546020507812e+03, -7.602221069335938e+02, -5.872113647460938e+02, -5.026613464355469e+02, -4.473784484863281e+02, -4.070338134765625e+02, -3.761354675292969e+02, -3.515899658203125e+02, -3.315618896484375e+02, -3.161153259277344e+02, -3.031938781738281e+02, -2.919435729980468e+02, -2.821481628417969e+02, -2.736172485351562e+02, -2.661876525878906e+02, -2.597174987792969e+02, -2.540836639404297e+02, -2.495997009277344e+02, -2.5022998046875e+02, -2.598454895019531e+02, -2.821481323242188e+02, -3.220774841308594e+02, -3.880975952148438e+02, -4.84220703125e+02, -5.9577197265625e+02, -7.160732421875e+02, -8.350535278320312e+02, -9.438720092773438e+02, -1.039902587890625e+03, -1.123827026367188e+03, -1.197586181640625e+03, -1.26312255859375e+03, -1.32153125e+03, -1.373137817382812e+03, -1.410982788085938e+03, -1.430627197265625e+03, -1.442554321289062e+03, -1.450671264648438e+03, -1.45622412109375e+03, -1.459935668945312e+03, -1.462290405273438e+03, -1.463611938476562e+03, -1.464119384765625e+03, -1.463965087890625e+03, -1.463255493164062e+03, -1.462067626953125e+03, -1.460455932617188e+03, -1.456834594726562e+03, -1.457291137695312e+03, -1.45731201171875e+03, -1.450518676757812e+03, -1.422169067382812e+03, -1.392191162109375e+03, -1.359488403320312e+03, -1.325679565429688e+03, -1.293615844726562e+03, -1.2656376953125e+03, -1.242817016601562e+03, -1.225093383789062e+03, -1.211783935546875e+03, -1.202011840820312e+03, -1.194945190429688e+03, -1.189887573242188e+03, -1.186293701171875e+03, -1.183753051757812e+03, -1.181962158203125e+03, -1.180703002929688e+03, -1.179819580078125e+03, -1.179200073242188e+03, -1.178765869140625e+03, -1.178462158203125e+03, -1.178249633789062e+03, -1.178100708007812e+03, -1.177996704101562e+03, -1.17792431640625e+03, -1.1778740234375e+03, -1.177838623046875e+03, -1.177813598632812e+03, -1.177796020507812e+03, -1.17778369140625e+03, -1.177775146484375e+03, -1.177769287109375e+03, -1.177764892578125e+03, -1.17776171875e+03] +hex.QLat2_flow=[0e+00, -3.875767822265625e+02, -9.295764770507812e+02, -8.981924438476562e+02, -4.282272033691406e+02, -7.549815063476562e+02, -9.932260131835938e+02, -5.104996643066403e+02, -5.86702392578125e+02, -1.041918090820312e+03, -6.352566528320312e+02, -4.402300415039062e+02, -9.414437866210938e+02, -5.980038452148438e+02, -9.518583984375e+02, -8.404900512695312e+02, -7.295939331054688e+02, -6.718241577148438e+02, -4.671914978027344e+02, -3.461683654785156e+02, -2.861692810058594e+02, -2.458041839599609e+02, -2.161116638183594e+02, -1.932534942626953e+02, -1.750264892578125e+02, -1.601098022460938e+02, -1.488929443359375e+02, -1.393431854248047e+02, -1.310112915039062e+02, -1.237448654174805e+02, -1.174072875976562e+02, -1.118809814453125e+02, -1.070630493164062e+02, -1.028637390136719e+02, -9.950031280517578e+01, -9.987432098388672e+01, -1.068718338012695e+02, -1.231753005981445e+02, -1.522852935791016e+02, -2.013511352539062e+02, -2.715889282226562e+02, -3.518664245605469e+02, -4.380474243164062e+02, -5.20234619140625e+02, -5.935468139648438e+02, -6.566510620117188e+02, -7.105056762695312e+02, -7.567939453125e+02, -7.970682373046875e+02, -8.322509765625e+02, -8.627503051757812e+02, -8.845240478515625e+02, -8.955810546875e+02, -9.023052978515625e+02, -9.068853149414062e+02, -9.100164794921875e+02, -9.121106567382812e+02, -9.134429321289062e+02, -9.14195556640625e+02, -9.144918212890625e+02, -9.144169311523438e+02, -9.140297241210938e+02, -9.133732299804688e+02, -9.124771118164062e+02, -9.103837890625e+02, -9.106468505859375e+02, -9.106529541015625e+02, -9.064852294921875e+02, -8.899208984375e+02, -8.725841064453125e+02, -8.534724731445312e+02, -8.335143432617188e+02, -8.144086303710938e+02, -7.975930786132812e+02, -7.837744750976562e+02, -7.729769287109375e+02, -7.648302001953125e+02, -7.588275756835938e+02, -7.544755859375e+02, -7.513551025390625e+02, -7.491347045898438e+02, -7.475635375976562e+02, -7.464552612304688e+02, -7.456757202148438e+02, -7.451286010742188e+02, -7.447448120117188e+02, -7.444758911132812e+02, -7.442877197265625e+02, -7.441559448242188e+02, -7.440636596679688e+02, -7.439992065429688e+02, -7.43954345703125e+02, -7.439232177734375e+02, -7.439012451171875e+02, -7.438857421875e+02, -7.438748168945312e+02, -7.438672485351562e+02, -7.438619384765625e+02, -7.438582763671875e+02, -7.438555297851562e+02, -7.438535766601562e+02] +hex.QSen2_flow=[0e+00, -2.580224609375e+02, -5.364071044921875e+02, -5.566296997070312e+02, -2.762968139648438e+02, -4.293064880371094e+02, -6.213969116210938e+02, -3.161402587890624e+02, -3.410758056640625e+02, -6.468010864257812e+02, -3.840497436523438e+02, -2.777597045898438e+02, -5.637722778320312e+02, -3.587423400878906e+02, -5.663240356445314e+02, -5.036549682617188e+02, -4.282284851074219e+02, -3.957218933105469e+02, -2.930306091308594e+02, -2.410430145263672e+02, -2.164920806884766e+02, -2.015742645263672e+02, -1.909221496582031e+02, -1.828819580078125e+02, -1.765634613037109e+02, -1.714520874023438e+02, -1.672223815917969e+02, -1.638506927490234e+02, -1.609322814941406e+02, -1.584033050537109e+02, -1.562099609375e+02, -1.543066711425781e+02, -1.526544647216797e+02, -1.512199249267578e+02, -1.500993804931641e+02, -1.503556518554688e+02, -1.529736480712891e+02, -1.589728393554688e+02, -1.697921905517578e+02, -1.867464447021484e+02, -2.126317596435547e+02, -2.439055328369141e+02, -2.780258178710938e+02, -3.148188781738281e+02, -3.503252258300781e+02, -3.832515869140625e+02, -4.133212890625e+02, -4.40792236328125e+02, -4.660542602539062e+02, -4.892802734375e+02, -5.10387451171875e+02, -5.264588012695312e+02, -5.35046142578125e+02, -5.402490234375e+02, -5.437859497070312e+02, -5.462076416015625e+02, -5.478250122070312e+02, -5.488474731445312e+02, -5.494163208007812e+02, -5.496275634765625e+02, -5.495482177734375e+02, -5.492257690429688e+02, -5.486944580078125e+02, -5.479788208007812e+02, -5.464508056640625e+02, -5.46644287109375e+02, -5.466590576171875e+02, -5.440333862304688e+02, -5.322481689453125e+02, -5.196070556640625e+02, -5.060159606933594e+02, -4.921652221679688e+02, -4.792071533203125e+02, -4.680446166992188e+02, -4.590425720214844e+02, -4.521164855957031e+02, -4.469537353515625e+02, -4.431842651367188e+02, -4.404696350097656e+02, -4.385324401855469e+02, -4.371590576171875e+02, -4.361895141601562e+02, -4.355068359375e+02, -4.350272827148438e+02, -4.346909790039062e+02, -4.344552001953125e+02, -4.342900390625e+02, -4.341745300292969e+02, -4.340936584472656e+02, -4.340370483398438e+02, -4.339974975585938e+02, -4.33969970703125e+02, -4.339508361816406e+02, -4.339373779296875e+02, -4.339278869628906e+02, -4.339211730957031e+02, -4.3391650390625e+02, -4.339132385253906e+02, -4.339110107421875e+02, -4.339093627929688e+02, -4.339081420898438e+02] From dbc6419ec4e0bacbc64dad699993414c20429ae5 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Wed, 27 Dec 2023 23:21:52 -0500 Subject: [PATCH 162/214] remove space and typo --- .../OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo | 2 +- .../OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index 6ad574197f7..a8e2cafff62 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -203,7 +203,7 @@ equation connect(PIPar.Ti, samTi.u) annotation (Line(points={{102,64},{112,64},{112,98}, {-150,98},{-150,-50},{-122,-50}}, color={0,0,127})); connect(resPro.triEnd, conProMod.triEnd) annotation (Line(points={{22,32},{56, - 32},{56,58}}, color={255,0,255})); + 32},{56,58}}, color={255,0,255})); connect(resPro.triSta, conProMod.triSta) annotation (Line(points={{22,36},{44, 36},{44,58}}, color={255,0,255})); connect(resPro.triEnd, samTi.trigger) annotation (Line(points={{22,32},{30,32}, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo index fba20b1d429..32b6006a1f4 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo @@ -77,11 +77,11 @@ equation connect(lowVal.y, swi.u3) annotation (Line(points={{-58,20},{-20,20},{-20,42}, {58,42}},color={0,0,127})); connect(swi1.u3, u_s) annotation (Line(points={{-62,-48},{-90,-48},{-90,0},{-120, - 0}}, color={0,0,127})); + 0}}, color={0,0,127})); connect(trigger, swi1.u2) annotation (Line(points={{-80,-120},{-80,-40},{-62,-40}}, - color={255,0,255})); + color={255,0,255})); connect(u_m, swi1.u1) annotation (Line(points={{0,-120},{0,-90},{-70,-90},{-70, - -32},{-62,-32}}, color={0,0,127})); + -32},{-62,-32}}, color={0,0,127})); connect(dirActErr.y, hys.u) annotation (Line(points={{2,-70},{10,-70},{10,-60}, {18,-60}}, color={0,0,127})); connect(revActErr.y, hys.u) annotation (Line(points={{2,-20},{10,-20},{10,-60}, @@ -153,7 +153,7 @@ Step 1: calculate control error,
                                                  • If the parameter reverseActing = true, then the control error (err = u_s - u_m), -else the contorl error (err = u_m - u_s). +else the control error (err = u_m - u_s).
                                                  • From 6925d5919302aed34fb088e90b0f9ec76abc9213 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Thu, 28 Dec 2023 14:12:22 -0500 Subject: [PATCH 163/214] minor changes to fix typo and remove extra space --- .../PIDWithAutotuning/FirstOrderAMIGO.mo | 2 +- .../WetCoilCounterFlowPControlAutoTuning.mo | 22 +++++++++---------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index a8e2cafff62..2b09e5f36fb 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -59,7 +59,7 @@ block FirstOrderAMIGO annotation (Placement(transformation(origin={-20,-120},extent={{20,-20},{-20,20}},rotation=270), iconTransformation(extent={{20,-20},{-20,20}},rotation=270,origin={0,-120}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanInput triRes - "Connector for reseting the controller output" + "Connector for resetting the controller output" annotation (Placement(transformation(extent={{-20,-20},{20,20}},rotation=90,origin={-60,-120}), iconTransformation(extent={{-20,-20},{20,20}},rotation=90,origin={-60,-120}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanInput triTun diff --git a/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo b/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo index 6a35d003cd5..c50cb3a318a 100644 --- a/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo +++ b/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo @@ -118,11 +118,12 @@ model WetCoilCounterFlowPControlAutoTuning "normalize the setpoint" annotation (Placement(transformation(extent={{-48,92},{-32,108}}))); Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter gai2(k=1/298.15) - "normalize the measurement" annotation ( + "normalize the measurement" + annotation ( Placement(transformation( - extent={{-7,-7},{7,7}}, + extent={{-8,-8},{8,8}}, rotation=90, - origin={11,49}))); + origin={10,48}))); equation connect(hex.port_b1, res_1.port_a) annotation (Line(points={{80,32},{86,32},{ 86,60},{90,60}}, color={0,127,255})); @@ -179,16 +180,15 @@ equation connect(resSig.y, con.triRes) annotation (Line(points={{-58,170},{-20,170},{-20, 80},{4,80},{4,88}}, color={255,0,255})); connect(autTunSig.y, con.triTun) annotation (Line(points={{42,170},{74,170},{74, - 80},{16,80},{16,88}}, color={255,0,255})); + 80},{16,80},{16,88}}, color={255,0,255})); connect(TSet.y, gai1.u) annotation (Line(points={{-59,100},{-49.6,100}}, - color={0,0,127})); + color={0,0,127})); connect(gai1.y, con.u_s) annotation (Line(points={{-30.4,100},{-2,100}}, - color={0,0,127})); - connect(temSen.T, gai2.u) annotation (Line(points={{10,31},{10,35.8},{11,35.8}, - {11,40.6}},color={0,0,127})); - connect(gai2.y, con.u_m) annotation (Line(points={{11,57.4},{11,72.7},{10, - 72.7},{10,88}}, - color={0,0,127})); + color={0,0,127})); + connect(temSen.T, gai2.u) annotation (Line(points={{10,31},{10,38.4}}, + color={0,0,127})); + connect(gai2.y, con.u_m) annotation (Line(points={{10,57.6},{10,88}}, + color={0,0,127})); annotation (Diagram(coordinateSystem(preserveAspectRatio=true, extent={{-100, -100},{200,200}})), experiment(Tolerance=1e-6, StopTime=3600), From b9e833350903b72c3c1985418183b0504eca1ea0 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Thu, 28 Dec 2023 17:17:00 -0500 Subject: [PATCH 164/214] remove reference data that doesnt change --- ...ities_PIDWithAutotuning_Relay_Validation_ResponseProcess.txt | 2 +- ...cation_FirstOrderTimedelayed_BaseClasses_Validation_Gain.txt | 2 +- ...rderTimedelayed_BaseClasses_Validation_TimeConstantDelay.txt | 2 +- ...ion_FirstOrderTimedelayed_Validation_ControlProcessModel.txt | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_ResponseProcess.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_ResponseProcess.txt index 48584f13f7b..8a13b588b61 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_ResponseProcess.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Relay_Validation_ResponseProcess.txt @@ -1,4 +1,4 @@ -last-generated=2023-12-27 +last-generated=2023-09-19 statistics-simulation= { "linear": " ", diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_BaseClasses_Validation_Gain.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_BaseClasses_Validation_Gain.txt index d4ad37dccc1..e7340fd1ce5 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_BaseClasses_Validation_Gain.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_BaseClasses_Validation_Gain.txt @@ -1,4 +1,4 @@ -last-generated=2023-12-27 +last-generated=2023-09-19 statistics-simulation= { "linear": " ", diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_BaseClasses_Validation_TimeConstantDelay.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_BaseClasses_Validation_TimeConstantDelay.txt index 3bf5ffdb7d0..f47b7d401e8 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_BaseClasses_Validation_TimeConstantDelay.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_BaseClasses_Validation_TimeConstantDelay.txt @@ -1,4 +1,4 @@ -last-generated=2023-12-27 +last-generated=2023-09-19 statistics-simulation= { "linear": " ", diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_Validation_ControlProcessModel.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_Validation_ControlProcessModel.txt index 3b0be415079..2a819467dfe 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_Validation_ControlProcessModel.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_Validation_ControlProcessModel.txt @@ -1,4 +1,4 @@ -last-generated=2023-12-27 +last-generated=2023-09-19 statistics-simulation= { "linear": " ", From 7c1aa5bf16f7f12cfcb152bba0e177c155d0eed4 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Wed, 3 Jan 2024 18:19:15 -0500 Subject: [PATCH 165/214] remove the incompatible codes and improve model doc --- .../PIDWithAutotuning/FirstOrderAMIGO.mo | 72 ++++++++++++++++--- .../WetCoilCounterFlowPControlAutoTuning.mo | 1 - 2 files changed, 61 insertions(+), 12 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index 2b09e5f36fb..060ea8b3aab 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -127,8 +127,8 @@ block FirstOrderAMIGO Buildings.Controls.OBC.CDL.Logical.Nand nand "Check if an autotuning is ongoing while a new autotuning request is received" annotation (Placement(transformation(extent={{120,-72},{140,-52}}))); - Buildings.Controls.OBC.CDL.Utilities.Assert assMes( - message="*** Warning in " + getInstanceName() + "An autotuning is ongoing and an autotuning request is ignored.") + Buildings.Controls.OBC.CDL.Utilities.Assert assMes1( + message="*** Warning: An autotuning is ongoing and the new autotuning request is ignored.") "Error message when an autotuning tuning is ongoing while a new autotuning request is received" annotation (Placement(transformation(extent={{148,-72},{168,-52}}))); Buildings.Controls.OBC.CDL.Logical.Edge edgReq @@ -147,13 +147,38 @@ protected then Buildings.Controls.OBC.CDL.Types.SimpleController.PI else Buildings.Controls.OBC.CDL.Types.SimpleController.PID "Type of controller"; - -initial equation - // check if the relay output is asymmetric. - assert(yHig + yLow - 2*yRef > 1e-3 or yHig + yLow - 2*yRef < -1e-3, - "*** Error in " + getInstanceName() + - ": the relay output needs to be asymmetric. Check the value of yHig, yLow and yRef", - level = AssertionLevel.error); + Buildings.Controls.OBC.CDL.Utilities.Assert assMes2( + message="*** Warning: the relay output needs to be asymmetric. + Check the value of yHig, yLow and yRef.") + "Error message when the relay output is symmetric" + annotation (Placement(transformation(extent={{60,140},{80,160}}))); + Buildings.Controls.OBC.CDL.Reals.Sources.Constant con1(final k=yHig) + "Higher value for the relay output" + annotation (Placement(transformation(extent={{-140,170},{-120,190}}))); + Buildings.Controls.OBC.CDL.Reals.Sources.Constant con2(final k=yRef) + "Reference value for the relay output" + annotation (Placement(transformation(extent={{-160,140},{-140,160}}))); + Buildings.Controls.OBC.CDL.Reals.Sources.Constant con3(final k=yLow) + "Lower value for the relay output" + annotation (Placement(transformation(extent={{-140,110},{-120,130}}))); + Buildings.Controls.OBC.CDL.Reals.Subtract sub + "Difference between the higher value and the reference value of the relay output" + annotation (Placement(transformation(extent={{-100,160},{-80,180}}))); + Buildings.Controls.OBC.CDL.Reals.Subtract sub1 + "Difference between the reference value and the lower value of the relay output" + annotation (Placement(transformation(extent={{-100,120},{-80,140}}))); + Buildings.Controls.OBC.CDL.Reals.Subtract sub2 + "Symmetricity level of the relay output" + annotation (Placement(transformation(extent={{-60,140},{-40,160}}))); + Buildings.Controls.OBC.CDL.Reals.Abs abs1 + "Absolute value" + annotation (Placement(transformation(extent={{-20,140},{0,160}}))); + Buildings.Controls.OBC.CDL.Reals.Greater gre + "Check the symmetricity of the relay output" + annotation (Placement(transformation(extent={{20,140},{40,160}}))); + Buildings.Controls.OBC.CDL.Reals.Sources.Constant con4(final k=1e-3) + "Threshold for checking the symmetricity of the relay output" + annotation (Placement(transformation(extent={{-20,110},{0,130}}))); equation connect(con.u_s, u_s) annotation (Line(points={{-52,-40},{-60,-40},{-60,0},{-200, @@ -231,7 +256,8 @@ equation {-6,-70},{60,-70},{60,-120}}, color={255,0,255})); connect(resPro.trigger, triTun) annotation (Line(points={{-2,34},{-6,34},{-6,-70}, {60,-70},{60,-120}}, color={255,0,255})); - connect(nand.y, assMes.u) annotation (Line(points={{142,-62},{146,-62}}, color={255,0,255})); + connect(nand.y, assMes1.u) + annotation (Line(points={{142,-62},{146,-62}}, color={255,0,255})); connect(nand.u2, edgReq.y) annotation (Line(points={{118,-70},{102,-70}}, color={255,0,255})); connect(edgReq.u, triTun) @@ -240,6 +266,26 @@ equation -62},{118,-62}}, color={255,0,255})); connect(tunStaDel.u, inTunPro.y) annotation (Line(points={{78,-30},{50,-30},{50, -20},{42,-20}}, color={255,0,255})); + connect(con1.y, sub.u1) annotation (Line(points={{-118,180},{-108,180},{-108,176}, + {-102,176}}, color={0,0,127})); + connect(con2.y, sub.u2) annotation (Line(points={{-138,150},{-108,150},{-108,164}, + {-102,164}}, color={0,0,127})); + connect(sub1.u1, con2.y) annotation (Line(points={{-102,136},{-108,136},{-108, + 150},{-138,150}}, color={0,0,127})); + connect(sub1.u2, con3.y) annotation (Line(points={{-102,124},{-108,124},{-108, + 120},{-118,120}}, color={0,0,127})); + connect(sub.y, sub2.u1) annotation (Line(points={{-78,170},{-68,170},{-68,156}, + {-62,156}}, color={0,0,127})); + connect(sub1.y, sub2.u2) annotation (Line(points={{-78,130},{-68,130},{-68,144}, + {-62,144}}, color={0,0,127})); + connect(abs1.u, sub2.y) + annotation (Line(points={{-22,150},{-38,150}}, color={0,0,127})); + connect(abs1.y, gre.u1) + annotation (Line(points={{2,150},{18,150}}, color={0,0,127})); + connect(gre.y, assMes2.u) + annotation (Line(points={{42,150},{58,150}}, color={255,0,255})); + connect(con4.y, gre.u2) annotation (Line(points={{2,120},{10,120},{10,142},{18, + 142}}, color={0,0,127})); annotation (Documentation(info="

                                                    This block implements a rule-based PID tuning method. @@ -286,6 +332,10 @@ a request for performing autotuning will be ignored.

                                                    In addition, this block requires an asymmetric relay output, meaning yHig - yRef ≠ yRef - yLow.

                                                    +

                                                    +Besides, one need to adjust deaBan based on the response from the control loop. +e.g., decrease deaBan when the system response is slow to facilitate the tuning process. +

                                                    References

                                                    @@ -397,5 +447,5 @@ First implementation
                                                    "Td = " + String(con.Td, leftJustified=false, significantDigits=3)))}), - Diagram(coordinateSystem(extent={{-180,-100},{180,100}}))); + Diagram(coordinateSystem(extent={{-180,-100},{180,200}}))); end FirstOrderAMIGO; diff --git a/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo b/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo index c50cb3a318a..109c9dc103a 100644 --- a/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo +++ b/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo @@ -92,7 +92,6 @@ model WetCoilCounterFlowPControlAutoTuning annotation (Placement(transformation(extent={{100,-38},{120,-18}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.FirstOrderAMIGO con(controllerType=Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PI, - yHig=1, yLow=0.2, yRef=0.5, deaBan=1/298.15, From 1187fb1c59e2109bac35066850257ad6b8cd3372 Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Thu, 4 Jan 2024 16:51:20 -0800 Subject: [PATCH 166/214] improved comment --- .../Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index 060ea8b3aab..205c257b202 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -174,7 +174,7 @@ protected "Absolute value" annotation (Placement(transformation(extent={{-20,140},{0,160}}))); Buildings.Controls.OBC.CDL.Reals.Greater gre - "Check the symmetricity of the relay output" + "Check if the relay output is asymmetric" annotation (Placement(transformation(extent={{20,140},{40,160}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant con4(final k=1e-3) "Threshold for checking the symmetricity of the relay output" From 38e55868405623f2ad8bd2b6c9e4ef2289bd5723 Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Tue, 9 Jan 2024 10:44:01 -0800 Subject: [PATCH 167/214] updated modelTime to civilTime --- .../Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo | 2 +- .../Relay/BaseClasses/Validation/OnOffPeriod.mo | 2 +- .../PIDWithAutotuning/Relay/Validation/ResponseProcess.mo | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index 205c257b202..d1ca94708a7 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -69,7 +69,7 @@ block FirstOrderAMIGO Buildings.Controls.OBC.CDL.Interfaces.RealOutput y "Connector for actuator output signal" annotation (Placement(transformation(extent={{180,-20},{220,20}}),iconTransformation(extent={{100,-20},{140,20}}))); - Buildings.Controls.OBC.CDL.Reals.Sources.ModelTime modTim + Buildings.Controls.OBC.CDL.Reals.Sources.CivilTime modTim "Simulation time" annotation (Placement(transformation(extent={{-60,60},{-40,80}}))); Buildings.Controls.OBC.Utilities.PIDWithInputGains con( diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/OnOffPeriod.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/OnOffPeriod.mo index ddbe2db50f0..065b1fe8ef4 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/OnOffPeriod.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/OnOffPeriod.mo @@ -3,7 +3,7 @@ model OnOffPeriod "Test model for calculating the length of the on period and th Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.OnOffPeriod onOffPer "Calculate the length of the on period and the off period" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - Buildings.Controls.OBC.CDL.Reals.Sources.ModelTime modTim + Buildings.Controls.OBC.CDL.Reals.Sources.CivilTime modTim "Simulation time" annotation (Placement(transformation(extent={{-60,10},{-40,30}}))); Buildings.Controls.OBC.CDL.Logical.Sources.Pulse relSwi( diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mo index 5d859824c89..5e809e4c198 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Validation/ResponseProcess.mo @@ -5,7 +5,7 @@ model ResponseProcess "Test model for processing the response of a relay control final yLow=0.2) "Calculate the length of the on period and the off period" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); - Buildings.Controls.OBC.CDL.Reals.Sources.ModelTime modTim + Buildings.Controls.OBC.CDL.Reals.Sources.CivilTime modTim "Simulation time" annotation (Placement(transformation(extent={{-60,10},{-40,30}}))); Buildings.Controls.OBC.CDL.Logical.Sources.Pulse relSwi( From d1212bd350558f815f1e78138c1e281fbf06440f Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Mon, 4 Mar 2024 10:29:53 -0800 Subject: [PATCH 168/214] refactored txt format --- .../Relay/BaseClasses/NormalizedTimeDelay.mo | 13 +++++------ .../Relay/BaseClasses/OnOffPeriod.mo | 18 ++++++--------- .../Relay/BaseClasses/TuningMonitor.mo | 4 ++-- .../Relay/ResponseProcess.mo | 22 ++++++++----------- 4 files changed, 23 insertions(+), 34 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/NormalizedTimeDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/NormalizedTimeDelay.mo index 9928679df61..3205ed7af24 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/NormalizedTimeDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/NormalizedTimeDelay.mo @@ -2,7 +2,7 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses; block NormalizedTimeDelay "Calculate the normalized time delay of a response from a relay controller" parameter Real gamma(min=1+1E-6) = 4 - "Asymmetry level of the relay controller"; + "Asymmetry level of the relay controller"; Buildings.Controls.OBC.CDL.Interfaces.RealInput rho "Half period ratio" annotation (Placement(transformation(extent={{-140,-20},{-100,20}}), @@ -48,17 +48,15 @@ protected equation connect(subGamRho.u1, asyLev.y) annotation (Line(points={{18,26},{-50,26},{ - -50,80},{-58,80}}, - color={0,0,127})); + -50,80},{-58,80}}, color={0,0,127})); connect(subGamRho.u2, rho) annotation (Line(points={{18,14},{-94,14},{-94,0}, - {-120,0}}, color={0,0,127})); + {-120,0}}, color={0,0,127})); connect(gai.u, rho) annotation (Line(points={{-82,-60},{-94,-60},{-94,0},{-120, 0}}, color={0,0,127})); connect(div.u1, subGamRho.y) annotation (Line(points={{58,6},{50,6},{50,20},{42,20}}, color={0,0,127})); connect(div.u2, mul.y) annotation (Line(points={{58,-6},{50,-6},{50,-38},{42, - -38}}, - color={0,0,127})); + -38}}, color={0,0,127})); connect(div.y, tau) annotation (Line(points={{82,0},{120,0}}, color={0,0,127})); connect(gai.y, addPar2.u) @@ -66,8 +64,7 @@ equation connect(addPar2.y, mul.u2) annotation (Line(points={{-18,-60},{0,-60},{0,-44}, {18,-44}}, color={0,0,127})); connect(addPar1.u, asyLev.y) annotation (Line(points={{-42,-10},{-50,-10},{ - -50,80},{-58,80}}, - color={0,0,127})); + -50,80},{-58,80}}, color={0,0,127})); connect(addPar1.y, mul.u1) annotation (Line(points={{-18,-10},{0,-10},{0,-32}, {18,-32}}, color={0,0,127})); connect(asyLev.y, gre.u1) annotation (Line(points={{-58,80},{-50,80},{-50,60}, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/OnOffPeriod.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/OnOffPeriod.mo index e92e7f7b8ec..01f192453ad 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/OnOffPeriod.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/OnOffPeriod.mo @@ -11,9 +11,9 @@ block OnOffPeriod "Calculate the lengths of the on period and the off period" annotation (Placement(transformation(extent={{-140,-20},{-100,20}}), iconTransformation(extent={{-140,-20},{-100,20}}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanInput trigger - "Reset the output when trigger becomes true" annotation (Placement( - transformation(extent={{-140,-80},{-100,-40}}), iconTransformation( - extent={{-140,-80},{-100,-40}}))); + "Reset the output when trigger becomes true" + annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), + iconTransformation(extent={{-140,-80},{-100,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput tOff( final quantity="Time", final unit="s", @@ -58,16 +58,13 @@ equation connect(lenOnCal.u2, timOn.y) annotation (Line(points={{10,34},{0,34},{0,40},{-28,40}},color={0,0,127})); connect(lenOnCal.u1, timOff.y) annotation (Line(points={{10,46},{-20,46},{-20, - 0},{-28,0}}, - color={0,0,127})); + 0},{-28,0}}, color={0,0,127})); connect(lenOffCal.u2, timOff.y) annotation (Line(points={{8,-46},{-20,-46},{ - -20,0},{-28,0}}, - color={0,0,127})); + -20,0},{-28,0}}, color={0,0,127})); connect(timOn.u, tim) annotation (Line(points={{-52,40},{-120,40}}, color={0,0,127})); connect(timOff.u, tim) annotation (Line(points={{-52,0},{-60,0},{-60,40},{ - -120,40}}, - color={0,0,127})); + -120,40}}, color={0,0,127})); connect(timOn.trigger, on) annotation (Line(points={{-40,28},{-40,20},{-92,20}, {-92,0},{-120,0}}, color={255,0,255})); connect(not1.u, on) annotation (Line(points={{-82,-20},{-92,-20},{-92,0},{-120, @@ -79,8 +76,7 @@ equation connect(timOffRec.y, tOff) annotation (Line(points={{82,-40},{120,-40}}, color={0,0,127})); connect(lenOnCal.y, timOnRec.u) annotation (Line(points={{34,40},{40,40},{40, - 46},{58,46}}, - color={0,0,127})); + 46},{58,46}}, color={0,0,127})); connect(lenOffCal.y, timOffRec.u) annotation (Line(points={{32,-40},{48,-40},{ 48,-34},{58,-34}}, color={0,0,127})); connect(timOnRec.trigger, trigger) annotation (Line(points={{58,34},{40,34},{40, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/TuningMonitor.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/TuningMonitor.mo index e5bb64a041e..6e2cbc33369 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/TuningMonitor.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/TuningMonitor.mo @@ -28,10 +28,10 @@ block TuningMonitor "Monitor the tuning process" protected Buildings.Controls.OBC.CDL.Reals.Max tMax "Maximum value of the length for the on and Off period " - annotation (Placement(transformation(origin={-50,-10}, extent = {{-80, 60}, {-60, 80}}))); + annotation (Placement(transformation(origin={-50,-10}, extent = {{-80, 60}, {-60, 80}}))); Buildings.Controls.OBC.CDL.Reals.Greater greThr "Check if either the length for the on period or the length for the off period are larger than 0" - annotation (Placement(transformation(origin={-40,10}, extent = {{-40, 40}, {-20, 60}}))); + annotation (Placement(transformation(origin={-40,10}, extent = {{-40, 40}, {-20, 60}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant minLen( final k=minHorLen) "Minimum value for the horizon length" diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo index 1e7bdac79ab..7df87817336 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo @@ -16,9 +16,9 @@ block ResponseProcess annotation (Placement(transformation(extent={{-140,40},{-100,80}}), iconTransformation(extent={{-140,40},{-100,80}}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanInput trigger - "Reset the output when trigger becomes true" annotation (Placement( - transformation(extent={{-140,-80},{-100,-40}}), iconTransformation( - extent={{-140,-80},{-100,-40}}))); + "Reset the output when trigger becomes true" + annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), + iconTransformation(extent={{-140,-80},{-100,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput tOn( final quantity="Time", final unit="s", @@ -63,17 +63,15 @@ equation connect(onOffPer.tim, tim) annotation (Line(points={{-82,6},{-90,6},{-90,60}, {-120,60}}, color={0,0,127})); connect(onOffPer.tOn, halPerRatio.tOn) annotation (Line(points={{-58,4},{-30, - 4},{-30,6},{18,6}}, color={0,0,127})); + 4},{-30,6},{18,6}}, color={0,0,127})); connect(onOffPer.tOff, halPerRatio.tOff) annotation (Line(points={{-58,-4},{ - -40,-4},{-40,-6},{18,-6}}, - color={0,0,127})); + -40,-4},{-40,-6},{18,-6}}, color={0,0,127})); connect(halPerRatio.rho, norTimDel.rho) annotation (Line(points={{42,0},{58,0}}, color={0,0,127})); connect(tOn, halPerRatio.tOn) annotation (Line(points={{120,80},{-30,80},{-30, - 6},{18,6}}, color={0,0,127})); + 6},{18,6}}, color={0,0,127})); connect(tOff, halPerRatio.tOff) annotation (Line(points={{120,40},{-40,40},{ - -40,-6},{18,-6}}, - color={0,0,127})); + -40,-6},{18,-6}}, color={0,0,127})); connect(norTimDel.tau, tau) annotation (Line(points={{82,0},{120,0}}, color={0,0,127})); connect(tunMon.triSta, triSta) annotation (Line(points={{2,-34},{80,-34},{80, @@ -83,13 +81,11 @@ equation connect(tunMon.tOn, onOffPer.tOn) annotation (Line(points={{-22,-34},{-30,-34}, {-30,4},{-58,4}}, color={0,0,127})); connect(tunMon.tOff, onOffPer.tOff) annotation (Line(points={{-22,-46},{-40, - -46},{-40,-4},{-58,-4}}, - color={0,0,127})); + -46},{-40,-4},{-58,-4}}, color={0,0,127})); connect(halPerRatio.TunEnd, tunMon.triEnd) annotation (Line(points={{18,0},{ 10,0},{10,-46},{2,-46}}, color={255,0,255})); connect(onOffPer.trigger, trigger) annotation (Line(points={{-82,-6},{-90,-6}, - {-90,-60},{-120,-60}}, - color={255,0,255})); + {-90,-60},{-120,-60}}, color={255,0,255})); annotation ( defaultComponentName = "resPro", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ From 63be78f3deddd9316612020c57e18e0498bedfdc Mon Sep 17 00:00:00 2001 From: Michael Wetter Date: Tue, 12 Mar 2024 15:34:22 -0700 Subject: [PATCH 169/214] Issue2884 pid autotuning - revision (#3691) * Revised grammar * Propagated range of control error to relay controller [ci skip] * Removed wrong normalization * Changed deadband default setting for consistency within package --- .../PIDWithAutotuning/FirstOrderAMIGO.mo | 11 ++- .../PIDWithAutotuning/Relay/Controller.mo | 89 ++++++++++++------- .../BaseClasses/TimeConstantDelay.mo | 10 ++- .../Validation/TimeConstantDelay.mo | 5 +- .../ControlProcessModel.mo | 16 ++-- .../Validation/ControlProcessModel.mo | 5 +- .../WetCoilCounterFlowPControlAutoTuning.mo | 27 ++---- 7 files changed, 99 insertions(+), 64 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index d1ca94708a7..adb24985822 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -1,6 +1,6 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning; block FirstOrderAMIGO - "An autotuning PID controller with an AMIGO tuner that employs a first-order time delayed system model" + "Autotuning PID controller with an AMIGO tuner that employs a first-order time delayed system model" parameter Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController controllerType=Buildings.Controls.OBC.Utilities.PIDWithAutotuning. Types.SimpleController.PI "Type of controller"; @@ -22,7 +22,7 @@ block FirstOrderAMIGO "Higher value for the relay output"; parameter Real yLow = 0.1 "Lower value for the relay output"; - parameter Real deaBan = 0.1 + parameter Real deaBan(min=1E-6) = 0.1 "Deadband for holding the output value"; parameter Real yRef = 0.8 "Reference output for the tuning process"; @@ -91,6 +91,7 @@ block FirstOrderAMIGO if not with_D "Autotuner of gains for a PI controller" annotation (Placement(transformation(extent={{80,60},{100,80}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Controller rel( + final r=r, final yHig=yHig, final yLow=yLow, final deaBan=deaBan, @@ -148,7 +149,7 @@ protected else Buildings.Controls.OBC.CDL.Types.SimpleController.PID "Type of controller"; Buildings.Controls.OBC.CDL.Utilities.Assert assMes2( - message="*** Warning: the relay output needs to be asymmetric. + message="*** Warning: the relay output needs to be asymmetric. Check the value of yHig, yLow and yRef.") "Error message when the relay output is symmetric" annotation (Placement(transformation(extent={{60,140},{80,160}}))); @@ -347,6 +348,10 @@ Department of Automatic Control, Lund University. ", revisions="

                                                    • +March 8, 2024, by Michael Wetter:
                                                      +Propagated range of control error r to relay controller. +
                                                    • +
                                                    • October 23, 2023, by Michael Wetter:
                                                      Revised implmenentation. Made initial control gains public so that a stable operation can be made prior to the first tuning. diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo index 32b6006a1f4..6b3977eb664 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo @@ -1,6 +1,8 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay; block Controller "Output relay signals for tuning PID controllers" + parameter Real r(min=100*Buildings.Controls.OBC.CDL.Constants.eps) = 1 + "Typical range of control error, used for scaling the control error"; parameter Real yHig( final min=1E-6) = 1 "Higher value for the relay output"; @@ -8,7 +10,7 @@ block Controller final min=1E-6, final max=yHig) = 0.5 "Lower value for the relay output"; - parameter Real deaBan(min=1E-6) = 0.5 + parameter Real deaBan(min=1E-6) "Deadband for holding the output value"; parameter Boolean reverseActing=true "Set to true for reverse acting, or false for direct acting control action"; @@ -45,36 +47,45 @@ protected Buildings.Controls.OBC.CDL.Reals.Sources.Constant higVal( final k=yHig) "Higher value for the output" - annotation (Placement(transformation(extent={{-80,70},{-60,90}}))); + annotation (Placement(transformation(extent={{-80,60},{-60,80}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant lowVal( final k=yLow) "Lower value for the output" - annotation (Placement(transformation(extent={{-80,10},{-60,30}}))); + annotation (Placement(transformation(extent={{-80,20},{-60,40}}))); Buildings.Controls.OBC.CDL.Reals.Switch swi1 "Switch between a higher value and a lower value" annotation (Placement(transformation(extent={{-10,-10},{10,10}}, origin={-50,-40}))); Buildings.Controls.OBC.CDL.Reals.Subtract revActErr if reverseActing "Control error when reverse acting, setpoint - measurement" - annotation (Placement(transformation(extent={{-20,-30},{0,-10}}))); + annotation (Placement(transformation(extent={{-20,-40},{0,-20}}))); Buildings.Controls.OBC.CDL.Reals.Hysteresis hys( final uLow=-deaBan, final uHigh=deaBan, final pre_y_start=true) "Check if the input difference exceeds the thresholds, by default the relay control is on" - annotation (Placement(transformation(extent={{20,-70},{40,-50}}))); + annotation (Placement(transformation(extent={{60,-70},{80,-50}}))); Buildings.Controls.OBC.CDL.Reals.Subtract dirActErr if not reverseActing "Control error when direct acting, measurement - setpoint" annotation (Placement(transformation(extent={{-20,-80},{0,-60}}))); Buildings.Controls.OBC.CDL.Reals.Subtract meaSetDif "Inputs difference, (measurement - setpoint)" - annotation (Placement(transformation(extent={{60,-10},{80,10}}))); + annotation (Placement(transformation(extent={{-20,-4},{0,16}}))); + CDL.Reals.MultiplyByParameter gaiYDif(final k=1/r) + "Gain to normalized control error by r" + annotation (Placement(transformation(extent={{20,-4},{40,16}}))); + CDL.Reals.MultiplyByParameter gaiRevActErr(final k=1/r) if reverseActing + "Gain to normalized control error by r" + annotation (Placement(transformation(extent={{20,-40},{40,-20}}))); + CDL.Reals.MultiplyByParameter gaiDirActErr(final k=1/r) if not reverseActing + "Gain to normalized control error by r" + annotation (Placement(transformation(extent={{20,-80},{40,-60}}))); equation connect(swi.y, y) annotation (Line(points={{82,50},{120,50}}, color={0,0,127})); connect(higVal.y, swi.u1) - annotation (Line(points={{-58,80},{-20,80},{-20,58},{58,58}},color={0,0,127})); - connect(lowVal.y, swi.u3) annotation (Line(points={{-58,20},{-20,20},{-20,42}, + annotation (Line(points={{-58,70},{-20,70},{-20,58},{58,58}},color={0,0,127})); + connect(lowVal.y, swi.u3) annotation (Line(points={{-58,30},{-20,30},{-20,42}, {58,42}},color={0,0,127})); connect(swi1.u3, u_s) annotation (Line(points={{-62,-48},{-90,-48},{-90,0},{-120, 0}}, color={0,0,127})); @@ -82,27 +93,35 @@ equation color={255,0,255})); connect(u_m, swi1.u1) annotation (Line(points={{0,-120},{0,-90},{-70,-90},{-70, -32},{-62,-32}}, color={0,0,127})); - connect(dirActErr.y, hys.u) annotation (Line(points={{2,-70},{10,-70},{10,-60}, - {18,-60}}, color={0,0,127})); - connect(revActErr.y, hys.u) annotation (Line(points={{2,-20},{10,-20},{10,-60}, - {18,-60}}, color={0,0,127})); - connect(u_s, revActErr.u1) annotation (Line(points={{-120,0},{-90,0},{-90,-14}, - {-22,-14}}, color={0,0,127})); + connect(u_s, revActErr.u1) annotation (Line(points={{-120,0},{-90,0},{-90,-24}, + {-22,-24}}, color={0,0,127})); connect(u_s, dirActErr.u2) annotation (Line(points={{-120,0},{-90,0},{-90,-76}, {-22,-76}}, color={0,0,127})); connect(swi1.y, revActErr.u2) annotation (Line(points={{-38,-40},{-30,-40},{-30, - -26},{-22,-26}}, color={0,0,127})); + -36},{-22,-36}}, color={0,0,127})); connect(swi1.y, dirActErr.u1) annotation (Line(points={{-38,-40},{-30,-40},{-30, -64},{-22,-64}}, color={0,0,127})); - connect(hys.y, swi.u2) annotation (Line(points={{42,-60},{50,-60},{50,50},{58, - 50}}, color={255,0,255})); - connect(hys.y, yOn) annotation (Line(points={{42,-60},{120,-60}}, color={255,0,255})); - connect(swi1.y, meaSetDif.u1) annotation (Line(points={{-38,-40},{20,-40},{20, - 6},{58,6}}, color={0,0,127})); - connect(u_s, meaSetDif.u2) annotation (Line(points={{-120,0},{40,0},{40,-6},{58, - -6}}, color={0,0,127})); - connect(meaSetDif.y, yDif) - annotation (Line(points={{82,0},{120,0}}, color={0,0,127})); + connect(hys.y, swi.u2) annotation (Line(points={{82,-60},{90,-60},{90,34},{50, + 34},{50,50},{58,50}}, + color={255,0,255})); + connect(hys.y, yOn) annotation (Line(points={{82,-60},{120,-60}}, color={255,0,255})); + connect(swi1.y, meaSetDif.u1) annotation (Line(points={{-38,-40},{-30,-40},{-30, + 12},{-22,12}}, + color={0,0,127})); + connect(u_s, meaSetDif.u2) annotation (Line(points={{-120,0},{-22,0}}, + color={0,0,127})); + connect(meaSetDif.y, gaiYDif.u) + annotation (Line(points={{2,6},{18,6}}, color={0,0,127})); + connect(gaiYDif.y, yDif) + annotation (Line(points={{42,6},{60,6},{60,0},{120,0}}, color={0,0,127})); + connect(revActErr.y, gaiRevActErr.u) + annotation (Line(points={{2,-30},{18,-30}}, color={0,0,127})); + connect(gaiRevActErr.y, hys.u) annotation (Line(points={{42,-30},{48,-30},{48, + -60},{58,-60}}, color={0,0,127})); + connect(dirActErr.y, gaiDirActErr.u) + annotation (Line(points={{2,-70},{18,-70}}, color={0,0,127})); + connect(gaiDirActErr.y, hys.u) annotation (Line(points={{42,-70},{48,-70},{48, + -60},{58,-60}}, color={0,0,127})); annotation (defaultComponentName = "relCon", Icon(coordinateSystem(preserveAspectRatio=false), graphics={ Rectangle( @@ -136,8 +155,8 @@ annotation (defaultComponentName = "relCon", fillPattern=FillPattern.Solid, fillColor={175,175,175}, textString="Relay"), - Line(points={{-70,24},{-34,24},{-34,58},{38,58},{38,24},{66,24}}, color= - {28,108,200})}), Diagram( + Line(points={{-70,24},{-34,24},{-34,58},{38,58},{38,24},{66,24}}, color + ={28,108,200})}), Diagram( coordinateSystem(preserveAspectRatio=false)), Documentation(info="

                                                      @@ -147,17 +166,17 @@ and a boolean relay switch output yOn, which are calculated as below.

                                                      -Step 1: calculate control error, +Step 1: Calculate control error,

                                                      • -If the parameter reverseActing = true, then the control error -(err = u_s - u_m), -else the control error (err = u_m - u_s). +If the parameter reverseActing = true, set the control error to +err = u_s - u_m, +else set it to err = u_m - u_s.

                                                      -Step 2: calculate y and yOn, +Step 2: Calculate y and yOn,

                                                      • @@ -186,6 +205,14 @@ Department of Automatic Control, Lund Institute of Technology, Lund University.< ", revisions="
                                                        • +March 8, 2024, by Michael Wetter:
                                                          +Changed deadband to be consistent within the package. +
                                                        • +
                                                        • +March 8, 2024, by Michael Wetter:
                                                          +Propagated range of control error r to relay controller. +
                                                        • +
                                                        • December 1, 2023, by Sen Huang:
                                                          Add a parameter reverseActing
                                                        • diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/TimeConstantDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/TimeConstantDelay.mo index de4878e9585..3fb6609b8f7 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/TimeConstantDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/TimeConstantDelay.mo @@ -1,11 +1,11 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.BaseClasses; block TimeConstantDelay "Calculate the time constant and the time delay of a first order time delayed model" - parameter Real yHig(min=1E-6) = 1 + parameter Real yHig(min=1E-6) "Higher value for the output (assuming the reference output is 0)"; - parameter Real yLow(min=1E-6) = 0.5 + parameter Real yLow(min=1E-6) "Lower value for the output (assuming the reference output is 0)"; - parameter Real deaBan(min=0) = 0.5 + parameter Real deaBan(min=1E-6) "Deadband for holding the output value"; Buildings.Controls.OBC.CDL.Interfaces.RealInput tOn( final quantity="Time", @@ -150,6 +150,10 @@ equation Documentation(revisions="
                                                          • +March 8, 2024, by Michael Wetter:
                                                            +Changed deadband to be consistent within the package. +
                                                          • +
                                                          • June 1, 2022, by Sen Huang:
                                                            First implementation
                                                          • diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/TimeConstantDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/TimeConstantDelay.mo index b4a38577532..993345089d8 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/TimeConstantDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/TimeConstantDelay.mo @@ -1,7 +1,10 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.BaseClasses.Validation; model TimeConstantDelay "Test model for identifying the the time constant and the time delay of the control process" Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.BaseClasses.TimeConstantDelay - timConDel(yLow=0.1) + timConDel( + yHig=0.5, + yLow=0.1, + deaBan=0.5) "Block that calculates the time constant and the time delay of a first-order model" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant k(k=1) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo index 9723c7f2a0f..22ca2043a37 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo @@ -1,11 +1,11 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed; block ControlProcessModel "Identify the parameters of a first-order time delayed model for the control process" - parameter Real yHig(min=1E-6) = 1 + parameter Real yHig(min=1E-6) "Higher value for the output"; - parameter Real yLow(min=1E-6) = 0.5 + parameter Real yLow(min=1E-6) "Lower value for the output"; - parameter Real deaBan(min=0) = 0.5 + parameter Real deaBan(min=1E-6) "Deadband for holding the output value"; Buildings.Controls.OBC.CDL.Interfaces.RealInput tOn( final quantity="Time", @@ -79,9 +79,9 @@ protected annotation (Placement(transformation(extent={{-120,10},{-100,30}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.BaseClasses.TimeConstantDelay timConDel( - final yHig=yHig, - final yLow=yLow, - deaBan=deaBan) + final yHig=yHig, + final yLow=yLow, + final deaBan=deaBan) "Block that calculate the time constant and the time delay" annotation (Placement(transformation(extent={{60,10},{80,30}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samk( @@ -197,6 +197,10 @@ annotation ( Documentation(revisions="
                                                            • +March 8, 2024, by Michael Wetter:
                                                              +Changed deadband to be consistent within the package. +
                                                            • +
                                                            • June 1, 2022, by Sen Huang:
                                                              First implementation
                                                            • diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo index 3880c899f23..5e6dc0c0938 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo @@ -2,7 +2,10 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.F model ControlProcessModel "Test model for identifying the reduced-order model of the control process" Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.ControlProcessModel - conProMod(yLow=0.1, deaBan=0.05) + conProMod( + yHig=1, + yLow=0.1, + deaBan=0.05) "Calculate the parameters of a first-order model" annotation (Placement(transformation(extent={{40,-10},{60,10}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Pulse u( diff --git a/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo b/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo index 109c9dc103a..437a0f73f69 100644 --- a/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo +++ b/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo @@ -94,7 +94,6 @@ model WetCoilCounterFlowPControlAutoTuning con(controllerType=Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PI, yLow=0.2, yRef=0.5, - deaBan=1/298.15, reverseActing=false) "Controller" annotation (Placement(transformation(extent={{0,90},{20,110}}))); @@ -113,16 +112,6 @@ model WetCoilCounterFlowPControlAutoTuning shift=400) "Signal for enabling the autotuning" annotation (Placement(transformation(extent={{20,160},{40,180}}))); - Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter gai1(k=1/298.15) - "normalize the setpoint" - annotation (Placement(transformation(extent={{-48,92},{-32,108}}))); - Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter gai2(k=1/298.15) - "normalize the measurement" - annotation ( - Placement(transformation( - extent={{-8,-8},{8,8}}, - rotation=90, - origin={10,48}))); equation connect(hex.port_b1, res_1.port_a) annotation (Line(points={{80,32},{86,32},{ 86,60},{90,60}}, color={0,127,255})); @@ -180,14 +169,10 @@ equation 80},{4,80},{4,88}}, color={255,0,255})); connect(autTunSig.y, con.triTun) annotation (Line(points={{42,170},{74,170},{74, 80},{16,80},{16,88}}, color={255,0,255})); - connect(TSet.y, gai1.u) annotation (Line(points={{-59,100},{-49.6,100}}, - color={0,0,127})); - connect(gai1.y, con.u_s) annotation (Line(points={{-30.4,100},{-2,100}}, - color={0,0,127})); - connect(temSen.T, gai2.u) annotation (Line(points={{10,31},{10,38.4}}, - color={0,0,127})); - connect(gai2.y, con.u_m) annotation (Line(points={{10,57.6},{10,88}}, - color={0,0,127})); + connect(TSet.y, con.u_s) + annotation (Line(points={{-59,100},{-2,100}}, color={0,0,127})); + connect(temSen.T, con.u_m) + annotation (Line(points={{10,31},{10,88}}, color={0,0,127})); annotation (Diagram(coordinateSystem(preserveAspectRatio=true, extent={{-100, -100},{200,200}})), experiment(Tolerance=1e-6, StopTime=3600), @@ -210,6 +195,10 @@ Buildings.Controls.OBC.Utilities.PIDWithAutotuning.FirstOrderAMIGO. revisions="
                                                              • +March 8, 2024, by Michael Wetter:
                                                                +Removed wrong normalization. +
                                                              • +
                                                              • November 28, 2023, by Sen Huang:
                                                                Replaced the PI controller with an autotuning PI controller.
                                                              • From 47c96108262017d58372054642007af067b8e613 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Thu, 4 Apr 2024 09:02:33 -0400 Subject: [PATCH 170/214] improve the model doc and parameters --- .../PIDWithAutotuning/FirstOrderAMIGO.mo | 103 ++++++++++++------ 1 file changed, 67 insertions(+), 36 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index adb24985822..efc380ef7b7 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -20,16 +20,16 @@ block FirstOrderAMIGO "Typical range of control error, used for scaling the control error"; parameter Real yHig = 1 "Higher value for the relay output"; - parameter Real yLow = 0.1 + parameter Real yLow "Lower value for the relay output"; - parameter Real deaBan(min=1E-6) = 0.1 + parameter Real deaBan(min=1E-6) "Deadband for holding the output value"; - parameter Real yRef = 0.8 + parameter Real yRef "Reference output for the tuning process"; - final parameter Real yMax=1 + parameter Real yMax = 1 "Upper limit of output" annotation (Dialog(group="Limits")); - final parameter Real yMin=0 + parameter Real yMin = 0 "Lower limit of output" annotation (Dialog(group="Limits")); parameter Real Ni( @@ -139,6 +139,9 @@ block FirstOrderAMIGO "A small time delay for the autotuning start time to avoid false alerts" annotation (Placement(transformation(extent={{80,-40},{100,-20}}))); + Buildings.Controls.OBC.CDL.Reals.AddParameter addPar(final p=yMin) + "Sums the inputs" + annotation (Placement(transformation(extent={{80,110},{100,130}}))); protected final parameter Boolean with_D=controllerType == Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PID "Boolean flag to enable derivative action" @@ -180,12 +183,12 @@ protected Buildings.Controls.OBC.CDL.Reals.Sources.Constant con4(final k=1e-3) "Threshold for checking the symmetricity of the relay output" annotation (Placement(transformation(extent={{-20,110},{0,130}}))); - + Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter yRel(final k=yMax - yMin) + "Relay output multiplied by the possible range of the output " + annotation (Placement(transformation(extent={{40,110},{60,130}}))); equation connect(con.u_s, u_s) annotation (Line(points={{-52,-40},{-60,-40},{-60,0},{-200, 0}}, color={0,0,127})); - connect(rel.u_s, u_s) annotation (Line(points={{-52,30},{-160,30},{-160,0},{-200, - 0}}, color={0,0,127})); connect(con.trigger, triRes) annotation (Line(points={{-46,-52},{-46,-90},{-60, -90},{-60,-120}},color={255,0,255})); connect(samk.y,con. k) annotation (Line(points={{-78,-20},{-66,-20},{-66,-32}, @@ -194,18 +197,16 @@ equation {-98,-50}}, color={0,0,127})); connect(samTd.y,con. Td) annotation (Line(points={{-118,-80},{-60,-80},{-60,-44}, {-52,-44}},color={0,0,127})); - connect(rel.u_m, u_m) annotation (Line(points={{-40,18},{-40,-10},{-20,-10},{-20, - -120}}, color={0,0,127})); - connect(resPro.on, rel.yOn) annotation (Line(points={{-2,40},{-10,40},{-10,24}, + connect(resPro.on, rel.yOn) annotation (Line(points={{-2,42},{-10,42},{-10,24}, {-28,24}},color={255,0,255})); connect(modTim.y, resPro.tim) annotation (Line(points={{-38,70},{-26,70},{-26, - 46},{-2,46}},color={0,0,127})); - connect(resPro.tau, conProMod.tau) annotation (Line(points={{22,40},{34,40},{34, - 62},{38,62}},color={0,0,127})); + 48},{-2,48}},color={0,0,127})); + connect(resPro.tau, conProMod.tau) annotation (Line(points={{22,42},{34,42},{ + 34,62},{38,62}}, color={0,0,127})); connect(conProMod.tOff, resPro.tOff) annotation (Line(points={{38,66},{30,66}, - {30,44},{22,44}},color={0,0,127})); - connect(resPro.tOn, conProMod.tOn) annotation (Line(points={{22,48},{26,48},{26, - 74},{38,74}},color={0,0,127})); + {30,46},{22,46}},color={0,0,127})); + connect(resPro.tOn, conProMod.tOn) annotation (Line(points={{22,50},{26,50},{ + 26,74},{38,74}}, color={0,0,127})); connect(rel.yDif, conProMod.u) annotation (Line(points={{-28,30},{-14,30},{-14, 78},{38,78}}, color={0,0,127})); connect(PIDPar.kp, conProMod.k) annotation (Line(points={{78,36},{66,36},{66,76}, @@ -228,35 +229,33 @@ equation -148,96},{-148,-20},{-102,-20}}, color={0,0,127})); connect(PIPar.Ti, samTi.u) annotation (Line(points={{102,64},{112,64},{112,98}, {-150,98},{-150,-50},{-122,-50}}, color={0,0,127})); - connect(resPro.triEnd, conProMod.triEnd) annotation (Line(points={{22,32},{56, - 32},{56,58}}, color={255,0,255})); - connect(resPro.triSta, conProMod.triSta) annotation (Line(points={{22,36},{44, - 36},{44,58}}, color={255,0,255})); - connect(resPro.triEnd, samTi.trigger) annotation (Line(points={{22,32},{30,32}, + connect(resPro.triEnd, conProMod.triEnd) annotation (Line(points={{22,34},{56, + 34},{56,58}}, color={255,0,255})); + connect(resPro.triSta, conProMod.triSta) annotation (Line(points={{22,38},{44, + 38},{44,58}}, color={255,0,255})); + connect(resPro.triEnd, samTi.trigger) annotation (Line(points={{22,34},{30,34}, {30,10},{-110,10},{-110,-38}}, color={255,0,255})); - connect(resPro.triEnd, samk.trigger) annotation (Line(points={{22,32},{30,32}, + connect(resPro.triEnd, samk.trigger) annotation (Line(points={{22,34},{30,34}, {30,10},{-90,10},{-90,-8}}, color={255,0,255})); - connect(resPro.triEnd, samTd.trigger) annotation (Line(points={{22,32},{30,32}, + connect(resPro.triEnd, samTd.trigger) annotation (Line(points={{22,34},{30,34}, {30,10},{-130,10},{-130,-68}}, color={255,0,255})); connect(PIDPar.Td, samTd.u) annotation (Line(points={{102,23},{114,23},{114,94}, {-146,94},{-146,-80},{-142,-80}}, color={0,0,127})); connect(swi.y, y) annotation (Line(points={{162,0},{200,0}}, color={0,0,127})); connect(u_m,con. u_m) annotation (Line(points={{-20,-120},{-20,-90},{-40,-90}, {-40,-52}}, color={0,0,127})); - connect(rel.y, swi.u1) annotation (Line(points={{-28,36},{-20,36},{-20,88},{130, - 88},{130,8},{138,8}}, color={0,0,127})); connect(swi.u3,con. y) annotation (Line(points={{138,-8},{60,-8},{60,-40},{-28, -40}}, color={0,0,127})); connect(inTunPro.y, swi.u2) annotation (Line(points={{42,-20},{50,-20},{50,0}, {138,0}}, color={255,0,255})); connect(inTunPro.u, triTun) annotation (Line(points={{18,-20},{-6,-20},{-6,-70}, {60,-70},{60,-120}}, color={255,0,255})); - connect(inTunPro.clr, resPro.triEnd) annotation (Line(points={{18,-26},{12,-26}, - {12,10},{30,10},{30,32},{22,32}},color={255,0,255})); + connect(inTunPro.clr, resPro.triEnd) annotation (Line(points={{18,-26},{12, + -26},{12,10},{30,10},{30,34},{22,34}}, color={255,0,255})); connect(rel.trigger, triTun) annotation (Line(points={{-46,18},{-46,0},{-6,0}, {-6,-70},{60,-70},{60,-120}}, color={255,0,255})); - connect(resPro.trigger, triTun) annotation (Line(points={{-2,34},{-6,34},{-6,-70}, - {60,-70},{60,-120}}, color={255,0,255})); + connect(resPro.trigger, triTun) annotation (Line(points={{-2,36},{-6,36},{-6, + -70},{60,-70},{60,-120}}, color={255,0,255})); connect(nand.y, assMes1.u) annotation (Line(points={{142,-62},{146,-62}}, color={255,0,255})); connect(nand.u2, edgReq.y) @@ -287,6 +286,16 @@ equation annotation (Line(points={{42,150},{58,150}}, color={255,0,255})); connect(con4.y, gre.u2) annotation (Line(points={{2,120},{10,120},{10,142},{18, 142}}, color={0,0,127})); + connect(rel.y, yRel.u) annotation (Line(points={{-28,36},{-20,36},{-20,86},{20, + 86},{20,120},{38,120}}, color={0,0,127})); + connect(yRel.y, addPar.u) + annotation (Line(points={{62,120},{78,120}}, color={0,0,127})); + connect(addPar.y, swi.u1) annotation (Line(points={{102,120},{128,120},{128,8}, + {138,8}}, color={0,0,127})); + connect(rel.u_m, u_m) annotation (Line(points={{-40,18},{-40,-14},{-20,-14},{ + -20,-120}}, color={0,0,127})); + connect(rel.u_s, u_s) annotation (Line(points={{-52,30},{-162,30},{-162,0},{ + -200,0}}, color={0,0,127})); annotation (Documentation(info="

                                                                This block implements a rule-based PID tuning method. @@ -309,7 +318,7 @@ PID controller. In addition, the output of this block is limited from 0 to 1.

                                                                -

                                                                Brief guidance

                                                                +

                                                                Autotuning Process

                                                                To use this block, place it in an control loop as any other PID controller. Before the PID tuning process starts, this block is equivalent to @@ -330,13 +339,31 @@ at which point this block turns back to a PID controller but with tuned PID para Note: If an autotuning is ongoing, i.e., inTunPro.y = true, a request for performing autotuning will be ignored.

                                                                +

                                                                Guidance for settings the parameters

                                                                -In addition, this block requires an asymmetric relay output, meaning yHig - yRef ≠ yRef - yLow. -

                                                                -

                                                                -Besides, one need to adjust deaBan based on the response from the control loop. -e.g., decrease deaBan when the system response is slow to facilitate the tuning process. +The performance of the autotuning is affected by the parameters, including r, +yRef, yLow, and deaBan. +
                                                                +The following procedure can be used for determining those parameters.

                                                                +
                                                                  +
                                                                1. +The r should be adjusted so that the input difference of the relay controller, rel.yDif, is within the range from 0 to 1. +
                                                                2. +
                                                                3. +The yRef should be determined by dividing the set point by the sum of the minimum and the maximum values of the measurement. +
                                                                4. +
                                                                5. +The yLow should be adjusted to realize an asymmetric relay output, +i.e., yHig - yRef ≠ yRef - yLow. +
                                                                6. +
                                                                7. +When determining the deaBan, we first divide the maximum and the minimum deviations of measurement +from the setpoint by the r. +We then calculate the absolute values of the two deviations. +After, we set the deaBan to be half of the smaller one among those absolute values. +
                                                                8. +

                                                                References

                                                                @@ -348,6 +375,10 @@ Department of Automatic Control, Lund University. ", revisions="

                                                                • +April 3, 2024, by Sen Huang:
                                                                  +Made yMax and yMin changeable. +
                                                                • +
                                                                • March 8, 2024, by Michael Wetter:
                                                                  Propagated range of control error r to relay controller.
                                                                • From 3eafba5001446c425edd49a5dfba3729ca925ebd Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Thu, 4 Apr 2024 09:03:18 -0400 Subject: [PATCH 171/214] resolve the inconsistent default values --- .../OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo | 4 ++-- .../OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo | 4 ++-- .../FirstOrderTimedelayed/BaseClasses/Gain.mo | 4 ++-- .../FirstOrderTimedelayed/BaseClasses/Validation/Gain.mo | 4 +++- .../BaseClasses/Validation/TimeConstantDelay.mo | 2 +- .../Validation/DirectActingPIDWithFirstOrderAMIGO.mo | 4 +++- .../Validation/DirectActingPIWithFirstOrderAMIGO.mo | 4 +++- .../Validation/ReverseActingPIDWithFirstOrderAMIGO.mo | 5 ++++- .../Validation/ReverseActingPIWithFirstOrderAMIGO.mo | 5 ++++- 9 files changed, 24 insertions(+), 12 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo index 6b3977eb664..b0f6f8e6d1a 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo @@ -4,11 +4,11 @@ block Controller parameter Real r(min=100*Buildings.Controls.OBC.CDL.Constants.eps) = 1 "Typical range of control error, used for scaling the control error"; parameter Real yHig( - final min=1E-6) = 1 + final min=1E-6) "Higher value for the relay output"; parameter Real yLow( final min=1E-6, - final max=yHig) = 0.5 + final max=yHig) "Lower value for the relay output"; parameter Real deaBan(min=1E-6) "Deadband for holding the output value"; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo index 7df87817336..69b2c0ae28b 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo @@ -1,9 +1,9 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay; block ResponseProcess "Calculate the lengths of the on andoff period, the half period ratio, and the times when the tuning starts and ends" - parameter Real yHig(min=1E-6) = 1 + parameter Real yHig(min=1E-6) "Higher value for the output"; - parameter Real yLow(min=1E-6) = 0.5 + parameter Real yLow(min=1E-6) "Lower value for the output"; Buildings.Controls.OBC.CDL.Interfaces.BooleanInput on "Relay switch. True: tuning on perid, False: tuning off period" diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Gain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Gain.mo index 7e1438546e6..e0b9c874adb 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Gain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Gain.mo @@ -1,8 +1,8 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.BaseClasses; block Gain "Identify the gain of a first order time delayed model" - parameter Real yHig(min=1E-6) = 1 + parameter Real yHig(min=1E-6) "Higher value for the output (assuming the reference output is 0)"; - parameter Real yLow(min=1E-6) = 0.5 + parameter Real yLow(min=1E-6) "Lower value for the output (assuming the reference output is 0)"; Buildings.Controls.OBC.CDL.Interfaces.RealInput u "Relay controller output, (measurement - setpoint)" diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/Gain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/Gain.mo index d4251ecb888..de7b4cb01d7 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/Gain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/Gain.mo @@ -1,7 +1,9 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.BaseClasses.Validation; model Gain "Test model for identifying the gain of the control process" Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.BaseClasses.Gain - gai + gai( + yHig=1, + yLow=0.5) "Block that calculates the gain of a first-order model" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Pulse u( diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/TimeConstantDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/TimeConstantDelay.mo index 993345089d8..7da11cf6fe7 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/TimeConstantDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/TimeConstantDelay.mo @@ -4,7 +4,7 @@ model TimeConstantDelay "Test model for identifying the the time constant and th timConDel( yHig=0.5, yLow=0.1, - deaBan=0.5) + deaBan=0.4) "Block that calculates the time constant and the time delay of a first-order model" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant k(k=1) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIDWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIDWithFirstOrderAMIGO.mo index 8b378872c11..30a33e674ed 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIDWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIDWithFirstOrderAMIGO.mo @@ -6,7 +6,9 @@ model DirectActingPIDWithFirstOrderAMIGO annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.FirstOrderAMIGO PIDWitTun( controllerType=Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PID, - deaBan=0.05, + yLow=0, + deaBan=0.1, + yRef=0.8, reverseActing=false) "PID controller with an autotuning feature" annotation (Placement(transformation(extent={{-20,-30},{0,-10}}))); Buildings.Controls.OBC.CDL.Reals.PIDWithReset PID( diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIWithFirstOrderAMIGO.mo index 80502fafcdb..ac317e8f17b 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIWithFirstOrderAMIGO.mo @@ -6,7 +6,9 @@ model DirectActingPIWithFirstOrderAMIGO annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.FirstOrderAMIGO PIWitTun( controllerType=Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PI, - deaBan=0.05, + yLow=0, + deaBan=0.1, + yRef=0.8, reverseActing=false) "PI controller with an autotuning feature" annotation (Placement(transformation(extent={{-20,-30},{0,-10}}))); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/ReverseActingPIDWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/ReverseActingPIDWithFirstOrderAMIGO.mo index 70a29b6d30c..ee7f90fbfce 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/ReverseActingPIDWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/ReverseActingPIDWithFirstOrderAMIGO.mo @@ -5,7 +5,10 @@ model ReverseActingPIDWithFirstOrderAMIGO "Setpoint value" annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.FirstOrderAMIGO PIDWitTun( - controllerType=Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PID) + controllerType=Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PID, + yLow=0, + deaBan=0.1, + yRef=0.8) "PID controller with an autotuning feature" annotation (Placement(transformation(extent={{-20,-30},{0,-10}}))); Buildings.Controls.OBC.CDL.Reals.PIDWithReset PID( diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/ReverseActingPIWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/ReverseActingPIWithFirstOrderAMIGO.mo index 11035c57778..c7685f95f5d 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/ReverseActingPIWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/ReverseActingPIWithFirstOrderAMIGO.mo @@ -5,7 +5,10 @@ model ReverseActingPIWithFirstOrderAMIGO "Setpoint value" annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.FirstOrderAMIGO PIWitTun( - controllerType=Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PI) + controllerType=Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PI, + yLow=0, + deaBan=0.1, + yRef=0.8) "PI controller with an autotuning feature" annotation (Placement(transformation(extent={{-20,-30},{0,-10}}))); Buildings.Controls.OBC.CDL.Reals.PIDWithReset PI( From d0b695ddb063639134448c65616a7b13faffea4a Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Thu, 4 Apr 2024 09:04:10 -0400 Subject: [PATCH 172/214] assign better values of parameters --- .../Examples/WetCoilCounterFlowPControlAutoTuning.mo | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo b/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo index 437a0f73f69..628554effa3 100644 --- a/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo +++ b/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo @@ -92,7 +92,9 @@ model WetCoilCounterFlowPControlAutoTuning annotation (Placement(transformation(extent={{100,-38},{120,-18}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.FirstOrderAMIGO con(controllerType=Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PI, + r=10, yLow=0.2, + deaBan=0.2, yRef=0.5, reverseActing=false) "Controller" @@ -195,6 +197,10 @@ Buildings.Controls.OBC.Utilities.PIDWithAutotuning.FirstOrderAMIGO
                                                                  . revisions="
                                                                  • +April 3, 2024, by Sen Huang:
                                                                    +Added parameter values. +
                                                                  • +
                                                                  • March 8, 2024, by Michael Wetter:
                                                                    Removed wrong normalization.
                                                                  • From 8253d4b3dcf328bdcd4601285d2be7aff1746dd6 Mon Sep 17 00:00:00 2001 From: SenHuang19 Date: Thu, 4 Apr 2024 09:08:19 -0400 Subject: [PATCH 173/214] reference data update --- ...ed_BaseClasses_Validation_TimeConstantDelay.txt | 6 +++--- ...lidation_DirectActingPIDWithFirstOrderAMIGO.txt | 14 +++++++------- ...alidation_DirectActingPIWithFirstOrderAMIGO.txt | 12 ++++++------ ...idation_ReverseActingPIDWithFirstOrderAMIGO.txt | 14 +++++++------- ...lidation_ReverseActingPIWithFirstOrderAMIGO.txt | 12 ++++++------ 5 files changed, 29 insertions(+), 29 deletions(-) diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_BaseClasses_Validation_TimeConstantDelay.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_BaseClasses_Validation_TimeConstantDelay.txt index f47b7d401e8..6d60d163be4 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_BaseClasses_Validation_TimeConstantDelay.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_BaseClasses_Validation_TimeConstantDelay.txt @@ -1,4 +1,4 @@ -last-generated=2023-09-19 +last-generated=2024-04-03 statistics-simulation= { "linear": " ", @@ -9,5 +9,5 @@ time=[0e+00, 1e+00] tOn.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01] k.y=[1e+00, 1e+00] ratioLT.y=[3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.000003695480519e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 4.000000059604645e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01, 3.00000011920929e-01] -timConDel.T=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.53583532054474e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.109389454126358e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02, 7.535836845636368e-02] -timConDel.L=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.26075317592644e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.843755669891834e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02, 2.260751090943813e-02] +timConDel.T=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 4.15477566421032e-02, 4.15477566421032e-02, 4.15477566421032e-02, 4.15477566421032e-02, 4.15477566421032e-02, 4.15477566421032e-02, 4.15477566421032e-02, 4.15477566421032e-02, 4.15477566421032e-02, 4.15477566421032e-02, 4.15477566421032e-02, 4.15477566421032e-02, 4.15477566421032e-02, 4.15477566421032e-02, 4.15477566421032e-02, 4.15477566421032e-02, 4.15477566421032e-02, 4.15477566421032e-02, 4.15477566421032e-02, 4.15477566421032e-02, 4.15477566421032e-02, 4.154775221342808e-02, 4.030940681695938e-02, 4.030940681695938e-02, 4.030940681695938e-02, 4.030940681695938e-02, 4.030940681695938e-02, 4.030940681695938e-02, 4.030940681695938e-02, 4.030940681695938e-02, 4.030940681695938e-02, 4.030940681695938e-02, 4.030940681695938e-02, 4.030940681695938e-02, 4.030940681695938e-02, 4.030940681695938e-02, 4.030940681695938e-02, 4.030940681695938e-02, 4.030940681695938e-02, 4.030940681695938e-02, 4.030940681695938e-02, 4.030940681695938e-02, 4.030940681695938e-02, 4.030940681695938e-02, 4.030940681695938e-02, 4.030940681695938e-02, 4.030940681695938e-02, 4.030940681695938e-02, 4.030940681695938e-02, 4.030940681695938e-02, 4.030940681695938e-02, 4.030940681695938e-02, 4.030940681695938e-02, 4.030940681695938e-02, 4.030940681695938e-02, 4.030940681695938e-02, 4.030940681695938e-02, 4.030940681695938e-02, 4.030940681695938e-02, 4.030940681695938e-02, 4.030940681695938e-02, 4.030940681695938e-02, 4.030940681695938e-02, 4.030940681695938e-02, 4.030940681695938e-02, 4.030940681695938e-02, 4.030940681695938e-02, 4.030940681695938e-02, 4.030940681695938e-02, 4.030940681695938e-02, 4.15477566421032e-02, 4.15477566421032e-02, 4.15477566421032e-02, 4.15477566421032e-02, 4.15477566421032e-02, 4.15477566421032e-02, 4.15477566421032e-02, 4.15477566421032e-02, 4.15477566421032e-02, 4.15477566421032e-02, 4.15477566421032e-02, 4.15477566421032e-02, 4.15477566421032e-02, 4.15477566421032e-02, 4.15477566421032e-02, 4.15477566421032e-02, 4.15477566421032e-02, 4.15477566421032e-02, 4.15477566421032e-02, 4.15477566421032e-02] +timConDel.L=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1.246432680636644e-02, 1.246432680636644e-02, 1.246432680636644e-02, 1.246432680636644e-02, 1.246432680636644e-02, 1.246432680636644e-02, 1.246432680636644e-02, 1.246432680636644e-02, 1.246432680636644e-02, 1.246432680636644e-02, 1.246432680636644e-02, 1.246432680636644e-02, 1.246432680636644e-02, 1.246432680636644e-02, 1.246432680636644e-02, 1.246432680636644e-02, 1.246432680636644e-02, 1.246432680636644e-02, 1.246432680636644e-02, 1.246432680636644e-02, 1.246432680636644e-02, 1.246433989350129e-02, 1.612376235425472e-02, 1.612376235425472e-02, 1.612376235425472e-02, 1.612376235425472e-02, 1.612376235425472e-02, 1.612376235425472e-02, 1.612376235425472e-02, 1.612376235425472e-02, 1.612376235425472e-02, 1.612376235425472e-02, 1.612376235425472e-02, 1.612376235425472e-02, 1.612376235425472e-02, 1.612376235425472e-02, 1.612376235425472e-02, 1.612376235425472e-02, 1.612376235425472e-02, 1.612376235425472e-02, 1.612376235425472e-02, 1.612376235425472e-02, 1.612376235425472e-02, 1.612376235425472e-02, 1.612376235425472e-02, 1.612376235425472e-02, 1.612376235425472e-02, 1.612376235425472e-02, 1.612376235425472e-02, 1.612376235425472e-02, 1.612376235425472e-02, 1.612376235425472e-02, 1.612376235425472e-02, 1.612376235425472e-02, 1.612376235425472e-02, 1.612376235425472e-02, 1.612376235425472e-02, 1.612376235425472e-02, 1.612376235425472e-02, 1.612376235425472e-02, 1.612376235425472e-02, 1.612376235425472e-02, 1.612376235425472e-02, 1.612376235425472e-02, 1.612376235425472e-02, 1.612376235425472e-02, 1.612376235425472e-02, 1.612376235425472e-02, 1.612376235425472e-02, 1.612376235425472e-02, 1.246432680636644e-02, 1.246432680636644e-02, 1.246432680636644e-02, 1.246432680636644e-02, 1.246432680636644e-02, 1.246432680636644e-02, 1.246432680636644e-02, 1.246432680636644e-02, 1.246432680636644e-02, 1.246432680636644e-02, 1.246432680636644e-02, 1.246432680636644e-02, 1.246432680636644e-02, 1.246432680636644e-02, 1.246432680636644e-02, 1.246432680636644e-02, 1.246432680636644e-02, 1.246432680636644e-02, 1.246432680636644e-02, 1.246432680636644e-02] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_DirectActingPIDWithFirstOrderAMIGO.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_DirectActingPIDWithFirstOrderAMIGO.txt index e94a549a87f..38aa9e75e94 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_DirectActingPIDWithFirstOrderAMIGO.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_DirectActingPIDWithFirstOrderAMIGO.txt @@ -1,4 +1,4 @@ -last-generated=2023-12-27 +last-generated=2024-04-04 statistics-simulation= { "linear": " ", @@ -8,12 +8,12 @@ statistics-simulation= } time=[0e+00, 1e+04] PID.u_s=[8.00000011920929e-01, 8.00000011920929e-01] -PID.u_m=[0e+00, 9.999529123306274e-01, 9.999995827674866e-01, 2.481618896126747e-03, -9.209431368617516e-07, 8.646680116653442e-01, 9.999932050704956e-01, 1.000000357627869e+00, 3.358848916832358e-04, 2.940470800183448e-08, 9.816846251487732e-01, 9.999994039535522e-01, 1.000000238418579e+00, 4.761837772093713e-05, -4.693725372817373e-07, 9.975225329399109e-01, 9.999977350234985e-01, 1.35334953665732e-01, 9.581360245647375e-06, -8.016966290824712e-08, 9.996625185012817e-01, 1.000003576278687e+00, 1.831681095063686e-02, 9.703677505967789e-07, -9.673858869518881e-08, 9.999532699584961e-01, 1.000001311302185e+00, 2.48020444996655e-03, 5.787431973658317e-07, 8.646644353866577e-01, 9.999924898147583e-01, 9.999990463256836e-01, 3.363183641340584e-04, -1.521406147730886e-06, 9.816855788230899e-01, 9.999987483024597e-01, 9.999997615814209e-01, 4.613236524164677e-05, -1.432624117114756e-07, 9.975218176841736e-01, 1.000001192092896e+00, 1.353335827589035e-01, 8.202897333831061e-06, 3.429302353197272e-08, 9.996668100357056e-01, 9.999991655349731e-01, 1.831079833209515e-02, -3.45406732549236e-07, 8.919226246462131e-08, 9.999552965164185e-01, 9.999988079071045e-01, 2.479476388543844e-03, -2.450231932016322e-06, 8.646639585494995e-01, 9.999975562095642e-01, 1.00000011920929e+00, 3.391160280443595e-04, 3.861942730054708e-07, 9.816851019859314e-01, 9.999994039535522e-01, 1e+00, 4.637599704437889e-05, 6.116929398558568e-07, 9.975245594978333e-01, 1.000000238418579e+00, 1.353349536657333e-01, 4.588444880937459e-06, 2.202093014602724e-07, 9.99665379524231e-01, 9.999976754188538e-01, 1.831593364477158e-02, 9.826603672991041e-07, 1.700996232756324e-09, 9.999542236328125e-01, 1.000000238418579e+00, 2.485320903360844e-03, 1.252666038453754e-06, 8.646631836891174e-01, 9.999940991401672e-01, 1e+00, 3.374420630279928e-04, -1.317341826734458e-07, 9.816865921020508e-01, 9.999993443489075e-01, 9.999970197677612e-01, 4.620182880898938e-05, -2.096025042419569e-07, 9.975236058235168e-01, 1.000001549720764e+00, 1.353335827589035e-01, 1.06016614154214e-05, 8.934088668866025e-07, 9.996664524078369e-01, 1e+00, 1.831691525876522e-02, 1.390104671372683e-06, 1.391251629456747e-07, 9.999536275863647e-01, 9.999999403953552e-01, 2.478922717273235e-03, -6.034152306710894e-07] +PID.u_m=[0e+00, 9.999529123306274e-01, 9.999995827674866e-01, 2.481618896126747e-03, -9.209431368617516e-07, 8.646680116653442e-01, 9.999932050704956e-01, 1.000000357627869e+00, 3.365608863532543e-04, -1.405635998708021e-06, 9.816854000091553e-01, 9.999993443489075e-01, 1.000001430511475e+00, 4.620050094672479e-05, 2.60930050899328e-07, 9.975255727767944e-01, 9.999987483024597e-01, 1.353355497121798e-01, 6.515417680930113e-06, -9.439737027605588e-07, 9.996625185012817e-01, 9.999985098838806e-01, 1.831492036581039e-02, 1.7740291013979e-06, -9.12563393740129e-07, 9.99949038028717e-01, 9.999998807907104e-01, 2.483022399246693e-03, -5.080776190879753e-07, 8.646644353866577e-01, 9.999876022338867e-01, 9.999994039535522e-01, 3.383852017577738e-04, -2.169484332625871e-06, 9.816854000091556e-01, 9.999996423721313e-01, 1.000000357627869e+00, 4.637077290681191e-05, 2.281867210740529e-07, 9.975196719169617e-01, 9.999995231628418e-01, 1.353341490030289e-01, 9.292627510149032e-06, 9.967949665679043e-08, 9.996591210365295e-01, 9.999996423721313e-01, 1.83195024728775e-02, 1.336419245490106e-06, -1.272930916229598e-07, 9.999534487724304e-01, 1.00000011920929e+00, 2.479220507666469e-03, -2.652079089671133e-08, 8.646667003631592e-01, 9.999937415122986e-01, 1.000000357627869e+00, 3.363536670803892e-04, -3.384182889477181e-07, 9.816855192184448e-01, 9.999985694885254e-01, 1.00000011920929e+00, 4.65236917079892e-05, -2.944179016139969e-07, 9.975249171257019e-01, 1.000000596046448e+00, 1.35333314538002e-01, 4.668657766160322e-06, 2.974260553401109e-07, 9.99664843082428e-01, 9.99998152256012e-01, 1.831885427236557e-02, 7.71652196362993e-07, -5.63313529156062e-09, 9.999538064002991e-01, 1.000000596046448e+00, 2.482200507074594e-03, 2.739475576163386e-06, 8.646644353866577e-01, 9.999934434890747e-01, 9.999997615814209e-01, 3.372395876795053e-04, 1.982975163627958e-06, 9.816851615905762e-01, 1e+00, 1.00000011920929e+00, 5.014170528738759e-05, -4.885819748778886e-07, 9.975215792655945e-01, 1.00000011920929e+00, 1.35334312915802e-01, 6.58597764413571e-06, -1.030711302973941e-07, 9.996675252914429e-01, 1.000000238418579e+00, 1.831478253006935e-02, 1.388799660162476e-06, -5.356532710720785e-07, 9.999540448188782e-01, 1.000000476837158e+00, 2.479873364791274e-03, 7.547284326392401e-07] PIDWitTun.u_s=[8.00000011920929e-01, 8.00000011920929e-01] -PIDWitTun.u_m=[0e+00, 9.999529123306274e-01, 9.999995827674866e-01, 2.481618896126747e-03, -9.209431368617516e-07, 8.646680116653442e-01, 9.999932050704956e-01, 1.000000357627869e+00, 3.358848916832358e-04, 2.940470800183448e-08, 8.835161924362183e-01, 8.999994993209839e-01, 9.000002145767212e-01, 4.285653994884342e-05, -4.224352778692216e-07, 7.606544494628906e-01, 7.625418901443481e-01, 6.380224227905271e-01, 6.185340881347656e-01, 6.185327172279358e-01, 7.772369384765625e-01, 7.772910594940186e-01, 7.580716609954834e-01, 7.577130794525146e-01, 7.577130794525146e-01, 7.915868163108826e-01, 7.915884256362915e-01, 7.899034023284912e-01, 7.898992300033569e-01, 7.963193655014038e-01, 7.973241806030273e-01, 7.973242402076721e-01, 7.975345253944397e-01, 7.975345849990845e-01, 7.99177348613739e-01, 7.992079854011536e-01, 7.992079854011536e-01, 7.993872165679932e-01, 7.993872761726379e-01, 7.997738718986511e-01, 7.997748255729675e-01, 7.998359203338623e-01, 7.998454570770264e-01, 7.998454570770264e-01, 7.999374866485596e-01, 7.999375462532043e-01, 7.999601364135742e-01, 7.999605536460876e-01, 7.999605536460876e-01, 7.999829649925232e-01, 7.999829649925232e-01, 7.999898195266724e-01, 7.999898791313171e-01, 7.999946475028992e-01, 7.999953627586365e-01, 7.999953627586365e-01, 7.999973893165588e-01, 7.999973893165588e-01, 7.999987602233887e-01, 7.999987602233887e-01, 7.999987602233887e-01, 7.999992966651917e-01, 7.999992966651917e-01, 7.999996542930603e-01, 7.999996542930603e-01, 7.999997735023499e-01, 7.999998331069946e-01, 7.999998331069946e-01, 8.999665379524231e-01, 8.999997973442078e-01, 1.64843387901783e-02, 8.843942964631424e-07, 1.53089652066285e-09, 8.999587893486023e-01, 9.000002145767212e-01, 9.119789004325867e-01, 9.120087623596191e-01, 8.587151169776917e-01, 8.503739833831787e-01, 8.503736257553101e-01, 8.352669477462769e-01, 8.352618813514709e-01, 8.19701611995697e-01, 8.194113373756409e-01, 8.194113969802856e-01, 8.121026158332825e-01, 8.121022582054138e-01, 8.070738315582275e-01, 8.070613145828247e-01, 8.046444058418274e-01, 8.042661547660828e-01, 8.04266095161438e-01, 8.025308847427368e-01, 8.025302886962891e-01, 8.015339970588684e-01, 8.015154004096985e-01, 8.015154004096985e-01, 8.009029626846313e-01, 8.009029626846313e-01, 8.005403876304626e-01, 8.00539493560791e-01] +PIDWitTun.u_m=[0e+00, 9.999529123306274e-01, 9.999995827674866e-01, 2.481618896126747e-03, -9.209431368617516e-07, 8.646680116653442e-01, 9.999932050704956e-01, 1.000000357627869e+00, 3.365608863532543e-04, -1.405635998708021e-06, 9.816854000091553e-01, 9.999993443489075e-01, 1.000001430511475e+00, 4.620050094672479e-05, 2.60930050899328e-07, 9.975255727767944e-01, 9.999987483024597e-01, 6.36556982994079e-01, 5.796743631362915e-01, 5.796712040901184e-01, 8.734090328216553e-01, 8.735077381134033e-01, 7.384646534919739e-01, 7.35945463180542e-01, 7.359451055526733e-01, 8.253192901611328e-01, 8.253238797187805e-01, 7.810922861099243e-01, 7.809821367263794e-01, 8.047061562538147e-01, 8.084191083908081e-01, 8.08419406414032e-01, 7.942683100700378e-01, 7.94263482093811e-01, 8.025853037834167e-01, 8.027405738830566e-01, 8.027405738830566e-01, 7.982497811317444e-01, 7.982495427131653e-01, 8.00873875617981e-01, 8.008803725242615e-01, 7.996534705162048e-01, 7.994614839553833e-01, 7.994614839553833e-01, 8.002801537513733e-01, 8.002804517745972e-01, 7.998415231704712e-01, 7.99833357334137e-01, 7.99833357334137e-01, 8.000888228416443e-01, 8.000888228416443e-01, 7.999485731124878e-01, 7.999482154846191e-01, 8.00017237663269e-01, 8.000280261039734e-01, 8.000280261039734e-01, 7.999838590621948e-01, 7.999838590621948e-01, 8.000083565711975e-01, 8.000088334083557e-01, 8.000088334083557e-01, 7.99994945526123e-01, 7.99994945526123e-01, 8.000027537345886e-01, 8.000027537345886e-01, 7.999989986419678e-01, 7.9999840259552e-01, 7.9999840259552e-01, 9.999329447746277e-01, 9.999996423721313e-01, 1.831885799765587e-02, 7.716523668932496e-07, -5.63313662382825e-09, 9.999538064002991e-01, 1.000000596046448e+00, 7.974549531936646e-01, 7.969515323638916e-01, 8.398213386535645e-01, 8.465310335159302e-01, 8.465313315391541e-01, 8.029245138168335e-01, 8.029098510742188e-01, 8.109574317932129e-01, 8.111075758934021e-01, 8.111075758934021e-01, 8.015456795692444e-01, 8.015452027320862e-01, 8.027148246765137e-01, 8.027177453041077e-01, 8.008632063865662e-01, 8.0057293176651e-01, 8.0057293176651e-01, 8.006801009178162e-01, 8.006801605224609e-01, 8.001959323883057e-01, 8.001869320869446e-01, 8.001869320869446e-01, 8.001735806465149e-01, 8.001735806465149e-01, 8.000575304031372e-01, 8.000572323799133e-01] autTunSig.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] PIDWitTun.inTunPro.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] -PIDWitTun.con.y=[0e+00, 1e+00, 1e+00, 0e+00, 0e+00, 3.339030146598816e-01, 1e+00, 1e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 5.630466341972351e-01, 3.304944634437555e-01, 4.028897881507874e-01, 3.901810348033905e-01, 3.203324675559998e-01, 2.860205173492432e-01, 2.332615405321121e-01, 2.529027760028839e-01, 2.462480068206787e-01, 2.326554656028748e-01, 2.207061946392059e-01, 2.084116190671921e-01, 2.135261595249176e-01, 2.110789865255356e-01, 2.079578191041946e-01, 2.050251215696335e-01, 2.051280736923218e-01, 2.033990174531937e-01, 2.026210129261017e-01, 2.019389718770981e-01, 2.012221068143845e-01, 2.011028230190277e-01, 2.00843021273613e-01, 2.006127536296844e-01, 2.004746049642563e-01, 2.002964466810226e-01, 2.002733051776886e-01, 2.002069056034088e-01, 2.001703679561615e-01, 2.001163810491562e-01, 2.000714540481567e-01, 2.000685036182404e-01, 2.000503242015839e-01, 2.000403851270676e-01, 2.000285238027573e-01, 2.00017049908638e-01, 2.000170946121216e-01, 2.00012132525444e-01, 2.000099271535873e-01, 2.000069618225098e-01, 2.00006291270256e-01, 2.000042349100113e-01, 2.000028938055038e-01, 2.000024616718292e-01, 2.000017017126083e-01, 2.000014334917068e-01, 2.000010460615158e-01, 2.000006884336472e-01, 2.000006139278412e-01, 2.000004053115845e-01, 2.000003457069397e-01, 2.000002562999725e-01, 2.000002264976501e-01, 2.000001519918442e-01, 2.000000923871994e-01, 2.456048429012301e-01, 2.746470570564267e-01, 1.658154837787151e-02, 0e+00, 0e+00, 5.709126219153404e-02, 7.915584743022919e-02, 1.051105260848999e-01, 1.298341155052185e-01, 1.356063038110733e-01, 1.513861864805222e-01, 1.625128388404846e-01, 1.681240648031235e-01, 1.759155094623567e-01, 1.791598945856094e-01, 1.836102157831192e-01, 1.878977417945862e-01, 1.891960799694061e-01, 1.918694078922272e-01, 1.929194331169128e-01, 1.944861263036728e-01, 1.951855272054672e-01, 1.963389217853546e-01, 1.9728122651577e-01, 1.975900232791901e-01, 1.981492340564728e-01, 1.984171718358994e-01, 1.987623125314713e-01, 1.990970373153687e-01, 1.991812884807587e-01, 1.993807405233383e-01, 1.994631588459015e-01, 1.995828151702881e-01] -PIDWitTun.con.k=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.522051632404327e-01, 2.101579010486603e-01, 2.101579010486603e-01, 2.101579010486603e-01, 2.101579010486603e-01, 2.101579010486603e-01, 2.101579010486603e-01, 2.101579010486603e-01, 2.101579010486603e-01, 2.101579010486603e-01, 2.101579010486603e-01, 2.101579010486603e-01, 2.101579010486603e-01, 2.101579010486603e-01, 2.101579010486603e-01, 2.101579010486603e-01, 2.101579010486603e-01, 2.101579010486603e-01, 2.101579010486603e-01, 2.101579010486603e-01, 2.101579010486603e-01, 2.101579010486603e-01, 2.101579010486603e-01, 2.101579010486603e-01, 2.101579010486603e-01, 2.101579010486603e-01, 2.101579010486603e-01, 2.101579010486603e-01, 2.101579010486603e-01] -PIDWitTun.con.Ti=[5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 8.674527740478516e+01, 9.514640045166016e+01, 9.514640045166016e+01, 9.514640045166016e+01, 9.514640045166016e+01, 9.514640045166016e+01, 9.514640045166016e+01, 9.514640045166016e+01, 9.514640045166016e+01, 9.514640045166016e+01, 9.514640045166016e+01, 9.514640045166016e+01, 9.514640045166016e+01, 9.514640045166016e+01, 9.514640045166016e+01, 9.514640045166016e+01, 9.514640045166016e+01, 9.514640045166016e+01, 9.514640045166016e+01, 9.514640045166016e+01, 9.514640045166016e+01, 9.514640045166016e+01, 9.514640045166016e+01, 9.514640045166016e+01, 9.514640045166016e+01, 9.514640045166016e+01, 9.514640045166016e+01, 9.514640045166016e+01, 9.514640045166016e+01] -PIDWitTun.con.Td=[1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 3.199629592895508e+01, 2.627090644836426e+01, 2.627090644836426e+01, 2.627090644836426e+01, 2.627090644836426e+01, 2.627090644836426e+01, 2.627090644836426e+01, 2.627090644836426e+01, 2.627090644836426e+01, 2.627090644836426e+01, 2.627090644836426e+01, 2.627090644836426e+01, 2.627090644836426e+01, 2.627090644836426e+01, 2.627090644836426e+01, 2.627090644836426e+01, 2.627090644836426e+01, 2.627090644836426e+01, 2.627090644836426e+01, 2.627090644836426e+01, 2.627090644836426e+01, 2.627090644836426e+01, 2.627090644836426e+01, 2.627090644836426e+01, 2.627090644836426e+01, 2.627090644836426e+01, 2.627090644836426e+01, 2.627090644836426e+01, 2.627090644836426e+01] +PIDWitTun.con.y=[0e+00, 1e+00, 1e+00, 0e+00, 0e+00, 3.339030146598816e-01, 1e+00, 1e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 3.875620663166046e-01, 1.067091897130006e-01, 2.957209050655365e-01, 3.641521334648132e-01, 2.556469142436983e-01, 2.1932053565979e-01, 1.419638246297836e-01, 2.228323221206665e-01, 2.485701441764832e-01, 2.178325206041336e-01, 1.971660405397415e-01, 1.746761351823807e-01, 2.065731436014175e-01, 2.15461254119873e-01, 2.035199999809265e-01, 1.969224363565445e-01, 2.019114643335342e-01, 2.021893709897995e-01, 2.051452547311783e-01, 2.004785686731339e-01, 1.984679400920868e-01, 1.999383568763733e-01, 2.007881999015808e-01, 2.017504274845123e-01, 1.999799013137817e-01, 1.993654519319534e-01, 1.999868750572205e-01, 2.002912610769272e-01, 1.999970227479935e-01, 1.999464631080627e-01, 1.99757382273674e-01, 2.000093013048172e-01, 2.001075744628906e-01, 2.000222504138947e-01, 1.999696642160416e-01, 1.999111622571945e-01, 2.000081092119217e-01, 2.000392973423004e-01, 2.000044286251068e-01, 1.999865025281906e-01, 2.000022679567337e-01, 2.000043094158173e-01, 2.000141590833664e-01, 2.000002264976501e-01, 1.999945640563965e-01, 1.999991685152054e-01, 2.000019401311874e-01, 2.000050395727158e-01, 1.999997049570084e-01, 1.999979317188263e-01, 1.999998390674591e-01, 2.000007927417755e-01, 1.999999135732651e-01, 1.999997943639755e-01, 1.999992430210114e-01, 3.076969981193549e-01, 3.778702914714807e-01, 5.43086864054203e-02, 0e+00, 0e+00, 1.227643862366676e-01, 1.801054030656815e-01, 1.54854953289032e-01, 1.541679352521896e-01, 1.702288538217545e-01, 1.810765564441681e-01, 1.94421261548996e-01, 1.875517219305038e-01, 1.883916556835175e-01, 1.921395361423492e-01, 1.952692121267319e-01, 1.984547823667526e-01, 1.966616660356522e-01, 1.971049904823303e-01, 1.98025181889534e-01, 1.988035291433334e-01, 1.988503485918045e-01, 1.991226822137833e-01, 1.99287012219429e-01, 1.995009928941727e-01, 1.996960341930389e-01, 1.997158229351044e-01, 1.997727900743484e-01, 1.998264044523239e-01, 1.99873074889183e-01, 1.999228596687317e-01, 1.999253034591675e-01, 1.999418139457703e-01] +PIDWitTun.con.k=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.625229358673096e-01, 2.625229358673096e-01, 2.625229358673096e-01, 2.625229358673096e-01, 2.625229358673096e-01, 2.625229358673096e-01, 2.625229358673096e-01, 2.625229358673096e-01, 2.625229358673096e-01, 2.625229358673096e-01, 2.625229358673096e-01, 2.625229358673096e-01, 2.625229358673096e-01, 2.625229358673096e-01, 2.625229358673096e-01, 2.625229358673096e-01, 2.625229358673096e-01, 2.625229358673096e-01, 2.625229358673096e-01, 2.625229358673096e-01, 2.625229358673096e-01, 2.625229358673096e-01, 2.625229358673096e-01, 2.625229358673096e-01, 2.625229358673096e-01, 2.625229358673096e-01, 2.625229358673096e-01, 2.625229358673096e-01] +PIDWitTun.con.Ti=[5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 9.153768157958984e+01, 9.153768157958984e+01, 9.153768157958984e+01, 9.153768157958984e+01, 9.153768157958984e+01, 9.153768157958984e+01, 9.153768157958984e+01, 9.153768157958984e+01, 9.153768157958984e+01, 9.153768157958984e+01, 9.153768157958984e+01, 9.153768157958984e+01, 9.153768157958984e+01, 9.153768157958984e+01, 9.153768157958984e+01, 9.153768157958984e+01, 9.153768157958984e+01, 9.153768157958984e+01, 9.153768157958984e+01, 9.153768157958984e+01, 9.153768157958984e+01, 9.153768157958984e+01, 9.153768157958984e+01, 9.153768157958984e+01, 9.153768157958984e+01, 9.153768157958984e+01, 9.153768157958984e+01, 9.153768157958984e+01] +PIDWitTun.con.Td=[1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 1.87575740814209e+01, 1.87575740814209e+01, 1.87575740814209e+01, 1.87575740814209e+01, 1.87575740814209e+01, 1.87575740814209e+01, 1.87575740814209e+01, 1.87575740814209e+01, 1.87575740814209e+01, 1.87575740814209e+01, 1.87575740814209e+01, 1.87575740814209e+01, 1.87575740814209e+01, 1.87575740814209e+01, 1.87575740814209e+01, 1.87575740814209e+01, 1.87575740814209e+01, 1.87575740814209e+01, 1.87575740814209e+01, 1.87575740814209e+01, 1.87575740814209e+01, 1.87575740814209e+01, 1.87575740814209e+01, 1.87575740814209e+01, 1.87575740814209e+01, 1.87575740814209e+01, 1.87575740814209e+01, 1.87575740814209e+01] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_DirectActingPIWithFirstOrderAMIGO.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_DirectActingPIWithFirstOrderAMIGO.txt index 73432d884dd..24aec381ed3 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_DirectActingPIWithFirstOrderAMIGO.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_DirectActingPIWithFirstOrderAMIGO.txt @@ -1,4 +1,4 @@ -last-generated=2023-12-27 +last-generated=2024-04-04 statistics-simulation= { "linear": " ", @@ -8,11 +8,11 @@ statistics-simulation= } time=[0e+00, 1e+04] PI.u_s=[8.00000011920929e-01, 8.00000011920929e-01] -PI.u_m=[0e+00, 9.999547004699707e-01, 1.000000238418579e+00, 2.480137394741178e-03, -2.153460911813454e-07, 8.646676540374756e-01, 9.999932050704956e-01, 1.000000596046448e+00, 3.360328264534473e-04, -1.819523909318832e-08, 9.816848039627075e-01, 9.999990463256836e-01, 9.999995231628418e-01, 4.631499905372038e-05, 1.66708900906086e-07, 9.97524082660675e-01, 1.000003695487976e+00, 1.353332102298723e-01, 8.551610335416626e-06, -8.360113668004487e-08, 9.996616840362549e-01, 1.000002861022949e+00, 1.831654086709023e-02, 7.27236226794048e-07, -2.911429142216093e-08, 9.999535083770752e-01, 1.000000238418579e+00, 2.479862421751022e-03, -1.559150859975484e-06, 8.646684288978577e-01, 9.999932050704956e-01, 9.999995827674866e-01, 3.364877193234861e-04, 2.764544682065662e-08, 9.816818237304691e-01, 9.999982714653015e-01, 1.00000011920929e+00, 4.689610796049237e-05, 7.025527537507514e-08, 9.975205063819885e-01, 1.000000238418579e+00, 1.353349983692169e-01, 8.521654308424331e-06, -3.126183116819448e-07, 9.996613264083862e-01, 1.00000011920929e+00, 1.831790432333946e-02, 2.934876874860493e-06, -3.257808955936525e-08, 9.999547600746155e-01, 1e+00, 2.480624942108989e-03, 1.10450955048691e-07, 8.646685481071472e-01, 9.999921321868896e-01, 9.999998211860657e-01, 3.364789008628446e-04, 4.021998734061877e-08, 9.816821217536926e-01, 1.000002145767212e+00, 9.999992251396179e-01, 4.605128560797311e-05, 4.935427355690081e-08, 9.975223541259766e-01, 1.000001311302185e+00, 1.353337913751602e-01, 2.585666834420408e-06, 2.140551345064523e-07, 9.996639490127563e-01, 9.999997019767761e-01, 1.831408403813839e-02, 7.376625035249162e-07, -6.128479390632435e-10, 9.999551773071289e-01, 9.999997615814209e-01, 2.481865463778377e-03, 5.394439028805209e-08, 8.646684288978577e-01, 9.999927878379822e-01, 9.999988675117493e-01, 3.366093151271343e-04, 1.384296695050709e-07, 9.816855788230896e-01, 9.999998807907104e-01, 1.00000011920929e+00, 4.665494634537026e-05, 2.791634301502199e-07, 9.975269436836243e-01, 1.00000011920929e+00, 1.353332102298737e-01, 8.552294275432359e-06, 2.768251476936712e-07, 9.996631741523743e-01, 1.000001668930054e+00, 1.83132141828537e-02, 4.918724698654842e-06, 6.307139699401887e-08, 9.999521374702454e-01, 9.99998152256012e-01, 2.482534619048238e-03, -2.26219140131434e-06] +PI.u_m=[0e+00, 9.999547004699707e-01, 1.000000238418579e+00, 2.480137394741178e-03, -2.153460911813454e-07, 8.646676540374756e-01, 9.999932050704956e-01, 1.000000596046448e+00, 3.361890558153391e-04, -3.533419601353671e-08, 9.816851019859314e-01, 9.999987483024597e-01, 9.999997615814209e-01, 4.566456846077926e-05, -1.163176293061944e-07, 9.975239634513855e-01, 9.999994039535522e-01, 1.353351771831499e-01, 5.942146117376979e-07, 2.798019806959928e-07, 9.9965900182724e-01, 9.999997019767761e-01, 1.831728778779507e-02, 3.150164729959215e-06, -2.899513731335901e-07, 9.999541640281677e-01, 9.999993443489075e-01, 2.481624949723482e-03, 2.827020466611823e-07, 8.64668071269989e-01, 9.999945163726807e-01, 1.000002026557922e+00, 3.379597910679877e-04, 2.340709215786774e-06, 9.816857576370243e-01, 9.999985098838806e-01, 9.999993443489075e-01, 4.618740786099806e-05, 3.034480471342249e-07, 9.975231289863586e-01, 9.999994039535522e-01, 1.353354156017303e-01, 9.92042896541534e-06, -2.157242846578811e-07, 9.996603727340698e-01, 1.000000476837158e+00, 1.831422746181488e-02, 2.464670842527994e-06, -1.907345037466257e-08, 9.999537467956543e-01, 1.000000238418579e+00, 2.481517614796758e-03, -3.816609819295991e-07, 8.646675944328308e-01, 9.999908208847046e-01, 9.999997615814209e-01, 3.364782896824049e-04, 1.634328100408232e-06, 9.816856384277344e-01, 1.000001668930054e+00, 9.999997615814209e-01, 4.790025559486821e-05, -7.604332949995296e-07, 9.975265860557556e-01, 9.999995231628418e-01, 1.353345662355423e-01, 6.295172170212027e-06, 3.402948607345024e-07, 9.99664843082428e-01, 9.999995231628418e-01, 1.831690222024918e-02, 7.963487860251917e-07, -8.995883149509609e-09, 9.999528527259827e-01, 1.000000834465027e+00, 2.479721792042255e-03, -1.047474569304541e-07, 8.646685481071472e-01, 9.999933838844299e-01, 9.999980330467224e-01, 3.364397562108934e-04, -2.018324209984303e-07, 9.816848635673523e-01, 1.000000238418579e+00, 1e+00, 4.598180021275766e-05, -6.704551225311661e-08, 9.975244402885437e-01, 9.999999403953552e-01, 1.353354007005692e-01, 8.286533557111397e-06, 2.597562342998572e-08, 9.996647834777832e-01, 1e+00, 1.831687241792679e-02, 2.247287227419292e-07, 1.954243433743841e-09, 9.99951958656311e-01, 1.000001907348633e+00, 2.479897812008858e-03, -9.35333503093716e-07] PIWitTun.u_s=[8.00000011920929e-01, 8.00000011920929e-01] -PIWitTun.u_m=[0e+00, 9.999547004699707e-01, 1.000000238418579e+00, 2.480137394741178e-03, -2.153460911813454e-07, 8.646676540374756e-01, 9.999932050704956e-01, 1.000000596046448e+00, 3.360328264534473e-04, -1.819523909318832e-08, 8.835163116455078e-01, 8.999991416931152e-01, 8.999995589256287e-01, 4.168349914834835e-05, 1.500380051311355e-07, 6.425104737281799e-01, 6.441075801849365e-01, 6.501051783561707e-01, 6.510442495346069e-01, 6.510443091392517e-01, 7.428301572799683e-01, 7.428615093231201e-01, 7.651839852333069e-01, 7.656005024909973e-01, 7.656005024909973e-01, 7.838445901870728e-01, 7.838454842567444e-01, 7.913357019424438e-01, 7.913543581962585e-01, 7.951021790504456e-01, 7.956886887550354e-01, 7.956887483596802e-01, 7.977668642997742e-01, 7.977675199508667e-01, 7.988470196723938e-01, 7.988671660423279e-01, 7.988671660423279e-01, 7.994188666343689e-01, 7.994189262390137e-01, 7.997029423713684e-01, 7.997036576271057e-01, 7.99828827381134e-01, 7.998483777046204e-01, 7.998483777046204e-01, 7.999225258827209e-01, 7.999225854873657e-01, 7.999597191810608e-01, 7.999604344367981e-01, 7.999604344367981e-01, 7.999797463417053e-01, 7.999797463417053e-01, 7.99989640712738e-01, 7.99989640712738e-01, 7.999940514564514e-01, 7.999947071075439e-01, 7.999947071075439e-01, 7.999973297119141e-01, 7.999973297119141e-01, 7.999985814094543e-01, 7.999986410140991e-01, 7.999986410140991e-01, 7.999992966651917e-01, 7.999992966651917e-01, 7.999996542930603e-01, 7.999996542930603e-01, 7.999997735023499e-01, 7.999998331069946e-01, 7.999998331069946e-01, 8.999664187431335e-01, 8.999999761581421e-01, 1.648267544806004e-02, 6.638962304350571e-07, -5.515630729924226e-10, 8.999596834182739e-01, 8.99999737739563e-01, 9.259396195411682e-01, 9.2600417137146e-01, 8.68955135345459e-01, 8.600267171859741e-01, 8.600262999534607e-01, 8.387858867645264e-01, 8.387787342071533e-01, 8.225767612457275e-01, 8.222745060920715e-01, 8.222745060920715e-01, 8.133535981178284e-01, 8.133531808853149e-01, 8.078921437263489e-01, 8.078786134719849e-01, 8.051093220710754e-01, 8.046759366989136e-01, 8.046759366989136e-01, 8.027697205543518e-01, 8.027691245079041e-01, 8.016618490219116e-01, 8.016412258148193e-01, 8.016411662101746e-01, 8.009724617004395e-01, 8.009724020957947e-01, 8.005772233009338e-01, 8.005762100219727e-01] +PIWitTun.u_m=[0e+00, 9.999547004699707e-01, 1.000000238418579e+00, 2.480137394741178e-03, -2.153460911813454e-07, 8.646676540374756e-01, 9.999932050704956e-01, 1.000000596046448e+00, 3.361890558153391e-04, -3.533419601353671e-08, 9.816851019859314e-01, 9.999987483024597e-01, 9.999997615814209e-01, 4.566456846077926e-05, -1.163176293061944e-07, 9.010377526283264e-01, 9.032737612724304e-01, 6.972811222076413e-01, 6.650397181510925e-01, 6.650396585464478e-01, 8.126415014266968e-01, 8.126918077468872e-01, 7.777010202407837e-01, 7.770482301712036e-01, 7.770481109619141e-01, 8.013110756874084e-01, 8.013121485710144e-01, 7.960768342018127e-01, 7.960637807846069e-01, 7.995320558547974e-01, 8.000748157501221e-01, 8.000748753547668e-01, 7.993193864822388e-01, 7.993190884590149e-01, 7.999743223190308e-01, 7.999865412712097e-01, 7.999865412712097e-01, 7.998812198638916e-01, 7.998812198638916e-01, 7.999927401542664e-01, 7.999930381774902e-01, 7.999809980392456e-01, 7.999790906906128e-01, 7.999790906906128e-01, 7.999979853630066e-01, 7.999979853630066e-01, 7.999963164329529e-01, 7.999963164329529e-01, 7.999963164329529e-01, 7.99999475479126e-01, 7.99999475479126e-01, 7.999993562698364e-01, 7.999993562698364e-01, 7.999998331069946e-01, 7.999998927116394e-01, 7.999998927116394e-01, 7.999998927116394e-01, 7.999998927116394e-01, 7.999999523162842e-01, 7.999999523162842e-01, 7.999999523162842e-01, 7.999999523162842e-01, 7.999999523162842e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 9.999329447746277e-01, 9.999998807907104e-01, 1.831690222024918e-02, 7.963487291817728e-07, -8.995883149509609e-09, 9.999528527259827e-01, 1.000000834465027e+00, 8.258195519447327e-01, 8.253865838050842e-01, 8.365053534507751e-01, 8.382454514503479e-01, 8.382455110549927e-01, 8.116603493690491e-01, 8.116514086723328e-01, 8.086879253387451e-01, 8.086326122283936e-01, 8.086326122283936e-01, 8.036165833473206e-01, 8.036163449287415e-01, 8.021436333656311e-01, 8.02139937877655e-01, 8.011696338653564e-01, 8.010177612304688e-01, 8.010177612304688e-01, 8.005541563034058e-01, 8.005540370941162e-01, 8.002821207046509e-01, 8.00277054309845e-01, 8.00277054309845e-01, 8.001460433006287e-01, 8.001460433006287e-01, 8.000746965408325e-01, 8.000745177268982e-01] autTunSig.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] PIWitTun.inTunPro.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] -PIWitTun.con.y=[0e+00, 1e+00, 1e+00, 0e+00, 0e+00, 3.34646075963974e-01, 1e+00, 1e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 6.465995311737061e-01, 4.389516413211818e-01, 4.215656816959381e-01, 3.813263773918152e-01, 3.420633375644683e-01, 3.035329580307007e-01, 2.648711204528809e-01, 2.581239640712738e-01, 2.432978451251984e-01, 2.339531928300858e-01, 2.250830233097076e-01, 2.16154545545578e-01, 2.145156860351562e-01, 2.103228569030762e-01, 2.083478718996048e-01, 2.061064690351486e-01, 2.04612135887146e-01, 2.035752534866333e-01, 2.024562656879425e-01, 2.020598351955414e-01, 2.014804929494858e-01, 2.011663466691971e-01, 2.008751332759857e-01, 2.005811035633087e-01, 2.005075067281723e-01, 2.003566920757294e-01, 2.002899646759033e-01, 2.00213149189949e-01, 2.001612633466721e-01, 2.001246511936188e-01, 2.000852972269058e-01, 2.000717371702194e-01, 2.000516355037689e-01, 2.000406682491302e-01, 2.000304907560349e-01, 2.000202238559723e-01, 2.000176906585693e-01, 2.000124305486679e-01, 2.000101059675217e-01, 2.000074237585068e-01, 2.000056207180023e-01, 2.000043392181396e-01, 2.000029683113098e-01, 2.000025063753128e-01, 2.000018060207367e-01, 2.000014185905457e-01, 2.00001060962677e-01, 2.000007033348083e-01, 2.000006139278412e-01, 2.000004351139069e-01, 2.000003457069397e-01, 2.000002562999725e-01, 2.000001966953278e-01, 2.000001519918442e-01, 2.000001072883606e-01, 2.347591817379e-01, 2.607191503047941e-01, 6.954696029424667e-02, 0e+00, 0e+00, 4.501063749194145e-02, 6.571582704782486e-02, 9.301628917455673e-02, 1.191075071692467e-01, 1.350456029176712e-01, 1.463108062744141e-01, 1.587361693382263e-01, 1.648829281330109e-01, 1.729091852903367e-01, 1.774644553661346e-01, 1.820359975099564e-01, 1.866468042135239e-01, 1.882516890764236e-01, 1.91015750169754e-01, 1.923902779817581e-01, 1.940193772315979e-01, 1.951578110456467e-01, 1.960694044828415e-01, 1.970373243093491e-01, 1.974417567253113e-01, 1.98014885187149e-01, 1.983508169651031e-01, 1.986878514289856e-01, 1.990275830030441e-01, 1.991419792175293e-01, 1.993432641029358e-01, 1.99443981051445e-01, 1.99563130736351e-01] -PIWitTun.con.k=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.65950819849968e-01, 1.506453603506088e-01, 1.506453603506088e-01, 1.506453603506088e-01, 1.506453603506088e-01, 1.506453603506088e-01, 1.506453603506088e-01, 1.506453603506088e-01, 1.506453603506088e-01, 1.506453603506088e-01, 1.506453603506088e-01, 1.506453603506088e-01, 1.506453603506088e-01, 1.506453603506088e-01, 1.506453603506088e-01, 1.506453603506088e-01, 1.506453603506088e-01, 1.506453603506088e-01, 1.506453603506088e-01, 1.506453603506088e-01, 1.506453603506088e-01, 1.506453603506088e-01, 1.506453603506088e-01, 1.506453603506088e-01, 1.506453603506088e-01, 1.506453603506088e-01, 1.506453603506088e-01, 1.506453603506088e-01, 1.506453603506088e-01] -PIWitTun.con.Ti=[5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 6.393726348876953e+01, 7.277561187744141e+01, 7.277561187744141e+01, 7.277561187744141e+01, 7.277561187744141e+01, 7.277561187744141e+01, 7.277561187744141e+01, 7.277561187744141e+01, 7.277561187744141e+01, 7.277561187744141e+01, 7.277561187744141e+01, 7.277561187744141e+01, 7.277561187744141e+01, 7.277561187744141e+01, 7.277561187744141e+01, 7.277561187744141e+01, 7.277561187744141e+01, 7.277561187744141e+01, 7.277561187744141e+01, 7.277561187744141e+01, 7.277561187744141e+01, 7.277561187744141e+01, 7.277561187744141e+01, 7.277561187744141e+01, 7.277561187744141e+01, 7.277561187744141e+01, 7.277561187744141e+01, 7.277561187744141e+01, 7.277561187744141e+01] +PIWitTun.con.y=[0e+00, 1e+00, 1e+00, 0e+00, 0e+00, 3.34646075963974e-01, 1e+00, 1e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 4.641798436641693e-01, 2.017102986574167e-01, 2.735844254493713e-01, 3.078548014163971e-01, 2.90319502353668e-01, 2.404410839080811e-01, 1.961636692285538e-01, 2.162809073925018e-01, 2.204535305500031e-01, 2.138612270355225e-01, 2.062178403139114e-01, 1.986878365278244e-01, 2.0333331823349e-01, 2.037640064954758e-01, 2.022518813610077e-01, 2.00958251953125e-01, 2.005325555801392e-01, 2.006514221429825e-01, 2.006759792566299e-01, 2.003709375858307e-01, 2.001475095748901e-01, 2.001255303621292e-01, 2.001232355833054e-01, 2.001188099384308e-01, 2.000615298748016e-01, 2.000225484371185e-01, 2.000249773263931e-01, 2.000227421522141e-01, 2.00017437338829e-01, 2.000102549791336e-01, 2.000034004449844e-01, 2.000047713518143e-01, 2.000041157007217e-01, 2.000029385089874e-01, 2.000017166137695e-01, 2.000004947185516e-01, 2.000008970499039e-01, 2.000007331371307e-01, 2.000005096197128e-01, 2.000002861022949e-01, 2.000001817941666e-01, 2.000001668930054e-01, 2.000001221895218e-01, 2.000000923871994e-01, 2.000000476837158e-01, 2.000000327825546e-01, 2.000000327825546e-01, 2.000000178813934e-01, 2.000000178813934e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.872249484062201e-01, 3.528519868850702e-01, 1.166971996426582e-01, 0e+00, 0e+00, 1.00015752017498e-01, 1.533021926879883e-01, 1.496535390615463e-01, 1.563441902399063e-01, 1.656444072723389e-01, 1.761226207017899e-01, 1.863109320402145e-01, 1.864027231931686e-01, 1.895050704479218e-01, 1.917935460805893e-01, 1.940839886665344e-01, 1.963836550712585e-01, 1.96511372923851e-01, 1.974747031927109e-01, 1.979567408561707e-01, 1.985261887311935e-01, 1.988748162984848e-01, 1.991206407546997e-01, 1.993917673826218e-01, 1.994868218898773e-01, 1.9963438808918e-01, 1.997071653604507e-01, 1.997801214456558e-01, 1.998539417982101e-01, 1.998710185289383e-01, 1.999099254608154e-01, 1.999255120754242e-01, 1.99945330619812e-01] +PIWitTun.con.k=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 1.932341307401657e-01, 1.932341307401657e-01, 1.932341307401657e-01, 1.932341307401657e-01, 1.932341307401657e-01, 1.932341307401657e-01, 1.932341307401657e-01, 1.932341307401657e-01, 1.932341307401657e-01, 1.932341307401657e-01, 1.932341307401657e-01, 1.932341307401657e-01, 1.932341307401657e-01, 1.932341307401657e-01, 1.932341307401657e-01, 1.932341307401657e-01, 1.932341307401657e-01, 1.932341307401657e-01, 1.932341307401657e-01, 1.932341307401657e-01, 1.932341307401657e-01, 1.932341307401657e-01, 1.932341307401657e-01, 1.932341307401657e-01, 1.932341307401657e-01, 1.932341307401657e-01, 1.932341307401657e-01, 1.932341307401657e-01] +PIWitTun.con.Ti=[5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 7.253745269775391e+01, 7.253745269775391e+01, 7.253745269775391e+01, 7.253745269775391e+01, 7.253745269775391e+01, 7.253745269775391e+01, 7.253745269775391e+01, 7.253745269775391e+01, 7.253745269775391e+01, 7.253745269775391e+01, 7.253745269775391e+01, 7.253745269775391e+01, 7.253745269775391e+01, 7.253745269775391e+01, 7.253745269775391e+01, 7.253745269775391e+01, 7.253745269775391e+01, 7.253745269775391e+01, 7.253745269775391e+01, 7.253745269775391e+01, 7.253745269775391e+01, 7.253745269775391e+01, 7.253745269775391e+01, 7.253745269775391e+01, 7.253745269775391e+01, 7.253745269775391e+01, 7.253745269775391e+01, 7.253745269775391e+01] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_ReverseActingPIDWithFirstOrderAMIGO.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_ReverseActingPIDWithFirstOrderAMIGO.txt index 002c97cddb0..3fef4627f55 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_ReverseActingPIDWithFirstOrderAMIGO.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_ReverseActingPIDWithFirstOrderAMIGO.txt @@ -1,4 +1,4 @@ -last-generated=2023-12-27 +last-generated=2024-04-03 statistics-simulation= { "linear": " ", @@ -8,12 +8,12 @@ statistics-simulation= } time=[0e+00, 1e+04] PID.u_s=[8.00000011920929e-01, 8.00000011920929e-01] -PID.u_m=[0e+00, 7.999616265296936e-01, 7.999999523162842e-01, 9.993995428085327e-01, 9.998931288719177e-01, 1.353196501731873e-01, 7.387421646853909e-06, -8.588997246761294e-08, 9.996626377105713e-01, 9.999998211860657e-01, 1.831966824829578e-02, 4.834202627534978e-06, -5.006759238312952e-07, 9.999547004699707e-01, 1.000000715255737e+00, 2.47983424924314e-03, 2.204088245250091e-09, 8.646645545959486e-01, 9.999932646751404e-01, 9.99999463558197e-01, 3.337576927151531e-04, 3.279294844560354e-07, 9.816855788230896e-01, 9.999987483024597e-01, 9.999998211860657e-01, 4.25909529440105e-05, -4.059635614339641e-07, 9.975248575210571e-01, 9.999971985816956e-01, 1.353336572647095e-01, 7.332919722102815e-06, -5.969320682197576e-07, 9.996594190597534e-01, 1.000000238418579e+00, 1.830529980361426e-02, 3.956107775593409e-06, 4.129413611053678e-08, 9.999537467956543e-01, 9.999983906745911e-01, 2.48045427724719e-03, 2.579474767117063e-07, 8.646659851074219e-01, 9.999947547912598e-01, 9.999991655349731e-01, 3.364323638379574e-04, 1.090465048037004e-06, 9.816851019859314e-01, 9.999983906745911e-01, 9.999986290931702e-01, 4.650036134989932e-05, -1.835115703840984e-08, 9.975230693817139e-01, 1.000000715255737e+00, 1.353355348110199e-01, 8.895517566998024e-06, -1.127353584706725e-06, 9.99664843082428e-01, 1.00000011920929e+00, 1.831884123384953e-02, 2.432082283121417e-06, -2.416350923795108e-07, 9.999532699584961e-01, 9.999990463256836e-01, 2.480230759829283e-03, 4.884291229245719e-07, 8.646670579910278e-01, 9.999942779541016e-01, 1e+00, 3.360958071425425e-04, -3.1121609822553e-07, 9.816845655441284e-01, 9.999992251396179e-01, 1e+00, 4.688418630394153e-05, 1.654726986544119e-07, 9.975248575210571e-01, 9.99998927116394e-01, 1.353338211774826e-01, 8.388154128624592e-06, -1.141527405934539e-07, 9.996664524078369e-01, 9.999967217445374e-01, 1.83118786662817e-02, 1.19047433599917e-06, 1.458716951674432e-06, 9.999538064002991e-01, 1.000000834465027e+00, 2.484367461875081e-03, 2.533093663714681e-07, 8.646670579910278e-01, 9.999938011169434e-01, 1.00000011920929e+00, 3.36484081344679e-04, 2.045086375801475e-07, 9.816862940788269e-01, 9.999982118606567e-01, 1.000001549720764e+00, 4.763563265441917e-05, -1.340348632083987e-07, 9.975219964981079e-01, 9.999992847442627e-01] +PID.u_m=[0e+00, 7.999616265296936e-01, 7.999999523162842e-01, 9.993995428085327e-01, 9.998931288719177e-01, 1.353196501731873e-01, 7.387421646853909e-06, -8.588997246761294e-08, 9.996626377105713e-01, 9.999998211860657e-01, 1.831492595374584e-02, 1.58000568717398e-06, -3.821812128990132e-07, 9.999536871910095e-01, 1.000000238418579e+00, 2.479760674759746e-03, 1.846726718213176e-07, 8.646644949913038e-01, 9.999924302101135e-01, 1.00000011920929e+00, 3.37007426423952e-04, -2.336076931896969e-07, 9.81681764125824e-01, 9.999992251396179e-01, 1.000001549720764e+00, 4.619251922122203e-05, -2.136411580977438e-07, 9.975236058235168e-01, 1.000001311302185e+00, 1.353349089622498e-01, 6.779408067814074e-06, -2.515003529879323e-07, 9.996705651283264e-01, 1.000002026557922e+00, 1.83167010545727e-02, 2.618341341076302e-06, 4.633555761301977e-07, 9.999536871910095e-01, 9.999998807907104e-01, 2.480544615536928e-03, 5.08474045091134e-07, 8.646665215492249e-01, 9.999949336051941e-01, 9.999991655349731e-01, 3.362882125657052e-04, -5.395982611844374e-07, 9.816812872886658e-01, 9.999967813491821e-01, 9.999998807907104e-01, 4.857080784859136e-05, -1.246911551788799e-07, 9.975185394287109e-01, 9.999993443489075e-01, 1.353318691253662e-01, 7.809436283423565e-06, -2.790625615034514e-07, 9.996639490127563e-01, 9.999998807907104e-01, 1.831455901265144e-02, 2.144563723049941e-06, -3.935766130780394e-07, 9.99952495098114e-01, 9.999998211860657e-01, 2.485564211383462e-03, -1.418680312781362e-06, 8.646669983863831e-01, 9.999942779541016e-01, 1e+00, 3.36086784955101e-04, -1.923431682371305e-06, 9.816827774047852e-01, 9.999990463256836e-01, 1e+00, 4.65348239231389e-05, -4.345420450135862e-07, 9.975239634513855e-01, 1.000000357627869e+00, 1.353335976600647e-01, 1.007324317470193e-05, 4.871192231803434e-07, 9.996671676635742e-01, 9.999999403953552e-01, 1.831608824431896e-02, 4.334755772106291e-07, -1.859797871262003e-09, 9.999501705169678e-01, 1.000000357627869e+00, 2.481010742485523e-03, -1.225146320393833e-06, 8.646674156188965e-01, 9.99992847442627e-01, 9.999998211860657e-01, 3.357224923092872e-04, -9.661866897658911e-07, 9.81680154800415e-01, 9.999989867210388e-01, 1.000000357627869e+00, 4.781069947057404e-05, -9.589965657141875e-07, 9.975184798240662e-01, 1.000000476837158e+00] PIDWitTun.u_s=[8.00000011920929e-01, 8.00000011920929e-01] -PIDWitTun.u_m=[0e+00, 7.999616265296936e-01, 7.999999523162842e-01, 9.993996024131775e-01, 9.998931288719177e-01, 1.353196501731873e-01, 7.387421646853909e-06, -8.588997246761294e-08, 9.996626377105713e-01, 9.999998211860657e-01, 1.164877042174339e-01, 1.000043526291847e-01, 9.999954700469971e-02, 9.999592304229736e-01, 1.000000596046448e+00, 9.197651594877243e-02, 8.971917629241943e-02, 5.737576484680184e-01, 6.495144963264465e-01, 6.495180130004883e-01, 6.166325211524963e-01, 6.166215538978577e-01, 7.185643315315247e-01, 7.204660773277283e-01, 7.204661965370178e-01, 7.417300343513489e-01, 7.417309284210205e-01, 7.682777643203735e-01, 7.683435082435608e-01, 7.782240509986877e-01, 7.797703742980957e-01, 7.797704935073853e-01, 7.881926894187927e-01, 7.881956100463867e-01, 7.926746606826782e-01, 7.927581667900085e-01, 7.927581667900085e-01, 7.956790924072266e-01, 7.956792712211609e-01, 7.973778247833252e-01, 7.973820567131042e-01, 7.982858419418335e-01, 7.984272837638855e-01, 7.984272837638855e-01, 7.99050509929657e-01, 7.990506887435913e-01, 7.994216084480286e-01, 7.994285225868225e-01, 7.994285225868225e-01, 7.996554374694824e-01, 7.996554374694824e-01, 7.997921109199524e-01, 7.99792468547821e-01, 7.998637557029724e-01, 7.998749017715454e-01, 7.998749017715454e-01, 7.999246120452881e-01, 7.999246120452881e-01, 7.999540567398071e-01, 7.999545931816101e-01, 7.999545931816101e-01, 7.999726533889771e-01, 7.999726533889771e-01, 7.999835014343262e-01, 7.999835014343262e-01, 7.999891638755798e-01, 7.999900579452515e-01, 7.999900579452515e-01, 9.999327659606934e-01, 1.00000011920929e+00, 1.164838746190071e-01, 1.00000686943531e-01, 1.000000014901161e-01, 9.99957799911499e-01, 9.999998807907104e-01, 8.177899718284607e-01, 8.173380494117737e-01, 8.414473533630371e-01, 8.452206254005432e-01, 8.452208638191223e-01, 8.154194355010986e-01, 8.154096007347107e-01, 8.132837414741516e-01, 8.132440447807312e-01, 8.132440447807312e-01, 8.066140413284302e-01, 8.066136837005615e-01, 8.044363260269165e-01, 8.044309020042419e-01, 8.027692437171936e-01, 8.025091886520386e-01, 8.025091886520386e-01, 8.01560640335083e-01, 8.015603423118591e-01, 8.009319305419922e-01, 8.009202480316162e-01, 8.009202480316162e-01, 8.005591034889221e-01, 8.005591034889221e-01, 8.003345727920532e-01, 8.003340363502502e-01] +PIDWitTun.u_m=[0e+00, 7.999616265296936e-01, 7.999999523162842e-01, 9.993996024131775e-01, 9.998931288719177e-01, 1.353196501731873e-01, 7.387421646853909e-06, -8.588997246761294e-08, 9.996626377105713e-01, 9.999998211860657e-01, 1.831492595374584e-02, 1.58000568717398e-06, -3.821812128990132e-07, 9.999536871910095e-01, 1.000000238418579e+00, 9.233773499727249e-02, 9.008152782917023e-02, 5.740921497344978e-01, 6.498442888259888e-01, 6.498485803604126e-01, 6.172829270362854e-01, 6.172719597816467e-01, 7.189870476722717e-01, 7.208849787712097e-01, 7.208852171897888e-01, 7.421191930770874e-01, 7.421201467514038e-01, 7.685414552688599e-01, 7.686070799827576e-01, 7.784311175346375e-01, 7.799686789512634e-01, 7.799687385559082e-01, 7.883273959159851e-01, 7.883301377296448e-01, 7.927688360214233e-01, 7.928516268730164e-01, 7.928516864776611e-01, 7.957416176795959e-01, 7.957417964935303e-01, 7.974197864532471e-01, 7.974239587783813e-01, 7.983153462409973e-01, 7.984548807144165e-01, 7.984548807144165e-01, 7.990686297416687e-01, 7.99068808555603e-01, 7.994334697723389e-01, 7.994402647018433e-01, 7.994402647018433e-01, 7.996630668640137e-01, 7.996630668640137e-01, 7.99796998500824e-01, 7.997973561286926e-01, 7.998671531677246e-01, 7.998780608177185e-01, 7.998780608177185e-01, 7.999266386032104e-01, 7.999266386032104e-01, 7.999553084373474e-01, 7.999558448791504e-01, 7.999558448791504e-01, 7.999734282493591e-01, 7.999734282493591e-01, 7.999839782714844e-01, 7.999840378761292e-01, 7.999895215034485e-01, 7.999904155731201e-01, 7.999904155731201e-01, 9.999327659606934e-01, 1.000000357627869e+00, 1.831724680960178e-02, 9.671581437942223e-07, -1.177209352221098e-08, 9.999534487724304e-01, 1.000000476837158e+00, 8.219393491744995e-01, 8.214973211288452e-01, 8.429118394851685e-01, 8.462632894515991e-01, 8.462635278701782e-01, 8.165928721427917e-01, 8.16582977771759e-01, 8.138200044631958e-01, 8.137684464454651e-01, 8.137684464454651e-01, 8.070024251937866e-01, 8.07002067565918e-01, 8.046494126319885e-01, 8.046435713768005e-01, 8.029176592826843e-01, 8.026475310325623e-01, 8.026475310325623e-01, 8.016420006752014e-01, 8.016416430473328e-01, 8.00983190536499e-01, 8.009709119796753e-01, 8.009709119796753e-01, 8.005896210670471e-01, 8.005896210670471e-01, 8.003533482551575e-01, 8.003527522087097e-01] autTunSig.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] PIDWitTun.inTunPro.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] -PIDWitTun.con.y=[8.00000011920929e-01, 1e+00, 9.998882412910461e-01, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1.515395194292068e-01, 1.073917448520659e-01, 3.689203560352325e-01, 5.239934325218201e-01, 4.829176068305976e-01, 5.76727569103241e-01, 6.099728345870972e-01, 6.556598544120789e-01, 6.961604356765747e-01, 7.050479650497437e-01, 7.241612672805786e-01, 7.417309284210205e-01, 7.503219246864319e-01, 7.631947994232178e-01, 7.671293020248413e-01, 7.741758227348328e-01, 7.771275043487549e-01, 7.828329205513e-01, 7.873018383979797e-01, 7.885835766792297e-01, 7.911935448646545e-01, 7.924119234085083e-01, 7.940794825553894e-01, 7.956792712211609e-01, 7.960456609725952e-01, 7.970002293586731e-01, 7.973828911781311e-01, 7.979646325111389e-01, 7.981732487678528e-01, 7.986338138580322e-01, 7.98981249332428e-01, 7.990928292274475e-01, 7.993026971817017e-01, 7.99397349357605e-01, 7.995291948318481e-01, 7.996554374694824e-01, 7.996858954429626e-01, 7.997620105743408e-01, 7.997921109199524e-01, 7.998382449150085e-01, 7.998549342155457e-01, 7.99891471862793e-01, 7.999191284179688e-01, 7.999279499053955e-01, 7.999445796012878e-01, 7.999521493911743e-01, 7.9996258020401e-01, 7.999726533889771e-01, 7.999750375747681e-01, 7.999811172485352e-01, 7.999835014343262e-01, 7.999871373176575e-01, 7.999884486198425e-01, 7.999913692474365e-01, 7.999935746192932e-01, 7.243354916572566e-01, 6.802086830139165e-01, 9.007906913757324e-01, 1e+00, 1e+00, 8.796066045761108e-01, 8.351336717605591e-01, 8.523387908935547e-01, 8.483063578605652e-01, 8.36073637008667e-01, 8.274804949760437e-01, 8.174213767051697e-01, 8.187323808670044e-01, 8.153007626533508e-01, 8.125213384628296e-01, 8.095598220825195e-01, 8.066136837005615e-01, 8.064907193183899e-01, 8.050193786621094e-01, 8.0428546667099e-01, 8.032976984977722e-01, 8.02889347076416e-01, 8.022301197052002e-01, 8.016719818115234e-01, 8.014757037162781e-01, 8.011285066604614e-01, 8.009730577468872e-01, 8.007637858390808e-01, 8.005591034889221e-01, 8.005081415176392e-01, 8.003838062286377e-01, 8.003354072570801e-01, 8.002609014511108e-01] -PIDWitTun.con.k=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.233747839927673e-01, 2.255657166242599e-01, 2.255657166242599e-01, 2.255657166242599e-01, 2.255657166242599e-01, 2.255657166242599e-01, 2.255657166242599e-01, 2.255657166242599e-01, 2.255657166242599e-01, 2.255657166242599e-01, 2.255657166242599e-01, 2.255657166242599e-01, 2.255657166242599e-01, 2.255657166242599e-01, 2.255657166242599e-01, 2.255657166242599e-01, 2.255657166242599e-01, 2.255657166242599e-01, 2.255657166242599e-01, 2.255657166242599e-01, 2.255657166242599e-01, 2.255657166242599e-01, 2.255657166242599e-01, 2.255657166242599e-01, 2.255657166242599e-01, 2.255657166242599e-01, 2.255657166242599e-01, 2.255657166242599e-01, 2.255657166242599e-01] -PIDWitTun.con.Ti=[5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.011170654296875e+02, 1.014021148681641e+02, 1.014021148681641e+02, 1.014021148681641e+02, 1.014021148681641e+02, 1.014021148681641e+02, 1.014021148681641e+02, 1.014021148681641e+02, 1.014021148681641e+02, 1.014021148681641e+02, 1.014021148681641e+02, 1.014021148681641e+02, 1.014021148681641e+02, 1.014021148681641e+02, 1.014021148681641e+02, 1.014021148681641e+02, 1.014021148681641e+02, 1.014021148681641e+02, 1.014021148681641e+02, 1.014021148681641e+02, 1.014021148681641e+02, 1.014021148681641e+02, 1.014021148681641e+02, 1.014021148681641e+02, 1.014021148681641e+02, 1.014021148681641e+02, 1.014021148681641e+02, 1.014021148681641e+02, 1.014021148681641e+02] -PIDWitTun.con.Td=[1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 3.120401573181152e+01, 2.079292869567871e+01, 2.079292869567871e+01, 2.079292869567871e+01, 2.079292869567871e+01, 2.079292869567871e+01, 2.079292869567871e+01, 2.079292869567871e+01, 2.079292869567871e+01, 2.079292869567871e+01, 2.079292869567871e+01, 2.079292869567871e+01, 2.079292869567871e+01, 2.079292869567871e+01, 2.079292869567871e+01, 2.079292869567871e+01, 2.079292869567871e+01, 2.079292869567871e+01, 2.079292869567871e+01, 2.079292869567871e+01, 2.079292869567871e+01, 2.079292869567871e+01, 2.079292869567871e+01, 2.079292869567871e+01, 2.079292869567871e+01, 2.079292869567871e+01, 2.079292869567871e+01, 2.079292869567871e+01, 2.079292869567871e+01] +PIDWitTun.con.y=[8.00000011920929e-01, 1e+00, 9.998882412910461e-01, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1.520251333713531e-01, 1.077899262309073e-01, 3.68727833032608e-01, 5.241331458091736e-01, 4.865121245384223e-01, 5.773844718933105e-01, 6.106246709823608e-01, 6.561769247055054e-01, 6.966162919998169e-01, 7.056321501731873e-01, 7.246074080467224e-01, 7.421201467514038e-01, 7.506694197654724e-01, 7.634822130203247e-01, 7.674099802970886e-01, 7.744095921516418e-01, 7.774050831794739e-01, 7.830092310905457e-01, 7.874433398246765e-01, 7.887164354324341e-01, 7.913017868995667e-01, 7.925133109092712e-01, 7.94159471988678e-01, 7.957417964935303e-01, 7.961041927337646e-01, 7.970468997955322e-01, 7.974252700805664e-01, 7.979986667633057e-01, 7.982102036476135e-01, 7.986583709716797e-01, 7.990003824234009e-01, 7.991103529930115e-01, 7.993166446685791e-01, 7.994100451469421e-01, 7.995392084121704e-01, 7.996630668640137e-01, 7.996929287910461e-01, 7.997675538063049e-01, 7.997970581054688e-01, 7.998421788215637e-01, 7.998589277267456e-01, 7.998942732810974e-01, 7.999212741851807e-01, 7.999298572540283e-01, 7.99946129322052e-01, 7.999535202980042e-01, 7.99963653087616e-01, 7.999734282493591e-01, 7.999758124351501e-01, 7.999816536903381e-01, 7.999839782714844e-01, 7.999875545501709e-01, 7.99988865852356e-01, 7.999916672706604e-01, 7.999938130378723e-01, 7.243835926055904e-01, 6.801645755767827e-01, 9.245869517326355e-01, 1e+00, 1e+00, 8.836536407470703e-01, 8.392616510391235e-01, 8.550270795822144e-01, 8.500823378562927e-01, 8.378855586051941e-01, 8.289103507995605e-01, 8.186375498771667e-01, 8.19663941860199e-01, 8.159778118133545e-01, 8.131366372108459e-01, 8.100593686103821e-01, 8.07002067565918e-01, 8.068204522132874e-01, 8.05265486240387e-01, 8.045057654380798e-01, 8.034723997116089e-01, 8.030396103858948e-01, 8.023471236228943e-01, 8.017592430114746e-01, 8.01554262638092e-01, 8.011896014213562e-01, 8.010255098342896e-01, 8.008051514625549e-01, 8.005896210670471e-01, 8.00536036491394e-01, 8.004051446914673e-01, 8.003540635108948e-01, 8.002755045890808e-01] +PIDWitTun.con.k=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.251296937465668e-01, 2.251296937465668e-01, 2.251296937465668e-01, 2.251296937465668e-01, 2.251296937465668e-01, 2.251296937465668e-01, 2.251296937465668e-01, 2.251296937465668e-01, 2.251296937465668e-01, 2.251296937465668e-01, 2.251296937465668e-01, 2.251296937465668e-01, 2.251296937465668e-01, 2.251296937465668e-01, 2.251296937465668e-01, 2.251296937465668e-01, 2.251296937465668e-01, 2.251296937465668e-01, 2.251296937465668e-01, 2.251296937465668e-01, 2.251296937465668e-01, 2.251296937465668e-01, 2.251296937465668e-01, 2.251296937465668e-01, 2.251296937465668e-01, 2.251296937465668e-01, 2.251296937465668e-01, 2.251296937465668e-01] +PIDWitTun.con.Ti=[5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.013864898681641e+02, 1.013864898681641e+02, 1.013864898681641e+02, 1.013864898681641e+02, 1.013864898681641e+02, 1.013864898681641e+02, 1.013864898681641e+02, 1.013864898681641e+02, 1.013864898681641e+02, 1.013864898681641e+02, 1.013864898681641e+02, 1.013864898681641e+02, 1.013864898681641e+02, 1.013864898681641e+02, 1.013864898681641e+02, 1.013864898681641e+02, 1.013864898681641e+02, 1.013864898681641e+02, 1.013864898681641e+02, 1.013864898681641e+02, 1.013864898681641e+02, 1.013864898681641e+02, 1.013864898681641e+02, 1.013864898681641e+02, 1.013864898681641e+02, 1.013864898681641e+02, 1.013864898681641e+02, 1.013864898681641e+02] +PIDWitTun.con.Td=[1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 2.077593803405762e+01, 2.077593803405762e+01, 2.077593803405762e+01, 2.077593803405762e+01, 2.077593803405762e+01, 2.077593803405762e+01, 2.077593803405762e+01, 2.077593803405762e+01, 2.077593803405762e+01, 2.077593803405762e+01, 2.077593803405762e+01, 2.077593803405762e+01, 2.077593803405762e+01, 2.077593803405762e+01, 2.077593803405762e+01, 2.077593803405762e+01, 2.077593803405762e+01, 2.077593803405762e+01, 2.077593803405762e+01, 2.077593803405762e+01, 2.077593803405762e+01, 2.077593803405762e+01, 2.077593803405762e+01, 2.077593803405762e+01, 2.077593803405762e+01, 2.077593803405762e+01, 2.077593803405762e+01, 2.077593803405762e+01] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_ReverseActingPIWithFirstOrderAMIGO.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_ReverseActingPIWithFirstOrderAMIGO.txt index 1096e3e78da..39be1b3aab0 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_ReverseActingPIWithFirstOrderAMIGO.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_ReverseActingPIWithFirstOrderAMIGO.txt @@ -1,4 +1,4 @@ -last-generated=2023-12-27 +last-generated=2024-04-03 statistics-simulation= { "linear": " ", @@ -8,11 +8,11 @@ statistics-simulation= } time=[0e+00, 1e+04] PI.u_s=[8.00000011920929e-01, 8.00000011920929e-01] -PI.u_m=[0e+00, 7.999613285064697e-01, 7.999998927116394e-01, 9.993249773979187e-01, 9.998183846473694e-01, 1.353093683719635e-01, 8.515467925462872e-06, -6.112286854431464e-08, 9.996612071990967e-01, 1e+00, 1.831640675663948e-02, 3.585656713767094e-06, -1.088986095965083e-06, 9.999516010284424e-01, 9.999998807907104e-01, 2.483054762706161e-03, 2.550067677020706e-07, 8.646687865257277e-01, 9.999935626983643e-01, 9.999987483024597e-01, 3.365527954883873e-04, -2.391876705587492e-07, 9.816850423812866e-01, 9.999976754188538e-01, 9.999993443489075e-01, 4.598808664013632e-05, -6.455787797676749e-07, 9.9752277135849e-01, 9.999984502792358e-01, 1.35334238409996e-01, 1.090974092221586e-05, 1.818365120698218e-07, 9.996650218963623e-01, 1.000004053115845e+00, 1.831482723355257e-02, 3.90146141171499e-07, -1.016840300849253e-08, 9.999534487724304e-01, 9.999992251396179e-01, 2.479846123605967e-03, -3.744482341971889e-07, 8.646664619445801e-01, 9.999966025352478e-01, 1.000000238418579e+00, 3.364288131706417e-04, 2.022560693148989e-06, 9.81685996055603e-01, 9.999985694885254e-01, 9.999999403953552e-01, 4.553687904262915e-05, 1.613062067917781e-06, 9.97525155544281e-01, 1.000003576278687e+00, 1.353279948234558e-01, 6.792089152440894e-06, -2.431281927783857e-06, 9.996663928031921e-01, 9.99998927116394e-01, 1.831826008856297e-02, 1.988393250940135e-06, -5.959201985206164e-07, 9.999491572380066e-01, 9.999993443489075e-01, 2.479707822203636e-03, -6.373462611009018e-07, 8.646739721298218e-01, 9.999976754188538e-01, 9.999997615814209e-01, 3.366610326338428e-04, 1.501398543268802e-07, 9.816861748695374e-01, 9.999986290931702e-01, 1e+00, 4.633676144294441e-05, -3.791090996685398e-09, 9.975242614746094e-01, 9.999997615814209e-01, 1.35339617729187e-01, 7.946585355966818e-06, -6.602337521144364e-08, 9.996647238731384e-01, 1.000001192092896e+00, 1.831847243010998e-02, 1.587499127708725e-06, 1.411180392096867e-06, 9.999547600746155e-01, 1.000000715255737e+00, 2.483277348801494e-03, 9.122286996898765e-07, 8.64672839641571e-01, 9.999873638153076e-01, 1.000000357627869e+00, 3.364580916240811e-04, 2.302583197888453e-06, 9.816856384277344e-01, 9.999977946281433e-01, 9.999935030937195e-01, 4.827310112887062e-05, -2.973822006424598e-07, 9.975244998931885e-01, 9.999999403953552e-01] +PI.u_m=[0e+00, 7.999613285064697e-01, 7.999998927116394e-01, 9.993249773979187e-01, 9.998183846473694e-01, 1.353093683719635e-01, 8.515467925462872e-06, -6.112286854431464e-08, 9.996612071990967e-01, 1e+00, 1.832147687673569e-02, 1.700028064988146e-06, -5.226810628755629e-08, 9.999518394470215e-01, 1.00000011920929e+00, 2.480308059602976e-03, -5.313717679200636e-07, 8.646689057350172e-01, 9.999879598617554e-01, 1.000000357627869e+00, 3.362224670127034e-04, 2.495843091310235e-06, 9.816849231719971e-01, 9.999991059303284e-01, 9.99999463558197e-01, 4.622510095941834e-05, -4.326629010620309e-08, 9.975243210792542e-01, 9.999973177909851e-01, 1.353354752063751e-01, 6.760900760127697e-06, 1.471415771447937e-07, 9.996604323387146e-01, 1.000001907348633e+00, 1.831649057567084e-02, 1.135851107392227e-06, 5.316890110407257e-07, 9.999452233314514e-01, 1.00000274181366e+00, 2.479816786944866e-03, -1.959308065124787e-06, 8.646723031997681e-01, 9.999919533729553e-01, 1.000000357627869e+00, 3.401445865165442e-04, -1.796214377236538e-07, 9.816785454750061e-01, 9.999998807907104e-01, 1.000000953674316e+00, 4.667403845814988e-05, 2.873144921977655e-06, 9.97527539730072e-01, 9.999980926513672e-01, 1.353350877761841e-01, 1.111958226829302e-05, -1.247565023732022e-06, 9.996724724769592e-01, 9.999991059303284e-01, 1.831664517521858e-02, 2.75544425676344e-06, -5.113929901767733e-08, 9.999550580978394e-01, 1.000000715255737e+00, 2.478907816112041e-03, -1.381824631607742e-06, 8.646727204322815e-01, 9.999923706054688e-01, 1.000000238418579e+00, 3.366619057487565e-04, 1.499738004895331e-07, 9.81684684753418e-01, 9.999991059303284e-01, 1e+00, 4.666066888603382e-05, 2.936378393769701e-07, 9.975287318229675e-01, 9.999986290931702e-01, 1.353349387645721e-01, 8.638819053885527e-06, 6.125371214693587e-07, 9.996662735939026e-01, 1.000000238418579e+00, 1.831585168838501e-02, 6.485825565505365e-07, -2.527694391574187e-07, 9.999538660049438e-01, 1.000000238418579e+00, 2.479890361428261e-03, -9.093320159081486e-07, 8.646727204322815e-01, 9.999925494194031e-01, 1.000001192092896e+00, 3.410725621506572e-04, 2.654850504768547e-06, 9.816866517066956e-01, 9.999991059303284e-01, 9.999991655349731e-01, 4.723327947431244e-05, 4.999175757802732e-07, 9.975265264511108e-01, 9.999988675117493e-01] PIWitTun.u_s=[8.00000011920929e-01, 8.00000011920929e-01] -PIWitTun.u_m=[0e+00, 7.999613285064697e-01, 7.999998927116394e-01, 9.993249773979187e-01, 9.998183846473694e-01, 1.353093683719635e-01, 8.515467925462872e-06, -6.112286854431464e-08, 9.996612071990967e-01, 1e+00, 1.164847612380981e-01, 1.000032275915146e-01, 9.999901801347733e-02, 9.999564290046692e-01, 9.999998807907104e-01, 1.093572527170181e-01, 1.071404591202736e-01, 5.087036490440375e-01, 5.715502500534058e-01, 5.715526938438416e-01, 6.211880445480347e-01, 6.212047934532166e-01, 7.013631463050842e-01, 7.028584480285645e-01, 7.02858567237854e-01, 7.397644519805908e-01, 7.397661805152893e-01, 7.644611597061157e-01, 7.645224332809448e-01, 7.767746448516846e-01, 7.786921858787537e-01, 7.786923050880432e-01, 7.872951030731201e-01, 7.872980237007141e-01, 7.923128008842468e-01, 7.924063801765442e-01, 7.924063801765442e-01, 7.954651117324829e-01, 7.954652905464172e-01, 7.97286331653595e-01, 7.972908616065979e-01, 7.982341051101685e-01, 7.983817458152771e-01, 7.983817458152771e-01, 7.990331053733826e-01, 7.990332841873169e-01, 7.994154095649719e-01, 7.99422562122345e-01, 7.99422562122345e-01, 7.99655020236969e-01, 7.99655020236969e-01, 7.997936010360718e-01, 7.997939586639404e-01, 7.998656630516052e-01, 7.998769283294678e-01, 7.998769283294678e-01, 7.999264597892761e-01, 7.999264597892761e-01, 7.999555468559265e-01, 7.999560832977295e-01, 7.999560832977295e-01, 7.999737858772278e-01, 7.999737858772278e-01, 7.999842762947083e-01, 7.99984335899353e-01, 7.999897599220276e-01, 7.999906539916992e-01, 7.999906539916992e-01, 9.999326467514038e-01, 9.999999403953552e-01, 1.164824590086937e-01, 1.000012084841728e-01, 1.000000014901161e-01, 9.999582767486572e-01, 1e+00, 8.483732938766479e-01, 8.479970097541809e-01, 8.465210795402527e-01, 8.462900519371033e-01, 8.462900519371033e-01, 8.235898613929749e-01, 8.235822319984436e-01, 8.15342128276825e-01, 8.151883482933044e-01, 8.151883482933044e-01, 8.088766932487488e-01, 8.088763952255249e-01, 8.054006099700928e-01, 8.053919672966003e-01, 8.035178184509277e-01, 8.032245635986328e-01, 8.03224503993988e-01, 8.0194091796875e-01, 8.019405007362366e-01, 8.01179051399231e-01, 8.011648058891296e-01, 8.011648058891296e-01, 8.006999492645264e-01, 8.006999492645264e-01, 8.004211187362671e-01, 8.004204034805298e-01] +PIWitTun.u_m=[0e+00, 7.999613285064697e-01, 7.999998927116394e-01, 9.993249773979187e-01, 9.998183846473694e-01, 1.353093683719635e-01, 8.515467925462872e-06, -6.112286854431464e-08, 9.996612071990967e-01, 1e+00, 1.832147687673569e-02, 1.700028064988146e-06, -5.226810628755629e-08, 9.999518394470215e-01, 1.00000011920929e+00, 1.09445221722126e-01, 1.072304025292397e-01, 5.100904703140265e-01, 5.731372833251953e-01, 5.731430649757385e-01, 6.220619678497314e-01, 6.220782995223999e-01, 7.022164463996887e-01, 7.037115097045898e-01, 7.037115097045898e-01, 7.403509616851807e-01, 7.403526902198792e-01, 7.648931741714478e-01, 7.649540305137634e-01, 7.770893573760986e-01, 7.789886593818665e-01, 7.789887189865112e-01, 7.874978184700012e-01, 7.875007390975952e-01, 7.924497127532959e-01, 7.92542040348053e-01, 7.92542040348053e-01, 7.95555055141449e-01, 7.955552339553833e-01, 7.973453402519226e-01, 7.973498106002808e-01, 7.982752919197083e-01, 7.984200716018677e-01, 7.984201312065125e-01, 7.990579009056091e-01, 7.990580797195435e-01, 7.994315028190613e-01, 7.994384765625e-01, 7.994384765625e-01, 7.996652126312256e-01, 7.996652126312256e-01, 7.998000979423523e-01, 7.998003959655762e-01, 7.998701333999634e-01, 7.998810410499573e-01, 7.998810410499573e-01, 7.999290227890015e-01, 7.999290823936462e-01, 7.999571561813354e-01, 7.999576926231384e-01, 7.999576926231384e-01, 7.99974799156189e-01, 7.99974799156189e-01, 7.999849319458008e-01, 7.999849915504456e-01, 7.999902367591858e-01, 7.999910116195679e-01, 7.999910116195679e-01, 9.999326467514038e-01, 9.999999403953552e-01, 1.831531710922718e-02, 8.983287216324243e-07, -3.685214799986625e-09, 9.999533295631409e-01, 9.999997019767761e-01, 8.524190187454224e-01, 8.520535826683044e-01, 8.483332395553589e-01, 8.477510809898376e-01, 8.477510213851929e-01, 8.247452974319458e-01, 8.247376084327698e-01, 8.159941434860229e-01, 8.158310055732727e-01, 8.158310055732727e-01, 8.09286892414093e-01, 8.092865943908691e-01, 8.056480884552002e-01, 8.056390881538391e-01, 8.036829829216003e-01, 8.033768534660339e-01, 8.033768534660339e-01, 8.020339012145996e-01, 8.020334839820862e-01, 8.01236629486084e-01, 8.012217879295349e-01, 8.012217879295349e-01, 8.007347583770752e-01, 8.007347583770752e-01, 8.004423975944519e-01, 8.004416823387146e-01] autTunSig.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] PIWitTun.inTunPro.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] -PIWitTun.con.y=[8.00000011920929e-01, 1e+00, 9.999609589576721e-01, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1.648446023464203e-01, 1.236254721879958e-01, 3.142561614513397e-01, 4.573333263397217e-01, 5.262097120285034e-01, 5.647148489952087e-01, 6.117896437644958e-01, 6.439111232757568e-01, 6.807524561882019e-01, 6.999349594116211e-01, 7.197486162185669e-01, 7.397661209106445e-01, 7.471456527709961e-01, 7.595576047897339e-01, 7.655413746833801e-01, 7.728437781333923e-01, 7.778997421264648e-01, 7.820290327072144e-01, 7.864198088645935e-01, 7.882188558578491e-01, 7.908359169960022e-01, 7.923484444618225e-01, 7.939004898071289e-01, 7.954652905464172e-01, 7.959825992584229e-01, 7.969170808792114e-01, 7.973774671554565e-01, 7.979351282119751e-01, 7.983198165893555e-01, 7.986331582069397e-01, 7.989665865898132e-01, 7.99103856086731e-01, 7.993029952049255e-01, 7.99418032169342e-01, 7.995360493659973e-01, 7.996550798416138e-01, 7.996944189071655e-01, 7.997655272483826e-01, 7.998005151748657e-01, 7.998429536819458e-01, 7.998722195625305e-01, 7.998960614204407e-01, 7.999213933944702e-01, 7.999318242073059e-01, 7.999469637870789e-01, 7.999557256698608e-01, 7.999647259712219e-01, 7.999737858772278e-01, 7.999767661094666e-01, 7.999821901321411e-01, 7.999848127365112e-01, 7.999880313873291e-01, 7.999902963638306e-01, 7.999920845031738e-01, 7.999939918518066e-01, 7.397590875625607e-01, 6.985366940498355e-01, 8.519867062568665e-01, 9.984803795814514e-01, 1e+00, 9.058597087860107e-01, 8.645274043083191e-01, 8.640871644020081e-01, 8.542242050170898e-01, 8.445916175842285e-01, 8.350602388381958e-01, 8.254952430725098e-01, 8.229837417602539e-01, 8.181120157241821e-01, 8.151307702064514e-01, 8.120147585868835e-01, 8.088763952255249e-01, 8.079597353935242e-01, 8.061256408691406e-01, 8.052287101745605e-01, 8.041158318519592e-01, 8.033636808395386e-01, 8.027400374412537e-01, 8.020737767219543e-01, 8.018063306808472e-01, 8.014054298400879e-01, 8.011792302131653e-01, 8.009406328201294e-01, 8.006999492645264e-01, 8.006228804588318e-01, 8.004782795906067e-01, 8.004088401794434e-01, 8.003220558166504e-01] -PIWitTun.con.k=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.569699943065643e-01, 1.660253554582596e-01, 1.660253554582596e-01, 1.660253554582596e-01, 1.660253554582596e-01, 1.660253554582596e-01, 1.660253554582596e-01, 1.660253554582596e-01, 1.660253554582596e-01, 1.660253554582596e-01, 1.660253554582596e-01, 1.660253554582596e-01, 1.660253554582596e-01, 1.660253554582596e-01, 1.660253554582596e-01, 1.660253554582596e-01, 1.660253554582596e-01, 1.660253554582596e-01, 1.660253554582596e-01, 1.660253554582596e-01, 1.660253554582596e-01, 1.660253554582596e-01, 1.660253554582596e-01, 1.660253554582596e-01, 1.660253554582596e-01, 1.660253554582596e-01, 1.660253554582596e-01, 1.660253554582596e-01, 1.660253554582596e-01] -PIWitTun.con.Ti=[5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 7.617461395263672e+01, 8.034870910644531e+01, 8.034870910644531e+01, 8.034870910644531e+01, 8.034870910644531e+01, 8.034870910644531e+01, 8.034870910644531e+01, 8.034870910644531e+01, 8.034870910644531e+01, 8.034870910644531e+01, 8.034870910644531e+01, 8.034870910644531e+01, 8.034870910644531e+01, 8.034870910644531e+01, 8.034870910644531e+01, 8.034870910644531e+01, 8.034870910644531e+01, 8.034870910644531e+01, 8.034870910644531e+01, 8.034870910644531e+01, 8.034870910644531e+01, 8.034870910644531e+01, 8.034870910644531e+01, 8.034870910644531e+01, 8.034870910644531e+01, 8.034870910644531e+01, 8.034870910644531e+01, 8.034870910644531e+01, 8.034870910644531e+01] +PIWitTun.con.y=[8.00000011920929e-01, 1e+00, 9.999609589576721e-01, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1.651515811681747e-01, 1.237778514623641e-01, 3.149192929267883e-01, 4.585113823413849e-01, 5.274673104286194e-01, 5.657726526260376e-01, 6.126940250396729e-01, 6.44832968711853e-01, 6.816312670707703e-01, 7.00725257396698e-01, 7.204368114471436e-01, 7.403526902198792e-01, 7.476822733879089e-01, 7.600192427635193e-01, 7.659493088722229e-01, 7.731897234916687e-01, 7.781993746757507e-01, 7.822856307029724e-01, 7.866315245628357e-01, 7.884059548377991e-01, 7.909908890724182e-01, 7.924826741218567e-01, 7.940126657485962e-01, 7.955552339553833e-01, 7.960627675056458e-01, 7.969820499420166e-01, 7.974340319633484e-01, 7.979815602302551e-01, 7.983589768409729e-01, 7.986659407615662e-01, 7.989927530288696e-01, 7.991268038749695e-01, 7.993215918540955e-01, 7.994338870048523e-01, 7.995491027832031e-01, 7.996652126312256e-01, 7.997034788131714e-01, 7.997727394104004e-01, 7.998067736625671e-01, 7.998480200767517e-01, 7.998763918876648e-01, 7.998995184898376e-01, 7.999241352081299e-01, 7.999342083930969e-01, 7.999489307403564e-01, 7.999573945999146e-01, 7.99966037273407e-01, 7.99974799156189e-01, 7.999776601791382e-01, 7.999829053878784e-01, 7.999854683876038e-01, 7.999885678291321e-01, 7.99990713596344e-01, 7.999924421310425e-01, 7.999942898750305e-01, 7.395743727684018e-01, 6.981980204582218e-01, 8.737347722053528e-01, 1e+00, 1e+00, 9.098120927810669e-01, 8.685539960861206e-01, 8.670233488082886e-01, 8.563399910926819e-01, 8.463208675384521e-01, 8.365563750267029e-01, 8.267074227333069e-01, 8.239935636520386e-01, 8.188923597335815e-01, 8.157934546470642e-01, 8.125518560409546e-01, 8.092865943908691e-01, 8.083206415176392e-01, 8.06405246257782e-01, 8.054690957069397e-01, 8.043073415756226e-01, 8.035213351249695e-01, 8.028692603111267e-01, 8.021727800369263e-01, 8.018927574157715e-01, 8.014734387397766e-01, 8.012365698814392e-01, 8.009867072105408e-01, 8.007347583770752e-01, 8.00653874874115e-01, 8.005023002624512e-01, 8.004294633865356e-01, 8.003384470939636e-01] +PIWitTun.con.k=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.657104939222336e-01, 1.657104939222336e-01, 1.657104939222336e-01, 1.657104939222336e-01, 1.657104939222336e-01, 1.657104939222336e-01, 1.657104939222336e-01, 1.657104939222336e-01, 1.657104939222336e-01, 1.657104939222336e-01, 1.657104939222336e-01, 1.657104939222336e-01, 1.657104939222336e-01, 1.657104939222336e-01, 1.657104939222336e-01, 1.657104939222336e-01, 1.657104939222336e-01, 1.657104939222336e-01, 1.657104939222336e-01, 1.657104939222336e-01, 1.657104939222336e-01, 1.657104939222336e-01, 1.657104939222336e-01, 1.657104939222336e-01, 1.657104939222336e-01, 1.657104939222336e-01, 1.657104939222336e-01, 1.657104939222336e-01] +PIWitTun.con.Ti=[5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 8.034181213378906e+01, 8.034181213378906e+01, 8.034181213378906e+01, 8.034181213378906e+01, 8.034181213378906e+01, 8.034181213378906e+01, 8.034181213378906e+01, 8.034181213378906e+01, 8.034181213378906e+01, 8.034181213378906e+01, 8.034181213378906e+01, 8.034181213378906e+01, 8.034181213378906e+01, 8.034181213378906e+01, 8.034181213378906e+01, 8.034181213378906e+01, 8.034181213378906e+01, 8.034181213378906e+01, 8.034181213378906e+01, 8.034181213378906e+01, 8.034181213378906e+01, 8.034181213378906e+01, 8.034181213378906e+01, 8.034181213378906e+01, 8.034181213378906e+01, 8.034181213378906e+01, 8.034181213378906e+01, 8.034181213378906e+01] From dd8533582554458f6076191fb8865e65f45c8f82 Mon Sep 17 00:00:00 2001 From: SenHuang19 Date: Thu, 4 Apr 2024 16:13:31 -0400 Subject: [PATCH 174/214] improve model doc --- .../OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index efc380ef7b7..3a7ad04c219 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -315,7 +315,6 @@ Buildings.Controls.OBC.Utilities.PIDWithInputGains and inherits most of its configuration. However, through the parameter controllerType, the controller can only be configured as PI or PID controller. -In addition, the output of this block is limited from 0 to 1.

                                                                    Autotuning Process

                                                                    @@ -344,14 +343,14 @@ a request for performing autotuning will be ignored. The performance of the autotuning is affected by the parameters, including r, yRef, yLow, and deaBan.
                                                                    -The following procedure can be used for determining those parameters. +The following procedure can be used for determining the values of those parameters.

                                                                    1. The r should be adjusted so that the input difference of the relay controller, rel.yDif, is within the range from 0 to 1.
                                                                    2. -The yRef should be determined by dividing the set point by the sum of the minimum and the maximum values of the measurement. +The yRef can be determined by dividing the set point by the sum of the minimum and the maximum values of the measurement.
                                                                    3. The yLow should be adjusted to realize an asymmetric relay output, @@ -359,7 +358,7 @@ i.e., yHig - yRef ≠ yRef - yLow.
                                                                    4. When determining the deaBan, we first divide the maximum and the minimum deviations of measurement -from the setpoint by the r. +from the setpoint by the r, respectively. We then calculate the absolute values of the two deviations. After, we set the deaBan to be half of the smaller one among those absolute values.
                                                                    5. From 19ec42c2e5a44b528ca49e3606db20a43a8c6330 Mon Sep 17 00:00:00 2001 From: SenHuang19 Date: Thu, 4 Apr 2024 16:13:48 -0400 Subject: [PATCH 175/214] reference data update --- ...ples_WetCoilCounterFlowPControlAutoTuning.txt | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_HeatExchangers_Examples_WetCoilCounterFlowPControlAutoTuning.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_HeatExchangers_Examples_WetCoilCounterFlowPControlAutoTuning.txt index 448ffac439b..d02a6048996 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_HeatExchangers_Examples_WetCoilCounterFlowPControlAutoTuning.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_HeatExchangers_Examples_WetCoilCounterFlowPControlAutoTuning.txt @@ -1,4 +1,4 @@ -last-generated=2023-12-27 +last-generated=2024-04-04 statistics-initialization= { "nonlinear": "1", @@ -12,11 +12,11 @@ statistics-simulation= "numerical Jacobians": "0" } time=[0e+00, 3.6e+03] -hex.m1_flow=[1.000000014901161e-01, 6.713392212986946e-03, 4.609356820583344e-02, 3.077268041670322e-02, 5.122898612171412e-03, 2.778949588537216e-02, 5.239159613847733e-02, 6.33652368560433e-03, 1.500152610242367e-02, 6.478667259216309e-02, 9.460465051233768e-03, 8.108191192150116e-03, 4.577145352959633e-02, 1.090262643992901e-02, 4.833446443080901e-02, 2.644460834562778e-02, 1.988287083804607e-02, 1.793741248548031e-02, 9.604043327271938e-03, 7.234490942209959e-03, 6.201530341058969e-03, 5.479591898620129e-03, 4.936738405376673e-03, 4.522836301475763e-03, 4.201448522508144e-03, 3.947670105844736e-03, 3.744407324120402e-03, 3.577984170988202e-03, 3.44115262851119e-03, 3.328684251755476e-03, 3.236115910112858e-03, 3.159894375130534e-03, 3.097197273746133e-03, 3.045769408345222e-03, 3.033856628462672e-03, 3.226557746529579e-03, 3.65147995762527e-03, 4.34383237734437e-03, 5.378595553338528e-03, 6.846769712865353e-03, 8.799842558801174e-03, 1.121142879128456e-02, 1.403180323541164e-02, 1.713730581104755e-02, 2.041006647050381e-02, 2.383864112198353e-02, 2.748910151422024e-02, 3.148200735449791e-02, 3.59913595020771e-02, 4.122336953878403e-02, 4.743793234229088e-02, 5.375610291957855e-02, 5.856028944253922e-02, 6.272456794977188e-02, 6.661199033260348e-02, 7.030034810304644e-02, 7.38407447934151e-02, 7.727954536676407e-02, 8.065427839756012e-02, 8.399295061826706e-02, 8.731558918952942e-02, 9.063545614480972e-02, 9.395944327116013e-02, 9.728797525167465e-02, 9.944619238376617e-02, 9.991779923439026e-02, 9.998920559883118e-02, 9.696650505065918e-02, 8.005448430776596e-02, 6.739494204521179e-02, 5.819506570696831e-02, 5.137604847550392e-02, 4.645515605807304e-02, 4.299626499414444e-02, 4.060073569417e-02, 3.894951939582825e-02, 3.781068697571754e-02, 3.702318295836449e-02, 3.647713735699654e-02, 3.609766811132431e-02, 3.583354130387306e-02, 3.564943373203278e-02, 3.552097082138062e-02, 3.543130680918694e-02, 3.536869212985039e-02, 3.532492741942406e-02, 3.529435023665428e-02, 3.52729894220829e-02, 3.525804355740547e-02, 3.524759411811829e-02, 3.52403037250042e-02, 3.523522987961769e-02, 3.523170575499535e-02, 3.522920608520508e-02, 3.52274514734745e-02, 3.522622585296631e-02, 3.522537276148796e-02, 3.522477671504021e-02, 3.522435575723648e-02, 3.522404283285141e-02, 3.52238193154335e-02] +hex.m1_flow=[1.000000014901161e-01, 9.799395687878132e-03, 3.891929611563683e-02, 8.782419376075268e-03, 4.387084767222404e-02, 8.885885588824749e-03, 3.870976716279984e-02, 1.106910035014155e-02, 2.979452349245548e-02, 1.509686466306448e-02, 2.182269096374512e-02, 2.120344340801239e-02, 2.801814302802086e-02, 1.122172363102436e-02, 4.301923885941494e-02, 6.004841532558203e-03, 5.614002700895071e-03, 8.159424178302288e-03, 5.667627789080143e-03, 4.576686769723892e-03, 4.038866143673658e-03, 3.683111863210797e-03, 3.426569979637861e-03, 3.23454150930047e-03, 3.088341560214758e-03, 2.939891535788774e-03, 1.941183465532959e-03, 1.66546681430191e-03, 2.445777179673316e-03, 2.862658118829131e-03, 2.937313169240952e-03, 2.915012650191784e-03, 2.842600923031569e-03, 2.756057539954782e-03, 2.953205490484834e-03, 3.228597808629274e-03, 3.760595340281725e-03, 4.651996307075024e-03, 6.022818386554718e-03, 7.988806813955307e-03, 1.052603591233492e-02, 1.347976084798574e-02, 1.664512604475021e-02, 1.981046050786972e-02, 2.298108302056789e-02, 2.629274874925613e-02, 2.991392835974693e-02, 3.402096778154373e-02, 3.880844265222549e-02, 4.451768472790718e-02, 5.147689953446388e-02, 5.871041491627693e-02, 6.415104120969772e-02, 6.868905574083328e-02, 7.281769067049029e-02, 7.668887078762057e-02, 8.038751780986789e-02, 8.397778868675232e-02, 8.750604838132858e-02, 9.100411087274551e-02, 9.449149668216705e-02, 9.79309007525444e-02, 9.962310642004013e-02, 9.994619339704514e-02, 9.999304264783859e-02, 9.999915212392807e-02, 9.999989718198776e-02, 9.677965193986893e-02, 7.735773175954819e-02, 6.201204657554626e-02, 5.160892382264137e-02, 4.490157216787338e-02, 4.081471264362335e-02, 3.842665255069733e-02, 3.706067055463791e-02, 3.628231212496758e-02, 3.583642467856407e-02, 3.557925298810005e-02, 3.543030470609665e-02, 3.534381836652756e-02, 3.529346734285355e-02, 3.526416048407555e-02, 3.524712100625038e-02, 3.523718193173409e-02, 3.523139655590057e-02, 3.522808104753494e-02, 3.522620722651482e-02, 3.522505238652229e-02, 3.522432595491409e-02, 3.522387892007828e-02, 3.522362560033798e-02, 3.522349521517754e-02, 3.522342815995216e-02, 3.522340208292007e-02, 3.522339090704918e-02, 3.522337228059769e-02, 3.522335365414619e-02, 3.52233462035656e-02, 3.52233424782753e-02, 3.52233350276947e-02, 3.52233313024044e-02] hex.m2_flow=[3.429285809397697e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02] -con.u_s=[9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 9.979875683784485e-01, 9.949689507484436e-01, 9.919503331184387e-01, 9.889317750930786e-01, 9.859131574630737e-01, 9.828945398330688e-01, 9.79875922203064e-01, 9.768573045730591e-01, 9.738386869430542e-01, 9.708200693130493e-01, 9.678014516830444e-01, 9.647828340530396e-01, 9.617642164230347e-01, 9.587455987930298e-01, 9.557269811630249e-01, 9.5270836353302e-01, 9.496897459030151e-01, 9.496897459030151e-01, 9.496897459030151e-01, 9.496897459030151e-01, 9.496897459030151e-01, 9.496897459030151e-01, 9.496897459030151e-01, 9.496897459030151e-01, 9.496897459030151e-01, 9.496897459030151e-01, 9.496897459030151e-01, 9.496897459030151e-01, 9.496897459030151e-01, 9.496897459030151e-01, 9.496897459030151e-01, 9.496897459030151e-01, 9.496897459030151e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01, 9.664598107337952e-01] -con.u_m=[9.8322993516922e-01, 9.855209589004517e-01, 9.6319979429245e-01, 9.457401037216187e-01, 9.81812596321106e-01, 9.735061526298523e-01, 9.436869621276855e-01, 9.744679927825928e-01, 9.820005893707275e-01, 9.461206197738647e-01, 9.640190005302429e-01, 9.860496520996094e-01, 9.548030495643616e-01, 9.710031747817993e-01, 9.561476707458496e-01, 9.55560564994812e-01, 9.659904837608337e-01, 9.694740176200867e-01, 9.811996817588806e-01, 9.882063269615173e-01, 9.912822246551514e-01, 9.931224584579468e-01, 9.944230914115906e-01, 9.953948855400085e-01, 9.961523413658142e-01, 9.967615604400635e-01, 9.972444176673889e-01, 9.976418018341064e-01, 9.979872703552246e-01, 9.982870817184448e-01, 9.985473155975342e-01, 9.987732768058777e-01, 9.98969554901123e-01, 9.991400241851807e-01, 9.992809891700745e-01, 9.992926716804504e-01, 9.990577697753906e-01, 9.984680414199829e-01, 9.973715543746948e-01, 9.955587387084961e-01, 9.9273681640625e-01, 9.892358779907227e-01, 9.85308051109314e-01, 9.810731410980225e-01, 9.769466519355774e-01, 9.730902910232544e-01, 9.695562124252319e-01, 9.663258790969849e-01, 9.633578658103943e-01, 9.606278538703918e-01, 9.581409096717834e-01, 9.560858607292175e-01, 9.548903703689575e-01, 9.541952610015869e-01, 9.537325501441956e-01, 9.53414261341095e-01, 9.531989097595215e-01, 9.530594944953918e-01, 9.529775977134705e-01, 9.529406428337097e-01, 9.529399275779724e-01, 9.529691934585571e-01, 9.530240893363953e-01, 9.531012773513794e-01, 9.532369375228882e-01, 9.532346725463867e-01, 9.532278180122375e-01, 9.532841444015503e-01, 9.543644189834595e-01, 9.558640122413635e-01, 9.574835300445557e-01, 9.591550230979919e-01, 9.607468247413635e-01, 9.621375203132629e-01, 9.632695317268372e-01, 9.64145302772522e-01, 9.648001194000244e-01, 9.652790427207947e-01, 9.65624213218689e-01, 9.6587073802948e-01, 9.660455584526062e-01, 9.661689400672913e-01, 9.662559032440186e-01, 9.663169384002686e-01, 9.663597941398621e-01, 9.663898348808289e-01, 9.664108157157898e-01, 9.664255380630493e-01, 9.664358496665955e-01, 9.664430618286133e-01, 9.664481282234192e-01, 9.664516448974609e-01, 9.66454029083252e-01, 9.664557576179504e-01, 9.664569497108459e-01, 9.664578437805176e-01, 9.664584398269653e-01, 9.664588570594788e-01, 9.664590954780579e-01, 9.66459333896637e-01, 9.664595127105713e-01] -hex.Q1_flow=[0e+00, 6.163931274414062e+02, 1.685920532226562e+03, 1.286355712890625e+03, 6.356448364257812e+02, 1.345757202148438e+03, 1.5865185546875e+03, 6.912773437499998e+02, 1.0479150390625e+03, 1.800945068359375e+03, 8.169614868164062e+02, 7.583832397460938e+02, 1.584387451171875e+03, 8.572310791015625e+02, 1.644321899414062e+03, 1.275688598632812e+03, 1.13040087890625e+03, 1.0298603515625e+03, 7.199661254882812e+02, 5.71032470703125e+02, 4.921968078613281e+02, 4.400361633300781e+02, 4.016472778320312e+02, 3.720059509277344e+02, 3.483094177246094e+02, 3.288899841308594e+02, 3.133358154296875e+02, 3.007094116210937e+02, 2.897541809082031e+02, 2.802294921875e+02, 2.719425659179688e+02, 2.647298278808594e+02, 2.584513549804688e+02, 2.529862670898438e+02, 2.488420715332031e+02, 2.505237121582031e+02, 2.617873840332031e+02, 2.865640258789062e+02, 3.301451416015625e+02, 3.992220458984375e+02, 4.990628662109375e+02, 6.13083984375e+02, 7.334096069335938e+02, 8.53134765625e+02, 9.62010986328125e+02, 1.05761328125e+03, 1.1410361328125e+03, 1.214447143554688e+03, 1.279845458984375e+03, 1.3381904296875e+03, 1.389666870117188e+03, 1.4232587890625e+03, 1.438240112304688e+03, 1.448079345703125e+03, 1.455017700195312e+03, 1.459724243164062e+03, 1.46279931640625e+03, 1.464667724609375e+03, 1.465606689453125e+03, 1.465804321289062e+03, 1.465392333984375e+03, 1.464460693359375e+03, 1.463075927734375e+03, 1.461282470703125e+03, 1.456534790039062e+03, 1.457442993164062e+03, 1.457334350585938e+03, 1.443636474609375e+03, 1.407702270507812e+03, 1.3781669921875e+03, 1.3461162109375e+03, 1.313531616210938e+03, 1.283332763671875e+03, 1.257457275390625e+03, 1.23659814453125e+03, 1.220504760742188e+03, 1.208461181640625e+03, 1.199634033203125e+03, 1.19325634765625e+03, 1.188693969726562e+03, 1.185453247070312e+03, 1.183162109375e+03, 1.18154736328125e+03, 1.180412353515625e+03, 1.179615966796875e+03, 1.179057495117188e+03, 1.178666259765625e+03, 1.178392456054688e+03, 1.17820068359375e+03, 1.178066528320312e+03, 1.177972900390625e+03, 1.17790771484375e+03, 1.1778623046875e+03, 1.177830200195312e+03, 1.177807739257812e+03, 1.177791870117188e+03, 1.177780883789062e+03, 1.177773193359375e+03, 1.177767822265625e+03, 1.177763793945312e+03, 1.177760986328125e+03] -hex.Q2_flow=[0e+00, -6.455992431640625e+02, -1.465983642578125e+03, -1.454822143554688e+03, -7.045239868164062e+02, -1.184287963867188e+03, -1.614622924804688e+03, -8.266398925781245e+02, -9.277782592773438e+02, -1.688719116210938e+03, -1.019306396484375e+03, -7.1798974609375e+02, -1.505216064453125e+03, -9.567461547851562e+02, -1.518182495117188e+03, -1.34414501953125e+03, -1.157822387695312e+03, -1.067546020507812e+03, -7.602221069335938e+02, -5.872113647460938e+02, -5.026613464355469e+02, -4.473784484863281e+02, -4.070338134765625e+02, -3.761354675292969e+02, -3.515899658203125e+02, -3.315618896484375e+02, -3.161153259277344e+02, -3.031938781738281e+02, -2.919435729980468e+02, -2.821481628417969e+02, -2.736172485351562e+02, -2.661876525878906e+02, -2.597174987792969e+02, -2.540836639404297e+02, -2.495997009277344e+02, -2.5022998046875e+02, -2.598454895019531e+02, -2.821481323242188e+02, -3.220774841308594e+02, -3.880975952148438e+02, -4.84220703125e+02, -5.9577197265625e+02, -7.160732421875e+02, -8.350535278320312e+02, -9.438720092773438e+02, -1.039902587890625e+03, -1.123827026367188e+03, -1.197586181640625e+03, -1.26312255859375e+03, -1.32153125e+03, -1.373137817382812e+03, -1.410982788085938e+03, -1.430627197265625e+03, -1.442554321289062e+03, -1.450671264648438e+03, -1.45622412109375e+03, -1.459935668945312e+03, -1.462290405273438e+03, -1.463611938476562e+03, -1.464119384765625e+03, -1.463965087890625e+03, -1.463255493164062e+03, -1.462067626953125e+03, -1.460455932617188e+03, -1.456834594726562e+03, -1.457291137695312e+03, -1.45731201171875e+03, -1.450518676757812e+03, -1.422169067382812e+03, -1.392191162109375e+03, -1.359488403320312e+03, -1.325679565429688e+03, -1.293615844726562e+03, -1.2656376953125e+03, -1.242817016601562e+03, -1.225093383789062e+03, -1.211783935546875e+03, -1.202011840820312e+03, -1.194945190429688e+03, -1.189887573242188e+03, -1.186293701171875e+03, -1.183753051757812e+03, -1.181962158203125e+03, -1.180703002929688e+03, -1.179819580078125e+03, -1.179200073242188e+03, -1.178765869140625e+03, -1.178462158203125e+03, -1.178249633789062e+03, -1.178100708007812e+03, -1.177996704101562e+03, -1.17792431640625e+03, -1.1778740234375e+03, -1.177838623046875e+03, -1.177813598632812e+03, -1.177796020507812e+03, -1.17778369140625e+03, -1.177775146484375e+03, -1.177769287109375e+03, -1.177764892578125e+03, -1.17776171875e+03] -hex.QLat2_flow=[0e+00, -3.875767822265625e+02, -9.295764770507812e+02, -8.981924438476562e+02, -4.282272033691406e+02, -7.549815063476562e+02, -9.932260131835938e+02, -5.104996643066403e+02, -5.86702392578125e+02, -1.041918090820312e+03, -6.352566528320312e+02, -4.402300415039062e+02, -9.414437866210938e+02, -5.980038452148438e+02, -9.518583984375e+02, -8.404900512695312e+02, -7.295939331054688e+02, -6.718241577148438e+02, -4.671914978027344e+02, -3.461683654785156e+02, -2.861692810058594e+02, -2.458041839599609e+02, -2.161116638183594e+02, -1.932534942626953e+02, -1.750264892578125e+02, -1.601098022460938e+02, -1.488929443359375e+02, -1.393431854248047e+02, -1.310112915039062e+02, -1.237448654174805e+02, -1.174072875976562e+02, -1.118809814453125e+02, -1.070630493164062e+02, -1.028637390136719e+02, -9.950031280517578e+01, -9.987432098388672e+01, -1.068718338012695e+02, -1.231753005981445e+02, -1.522852935791016e+02, -2.013511352539062e+02, -2.715889282226562e+02, -3.518664245605469e+02, -4.380474243164062e+02, -5.20234619140625e+02, -5.935468139648438e+02, -6.566510620117188e+02, -7.105056762695312e+02, -7.567939453125e+02, -7.970682373046875e+02, -8.322509765625e+02, -8.627503051757812e+02, -8.845240478515625e+02, -8.955810546875e+02, -9.023052978515625e+02, -9.068853149414062e+02, -9.100164794921875e+02, -9.121106567382812e+02, -9.134429321289062e+02, -9.14195556640625e+02, -9.144918212890625e+02, -9.144169311523438e+02, -9.140297241210938e+02, -9.133732299804688e+02, -9.124771118164062e+02, -9.103837890625e+02, -9.106468505859375e+02, -9.106529541015625e+02, -9.064852294921875e+02, -8.899208984375e+02, -8.725841064453125e+02, -8.534724731445312e+02, -8.335143432617188e+02, -8.144086303710938e+02, -7.975930786132812e+02, -7.837744750976562e+02, -7.729769287109375e+02, -7.648302001953125e+02, -7.588275756835938e+02, -7.544755859375e+02, -7.513551025390625e+02, -7.491347045898438e+02, -7.475635375976562e+02, -7.464552612304688e+02, -7.456757202148438e+02, -7.451286010742188e+02, -7.447448120117188e+02, -7.444758911132812e+02, -7.442877197265625e+02, -7.441559448242188e+02, -7.440636596679688e+02, -7.439992065429688e+02, -7.43954345703125e+02, -7.439232177734375e+02, -7.439012451171875e+02, -7.438857421875e+02, -7.438748168945312e+02, -7.438672485351562e+02, -7.438619384765625e+02, -7.438582763671875e+02, -7.438555297851562e+02, -7.438535766601562e+02] -hex.QSen2_flow=[0e+00, -2.580224609375e+02, -5.364071044921875e+02, -5.566296997070312e+02, -2.762968139648438e+02, -4.293064880371094e+02, -6.213969116210938e+02, -3.161402587890624e+02, -3.410758056640625e+02, -6.468010864257812e+02, -3.840497436523438e+02, -2.777597045898438e+02, -5.637722778320312e+02, -3.587423400878906e+02, -5.663240356445314e+02, -5.036549682617188e+02, -4.282284851074219e+02, -3.957218933105469e+02, -2.930306091308594e+02, -2.410430145263672e+02, -2.164920806884766e+02, -2.015742645263672e+02, -1.909221496582031e+02, -1.828819580078125e+02, -1.765634613037109e+02, -1.714520874023438e+02, -1.672223815917969e+02, -1.638506927490234e+02, -1.609322814941406e+02, -1.584033050537109e+02, -1.562099609375e+02, -1.543066711425781e+02, -1.526544647216797e+02, -1.512199249267578e+02, -1.500993804931641e+02, -1.503556518554688e+02, -1.529736480712891e+02, -1.589728393554688e+02, -1.697921905517578e+02, -1.867464447021484e+02, -2.126317596435547e+02, -2.439055328369141e+02, -2.780258178710938e+02, -3.148188781738281e+02, -3.503252258300781e+02, -3.832515869140625e+02, -4.133212890625e+02, -4.40792236328125e+02, -4.660542602539062e+02, -4.892802734375e+02, -5.10387451171875e+02, -5.264588012695312e+02, -5.35046142578125e+02, -5.402490234375e+02, -5.437859497070312e+02, -5.462076416015625e+02, -5.478250122070312e+02, -5.488474731445312e+02, -5.494163208007812e+02, -5.496275634765625e+02, -5.495482177734375e+02, -5.492257690429688e+02, -5.486944580078125e+02, -5.479788208007812e+02, -5.464508056640625e+02, -5.46644287109375e+02, -5.466590576171875e+02, -5.440333862304688e+02, -5.322481689453125e+02, -5.196070556640625e+02, -5.060159606933594e+02, -4.921652221679688e+02, -4.792071533203125e+02, -4.680446166992188e+02, -4.590425720214844e+02, -4.521164855957031e+02, -4.469537353515625e+02, -4.431842651367188e+02, -4.404696350097656e+02, -4.385324401855469e+02, -4.371590576171875e+02, -4.361895141601562e+02, -4.355068359375e+02, -4.350272827148438e+02, -4.346909790039062e+02, -4.344552001953125e+02, -4.342900390625e+02, -4.341745300292969e+02, -4.340936584472656e+02, -4.340370483398438e+02, -4.339974975585938e+02, -4.33969970703125e+02, -4.339508361816406e+02, -4.339373779296875e+02, -4.339278869628906e+02, -4.339211730957031e+02, -4.3391650390625e+02, -4.339132385253906e+02, -4.339110107421875e+02, -4.339093627929688e+02, -4.339081420898438e+02] +con.u_s=[2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.975499877929688e+02, 2.966499938964844e+02, 2.9575e+02, 2.948500061035156e+02, 2.939500122070312e+02, 2.930499877929688e+02, 2.921499938964844e+02, 2.9125e+02, 2.903500061035156e+02, 2.894500122070312e+02, 2.885499877929688e+02, 2.876499938964844e+02, 2.8675e+02, 2.858500061035156e+02, 2.849500122070312e+02, 2.840499877929688e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02] +con.u_m=[2.931499938964844e+02, 2.881471862792969e+02, 2.874449157714844e+02, 2.895922546386719e+02, 2.859307556152344e+02, 2.909444885253906e+02, 2.849481811523438e+02, 2.915977783203125e+02, 2.847825317382812e+02, 2.913971862792969e+02, 2.853603820800781e+02, 2.905171508789062e+02, 2.840714416503906e+02, 2.913357543945312e+02, 2.841336364746094e+02, 2.921355285644531e+02, 2.951329040527344e+02, 2.947222595214844e+02, 2.957323913574219e+02, 2.964363098144531e+02, 2.968428039550781e+02, 2.971304321289062e+02, 2.973455200195312e+02, 2.975055541992188e+02, 2.976381225585938e+02, 2.977485656738281e+02, 2.979613647460938e+02, 2.982236938476562e+02, 2.9829931640625e+02, 2.982300415039062e+02, 2.9816162109375e+02, 2.981222839355469e+02, 2.981114196777344e+02, 2.981236267089844e+02, 2.981272583007812e+02, 2.980637512207031e+02, 2.979345703125e+02, 2.976768188476562e+02, 2.972134704589844e+02, 2.964283752441406e+02, 2.953130798339844e+02, 2.940563049316406e+02, 2.927080688476562e+02, 2.914476623535156e+02, 2.903215637207031e+02, 2.893143920898438e+02, 2.883910522460938e+02, 2.875262451171875e+02, 2.867100830078125e+02, 2.859460144042969e+02, 2.852444152832031e+02, 2.846677856445312e+02, 2.843463134765625e+02, 2.841746215820312e+02, 2.840704040527344e+02, 2.840051574707031e+02, 2.839661560058594e+02, 2.839459228515625e+02, 2.839396667480469e+02, 2.839442749023438e+02, 2.839576721191406e+02, 2.839786376953125e+02, 2.840272216796875e+02, 2.841066284179688e+02, 2.841926574707031e+02, 2.842044982910156e+02, 2.842045593261719e+02, 2.842225646972656e+02, 2.845959777832031e+02, 2.851943664550781e+02, 2.85876953125e+02, 2.865410461425781e+02, 2.870917663574219e+02, 2.874904174804688e+02, 2.877521667480469e+02, 2.879141540527344e+02, 2.880112915039062e+02, 2.880687561035156e+02, 2.881025085449219e+02, 2.881222839355469e+02, 2.881338195800781e+02, 2.881405639648438e+02, 2.881445007324219e+02, 2.881467895507812e+02, 2.881481323242188e+02, 2.881488952636719e+02, 2.881493530273438e+02, 2.881495971679688e+02, 2.881497497558594e+02, 2.881498718261719e+02, 2.881499328613281e+02, 2.881499633789062e+02, 2.881499633789062e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02] +hex.Q1_flow=[0e+00, 8.008525390625e+02, 1.574509155273438e+03, 7.560435791015625e+02, 1.6139091796875e+03, 7.964705810546875e+02, 1.478634643554688e+03, 9.298931884765634e+02, 1.29922314453125e+03, 1.09570947265625e+03, 1.126179321289062e+03, 1.253535888671875e+03, 1.26501123046875e+03, 9.08010986328125e+02, 1.503076538085935e+03, 6.344298706054688e+02, 5.470520629882812e+02, 5.866242065429688e+02, 4.641961975097656e+02, 4.020728149414062e+02, 3.61879638671875e+02, 3.32046142578125e+02, 3.09310791015625e+02, 2.924340209960938e+02, 2.785927429199219e+02, 2.663950805664062e+02, 2.367393951416016e+02, 2.092097015380859e+02, 2.073711090087891e+02, 2.178932952880859e+02, 2.259566040039062e+02, 2.300454406738281e+02, 2.305299682617188e+02, 2.284504089355469e+02, 2.304035491943359e+02, 2.388005065917969e+02, 2.5721826171875e+02, 2.926322631835938e+02, 3.538595581054688e+02, 4.518128662109375e+02, 5.78245849609375e+02, 7.088983154296875e+02, 8.364325561523438e+02, 9.468866577148438e+02, 1.039771362304688e+03, 1.11977001953125e+03, 1.191178955078125e+03, 1.256421875e+03, 1.316282592773438e+03, 1.370608154296875e+03, 1.418805541992188e+03, 1.449112060546875e+03, 1.46091357421875e+03, 1.46796923828125e+03, 1.472583251953125e+03, 1.475397338867188e+03, 1.476920654296875e+03, 1.477497314453125e+03, 1.477344970703125e+03, 1.476603881835938e+03, 1.4753671875e+03, 1.47342041015625e+03, 1.467206787109375e+03, 1.461028442382812e+03, 1.455847045898438e+03, 1.457301391601562e+03, 1.457313110351562e+03, 1.442697509765625e+03, 1.397792236328125e+03, 1.355113159179688e+03, 1.3103466796875e+03, 1.2693486328125e+03, 1.236982543945312e+03, 1.214332885742188e+03, 1.199745971679688e+03, 1.190793334960938e+03, 1.1854296875e+03, 1.182253540039062e+03, 1.180385375976562e+03, 1.179291259765625e+03, 1.178650756835938e+03, 1.178276977539062e+03, 1.178059204101562e+03, 1.177932006835938e+03, 1.17785791015625e+03, 1.1778154296875e+03, 1.17779150390625e+03, 1.177776733398438e+03, 1.177767456054688e+03, 1.17776171875e+03, 1.177758422851562e+03, 1.177756713867188e+03, 1.177755859375e+03, 1.177755493164062e+03, 1.17775537109375e+03, 1.177755126953125e+03, 1.177755004882812e+03, 1.1777548828125e+03, 1.177754760742188e+03, 1.177754760742188e+03, 1.177754638671875e+03] +hex.Q2_flow=[0e+00, -9.823609008789062e+02, -1.40096826171875e+03, -8.99636474609375e+02, -1.476581420898438e+03, -8.635550537109375e+02, -1.445267822265625e+03, -9.090473632812506e+02, -1.363038940429688e+03, -1.007336547851562e+03, -1.256213012695312e+03, -1.125922973632812e+03, -1.370031616210938e+03, -9.083820190429688e+02, -1.485094848632811e+03, -7.290025634765625e+02, -5.5139501953125e+02, -5.9283837890625e+02, -4.787092590332031e+02, -4.098740539550781e+02, -3.672816467285156e+02, -3.361414794921875e+02, -3.131868286132812e+02, -2.958232727050781e+02, -2.814447631835938e+02, -2.69132080078125e+02, -2.421444396972656e+02, -2.130933685302734e+02, -2.078668212890625e+02, -2.173064880371094e+02, -2.253132171630859e+02, -2.295929718017578e+02, -2.304246978759766e+02, -2.286504516601562e+02, -2.293876342773438e+02, -2.372536468505859e+02, -2.538388671875e+02, -2.860775146484375e+02, -3.422450256347656e+02, -4.36611083984375e+02, -5.593201293945312e+02, -6.901102905273438e+02, -8.1761181640625e+02, -9.289157104492188e+02, -1.022920166015625e+03, -1.103633422851562e+03, -1.175252563476562e+03, -1.24034521484375e+03, -1.299928833007812e+03, -1.354037841796875e+03, -1.402205688476562e+03, -1.436927612304688e+03, -1.453718505859375e+03, -1.463029052734375e+03, -1.468840576171875e+03, -1.472453247070312e+03, -1.474549438476562e+03, -1.475552490234375e+03, -1.47572998046875e+03, -1.475255615234375e+03, -1.474244262695312e+03, -1.472647216796875e+03, -1.468105102539062e+03, -1.462480834960938e+03, -1.457039184570312e+03, -1.4573095703125e+03, -1.457313598632812e+03, -1.450066284179688e+03, -1.415667602539062e+03, -1.373891235351562e+03, -1.327588989257812e+03, -1.2832734375e+03, -1.24695849609375e+03, -1.220857788085938e+03, -1.203771362304688e+03, -1.19319970703125e+03, -1.186848388671875e+03, -1.183085327148438e+03, -1.180871948242188e+03, -1.179575317382812e+03, -1.17881689453125e+03, -1.178373657226562e+03, -1.178115600585938e+03, -1.177964965820312e+03, -1.177877075195312e+03, -1.17782666015625e+03, -1.177798095703125e+03, -1.177780883789062e+03, -1.17777001953125e+03, -1.177763061523438e+03, -1.177759155273438e+03, -1.177757080078125e+03, -1.177756103515625e+03, -1.177755737304688e+03, -1.177755615234375e+03, -1.17775537109375e+03, -1.177755126953125e+03, -1.1777548828125e+03, -1.1777548828125e+03, -1.177754760742188e+03, -1.177754638671875e+03] +hex.QLat2_flow=[0e+00, -6.118687744140625e+02, -8.875252075195312e+02, -5.588204956054688e+02, -9.2909033203125e+02, -5.373814086914062e+02, -9.041666870117188e+02, -5.70971069335938e+02, -8.509703979492188e+02, -6.386790771484375e+02, -7.844966430664062e+02, -7.169783325195312e+02, -8.532002563476562e+02, -5.696207885742188e+02, -9.259057617187493e+02, -4.445836486816406e+02, -3.207699279785156e+02, -3.503029479980469e+02, -2.6897705078125e+02, -2.183191528320312e+02, -1.867727508544922e+02, -1.636006774902344e+02, -1.46836181640625e+02, -1.339968109130859e+02, -1.233225555419922e+02, -1.141922912597656e+02, -9.439002990722656e+01, -7.253954315185543e+01, -6.835106658935548e+01, -7.537386322021484e+01, -8.136091613769531e+01, -8.455787658691406e+01, -8.519281768798828e+01, -8.388404083251953e+01, -8.431562805175781e+01, -9.013148498535156e+01, -1.023006896972656e+02, -1.258992080688477e+02, -1.667765197753906e+02, -2.368231658935547e+02, -3.256931457519531e+02, -4.199110412597656e+02, -5.083401489257812e+02, -5.835704956054688e+02, -6.455577392578125e+02, -6.9759765625e+02, -7.42824462890625e+02, -7.831190185546875e+02, -8.1928662109375e+02, -8.515157470703125e+02, -8.796740112304688e+02, -8.994107055664062e+02, -9.087183227539062e+02, -9.138945922851562e+02, -9.17137451171875e+02, -9.191568603515625e+02, -9.20332763671875e+02, -9.209007568359375e+02, -9.210093383789062e+02, -9.207544555664062e+02, -9.20199462890625e+02, -9.193087158203125e+02, -9.166975708007812e+02, -9.135208129882812e+02, -9.104605712890625e+02, -9.106502685546875e+02, -9.106528930664062e+02, -9.06206298828125e+02, -8.860179443359375e+02, -8.616741943359375e+02, -8.3440576171875e+02, -8.079982299804688e+02, -7.86127197265625e+02, -7.702767944335938e+02, -7.598397827148438e+02, -7.53357177734375e+02, -7.494527587890625e+02, -7.471359252929688e+02, -7.4577197265625e+02, -7.449723510742188e+02, -7.445045776367188e+02, -7.442311401367188e+02, -7.440718994140625e+02, -7.439789428710938e+02, -7.439247436523438e+02, -7.438936157226562e+02, -7.438759765625e+02, -7.438654174804688e+02, -7.43858642578125e+02, -7.438543701171875e+02, -7.438519897460938e+02, -7.438507080078125e+02, -7.4385009765625e+02, -7.438499145507812e+02, -7.438497924804688e+02, -7.43849609375e+02, -7.438494873046875e+02, -7.43849365234375e+02, -7.438493041992188e+02, -7.438492431640625e+02, -7.438492431640625e+02] +hex.QSen2_flow=[0e+00, -3.704920959472656e+02, -5.134429931640625e+02, -3.408159790039062e+02, -5.474911499023438e+02, -3.261736450195312e+02, -5.411011962890625e+02, -3.380762939453127e+02, -5.120685424804688e+02, -3.686574401855469e+02, -4.717164001464844e+02, -4.089446105957031e+02, -5.168313598632812e+02, -3.387611999511719e+02, -5.59189086914062e+02, -2.844189147949219e+02, -2.306250762939453e+02, -2.425354156494141e+02, -2.097322235107422e+02, -1.915549163818359e+02, -1.805089111328125e+02, -1.725408020019531e+02, -1.663506317138672e+02, -1.618264770507812e+02, -1.581222076416016e+02, -1.549398040771484e+02, -1.477544097900391e+02, -1.405538330078125e+02, -1.395157470703125e+02, -1.419326171875e+02, -1.439523010253906e+02, -1.450350952148438e+02, -1.452318878173828e+02, -1.447664184570312e+02, -1.450720062255859e+02, -1.471221618652344e+02, -1.515381774902344e+02, -1.601783142089844e+02, -1.75468505859375e+02, -1.997879028320312e+02, -2.336269989013672e+02, -2.7019921875e+02, -3.092716369628906e+02, -3.453452453613281e+02, -3.773624572753906e+02, -4.060357666015625e+02, -4.324281311035156e+02, -4.572262573242188e+02, -4.806422119140625e+02, -5.025221557617188e+02, -5.225316772460938e+02, -5.375169067382812e+02, -5.45000244140625e+02, -5.491344604492188e+02, -5.517030639648438e+02, -5.5329638671875e+02, -5.542167358398438e+02, -5.546517333984375e+02, -5.54720703125e+02, -5.545011596679688e+02, -5.540447998046875e+02, -5.533385009765625e+02, -5.514075927734375e+02, -5.489600219726562e+02, -5.4657861328125e+02, -5.466593017578125e+02, -5.466607666015625e+02, -5.438599243164062e+02, -5.296497192382812e+02, -5.12217041015625e+02, -4.931831970214844e+02, -4.752752075195312e+02, -4.608312683105469e+02, -4.505809326171875e+02, -4.439315795898438e+02, -4.39842529296875e+02, -4.373955688476562e+02, -4.359494018554688e+02, -4.351000061035156e+02, -4.346029357910156e+02, -4.343122863769531e+02, -4.341425170898438e+02, -4.340436706542969e+02, -4.339859619140625e+02, -4.339523315429688e+02, -4.339329833984375e+02, -4.339220581054688e+02, -4.339154968261719e+02, -4.339113159179688e+02, -4.339086608886719e+02, -4.339071655273438e+02, -4.339063720703125e+02, -4.33906005859375e+02, -4.339058837890625e+02, -4.339058227539062e+02, -4.339057006835938e+02, -4.339056091308594e+02, -4.339055480957031e+02, -4.33905517578125e+02, -4.339054870605469e+02, -4.339054565429688e+02] From af7e4f0cc2660773fbd1e11dbb4c530be1217a49 Mon Sep 17 00:00:00 2001 From: SenHuang19 Date: Thu, 4 Apr 2024 16:30:19 -0400 Subject: [PATCH 176/214] cleaup --- .../PIDWithAutotuning/Relay/Controller.mo | 12 ++++---- .../Relay/ResponseProcess.mo | 2 +- .../DirectActingPIDWithFirstOrderAMIGO.mo | 4 +-- .../DirectActingPIWithFirstOrderAMIGO.mo | 30 +++++++------------ .../ReverseActingPIDWithFirstOrderAMIGO.mo | 2 +- 5 files changed, 20 insertions(+), 30 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo index b0f6f8e6d1a..874190389f8 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo @@ -71,13 +71,13 @@ protected Buildings.Controls.OBC.CDL.Reals.Subtract meaSetDif "Inputs difference, (measurement - setpoint)" annotation (Placement(transformation(extent={{-20,-4},{0,16}}))); - CDL.Reals.MultiplyByParameter gaiYDif(final k=1/r) + Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter gaiYDif(final k=1/r) "Gain to normalized control error by r" annotation (Placement(transformation(extent={{20,-4},{40,16}}))); - CDL.Reals.MultiplyByParameter gaiRevActErr(final k=1/r) if reverseActing + Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter gaiRevActErr(final k=1/r) if reverseActing "Gain to normalized control error by r" annotation (Placement(transformation(extent={{20,-40},{40,-20}}))); - CDL.Reals.MultiplyByParameter gaiDirActErr(final k=1/r) if not reverseActing + Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter gaiDirActErr(final k=1/r) if not reverseActing "Gain to normalized control error by r" annotation (Placement(transformation(extent={{20,-80},{40,-60}}))); equation @@ -102,12 +102,10 @@ equation connect(swi1.y, dirActErr.u1) annotation (Line(points={{-38,-40},{-30,-40},{-30, -64},{-22,-64}}, color={0,0,127})); connect(hys.y, swi.u2) annotation (Line(points={{82,-60},{90,-60},{90,34},{50, - 34},{50,50},{58,50}}, - color={255,0,255})); + 34},{50,50},{58,50}}, color={255,0,255})); connect(hys.y, yOn) annotation (Line(points={{82,-60},{120,-60}}, color={255,0,255})); connect(swi1.y, meaSetDif.u1) annotation (Line(points={{-38,-40},{-30,-40},{-30, - 12},{-22,12}}, - color={0,0,127})); + 12},{-22,12}}, color={0,0,127})); connect(u_s, meaSetDif.u2) annotation (Line(points={{-120,0},{-22,0}}, color={0,0,127})); connect(meaSetDif.y, gaiYDif.u) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo index 69b2c0ae28b..554be4a30ae 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/ResponseProcess.mo @@ -1,6 +1,6 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay; block ResponseProcess - "Calculate the lengths of the on andoff period, the half period ratio, and the times when the tuning starts and ends" + "Calculate the lengths of the on and off period, the half period ratio, and the times when the tuning starts and ends" parameter Real yHig(min=1E-6) "Higher value for the output"; parameter Real yLow(min=1E-6) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIDWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIDWithFirstOrderAMIGO.mo index 30a33e674ed..178945c3c30 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIDWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIDWithFirstOrderAMIGO.mo @@ -72,9 +72,9 @@ equation connect(derivative1.T, T.y) annotation (Line(points={{118,24},{110,24},{110,-56}, {32,-56}}, color={0,0,127})); connect(derivative1.y, sub1.u2) annotation (Line(points={{142,20},{150,20},{150, - 74},{158,74}}, color={0,0,127})); + 74},{158,74}}, color={0,0,127})); connect(sub1.y, PID.u_m) annotation (Line(points={{182,80},{190,80},{190,40},{ - -10,40},{-10,48}}, color={0,0,127})); + -10,40},{-10,48}}, color={0,0,127})); connect(sub2.u1, uniDel2.y) annotation (Line(points={{158,-4},{100,-4},{100,-20}, {82,-20}}, color={0,0,127})); connect(derivative2.y,sub2. u2) annotation (Line(points={{142,-60},{150,-60},{ diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIWithFirstOrderAMIGO.mo index ac317e8f17b..95741221556 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIWithFirstOrderAMIGO.mo @@ -65,36 +65,29 @@ equation connect(resSig.y, PI.trigger) annotation (Line(points={{-58,70},{-40,70},{-40, 40},{-16,40},{-16,48}}, color={255,0,255})); connect(SetPoint.y, PI.u_s) annotation (Line(points={{-58,10},{-50,10},{-50, - 60},{-22,60}}, - color={0,0,127})); + 60},{-22,60}}, color={0,0,127})); connect(uniDel1.y, sub1.u1) annotation (Line(points={{82,60},{110,60},{110,86}, {158,86}}, color={0,0,127})); connect(k.y, derivative1.k) annotation (Line(points={{82,20},{90,20},{90,28}, {118,28}},color={0,0,127})); connect(derivative1.T, T.y) annotation (Line(points={{118,24},{100,24},{100, - -56},{32,-56}}, - color={0,0,127})); + -56},{32,-56}}, color={0,0,127})); connect(derivative1.y, sub1.u2) annotation (Line(points={{142,20},{150,20},{ 150,74},{158,74}}, color={0,0,127})); connect(sub1.y, PI.u_m) annotation (Line(points={{182,80},{190,80},{190,40},{ - -10,40},{-10,48}}, - color={0,0,127})); + -10,40},{-10,48}}, color={0,0,127})); connect(sub2.u1, uniDel2.y) annotation (Line(points={{158,-4},{110,-4},{110, - -20},{82,-20}}, - color={0,0,127})); + -20},{82,-20}}, color={0,0,127})); connect(derivative2.y,sub2. u2) annotation (Line(points={{142,-60},{150,-60}, {150,-16},{158,-16}}, color={0,0,127})); connect(sub2.y, PIWitTun.u_m) annotation (Line(points={{182,-10},{190,-10},{ - 190,-40},{-10,-40},{-10,-32}}, - color={0,0,127})); + 190,-40},{-10,-40},{-10,-32}}, color={0,0,127})); connect(derivative2.T, T.y) annotation (Line(points={{118,-56},{32,-56}}, color={0,0,127})); connect(derivative1.u, sub1.u1) annotation (Line(points={{118,20},{110,20},{ - 110,86},{158,86}}, - color={0,0,127})); + 110,86},{158,86}}, color={0,0,127})); connect(derivative2.u, uniDel2.y) annotation (Line(points={{118,-60},{110,-60}, - {110,-20},{82,-20}}, - color={0,0,127})); + {110,-20},{82,-20}}, color={0,0,127})); connect(autTunSig.y, PIWitTun.triTun) annotation (Line(points={{-58,-50},{-4,-50},{-4,-32}}, color={255,0,255})); connect(k.y, derivative2.k) annotation (Line(points={{82,20},{90,20},{90,-52}, {118,-52}},color={0,0,127})); @@ -103,14 +96,13 @@ equation connect(PI.y, sub3.u2) annotation (Line(points={{2,60},{18,60}}, color={0,0,127})); connect(sub3.y, uniDel1.u) annotation (Line(points={{42,66},{50,66},{50,60},{58,60}}, - color={0,0,127})); + color={0,0,127})); connect(PIWitTun.y, sub4.u2) annotation (Line(points={{2,-20},{18,-20}}, - color={0,0,127})); + color={0,0,127})); connect(uniDel2.u, sub4.y) annotation (Line(points={{58,-20},{50,-20},{50,-14}, - {42,-14}}, color={0,0,127})); + {42,-14}}, color={0,0,127})); connect(sub4.u1, const.y) annotation (Line(points={{18,-8},{10,-8},{10,120},{ - -18,120}}, - color={0,0,127})); + -18,120}}, color={0,0,127})); connect(resSig.y, PIWitTun.triRes) annotation (Line(points={{-58,70},{-40,70}, {-40,-40},{-16,-40},{-16,-32}}, color={255,0,255})); connect(SetPoint.y, PIWitTun.u_s) annotation (Line(points={{-58,10},{-50,10}, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/ReverseActingPIDWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/ReverseActingPIDWithFirstOrderAMIGO.mo index ee7f90fbfce..9c28f5a449b 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/ReverseActingPIDWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/ReverseActingPIDWithFirstOrderAMIGO.mo @@ -118,7 +118,7 @@ On the contrary, PID has a poor control performance, i.e., the value of the controlled variable oscillates.

                                                                      -The example also shows that the autotunning process can be retriggered +The example also shows that the autotunning process can be re-triggered when the input triTun becomes true.

                                                                      ", From b6fd68ca76cc13d278fe95399e32428fe33e806a Mon Sep 17 00:00:00 2001 From: SenHuang19 Date: Mon, 8 Apr 2024 22:38:53 -0400 Subject: [PATCH 177/214] improve the model doc --- .../PIDWithAutotuning/FirstOrderAMIGO.mo | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index 3a7ad04c219..b4d044a44bd 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -18,14 +18,21 @@ block FirstOrderAMIGO parameter Real r( min=100*Buildings.Controls.OBC.CDL.Constants.eps)=1 "Typical range of control error, used for scaling the control error"; - parameter Real yHig = 1 + parameter Real yHig( + final min = 0, + final max = 1) = 1 "Higher value for the relay output"; - parameter Real yLow + parameter Real yLow( + final min = 0, + final max = 1) "Lower value for the relay output"; - parameter Real deaBan(min=1E-6) + parameter Real deaBan( + final min=1E-6) "Deadband for holding the output value"; parameter Real yRef - "Reference output for the tuning process"; + "Reference output for the tuning process, + It should be greater than the lower value of the relay output + and less than the higher value of the relay output"; parameter Real yMax = 1 "Upper limit of output" annotation (Dialog(group="Limits")); @@ -340,14 +347,15 @@ a request for performing autotuning will be ignored.

                                                                      Guidance for settings the parameters

                                                                      -The performance of the autotuning is affected by the parameters, including r, -yRef, yLow, and deaBan. +The performance of the autotuning is affected by the parameters, including the typical range of control error, r, +the reference output for the tuning process, yRef, the lower value for the relay output, yLow, +and the deadband, deaBan.
                                                                      The following procedure can be used for determining the values of those parameters.

                                                                      1. -The r should be adjusted so that the input difference of the relay controller, rel.yDif, is within the range from 0 to 1. +The r should be adjusted so that the input difference of the relay controller (measurement - setpoint), rel.yDif, is within the range from 0 to 1.
                                                                      2. The yRef can be determined by dividing the set point by the sum of the minimum and the maximum values of the measurement. From 5b7ea914ca25ed49a8b5d0e84dd6a009723d7b8f Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Tue, 9 Apr 2024 11:54:01 -0700 Subject: [PATCH 178/214] updated comments [ci skip] --- .../PIDWithAutotuning/FirstOrderAMIGO.mo | 127 ++++++++++-------- 1 file changed, 68 insertions(+), 59 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index b4d044a44bd..5ea1b417730 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -1,8 +1,8 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning; block FirstOrderAMIGO "Autotuning PID controller with an AMIGO tuner that employs a first-order time delayed system model" - parameter Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController controllerType=Buildings.Controls.OBC.Utilities.PIDWithAutotuning. - Types.SimpleController.PI + parameter Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController controllerType= + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PI "Type of controller"; parameter Real k_start( min=100*Buildings.Controls.OBC.CDL.Constants.eps)=1 @@ -30,9 +30,7 @@ block FirstOrderAMIGO final min=1E-6) "Deadband for holding the output value"; parameter Real yRef - "Reference output for the tuning process, - It should be greater than the lower value of the relay output - and less than the higher value of the relay output"; + "Reference output for the tuning process. It should be greater than the lower and less than the higher value of the relay output"; parameter Real yMax = 1 "Upper limit of output" annotation (Dialog(group="Limits")); @@ -89,7 +87,8 @@ block FirstOrderAMIGO final xi_start=xi_start, final yd_start=yd_start, final reverseActing=reverseActing, - final y_reset=xi_start) "PI or P controller with the gains as inputs" + final y_reset=xi_start) + "PI or P controller with the gains as inputs" annotation (Placement(transformation(extent={{-50,-50},{-30,-30}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PID PIDPar if with_D "Autotuner of gains for a PID controller" @@ -104,7 +103,7 @@ block FirstOrderAMIGO final deaBan=deaBan, final reverseActing=reverseActing) "Relay controller" - annotation (Placement(transformation(extent={{-50,20},{-30,40}}))); + annotation (Placement(transformation(extent={{-60,20},{-40,40}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.ResponseProcess resPro( final yHig=yHig - yRef, final yLow=yRef - yLow) @@ -113,13 +112,16 @@ block FirstOrderAMIGO Buildings.Controls.OBC.CDL.Reals.Switch swi "Switch between a PID controller and a relay controller" annotation (Placement(transformation(extent={{140,-10},{160,10}}))); - Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samk(final y_start=k_start) + Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samk( + final y_start=k_start) "Recording the proportional control gain" annotation (Placement(transformation(extent={{-100,-10},{-80,-30}}))); - Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samTi(final y_start=Ti_start) + Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samTi( + final y_start=Ti_start) "Recording the integral time" annotation (Placement(transformation(extent={{-120,-40},{-100,-60}}))); - Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samTd(final y_start=Td_start) if with_D + Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samTd( + final y_start=Td_start) if with_D "Recording the derivative time" annotation (Placement(transformation(extent={{-140,-70},{-120,-90}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.ControlProcessModel @@ -137,12 +139,13 @@ block FirstOrderAMIGO annotation (Placement(transformation(extent={{120,-72},{140,-52}}))); Buildings.Controls.OBC.CDL.Utilities.Assert assMes1( message="*** Warning: An autotuning is ongoing and the new autotuning request is ignored.") - "Error message when an autotuning tuning is ongoing while a new autotuning request is received" + "Warning message when an autotuning tuning is ongoing while a new autotuning request is received" annotation (Placement(transformation(extent={{148,-72},{168,-52}}))); Buildings.Controls.OBC.CDL.Logical.Edge edgReq "True only when a new request is received" annotation (Placement(transformation(extent={{80,-80},{100,-60}}))); - Buildings.Controls.OBC.CDL.Logical.TrueDelay tunStaDel(final delayTime=0.001) + Buildings.Controls.OBC.CDL.Logical.TrueDelay tunStaDel( + final delayTime=0.001) "A small time delay for the autotuning start time to avoid false alerts" annotation (Placement(transformation(extent={{80,-40},{100,-20}}))); @@ -159,9 +162,8 @@ protected else Buildings.Controls.OBC.CDL.Types.SimpleController.PID "Type of controller"; Buildings.Controls.OBC.CDL.Utilities.Assert assMes2( - message="*** Warning: the relay output needs to be asymmetric. - Check the value of yHig, yLow and yRef.") - "Error message when the relay output is symmetric" + message="*** Warning: the relay output needs to be asymmetric. Check the value of yHig, yLow and yRef.") + "Warning message when the relay output is symmetric" annotation (Placement(transformation(extent={{60,140},{80,160}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant con1(final k=yHig) "Higher value for the relay output" @@ -204,17 +206,17 @@ equation {-98,-50}}, color={0,0,127})); connect(samTd.y,con. Td) annotation (Line(points={{-118,-80},{-60,-80},{-60,-44}, {-52,-44}},color={0,0,127})); - connect(resPro.on, rel.yOn) annotation (Line(points={{-2,42},{-10,42},{-10,24}, - {-28,24}},color={255,0,255})); + connect(resPro.on, rel.yOn) annotation (Line(points={{-2,40},{-10,40},{-10,24}, + {-38,24}},color={255,0,255})); connect(modTim.y, resPro.tim) annotation (Line(points={{-38,70},{-26,70},{-26, - 48},{-2,48}},color={0,0,127})); - connect(resPro.tau, conProMod.tau) annotation (Line(points={{22,42},{34,42},{ - 34,62},{38,62}}, color={0,0,127})); + 46},{-2,46}},color={0,0,127})); + connect(resPro.tau, conProMod.tau) annotation (Line(points={{22,40},{34,40},{34, + 62},{38,62}}, color={0,0,127})); connect(conProMod.tOff, resPro.tOff) annotation (Line(points={{38,66},{30,66}, - {30,46},{22,46}},color={0,0,127})); - connect(resPro.tOn, conProMod.tOn) annotation (Line(points={{22,50},{26,50},{ - 26,74},{38,74}}, color={0,0,127})); - connect(rel.yDif, conProMod.u) annotation (Line(points={{-28,30},{-14,30},{-14, + {30,44},{22,44}},color={0,0,127})); + connect(resPro.tOn, conProMod.tOn) annotation (Line(points={{22,48},{26,48},{26, + 74},{38,74}}, color={0,0,127})); + connect(rel.yDif, conProMod.u) annotation (Line(points={{-38,30},{-14,30},{-14, 78},{38,78}}, color={0,0,127})); connect(PIDPar.kp, conProMod.k) annotation (Line(points={{78,36},{66,36},{66,76}, {62,76}}, color={0,0,127})); @@ -236,15 +238,15 @@ equation -148,96},{-148,-20},{-102,-20}}, color={0,0,127})); connect(PIPar.Ti, samTi.u) annotation (Line(points={{102,64},{112,64},{112,98}, {-150,98},{-150,-50},{-122,-50}}, color={0,0,127})); - connect(resPro.triEnd, conProMod.triEnd) annotation (Line(points={{22,34},{56, - 34},{56,58}}, color={255,0,255})); - connect(resPro.triSta, conProMod.triSta) annotation (Line(points={{22,38},{44, - 38},{44,58}}, color={255,0,255})); - connect(resPro.triEnd, samTi.trigger) annotation (Line(points={{22,34},{30,34}, + connect(resPro.triEnd, conProMod.triEnd) annotation (Line(points={{22,32},{56, + 32},{56,58}}, color={255,0,255})); + connect(resPro.triSta, conProMod.triSta) annotation (Line(points={{22,36},{44, + 36},{44,58}}, color={255,0,255})); + connect(resPro.triEnd, samTi.trigger) annotation (Line(points={{22,32},{30,32}, {30,10},{-110,10},{-110,-38}}, color={255,0,255})); - connect(resPro.triEnd, samk.trigger) annotation (Line(points={{22,34},{30,34}, + connect(resPro.triEnd, samk.trigger) annotation (Line(points={{22,32},{30,32}, {30,10},{-90,10},{-90,-8}}, color={255,0,255})); - connect(resPro.triEnd, samTd.trigger) annotation (Line(points={{22,34},{30,34}, + connect(resPro.triEnd, samTd.trigger) annotation (Line(points={{22,32},{30,32}, {30,10},{-130,10},{-130,-68}}, color={255,0,255})); connect(PIDPar.Td, samTd.u) annotation (Line(points={{102,23},{114,23},{114,94}, {-146,94},{-146,-80},{-142,-80}}, color={0,0,127})); @@ -257,12 +259,12 @@ equation {138,0}}, color={255,0,255})); connect(inTunPro.u, triTun) annotation (Line(points={{18,-20},{-6,-20},{-6,-70}, {60,-70},{60,-120}}, color={255,0,255})); - connect(inTunPro.clr, resPro.triEnd) annotation (Line(points={{18,-26},{12, - -26},{12,10},{30,10},{30,34},{22,34}}, color={255,0,255})); - connect(rel.trigger, triTun) annotation (Line(points={{-46,18},{-46,0},{-6,0}, + connect(inTunPro.clr, resPro.triEnd) annotation (Line(points={{18,-26},{10,-26}, + {10,10},{30,10},{30,32},{22,32}}, color={255,0,255})); + connect(rel.trigger, triTun) annotation (Line(points={{-56,18},{-56,0},{-6,0}, {-6,-70},{60,-70},{60,-120}}, color={255,0,255})); - connect(resPro.trigger, triTun) annotation (Line(points={{-2,36},{-6,36},{-6, - -70},{60,-70},{60,-120}}, color={255,0,255})); + connect(resPro.trigger, triTun) annotation (Line(points={{-2,34},{-6,34},{-6,-70}, + {60,-70},{60,-120}}, color={255,0,255})); connect(nand.y, assMes1.u) annotation (Line(points={{142,-62},{146,-62}}, color={255,0,255})); connect(nand.u2, edgReq.y) @@ -273,17 +275,17 @@ equation -62},{118,-62}}, color={255,0,255})); connect(tunStaDel.u, inTunPro.y) annotation (Line(points={{78,-30},{50,-30},{50, -20},{42,-20}}, color={255,0,255})); - connect(con1.y, sub.u1) annotation (Line(points={{-118,180},{-108,180},{-108,176}, + connect(con1.y, sub.u1) annotation (Line(points={{-118,180},{-110,180},{-110,176}, {-102,176}}, color={0,0,127})); - connect(con2.y, sub.u2) annotation (Line(points={{-138,150},{-108,150},{-108,164}, + connect(con2.y, sub.u2) annotation (Line(points={{-138,150},{-110,150},{-110,164}, {-102,164}}, color={0,0,127})); - connect(sub1.u1, con2.y) annotation (Line(points={{-102,136},{-108,136},{-108, + connect(sub1.u1, con2.y) annotation (Line(points={{-102,136},{-110,136},{-110, 150},{-138,150}}, color={0,0,127})); - connect(sub1.u2, con3.y) annotation (Line(points={{-102,124},{-108,124},{-108, + connect(sub1.u2, con3.y) annotation (Line(points={{-102,124},{-110,124},{-110, 120},{-118,120}}, color={0,0,127})); - connect(sub.y, sub2.u1) annotation (Line(points={{-78,170},{-68,170},{-68,156}, + connect(sub.y, sub2.u1) annotation (Line(points={{-78,170},{-70,170},{-70,156}, {-62,156}}, color={0,0,127})); - connect(sub1.y, sub2.u2) annotation (Line(points={{-78,130},{-68,130},{-68,144}, + connect(sub1.y, sub2.u2) annotation (Line(points={{-78,130},{-70,130},{-70,144}, {-62,144}}, color={0,0,127})); connect(abs1.u, sub2.y) annotation (Line(points={{-22,150},{-38,150}}, color={0,0,127})); @@ -293,17 +295,18 @@ equation annotation (Line(points={{42,150},{58,150}}, color={255,0,255})); connect(con4.y, gre.u2) annotation (Line(points={{2,120},{10,120},{10,142},{18, 142}}, color={0,0,127})); - connect(rel.y, yRel.u) annotation (Line(points={{-28,36},{-20,36},{-20,86},{20, + connect(rel.y, yRel.u) annotation (Line(points={{-38,36},{-20,36},{-20,86},{20, 86},{20,120},{38,120}}, color={0,0,127})); connect(yRel.y, addPar.u) annotation (Line(points={{62,120},{78,120}}, color={0,0,127})); - connect(addPar.y, swi.u1) annotation (Line(points={{102,120},{128,120},{128,8}, + connect(addPar.y, swi.u1) annotation (Line(points={{102,120},{130,120},{130,8}, {138,8}}, color={0,0,127})); - connect(rel.u_m, u_m) annotation (Line(points={{-40,18},{-40,-14},{-20,-14},{ - -20,-120}}, color={0,0,127})); - connect(rel.u_s, u_s) annotation (Line(points={{-52,30},{-162,30},{-162,0},{ - -200,0}}, color={0,0,127})); - annotation (Documentation(info=" + connect(rel.u_m, u_m) annotation (Line(points={{-50,18},{-50,-14},{-20,-14},{-20, + -120}}, color={0,0,127})); + connect(rel.u_s, u_s) annotation (Line(points={{-62,30},{-160,30},{-160,0},{-200, + 0}}, color={0,0,127})); + +annotation (Documentation(info="

                                                                        This block implements a rule-based PID tuning method.

                                                                        @@ -327,7 +330,8 @@ PID controller.

                                                                        Autotuning Process

                                                                        To use this block, place it in an control loop as any other PID controller. -Before the PID tuning process starts, this block is equivalent to +Before the PID tuning process starts, this block is equivalent to + Buildings.Controls.OBC.Utilities.PIDWithInputGains. This block starts the PID tuning process when a request for performing autotuning occurs, i.e., when the value of the boolean input signal triTun changes from @@ -336,7 +340,8 @@ During the autotuning process, the output of the block changes into that of a re (see Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Controller). The PID tuning process ends automatically -(see details in +(see details in + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.BaseClasses.Relay.TunMonitor), at which point this block turns back to a PID controller but with tuned PID parameters.

                                                                        @@ -347,31 +352,35 @@ a request for performing autotuning will be ignored.

                                                                        Guidance for settings the parameters

                                                                        -The performance of the autotuning is affected by the parameters, including the typical range of control error, r, -the reference output for the tuning process, yRef, the lower value for the relay output, yLow, -and the deadband, deaBan. +The performance of the autotuning is affected by the parameters, including the +typical range of control error, r, +the reference output for the tuning process, yRef, the lower value for +the relay output, yLow, and the deadband, deaBan.
                                                                        The following procedure can be used for determining the values of those parameters.

                                                                        1. -The r should be adjusted so that the input difference of the relay controller (measurement - setpoint), rel.yDif, is within the range from 0 to 1. +The r should be adjusted so that the output of the relay controller, +rel.yDif, is within the range from 0 to 1.
                                                                        2. -The yRef can be determined by dividing the set point by the sum of the minimum and the maximum values of the measurement. +The yRef can be determined by dividing the set point by the sum of the +minimum and the maximum values of the measurement.
                                                                        3. The yLow should be adjusted to realize an asymmetric relay output, i.e., yHig - yRef ≠ yRef - yLow.
                                                                        4. -When determining the deaBan, we first divide the maximum and the minimum deviations of measurement +When determining the deaBan, we first divide the maximum and the +minimum deviations of measurement from the setpoint by the r, respectively. We then calculate the absolute values of the two deviations. -After, we set the deaBan to be half of the smaller one among those absolute values. +After, we set the deaBan to be half of the smaller one among those +absolute values.
                                                                        -

                                                                        References

                                                                        J. Berner (2017). From baea7eed84b968ed39f4b3a0d64aaa602d555dff Mon Sep 17 00:00:00 2001 From: SenHuang19 Date: Fri, 19 Apr 2024 15:15:53 -0400 Subject: [PATCH 179/214] update model doc --- .../OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo | 10 +++++++++- .../Utilities/PIDWithAutotuning/Relay/Controller.mo | 6 +++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index 5ea1b417730..a2da49532a1 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -28,7 +28,7 @@ block FirstOrderAMIGO "Lower value for the relay output"; parameter Real deaBan( final min=1E-6) - "Deadband for holding the output value"; + "Deadband for holding the relay output"; parameter Real yRef "Reference output for the tuning process. It should be greater than the lower and less than the higher value of the relay output"; parameter Real yMax = 1 @@ -361,6 +361,14 @@ The following procedure can be used for determining the values of those paramete

                                                                        1. +Determine the tuning period during which the setpoint is constant. +Make sure the system is somewhat steady before the tuning period starts. +
                                                                        2. +
                                                                        3. +Perform the simulation without enabling autotuning and record the maximum and the +minimum values of measurement during the tuning period. +
                                                                        4. +
                                                                        5. The r should be adjusted so that the output of the relay controller, rel.yDif, is within the range from 0 to 1.
                                                                        6. diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo index 874190389f8..6ca070618df 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo @@ -11,7 +11,7 @@ block Controller final max=yHig) "Lower value for the relay output"; parameter Real deaBan(min=1E-6) - "Deadband for holding the output value"; + "Deadband for holding the relay output"; parameter Boolean reverseActing=true "Set to true for reverse acting, or false for direct acting control action"; @@ -153,8 +153,8 @@ annotation (defaultComponentName = "relCon", fillPattern=FillPattern.Solid, fillColor={175,175,175}, textString="Relay"), - Line(points={{-70,24},{-34,24},{-34,58},{38,58},{38,24},{66,24}}, color - ={28,108,200})}), Diagram( + Line(points={{-70,24},{-34,24},{-34,58},{38,58},{38,24},{66,24}}, color= + {28,108,200})}), Diagram( coordinateSystem(preserveAspectRatio=false)), Documentation(info="

                                                                          From ba859c665683cff4120b0e90f0efe14d842e26cd Mon Sep 17 00:00:00 2001 From: SenHuang19 Date: Sun, 21 Apr 2024 22:15:02 -0400 Subject: [PATCH 180/214] improve the model doc --- .../OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index a2da49532a1..2bb72acc625 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -361,12 +361,8 @@ The following procedure can be used for determining the values of those paramete

                                                                          1. -Determine the tuning period during which the setpoint is constant. -Make sure the system is somewhat steady before the tuning period starts. -
                                                                          2. -
                                                                          3. -Perform the simulation without enabling autotuning and record the maximum and the -minimum values of measurement during the tuning period. +Perform the simulation without enabling autotuning and with a constant set point. +Record the maximum and the minimum values of measurement after the system is somewhat steady.
                                                                          4. The r should be adjusted so that the output of the relay controller, From 518629ea48f47020e9c83ec7fd09b8812e9d1a0d Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Thu, 2 May 2024 16:03:13 -0700 Subject: [PATCH 181/214] improved the text --- .../OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index 2bb72acc625..c328467262a 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -356,13 +356,12 @@ The performance of the autotuning is affected by the parameters, including the typical range of control error, r, the reference output for the tuning process, yRef, the lower value for the relay output, yLow, and the deadband, deaBan. -
                                                                            The following procedure can be used for determining the values of those parameters.

                                                                            1. Perform the simulation without enabling autotuning and with a constant set point. -Record the maximum and the minimum values of measurement after the system is somewhat steady. +Record the maximum and the minimum values of measurement after the system is stable.
                                                                            2. The r should be adjusted so that the output of the relay controller, From 8f20f3243b9c0d7fde925643577e429003e58614 Mon Sep 17 00:00:00 2001 From: SenHuang19 Date: Fri, 14 Jun 2024 11:32:28 -0400 Subject: [PATCH 182/214] add exception handling --- .../PIDWithAutotuning/FirstOrderAMIGO.mo | 159 ++++++++++++------ .../BaseClasses/TimeConstantDelay.mo | 44 ++++- .../ControlProcessModel.mo | 56 ++++-- 3 files changed, 179 insertions(+), 80 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index c328467262a..dbdcdecd11e 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -15,6 +15,8 @@ block FirstOrderAMIGO "Start value of the time constant of derivative block" annotation (Dialog(group="Initial control gains, used prior to first tuning", enable=controllerType == Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PID)); + parameter Real u_s_start + "Start value of the set point"; parameter Real r( min=100*Buildings.Controls.OBC.CDL.Constants.eps)=1 "Typical range of control error, used for scaling the control error"; @@ -30,7 +32,8 @@ block FirstOrderAMIGO final min=1E-6) "Deadband for holding the relay output"; parameter Real yRef - "Reference output for the tuning process. It should be greater than the lower and less than the higher value of the relay output"; + "Reference output for the tuning process. It should be greater than the + lower and less than the higher value of the relay output"; parameter Real yMax = 1 "Upper limit of output" annotation (Dialog(group="Limits")); @@ -52,9 +55,11 @@ block FirstOrderAMIGO "Initial value of derivative output" annotation (Dialog(tab="Advanced",group="Initialization",enable=controllerType == Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PID)); parameter Boolean reverseActing=true - "Set to true for reverse acting, or false for direct acting control action"; + "Set to true for reverse acting, or false + for direct acting control action"; parameter Real y_reset=xi_start - "Value to which the controller output is reset if the boolean trigger has a rising edge" + "Value to which the controller output is reset + if the boolean trigger has a rising edge" annotation (Dialog(group="Integrator reset")); Buildings.Controls.OBC.CDL.Interfaces.RealInput u_s "Connector of setpoint input signal" @@ -107,14 +112,14 @@ block FirstOrderAMIGO Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.ResponseProcess resPro( final yHig=yHig - yRef, final yLow=yRef - yLow) - "Identify the on and off period length, the half period ratio, and the moments when the tuning starts and ends" + "Identify the on and off period length, the half period ratio, + and the moments when the tuning starts and ends" annotation (Placement(transformation(extent={{0,30},{20,50}}))); Buildings.Controls.OBC.CDL.Reals.Switch swi "Switch between a PID controller and a relay controller" annotation (Placement(transformation(extent={{140,-10},{160,10}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samk( - final y_start=k_start) - "Recording the proportional control gain" + final y_start=k_start) "Recording the proportional control gain" annotation (Placement(transformation(extent={{-100,-10},{-80,-30}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samTi( final y_start=Ti_start) @@ -134,24 +139,6 @@ block FirstOrderAMIGO Buildings.Controls.OBC.CDL.Logical.Latch inTunPro "Outputs true if the controller is conducting the autotuning process" annotation (Placement(transformation(extent={{20,-30},{40,-10}}))); - Buildings.Controls.OBC.CDL.Logical.Nand nand - "Check if an autotuning is ongoing while a new autotuning request is received" - annotation (Placement(transformation(extent={{120,-72},{140,-52}}))); - Buildings.Controls.OBC.CDL.Utilities.Assert assMes1( - message="*** Warning: An autotuning is ongoing and the new autotuning request is ignored.") - "Warning message when an autotuning tuning is ongoing while a new autotuning request is received" - annotation (Placement(transformation(extent={{148,-72},{168,-52}}))); - Buildings.Controls.OBC.CDL.Logical.Edge edgReq - "True only when a new request is received" - annotation (Placement(transformation(extent={{80,-80},{100,-60}}))); - Buildings.Controls.OBC.CDL.Logical.TrueDelay tunStaDel( - final delayTime=0.001) - "A small time delay for the autotuning start time to avoid false alerts" - annotation (Placement(transformation(extent={{80,-40},{100,-20}}))); - - Buildings.Controls.OBC.CDL.Reals.AddParameter addPar(final p=yMin) - "Sums the inputs" - annotation (Placement(transformation(extent={{80,110},{100,130}}))); protected final parameter Boolean with_D=controllerType == Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PID "Boolean flag to enable derivative action" @@ -162,15 +149,16 @@ protected else Buildings.Controls.OBC.CDL.Types.SimpleController.PID "Type of controller"; Buildings.Controls.OBC.CDL.Utilities.Assert assMes2( - message="*** Warning: the relay output needs to be asymmetric. Check the value of yHig, yLow and yRef.") + message="*** Warning: the relay output needs to be asymmetric. + Check the value of yHig, yLow and yRef.") "Warning message when the relay output is symmetric" - annotation (Placement(transformation(extent={{60,140},{80,160}}))); + annotation (Placement(transformation(extent={{62,140},{82,160}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant con1(final k=yHig) "Higher value for the relay output" annotation (Placement(transformation(extent={{-140,170},{-120,190}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant con2(final k=yRef) "Reference value for the relay output" - annotation (Placement(transformation(extent={{-160,140},{-140,160}}))); + annotation (Placement(transformation(extent={{-140,140},{-120,160}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant con3(final k=yLow) "Lower value for the relay output" annotation (Placement(transformation(extent={{-140,110},{-120,130}}))); @@ -190,11 +178,50 @@ protected "Check if the relay output is asymmetric" annotation (Placement(transformation(extent={{20,140},{40,160}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant con4(final k=1e-3) - "Threshold for checking the symmetricity of the relay output" + "Threshold for checking if the input is larger than 0" annotation (Placement(transformation(extent={{-20,110},{0,130}}))); Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter yRel(final k=yMax - yMin) - "Relay output multiplied by the possible range of the output " + "Relay output multiplied by the possible range of the output" annotation (Placement(transformation(extent={{40,110},{60,130}}))); + Buildings.Controls.OBC.CDL.Logical.Nand nand + "Check if an autotuning is ongoing while a new autotuning request is received" + annotation (Placement(transformation(extent={{120,-72},{140,-52}}))); + Buildings.Controls.OBC.CDL.Utilities.Assert assMes1( + message="*** Warning: An autotuning is ongoing and + the new autotuning request is ignored.") + "Warning message when an autotuning tuning + is ongoing while a new autotuning request is received" + annotation (Placement(transformation(extent={{148,-72},{168,-52}}))); + Buildings.Controls.OBC.CDL.Logical.Edge edgReq + "True only when a new request is received" + annotation (Placement(transformation(extent={{80,-80},{100,-60}}))); + Buildings.Controls.OBC.CDL.Logical.TrueDelay tunStaDel( + final delayTime=0.001) + "A small time delay for the autotuning start time to avoid false alerts" + annotation (Placement(transformation(extent={{80,-40},{100,-20}}))); + Buildings.Controls.OBC.CDL.Reals.AddParameter addPar( + final p=yMin) + "Sums the inputs" + annotation (Placement(transformation(extent={{80,110},{100,130}}))); + Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler sam_u_s( + final y_start=u_s_start) + "Recording the setpoint" + annotation (Placement(transformation(extent={{-100,240},{-80,220}}))); + Buildings.Controls.OBC.CDL.Logical.Nand nand1 + "Check if an autotuning is ongoing while the setpoint changes" + annotation (Placement(transformation(extent={{100,220},{120,240}}))); + Buildings.Controls.OBC.CDL.Reals.Subtract sub3 "Change of the setpoint" + annotation (Placement(transformation(extent={{-38,220},{-18,240}}))); + Buildings.Controls.OBC.CDL.Reals.Abs abs2 + "Absolute value of the setpoint change" + annotation (Placement(transformation(extent={{0,220},{20,240}}))); + Buildings.Controls.OBC.CDL.Reals.Greater gre1 "Check if the setpoint changes" + annotation (Placement(transformation(extent={{50,220},{70,240}}))); + Buildings.Controls.OBC.CDL.Utilities.Assert assMes3(message= + "In " + getInstanceName() + + ": the setpoint must not change when an autotuning tuning is ongoing.") + "Warning message when the relay output is symmetric" + annotation (Placement(transformation(extent={{140,220},{160,240}}))); equation connect(con.u_s, u_s) annotation (Line(points={{-52,-40},{-60,-40},{-60,0},{-200, 0}}, color={0,0,127})); @@ -218,36 +245,28 @@ equation 74},{38,74}}, color={0,0,127})); connect(rel.yDif, conProMod.u) annotation (Line(points={{-38,30},{-14,30},{-14, 78},{38,78}}, color={0,0,127})); - connect(PIDPar.kp, conProMod.k) annotation (Line(points={{78,36},{66,36},{66,76}, - {62,76}}, color={0,0,127})); - connect(PIDPar.T, conProMod.T) annotation (Line(points={{78,30},{70,30},{70,70}, - {62,70}}, color={0,0,127})); - connect(PIDPar.L, conProMod.L) annotation (Line(points={{78,24},{74,24},{74,64}, - {62,64}}, color={0,0,127})); + connect(PIDPar.kp, conProMod.k) annotation (Line(points={{78,36},{66,36},{66,78}, + {62,78}}, color={0,0,127})); + connect(PIDPar.T, conProMod.T) annotation (Line(points={{78,30},{70,30},{70,74}, + {62,74}}, color={0,0,127})); + connect(PIDPar.L, conProMod.L) annotation (Line(points={{78,24},{74,24},{74,66}, + {62,66}}, color={0,0,127})); connect(PIDPar.k, samk.u) annotation (Line(points={{102,37},{110,37},{110,96}, {-148,96},{-148,-20},{-102,-20}},color={0,0,127})); connect(PIDPar.Ti, samTi.u) annotation (Line(points={{102,30},{112,30},{112,98}, {-150,98},{-150,-50},{-122,-50}},color={0,0,127})); - connect(PIPar.kp, conProMod.k) annotation (Line(points={{78,76},{62,76}}, - color={0,0,127})); - connect(PIPar.T, conProMod.T) annotation (Line(points={{78,70},{62,70}}, - color={0,0,127})); - connect(PIPar.L, conProMod.L) annotation (Line(points={{78,64},{62,64}}, - color={0,0,127})); + connect(PIPar.kp, conProMod.k) annotation (Line(points={{78,76},{70,76},{70,78}, + {62,78}}, color={0,0,127})); + connect(PIPar.T, conProMod.T) annotation (Line(points={{78,70},{70,70},{70,74}, + {62,74}}, color={0,0,127})); + connect(PIPar.L, conProMod.L) annotation (Line(points={{78,64},{70,64},{70,66}, + {62,66}}, color={0,0,127})); connect(PIPar.k, samk.u) annotation (Line(points={{102,76},{110,76},{110,96},{ -148,96},{-148,-20},{-102,-20}}, color={0,0,127})); connect(PIPar.Ti, samTi.u) annotation (Line(points={{102,64},{112,64},{112,98}, {-150,98},{-150,-50},{-122,-50}}, color={0,0,127})); - connect(resPro.triEnd, conProMod.triEnd) annotation (Line(points={{22,32},{56, - 32},{56,58}}, color={255,0,255})); connect(resPro.triSta, conProMod.triSta) annotation (Line(points={{22,36},{44, 36},{44,58}}, color={255,0,255})); - connect(resPro.triEnd, samTi.trigger) annotation (Line(points={{22,32},{30,32}, - {30,10},{-110,10},{-110,-38}}, color={255,0,255})); - connect(resPro.triEnd, samk.trigger) annotation (Line(points={{22,32},{30,32}, - {30,10},{-90,10},{-90,-8}}, color={255,0,255})); - connect(resPro.triEnd, samTd.trigger) annotation (Line(points={{22,32},{30,32}, - {30,10},{-130,10},{-130,-68}}, color={255,0,255})); connect(PIDPar.Td, samTd.u) annotation (Line(points={{102,23},{114,23},{114,94}, {-146,94},{-146,-80},{-142,-80}}, color={0,0,127})); connect(swi.y, y) annotation (Line(points={{162,0},{200,0}}, color={0,0,127})); @@ -277,22 +296,23 @@ equation -20},{42,-20}}, color={255,0,255})); connect(con1.y, sub.u1) annotation (Line(points={{-118,180},{-110,180},{-110,176}, {-102,176}}, color={0,0,127})); - connect(con2.y, sub.u2) annotation (Line(points={{-138,150},{-110,150},{-110,164}, + connect(con2.y, sub.u2) annotation (Line(points={{-118,150},{-108,150},{-108,164}, {-102,164}}, color={0,0,127})); - connect(sub1.u1, con2.y) annotation (Line(points={{-102,136},{-110,136},{-110, - 150},{-138,150}}, color={0,0,127})); + connect(sub1.u1, con2.y) annotation (Line(points={{-102,136},{-108,136},{-108, + 150},{-118,150}}, color={0,0,127})); connect(sub1.u2, con3.y) annotation (Line(points={{-102,124},{-110,124},{-110, 120},{-118,120}}, color={0,0,127})); connect(sub.y, sub2.u1) annotation (Line(points={{-78,170},{-70,170},{-70,156}, {-62,156}}, color={0,0,127})); - connect(sub1.y, sub2.u2) annotation (Line(points={{-78,130},{-70,130},{-70,144}, + connect(sub1.y, sub2.u2) + annotation (Line(points={{-78,130},{-70,130},{-70,144}, {-62,144}}, color={0,0,127})); connect(abs1.u, sub2.y) annotation (Line(points={{-22,150},{-38,150}}, color={0,0,127})); connect(abs1.y, gre.u1) annotation (Line(points={{2,150},{18,150}}, color={0,0,127})); connect(gre.y, assMes2.u) - annotation (Line(points={{42,150},{58,150}}, color={255,0,255})); + annotation (Line(points={{42,150},{60,150}}, color={255,0,255})); connect(con4.y, gre.u2) annotation (Line(points={{2,120},{10,120},{10,142},{18, 142}}, color={0,0,127})); connect(rel.y, yRel.u) annotation (Line(points={{-38,36},{-20,36},{-20,86},{20, @@ -305,7 +325,34 @@ equation -120}}, color={0,0,127})); connect(rel.u_s, u_s) annotation (Line(points={{-62,30},{-160,30},{-160,0},{-200, 0}}, color={0,0,127})); - + connect(sam_u_s.u, u_s) annotation (Line(points={{-102,230},{-170,230},{-170,0}, + {-200,0}}, color={0,0,127})); + connect(sam_u_s.y, sub3.u1) annotation (Line(points={{-78,230},{-52,230},{-52,236}, + {-40,236}}, color={0,0,127})); + connect(sub3.u2, u_s) annotation (Line(points={{-40,224},{-54,224},{-54,198},{ + -116,198},{-116,230},{-170,230},{-170,0},{-200,0}}, color={0,0,127})); + connect(sub3.y, abs2.u) + annotation (Line(points={{-16,230},{-2,230}}, color={0,0,127})); + connect(gre1.u1, abs2.y) + annotation (Line(points={{48,230},{22,230}}, color={0,0,127})); + connect(gre1.u2, con4.y) annotation (Line(points={{48,222},{26,222},{26,178},{ + 10,178},{10,120},{2,120}}, color={0,0,127})); + connect(nand1.y, assMes3.u) + annotation (Line(points={{122,230},{138,230}}, color={255,0,255})); + connect(gre1.y, nand1.u1) + annotation (Line(points={{72,230},{98,230}}, color={255,0,255})); + connect(nand1.u2, tunStaDel.y) annotation (Line(points={{98,222},{86,222},{86, + 182},{118,182},{118,-30},{102,-30}}, color={255,0,255})); + connect(sam_u_s.trigger, resPro.triSta) annotation (Line(points={{-90,242},{-90, + 248},{-160,248},{-160,16},{44,16},{44,36},{22,36}}, color={255,0,255})); + connect(conProMod.triEnd, resPro.triEnd) + annotation (Line(points={{56,58},{56,32},{22,32}}, color={255,0,255})); + connect(conProMod.tunSta, samk.trigger) annotation (Line(points={{62,62},{62, + 6},{-90,6},{-90,-8}}, color={255,0,255})); + connect(samTi.trigger, conProMod.tunSta) annotation (Line(points={{-110,-38}, + {-108,-38},{-108,6},{62,6},{62,62}}, color={255,0,255})); + connect(samTd.trigger, conProMod.tunSta) annotation (Line(points={{-130,-68}, + {-130,6},{62,6},{62,62}}, color={255,0,255})); annotation (Documentation(info="

                                                                              This block implements a rule-based PID tuning method. @@ -502,5 +549,5 @@ First implementation
                                                                              "Td = " + String(con.Td, leftJustified=false, significantDigits=3)))}), - Diagram(coordinateSystem(extent={{-180,-100},{180,200}}))); + Diagram(coordinateSystem(extent={{-180,-100},{180,260}}))); end FirstOrderAMIGO; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/TimeConstantDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/TimeConstantDelay.mo index 3fb6609b8f7..ae34ec856d3 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/TimeConstantDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/TimeConstantDelay.mo @@ -34,9 +34,12 @@ block TimeConstantDelay final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Time delay" - annotation (Placement(transformation(extent={{180,-80},{220,-40}}), - iconTransformation(extent={{100,-80},{140,-40}}))); - + annotation (Placement(transformation(extent={{180,-20},{220,20}}), + iconTransformation(extent={{100,-20},{140,20}}))); + Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput triFai + "True when an error occurs in the autotuning process" + annotation (Placement(transformation(extent={{180,-140},{220,-100}}), + iconTransformation(extent={{100,-100},{140,-60}}))); protected Buildings.Controls.OBC.CDL.Reals.Abs absk "Absoulte value of the gain" @@ -84,8 +87,19 @@ protected annotation (Placement(transformation(extent={{40,-50},{60,-30}}))); Buildings.Controls.OBC.CDL.Reals.Log log "Natural logarithm of the input" - annotation (Placement(transformation(extent={{-40,-120},{-20,-100}}))); + annotation (Placement(transformation(extent={{-40,-110},{-20,-90}}))); + Buildings.Controls.OBC.CDL.Reals.Greater gre1 + "Check if the input is less than 0" + annotation (Placement(transformation(extent={{38,-130},{58,-110}}))); + Buildings.Controls.OBC.CDL.Reals.Max max1 + "Avoid a negative input for the log function" + annotation (Placement(transformation(extent={{-82,-110},{-62,-90}}))); + Buildings.Controls.OBC.CDL.Logical.Edge edg "True only when an error occurs" + annotation (Placement(transformation(extent={{102,-130},{122,-110}}))); + Buildings.Controls.OBC.CDL.Reals.Sources.Constant con1(final k=1e-6) + "Constant" + annotation (Placement(transformation(extent={{-160,-130},{-140,-110}}))); equation connect(absk.u, k) annotation (Line(points={{-162,0},{-200,0}},color={0,0,127})); @@ -121,18 +135,30 @@ equation color={0,0,127})); connect(mul2.u1, exp.u) annotation (Line(points={{98,126},{-170,126},{-170,-70}, {-162,-70}}, color={0,0,127})); - connect(mul2.y, L) annotation (Line(points={{122,120},{160,120},{160,-60},{200, - -60}}, color={0,0,127})); + connect(mul2.y, L) annotation (Line(points={{122,120},{130,120},{130,0},{200, + 0}}, color={0,0,127})); connect(sub1.u2, div1.y) annotation (Line(points={{38,-96},{10,-96},{10,-20},{ 2,-20}}, color={0,0,127})); connect(absk.y, div1.u2) annotation (Line(points={{-138,0},{-110,0},{-110,-26}, {-22,-26}},color={0,0,127})); connect(yHigSig.y, sub1.u1) annotation (Line(points={{-138,60},{-130,60},{-130, -84},{38,-84}}, color={0,0,127})); - connect(log.y, div3.u2) annotation (Line(points={{-18,-110},{20,-110},{20,94}, + connect(log.y, div3.u2) annotation (Line(points={{-18,-100},{20,-100},{20,94}, {38,94}}, color={0,0,127})); - connect(div2.y, log.u) annotation (Line(points={{142,-70},{160,-70},{160,-130}, - {-60,-130},{-60,-110},{-42,-110}}, color={0,0,127})); + connect(div2.y, max1.u1) annotation (Line(points={{142,-70},{146,-70},{146, + -50},{-90,-50},{-90,-94},{-84,-94}}, color={0,0,127})); + connect(log.u, max1.y) + annotation (Line(points={{-42,-100},{-60,-100}}, color={0,0,127})); + connect(gre1.u2, div2.y) annotation (Line(points={{36,-128},{-90,-128},{-90, + -50},{146,-50},{146,-70},{142,-70}}, color={0,0,127})); + connect(con1.y, max1.u2) annotation (Line(points={{-138,-120},{-114,-120},{ + -114,-106},{-84,-106}}, color={0,0,127})); + connect(gre1.y, edg.u) + annotation (Line(points={{60,-120},{100,-120}}, color={255,0,255})); + connect(edg.y, triFai) + annotation (Line(points={{124,-120},{200,-120}}, color={255,0,255})); + connect(gre1.u1, con1.y) + annotation (Line(points={{36,-120},{-138,-120}}, color={0,0,127})); annotation ( defaultComponentName = "timConDel", Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{100,100}}), diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo index 22ca2043a37..936e1d8fe10 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo @@ -48,22 +48,26 @@ block ControlProcessModel origin={60,-120}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput k "Gain" - annotation (Placement(transformation(extent={{160,50},{200,90}}), - iconTransformation(extent={{100,40},{140,80}}))); + annotation (Placement(transformation(extent={{160,60},{200,100}}), + iconTransformation(extent={{100,60},{140,100}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput T( final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Time constant" - annotation (Placement(transformation(extent={{160,0},{200,40}}), - iconTransformation(extent={{100,-20},{140,20}}))); + annotation (Placement(transformation(extent={{160,20},{200,60}}), + iconTransformation(extent={{100,20},{140,60}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput L( final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Time delay" - annotation (Placement(transformation(extent={{160,-80},{200,-40}}), - iconTransformation(extent={{100,-80},{140,-40}}))); + annotation (Placement(transformation(extent={{160,-60},{200,-20}}), + iconTransformation(extent={{100,-60},{140,-20}}))); + Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput tunSta + "Autotuning status, true when the autotuning completes successfully" + annotation (Placement(transformation(extent={{160,-100},{200,-60}}), + iconTransformation(extent={{100,-100},{140,-60}}))); protected Buildings.Controls.OBC.CDL.Reals.AddParameter addPar( final p=1) @@ -91,7 +95,7 @@ protected Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samL( final y_start=1) "Block that samples the time delay when the tuning period ends" - annotation (Placement(transformation(extent={{100,-70},{120,-50}}))); + annotation (Placement(transformation(extent={{100,-50},{120,-30}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samtOn( final y_start=1) "Block that samples the length of the on period when the tuning period ends" @@ -111,6 +115,17 @@ protected Buildings.Controls.OBC.CDL.Reals.Abs abs1 "Absolute gain value" annotation (Placement(transformation(extent={{-90,10},{-70,30}}))); + Buildings.Controls.OBC.CDL.Logical.Not not1 + "Check if an error occurs during the autotuning process" + annotation (Placement(transformation(extent={{40,-60},{60,-40}}))); + Buildings.Controls.OBC.CDL.Logical.And and2 + "Check if the autotuning completes successfully" + annotation (Placement(transformation(extent={{80,-80},{100,-60}}))); + Buildings.Controls.OBC.CDL.Utilities.Assert assMes4( + message="In " + getInstanceName() + ": autotuning fails, see earlier warnings + for possible reasons") + "Warning message when an autotuning fails" + annotation (Placement(transformation(extent={{100,50},{120,70}}))); equation connect(gain.u, u) annotation (Line(points={{-122,28},{-140,28},{-140,80},{-180, 80}}, color={0,0,127})); @@ -123,21 +138,22 @@ equation connect(timConDel.T, samT.u) annotation (Line(points={{82,26},{100,26},{100,20},{118,20}}, color={0,0,127})); connect(samT.y, T) - annotation (Line(points={{142,20},{180,20}}, color={0,0,127})); + annotation (Line(points={{142,20},{148,20},{148,40},{180,40}}, + color={0,0,127})); connect(samT.trigger, triEnd) annotation (Line(points={{130,8},{130,-120}}, color={255,0,255})); connect(L, samL.y) - annotation (Line(points={{180,-60},{122,-60}},color={0,0,127})); - connect(samL.u, timConDel.L) annotation (Line(points={{98,-60},{90,-60},{90,14}, - {82,14}}, color={0,0,127})); - connect(samL.trigger, triEnd) annotation (Line(points={{110,-72},{110,-90},{130, - -90},{130,-120}}, color={255,0,255})); + annotation (Line(points={{180,-40},{122,-40}},color={0,0,127})); + connect(samL.u, timConDel.L) annotation (Line(points={{98,-40},{90,-40},{90,20}, + {82,20}}, color={0,0,127})); + connect(samL.trigger, triEnd) annotation (Line(points={{110,-52},{110,-70},{130, + -70},{130,-120}}, color={255,0,255})); connect(samk.y, timConDel.k) annotation (Line(points={{-38,20},{58,20}}, color={0,0,127})); connect(samk.trigger, triEnd) annotation (Line(points={{-50,8},{-50,-90},{130, -90},{130,-120}},color={255,0,255})); - connect(samk.y, k) annotation (Line(points={{-38,20},{40,20},{40,70},{180,70}}, + connect(samk.y, k) annotation (Line(points={{-38,20},{52,20},{52,80},{180,80}}, color={0,0,127})); connect(timConDel.tOn, samtOn.y) annotation (Line(points={{58,26},{20,26},{20, 60},{2,60}}, color={0,0,127})); @@ -164,6 +180,16 @@ equation annotation (Line(points={{-98,20},{-92,20}}, color={0,0,127})); connect(abs1.y, samk.u) annotation (Line(points={{-68,20},{-62,20}}, color={0,0,127})); + connect(and2.u1, not1.y) annotation (Line(points={{78,-70},{68,-70},{68,-50},{ + 62,-50}}, color={255,0,255})); + connect(and2.y, tunSta) annotation (Line(points={{102,-70},{106,-70},{106,-80}, + {180,-80}}, color={255,0,255})); + connect(and2.u2, triEnd) annotation (Line(points={{78,-78},{0,-78},{0,-90},{ + 130,-90},{130,-120}}, color={255,0,255})); + connect(timConDel.triFai, not1.u) annotation (Line(points={{82,12},{86,12},{86, + 0},{8,0},{8,-50},{38,-50}}, color={255,0,255})); + connect(assMes4.u, timConDel.triFai) annotation (Line(points={{98,60},{86,60}, + {86,12},{82,12}}, color={255,0,255})); annotation ( defaultComponentName = "conProMod", Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{100, @@ -174,7 +200,7 @@ annotation ( fillColor={255,255,255}, fillPattern=FillPattern.Solid), Text( - extent={{-100,140},{100,100}}, + extent={{-100,160},{100,120}}, textString="%name", textColor={0,0,255}), Polygon( From 044c307c5740120b727fe9425c69be1b7005c3aa Mon Sep 17 00:00:00 2001 From: SenHuang19 Date: Fri, 14 Jun 2024 11:32:54 -0400 Subject: [PATCH 183/214] add new inputs --- .../Validation/DirectActingPIDWithFirstOrderAMIGO.mo | 1 + .../Validation/DirectActingPIWithFirstOrderAMIGO.mo | 1 + .../Validation/ReverseActingPIDWithFirstOrderAMIGO.mo | 1 + .../Validation/ReverseActingPIWithFirstOrderAMIGO.mo | 1 + 4 files changed, 4 insertions(+) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIDWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIDWithFirstOrderAMIGO.mo index 178945c3c30..d8b033b2adc 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIDWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIDWithFirstOrderAMIGO.mo @@ -6,6 +6,7 @@ model DirectActingPIDWithFirstOrderAMIGO annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.FirstOrderAMIGO PIDWitTun( controllerType=Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PID, + u_s_start=0.8, yLow=0, deaBan=0.1, yRef=0.8, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIWithFirstOrderAMIGO.mo index 95741221556..046b445392c 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIWithFirstOrderAMIGO.mo @@ -6,6 +6,7 @@ model DirectActingPIWithFirstOrderAMIGO annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.FirstOrderAMIGO PIWitTun( controllerType=Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PI, + u_s_start=0.8, yLow=0, deaBan=0.1, yRef=0.8, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/ReverseActingPIDWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/ReverseActingPIDWithFirstOrderAMIGO.mo index 9c28f5a449b..9c49c17938b 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/ReverseActingPIDWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/ReverseActingPIDWithFirstOrderAMIGO.mo @@ -6,6 +6,7 @@ model ReverseActingPIDWithFirstOrderAMIGO annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.FirstOrderAMIGO PIDWitTun( controllerType=Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PID, + u_s_start=0.8, yLow=0, deaBan=0.1, yRef=0.8) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/ReverseActingPIWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/ReverseActingPIWithFirstOrderAMIGO.mo index c7685f95f5d..d76afc9b18e 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/ReverseActingPIWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/ReverseActingPIWithFirstOrderAMIGO.mo @@ -6,6 +6,7 @@ model ReverseActingPIWithFirstOrderAMIGO annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.FirstOrderAMIGO PIWitTun( controllerType=Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PI, + u_s_start=0.8, yLow=0, deaBan=0.1, yRef=0.8) From 6b777965d5fa6ae042aa0155e9513b08111c5d7d Mon Sep 17 00:00:00 2001 From: SenHuang19 Date: Fri, 14 Jun 2024 11:33:11 -0400 Subject: [PATCH 184/214] update the example --- .../Examples/WetCoilCounterFlowPControlAutoTuning.mo | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo b/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo index 628554effa3..18824834296 100644 --- a/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo +++ b/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo @@ -92,6 +92,7 @@ model WetCoilCounterFlowPControlAutoTuning annotation (Placement(transformation(extent={{100,-38},{120,-18}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.FirstOrderAMIGO con(controllerType=Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PI, + u_s_start=288.15, r=10, yLow=0.2, deaBan=0.2, @@ -109,9 +110,9 @@ model WetCoilCounterFlowPControlAutoTuning "Reset signal" annotation (Placement(transformation(extent={{-80,160},{-60,180}}))); Buildings.Controls.OBC.CDL.Logical.Sources.Pulse autTunSig( - width=0.1, - period=4000, - shift=400) + width=0.2, + period=2000, + shift=100) "Signal for enabling the autotuning" annotation (Placement(transformation(extent={{20,160},{40,180}}))); equation From 3bacb48978bc396ba0d3b02bbd056b12a7666823 Mon Sep 17 00:00:00 2001 From: SenHuang19 Date: Fri, 14 Jun 2024 11:33:32 -0400 Subject: [PATCH 185/214] reference data update --- ...amples_WetCoilCounterFlowPControlAutoTuning.txt | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_HeatExchangers_Examples_WetCoilCounterFlowPControlAutoTuning.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_HeatExchangers_Examples_WetCoilCounterFlowPControlAutoTuning.txt index d02a6048996..317cf22a1bd 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_HeatExchangers_Examples_WetCoilCounterFlowPControlAutoTuning.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_HeatExchangers_Examples_WetCoilCounterFlowPControlAutoTuning.txt @@ -1,4 +1,4 @@ -last-generated=2024-04-04 +last-generated=2024-06-14 statistics-initialization= { "nonlinear": "1", @@ -12,11 +12,11 @@ statistics-simulation= "numerical Jacobians": "0" } time=[0e+00, 3.6e+03] -hex.m1_flow=[1.000000014901161e-01, 9.799395687878132e-03, 3.891929611563683e-02, 8.782419376075268e-03, 4.387084767222404e-02, 8.885885588824749e-03, 3.870976716279984e-02, 1.106910035014155e-02, 2.979452349245548e-02, 1.509686466306448e-02, 2.182269096374512e-02, 2.120344340801239e-02, 2.801814302802086e-02, 1.122172363102436e-02, 4.301923885941494e-02, 6.004841532558203e-03, 5.614002700895071e-03, 8.159424178302288e-03, 5.667627789080143e-03, 4.576686769723892e-03, 4.038866143673658e-03, 3.683111863210797e-03, 3.426569979637861e-03, 3.23454150930047e-03, 3.088341560214758e-03, 2.939891535788774e-03, 1.941183465532959e-03, 1.66546681430191e-03, 2.445777179673316e-03, 2.862658118829131e-03, 2.937313169240952e-03, 2.915012650191784e-03, 2.842600923031569e-03, 2.756057539954782e-03, 2.953205490484834e-03, 3.228597808629274e-03, 3.760595340281725e-03, 4.651996307075024e-03, 6.022818386554718e-03, 7.988806813955307e-03, 1.052603591233492e-02, 1.347976084798574e-02, 1.664512604475021e-02, 1.981046050786972e-02, 2.298108302056789e-02, 2.629274874925613e-02, 2.991392835974693e-02, 3.402096778154373e-02, 3.880844265222549e-02, 4.451768472790718e-02, 5.147689953446388e-02, 5.871041491627693e-02, 6.415104120969772e-02, 6.868905574083328e-02, 7.281769067049029e-02, 7.668887078762057e-02, 8.038751780986789e-02, 8.397778868675232e-02, 8.750604838132858e-02, 9.100411087274551e-02, 9.449149668216705e-02, 9.79309007525444e-02, 9.962310642004013e-02, 9.994619339704514e-02, 9.999304264783859e-02, 9.999915212392807e-02, 9.999989718198776e-02, 9.677965193986893e-02, 7.735773175954819e-02, 6.201204657554626e-02, 5.160892382264137e-02, 4.490157216787338e-02, 4.081471264362335e-02, 3.842665255069733e-02, 3.706067055463791e-02, 3.628231212496758e-02, 3.583642467856407e-02, 3.557925298810005e-02, 3.543030470609665e-02, 3.534381836652756e-02, 3.529346734285355e-02, 3.526416048407555e-02, 3.524712100625038e-02, 3.523718193173409e-02, 3.523139655590057e-02, 3.522808104753494e-02, 3.522620722651482e-02, 3.522505238652229e-02, 3.522432595491409e-02, 3.522387892007828e-02, 3.522362560033798e-02, 3.522349521517754e-02, 3.522342815995216e-02, 3.522340208292007e-02, 3.522339090704918e-02, 3.522337228059769e-02, 3.522335365414619e-02, 3.52233462035656e-02, 3.52233424782753e-02, 3.52233350276947e-02, 3.52233313024044e-02] +hex.m1_flow=[1.000000014901161e-01, 9.799395687878132e-03, 3.891929611563683e-02, 1.243012398481369e-02, 4.082757979631424e-02, 1.002543978393078e-02, 4.832808673381805e-02, 8.020547218620768e-03, 5.314406007528305e-03, 8.957910351455212e-03, 1.455424912273884e-02, 1.926885917782784e-02, 2.135048806667328e-02, 2.181801572442055e-02, 2.197562903165817e-02, 2.217586152255535e-02, 2.238752692937851e-02, 1.900335587561131e-02, 8.295463398098946e-03, 5.835996009409428e-03, 4.895612131804228e-03, 4.280225839465857e-03, 3.848579945042729e-03, 3.540420206263661e-03, 3.315708367154002e-03, 3.146618371829391e-03, 3.019300056621432e-03, 2.400044817477461e-03, 1.637312350794674e-03, 2.243597526103258e-03, 2.796528395265341e-03, 2.920550759881735e-03, 2.911846851930022e-03, 2.852245233952999e-03, 2.987440209835768e-03, 3.261285834014416e-03, 3.841469530016184e-03, 4.812328144907951e-03, 6.299466360360384e-03, 8.400643244385719e-03, 1.102966628968716e-02, 1.399938482791185e-02, 1.708998903632164e-02, 2.015193365514278e-02, 2.325768955051899e-02, 2.656054496765137e-02, 3.021474927663803e-02, 3.438415378332138e-02, 3.92632819712162e-02, 4.510772228240967e-02, 5.227047204971313e-02, 5.964099988341331e-02, 6.503266096115112e-02, 6.954372674226761e-02, 7.368407398462298e-02, 7.7583983540535e-02, 8.132047206163409e-02, 8.495523780584335e-02, 8.853314071893692e-02, 9.502344578504562e-02, 9.911808371543884e-02, 9.98750776052475e-02, 9.998374432325363e-02, 9.999824315309525e-02, 9.99998077750206e-02, 9.999997913837433e-02, 9.999999403953552e-02, 6.94853663444519e-02, 1.178969349712133e-02, 5.948134139180183e-02, 8.125735819339752e-02, 6.601621955633163e-02, 5.363185703754425e-02, 4.590350762009621e-02, 4.133545234799385e-02, 3.871942311525345e-02, 3.723839297890663e-02, 3.639515861868858e-02, 3.590912371873856e-02, 3.56258898973465e-02, 3.54599691927433e-02, 3.536252304911613e-02, 3.530532494187355e-02, 3.527173399925232e-02, 3.525185585021973e-02, 3.524012491106987e-02, 3.523324802517891e-02, 3.522916883230209e-02, 3.522676229476929e-02, 3.522535786032677e-02, 3.522451967000961e-02, 3.522401303052902e-02, 3.522370010614395e-02, 3.522352874279022e-02, 3.522343561053276e-02, 3.522338718175888e-02, 3.522336110472679e-02, 3.52233462035656e-02, 3.52233424782753e-02, 3.52233462035656e-02, 3.52233462035656e-02] hex.m2_flow=[3.429285809397697e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02] con.u_s=[2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.975499877929688e+02, 2.966499938964844e+02, 2.9575e+02, 2.948500061035156e+02, 2.939500122070312e+02, 2.930499877929688e+02, 2.921499938964844e+02, 2.9125e+02, 2.903500061035156e+02, 2.894500122070312e+02, 2.885499877929688e+02, 2.876499938964844e+02, 2.8675e+02, 2.858500061035156e+02, 2.849500122070312e+02, 2.840499877929688e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02] -con.u_m=[2.931499938964844e+02, 2.881471862792969e+02, 2.874449157714844e+02, 2.895922546386719e+02, 2.859307556152344e+02, 2.909444885253906e+02, 2.849481811523438e+02, 2.915977783203125e+02, 2.847825317382812e+02, 2.913971862792969e+02, 2.853603820800781e+02, 2.905171508789062e+02, 2.840714416503906e+02, 2.913357543945312e+02, 2.841336364746094e+02, 2.921355285644531e+02, 2.951329040527344e+02, 2.947222595214844e+02, 2.957323913574219e+02, 2.964363098144531e+02, 2.968428039550781e+02, 2.971304321289062e+02, 2.973455200195312e+02, 2.975055541992188e+02, 2.976381225585938e+02, 2.977485656738281e+02, 2.979613647460938e+02, 2.982236938476562e+02, 2.9829931640625e+02, 2.982300415039062e+02, 2.9816162109375e+02, 2.981222839355469e+02, 2.981114196777344e+02, 2.981236267089844e+02, 2.981272583007812e+02, 2.980637512207031e+02, 2.979345703125e+02, 2.976768188476562e+02, 2.972134704589844e+02, 2.964283752441406e+02, 2.953130798339844e+02, 2.940563049316406e+02, 2.927080688476562e+02, 2.914476623535156e+02, 2.903215637207031e+02, 2.893143920898438e+02, 2.883910522460938e+02, 2.875262451171875e+02, 2.867100830078125e+02, 2.859460144042969e+02, 2.852444152832031e+02, 2.846677856445312e+02, 2.843463134765625e+02, 2.841746215820312e+02, 2.840704040527344e+02, 2.840051574707031e+02, 2.839661560058594e+02, 2.839459228515625e+02, 2.839396667480469e+02, 2.839442749023438e+02, 2.839576721191406e+02, 2.839786376953125e+02, 2.840272216796875e+02, 2.841066284179688e+02, 2.841926574707031e+02, 2.842044982910156e+02, 2.842045593261719e+02, 2.842225646972656e+02, 2.845959777832031e+02, 2.851943664550781e+02, 2.85876953125e+02, 2.865410461425781e+02, 2.870917663574219e+02, 2.874904174804688e+02, 2.877521667480469e+02, 2.879141540527344e+02, 2.880112915039062e+02, 2.880687561035156e+02, 2.881025085449219e+02, 2.881222839355469e+02, 2.881338195800781e+02, 2.881405639648438e+02, 2.881445007324219e+02, 2.881467895507812e+02, 2.881481323242188e+02, 2.881488952636719e+02, 2.881493530273438e+02, 2.881495971679688e+02, 2.881497497558594e+02, 2.881498718261719e+02, 2.881499328613281e+02, 2.881499633789062e+02, 2.881499633789062e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02] -hex.Q1_flow=[0e+00, 8.008525390625e+02, 1.574509155273438e+03, 7.560435791015625e+02, 1.6139091796875e+03, 7.964705810546875e+02, 1.478634643554688e+03, 9.298931884765634e+02, 1.29922314453125e+03, 1.09570947265625e+03, 1.126179321289062e+03, 1.253535888671875e+03, 1.26501123046875e+03, 9.08010986328125e+02, 1.503076538085935e+03, 6.344298706054688e+02, 5.470520629882812e+02, 5.866242065429688e+02, 4.641961975097656e+02, 4.020728149414062e+02, 3.61879638671875e+02, 3.32046142578125e+02, 3.09310791015625e+02, 2.924340209960938e+02, 2.785927429199219e+02, 2.663950805664062e+02, 2.367393951416016e+02, 2.092097015380859e+02, 2.073711090087891e+02, 2.178932952880859e+02, 2.259566040039062e+02, 2.300454406738281e+02, 2.305299682617188e+02, 2.284504089355469e+02, 2.304035491943359e+02, 2.388005065917969e+02, 2.5721826171875e+02, 2.926322631835938e+02, 3.538595581054688e+02, 4.518128662109375e+02, 5.78245849609375e+02, 7.088983154296875e+02, 8.364325561523438e+02, 9.468866577148438e+02, 1.039771362304688e+03, 1.11977001953125e+03, 1.191178955078125e+03, 1.256421875e+03, 1.316282592773438e+03, 1.370608154296875e+03, 1.418805541992188e+03, 1.449112060546875e+03, 1.46091357421875e+03, 1.46796923828125e+03, 1.472583251953125e+03, 1.475397338867188e+03, 1.476920654296875e+03, 1.477497314453125e+03, 1.477344970703125e+03, 1.476603881835938e+03, 1.4753671875e+03, 1.47342041015625e+03, 1.467206787109375e+03, 1.461028442382812e+03, 1.455847045898438e+03, 1.457301391601562e+03, 1.457313110351562e+03, 1.442697509765625e+03, 1.397792236328125e+03, 1.355113159179688e+03, 1.3103466796875e+03, 1.2693486328125e+03, 1.236982543945312e+03, 1.214332885742188e+03, 1.199745971679688e+03, 1.190793334960938e+03, 1.1854296875e+03, 1.182253540039062e+03, 1.180385375976562e+03, 1.179291259765625e+03, 1.178650756835938e+03, 1.178276977539062e+03, 1.178059204101562e+03, 1.177932006835938e+03, 1.17785791015625e+03, 1.1778154296875e+03, 1.17779150390625e+03, 1.177776733398438e+03, 1.177767456054688e+03, 1.17776171875e+03, 1.177758422851562e+03, 1.177756713867188e+03, 1.177755859375e+03, 1.177755493164062e+03, 1.17775537109375e+03, 1.177755126953125e+03, 1.177755004882812e+03, 1.1777548828125e+03, 1.177754760742188e+03, 1.177754760742188e+03, 1.177754638671875e+03] -hex.Q2_flow=[0e+00, -9.823609008789062e+02, -1.40096826171875e+03, -8.99636474609375e+02, -1.476581420898438e+03, -8.635550537109375e+02, -1.445267822265625e+03, -9.090473632812506e+02, -1.363038940429688e+03, -1.007336547851562e+03, -1.256213012695312e+03, -1.125922973632812e+03, -1.370031616210938e+03, -9.083820190429688e+02, -1.485094848632811e+03, -7.290025634765625e+02, -5.5139501953125e+02, -5.9283837890625e+02, -4.787092590332031e+02, -4.098740539550781e+02, -3.672816467285156e+02, -3.361414794921875e+02, -3.131868286132812e+02, -2.958232727050781e+02, -2.814447631835938e+02, -2.69132080078125e+02, -2.421444396972656e+02, -2.130933685302734e+02, -2.078668212890625e+02, -2.173064880371094e+02, -2.253132171630859e+02, -2.295929718017578e+02, -2.304246978759766e+02, -2.286504516601562e+02, -2.293876342773438e+02, -2.372536468505859e+02, -2.538388671875e+02, -2.860775146484375e+02, -3.422450256347656e+02, -4.36611083984375e+02, -5.593201293945312e+02, -6.901102905273438e+02, -8.1761181640625e+02, -9.289157104492188e+02, -1.022920166015625e+03, -1.103633422851562e+03, -1.175252563476562e+03, -1.24034521484375e+03, -1.299928833007812e+03, -1.354037841796875e+03, -1.402205688476562e+03, -1.436927612304688e+03, -1.453718505859375e+03, -1.463029052734375e+03, -1.468840576171875e+03, -1.472453247070312e+03, -1.474549438476562e+03, -1.475552490234375e+03, -1.47572998046875e+03, -1.475255615234375e+03, -1.474244262695312e+03, -1.472647216796875e+03, -1.468105102539062e+03, -1.462480834960938e+03, -1.457039184570312e+03, -1.4573095703125e+03, -1.457313598632812e+03, -1.450066284179688e+03, -1.415667602539062e+03, -1.373891235351562e+03, -1.327588989257812e+03, -1.2832734375e+03, -1.24695849609375e+03, -1.220857788085938e+03, -1.203771362304688e+03, -1.19319970703125e+03, -1.186848388671875e+03, -1.183085327148438e+03, -1.180871948242188e+03, -1.179575317382812e+03, -1.17881689453125e+03, -1.178373657226562e+03, -1.178115600585938e+03, -1.177964965820312e+03, -1.177877075195312e+03, -1.17782666015625e+03, -1.177798095703125e+03, -1.177780883789062e+03, -1.17777001953125e+03, -1.177763061523438e+03, -1.177759155273438e+03, -1.177757080078125e+03, -1.177756103515625e+03, -1.177755737304688e+03, -1.177755615234375e+03, -1.17775537109375e+03, -1.177755126953125e+03, -1.1777548828125e+03, -1.1777548828125e+03, -1.177754760742188e+03, -1.177754638671875e+03] -hex.QLat2_flow=[0e+00, -6.118687744140625e+02, -8.875252075195312e+02, -5.588204956054688e+02, -9.2909033203125e+02, -5.373814086914062e+02, -9.041666870117188e+02, -5.70971069335938e+02, -8.509703979492188e+02, -6.386790771484375e+02, -7.844966430664062e+02, -7.169783325195312e+02, -8.532002563476562e+02, -5.696207885742188e+02, -9.259057617187493e+02, -4.445836486816406e+02, -3.207699279785156e+02, -3.503029479980469e+02, -2.6897705078125e+02, -2.183191528320312e+02, -1.867727508544922e+02, -1.636006774902344e+02, -1.46836181640625e+02, -1.339968109130859e+02, -1.233225555419922e+02, -1.141922912597656e+02, -9.439002990722656e+01, -7.253954315185543e+01, -6.835106658935548e+01, -7.537386322021484e+01, -8.136091613769531e+01, -8.455787658691406e+01, -8.519281768798828e+01, -8.388404083251953e+01, -8.431562805175781e+01, -9.013148498535156e+01, -1.023006896972656e+02, -1.258992080688477e+02, -1.667765197753906e+02, -2.368231658935547e+02, -3.256931457519531e+02, -4.199110412597656e+02, -5.083401489257812e+02, -5.835704956054688e+02, -6.455577392578125e+02, -6.9759765625e+02, -7.42824462890625e+02, -7.831190185546875e+02, -8.1928662109375e+02, -8.515157470703125e+02, -8.796740112304688e+02, -8.994107055664062e+02, -9.087183227539062e+02, -9.138945922851562e+02, -9.17137451171875e+02, -9.191568603515625e+02, -9.20332763671875e+02, -9.209007568359375e+02, -9.210093383789062e+02, -9.207544555664062e+02, -9.20199462890625e+02, -9.193087158203125e+02, -9.166975708007812e+02, -9.135208129882812e+02, -9.104605712890625e+02, -9.106502685546875e+02, -9.106528930664062e+02, -9.06206298828125e+02, -8.860179443359375e+02, -8.616741943359375e+02, -8.3440576171875e+02, -8.079982299804688e+02, -7.86127197265625e+02, -7.702767944335938e+02, -7.598397827148438e+02, -7.53357177734375e+02, -7.494527587890625e+02, -7.471359252929688e+02, -7.4577197265625e+02, -7.449723510742188e+02, -7.445045776367188e+02, -7.442311401367188e+02, -7.440718994140625e+02, -7.439789428710938e+02, -7.439247436523438e+02, -7.438936157226562e+02, -7.438759765625e+02, -7.438654174804688e+02, -7.43858642578125e+02, -7.438543701171875e+02, -7.438519897460938e+02, -7.438507080078125e+02, -7.4385009765625e+02, -7.438499145507812e+02, -7.438497924804688e+02, -7.43849609375e+02, -7.438494873046875e+02, -7.43849365234375e+02, -7.438493041992188e+02, -7.438492431640625e+02, -7.438492431640625e+02] -hex.QSen2_flow=[0e+00, -3.704920959472656e+02, -5.134429931640625e+02, -3.408159790039062e+02, -5.474911499023438e+02, -3.261736450195312e+02, -5.411011962890625e+02, -3.380762939453127e+02, -5.120685424804688e+02, -3.686574401855469e+02, -4.717164001464844e+02, -4.089446105957031e+02, -5.168313598632812e+02, -3.387611999511719e+02, -5.59189086914062e+02, -2.844189147949219e+02, -2.306250762939453e+02, -2.425354156494141e+02, -2.097322235107422e+02, -1.915549163818359e+02, -1.805089111328125e+02, -1.725408020019531e+02, -1.663506317138672e+02, -1.618264770507812e+02, -1.581222076416016e+02, -1.549398040771484e+02, -1.477544097900391e+02, -1.405538330078125e+02, -1.395157470703125e+02, -1.419326171875e+02, -1.439523010253906e+02, -1.450350952148438e+02, -1.452318878173828e+02, -1.447664184570312e+02, -1.450720062255859e+02, -1.471221618652344e+02, -1.515381774902344e+02, -1.601783142089844e+02, -1.75468505859375e+02, -1.997879028320312e+02, -2.336269989013672e+02, -2.7019921875e+02, -3.092716369628906e+02, -3.453452453613281e+02, -3.773624572753906e+02, -4.060357666015625e+02, -4.324281311035156e+02, -4.572262573242188e+02, -4.806422119140625e+02, -5.025221557617188e+02, -5.225316772460938e+02, -5.375169067382812e+02, -5.45000244140625e+02, -5.491344604492188e+02, -5.517030639648438e+02, -5.5329638671875e+02, -5.542167358398438e+02, -5.546517333984375e+02, -5.54720703125e+02, -5.545011596679688e+02, -5.540447998046875e+02, -5.533385009765625e+02, -5.514075927734375e+02, -5.489600219726562e+02, -5.4657861328125e+02, -5.466593017578125e+02, -5.466607666015625e+02, -5.438599243164062e+02, -5.296497192382812e+02, -5.12217041015625e+02, -4.931831970214844e+02, -4.752752075195312e+02, -4.608312683105469e+02, -4.505809326171875e+02, -4.439315795898438e+02, -4.39842529296875e+02, -4.373955688476562e+02, -4.359494018554688e+02, -4.351000061035156e+02, -4.346029357910156e+02, -4.343122863769531e+02, -4.341425170898438e+02, -4.340436706542969e+02, -4.339859619140625e+02, -4.339523315429688e+02, -4.339329833984375e+02, -4.339220581054688e+02, -4.339154968261719e+02, -4.339113159179688e+02, -4.339086608886719e+02, -4.339071655273438e+02, -4.339063720703125e+02, -4.33906005859375e+02, -4.339058837890625e+02, -4.339058227539062e+02, -4.339057006835938e+02, -4.339056091308594e+02, -4.339055480957031e+02, -4.33905517578125e+02, -4.339054870605469e+02, -4.339054565429688e+02] +con.u_m=[2.931499938964844e+02, 2.881471862792969e+02, 2.874449157714844e+02, 2.892806091308594e+02, 2.839073791503906e+02, 2.898591613769531e+02, 2.858397521972656e+02, 2.896682434082031e+02, 2.948145751953125e+02, 2.94484619140625e+02, 2.926266784667969e+02, 2.904584350585938e+02, 2.890349731445312e+02, 2.884889831542969e+02, 2.883428649902344e+02, 2.882951354980469e+02, 2.882661437988281e+02, 2.885406799316406e+02, 2.929259338378906e+02, 2.952376708984375e+02, 2.961018676757812e+02, 2.966226196289062e+02, 2.969822998046875e+02, 2.972457275390625e+02, 2.974365234375e+02, 2.975864868164062e+02, 2.977091979980469e+02, 2.978600463867188e+02, 2.981324768066406e+02, 2.98277587890625e+02, 2.98239013671875e+02, 2.981739196777344e+02, 2.981340026855469e+02, 2.9812060546875e+02, 2.981119995117188e+02, 2.980509643554688e+02, 2.979117736816406e+02, 2.976292419433594e+02, 2.971192626953125e+02, 2.962571105957031e+02, 2.950943298339844e+02, 2.9381982421875e+02, 2.924999389648438e+02, 2.912912292480469e+02, 2.902102661132812e+02, 2.892289123535156e+02, 2.88315673828125e+02, 2.874531860351562e+02, 2.866369934082031e+02, 2.858726501464844e+02, 2.851712951660156e+02, 2.846004333496094e+02, 2.842941589355469e+02, 2.841333923339844e+02, 2.840352172851562e+02, 2.839737243652344e+02, 2.839374084472656e+02, 2.839192199707031e+02, 2.839145812988281e+02, 2.838818054199219e+02, 2.838653259277344e+02, 2.839319763183594e+02, 2.840171508789062e+02, 2.841050720214844e+02, 2.841924438476562e+02, 2.842044677734375e+02, 2.842045593261719e+02, 2.844039916992188e+02, 2.909552307128906e+02, 2.877339477539062e+02, 2.846883239746094e+02, 2.850060729980469e+02, 2.857023315429688e+02, 2.864142761230469e+02, 2.87008056640625e+02, 2.874368591308594e+02, 2.877175903320312e+02, 2.878914489746094e+02, 2.879963073730469e+02, 2.880589294433594e+02, 2.880961608886719e+02, 2.881182250976562e+02, 2.881312561035156e+02, 2.88138916015625e+02, 2.881434631347656e+02, 2.881461486816406e+02, 2.881477355957031e+02, 2.881486511230469e+02, 2.881492004394531e+02, 2.881495361328125e+02, 2.881497192382812e+02, 2.881498413085938e+02, 2.8814990234375e+02, 2.881499633789062e+02, 2.881499633789062e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02] +hex.Q1_flow=[0e+00, 8.008525390625e+02, 1.574509155273438e+03, 9.598690795898438e+02, 1.509545776367188e+03, 8.314747924804688e+02, 1.7153447265625e+03, 7.317942504882809e+02, 5.666944580078125e+02, 6.581214599609375e+02, 8.624087524414062e+02, 1.050914184570312e+03, 1.13723779296875e+03, 1.159449096679688e+03, 1.16414501953125e+03, 1.16655029296875e+03, 1.16838232421875e+03, 1.056565185546875e+03, 6.666392211914062e+02, 5.0991796875e+02, 4.334904479980469e+02, 3.830501098632812e+02, 3.467495422363281e+02, 3.193536376953125e+02, 2.992341918945312e+02, 2.836605224609375e+02, 2.708881225585938e+02, 2.496213836669921e+02, 2.180754241943359e+02, 2.079737548828125e+02, 2.16202880859375e+02, 2.242102508544922e+02, 2.285453186035156e+02, 2.29474853515625e+02, 2.320776977539062e+02, 2.40506103515625e+02, 2.604377136230469e+02, 2.992744445800781e+02, 3.663895263671875e+02, 4.726472778320312e+02, 6.016434936523438e+02, 7.317376708984375e+02, 8.542926025390625e+02, 9.589669799804688e+02, 1.047934814453125e+03, 1.126118774414062e+03, 1.19691259765625e+03, 1.261974853515625e+03, 1.321740356445312e+03, 1.375974365234375e+03, 1.424050659179688e+03, 1.453165893554688e+03, 1.463758544921875e+03, 1.470341064453125e+03, 1.474701049804688e+03, 1.477328491210938e+03, 1.478709594726562e+03, 1.479173706054688e+03, 1.478926391601562e+03, 1.486778930664062e+03, 1.479446655273438e+03, 1.472607421875e+03, 1.466693237304688e+03, 1.460934326171875e+03, 1.455834106445312e+03, 1.457299438476562e+03, 1.457313110351562e+03, 1.288331787109375e+03, 7.568871459960938e+02, 1.476864013671875e+03, 1.434335083007812e+03, 1.368208374023438e+03, 1.319508056640625e+03, 1.275893432617188e+03, 1.241416137695312e+03, 1.217293579101562e+03, 1.20173779296875e+03, 1.19213232421875e+03, 1.186320678710938e+03, 1.1828359375e+03, 1.180760131835938e+03, 1.179529052734375e+03, 1.178802124023438e+03, 1.178373657226562e+03, 1.178119873046875e+03, 1.1779697265625e+03, 1.177881713867188e+03, 1.177829467773438e+03, 1.177798583984375e+03, 1.177780639648438e+03, 1.177769897460938e+03, 1.177763427734375e+03, 1.177759399414062e+03, 1.177757202148438e+03, 1.177755981445312e+03, 1.17775537109375e+03, 1.177755004882812e+03, 1.1777548828125e+03, 1.177754760742188e+03, 1.1777548828125e+03, 1.1777548828125e+03] +hex.Q2_flow=[0e+00, -9.823609008789062e+02, -1.40096826171875e+03, -1.01654931640625e+03, -1.494255859375e+03, -9.302499389648438e+02, -1.525973266601562e+03, -8.844354248046869e+02, -5.766068725585938e+02, -6.429981689453125e+02, -8.349686889648438e+02, -1.023248840332031e+03, -1.12299853515625e+03, -1.15493017578125e+03, -1.162782592773438e+03, -1.16580224609375e+03, -1.16783447265625e+03, -1.101102783203125e+03, -7.145115356445312e+02, -5.269418334960938e+02, -4.438111572265625e+02, -3.901462707519531e+02, -3.518876953125e+02, -3.232227783203125e+02, -3.030870666503906e+02, -2.86881103515625e+02, -2.735665283203125e+02, -2.544134216308593e+02, -2.228457641601562e+02, -2.093706359863281e+02, -2.158947906494141e+02, -2.237151184082031e+02, -2.281623229980469e+02, -2.293626708984375e+02, -2.3112890625e+02, -2.388393707275391e+02, -2.567418212890625e+02, -2.920544128417969e+02, -3.536243591308594e+02, -4.564125366210938e+02, -5.82278076171875e+02, -7.130078735351562e+02, -8.35980224609375e+02, -9.416583251953125e+02, -1.031559326171875e+03, -1.110180053710938e+03, -1.180991577148438e+03, -1.24581591796875e+03, -1.305273803710938e+03, -1.3592626953125e+03, -1.407292236328125e+03, -1.44120068359375e+03, -1.45687255859375e+03, -1.465573852539062e+03, -1.471053466796875e+03, -1.474446899414062e+03, -1.476382934570312e+03, -1.47726171875e+03, -1.47733837890625e+03, -1.48214697265625e+03, -1.479381958007812e+03, -1.473913208007812e+03, -1.468219604492188e+03, -1.462490966796875e+03, -1.457040405273438e+03, -1.457309692382812e+03, -1.457313720703125e+03, -1.373270263671875e+03, -8.44130126953125e+02, -1.343333129882812e+03, -1.429890625e+03, -1.386951171875e+03, -1.338377197265625e+03, -1.29113818359375e+03, -1.252255981445312e+03, -1.224331787109375e+03, -1.20606494140625e+03, -1.194725830078125e+03, -1.187861694335938e+03, -1.183749145507812e+03, -1.181300415039062e+03, -1.17984814453125e+03, -1.178990356445312e+03, -1.178484985351562e+03, -1.178185668945312e+03, -1.17800830078125e+03, -1.177904541015625e+03, -1.177843017578125e+03, -1.177806518554688e+03, -1.177785278320312e+03, -1.177772705078125e+03, -1.177765014648438e+03, -1.17776025390625e+03, -1.177757568359375e+03, -1.177756103515625e+03, -1.177755493164062e+03, -1.177755126953125e+03, -1.1777548828125e+03, -1.1777548828125e+03, -1.1777548828125e+03, -1.1777548828125e+03] +hex.QLat2_flow=[0e+00, -6.118687744140625e+02, -8.875252075195312e+02, -6.390120849609375e+02, -9.306366577148438e+02, -5.805853881835938e+02, -9.608472900390625e+02, -5.485404663085934e+02, -3.387897338867188e+02, -3.864946594238281e+02, -5.202697143554688e+02, -6.45977783203125e+02, -7.095077514648438e+02, -7.291743774414062e+02, -7.339454956054688e+02, -7.358116455078125e+02, -7.370817260742188e+02, -6.929219970703125e+02, -4.353491821289062e+02, -3.037178344726562e+02, -2.433479919433594e+02, -2.037762756347656e+02, -1.753660736083984e+02, -1.539808502197266e+02, -1.393938446044922e+02, -1.273692474365234e+02, -1.174692077636719e+02, -1.034595260620116e+02, -7.991397094726557e+01, -6.953504180908203e+01, -7.432122039794922e+01, -8.017205047607422e+01, -8.349315643310547e+01, -8.439765930175781e+01, -8.562483215332031e+01, -9.130222320556641e+01, -1.044275588989258e+02, -1.302554168701172e+02, -1.750077362060547e+02, -2.512617492675781e+02, -3.421306457519531e+02, -4.359482421875e+02, -5.208724365234375e+02, -5.920370483398438e+02, -6.511632690429688e+02, -7.01760986328125e+02, -7.46406982421875e+02, -7.864715576171875e+02, -8.225046997070312e+02, -8.546004028320312e+02, -8.826246337890625e+02, -9.018363037109375e+02, -9.1048974609375e+02, -9.153230590820312e+02, -9.183797607421875e+02, -9.202758178710938e+02, -9.213616943359375e+02, -9.218600463867188e+02, -9.219122314453125e+02, -9.2477880859375e+02, -9.230382690429688e+02, -9.19927734375e+02, -9.167344970703125e+02, -9.135220336914062e+02, -9.104606323242188e+02, -9.106502075195312e+02, -9.106529541015625e+02, -8.585176391601562e+02, -5.237025756835938e+02, -8.5232861328125e+02, -8.952094116210938e+02, -8.693079223632812e+02, -8.4073681640625e+02, -8.1267822265625e+02, -7.893203735351562e+02, -7.723917846679688e+02, -7.612457275390625e+02, -7.54296630859375e+02, -7.500780029296875e+02, -7.475458984375e+02, -7.460366821289062e+02, -7.451409912109375e+02, -7.4461181640625e+02, -7.442999877929688e+02, -7.44115234375e+02, -7.440057983398438e+02, -7.439417114257812e+02, -7.439036865234375e+02, -7.438812255859375e+02, -7.438681030273438e+02, -7.438603515625e+02, -7.438555908203125e+02, -7.438526611328125e+02, -7.438510131835938e+02, -7.438501586914062e+02, -7.438497314453125e+02, -7.438494873046875e+02, -7.43849365234375e+02, -7.43849365234375e+02, -7.43849365234375e+02, -7.43849365234375e+02] +hex.QSen2_flow=[0e+00, -3.704920959472656e+02, -5.134429931640625e+02, -3.775372924804688e+02, -5.636192016601562e+02, -3.4966455078125e+02, -5.651259155273438e+02, -3.358949584960936e+02, -2.378171234130859e+02, -2.565035400390625e+02, -3.14698974609375e+02, -3.7727099609375e+02, -4.134908142089844e+02, -4.257558898925781e+02, -4.288370971679688e+02, -4.299906311035156e+02, -4.307527465820312e+02, -4.081807556152344e+02, -2.791623229980469e+02, -2.232239990234375e+02, -2.004631500244141e+02, -1.863699951171875e+02, -1.765216217041016e+02, -1.692419281005859e+02, -1.636932067871094e+02, -1.595118713378906e+02, -1.560973052978516e+02, -1.509539031982422e+02, -1.429317932128906e+02, -1.398355865478516e+02, -1.415735778808594e+02, -1.435430755615234e+02, -1.446691589355469e+02, -1.449650115966797e+02, -1.455040740966797e+02, -1.475371551513672e+02, -1.523142700195312e+02, -1.617989959716797e+02, -1.786166076660156e+02, -2.051508026123047e+02, -2.401474151611328e+02, -2.770596008300781e+02, -3.151077575683594e+02, -3.496212768554688e+02, -3.803960571289062e+02, -4.084190368652344e+02, -4.345846557617188e+02, -4.593443298339844e+02, -4.827690734863281e+02, -5.046622619628906e+02, -5.246676025390625e+02, -5.393643798828125e+02, -5.463828125e+02, -5.502507934570312e+02, -5.526737060546875e+02, -5.541710205078125e+02, -5.55021240234375e+02, -5.554017333984375e+02, -5.554261474609375e+02, -5.573681640625e+02, -5.563436279296875e+02, -5.539854125976562e+02, -5.51485107421875e+02, -5.48968994140625e+02, -5.465797729492188e+02, -5.46659423828125e+02, -5.466608276367188e+02, -5.14752685546875e+02, -3.204275817871094e+02, -4.910045471191406e+02, -5.346812133789062e+02, -5.176432495117188e+02, -4.976403503417969e+02, -4.784598999023438e+02, -4.62935546875e+02, -4.519400024414062e+02, -4.448192749023438e+02, -4.404292602539062e+02, -4.377837219238281e+02, -4.362032470703125e+02, -4.352638244628906e+02, -4.347071533203125e+02, -4.343785400390625e+02, -4.3418505859375e+02, -4.340704345703125e+02, -4.340025634765625e+02, -4.339627990722656e+02, -4.339392395019531e+02, -4.3392529296875e+02, -4.339171752929688e+02, -4.33912353515625e+02, -4.33909423828125e+02, -4.339075927734375e+02, -4.339065856933594e+02, -4.339060363769531e+02, -4.3390576171875e+02, -4.339056396484375e+02, -4.339055480957031e+02, -4.339055480957031e+02, -4.339055480957031e+02, -4.339055480957031e+02] From 31f8968f759eeafabaaddd9b5d3b871d6eb599ea Mon Sep 17 00:00:00 2001 From: SenHuang19 Date: Tue, 18 Jun 2024 12:34:18 -0400 Subject: [PATCH 186/214] model and doc improve --- .../PIDWithAutotuning/FirstOrderAMIGO.mo | 22 +++++++++---------- .../BaseClasses/TimeConstantDelay.mo | 22 ++++++++++++------- .../ControlProcessModel.mo | 15 ++++++++----- 3 files changed, 33 insertions(+), 26 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index dbdcdecd11e..bc1fd6ddb92 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -148,9 +148,7 @@ protected then Buildings.Controls.OBC.CDL.Types.SimpleController.PI else Buildings.Controls.OBC.CDL.Types.SimpleController.PID "Type of controller"; - Buildings.Controls.OBC.CDL.Utilities.Assert assMes2( - message="*** Warning: the relay output needs to be asymmetric. - Check the value of yHig, yLow and yRef.") + Buildings.Controls.OBC.CDL.Utilities.Assert assMes2(message="*** Warning: the relay output needs to be asymmetric. Check the value of yHig, yLow and yRef.") "Warning message when the relay output is symmetric" annotation (Placement(transformation(extent={{62,140},{82,160}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant con1(final k=yHig) @@ -186,9 +184,7 @@ protected Buildings.Controls.OBC.CDL.Logical.Nand nand "Check if an autotuning is ongoing while a new autotuning request is received" annotation (Placement(transformation(extent={{120,-72},{140,-52}}))); - Buildings.Controls.OBC.CDL.Utilities.Assert assMes1( - message="*** Warning: An autotuning is ongoing and - the new autotuning request is ignored.") + Buildings.Controls.OBC.CDL.Utilities.Assert assMes1(message="*** Warning: An autotuning is ongoing and the new autotuning request is ignored.") "Warning message when an autotuning tuning is ongoing while a new autotuning request is received" annotation (Placement(transformation(extent={{148,-72},{168,-52}}))); @@ -210,17 +206,19 @@ protected Buildings.Controls.OBC.CDL.Logical.Nand nand1 "Check if an autotuning is ongoing while the setpoint changes" annotation (Placement(transformation(extent={{100,220},{120,240}}))); - Buildings.Controls.OBC.CDL.Reals.Subtract sub3 "Change of the setpoint" + Buildings.Controls.OBC.CDL.Reals.Subtract sub3 + "Change of the setpoint" annotation (Placement(transformation(extent={{-38,220},{-18,240}}))); Buildings.Controls.OBC.CDL.Reals.Abs abs2 "Absolute value of the setpoint change" annotation (Placement(transformation(extent={{0,220},{20,240}}))); - Buildings.Controls.OBC.CDL.Reals.Greater gre1 "Check if the setpoint changes" + Buildings.Controls.OBC.CDL.Reals.Greater gre1 + "Check if the setpoint changes" annotation (Placement(transformation(extent={{50,220},{70,240}}))); Buildings.Controls.OBC.CDL.Utilities.Assert assMes3(message= "In " + getInstanceName() + ": the setpoint must not change when an autotuning tuning is ongoing.") - "Warning message when the relay output is symmetric" + "Warning message when the setpoint changes during the autotuning" annotation (Placement(transformation(extent={{140,220},{160,240}}))); equation connect(con.u_s, u_s) annotation (Line(points={{-52,-40},{-60,-40},{-60,0},{-200, @@ -361,7 +359,7 @@ This block implements a rule-based PID tuning method. The PID tuning method approximates the control process with a first-order time delayed (FOTD) model. It then determines the gain and delay of this FOTD model based on the responses of -the control process to an asymmetric relay feedback. +the control process to asymmetric relay feedback. After that, taking the gain and delay of this FOTD mode as inputs, this PID tuning method calculates the PID gains with an Approximate M-constrained Integral Gain Optimization (AMIGO) Tuner.

                                                                              @@ -376,7 +374,7 @@ PID controller.

                                                                              Autotuning Process

                                                                              -To use this block, place it in an control loop as any other PID controller. +To use this block, place it in a control loop as any other PID controller. Before the PID tuning process starts, this block is equivalent to Buildings.Controls.OBC.Utilities.PIDWithInputGains. @@ -397,7 +395,7 @@ at which point this block turns back to a PID controller but with tuned PID para Note: If an autotuning is ongoing, i.e., inTunPro.y = true, a request for performing autotuning will be ignored.

                                                                              -

                                                                              Guidance for settings the parameters

                                                                              +

                                                                              Guidance for setting the parameters

                                                                              The performance of the autotuning is affected by the parameters, including the typical range of control error, r, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/TimeConstantDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/TimeConstantDelay.mo index ae34ec856d3..ef4fb9bf30b 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/TimeConstantDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/TimeConstantDelay.mo @@ -28,7 +28,7 @@ block TimeConstantDelay min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Time constant" annotation (Placement(transformation(extent={{180,80},{220,120}}), - iconTransformation(extent={{100,40},{140,80}}))); + iconTransformation(extent={{100,60},{140,100}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput L( final quantity="Time", final unit="s", @@ -88,18 +88,22 @@ protected Buildings.Controls.OBC.CDL.Reals.Log log "Natural logarithm of the input" annotation (Placement(transformation(extent={{-40,-110},{-20,-90}}))); - Buildings.Controls.OBC.CDL.Reals.Greater gre1 + Buildings.Controls.OBC.CDL.Reals.Greater gre1(h=0) "Check if the input is less than 0" annotation (Placement(transformation(extent={{38,-130},{58,-110}}))); Buildings.Controls.OBC.CDL.Reals.Max max1 "Avoid a negative input for the log function" annotation (Placement(transformation(extent={{-82,-110},{-62,-90}}))); - Buildings.Controls.OBC.CDL.Logical.Edge edg "True only when an error occurs" + Buildings.Controls.OBC.CDL.Logical.Edge edg + "True when an negative input is given for the log function" annotation (Placement(transformation(extent={{102,-130},{122,-110}}))); - Buildings.Controls.OBC.CDL.Reals.Sources.Constant con1(final k=1e-6) + Buildings.Controls.OBC.CDL.Reals.Sources.Constant con(final k=1e-6) "Constant" annotation (Placement(transformation(extent={{-160,-130},{-140,-110}}))); + Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter gai(k=-1) + "Opposite of the input" + annotation (Placement(transformation(extent={{2,-120},{14,-108}}))); equation connect(absk.u, k) annotation (Line(points={{-162,0},{-200,0}},color={0,0,127})); @@ -151,14 +155,16 @@ equation annotation (Line(points={{-42,-100},{-60,-100}}, color={0,0,127})); connect(gre1.u2, div2.y) annotation (Line(points={{36,-128},{-90,-128},{-90, -50},{146,-50},{146,-70},{142,-70}}, color={0,0,127})); - connect(con1.y, max1.u2) annotation (Line(points={{-138,-120},{-114,-120},{ - -114,-106},{-84,-106}}, color={0,0,127})); + connect(con.y, max1.u2) annotation (Line(points={{-138,-120},{-114,-120},{-114, + -106},{-84,-106}}, color={0,0,127})); connect(gre1.y, edg.u) annotation (Line(points={{60,-120},{100,-120}}, color={255,0,255})); connect(edg.y, triFai) annotation (Line(points={{124,-120},{200,-120}}, color={255,0,255})); - connect(gre1.u1, con1.y) - annotation (Line(points={{36,-120},{-138,-120}}, color={0,0,127})); + connect(gre1.u1, gai.y) annotation (Line(points={{36,-120},{20,-120},{20,-114}, + {15.2,-114}}, color={0,0,127})); + connect(gai.u, con.y) annotation (Line(points={{0.8,-114},{-14,-114},{-14,-120}, + {-138,-120}}, color={0,0,127})); annotation ( defaultComponentName = "timConDel", Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{100,100}}), diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo index 936e1d8fe10..fb16c7a6c0e 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo @@ -121,10 +121,11 @@ protected Buildings.Controls.OBC.CDL.Logical.And and2 "Check if the autotuning completes successfully" annotation (Placement(transformation(extent={{80,-80},{100,-60}}))); - Buildings.Controls.OBC.CDL.Utilities.Assert assMes4( - message="In " + getInstanceName() + ": autotuning fails, see earlier warnings - for possible reasons") + Buildings.Controls.OBC.CDL.Utilities.Assert assMes4(message="In " + + getInstanceName() + ": autotuning fails, see earlier warnings for possible reasons, the controller gains are unchanged.") "Warning message when an autotuning fails" + annotation (Placement(transformation(extent={{134,50},{154,70}}))); + Buildings.Controls.OBC.CDL.Logical.Not not2 "Check if an error occurs" annotation (Placement(transformation(extent={{100,50},{120,70}}))); equation connect(gain.u, u) annotation (Line(points={{-122,28},{-140,28},{-140,80},{-180, @@ -136,7 +137,7 @@ equation connect(gain.triSta, triSta) annotation (Line(points={{-110,8},{-110,-120}}, color={255,0,255})); connect(timConDel.T, samT.u) - annotation (Line(points={{82,26},{100,26},{100,20},{118,20}}, color={0,0,127})); + annotation (Line(points={{82,28},{100,28},{100,20},{118,20}}, color={0,0,127})); connect(samT.y, T) annotation (Line(points={{142,20},{148,20},{148,40},{180,40}}, color={0,0,127})); @@ -188,8 +189,10 @@ equation 130,-90},{130,-120}}, color={255,0,255})); connect(timConDel.triFai, not1.u) annotation (Line(points={{82,12},{86,12},{86, 0},{8,0},{8,-50},{38,-50}}, color={255,0,255})); - connect(assMes4.u, timConDel.triFai) annotation (Line(points={{98,60},{86,60}, - {86,12},{82,12}}, color={255,0,255})); + connect(not2.y, assMes4.u) + annotation (Line(points={{122,60},{132,60}}, color={255,0,255})); + connect(not2.u, timConDel.triFai) annotation (Line(points={{98,60},{96,60},{96, + 12},{82,12}}, color={255,0,255})); annotation ( defaultComponentName = "conProMod", Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{100, From 0919cf66b84a69b1c4423f034a8655fcc78f2833 Mon Sep 17 00:00:00 2001 From: SenHuang19 Date: Tue, 18 Jun 2024 12:34:37 -0400 Subject: [PATCH 187/214] example update --- .../WetCoilCounterFlowPControlAutoTuning.mo | 20 ++++++++++++------- .../WetCoilCounterFlowPControlAutoTuning.mos | 2 +- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo b/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo index 18824834296..e0036c8a505 100644 --- a/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo +++ b/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo @@ -1,6 +1,6 @@ within Buildings.Fluid.HeatExchangers.Examples; model WetCoilCounterFlowPControlAutoTuning - "Model that demonstrates use of a heat exchanger with condensation and with autotuning feedback control" + "Model that demonstrates the use of a heat exchanger with condensation and autotuning feedback control" extends Modelica.Icons.Example; package Medium1 = Buildings.Media.Water; package Medium2 = Buildings.Media.Air; @@ -188,12 +188,18 @@ This example is identical to Buildings.Fluid.HeatExchangers.Examples.WetCoilCounterFlowMassFlow except that the PI controller is replaced by an autotuning PI controller.

                                                                              -

                                                                              -The autotuning is triggered at 400s and stops automatically. -When it stops, the tuned PI parameters are put into effect to replace the default parameter values. -For details of the autotuning, refer to -Buildings.Controls.OBC.Utilities.PIDWithAutotuning.FirstOrderAMIGO. -

                                                                              +The autotuning is triggered twice. +
                                                                                +
                                                                              • +The first one occurs at 100s and it completes successfully. +The tuned PI parameters are put into effect at 215s. +
                                                                              • +
                                                                              • +The second one occurs at 2100s and it fails because the setpoint +changes at 2400s. +The PI parameters are kept unchanged. +
                                                                              • +
                                                                              ", revisions="
                                                                                diff --git a/Buildings/Resources/Scripts/Dymola/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mos b/Buildings/Resources/Scripts/Dymola/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mos index c047ee4b638..646ddecbad6 100644 --- a/Buildings/Resources/Scripts/Dymola/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mos +++ b/Buildings/Resources/Scripts/Dymola/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mos @@ -1,4 +1,4 @@ -simulateModel("Buildings.Fluid.HeatExchangers.Examples.WetCoilCounterFlowPControlAutoTuning", stopTime=3600, method="dassl", tolerance=1e-6, resultFile="WetCoilCounterFlowPControlAutoTuning"); +simulateModel("Buildings.Fluid.HeatExchangers.Examples.WetCoilCounterFlowPControlAutoTuning", stopTime=3600, method="CVode", tolerance=1e-6, resultFile="WetCoilCounterFlowPControlAutoTuning"); createPlot(id=4, position={11, 21, 1280, 1012}, y={"hex.m1_flow", "hex.m2_flow"}, range={0.0, 3600.0, -0.05, 0.15}, grid=true, subPlot=101, colors={{28,108,200}, {238,46,47}}, timeUnit="s", displayUnits={"kg/s", "kg/s"}); createPlot(id=4, position={11, 21, 1280, 1012}, y={"con.u_s", "con.u_m"}, range={0.0, 3600.0, 280.0, 300.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}, timeUnit="s"); createPlot(id=4, position={11, 21, 1280, 1012}, y={"hex.Q1_flow", "hex.Q2_flow", "hex.QLat2_flow", "hex.QSen2_flow"}, range={0.0, 3600.0, -2000.0, 2000.0}, grid=true, subPlot=103, colors={{28,108,200}, {238,46,47}, {0,140,72}, {217,67,180}}, timeUnit="s", displayUnits={"W", "W", "W", "W"}); From 8c19758537c48bc04f0664402500c4fd211f642f Mon Sep 17 00:00:00 2001 From: SenHuang19 Date: Sun, 23 Jun 2024 22:41:05 -0400 Subject: [PATCH 188/214] model doc update --- .../AMIGO/BaseClasses/PIIntegralTime.mo | 8 ++++---- .../Validation/PIDDerivativeTime.mo | 2 +- .../AutoTuner/AMIGO/Validation/PID.mo | 2 +- .../PIDWithAutotuning/FirstOrderAMIGO.mo | 16 ++++++++-------- .../BaseClasses/SamplerWithResetThreshold.mo | 2 +- .../BaseClasses/Validation/HalfPeriodRatio.mo | 2 +- .../BaseClasses/Validation/TuningMonitor.mo | 2 +- .../BaseClasses/TimeConstantDelay.mo | 4 ++-- .../ControlProcessModel.mo | 2 +- .../WetCoilCounterFlowPControlAutoTuning.mo | 18 +++++++----------- 10 files changed, 27 insertions(+), 31 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIIntegralTime.mo index 742e9e351ad..cec3bc39245 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIIntegralTime.mo @@ -36,19 +36,19 @@ protected annotation (Placement(transformation(extent={{0,-4},{20,16}}))); Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter gai1( final k=12) - "Block that calculates products of a constant and the input" + "Block that calculates the product of a constant and the input" annotation (Placement(transformation(extent={{-40,-70},{-20,-50}}))); Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter gai2( final k=7) - "Block that calculates products of a constant and the input" + "Block that calculates the product of a constant and the input" annotation (Placement(transformation(extent={{-80,-90},{-60,-70}}))); Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter gai3( final k=13) - "Block that calculates products of a constant and the input" + "Block that calculates the product of a constant and the input" annotation (Placement(transformation(extent={{-20,70},{-40,90}}))); Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter gai4( final k=0.35) - "Block that calculates products of a constant and the input" + "Block that calculates the product of a constant and the input" annotation (Placement(transformation(extent={{-80,-30},{-60,-10}}))); Buildings.Controls.OBC.CDL.Reals.Multiply mul1 "Block that calculates the product of the two inputs" diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/Validation/PIDDerivativeTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/Validation/PIDDerivativeTime.mo index b123d0d9c88..9c249eb35f3 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/Validation/PIDDerivativeTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/Validation/PIDDerivativeTime.mo @@ -1,5 +1,5 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.BaseClasses.Validation; -model PIDDerivativeTime "Test model for calculating the integral time for a PID controller" +model PIDDerivativeTime "Test model for calculating the derivative time for a PID controller" Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.BaseClasses.PIDDerivativeTime PIDDerTim "Blocks that calculates the integral time" diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo index 280e16d2dbd..f623dfbf5a7 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo @@ -1,7 +1,7 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.Validation; model PID "Test model for calculating parameters of a PID controller" Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PID PID - "Blocks that calculates the control gain, the integral time, and the derivative time" + "Block that calculates the control gain, the integral time, and the derivative time" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Ramp kp( duration=1, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index bc1fd6ddb92..35848d34030 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -46,7 +46,7 @@ block FirstOrderAMIGO annotation (Dialog(tab="Advanced",group="Integrator anti-windup")); parameter Real Nd( min=100*Buildings.Controls.OBC.CDL.Constants.eps)=10 - "The higher Nd, the more ideal the derivative block" + "The higher the Nd, the more ideal the derivative block" annotation (Dialog(tab="Advanced",group="Derivative block",enable=controllerType ==Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PID)); parameter Real xi_start=0 "Initial value of integrator state" @@ -139,7 +139,7 @@ block FirstOrderAMIGO Buildings.Controls.OBC.CDL.Logical.Latch inTunPro "Outputs true if the controller is conducting the autotuning process" annotation (Placement(transformation(extent={{20,-30},{40,-10}}))); -protected +//protected final parameter Boolean with_D=controllerType == Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PID "Boolean flag to enable derivative action" annotation (Evaluate=true,HideResult=true); @@ -341,8 +341,6 @@ equation annotation (Line(points={{72,230},{98,230}}, color={255,0,255})); connect(nand1.u2, tunStaDel.y) annotation (Line(points={{98,222},{86,222},{86, 182},{118,182},{118,-30},{102,-30}}, color={255,0,255})); - connect(sam_u_s.trigger, resPro.triSta) annotation (Line(points={{-90,242},{-90, - 248},{-160,248},{-160,16},{44,16},{44,36},{22,36}}, color={255,0,255})); connect(conProMod.triEnd, resPro.triEnd) annotation (Line(points={{56,58},{56,32},{22,32}}, color={255,0,255})); connect(conProMod.tunSta, samk.trigger) annotation (Line(points={{62,62},{62, @@ -351,6 +349,8 @@ equation {-108,-38},{-108,6},{62,6},{62,62}}, color={255,0,255})); connect(samTd.trigger, conProMod.tunSta) annotation (Line(points={{-130,-68}, {-130,6},{62,6},{62,62}}, color={255,0,255})); + connect(sam_u_s.trigger, triTun) annotation (Line(points={{-90,242},{-90,252}, + {-154,252},{-154,-96},{60,-96},{60,-120}}, color={255,0,255})); annotation (Documentation(info="

                                                                                This block implements a rule-based PID tuning method. @@ -374,7 +374,7 @@ PID controller.

                                                                                Autotuning Process

                                                                                -To use this block, place it in a control loop as any other PID controller. +To use this block, place it in a control loop as any other PID controllers. Before the PID tuning process starts, this block is equivalent to Buildings.Controls.OBC.Utilities.PIDWithInputGains. @@ -401,7 +401,7 @@ The performance of the autotuning is affected by the parameters, including the typical range of control error, r, the reference output for the tuning process, yRef, the lower value for the relay output, yLow, and the deadband, deaBan. -The following procedure can be used for determining the values of those parameters. +The following procedure can be used to determine the values of those parameters.

                                                                                1. @@ -425,8 +425,8 @@ When determining the deaBan, we first divide the maximum and the minimum deviations of measurement from the setpoint by the r, respectively. We then calculate the absolute values of the two deviations. -After, we set the deaBan to be half of the smaller one among those -absolute values. +After, we set the deaBan to be half of the smaller one between those +two absolute values.

                                                                                References

                                                                                diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/SamplerWithResetThreshold.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/SamplerWithResetThreshold.mo index 0500f8060f7..0cb00b0ab25 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/SamplerWithResetThreshold.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/SamplerWithResetThreshold.mo @@ -10,7 +10,7 @@ block SamplerWithResetThreshold annotation (Placement(transformation(extent={{-140,-10},{-100,30}}), iconTransformation(extent={{-140,40},{-100,80}}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanInput trigger - "Resets the output when trigger becomes true" + "Reset the output when trigger becomes true" annotation (Placement(transformation(extent={{-140,-100},{-100,-60}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput y diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/HalfPeriodRatio.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/HalfPeriodRatio.mo index 1ad2a66148d..546c4764781 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/HalfPeriodRatio.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/HalfPeriodRatio.mo @@ -30,7 +30,7 @@ model HalfPeriodRatio "Test model for calculating the half period ratio" "The length of the off period" annotation (Placement(transformation(extent={{-80,-70},{-60,-50}}))); Buildings.Controls.OBC.CDL.Logical.Sources.SampleTrigger samTri(period=1, shift=0.9) - "True endi sampling" + "Stop signal for tuning" annotation (Placement(transformation(extent={{-80,-20},{-60,0}}))); equation connect(tOff.y, halPerRat.tOff) annotation (Line(points={{-58,-60},{12,-60},{ diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/TuningMonitor.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/TuningMonitor.mo index c9d40c50d93..0d7604dca79 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/TuningMonitor.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/Validation/TuningMonitor.mo @@ -90,7 +90,7 @@ Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.TuningMonit
                                                                                • At 0.1s, the length of the on period becomes 0.1s, -triggering the training period to start. +triggering the tuning period to start.
                                                                                • At 0.7s, the length of the off period becomes 0.5s. diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/TimeConstantDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/TimeConstantDelay.mo index ef4fb9bf30b..6e7e661ac76 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/TimeConstantDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/TimeConstantDelay.mo @@ -66,7 +66,7 @@ protected "Sum of the higher value for the output and the lower value for the output" annotation (Placement(transformation(extent={{-60,20},{-40,40}}))); Buildings.Controls.OBC.CDL.Reals.Divide div1 - "Quotient of dead band divided by the absolute value of the gain" + "Quotient of deadband divided by the absolute value of the gain" annotation (Placement(transformation(extent={{-20,-30},{0,-10}}))); Buildings.Controls.OBC.CDL.Reals.Divide div2 "Blocks that calculates input 1 by input 2" @@ -102,7 +102,7 @@ protected "Constant" annotation (Placement(transformation(extent={{-160,-130},{-140,-110}}))); Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter gai(k=-1) - "Opposite of the input" + "Opposite of the input" annotation (Placement(transformation(extent={{2,-120},{14,-108}}))); equation connect(absk.u, k) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo index fb16c7a6c0e..a575d8bef9a 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo @@ -236,7 +236,7 @@ First implementation
                                                                                ", info="

                                                                                -This block calculates the model parameters of a first-order time delayed model. +This block that calculates the model parameters of a first-order time delayed model. Specifically, it employs Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.BaseClasses.Gain diff --git a/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo b/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo index e0036c8a505..d987fd7a056 100644 --- a/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo +++ b/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo @@ -104,7 +104,7 @@ model WetCoilCounterFlowPControlAutoTuning height=5, offset=T_a1_nominal, startTime=300, - duration=2000) "Water temperature, raised to high value at t=3000 s" + duration=2000) "Water temperature, raised to a high value at t=3000 s" annotation (Placement(transformation(extent={{-80,54},{-60,74}}))); Buildings.Controls.OBC.CDL.Logical.Sources.Constant resSig(k=false) "Reset signal" @@ -184,19 +184,19 @@ __Dymola_Commands(file="modelica://Buildings/Resources/Scripts/Dymola/Fluid/Heat Documentation(info="

                                                                                This example is identical to - -Buildings.Fluid.HeatExchangers.Examples.WetCoilCounterFlowMassFlow except that the PI controller + +Buildings.Fluid.HeatExchangers.Examples.WetCoilCounterFlowPControl except that the PI controller is replaced by an autotuning PI controller.

                                                                                The autotuning is triggered twice.
                                                                                • -The first one occurs at 100s and it completes successfully. -The tuned PI parameters are put into effect at 215s. +The first one occurs at 100 seconds and it completes successfully. +The tuned PI parameters are put into effect at 215 seconds.
                                                                                • -The second one occurs at 2100s and it fails because the setpoint -changes at 2400s. +The second one occurs at 2100 seconds and it fails because the setpoint +changes at 2400 seconds. The PI parameters are kept unchanged.
                                                                                @@ -204,10 +204,6 @@ The PI parameters are kept unchanged. revisions="
                                                                                • -April 3, 2024, by Sen Huang:
                                                                                  -Added parameter values. -
                                                                                • -
                                                                                • March 8, 2024, by Michael Wetter:
                                                                                  Removed wrong normalization.
                                                                                • From e7e0d47da0ab6a6f35345ecd3e38d7b9f4181786 Mon Sep 17 00:00:00 2001 From: SenHuang19 Date: Sun, 23 Jun 2024 22:51:38 -0400 Subject: [PATCH 189/214] model doc update --- .../FirstOrderTimedelayed/ControlProcessModel.mo | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo index a575d8bef9a..b0d35cde74f 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo @@ -122,7 +122,8 @@ protected "Check if the autotuning completes successfully" annotation (Placement(transformation(extent={{80,-80},{100,-60}}))); Buildings.Controls.OBC.CDL.Utilities.Assert assMes4(message="In " + - getInstanceName() + ": autotuning fails, see earlier warnings for possible reasons, the controller gains are unchanged.") + getInstanceName() + + ": an autotuning fails, see earlier warnings for possible reasons, the controller gains are unchanged.") "Warning message when an autotuning fails" annotation (Placement(transformation(extent={{134,50},{154,70}}))); Buildings.Controls.OBC.CDL.Logical.Not not2 "Check if an error occurs" From 3b5b6d25b9bc13c6e0d5a9b7c92f5c87557bf5b8 Mon Sep 17 00:00:00 2001 From: SenHuang19 Date: Mon, 24 Jun 2024 22:10:20 -0400 Subject: [PATCH 190/214] format update --- .../OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo | 6 +++--- .../FirstOrderTimedelayed/ControlProcessModel.mo | 2 +- .../Examples/WetCoilCounterFlowPControlAutoTuning.mo | 3 +-- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index 35848d34030..f154a13c3a1 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -139,7 +139,7 @@ block FirstOrderAMIGO Buildings.Controls.OBC.CDL.Logical.Latch inTunPro "Outputs true if the controller is conducting the autotuning process" annotation (Placement(transformation(extent={{20,-30},{40,-10}}))); -//protected +protected final parameter Boolean with_D=controllerType == Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PID "Boolean flag to enable derivative action" annotation (Evaluate=true,HideResult=true); @@ -236,11 +236,11 @@ equation connect(modTim.y, resPro.tim) annotation (Line(points={{-38,70},{-26,70},{-26, 46},{-2,46}},color={0,0,127})); connect(resPro.tau, conProMod.tau) annotation (Line(points={{22,40},{34,40},{34, - 62},{38,62}}, color={0,0,127})); + 62},{38,62}}, color={0,0,127})); connect(conProMod.tOff, resPro.tOff) annotation (Line(points={{38,66},{30,66}, {30,44},{22,44}},color={0,0,127})); connect(resPro.tOn, conProMod.tOn) annotation (Line(points={{22,48},{26,48},{26, - 74},{38,74}}, color={0,0,127})); + 74},{38,74}}, color={0,0,127})); connect(rel.yDif, conProMod.u) annotation (Line(points={{-38,30},{-14,30},{-14, 78},{38,78}}, color={0,0,127})); connect(PIDPar.kp, conProMod.k) annotation (Line(points={{78,36},{66,36},{66,78}, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo index b0d35cde74f..9f710bff25b 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo @@ -65,7 +65,7 @@ block ControlProcessModel annotation (Placement(transformation(extent={{160,-60},{200,-20}}), iconTransformation(extent={{100,-60},{140,-20}}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput tunSta - "Autotuning status, true when the autotuning completes successfully" + "True when the autotuning completes successfully" annotation (Placement(transformation(extent={{160,-100},{200,-60}}), iconTransformation(extent={{100,-100},{140,-60}}))); protected diff --git a/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo b/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo index d987fd7a056..b84584e3ae1 100644 --- a/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo +++ b/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo @@ -39,8 +39,7 @@ model WetCoilCounterFlowPControlAutoTuning nPorts=1, use_T_in=true, p=300000 + 12000) - annotation (Placement(transformation(extent={{-40,50},{-20, - 70}}))); + annotation (Placement(transformation(extent={{-40,50},{-20,70}}))); Buildings.Fluid.FixedResistances.PressureDrop res_2( from_dp=true, redeclare package Medium = Medium2, From 93936090d2b6bdb779ae8884326105a96ea5a8ea Mon Sep 17 00:00:00 2001 From: SenHuang19 Date: Tue, 25 Jun 2024 22:41:03 -0400 Subject: [PATCH 191/214] format update --- .../Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo | 2 +- .../Validation/DirectActingPIDWithFirstOrderAMIGO.mo | 2 +- .../Validation/DirectActingPIWithFirstOrderAMIGO.mo | 2 +- .../Validation/ReverseActingPIDWithFirstOrderAMIGO.mo | 2 +- .../Validation/ReverseActingPIWithFirstOrderAMIGO.mo | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index f154a13c3a1..68f848e64b2 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -281,7 +281,7 @@ equation connect(rel.trigger, triTun) annotation (Line(points={{-56,18},{-56,0},{-6,0}, {-6,-70},{60,-70},{60,-120}}, color={255,0,255})); connect(resPro.trigger, triTun) annotation (Line(points={{-2,34},{-6,34},{-6,-70}, - {60,-70},{60,-120}}, color={255,0,255})); + {60,-70},{60,-120}}, color={255,0,255})); connect(nand.y, assMes1.u) annotation (Line(points={{142,-62},{146,-62}}, color={255,0,255})); connect(nand.u2, edgReq.y) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIDWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIDWithFirstOrderAMIGO.mo index d8b033b2adc..14b54b8a6d4 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIDWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIDWithFirstOrderAMIGO.mo @@ -6,7 +6,7 @@ model DirectActingPIDWithFirstOrderAMIGO annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.FirstOrderAMIGO PIDWitTun( controllerType=Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PID, - u_s_start=0.8, + u_s_start=0.8, yLow=0, deaBan=0.1, yRef=0.8, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIWithFirstOrderAMIGO.mo index 046b445392c..fce47a8ce6c 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIWithFirstOrderAMIGO.mo @@ -6,7 +6,7 @@ model DirectActingPIWithFirstOrderAMIGO annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.FirstOrderAMIGO PIWitTun( controllerType=Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PI, - u_s_start=0.8, + u_s_start=0.8, yLow=0, deaBan=0.1, yRef=0.8, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/ReverseActingPIDWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/ReverseActingPIDWithFirstOrderAMIGO.mo index 9c49c17938b..26d777618cd 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/ReverseActingPIDWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/ReverseActingPIDWithFirstOrderAMIGO.mo @@ -6,7 +6,7 @@ model ReverseActingPIDWithFirstOrderAMIGO annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.FirstOrderAMIGO PIDWitTun( controllerType=Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PID, - u_s_start=0.8, + u_s_start=0.8, yLow=0, deaBan=0.1, yRef=0.8) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/ReverseActingPIWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/ReverseActingPIWithFirstOrderAMIGO.mo index d76afc9b18e..8acafd9684a 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/ReverseActingPIWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/ReverseActingPIWithFirstOrderAMIGO.mo @@ -6,7 +6,7 @@ model ReverseActingPIWithFirstOrderAMIGO annotation (Placement(transformation(extent={{-80,0},{-60,20}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.FirstOrderAMIGO PIWitTun( controllerType=Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PI, - u_s_start=0.8, + u_s_start=0.8, yLow=0, deaBan=0.1, yRef=0.8) From 924f8ebc04545e2a3bb3201ac4377973c900777d Mon Sep 17 00:00:00 2001 From: SenHuang19 Date: Thu, 27 Jun 2024 10:12:06 -0400 Subject: [PATCH 192/214] improve model doc and add hys for checking differences --- .../PIDWithAutotuning/FirstOrderAMIGO.mo | 30 ++++++++++++------- .../ControlProcessModel.mo | 2 +- .../WetCoilCounterFlowPControlAutoTuning.mo | 2 +- 3 files changed, 21 insertions(+), 13 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index 68f848e64b2..9a40353f625 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -16,7 +16,8 @@ block FirstOrderAMIGO annotation (Dialog(group="Initial control gains, used prior to first tuning", enable=controllerType == Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PID)); parameter Real u_s_start - "Start value of the set point"; + "Start value of the set point" + annotation (Dialog(tab="Advanced",group="Initialization")); parameter Real r( min=100*Buildings.Controls.OBC.CDL.Constants.eps)=1 "Typical range of control error, used for scaling the control error"; @@ -61,6 +62,10 @@ block FirstOrderAMIGO "Value to which the controller output is reset if the boolean trigger has a rising edge" annotation (Dialog(group="Integrator reset")); + parameter Real SetHys = 0.001*r + "Hysteresis for checking set point"; + parameter Real SymHys = 0.001 + "Hysteresis for checking symmetricity"; Buildings.Controls.OBC.CDL.Interfaces.RealInput u_s "Connector of setpoint input signal" annotation (Placement(transformation(extent={{-220,-20},{-180,20}}),iconTransformation(extent={{-140,-20},{-100,20}}))); @@ -172,7 +177,8 @@ protected Buildings.Controls.OBC.CDL.Reals.Abs abs1 "Absolute value" annotation (Placement(transformation(extent={{-20,140},{0,160}}))); - Buildings.Controls.OBC.CDL.Reals.Greater gre + Buildings.Controls.OBC.CDL.Reals.Greater gre( + final h=SymHys) "Check if the relay output is asymmetric" annotation (Placement(transformation(extent={{20,140},{40,160}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant con4(final k=1e-3) @@ -212,7 +218,8 @@ protected Buildings.Controls.OBC.CDL.Reals.Abs abs2 "Absolute value of the setpoint change" annotation (Placement(transformation(extent={{0,220},{20,240}}))); - Buildings.Controls.OBC.CDL.Reals.Greater gre1 + Buildings.Controls.OBC.CDL.Reals.Greater gre1( + final h=SetHys) "Check if the setpoint changes" annotation (Placement(transformation(extent={{50,220},{70,240}}))); Buildings.Controls.OBC.CDL.Utilities.Assert assMes3(message= @@ -405,7 +412,9 @@ The following procedure can be used to determine the values of those parameters.

                                                                                  1. -Perform the simulation without enabling autotuning and with a constant set point. +Perform a \"test run\" to determine the maximum and the minimum values of measurement. +In this test run, the autotuning is disenabled and the set point is constant. +This test run should stop after the system is stable. Record the maximum and the minimum values of measurement after the system is stable.
                                                                                  2. @@ -417,16 +426,15 @@ The yRef can be determined by dividing the set point by the sum of minimum and the maximum values of the measurement.
                                                                                  3. -The yLow should be adjusted to realize an asymmetric relay output, +The yLow and yHig should be adjusted to realize an asymmetric relay output, i.e., yHig - yRef ≠ yRef - yLow.
                                                                                  4. -When determining the deaBan, we first divide the maximum and the -minimum deviations of measurement -from the setpoint by the r, respectively. -We then calculate the absolute values of the two deviations. -After, we set the deaBan to be half of the smaller one between those -two absolute values. + +When determining the deaBan, we first divide the maximum and the +minimum difference of measurement from the setpoint by the typical range of control error r, +then find the absolute value of the two deviations. +The deaBan can be set as half of the smaller one between the two absolute deviations.

                                                                                  References

                                                                                  diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo index 9f710bff25b..c7408705d41 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo @@ -237,7 +237,7 @@ First implementation
                                                                                ", info="

                                                                                -This block that calculates the model parameters of a first-order time delayed model. +This block calculates the model parameters of a first-order time delayed model. Specifically, it employs Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.BaseClasses.Gain diff --git a/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo b/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo index b84584e3ae1..fbf0dc04d2b 100644 --- a/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo +++ b/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo @@ -1,6 +1,6 @@ within Buildings.Fluid.HeatExchangers.Examples; model WetCoilCounterFlowPControlAutoTuning - "Model that demonstrates the use of a heat exchanger with condensation and autotuning feedback control" + "Model that demonstrates the use of a heat exchanger with condensation and with autotuning feedback control" extends Modelica.Icons.Example; package Medium1 = Buildings.Media.Water; package Medium2 = Buildings.Media.Air; From 28867950588166f2b48523bb7e24f2e4026a513f Mon Sep 17 00:00:00 2001 From: SenHuang19 Date: Thu, 27 Jun 2024 11:10:44 -0400 Subject: [PATCH 193/214] add Hys for comparing values --- .../Relay/BaseClasses/SamplerWithResetThreshold.mo | 3 +-- .../PIDWithAutotuning/Relay/BaseClasses/TuningMonitor.mo | 8 ++++---- .../BaseClasses/TimeConstantDelay.mo | 2 +- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/SamplerWithResetThreshold.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/SamplerWithResetThreshold.mo index 0cb00b0ab25..c7daa390cd9 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/SamplerWithResetThreshold.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/SamplerWithResetThreshold.mo @@ -32,8 +32,7 @@ protected annotation (Placement(transformation(origin={0,148}, extent={{-80,-90},{-60,-70}}))); Buildings.Controls.OBC.CDL.Logical.Or samTri "Sampling trigger" annotation (Placement(transformation(extent={{40,-30},{60,-10}}))); - Buildings.Controls.OBC.CDL.Reals.Greater gre( - final h=0) + Buildings.Controls.OBC.CDL.Reals.Greater gre(final h=1e-6) "Check if the input signal is larger than the threshold" annotation (Placement(transformation(origin={-8,-50}, extent={{-32,20},{-12,40}}))); Buildings.Controls.OBC.CDL.Reals.Switch swi diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/TuningMonitor.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/TuningMonitor.mo index 6e2cbc33369..e1870451a35 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/TuningMonitor.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/TuningMonitor.mo @@ -29,7 +29,7 @@ protected Buildings.Controls.OBC.CDL.Reals.Max tMax "Maximum value of the length for the on and Off period " annotation (Placement(transformation(origin={-50,-10}, extent = {{-80, 60}, {-60, 80}}))); - Buildings.Controls.OBC.CDL.Reals.Greater greThr + Buildings.Controls.OBC.CDL.Reals.Greater greThr(final h=1e-6) "Check if either the length for the on period or the length for the off period are larger than 0" annotation (Placement(transformation(origin={-40,10}, extent = {{-40, 40}, {-20, 60}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant minLen( @@ -39,13 +39,13 @@ protected Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samAddtOntOff "Sample the minimum period when the minimum period is greater than 0" annotation (Placement(transformation(extent={{-40,-20},{-20,0}}))); - Buildings.Controls.OBC.CDL.Reals.Greater tInc + Buildings.Controls.OBC.CDL.Reals.Greater tInc(final h=1e-6) "Check if either the length for the on period or the length for the off period increases after they both become positive" annotation (Placement(transformation(extent={{40,20},{60,40}}))); Buildings.Controls.OBC.CDL.Reals.Add addtOntOff "Block that calculates the sum of the length for the on period and the length for the off period" annotation (Placement(transformation(extent={{-130,-20},{-110,0}}))); - Buildings.Controls.OBC.CDL.Reals.Greater tDec + Buildings.Controls.OBC.CDL.Reals.Greater tDec(final h=1e-6) "Check if either the length for the on period or the length for the off period decreases after they both become positive" annotation (Placement(transformation(extent={{40,-70},{60,-50}}))); Buildings.Controls.OBC.CDL.Logical.Or tCha @@ -63,7 +63,7 @@ protected Buildings.Controls.OBC.CDL.Reals.Min tMin "Minimum value of the length for the on and Off period" annotation (Placement(transformation(extent={{-130,-90},{-110,-70}}))); - Buildings.Controls.OBC.CDL.Reals.Greater greThr1 + Buildings.Controls.OBC.CDL.Reals.Greater greThr1(final h=1e-6) "Check if both the length for the on period and the length for the off period are larger than 0" annotation (Placement(transformation(extent={{-80,-90},{-60,-70}}))); Buildings.Controls.OBC.CDL.Reals.Subtract sub "Find the input difference" diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/TimeConstantDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/TimeConstantDelay.mo index 6e7e661ac76..356b8c53dd5 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/TimeConstantDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/TimeConstantDelay.mo @@ -88,7 +88,7 @@ protected Buildings.Controls.OBC.CDL.Reals.Log log "Natural logarithm of the input" annotation (Placement(transformation(extent={{-40,-110},{-20,-90}}))); - Buildings.Controls.OBC.CDL.Reals.Greater gre1(h=0) + Buildings.Controls.OBC.CDL.Reals.Greater gre1(final h=1e-6) "Check if the input is less than 0" annotation (Placement(transformation(extent={{38,-130},{58,-110}}))); Buildings.Controls.OBC.CDL.Reals.Max max1 From 3facc3e045b34d2dc0fce0523a50bd0b4c74bdf8 Mon Sep 17 00:00:00 2001 From: SenHuang19 Date: Thu, 27 Jun 2024 11:26:25 -0400 Subject: [PATCH 194/214] improve the model doc --- .../Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index 9a40353f625..83a237a327d 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -191,8 +191,7 @@ protected "Check if an autotuning is ongoing while a new autotuning request is received" annotation (Placement(transformation(extent={{120,-72},{140,-52}}))); Buildings.Controls.OBC.CDL.Utilities.Assert assMes1(message="*** Warning: An autotuning is ongoing and the new autotuning request is ignored.") - "Warning message when an autotuning tuning - is ongoing while a new autotuning request is received" + "Warning message when an autotuning tuning is ongoing while a new autotuning request is received" annotation (Placement(transformation(extent={{148,-72},{168,-52}}))); Buildings.Controls.OBC.CDL.Logical.Edge edgReq "True only when a new request is received" @@ -406,15 +405,15 @@ a request for performing autotuning will be ignored.

                                                                                The performance of the autotuning is affected by the parameters, including the typical range of control error, r, -the reference output for the tuning process, yRef, the lower value for -the relay output, yLow, and the deadband, deaBan. +the reference output for the tuning process, yRef, the higher and the lower values for +the relay output, yHig and yLow, and the deadband, deaBan. The following procedure can be used to determine the values of those parameters.

                                                                                1. Perform a \"test run\" to determine the maximum and the minimum values of measurement. -In this test run, the autotuning is disenabled and the set point is constant. -This test run should stop after the system is stable. +In this test run, the autotuning is disabled and the set point is constant. +This test run should cover the period when the system is stable. Record the maximum and the minimum values of measurement after the system is stable.
                                                                                2. @@ -426,11 +425,10 @@ The yRef can be determined by dividing the set point by the sum of minimum and the maximum values of the measurement.
                                                                                3. -The yLow and yHig should be adjusted to realize an asymmetric relay output, +The yHig and yLow should be adjusted to realize an asymmetric relay output, i.e., yHig - yRef ≠ yRef - yLow.
                                                                                4. - When determining the deaBan, we first divide the maximum and the minimum difference of measurement from the setpoint by the typical range of control error r, then find the absolute value of the two deviations. From 4f49f33eff8e722eb827a966f712982875de94d3 Mon Sep 17 00:00:00 2001 From: SenHuang19 Date: Fri, 28 Jun 2024 11:03:40 -0400 Subject: [PATCH 195/214] update the hys --- .../OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo | 9 +++------ .../Relay/BaseClasses/SamplerWithResetThreshold.mo | 2 +- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index 83a237a327d..71749062274 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -62,10 +62,8 @@ block FirstOrderAMIGO "Value to which the controller output is reset if the boolean trigger has a rising edge" annotation (Dialog(group="Integrator reset")); - parameter Real SetHys = 0.001*r + parameter Real setHys = 0.05*r "Hysteresis for checking set point"; - parameter Real SymHys = 0.001 - "Hysteresis for checking symmetricity"; Buildings.Controls.OBC.CDL.Interfaces.RealInput u_s "Connector of setpoint input signal" annotation (Placement(transformation(extent={{-220,-20},{-180,20}}),iconTransformation(extent={{-140,-20},{-100,20}}))); @@ -177,8 +175,7 @@ protected Buildings.Controls.OBC.CDL.Reals.Abs abs1 "Absolute value" annotation (Placement(transformation(extent={{-20,140},{0,160}}))); - Buildings.Controls.OBC.CDL.Reals.Greater gre( - final h=SymHys) + Buildings.Controls.OBC.CDL.Reals.Greater gre "Check if the relay output is asymmetric" annotation (Placement(transformation(extent={{20,140},{40,160}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant con4(final k=1e-3) @@ -218,7 +215,7 @@ protected "Absolute value of the setpoint change" annotation (Placement(transformation(extent={{0,220},{20,240}}))); Buildings.Controls.OBC.CDL.Reals.Greater gre1( - final h=SetHys) + final h=setHys) "Check if the setpoint changes" annotation (Placement(transformation(extent={{50,220},{70,240}}))); Buildings.Controls.OBC.CDL.Utilities.Assert assMes3(message= diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/SamplerWithResetThreshold.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/SamplerWithResetThreshold.mo index c7daa390cd9..8269032872e 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/SamplerWithResetThreshold.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/SamplerWithResetThreshold.mo @@ -32,7 +32,7 @@ protected annotation (Placement(transformation(origin={0,148}, extent={{-80,-90},{-60,-70}}))); Buildings.Controls.OBC.CDL.Logical.Or samTri "Sampling trigger" annotation (Placement(transformation(extent={{40,-30},{60,-10}}))); - Buildings.Controls.OBC.CDL.Reals.Greater gre(final h=1e-6) + Buildings.Controls.OBC.CDL.Reals.Greater gre "Check if the input signal is larger than the threshold" annotation (Placement(transformation(origin={-8,-50}, extent={{-32,20},{-12,40}}))); Buildings.Controls.OBC.CDL.Reals.Switch swi From 0e1a2ac75d6c9cab7aaf885f269c157799f592b3 Mon Sep 17 00:00:00 2001 From: SenHuang19 Date: Mon, 1 Jul 2024 10:58:43 -0400 Subject: [PATCH 196/214] model doc improve --- .../OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index 71749062274..25a716efddc 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -353,7 +353,7 @@ equation connect(samTd.trigger, conProMod.tunSta) annotation (Line(points={{-130,-68}, {-130,6},{62,6},{62,62}}, color={255,0,255})); connect(sam_u_s.trigger, triTun) annotation (Line(points={{-90,242},{-90,252}, - {-154,252},{-154,-96},{60,-96},{60,-120}}, color={255,0,255})); + {-74,252},{-74,-96},{60,-96},{60,-120}}, color={255,0,255})); annotation (Documentation(info="

                                                                                  This block implements a rule-based PID tuning method. @@ -393,10 +393,10 @@ The PID tuning process ends automatically Buildings.Controls.OBC.Utilities.PIDWithAutotuning.BaseClasses.Relay.TunMonitor), at which point this block turns back to a PID controller but with tuned PID parameters.

                                                                                  -

                                                                                  Note: If an autotuning is ongoing, i.e., inTunPro.y = true, a request for performing autotuning will be ignored. +In addition, the set point should be unchanged during the autotuning process.

                                                                                  Guidance for setting the parameters

                                                                                  @@ -410,7 +410,7 @@ The following procedure can be used to determine the values of those parameters.

                                                                                5. Perform a \"test run\" to determine the maximum and the minimum values of measurement. In this test run, the autotuning is disabled and the set point is constant. -This test run should cover the period when the system is stable. +This test run should stop after the system is stable. Record the maximum and the minimum values of measurement after the system is stable.
                                                                                6. From 10d77aecdd249148e41f2b40b7e5b47bae6172bd Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Mon, 12 Aug 2024 10:58:35 -0700 Subject: [PATCH 197/214] improved the check of the setpoint change --- .../PIDWithAutotuning/FirstOrderAMIGO.mo | 63 ++++++++++--------- .../Relay/BaseClasses/TuningMonitor.mo | 8 +-- 2 files changed, 36 insertions(+), 35 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index 25a716efddc..9c0d25b7249 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -153,7 +153,7 @@ protected "Type of controller"; Buildings.Controls.OBC.CDL.Utilities.Assert assMes2(message="*** Warning: the relay output needs to be asymmetric. Check the value of yHig, yLow and yRef.") "Warning message when the relay output is symmetric" - annotation (Placement(transformation(extent={{62,140},{82,160}}))); + annotation (Placement(transformation(extent={{60,140},{80,160}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant con1(final k=yHig) "Higher value for the relay output" annotation (Placement(transformation(extent={{-140,170},{-120,190}}))); @@ -187,9 +187,10 @@ protected Buildings.Controls.OBC.CDL.Logical.Nand nand "Check if an autotuning is ongoing while a new autotuning request is received" annotation (Placement(transformation(extent={{120,-72},{140,-52}}))); - Buildings.Controls.OBC.CDL.Utilities.Assert assMes1(message="*** Warning: An autotuning is ongoing and the new autotuning request is ignored.") + Buildings.Controls.OBC.CDL.Utilities.Assert assMes1( + message="*** Warning: An autotuning is ongoing and the new tuning request is ignored.") "Warning message when an autotuning tuning is ongoing while a new autotuning request is received" - annotation (Placement(transformation(extent={{148,-72},{168,-52}}))); + annotation (Placement(transformation(extent={{150,-72},{170,-52}}))); Buildings.Controls.OBC.CDL.Logical.Edge edgReq "True only when a new request is received" annotation (Placement(transformation(extent={{80,-80},{100,-60}}))); @@ -210,18 +211,19 @@ protected annotation (Placement(transformation(extent={{100,220},{120,240}}))); Buildings.Controls.OBC.CDL.Reals.Subtract sub3 "Change of the setpoint" - annotation (Placement(transformation(extent={{-38,220},{-18,240}}))); + annotation (Placement(transformation(extent={{-40,220},{-20,240}}))); Buildings.Controls.OBC.CDL.Reals.Abs abs2 "Absolute value of the setpoint change" annotation (Placement(transformation(extent={{0,220},{20,240}}))); - Buildings.Controls.OBC.CDL.Reals.Greater gre1( - final h=setHys) + Buildings.Controls.OBC.CDL.Reals.GreaterThreshold greThr( + final t=setHys, + final h=0.5*setHys) "Check if the setpoint changes" - annotation (Placement(transformation(extent={{50,220},{70,240}}))); + annotation (Placement(transformation(extent={{40,220},{60,240}}))); Buildings.Controls.OBC.CDL.Utilities.Assert assMes3(message= "In " + getInstanceName() + ": the setpoint must not change when an autotuning tuning is ongoing.") - "Warning message when the setpoint changes during the autotuning" + "Warning message when the setpoint changes during tuning process" annotation (Placement(transformation(extent={{140,220},{160,240}}))); equation connect(con.u_s, u_s) annotation (Line(points={{-52,-40},{-60,-40},{-60,0},{-200, @@ -253,9 +255,9 @@ equation connect(PIDPar.L, conProMod.L) annotation (Line(points={{78,24},{74,24},{74,66}, {62,66}}, color={0,0,127})); connect(PIDPar.k, samk.u) annotation (Line(points={{102,37},{110,37},{110,96}, - {-148,96},{-148,-20},{-102,-20}},color={0,0,127})); + {-154,96},{-154,-20},{-102,-20}},color={0,0,127})); connect(PIDPar.Ti, samTi.u) annotation (Line(points={{102,30},{112,30},{112,98}, - {-150,98},{-150,-50},{-122,-50}},color={0,0,127})); + {-160,98},{-160,-50},{-122,-50}},color={0,0,127})); connect(PIPar.kp, conProMod.k) annotation (Line(points={{78,76},{70,76},{70,78}, {62,78}}, color={0,0,127})); connect(PIPar.T, conProMod.T) annotation (Line(points={{78,70},{70,70},{70,74}, @@ -263,13 +265,13 @@ equation connect(PIPar.L, conProMod.L) annotation (Line(points={{78,64},{70,64},{70,66}, {62,66}}, color={0,0,127})); connect(PIPar.k, samk.u) annotation (Line(points={{102,76},{110,76},{110,96},{ - -148,96},{-148,-20},{-102,-20}}, color={0,0,127})); + -154,96},{-154,-20},{-102,-20}}, color={0,0,127})); connect(PIPar.Ti, samTi.u) annotation (Line(points={{102,64},{112,64},{112,98}, - {-150,98},{-150,-50},{-122,-50}}, color={0,0,127})); + {-160,98},{-160,-50},{-122,-50}}, color={0,0,127})); connect(resPro.triSta, conProMod.triSta) annotation (Line(points={{22,36},{44, 36},{44,58}}, color={255,0,255})); connect(PIDPar.Td, samTd.u) annotation (Line(points={{102,23},{114,23},{114,94}, - {-146,94},{-146,-80},{-142,-80}}, color={0,0,127})); + {-148,94},{-148,-80},{-142,-80}}, color={0,0,127})); connect(swi.y, y) annotation (Line(points={{162,0},{200,0}}, color={0,0,127})); connect(u_m,con. u_m) annotation (Line(points={{-20,-120},{-20,-90},{-40,-90}, {-40,-52}}, color={0,0,127})); @@ -286,7 +288,7 @@ equation connect(resPro.trigger, triTun) annotation (Line(points={{-2,34},{-6,34},{-6,-70}, {60,-70},{60,-120}}, color={255,0,255})); connect(nand.y, assMes1.u) - annotation (Line(points={{142,-62},{146,-62}}, color={255,0,255})); + annotation (Line(points={{142,-62},{148,-62}}, color={255,0,255})); connect(nand.u2, edgReq.y) annotation (Line(points={{118,-70},{102,-70}}, color={255,0,255})); connect(edgReq.u, triTun) @@ -313,7 +315,7 @@ equation connect(abs1.y, gre.u1) annotation (Line(points={{2,150},{18,150}}, color={0,0,127})); connect(gre.y, assMes2.u) - annotation (Line(points={{42,150},{60,150}}, color={255,0,255})); + annotation (Line(points={{42,150},{58,150}}, color={255,0,255})); connect(con4.y, gre.u2) annotation (Line(points={{2,120},{10,120},{10,142},{18, 142}}, color={0,0,127})); connect(rel.y, yRel.u) annotation (Line(points={{-38,36},{-20,36},{-20,86},{20, @@ -324,26 +326,23 @@ equation {138,8}}, color={0,0,127})); connect(rel.u_m, u_m) annotation (Line(points={{-50,18},{-50,-14},{-20,-14},{-20, -120}}, color={0,0,127})); - connect(rel.u_s, u_s) annotation (Line(points={{-62,30},{-160,30},{-160,0},{-200, + connect(rel.u_s, u_s) annotation (Line(points={{-62,30},{-170,30},{-170,0},{-200, 0}}, color={0,0,127})); connect(sam_u_s.u, u_s) annotation (Line(points={{-102,230},{-170,230},{-170,0}, {-200,0}}, color={0,0,127})); - connect(sam_u_s.y, sub3.u1) annotation (Line(points={{-78,230},{-52,230},{-52,236}, - {-40,236}}, color={0,0,127})); - connect(sub3.u2, u_s) annotation (Line(points={{-40,224},{-54,224},{-54,198},{ - -116,198},{-116,230},{-170,230},{-170,0},{-200,0}}, color={0,0,127})); + connect(sam_u_s.y, sub3.u1) annotation (Line(points={{-78,230},{-60,230},{-60, + 236},{-42,236}}, + color={0,0,127})); + connect(sub3.u2, u_s) annotation (Line(points={{-42,224},{-60,224},{-60,210},{ + -170,210},{-170,0},{-200,0}}, color={0,0,127})); connect(sub3.y, abs2.u) - annotation (Line(points={{-16,230},{-2,230}}, color={0,0,127})); - connect(gre1.u1, abs2.y) - annotation (Line(points={{48,230},{22,230}}, color={0,0,127})); - connect(gre1.u2, con4.y) annotation (Line(points={{48,222},{26,222},{26,178},{ - 10,178},{10,120},{2,120}}, color={0,0,127})); + annotation (Line(points={{-18,230},{-2,230}}, color={0,0,127})); connect(nand1.y, assMes3.u) annotation (Line(points={{122,230},{138,230}}, color={255,0,255})); - connect(gre1.y, nand1.u1) - annotation (Line(points={{72,230},{98,230}}, color={255,0,255})); - connect(nand1.u2, tunStaDel.y) annotation (Line(points={{98,222},{86,222},{86, - 182},{118,182},{118,-30},{102,-30}}, color={255,0,255})); + connect(greThr.y, nand1.u1) + annotation (Line(points={{62,230},{98,230}}, color={255,0,255})); + connect(nand1.u2, tunStaDel.y) annotation (Line(points={{98,222},{80,222},{80, + 180},{120,180},{120,-30},{102,-30}}, color={255,0,255})); connect(conProMod.triEnd, resPro.triEnd) annotation (Line(points={{56,58},{56,32},{22,32}}, color={255,0,255})); connect(conProMod.tunSta, samk.trigger) annotation (Line(points={{62,62},{62, @@ -354,6 +353,8 @@ equation {-130,6},{62,6},{62,62}}, color={255,0,255})); connect(sam_u_s.trigger, triTun) annotation (Line(points={{-90,242},{-90,252}, {-74,252},{-74,-96},{60,-96},{60,-120}}, color={255,0,255})); + connect(abs2.y, greThr.u) + annotation (Line(points={{22,230},{38,230}}, color={0,0,127})); annotation (Documentation(info="

                                                                                  This block implements a rule-based PID tuning method. @@ -395,8 +396,8 @@ at which point this block turns back to a PID controller but with tuned PID para

                                                                                  Note: If an autotuning is ongoing, i.e., inTunPro.y = true, -a request for performing autotuning will be ignored. -In addition, the set point should be unchanged during the autotuning process. +a new request for performing autotuning will be ignored. +In addition, the set point should not be changed during the autotuning process.

                                                                                  Guidance for setting the parameters

                                                                                  diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/TuningMonitor.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/TuningMonitor.mo index e1870451a35..6e2cbc33369 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/TuningMonitor.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/TuningMonitor.mo @@ -29,7 +29,7 @@ protected Buildings.Controls.OBC.CDL.Reals.Max tMax "Maximum value of the length for the on and Off period " annotation (Placement(transformation(origin={-50,-10}, extent = {{-80, 60}, {-60, 80}}))); - Buildings.Controls.OBC.CDL.Reals.Greater greThr(final h=1e-6) + Buildings.Controls.OBC.CDL.Reals.Greater greThr "Check if either the length for the on period or the length for the off period are larger than 0" annotation (Placement(transformation(origin={-40,10}, extent = {{-40, 40}, {-20, 60}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant minLen( @@ -39,13 +39,13 @@ protected Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samAddtOntOff "Sample the minimum period when the minimum period is greater than 0" annotation (Placement(transformation(extent={{-40,-20},{-20,0}}))); - Buildings.Controls.OBC.CDL.Reals.Greater tInc(final h=1e-6) + Buildings.Controls.OBC.CDL.Reals.Greater tInc "Check if either the length for the on period or the length for the off period increases after they both become positive" annotation (Placement(transformation(extent={{40,20},{60,40}}))); Buildings.Controls.OBC.CDL.Reals.Add addtOntOff "Block that calculates the sum of the length for the on period and the length for the off period" annotation (Placement(transformation(extent={{-130,-20},{-110,0}}))); - Buildings.Controls.OBC.CDL.Reals.Greater tDec(final h=1e-6) + Buildings.Controls.OBC.CDL.Reals.Greater tDec "Check if either the length for the on period or the length for the off period decreases after they both become positive" annotation (Placement(transformation(extent={{40,-70},{60,-50}}))); Buildings.Controls.OBC.CDL.Logical.Or tCha @@ -63,7 +63,7 @@ protected Buildings.Controls.OBC.CDL.Reals.Min tMin "Minimum value of the length for the on and Off period" annotation (Placement(transformation(extent={{-130,-90},{-110,-70}}))); - Buildings.Controls.OBC.CDL.Reals.Greater greThr1(final h=1e-6) + Buildings.Controls.OBC.CDL.Reals.Greater greThr1 "Check if both the length for the on period and the length for the off period are larger than 0" annotation (Placement(transformation(extent={{-80,-90},{-60,-70}}))); Buildings.Controls.OBC.CDL.Reals.Subtract sub "Find the input difference" From 6fc1be9d7257b5d26eb372b5b3cf0d7a1899a03a Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Thu, 22 Aug 2024 13:45:55 -0700 Subject: [PATCH 198/214] merged master and updated reference --- .../DirectActingPIDWithFirstOrderAMIGO.mo | 6 +++-- .../DirectActingPIWithFirstOrderAMIGO.mo | 6 +++-- .../ReverseActingPIWithFirstOrderAMIGO.mo | 3 ++- .../WetCoilCounterFlowPControlAutoTuning.mo | 24 +++++++++++-------- ...ion_DirectActingPIDWithFirstOrderAMIGO.txt | 16 ++++++------- ...tion_DirectActingPIWithFirstOrderAMIGO.txt | 14 +++++------ ...on_ReverseActingPIDWithFirstOrderAMIGO.txt | 16 ++++++------- ...ion_ReverseActingPIWithFirstOrderAMIGO.txt | 14 +++++------ 8 files changed, 54 insertions(+), 45 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIDWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIDWithFirstOrderAMIGO.mo index 14b54b8a6d4..77bdbc6e449 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIDWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIDWithFirstOrderAMIGO.mo @@ -10,14 +10,16 @@ model DirectActingPIDWithFirstOrderAMIGO yLow=0, deaBan=0.1, yRef=0.8, - reverseActing=false) "PID controller with an autotuning feature" + reverseActing=false) + "PID controller with an autotuning feature" annotation (Placement(transformation(extent={{-20,-30},{0,-10}}))); Buildings.Controls.OBC.CDL.Reals.PIDWithReset PID( controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PID, k=1, Ti=0.5, Td=0.1, - reverseActing=false) "PID controller with constant gains" + reverseActing=false) + "PID controller with constant gains" annotation (Placement(transformation(extent={{-20,50},{0,70}}))); Buildings.Controls.OBC.CDL.Logical.Sources.Constant resSig(k=false) "Reset signal" diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIWithFirstOrderAMIGO.mo index fce47a8ce6c..b9b49346fe0 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/DirectActingPIWithFirstOrderAMIGO.mo @@ -10,7 +10,8 @@ model DirectActingPIWithFirstOrderAMIGO yLow=0, deaBan=0.1, yRef=0.8, - reverseActing=false) "PI controller with an autotuning feature" + reverseActing=false) + "PI controller with an autotuning feature" annotation (Placement(transformation(extent={{-20,-30},{0,-10}}))); Buildings.Controls.OBC.CDL.Reals.PIDWithReset PI( @@ -18,7 +19,8 @@ model DirectActingPIWithFirstOrderAMIGO k=1, Ti=0.5, Td=0.1, - reverseActing=false) "PI controller with constant gains" + reverseActing=false) + "PI controller with constant gains" annotation (Placement(transformation(extent={{-20,50},{0,70}}))); Buildings.Controls.OBC.CDL.Logical.Sources.Constant resSig(k=false) "Reset signal" diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/ReverseActingPIWithFirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/ReverseActingPIWithFirstOrderAMIGO.mo index 8acafd9684a..20bba052ac6 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/ReverseActingPIWithFirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Validation/ReverseActingPIWithFirstOrderAMIGO.mo @@ -16,7 +16,8 @@ model ReverseActingPIWithFirstOrderAMIGO controllerType=Buildings.Controls.OBC.CDL.Types.SimpleController.PI, k=1, Ti=0.5, - Td=0.1) "PI controller with constant gains" + Td=0.1) + "PI controller with constant gains" annotation (Placement(transformation(extent={{-20,50},{0,70}}))); Buildings.Controls.OBC.CDL.Logical.Sources.Constant resSig(k=false) "Reset signal" diff --git a/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo b/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo index fbf0dc04d2b..5dacb4b39c4 100644 --- a/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo +++ b/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo @@ -18,7 +18,8 @@ model WetCoilCounterFlowPControlAutoTuning nPorts=1, use_p_in=false, p(displayUnit="Pa") = 101325, - T=303.15) annotation (Placement(transformation(extent={{-80,10},{-60,30}}))); + T=303.15) + annotation (Placement(transformation(extent={{-80,10},{-60,30}}))); Buildings.Fluid.Sources.Boundary_pT sou_2( redeclare package Medium = Medium2, nPorts=1, @@ -26,14 +27,15 @@ model WetCoilCounterFlowPControlAutoTuning X={0.02,1 - 0.02}, use_T_in=true, use_X_in=true, - p(displayUnit="Pa") = 101325 + 300) annotation (Placement(transformation( - extent={{140,10},{120,30}}))); + p(displayUnit="Pa") = 101325 + 300) + annotation (Placement(transformation(extent={{140,10},{120,30}}))); Buildings.Fluid.Sources.Boundary_pT sin_1( redeclare package Medium = Medium1, nPorts=1, use_p_in=false, p=300000, - T=293.15) annotation (Placement(transformation(extent={{140,50},{120,70}}))); + T=293.15) + annotation (Placement(transformation(extent={{140,50},{120,70}}))); Buildings.Fluid.Sources.Boundary_pT sou_1( redeclare package Medium = Medium1, nPorts=1, @@ -52,8 +54,9 @@ model WetCoilCounterFlowPControlAutoTuning dp_nominal=3000, m_flow_nominal=m1_flow_nominal) annotation (Placement(transformation(extent={{90,50},{110,70}}))); - Buildings.Fluid.Sensors.TemperatureTwoPort temSen(redeclare package Medium = - Medium2, m_flow_nominal=m2_flow_nominal) + Buildings.Fluid.Sensors.TemperatureTwoPort temSen( + redeclare package Medium =Medium2, + m_flow_nominal=m2_flow_nominal) annotation (Placement(transformation(extent={{20,10},{0,30}}))); Buildings.Fluid.Actuators.Valves.TwoWayEqualPercentage val( redeclare package Medium = Medium1, @@ -61,10 +64,11 @@ model WetCoilCounterFlowPControlAutoTuning dpValve_nominal=6000) "Valve model" annotation (Placement(transformation(extent={{30,50},{50,70}}))); - Modelica.Blocks.Sources.TimeTable TSet(table=[0,288.15; 600,288.15; 600, - 298.15; 1200,298.15; 1800,283.15; 2400,283.15; 2400,288.15]) - "Setpoint temperature" annotation (Placement(transformation(extent={{-80,90}, - {-60,110}}))); + Modelica.Blocks.Sources.TimeTable TSet( + table=[0,288.15; 600,288.15; 600,298.15; 1200,298.15; + 1800,283.15; 2400,283.15; 2400,288.15]) + "Setpoint temperature" + annotation (Placement(transformation(extent={{-80,90},{-60,110}}))); Buildings.Fluid.HeatExchangers.WetCoilCounterFlow hex( redeclare package Medium1 = Medium1, redeclare package Medium2 = Medium2, diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_DirectActingPIDWithFirstOrderAMIGO.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_DirectActingPIDWithFirstOrderAMIGO.txt index 38aa9e75e94..cb13bf11ce6 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_DirectActingPIDWithFirstOrderAMIGO.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_DirectActingPIDWithFirstOrderAMIGO.txt @@ -1,4 +1,4 @@ -last-generated=2024-04-04 +last-generated=2024-08-22 statistics-simulation= { "linear": " ", @@ -8,12 +8,12 @@ statistics-simulation= } time=[0e+00, 1e+04] PID.u_s=[8.00000011920929e-01, 8.00000011920929e-01] -PID.u_m=[0e+00, 9.999529123306274e-01, 9.999995827674866e-01, 2.481618896126747e-03, -9.209431368617516e-07, 8.646680116653442e-01, 9.999932050704956e-01, 1.000000357627869e+00, 3.365608863532543e-04, -1.405635998708021e-06, 9.816854000091553e-01, 9.999993443489075e-01, 1.000001430511475e+00, 4.620050094672479e-05, 2.60930050899328e-07, 9.975255727767944e-01, 9.999987483024597e-01, 1.353355497121798e-01, 6.515417680930113e-06, -9.439737027605588e-07, 9.996625185012817e-01, 9.999985098838806e-01, 1.831492036581039e-02, 1.7740291013979e-06, -9.12563393740129e-07, 9.99949038028717e-01, 9.999998807907104e-01, 2.483022399246693e-03, -5.080776190879753e-07, 8.646644353866577e-01, 9.999876022338867e-01, 9.999994039535522e-01, 3.383852017577738e-04, -2.169484332625871e-06, 9.816854000091556e-01, 9.999996423721313e-01, 1.000000357627869e+00, 4.637077290681191e-05, 2.281867210740529e-07, 9.975196719169617e-01, 9.999995231628418e-01, 1.353341490030289e-01, 9.292627510149032e-06, 9.967949665679043e-08, 9.996591210365295e-01, 9.999996423721313e-01, 1.83195024728775e-02, 1.336419245490106e-06, -1.272930916229598e-07, 9.999534487724304e-01, 1.00000011920929e+00, 2.479220507666469e-03, -2.652079089671133e-08, 8.646667003631592e-01, 9.999937415122986e-01, 1.000000357627869e+00, 3.363536670803892e-04, -3.384182889477181e-07, 9.816855192184448e-01, 9.999985694885254e-01, 1.00000011920929e+00, 4.65236917079892e-05, -2.944179016139969e-07, 9.975249171257019e-01, 1.000000596046448e+00, 1.35333314538002e-01, 4.668657766160322e-06, 2.974260553401109e-07, 9.99664843082428e-01, 9.99998152256012e-01, 1.831885427236557e-02, 7.71652196362993e-07, -5.63313529156062e-09, 9.999538064002991e-01, 1.000000596046448e+00, 2.482200507074594e-03, 2.739475576163386e-06, 8.646644353866577e-01, 9.999934434890747e-01, 9.999997615814209e-01, 3.372395876795053e-04, 1.982975163627958e-06, 9.816851615905762e-01, 1e+00, 1.00000011920929e+00, 5.014170528738759e-05, -4.885819748778886e-07, 9.975215792655945e-01, 1.00000011920929e+00, 1.35334312915802e-01, 6.58597764413571e-06, -1.030711302973941e-07, 9.996675252914429e-01, 1.000000238418579e+00, 1.831478253006935e-02, 1.388799660162476e-06, -5.356532710720785e-07, 9.999540448188782e-01, 1.000000476837158e+00, 2.479873364791274e-03, 7.547284326392401e-07] +PID.u_m=[0e+00, 0e+00, 0e+00, 9.975230097770691e-01, 1.000001430511475e+00, 1.00000011920929e+00, 9.999999403953552e-01, 9.999999403953552e-01, 3.362038696650416e-04, 1.865401202394423e-07, -5.939579139635498e-08, -3.086786382056061e-09, -6.20002216233928e-10, 9.999517202377319e-01, 1.000000357627869e+00, 9.999998807907104e-01, 1e+00, 1.353342980146395e-01, 8.504475772497244e-06, -2.010213165704045e-06, -1.235133506582997e-08, -1.497455381915813e-09, 9.816837310791016e-01, 1.000001668930054e+00, 1e+00, 1e+00, 1e+00, 2.482960000634193e-03, -4.273533704689839e-08, -7.113067912456472e-09, 2.790749673454301e-13, 1.816809269488632e-14, 9.99662458896637e-01, 1.000002026557922e+00, 1e+00, 1e+00, 1e+00, 4.641986743081361e-05, 3.360557059295388e-07, -2.849534774806983e-10, 8.996846670439318e-12, 8.646643757820129e-01, 9.999930262565613e-01, 1.00000011920929e+00, 1e+00, 1e+00, 1.8318897113204e-02, 1.372197971249989e-06, 6.350948069666629e-07, -1.373463842657685e-10, 2.533562986142823e-12, 9.975267648696899e-01, 9.999994039535522e-01, 1e+00, 1e+00, 1e+00, 3.373860381543504e-04, 1.411928529650888e-08, -5.540917724644601e-10, 2.926642652181788e-12, 1.352174801164466e-13, 9.999566674232483e-01, 9.999994039535522e-01, 1e+00, 1e+00, 1.353347152471542e-01, 5.527692337636836e-06, 2.476246265814552e-07, 7.445288136009659e-11, -5.025821338961129e-12, 9.816855192184448e-01, 9.999953508377075e-01, 9.999999403953552e-01, 1e+00, 1e+00, 2.47946591116488e-03, 1.334632884208986e-07, -3.386831926022182e-10, -1.335369965646538e-12, 9.660670167275392e-16, 9.996646046638489e-01, 1.00000011920929e+00, 1e+00, 1e+00, 1e+00, 4.616479418473318e-05, 2.417221594441799e-06, -3.604661458211922e-09, 3.443732105035124e-11, 8.646661043167114e-01, 9.999990463256836e-01, 9.999999403953552e-01, 1e+00, 1e+00, 1.831533759832382e-02, 1.862722569967445e-06, 1.369343408441637e-06, 2.297314075083712e-11, 7.676904945075336e-11, 9.975242018699646e-01, 9.999977350234985e-01] PIDWitTun.u_s=[8.00000011920929e-01, 8.00000011920929e-01] -PIDWitTun.u_m=[0e+00, 9.999529123306274e-01, 9.999995827674866e-01, 2.481618896126747e-03, -9.209431368617516e-07, 8.646680116653442e-01, 9.999932050704956e-01, 1.000000357627869e+00, 3.365608863532543e-04, -1.405635998708021e-06, 9.816854000091553e-01, 9.999993443489075e-01, 1.000001430511475e+00, 4.620050094672479e-05, 2.60930050899328e-07, 9.975255727767944e-01, 9.999987483024597e-01, 6.36556982994079e-01, 5.796743631362915e-01, 5.796712040901184e-01, 8.734090328216553e-01, 8.735077381134033e-01, 7.384646534919739e-01, 7.35945463180542e-01, 7.359451055526733e-01, 8.253192901611328e-01, 8.253238797187805e-01, 7.810922861099243e-01, 7.809821367263794e-01, 8.047061562538147e-01, 8.084191083908081e-01, 8.08419406414032e-01, 7.942683100700378e-01, 7.94263482093811e-01, 8.025853037834167e-01, 8.027405738830566e-01, 8.027405738830566e-01, 7.982497811317444e-01, 7.982495427131653e-01, 8.00873875617981e-01, 8.008803725242615e-01, 7.996534705162048e-01, 7.994614839553833e-01, 7.994614839553833e-01, 8.002801537513733e-01, 8.002804517745972e-01, 7.998415231704712e-01, 7.99833357334137e-01, 7.99833357334137e-01, 8.000888228416443e-01, 8.000888228416443e-01, 7.999485731124878e-01, 7.999482154846191e-01, 8.00017237663269e-01, 8.000280261039734e-01, 8.000280261039734e-01, 7.999838590621948e-01, 7.999838590621948e-01, 8.000083565711975e-01, 8.000088334083557e-01, 8.000088334083557e-01, 7.99994945526123e-01, 7.99994945526123e-01, 8.000027537345886e-01, 8.000027537345886e-01, 7.999989986419678e-01, 7.9999840259552e-01, 7.9999840259552e-01, 9.999329447746277e-01, 9.999996423721313e-01, 1.831885799765587e-02, 7.716523668932496e-07, -5.63313662382825e-09, 9.999538064002991e-01, 1.000000596046448e+00, 7.974549531936646e-01, 7.969515323638916e-01, 8.398213386535645e-01, 8.465310335159302e-01, 8.465313315391541e-01, 8.029245138168335e-01, 8.029098510742188e-01, 8.109574317932129e-01, 8.111075758934021e-01, 8.111075758934021e-01, 8.015456795692444e-01, 8.015452027320862e-01, 8.027148246765137e-01, 8.027177453041077e-01, 8.008632063865662e-01, 8.0057293176651e-01, 8.0057293176651e-01, 8.006801009178162e-01, 8.006801605224609e-01, 8.001959323883057e-01, 8.001869320869446e-01, 8.001869320869446e-01, 8.001735806465149e-01, 8.001735806465149e-01, 8.000575304031372e-01, 8.000572323799133e-01] +PIDWitTun.u_m=[0e+00, 0e+00, 0e+00, 9.975230097770691e-01, 1.000001430511475e+00, 1.00000011920929e+00, 9.999999403953552e-01, 9.999999403953552e-01, 3.362038696650416e-04, 1.865401202394423e-07, -5.939579139635498e-08, -3.086786382056061e-09, -6.20002216233928e-10, 9.999517202377319e-01, 1.000000357627869e+00, 9.999998807907104e-01, 1e+00, 1.353342980146395e-01, 8.504475772497244e-06, -2.010213165704045e-06, -1.235133506582997e-08, -1.497455381915813e-09, 5.608465075492859e-01, 5.713117122650146e-01, 5.713107585906982e-01, 8.301019072532654e-01, 8.301156163215637e-01, 7.736498117446899e-01, 7.735092639923096e-01, 7.13933527469635e-01, 7.046090960502625e-01, 7.046094536781311e-01, 7.261111736297607e-01, 7.261185050010681e-01, 7.718785405158997e-01, 7.727273106575012e-01, 7.727262377738953e-01, 7.917104959487915e-01, 7.917113900184631e-01, 7.898845076560974e-01, 7.898803949356079e-01, 7.884471416473389e-01, 7.882227897644043e-01, 7.882227897644043e-01, 7.919137477874756e-01, 7.919150590896606e-01, 7.960271835327148e-01, 7.961038947105408e-01, 7.961038947105408e-01, 7.97875702381134e-01, 7.978753447532654e-01, 7.981776595115662e-01, 7.981784343719482e-01, 7.984212040901184e-01, 7.984597682952881e-01, 7.984598278999329e-01, 7.98980712890625e-01, 7.989808917045593e-01, 7.994072437286377e-01, 7.994149327278137e-01, 7.994148731231689e-01, 7.996253967285156e-01, 7.996253967285156e-01, 7.997147440910339e-01, 7.997155785560608e-01, 7.997786402702332e-01, 7.997885346412659e-01, 7.997885346412659e-01, 7.998594045639038e-01, 7.998600602149963e-01, 9.963345527648926e-01, 9.999990463256836e-01, 1e+00, 1e+00, 1e+00, 2.47946591116488e-03, 1.334632884208986e-07, -3.386831926022182e-10, -1.335369965646538e-12, 9.660671226066576e-16, 9.996646046638489e-01, 1.00000011920929e+00, 1e+00, 1e+00, 1e+00, 8.662736415863037e-01, 8.662677407264709e-01, 8.0772465467453e-01, 8.075780272483826e-01, 8.159076571464539e-01, 8.172111511230469e-01, 8.172112107276917e-01, 8.2774418592453e-01, 8.277470469474792e-01, 8.207338452339172e-01, 8.206030130386353e-01, 8.206030130386353e-01, 8.101699352264404e-01, 8.101703524589539e-01, 8.056886196136475e-01, 8.056774735450745e-01] autTunSig.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] -PIDWitTun.inTunPro.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] -PIDWitTun.con.y=[0e+00, 1e+00, 1e+00, 0e+00, 0e+00, 3.339030146598816e-01, 1e+00, 1e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 3.875620663166046e-01, 1.067091897130006e-01, 2.957209050655365e-01, 3.641521334648132e-01, 2.556469142436983e-01, 2.1932053565979e-01, 1.419638246297836e-01, 2.228323221206665e-01, 2.485701441764832e-01, 2.178325206041336e-01, 1.971660405397415e-01, 1.746761351823807e-01, 2.065731436014175e-01, 2.15461254119873e-01, 2.035199999809265e-01, 1.969224363565445e-01, 2.019114643335342e-01, 2.021893709897995e-01, 2.051452547311783e-01, 2.004785686731339e-01, 1.984679400920868e-01, 1.999383568763733e-01, 2.007881999015808e-01, 2.017504274845123e-01, 1.999799013137817e-01, 1.993654519319534e-01, 1.999868750572205e-01, 2.002912610769272e-01, 1.999970227479935e-01, 1.999464631080627e-01, 1.99757382273674e-01, 2.000093013048172e-01, 2.001075744628906e-01, 2.000222504138947e-01, 1.999696642160416e-01, 1.999111622571945e-01, 2.000081092119217e-01, 2.000392973423004e-01, 2.000044286251068e-01, 1.999865025281906e-01, 2.000022679567337e-01, 2.000043094158173e-01, 2.000141590833664e-01, 2.000002264976501e-01, 1.999945640563965e-01, 1.999991685152054e-01, 2.000019401311874e-01, 2.000050395727158e-01, 1.999997049570084e-01, 1.999979317188263e-01, 1.999998390674591e-01, 2.000007927417755e-01, 1.999999135732651e-01, 1.999997943639755e-01, 1.999992430210114e-01, 3.076969981193549e-01, 3.778702914714807e-01, 5.43086864054203e-02, 0e+00, 0e+00, 1.227643862366676e-01, 1.801054030656815e-01, 1.54854953289032e-01, 1.541679352521896e-01, 1.702288538217545e-01, 1.810765564441681e-01, 1.94421261548996e-01, 1.875517219305038e-01, 1.883916556835175e-01, 1.921395361423492e-01, 1.952692121267319e-01, 1.984547823667526e-01, 1.966616660356522e-01, 1.971049904823303e-01, 1.98025181889534e-01, 1.988035291433334e-01, 1.988503485918045e-01, 1.991226822137833e-01, 1.99287012219429e-01, 1.995009928941727e-01, 1.996960341930389e-01, 1.997158229351044e-01, 1.997727900743484e-01, 1.998264044523239e-01, 1.99873074889183e-01, 1.999228596687317e-01, 1.999253034591675e-01, 1.999418139457703e-01] -PIDWitTun.con.k=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.924693524837494e-01, 2.625229358673096e-01, 2.625229358673096e-01, 2.625229358673096e-01, 2.625229358673096e-01, 2.625229358673096e-01, 2.625229358673096e-01, 2.625229358673096e-01, 2.625229358673096e-01, 2.625229358673096e-01, 2.625229358673096e-01, 2.625229358673096e-01, 2.625229358673096e-01, 2.625229358673096e-01, 2.625229358673096e-01, 2.625229358673096e-01, 2.625229358673096e-01, 2.625229358673096e-01, 2.625229358673096e-01, 2.625229358673096e-01, 2.625229358673096e-01, 2.625229358673096e-01, 2.625229358673096e-01, 2.625229358673096e-01, 2.625229358673096e-01, 2.625229358673096e-01, 2.625229358673096e-01, 2.625229358673096e-01, 2.625229358673096e-01] -PIDWitTun.con.Ti=[5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 8.329904937744141e+01, 9.153768157958984e+01, 9.153768157958984e+01, 9.153768157958984e+01, 9.153768157958984e+01, 9.153768157958984e+01, 9.153768157958984e+01, 9.153768157958984e+01, 9.153768157958984e+01, 9.153768157958984e+01, 9.153768157958984e+01, 9.153768157958984e+01, 9.153768157958984e+01, 9.153768157958984e+01, 9.153768157958984e+01, 9.153768157958984e+01, 9.153768157958984e+01, 9.153768157958984e+01, 9.153768157958984e+01, 9.153768157958984e+01, 9.153768157958984e+01, 9.153768157958984e+01, 9.153768157958984e+01, 9.153768157958984e+01, 9.153768157958984e+01, 9.153768157958984e+01, 9.153768157958984e+01, 9.153768157958984e+01, 9.153768157958984e+01] -PIDWitTun.con.Td=[1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 2.512223052978516e+01, 1.87575740814209e+01, 1.87575740814209e+01, 1.87575740814209e+01, 1.87575740814209e+01, 1.87575740814209e+01, 1.87575740814209e+01, 1.87575740814209e+01, 1.87575740814209e+01, 1.87575740814209e+01, 1.87575740814209e+01, 1.87575740814209e+01, 1.87575740814209e+01, 1.87575740814209e+01, 1.87575740814209e+01, 1.87575740814209e+01, 1.87575740814209e+01, 1.87575740814209e+01, 1.87575740814209e+01, 1.87575740814209e+01, 1.87575740814209e+01, 1.87575740814209e+01, 1.87575740814209e+01, 1.87575740814209e+01, 1.87575740814209e+01, 1.87575740814209e+01, 1.87575740814209e+01, 1.87575740814209e+01, 1.87575740814209e+01] +PIDWitTun.inTunPro.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +PIDWitTun.con.y=[0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 5.389707088470469e-01, 5.580824613571167e-01, 4.502575397491455e-01, 3.424204289913177e-01, 2.345852255821228e-01, 2.984287142753601e-01, 2.573157250881195e-01, 2.264907360076904e-01, 2.897215783596039e-01, 2.937669456005096e-01, 2.801707684993744e-01, 2.767381966114044e-01, 2.46594101190567e-01, 2.427032738924026e-01, 2.29844868183136e-01, 2.242298126220703e-01, 2.14263841509819e-01, 2.183084785938263e-01, 2.137943804264069e-01, 2.101195007562637e-01, 2.133422344923019e-01, 2.122241258621216e-01, 2.105360627174377e-01, 2.091763913631439e-01, 2.071729898452759e-01, 2.058010697364807e-01, 2.042135894298553e-01, 2.038693279027939e-01, 2.027782201766968e-01, 2.029473334550858e-01, 2.023467421531677e-01, 2.018215656280518e-01, 2.019397467374802e-01, 2.016536891460419e-01, 2.014618366956711e-01, 2.012155503034592e-01, 2.010761648416519e-01, 2.008342295885086e-01, 2.006266564130783e-01, 2.005945593118668e-01, 2.004570066928864e-01, 2.004503011703491e-01, 2.003632783889771e-01, 2.002844959497452e-01, 2.002821415662766e-01, 2.002316415309906e-01, 2.002097964286804e-01, 2.001706063747406e-01, 2.001605033874512e-01, 2.001224905252457e-01, 2.00093999505043e-01, 2.000901699066162e-01, 2.000706195831299e-01, 2.601935267448425e-01, 2.835500836372375e-01, 3.105080127716064e-01, 3.374667763710022e-01, 3.644255697727203e-01, 9.155892580747604e-02, 0e+00, 0e+00, 0e+00, 0e+00, 9.475196152925491e-02, 1.190603896975519e-01, 1.435138434171677e-01, 1.679672300815582e-01, 1.924206167459488e-01, 1.714428216218948e-01, 1.795476675033569e-01, 1.70521467924118e-01, 1.715115308761597e-01, 1.753299236297607e-01, 1.768717765808105e-01, 1.789761334657669e-01, 1.844035238027573e-01, 1.877949088811874e-01, 1.892278641462326e-01, 1.918034553527832e-01, 1.943225264549255e-01, 1.932973861694336e-01, 1.945406347513199e-01, 1.944731920957565e-01, 1.951721608638763e-01] +PIDWitTun.con.k=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2.420570552349091e-01, 2.420570552349091e-01, 2.420570552349091e-01, 2.420570552349091e-01, 2.420570552349091e-01, 2.420570552349091e-01, 2.420570552349091e-01, 2.420570552349091e-01, 2.420570552349091e-01, 2.420570552349091e-01, 2.420570552349091e-01, 2.420570552349091e-01, 2.420570552349091e-01, 2.420570552349091e-01, 2.420570552349091e-01, 2.420570552349091e-01, 2.420570552349091e-01, 2.420570552349091e-01, 2.420570552349091e-01, 2.420570552349091e-01, 2.420570552349091e-01, 2.420570552349091e-01, 2.420570552349091e-01, 2.420570552349091e-01, 2.420570552349091e-01, 2.420570552349091e-01, 2.420570552349091e-01, 2.420570552349091e-01, 2.420570552349091e-01, 2.420570552349091e-01, 2.420570552349091e-01, 2.420570552349091e-01, 2.420570552349091e-01, 2.420570552349091e-01, 2.420570552349091e-01, 2.420570552349091e-01, 2.420570552349091e-01, 2.420570552349091e-01, 2.420570552349091e-01, 2.420570552349091e-01, 2.420570552349091e-01, 2.420570552349091e-01, 2.420570552349091e-01, 2.420570552349091e-01, 2.420570552349091e-01, 2.420570552349091e-01, 2.420570552349091e-01, 2.420570552349091e-01, 2.420570552349091e-01, 2.420570552349091e-01, 2.420570552349091e-01, 2.420570552349091e-01, 2.420570552349091e-01, 2.420570552349091e-01, 2.420570552349091e-01, 2.420570552349091e-01, 2.420570552349091e-01, 2.420570552349091e-01, 2.420570552349091e-01, 2.420570552349091e-01, 2.420570552349091e-01, 2.420570552349091e-01, 2.420570552349091e-01, 2.296565175056458e-01, 2.296565175056458e-01, 2.296565175056458e-01, 2.296565175056458e-01, 2.296565175056458e-01, 2.296565175056458e-01, 2.296565175056458e-01, 2.296565175056458e-01, 2.296565175056458e-01, 2.296565175056458e-01, 2.296565175056458e-01, 2.296565175056458e-01, 2.296565175056458e-01, 2.296565175056458e-01, 2.296565175056458e-01, 2.296565175056458e-01, 2.296565175056458e-01, 2.296565175056458e-01, 2.296565175056458e-01, 2.296565175056458e-01, 2.296565175056458e-01] +PIDWitTun.con.Ti=[5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 1.795755615234375e+02, 1.795755615234375e+02, 1.795755615234375e+02, 1.795755615234375e+02, 1.795755615234375e+02, 1.795755615234375e+02, 1.795755615234375e+02, 1.795755615234375e+02, 1.795755615234375e+02, 1.795755615234375e+02, 1.795755615234375e+02, 1.795755615234375e+02, 1.795755615234375e+02, 1.795755615234375e+02, 1.795755615234375e+02, 1.795755615234375e+02, 1.795755615234375e+02, 1.795755615234375e+02, 1.795755615234375e+02, 1.795755615234375e+02, 1.795755615234375e+02, 1.795755615234375e+02, 1.795755615234375e+02, 1.795755615234375e+02, 1.795755615234375e+02, 1.795755615234375e+02, 1.795755615234375e+02, 1.795755615234375e+02, 1.795755615234375e+02, 1.795755615234375e+02, 1.795755615234375e+02, 1.795755615234375e+02, 1.795755615234375e+02, 1.795755615234375e+02, 1.795755615234375e+02, 1.795755615234375e+02, 1.795755615234375e+02, 1.795755615234375e+02, 1.795755615234375e+02, 1.795755615234375e+02, 1.795755615234375e+02, 1.795755615234375e+02, 1.795755615234375e+02, 1.795755615234375e+02, 1.795755615234375e+02, 1.795755615234375e+02, 1.795755615234375e+02, 1.795755615234375e+02, 1.795755615234375e+02, 1.795755615234375e+02, 1.795755615234375e+02, 1.795755615234375e+02, 1.795755615234375e+02, 1.795755615234375e+02, 1.795755615234375e+02, 1.795755615234375e+02, 1.795755615234375e+02, 1.795755615234375e+02, 1.795755615234375e+02, 1.795755615234375e+02, 1.795755615234375e+02, 1.795755615234375e+02, 1.795755615234375e+02, 1.878320465087891e+02, 1.878320465087891e+02, 1.878320465087891e+02, 1.878320465087891e+02, 1.878320465087891e+02, 1.878320465087891e+02, 1.878320465087891e+02, 1.878320465087891e+02, 1.878320465087891e+02, 1.878320465087891e+02, 1.878320465087891e+02, 1.878320465087891e+02, 1.878320465087891e+02, 1.878320465087891e+02, 1.878320465087891e+02, 1.878320465087891e+02, 1.878320465087891e+02, 1.878320465087891e+02, 1.878320465087891e+02, 1.878320465087891e+02, 1.878320465087891e+02] +PIDWitTun.con.Td=[1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 3.336437606811523e+01, 3.336437606811523e+01, 3.336437606811523e+01, 3.336437606811523e+01, 3.336437606811523e+01, 3.336437606811523e+01, 3.336437606811523e+01, 3.336437606811523e+01, 3.336437606811523e+01, 3.336437606811523e+01, 3.336437606811523e+01, 3.336437606811523e+01, 3.336437606811523e+01, 3.336437606811523e+01, 3.336437606811523e+01, 3.336437606811523e+01, 3.336437606811523e+01, 3.336437606811523e+01, 3.336437606811523e+01, 3.336437606811523e+01, 3.336437606811523e+01, 3.336437606811523e+01, 3.336437606811523e+01, 3.336437606811523e+01, 3.336437606811523e+01, 3.336437606811523e+01, 3.336437606811523e+01, 3.336437606811523e+01, 3.336437606811523e+01, 3.336437606811523e+01, 3.336437606811523e+01, 3.336437606811523e+01, 3.336437606811523e+01, 3.336437606811523e+01, 3.336437606811523e+01, 3.336437606811523e+01, 3.336437606811523e+01, 3.336437606811523e+01, 3.336437606811523e+01, 3.336437606811523e+01, 3.336437606811523e+01, 3.336437606811523e+01, 3.336437606811523e+01, 3.336437606811523e+01, 3.336437606811523e+01, 3.336437606811523e+01, 3.336437606811523e+01, 3.336437606811523e+01, 3.336437606811523e+01, 3.336437606811523e+01, 3.336437606811523e+01, 3.336437606811523e+01, 3.336437606811523e+01, 3.336437606811523e+01, 3.336437606811523e+01, 3.336437606811523e+01, 3.336437606811523e+01, 3.336437606811523e+01, 3.336437606811523e+01, 3.336437606811523e+01, 3.336437606811523e+01, 3.336437606811523e+01, 3.336437606811523e+01, 2.204592514038086e+01, 2.204592514038086e+01, 2.204592514038086e+01, 2.204592514038086e+01, 2.204592514038086e+01, 2.204592514038086e+01, 2.204592514038086e+01, 2.204592514038086e+01, 2.204592514038086e+01, 2.204592514038086e+01, 2.204592514038086e+01, 2.204592514038086e+01, 2.204592514038086e+01, 2.204592514038086e+01, 2.204592514038086e+01, 2.204592514038086e+01, 2.204592514038086e+01, 2.204592514038086e+01, 2.204592514038086e+01, 2.204592514038086e+01, 2.204592514038086e+01] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_DirectActingPIWithFirstOrderAMIGO.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_DirectActingPIWithFirstOrderAMIGO.txt index 24aec381ed3..f4e6aa909cd 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_DirectActingPIWithFirstOrderAMIGO.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_DirectActingPIWithFirstOrderAMIGO.txt @@ -1,4 +1,4 @@ -last-generated=2024-04-04 +last-generated=2024-08-22 statistics-simulation= { "linear": " ", @@ -8,11 +8,11 @@ statistics-simulation= } time=[0e+00, 1e+04] PI.u_s=[8.00000011920929e-01, 8.00000011920929e-01] -PI.u_m=[0e+00, 9.999547004699707e-01, 1.000000238418579e+00, 2.480137394741178e-03, -2.153460911813454e-07, 8.646676540374756e-01, 9.999932050704956e-01, 1.000000596046448e+00, 3.361890558153391e-04, -3.533419601353671e-08, 9.816851019859314e-01, 9.999987483024597e-01, 9.999997615814209e-01, 4.566456846077926e-05, -1.163176293061944e-07, 9.975239634513855e-01, 9.999994039535522e-01, 1.353351771831499e-01, 5.942146117376979e-07, 2.798019806959928e-07, 9.9965900182724e-01, 9.999997019767761e-01, 1.831728778779507e-02, 3.150164729959215e-06, -2.899513731335901e-07, 9.999541640281677e-01, 9.999993443489075e-01, 2.481624949723482e-03, 2.827020466611823e-07, 8.64668071269989e-01, 9.999945163726807e-01, 1.000002026557922e+00, 3.379597910679877e-04, 2.340709215786774e-06, 9.816857576370243e-01, 9.999985098838806e-01, 9.999993443489075e-01, 4.618740786099806e-05, 3.034480471342249e-07, 9.975231289863586e-01, 9.999994039535522e-01, 1.353354156017303e-01, 9.92042896541534e-06, -2.157242846578811e-07, 9.996603727340698e-01, 1.000000476837158e+00, 1.831422746181488e-02, 2.464670842527994e-06, -1.907345037466257e-08, 9.999537467956543e-01, 1.000000238418579e+00, 2.481517614796758e-03, -3.816609819295991e-07, 8.646675944328308e-01, 9.999908208847046e-01, 9.999997615814209e-01, 3.364782896824049e-04, 1.634328100408232e-06, 9.816856384277344e-01, 1.000001668930054e+00, 9.999997615814209e-01, 4.790025559486821e-05, -7.604332949995296e-07, 9.975265860557556e-01, 9.999995231628418e-01, 1.353345662355423e-01, 6.295172170212027e-06, 3.402948607345024e-07, 9.99664843082428e-01, 9.999995231628418e-01, 1.831690222024918e-02, 7.963487860251917e-07, -8.995883149509609e-09, 9.999528527259827e-01, 1.000000834465027e+00, 2.479721792042255e-03, -1.047474569304541e-07, 8.646685481071472e-01, 9.999933838844299e-01, 9.999980330467224e-01, 3.364397562108934e-04, -2.018324209984303e-07, 9.816848635673523e-01, 1.000000238418579e+00, 1e+00, 4.598180021275766e-05, -6.704551225311661e-08, 9.975244402885437e-01, 9.999999403953552e-01, 1.353354007005692e-01, 8.286533557111397e-06, 2.597562342998572e-08, 9.996647834777832e-01, 1e+00, 1.831687241792679e-02, 2.247287227419292e-07, 1.954243433743841e-09, 9.99951958656311e-01, 1.000001907348633e+00, 2.479897812008858e-03, -9.35333503093716e-07] +PI.u_m=[0e+00, 0e+00, 0e+00, 9.975218772888184e-01, 1.000000596046448e+00, 9.999999403953552e-01, 1e+00, 1e+00, 3.36188415531069e-04, 2.256313337056781e-06, -1.972726160204274e-08, -2.00665417615653e-09, -3.176266194504507e-10, 9.999533891677856e-01, 1e+00, 1e+00, 1e+00, 1.353342384099947e-01, 9.802449312701356e-06, 9.663862954312208e-08, -3.126723768787087e-09, -7.825836645380946e-10, 9.81684684753418e-01, 9.999990463256836e-01, 1.00000011920929e+00, 1e+00, 1e+00, 2.479751594364643e-03, 2.300003188793145e-06, 1.321863152270453e-08, -1.301493461614012e-11, 1.275022405364257e-12, 9.996638298034668e-01, 9.999977946281433e-01, 1e+00, 1e+00, 1e+00, 4.579910455504432e-05, 3.163104338455014e-07, 1.072718389810712e-11, 1.087762251962814e-14, 8.64668607711792e-01, 9.999962449073792e-01, 1.000001668930054e+00, 1e+00, 1e+00, 1.831641606986523e-02, 5.93612185184611e-07, 9.684183766012211e-08, 2.261008880122262e-10, -7.214147335066201e-11, 9.975243210792542e-01, 1e+00, 1e+00, 1e+00, 1e+00, 3.366249438840764e-04, -1.081299728866705e-06, 9.224572772303929e-10, -8.106229576476665e-11, -2.145087926730405e-12, 9.99952495098114e-01, 1.00000011920929e+00, 1e+00, 1e+00, 1.353354007005692e-01, 6.282428330450784e-06, 1.813897938518494e-07, 2.814929955796613e-10, 1.07434460633335e-11, 9.816851615905762e-01, 9.999986886978149e-01, 9.999997615814209e-01, 1e+00, 1e+00, 2.477592788636684e-03, 1.349267648720343e-07, 3.75902017846208e-11, -4.262620801036981e-14, 3.362025968885028e-16, 9.996623396873474e-01, 1.000000715255737e+00, 1e+00, 1e+00, 1e+00, 4.647925015888177e-05, 3.74745667386378e-07, 2.056243841863648e-09, 1.158511689358654e-10, 8.646671175956726e-01, 9.999938607215881e-01, 9.999989867210388e-01, 1e+00, 1e+00, 1.831681840121746e-02, 1.322806156167644e-06, 3.488307953602998e-08, -9.542000002638051e-12, -2.554009304392424e-12, 9.975228309631348e-01, 9.999992847442627e-01] PIWitTun.u_s=[8.00000011920929e-01, 8.00000011920929e-01] -PIWitTun.u_m=[0e+00, 9.999547004699707e-01, 1.000000238418579e+00, 2.480137394741178e-03, -2.153460911813454e-07, 8.646676540374756e-01, 9.999932050704956e-01, 1.000000596046448e+00, 3.361890558153391e-04, -3.533419601353671e-08, 9.816851019859314e-01, 9.999987483024597e-01, 9.999997615814209e-01, 4.566456846077926e-05, -1.163176293061944e-07, 9.010377526283264e-01, 9.032737612724304e-01, 6.972811222076413e-01, 6.650397181510925e-01, 6.650396585464478e-01, 8.126415014266968e-01, 8.126918077468872e-01, 7.777010202407837e-01, 7.770482301712036e-01, 7.770481109619141e-01, 8.013110756874084e-01, 8.013121485710144e-01, 7.960768342018127e-01, 7.960637807846069e-01, 7.995320558547974e-01, 8.000748157501221e-01, 8.000748753547668e-01, 7.993193864822388e-01, 7.993190884590149e-01, 7.999743223190308e-01, 7.999865412712097e-01, 7.999865412712097e-01, 7.998812198638916e-01, 7.998812198638916e-01, 7.999927401542664e-01, 7.999930381774902e-01, 7.999809980392456e-01, 7.999790906906128e-01, 7.999790906906128e-01, 7.999979853630066e-01, 7.999979853630066e-01, 7.999963164329529e-01, 7.999963164329529e-01, 7.999963164329529e-01, 7.99999475479126e-01, 7.99999475479126e-01, 7.999993562698364e-01, 7.999993562698364e-01, 7.999998331069946e-01, 7.999998927116394e-01, 7.999998927116394e-01, 7.999998927116394e-01, 7.999998927116394e-01, 7.999999523162842e-01, 7.999999523162842e-01, 7.999999523162842e-01, 7.999999523162842e-01, 7.999999523162842e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 8.00000011920929e-01, 9.999329447746277e-01, 9.999998807907104e-01, 1.831690222024918e-02, 7.963487291817728e-07, -8.995883149509609e-09, 9.999528527259827e-01, 1.000000834465027e+00, 8.258195519447327e-01, 8.253865838050842e-01, 8.365053534507751e-01, 8.382454514503479e-01, 8.382455110549927e-01, 8.116603493690491e-01, 8.116514086723328e-01, 8.086879253387451e-01, 8.086326122283936e-01, 8.086326122283936e-01, 8.036165833473206e-01, 8.036163449287415e-01, 8.021436333656311e-01, 8.02139937877655e-01, 8.011696338653564e-01, 8.010177612304688e-01, 8.010177612304688e-01, 8.005541563034058e-01, 8.005540370941162e-01, 8.002821207046509e-01, 8.00277054309845e-01, 8.00277054309845e-01, 8.001460433006287e-01, 8.001460433006287e-01, 8.000746965408325e-01, 8.000745177268982e-01] +PIWitTun.u_m=[0e+00, 0e+00, 0e+00, 9.975218772888184e-01, 1.000000596046448e+00, 9.999999403953552e-01, 1e+00, 1e+00, 3.36188415531069e-04, 2.256313337056781e-06, -1.972726160204274e-08, -2.00665417615653e-09, -3.176266194504507e-10, 9.999533891677856e-01, 1e+00, 1e+00, 1e+00, 1.353342384099947e-01, 9.802449312701356e-06, 9.663862954312208e-08, -3.126723768787087e-09, -7.825836645380946e-10, 5.012040138244629e-01, 5.105545520782471e-01, 5.1055508852005e-01, 7.497235536575317e-01, 7.497325539588928e-01, 7.512466907501221e-01, 7.512504458427429e-01, 7.298107147216797e-01, 7.264478206634521e-01, 7.264513969421387e-01, 7.407682538032532e-01, 7.407730221748352e-01, 7.664175033569336e-01, 7.668913602828979e-01, 7.668913602828979e-01, 7.822133302688599e-01, 7.822139859199524e-01, 7.877495884895325e-01, 7.877631783485413e-01, 7.901548743247986e-01, 7.90529191493988e-01, 7.90529191493988e-01, 7.932618260383606e-01, 7.932632565498352e-01, 7.955910563468933e-01, 7.956345081329346e-01, 7.956345081329346e-01, 7.971895933151245e-01, 7.971943616867065e-01, 7.981012463569641e-01, 7.981035113334656e-01, 7.986056208610535e-01, 7.98683226108551e-01, 7.986830472946167e-01, 7.990983724594116e-01, 7.990985512733459e-01, 7.993898391723633e-01, 7.99396276473999e-01, 7.993957996368408e-01, 7.995960712432861e-01, 7.995960712432861e-01, 7.997273206710815e-01, 7.997272610664368e-01, 7.99802839756012e-01, 7.998146414756775e-01, 7.998146414756775e-01, 7.998744249343872e-01, 7.998743653297424e-01, 9.963347315788269e-01, 9.999997615814209e-01, 9.999999403953552e-01, 1e+00, 1e+00, 2.477592788636684e-03, 1.349267506611795e-07, 3.75902017846208e-11, -4.262620801036981e-14, 3.362025968885028e-16, 9.996623396873474e-01, 1.000000715255737e+00, 1e+00, 1e+00, 1e+00, 8.927773237228394e-01, 8.92772376537323e-01, 8.399285078048706e-01, 8.398069739341736e-01, 8.334382772445679e-01, 8.324425220489502e-01, 8.324424624443054e-01, 8.30405592918396e-01, 8.304048776626587e-01, 8.231295347213745e-01, 8.229938149452209e-01, 8.229938149452209e-01, 8.152655363082886e-01, 8.152670860290527e-01, 8.103794455528259e-01, 8.103673458099365e-01] autTunSig.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] -PIWitTun.inTunPro.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] -PIWitTun.con.y=[0e+00, 1e+00, 1e+00, 0e+00, 0e+00, 3.34646075963974e-01, 1e+00, 1e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 4.641798436641693e-01, 2.017102986574167e-01, 2.735844254493713e-01, 3.078548014163971e-01, 2.90319502353668e-01, 2.404410839080811e-01, 1.961636692285538e-01, 2.162809073925018e-01, 2.204535305500031e-01, 2.138612270355225e-01, 2.062178403139114e-01, 1.986878365278244e-01, 2.0333331823349e-01, 2.037640064954758e-01, 2.022518813610077e-01, 2.00958251953125e-01, 2.005325555801392e-01, 2.006514221429825e-01, 2.006759792566299e-01, 2.003709375858307e-01, 2.001475095748901e-01, 2.001255303621292e-01, 2.001232355833054e-01, 2.001188099384308e-01, 2.000615298748016e-01, 2.000225484371185e-01, 2.000249773263931e-01, 2.000227421522141e-01, 2.00017437338829e-01, 2.000102549791336e-01, 2.000034004449844e-01, 2.000047713518143e-01, 2.000041157007217e-01, 2.000029385089874e-01, 2.000017166137695e-01, 2.000004947185516e-01, 2.000008970499039e-01, 2.000007331371307e-01, 2.000005096197128e-01, 2.000002861022949e-01, 2.000001817941666e-01, 2.000001668930054e-01, 2.000001221895218e-01, 2.000000923871994e-01, 2.000000476837158e-01, 2.000000327825546e-01, 2.000000327825546e-01, 2.000000178813934e-01, 2.000000178813934e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.000000029802322e-01, 2.872249484062201e-01, 3.528519868850702e-01, 1.166971996426582e-01, 0e+00, 0e+00, 1.00015752017498e-01, 1.533021926879883e-01, 1.496535390615463e-01, 1.563441902399063e-01, 1.656444072723389e-01, 1.761226207017899e-01, 1.863109320402145e-01, 1.864027231931686e-01, 1.895050704479218e-01, 1.917935460805893e-01, 1.940839886665344e-01, 1.963836550712585e-01, 1.96511372923851e-01, 1.974747031927109e-01, 1.979567408561707e-01, 1.985261887311935e-01, 1.988748162984848e-01, 1.991206407546997e-01, 1.993917673826218e-01, 1.994868218898773e-01, 1.9963438808918e-01, 1.997071653604507e-01, 1.997801214456558e-01, 1.998539417982101e-01, 1.998710185289383e-01, 1.999099254608154e-01, 1.999255120754242e-01, 1.99945330619812e-01] -PIWitTun.con.k=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 2.065291404724121e-01, 1.932341307401657e-01, 1.932341307401657e-01, 1.932341307401657e-01, 1.932341307401657e-01, 1.932341307401657e-01, 1.932341307401657e-01, 1.932341307401657e-01, 1.932341307401657e-01, 1.932341307401657e-01, 1.932341307401657e-01, 1.932341307401657e-01, 1.932341307401657e-01, 1.932341307401657e-01, 1.932341307401657e-01, 1.932341307401657e-01, 1.932341307401657e-01, 1.932341307401657e-01, 1.932341307401657e-01, 1.932341307401657e-01, 1.932341307401657e-01, 1.932341307401657e-01, 1.932341307401657e-01, 1.932341307401657e-01, 1.932341307401657e-01, 1.932341307401657e-01, 1.932341307401657e-01, 1.932341307401657e-01, 1.932341307401657e-01] -PIWitTun.con.Ti=[5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 6.295143127441406e+01, 7.253745269775391e+01, 7.253745269775391e+01, 7.253745269775391e+01, 7.253745269775391e+01, 7.253745269775391e+01, 7.253745269775391e+01, 7.253745269775391e+01, 7.253745269775391e+01, 7.253745269775391e+01, 7.253745269775391e+01, 7.253745269775391e+01, 7.253745269775391e+01, 7.253745269775391e+01, 7.253745269775391e+01, 7.253745269775391e+01, 7.253745269775391e+01, 7.253745269775391e+01, 7.253745269775391e+01, 7.253745269775391e+01, 7.253745269775391e+01, 7.253745269775391e+01, 7.253745269775391e+01, 7.253745269775391e+01, 7.253745269775391e+01, 7.253745269775391e+01, 7.253745269775391e+01, 7.253745269775391e+01, 7.253745269775391e+01] +PIWitTun.inTunPro.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +PIWitTun.con.y=[0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 7.312269210815425e-01, 6.090353727340698e-01, 5.093764662742615e-01, 4.097191691398621e-01, 3.10061901807785e-01, 3.193056285381317e-01, 2.848060429096222e-01, 2.487495243549347e-01, 2.823140621185303e-01, 2.760536670684814e-01, 2.701573371887207e-01, 2.640851736068726e-01, 2.538243532180786e-01, 2.441022396087646e-01, 2.349407523870468e-01, 2.295899838209152e-01, 2.222127914428711e-01, 2.204065769910812e-01, 2.163611352443695e-01, 2.122367769479752e-01, 2.125725746154785e-01, 2.103570550680161e-01, 2.094779759645462e-01, 2.079558968544006e-01, 2.068987190723419e-01, 2.057812511920929e-01, 2.0460145175457e-01, 2.041492015123367e-01, 2.033102810382843e-01, 2.02976867556572e-01, 2.024402916431427e-01, 2.018964737653732e-01, 2.018057703971863e-01, 2.014569342136383e-01, 2.013263404369354e-01, 2.01090469956398e-01, 2.009522616863251e-01, 2.008011341094971e-01, 2.006370425224304e-01, 2.005835622549057e-01, 2.004712820053101e-01, 2.004223018884659e-01, 2.003481090068817e-01, 2.002727538347244e-01, 2.002557963132858e-01, 2.002054750919342e-01, 2.001868188381195e-01, 2.001528292894363e-01, 2.001336216926575e-01, 2.001124918460846e-01, 2.000894099473953e-01, 2.000822275876999e-01, 2.00066551566124e-01, 2.427375614643097e-01, 2.682621777057648e-01, 2.93176531791687e-01, 3.180908560752869e-01, 3.430051803588867e-01, 1.270686388015747e-01, 2.699882909655571e-02, 0e+00, 0e+00, 0e+00, 7.185870409011841e-02, 9.398485720157643e-02, 1.160565912723541e-01, 1.381284296512604e-01, 1.602002680301666e-01, 1.532247066497803e-01, 1.634621918201447e-01, 1.617091596126556e-01, 1.660819202661514e-01, 1.692893505096436e-01, 1.727098077535629e-01, 1.762901246547699e-01, 1.793635785579681e-01, 1.827189773321152e-01, 1.845793128013611e-01, 1.870950907468796e-01, 1.896326690912247e-01, 1.900768876075745e-01, 1.917620599269867e-01, 1.923378258943558e-01, 1.934800148010254e-01] +PIWitTun.con.k=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1.789776235818863e-01, 1.789776235818863e-01, 1.789776235818863e-01, 1.789776235818863e-01, 1.789776235818863e-01, 1.789776235818863e-01, 1.789776235818863e-01, 1.789776235818863e-01, 1.789776235818863e-01, 1.789776235818863e-01, 1.789776235818863e-01, 1.789776235818863e-01, 1.789776235818863e-01, 1.789776235818863e-01, 1.789776235818863e-01, 1.789776235818863e-01, 1.789776235818863e-01, 1.789776235818863e-01, 1.789776235818863e-01, 1.789776235818863e-01, 1.789776235818863e-01, 1.789776235818863e-01, 1.789776235818863e-01, 1.789776235818863e-01, 1.789776235818863e-01, 1.789776235818863e-01, 1.789776235818863e-01, 1.789776235818863e-01, 1.789776235818863e-01, 1.789776235818863e-01, 1.789776235818863e-01, 1.789776235818863e-01, 1.789776235818863e-01, 1.789776235818863e-01, 1.789776235818863e-01, 1.789776235818863e-01, 1.789776235818863e-01, 1.789776235818863e-01, 1.789776235818863e-01, 1.789776235818863e-01, 1.789776235818863e-01, 1.789776235818863e-01, 1.789776235818863e-01, 1.789776235818863e-01, 1.789776235818863e-01, 1.789776235818863e-01, 1.789776235818863e-01, 1.789776235818863e-01, 1.789776235818863e-01, 1.789776235818863e-01, 1.789776235818863e-01, 1.789776235818863e-01, 1.789776235818863e-01, 1.789776235818863e-01, 1.789776235818863e-01, 1.789776235818863e-01, 1.789776235818863e-01, 1.789776235818863e-01, 1.789776235818863e-01, 1.789776235818863e-01, 1.789776235818863e-01, 1.789776235818863e-01, 1.789776235818863e-01, 1.715788543224335e-01, 1.715788543224335e-01, 1.715788543224335e-01, 1.715788543224335e-01, 1.715788543224335e-01, 1.715788543224335e-01, 1.715788543224335e-01, 1.715788543224335e-01, 1.715788543224335e-01, 1.715788543224335e-01, 1.715788543224335e-01, 1.715788543224335e-01, 1.715788543224335e-01, 1.715788543224335e-01, 1.715788543224335e-01, 1.715788543224335e-01, 1.715788543224335e-01, 1.715788543224335e-01, 1.715788543224335e-01, 1.715788543224335e-01, 1.715788543224335e-01] +PIWitTun.con.Ti=[5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 1.436745147705078e+02, 1.436745147705078e+02, 1.436745147705078e+02, 1.436745147705078e+02, 1.436745147705078e+02, 1.436745147705078e+02, 1.436745147705078e+02, 1.436745147705078e+02, 1.436745147705078e+02, 1.436745147705078e+02, 1.436745147705078e+02, 1.436745147705078e+02, 1.436745147705078e+02, 1.436745147705078e+02, 1.436745147705078e+02, 1.436745147705078e+02, 1.436745147705078e+02, 1.436745147705078e+02, 1.436745147705078e+02, 1.436745147705078e+02, 1.436745147705078e+02, 1.436745147705078e+02, 1.436745147705078e+02, 1.436745147705078e+02, 1.436745147705078e+02, 1.436745147705078e+02, 1.436745147705078e+02, 1.436745147705078e+02, 1.436745147705078e+02, 1.436745147705078e+02, 1.436745147705078e+02, 1.436745147705078e+02, 1.436745147705078e+02, 1.436745147705078e+02, 1.436745147705078e+02, 1.436745147705078e+02, 1.436745147705078e+02, 1.436745147705078e+02, 1.436745147705078e+02, 1.436745147705078e+02, 1.436745147705078e+02, 1.436745147705078e+02, 1.436745147705078e+02, 1.436745147705078e+02, 1.436745147705078e+02, 1.436745147705078e+02, 1.436745147705078e+02, 1.436745147705078e+02, 1.436745147705078e+02, 1.436745147705078e+02, 1.436745147705078e+02, 1.436745147705078e+02, 1.436745147705078e+02, 1.436745147705078e+02, 1.436745147705078e+02, 1.436745147705078e+02, 1.436745147705078e+02, 1.436745147705078e+02, 1.436745147705078e+02, 1.436745147705078e+02, 1.436745147705078e+02, 1.436745147705078e+02, 1.436745147705078e+02, 1.554730987548828e+02, 1.554730987548828e+02, 1.554730987548828e+02, 1.554730987548828e+02, 1.554730987548828e+02, 1.554730987548828e+02, 1.554730987548828e+02, 1.554730987548828e+02, 1.554730987548828e+02, 1.554730987548828e+02, 1.554730987548828e+02, 1.554730987548828e+02, 1.554730987548828e+02, 1.554730987548828e+02, 1.554730987548828e+02, 1.554730987548828e+02, 1.554730987548828e+02, 1.554730987548828e+02, 1.554730987548828e+02, 1.554730987548828e+02, 1.554730987548828e+02] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_ReverseActingPIDWithFirstOrderAMIGO.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_ReverseActingPIDWithFirstOrderAMIGO.txt index 3fef4627f55..573e78029d5 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_ReverseActingPIDWithFirstOrderAMIGO.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_ReverseActingPIDWithFirstOrderAMIGO.txt @@ -1,4 +1,4 @@ -last-generated=2024-04-03 +last-generated=2024-08-22 statistics-simulation= { "linear": " ", @@ -8,12 +8,12 @@ statistics-simulation= } time=[0e+00, 1e+04] PID.u_s=[8.00000011920929e-01, 8.00000011920929e-01] -PID.u_m=[0e+00, 7.999616265296936e-01, 7.999999523162842e-01, 9.993995428085327e-01, 9.998931288719177e-01, 1.353196501731873e-01, 7.387421646853909e-06, -8.588997246761294e-08, 9.996626377105713e-01, 9.999998211860657e-01, 1.831492595374584e-02, 1.58000568717398e-06, -3.821812128990132e-07, 9.999536871910095e-01, 1.000000238418579e+00, 2.479760674759746e-03, 1.846726718213176e-07, 8.646644949913038e-01, 9.999924302101135e-01, 1.00000011920929e+00, 3.37007426423952e-04, -2.336076931896969e-07, 9.81681764125824e-01, 9.999992251396179e-01, 1.000001549720764e+00, 4.619251922122203e-05, -2.136411580977438e-07, 9.975236058235168e-01, 1.000001311302185e+00, 1.353349089622498e-01, 6.779408067814074e-06, -2.515003529879323e-07, 9.996705651283264e-01, 1.000002026557922e+00, 1.83167010545727e-02, 2.618341341076302e-06, 4.633555761301977e-07, 9.999536871910095e-01, 9.999998807907104e-01, 2.480544615536928e-03, 5.08474045091134e-07, 8.646665215492249e-01, 9.999949336051941e-01, 9.999991655349731e-01, 3.362882125657052e-04, -5.395982611844374e-07, 9.816812872886658e-01, 9.999967813491821e-01, 9.999998807907104e-01, 4.857080784859136e-05, -1.246911551788799e-07, 9.975185394287109e-01, 9.999993443489075e-01, 1.353318691253662e-01, 7.809436283423565e-06, -2.790625615034514e-07, 9.996639490127563e-01, 9.999998807907104e-01, 1.831455901265144e-02, 2.144563723049941e-06, -3.935766130780394e-07, 9.99952495098114e-01, 9.999998211860657e-01, 2.485564211383462e-03, -1.418680312781362e-06, 8.646669983863831e-01, 9.999942779541016e-01, 1e+00, 3.36086784955101e-04, -1.923431682371305e-06, 9.816827774047852e-01, 9.999990463256836e-01, 1e+00, 4.65348239231389e-05, -4.345420450135862e-07, 9.975239634513855e-01, 1.000000357627869e+00, 1.353335976600647e-01, 1.007324317470193e-05, 4.871192231803434e-07, 9.996671676635742e-01, 9.999999403953552e-01, 1.831608824431896e-02, 4.334755772106291e-07, -1.859797871262003e-09, 9.999501705169678e-01, 1.000000357627869e+00, 2.481010742485523e-03, -1.225146320393833e-06, 8.646674156188965e-01, 9.99992847442627e-01, 9.999998211860657e-01, 3.357224923092872e-04, -9.661866897658911e-07, 9.81680154800415e-01, 9.999989867210388e-01, 1.000000357627869e+00, 4.781069947057404e-05, -9.589965657141875e-07, 9.975184798240662e-01, 1.000000476837158e+00] +PID.u_m=[0e+00, 0e+00, 0e+00, 7.980154752731323e-01, 7.99999475479126e-01, 9.729332327842712e-01, 9.99999463558197e-01, 1e+00, 9.994795918464661e-01, 9.994792938232422e-01, 1.830990612506866e-02, 1.251758931175573e-06, -6.725646528593643e-08, -2.425983636200613e-09, -4.1972283981728e-10, 9.975228309631348e-01, 9.999998211860657e-01, 1.00000011920929e+00, 1e+00, 1e+00, 3.368088218849152e-04, 2.474992299994483e-07, -2.803925269745378e-08, -2.350060146483202e-09, -4.358089444878033e-10, 9.999545812606812e-01, 9.999997019767761e-01, 1e+00, 1e+00, 1.353353559970856e-01, 3.346510084156762e-06, 6.602393654020489e-08, -5.401947222871684e-10, -1.412146528184666e-11, 9.816867113113407e-01, 9.999982714653015e-01, 9.999998807907104e-01, 1e+00, 1e+00, 2.476743888109922e-03, -1.781613832463336e-06, -6.742389757619094e-08, 1.012146096102118e-11, -1.003367853212589e-12, 9.996663928031921e-01, 9.999988079071045e-01, 1e+00, 1e+00, 1e+00, 4.676049866247922e-05, 4.065481107318192e-07, 2.695365486360402e-09, 2.61675767859737e-11, 8.646663427352905e-01, 9.999933242797852e-01, 9.999995827674866e-01, 1e+00, 1e+00, 1.831627823412418e-02, 7.008571287769882e-07, -6.862588719513951e-08, -8.335588469465804e-11, 1.472664351576114e-11, 9.975141286849976e-01, 1.000001192092896e+00, 9.999999403953552e-01, 1e+00, 1e+00, 3.419911954551802e-04, 2.19526995692918e-07, -3.368480161469734e-09, -1.480397293467106e-12, -2.137227569400102e-13, 9.999510049819946e-01, 9.99999463558197e-01, 1e+00, 1e+00, 1.353331804275513e-01, 1.108373544411734e-05, 2.066481101792306e-06, 3.222124234092405e-10, 8.701890119935786e-13, 9.816853404045105e-01, 1.000000238418579e+00, 9.999998807907104e-01, 1e+00, 1e+00, 2.481316681951284e-03, -1.940023139468394e-06, -6.309079036981302e-09, 1.937954484387827e-11, -1.19264511461159e-11, 9.996622800827026e-01, 9.999992847442627e-01, 1e+00, 1e+00, 1e+00, 4.848184835282154e-05, 4.457096736132371e-07, 5.680009795838714e-10, 8.696095926685743e-12] PIDWitTun.u_s=[8.00000011920929e-01, 8.00000011920929e-01] -PIDWitTun.u_m=[0e+00, 7.999616265296936e-01, 7.999999523162842e-01, 9.993996024131775e-01, 9.998931288719177e-01, 1.353196501731873e-01, 7.387421646853909e-06, -8.588997246761294e-08, 9.996626377105713e-01, 9.999998211860657e-01, 1.831492595374584e-02, 1.58000568717398e-06, -3.821812128990132e-07, 9.999536871910095e-01, 1.000000238418579e+00, 9.233773499727249e-02, 9.008152782917023e-02, 5.740921497344978e-01, 6.498442888259888e-01, 6.498485803604126e-01, 6.172829270362854e-01, 6.172719597816467e-01, 7.189870476722717e-01, 7.208849787712097e-01, 7.208852171897888e-01, 7.421191930770874e-01, 7.421201467514038e-01, 7.685414552688599e-01, 7.686070799827576e-01, 7.784311175346375e-01, 7.799686789512634e-01, 7.799687385559082e-01, 7.883273959159851e-01, 7.883301377296448e-01, 7.927688360214233e-01, 7.928516268730164e-01, 7.928516864776611e-01, 7.957416176795959e-01, 7.957417964935303e-01, 7.974197864532471e-01, 7.974239587783813e-01, 7.983153462409973e-01, 7.984548807144165e-01, 7.984548807144165e-01, 7.990686297416687e-01, 7.99068808555603e-01, 7.994334697723389e-01, 7.994402647018433e-01, 7.994402647018433e-01, 7.996630668640137e-01, 7.996630668640137e-01, 7.99796998500824e-01, 7.997973561286926e-01, 7.998671531677246e-01, 7.998780608177185e-01, 7.998780608177185e-01, 7.999266386032104e-01, 7.999266386032104e-01, 7.999553084373474e-01, 7.999558448791504e-01, 7.999558448791504e-01, 7.999734282493591e-01, 7.999734282493591e-01, 7.999839782714844e-01, 7.999840378761292e-01, 7.999895215034485e-01, 7.999904155731201e-01, 7.999904155731201e-01, 9.999327659606934e-01, 1.000000357627869e+00, 1.831724680960178e-02, 9.671581437942223e-07, -1.177209352221098e-08, 9.999534487724304e-01, 1.000000476837158e+00, 8.219393491744995e-01, 8.214973211288452e-01, 8.429118394851685e-01, 8.462632894515991e-01, 8.462635278701782e-01, 8.165928721427917e-01, 8.16582977771759e-01, 8.138200044631958e-01, 8.137684464454651e-01, 8.137684464454651e-01, 8.070024251937866e-01, 8.07002067565918e-01, 8.046494126319885e-01, 8.046435713768005e-01, 8.029176592826843e-01, 8.026475310325623e-01, 8.026475310325623e-01, 8.016420006752014e-01, 8.016416430473328e-01, 8.00983190536499e-01, 8.009709119796753e-01, 8.009709119796753e-01, 8.005896210670471e-01, 8.005896210670471e-01, 8.003533482551575e-01, 8.003527522087097e-01] +PIDWitTun.u_m=[0e+00, 0e+00, 0e+00, 7.980154752731323e-01, 7.99999475479126e-01, 9.729332327842712e-01, 9.99999463558197e-01, 1e+00, 9.994795918464661e-01, 9.994792938232422e-01, 1.830990612506866e-02, 1.251758931175573e-06, -6.725645107508171e-08, -2.425984080289822e-09, -4.197231451286118e-10, 9.975228309631348e-01, 9.999998211860657e-01, 1.00000011920929e+00, 1e+00, 1e+00, 3.368088218849152e-04, 2.474992299994483e-07, -2.803925269745378e-08, -2.350060146483202e-09, -4.358089444878033e-10, 4.975612759590149e-01, 4.975837469100952e-01, 7.040309309959412e-01, 7.045446038246155e-01, 6.858694553375244e-01, 6.82946503162384e-01, 6.829464435577393e-01, 6.661216020584106e-01, 6.661160588264465e-01, 7.000972032546997e-01, 7.007310390472412e-01, 7.00731098651886e-01, 7.387421131134033e-01, 7.387435436248779e-01, 7.57433295249939e-01, 7.57479727268219e-01, 7.645875811576843e-01, 7.65700101852417e-01, 7.656999230384827e-01, 7.729384303092957e-01, 7.729408740997314e-01, 7.800321578979492e-01, 7.801668047904968e-01, 7.801654934883118e-01, 7.857121825218201e-01, 7.857124209403992e-01, 7.893857359886169e-01, 7.893945574760437e-01, 7.916278839111328e-01, 7.919774651527405e-01, 7.919774651527405e-01, 7.939823865890503e-01, 7.939820885658264e-01, 7.9551100730896e-01, 7.955394983291626e-01, 7.955394983291626e-01, 7.966927886009216e-01, 7.966944575309753e-01, 7.975335121154785e-01, 7.975355982780457e-01, 7.980745434761047e-01, 7.981592416763306e-01, 7.981593012809753e-01, 7.986276745796204e-01, 7.986278533935547e-01, 9.963120818138123e-01, 9.999983906745911e-01, 9.999997615814209e-01, 1e+00, 1e+00, 2.480022609233856e-03, 2.752246246018331e-06, -9.531796463235764e-10, -7.806505008395304e-14, -1.455465522409716e-14, 9.996628761291504e-01, 9.999991059303284e-01, 1e+00, 1e+00, 1e+00, 8.718217015266418e-01, 8.718155026435852e-01, 8.202723264694214e-01, 8.2014399766922e-01, 8.264510035514832e-01, 8.274421691894531e-01, 8.274372220039368e-01, 8.326526284217834e-01, 8.326543569564819e-01, 8.242496252059937e-01, 8.240941166877747e-01, 8.240940570831299e-01, 8.146065473556519e-01, 8.146060705184937e-01, 8.101191520690918e-01, 8.101077079772949e-01] autTunSig.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] -PIDWitTun.inTunPro.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] -PIDWitTun.con.y=[8.00000011920929e-01, 1e+00, 9.998882412910461e-01, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1.520251333713531e-01, 1.077899262309073e-01, 3.68727833032608e-01, 5.241331458091736e-01, 4.865121245384223e-01, 5.773844718933105e-01, 6.106246709823608e-01, 6.561769247055054e-01, 6.966162919998169e-01, 7.056321501731873e-01, 7.246074080467224e-01, 7.421201467514038e-01, 7.506694197654724e-01, 7.634822130203247e-01, 7.674099802970886e-01, 7.744095921516418e-01, 7.774050831794739e-01, 7.830092310905457e-01, 7.874433398246765e-01, 7.887164354324341e-01, 7.913017868995667e-01, 7.925133109092712e-01, 7.94159471988678e-01, 7.957417964935303e-01, 7.961041927337646e-01, 7.970468997955322e-01, 7.974252700805664e-01, 7.979986667633057e-01, 7.982102036476135e-01, 7.986583709716797e-01, 7.990003824234009e-01, 7.991103529930115e-01, 7.993166446685791e-01, 7.994100451469421e-01, 7.995392084121704e-01, 7.996630668640137e-01, 7.996929287910461e-01, 7.997675538063049e-01, 7.997970581054688e-01, 7.998421788215637e-01, 7.998589277267456e-01, 7.998942732810974e-01, 7.999212741851807e-01, 7.999298572540283e-01, 7.99946129322052e-01, 7.999535202980042e-01, 7.99963653087616e-01, 7.999734282493591e-01, 7.999758124351501e-01, 7.999816536903381e-01, 7.999839782714844e-01, 7.999875545501709e-01, 7.99988865852356e-01, 7.999916672706604e-01, 7.999938130378723e-01, 7.243835926055904e-01, 6.801645755767827e-01, 9.245869517326355e-01, 1e+00, 1e+00, 8.836536407470703e-01, 8.392616510391235e-01, 8.550270795822144e-01, 8.500823378562927e-01, 8.378855586051941e-01, 8.289103507995605e-01, 8.186375498771667e-01, 8.19663941860199e-01, 8.159778118133545e-01, 8.131366372108459e-01, 8.100593686103821e-01, 8.07002067565918e-01, 8.068204522132874e-01, 8.05265486240387e-01, 8.045057654380798e-01, 8.034723997116089e-01, 8.030396103858948e-01, 8.023471236228943e-01, 8.017592430114746e-01, 8.01554262638092e-01, 8.011896014213562e-01, 8.010255098342896e-01, 8.008051514625549e-01, 8.005896210670471e-01, 8.00536036491394e-01, 8.004051446914673e-01, 8.003540635108948e-01, 8.002755045890808e-01] -PIDWitTun.con.k=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.228353321552277e-01, 2.251296937465668e-01, 2.251296937465668e-01, 2.251296937465668e-01, 2.251296937465668e-01, 2.251296937465668e-01, 2.251296937465668e-01, 2.251296937465668e-01, 2.251296937465668e-01, 2.251296937465668e-01, 2.251296937465668e-01, 2.251296937465668e-01, 2.251296937465668e-01, 2.251296937465668e-01, 2.251296937465668e-01, 2.251296937465668e-01, 2.251296937465668e-01, 2.251296937465668e-01, 2.251296937465668e-01, 2.251296937465668e-01, 2.251296937465668e-01, 2.251296937465668e-01, 2.251296937465668e-01, 2.251296937465668e-01, 2.251296937465668e-01, 2.251296937465668e-01, 2.251296937465668e-01, 2.251296937465668e-01, 2.251296937465668e-01] -PIDWitTun.con.Ti=[5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.006684341430664e+02, 1.013864898681641e+02, 1.013864898681641e+02, 1.013864898681641e+02, 1.013864898681641e+02, 1.013864898681641e+02, 1.013864898681641e+02, 1.013864898681641e+02, 1.013864898681641e+02, 1.013864898681641e+02, 1.013864898681641e+02, 1.013864898681641e+02, 1.013864898681641e+02, 1.013864898681641e+02, 1.013864898681641e+02, 1.013864898681641e+02, 1.013864898681641e+02, 1.013864898681641e+02, 1.013864898681641e+02, 1.013864898681641e+02, 1.013864898681641e+02, 1.013864898681641e+02, 1.013864898681641e+02, 1.013864898681641e+02, 1.013864898681641e+02, 1.013864898681641e+02, 1.013864898681641e+02, 1.013864898681641e+02, 1.013864898681641e+02] -PIDWitTun.con.Td=[1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 3.036071968078613e+01, 2.077593803405762e+01, 2.077593803405762e+01, 2.077593803405762e+01, 2.077593803405762e+01, 2.077593803405762e+01, 2.077593803405762e+01, 2.077593803405762e+01, 2.077593803405762e+01, 2.077593803405762e+01, 2.077593803405762e+01, 2.077593803405762e+01, 2.077593803405762e+01, 2.077593803405762e+01, 2.077593803405762e+01, 2.077593803405762e+01, 2.077593803405762e+01, 2.077593803405762e+01, 2.077593803405762e+01, 2.077593803405762e+01, 2.077593803405762e+01, 2.077593803405762e+01, 2.077593803405762e+01, 2.077593803405762e+01, 2.077593803405762e+01, 2.077593803405762e+01, 2.077593803405762e+01, 2.077593803405762e+01, 2.077593803405762e+01] +PIDWitTun.inTunPro.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +PIDWitTun.con.y=[8.00000011920929e-01, 1e+00, 1e+00, 1e+00, 9.999883770942688e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 3.599509298801422e-01, 4.458442032337189e-01, 5.320774912834167e-01, 6.183111667633057e-01, 7.04544723033905e-01, 6.372856497764587e-01, 6.699063777923584e-01, 6.470752358436584e-01, 6.578841805458069e-01, 6.758216619491577e-01, 6.855903267860413e-01, 6.98207676410675e-01, 7.15658962726593e-01, 7.300850749015808e-01, 7.354382872581483e-01, 7.467792630195618e-01, 7.57479727268219e-01, 7.564542293548584e-01, 7.630585432052612e-01, 7.64643669128418e-01, 7.692742347717285e-01, 7.709485292434692e-01, 7.757284641265869e-01, 7.794255614280701e-01, 7.810431718826294e-01, 7.839623689651489e-01, 7.849836349487305e-01, 7.872577905654907e-01, 7.893946170806885e-01, 7.898210883140564e-01, 7.913614511489868e-01, 7.919155359268188e-01, 7.930676937103271e-01, 7.932962775230408e-01, 7.94501781463623e-01, 7.953665852546692e-01, 7.956563234329224e-01, 7.963048219680786e-01, 7.96545147895813e-01, 7.970547676086426e-01, 7.975355982780457e-01, 7.976588606834412e-01, 7.980168461799622e-01, 7.981475591659546e-01, 7.984153628349304e-01, 7.984607219696045e-01, 7.987408638000488e-01, 7.989393472671509e-01, 7.990030646324158e-01, 7.991511225700378e-01, 7.464867830276489e-01, 7.286535501480103e-01, 7.070965766906738e-01, 6.855384111404419e-01, 6.639800071716309e-01, 8.997863531112671e-01, 9.835137128829956e-01, 1e+00, 1e+00, 1e+00, 9.061142802238464e-01, 8.847327232360838e-01, 8.632035255432129e-01, 8.416737914085388e-01, 8.201441168785095e-01, 8.382647037506104e-01, 8.305313587188721e-01, 8.366141319274902e-01, 8.343890905380249e-01, 8.301587104797363e-01, 8.276401162147522e-01, 8.24684202671051e-01, 8.202296495437622e-01, 8.167151808738708e-01, 8.153634667396545e-01, 8.127012252807617e-01, 8.101075291633606e-01, 8.104486465454102e-01, 8.08876097202301e-01, 8.085066080093384e-01, 8.074135184288025e-01] +PIDWitTun.con.k=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 2.114173322916031e-01, 2.114173322916031e-01, 2.114173322916031e-01, 2.114173322916031e-01, 2.114173322916031e-01, 2.114173322916031e-01, 2.114173322916031e-01, 2.114173322916031e-01, 2.114173322916031e-01, 2.114173322916031e-01, 2.114173322916031e-01, 2.114173322916031e-01, 2.114173322916031e-01, 2.114173322916031e-01, 2.114173322916031e-01, 2.114173322916031e-01, 2.114173322916031e-01, 2.114173322916031e-01, 2.114173322916031e-01, 2.114173322916031e-01, 2.114173322916031e-01, 2.114173322916031e-01, 2.114173322916031e-01, 2.114173322916031e-01, 2.114173322916031e-01, 2.114173322916031e-01, 2.114173322916031e-01, 2.114173322916031e-01, 2.114173322916031e-01, 2.114173322916031e-01, 2.114173322916031e-01, 2.114173322916031e-01, 2.114173322916031e-01, 2.114173322916031e-01, 2.114173322916031e-01, 2.114173322916031e-01, 2.114173322916031e-01, 2.114173322916031e-01, 2.114173322916031e-01, 2.114173322916031e-01, 2.114173322916031e-01, 2.114173322916031e-01, 2.114173322916031e-01, 2.114173322916031e-01, 2.114173322916031e-01, 2.114173322916031e-01, 2.114173322916031e-01, 2.114173322916031e-01, 2.114173322916031e-01, 2.114173322916031e-01, 2.114173322916031e-01, 2.114173322916031e-01, 2.114173322916031e-01, 2.114173322916031e-01, 2.114173322916031e-01, 2.114173322916031e-01, 2.114173322916031e-01, 2.114173322916031e-01, 2.114173322916031e-01, 2.114173322916031e-01, 2.124186754226685e-01, 2.124186754226685e-01, 2.124186754226685e-01, 2.124186754226685e-01, 2.124186754226685e-01, 2.124186754226685e-01, 2.124186754226685e-01, 2.124186754226685e-01, 2.124186754226685e-01, 2.124186754226685e-01, 2.124186754226685e-01, 2.124186754226685e-01, 2.124186754226685e-01, 2.124186754226685e-01, 2.124186754226685e-01, 2.124186754226685e-01, 2.124186754226685e-01, 2.124186754226685e-01, 2.124186754226685e-01, 2.124186754226685e-01, 2.124186754226685e-01] +PIDWitTun.con.Ti=[5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 1.96134521484375e+02, 1.96134521484375e+02, 1.96134521484375e+02, 1.96134521484375e+02, 1.96134521484375e+02, 1.96134521484375e+02, 1.96134521484375e+02, 1.96134521484375e+02, 1.96134521484375e+02, 1.96134521484375e+02, 1.96134521484375e+02, 1.96134521484375e+02, 1.96134521484375e+02, 1.96134521484375e+02, 1.96134521484375e+02, 1.96134521484375e+02, 1.96134521484375e+02, 1.96134521484375e+02, 1.96134521484375e+02, 1.96134521484375e+02, 1.96134521484375e+02, 1.96134521484375e+02, 1.96134521484375e+02, 1.96134521484375e+02, 1.96134521484375e+02, 1.96134521484375e+02, 1.96134521484375e+02, 1.96134521484375e+02, 1.96134521484375e+02, 1.96134521484375e+02, 1.96134521484375e+02, 1.96134521484375e+02, 1.96134521484375e+02, 1.96134521484375e+02, 1.96134521484375e+02, 1.96134521484375e+02, 1.96134521484375e+02, 1.96134521484375e+02, 1.96134521484375e+02, 1.96134521484375e+02, 1.96134521484375e+02, 1.96134521484375e+02, 1.96134521484375e+02, 1.96134521484375e+02, 1.96134521484375e+02, 1.96134521484375e+02, 1.96134521484375e+02, 1.96134521484375e+02, 1.96134521484375e+02, 1.96134521484375e+02, 1.96134521484375e+02, 1.96134521484375e+02, 1.96134521484375e+02, 1.96134521484375e+02, 1.96134521484375e+02, 1.96134521484375e+02, 1.96134521484375e+02, 1.96134521484375e+02, 1.96134521484375e+02, 1.96134521484375e+02, 1.97326171875e+02, 1.97326171875e+02, 1.97326171875e+02, 1.97326171875e+02, 1.97326171875e+02, 1.97326171875e+02, 1.97326171875e+02, 1.97326171875e+02, 1.97326171875e+02, 1.97326171875e+02, 1.97326171875e+02, 1.97326171875e+02, 1.97326171875e+02, 1.97326171875e+02, 1.97326171875e+02, 1.97326171875e+02, 1.97326171875e+02, 1.97326171875e+02, 1.97326171875e+02, 1.97326171875e+02, 1.97326171875e+02] +PIDWitTun.con.Td=[1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 3.644467926025391e+01, 3.644467926025391e+01, 3.644467926025391e+01, 3.644467926025391e+01, 3.644467926025391e+01, 3.644467926025391e+01, 3.644467926025391e+01, 3.644467926025391e+01, 3.644467926025391e+01, 3.644467926025391e+01, 3.644467926025391e+01, 3.644467926025391e+01, 3.644467926025391e+01, 3.644467926025391e+01, 3.644467926025391e+01, 3.644467926025391e+01, 3.644467926025391e+01, 3.644467926025391e+01, 3.644467926025391e+01, 3.644467926025391e+01, 3.644467926025391e+01, 3.644467926025391e+01, 3.644467926025391e+01, 3.644467926025391e+01, 3.644467926025391e+01, 3.644467926025391e+01, 3.644467926025391e+01, 3.644467926025391e+01, 3.644467926025391e+01, 3.644467926025391e+01, 3.644467926025391e+01, 3.644467926025391e+01, 3.644467926025391e+01, 3.644467926025391e+01, 3.644467926025391e+01, 3.644467926025391e+01, 3.644467926025391e+01, 3.644467926025391e+01, 3.644467926025391e+01, 3.644467926025391e+01, 3.644467926025391e+01, 3.644467926025391e+01, 3.644467926025391e+01, 3.644467926025391e+01, 3.644467926025391e+01, 3.644467926025391e+01, 3.644467926025391e+01, 3.644467926025391e+01, 3.644467926025391e+01, 3.644467926025391e+01, 3.644467926025391e+01, 3.644467926025391e+01, 3.644467926025391e+01, 3.644467926025391e+01, 3.644467926025391e+01, 3.644467926025391e+01, 3.644467926025391e+01, 3.644467926025391e+01, 3.644467926025391e+01, 3.644467926025391e+01, 2.321598815917969e+01, 2.321598815917969e+01, 2.321598815917969e+01, 2.321598815917969e+01, 2.321598815917969e+01, 2.321598815917969e+01, 2.321598815917969e+01, 2.321598815917969e+01, 2.321598815917969e+01, 2.321598815917969e+01, 2.321598815917969e+01, 2.321598815917969e+01, 2.321598815917969e+01, 2.321598815917969e+01, 2.321598815917969e+01, 2.321598815917969e+01, 2.321598815917969e+01, 2.321598815917969e+01, 2.321598815917969e+01, 2.321598815917969e+01, 2.321598815917969e+01] diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_ReverseActingPIWithFirstOrderAMIGO.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_ReverseActingPIWithFirstOrderAMIGO.txt index 39be1b3aab0..5b5852b89d6 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_ReverseActingPIWithFirstOrderAMIGO.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_Validation_ReverseActingPIWithFirstOrderAMIGO.txt @@ -1,4 +1,4 @@ -last-generated=2024-04-03 +last-generated=2024-08-22 statistics-simulation= { "linear": " ", @@ -8,11 +8,11 @@ statistics-simulation= } time=[0e+00, 1e+04] PI.u_s=[8.00000011920929e-01, 8.00000011920929e-01] -PI.u_m=[0e+00, 7.999613285064697e-01, 7.999998927116394e-01, 9.993249773979187e-01, 9.998183846473694e-01, 1.353093683719635e-01, 8.515467925462872e-06, -6.112286854431464e-08, 9.996612071990967e-01, 1e+00, 1.832147687673569e-02, 1.700028064988146e-06, -5.226810628755629e-08, 9.999518394470215e-01, 1.00000011920929e+00, 2.480308059602976e-03, -5.313717679200636e-07, 8.646689057350172e-01, 9.999879598617554e-01, 1.000000357627869e+00, 3.362224670127034e-04, 2.495843091310235e-06, 9.816849231719971e-01, 9.999991059303284e-01, 9.99999463558197e-01, 4.622510095941834e-05, -4.326629010620309e-08, 9.975243210792542e-01, 9.999973177909851e-01, 1.353354752063751e-01, 6.760900760127697e-06, 1.471415771447937e-07, 9.996604323387146e-01, 1.000001907348633e+00, 1.831649057567084e-02, 1.135851107392227e-06, 5.316890110407257e-07, 9.999452233314514e-01, 1.00000274181366e+00, 2.479816786944866e-03, -1.959308065124787e-06, 8.646723031997681e-01, 9.999919533729553e-01, 1.000000357627869e+00, 3.401445865165442e-04, -1.796214377236538e-07, 9.816785454750061e-01, 9.999998807907104e-01, 1.000000953674316e+00, 4.667403845814988e-05, 2.873144921977655e-06, 9.97527539730072e-01, 9.999980926513672e-01, 1.353350877761841e-01, 1.111958226829302e-05, -1.247565023732022e-06, 9.996724724769592e-01, 9.999991059303284e-01, 1.831664517521858e-02, 2.75544425676344e-06, -5.113929901767733e-08, 9.999550580978394e-01, 1.000000715255737e+00, 2.478907816112041e-03, -1.381824631607742e-06, 8.646727204322815e-01, 9.999923706054688e-01, 1.000000238418579e+00, 3.366619057487565e-04, 1.499738004895331e-07, 9.81684684753418e-01, 9.999991059303284e-01, 1e+00, 4.666066888603382e-05, 2.936378393769701e-07, 9.975287318229675e-01, 9.999986290931702e-01, 1.353349387645721e-01, 8.638819053885527e-06, 6.125371214693587e-07, 9.996662735939026e-01, 1.000000238418579e+00, 1.831585168838501e-02, 6.485825565505365e-07, -2.527694391574187e-07, 9.999538660049438e-01, 1.000000238418579e+00, 2.479890361428261e-03, -9.093320159081486e-07, 8.646727204322815e-01, 9.999925494194031e-01, 1.000001192092896e+00, 3.410725621506572e-04, 2.654850504768547e-06, 9.816866517066956e-01, 9.999991059303284e-01, 9.999991655349731e-01, 4.723327947431244e-05, 4.999175757802732e-07, 9.975265264511108e-01, 9.999988675117493e-01] +PI.u_m=[0e+00, 0e+00, 0e+00, 7.98015832901001e-01, 7.999998331069946e-01, 9.729330539703369e-01, 1.000000596046448e+00, 1.000000357627869e+00, 9.998944401741028e-01, 9.998943209648132e-01, 1.831523142755032e-02, 1.153578978119185e-06, -9.088398655876517e-07, 1.208878614988862e-07, 3.003173532079002e-08, 9.975290894508362e-01, 9.999996423721313e-01, 1e+00, 1e+00, 1e+00, 3.344418946653605e-04, 9.122314281739818e-08, -1.949949890445168e-08, -9.316797333625004e-10, -5.338448016978248e-10, 9.999533891677856e-01, 9.999936819076538e-01, 1e+00, 1e+00, 1.353330165147781e-01, 6.50060610496439e-06, -5.58268524741834e-08, 1.793772422264972e-11, 5.662494344943481e-12, 9.816832542419437e-01, 9.999979138374329e-01, 9.999995827674866e-01, 1e+00, 1e+00, 2.481643343344331e-03, -3.357184752417197e-08, 4.957989574450039e-08, -1.417052326174728e-11, -7.035813771871791e-12, 9.996671080589294e-01, 9.99999463558197e-01, 1e+00, 1e+00, 1e+00, 4.807555524166673e-05, -3.142494904295745e-07, -1.340946353955985e-09, -8.399318567053893e-12, 8.646665215492249e-01, 9.999938607215881e-01, 9.999997615814209e-01, 1e+00, 1e+00, 1.831752620637417e-02, 2.637968009366887e-06, -4.951122178908918e-08, -1.203509427533112e-11, 2.31932376949795e-12, 9.975259304046631e-01, 1.00000011920929e+00, 9.999997615814209e-01, 1e+00, 1e+00, 3.362284041941034e-04, 1.889074496830203e-07, -3.96435284599761e-09, 2.919753739998032e-13, -2.057039434621988e-13, 9.999443888664246e-01, 1.000001192092896e+00, 1e+00, 1e+00, 1.353341192007065e-01, 7.678638212382793e-06, 4.043703540901333e-07, -1.305645869198457e-11, -9.768697488290985e-14, 9.816809892654419e-01, 1.000001430511475e+00, 1e+00, 1e+00, 1e+00, 2.482804004102945e-03, -3.81274475103055e-07, -1.11794783208552e-07, 6.252977996501485e-11, 1.902102086948076e-11, 9.99668300151825e-01, 1e+00, 1e+00, 1e+00, 1e+00, 4.605779031408019e-05, 1.427130911224594e-07, -8.174259047422083e-10, -4.628116986871156e-11] PIWitTun.u_s=[8.00000011920929e-01, 8.00000011920929e-01] -PIWitTun.u_m=[0e+00, 7.999613285064697e-01, 7.999998927116394e-01, 9.993249773979187e-01, 9.998183846473694e-01, 1.353093683719635e-01, 8.515467925462872e-06, -6.112286854431464e-08, 9.996612071990967e-01, 1e+00, 1.832147687673569e-02, 1.700028064988146e-06, -5.226810628755629e-08, 9.999518394470215e-01, 1.00000011920929e+00, 1.09445221722126e-01, 1.072304025292397e-01, 5.100904703140265e-01, 5.731372833251953e-01, 5.731430649757385e-01, 6.220619678497314e-01, 6.220782995223999e-01, 7.022164463996887e-01, 7.037115097045898e-01, 7.037115097045898e-01, 7.403509616851807e-01, 7.403526902198792e-01, 7.648931741714478e-01, 7.649540305137634e-01, 7.770893573760986e-01, 7.789886593818665e-01, 7.789887189865112e-01, 7.874978184700012e-01, 7.875007390975952e-01, 7.924497127532959e-01, 7.92542040348053e-01, 7.92542040348053e-01, 7.95555055141449e-01, 7.955552339553833e-01, 7.973453402519226e-01, 7.973498106002808e-01, 7.982752919197083e-01, 7.984200716018677e-01, 7.984201312065125e-01, 7.990579009056091e-01, 7.990580797195435e-01, 7.994315028190613e-01, 7.994384765625e-01, 7.994384765625e-01, 7.996652126312256e-01, 7.996652126312256e-01, 7.998000979423523e-01, 7.998003959655762e-01, 7.998701333999634e-01, 7.998810410499573e-01, 7.998810410499573e-01, 7.999290227890015e-01, 7.999290823936462e-01, 7.999571561813354e-01, 7.999576926231384e-01, 7.999576926231384e-01, 7.99974799156189e-01, 7.99974799156189e-01, 7.999849319458008e-01, 7.999849915504456e-01, 7.999902367591858e-01, 7.999910116195679e-01, 7.999910116195679e-01, 9.999326467514038e-01, 9.999999403953552e-01, 1.831531710922718e-02, 8.983287216324243e-07, -3.685214799986625e-09, 9.999533295631409e-01, 9.999997019767761e-01, 8.524190187454224e-01, 8.520535826683044e-01, 8.483332395553589e-01, 8.477510809898376e-01, 8.477510213851929e-01, 8.247452974319458e-01, 8.247376084327698e-01, 8.159941434860229e-01, 8.158310055732727e-01, 8.158310055732727e-01, 8.09286892414093e-01, 8.092865943908691e-01, 8.056480884552002e-01, 8.056390881538391e-01, 8.036829829216003e-01, 8.033768534660339e-01, 8.033768534660339e-01, 8.020339012145996e-01, 8.020334839820862e-01, 8.01236629486084e-01, 8.012217879295349e-01, 8.012217879295349e-01, 8.007347583770752e-01, 8.007347583770752e-01, 8.004423975944519e-01, 8.004416823387146e-01] +PIWitTun.u_m=[0e+00, 0e+00, 0e+00, 7.98015832901001e-01, 7.999998331069946e-01, 9.729330539703369e-01, 1.000000596046448e+00, 1.000000357627869e+00, 9.998944401741028e-01, 9.998943209648132e-01, 1.831523142755032e-02, 1.153578978119185e-06, -9.088398655876517e-07, 1.208878614988862e-07, 3.003173532079002e-08, 9.975290894508362e-01, 9.999996423721313e-01, 1e+00, 1e+00, 1e+00, 3.344418946653605e-04, 9.122314281739818e-08, -1.949949890445168e-08, -9.316797333625004e-10, -5.338448016978248e-10, 4.469475746154785e-01, 4.469655752182007e-01, 6.377585530281067e-01, 6.382352113723755e-01, 6.546518206596375e-01, 6.572210192680359e-01, 6.572211384773254e-01, 6.678993701934814e-01, 6.679013967514038e-01, 6.986854076385498e-01, 6.992596983909607e-01, 6.992597579956055e-01, 7.29279100894928e-01, 7.292785048484802e-01, 7.487264275550842e-01, 7.487747669219971e-01, 7.596133351325989e-01, 7.612898945808411e-01, 7.61289656162262e-01, 7.706800103187561e-01, 7.706831097602844e-01, 7.779687643051147e-01, 7.781086564064026e-01, 7.781063914299011e-01, 7.837405800819397e-01, 7.837408781051636e-01, 7.878775000572205e-01, 7.878887057304382e-01, 7.905369400978088e-01, 7.909513711929321e-01, 7.909514307975769e-01, 7.932386994361877e-01, 7.93239951133728e-01, 7.949236035346985e-01, 7.949550151824951e-01, 7.949550151824951e-01, 7.962360382080078e-01, 7.962363958358765e-01, 7.971891164779663e-01, 7.971914410591125e-01, 7.978118658065796e-01, 7.979037761688232e-01, 7.979037761688232e-01, 7.984352707862854e-01, 7.984354496002197e-01, 9.963088631629944e-01, 1.000000238418579e+00, 9.999998211860657e-01, 1e+00, 1e+00, 2.485208213329315e-03, 1.014865802062559e-06, -2.512752228511772e-09, -1.425694686005979e-13, -7.50795435479519e-15, 9.99666690826416e-01, 9.999974966049194e-01, 1e+00, 1e+00, 1e+00, 8.977305889129639e-01, 8.977301120758057e-01, 8.51201057434082e-01, 8.510852456092834e-01, 8.445536494255066e-01, 8.435272574424744e-01, 8.435276746749878e-01, 8.385640978813171e-01, 8.385624289512634e-01, 8.296982645988464e-01, 8.295366764068604e-01, 8.295363187789917e-01, 8.212828040122986e-01, 8.212824463844299e-01, 8.157520890235901e-01, 8.157392144203186e-01] autTunSig.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00] -PIWitTun.inTunPro.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] -PIWitTun.con.y=[8.00000011920929e-01, 1e+00, 9.999609589576721e-01, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1.651515811681747e-01, 1.237778514623641e-01, 3.149192929267883e-01, 4.585113823413849e-01, 5.274673104286194e-01, 5.657726526260376e-01, 6.126940250396729e-01, 6.44832968711853e-01, 6.816312670707703e-01, 7.00725257396698e-01, 7.204368114471436e-01, 7.403526902198792e-01, 7.476822733879089e-01, 7.600192427635193e-01, 7.659493088722229e-01, 7.731897234916687e-01, 7.781993746757507e-01, 7.822856307029724e-01, 7.866315245628357e-01, 7.884059548377991e-01, 7.909908890724182e-01, 7.924826741218567e-01, 7.940126657485962e-01, 7.955552339553833e-01, 7.960627675056458e-01, 7.969820499420166e-01, 7.974340319633484e-01, 7.979815602302551e-01, 7.983589768409729e-01, 7.986659407615662e-01, 7.989927530288696e-01, 7.991268038749695e-01, 7.993215918540955e-01, 7.994338870048523e-01, 7.995491027832031e-01, 7.996652126312256e-01, 7.997034788131714e-01, 7.997727394104004e-01, 7.998067736625671e-01, 7.998480200767517e-01, 7.998763918876648e-01, 7.998995184898376e-01, 7.999241352081299e-01, 7.999342083930969e-01, 7.999489307403564e-01, 7.999573945999146e-01, 7.99966037273407e-01, 7.99974799156189e-01, 7.999776601791382e-01, 7.999829053878784e-01, 7.999854683876038e-01, 7.999885678291321e-01, 7.99990713596344e-01, 7.999924421310425e-01, 7.999942898750305e-01, 7.395743727684018e-01, 6.981980204582218e-01, 8.737347722053528e-01, 1e+00, 1e+00, 9.098120927810669e-01, 8.685539960861206e-01, 8.670233488082886e-01, 8.563399910926819e-01, 8.463208675384521e-01, 8.365563750267029e-01, 8.267074227333069e-01, 8.239935636520386e-01, 8.188923597335815e-01, 8.157934546470642e-01, 8.125518560409546e-01, 8.092865943908691e-01, 8.083206415176392e-01, 8.06405246257782e-01, 8.054690957069397e-01, 8.043073415756226e-01, 8.035213351249695e-01, 8.028692603111267e-01, 8.021727800369263e-01, 8.018927574157715e-01, 8.014734387397766e-01, 8.012365698814392e-01, 8.009867072105408e-01, 8.007347583770752e-01, 8.00653874874115e-01, 8.005023002624512e-01, 8.004294633865356e-01, 8.003384470939636e-01] -PIWitTun.con.k=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.573564261198044e-01, 1.657104939222336e-01, 1.657104939222336e-01, 1.657104939222336e-01, 1.657104939222336e-01, 1.657104939222336e-01, 1.657104939222336e-01, 1.657104939222336e-01, 1.657104939222336e-01, 1.657104939222336e-01, 1.657104939222336e-01, 1.657104939222336e-01, 1.657104939222336e-01, 1.657104939222336e-01, 1.657104939222336e-01, 1.657104939222336e-01, 1.657104939222336e-01, 1.657104939222336e-01, 1.657104939222336e-01, 1.657104939222336e-01, 1.657104939222336e-01, 1.657104939222336e-01, 1.657104939222336e-01, 1.657104939222336e-01, 1.657104939222336e-01, 1.657104939222336e-01, 1.657104939222336e-01, 1.657104939222336e-01, 1.657104939222336e-01] -PIWitTun.con.Ti=[5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 7.607798004150391e+01, 8.034181213378906e+01, 8.034181213378906e+01, 8.034181213378906e+01, 8.034181213378906e+01, 8.034181213378906e+01, 8.034181213378906e+01, 8.034181213378906e+01, 8.034181213378906e+01, 8.034181213378906e+01, 8.034181213378906e+01, 8.034181213378906e+01, 8.034181213378906e+01, 8.034181213378906e+01, 8.034181213378906e+01, 8.034181213378906e+01, 8.034181213378906e+01, 8.034181213378906e+01, 8.034181213378906e+01, 8.034181213378906e+01, 8.034181213378906e+01, 8.034181213378906e+01, 8.034181213378906e+01, 8.034181213378906e+01, 8.034181213378906e+01, 8.034181213378906e+01, 8.034181213378906e+01, 8.034181213378906e+01, 8.034181213378906e+01] +PIWitTun.inTunPro.y=[0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00] +PIWitTun.con.y=[8.00000011920929e-01, 1e+00, 1e+00, 1e+00, 9.998965263366699e-01, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 0e+00, 0e+00, 0e+00, 0e+00, 0e+00, 3.194079995155334e-01, 3.991515934467316e-01, 4.788462519645691e-01, 5.58540940284729e-01, 6.382355690002441e-01, 6.079884171485901e-01, 6.431541442871094e-01, 6.389657258987427e-01, 6.550107002258302e-01, 6.683443784713745e-01, 6.821917295455933e-01, 6.964151263237e-01, 7.082244157791138e-01, 7.213834524154663e-01, 7.287877202033997e-01, 7.387391924858093e-01, 7.487747669219971e-01, 7.514262199401855e-01, 7.584714293479919e-01, 7.615048289299011e-01, 7.666007280349731e-01, 7.69868016242981e-01, 7.734789252281189e-01, 7.773352861404419e-01, 7.790685296058655e-01, 7.819885611534119e-01, 7.835469245910645e-01, 7.857074737548828e-01, 7.87888765335083e-01, 7.886838316917419e-01, 7.903035283088684e-01, 7.910698652267456e-01, 7.922747135162354e-01, 7.930325865745544e-01, 7.938733696937561e-01, 7.947747707366943e-01, 7.951590418815613e-01, 7.958322763442993e-01, 7.961909174919128e-01, 7.966889142990112e-01, 7.971914410591125e-01, 7.973788976669312e-01, 7.977538108825684e-01, 7.979322075843811e-01, 7.982116341590881e-01, 7.983863949775696e-01, 7.985817790031433e-01, 7.987906336784363e-01, 7.988792657852173e-01, 7.990350723266602e-01, 7.62198269367218e-01, 7.417342662811279e-01, 7.218106985092163e-01, 7.018870115280151e-01, 6.81963324546814e-01, 8.678077459335327e-01, 9.478659629821777e-01, 1e+00, 1e+00, 1e+00, 9.288769960403442e-01, 9.093922376632688e-01, 8.899562954902649e-01, 8.705207705497742e-01, 8.510852456092834e-01, 8.568238615989685e-01, 8.473267555236816e-01, 8.474810123443604e-01, 8.425339460372925e-01, 8.386895060539246e-01, 8.346124887466431e-01, 8.303825259208679e-01, 8.272780776023865e-01, 8.23530912399292e-01, 8.214548826217651e-01, 8.186087012290955e-01, 8.157384395599365e-01, 8.148998618125916e-01, 8.128317594528198e-01, 8.119106888771057e-01, 8.103832006454468e-01] +PIWitTun.con.k=[1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1e+00, 1.563226282596588e-01, 1.563226282596588e-01, 1.563226282596588e-01, 1.563226282596588e-01, 1.563226282596588e-01, 1.563226282596588e-01, 1.563226282596588e-01, 1.563226282596588e-01, 1.563226282596588e-01, 1.563226282596588e-01, 1.563226282596588e-01, 1.563226282596588e-01, 1.563226282596588e-01, 1.563226282596588e-01, 1.563226282596588e-01, 1.563226282596588e-01, 1.563226282596588e-01, 1.563226282596588e-01, 1.563226282596588e-01, 1.563226282596588e-01, 1.563226282596588e-01, 1.563226282596588e-01, 1.563226282596588e-01, 1.563226282596588e-01, 1.563226282596588e-01, 1.563226282596588e-01, 1.563226282596588e-01, 1.563226282596588e-01, 1.563226282596588e-01, 1.563226282596588e-01, 1.563226282596588e-01, 1.563226282596588e-01, 1.563226282596588e-01, 1.563226282596588e-01, 1.563226282596588e-01, 1.563226282596588e-01, 1.563226282596588e-01, 1.563226282596588e-01, 1.563226282596588e-01, 1.563226282596588e-01, 1.563226282596588e-01, 1.563226282596588e-01, 1.563226282596588e-01, 1.563226282596588e-01, 1.563226282596588e-01, 1.563226282596588e-01, 1.563226282596588e-01, 1.563226282596588e-01, 1.563226282596588e-01, 1.563226282596588e-01, 1.563226282596588e-01, 1.563226282596588e-01, 1.563226282596588e-01, 1.563226282596588e-01, 1.563226282596588e-01, 1.563226282596588e-01, 1.563226282596588e-01, 1.563226282596588e-01, 1.563226282596588e-01, 1.563226282596588e-01, 1.586953699588776e-01, 1.586953699588776e-01, 1.586953699588776e-01, 1.586953699588776e-01, 1.586953699588776e-01, 1.586953699588776e-01, 1.586953699588776e-01, 1.586953699588776e-01, 1.586953699588776e-01, 1.586953699588776e-01, 1.586953699588776e-01, 1.586953699588776e-01, 1.586953699588776e-01, 1.586953699588776e-01, 1.586953699588776e-01, 1.586953699588776e-01, 1.586953699588776e-01, 1.586953699588776e-01, 1.586953699588776e-01, 1.586953699588776e-01, 1.586953699588776e-01] +PIWitTun.con.Ti=[5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 5e-01, 1.569215545654297e+02, 1.569215545654297e+02, 1.569215545654297e+02, 1.569215545654297e+02, 1.569215545654297e+02, 1.569215545654297e+02, 1.569215545654297e+02, 1.569215545654297e+02, 1.569215545654297e+02, 1.569215545654297e+02, 1.569215545654297e+02, 1.569215545654297e+02, 1.569215545654297e+02, 1.569215545654297e+02, 1.569215545654297e+02, 1.569215545654297e+02, 1.569215545654297e+02, 1.569215545654297e+02, 1.569215545654297e+02, 1.569215545654297e+02, 1.569215545654297e+02, 1.569215545654297e+02, 1.569215545654297e+02, 1.569215545654297e+02, 1.569215545654297e+02, 1.569215545654297e+02, 1.569215545654297e+02, 1.569215545654297e+02, 1.569215545654297e+02, 1.569215545654297e+02, 1.569215545654297e+02, 1.569215545654297e+02, 1.569215545654297e+02, 1.569215545654297e+02, 1.569215545654297e+02, 1.569215545654297e+02, 1.569215545654297e+02, 1.569215545654297e+02, 1.569215545654297e+02, 1.569215545654297e+02, 1.569215545654297e+02, 1.569215545654297e+02, 1.569215545654297e+02, 1.569215545654297e+02, 1.569215545654297e+02, 1.569215545654297e+02, 1.569215545654297e+02, 1.569215545654297e+02, 1.569215545654297e+02, 1.569215545654297e+02, 1.569215545654297e+02, 1.569215545654297e+02, 1.569215545654297e+02, 1.569215545654297e+02, 1.569215545654297e+02, 1.569215545654297e+02, 1.569215545654297e+02, 1.569215545654297e+02, 1.569215545654297e+02, 1.569215545654297e+02, 1.633043823242188e+02, 1.633043823242188e+02, 1.633043823242188e+02, 1.633043823242188e+02, 1.633043823242188e+02, 1.633043823242188e+02, 1.633043823242188e+02, 1.633043823242188e+02, 1.633043823242188e+02, 1.633043823242188e+02, 1.633043823242188e+02, 1.633043823242188e+02, 1.633043823242188e+02, 1.633043823242188e+02, 1.633043823242188e+02, 1.633043823242188e+02, 1.633043823242188e+02, 1.633043823242188e+02, 1.633043823242188e+02, 1.633043823242188e+02, 1.633043823242188e+02] From 4b7703090b988da7a9570404a23ebfd29bf78d8a Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Thu, 22 Aug 2024 15:00:16 -0700 Subject: [PATCH 199/214] improved graphical --- .../BaseClasses/TimeConstantDelay.mo | 158 +++++++++--------- 1 file changed, 80 insertions(+), 78 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/TimeConstantDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/TimeConstantDelay.mo index 356b8c53dd5..fcea9db9c0e 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/TimeConstantDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/TimeConstantDelay.mo @@ -12,159 +12,161 @@ block TimeConstantDelay final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Length for the on period" - annotation (Placement(transformation(extent={{-220,90},{-180,130}}), + annotation (Placement(transformation(extent={{-220,100},{-180,140}}), iconTransformation(extent={{-140,40},{-100,80}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput k "Gain" - annotation (Placement(transformation(extent={{-220,-20},{-180,20}}), + annotation (Placement(transformation(extent={{-220,-10},{-180,30}}), iconTransformation(extent={{-140,-20},{-100,20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput rat "Ratio between the time constant and the time delay" - annotation (Placement(transformation(extent={{-220,-90},{-180,-50}}), + annotation (Placement(transformation(extent={{-220,-80},{-180,-40}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput T( final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Time constant" - annotation (Placement(transformation(extent={{180,80},{220,120}}), + annotation (Placement(transformation(extent={{180,90},{220,130}}), iconTransformation(extent={{100,60},{140,100}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput L( final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Time delay" - annotation (Placement(transformation(extent={{180,-20},{220,20}}), + annotation (Placement(transformation(extent={{180,-10},{220,30}}), iconTransformation(extent={{100,-20},{140,20}}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanOutput triFai "True when an error occurs in the autotuning process" - annotation (Placement(transformation(extent={{180,-140},{220,-100}}), + annotation (Placement(transformation(extent={{180,-150},{220,-110}}), iconTransformation(extent={{100,-100},{140,-60}}))); protected Buildings.Controls.OBC.CDL.Reals.Abs absk "Absoulte value of the gain" - annotation (Placement(transformation(extent={{-160,-10},{-140,10}}))); + annotation (Placement(transformation(extent={{-160,0},{-140,20}}))); Buildings.Controls.OBC.CDL.Reals.Exp exp "Exponential value of the ratio between time constant and the time delay" - annotation (Placement(transformation(extent={{-160,-80},{-140,-60}}))); + annotation (Placement(transformation(extent={{-160,-70},{-140,-50}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant yHigSig( final k=yHig) "Higher value for the output" - annotation (Placement(transformation(extent={{-160,50},{-140,70}}))); + annotation (Placement(transformation(extent={{-160,60},{-140,80}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant yLowSig( final k=yLow) "Lower value for the output" - annotation (Placement(transformation(extent={{-100,50},{-80,70}}))); + annotation (Placement(transformation(extent={{-100,60},{-80,80}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant relDeaBan( final k=deaBan) "Dead band of the relay controller" - annotation (Placement(transformation(extent={{-100,-10},{-80,10}}))); + annotation (Placement(transformation(extent={{-100,0},{-80,20}}))); Buildings.Controls.OBC.CDL.Reals.Add add1 "Sum of the inputs" - annotation (Placement(transformation(extent={{80,-30},{100,-10}}))); + annotation (Placement(transformation(extent={{80,-20},{100,0}}))); Buildings.Controls.OBC.CDL.Reals.Add add2 "Sum of the higher value for the output and the lower value for the output" - annotation (Placement(transformation(extent={{-60,20},{-40,40}}))); + annotation (Placement(transformation(extent={{-60,30},{-40,50}}))); Buildings.Controls.OBC.CDL.Reals.Divide div1 "Quotient of deadband divided by the absolute value of the gain" - annotation (Placement(transformation(extent={{-20,-30},{0,-10}}))); + annotation (Placement(transformation(extent={{-20,-20},{0,0}}))); Buildings.Controls.OBC.CDL.Reals.Divide div2 "Blocks that calculates input 1 by input 2" annotation (Placement(transformation(extent={{120,-80},{140,-60}}))); Buildings.Controls.OBC.CDL.Reals.Divide div3 "Blocks that calculates the time constant" - annotation (Placement(transformation(extent={{40,90},{60,110}}))); + annotation (Placement(transformation(extent={{40,100},{60,120}}))); Buildings.Controls.OBC.CDL.Reals.Multiply mul1 "Product of the two inputs" - annotation (Placement(transformation(extent={{40,40},{60,60}}))); + annotation (Placement(transformation(extent={{40,50},{60,70}}))); Buildings.Controls.OBC.CDL.Reals.Multiply mul2 "Blocks that calculates time delay" - annotation (Placement(transformation(extent={{100,110},{120,130}}))); + annotation (Placement(transformation(extent={{100,120},{120,140}}))); Buildings.Controls.OBC.CDL.Reals.Subtract sub1 "Blocks that calculates the difference of the two inputs" - annotation (Placement(transformation(extent={{40,-100},{60,-80}}))); + annotation (Placement(transformation(extent={{40,-90},{60,-70}}))); Buildings.Controls.OBC.CDL.Reals.Subtract sub2 "Blocks that calculates the difference of the two inputs" - annotation (Placement(transformation(extent={{40,-50},{60,-30}}))); + annotation (Placement(transformation(extent={{40,-40},{60,-20}}))); Buildings.Controls.OBC.CDL.Reals.Log log "Natural logarithm of the input" - annotation (Placement(transformation(extent={{-40,-110},{-20,-90}}))); + annotation (Placement(transformation(extent={{-40,-100},{-20,-80}}))); Buildings.Controls.OBC.CDL.Reals.Greater gre1(final h=1e-6) "Check if the input is less than 0" - annotation (Placement(transformation(extent={{38,-130},{58,-110}}))); + annotation (Placement(transformation(extent={{40,-140},{60,-120}}))); Buildings.Controls.OBC.CDL.Reals.Max max1 "Avoid a negative input for the log function" - annotation (Placement(transformation(extent={{-82,-110},{-62,-90}}))); + annotation (Placement(transformation(extent={{-82,-100},{-62,-80}}))); Buildings.Controls.OBC.CDL.Logical.Edge edg "True when an negative input is given for the log function" - annotation (Placement(transformation(extent={{102,-130},{122,-110}}))); + annotation (Placement(transformation(extent={{102,-140},{122,-120}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant con(final k=1e-6) "Constant" - annotation (Placement(transformation(extent={{-160,-130},{-140,-110}}))); + annotation (Placement(transformation(extent={{-160,-120},{-140,-100}}))); Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter gai(k=-1) "Opposite of the input" - annotation (Placement(transformation(extent={{2,-120},{14,-108}}))); + annotation (Placement(transformation(extent={{-20,-130},{0,-110}}))); equation connect(absk.u, k) - annotation (Line(points={{-162,0},{-200,0}},color={0,0,127})); + annotation (Line(points={{-162,10},{-200,10}}, + color={0,0,127})); connect(rat, exp.u) - annotation (Line(points={{-200,-70},{-162,-70}},color={0,0,127})); - connect(relDeaBan.y, div1.u1) annotation (Line(points={{-78,0},{-40,0},{-40,-14}, - {-22,-14}}, color={0,0,127})); - connect(sub2.u1, div1.y) annotation (Line(points={{38,-34},{10,-34},{10,-20},{ - 2,-20}}, color={0,0,127})); - connect(sub2.u2, yLowSig.y) annotation (Line(points={{38,-46},{-70,-46},{-70,60}, - {-78,60}}, color={0,0,127})); - connect(yHigSig.y, add2.u1) annotation (Line(points={{-138,60},{-130,60},{-130, - 36},{-62,36}}, color={0,0,127})); - connect(add2.u2, yLowSig.y) annotation (Line(points={{-62,24},{-70,24},{-70,60}, - {-78,60}},color={0,0,127})); - connect(add2.y, mul1.u2) annotation (Line(points={{-38,30},{0,30},{0,44},{38,44}}, + annotation (Line(points={{-200,-60},{-162,-60}},color={0,0,127})); + connect(relDeaBan.y, div1.u1) annotation (Line(points={{-78,10},{-40,10},{-40, + -4},{-22,-4}}, + color={0,0,127})); + connect(sub2.u1, div1.y) annotation (Line(points={{38,-24},{10,-24},{10,-10},{ + 2,-10}}, color={0,0,127})); + connect(sub2.u2, yLowSig.y) annotation (Line(points={{38,-36},{-70,-36},{-70,70}, + {-78,70}}, color={0,0,127})); + connect(yHigSig.y, add2.u1) annotation (Line(points={{-138,70},{-130,70},{-130, + 46},{-62,46}}, color={0,0,127})); + connect(add2.u2, yLowSig.y) annotation (Line(points={{-62,34},{-70,34},{-70,70}, + {-78,70}},color={0,0,127})); + connect(add2.y, mul1.u2) annotation (Line(points={{-38,40},{0,40},{0,54},{38,54}}, color={0,0,127})); - connect(exp.y, mul1.u1) annotation (Line(points={{-138,-70},{-30,-70},{-30,56}, - {38,56}}, color={0,0,127})); - connect(sub2.y, add1.u2) annotation (Line(points={{62,-40},{70,-40},{70,-26},{ - 78,-26}}, color={0,0,127})); - connect(add1.u1, mul1.y) annotation (Line(points={{78,-14},{70,-14},{70,50},{62, - 50}}, color={0,0,127})); - connect(sub1.y, div2.u2) annotation (Line(points={{62,-90},{80,-90},{80,-76},{ + connect(exp.y, mul1.u1) annotation (Line(points={{-138,-60},{-30,-60},{-30,66}, + {38,66}}, color={0,0,127})); + connect(sub2.y, add1.u2) annotation (Line(points={{62,-30},{70,-30},{70,-16},{ + 78,-16}}, color={0,0,127})); + connect(add1.u1, mul1.y) annotation (Line(points={{78,-4},{70,-4},{70,60},{62, + 60}}, color={0,0,127})); + connect(sub1.y, div2.u2) annotation (Line(points={{62,-80},{80,-80},{80,-76},{ 118,-76}}, color={0,0,127})); - connect(div2.u1, add1.y) annotation (Line(points={{118,-64},{110,-64},{110,-20}, - {102,-20}}, color={0,0,127})); - connect(tOn, div3.u1) annotation (Line(points={{-200,110},{-140,110},{-140,106}, - {38,106}}, color={0,0,127})); - connect(div3.y, T) annotation (Line(points={{62,100},{200,100}}, + connect(div2.u1, add1.y) annotation (Line(points={{118,-64},{110,-64},{110,-10}, + {102,-10}}, color={0,0,127})); + connect(tOn, div3.u1) annotation (Line(points={{-200,120},{-140,120},{-140,116}, + {38,116}}, color={0,0,127})); + connect(div3.y, T) annotation (Line(points={{62,110},{200,110}}, color={0,0,127})); - connect(mul2.u2, T) annotation (Line(points={{98,114},{80,114},{80,100},{200,100}}, + connect(mul2.u2, T) annotation (Line(points={{98,124},{80,124},{80,110},{200,110}}, color={0,0,127})); - connect(mul2.u1, exp.u) annotation (Line(points={{98,126},{-170,126},{-170,-70}, - {-162,-70}}, color={0,0,127})); - connect(mul2.y, L) annotation (Line(points={{122,120},{130,120},{130,0},{200, - 0}}, color={0,0,127})); - connect(sub1.u2, div1.y) annotation (Line(points={{38,-96},{10,-96},{10,-20},{ - 2,-20}}, color={0,0,127})); - connect(absk.y, div1.u2) annotation (Line(points={{-138,0},{-110,0},{-110,-26}, - {-22,-26}},color={0,0,127})); - connect(yHigSig.y, sub1.u1) annotation (Line(points={{-138,60},{-130,60},{-130, - -84},{38,-84}}, color={0,0,127})); - connect(log.y, div3.u2) annotation (Line(points={{-18,-100},{20,-100},{20,94}, - {38,94}}, color={0,0,127})); - connect(div2.y, max1.u1) annotation (Line(points={{142,-70},{146,-70},{146, - -50},{-90,-50},{-90,-94},{-84,-94}}, color={0,0,127})); + connect(mul2.u1, exp.u) annotation (Line(points={{98,136},{-170,136},{-170,-60}, + {-162,-60}}, color={0,0,127})); + connect(mul2.y, L) annotation (Line(points={{122,130},{130,130},{130,10},{200, + 10}}, color={0,0,127})); + connect(sub1.u2, div1.y) annotation (Line(points={{38,-86},{10,-86},{10,-10},{ + 2,-10}}, color={0,0,127})); + connect(absk.y, div1.u2) annotation (Line(points={{-138,10},{-110,10},{-110,-16}, + {-22,-16}},color={0,0,127})); + connect(yHigSig.y, sub1.u1) annotation (Line(points={{-138,70},{-130,70},{-130, + -74},{38,-74}}, color={0,0,127})); + connect(log.y, div3.u2) annotation (Line(points={{-18,-90},{20,-90},{20,104},{ + 38,104}}, color={0,0,127})); + connect(div2.y, max1.u1) annotation (Line(points={{142,-70},{150,-70},{150,-50}, + {-90,-50},{-90,-84},{-84,-84}}, color={0,0,127})); connect(log.u, max1.y) - annotation (Line(points={{-42,-100},{-60,-100}}, color={0,0,127})); - connect(gre1.u2, div2.y) annotation (Line(points={{36,-128},{-90,-128},{-90, - -50},{146,-50},{146,-70},{142,-70}}, color={0,0,127})); - connect(con.y, max1.u2) annotation (Line(points={{-138,-120},{-114,-120},{-114, - -106},{-84,-106}}, color={0,0,127})); + annotation (Line(points={{-42,-90},{-60,-90}}, color={0,0,127})); + connect(gre1.u2, div2.y) annotation (Line(points={{38,-138},{-90,-138},{-90,-50}, + {150,-50},{150,-70},{142,-70}}, color={0,0,127})); + connect(con.y, max1.u2) annotation (Line(points={{-138,-110},{-120,-110},{-120, + -96},{-84,-96}}, color={0,0,127})); connect(gre1.y, edg.u) - annotation (Line(points={{60,-120},{100,-120}}, color={255,0,255})); + annotation (Line(points={{62,-130},{100,-130}}, color={255,0,255})); connect(edg.y, triFai) - annotation (Line(points={{124,-120},{200,-120}}, color={255,0,255})); - connect(gre1.u1, gai.y) annotation (Line(points={{36,-120},{20,-120},{20,-114}, - {15.2,-114}}, color={0,0,127})); - connect(gai.u, con.y) annotation (Line(points={{0.8,-114},{-14,-114},{-14,-120}, - {-138,-120}}, color={0,0,127})); + annotation (Line(points={{124,-130},{200,-130}}, color={255,0,255})); + connect(gre1.u1, gai.y) annotation (Line(points={{38,-130},{20,-130},{20,-120}, + {2,-120}}, color={0,0,127})); + connect(gai.u, con.y) annotation (Line(points={{-22,-120},{-120,-120},{-120,-110}, + {-138,-110}}, color={0,0,127})); annotation ( defaultComponentName = "timConDel", Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{100,100}}), @@ -177,8 +179,8 @@ equation Text( extent={{-100,140},{100,100}}, textString="%name", - textColor={0,0,255})}), Diagram(coordinateSystem(preserveAspectRatio=false, extent={ - {-180,-140},{180,140}})), + textColor={0,0,255})}), Diagram(coordinateSystem(preserveAspectRatio=false, extent={{-180, + -160},{180,160}})), Documentation(revisions="

                                                                                  • From 5eac28fe12b08dac517ee79bbe2a4426074e351c Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Fri, 23 Aug 2024 11:02:52 -0700 Subject: [PATCH 200/214] improved graphic --- .../PIDWithAutotuning/FirstOrderAMIGO.mo | 347 +++++++++--------- 1 file changed, 177 insertions(+), 170 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index 9c0d25b7249..b0a31b76d92 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -1,6 +1,7 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning; block FirstOrderAMIGO "Autotuning PID controller with an AMIGO tuner that employs a first-order time delayed system model" + parameter Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController controllerType= Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PI "Type of controller"; @@ -33,8 +34,7 @@ block FirstOrderAMIGO final min=1E-6) "Deadband for holding the relay output"; parameter Real yRef - "Reference output for the tuning process. It should be greater than the - lower and less than the higher value of the relay output"; + "Reference output for the tuning process. It should be greater than the lower and less than the higher value of the relay output"; parameter Real yMax = 1 "Upper limit of output" annotation (Dialog(group="Limits")); @@ -48,43 +48,45 @@ block FirstOrderAMIGO parameter Real Nd( min=100*Buildings.Controls.OBC.CDL.Constants.eps)=10 "The higher the Nd, the more ideal the derivative block" - annotation (Dialog(tab="Advanced",group="Derivative block",enable=controllerType ==Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PID)); + annotation (Dialog(tab="Advanced",group="Derivative block", + enable=controllerType ==Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PID)); parameter Real xi_start=0 "Initial value of integrator state" annotation (Dialog(tab="Advanced",group="Initialization")); parameter Real yd_start=0 "Initial value of derivative output" - annotation (Dialog(tab="Advanced",group="Initialization",enable=controllerType == Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PID)); + annotation (Dialog(tab="Advanced",group="Initialization", + enable=controllerType == Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PID)); parameter Boolean reverseActing=true - "Set to true for reverse acting, or false - for direct acting control action"; + "Set to true for reverse acting, or false for direct acting control action"; parameter Real y_reset=xi_start - "Value to which the controller output is reset - if the boolean trigger has a rising edge" + "Value to which the controller output is reset if the boolean trigger has a rising edge" annotation (Dialog(group="Integrator reset")); parameter Real setHys = 0.05*r "Hysteresis for checking set point"; Buildings.Controls.OBC.CDL.Interfaces.RealInput u_s "Connector of setpoint input signal" - annotation (Placement(transformation(extent={{-220,-20},{-180,20}}),iconTransformation(extent={{-140,-20},{-100,20}}))); + annotation (Placement(transformation(extent={{-220,-40},{-180,0}}), + iconTransformation(extent={{-140,-20},{-100,20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput u_m "Connector of measurement input signal" - annotation (Placement(transformation(origin={-20,-120},extent={{20,-20},{-20,20}},rotation=270), + annotation (Placement(transformation(origin={-20,-140},extent={{20,-20},{-20,20}},rotation=270), iconTransformation(extent={{20,-20},{-20,20}},rotation=270,origin={0,-120}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanInput triRes "Connector for resetting the controller output" - annotation (Placement(transformation(extent={{-20,-20},{20,20}},rotation=90,origin={-60,-120}), + annotation (Placement(transformation(extent={{-20,-20},{20,20}},rotation=90,origin={-60,-140}), iconTransformation(extent={{-20,-20},{20,20}},rotation=90,origin={-60,-120}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanInput triTun "Connector for starting the autotuning" - annotation (Placement(transformation(extent={{-20,-20},{20,20}},rotation=90,origin={60,-120}), + annotation (Placement(transformation(extent={{-20,-20},{20,20}},rotation=90,origin={60,-140}), iconTransformation(extent={{-20,-20},{20,20}},rotation=90,origin={60,-120}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput y "Connector for actuator output signal" - annotation (Placement(transformation(extent={{180,-20},{220,20}}),iconTransformation(extent={{100,-20},{140,20}}))); + annotation (Placement(transformation(extent={{180,-40},{220,0}}), + iconTransformation(extent={{100,-20},{140,20}}))); Buildings.Controls.OBC.CDL.Reals.Sources.CivilTime modTim "Simulation time" - annotation (Placement(transformation(extent={{-60,60},{-40,80}}))); + annotation (Placement(transformation(extent={{-60,40},{-40,60}}))); Buildings.Controls.OBC.Utilities.PIDWithInputGains con( final controllerType=conTyp, final r=r, @@ -97,13 +99,13 @@ block FirstOrderAMIGO final reverseActing=reverseActing, final y_reset=xi_start) "PI or P controller with the gains as inputs" - annotation (Placement(transformation(extent={{-50,-50},{-30,-30}}))); + annotation (Placement(transformation(extent={{-50,-70},{-30,-50}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PID PIDPar if with_D "Autotuner of gains for a PID controller" - annotation (Placement(transformation(extent={{80,20},{100,40}}))); + annotation (Placement(transformation(extent={{80,0},{100,20}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PI PIPar if not with_D "Autotuner of gains for a PI controller" - annotation (Placement(transformation(extent={{80,60},{100,80}}))); + annotation (Placement(transformation(extent={{80,40},{100,60}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Controller rel( final r=r, final yHig=yHig, @@ -111,37 +113,38 @@ block FirstOrderAMIGO final deaBan=deaBan, final reverseActing=reverseActing) "Relay controller" - annotation (Placement(transformation(extent={{-60,20},{-40,40}}))); + annotation (Placement(transformation(extent={{-60,0},{-40,20}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.ResponseProcess resPro( final yHig=yHig - yRef, final yLow=yRef - yLow) "Identify the on and off period length, the half period ratio, and the moments when the tuning starts and ends" - annotation (Placement(transformation(extent={{0,30},{20,50}}))); + annotation (Placement(transformation(extent={{0,10},{20,30}}))); Buildings.Controls.OBC.CDL.Reals.Switch swi "Switch between a PID controller and a relay controller" - annotation (Placement(transformation(extent={{140,-10},{160,10}}))); + annotation (Placement(transformation(extent={{140,-30},{160,-10}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samk( final y_start=k_start) "Recording the proportional control gain" - annotation (Placement(transformation(extent={{-100,-10},{-80,-30}}))); + annotation (Placement(transformation(extent={{-100,-30},{-80,-50}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samTi( final y_start=Ti_start) "Recording the integral time" - annotation (Placement(transformation(extent={{-120,-40},{-100,-60}}))); + annotation (Placement(transformation(extent={{-120,-60},{-100,-80}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samTd( final y_start=Td_start) if with_D "Recording the derivative time" - annotation (Placement(transformation(extent={{-140,-70},{-120,-90}}))); + annotation (Placement(transformation(extent={{-140,-90},{-120,-110}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.ControlProcessModel conProMod( final yHig=yHig - yRef, final yLow=yRef - yLow, final deaBan=deaBan) "Calculates the parameters of a first-order time delayed model" - annotation (Placement(transformation(extent={{40,60},{60,80}}))); + annotation (Placement(transformation(extent={{40,40},{60,60}}))); Buildings.Controls.OBC.CDL.Logical.Latch inTunPro "Outputs true if the controller is conducting the autotuning process" - annotation (Placement(transformation(extent={{20,-30},{40,-10}}))); + annotation (Placement(transformation(extent={{20,-50},{40,-30}}))); + protected final parameter Boolean with_D=controllerType == Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PID "Boolean flag to enable derivative action" @@ -151,211 +154,216 @@ protected then Buildings.Controls.OBC.CDL.Types.SimpleController.PI else Buildings.Controls.OBC.CDL.Types.SimpleController.PID "Type of controller"; - Buildings.Controls.OBC.CDL.Utilities.Assert assMes2(message="*** Warning: the relay output needs to be asymmetric. Check the value of yHig, yLow and yRef.") + Buildings.Controls.OBC.CDL.Utilities.Assert assMes2( + message="*** Warning: the relay output needs to be asymmetric. Check the value of yHig, yLow and yRef.") "Warning message when the relay output is symmetric" - annotation (Placement(transformation(extent={{60,140},{80,160}}))); + annotation (Placement(transformation(extent={{100,200},{120,220}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant con1(final k=yHig) "Higher value for the relay output" - annotation (Placement(transformation(extent={{-140,170},{-120,190}}))); + annotation (Placement(transformation(extent={{-160,230},{-140,250}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant con2(final k=yRef) "Reference value for the relay output" - annotation (Placement(transformation(extent={{-140,140},{-120,160}}))); + annotation (Placement(transformation(extent={{-160,200},{-140,220}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant con3(final k=yLow) "Lower value for the relay output" - annotation (Placement(transformation(extent={{-140,110},{-120,130}}))); + annotation (Placement(transformation(extent={{-160,170},{-140,190}}))); Buildings.Controls.OBC.CDL.Reals.Subtract sub "Difference between the higher value and the reference value of the relay output" - annotation (Placement(transformation(extent={{-100,160},{-80,180}}))); + annotation (Placement(transformation(extent={{-100,220},{-80,240}}))); Buildings.Controls.OBC.CDL.Reals.Subtract sub1 "Difference between the reference value and the lower value of the relay output" - annotation (Placement(transformation(extent={{-100,120},{-80,140}}))); + annotation (Placement(transformation(extent={{-100,180},{-80,200}}))); Buildings.Controls.OBC.CDL.Reals.Subtract sub2 "Symmetricity level of the relay output" - annotation (Placement(transformation(extent={{-60,140},{-40,160}}))); + annotation (Placement(transformation(extent={{-40,200},{-20,220}}))); Buildings.Controls.OBC.CDL.Reals.Abs abs1 "Absolute value" - annotation (Placement(transformation(extent={{-20,140},{0,160}}))); + annotation (Placement(transformation(extent={{0,200},{20,220}}))); Buildings.Controls.OBC.CDL.Reals.Greater gre "Check if the relay output is asymmetric" - annotation (Placement(transformation(extent={{20,140},{40,160}}))); + annotation (Placement(transformation(extent={{60,200},{80,220}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant con4(final k=1e-3) "Threshold for checking if the input is larger than 0" - annotation (Placement(transformation(extent={{-20,110},{0,130}}))); - Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter yRel(final k=yMax - yMin) + annotation (Placement(transformation(extent={{0,170},{20,190}}))); + Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter yRel( + final k=yMax - yMin) "Relay output multiplied by the possible range of the output" - annotation (Placement(transformation(extent={{40,110},{60,130}}))); + annotation (Placement(transformation(extent={{40,90},{60,110}}))); Buildings.Controls.OBC.CDL.Logical.Nand nand "Check if an autotuning is ongoing while a new autotuning request is received" - annotation (Placement(transformation(extent={{120,-72},{140,-52}}))); + annotation (Placement(transformation(extent={{120,-92},{140,-72}}))); Buildings.Controls.OBC.CDL.Utilities.Assert assMes1( message="*** Warning: An autotuning is ongoing and the new tuning request is ignored.") "Warning message when an autotuning tuning is ongoing while a new autotuning request is received" - annotation (Placement(transformation(extent={{150,-72},{170,-52}}))); + annotation (Placement(transformation(extent={{150,-92},{170,-72}}))); Buildings.Controls.OBC.CDL.Logical.Edge edgReq "True only when a new request is received" - annotation (Placement(transformation(extent={{80,-80},{100,-60}}))); + annotation (Placement(transformation(extent={{80,-100},{100,-80}}))); Buildings.Controls.OBC.CDL.Logical.TrueDelay tunStaDel( final delayTime=0.001) "A small time delay for the autotuning start time to avoid false alerts" - annotation (Placement(transformation(extent={{80,-40},{100,-20}}))); + annotation (Placement(transformation(extent={{80,-60},{100,-40}}))); Buildings.Controls.OBC.CDL.Reals.AddParameter addPar( final p=yMin) "Sums the inputs" - annotation (Placement(transformation(extent={{80,110},{100,130}}))); + annotation (Placement(transformation(extent={{80,90},{100,110}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler sam_u_s( final y_start=u_s_start) "Recording the setpoint" - annotation (Placement(transformation(extent={{-100,240},{-80,220}}))); + annotation (Placement(transformation(extent={{-100,130},{-80,150}}))); Buildings.Controls.OBC.CDL.Logical.Nand nand1 "Check if an autotuning is ongoing while the setpoint changes" - annotation (Placement(transformation(extent={{100,220},{120,240}}))); + annotation (Placement(transformation(extent={{100,130},{120,150}}))); Buildings.Controls.OBC.CDL.Reals.Subtract sub3 "Change of the setpoint" - annotation (Placement(transformation(extent={{-40,220},{-20,240}}))); + annotation (Placement(transformation(extent={{-40,110},{-20,130}}))); Buildings.Controls.OBC.CDL.Reals.Abs abs2 "Absolute value of the setpoint change" - annotation (Placement(transformation(extent={{0,220},{20,240}}))); + annotation (Placement(transformation(extent={{0,130},{20,150}}))); Buildings.Controls.OBC.CDL.Reals.GreaterThreshold greThr( final t=setHys, final h=0.5*setHys) "Check if the setpoint changes" - annotation (Placement(transformation(extent={{40,220},{60,240}}))); + annotation (Placement(transformation(extent={{40,130},{60,150}}))); Buildings.Controls.OBC.CDL.Utilities.Assert assMes3(message= "In " + getInstanceName() + ": the setpoint must not change when an autotuning tuning is ongoing.") "Warning message when the setpoint changes during tuning process" - annotation (Placement(transformation(extent={{140,220},{160,240}}))); + annotation (Placement(transformation(extent={{140,130},{160,150}}))); + equation - connect(con.u_s, u_s) annotation (Line(points={{-52,-40},{-60,-40},{-60,0},{-200, - 0}}, color={0,0,127})); - connect(con.trigger, triRes) annotation (Line(points={{-46,-52},{-46,-90},{-60, - -90},{-60,-120}},color={255,0,255})); - connect(samk.y,con. k) annotation (Line(points={{-78,-20},{-66,-20},{-66,-32}, - {-52,-32}},color={0,0,127})); - connect(con.Ti, samTi.y) annotation (Line(points={{-52,-36},{-66,-36},{-66,-50}, - {-98,-50}}, color={0,0,127})); - connect(samTd.y,con. Td) annotation (Line(points={{-118,-80},{-60,-80},{-60,-44}, - {-52,-44}},color={0,0,127})); - connect(resPro.on, rel.yOn) annotation (Line(points={{-2,40},{-10,40},{-10,24}, - {-38,24}},color={255,0,255})); - connect(modTim.y, resPro.tim) annotation (Line(points={{-38,70},{-26,70},{-26, - 46},{-2,46}},color={0,0,127})); - connect(resPro.tau, conProMod.tau) annotation (Line(points={{22,40},{34,40},{34, - 62},{38,62}}, color={0,0,127})); - connect(conProMod.tOff, resPro.tOff) annotation (Line(points={{38,66},{30,66}, - {30,44},{22,44}},color={0,0,127})); - connect(resPro.tOn, conProMod.tOn) annotation (Line(points={{22,48},{26,48},{26, - 74},{38,74}}, color={0,0,127})); - connect(rel.yDif, conProMod.u) annotation (Line(points={{-38,30},{-14,30},{-14, - 78},{38,78}}, color={0,0,127})); - connect(PIDPar.kp, conProMod.k) annotation (Line(points={{78,36},{66,36},{66,78}, - {62,78}}, color={0,0,127})); - connect(PIDPar.T, conProMod.T) annotation (Line(points={{78,30},{70,30},{70,74}, - {62,74}}, color={0,0,127})); - connect(PIDPar.L, conProMod.L) annotation (Line(points={{78,24},{74,24},{74,66}, - {62,66}}, color={0,0,127})); - connect(PIDPar.k, samk.u) annotation (Line(points={{102,37},{110,37},{110,96}, - {-154,96},{-154,-20},{-102,-20}},color={0,0,127})); - connect(PIDPar.Ti, samTi.u) annotation (Line(points={{102,30},{112,30},{112,98}, - {-160,98},{-160,-50},{-122,-50}},color={0,0,127})); - connect(PIPar.kp, conProMod.k) annotation (Line(points={{78,76},{70,76},{70,78}, - {62,78}}, color={0,0,127})); - connect(PIPar.T, conProMod.T) annotation (Line(points={{78,70},{70,70},{70,74}, - {62,74}}, color={0,0,127})); - connect(PIPar.L, conProMod.L) annotation (Line(points={{78,64},{70,64},{70,66}, - {62,66}}, color={0,0,127})); - connect(PIPar.k, samk.u) annotation (Line(points={{102,76},{110,76},{110,96},{ - -154,96},{-154,-20},{-102,-20}}, color={0,0,127})); - connect(PIPar.Ti, samTi.u) annotation (Line(points={{102,64},{112,64},{112,98}, - {-160,98},{-160,-50},{-122,-50}}, color={0,0,127})); - connect(resPro.triSta, conProMod.triSta) annotation (Line(points={{22,36},{44, - 36},{44,58}}, color={255,0,255})); - connect(PIDPar.Td, samTd.u) annotation (Line(points={{102,23},{114,23},{114,94}, - {-148,94},{-148,-80},{-142,-80}}, color={0,0,127})); - connect(swi.y, y) annotation (Line(points={{162,0},{200,0}}, color={0,0,127})); - connect(u_m,con. u_m) annotation (Line(points={{-20,-120},{-20,-90},{-40,-90}, - {-40,-52}}, color={0,0,127})); - connect(swi.u3,con. y) annotation (Line(points={{138,-8},{60,-8},{60,-40},{-28, - -40}}, color={0,0,127})); - connect(inTunPro.y, swi.u2) annotation (Line(points={{42,-20},{50,-20},{50,0}, - {138,0}}, color={255,0,255})); - connect(inTunPro.u, triTun) annotation (Line(points={{18,-20},{-6,-20},{-6,-70}, - {60,-70},{60,-120}}, color={255,0,255})); - connect(inTunPro.clr, resPro.triEnd) annotation (Line(points={{18,-26},{10,-26}, - {10,10},{30,10},{30,32},{22,32}}, color={255,0,255})); - connect(rel.trigger, triTun) annotation (Line(points={{-56,18},{-56,0},{-6,0}, - {-6,-70},{60,-70},{60,-120}}, color={255,0,255})); - connect(resPro.trigger, triTun) annotation (Line(points={{-2,34},{-6,34},{-6,-70}, - {60,-70},{60,-120}}, color={255,0,255})); + connect(con.u_s, u_s) annotation (Line(points={{-52,-60},{-60,-60},{-60,-20},{ + -200,-20}}, color={0,0,127})); + connect(con.trigger, triRes) annotation (Line(points={{-46,-72},{-46,-110},{-60, + -110},{-60,-140}}, color={255,0,255})); + connect(samk.y,con. k) annotation (Line(points={{-78,-40},{-66,-40},{-66,-52}, + {-52,-52}},color={0,0,127})); + connect(con.Ti, samTi.y) annotation (Line(points={{-52,-56},{-66,-56},{-66,-70}, + {-98,-70}}, color={0,0,127})); + connect(samTd.y,con. Td) annotation (Line(points={{-118,-100},{-60,-100},{-60, + -64},{-52,-64}}, color={0,0,127})); + connect(resPro.on, rel.yOn) annotation (Line(points={{-2,20},{-10,20},{-10,4}, + {-38,4}}, color={255,0,255})); + connect(modTim.y, resPro.tim) annotation (Line(points={{-38,50},{-26,50},{-26, + 26},{-2,26}},color={0,0,127})); + connect(resPro.tau, conProMod.tau) annotation (Line(points={{22,20},{34,20},{34, + 42},{38,42}}, color={0,0,127})); + connect(conProMod.tOff, resPro.tOff) annotation (Line(points={{38,46},{30,46}, + {30,24},{22,24}},color={0,0,127})); + connect(resPro.tOn, conProMod.tOn) annotation (Line(points={{22,28},{26,28},{26, + 54},{38,54}}, color={0,0,127})); + connect(rel.yDif, conProMod.u) annotation (Line(points={{-38,10},{-14,10},{-14, + 58},{38,58}}, color={0,0,127})); + connect(PIDPar.kp, conProMod.k) annotation (Line(points={{78,16},{66,16},{66,58}, + {62,58}}, color={0,0,127})); + connect(PIDPar.T, conProMod.T) annotation (Line(points={{78,10},{70,10},{70,54}, + {62,54}}, color={0,0,127})); + connect(PIDPar.L, conProMod.L) annotation (Line(points={{78,4},{74,4},{74,46}, + {62,46}}, color={0,0,127})); + connect(PIDPar.k, samk.u) annotation (Line(points={{102,17},{110,17},{110,78}, + {-154,78},{-154,-40},{-102,-40}},color={0,0,127})); + connect(PIDPar.Ti, samTi.u) annotation (Line(points={{102,10},{112,10},{112, + 80},{-160,80},{-160,-70},{-122,-70}}, + color={0,0,127})); + connect(PIPar.kp, conProMod.k) annotation (Line(points={{78,56},{66,56},{66, + 58},{62,58}}, + color={0,0,127})); + connect(PIPar.T, conProMod.T) annotation (Line(points={{78,50},{70,50},{70,54}, + {62,54}}, color={0,0,127})); + connect(PIPar.L, conProMod.L) annotation (Line(points={{78,44},{74,44},{74,46}, + {62,46}}, color={0,0,127})); + connect(PIPar.k, samk.u) annotation (Line(points={{102,56},{110,56},{110,78}, + {-154,78},{-154,-40},{-102,-40}},color={0,0,127})); + connect(PIPar.Ti, samTi.u) annotation (Line(points={{102,44},{112,44},{112,80}, + {-160,80},{-160,-70},{-122,-70}}, color={0,0,127})); + connect(resPro.triSta, conProMod.triSta) annotation (Line(points={{22,16},{44, + 16},{44,38}}, color={255,0,255})); + connect(PIDPar.Td, samTd.u) annotation (Line(points={{102,3},{114,3},{114,76}, + {-148,76},{-148,-100},{-142,-100}}, color={0,0,127})); + connect(swi.y, y) annotation (Line(points={{162,-20},{200,-20}}, color={0,0,127})); + connect(u_m,con. u_m) annotation (Line(points={{-20,-140},{-20,-110},{-40,-110}, + {-40,-72}}, color={0,0,127})); + connect(swi.u3,con. y) annotation (Line(points={{138,-28},{60,-28},{60,-60},{-28, + -60}}, color={0,0,127})); + connect(inTunPro.y, swi.u2) annotation (Line(points={{42,-40},{50,-40},{50,-20}, + {138,-20}}, color={255,0,255})); + connect(inTunPro.u, triTun) annotation (Line(points={{18,-40},{-6,-40},{-6,-90}, + {60,-90},{60,-140}}, color={255,0,255})); + connect(inTunPro.clr, resPro.triEnd) annotation (Line(points={{18,-46},{10, + -46},{10,0},{30,0},{30,12},{22,12}}, color={255,0,255})); + connect(rel.trigger, triTun) annotation (Line(points={{-56,-2},{-56,-20},{-6,-20}, + {-6,-90},{60,-90},{60,-140}}, color={255,0,255})); + connect(resPro.trigger, triTun) annotation (Line(points={{-2,14},{-6,14},{-6,-90}, + {60,-90},{60,-140}}, color={255,0,255})); connect(nand.y, assMes1.u) - annotation (Line(points={{142,-62},{148,-62}}, color={255,0,255})); + annotation (Line(points={{142,-82},{148,-82}}, color={255,0,255})); connect(nand.u2, edgReq.y) - annotation (Line(points={{118,-70},{102,-70}}, color={255,0,255})); + annotation (Line(points={{118,-90},{102,-90}}, color={255,0,255})); connect(edgReq.u, triTun) - annotation (Line(points={{78,-70},{60,-70},{60,-120}}, color={255,0,255})); - connect(tunStaDel.y, nand.u1) annotation (Line(points={{102,-30},{110,-30},{110, - -62},{118,-62}}, color={255,0,255})); - connect(tunStaDel.u, inTunPro.y) annotation (Line(points={{78,-30},{50,-30},{50, - -20},{42,-20}}, color={255,0,255})); - connect(con1.y, sub.u1) annotation (Line(points={{-118,180},{-110,180},{-110,176}, - {-102,176}}, color={0,0,127})); - connect(con2.y, sub.u2) annotation (Line(points={{-118,150},{-108,150},{-108,164}, - {-102,164}}, color={0,0,127})); - connect(sub1.u1, con2.y) annotation (Line(points={{-102,136},{-108,136},{-108, - 150},{-118,150}}, color={0,0,127})); - connect(sub1.u2, con3.y) annotation (Line(points={{-102,124},{-110,124},{-110, - 120},{-118,120}}, color={0,0,127})); - connect(sub.y, sub2.u1) annotation (Line(points={{-78,170},{-70,170},{-70,156}, - {-62,156}}, color={0,0,127})); + annotation (Line(points={{78,-90},{60,-90},{60,-140}}, color={255,0,255})); + connect(tunStaDel.y, nand.u1) annotation (Line(points={{102,-50},{110,-50},{110, + -82},{118,-82}}, color={255,0,255})); + connect(tunStaDel.u, inTunPro.y) annotation (Line(points={{78,-50},{50,-50},{50, + -40},{42,-40}}, color={255,0,255})); + connect(con1.y, sub.u1) annotation (Line(points={{-138,240},{-120,240},{-120,236}, + {-102,236}}, color={0,0,127})); + connect(con2.y, sub.u2) annotation (Line(points={{-138,210},{-120,210},{-120,224}, + {-102,224}}, color={0,0,127})); + connect(sub1.u1, con2.y) annotation (Line(points={{-102,196},{-120,196},{-120, + 210},{-138,210}}, color={0,0,127})); + connect(sub1.u2, con3.y) annotation (Line(points={{-102,184},{-120,184},{-120, + 180},{-138,180}}, color={0,0,127})); + connect(sub.y, sub2.u1) annotation (Line(points={{-78,230},{-60,230},{-60,216}, + {-42,216}}, color={0,0,127})); connect(sub1.y, sub2.u2) - annotation (Line(points={{-78,130},{-70,130},{-70,144}, - {-62,144}}, color={0,0,127})); + annotation (Line(points={{-78,190},{-60,190},{-60,204},{-42,204}}, color={0,0,127})); connect(abs1.u, sub2.y) - annotation (Line(points={{-22,150},{-38,150}}, color={0,0,127})); + annotation (Line(points={{-2,210},{-18,210}}, color={0,0,127})); connect(abs1.y, gre.u1) - annotation (Line(points={{2,150},{18,150}}, color={0,0,127})); + annotation (Line(points={{22,210},{58,210}},color={0,0,127})); connect(gre.y, assMes2.u) - annotation (Line(points={{42,150},{58,150}}, color={255,0,255})); - connect(con4.y, gre.u2) annotation (Line(points={{2,120},{10,120},{10,142},{18, - 142}}, color={0,0,127})); - connect(rel.y, yRel.u) annotation (Line(points={{-38,36},{-20,36},{-20,86},{20, - 86},{20,120},{38,120}}, color={0,0,127})); + annotation (Line(points={{82,210},{98,210}}, color={255,0,255})); + connect(con4.y, gre.u2) annotation (Line(points={{22,180},{40,180},{40,202},{58, + 202}}, color={0,0,127})); + connect(rel.y, yRel.u) annotation (Line(points={{-38,16},{-20,16},{-20,100},{ + 38,100}}, color={0,0,127})); connect(yRel.y, addPar.u) - annotation (Line(points={{62,120},{78,120}}, color={0,0,127})); - connect(addPar.y, swi.u1) annotation (Line(points={{102,120},{130,120},{130,8}, - {138,8}}, color={0,0,127})); - connect(rel.u_m, u_m) annotation (Line(points={{-50,18},{-50,-14},{-20,-14},{-20, - -120}}, color={0,0,127})); - connect(rel.u_s, u_s) annotation (Line(points={{-62,30},{-170,30},{-170,0},{-200, - 0}}, color={0,0,127})); - connect(sam_u_s.u, u_s) annotation (Line(points={{-102,230},{-170,230},{-170,0}, - {-200,0}}, color={0,0,127})); - connect(sam_u_s.y, sub3.u1) annotation (Line(points={{-78,230},{-60,230},{-60, - 236},{-42,236}}, - color={0,0,127})); - connect(sub3.u2, u_s) annotation (Line(points={{-42,224},{-60,224},{-60,210},{ - -170,210},{-170,0},{-200,0}}, color={0,0,127})); + annotation (Line(points={{62,100},{78,100}}, color={0,0,127})); + connect(addPar.y, swi.u1) annotation (Line(points={{102,100},{130,100},{130,-12}, + {138,-12}}, color={0,0,127})); + connect(rel.u_m, u_m) annotation (Line(points={{-50,-2},{-50,-34},{-20,-34},{-20, + -140}}, color={0,0,127})); + connect(rel.u_s, u_s) annotation (Line(points={{-62,10},{-170,10},{-170,-20},{ + -200,-20}}, color={0,0,127})); + connect(sam_u_s.u, u_s) annotation (Line(points={{-102,140},{-170,140},{-170,-20}, + {-200,-20}}, color={0,0,127})); + connect(sam_u_s.y, sub3.u1) annotation (Line(points={{-78,140},{-60,140},{-60, + 126},{-42,126}}, color={0,0,127})); + connect(sub3.u2, u_s) annotation (Line(points={{-42,114},{-60,114},{-60,100},{ + -170,100},{-170,-20},{-200,-20}}, color={0,0,127})); connect(sub3.y, abs2.u) - annotation (Line(points={{-18,230},{-2,230}}, color={0,0,127})); + annotation (Line(points={{-18,120},{-10,120},{-10,140},{-2,140}}, color={0,0,127})); connect(nand1.y, assMes3.u) - annotation (Line(points={{122,230},{138,230}}, color={255,0,255})); + annotation (Line(points={{122,140},{138,140}}, color={255,0,255})); connect(greThr.y, nand1.u1) - annotation (Line(points={{62,230},{98,230}}, color={255,0,255})); - connect(nand1.u2, tunStaDel.y) annotation (Line(points={{98,222},{80,222},{80, - 180},{120,180},{120,-30},{102,-30}}, color={255,0,255})); + annotation (Line(points={{62,140},{98,140}}, color={255,0,255})); + connect(nand1.u2, tunStaDel.y) annotation (Line(points={{98,132},{80,132},{80, + 120},{120,120},{120,-50},{102,-50}}, color={255,0,255})); connect(conProMod.triEnd, resPro.triEnd) - annotation (Line(points={{56,58},{56,32},{22,32}}, color={255,0,255})); - connect(conProMod.tunSta, samk.trigger) annotation (Line(points={{62,62},{62, - 6},{-90,6},{-90,-8}}, color={255,0,255})); - connect(samTi.trigger, conProMod.tunSta) annotation (Line(points={{-110,-38}, - {-108,-38},{-108,6},{62,6},{62,62}}, color={255,0,255})); - connect(samTd.trigger, conProMod.tunSta) annotation (Line(points={{-130,-68}, - {-130,6},{62,6},{62,62}}, color={255,0,255})); - connect(sam_u_s.trigger, triTun) annotation (Line(points={{-90,242},{-90,252}, - {-74,252},{-74,-96},{60,-96},{60,-120}}, color={255,0,255})); + annotation (Line(points={{56,38},{56,12},{22,12}}, color={255,0,255})); + connect(conProMod.tunSta, samk.trigger) annotation (Line(points={{62,42},{62,-14}, + {-90,-14},{-90,-28}}, color={255,0,255})); + connect(samTi.trigger, conProMod.tunSta) annotation (Line(points={{-110,-58},{ + -110,-14},{62,-14},{62,42}}, color={255,0,255})); + connect(samTd.trigger, conProMod.tunSta) annotation (Line(points={{-130,-88},{ + -130,-14},{62,-14},{62,42}}, color={255,0,255})); + connect(sam_u_s.trigger, triTun) annotation (Line(points={{-90,128},{-90,60}, + {-72,60},{-72,-116},{60,-116},{60,-140}}, color={255,0,255})); connect(abs2.y, greThr.u) - annotation (Line(points={{22,230},{38,230}}, color={0,0,127})); -annotation (Documentation(info=" + annotation (Line(points={{22,140},{38,140}}, color={0,0,127})); + +annotation (defaultComponentName = "PIDWitTun", +Documentation(info="

                                                                                    This block implements a rule-based PID tuning method.

                                                                                    @@ -461,9 +469,8 @@ First implementation
                                                                                  "), - defaultComponentName = "PIDWitTun", - Icon(coordinateSystem(extent={{-100,-100},{100,100}}), - graphics={ +Icon(coordinateSystem(extent={{-100,-100},{100,100}}), + graphics={ Text( extent={{-100,140},{100,100}}, textString="%name", @@ -551,5 +558,5 @@ First implementation
                                                                                  "Td = " + String(con.Td, leftJustified=false, significantDigits=3)))}), - Diagram(coordinateSystem(extent={{-180,-100},{180,260}}))); +Diagram(coordinateSystem(extent={{-180,-120},{180,260}}))); end FirstOrderAMIGO; From e87b2f9216387e3c2933c71b20809160d60e7efd Mon Sep 17 00:00:00 2001 From: SenHuang19 Date: Wed, 28 Aug 2024 22:06:09 -0400 Subject: [PATCH 201/214] improve graphic and make the tuning stop when the setppint changes --- .../PIDWithAutotuning/FirstOrderAMIGO.mo | 296 ++++++++++-------- 1 file changed, 161 insertions(+), 135 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index b0a31b76d92..33999f6fe19 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -86,7 +86,7 @@ block FirstOrderAMIGO iconTransformation(extent={{100,-20},{140,20}}))); Buildings.Controls.OBC.CDL.Reals.Sources.CivilTime modTim "Simulation time" - annotation (Placement(transformation(extent={{-60,40},{-40,60}}))); + annotation (Placement(transformation(extent={{-160,180},{-140,200}}))); Buildings.Controls.OBC.Utilities.PIDWithInputGains con( final controllerType=conTyp, final r=r, @@ -102,10 +102,10 @@ block FirstOrderAMIGO annotation (Placement(transformation(extent={{-50,-70},{-30,-50}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PID PIDPar if with_D "Autotuner of gains for a PID controller" - annotation (Placement(transformation(extent={{80,0},{100,20}}))); + annotation (Placement(transformation(extent={{80,92},{100,112}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PI PIPar if not with_D "Autotuner of gains for a PI controller" - annotation (Placement(transformation(extent={{80,40},{100,60}}))); + annotation (Placement(transformation(extent={{84,156},{104,176}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Controller rel( final r=r, final yHig=yHig, @@ -113,13 +113,13 @@ block FirstOrderAMIGO final deaBan=deaBan, final reverseActing=reverseActing) "Relay controller" - annotation (Placement(transformation(extent={{-60,0},{-40,20}}))); + annotation (Placement(transformation(extent={{-60,120},{-40,140}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.ResponseProcess resPro( final yHig=yHig - yRef, final yLow=yRef - yLow) "Identify the on and off period length, the half period ratio, and the moments when the tuning starts and ends" - annotation (Placement(transformation(extent={{0,10},{20,30}}))); + annotation (Placement(transformation(extent={{0,100},{20,120}}))); Buildings.Controls.OBC.CDL.Reals.Switch swi "Switch between a PID controller and a relay controller" annotation (Placement(transformation(extent={{140,-30},{160,-10}}))); @@ -140,11 +140,17 @@ block FirstOrderAMIGO final yLow=yRef - yLow, final deaBan=deaBan) "Calculates the parameters of a first-order time delayed model" - annotation (Placement(transformation(extent={{40,40},{60,60}}))); + annotation (Placement(transformation(extent={{32,154},{52,174}}))); Buildings.Controls.OBC.CDL.Logical.Latch inTunPro "Outputs true if the controller is conducting the autotuning process" - annotation (Placement(transformation(extent={{20,-50},{40,-30}}))); + annotation (Placement(transformation(extent={{-40,20},{-20,40}}))); + Buildings.Controls.OBC.CDL.Logical.FallingEdge falEdg + "Check if the setpoint changes during an autotuning process" + annotation (Placement(transformation(extent={{-148,220},{-128,240}}))); + Buildings.Controls.OBC.CDL.Logical.Or or2 + "Check if the autotuning is completed or aborted" + annotation (Placement(transformation(extent={{-84,220},{-64,240}}))); protected final parameter Boolean with_D=controllerType == Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PID "Boolean flag to enable derivative action" @@ -157,79 +163,79 @@ protected Buildings.Controls.OBC.CDL.Utilities.Assert assMes2( message="*** Warning: the relay output needs to be asymmetric. Check the value of yHig, yLow and yRef.") "Warning message when the relay output is symmetric" - annotation (Placement(transformation(extent={{100,200},{120,220}}))); + annotation (Placement(transformation(extent={{150,370},{170,390}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant con1(final k=yHig) "Higher value for the relay output" - annotation (Placement(transformation(extent={{-160,230},{-140,250}}))); + annotation (Placement(transformation(extent={{-160,390},{-140,410}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant con2(final k=yRef) "Reference value for the relay output" - annotation (Placement(transformation(extent={{-160,200},{-140,220}}))); + annotation (Placement(transformation(extent={{-160,360},{-140,380}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant con3(final k=yLow) "Lower value for the relay output" - annotation (Placement(transformation(extent={{-160,170},{-140,190}}))); + annotation (Placement(transformation(extent={{-160,330},{-140,350}}))); Buildings.Controls.OBC.CDL.Reals.Subtract sub "Difference between the higher value and the reference value of the relay output" - annotation (Placement(transformation(extent={{-100,220},{-80,240}}))); + annotation (Placement(transformation(extent={{-100,370},{-80,390}}))); Buildings.Controls.OBC.CDL.Reals.Subtract sub1 "Difference between the reference value and the lower value of the relay output" - annotation (Placement(transformation(extent={{-100,180},{-80,200}}))); + annotation (Placement(transformation(extent={{-100,330},{-80,350}}))); Buildings.Controls.OBC.CDL.Reals.Subtract sub2 "Symmetricity level of the relay output" - annotation (Placement(transformation(extent={{-40,200},{-20,220}}))); + annotation (Placement(transformation(extent={{-40,350},{-20,370}}))); Buildings.Controls.OBC.CDL.Reals.Abs abs1 "Absolute value" - annotation (Placement(transformation(extent={{0,200},{20,220}}))); + annotation (Placement(transformation(extent={{0,338},{20,358}}))); Buildings.Controls.OBC.CDL.Reals.Greater gre "Check if the relay output is asymmetric" - annotation (Placement(transformation(extent={{60,200},{80,220}}))); + annotation (Placement(transformation(extent={{60,390},{80,370}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant con4(final k=1e-3) "Threshold for checking if the input is larger than 0" - annotation (Placement(transformation(extent={{0,170},{20,190}}))); + annotation (Placement(transformation(extent={{0,378},{20,398}}))); Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter yRel( final k=yMax - yMin) "Relay output multiplied by the possible range of the output" - annotation (Placement(transformation(extent={{40,90},{60,110}}))); + annotation (Placement(transformation(extent={{40,210},{60,230}}))); Buildings.Controls.OBC.CDL.Logical.Nand nand "Check if an autotuning is ongoing while a new autotuning request is received" - annotation (Placement(transformation(extent={{120,-92},{140,-72}}))); + annotation (Placement(transformation(extent={{80,20},{100,40}}))); Buildings.Controls.OBC.CDL.Utilities.Assert assMes1( message="*** Warning: An autotuning is ongoing and the new tuning request is ignored.") "Warning message when an autotuning tuning is ongoing while a new autotuning request is received" - annotation (Placement(transformation(extent={{150,-92},{170,-72}}))); + annotation (Placement(transformation(extent={{140,20},{160,40}}))); Buildings.Controls.OBC.CDL.Logical.Edge edgReq "True only when a new request is received" - annotation (Placement(transformation(extent={{80,-100},{100,-80}}))); + annotation (Placement(transformation(extent={{12,-50},{32,-30}}))); Buildings.Controls.OBC.CDL.Logical.TrueDelay tunStaDel( final delayTime=0.001) "A small time delay for the autotuning start time to avoid false alerts" - annotation (Placement(transformation(extent={{80,-60},{100,-40}}))); + annotation (Placement(transformation(extent={{10,20},{30,40}}))); Buildings.Controls.OBC.CDL.Reals.AddParameter addPar( final p=yMin) "Sums the inputs" - annotation (Placement(transformation(extent={{80,90},{100,110}}))); + annotation (Placement(transformation(extent={{80,210},{100,230}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler sam_u_s( final y_start=u_s_start) "Recording the setpoint" - annotation (Placement(transformation(extent={{-100,130},{-80,150}}))); + annotation (Placement(transformation(extent={{-122,284},{-102,304}}))); Buildings.Controls.OBC.CDL.Logical.Nand nand1 "Check if an autotuning is ongoing while the setpoint changes" - annotation (Placement(transformation(extent={{100,130},{120,150}}))); + annotation (Placement(transformation(extent={{94,290},{114,310}}))); Buildings.Controls.OBC.CDL.Reals.Subtract sub3 "Change of the setpoint" - annotation (Placement(transformation(extent={{-40,110},{-20,130}}))); + annotation (Placement(transformation(extent={{-40,264},{-20,284}}))); Buildings.Controls.OBC.CDL.Reals.Abs abs2 "Absolute value of the setpoint change" - annotation (Placement(transformation(extent={{0,130},{20,150}}))); + annotation (Placement(transformation(extent={{0,284},{20,304}}))); Buildings.Controls.OBC.CDL.Reals.GreaterThreshold greThr( final t=setHys, final h=0.5*setHys) "Check if the setpoint changes" - annotation (Placement(transformation(extent={{40,130},{60,150}}))); - Buildings.Controls.OBC.CDL.Utilities.Assert assMes3(message= - "In " + getInstanceName() - + ": the setpoint must not change when an autotuning tuning is ongoing.") + annotation (Placement(transformation(extent={{40,290},{60,310}}))); + Buildings.Controls.OBC.CDL.Utilities.Assert assMes3(message="In " + + getInstanceName() + + ": the setpoint must not change when an autotuning tuning is ongoing. This ongoing autotuning will thus abort.") "Warning message when the setpoint changes during tuning process" - annotation (Placement(transformation(extent={{140,130},{160,150}}))); + annotation (Placement(transformation(extent={{150,290},{170,310}}))); equation connect(con.u_s, u_s) annotation (Line(points={{-52,-60},{-60,-60},{-60,-20},{ @@ -242,126 +248,146 @@ equation {-98,-70}}, color={0,0,127})); connect(samTd.y,con. Td) annotation (Line(points={{-118,-100},{-60,-100},{-60, -64},{-52,-64}}, color={0,0,127})); - connect(resPro.on, rel.yOn) annotation (Line(points={{-2,20},{-10,20},{-10,4}, - {-38,4}}, color={255,0,255})); - connect(modTim.y, resPro.tim) annotation (Line(points={{-38,50},{-26,50},{-26, - 26},{-2,26}},color={0,0,127})); - connect(resPro.tau, conProMod.tau) annotation (Line(points={{22,20},{34,20},{34, - 42},{38,42}}, color={0,0,127})); - connect(conProMod.tOff, resPro.tOff) annotation (Line(points={{38,46},{30,46}, - {30,24},{22,24}},color={0,0,127})); - connect(resPro.tOn, conProMod.tOn) annotation (Line(points={{22,28},{26,28},{26, - 54},{38,54}}, color={0,0,127})); - connect(rel.yDif, conProMod.u) annotation (Line(points={{-38,10},{-14,10},{-14, - 58},{38,58}}, color={0,0,127})); - connect(PIDPar.kp, conProMod.k) annotation (Line(points={{78,16},{66,16},{66,58}, - {62,58}}, color={0,0,127})); - connect(PIDPar.T, conProMod.T) annotation (Line(points={{78,10},{70,10},{70,54}, - {62,54}}, color={0,0,127})); - connect(PIDPar.L, conProMod.L) annotation (Line(points={{78,4},{74,4},{74,46}, - {62,46}}, color={0,0,127})); - connect(PIDPar.k, samk.u) annotation (Line(points={{102,17},{110,17},{110,78}, - {-154,78},{-154,-40},{-102,-40}},color={0,0,127})); - connect(PIDPar.Ti, samTi.u) annotation (Line(points={{102,10},{112,10},{112, - 80},{-160,80},{-160,-70},{-122,-70}}, + connect(resPro.on, rel.yOn) annotation (Line(points={{-2,110},{-30,110},{-30, + 124},{-38,124}}, + color={255,0,255})); + connect(modTim.y, resPro.tim) annotation (Line(points={{-138,190},{-4,190},{ + -4,126},{-10,126},{-10,116},{-2,116}}, + color={0,0,127})); + connect(resPro.tau, conProMod.tau) annotation (Line(points={{22,110},{30,110}, + {30,156}}, color={0,0,127})); + connect(conProMod.tOff, resPro.tOff) annotation (Line(points={{30,160},{26, + 160},{26,114},{22,114}}, + color={0,0,127})); + connect(resPro.tOn, conProMod.tOn) annotation (Line(points={{22,118},{22,168}, + {30,168}}, color={0,0,127})); + connect(rel.yDif, conProMod.u) annotation (Line(points={{-38,130},{18,130},{ + 18,172},{30,172}}, + color={0,0,127})); + connect(PIDPar.kp, conProMod.k) annotation (Line(points={{78,108},{64,108},{ + 64,172},{54,172}}, + color={0,0,127})); + connect(PIDPar.T, conProMod.T) annotation (Line(points={{78,102},{60,102},{60, + 148},{62,148},{62,168},{54,168}}, + color={0,0,127})); + connect(PIDPar.L, conProMod.L) annotation (Line(points={{78,96},{58,96},{58, + 150},{60,150},{60,160},{54,160}}, + color={0,0,127})); + connect(PIDPar.k, samk.u) annotation (Line(points={{102,109},{102,110},{146, + 110},{146,78},{-154,78},{-154,-40},{-102,-40}}, + color={0,0,127})); + connect(PIDPar.Ti, samTi.u) annotation (Line(points={{102,102},{118,102},{118, + -6},{-124,-6},{-124,-70},{-122,-70}}, color={0,0,127})); - connect(PIPar.kp, conProMod.k) annotation (Line(points={{78,56},{66,56},{66, - 58},{62,58}}, + connect(PIPar.kp, conProMod.k) annotation (Line(points={{82,172},{54,172}}, color={0,0,127})); - connect(PIPar.T, conProMod.T) annotation (Line(points={{78,50},{70,50},{70,54}, - {62,54}}, color={0,0,127})); - connect(PIPar.L, conProMod.L) annotation (Line(points={{78,44},{74,44},{74,46}, - {62,46}}, color={0,0,127})); - connect(PIPar.k, samk.u) annotation (Line(points={{102,56},{110,56},{110,78}, - {-154,78},{-154,-40},{-102,-40}},color={0,0,127})); - connect(PIPar.Ti, samTi.u) annotation (Line(points={{102,44},{112,44},{112,80}, - {-160,80},{-160,-70},{-122,-70}}, color={0,0,127})); - connect(resPro.triSta, conProMod.triSta) annotation (Line(points={{22,16},{44, - 16},{44,38}}, color={255,0,255})); - connect(PIDPar.Td, samTd.u) annotation (Line(points={{102,3},{114,3},{114,76}, - {-148,76},{-148,-100},{-142,-100}}, color={0,0,127})); + connect(PIPar.T, conProMod.T) annotation (Line(points={{82,166},{62,166},{62, + 168},{54,168}}, + color={0,0,127})); + connect(PIPar.L, conProMod.L) annotation (Line(points={{82,160},{54,160}}, + color={0,0,127})); + connect(PIPar.k, samk.u) annotation (Line(points={{106,172},{156,172},{156,70}, + {-148,70},{-148,-40},{-102,-40}},color={0,0,127})); + connect(PIPar.Ti, samTi.u) annotation (Line(points={{106,160},{166,160},{166, + 48},{-140,48},{-140,-70},{-122,-70}}, + color={0,0,127})); + connect(resPro.triSta, conProMod.triSta) annotation (Line(points={{22,106},{ + 36,106},{36,152}}, + color={255,0,255})); + connect(PIDPar.Td, samTd.u) annotation (Line(points={{102,95},{102,94},{112, + 94},{112,88},{-162,88},{-162,-100},{-142,-100}}, + color={0,0,127})); connect(swi.y, y) annotation (Line(points={{162,-20},{200,-20}}, color={0,0,127})); connect(u_m,con. u_m) annotation (Line(points={{-20,-140},{-20,-110},{-40,-110}, {-40,-72}}, color={0,0,127})); - connect(swi.u3,con. y) annotation (Line(points={{138,-28},{60,-28},{60,-60},{-28, - -60}}, color={0,0,127})); - connect(inTunPro.y, swi.u2) annotation (Line(points={{42,-40},{50,-40},{50,-20}, + connect(swi.u3,con. y) annotation (Line(points={{138,-28},{56,-28},{56,-60},{ + -28,-60}}, + color={0,0,127})); + connect(inTunPro.y, swi.u2) annotation (Line(points={{-18,30},{-6,30},{-6,-20}, {138,-20}}, color={255,0,255})); - connect(inTunPro.u, triTun) annotation (Line(points={{18,-40},{-6,-40},{-6,-90}, - {60,-90},{60,-140}}, color={255,0,255})); - connect(inTunPro.clr, resPro.triEnd) annotation (Line(points={{18,-46},{10, - -46},{10,0},{30,0},{30,12},{22,12}}, color={255,0,255})); - connect(rel.trigger, triTun) annotation (Line(points={{-56,-2},{-56,-20},{-6,-20}, - {-6,-90},{60,-90},{60,-140}}, color={255,0,255})); - connect(resPro.trigger, triTun) annotation (Line(points={{-2,14},{-6,14},{-6,-90}, - {60,-90},{60,-140}}, color={255,0,255})); + connect(inTunPro.u, triTun) annotation (Line(points={{-42,30},{-56,30},{-56, + 46},{-14,46},{-14,-90},{60,-90},{60,-140}}, + color={255,0,255})); + connect(rel.trigger, triTun) annotation (Line(points={{-56,118},{-56,108},{ + -90,108},{-90,56},{60,56},{60,-140}}, + color={255,0,255})); + connect(resPro.trigger, triTun) annotation (Line(points={{-2,104},{-14,104},{ + -14,-90},{60,-90},{60,-140}}, + color={255,0,255})); connect(nand.y, assMes1.u) - annotation (Line(points={{142,-82},{148,-82}}, color={255,0,255})); + annotation (Line(points={{102,30},{138,30}}, color={255,0,255})); connect(nand.u2, edgReq.y) - annotation (Line(points={{118,-90},{102,-90}}, color={255,0,255})); + annotation (Line(points={{78,22},{40,22},{40,-40},{34,-40}}, color={255,0,255})); connect(edgReq.u, triTun) - annotation (Line(points={{78,-90},{60,-90},{60,-140}}, color={255,0,255})); - connect(tunStaDel.y, nand.u1) annotation (Line(points={{102,-50},{110,-50},{110, - -82},{118,-82}}, color={255,0,255})); - connect(tunStaDel.u, inTunPro.y) annotation (Line(points={{78,-50},{50,-50},{50, - -40},{42,-40}}, color={255,0,255})); - connect(con1.y, sub.u1) annotation (Line(points={{-138,240},{-120,240},{-120,236}, - {-102,236}}, color={0,0,127})); - connect(con2.y, sub.u2) annotation (Line(points={{-138,210},{-120,210},{-120,224}, - {-102,224}}, color={0,0,127})); - connect(sub1.u1, con2.y) annotation (Line(points={{-102,196},{-120,196},{-120, - 210},{-138,210}}, color={0,0,127})); - connect(sub1.u2, con3.y) annotation (Line(points={{-102,184},{-120,184},{-120, - 180},{-138,180}}, color={0,0,127})); - connect(sub.y, sub2.u1) annotation (Line(points={{-78,230},{-60,230},{-60,216}, - {-42,216}}, color={0,0,127})); + annotation (Line(points={{10,-40},{-14,-40},{-14,-90},{60,-90},{60,-140}}, + color={255,0,255})); + connect(tunStaDel.y, nand.u1) annotation (Line(points={{32,30},{78,30}}, color={255,0,255})); + connect(tunStaDel.u, inTunPro.y) annotation (Line(points={{8,30},{-18,30}}, + color={255,0,255})); + connect(con1.y, sub.u1) annotation (Line(points={{-138,400},{-108,400},{-108, + 386},{-102,386}}, color={0,0,127})); + connect(con2.y, sub.u2) annotation (Line(points={{-138,370},{-110,370},{-110, + 374},{-102,374}}, color={0,0,127})); + connect(sub1.u1, con2.y) annotation (Line(points={{-102,346},{-122,346},{-122, + 370},{-138,370}}, color={0,0,127})); + connect(sub1.u2, con3.y) annotation (Line(points={{-102,334},{-120,334},{-120, + 340},{-138,340}}, color={0,0,127})); + connect(sub.y, sub2.u1) annotation (Line(points={{-78,380},{-60,380},{-60,366}, + {-42,366}}, color={0,0,127})); connect(sub1.y, sub2.u2) - annotation (Line(points={{-78,190},{-60,190},{-60,204},{-42,204}}, color={0,0,127})); + annotation (Line(points={{-78,340},{-60,340},{-60,354},{-42,354}}, color={0,0,127})); connect(abs1.u, sub2.y) - annotation (Line(points={{-2,210},{-18,210}}, color={0,0,127})); + annotation (Line(points={{-2,348},{-12,348},{-12,360},{-18,360}}, color={0,0,127})); connect(abs1.y, gre.u1) - annotation (Line(points={{22,210},{58,210}},color={0,0,127})); + annotation (Line(points={{22,348},{52,348},{52,380},{58,380}}, color={0,0,127})); connect(gre.y, assMes2.u) - annotation (Line(points={{82,210},{98,210}}, color={255,0,255})); - connect(con4.y, gre.u2) annotation (Line(points={{22,180},{40,180},{40,202},{58, - 202}}, color={0,0,127})); - connect(rel.y, yRel.u) annotation (Line(points={{-38,16},{-20,16},{-20,100},{ - 38,100}}, color={0,0,127})); + annotation (Line(points={{82,380},{148,380}},color={255,0,255})); + connect(con4.y, gre.u2) annotation (Line(points={{22,388},{58,388}}, + color={0,0,127})); + connect(rel.y, yRel.u) annotation (Line(points={{-38,136},{-6,136},{-6,220},{ + 38,220}}, color={0,0,127})); connect(yRel.y, addPar.u) - annotation (Line(points={{62,100},{78,100}}, color={0,0,127})); - connect(addPar.y, swi.u1) annotation (Line(points={{102,100},{130,100},{130,-12}, - {138,-12}}, color={0,0,127})); - connect(rel.u_m, u_m) annotation (Line(points={{-50,-2},{-50,-34},{-20,-34},{-20, - -140}}, color={0,0,127})); - connect(rel.u_s, u_s) annotation (Line(points={{-62,10},{-170,10},{-170,-20},{ - -200,-20}}, color={0,0,127})); - connect(sam_u_s.u, u_s) annotation (Line(points={{-102,140},{-170,140},{-170,-20}, - {-200,-20}}, color={0,0,127})); - connect(sam_u_s.y, sub3.u1) annotation (Line(points={{-78,140},{-60,140},{-60, - 126},{-42,126}}, color={0,0,127})); - connect(sub3.u2, u_s) annotation (Line(points={{-42,114},{-60,114},{-60,100},{ - -170,100},{-170,-20},{-200,-20}}, color={0,0,127})); + annotation (Line(points={{62,220},{78,220}}, color={0,0,127})); + connect(addPar.y, swi.u1) annotation (Line(points={{102,220},{130,220},{130, + -12},{138,-12}}, color={0,0,127})); + connect(rel.u_m, u_m) annotation (Line(points={{-50,118},{-50,-44},{-20,-44}, + {-20,-140}}, color={0,0,127})); + connect(rel.u_s, u_s) annotation (Line(points={{-62,130},{-158,130},{-158,-20}, + {-200,-20}},color={0,0,127})); + connect(sam_u_s.u, u_s) annotation (Line(points={{-124,294},{-154,294},{-154, + 254},{-170,254},{-170,-20},{-200,-20}}, color={0,0,127})); + connect(sam_u_s.y, sub3.u1) annotation (Line(points={{-100,294},{-48,294},{ + -48,280},{-42,280}}, color={0,0,127})); + connect(sub3.u2, u_s) annotation (Line(points={{-42,268},{-60,268},{-60,254}, + {-170,254},{-170,-20},{-200,-20}},color={0,0,127})); connect(sub3.y, abs2.u) - annotation (Line(points={{-18,120},{-10,120},{-10,140},{-2,140}}, color={0,0,127})); + annotation (Line(points={{-18,274},{-10,274},{-10,294},{-2,294}}, color={0,0,127})); connect(nand1.y, assMes3.u) - annotation (Line(points={{122,140},{138,140}}, color={255,0,255})); + annotation (Line(points={{116,300},{148,300}}, color={255,0,255})); connect(greThr.y, nand1.u1) - annotation (Line(points={{62,140},{98,140}}, color={255,0,255})); - connect(nand1.u2, tunStaDel.y) annotation (Line(points={{98,132},{80,132},{80, - 120},{120,120},{120,-50},{102,-50}}, color={255,0,255})); - connect(conProMod.triEnd, resPro.triEnd) - annotation (Line(points={{56,38},{56,12},{22,12}}, color={255,0,255})); - connect(conProMod.tunSta, samk.trigger) annotation (Line(points={{62,42},{62,-14}, - {-90,-14},{-90,-28}}, color={255,0,255})); - connect(samTi.trigger, conProMod.tunSta) annotation (Line(points={{-110,-58},{ - -110,-14},{62,-14},{62,42}}, color={255,0,255})); - connect(samTd.trigger, conProMod.tunSta) annotation (Line(points={{-130,-88},{ - -130,-14},{62,-14},{62,42}}, color={255,0,255})); - connect(sam_u_s.trigger, triTun) annotation (Line(points={{-90,128},{-90,60}, - {-72,60},{-72,-116},{60,-116},{60,-140}}, color={255,0,255})); + annotation (Line(points={{62,300},{92,300}}, color={255,0,255})); + connect(conProMod.tunSta, samk.trigger) annotation (Line(points={{54,156},{54, + -14},{-110,-14},{-110,-22},{-90,-22},{-90,-28}}, color={255,0,255})); + connect(samTi.trigger, conProMod.tunSta) annotation (Line(points={{-110,-58}, + {-110,-42},{-130,-42},{-130,-14},{54,-14},{54,156}}, color={255,0,255})); + connect(samTd.trigger, conProMod.tunSta) annotation (Line(points={{-130,-88}, + {-130,-14},{54,-14},{54,156}}, color={255,0,255})); + connect(sam_u_s.trigger, triTun) annotation (Line(points={{-112,282},{-112,56}, + {-14,56},{-14,-90},{60,-90},{60,-140}}, color={255,0,255})); connect(abs2.y, greThr.u) - annotation (Line(points={{22,140},{38,140}}, color={0,0,127})); - + annotation (Line(points={{22,294},{30,294},{30,300},{38,300}}, color={0,0,127})); + connect(nand1.u2, triTun) annotation (Line(points={{92,292},{54,292},{54,260}, + {-112,260},{-112,56},{60,56},{60,-140}}, color={255,0,255})); + connect(falEdg.u, nand1.y) annotation (Line(points={{-150,230},{-156,230},{ + -156,316},{124,316},{124,300},{116,300}}, color={255,0,255})); + connect(falEdg.y, or2.u1) + annotation (Line(points={{-126,230},{-86,230}}, color={255,0,255})); + connect(resPro.triEnd, or2.u2) annotation (Line(points={{22,102},{-2,102},{-2, + 64},{-124,64},{-124,222},{-86,222}}, color={255,0,255})); + connect(or2.y, inTunPro.clr) annotation (Line(points={{-62,230},{-62,146},{ + -70,146},{-70,24},{-42,24}}, color={255,0,255})); + connect(conProMod.triEnd, or2.y) annotation (Line(points={{48,152},{48,150},{ + -12,150},{-12,230},{-62,230}}, color={255,0,255})); annotation (defaultComponentName = "PIDWitTun", Documentation(info="

                                                                                  @@ -558,5 +584,5 @@ Icon(coordinateSystem(extent={{-100,-100},{100,100}}), "Td = " + String(con.Td, leftJustified=false, significantDigits=3)))}), -Diagram(coordinateSystem(extent={{-180,-120},{180,260}}))); +Diagram(coordinateSystem(extent={{-180,-120},{180,420}}))); end FirstOrderAMIGO; From 5f4f37eb5c552c95c14498d26f056f4f35c28bd9 Mon Sep 17 00:00:00 2001 From: SenHuang19 Date: Wed, 28 Aug 2024 22:06:26 -0400 Subject: [PATCH 202/214] rebase --- ...amples_WetCoilCounterFlowPControlAutoTuning.txt | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_HeatExchangers_Examples_WetCoilCounterFlowPControlAutoTuning.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_HeatExchangers_Examples_WetCoilCounterFlowPControlAutoTuning.txt index 317cf22a1bd..60ccfda3b4c 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_HeatExchangers_Examples_WetCoilCounterFlowPControlAutoTuning.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_HeatExchangers_Examples_WetCoilCounterFlowPControlAutoTuning.txt @@ -1,4 +1,4 @@ -last-generated=2024-06-14 +last-generated=2024-08-28 statistics-initialization= { "nonlinear": "1", @@ -12,11 +12,11 @@ statistics-simulation= "numerical Jacobians": "0" } time=[0e+00, 3.6e+03] -hex.m1_flow=[1.000000014901161e-01, 9.799395687878132e-03, 3.891929611563683e-02, 1.243012398481369e-02, 4.082757979631424e-02, 1.002543978393078e-02, 4.832808673381805e-02, 8.020547218620768e-03, 5.314406007528305e-03, 8.957910351455212e-03, 1.455424912273884e-02, 1.926885917782784e-02, 2.135048806667328e-02, 2.181801572442055e-02, 2.197562903165817e-02, 2.217586152255535e-02, 2.238752692937851e-02, 1.900335587561131e-02, 8.295463398098946e-03, 5.835996009409428e-03, 4.895612131804228e-03, 4.280225839465857e-03, 3.848579945042729e-03, 3.540420206263661e-03, 3.315708367154002e-03, 3.146618371829391e-03, 3.019300056621432e-03, 2.400044817477461e-03, 1.637312350794674e-03, 2.243597526103258e-03, 2.796528395265341e-03, 2.920550759881735e-03, 2.911846851930022e-03, 2.852245233952999e-03, 2.987440209835768e-03, 3.261285834014416e-03, 3.841469530016184e-03, 4.812328144907951e-03, 6.299466360360384e-03, 8.400643244385719e-03, 1.102966628968716e-02, 1.399938482791185e-02, 1.708998903632164e-02, 2.015193365514278e-02, 2.325768955051899e-02, 2.656054496765137e-02, 3.021474927663803e-02, 3.438415378332138e-02, 3.92632819712162e-02, 4.510772228240967e-02, 5.227047204971313e-02, 5.964099988341331e-02, 6.503266096115112e-02, 6.954372674226761e-02, 7.368407398462298e-02, 7.7583983540535e-02, 8.132047206163409e-02, 8.495523780584335e-02, 8.853314071893692e-02, 9.502344578504562e-02, 9.911808371543884e-02, 9.98750776052475e-02, 9.998374432325363e-02, 9.999824315309525e-02, 9.99998077750206e-02, 9.999997913837433e-02, 9.999999403953552e-02, 6.94853663444519e-02, 1.178969349712133e-02, 5.948134139180183e-02, 8.125735819339752e-02, 6.601621955633163e-02, 5.363185703754425e-02, 4.590350762009621e-02, 4.133545234799385e-02, 3.871942311525345e-02, 3.723839297890663e-02, 3.639515861868858e-02, 3.590912371873856e-02, 3.56258898973465e-02, 3.54599691927433e-02, 3.536252304911613e-02, 3.530532494187355e-02, 3.527173399925232e-02, 3.525185585021973e-02, 3.524012491106987e-02, 3.523324802517891e-02, 3.522916883230209e-02, 3.522676229476929e-02, 3.522535786032677e-02, 3.522451967000961e-02, 3.522401303052902e-02, 3.522370010614395e-02, 3.522352874279022e-02, 3.522343561053276e-02, 3.522338718175888e-02, 3.522336110472679e-02, 3.52233462035656e-02, 3.52233424782753e-02, 3.52233462035656e-02, 3.52233462035656e-02] +hex.m1_flow=[1.000000014901161e-01, 9.799432009458542e-03, 3.891919180750847e-02, 1.243046205490828e-02, 4.082696512341499e-02, 1.002532709389925e-02, 4.832734540104866e-02, 8.020637556910506e-03, 5.314625799655914e-03, 8.958352729678154e-03, 1.455431710928679e-02, 1.92690659314394e-02, 2.135027758777142e-02, 2.181769907474518e-02, 2.197558619081974e-02, 2.217577584087849e-02, 2.238770946860313e-02, 1.900346763432026e-02, 8.295981213450432e-03, 5.836155265569687e-03, 4.895756486803293e-03, 4.280341323465109e-03, 3.848697990179062e-03, 3.540519159287214e-03, 3.315780078992248e-03, 3.146667731925845e-03, 3.019342431798577e-03, 2.400425029918548e-03, 1.63733633235097e-03, 2.243706025183201e-03, 2.796564716845751e-03, 2.920576138421893e-03, 2.911866642534733e-03, 2.852289704605937e-03, 2.987469313666224e-03, 3.261293284595013e-03, 3.841446712613106e-03, 4.81226434931159e-03, 6.299380213022232e-03, 8.400506339967251e-03, 1.102946326136589e-02, 1.399910729378462e-02, 1.708975434303284e-02, 2.015165239572525e-02, 2.325739525258541e-02, 2.656046114861965e-02, 3.021510131657124e-02, 3.438419103622437e-02, 3.926325589418411e-02, 4.510769248008728e-02, 5.227017402648926e-02, 5.964123830199242e-02, 6.503219157457352e-02, 6.954351812601089e-02, 7.368373125791552e-02, 7.758348435163501e-02, 8.131985366344455e-02, 8.495456725358963e-02, 8.853244036436081e-02, 9.502384811639786e-02, 9.911741316318512e-02, 9.987517446279526e-02, 9.998403489589691e-02, 9.999805688858032e-02, 9.999977797269821e-02, 9.999997168779373e-02, 9.999999403953552e-02, 9.638431668281555e-02, 7.521868497133255e-02, 5.959918722510338e-02, 4.966063424944878e-02, 4.356332123279572e-02, 3.999096527695656e-02, 3.795749694108963e-02, 3.680560737848282e-02, 3.614643216133118e-02, 3.576439619064331e-02, 3.554118424654007e-02, 3.541027009487152e-02, 3.533336520195007e-02, 3.528804704546928e-02, 3.526141494512558e-02, 3.524576872587204e-02, 3.523655980825424e-02, 3.523116186261177e-02, 3.522800281643867e-02, 3.522611781954765e-02, 3.522498905658722e-02, 3.522432222962379e-02, 3.522393479943275e-02, 3.522370383143425e-02, 3.522356227040291e-02, 3.522347658872604e-02, 3.522341698408127e-02, 3.522337973117828e-02, 3.52233499288559e-02, 3.522332385182381e-02, 3.522331267595291e-02, 3.522329404950142e-02, 3.522328287363052e-02, 3.522328659892082e-02] hex.m2_flow=[3.429285809397697e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02] con.u_s=[2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.975499877929688e+02, 2.966499938964844e+02, 2.9575e+02, 2.948500061035156e+02, 2.939500122070312e+02, 2.930499877929688e+02, 2.921499938964844e+02, 2.9125e+02, 2.903500061035156e+02, 2.894500122070312e+02, 2.885499877929688e+02, 2.876499938964844e+02, 2.8675e+02, 2.858500061035156e+02, 2.849500122070312e+02, 2.840499877929688e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02] -con.u_m=[2.931499938964844e+02, 2.881471862792969e+02, 2.874449157714844e+02, 2.892806091308594e+02, 2.839073791503906e+02, 2.898591613769531e+02, 2.858397521972656e+02, 2.896682434082031e+02, 2.948145751953125e+02, 2.94484619140625e+02, 2.926266784667969e+02, 2.904584350585938e+02, 2.890349731445312e+02, 2.884889831542969e+02, 2.883428649902344e+02, 2.882951354980469e+02, 2.882661437988281e+02, 2.885406799316406e+02, 2.929259338378906e+02, 2.952376708984375e+02, 2.961018676757812e+02, 2.966226196289062e+02, 2.969822998046875e+02, 2.972457275390625e+02, 2.974365234375e+02, 2.975864868164062e+02, 2.977091979980469e+02, 2.978600463867188e+02, 2.981324768066406e+02, 2.98277587890625e+02, 2.98239013671875e+02, 2.981739196777344e+02, 2.981340026855469e+02, 2.9812060546875e+02, 2.981119995117188e+02, 2.980509643554688e+02, 2.979117736816406e+02, 2.976292419433594e+02, 2.971192626953125e+02, 2.962571105957031e+02, 2.950943298339844e+02, 2.9381982421875e+02, 2.924999389648438e+02, 2.912912292480469e+02, 2.902102661132812e+02, 2.892289123535156e+02, 2.88315673828125e+02, 2.874531860351562e+02, 2.866369934082031e+02, 2.858726501464844e+02, 2.851712951660156e+02, 2.846004333496094e+02, 2.842941589355469e+02, 2.841333923339844e+02, 2.840352172851562e+02, 2.839737243652344e+02, 2.839374084472656e+02, 2.839192199707031e+02, 2.839145812988281e+02, 2.838818054199219e+02, 2.838653259277344e+02, 2.839319763183594e+02, 2.840171508789062e+02, 2.841050720214844e+02, 2.841924438476562e+02, 2.842044677734375e+02, 2.842045593261719e+02, 2.844039916992188e+02, 2.909552307128906e+02, 2.877339477539062e+02, 2.846883239746094e+02, 2.850060729980469e+02, 2.857023315429688e+02, 2.864142761230469e+02, 2.87008056640625e+02, 2.874368591308594e+02, 2.877175903320312e+02, 2.878914489746094e+02, 2.879963073730469e+02, 2.880589294433594e+02, 2.880961608886719e+02, 2.881182250976562e+02, 2.881312561035156e+02, 2.88138916015625e+02, 2.881434631347656e+02, 2.881461486816406e+02, 2.881477355957031e+02, 2.881486511230469e+02, 2.881492004394531e+02, 2.881495361328125e+02, 2.881497192382812e+02, 2.881498413085938e+02, 2.8814990234375e+02, 2.881499633789062e+02, 2.881499633789062e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02] -hex.Q1_flow=[0e+00, 8.008525390625e+02, 1.574509155273438e+03, 9.598690795898438e+02, 1.509545776367188e+03, 8.314747924804688e+02, 1.7153447265625e+03, 7.317942504882809e+02, 5.666944580078125e+02, 6.581214599609375e+02, 8.624087524414062e+02, 1.050914184570312e+03, 1.13723779296875e+03, 1.159449096679688e+03, 1.16414501953125e+03, 1.16655029296875e+03, 1.16838232421875e+03, 1.056565185546875e+03, 6.666392211914062e+02, 5.0991796875e+02, 4.334904479980469e+02, 3.830501098632812e+02, 3.467495422363281e+02, 3.193536376953125e+02, 2.992341918945312e+02, 2.836605224609375e+02, 2.708881225585938e+02, 2.496213836669921e+02, 2.180754241943359e+02, 2.079737548828125e+02, 2.16202880859375e+02, 2.242102508544922e+02, 2.285453186035156e+02, 2.29474853515625e+02, 2.320776977539062e+02, 2.40506103515625e+02, 2.604377136230469e+02, 2.992744445800781e+02, 3.663895263671875e+02, 4.726472778320312e+02, 6.016434936523438e+02, 7.317376708984375e+02, 8.542926025390625e+02, 9.589669799804688e+02, 1.047934814453125e+03, 1.126118774414062e+03, 1.19691259765625e+03, 1.261974853515625e+03, 1.321740356445312e+03, 1.375974365234375e+03, 1.424050659179688e+03, 1.453165893554688e+03, 1.463758544921875e+03, 1.470341064453125e+03, 1.474701049804688e+03, 1.477328491210938e+03, 1.478709594726562e+03, 1.479173706054688e+03, 1.478926391601562e+03, 1.486778930664062e+03, 1.479446655273438e+03, 1.472607421875e+03, 1.466693237304688e+03, 1.460934326171875e+03, 1.455834106445312e+03, 1.457299438476562e+03, 1.457313110351562e+03, 1.288331787109375e+03, 7.568871459960938e+02, 1.476864013671875e+03, 1.434335083007812e+03, 1.368208374023438e+03, 1.319508056640625e+03, 1.275893432617188e+03, 1.241416137695312e+03, 1.217293579101562e+03, 1.20173779296875e+03, 1.19213232421875e+03, 1.186320678710938e+03, 1.1828359375e+03, 1.180760131835938e+03, 1.179529052734375e+03, 1.178802124023438e+03, 1.178373657226562e+03, 1.178119873046875e+03, 1.1779697265625e+03, 1.177881713867188e+03, 1.177829467773438e+03, 1.177798583984375e+03, 1.177780639648438e+03, 1.177769897460938e+03, 1.177763427734375e+03, 1.177759399414062e+03, 1.177757202148438e+03, 1.177755981445312e+03, 1.17775537109375e+03, 1.177755004882812e+03, 1.1777548828125e+03, 1.177754760742188e+03, 1.1777548828125e+03, 1.1777548828125e+03] -hex.Q2_flow=[0e+00, -9.823609008789062e+02, -1.40096826171875e+03, -1.01654931640625e+03, -1.494255859375e+03, -9.302499389648438e+02, -1.525973266601562e+03, -8.844354248046869e+02, -5.766068725585938e+02, -6.429981689453125e+02, -8.349686889648438e+02, -1.023248840332031e+03, -1.12299853515625e+03, -1.15493017578125e+03, -1.162782592773438e+03, -1.16580224609375e+03, -1.16783447265625e+03, -1.101102783203125e+03, -7.145115356445312e+02, -5.269418334960938e+02, -4.438111572265625e+02, -3.901462707519531e+02, -3.518876953125e+02, -3.232227783203125e+02, -3.030870666503906e+02, -2.86881103515625e+02, -2.735665283203125e+02, -2.544134216308593e+02, -2.228457641601562e+02, -2.093706359863281e+02, -2.158947906494141e+02, -2.237151184082031e+02, -2.281623229980469e+02, -2.293626708984375e+02, -2.3112890625e+02, -2.388393707275391e+02, -2.567418212890625e+02, -2.920544128417969e+02, -3.536243591308594e+02, -4.564125366210938e+02, -5.82278076171875e+02, -7.130078735351562e+02, -8.35980224609375e+02, -9.416583251953125e+02, -1.031559326171875e+03, -1.110180053710938e+03, -1.180991577148438e+03, -1.24581591796875e+03, -1.305273803710938e+03, -1.3592626953125e+03, -1.407292236328125e+03, -1.44120068359375e+03, -1.45687255859375e+03, -1.465573852539062e+03, -1.471053466796875e+03, -1.474446899414062e+03, -1.476382934570312e+03, -1.47726171875e+03, -1.47733837890625e+03, -1.48214697265625e+03, -1.479381958007812e+03, -1.473913208007812e+03, -1.468219604492188e+03, -1.462490966796875e+03, -1.457040405273438e+03, -1.457309692382812e+03, -1.457313720703125e+03, -1.373270263671875e+03, -8.44130126953125e+02, -1.343333129882812e+03, -1.429890625e+03, -1.386951171875e+03, -1.338377197265625e+03, -1.29113818359375e+03, -1.252255981445312e+03, -1.224331787109375e+03, -1.20606494140625e+03, -1.194725830078125e+03, -1.187861694335938e+03, -1.183749145507812e+03, -1.181300415039062e+03, -1.17984814453125e+03, -1.178990356445312e+03, -1.178484985351562e+03, -1.178185668945312e+03, -1.17800830078125e+03, -1.177904541015625e+03, -1.177843017578125e+03, -1.177806518554688e+03, -1.177785278320312e+03, -1.177772705078125e+03, -1.177765014648438e+03, -1.17776025390625e+03, -1.177757568359375e+03, -1.177756103515625e+03, -1.177755493164062e+03, -1.177755126953125e+03, -1.1777548828125e+03, -1.1777548828125e+03, -1.1777548828125e+03, -1.1777548828125e+03] -hex.QLat2_flow=[0e+00, -6.118687744140625e+02, -8.875252075195312e+02, -6.390120849609375e+02, -9.306366577148438e+02, -5.805853881835938e+02, -9.608472900390625e+02, -5.485404663085934e+02, -3.387897338867188e+02, -3.864946594238281e+02, -5.202697143554688e+02, -6.45977783203125e+02, -7.095077514648438e+02, -7.291743774414062e+02, -7.339454956054688e+02, -7.358116455078125e+02, -7.370817260742188e+02, -6.929219970703125e+02, -4.353491821289062e+02, -3.037178344726562e+02, -2.433479919433594e+02, -2.037762756347656e+02, -1.753660736083984e+02, -1.539808502197266e+02, -1.393938446044922e+02, -1.273692474365234e+02, -1.174692077636719e+02, -1.034595260620116e+02, -7.991397094726557e+01, -6.953504180908203e+01, -7.432122039794922e+01, -8.017205047607422e+01, -8.349315643310547e+01, -8.439765930175781e+01, -8.562483215332031e+01, -9.130222320556641e+01, -1.044275588989258e+02, -1.302554168701172e+02, -1.750077362060547e+02, -2.512617492675781e+02, -3.421306457519531e+02, -4.359482421875e+02, -5.208724365234375e+02, -5.920370483398438e+02, -6.511632690429688e+02, -7.01760986328125e+02, -7.46406982421875e+02, -7.864715576171875e+02, -8.225046997070312e+02, -8.546004028320312e+02, -8.826246337890625e+02, -9.018363037109375e+02, -9.1048974609375e+02, -9.153230590820312e+02, -9.183797607421875e+02, -9.202758178710938e+02, -9.213616943359375e+02, -9.218600463867188e+02, -9.219122314453125e+02, -9.2477880859375e+02, -9.230382690429688e+02, -9.19927734375e+02, -9.167344970703125e+02, -9.135220336914062e+02, -9.104606323242188e+02, -9.106502075195312e+02, -9.106529541015625e+02, -8.585176391601562e+02, -5.237025756835938e+02, -8.5232861328125e+02, -8.952094116210938e+02, -8.693079223632812e+02, -8.4073681640625e+02, -8.1267822265625e+02, -7.893203735351562e+02, -7.723917846679688e+02, -7.612457275390625e+02, -7.54296630859375e+02, -7.500780029296875e+02, -7.475458984375e+02, -7.460366821289062e+02, -7.451409912109375e+02, -7.4461181640625e+02, -7.442999877929688e+02, -7.44115234375e+02, -7.440057983398438e+02, -7.439417114257812e+02, -7.439036865234375e+02, -7.438812255859375e+02, -7.438681030273438e+02, -7.438603515625e+02, -7.438555908203125e+02, -7.438526611328125e+02, -7.438510131835938e+02, -7.438501586914062e+02, -7.438497314453125e+02, -7.438494873046875e+02, -7.43849365234375e+02, -7.43849365234375e+02, -7.43849365234375e+02, -7.43849365234375e+02] -hex.QSen2_flow=[0e+00, -3.704920959472656e+02, -5.134429931640625e+02, -3.775372924804688e+02, -5.636192016601562e+02, -3.4966455078125e+02, -5.651259155273438e+02, -3.358949584960936e+02, -2.378171234130859e+02, -2.565035400390625e+02, -3.14698974609375e+02, -3.7727099609375e+02, -4.134908142089844e+02, -4.257558898925781e+02, -4.288370971679688e+02, -4.299906311035156e+02, -4.307527465820312e+02, -4.081807556152344e+02, -2.791623229980469e+02, -2.232239990234375e+02, -2.004631500244141e+02, -1.863699951171875e+02, -1.765216217041016e+02, -1.692419281005859e+02, -1.636932067871094e+02, -1.595118713378906e+02, -1.560973052978516e+02, -1.509539031982422e+02, -1.429317932128906e+02, -1.398355865478516e+02, -1.415735778808594e+02, -1.435430755615234e+02, -1.446691589355469e+02, -1.449650115966797e+02, -1.455040740966797e+02, -1.475371551513672e+02, -1.523142700195312e+02, -1.617989959716797e+02, -1.786166076660156e+02, -2.051508026123047e+02, -2.401474151611328e+02, -2.770596008300781e+02, -3.151077575683594e+02, -3.496212768554688e+02, -3.803960571289062e+02, -4.084190368652344e+02, -4.345846557617188e+02, -4.593443298339844e+02, -4.827690734863281e+02, -5.046622619628906e+02, -5.246676025390625e+02, -5.393643798828125e+02, -5.463828125e+02, -5.502507934570312e+02, -5.526737060546875e+02, -5.541710205078125e+02, -5.55021240234375e+02, -5.554017333984375e+02, -5.554261474609375e+02, -5.573681640625e+02, -5.563436279296875e+02, -5.539854125976562e+02, -5.51485107421875e+02, -5.48968994140625e+02, -5.465797729492188e+02, -5.46659423828125e+02, -5.466608276367188e+02, -5.14752685546875e+02, -3.204275817871094e+02, -4.910045471191406e+02, -5.346812133789062e+02, -5.176432495117188e+02, -4.976403503417969e+02, -4.784598999023438e+02, -4.62935546875e+02, -4.519400024414062e+02, -4.448192749023438e+02, -4.404292602539062e+02, -4.377837219238281e+02, -4.362032470703125e+02, -4.352638244628906e+02, -4.347071533203125e+02, -4.343785400390625e+02, -4.3418505859375e+02, -4.340704345703125e+02, -4.340025634765625e+02, -4.339627990722656e+02, -4.339392395019531e+02, -4.3392529296875e+02, -4.339171752929688e+02, -4.33912353515625e+02, -4.33909423828125e+02, -4.339075927734375e+02, -4.339065856933594e+02, -4.339060363769531e+02, -4.3390576171875e+02, -4.339056396484375e+02, -4.339055480957031e+02, -4.339055480957031e+02, -4.339055480957031e+02, -4.339055480957031e+02] +con.u_m=[2.931499938964844e+02, 2.881471862792969e+02, 2.87445068359375e+02, 2.892804260253906e+02, 2.839074401855469e+02, 2.898592224121094e+02, 2.858396606445312e+02, 2.896683349609375e+02, 2.948144836425781e+02, 2.944845275878906e+02, 2.92626708984375e+02, 2.904584045410156e+02, 2.890348510742188e+02, 2.884890747070312e+02, 2.883429870605469e+02, 2.882951354980469e+02, 2.882662048339844e+02, 2.885406799316406e+02, 2.929256896972656e+02, 2.952376403808594e+02, 2.961017761230469e+02, 2.9662255859375e+02, 2.969822692871094e+02, 2.972456970214844e+02, 2.974364929199219e+02, 2.975864562988281e+02, 2.977091674804688e+02, 2.978599853515625e+02, 2.981323852539062e+02, 2.982776184082031e+02, 2.982389831542969e+02, 2.981738891601562e+02, 2.981339721679688e+02, 2.9812060546875e+02, 2.981119995117188e+02, 2.980509033203125e+02, 2.979117431640625e+02, 2.976292724609375e+02, 2.971193542480469e+02, 2.962572326660156e+02, 2.950943908691406e+02, 2.938199157714844e+02, 2.925000610351562e+02, 2.912912902832031e+02, 2.902103576660156e+02, 2.892289428710938e+02, 2.883155822753906e+02, 2.874531555175781e+02, 2.866370239257812e+02, 2.858726806640625e+02, 2.851713256835938e+02, 2.846004638671875e+02, 2.842942199707031e+02, 2.841333923339844e+02, 2.840351867675781e+02, 2.839736938476562e+02, 2.839374389648438e+02, 2.839192199707031e+02, 2.839146118164062e+02, 2.838818054199219e+02, 2.838653564453125e+02, 2.839319763183594e+02, 2.840171203613281e+02, 2.841050720214844e+02, 2.841924133300781e+02, 2.842044677734375e+02, 2.842045288085938e+02, 2.842248229980469e+02, 2.846465759277344e+02, 2.853110656738281e+02, 2.8603466796875e+02, 2.866990966796875e+02, 2.87218994140625e+02, 2.875774841308594e+02, 2.878054809570312e+02, 2.879446411132812e+02, 2.880281372070312e+02, 2.880778503417969e+02, 2.881072692871094e+02, 2.88124755859375e+02, 2.881350708007812e+02, 2.881412658691406e+02, 2.881448669433594e+02, 2.8814697265625e+02, 2.88148193359375e+02, 2.8814892578125e+02, 2.881493530273438e+02, 2.881496276855469e+02, 2.881497802734375e+02, 2.881498718261719e+02, 2.8814990234375e+02, 2.881499328613281e+02, 2.881499633789062e+02, 2.881499633789062e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02] +hex.Q1_flow=[0e+00, 8.008524780273438e+02, 1.5745205078125e+03, 9.59880615234375e+02, 1.509537231445312e+03, 8.314715576171875e+02, 1.715317749023438e+03, 7.318002929687497e+02, 5.667024536132812e+02, 6.5814599609375e+02, 8.624013061523438e+02, 1.050931030273438e+03, 1.137240600585938e+03, 1.159442138671875e+03, 1.164138549804688e+03, 1.166548217773438e+03, 1.168383544921875e+03, 1.056568359375e+03, 6.666577758789062e+02, 5.099210510253906e+02, 4.334978332519531e+02, 3.830565185546875e+02, 3.467546997070312e+02, 3.193574523925781e+02, 2.992366943359375e+02, 2.836629333496094e+02, 2.708905334472656e+02, 2.496359405517577e+02, 2.180829620361328e+02, 2.079718780517578e+02, 2.162033843994141e+02, 2.242107391357422e+02, 2.285458831787109e+02, 2.294739990234375e+02, 2.320791473388672e+02, 2.405070037841797e+02, 2.604395141601562e+02, 2.992701721191406e+02, 3.663821716308594e+02, 4.7263818359375e+02, 6.016305541992188e+02, 7.317265625e+02, 8.542841186523438e+02, 9.589598388671875e+02, 1.047926025390625e+03, 1.126116943359375e+03, 1.196919311523438e+03, 1.261974243164062e+03, 1.321740966796875e+03, 1.375972412109375e+03, 1.424053344726562e+03, 1.453169189453125e+03, 1.463759521484375e+03, 1.47033984375e+03, 1.47471240234375e+03, 1.47731201171875e+03, 1.478698364257812e+03, 1.479172973632812e+03, 1.478926513671875e+03, 1.486780883789062e+03, 1.479451049804688e+03, 1.472607421875e+03, 1.46669287109375e+03, 1.460934692382812e+03, 1.455840209960938e+03, 1.45729541015625e+03, 1.457310302734375e+03, 1.44086572265625e+03, 1.390764526367188e+03, 1.344937744140625e+03, 1.299102661132812e+03, 1.259305419921875e+03, 1.229501953125e+03, 1.20948486328125e+03, 1.19687939453125e+03, 1.189181396484375e+03, 1.184544067382812e+03, 1.181770629882812e+03, 1.180117919921875e+03, 1.179159423828125e+03, 1.178584838867188e+03, 1.17824365234375e+03, 1.178042358398438e+03, 1.177924072265625e+03, 1.177854858398438e+03, 1.177814575195312e+03, 1.177790405273438e+03, 1.17777587890625e+03, 1.177767333984375e+03, 1.177762329101562e+03, 1.177759399414062e+03, 1.177757568359375e+03, 1.177756469726562e+03, 1.177755737304688e+03, 1.177755249023438e+03, 1.1777548828125e+03, 1.177754516601562e+03, 1.17775439453125e+03, 1.177754150390625e+03, 1.177754028320312e+03, 1.177754150390625e+03] +hex.Q2_flow=[0e+00, -9.823670654296875e+02, -1.400969604492188e+03, -1.016562805175781e+03, -1.494252563476562e+03, -9.302456665039062e+02, -1.525967895507812e+03, -8.844346313476557e+02, -5.766284790039062e+02, -6.430133666992188e+02, -8.349697265625e+02, -1.023242858886719e+03, -1.123073364257812e+03, -1.15489599609375e+03, -1.162775146484375e+03, -1.165800537109375e+03, -1.167833374023438e+03, -1.101104370117188e+03, -7.145556030273438e+02, -5.269667358398438e+02, -4.438186645507812e+02, -3.901510620117188e+02, -3.5189111328125e+02, -3.232251281738281e+02, -3.030906066894531e+02, -2.868833618164062e+02, -2.735691223144531e+02, -2.544220275878905e+02, -2.228554077148437e+02, -2.093755950927734e+02, -2.158961944580078e+02, -2.237143402099609e+02, -2.281635284423828e+02, -2.293612213134766e+02, -2.311274566650391e+02, -2.388428497314453e+02, -2.567422485351562e+02, -2.920486755371094e+02, -3.536205444335938e+02, -4.564024353027344e+02, -5.822686767578125e+02, -7.1299755859375e+02, -8.359698486328125e+02, -9.416398315429688e+02, -1.031558349609375e+03, -1.110177368164062e+03, -1.180996215820312e+03, -1.245819702148438e+03, -1.305273193359375e+03, -1.359256958007812e+03, -1.407293823242188e+03, -1.441200927734375e+03, -1.456876831054688e+03, -1.4655693359375e+03, -1.471063598632812e+03, -1.474442993164062e+03, -1.476375244140625e+03, -1.477261108398438e+03, -1.477337646484375e+03, -1.4821474609375e+03, -1.479382690429688e+03, -1.473913208007812e+03, -1.4682197265625e+03, -1.462490966796875e+03, -1.457044921875e+03, -1.457308471679688e+03, -1.457312866210938e+03, -1.449156616210938e+03, -1.41054638671875e+03, -1.364805419921875e+03, -1.31637255859375e+03, -1.272501342773438e+03, -1.238522583007812e+03, -1.215185913085938e+03, -1.200334228515625e+03, -1.1912412109375e+03, -1.185767578125e+03, -1.182498168945312e+03, -1.180558349609375e+03, -1.179417114257812e+03, -1.17873779296875e+03, -1.178330810546875e+03, -1.17809375e+03, -1.17795458984375e+03, -1.177873046875e+03, -1.177825317382812e+03, -1.177796875e+03, -1.17777978515625e+03, -1.177769653320312e+03, -1.177763793945312e+03, -1.177760375976562e+03, -1.177758178710938e+03, -1.1777568359375e+03, -1.177755981445312e+03, -1.17775537109375e+03, -1.177755004882812e+03, -1.177754516601562e+03, -1.17775439453125e+03, -1.177754150390625e+03, -1.17775390625e+03, -1.177754028320312e+03] +hex.QLat2_flow=[0e+00, -6.118740844726562e+02, -8.87526611328125e+02, -6.39020751953125e+02, -9.306354370117188e+02, -5.805825805664062e+02, -9.6084326171875e+02, -5.485398559570309e+02, -3.388067016601562e+02, -3.865060119628906e+02, -5.202728881835938e+02, -6.459698486328125e+02, -7.095833740234375e+02, -7.291434326171875e+02, -7.339407958984375e+02, -7.358106079101562e+02, -7.37081298828125e+02, -6.92923095703125e+02, -4.35383544921875e+02, -3.037465209960938e+02, -2.433535308837891e+02, -2.037796783447266e+02, -1.753681945800781e+02, -1.539824066162109e+02, -1.393966064453125e+02, -1.273708801269531e+02, -1.174711685180664e+02, -1.034645156860351e+02, -7.992140960693354e+01, -6.953993988037109e+01, -7.432206726074219e+01, -8.017134857177734e+01, -8.349410247802734e+01, -8.439630126953125e+01, -8.562378692626953e+01, -9.130491638183594e+01, -1.044278869628906e+02, -1.302513275146484e+02, -1.750060272216797e+02, -2.512543792724609e+02, -3.421239318847656e+02, -4.359411315917969e+02, -5.208651123046875e+02, -5.920211791992188e+02, -6.511651000976562e+02, -7.017588500976562e+02, -7.464093627929688e+02, -7.864749755859375e+02, -8.225046997070312e+02, -8.545948486328125e+02, -8.826276245117188e+02, -9.01836181640625e+02, -9.104949340820312e+02, -9.153184814453125e+02, -9.183887939453125e+02, -9.202698974609375e+02, -9.213551025390625e+02, -9.218597412109375e+02, -9.219119262695312e+02, -9.24779052734375e+02, -9.230391235351562e+02, -9.199277954101562e+02, -9.167344970703125e+02, -9.135220336914062e+02, -9.104631958007812e+02, -9.106494750976562e+02, -9.1065234375e+02, -9.056475830078125e+02, -8.829721069335938e+02, -8.56291748046875e+02, -8.277177734375e+02, -8.015123901367188e+02, -7.810126953125e+02, -7.66818603515625e+02, -7.577352294921875e+02, -7.521535034179688e+02, -7.487863159179688e+02, -7.467714233398438e+02, -7.455745239257812e+02, -7.44875732421875e+02, -7.444579467773438e+02, -7.442048950195312e+02, -7.440585327148438e+02, -7.439725952148438e+02, -7.439223022460938e+02, -7.43892822265625e+02, -7.43875244140625e+02, -7.438646850585938e+02, -7.438584594726562e+02, -7.438548583984375e+02, -7.438527221679688e+02, -7.438513793945312e+02, -7.438505859375e+02, -7.438500366210938e+02, -7.438496704101562e+02, -7.43849365234375e+02, -7.4384912109375e+02, -7.438490600585938e+02, -7.43848876953125e+02, -7.438487548828125e+02, -7.438488159179688e+02] +hex.QSen2_flow=[0e+00, -3.704929809570312e+02, -5.134429931640625e+02, -3.775420837402344e+02, -5.636171875e+02, -3.496630859375e+02, -5.651245727539062e+02, -3.358947753906248e+02, -2.3782177734375e+02, -2.565073547363281e+02, -3.146968688964844e+02, -3.772730102539062e+02, -4.134899597167969e+02, -4.257525939941406e+02, -4.288344116210938e+02, -4.299899597167969e+02, -4.307520751953125e+02, -4.081813659667969e+02, -2.791720275878906e+02, -2.232202301025391e+02, -2.004651336669922e+02, -1.863713989257812e+02, -1.765229187011719e+02, -1.692427215576172e+02, -1.636940155029297e+02, -1.595124969482422e+02, -1.560979309082031e+02, -1.5095751953125e+02, -1.429339904785156e+02, -1.398356628417969e+02, -1.415741271972656e+02, -1.435429840087891e+02, -1.446694183349609e+02, -1.449649200439453e+02, -1.455036773681641e+02, -1.475379333496094e+02, -1.523143615722656e+02, -1.6179736328125e+02, -1.786145172119141e+02, -2.051480560302734e+02, -2.401447448730469e+02, -2.770564270019531e+02, -3.151047668457031e+02, -3.496186828613281e+02, -3.803932189941406e+02, -4.084185485839844e+02, -4.345869445800781e+02, -4.593447265625e+02, -4.827685241699219e+02, -5.046621398925781e+02, -5.246661987304688e+02, -5.393646850585938e+02, -5.463818969726562e+02, -5.502509155273438e+02, -5.526747436523438e+02, -5.54173095703125e+02, -5.550200805664062e+02, -5.554014282226562e+02, -5.5542578125e+02, -5.573683471679688e+02, -5.563436279296875e+02, -5.539854125976562e+02, -5.514851684570312e+02, -5.48968994140625e+02, -5.465816650390625e+02, -5.466590576171875e+02, -5.466604614257812e+02, -5.435089721679688e+02, -5.275743408203125e+02, -5.085137023925781e+02, -4.8865478515625e+02, -4.709889221191406e+02, -4.575098571777344e+02, -4.483673706054688e+02, -4.425989990234375e+02, -4.390877380371094e+02, -4.36981201171875e+02, -4.35726806640625e+02, -4.349838256835938e+02, -4.345413513183594e+02, -4.342798156738281e+02, -4.341258850097656e+02, -4.340352478027344e+02, -4.339819641113281e+02, -4.339507751464844e+02, -4.339324951171875e+02, -4.339215698242188e+02, -4.339150390625e+02, -4.339111938476562e+02, -4.33908935546875e+02, -4.339076232910156e+02, -4.339067993164062e+02, -4.339062805175781e+02, -4.339059448242188e+02, -4.339057312011719e+02, -4.339055480957031e+02, -4.339053955078125e+02, -4.339053649902344e+02, -4.339052429199219e+02, -4.339051818847656e+02, -4.339052124023438e+02] From 0a8bd364d374c26d36b54aff9ae6f523fdb8ff28 Mon Sep 17 00:00:00 2001 From: SenHuang19 Date: Thu, 29 Aug 2024 07:51:49 -0400 Subject: [PATCH 203/214] make the tuning stop when the setppint changes --- .../Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo | 12 ++++++------ .../FirstOrderTimedelayed/ControlProcessModel.mo | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index 33999f6fe19..13741ea8db9 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -354,7 +354,7 @@ equation {-20,-140}}, color={0,0,127})); connect(rel.u_s, u_s) annotation (Line(points={{-62,130},{-158,130},{-158,-20}, {-200,-20}},color={0,0,127})); - connect(sam_u_s.u, u_s) annotation (Line(points={{-124,294},{-154,294},{-154, + connect(sam_u_s.u, u_s) annotation (Line(points={{-124,294},{-142,294},{-142, 254},{-170,254},{-170,-20},{-200,-20}}, color={0,0,127})); connect(sam_u_s.y, sub3.u1) annotation (Line(points={{-100,294},{-48,294},{ -48,280},{-42,280}}, color={0,0,127})); @@ -376,18 +376,18 @@ equation {-14,56},{-14,-90},{60,-90},{60,-140}}, color={255,0,255})); connect(abs2.y, greThr.u) annotation (Line(points={{22,294},{30,294},{30,300},{38,300}}, color={0,0,127})); - connect(nand1.u2, triTun) annotation (Line(points={{92,292},{54,292},{54,260}, + connect(nand1.u2, triTun) annotation (Line(points={{92,292},{80,292},{80,260}, {-112,260},{-112,56},{60,56},{60,-140}}, color={255,0,255})); connect(falEdg.u, nand1.y) annotation (Line(points={{-150,230},{-156,230},{ -156,316},{124,316},{124,300},{116,300}}, color={255,0,255})); connect(falEdg.y, or2.u1) annotation (Line(points={{-126,230},{-86,230}}, color={255,0,255})); - connect(resPro.triEnd, or2.u2) annotation (Line(points={{22,102},{-2,102},{-2, - 64},{-124,64},{-124,222},{-86,222}}, color={255,0,255})); + connect(resPro.triEnd, or2.u2) annotation (Line(points={{22,102},{24,102},{24, + 64},{-98,64},{-98,222},{-86,222}}, color={255,0,255})); connect(or2.y, inTunPro.clr) annotation (Line(points={{-62,230},{-62,146},{ -70,146},{-70,24},{-42,24}}, color={255,0,255})); - connect(conProMod.triEnd, or2.y) annotation (Line(points={{48,152},{48,150},{ - -12,150},{-12,230},{-62,230}}, color={255,0,255})); + connect(conProMod.triEnd, resPro.triEnd) + annotation (Line(points={{48,152},{48,102},{22,102}}, color={255,0,255})); annotation (defaultComponentName = "PIDWitTun", Documentation(info="

                                                                                  diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo index c7408705d41..9e65a51b799 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo @@ -123,7 +123,7 @@ protected annotation (Placement(transformation(extent={{80,-80},{100,-60}}))); Buildings.Controls.OBC.CDL.Utilities.Assert assMes4(message="In " + getInstanceName() + - ": an autotuning fails, see earlier warnings for possible reasons, the controller gains are unchanged.") + ": an autotuning fails, the controller gains are unchanged.") "Warning message when an autotuning fails" annotation (Placement(transformation(extent={{134,50},{154,70}}))); Buildings.Controls.OBC.CDL.Logical.Not not2 "Check if an error occurs" From 3c24f43f62baf7f6ae3258269c814b326d762d86 Mon Sep 17 00:00:00 2001 From: SenHuang19 Date: Thu, 29 Aug 2024 22:26:25 -0400 Subject: [PATCH 204/214] format improve --- .../PIDWithAutotuning/FirstOrderAMIGO.mo | 74 +++++++------------ 1 file changed, 28 insertions(+), 46 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index 13741ea8db9..90ed0bf547f 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -144,13 +144,13 @@ block FirstOrderAMIGO Buildings.Controls.OBC.CDL.Logical.Latch inTunPro "Outputs true if the controller is conducting the autotuning process" annotation (Placement(transformation(extent={{-40,20},{-20,40}}))); - Buildings.Controls.OBC.CDL.Logical.FallingEdge falEdg "Check if the setpoint changes during an autotuning process" annotation (Placement(transformation(extent={{-148,220},{-128,240}}))); Buildings.Controls.OBC.CDL.Logical.Or or2 "Check if the autotuning is completed or aborted" annotation (Placement(transformation(extent={{-84,220},{-64,240}}))); + protected final parameter Boolean with_D=controllerType == Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PID "Boolean flag to enable derivative action" @@ -231,9 +231,9 @@ protected final h=0.5*setHys) "Check if the setpoint changes" annotation (Placement(transformation(extent={{40,290},{60,310}}))); - Buildings.Controls.OBC.CDL.Utilities.Assert assMes3(message="In " + - getInstanceName() + - ": the setpoint must not change when an autotuning tuning is ongoing. This ongoing autotuning will thus abort.") + Buildings.Controls.OBC.CDL.Utilities.Assert assMes3(message= + "In " + getInstanceName() + + ": the setpoint must not change when an autotuning tuning is ongoing. This ongoing autotuning will thus abort.") "Warning message when the setpoint changes during tuning process" annotation (Placement(transformation(extent={{150,290},{170,310}}))); @@ -249,81 +249,63 @@ equation connect(samTd.y,con. Td) annotation (Line(points={{-118,-100},{-60,-100},{-60, -64},{-52,-64}}, color={0,0,127})); connect(resPro.on, rel.yOn) annotation (Line(points={{-2,110},{-30,110},{-30, - 124},{-38,124}}, - color={255,0,255})); + 124},{-38,124}}, color={255,0,255})); connect(modTim.y, resPro.tim) annotation (Line(points={{-138,190},{-4,190},{ - -4,126},{-10,126},{-10,116},{-2,116}}, - color={0,0,127})); + -4,126},{-10,126},{-10,116},{-2,116}}, color={0,0,127})); connect(resPro.tau, conProMod.tau) annotation (Line(points={{22,110},{30,110}, - {30,156}}, color={0,0,127})); + {30,156}}, color={0,0,127})); connect(conProMod.tOff, resPro.tOff) annotation (Line(points={{30,160},{26, - 160},{26,114},{22,114}}, - color={0,0,127})); + 160},{26,114},{22,114}}, color={0,0,127})); connect(resPro.tOn, conProMod.tOn) annotation (Line(points={{22,118},{22,168}, - {30,168}}, color={0,0,127})); + {30,168}}, color={0,0,127})); connect(rel.yDif, conProMod.u) annotation (Line(points={{-38,130},{18,130},{ - 18,172},{30,172}}, - color={0,0,127})); + 18,172},{30,172}}, color={0,0,127})); connect(PIDPar.kp, conProMod.k) annotation (Line(points={{78,108},{64,108},{ - 64,172},{54,172}}, - color={0,0,127})); + 64,172},{54,172}}, color={0,0,127})); connect(PIDPar.T, conProMod.T) annotation (Line(points={{78,102},{60,102},{60, - 148},{62,148},{62,168},{54,168}}, - color={0,0,127})); + 148},{62,148},{62,168},{54,168}}, color={0,0,127})); connect(PIDPar.L, conProMod.L) annotation (Line(points={{78,96},{58,96},{58, - 150},{60,150},{60,160},{54,160}}, - color={0,0,127})); + 150},{60,150},{60,160},{54,160}}, color={0,0,127})); connect(PIDPar.k, samk.u) annotation (Line(points={{102,109},{102,110},{146, - 110},{146,78},{-154,78},{-154,-40},{-102,-40}}, - color={0,0,127})); + 110},{146,78},{-154,78},{-154,-40},{-102,-40}}, color={0,0,127})); connect(PIDPar.Ti, samTi.u) annotation (Line(points={{102,102},{118,102},{118, - -6},{-124,-6},{-124,-70},{-122,-70}}, - color={0,0,127})); + -6},{-124,-6},{-124,-70},{-122,-70}}, color={0,0,127})); connect(PIPar.kp, conProMod.k) annotation (Line(points={{82,172},{54,172}}, - color={0,0,127})); + color={0,0,127})); connect(PIPar.T, conProMod.T) annotation (Line(points={{82,166},{62,166},{62, - 168},{54,168}}, - color={0,0,127})); - connect(PIPar.L, conProMod.L) annotation (Line(points={{82,160},{54,160}}, - color={0,0,127})); + 168},{54,168}}, color={0,0,127})); + connect(PIPar.L, conProMod.L) annotation (Line(points={{82,160},{54,160}}, color={0,0,127})); connect(PIPar.k, samk.u) annotation (Line(points={{106,172},{156,172},{156,70}, {-148,70},{-148,-40},{-102,-40}},color={0,0,127})); connect(PIPar.Ti, samTi.u) annotation (Line(points={{106,160},{166,160},{166, - 48},{-140,48},{-140,-70},{-122,-70}}, - color={0,0,127})); + 48},{-140,48},{-140,-70},{-122,-70}}, color={0,0,127})); connect(resPro.triSta, conProMod.triSta) annotation (Line(points={{22,106},{ - 36,106},{36,152}}, - color={255,0,255})); + 36,106},{36,152}}, color={255,0,255})); connect(PIDPar.Td, samTd.u) annotation (Line(points={{102,95},{102,94},{112, - 94},{112,88},{-162,88},{-162,-100},{-142,-100}}, - color={0,0,127})); + 94},{112,88},{-162,88},{-162,-100},{-142,-100}}, color={0,0,127})); connect(swi.y, y) annotation (Line(points={{162,-20},{200,-20}}, color={0,0,127})); connect(u_m,con. u_m) annotation (Line(points={{-20,-140},{-20,-110},{-40,-110}, {-40,-72}}, color={0,0,127})); connect(swi.u3,con. y) annotation (Line(points={{138,-28},{56,-28},{56,-60},{ - -28,-60}}, - color={0,0,127})); + -28,-60}}, color={0,0,127})); connect(inTunPro.y, swi.u2) annotation (Line(points={{-18,30},{-6,30},{-6,-20}, {138,-20}}, color={255,0,255})); connect(inTunPro.u, triTun) annotation (Line(points={{-42,30},{-56,30},{-56, - 46},{-14,46},{-14,-90},{60,-90},{60,-140}}, - color={255,0,255})); + 46},{-14,46},{-14,-90},{60,-90},{60,-140}}, color={255,0,255})); connect(rel.trigger, triTun) annotation (Line(points={{-56,118},{-56,108},{ - -90,108},{-90,56},{60,56},{60,-140}}, - color={255,0,255})); + -90,108},{-90,56},{60,56},{60,-140}}, color={255,0,255})); connect(resPro.trigger, triTun) annotation (Line(points={{-2,104},{-14,104},{ - -14,-90},{60,-90},{60,-140}}, - color={255,0,255})); + -14,-90},{60,-90},{60,-140}}, color={255,0,255})); connect(nand.y, assMes1.u) annotation (Line(points={{102,30},{138,30}}, color={255,0,255})); connect(nand.u2, edgReq.y) annotation (Line(points={{78,22},{40,22},{40,-40},{34,-40}}, color={255,0,255})); connect(edgReq.u, triTun) annotation (Line(points={{10,-40},{-14,-40},{-14,-90},{60,-90},{60,-140}}, - color={255,0,255})); + color={255,0,255})); connect(tunStaDel.y, nand.u1) annotation (Line(points={{32,30},{78,30}}, color={255,0,255})); connect(tunStaDel.u, inTunPro.y) annotation (Line(points={{8,30},{-18,30}}, - color={255,0,255})); + color={255,0,255})); connect(con1.y, sub.u1) annotation (Line(points={{-138,400},{-108,400},{-108, 386},{-102,386}}, color={0,0,127})); connect(con2.y, sub.u2) annotation (Line(points={{-138,370},{-110,370},{-110, @@ -343,7 +325,7 @@ equation connect(gre.y, assMes2.u) annotation (Line(points={{82,380},{148,380}},color={255,0,255})); connect(con4.y, gre.u2) annotation (Line(points={{22,388},{58,388}}, - color={0,0,127})); + color={0,0,127})); connect(rel.y, yRel.u) annotation (Line(points={{-38,136},{-6,136},{-6,220},{ 38,220}}, color={0,0,127})); connect(yRel.y, addPar.u) From b408dceef9b1889d430f4c92e23a7d7715d839f7 Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Tue, 3 Sep 2024 15:31:32 -0700 Subject: [PATCH 205/214] improved graphical --- .../PIDWithAutotuning/FirstOrderAMIGO.mo | 367 +++++++++--------- 1 file changed, 190 insertions(+), 177 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index 90ed0bf547f..091e438053f 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -66,27 +66,27 @@ block FirstOrderAMIGO "Hysteresis for checking set point"; Buildings.Controls.OBC.CDL.Interfaces.RealInput u_s "Connector of setpoint input signal" - annotation (Placement(transformation(extent={{-220,-40},{-180,0}}), + annotation (Placement(transformation(extent={{-320,-180},{-280,-140}}), iconTransformation(extent={{-140,-20},{-100,20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput u_m "Connector of measurement input signal" - annotation (Placement(transformation(origin={-20,-140},extent={{20,-20},{-20,20}},rotation=270), + annotation (Placement(transformation(origin={0,-300}, extent={{20,-20},{-20,20}},rotation=270), iconTransformation(extent={{20,-20},{-20,20}},rotation=270,origin={0,-120}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanInput triRes "Connector for resetting the controller output" - annotation (Placement(transformation(extent={{-20,-20},{20,20}},rotation=90,origin={-60,-140}), + annotation (Placement(transformation(extent={{-20,-20},{20,20}},rotation=90,origin={-60,-300}), iconTransformation(extent={{-20,-20},{20,20}},rotation=90,origin={-60,-120}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanInput triTun "Connector for starting the autotuning" - annotation (Placement(transformation(extent={{-20,-20},{20,20}},rotation=90,origin={60,-140}), + annotation (Placement(transformation(extent={{-20,-20},{20,20}},rotation=90,origin={40,-300}), iconTransformation(extent={{-20,-20},{20,20}},rotation=90,origin={60,-120}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput y "Connector for actuator output signal" - annotation (Placement(transformation(extent={{180,-40},{220,0}}), + annotation (Placement(transformation(extent={{280,-220},{320,-180}}), iconTransformation(extent={{100,-20},{140,20}}))); Buildings.Controls.OBC.CDL.Reals.Sources.CivilTime modTim "Simulation time" - annotation (Placement(transformation(extent={{-160,180},{-140,200}}))); + annotation (Placement(transformation(extent={{-240,-10},{-220,10}}))); Buildings.Controls.OBC.Utilities.PIDWithInputGains con( final controllerType=conTyp, final r=r, @@ -99,13 +99,13 @@ block FirstOrderAMIGO final reverseActing=reverseActing, final y_reset=xi_start) "PI or P controller with the gains as inputs" - annotation (Placement(transformation(extent={{-50,-70},{-30,-50}}))); + annotation (Placement(transformation(extent={{-50,-230},{-30,-210}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PID PIDPar if with_D "Autotuner of gains for a PID controller" - annotation (Placement(transformation(extent={{80,92},{100,112}}))); + annotation (Placement(transformation(extent={{160,-50},{180,-30}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.PI PIPar if not with_D "Autotuner of gains for a PI controller" - annotation (Placement(transformation(extent={{84,156},{104,176}}))); + annotation (Placement(transformation(extent={{160,0},{180,20}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Controller rel( final r=r, final yHig=yHig, @@ -113,44 +113,44 @@ block FirstOrderAMIGO final deaBan=deaBan, final reverseActing=reverseActing) "Relay controller" - annotation (Placement(transformation(extent={{-60,120},{-40,140}}))); + annotation (Placement(transformation(extent={{-80,-40},{-60,-20}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.ResponseProcess resPro( final yHig=yHig - yRef, final yLow=yRef - yLow) "Identify the on and off period length, the half period ratio, and the moments when the tuning starts and ends" - annotation (Placement(transformation(extent={{0,100},{20,120}}))); + annotation (Placement(transformation(extent={{-20,-60},{0,-40}}))); Buildings.Controls.OBC.CDL.Reals.Switch swi "Switch between a PID controller and a relay controller" - annotation (Placement(transformation(extent={{140,-30},{160,-10}}))); + annotation (Placement(transformation(extent={{240,-210},{260,-190}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samk( final y_start=k_start) "Recording the proportional control gain" - annotation (Placement(transformation(extent={{-100,-30},{-80,-50}}))); + annotation (Placement(transformation(extent={{-140,-190},{-120,-210}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samTi( final y_start=Ti_start) "Recording the integral time" - annotation (Placement(transformation(extent={{-120,-60},{-100,-80}}))); + annotation (Placement(transformation(extent={{-190,-220},{-170,-240}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samTd( final y_start=Td_start) if with_D "Recording the derivative time" - annotation (Placement(transformation(extent={{-140,-90},{-120,-110}}))); + annotation (Placement(transformation(extent={{-240,-250},{-220,-270}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.ControlProcessModel conProMod( final yHig=yHig - yRef, final yLow=yRef - yLow, final deaBan=deaBan) "Calculates the parameters of a first-order time delayed model" - annotation (Placement(transformation(extent={{32,154},{52,174}}))); + annotation (Placement(transformation(extent={{60,0},{80,20}}))); Buildings.Controls.OBC.CDL.Logical.Latch inTunPro "Outputs true if the controller is conducting the autotuning process" - annotation (Placement(transformation(extent={{-40,20},{-20,40}}))); + annotation (Placement(transformation(extent={{60,-150},{80,-130}}))); Buildings.Controls.OBC.CDL.Logical.FallingEdge falEdg "Check if the setpoint changes during an autotuning process" - annotation (Placement(transformation(extent={{-148,220},{-128,240}}))); + annotation (Placement(transformation(extent={{-220,40},{-200,60}}))); Buildings.Controls.OBC.CDL.Logical.Or or2 "Check if the autotuning is completed or aborted" - annotation (Placement(transformation(extent={{-84,220},{-64,240}}))); - + annotation (Placement(transformation(extent={{-180,40},{-160,60}}))); + protected final parameter Boolean with_D=controllerType == Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PID "Boolean flag to enable derivative action" @@ -163,213 +163,216 @@ protected Buildings.Controls.OBC.CDL.Utilities.Assert assMes2( message="*** Warning: the relay output needs to be asymmetric. Check the value of yHig, yLow and yRef.") "Warning message when the relay output is symmetric" - annotation (Placement(transformation(extent={{150,370},{170,390}}))); + annotation (Placement(transformation(extent={{160,210},{180,230}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant con1(final k=yHig) "Higher value for the relay output" - annotation (Placement(transformation(extent={{-160,390},{-140,410}}))); + annotation (Placement(transformation(extent={{-160,250},{-140,270}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant con2(final k=yRef) "Reference value for the relay output" - annotation (Placement(transformation(extent={{-160,360},{-140,380}}))); + annotation (Placement(transformation(extent={{-160,200},{-140,220}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant con3(final k=yLow) "Lower value for the relay output" - annotation (Placement(transformation(extent={{-160,330},{-140,350}}))); + annotation (Placement(transformation(extent={{-160,170},{-140,190}}))); Buildings.Controls.OBC.CDL.Reals.Subtract sub "Difference between the higher value and the reference value of the relay output" - annotation (Placement(transformation(extent={{-100,370},{-80,390}}))); + annotation (Placement(transformation(extent={{-80,230},{-60,250}}))); Buildings.Controls.OBC.CDL.Reals.Subtract sub1 "Difference between the reference value and the lower value of the relay output" - annotation (Placement(transformation(extent={{-100,330},{-80,350}}))); + annotation (Placement(transformation(extent={{-80,190},{-60,210}}))); Buildings.Controls.OBC.CDL.Reals.Subtract sub2 "Symmetricity level of the relay output" - annotation (Placement(transformation(extent={{-40,350},{-20,370}}))); + annotation (Placement(transformation(extent={{0,210},{20,230}}))); Buildings.Controls.OBC.CDL.Reals.Abs abs1 "Absolute value" - annotation (Placement(transformation(extent={{0,338},{20,358}}))); + annotation (Placement(transformation(extent={{40,210},{60,230}}))); Buildings.Controls.OBC.CDL.Reals.Greater gre "Check if the relay output is asymmetric" - annotation (Placement(transformation(extent={{60,390},{80,370}}))); + annotation (Placement(transformation(extent={{100,210},{120,230}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant con4(final k=1e-3) "Threshold for checking if the input is larger than 0" - annotation (Placement(transformation(extent={{0,378},{20,398}}))); + annotation (Placement(transformation(extent={{40,170},{60,190}}))); Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter yRel( final k=yMax - yMin) "Relay output multiplied by the possible range of the output" - annotation (Placement(transformation(extent={{40,210},{60,230}}))); + annotation (Placement(transformation(extent={{0,50},{20,70}}))); Buildings.Controls.OBC.CDL.Logical.Nand nand "Check if an autotuning is ongoing while a new autotuning request is received" - annotation (Placement(transformation(extent={{80,20},{100,40}}))); + annotation (Placement(transformation(extent={{200,-150},{220,-130}}))); Buildings.Controls.OBC.CDL.Utilities.Assert assMes1( message="*** Warning: An autotuning is ongoing and the new tuning request is ignored.") "Warning message when an autotuning tuning is ongoing while a new autotuning request is received" - annotation (Placement(transformation(extent={{140,20},{160,40}}))); + annotation (Placement(transformation(extent={{242,-150},{262,-130}}))); Buildings.Controls.OBC.CDL.Logical.Edge edgReq "True only when a new request is received" - annotation (Placement(transformation(extent={{12,-50},{32,-30}}))); + annotation (Placement(transformation(extent={{120,-250},{140,-230}}))); Buildings.Controls.OBC.CDL.Logical.TrueDelay tunStaDel( final delayTime=0.001) "A small time delay for the autotuning start time to avoid false alerts" - annotation (Placement(transformation(extent={{10,20},{30,40}}))); + annotation (Placement(transformation(extent={{140,-150},{160,-130}}))); Buildings.Controls.OBC.CDL.Reals.AddParameter addPar( final p=yMin) "Sums the inputs" - annotation (Placement(transformation(extent={{80,210},{100,230}}))); + annotation (Placement(transformation(extent={{80,50},{100,70}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler sam_u_s( final y_start=u_s_start) "Recording the setpoint" - annotation (Placement(transformation(extent={{-122,284},{-102,304}}))); + annotation (Placement(transformation(extent={{-140,120},{-120,140}}))); Buildings.Controls.OBC.CDL.Logical.Nand nand1 "Check if an autotuning is ongoing while the setpoint changes" - annotation (Placement(transformation(extent={{94,290},{114,310}}))); + annotation (Placement(transformation(extent={{80,100},{100,120}}))); Buildings.Controls.OBC.CDL.Reals.Subtract sub3 "Change of the setpoint" - annotation (Placement(transformation(extent={{-40,264},{-20,284}}))); + annotation (Placement(transformation(extent={{-80,100},{-60,120}}))); Buildings.Controls.OBC.CDL.Reals.Abs abs2 "Absolute value of the setpoint change" - annotation (Placement(transformation(extent={{0,284},{20,304}}))); + annotation (Placement(transformation(extent={{-40,100},{-20,120}}))); Buildings.Controls.OBC.CDL.Reals.GreaterThreshold greThr( final t=setHys, final h=0.5*setHys) "Check if the setpoint changes" - annotation (Placement(transformation(extent={{40,290},{60,310}}))); + annotation (Placement(transformation(extent={{0,100},{20,120}}))); Buildings.Controls.OBC.CDL.Utilities.Assert assMes3(message= "In " + getInstanceName() + ": the setpoint must not change when an autotuning tuning is ongoing. This ongoing autotuning will thus abort.") "Warning message when the setpoint changes during tuning process" - annotation (Placement(transformation(extent={{150,290},{170,310}}))); + annotation (Placement(transformation(extent={{160,100},{180,120}}))); equation - connect(con.u_s, u_s) annotation (Line(points={{-52,-60},{-60,-60},{-60,-20},{ - -200,-20}}, color={0,0,127})); - connect(con.trigger, triRes) annotation (Line(points={{-46,-72},{-46,-110},{-60, - -110},{-60,-140}}, color={255,0,255})); - connect(samk.y,con. k) annotation (Line(points={{-78,-40},{-66,-40},{-66,-52}, - {-52,-52}},color={0,0,127})); - connect(con.Ti, samTi.y) annotation (Line(points={{-52,-56},{-66,-56},{-66,-70}, - {-98,-70}}, color={0,0,127})); - connect(samTd.y,con. Td) annotation (Line(points={{-118,-100},{-60,-100},{-60, - -64},{-52,-64}}, color={0,0,127})); - connect(resPro.on, rel.yOn) annotation (Line(points={{-2,110},{-30,110},{-30, - 124},{-38,124}}, color={255,0,255})); - connect(modTim.y, resPro.tim) annotation (Line(points={{-138,190},{-4,190},{ - -4,126},{-10,126},{-10,116},{-2,116}}, color={0,0,127})); - connect(resPro.tau, conProMod.tau) annotation (Line(points={{22,110},{30,110}, - {30,156}}, color={0,0,127})); - connect(conProMod.tOff, resPro.tOff) annotation (Line(points={{30,160},{26, - 160},{26,114},{22,114}}, color={0,0,127})); - connect(resPro.tOn, conProMod.tOn) annotation (Line(points={{22,118},{22,168}, - {30,168}}, color={0,0,127})); - connect(rel.yDif, conProMod.u) annotation (Line(points={{-38,130},{18,130},{ - 18,172},{30,172}}, color={0,0,127})); - connect(PIDPar.kp, conProMod.k) annotation (Line(points={{78,108},{64,108},{ - 64,172},{54,172}}, color={0,0,127})); - connect(PIDPar.T, conProMod.T) annotation (Line(points={{78,102},{60,102},{60, - 148},{62,148},{62,168},{54,168}}, color={0,0,127})); - connect(PIDPar.L, conProMod.L) annotation (Line(points={{78,96},{58,96},{58, - 150},{60,150},{60,160},{54,160}}, color={0,0,127})); - connect(PIDPar.k, samk.u) annotation (Line(points={{102,109},{102,110},{146, - 110},{146,78},{-154,78},{-154,-40},{-102,-40}}, color={0,0,127})); - connect(PIDPar.Ti, samTi.u) annotation (Line(points={{102,102},{118,102},{118, - -6},{-124,-6},{-124,-70},{-122,-70}}, color={0,0,127})); - connect(PIPar.kp, conProMod.k) annotation (Line(points={{82,172},{54,172}}, - color={0,0,127})); - connect(PIPar.T, conProMod.T) annotation (Line(points={{82,166},{62,166},{62, - 168},{54,168}}, color={0,0,127})); - connect(PIPar.L, conProMod.L) annotation (Line(points={{82,160},{54,160}}, color={0,0,127})); - connect(PIPar.k, samk.u) annotation (Line(points={{106,172},{156,172},{156,70}, - {-148,70},{-148,-40},{-102,-40}},color={0,0,127})); - connect(PIPar.Ti, samTi.u) annotation (Line(points={{106,160},{166,160},{166, - 48},{-140,48},{-140,-70},{-122,-70}}, color={0,0,127})); - connect(resPro.triSta, conProMod.triSta) annotation (Line(points={{22,106},{ - 36,106},{36,152}}, color={255,0,255})); - connect(PIDPar.Td, samTd.u) annotation (Line(points={{102,95},{102,94},{112, - 94},{112,88},{-162,88},{-162,-100},{-142,-100}}, color={0,0,127})); - connect(swi.y, y) annotation (Line(points={{162,-20},{200,-20}}, color={0,0,127})); - connect(u_m,con. u_m) annotation (Line(points={{-20,-140},{-20,-110},{-40,-110}, - {-40,-72}}, color={0,0,127})); - connect(swi.u3,con. y) annotation (Line(points={{138,-28},{56,-28},{56,-60},{ - -28,-60}}, color={0,0,127})); - connect(inTunPro.y, swi.u2) annotation (Line(points={{-18,30},{-6,30},{-6,-20}, - {138,-20}}, color={255,0,255})); - connect(inTunPro.u, triTun) annotation (Line(points={{-42,30},{-56,30},{-56, - 46},{-14,46},{-14,-90},{60,-90},{60,-140}}, color={255,0,255})); - connect(rel.trigger, triTun) annotation (Line(points={{-56,118},{-56,108},{ - -90,108},{-90,56},{60,56},{60,-140}}, color={255,0,255})); - connect(resPro.trigger, triTun) annotation (Line(points={{-2,104},{-14,104},{ - -14,-90},{60,-90},{60,-140}}, color={255,0,255})); + connect(con.u_s, u_s) annotation (Line(points={{-52,-220},{-80,-220},{-80,-160}, + {-300,-160}}, color={0,0,127})); + connect(con.trigger, triRes) annotation (Line(points={{-46,-232},{-46,-266},{-60, + -266},{-60,-300}}, color={255,0,255})); + connect(samk.y,con. k) annotation (Line(points={{-118,-200},{-100,-200},{-100, + -212},{-52,-212}}, color={0,0,127})); + connect(con.Ti, samTi.y) annotation (Line(points={{-52,-216},{-100,-216},{-100, + -230},{-168,-230}}, color={0,0,127})); + connect(samTd.y,con. Td) annotation (Line(points={{-218,-260},{-80,-260},{-80, + -224},{-52,-224}}, color={0,0,127})); + connect(resPro.on, rel.yOn) annotation (Line(points={{-22,-50},{-40,-50},{-40, + -36},{-58,-36}}, color={255,0,255})); + connect(modTim.y, resPro.tim) annotation (Line(points={{-218,0},{-30,0},{-30,-44}, + {-22,-44}}, color={0,0,127})); + connect(resPro.tau, conProMod.tau) annotation (Line(points={{2,-50},{30,-50},{ + 30,2},{58,2}}, color={0,0,127})); + connect(conProMod.tOff, resPro.tOff) annotation (Line(points={{58,6},{20,6},{20, + -46},{2,-46}}, color={0,0,127})); + connect(resPro.tOn, conProMod.tOn) annotation (Line(points={{2,-42},{10,-42},{ + 10,14},{58,14}}, color={0,0,127})); + connect(rel.yDif, conProMod.u) annotation (Line(points={{-58,-30},{-20,-30},{-20, + 18},{58,18}}, color={0,0,127})); + connect(PIDPar.kp, conProMod.k) annotation (Line(points={{158,-34},{120,-34},{ + 120,18},{82,18}}, color={0,0,127})); + connect(PIDPar.T, conProMod.T) annotation (Line(points={{158,-40},{110,-40},{110, + 14},{82,14}}, color={0,0,127})); + connect(PIDPar.L, conProMod.L) annotation (Line(points={{158,-46},{100,-46},{100, + 6},{82,6}}, color={0,0,127})); + connect(PIDPar.Ti, samTi.u) annotation (Line(points={{182,-40},{240,-40},{240, + -110},{-210,-110},{-210,-230},{-192,-230}}, color={0,0,127})); + connect(PIPar.kp, conProMod.k) annotation (Line(points={{158,16},{120,16},{120, + 18},{82,18}}, color={0,0,127})); + connect(PIPar.T, conProMod.T) annotation (Line(points={{158,10},{110,10},{110, + 14},{82,14}}, color={0,0,127})); + connect(PIPar.L, conProMod.L) annotation (Line(points={{158,4},{100,4},{100,6}, + {82,6}}, color={0,0,127})); + connect(PIPar.k, samk.u) annotation (Line(points={{182,16},{230,16},{230,-80}, + {-160,-80},{-160,-200},{-142,-200}}, color={0,0,127})); + connect(PIPar.Ti, samTi.u) annotation (Line(points={{182,4},{240,4},{240,-110}, + {-210,-110},{-210,-230},{-192,-230}}, color={0,0,127})); + connect(resPro.triSta, conProMod.triSta) annotation (Line(points={{2,-54},{64, + -54},{64,-2}}, color={255,0,255})); + connect(swi.y, y) annotation (Line(points={{262,-200},{300,-200}}, color={0,0,127})); + connect(u_m,con. u_m) annotation (Line(points={{0,-300},{0,-240},{-40,-240},{-40, + -232}},color={0,0,127})); + connect(swi.u3,con. y) annotation (Line(points={{238,-208},{80,-208},{80,-220}, + {-28,-220}}, color={0,0,127})); + connect(inTunPro.y, swi.u2) annotation (Line(points={{82,-140},{120,-140},{120, + -200},{238,-200}}, color={255,0,255})); + connect(inTunPro.u, triTun) annotation (Line(points={{58,-140},{40,-140},{40,-300}}, + color={255,0,255})); + connect(rel.trigger, triTun) annotation (Line(points={{-76,-42},{-76,-140},{40, + -140},{40,-300}}, color={255,0,255})); + connect(resPro.trigger, triTun) annotation (Line(points={{-22,-56},{-40,-56},{ + -40,-140},{40,-140},{40,-300}}, color={255,0,255})); connect(nand.y, assMes1.u) - annotation (Line(points={{102,30},{138,30}}, color={255,0,255})); + annotation (Line(points={{222,-140},{240,-140}}, color={255,0,255})); connect(nand.u2, edgReq.y) - annotation (Line(points={{78,22},{40,22},{40,-40},{34,-40}}, color={255,0,255})); + annotation (Line(points={{198,-148},{180,-148},{180,-240},{142,-240}}, + color={255,0,255})); connect(edgReq.u, triTun) - annotation (Line(points={{10,-40},{-14,-40},{-14,-90},{60,-90},{60,-140}}, - color={255,0,255})); - connect(tunStaDel.y, nand.u1) annotation (Line(points={{32,30},{78,30}}, color={255,0,255})); - connect(tunStaDel.u, inTunPro.y) annotation (Line(points={{8,30},{-18,30}}, - color={255,0,255})); - connect(con1.y, sub.u1) annotation (Line(points={{-138,400},{-108,400},{-108, - 386},{-102,386}}, color={0,0,127})); - connect(con2.y, sub.u2) annotation (Line(points={{-138,370},{-110,370},{-110, - 374},{-102,374}}, color={0,0,127})); - connect(sub1.u1, con2.y) annotation (Line(points={{-102,346},{-122,346},{-122, - 370},{-138,370}}, color={0,0,127})); - connect(sub1.u2, con3.y) annotation (Line(points={{-102,334},{-120,334},{-120, - 340},{-138,340}}, color={0,0,127})); - connect(sub.y, sub2.u1) annotation (Line(points={{-78,380},{-60,380},{-60,366}, - {-42,366}}, color={0,0,127})); + annotation (Line(points={{118,-240},{40,-240},{40,-300}}, color={255,0,255})); + connect(tunStaDel.y, nand.u1) annotation (Line(points={{162,-140},{198,-140}}, + color={255,0,255})); + connect(tunStaDel.u, inTunPro.y) annotation (Line(points={{138,-140},{82,-140}}, + color={255,0,255})); + connect(con1.y, sub.u1) annotation (Line(points={{-138,260},{-120,260},{-120,246}, + {-82,246}}, color={0,0,127})); + connect(con2.y, sub.u2) annotation (Line(points={{-138,210},{-100,210},{-100,234}, + {-82,234}}, color={0,0,127})); + connect(sub1.u1, con2.y) annotation (Line(points={{-82,206},{-100,206},{-100,210}, + {-138,210}}, color={0,0,127})); + connect(sub1.u2, con3.y) annotation (Line(points={{-82,194},{-120,194},{-120,180}, + {-138,180}}, color={0,0,127})); + connect(sub.y, sub2.u1) annotation (Line(points={{-58,240},{-40,240},{-40,226}, + {-2,226}}, color={0,0,127})); connect(sub1.y, sub2.u2) - annotation (Line(points={{-78,340},{-60,340},{-60,354},{-42,354}}, color={0,0,127})); + annotation (Line(points={{-58,200},{-40,200},{-40,214},{-2,214}}, color={0,0,127})); connect(abs1.u, sub2.y) - annotation (Line(points={{-2,348},{-12,348},{-12,360},{-18,360}}, color={0,0,127})); + annotation (Line(points={{38,220},{22,220}}, color={0,0,127})); connect(abs1.y, gre.u1) - annotation (Line(points={{22,348},{52,348},{52,380},{58,380}}, color={0,0,127})); + annotation (Line(points={{62,220},{98,220}}, color={0,0,127})); connect(gre.y, assMes2.u) - annotation (Line(points={{82,380},{148,380}},color={255,0,255})); - connect(con4.y, gre.u2) annotation (Line(points={{22,388},{58,388}}, - color={0,0,127})); - connect(rel.y, yRel.u) annotation (Line(points={{-38,136},{-6,136},{-6,220},{ - 38,220}}, color={0,0,127})); + annotation (Line(points={{122,220},{158,220}}, color={255,0,255})); + connect(con4.y, gre.u2) annotation (Line(points={{62,180},{80,180},{80,212},{98, + 212}}, color={0,0,127})); + connect(rel.y, yRel.u) annotation (Line(points={{-58,-24},{-40,-24},{-40,60},{ + -2,60}}, color={0,0,127})); connect(yRel.y, addPar.u) - annotation (Line(points={{62,220},{78,220}}, color={0,0,127})); - connect(addPar.y, swi.u1) annotation (Line(points={{102,220},{130,220},{130, - -12},{138,-12}}, color={0,0,127})); - connect(rel.u_m, u_m) annotation (Line(points={{-50,118},{-50,-44},{-20,-44}, - {-20,-140}}, color={0,0,127})); - connect(rel.u_s, u_s) annotation (Line(points={{-62,130},{-158,130},{-158,-20}, - {-200,-20}},color={0,0,127})); - connect(sam_u_s.u, u_s) annotation (Line(points={{-124,294},{-142,294},{-142, - 254},{-170,254},{-170,-20},{-200,-20}}, color={0,0,127})); - connect(sam_u_s.y, sub3.u1) annotation (Line(points={{-100,294},{-48,294},{ - -48,280},{-42,280}}, color={0,0,127})); - connect(sub3.u2, u_s) annotation (Line(points={{-42,268},{-60,268},{-60,254}, - {-170,254},{-170,-20},{-200,-20}},color={0,0,127})); + annotation (Line(points={{22,60},{78,60}}, color={0,0,127})); + connect(addPar.y, swi.u1) annotation (Line(points={{102,60},{130,60},{130,-192}, + {238,-192}},color={0,0,127})); + connect(rel.u_m, u_m) annotation (Line(points={{-70,-42},{-70,-160},{0,-160},{ + 0,-300}}, color={0,0,127})); + connect(rel.u_s, u_s) annotation (Line(points={{-82,-30},{-260,-30},{-260,-160}, + {-300,-160}}, color={0,0,127})); + connect(sam_u_s.u, u_s) annotation (Line(points={{-142,130},{-260,130},{-260,-160}, + {-300,-160}}, color={0,0,127})); + connect(sam_u_s.y, sub3.u1) annotation (Line(points={{-118,130},{-100,130},{-100, + 116},{-82,116}}, color={0,0,127})); + connect(sub3.u2, u_s) annotation (Line(points={{-82,104},{-260,104},{-260,-160}, + {-300,-160}}, color={0,0,127})); connect(sub3.y, abs2.u) - annotation (Line(points={{-18,274},{-10,274},{-10,294},{-2,294}}, color={0,0,127})); + annotation (Line(points={{-58,110},{-42,110}}, color={0,0,127})); connect(nand1.y, assMes3.u) - annotation (Line(points={{116,300},{148,300}}, color={255,0,255})); + annotation (Line(points={{102,110},{158,110}}, color={255,0,255})); connect(greThr.y, nand1.u1) - annotation (Line(points={{62,300},{92,300}}, color={255,0,255})); - connect(conProMod.tunSta, samk.trigger) annotation (Line(points={{54,156},{54, - -14},{-110,-14},{-110,-22},{-90,-22},{-90,-28}}, color={255,0,255})); - connect(samTi.trigger, conProMod.tunSta) annotation (Line(points={{-110,-58}, - {-110,-42},{-130,-42},{-130,-14},{54,-14},{54,156}}, color={255,0,255})); - connect(samTd.trigger, conProMod.tunSta) annotation (Line(points={{-130,-88}, - {-130,-14},{54,-14},{54,156}}, color={255,0,255})); - connect(sam_u_s.trigger, triTun) annotation (Line(points={{-112,282},{-112,56}, - {-14,56},{-14,-90},{60,-90},{60,-140}}, color={255,0,255})); + annotation (Line(points={{22,110},{78,110}}, color={255,0,255})); + connect(conProMod.tunSta, samk.trigger) annotation (Line(points={{82,2},{90,2}, + {90,-180},{-130,-180},{-130,-188}}, color={255,0,255})); + connect(samTi.trigger, conProMod.tunSta) annotation (Line(points={{-180,-218}, + {-180,-180},{90,-180},{90,2},{82,2}}, color={255,0,255})); + connect(samTd.trigger, conProMod.tunSta) annotation (Line(points={{-230,-248}, + {-230,-180},{90,-180},{90,2},{82,2}}, color={255,0,255})); + connect(sam_u_s.trigger, triTun) annotation (Line(points={{-130,118},{-130,-140}, + {40,-140},{40,-300}}, color={255,0,255})); connect(abs2.y, greThr.u) - annotation (Line(points={{22,294},{30,294},{30,300},{38,300}}, color={0,0,127})); - connect(nand1.u2, triTun) annotation (Line(points={{92,292},{80,292},{80,260}, - {-112,260},{-112,56},{60,56},{60,-140}}, color={255,0,255})); - connect(falEdg.u, nand1.y) annotation (Line(points={{-150,230},{-156,230},{ - -156,316},{124,316},{124,300},{116,300}}, color={255,0,255})); + annotation (Line(points={{-18,110},{-2,110}}, color={0,0,127})); + connect(nand1.u2, triTun) annotation (Line(points={{78,102},{40,102},{40,-300}}, + color={255,0,255})); + connect(falEdg.u, nand1.y) annotation (Line(points={{-222,50},{-240,50},{-240, + 80},{120,80},{120,110},{102,110}}, color={255,0,255})); connect(falEdg.y, or2.u1) - annotation (Line(points={{-126,230},{-86,230}}, color={255,0,255})); - connect(resPro.triEnd, or2.u2) annotation (Line(points={{22,102},{24,102},{24, - 64},{-98,64},{-98,222},{-86,222}}, color={255,0,255})); - connect(or2.y, inTunPro.clr) annotation (Line(points={{-62,230},{-62,146},{ - -70,146},{-70,24},{-42,24}}, color={255,0,255})); + annotation (Line(points={{-198,50},{-182,50}}, color={255,0,255})); + connect(resPro.triEnd, or2.u2) annotation (Line(points={{2,-58},{76,-58},{76,-90}, + {-190,-90},{-190,42},{-182,42}}, color={255,0,255})); + connect(or2.y, inTunPro.clr) annotation (Line(points={{-158,50},{-140,50},{-140, + -146},{58,-146}}, color={255,0,255})); connect(conProMod.triEnd, resPro.triEnd) - annotation (Line(points={{48,152},{48,102},{22,102}}, color={255,0,255})); + annotation (Line(points={{76,-2},{76,-58},{2,-58}}, color={255,0,255})); + connect(PIDPar.k, samk.u) annotation (Line(points={{182,-33},{230,-33},{230,-80}, + {-160,-80},{-160,-200},{-142,-200}}, color={0,0,127})); + connect(PIDPar.Td, samTd.u) annotation (Line(points={{182,-47},{220,-47},{220, + -70},{-250,-70},{-250,-260},{-242,-260}}, color={0,0,127})); + annotation (defaultComponentName = "PIDWitTun", Documentation(info="

                                                                                  @@ -381,7 +384,8 @@ first-order time delayed (FOTD) model. It then determines the gain and delay of this FOTD model based on the responses of the control process to asymmetric relay feedback. After that, taking the gain and delay of this FOTD mode as inputs, this PID tuning -method calculates the PID gains with an Approximate M-constrained Integral Gain Optimization (AMIGO) Tuner. +method calculates the PID gains with an Approximate M-constrained Integral Gain +Optimization (AMIGO) Tuner.

                                                                                  This block is implemented using @@ -410,23 +414,31 @@ The PID tuning process ends automatically Buildings.Controls.OBC.Utilities.PIDWithAutotuning.BaseClasses.Relay.TunMonitor), at which point this block turns back to a PID controller but with tuned PID parameters.

                                                                                  -

                                                                                  -Note: If an autotuning is ongoing, i.e., inTunPro.y = true, +

                                                                                  Note:

                                                                                  +
                                                                                    +
                                                                                  • +If an autotuning is ongoing, i.e., inTunPro.y = true, a new request for performing autotuning will be ignored. -In addition, the set point should not be changed during the autotuning process. -

                                                                                    +
                                                                                  • +
                                                                                  • +In addition, if the set point is changed during an autotuning process, a warning +will be generated. This tuning process will be stopped and the control parameters +from the begining the current process will be used. +
                                                                                  • +

                                                                                  Guidance for setting the parameters

                                                                                  The performance of the autotuning is affected by the parameters, including the typical range of control error, r, -the reference output for the tuning process, yRef, the higher and the lower values for -the relay output, yHig and yLow, and the deadband, deaBan. +the reference output for the tuning process, yRef, the higher and the +lower values for the relay output, yHig and yLow, and the +deadband, deaBan. The following procedure can be used to determine the values of those parameters.

                                                                                  1. -Perform a \"test run\" to determine the maximum and the minimum values of measurement. -In this test run, the autotuning is disabled and the set point is constant. +Perform a "test run" to determine the maximum and the minimum values of +measurement. In this test run, the autotuning is disabled and the set point is constant. This test run should stop after the system is stable. Record the maximum and the minimum values of measurement after the system is stable.
                                                                                  2. @@ -439,14 +451,15 @@ The yRef can be determined by dividing the set point by the sum of minimum and the maximum values of the measurement.
                                                                                  3. -The yHig and yLow should be adjusted to realize an asymmetric relay output, -i.e., yHig - yRef ≠ yRef - yLow. +The yHig and yLow should be adjusted to realize an +asymmetric relay output, i.e., yHig - yRef ≠ yRef - yLow.
                                                                                  4. When determining the deaBan, we first divide the maximum and the -minimum difference of measurement from the setpoint by the typical range of control error r, -then find the absolute value of the two deviations. -The deaBan can be set as half of the smaller one between the two absolute deviations. +minimum difference of measurement from the setpoint by the typical range of control +error r, then find the absolute value of the two deviations. +The deaBan can be set as half of the smaller one between the two +absolute deviations.

                                                                                  References

                                                                                  @@ -468,8 +481,8 @@ Propagated range of control error r to relay controller.
                                                                                7. October 23, 2023, by Michael Wetter:
                                                                                  -Revised implmenentation. Made initial control gains public so that a stable operation can be made -prior to the first tuning. +Revised implmenentation. Made initial control gains public so that a stable +operation can be made prior to the first tuning.
                                                                                8. June 1, 2022, by Sen Huang:
                                                                                  @@ -566,5 +579,5 @@ Icon(coordinateSystem(extent={{-100,-100},{100,100}}), "Td = " + String(con.Td, leftJustified=false, significantDigits=3)))}), -Diagram(coordinateSystem(extent={{-180,-120},{180,420}}))); +Diagram(coordinateSystem(extent={{-280,-280},{280,280}}))); end FirstOrderAMIGO; From 8757c9001bff7fed5d3e71c200573bf912f840fd Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Tue, 3 Sep 2024 15:39:24 -0700 Subject: [PATCH 206/214] updated release note --- Buildings/UsersGuide/ReleaseNotes/Version_11_1_0.mo | 9 --------- Buildings/UsersGuide/ReleaseNotes/Version_12_0_0.mo | 9 +++++++++ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/Buildings/UsersGuide/ReleaseNotes/Version_11_1_0.mo b/Buildings/UsersGuide/ReleaseNotes/Version_11_1_0.mo index b94d8f92a9a..573dc76ddc3 100644 --- a/Buildings/UsersGuide/ReleaseNotes/Version_11_1_0.mo +++ b/Buildings/UsersGuide/ReleaseNotes/Version_11_1_0.mo @@ -45,15 +45,6 @@ to existing libraries:
                                                    xxx.
                                                    Buildings.Controls.OBC -
                                                    Buildings.Controls.OBC.Utilities.PIDWithAutotuning - Package that contains components for the PID controller that can - autotune the control gain and time constants. -
                                                    Buildings.Fluid.Movers
                                                    + + + + + From 5bc11582b0f73e504efb10581f6341e92f313288 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Tue, 29 Oct 2024 16:36:31 -0400 Subject: [PATCH 207/214] model doc improve --- .../AMIGO/BaseClasses/PIDDerivativeTime.mo | 10 +++--- .../AutoTuner/AMIGO/BaseClasses/PIDGain.mo | 16 +++++----- .../AMIGO/BaseClasses/PIDIntegralTime.mo | 10 +++--- .../AutoTuner/AMIGO/BaseClasses/PIGain.mo | 14 ++++----- .../AMIGO/BaseClasses/PIIntegralTime.mo | 8 ++--- .../Validation/PIDDerivativeTime.mo | 4 +-- .../AMIGO/BaseClasses/Validation/PIDGain.mo | 6 ++-- .../BaseClasses/Validation/PIDIntegralTime.mo | 4 +-- .../AMIGO/BaseClasses/Validation/PIGain.mo | 6 ++-- .../BaseClasses/Validation/PIIntegralTime.mo | 4 +-- .../PIDWithAutotuning/AutoTuner/AMIGO/PI.mo | 6 ++-- .../PIDWithAutotuning/AutoTuner/AMIGO/PID.mo | 6 ++-- .../AutoTuner/AMIGO/Validation/PI.mo | 6 ++-- .../AutoTuner/AMIGO/Validation/PID.mo | 6 ++-- .../AutoTuner/AMIGO/package.mo | 2 +- .../PIDWithAutotuning/FirstOrderAMIGO.mo | 25 +++++++++------ .../Relay/BaseClasses/HalfPeriodRatio.mo | 2 +- .../Relay/BaseClasses/NormalizedTimeDelay.mo | 6 ++-- .../Relay/BaseClasses/OnOffPeriod.mo | 4 +-- .../BaseClasses/Gain.mo | 6 ++-- .../BaseClasses/TimeConstantDelay.mo | 8 ++--- .../BaseClasses/Validation/Gain.mo | 18 +++++------ .../Validation/TimeConstantDelay.mo | 16 +++++----- .../BaseClasses/Validation/package.mo | 6 ++-- .../BaseClasses/Validation/package.order | 0 .../BaseClasses/package.mo | 6 ++-- .../BaseClasses/package.order | 0 .../ControlProcessModel.mo | 31 +++++++++---------- .../Validation/ControlProcessModel.mo | 17 +++++----- .../Validation/package.mo | 9 +++--- .../Validation/package.order | 0 .../package.mo | 5 +-- .../package.order | 0 .../SystemIdentification/package.order | 2 +- ...TimeDelay_BaseClasses_Validation_Gain.txt} | 0 ...eClasses_Validation_TimeConstantDelay.txt} | 0 ...eDelay_Validation_ControlProcessModel.txt} | 0 .../BaseClasses/Validation/Gain.mos | 2 +- .../Validation/TimeConstantDelay.mos | 2 +- .../Validation/ControlProcessModel.mos | 2 +- ...TimeDelay.BaseClasses.Validation.Gain.mos} | 0 ...eClasses.Validation.TimeConstantDelay.mos} | 0 ...eDelay.Validation.ControlProcessModel.mos} | 0 43 files changed, 141 insertions(+), 134 deletions(-) rename Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/{FirstOrderTimedelayed => FirstOrderTimeDelay}/BaseClasses/Gain.mo (96%) rename Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/{FirstOrderTimedelayed => FirstOrderTimeDelay}/BaseClasses/TimeConstantDelay.mo (97%) rename Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/{FirstOrderTimedelayed => FirstOrderTimeDelay}/BaseClasses/Validation/Gain.mo (86%) rename Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/{FirstOrderTimedelayed => FirstOrderTimeDelay}/BaseClasses/Validation/TimeConstantDelay.mo (87%) rename Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/{FirstOrderTimedelayed => FirstOrderTimeDelay}/BaseClasses/Validation/package.mo (86%) rename Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/{FirstOrderTimedelayed => FirstOrderTimeDelay}/BaseClasses/Validation/package.order (100%) rename Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/{FirstOrderTimedelayed => FirstOrderTimeDelay}/BaseClasses/package.mo (85%) rename Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/{FirstOrderTimedelayed => FirstOrderTimeDelay}/BaseClasses/package.order (100%) rename Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/{FirstOrderTimedelayed => FirstOrderTimeDelay}/ControlProcessModel.mo (93%) rename Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/{FirstOrderTimedelayed => FirstOrderTimeDelay}/Validation/ControlProcessModel.mo (90%) rename Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/{FirstOrderTimedelayed => FirstOrderTimeDelay}/Validation/package.mo (81%) rename Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/{FirstOrderTimedelayed => FirstOrderTimeDelay}/Validation/package.order (100%) rename Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/{FirstOrderTimedelayed => FirstOrderTimeDelay}/package.mo (91%) rename Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/{FirstOrderTimedelayed => FirstOrderTimeDelay}/package.order (100%) rename Buildings/Resources/ReferenceResults/Dymola/{Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_BaseClasses_Validation_Gain.txt => Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimeDelay_BaseClasses_Validation_Gain.txt} (100%) rename Buildings/Resources/ReferenceResults/Dymola/{Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_BaseClasses_Validation_TimeConstantDelay.txt => Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimeDelay_BaseClasses_Validation_TimeConstantDelay.txt} (100%) rename Buildings/Resources/ReferenceResults/Dymola/{Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_Validation_ControlProcessModel.txt => Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimeDelay_Validation_ControlProcessModel.txt} (100%) rename Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/{FirstOrderTimedelayed => FirstOrderTimeDelay}/BaseClasses/Validation/Gain.mos (85%) rename Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/{FirstOrderTimedelayed => FirstOrderTimeDelay}/BaseClasses/Validation/TimeConstantDelay.mos (83%) rename Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/{FirstOrderTimedelayed => FirstOrderTimeDelay}/Validation/ControlProcessModel.mos (85%) rename Buildings/Resources/Scripts/OpenModelica/compareVars/{Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.BaseClasses.Validation.Gain.mos => Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimeDelay.BaseClasses.Validation.Gain.mos} (100%) rename Buildings/Resources/Scripts/OpenModelica/compareVars/{Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.BaseClasses.Validation.TimeConstantDelay.mos => Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimeDelay.BaseClasses.Validation.TimeConstantDelay.mos} (100%) rename Buildings/Resources/Scripts/OpenModelica/compareVars/{Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation.ControlProcessModel.mos => Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimeDelay.Validation.ControlProcessModel.mos} (100%) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDDerivativeTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDDerivativeTime.mo index e6be07cdaec..9ed41925f76 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDDerivativeTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDDerivativeTime.mo @@ -4,14 +4,14 @@ block PIDDerivativeTime "Identify the derivative time of a PID controller" final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) - "Time constant of a first order time-delayed model" + "Time constant of a first-order plus time-delay (FOPTD) model" annotation (Placement(transformation(extent={{-140,40},{-100,80}}), iconTransformation(extent={{-140,40},{-100,80}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput L( final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) - "Time delay of a first order time-delayed model" + "Time delay of the FOPTD model" annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput Td( @@ -82,14 +82,14 @@ First implementation
                                                    Td = 0.5 L T/(0.3 L + T),

                                                    -where T is the time constant of the first-order time delayed model -and L is the time delay of the first-order time delayed model. +where T is the time constant of the first order time delayed model +and L is the time delay of the first order time delayed model.

                                                    References

                                                    Åström, Karl Johan and Tore Hägglund (2004) \"Revisiting the Ziegler–Nichols step response method for PID control.\" -Journal of process control 14.6 (2004): 635-650. +Journal of Process Control 14.6 (2004): 635-650.

                                                    ")); end PIDDerivativeTime; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDGain.mo index 01728866a7d..c4f4b864b74 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDGain.mo @@ -2,25 +2,25 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.BaseCl block PIDGain "Identify the control gain of a PID controller" Buildings.Controls.OBC.CDL.Interfaces.RealInput kp( final min=1E-6) - "Gain of a first order time-delayed model" + "Gain of a first-order plus time-delay (FOPTD) model" annotation (Placement(transformation(extent={{-140,40},{-100,80}}), iconTransformation(extent={{-140,40},{-100,80}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput T( final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) - "Time constant of a first order time-delayed model" + "Time constant of the FOPTD model" annotation (Placement(transformation(extent={{-140,-20},{-100,20}}), iconTransformation(extent={{-140,-20},{-100,20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput L( final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) - "Time delay of a first order time-delayed model" + "Time delay of the FOPTD model" annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput k - "Control gain signal" + "Control gain" annotation (Placement(transformation(extent={{100,-20},{140,20}}))); protected Buildings.Controls.OBC.CDL.Reals.Divide div1 @@ -88,15 +88,15 @@ First implementation
                                                    k = 1/kp + (0.2 + 0.45 T/L),

                                                    -where kp is the gain of the first-order time delayed model, -T is the time constant of the first-order time delayed model, -and L is the time delay of the first-order time delayed model. +where kp is the gain of the first order time delayed model, +T is the time constant of the first order time delayed model, +and L is the time delay of the first order time delayed model.

                                                    References

                                                    Åström, Karl Johan and Tore Hägglund (2004) \"Revisiting the Ziegler–Nichols step response method for PID control.\" -Journal of process control 14.6 (2004): 635-650. +Journal of Process Control 14.6 (2004): 635-650.

                                                    ")); end PIDGain; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDIntegralTime.mo index 61d9ce3c1de..96d9904fe6f 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDIntegralTime.mo @@ -4,14 +4,14 @@ block PIDIntegralTime "Identify the integral time of a PID controller" final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) - "Time constant of a first order time-delayed model" + "Time constant of a first-order plus time-delay (FOPTD) model" annotation (Placement(transformation(extent={{-140,40},{-100,80}}), iconTransformation(extent={{-140,40},{-100,80}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput L( final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) - "Time delay of a first order time-delayed model" + "Time delay of the FOPTD model" annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput Ti( @@ -96,14 +96,14 @@ First implementation
                                                    Ti = L (0.4 L + 0.8 T)/(L + 0.1 T),

                                                    -where T is the time constant of the first-order time delayed model -and L is the time delay of the first-order time delayed model. +where T is the time constant of the first order time delayed model +and L is the time delay of the first order time delayed model.

                                                    References

                                                    Åström, Karl Johan and Tore Hägglund (2004) \"Revisiting the Ziegler–Nichols step response method for PID control.\" -Journal of process control 14.6 (2004): 635-650. +Journal of Process Control 14.6 (2004): 635-650.

                                                    ")); end PIDIntegralTime; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIGain.mo index 561bda9b73b..0c24a770735 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIGain.mo @@ -2,25 +2,25 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO.BaseCl block PIGain "Identify the control gain of a PI controller" Buildings.Controls.OBC.CDL.Interfaces.RealInput kp( final min=1E-6) - "Gain of a first order time-delayed model" + "Gain of a first-order plus time-delay (FOPTD) model" annotation (Placement(transformation(extent={{-140,40},{-100,80}}), iconTransformation(extent={{-140,40},{-100,80}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput T( final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) - "Time constant of a first order time-delayed model" + "Time constant of the FOPTD model" annotation (Placement(transformation(extent={{-140,-20},{-100,20}}), iconTransformation(extent={{-140,-20},{-100,20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput L( final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) - "Time delay of a first order time-delayed model" + "Time delay of the FOPTD model" annotation (Placement(transformation(extent={{-140,-96},{-100,-56}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput k - "Control gain of a PI controller" + "Control gain" annotation (Placement(transformation(extent={{100,-20},{140,20}}))); protected @@ -129,9 +129,9 @@ First implementation
                                                    k = 0.15/kp + (0.35-LT/(L+T)2)(T/kp/L),

                                                    -where kp is the gain of the first-order time delayed model, -T is the time constant of the first-order time delayed model, and -L is the time delay of the first-order time delayed model. +where kp is the gain of the first order time delayed model, +T is the time constant of the first order time delayed model, and +L is the time delay of the first order time delayed model.

                                                    References

                                                    diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIIntegralTime.mo index cec3bc39245..341632d8fed 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIIntegralTime.mo @@ -4,14 +4,14 @@ block PIIntegralTime "Identify the integral time of a PI controller" final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) - "Time constant of a first order time-delayed model" + "Time constant of a first-order plus time-delay (FOPTD) model" annotation (Placement(transformation(extent={{-140,40},{-100,80}}), iconTransformation(extent={{-140,40},{-100,80}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput L( final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) - "Time delay of a first order time-delayed model" + "Time delay of the FOPTD model" annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput Ti( @@ -131,8 +131,8 @@ First implementation
                                                    Ti = 0.35 L + 13 L T2/(T2 + 12 L T + 7 L2),

                                                    -where T is the time constant of the first-order time delayed model -and L is the time delay of the first-order time delayed model. +where T is the time constant of the first order time delayed model +and L is the time delay of the first order time delayed model.

                                                    References

                                                    diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/Validation/PIDDerivativeTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/Validation/PIDDerivativeTime.mo index 9c249eb35f3..090a425d67a 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/Validation/PIDDerivativeTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/Validation/PIDDerivativeTime.mo @@ -8,13 +8,13 @@ model PIDDerivativeTime "Test model for calculating the derivative time for a PI duration=1, offset=0.5, height=0.5) - "Time constant of a first order time-delayed model" + "Time constant of a first-order plus time-delay (FOPTD) model" annotation (Placement(transformation(extent={{-60,10},{-40,30}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Ramp L( duration=1, offset=0.3, height=0.3) - "Time delay of a first order time-delayed model" + "Time delay of the FOPTD model" annotation (Placement(transformation(extent={{-60,-30},{-40,-10}}))); equation connect(T.y, PIDDerTim.T) annotation (Line(points={{-38,20},{-20,20},{-20,6},{ diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/Validation/PIDGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/Validation/PIDGain.mo index 263e111c59c..bcce5c41154 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/Validation/PIDGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/Validation/PIDGain.mo @@ -7,19 +7,19 @@ model PIDGain "Test model for calculating the control gain for a PID controller" duration=1, offset=1, height=1) - "Gain of a first order time-delayed model" + "Gain of a first-order plus time-delay (FOPTD) model" annotation (Placement(transformation(extent={{-60,20},{-40,40}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Ramp T( duration=1, offset=0.5, height=0.5) - "Time constant of a first order time-delayed model" + "Time constant of the FOPTD model" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Ramp L( duration=1, offset=0.3, height=0.3) - "Time delay of a first order time-delayed model" + "Time delay of the FOPTD model" annotation (Placement(transformation(extent={{-60,-40},{-40,-20}}))); equation connect(kp.y, PIDGai.kp) annotation (Line(points={{-38,30},{-20,30},{-20,6},{-12, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/Validation/PIDIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/Validation/PIDIntegralTime.mo index bbe6b359518..f81d26d6262 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/Validation/PIDIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/Validation/PIDIntegralTime.mo @@ -8,13 +8,13 @@ model PIDIntegralTime "Test model for calculating the integral time for a PID co duration=1, offset=0.5, height=0.5) - "Time constant of a first order time-delayed model" + "Time constant of a first-order plus time-delay (FOPTD) model" annotation (Placement(transformation(extent={{-60,10},{-40,30}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Ramp L( duration=1, offset=0.3, height=0.3) - "Time delay of a first order time-delayed model" + "Time delay of the FOPTD model" annotation (Placement(transformation(extent={{-60,-30},{-40,-10}}))); equation connect(T.y, PIDIntTim.T) annotation (Line(points={{-38,20},{-20,20},{-20,6},{ diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/Validation/PIGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/Validation/PIGain.mo index d3ea7a755c3..c07ad116642 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/Validation/PIGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/Validation/PIGain.mo @@ -8,19 +8,19 @@ model PIGain "Test model for calculating the gain for a PI controller" duration=1, offset=1, height=1) - "Gain of a first order time-delayed model" + "Gain of a first-order plus time-delay (FOPTD) model" annotation (Placement(transformation(extent={{-60,20},{-40,40}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Ramp T( duration=1, offset=0.5, height=0.5) - "Time constant of a first order time-delayed model" + "Time constant of the FOPTD model" annotation (Placement(transformation(extent={{-60,-10},{-40,10}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Ramp L( duration=1, offset=0.3, height=0.3) - "Time delay of a first order time-delayed model" + "Time delay of the FOPTD model" annotation (Placement(transformation(extent={{-60,-40},{-40,-20}}))); equation connect(L.y, PIGai.L) annotation (Line(points={{-38,-30},{-20,-30},{-20,-6},{ diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/Validation/PIIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/Validation/PIIntegralTime.mo index 59344ff11a3..80e2d4fe17d 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/Validation/PIIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/Validation/PIIntegralTime.mo @@ -8,13 +8,13 @@ model PIIntegralTime "Test model for calculating the integral time for a PI cont duration=1, offset=0.5, height=0.5) - "Time constant of a first order time-delayed model" + "Time constant of a first-order plus time-delay (FOPTD) model" annotation (Placement(transformation(extent={{-60,10},{-40,30}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Ramp L( duration=1, offset=0.3, height=0.3) - "Time delay of a first order time-delayed model" + "Time delay of the FOPTD model" annotation (Placement(transformation(extent={{-60,-30},{-40,-10}}))); equation connect(T.y, PIIntTim.T) annotation (Line(points={{-38,20},{-20,20},{-20,6},{-12, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PI.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PI.mo index e90d5f33e9f..c6d1fb28d90 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PI.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PI.mo @@ -2,21 +2,21 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; block PI "Identify control gain and integral time of a PI controller" Buildings.Controls.OBC.CDL.Interfaces.RealInput kp( final min=1E-6) - "Gain of a first order time-delayed model" + "Gain of a first-order plus time-delay (FOPTD) model" annotation (Placement(transformation(extent={{-140,40},{-100,80}}), iconTransformation(extent={{-140,40},{-100,80}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput T( final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) - "Time constant of a first order time-delayed model" + "Time constant of the FOPTD model" annotation (Placement(transformation(extent={{-140,-20},{-100,20}}), iconTransformation(extent={{-140,-20},{-100,20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput L( final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) - "Time delay of a first order time-delayed model" + "Time delay of the FOPTD model" annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput k diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo index f5d9786fd33..e5fac0ab273 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo @@ -2,21 +2,21 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.AutoTuner.AMIGO; block PID "Identify control gain, integral time, and derivative time of the PID model" Buildings.Controls.OBC.CDL.Interfaces.RealInput kp( final min=1E-6) - "Gain of a first order time-delayed model" + "Gain of a first-order plus time-delay (FOPTD) model" annotation (Placement(transformation(extent={{-140,40},{-100,80}}), iconTransformation(extent={{-140,40},{-100,80}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput T( final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) - "Time constant of a first order time-delayed model" + "Time constant of the FOPTD model" annotation (Placement(transformation(extent={{-140,-20},{-100,20}}), iconTransformation(extent={{-140,-20},{-100,20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput L( final quantity="Time", final unit="s", min=100*Buildings.Controls.OBC.CDL.Constants.eps) - "Time delay of a first order time-delayed model" + "Time delay of the FOPTD model" annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput k diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo index b3f7c517942..bd6fc7603d1 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PI.mo @@ -7,19 +7,19 @@ model PI "Test model for calculating parameters of a PI controller" duration=1, offset=1, height=1) - "Gain of a first order time-delayed model" + "Gain of a first-order plus time-delay (FOPTD) model" annotation (Placement(transformation(extent={{-60,22},{-40,42}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Ramp T( duration=1, offset=0.5, height=0.5) - "Time constant of a first order time-delayed model" + "Time constant of the FOPTD model" annotation (Placement(transformation(extent={{-60,-20},{-40,0}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Ramp L( duration=1, offset=0.3, height=0.3) - "Time delay of a first order time-delayed model" + "Time delay of the FOPTD model" annotation (Placement(transformation(extent={{-60,-60},{-40,-40}}))); equation connect(L.y, PI.L) annotation (Line(points={{-38,-50},{-20,-50},{-20,-6},{-12, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo index f623dfbf5a7..c8ae7703904 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo @@ -7,19 +7,19 @@ model PID "Test model for calculating parameters of a PID controller" duration=1, offset=1, height=1) - "Gain of a first order time-delayed model" + "Gain of a first-order plus time-delay (FOPTD) model" annotation (Placement(transformation(extent={{-60,20},{-40,40}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Ramp T( duration=1, offset=0.5, height=0.5) - "Time constant of a first order time-delayed model" + "Time constant of the FOPTD model" annotation (Placement(transformation(extent={{-60,-20},{-40,0}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Ramp L( duration=1, offset=0.3, height=0.3) - "Time delay of a first order time-delayed model" + "Time delay of the FOPTD model" annotation (Placement(transformation(extent={{-60,-60},{-40,-40}}))); equation connect(kp.y, PID.kp) annotation (Line(points={{-38,30},{-20,30},{-20,6},{-12, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.mo index 472fdec88a7..284fcc30f9e 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/package.mo @@ -15,7 +15,7 @@ Journal of Process Control 24.5 (2014): 568-577.

                                                    Åström, Karl Johan and Tore Hägglund (2004) \"Revisiting the Ziegler–Nichols step response method for PID control.\" -Journal of process control 14.6 (2004): 635-650. +Journal of Process Control 14.6 (2004): 635-650.

                                                    "), Icon( diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index 091e438053f..0a392411e48 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -1,6 +1,6 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning; block FirstOrderAMIGO - "Autotuning PID controller with an AMIGO tuner that employs a first-order time delayed system model" + "Autotuning PID controller with an AMIGO tuner that employs a first-order system model" parameter Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController controllerType= Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PI @@ -34,7 +34,9 @@ block FirstOrderAMIGO final min=1E-6) "Deadband for holding the relay output"; parameter Real yRef - "Reference output for the tuning process. It should be greater than the lower and less than the higher value of the relay output"; + "Reference output for the tuning process. It must be greater than the + lower limit of the relay output and less than the upper limit of the + relay output"; parameter Real yMax = 1 "Upper limit of output" annotation (Dialog(group="Limits")); @@ -134,7 +136,7 @@ block FirstOrderAMIGO final y_start=Td_start) if with_D "Recording the derivative time" annotation (Placement(transformation(extent={{-240,-250},{-220,-270}}))); - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.ControlProcessModel + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimeDelay.ControlProcessModel conProMod( final yHig=yHig - yRef, final yLow=yRef - yLow, @@ -161,7 +163,9 @@ protected else Buildings.Controls.OBC.CDL.Types.SimpleController.PID "Type of controller"; Buildings.Controls.OBC.CDL.Utilities.Assert assMes2( - message="*** Warning: the relay output needs to be asymmetric. Check the value of yHig, yLow and yRef.") + final message="In " + + getInstanceName() + + ": the relay output needs to be asymmetric. Check the value of yHig, yLow and yRef.") "Warning message when the relay output is symmetric" annotation (Placement(transformation(extent={{160,210},{180,230}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant con1(final k=yHig) @@ -199,7 +203,9 @@ protected "Check if an autotuning is ongoing while a new autotuning request is received" annotation (Placement(transformation(extent={{200,-150},{220,-130}}))); Buildings.Controls.OBC.CDL.Utilities.Assert assMes1( - message="*** Warning: An autotuning is ongoing and the new tuning request is ignored.") + final message="In " + + getInstanceName() + + ": an autotuning is ongoing and the new tuning request is ignored.") "Warning message when an autotuning tuning is ongoing while a new autotuning request is received" annotation (Placement(transformation(extent={{242,-150},{262,-130}}))); Buildings.Controls.OBC.CDL.Logical.Edge edgReq @@ -231,7 +237,8 @@ protected final h=0.5*setHys) "Check if the setpoint changes" annotation (Placement(transformation(extent={{0,100},{20,120}}))); - Buildings.Controls.OBC.CDL.Utilities.Assert assMes3(message= + Buildings.Controls.OBC.CDL.Utilities.Assert assMes3( + final message= "In " + getInstanceName() + ": the setpoint must not change when an autotuning tuning is ongoing. This ongoing autotuning will thus abort.") "Warning message when the setpoint changes during tuning process" @@ -380,10 +387,10 @@ This block implements a rule-based PID tuning method.

                                                    The PID tuning method approximates the control process with a -first-order time delayed (FOTD) model. -It then determines the gain and delay of this FOTD model based on the responses of +first-order plus time-delay (FOPTD) model. +It then determines the gain and delay of this FOPTD model based on the responses of the control process to asymmetric relay feedback. -After that, taking the gain and delay of this FOTD mode as inputs, this PID tuning +After that, taking the gain and delay of this FOPTD mode as inputs, this PID tuning method calculates the PID gains with an Approximate M-constrained Integral Gain Optimization (AMIGO) Tuner.

                                                    diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/HalfPeriodRatio.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/HalfPeriodRatio.mo index 8df5b9b5013..534a48a103d 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/HalfPeriodRatio.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/HalfPeriodRatio.mo @@ -1,6 +1,6 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses; block HalfPeriodRatio - "Calculate the half period ratio of a response from a relay controller" + "Calculate the half period ratio of a response of a relay controller" Buildings.Controls.OBC.CDL.Interfaces.RealInput tOn( final quantity="Time", final unit="s", diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/NormalizedTimeDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/NormalizedTimeDelay.mo index 3205ed7af24..3f63b63ee21 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/NormalizedTimeDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/NormalizedTimeDelay.mo @@ -1,6 +1,6 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses; block NormalizedTimeDelay - "Calculate the normalized time delay of a response from a relay controller" + "Calculate the normalized time delay of the response of a relay controller" parameter Real gamma(min=1+1E-6) = 4 "Asymmetry level of the relay controller"; Buildings.Controls.OBC.CDL.Interfaces.RealInput rho @@ -38,7 +38,9 @@ protected "Block that calculates the product of the two inputs" annotation (Placement(transformation(extent={{20,-48},{40,-28}}))); Buildings.Controls.OBC.CDL.Utilities.Assert assMes( - final message="Warning: the asymmetry level of the relay controller is lower than the half period ratio. Increase the level.") + final message="In " + + getInstanceName() + + ": the asymmetry level of the relay controller is lower than the half period ratio. Increase the level.") "Warning message when asymmetry level is less than the half period ratio" annotation (Placement(transformation(extent={{60,50},{80,70}}))); Buildings.Controls.OBC.CDL.Reals.Greater gre( diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/OnOffPeriod.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/OnOffPeriod.mo index 01f192453ad..5ab52ee6438 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/OnOffPeriod.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/OnOffPeriod.mo @@ -45,11 +45,11 @@ protected annotation (Placement(transformation(extent={{-80,-30},{-60,-10}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.SamplerWithResetThreshold timOnRec( final lowLim=0, final y_reset=0) - "Sampling the on time" + "Sample the on time" annotation (Placement(transformation(extent={{60,30},{80,50}}))); Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.BaseClasses.SamplerWithResetThreshold timOffRec( final lowLim=0, final y_reset=0) - "Sampling the off time" + "Sample the off time" annotation (Placement(transformation(extent={{60,-50},{80,-30}}))); equation diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Gain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/BaseClasses/Gain.mo similarity index 96% rename from Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Gain.mo rename to Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/BaseClasses/Gain.mo index e0b9c874adb..a2d7b2c18c0 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Gain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/BaseClasses/Gain.mo @@ -1,5 +1,5 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.BaseClasses; -block Gain "Identify the gain of a first order time delayed model" +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimeDelay.BaseClasses; +block Gain "Identify the gain of a first-order plus time-delay model" parameter Real yHig(min=1E-6) "Higher value for the output (assuming the reference output is 0)"; parameter Real yLow(min=1E-6) @@ -95,7 +95,7 @@ First implementation
                                                    ", info=" -

                                                    This block calculates the gain of a first-order time delayed model.

                                                    +

                                                    This block calculates the gain of a first-order plus time-delay model.

                                                    Main equations

                                                    k = Iy/Iu, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/TimeConstantDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/BaseClasses/TimeConstantDelay.mo similarity index 97% rename from Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/TimeConstantDelay.mo rename to Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/BaseClasses/TimeConstantDelay.mo index fcea9db9c0e..ee98bdc85b9 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/TimeConstantDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/BaseClasses/TimeConstantDelay.mo @@ -1,6 +1,6 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.BaseClasses; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimeDelay.BaseClasses; block TimeConstantDelay - "Calculate the time constant and the time delay of a first order time delayed model" + "Calculate the time constant and the time delay of a first-order plus time-delay model" parameter Real yHig(min=1E-6) "Higher value for the output (assuming the reference output is 0)"; parameter Real yLow(min=1E-6) @@ -194,7 +194,7 @@ First implementation
                                                    ", info="

                                                    -This block calculates the time constant and the time delay of a first-order time delayed model. +This block calculates the time constant and the time delay of a first-order plus time-delay (FOPTD) model.

                                                    Main equations

                                                    @@ -208,7 +208,7 @@ where yhig and ylow are constants related to an asymmetric relay output. ton is the length of the on period of the same asymmetric relay output. δ is the dead band of the same asymmetric relay output. -k is the gain of the first-order time delayed model. +k is the gain of this FOPTD model. τ is the normalized time delay.

                                                    diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/Gain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/BaseClasses/Validation/Gain.mo similarity index 86% rename from Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/Gain.mo rename to Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/BaseClasses/Validation/Gain.mo index de7b4cb01d7..1557fe8db24 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/Gain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/BaseClasses/Validation/Gain.mo @@ -1,9 +1,7 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.BaseClasses.Validation; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimeDelay.BaseClasses.Validation; model Gain "Test model for identifying the gain of the control process" - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.BaseClasses.Gain - gai( - yHig=1, - yLow=0.5) + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimeDelay.BaseClasses.Gain + gai(yHig=1, yLow=0.5) "Block that calculates the gain of a first-order model" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Pulse u( @@ -47,7 +45,7 @@ equation StopTime=1.0, Tolerance=1e-06), __Dymola_Commands( - file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/Gain.mos" "Simulate and plot"), + file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/BaseClasses/Validation/Gain.mos" "Simulate and plot"), Icon( coordinateSystem( preserveAspectRatio=false, extent={{-100,-100},{100,100}}), @@ -74,12 +72,12 @@ First implementation
                                                    ", info="

                                                    Validation test for the block - -Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.BaseClasses.Gain. + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimeDelay.BaseClasses.Gain.

                                                    -This testing scenario in this example is the same to that in -Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation.ControlProcessModel. +This testing scenario in this example is the same to that in +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimeDelay.Validation.ControlProcessModel.

                                                    ")); end Gain; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/TimeConstantDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/BaseClasses/Validation/TimeConstantDelay.mo similarity index 87% rename from Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/TimeConstantDelay.mo rename to Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/BaseClasses/Validation/TimeConstantDelay.mo index 7da11cf6fe7..e8087031d06 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/TimeConstantDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/BaseClasses/Validation/TimeConstantDelay.mo @@ -1,10 +1,10 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.BaseClasses.Validation; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimeDelay.BaseClasses.Validation; model TimeConstantDelay "Test model for identifying the the time constant and the time delay of the control process" - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.BaseClasses.TimeConstantDelay + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimeDelay.BaseClasses.TimeConstantDelay timConDel( - yHig=0.5, - yLow=0.1, - deaBan=0.4) + yHig=0.5, + yLow=0.1, + deaBan=0.4) "Block that calculates the time constant and the time delay of a first-order model" annotation (Placement(transformation(extent={{-10,-10},{10,10}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant k(k=1) @@ -37,7 +37,7 @@ equation StopTime=1.0, Tolerance=1e-06), __Dymola_Commands( - file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/TimeConstantDelay.mos" "Simulate and plot"), + file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/BaseClasses/Validation/TimeConstantDelay.mos" "Simulate and plot"), Icon( coordinateSystem( preserveAspectRatio=false, extent={{-100,-100},{100,100}}), @@ -64,8 +64,8 @@ First implementation
                                                    ", info="

                                                    Validation test for the block - -Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.BaseClasses.TimeConstantDelay. + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimeDelay.BaseClasses.TimeConstantDelay.

                                                    The input tOn changes from 0 to 0.1 at 0.1s, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/package.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/BaseClasses/Validation/package.mo similarity index 86% rename from Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/package.mo rename to Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/BaseClasses/Validation/package.mo index 870cea81b27..a2bad67816a 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/package.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/BaseClasses/Validation/package.mo @@ -1,4 +1,4 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.BaseClasses; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimeDelay.BaseClasses; package Validation "Collection of validation models" annotation ( preferredView="info", @@ -6,8 +6,8 @@ package Validation "Collection of validation models" info="

                                                    This package contains models that validate the blocks in - -Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.BaseClasses. + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimeDelay.BaseClasses.

                                                    "), Icon( diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/BaseClasses/Validation/package.order similarity index 100% rename from Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/package.order rename to Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/BaseClasses/Validation/package.order diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/package.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/BaseClasses/package.mo similarity index 85% rename from Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/package.mo rename to Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/BaseClasses/package.mo index 36d4b009013..5ee819e6023 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/package.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/BaseClasses/package.mo @@ -1,4 +1,4 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimeDelay; package BaseClasses "Package with base classes" annotation (Icon(graphics={ Rectangle( @@ -14,8 +14,8 @@ package BaseClasses "Package with base classes" fillPattern=FillPattern.Solid)}), Documentation(info="

                                                    This package contains base classes to construct blocks in - -Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed. + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimeDelay.

                                                    ")); end BaseClasses; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/BaseClasses/package.order similarity index 100% rename from Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/package.order rename to Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/BaseClasses/package.order diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/ControlProcessModel.mo similarity index 93% rename from Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo rename to Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/ControlProcessModel.mo index 9e65a51b799..1d4d2e7a8e7 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/ControlProcessModel.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/ControlProcessModel.mo @@ -1,6 +1,6 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimeDelay; block ControlProcessModel - "Identify the parameters of a first-order time delayed model for the control process" + "Identify the parameters of a first-order plus time-delay (FOPTD) model of the control process" parameter Real yHig(min=1E-6) "Higher value for the output"; parameter Real yLow(min=1E-6) @@ -76,16 +76,14 @@ protected Buildings.Controls.OBC.CDL.Reals.Divide div "The output of samtau divided by that of addPar" annotation (Placement(transformation(extent={{20,-30},{40,-10}}))); - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.BaseClasses.Gain gain( - final yHig=yHig, - final yLow=yLow) - "Block that calculates the gain" + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimeDelay.BaseClasses.Gain + gain(final yHig=yHig, final yLow=yLow) "Block that calculates the gain" annotation (Placement(transformation(extent={{-120,10},{-100,30}}))); - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.BaseClasses.TimeConstantDelay + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimeDelay.BaseClasses.TimeConstantDelay timConDel( - final yHig=yHig, - final yLow=yLow, - final deaBan=deaBan) + final yHig=yHig, + final yLow=yLow, + final deaBan=deaBan) "Block that calculate the time constant and the time delay" annotation (Placement(transformation(extent={{60,10},{80,30}}))); Buildings.Controls.OBC.CDL.Discrete.TriggeredSampler samk( @@ -121,7 +119,8 @@ protected Buildings.Controls.OBC.CDL.Logical.And and2 "Check if the autotuning completes successfully" annotation (Placement(transformation(extent={{80,-80},{100,-60}}))); - Buildings.Controls.OBC.CDL.Utilities.Assert assMes4(message="In " + + Buildings.Controls.OBC.CDL.Utilities.Assert assMes4( + final message="In " + getInstanceName() + ": an autotuning fails, the controller gains are unchanged.") "Warning message when an autotuning fails" @@ -237,13 +236,13 @@ First implementation
                                                    ", info="

                                                    -This block calculates the model parameters of a first-order time delayed model. +This block calculates the model parameters of a FOPTD model. Specifically, it employs - -Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.BaseClasses.Gain + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimeDelay.BaseClasses.Gain and - -Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.BaseClasses.TimeConstantDelay + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimeDelay.BaseClasses.TimeConstantDelay to identify the gain, the time constant and the time delay, respectively.

                                                    diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/Validation/ControlProcessModel.mo similarity index 90% rename from Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo rename to Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/Validation/ControlProcessModel.mo index 5e6dc0c0938..45b32fedcbf 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/Validation/ControlProcessModel.mo @@ -1,12 +1,11 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation; +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimeDelay.Validation; model ControlProcessModel "Test model for identifying the reduced-order model of the control process" - Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.ControlProcessModel + Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimeDelay.ControlProcessModel conProMod( - yHig=1, - yLow=0.1, - deaBan=0.05) - "Calculate the parameters of a first-order model" + yHig=1, + yLow=0.1, + deaBan=0.05) "Calculate the parameters of a first-order model" annotation (Placement(transformation(extent={{40,-10},{60,10}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Pulse u( amplitude=0.5, @@ -66,7 +65,7 @@ equation StopTime=1.0, Tolerance=1e-06), __Dymola_Commands( - file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mos" "Simulate and plot"), + file="modelica://Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/Validation/ControlProcessModel.mos" "Simulate and plot"), Icon( coordinateSystem( preserveAspectRatio=false, extent={{-100,-100},{100,100}}), @@ -93,8 +92,8 @@ First implementation
                                                    ", info="

                                                    Validation test for the block - -Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.ControlProcessModel. + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimeDelay.ControlProcessModel.

                                                    This example considers an output from a relay controller, which is described below: diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/package.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/Validation/package.mo similarity index 81% rename from Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/package.mo rename to Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/Validation/package.mo index 2abd28f11cd..fd582a4df69 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/package.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/Validation/package.mo @@ -1,13 +1,14 @@ -within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed; -package Validation "Collection of models that validate the blocks in the FirstOrderTimedelayed" +within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimeDelay; +package Validation + "Collection of models that validate the blocks in the FirstOrderTimeDelay" annotation ( preferredView="info", Documentation( info="

                                                    This package contains models that validate the blocks in - -Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed. + +Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimeDelay.

                                                    "), Icon( diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/Validation/package.order similarity index 100% rename from Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/package.order rename to Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/Validation/package.order diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/package.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/package.mo similarity index 91% rename from Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/package.mo rename to Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/package.mo index 8e22ff8322c..99ddaf2fadd 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/package.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/package.mo @@ -1,5 +1,6 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification; -package FirstOrderTimedelayed "Package with components related to a first-order time delayed model" +package FirstOrderTimeDelay + "Package with components related to a first-order plus time-delay model" annotation (Documentation(info="

                                                    This package contains the blocks to identify the parameters of a first-order time delayed model.

                                                    "), @@ -38,4 +39,4 @@ annotation (Documentation(info=" fillColor={255,255,255}, fillPattern=FillPattern.Solid, extent={{-80.0,0.0},{-20.0,60.0}})})); -end FirstOrderTimedelayed; +end FirstOrderTimeDelay; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/package.order similarity index 100% rename from Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/package.order rename to Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/package.order diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/package.order b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/package.order index c39c5a24b14..ea017af4dd2 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/package.order +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/package.order @@ -1 +1 @@ -FirstOrderTimedelayed +FirstOrderTimeDelay diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_BaseClasses_Validation_Gain.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimeDelay_BaseClasses_Validation_Gain.txt similarity index 100% rename from Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_BaseClasses_Validation_Gain.txt rename to Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimeDelay_BaseClasses_Validation_Gain.txt diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_BaseClasses_Validation_TimeConstantDelay.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimeDelay_BaseClasses_Validation_TimeConstantDelay.txt similarity index 100% rename from Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_BaseClasses_Validation_TimeConstantDelay.txt rename to Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimeDelay_BaseClasses_Validation_TimeConstantDelay.txt diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_Validation_ControlProcessModel.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimeDelay_Validation_ControlProcessModel.txt similarity index 100% rename from Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimedelayed_Validation_ControlProcessModel.txt rename to Buildings/Resources/ReferenceResults/Dymola/Buildings_Controls_OBC_Utilities_PIDWithAutotuning_SystemIdentification_FirstOrderTimeDelay_Validation_ControlProcessModel.txt diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/Gain.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/BaseClasses/Validation/Gain.mos similarity index 85% rename from Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/Gain.mos rename to Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/BaseClasses/Validation/Gain.mos index c59df2384b0..1202a3d3210 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/Gain.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/BaseClasses/Validation/Gain.mos @@ -1,4 +1,4 @@ -simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.BaseClasses.Validation.Gain", method="Cvode", tolerance=1e-06, resultFile="Gain"); +simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimeDelay.BaseClasses.Validation.Gain", method="Cvode", tolerance=1e-06, resultFile="Gain"); createPlot(id=1, position={34, 9, 995, 662}, y={"u.y"}, range={0.0, 1.0, 0.0, 1.5}, grid=true, subPlot=101, colors={{28,108,200}}); createPlot(id=1, position={34, 9, 995, 662}, y={"tOn.y"}, range={0.0, 1.0, 0.0, 0.4}, grid=true, subPlot=102, colors={{28,108,200}}); createPlot(id=1, position={34, 9, 995, 662}, y={"tOff.y"}, range={0.0, 1.0, -1.0, 1.0}, grid=true, subPlot=103, colors={{28,108,200}}); diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/TimeConstantDelay.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/BaseClasses/Validation/TimeConstantDelay.mos similarity index 83% rename from Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/TimeConstantDelay.mos rename to Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/BaseClasses/Validation/TimeConstantDelay.mos index f2ce5275f20..4a0b49cf66f 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/BaseClasses/Validation/TimeConstantDelay.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/BaseClasses/Validation/TimeConstantDelay.mos @@ -1,4 +1,4 @@ -simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.BaseClasses.Validation.TimeConstantDelay", method="Cvode", tolerance=1e-06, resultFile="TimeConstantDelay"); +simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimeDelay.BaseClasses.Validation.TimeConstantDelay", method="Cvode", tolerance=1e-06, resultFile="TimeConstantDelay"); createPlot(id=1, position={15, 15, 1101, 667}, y={"tOn.y"}, range={0.0, 1.0, -0.1, 0.2}, grid=true, subPlot=101, colors={{28,108,200}}); createPlot(id=1, position={15, 15, 1101, 667}, y={"k.y"}, range={0.0, 1.0, 0.8, 1.2}, grid=true, subPlot=102, colors={{28,108,200}}); createPlot(id=1, position={15, 15, 1101, 667}, y={"ratioLT.y"}, range={0.0, 1.0, 0.2, 0.5}, grid=true, subPlot=103, colors={{28,108,200}}); diff --git a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mos b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/Validation/ControlProcessModel.mos similarity index 85% rename from Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mos rename to Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/Validation/ControlProcessModel.mos index 2a0a1bdc8dd..bd801599a1f 100644 --- a/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimedelayed/Validation/ControlProcessModel.mos +++ b/Buildings/Resources/Scripts/Dymola/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/Validation/ControlProcessModel.mos @@ -1,4 +1,4 @@ -simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation.ControlProcessModel", method="Cvode", tolerance=1e-06, resultFile="ControlProcessModel"); +simulateModel("Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimeDelay.Validation.ControlProcessModel", method="Cvode", tolerance=1e-06, resultFile="ControlProcessModel"); createPlot(id=1, position={10, -9, 710, 687}, y={"tunSta.y", "tunEnd.y"}, range={0.0, 1.0, -1.0, 2.0}, grid=true, subPlot=101, colors={{28,108,200}, {28,108,200}}); createPlot(id=1, position={10, -9, 710, 687}, y={"u.y", "ratioLT.y"}, range={0.0, 1.0, 0.0, 2.0}, grid=true, subPlot=102, colors={{28,108,200}, {238,46,47}}); createPlot(id=1, position={10, -9, 710, 687}, y={"tOn.y", "tOff.y"}, range={0.0, 1.0, -1.0, 1.0}, grid=true, subPlot=103, colors={{28,108,200}, {238,46,47}}); diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.BaseClasses.Validation.Gain.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimeDelay.BaseClasses.Validation.Gain.mos similarity index 100% rename from Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.BaseClasses.Validation.Gain.mos rename to Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimeDelay.BaseClasses.Validation.Gain.mos diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.BaseClasses.Validation.TimeConstantDelay.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimeDelay.BaseClasses.Validation.TimeConstantDelay.mos similarity index 100% rename from Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.BaseClasses.Validation.TimeConstantDelay.mos rename to Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimeDelay.BaseClasses.Validation.TimeConstantDelay.mos diff --git a/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation.ControlProcessModel.mos b/Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimeDelay.Validation.ControlProcessModel.mos similarity index 100% rename from Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimedelayed.Validation.ControlProcessModel.mos rename to Buildings/Resources/Scripts/OpenModelica/compareVars/Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimeDelay.Validation.ControlProcessModel.mos From 0834add32c1f40745616a9a177075ddddaac6034 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Tue, 5 Nov 2024 23:13:21 -0500 Subject: [PATCH 208/214] model doc update --- .../AMIGO/BaseClasses/PIDDerivativeTime.mo | 4 +-- .../AutoTuner/AMIGO/BaseClasses/PIDGain.mo | 6 ++-- .../AMIGO/BaseClasses/PIDIntegralTime.mo | 4 +-- .../AutoTuner/AMIGO/BaseClasses/PIGain.mo | 6 ++-- .../AMIGO/BaseClasses/PIIntegralTime.mo | 4 +-- .../PIDWithAutotuning/FirstOrderAMIGO.mo | 28 +++++++++---------- .../Relay/BaseClasses/HalfPeriodRatio.mo | 9 ++++-- .../Relay/BaseClasses/NormalizedTimeDelay.mo | 7 +++-- .../Relay/BaseClasses/OnOffPeriod.mo | 7 +++-- .../Relay/BaseClasses/TuningMonitor.mo | 9 ++++-- .../PIDWithAutotuning/Relay/Controller.mo | 17 ++++++----- .../BaseClasses/TimeConstantDelay.mo | 7 +++-- .../FirstOrderTimeDelay/package.mo | 2 +- 13 files changed, 61 insertions(+), 49 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDDerivativeTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDDerivativeTime.mo index 9ed41925f76..8b7688bd107 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDDerivativeTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDDerivativeTime.mo @@ -82,8 +82,8 @@ First implementation
                                                    Td = 0.5 L T/(0.3 L + T),

                                                    -where T is the time constant of the first order time delayed model -and L is the time delay of the first order time delayed model. +where T is the time constant of the first-order plus time-delay (FOPTD) model +and L is the time delay of the FOPTD model.

                                                    References

                                                    diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDGain.mo index c4f4b864b74..126be156ebb 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDGain.mo @@ -88,9 +88,9 @@ First implementation
                                                    k = 1/kp + (0.2 + 0.45 T/L),

                                                    -where kp is the gain of the first order time delayed model, -T is the time constant of the first order time delayed model, -and L is the time delay of the first order time delayed model. +where kp is the gain of the first-order plus time-delay (FOPTD) model, +T is the time constant of the FOPTD model, +and L is the time delay of the FOPTD model.

                                                    References

                                                    diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDIntegralTime.mo index 96d9904fe6f..4a89b54bb40 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIDIntegralTime.mo @@ -96,8 +96,8 @@ First implementation
                                                    Ti = L (0.4 L + 0.8 T)/(L + 0.1 T),

                                                    -where T is the time constant of the first order time delayed model -and L is the time delay of the first order time delayed model. +where T is the time constant of the first-order plus time-delay (FOPTD) model +and L is the time delay of the FOPTD model.

                                                    References

                                                    diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIGain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIGain.mo index 0c24a770735..e2db15d6176 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIGain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIGain.mo @@ -129,9 +129,9 @@ First implementation
                                                    k = 0.15/kp + (0.35-LT/(L+T)2)(T/kp/L),

                                                    -where kp is the gain of the first order time delayed model, -T is the time constant of the first order time delayed model, and -L is the time delay of the first order time delayed model. +where kp is the gain of the first-order plus time-delay (FOPTD) model, +T is the time constant of the FOPTD model, and +L is the time delay of the FOPTD model.

                                                    References

                                                    diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIIntegralTime.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIIntegralTime.mo index 341632d8fed..995a0d15897 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIIntegralTime.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/BaseClasses/PIIntegralTime.mo @@ -131,8 +131,8 @@ First implementation
                                                    Ti = 0.35 L + 13 L T2/(T2 + 12 L T + 7 L2),

                                                    -where T is the time constant of the first order time delayed model -and L is the time delay of the first order time delayed model. +where T is the time constant of the first-order plus time-delay (FOPTD) model +and L is the time delay of the FOPTD model.

                                                    References

                                                    diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index 0a392411e48..ae462d12dd7 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -388,11 +388,11 @@ This block implements a rule-based PID tuning method.

                                                    The PID tuning method approximates the control process with a first-order plus time-delay (FOPTD) model. -It then determines the gain and delay of this FOPTD model based on the responses of +It then determines the parameters of this FOPTD model based on the responses of the control process to asymmetric relay feedback. -After that, taking the gain and delay of this FOPTD mode as inputs, this PID tuning -method calculates the PID gains with an Approximate M-constrained Integral Gain -Optimization (AMIGO) Tuner. +After that, taking the parameters of this FOPTD mode as inputs, this PID tuning +method calculates the PID gains with the Approximate M-constrained Integral Gain +Optimization (AMIGO) method.

                                                    This block is implemented using @@ -405,7 +405,7 @@ PID controller.

                                                    Autotuning Process

                                                    -To use this block, place it in a control loop as any other PID controllers. +To use this block, insert it into a feedback control loop. Before the PID tuning process starts, this block is equivalent to Buildings.Controls.OBC.Utilities.PIDWithInputGains. @@ -425,12 +425,13 @@ at which point this block turns back to a PID controller but with tuned PID para

                                                    • If an autotuning is ongoing, i.e., inTunPro.y = true, -a new request for performing autotuning will be ignored. +a new request for performing autotuning will be ignored and a warning +will be generated.
                                                    • -In addition, if the set point is changed during an autotuning process, a warning -will be generated. This tuning process will be stopped and the control parameters -from the begining the current process will be used. +If the set point is changed during an autotuning process, a warning +will be generated. This tuning process will be stopped and no changes will be +made to the PID parameters.

                                                    Guidance for setting the parameters

                                                    @@ -440,7 +441,7 @@ typical range of control error, r, the reference output for the tuning process, yRef, the higher and the lower values for the relay output, yHig and yLow, and the deadband, deaBan. -The following procedure can be used to determine the values of those parameters. +Here are some suggestions for determining the values of those parameters

                                                    1. @@ -463,10 +464,9 @@ asymmetric relay output, i.e., yHig - yRef ≠ yRef - yLow.
                                                    2. When determining the deaBan, we first divide the maximum and the -minimum difference of measurement from the setpoint by the typical range of control -error r, then find the absolute value of the two deviations. -The deaBan can be set as half of the smaller one between the two -absolute deviations. +minimum deviations of measurement from the setpoint by r. +The deaBan can then be set as half of the smaller absolute value +of those two deviations.

                                                    References

                                                    diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/HalfPeriodRatio.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/HalfPeriodRatio.mo index 534a48a103d..7ee432f8f15 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/HalfPeriodRatio.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/HalfPeriodRatio.mo @@ -108,8 +108,11 @@ Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Relay.Controller.

                                                    References

                                                    -

                                                    Josefin Berner (2017) -\"Automatic Controller Tuning using Relay-based Model Identification.\" -Department of Automatic Control, Lund Institute of Technology, Lund University.

                                                    +

                                                    +J. Berner (2017). + +\"Automatic Controller Tuning using Relay-based Model Identification.\" +Department of Automatic Control, Lund University. +

                                                    ")); end HalfPeriodRatio; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/NormalizedTimeDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/NormalizedTimeDelay.mo index 3f63b63ee21..01920f83255 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/NormalizedTimeDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/NormalizedTimeDelay.mo @@ -108,9 +108,10 @@ the relay controller and the half-period ratio, respectively.

                                                    References

                                                    -Josefin Berner (2017) -\"Automatic Controller Tuning using Relay-based Model Identification.\" -Department of Automatic Control, Lund Institute of Technology, Lund University. +J. Berner (2017). + +\"Automatic Controller Tuning using Relay-based Model Identification.\" +Department of Automatic Control, Lund University.

                                                    ")); end NormalizedTimeDelay; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/OnOffPeriod.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/OnOffPeriod.mo index 5ab52ee6438..301d0ebabb3 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/OnOffPeriod.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/OnOffPeriod.mo @@ -116,9 +116,10 @@ Likewise, tOff is sampled when the relay switch output becomes true

                                                    References

                                                    -Josefin Berner (2017) -\"Automatic Controller Tuning using Relay-based Model Identification.\" -Department of Automatic Control, Lund Institute of Technology, Lund University. +J. Berner (2017). + +\"Automatic Controller Tuning using Relay-based Model Identification.\" +Department of Automatic Control, Lund University.

                                                    ")); end OnOffPeriod; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/TuningMonitor.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/TuningMonitor.mo index 6e2cbc33369..f669eb40859 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/TuningMonitor.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/TuningMonitor.mo @@ -163,8 +163,11 @@ or toff changes after the tuning period starts, as illus

                                                    References

                                                    -

                                                    Josefin Berner (2017) -\"Automatic Controller Tuning using Relay-based Model Identification.\" -Department of Automatic Control, Lund Institute of Technology, Lund University.

                                                    +

                                                    +J. Berner (2017). + +\"Automatic Controller Tuning using Relay-based Model Identification.\" +Department of Automatic Control, Lund University. +

                                                    ")); end TuningMonitor; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo index 6ca070618df..8b03d8e4a5c 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo @@ -160,8 +160,8 @@ Documentation(info="

                                                    This block generates a relay output yDif which equals to u_m - u_s. It also generates the control output y, -and a boolean relay switch output yOn, -which are calculated as below. +and a boolean relay switch output yOn. +y and yOn are calculated as below.

                                                    Step 1: Calculate control error, @@ -169,8 +169,8 @@ Step 1: Calculate control error,

                                                    • If the parameter reverseActing = true, set the control error to -err = u_s - u_m, -else set it to err = u_m - u_s. +u_s - u_m, +else set it to u_m - u_s.

                                                    @@ -197,9 +197,12 @@ are the higher value and the lower value of the output y, respectiv

                                                    References

                                                    -

                                                    Josefin Berner (2017) -\"Automatic Controller Tuning using Relay-based Model Identification.\" -Department of Automatic Control, Lund Institute of Technology, Lund University.

                                                    +

                                                    +J. Berner (2017). + +\"Automatic Controller Tuning using Relay-based Model Identification.\" +Department of Automatic Control, Lund University. +

                                                    ", revisions="
                                                    • diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/BaseClasses/TimeConstantDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/BaseClasses/TimeConstantDelay.mo index ee98bdc85b9..6c757277c34 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/BaseClasses/TimeConstantDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/BaseClasses/TimeConstantDelay.mo @@ -219,9 +219,10 @@ L = T τ/(1 - τ),

                                                      References

                                                      -Josefin Berner (2015). -\"Automatic Tuning of PID Controllers based on Asymmetric Relay Feedback.\" -Department of Automatic Control, Lund Institute of Technology, Lund University. +J. Berner (2017). + +\"Automatic Controller Tuning using Relay-based Model Identification.\" +Department of Automatic Control, Lund University.

                                                      ")); end TimeConstantDelay; diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/package.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/package.mo index 99ddaf2fadd..0fc7057ce88 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/package.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/package.mo @@ -2,7 +2,7 @@ within Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification; package FirstOrderTimeDelay "Package with components related to a first-order plus time-delay model" annotation (Documentation(info=" -

                                                      This package contains the blocks to identify the parameters of a first-order time delayed model.

                                                      +

                                                      This package contains the blocks to identify the parameters of a first-order plus time-delay model.

                                                      "), Icon( graphics={ From f6c4875025f0159d4b436aebae2838c629e595d5 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Thu, 7 Nov 2024 09:30:56 -0500 Subject: [PATCH 209/214] model doc enhance --- .../PIDWithAutotuning/FirstOrderAMIGO.mo | 31 ++++++++--------- .../Relay/BaseClasses/NormalizedTimeDelay.mo | 4 +-- .../PIDWithAutotuning/Relay/Controller.mo | 33 +++++++++++-------- .../FirstOrderTimeDelay/BaseClasses/Gain.mo | 14 ++++---- 4 files changed, 44 insertions(+), 38 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index ae462d12dd7..5071bf4fb10 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -6,7 +6,7 @@ block FirstOrderAMIGO Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PI "Type of controller"; parameter Real k_start( - min=100*Buildings.Controls.OBC.CDL.Constants.eps)=1 + final min=100*Buildings.Controls.OBC.CDL.Constants.eps)=1 "Start value of the gain of controller" annotation (Dialog(group="Initial control gains, used prior to first tuning")); parameter Real Ti_start(unit="s")=0.5 @@ -20,7 +20,7 @@ block FirstOrderAMIGO "Start value of the set point" annotation (Dialog(tab="Advanced",group="Initialization")); parameter Real r( - min=100*Buildings.Controls.OBC.CDL.Constants.eps)=1 + final min=100*Buildings.Controls.OBC.CDL.Constants.eps)=1 "Typical range of control error, used for scaling the control error"; parameter Real yHig( final min = 0, @@ -44,11 +44,11 @@ block FirstOrderAMIGO "Lower limit of output" annotation (Dialog(group="Limits")); parameter Real Ni( - min=100*Buildings.Controls.OBC.CDL.Constants.eps)=0.9 + final min=100*Buildings.Controls.OBC.CDL.Constants.eps)=0.9 "Ni*Ti is time constant of anti-windup compensation" annotation (Dialog(tab="Advanced",group="Integrator anti-windup")); parameter Real Nd( - min=100*Buildings.Controls.OBC.CDL.Constants.eps)=10 + final min=100*Buildings.Controls.OBC.CDL.Constants.eps)=10 "The higher the Nd, the more ideal the derivative block" annotation (Dialog(tab="Advanced",group="Derivative block", enable=controllerType ==Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PID)); @@ -203,9 +203,8 @@ protected "Check if an autotuning is ongoing while a new autotuning request is received" annotation (Placement(transformation(extent={{200,-150},{220,-130}}))); Buildings.Controls.OBC.CDL.Utilities.Assert assMes1( - final message="In " + - getInstanceName() + - ": an autotuning is ongoing and the new tuning request is ignored.") + final message="In " + getInstanceName() + + ": a new tuning request is ignored as the autotuning is ongoing.") "Warning message when an autotuning tuning is ongoing while a new autotuning request is received" annotation (Placement(transformation(extent={{242,-150},{262,-130}}))); Buildings.Controls.OBC.CDL.Logical.Edge edgReq @@ -240,7 +239,9 @@ protected Buildings.Controls.OBC.CDL.Utilities.Assert assMes3( final message= "In " + getInstanceName() - + ": the setpoint must not change when an autotuning tuning is ongoing. This ongoing autotuning will thus abort.") + + ": the setpoint must not change when an autotuning tuning is ongoing. + This ongoing autotuning will be aborted and the control gains will not + be changed.") "Warning message when the setpoint changes during tuning process" annotation (Placement(transformation(extent={{160,100},{180,120}}))); @@ -384,17 +385,13 @@ annotation (defaultComponentName = "PIDWitTun", Documentation(info="

                                                      This block implements a rule-based PID tuning method. -

                                                      -

                                                      -The PID tuning method approximates the control process with a +This method approximates the control process with a first-order plus time-delay (FOPTD) model. It then determines the parameters of this FOPTD model based on the responses of the control process to asymmetric relay feedback. -After that, taking the parameters of this FOPTD mode as inputs, this PID tuning -method calculates the PID gains with the Approximate M-constrained Integral Gain +After that, taking the parameters of this FOPTD mode as inputs, this method +calculates the PID gains with the Approximate M-constrained Integral Gain Optimization (AMIGO) method. -

                                                      -

                                                      This block is implemented using Buildings.Controls.OBC.Utilities.PIDWithInputGains @@ -403,7 +400,7 @@ and inherits most of its configuration. However, through the parameter PID controller.

                                                      -

                                                      Autotuning Process

                                                      +

                                                      Autotuning process

                                                      To use this block, insert it into a feedback control loop. Before the PID tuning process starts, this block is equivalent to @@ -441,7 +438,7 @@ typical range of control error, r, the reference output for the tuning process, yRef, the higher and the lower values for the relay output, yHig and yLow, and the deadband, deaBan. -Here are some suggestions for determining the values of those parameters +Here are some suggestions for determining the values of those parameters.

                                                      1. diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/NormalizedTimeDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/NormalizedTimeDelay.mo index 01920f83255..0e651f49893 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/NormalizedTimeDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/NormalizedTimeDelay.mo @@ -40,7 +40,8 @@ protected Buildings.Controls.OBC.CDL.Utilities.Assert assMes( final message="In " + getInstanceName() + - ": the asymmetry level of the relay controller is lower than the half period ratio. Increase the level.") + ": the asymmetry level of the relay controller is lower than the half period ratio. + Increase the asymmetry level.") "Warning message when asymmetry level is less than the half period ratio" annotation (Placement(transformation(extent={{60,50},{80,70}}))); Buildings.Controls.OBC.CDL.Reals.Greater gre( @@ -98,7 +99,6 @@ First implementation

                                                        This block calculates the normalized time delay of the output from a relay controller.

                                                        -

                                                        Main equations

                                                        τ = (γ - ρ)/(γ - 1)/(ρ*0.35+0.65),

                                                        diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo index 8b03d8e4a5c..6c9ddc31af4 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo @@ -70,10 +70,10 @@ protected annotation (Placement(transformation(extent={{-20,-80},{0,-60}}))); Buildings.Controls.OBC.CDL.Reals.Subtract meaSetDif "Inputs difference, (measurement - setpoint)" - annotation (Placement(transformation(extent={{-20,-4},{0,16}}))); + annotation (Placement(transformation(extent={{-20,-10},{0,10}}))); Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter gaiYDif(final k=1/r) "Gain to normalized control error by r" - annotation (Placement(transformation(extent={{20,-4},{40,16}}))); + annotation (Placement(transformation(extent={{20,-10},{40,10}}))); Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter gaiRevActErr(final k=1/r) if reverseActing "Gain to normalized control error by r" annotation (Placement(transformation(extent={{20,-40},{40,-20}}))); @@ -104,14 +104,16 @@ equation connect(hys.y, swi.u2) annotation (Line(points={{82,-60},{90,-60},{90,34},{50, 34},{50,50},{58,50}}, color={255,0,255})); connect(hys.y, yOn) annotation (Line(points={{82,-60},{120,-60}}, color={255,0,255})); - connect(swi1.y, meaSetDif.u1) annotation (Line(points={{-38,-40},{-30,-40},{-30, - 12},{-22,12}}, color={0,0,127})); - connect(u_s, meaSetDif.u2) annotation (Line(points={{-120,0},{-22,0}}, + connect(swi1.y, meaSetDif.u1) annotation (Line(points={{-38,-40},{-30,-40},{ + -30,6},{-22,6}}, + color={0,0,127})); + connect(u_s, meaSetDif.u2) annotation (Line(points={{-120,0},{-72,0},{-72,-6}, + {-22,-6}}, color={0,0,127})); connect(meaSetDif.y, gaiYDif.u) - annotation (Line(points={{2,6},{18,6}}, color={0,0,127})); + annotation (Line(points={{2,0},{18,0}}, color={0,0,127})); connect(gaiYDif.y, yDif) - annotation (Line(points={{42,6},{60,6},{60,0},{120,0}}, color={0,0,127})); + annotation (Line(points={{42,0},{120,0}}, color={0,0,127})); connect(revActErr.y, gaiRevActErr.u) annotation (Line(points={{2,-30},{18,-30}}, color={0,0,127})); connect(gaiRevActErr.y, hys.u) annotation (Line(points={{42,-30},{48,-30},{48, @@ -153,13 +155,18 @@ annotation (defaultComponentName = "relCon", fillPattern=FillPattern.Solid, fillColor={175,175,175}, textString="Relay"), - Line(points={{-70,24},{-34,24},{-34,58},{38,58},{38,24},{66,24}}, color= - {28,108,200})}), Diagram( + Line(points={{-70,24},{-34,24},{-34,58},{38,58},{38,24},{66,24}}, color + ={28,108,200})}), Diagram( coordinateSystem(preserveAspectRatio=false)), Documentation(info="

                                                        This block generates a relay output yDif which equals to -u_m - u_s. It also generates the control output y, +(u_m - u_s)/r,where u_m and u_s +are the measurement and the setpoint, respectively. +r is the typical range of control error. +

                                                        +

                                                        +This block also generates the control output y, and a boolean relay switch output yOn. y and yOn are calculated as below.

                                                        @@ -168,9 +175,9 @@ Step 1: Calculate control error,

                                                        • -If the parameter reverseActing = true, set the control error to -u_s - u_m, -else set it to u_m - u_s. +If the parameter reverseActing = true, set the control error err to +(u_s - u_m)/r, +else set it to (u_m - u_s)/r.

                                                        diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/BaseClasses/Gain.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/BaseClasses/Gain.mo index a2d7b2c18c0..f72686ed9da 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/BaseClasses/Gain.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/BaseClasses/Gain.mo @@ -95,12 +95,11 @@ First implementation

                                                    ", info=" -

                                                    This block calculates the gain of a first-order plus time-delay model.

                                                    -

                                                    Main equations

                                                    +

                                                    This block calculates the gain of a first-order plus time-delay model. +

                                                    k = Iy/Iu,

                                                    -

                                                    Iy is calculated by

                                                    Iy = ∫ u(t) dt;

                                                    @@ -119,8 +118,11 @@ an asymmetric relay output. period and the off period of the same asymmetric relay output, respectively.

                                                    References

                                                    -

                                                    Josefin Berner (2017). -\"Automatic Controller Tuning using Relay-based Model Identification\". -Department of Automatic Control, Lund Institute of Technology, Lund University.

                                                    +

                                                    +J. Berner (2017). + +\"Automatic Controller Tuning using Relay-based Model Identification.\" +Department of Automatic Control, Lund University. +

                                                    ")); end Gain; From b29fabc3393f0be4741b0a04275f0370f8ba7d31 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Wed, 13 Nov 2024 07:33:48 -0500 Subject: [PATCH 210/214] model doc update --- .../OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index 5071bf4fb10..096c2e5211a 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -387,8 +387,8 @@ Documentation(info=" This block implements a rule-based PID tuning method. This method approximates the control process with a first-order plus time-delay (FOPTD) model. -It then determines the parameters of this FOPTD model based on the responses of -the control process to asymmetric relay feedback. +It then determines the parameters of this FOPTD model based on the control process's responses +to asymmetric relay feedback. After that, taking the parameters of this FOPTD mode as inputs, this method calculates the PID gains with the Approximate M-constrained Integral Gain Optimization (AMIGO) method. From abf5949daa83188ca0e357300a02c9577373c6a9 Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Wed, 13 Nov 2024 08:44:33 -0500 Subject: [PATCH 211/214] model doc update --- .../PIDWithAutotuning/AutoTuner/AMIGO/PI.mo | 6 +++--- .../PIDWithAutotuning/AutoTuner/AMIGO/PID.mo | 8 ++++---- .../AutoTuner/AMIGO/Validation/PID.mo | 2 +- .../Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo | 12 ++++-------- .../Utilities/PIDWithAutotuning/Relay/Controller.mo | 7 ++++--- .../FirstOrderTimeDelay/ControlProcessModel.mo | 4 ++-- .../Examples/WetCoilCounterFlowPControlAutoTuning.mo | 8 ++++---- 7 files changed, 22 insertions(+), 25 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PI.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PI.mo index c6d1fb28d90..a810563cea7 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PI.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PI.mo @@ -8,14 +8,14 @@ block PI "Identify control gain and integral time of a PI controller" Buildings.Controls.OBC.CDL.Interfaces.RealInput T( final quantity="Time", final unit="s", - min=100*Buildings.Controls.OBC.CDL.Constants.eps) + final min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Time constant of the FOPTD model" annotation (Placement(transformation(extent={{-140,-20},{-100,20}}), iconTransformation(extent={{-140,-20},{-100,20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput L( final quantity="Time", final unit="s", - min=100*Buildings.Controls.OBC.CDL.Constants.eps) + final min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Time delay of the FOPTD model" annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); @@ -26,7 +26,7 @@ block PI "Identify control gain and integral time of a PI controller" Buildings.Controls.OBC.CDL.Interfaces.RealOutput Ti( final quantity="Time", final unit="s", - min=100*Buildings.Controls.OBC.CDL.Constants.eps) + final min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Time constant signal for the integral term" annotation (Placement(transformation(extent={{100,-50},{140,-10}}), iconTransformation(extent={{100,-80},{140,-40}}))); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo index e5fac0ab273..347b1eaf5a5 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/PID.mo @@ -8,14 +8,14 @@ block PID "Identify control gain, integral time, and derivative time of the PID Buildings.Controls.OBC.CDL.Interfaces.RealInput T( final quantity="Time", final unit="s", - min=100*Buildings.Controls.OBC.CDL.Constants.eps) + final min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Time constant of the FOPTD model" annotation (Placement(transformation(extent={{-140,-20},{-100,20}}), iconTransformation(extent={{-140,-20},{-100,20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput L( final quantity="Time", final unit="s", - min=100*Buildings.Controls.OBC.CDL.Constants.eps) + final min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Time delay of the FOPTD model" annotation (Placement(transformation(extent={{-140,-80},{-100,-40}}), iconTransformation(extent={{-140,-80},{-100,-40}}))); @@ -26,13 +26,13 @@ block PID "Identify control gain, integral time, and derivative time of the PID Buildings.Controls.OBC.CDL.Interfaces.RealOutput Ti( final quantity="Time", final unit="s", - min=100*Buildings.Controls.OBC.CDL.Constants.eps) + final min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Time constant signal for the integral term" annotation (Placement(transformation(extent={{100,-20},{140,20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealOutput Td( final quantity="Time", final unit="s", - min=100*Buildings.Controls.OBC.CDL.Constants.eps) + final min=100*Buildings.Controls.OBC.CDL.Constants.eps) "Time constant signal for the derivative term" annotation (Placement(transformation(extent={{100,-80},{140,-40}}), iconTransformation(extent={{100,-90},{140,-50}}))); diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo index c8ae7703904..d49451464cc 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/AutoTuner/AMIGO/Validation/PID.mo @@ -70,7 +70,7 @@ and input L varies from 0.3 to 0.6.

                                                    The control gain, -time constant of the integral term and time constant of the derivative term are calculated +the time constant of the integral term, and the time constant of the derivative term are calculated based on the equations shown in Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.AutoTuner.BaseClasses.AMIGO.PIDGain, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index 096c2e5211a..ace401085c2 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -416,7 +416,7 @@ The PID tuning process ends automatically (see details in Buildings.Controls.OBC.Utilities.PIDWithAutotuning.BaseClasses.Relay.TunMonitor), -at which point this block turns back to a PID controller but with tuned PID parameters. +at which point this block reverts to a PID controller, but with tuned PID parameters.

                                                    Note:

                                                      @@ -427,8 +427,8 @@ will be generated.
                                                    • If the set point is changed during an autotuning process, a warning -will be generated. This tuning process will be stopped and no changes will be -made to the PID parameters. +will be generated. This tuning process will be halted, and no adjustments will be made +to the PID parameters.

                                                    Guidance for setting the parameters

                                                    @@ -438,7 +438,7 @@ typical range of control error, r, the reference output for the tuning process, yRef, the higher and the lower values for the relay output, yHig and yLow, and the deadband, deaBan. -Here are some suggestions for determining the values of those parameters. +Below are some recommendations for selecting appropriate values for those parameters.

                                                    1. @@ -476,10 +476,6 @@ Department of Automatic Control, Lund University. ", revisions="
                                                      • -April 3, 2024, by Sen Huang:
                                                        -Made yMax and yMin changeable. -
                                                      • -
                                                      • March 8, 2024, by Michael Wetter:
                                                        Propagated range of control error r to relay controller.
                                                      • diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo index 6c9ddc31af4..46d91f836fa 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/Controller.mo @@ -161,14 +161,15 @@ annotation (defaultComponentName = "relCon", Documentation(info="

                                                        This block generates a relay output yDif which equals to -(u_m - u_s)/r,where u_m and u_s +(u_m - u_s)/r. +u_m and u_s are the measurement and the setpoint, respectively. r is the typical range of control error.

                                                        This block also generates the control output y, -and a boolean relay switch output yOn. -y and yOn are calculated as below. +and a boolean relay switch output yOn using the following +procedure.

                                                        Step 1: Calculate control error, diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/ControlProcessModel.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/ControlProcessModel.mo index 1d4d2e7a8e7..01598742e68 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/ControlProcessModel.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/ControlProcessModel.mo @@ -243,12 +243,12 @@ Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrd and Buildings.Controls.OBC.Utilities.PIDWithAutotuning.SystemIdentification.FirstOrderTimeDelay.BaseClasses.TimeConstantDelay -to identify the gain, the time constant and the time delay, respectively. +to identify the gain, the time constant, and the time delay, respectively.

                                                        The calculations are disabled by default. They will be enabled once the tuning period starts, i.e., triSta becomes true. -It then calculates the model parameters at the time when the tuning period ends, +The calculations complete when the tuning period ends, i.e., triEnd becomes true.

                                                        diff --git a/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo b/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo index 5dacb4b39c4..94f6e125bf3 100644 --- a/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo +++ b/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo @@ -189,18 +189,18 @@ Documentation(info=" This example is identical to Buildings.Fluid.HeatExchangers.Examples.WetCoilCounterFlowPControl except that the PI controller -is replaced by an autotuning PI controller. +is replaced with an autotuning PI controller.

                                                        The autotuning is triggered twice.
                                                        • -The first one occurs at 100 seconds and it completes successfully. -The tuned PI parameters are put into effect at 215 seconds. +The first one occurs at 100 seconds and it completes successfully, +with the tuned PI parameters taking effect at 215 seconds.
                                                        • The second one occurs at 2100 seconds and it fails because the setpoint changes at 2400 seconds. -The PI parameters are kept unchanged. +As a result, the PI parameters remain unchanged.
                                                        ", From 42c9e86eb4b9e1c80c9cf0785272fc53b20a452c Mon Sep 17 00:00:00 2001 From: JayHuLBL Date: Tue, 19 Nov 2024 22:33:45 -0800 Subject: [PATCH 212/214] avoided using getInstance() function --- .../PIDWithAutotuning/FirstOrderAMIGO.mo | 17 +++++------------ .../Relay/BaseClasses/NormalizedTimeDelay.mo | 5 +---- .../FirstOrderTimeDelay/ControlProcessModel.mo | 10 +++------- 3 files changed, 9 insertions(+), 23 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo index ace401085c2..c8f290c8551 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/FirstOrderAMIGO.mo @@ -34,9 +34,7 @@ block FirstOrderAMIGO final min=1E-6) "Deadband for holding the relay output"; parameter Real yRef - "Reference output for the tuning process. It must be greater than the - lower limit of the relay output and less than the upper limit of the - relay output"; + "Reference output for the tuning process. It must be greater than the lower limit of the relay output and less than the upper limit of the relay output"; parameter Real yMax = 1 "Upper limit of output" annotation (Dialog(group="Limits")); @@ -72,7 +70,7 @@ block FirstOrderAMIGO iconTransformation(extent={{-140,-20},{-100,20}}))); Buildings.Controls.OBC.CDL.Interfaces.RealInput u_m "Connector of measurement input signal" - annotation (Placement(transformation(origin={0,-300}, extent={{20,-20},{-20,20}},rotation=270), + annotation (Placement(transformation(origin={0,-300}, extent={{20,-20},{-20,20}},rotation=270), iconTransformation(extent={{20,-20},{-20,20}},rotation=270,origin={0,-120}))); Buildings.Controls.OBC.CDL.Interfaces.BooleanInput triRes "Connector for resetting the controller output" @@ -163,9 +161,7 @@ protected else Buildings.Controls.OBC.CDL.Types.SimpleController.PID "Type of controller"; Buildings.Controls.OBC.CDL.Utilities.Assert assMes2( - final message="In " + - getInstanceName() + - ": the relay output needs to be asymmetric. Check the value of yHig, yLow and yRef.") + final message="Warning: the relay output needs to be asymmetric. Check the value of yHig, yLow and yRef.") "Warning message when the relay output is symmetric" annotation (Placement(transformation(extent={{160,210},{180,230}}))); Buildings.Controls.OBC.CDL.Reals.Sources.Constant con1(final k=yHig) @@ -203,8 +199,7 @@ protected "Check if an autotuning is ongoing while a new autotuning request is received" annotation (Placement(transformation(extent={{200,-150},{220,-130}}))); Buildings.Controls.OBC.CDL.Utilities.Assert assMes1( - final message="In " + getInstanceName() + - ": a new tuning request is ignored as the autotuning is ongoing.") + final message="Warning: a new tuning request is ignored as the autotuning is ongoing.") "Warning message when an autotuning tuning is ongoing while a new autotuning request is received" annotation (Placement(transformation(extent={{242,-150},{262,-130}}))); Buildings.Controls.OBC.CDL.Logical.Edge edgReq @@ -237,9 +232,7 @@ protected "Check if the setpoint changes" annotation (Placement(transformation(extent={{0,100},{20,120}}))); Buildings.Controls.OBC.CDL.Utilities.Assert assMes3( - final message= - "In " + getInstanceName() - + ": the setpoint must not change when an autotuning tuning is ongoing. + final message="Warning: the setpoint must not change when an autotuning tuning is ongoing. This ongoing autotuning will be aborted and the control gains will not be changed.") "Warning message when the setpoint changes during tuning process" diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/NormalizedTimeDelay.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/NormalizedTimeDelay.mo index 0e651f49893..d2efafc1602 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/NormalizedTimeDelay.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/Relay/BaseClasses/NormalizedTimeDelay.mo @@ -38,10 +38,7 @@ protected "Block that calculates the product of the two inputs" annotation (Placement(transformation(extent={{20,-48},{40,-28}}))); Buildings.Controls.OBC.CDL.Utilities.Assert assMes( - final message="In " + - getInstanceName() + - ": the asymmetry level of the relay controller is lower than the half period ratio. - Increase the asymmetry level.") + final message="Warning: the asymmetry level of the relay controller is lower than the half period ratio. Increase the asymmetry level.") "Warning message when asymmetry level is less than the half period ratio" annotation (Placement(transformation(extent={{60,50},{80,70}}))); Buildings.Controls.OBC.CDL.Reals.Greater gre( diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/ControlProcessModel.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/ControlProcessModel.mo index 01598742e68..d0387834813 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/ControlProcessModel.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/ControlProcessModel.mo @@ -120,9 +120,7 @@ protected "Check if the autotuning completes successfully" annotation (Placement(transformation(extent={{80,-80},{100,-60}}))); Buildings.Controls.OBC.CDL.Utilities.Assert assMes4( - final message="In " + - getInstanceName() + - ": an autotuning fails, the controller gains are unchanged.") + final message="Warning: an autotuning fails, the controller gains are unchanged.") "Warning message when an autotuning fails" annotation (Placement(transformation(extent={{134,50},{154,70}}))); Buildings.Controls.OBC.CDL.Logical.Not not2 "Check if an error occurs" @@ -139,8 +137,7 @@ equation connect(timConDel.T, samT.u) annotation (Line(points={{82,28},{100,28},{100,20},{118,20}}, color={0,0,127})); connect(samT.y, T) - annotation (Line(points={{142,20},{148,20},{148,40},{180,40}}, - color={0,0,127})); + annotation (Line(points={{142,20},{148,20},{148,40},{180,40}}, color={0,0,127})); connect(samT.trigger, triEnd) annotation (Line(points={{130,8},{130,-120}}, color={255,0,255})); connect(L, samL.y) @@ -150,8 +147,7 @@ equation connect(samL.trigger, triEnd) annotation (Line(points={{110,-52},{110,-70},{130, -70},{130,-120}}, color={255,0,255})); connect(samk.y, timConDel.k) - annotation (Line(points={{-38,20},{58,20}}, - color={0,0,127})); + annotation (Line(points={{-38,20},{58,20}}, color={0,0,127})); connect(samk.trigger, triEnd) annotation (Line(points={{-50,8},{-50,-90},{130, -90},{130,-120}},color={255,0,255})); connect(samk.y, k) annotation (Line(points={{-38,20},{52,20},{52,80},{180,80}}, From 2265980931bb5d7b57f714cfa7db47b89a59494f Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Wed, 20 Nov 2024 23:50:04 -0500 Subject: [PATCH 213/214] remove unnecessary component --- .../FirstOrderTimeDelay/ControlProcessModel.mo | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/ControlProcessModel.mo b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/ControlProcessModel.mo index d0387834813..1695aaa4f63 100644 --- a/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/ControlProcessModel.mo +++ b/Buildings/Controls/OBC/Utilities/PIDWithAutotuning/SystemIdentification/FirstOrderTimeDelay/ControlProcessModel.mo @@ -110,9 +110,6 @@ protected final k=-1) "Product of the normalized time delay and -1" annotation (Placement(transformation(extent={{-80,-70},{-60,-50}}))); - Buildings.Controls.OBC.CDL.Reals.Abs abs1 - "Absolute gain value" - annotation (Placement(transformation(extent={{-90,10},{-70,30}}))); Buildings.Controls.OBC.CDL.Logical.Not not1 "Check if an error occurs during the autotuning process" annotation (Placement(transformation(extent={{40,-60},{60,-40}}))); @@ -173,10 +170,6 @@ equation 18,-26}}, color={0,0,127})); connect(div.y, timConDel.rat) annotation (Line(points={{42,-20},{50,-20},{50,14}, {58,14}}, color={0,0,127})); - connect(gain.k, abs1.u) - annotation (Line(points={{-98,20},{-92,20}}, color={0,0,127})); - connect(abs1.y, samk.u) - annotation (Line(points={{-68,20},{-62,20}}, color={0,0,127})); connect(and2.u1, not1.y) annotation (Line(points={{78,-70},{68,-70},{68,-50},{ 62,-50}}, color={255,0,255})); connect(and2.y, tunSta) annotation (Line(points={{102,-70},{106,-70},{106,-80}, @@ -189,6 +182,8 @@ equation annotation (Line(points={{122,60},{132,60}}, color={255,0,255})); connect(not2.u, timConDel.triFai) annotation (Line(points={{98,60},{96,60},{96, 12},{82,12}}, color={255,0,255})); + connect(gain.k, samk.u) + annotation (Line(points={{-98,20},{-62,20}}, color={0,0,127})); annotation ( defaultComponentName = "conProMod", Icon(coordinateSystem(preserveAspectRatio=false, extent={{-100,-100},{100, From 35aadd2fd0ef99666582caafe42225f0f5668fde Mon Sep 17 00:00:00 2001 From: Huang <7q0@ornl.gov> Date: Wed, 20 Nov 2024 23:50:31 -0500 Subject: [PATCH 214/214] update example --- .../WetCoilCounterFlowPControlAutoTuning.mo | 7 ++++--- ...ples_WetCoilCounterFlowPControlAutoTuning.txt | 16 ++++++++-------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo b/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo index 94f6e125bf3..e957381ae0b 100644 --- a/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo +++ b/Buildings/Fluid/HeatExchangers/Examples/WetCoilCounterFlowPControlAutoTuning.mo @@ -61,7 +61,8 @@ model WetCoilCounterFlowPControlAutoTuning Buildings.Fluid.Actuators.Valves.TwoWayEqualPercentage val( redeclare package Medium = Medium1, m_flow_nominal=m1_flow_nominal, - dpValve_nominal=6000) + dpValve_nominal=6000, + strokeTime=240) "Valve model" annotation (Placement(transformation(extent={{30,50},{50,70}}))); Modelica.Blocks.Sources.TimeTable TSet( @@ -96,9 +97,9 @@ model WetCoilCounterFlowPControlAutoTuning Buildings.Controls.OBC.Utilities.PIDWithAutotuning.FirstOrderAMIGO con(controllerType=Buildings.Controls.OBC.Utilities.PIDWithAutotuning.Types.SimpleController.PI, u_s_start=288.15, - r=10, + r=5, yLow=0.2, - deaBan=0.2, + deaBan=0.1, yRef=0.5, reverseActing=false) "Controller" diff --git a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_HeatExchangers_Examples_WetCoilCounterFlowPControlAutoTuning.txt b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_HeatExchangers_Examples_WetCoilCounterFlowPControlAutoTuning.txt index 60ccfda3b4c..c1aa034f608 100644 --- a/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_HeatExchangers_Examples_WetCoilCounterFlowPControlAutoTuning.txt +++ b/Buildings/Resources/ReferenceResults/Dymola/Buildings_Fluid_HeatExchangers_Examples_WetCoilCounterFlowPControlAutoTuning.txt @@ -1,4 +1,4 @@ -last-generated=2024-08-28 +last-generated=2024-11-20 statistics-initialization= { "nonlinear": "1", @@ -8,15 +8,15 @@ statistics-simulation= { "linear": "0", "nonlinear": "0, 1", - "number of continuous time states": "22", + "number of continuous time states": "21", "numerical Jacobians": "0" } time=[0e+00, 3.6e+03] -hex.m1_flow=[1.000000014901161e-01, 9.799432009458542e-03, 3.891919180750847e-02, 1.243046205490828e-02, 4.082696512341499e-02, 1.002532709389925e-02, 4.832734540104866e-02, 8.020637556910506e-03, 5.314625799655914e-03, 8.958352729678154e-03, 1.455431710928679e-02, 1.92690659314394e-02, 2.135027758777142e-02, 2.181769907474518e-02, 2.197558619081974e-02, 2.217577584087849e-02, 2.238770946860313e-02, 1.900346763432026e-02, 8.295981213450432e-03, 5.836155265569687e-03, 4.895756486803293e-03, 4.280341323465109e-03, 3.848697990179062e-03, 3.540519159287214e-03, 3.315780078992248e-03, 3.146667731925845e-03, 3.019342431798577e-03, 2.400425029918548e-03, 1.63733633235097e-03, 2.243706025183201e-03, 2.796564716845751e-03, 2.920576138421893e-03, 2.911866642534733e-03, 2.852289704605937e-03, 2.987469313666224e-03, 3.261293284595013e-03, 3.841446712613106e-03, 4.81226434931159e-03, 6.299380213022232e-03, 8.400506339967251e-03, 1.102946326136589e-02, 1.399910729378462e-02, 1.708975434303284e-02, 2.015165239572525e-02, 2.325739525258541e-02, 2.656046114861965e-02, 3.021510131657124e-02, 3.438419103622437e-02, 3.926325589418411e-02, 4.510769248008728e-02, 5.227017402648926e-02, 5.964123830199242e-02, 6.503219157457352e-02, 6.954351812601089e-02, 7.368373125791552e-02, 7.758348435163501e-02, 8.131985366344455e-02, 8.495456725358963e-02, 8.853244036436081e-02, 9.502384811639786e-02, 9.911741316318512e-02, 9.987517446279526e-02, 9.998403489589691e-02, 9.999805688858032e-02, 9.999977797269821e-02, 9.999997168779373e-02, 9.999999403953552e-02, 9.638431668281555e-02, 7.521868497133255e-02, 5.959918722510338e-02, 4.966063424944878e-02, 4.356332123279572e-02, 3.999096527695656e-02, 3.795749694108963e-02, 3.680560737848282e-02, 3.614643216133118e-02, 3.576439619064331e-02, 3.554118424654007e-02, 3.541027009487152e-02, 3.533336520195007e-02, 3.528804704546928e-02, 3.526141494512558e-02, 3.524576872587204e-02, 3.523655980825424e-02, 3.523116186261177e-02, 3.522800281643867e-02, 3.522611781954765e-02, 3.522498905658722e-02, 3.522432222962379e-02, 3.522393479943275e-02, 3.522370383143425e-02, 3.522356227040291e-02, 3.522347658872604e-02, 3.522341698408127e-02, 3.522337973117828e-02, 3.52233499288559e-02, 3.522332385182381e-02, 3.522331267595291e-02, 3.522329404950142e-02, 3.522328287363052e-02, 3.522328659892082e-02] +hex.m1_flow=[1.000000014901161e-01, 7.246153056621552e-02, 4.4536042958498e-02, 2.565543353557587e-02, 1.491853129118681e-02, 2.653291635215282e-02, 1.768797822296619e-02, 2.731070853769778e-02, 1.536671165376902e-02, 2.665694244205952e-02, 1.916754432022572e-02, 2.093368023633957e-02, 2.575205080211163e-02, 1.586452312767506e-02, 2.817193791270258e-02, 1.987750828266144e-02, 2.122484147548676e-02, 2.56867203861475e-02, 1.443232037127018e-02, 8.055555634200573e-03, 4.486471880227327e-03, 2.668247987003269e-07, 2.666666034656373e-07, 2.507987432181835e-03, 2.618270926177502e-03, 2.651361748576164e-03, 2.672238042578101e-03, 2.688727341592312e-03, 2.703206380829215e-03, 2.716907532885671e-03, 2.730414504185319e-03, 2.743953373283148e-03, 2.757643349468708e-03, 2.771444153040648e-03, 4.356359597295523e-03, 7.822418585419655e-03, 1.057828310877085e-02, 1.058894023299217e-02, 1.270753052085638e-02, 1.477780193090439e-02, 1.702230982482433e-02, 1.944991573691368e-02, 2.212542109191418e-02, 2.512908354401588e-02, 2.857675962150097e-02, 3.264855220913887e-02, 3.764030709862709e-02, 4.407657310366631e-02, 5.299864336848259e-02, 6.680295616388321e-02, 9.164761751890182e-02, 9.407099336385727e-02, 9.850957989692688e-02, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 1.000000014901161e-01, 8.982515335083008e-02, 5.881456285715103e-02, 3.48551869392395e-02, 2.397305890917778e-02, 4.180550947785378e-02, 3.41108925640583e-02, 3.127477690577507e-02, 4.367832466959953e-02, 2.530534751713276e-02, 4.397008568048477e-02, 3.049098700284958e-02, 3.734424710273743e-02, 3.532480821013451e-02, 3.314218297600746e-02, 3.838149830698967e-02, 3.193468227982521e-02, 3.740115091204643e-02, 3.566300868988037e-02, 2.991466037929058e-02, 3.522225841879845e-02, 3.522220999002457e-02, 3.522330150008202e-02, 3.522332385182381e-02, 3.522332012653351e-02, 3.522332012653351e-02, 3.522332012653351e-02, 3.522332385182381e-02, 3.522332385182381e-02, 3.522332385182381e-02, 3.522332385182381e-02, 3.522332385182381e-02, 3.522332385182381e-02, 3.522332385182381e-02, 3.522332385182381e-02] hex.m2_flow=[3.429285809397697e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02, 2.800000086426735e-02] con.u_s=[2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.981499938964844e+02, 2.975499877929688e+02, 2.966499938964844e+02, 2.9575e+02, 2.948500061035156e+02, 2.939500122070312e+02, 2.930499877929688e+02, 2.921499938964844e+02, 2.9125e+02, 2.903500061035156e+02, 2.894500122070312e+02, 2.885499877929688e+02, 2.876499938964844e+02, 2.8675e+02, 2.858500061035156e+02, 2.849500122070312e+02, 2.840499877929688e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.831499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02] -con.u_m=[2.931499938964844e+02, 2.881471862792969e+02, 2.87445068359375e+02, 2.892804260253906e+02, 2.839074401855469e+02, 2.898592224121094e+02, 2.858396606445312e+02, 2.896683349609375e+02, 2.948144836425781e+02, 2.944845275878906e+02, 2.92626708984375e+02, 2.904584045410156e+02, 2.890348510742188e+02, 2.884890747070312e+02, 2.883429870605469e+02, 2.882951354980469e+02, 2.882662048339844e+02, 2.885406799316406e+02, 2.929256896972656e+02, 2.952376403808594e+02, 2.961017761230469e+02, 2.9662255859375e+02, 2.969822692871094e+02, 2.972456970214844e+02, 2.974364929199219e+02, 2.975864562988281e+02, 2.977091674804688e+02, 2.978599853515625e+02, 2.981323852539062e+02, 2.982776184082031e+02, 2.982389831542969e+02, 2.981738891601562e+02, 2.981339721679688e+02, 2.9812060546875e+02, 2.981119995117188e+02, 2.980509033203125e+02, 2.979117431640625e+02, 2.976292724609375e+02, 2.971193542480469e+02, 2.962572326660156e+02, 2.950943908691406e+02, 2.938199157714844e+02, 2.925000610351562e+02, 2.912912902832031e+02, 2.902103576660156e+02, 2.892289428710938e+02, 2.883155822753906e+02, 2.874531555175781e+02, 2.866370239257812e+02, 2.858726806640625e+02, 2.851713256835938e+02, 2.846004638671875e+02, 2.842942199707031e+02, 2.841333923339844e+02, 2.840351867675781e+02, 2.839736938476562e+02, 2.839374389648438e+02, 2.839192199707031e+02, 2.839146118164062e+02, 2.838818054199219e+02, 2.838653564453125e+02, 2.839319763183594e+02, 2.840171203613281e+02, 2.841050720214844e+02, 2.841924133300781e+02, 2.842044677734375e+02, 2.842045288085938e+02, 2.842248229980469e+02, 2.846465759277344e+02, 2.853110656738281e+02, 2.8603466796875e+02, 2.866990966796875e+02, 2.87218994140625e+02, 2.875774841308594e+02, 2.878054809570312e+02, 2.879446411132812e+02, 2.880281372070312e+02, 2.880778503417969e+02, 2.881072692871094e+02, 2.88124755859375e+02, 2.881350708007812e+02, 2.881412658691406e+02, 2.881448669433594e+02, 2.8814697265625e+02, 2.88148193359375e+02, 2.8814892578125e+02, 2.881493530273438e+02, 2.881496276855469e+02, 2.881497802734375e+02, 2.881498718261719e+02, 2.8814990234375e+02, 2.881499328613281e+02, 2.881499633789062e+02, 2.881499633789062e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02] -hex.Q1_flow=[0e+00, 8.008524780273438e+02, 1.5745205078125e+03, 9.59880615234375e+02, 1.509537231445312e+03, 8.314715576171875e+02, 1.715317749023438e+03, 7.318002929687497e+02, 5.667024536132812e+02, 6.5814599609375e+02, 8.624013061523438e+02, 1.050931030273438e+03, 1.137240600585938e+03, 1.159442138671875e+03, 1.164138549804688e+03, 1.166548217773438e+03, 1.168383544921875e+03, 1.056568359375e+03, 6.666577758789062e+02, 5.099210510253906e+02, 4.334978332519531e+02, 3.830565185546875e+02, 3.467546997070312e+02, 3.193574523925781e+02, 2.992366943359375e+02, 2.836629333496094e+02, 2.708905334472656e+02, 2.496359405517577e+02, 2.180829620361328e+02, 2.079718780517578e+02, 2.162033843994141e+02, 2.242107391357422e+02, 2.285458831787109e+02, 2.294739990234375e+02, 2.320791473388672e+02, 2.405070037841797e+02, 2.604395141601562e+02, 2.992701721191406e+02, 3.663821716308594e+02, 4.7263818359375e+02, 6.016305541992188e+02, 7.317265625e+02, 8.542841186523438e+02, 9.589598388671875e+02, 1.047926025390625e+03, 1.126116943359375e+03, 1.196919311523438e+03, 1.261974243164062e+03, 1.321740966796875e+03, 1.375972412109375e+03, 1.424053344726562e+03, 1.453169189453125e+03, 1.463759521484375e+03, 1.47033984375e+03, 1.47471240234375e+03, 1.47731201171875e+03, 1.478698364257812e+03, 1.479172973632812e+03, 1.478926513671875e+03, 1.486780883789062e+03, 1.479451049804688e+03, 1.472607421875e+03, 1.46669287109375e+03, 1.460934692382812e+03, 1.455840209960938e+03, 1.45729541015625e+03, 1.457310302734375e+03, 1.44086572265625e+03, 1.390764526367188e+03, 1.344937744140625e+03, 1.299102661132812e+03, 1.259305419921875e+03, 1.229501953125e+03, 1.20948486328125e+03, 1.19687939453125e+03, 1.189181396484375e+03, 1.184544067382812e+03, 1.181770629882812e+03, 1.180117919921875e+03, 1.179159423828125e+03, 1.178584838867188e+03, 1.17824365234375e+03, 1.178042358398438e+03, 1.177924072265625e+03, 1.177854858398438e+03, 1.177814575195312e+03, 1.177790405273438e+03, 1.17777587890625e+03, 1.177767333984375e+03, 1.177762329101562e+03, 1.177759399414062e+03, 1.177757568359375e+03, 1.177756469726562e+03, 1.177755737304688e+03, 1.177755249023438e+03, 1.1777548828125e+03, 1.177754516601562e+03, 1.17775439453125e+03, 1.177754150390625e+03, 1.177754028320312e+03, 1.177754150390625e+03] -hex.Q2_flow=[0e+00, -9.823670654296875e+02, -1.400969604492188e+03, -1.016562805175781e+03, -1.494252563476562e+03, -9.302456665039062e+02, -1.525967895507812e+03, -8.844346313476557e+02, -5.766284790039062e+02, -6.430133666992188e+02, -8.349697265625e+02, -1.023242858886719e+03, -1.123073364257812e+03, -1.15489599609375e+03, -1.162775146484375e+03, -1.165800537109375e+03, -1.167833374023438e+03, -1.101104370117188e+03, -7.145556030273438e+02, -5.269667358398438e+02, -4.438186645507812e+02, -3.901510620117188e+02, -3.5189111328125e+02, -3.232251281738281e+02, -3.030906066894531e+02, -2.868833618164062e+02, -2.735691223144531e+02, -2.544220275878905e+02, -2.228554077148437e+02, -2.093755950927734e+02, -2.158961944580078e+02, -2.237143402099609e+02, -2.281635284423828e+02, -2.293612213134766e+02, -2.311274566650391e+02, -2.388428497314453e+02, -2.567422485351562e+02, -2.920486755371094e+02, -3.536205444335938e+02, -4.564024353027344e+02, -5.822686767578125e+02, -7.1299755859375e+02, -8.359698486328125e+02, -9.416398315429688e+02, -1.031558349609375e+03, -1.110177368164062e+03, -1.180996215820312e+03, -1.245819702148438e+03, -1.305273193359375e+03, -1.359256958007812e+03, -1.407293823242188e+03, -1.441200927734375e+03, -1.456876831054688e+03, -1.4655693359375e+03, -1.471063598632812e+03, -1.474442993164062e+03, -1.476375244140625e+03, -1.477261108398438e+03, -1.477337646484375e+03, -1.4821474609375e+03, -1.479382690429688e+03, -1.473913208007812e+03, -1.4682197265625e+03, -1.462490966796875e+03, -1.457044921875e+03, -1.457308471679688e+03, -1.457312866210938e+03, -1.449156616210938e+03, -1.41054638671875e+03, -1.364805419921875e+03, -1.31637255859375e+03, -1.272501342773438e+03, -1.238522583007812e+03, -1.215185913085938e+03, -1.200334228515625e+03, -1.1912412109375e+03, -1.185767578125e+03, -1.182498168945312e+03, -1.180558349609375e+03, -1.179417114257812e+03, -1.17873779296875e+03, -1.178330810546875e+03, -1.17809375e+03, -1.17795458984375e+03, -1.177873046875e+03, -1.177825317382812e+03, -1.177796875e+03, -1.17777978515625e+03, -1.177769653320312e+03, -1.177763793945312e+03, -1.177760375976562e+03, -1.177758178710938e+03, -1.1777568359375e+03, -1.177755981445312e+03, -1.17775537109375e+03, -1.177755004882812e+03, -1.177754516601562e+03, -1.17775439453125e+03, -1.177754150390625e+03, -1.17775390625e+03, -1.177754028320312e+03] -hex.QLat2_flow=[0e+00, -6.118740844726562e+02, -8.87526611328125e+02, -6.39020751953125e+02, -9.306354370117188e+02, -5.805825805664062e+02, -9.6084326171875e+02, -5.485398559570309e+02, -3.388067016601562e+02, -3.865060119628906e+02, -5.202728881835938e+02, -6.459698486328125e+02, -7.095833740234375e+02, -7.291434326171875e+02, -7.339407958984375e+02, -7.358106079101562e+02, -7.37081298828125e+02, -6.92923095703125e+02, -4.35383544921875e+02, -3.037465209960938e+02, -2.433535308837891e+02, -2.037796783447266e+02, -1.753681945800781e+02, -1.539824066162109e+02, -1.393966064453125e+02, -1.273708801269531e+02, -1.174711685180664e+02, -1.034645156860351e+02, -7.992140960693354e+01, -6.953993988037109e+01, -7.432206726074219e+01, -8.017134857177734e+01, -8.349410247802734e+01, -8.439630126953125e+01, -8.562378692626953e+01, -9.130491638183594e+01, -1.044278869628906e+02, -1.302513275146484e+02, -1.750060272216797e+02, -2.512543792724609e+02, -3.421239318847656e+02, -4.359411315917969e+02, -5.208651123046875e+02, -5.920211791992188e+02, -6.511651000976562e+02, -7.017588500976562e+02, -7.464093627929688e+02, -7.864749755859375e+02, -8.225046997070312e+02, -8.545948486328125e+02, -8.826276245117188e+02, -9.01836181640625e+02, -9.104949340820312e+02, -9.153184814453125e+02, -9.183887939453125e+02, -9.202698974609375e+02, -9.213551025390625e+02, -9.218597412109375e+02, -9.219119262695312e+02, -9.24779052734375e+02, -9.230391235351562e+02, -9.199277954101562e+02, -9.167344970703125e+02, -9.135220336914062e+02, -9.104631958007812e+02, -9.106494750976562e+02, -9.1065234375e+02, -9.056475830078125e+02, -8.829721069335938e+02, -8.56291748046875e+02, -8.277177734375e+02, -8.015123901367188e+02, -7.810126953125e+02, -7.66818603515625e+02, -7.577352294921875e+02, -7.521535034179688e+02, -7.487863159179688e+02, -7.467714233398438e+02, -7.455745239257812e+02, -7.44875732421875e+02, -7.444579467773438e+02, -7.442048950195312e+02, -7.440585327148438e+02, -7.439725952148438e+02, -7.439223022460938e+02, -7.43892822265625e+02, -7.43875244140625e+02, -7.438646850585938e+02, -7.438584594726562e+02, -7.438548583984375e+02, -7.438527221679688e+02, -7.438513793945312e+02, -7.438505859375e+02, -7.438500366210938e+02, -7.438496704101562e+02, -7.43849365234375e+02, -7.4384912109375e+02, -7.438490600585938e+02, -7.43848876953125e+02, -7.438487548828125e+02, -7.438488159179688e+02] -hex.QSen2_flow=[0e+00, -3.704929809570312e+02, -5.134429931640625e+02, -3.775420837402344e+02, -5.636171875e+02, -3.496630859375e+02, -5.651245727539062e+02, -3.358947753906248e+02, -2.3782177734375e+02, -2.565073547363281e+02, -3.146968688964844e+02, -3.772730102539062e+02, -4.134899597167969e+02, -4.257525939941406e+02, -4.288344116210938e+02, -4.299899597167969e+02, -4.307520751953125e+02, -4.081813659667969e+02, -2.791720275878906e+02, -2.232202301025391e+02, -2.004651336669922e+02, -1.863713989257812e+02, -1.765229187011719e+02, -1.692427215576172e+02, -1.636940155029297e+02, -1.595124969482422e+02, -1.560979309082031e+02, -1.5095751953125e+02, -1.429339904785156e+02, -1.398356628417969e+02, -1.415741271972656e+02, -1.435429840087891e+02, -1.446694183349609e+02, -1.449649200439453e+02, -1.455036773681641e+02, -1.475379333496094e+02, -1.523143615722656e+02, -1.6179736328125e+02, -1.786145172119141e+02, -2.051480560302734e+02, -2.401447448730469e+02, -2.770564270019531e+02, -3.151047668457031e+02, -3.496186828613281e+02, -3.803932189941406e+02, -4.084185485839844e+02, -4.345869445800781e+02, -4.593447265625e+02, -4.827685241699219e+02, -5.046621398925781e+02, -5.246661987304688e+02, -5.393646850585938e+02, -5.463818969726562e+02, -5.502509155273438e+02, -5.526747436523438e+02, -5.54173095703125e+02, -5.550200805664062e+02, -5.554014282226562e+02, -5.5542578125e+02, -5.573683471679688e+02, -5.563436279296875e+02, -5.539854125976562e+02, -5.514851684570312e+02, -5.48968994140625e+02, -5.465816650390625e+02, -5.466590576171875e+02, -5.466604614257812e+02, -5.435089721679688e+02, -5.275743408203125e+02, -5.085137023925781e+02, -4.8865478515625e+02, -4.709889221191406e+02, -4.575098571777344e+02, -4.483673706054688e+02, -4.425989990234375e+02, -4.390877380371094e+02, -4.36981201171875e+02, -4.35726806640625e+02, -4.349838256835938e+02, -4.345413513183594e+02, -4.342798156738281e+02, -4.341258850097656e+02, -4.340352478027344e+02, -4.339819641113281e+02, -4.339507751464844e+02, -4.339324951171875e+02, -4.339215698242188e+02, -4.339150390625e+02, -4.339111938476562e+02, -4.33908935546875e+02, -4.339076232910156e+02, -4.339067993164062e+02, -4.339062805175781e+02, -4.339059448242188e+02, -4.339057312011719e+02, -4.339055480957031e+02, -4.339053955078125e+02, -4.339053649902344e+02, -4.339052429199219e+02, -4.339051818847656e+02, -4.339052124023438e+02] +con.u_m=[2.931499938964844e+02, 2.799380798339844e+02, 2.813184204101562e+02, 2.844071044921875e+02, 2.887825927734375e+02, 2.87822998046875e+02, 2.889134216308594e+02, 2.868664245605469e+02, 2.890159912109375e+02, 2.879269104003906e+02, 2.877403259277344e+02, 2.892441101074219e+02, 2.866906433105469e+02, 2.895017700195312e+02, 2.878489685058594e+02, 2.877135009765625e+02, 2.893360595703125e+02, 2.869612121582031e+02, 2.898028564453125e+02, 2.933910827636719e+02, 2.957371215820312e+02, 2.970481567382812e+02, 2.978873596191406e+02, 2.981548156738281e+02, 2.98150634765625e+02, 2.981502380371094e+02, 2.981501770019531e+02, 2.98150146484375e+02, 2.98150146484375e+02, 2.981501159667969e+02, 2.98150146484375e+02, 2.98150146484375e+02, 2.98150146484375e+02, 2.98150146484375e+02, 2.979589538574219e+02, 2.969970703125e+02, 2.950667114257812e+02, 2.951487426757812e+02, 2.939726867675781e+02, 2.9309619140625e+02, 2.921935729980469e+02, 2.912915344238281e+02, 2.903905334472656e+02, 2.894905090332031e+02, 2.885915832519531e+02, 2.876939697265625e+02, 2.867981872558594e+02, 2.859054565429688e+02, 2.850186462402344e+02, 2.841458740234375e+02, 2.833204040527344e+02, 2.831757202148438e+02, 2.831775512695312e+02, 2.832209167480469e+02, 2.83308837890625e+02, 2.833973693847656e+02, 2.834859008789062e+02, 2.835744018554688e+02, 2.836629028320312e+02, 2.837513732910156e+02, 2.838398132324219e+02, 2.8392822265625e+02, 2.840166320800781e+02, 2.841050109863281e+02, 2.841924133300781e+02, 2.842044677734375e+02, 2.842045593261719e+02, 2.842837524414062e+02, 2.851436157226562e+02, 2.870288696289062e+02, 2.898591613769531e+02, 2.883058166503906e+02, 2.875252380371094e+02, 2.891992492675781e+02, 2.871512145996094e+02, 2.888499755859375e+02, 2.879206848144531e+02, 2.87977294921875e+02, 2.886006774902344e+02, 2.874880981445312e+02, 2.889263305664062e+02, 2.873591003417969e+02, 2.8891650390625e+02, 2.875017700195312e+02, 2.885742797851562e+02, 2.882327270507812e+02, 2.881468811035156e+02, 2.881501159667969e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02, 2.881499938964844e+02] +hex.Q1_flow=[0e+00, 1.681668212890625e+03, 1.524333129882812e+03, 1.296554809570312e+03, 1.015027893066406e+03, 1.302581665039062e+03, 1.0896923828125e+03, 1.293047973632812e+03, 9.971561889648438e+02, 1.300926513671875e+03, 1.109336059570312e+03, 1.157562377929688e+03, 1.248008178710938e+03, 1.019040832519531e+03, 1.312071655273438e+03, 1.111072998046875e+03, 1.146957153320312e+03, 1.224765014648438e+03, 9.32622802734375e+02, 6.393832397460938e+02, 4.4736181640625e+02, 3.09766845703125e+02, 2.315014495849609e+02, 2.180039672851562e+02, 2.208218078613281e+02, 2.229581756591797e+02, 2.242943267822266e+02, 2.250746917724609e+02, 2.255046539306641e+02, 2.257285003662109e+02, 2.258369140625e+02, 2.258828277587891e+02, 2.258961334228516e+02, 2.258919525146484e+02, 2.646654968261719e+02, 4.079535522460938e+02, 5.692599487304688e+02, 6.112861328125e+02, 7.002822265625e+02, 7.866277465820312e+02, 8.703626098632812e+02, 9.508465576171875e+02, 1.028335327148438e+03, 1.103097900390625e+03, 1.175361083984375e+03, 1.245362915039062e+03, 1.313392333984375e+03, 1.379715454101562e+03, 1.444654663085938e+03, 1.50829052734375e+03, 1.565380859375e+03, 1.526516357421875e+03, 1.52627001953125e+03, 1.517582153320312e+03, 1.511879638671875e+03, 1.506284912109375e+03, 1.50067578125e+03, 1.49504833984375e+03, 1.489405029296875e+03, 1.48374462890625e+03, 1.478066772460938e+03, 1.472371826171875e+03, 1.466659790039062e+03, 1.460930297851562e+03, 1.45583935546875e+03, 1.457296264648438e+03, 1.457312744140625e+03, 1.4165791015625e+03, 1.32028857421875e+03, 1.154992431640625e+03, 1.027748901367188e+03, 1.273102416992188e+03, 1.147057373046875e+03, 1.140058715820312e+03, 1.253330322265625e+03, 1.024615478515625e+03, 1.297098876953125e+03, 1.100746215820312e+03, 1.218820190429688e+03, 1.161237548828125e+03, 1.166993041992188e+03, 1.1957568359375e+03, 1.15414111328125e+03, 1.184731567382812e+03, 1.201198486328125e+03, 1.09079345703125e+03, 1.178313842773438e+03, 1.177740600585938e+03, 1.177754028320312e+03, 1.177754638671875e+03, 1.177754638671875e+03, 1.177754516601562e+03, 1.177754516601562e+03, 1.177754516601562e+03, 1.177754516601562e+03, 1.177754516601562e+03, 1.177754516601562e+03, 1.177754516601562e+03, 1.177754516601562e+03, 1.177754516601562e+03, 1.177754516601562e+03] +hex.Q2_flow=[0e+00, -1.700808227539062e+03, -1.584616333007812e+03, -1.371553588867188e+03, -1.066345947265625e+03, -1.251803588867188e+03, -1.100762573242188e+03, -1.283760375976562e+03, -1.051115844726562e+03, -1.247271118164062e+03, -1.157572875976562e+03, -1.125166748046875e+03, -1.2666455078125e+03, -1.041309204101562e+03, -1.25581787109375e+03, -1.159561157226562e+03, -1.116238403320312e+03, -1.245232421875e+03, -9.866844482421875e+02, -6.796959838867188e+02, -4.694165649414062e+02, -3.280641784667969e+02, -2.432077484130859e+02, -2.212996063232422e+02, -2.233168334960938e+02, -2.244967346191406e+02, -2.251703796386719e+02, -2.255385589599609e+02, -2.257283020019531e+02, -2.258183441162109e+02, -2.25854736328125e+02, -2.258630218505859e+02, -2.258568115234375e+02, -2.258433990478516e+02, -2.561486511230469e+02, -3.809260559082031e+02, -5.66781494140625e+02, -5.845862426757812e+02, -6.888026123046875e+02, -7.740335693359375e+02, -8.5729833984375e+02, -9.37265869140625e+02, -1.01415771484375e+03, -1.088206298828125e+03, -1.159589599609375e+03, -1.228574096679688e+03, -1.29527685546875e+03, -1.3598681640625e+03, -1.42245263671875e+03, -1.482779663085938e+03, -1.5374208984375e+03, -1.524619750976562e+03, -1.524471801757812e+03, -1.519062866210938e+03, -1.513448486328125e+03, -1.507854614257812e+03, -1.5022431640625e+03, -1.496615356445312e+03, -1.490971557617188e+03, -1.48530908203125e+03, -1.47963037109375e+03, -1.4739345703125e+03, -1.468221557617188e+03, -1.4624912109375e+03, -1.457045043945312e+03, -1.457308837890625e+03, -1.457313598632812e+03, -1.435807739257812e+03, -1.359231567382812e+03, -1.208607299804688e+03, -1.033660888671875e+03, -1.220077270507812e+03, -1.186115844726562e+03, -1.11825146484375e+03, -1.253961669921875e+03, -1.070822509765625e+03, -1.246328125e+03, -1.14547509765625e+03, -1.181345581054688e+03, -1.1947177734375e+03, -1.142501708984375e+03, -1.21704541015625e+03, -1.136183837890625e+03, -1.206179565429688e+03, -1.173286499023438e+03, -1.130677001953125e+03, -1.17843115234375e+03, -1.177743041992188e+03, -1.177754150390625e+03, -1.177754638671875e+03, -1.177754638671875e+03, -1.177754516601562e+03, -1.177754516601562e+03, -1.177754516601562e+03, -1.177754516601562e+03, -1.177754516601562e+03, -1.177754516601562e+03, -1.177754516601562e+03, -1.177754516601562e+03, -1.177754516601562e+03, -1.177754516601562e+03] +hex.QLat2_flow=[0e+00, -1.038537353515625e+03, -9.756683959960938e+02, -8.560028686523438e+02, -6.70622314453125e+02, -7.913008422851562e+02, -6.944624633789062e+02, -8.082588500976561e+02, -6.60725830078125e+02, -7.887432250976562e+02, -7.283836059570312e+02, -7.116656494140625e+02, -7.966776733398438e+02, -6.558906860351562e+02, -7.941897583007816e+02, -7.296688232421875e+02, -7.05970458984375e+02, -7.836832275390625e+02, -6.190165405273438e+02, -4.111388244628906e+02, -2.624911804199219e+02, -1.583129272460938e+02, -9.545058441162109e+01, -7.844242858886719e+01, -8.007781982421875e+01, -8.093649291992188e+01, -8.139398193359375e+01, -8.162838745117188e+01, -8.1740478515625e+01, -8.178749847412109e+01, -8.18009033203125e+01, -8.179737854003906e+01, -8.178525543212891e+01, -8.176908874511719e+01, -1.035910415649414e+02, -1.938897399902344e+02, -3.313277893066406e+02, -3.435733947753906e+02, -4.187727966308594e+02, -4.78166259765625e+02, -5.351788940429688e+02, -5.889535522460938e+02, -6.397074584960938e+02, -6.876574096679688e+02, -7.329733276367188e+02, -7.759038696289062e+02, -8.165565795898438e+02, -8.550941162109375e+02, -8.916298217773438e+02, -9.260494384765625e+02, -9.563923950195312e+02, -9.480526123046875e+02, -9.479923095703125e+02, -9.448834838867188e+02, -9.418029174804688e+02, -9.387300415039062e+02, -9.356390991210938e+02, -9.325316162109375e+02, -9.2940771484375e+02, -9.262648315429688e+02, -9.231054077148438e+02, -9.199285278320312e+02, -9.167340698242188e+02, -9.1352197265625e+02, -9.104633178710938e+02, -9.106497192382812e+02, -9.106528930664062e+02, -8.975458374023438e+02, -8.521326904296875e+02, -7.6059912109375e+02, -6.519830322265625e+02, -7.727811279296875e+02, -7.472838134765625e+02, -7.073469848632812e+02, -7.907433471679688e+02, -6.740498046875e+02, -7.88815185546875e+02, -7.216434936523438e+02, -7.47847412109375e+02, -7.52861083984375e+02, -7.228399658203125e+02, -7.671871337890625e+02, -7.186043090820312e+02, -7.604677734375e+02, -7.423685913085938e+02, -7.125130615234375e+02, -7.442764892578125e+02, -7.43841552734375e+02, -7.43848876953125e+02, -7.438491821289062e+02, -7.438491821289062e+02, -7.4384912109375e+02, -7.4384912109375e+02, -7.4384912109375e+02, -7.4384912109375e+02, -7.4384912109375e+02, -7.4384912109375e+02, -7.4384912109375e+02, -7.4384912109375e+02, -7.4384912109375e+02, -7.4384912109375e+02] +hex.QSen2_flow=[0e+00, -6.622709350585938e+02, -6.089479370117188e+02, -5.155507202148438e+02, -3.957236022949219e+02, -4.605027160644531e+02, -4.063001098632812e+02, -4.755014953613281e+02, -3.903899841308594e+02, -4.5852783203125e+02, -4.291892700195312e+02, -4.135010681152344e+02, -4.699677734375e+02, -3.854185485839844e+02, -4.61628143310547e+02, -4.298923034667969e+02, -4.102680053710938e+02, -4.615491333007812e+02, -3.676678771972656e+02, -2.685571594238281e+02, -2.069253997802734e+02, -1.697512664794922e+02, -1.477571716308594e+02, -1.42857177734375e+02, -1.43239013671875e+02, -1.435602416992188e+02, -1.437763977050781e+02, -1.439101715087891e+02, -1.439878234863281e+02, -1.440308380126953e+02, -1.440538330078125e+02, -1.440656433105469e+02, -1.440715637207031e+02, -1.440743103027344e+02, -1.525576019287109e+02, -1.870363159179688e+02, -2.354537048339844e+02, -2.410128631591797e+02, -2.7002978515625e+02, -2.958673095703125e+02, -3.221194152832031e+02, -3.483123474121094e+02, -3.744502563476562e+02, -4.005489807128906e+02, -4.266163024902344e+02, -4.526701354980469e+02, -4.787202453613281e+02, -5.047740783691406e+02, -5.308228149414062e+02, -5.567302856445312e+02, -5.810284423828125e+02, -5.76567138671875e+02, -5.764794311523438e+02, -5.741793823242188e+02, -5.716455078125e+02, -5.6912451171875e+02, -5.6660400390625e+02, -5.64083740234375e+02, -5.615638427734375e+02, -5.590442504882812e+02, -5.565249633789062e+02, -5.540060424804688e+02, -5.514874877929688e+02, -5.4896923828125e+02, -5.46581787109375e+02, -5.466591796875e+02, -5.466607666015625e+02, -5.38261962890625e+02, -5.070989379882812e+02, -4.480081481933594e+02, -3.816778869628906e+02, -4.472960815429688e+02, -4.3883203125e+02, -4.109044494628906e+02, -4.632182922363281e+02, -3.967726440429688e+02, -4.57512939453125e+02, -4.238316040039062e+02, -4.334981079101562e+02, -4.41856689453125e+02, -4.196617431640625e+02, -4.498582763671875e+02, -4.175794982910156e+02, -4.457118530273438e+02, -4.309179382324219e+02, -4.181639709472656e+02, -4.341546936035156e+02, -4.339014282226562e+02, -4.339052429199219e+02, -4.339054260253906e+02, -4.339054260253906e+02, -4.339054260253906e+02, -4.339054260253906e+02, -4.339054260253906e+02, -4.339054260253906e+02, -4.339054260253906e+02, -4.339054260253906e+02, -4.339054260253906e+02, -4.339054260253906e+02, -4.339054260253906e+02, -4.339054260253906e+02]
                                                    Buildings.Controls.OBC +
                                                    Buildings.Controls.OBC.Utilities.PIDWithAutotuning + Package that contains components for the PID controller that can + autotune the control gain and time constants. +
                                                    Buildings.Templates