Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

Radiant control from Integral Group #2647

Open
wants to merge 71 commits into
base: master
Choose a base branch
from
Open
Changes from 1 commit
Commits
Show all changes
71 commits
Select commit Hold shift + click to select a range
8d67a34
Added radiant sequences
fionamwoods Jun 24, 2020
7973371
Uploaded interior and exterior zone radiant models
fionamwoods Jun 24, 2020
22fc276
Added test thermal zones
fionamwoods Jun 24, 2020
9f00655
Added new glazing system
fionamwoods Jun 24, 2020
40f7880
Added new R-25 wall
fionamwoods Jun 24, 2020
1d16286
Merge pull request #2 from lbl-srg/master
fionamwoods Jul 1, 2020
f78a1e7
Merge pull request #1 from fionamwoods/radiant
fionamwoods Jul 8, 2020
ceaf817
Radiant control as of 7/23 added
fionamwoods Jul 23, 2020
145ee3d
Test repo
fionamwoods Jul 23, 2020
791ea90
Merge pull request #3 from lbl-srg/master
fionamwoods Jul 23, 2020
2008edc
Nat vent control draft #1
fionamwoods Aug 19, 2020
e1c9229
Radiant changes and nat vent
fionamwoods Aug 19, 2020
58bf641
Radiant changes nat vent add try 2
fionamwoods Aug 19, 2020
51ffe01
Nat vent add try 2
fionamwoods Aug 19, 2020
1cabf9f
Fixed errors with duplicate packages in same file
fionamwoods Aug 19, 2020
b9bd24b
Radiant and nat vent
fionamwoods Sep 16, 2020
8f94d1e
Attempt to add sublockouts
fionamwoods Sep 17, 2020
ed822e7
Sublockout fix:
fionamwoods Sep 17, 2020
65b988f
Merge https://github.com/lbl-srg/modelica-buildings
fionamwoods Sep 22, 2020
1ccb873
Syntax changes
fionamwoods Sep 24, 2020
a5897bf
Lighting no longer as one file
fionamwoods Sep 24, 2020
5384c7c
Updated to match Modelica naming conventions; committed reference res…
fionamwoods Oct 5, 2020
eed3d5e
Added reference results, replaced Modelica blocks with Buildings Libr…
fionamwoods Oct 6, 2020
3a9aa61
Added rev sections, finalized comments
fionamwoods Oct 7, 2020
a0ee2f8
Final clean-up of room model to add each to boundary conditions & avo…
fionamwoods Oct 7, 2020
90017e5
Merge https://github.com/lbl-srg/modelica-buildings
fionamwoods Oct 7, 2020
749f5de
Removed old wall
fionamwoods Oct 7, 2020
74c2ebe
Attempt to fix libraries
fionamwoods Oct 8, 2020
96d07eb
fix accidentally edited packages
fionamwoods Oct 8, 2020
c452d06
fix edited files
fionamwoods Oct 8, 2020
908808b
Water issue
fionamwoods Oct 8, 2020
d48e74d
Final comments
fionamwoods Oct 8, 2020
fe0244d
Attempt #3 to fix accidental changes
fionamwoods Oct 8, 2020
f6284b9
Merge branch 'master' of https://github.com/lbl-srg/modelica-buildings
fionamwoods Oct 8, 2020
b41d457
fix errors on radiant validation models ControlPlusLockoutPerimeter a…
fionamwoods Oct 19, 2020
a2ffb8d
New reference results
fionamwoods Oct 19, 2020
56a24cd
Merge pull request #2087 from fionamwoods/master
milicag Oct 19, 2020
d84aecb
updated documentation formatting and converted package paths to links…
milicag Sep 8, 2021
94d0e0a
merged master in, removed Alarms package [ci skip]
milicag Sep 23, 2021
987a477
removed a parameter that does not exist in the instance class [ci skip]
milicag Sep 23, 2021
c21d18d
temp var rename script, updated hysteresis offset [ci skip]
milicag Sep 23, 2021
f0e31a8
added further models to the variable rename lists [ci skip]
milicag Sep 23, 2021
b656f94
updated reference results, removed obsolete parameter, package test r…
milicag Sep 23, 2021
edc4e1f
edits to formatting and small edits to documentation, added to rename…
milicag Sep 24, 2021
befe7bd
updated and added variables to rename [ci skip]
milicag Sep 24, 2021
8c266ef
renamed part of the variables, up to AllLockouts validation test [ci …
milicag Sep 24, 2021
f4c630b
renamed lockouts until the AllLockout validation test [ci skip]
milicag Sep 25, 2021
db13c70
renamed variables in the lockout models [ci skip]
milicag Sep 25, 2021
e2abcf4
renamed all besides the main controller and its validation models [ci…
milicag Sep 25, 2021
95aa695
renamed variables in the main controller and two of its 3 validators …
milicag Sep 27, 2021
f6d0f4c
updated the last test, finished draft variable rename [ci skip]
milicag Sep 27, 2021
7fbf897
removed obsolete and duplicate models, removed result file names from…
milicag Sep 27, 2021
156ec81
updated reference results [ci skip]
milicag Sep 28, 2021
4253b57
updated simulation statistics in the reference results [ci skip]
milicag Sep 28, 2021
9ce8e15
removed models that are not radiant control [ci skip]
milicag Sep 28, 2021
a5d3c83
removed natural ventilation related models [ci skip]
milicag Sep 28, 2021
4a31bd3
added links to documentation [ci skip]
milicag Sep 28, 2021
e5691cb
Merge remote-tracking branch 'origin' into issue2176_radiant_control_…
milicag Sep 28, 2021
976dfd4
fixed a part of the html errors, fixed revision notes [ci skip]
milicag Sep 28, 2021
8aca5fa
further small edits to html and documentation [ci skip]
milicag Sep 28, 2021
22e5e5e
moved models to OBC package [ci skip]
milicag Sep 29, 2021
c25b5da
reverted auto-introduced edits [ci skip]
milicag Sep 29, 2021
7f1040b
resolved html errors, formatted documentation [ci skip]
milicag Sep 29, 2021
99f1091
re-added the dependencies, updated translation statistics in the refe…
milicag Sep 29, 2021
29e30be
added missing comments [ci skip]
milicag Sep 30, 2021
bdc25c7
resolved warnings found by modelica-json parser [ci skip]
milicag Sep 30, 2021
422fee8
local tests ok for the package, addresses radiant control portion of …
milicag Sep 30, 2021
3b5abb9
updated package order [ci skip]
milicag Sep 30, 2021
77d1810
minor edit
milicag Sep 30, 2021
20e1aa2
ensured files can be verified
milicag Sep 30, 2021
405ab3d
removed scripts related to a removed package
milicag Sep 30, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Radiant control as of 7/23 added
  • Loading branch information
fionamwoods authored Jul 23, 2020

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
commit ceaf8177ee587bf531c7fc9d68e55c1d67b16491
120 changes: 120 additions & 0 deletions Buildings/Experimental/RadiantControl/Alarms/SlabTempAlarm.mo
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
within Buildings.Experimental.RadiantControl.Alarms;
block SlabTempAlarm "Trigger alarm is slab temperature is a user-specified amount away from setpoint for a user-specified amount of time"

parameter Real TiErr(min=0,
final unit="s",
final displayUnit="s",
final quantity="Time")=14400 "Time threshhold slab temp must be out of range to trigger alarm";
parameter Real TErr(min=0,
final unit="K",
final displayUnit="K",
final quantity="TemperatureDifference")=1.1 "Difference from slab temp setpoint required to trigger alarm";

Controls.OBC.CDL.Continuous.Abs abs
"Absolute value of difference between slab setpoint and slab temp"
annotation (Placement(transformation(extent={{-120,20},{-100,40}})));
Controls.OBC.CDL.Continuous.GreaterEqual greEqu
"Test if error is above error threshold"
annotation (Placement(transformation(extent={{-80,20},{-60,40}})));
Controls.OBC.CDL.Logical.Not not7
"Zero out integral if error is below threshhold"
annotation (Placement(transformation(extent={{-40,-40},{-20,-20}})));
Controls.OBC.CDL.Continuous.Sources.Constant ConZero(k=0)
"Error integral- constant zero"
annotation (Placement(transformation(extent={{-40,0},{-20,20}})));
Controls.OBC.CDL.Continuous.Sources.Constant ConOne(k=1)
"Error integral- constant one"
annotation (Placement(transformation(extent={{-40,40},{-20,60}})));
Controls.OBC.CDL.Logical.Switch swi
"Switch integrated function from constant zero to constant one if error is above threshhold"
annotation (Placement(transformation(extent={{0,20},{20,40}})));
Controls.OBC.CDL.Continuous.GreaterEqual greEqALARM
"True if error has been greater than temperature threshold for more than time threshold, otherwise false"
annotation (Placement(transformation(extent={{80,20},{100,40}})));
Controls.OBC.CDL.Continuous.IntegratorWithReset intWitRes(reset=
Buildings.Controls.OBC.CDL.Types.Reset.Parameter)
"Find integral of how long error has been above threshold, reset to zero if error goes below 2 F threshhold"
annotation (Placement(transformation(extent={{40,20},{60,40}})));
Controls.OBC.CDL.Interfaces.RealInput slaTemError
annotation (Placement(transformation(extent={{-220,10},{-180,50}})));
Controls.OBC.CDL.Interfaces.BooleanOutput slaTemAlarm
annotation (Placement(transformation(extent={{160,10},{200,50}})));
Modelica.Blocks.Sources.Constant TError(k=TErr)
"Temperature amount slab temp must be out of range to trigger alarm, if error is sustained for specified time duration"
annotation (Placement(transformation(extent={{-120,-20},{-100,0}})));
Modelica.Blocks.Sources.Constant TiError(k=TiErr)
"Time slab temp must be out of range to trigger alarm, if error is greater than specified temperature threshhold"
annotation (Placement(transformation(extent={{38,-62},{58,-42}})));
equation
connect(intWitRes.y,greEqALARM. u1) annotation (Line(points={{62,30},{78,30}},
color={0,0,127}));
connect(swi.y,intWitRes. u) annotation (Line(points={{22,30},{38,30}},
color={0,0,127}));
connect(not7.y,intWitRes. trigger) annotation (Line(points={{-18,-30},{50,-30},
{50,18}}, color={255,0,255}));
connect(ConZero.y,swi. u3) annotation (Line(points={{-18,10},{-4,10},{-4,22},{
-2,22}}, color={0,0,127}));
connect(greEqu.y,swi. u2)
annotation (Line(points={{-58,30},{-2,30}}, color={255,0,255}));
connect(greEqu.y,not7. u) annotation (Line(points={{-58,30},{-58,-30},{-42,-30}},
color={255,0,255}));
connect(abs.y,greEqu. u1) annotation (Line(points={{-98,30},{-82,30}},
color={0,0,127}));
connect(ConOne.y,swi. u1) annotation (Line(points={{-18,50},{-2,50},{-2,38}},
color={0,0,127}));
connect(TError.y, greEqu.u2) annotation (Line(points={{-99,-10},{-94,-10},{-94,
22},{-82,22}}, color={0,0,127}));
connect(TiError.y, greEqALARM.u2) annotation (Line(points={{59,-52},{68,-52},{
68,22},{78,22}}, color={0,0,127}));
connect(greEqALARM.y, slaTemAlarm)
annotation (Line(points={{102,30},{180,30}}, color={255,0,255}));
connect(slaTemError, abs.u)
annotation (Line(points={{-200,30},{-122,30}}, color={0,0,127}));
annotation (Documentation(info="<html>
<p>
This block is a slab temperature alarm, which will show true if slab has been a user-specified amount of of range for a user-specified amount of time.
</p>
</html>"),Icon(coordinateSystem(
preserveAspectRatio=true,
extent={{-100,-100},{100,100}}), graphics={
Text(
lineColor={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={{-80,68},{-80,-80}}, color={192,192,192}),
Polygon(
points={{-80,90},{-88,68},{-72,68},{-80,90}},
lineColor={192,192,192},
fillColor={192,192,192},
fillPattern=FillPattern.Solid),
Line(points={{-90,-70},{82,-70}}, color={192,192,192}),
Polygon(
points={{90,-70},{68,-62},{68,-78},{90,-70}},
lineColor={192,192,192},
fillColor={192,192,192},
fillPattern=FillPattern.Solid),
Text(
extent={{-150,-150},{150,-110}},
lineColor={0,0,0},
textString="duration=%duration"),
Polygon(lineColor = {191,0,0},
fillColor = {191,0,0},
pattern = LinePattern.None,
fillPattern = FillPattern.Solid,
points={{20,58},{100,-2},{20,-62},{20,58}}),
Text(
extent={{-86,90},{28,-88}},
lineColor={0,0,0},
fillColor={0,0,0},
fillPattern=FillPattern.Solid,
textString="A"),
Text(
extent={{226,60},{106,10}},
lineColor={0,0,0},
textString=DynamicSelect("", String(y, leftjustified=false, significantDigits=3)))}), Diagram(coordinateSystem(preserveAspectRatio=false,
extent={{-180,-100},{160,100}})));
end SlabTempAlarm;
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
within Buildings.Experimental.RadiantControl.Alarms.Validation;
model SlaTemAla "Validation model for slab temperature alarm"
final parameter Real TimErr(min=0,
final unit="s",
final displayUnit="s",
final quantity="Time")=14400 "Time threshhold slab temp must be out of range to trigger alarm";
final parameter Real TemErr(min=0,
final unit="K",
final displayUnit="K",
final quantity="TemperatureDifference")=1.1 "Difference from slab temp setpoint required to trigger alarm";

Controls.OBC.CDL.Continuous.Sources.Sine sin(
amplitude=TemErr/2,
freqHz=1/86400,
phase(displayUnit="rad"),
offset=TemErr)
annotation (Placement(transformation(extent={{-60,40},{-40,60}})));
Controls.OBC.CDL.Continuous.Sources.Sine sin1(
amplitude=TemErr/2,
freqHz=4/86400,
phase(displayUnit="rad"),
offset=TemErr)
annotation (Placement(transformation(extent={{-60,0},{-40,20}})));
SlabTempAlarm slabTempAlarm(TiErr=TimErr, TErr=TemErr)
annotation (Placement(transformation(extent={{0,40},{34,60}})));
SlabTempAlarm slabTempAlarm1(TiErr=TimErr, TErr=TemErr)
annotation (Placement(transformation(extent={{0,0},{34,20}})));
equation
connect(sin.y, slabTempAlarm.slaTemError) annotation (Line(points={{-38,50},{-20,
50},{-20,53},{-17,53}}, color={0,0,127}));
connect(sin1.y, slabTempAlarm1.slaTemError) annotation (Line(points={{-38,10},
{-20,10},{-20,13},{-17,13}}, color={0,0,127}));
annotation (Documentation(info="<html>
<p>
This model validates the slab temperature alarm, which should show true if slab has been a user-specified amount of of range for a user-specified amount of time.
</p>
</html>"),experiment(StopTime=172800.0, Tolerance=1e-06),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,58},{64,-2},{-36,-62},{-36,58}})}), Diagram(
coordinateSystem(preserveAspectRatio=false)));
end SlaTemAla;
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
within Buildings.Experimental.RadiantControl.Alarms;
package Validation "Validation model for slab temperature alarm"
end Validation;
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
SlaTemAla
4 changes: 4 additions & 0 deletions Buildings/Experimental/RadiantControl/Alarms/package.mo
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
within Buildings.Experimental.RadiantControl;
package Alarms "Alarms for radiant control"

end Alarms;
2 changes: 2 additions & 0 deletions Buildings/Experimental/RadiantControl/Alarms/package.order
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
SlabTempAlarm
Validation
144 changes: 144 additions & 0 deletions Buildings/Experimental/RadiantControl/ControlPlusLockouts.mo
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
within Buildings.Experimental.RadiantControl;
model ControlPlusLockouts
parameter Real TAirHiSet(min=0,
final unit="K",
final displayUnit="K",
final quantity="Temperature")=297.6
"Air temperature high limit above which heating is locked out";
parameter Real TAirLoSet(min=0,
final unit="K",
final displayUnit="K",
final quantity="Temperature")=293.15
"Air temperature low limit below which heating is locked out";
parameter Real TWaLoSet(min=0,
final unit="K",
final displayUnit="K",
final quantity="Temperature")=285.9
"Lower limit for chilled water return temperature, below which cooling is locked out";
parameter Real TiCHW(min=0,
final unit="s",
final displayUnit="s",
final quantity="Time")=1800 "Time for which cooling is locked if CHW return is too cold";

parameter Real TiHea(min=0,
final unit="s",
final displayUnit="s",
final quantity="Time") = 3600 "Time for which heating is locked out after cooling concludes";
parameter Real TiCoo(min=0,
final unit="s",
final displayUnit="s",
final quantity="Time") = 3600 "Time for which cooling is locked out after heating concludes";
parameter Real TDeaRel(min=0,
final unit="K",
final displayUnit="K",
final quantity="TemperatureDifference")=2.22 "Difference from slab temp setpoint required to trigger alarm during occupied hours";
parameter Real TDeaNor(min=0,
final unit="K",
final displayUnit="K",
final quantity="TemperatureDifference")=0.28
"Difference from slab temp setpoint required to trigger alarm during unoccpied hours";
parameter Real k(min=0,max=24)=18 "Last occupied hour";
parameter Boolean off_within_deadband=true "If flow should turn off when slab setpoint is within deadband, set to true. Otherwise, set to false";
Controls.OBC.CDL.Logical.And and2 "Final Heating Signal"
annotation (Placement(transformation(extent={{80,40},{100,60}})));
Controls.OBC.CDL.Logical.And and1 "Final cooling signal"
annotation (Placement(transformation(extent={{80,-20},{100,0}})));
Controls.OBC.CDL.Interfaces.RealInput TRooAir
annotation (Placement(transformation(extent={{-140,8},{-100,48}})));
Controls.OBC.CDL.Interfaces.RealInput TSla
annotation (Placement(transformation(extent={{-140,60},{-100,100}})));
Controls.OBC.CDL.Interfaces.RealInput TWaRet
annotation (Placement(transformation(extent={{-140,-30},{-100,10}})));
SlabTempSignal.Error error
annotation (Placement(transformation(extent={{-58,40},{-38,60}})));
Controls.OBC.CDL.Interfaces.RealInput TSlaSet
annotation (Placement(transformation(extent={{-140,34},{-100,74}})));
Controls.OBC.CDL.Interfaces.BooleanInput nightFlushLockout
annotation (Placement(transformation(extent={{-142,-68},{-102,-28}})));
Controls.OBC.CDL.Interfaces.BooleanOutput heatingSignal
annotation (Placement(transformation(extent={{180,30},{220,70}})));
Controls.OBC.CDL.Interfaces.BooleanOutput coolingSignal
annotation (Placement(transformation(extent={{180,-30},{220,10}})));
Lockouts.AllLockouts allLockouts1
annotation (Placement(transformation(extent={{2,0},{22,20}})));
SlabTempSignal.DeadbandControlErrSwi deadbandControlErrSwi
annotation (Placement(transformation(extent={{22,40},{42,60}})));
Modelica.Blocks.Logical.Pre pre1
annotation (Placement(transformation(extent={{120,60},{140,80}})));
Modelica.Blocks.Logical.Pre pre2
annotation (Placement(transformation(extent={{120,-60},{140,-40}})));
equation
connect(error.TSlaSet, TSlaSet) annotation (Line(points={{-60,47},{-60,54},
{-120,54}}, color={0,0,127}));
connect(error.TSla, TSla) annotation (Line(points={{-60,51},{-60,80},{-120,
80}}, color={0,0,127}));
connect(and1.y, coolingSignal)
annotation (Line(points={{102,-10},{200,-10}}, color={255,0,255}));
connect(and2.y, heatingSignal)
annotation (Line(points={{102,50},{200,50}}, color={255,0,255}));
connect(nightFlushLockout, allLockouts1.NightFlushSig) annotation (Line(
points={{-122,-48},{-58,-48},{-58,19},{0,19}}, color={255,0,255}));
connect(TRooAir, allLockouts1.TRooAir) annotation (Line(points={{-120,28},{
-56,28},{-56,7},{0,7}}, color={0,0,127}));
connect(TWaRet, allLockouts1.TWater) annotation (Line(points={{-120,-10},{
-56,-10},{-56,3},{0,3}}, color={0,0,127}));
connect(allLockouts1.HtgLockout, and2.u2) annotation (Line(points={{24,13},
{60,13},{60,42},{78,42}}, color={255,0,255}));
connect(allLockouts1.ClgLockout, and1.u1) annotation (Line(points={{24,5},{
60,5},{60,-10},{78,-10}}, color={255,0,255}));
connect(error.slabTempError, deadbandControlErrSwi.slabTempError)
annotation (Line(points={{-36,51},{-4,51},{-4,52.8},{12,52.8}}, color={0,
0,127}));
connect(deadbandControlErrSwi.heatingCall, and2.u1) annotation (Line(points=
{{58,54.8},{70,54.8},{70,50},{78,50}}, color={255,0,255}));
connect(deadbandControlErrSwi.coolingCall, and1.u2) annotation (Line(points=
{{58,47},{60,47},{60,-18},{78,-18}}, color={255,0,255}));
connect(and2.y, pre1.u) annotation (Line(points={{102,50},{110,50},{110,70},
{118,70}}, color={255,0,255}));
connect(pre1.y, allLockouts1.HtgSig) annotation (Line(points={{141,70},{156,
70},{156,90},{-20,90},{-20,18},{0,18},{0,15}}, color={255,0,255}));
connect(and1.y, pre2.u) annotation (Line(points={{102,-10},{110,-10},{110,
-50},{118,-50}}, color={255,0,255}));
connect(pre2.y, allLockouts1.ClgSig) annotation (Line(points={{141,-50},{
142,-50},{142,-80},{-20,-80},{-20,11},{0,11}}, color={255,0,255}));
annotation (Documentation(info="<html>
<p>
This encompasses full radiant control based on water return temperature, room air temperature, night flush signal, slab temperature, and slab setpoint.
</p>
</html>"),Icon(coordinateSystem(
preserveAspectRatio=true,
extent={{-100,-100},{100,100}}),graphics={
Text(
lineColor={0,0,255},
extent={{-148,104},{152,144}},
textString="%name"),
Rectangle(extent={{-100,-100},{100,100}},
lineColor={0,0,127},
fillColor={255,255,255},
fillPattern=FillPattern.Solid),
Line(points={{-80,68},{-80,-80}}, color={192,192,192}),
Polygon(points={{-80,90},{-88,68},{-72,68},{-80,90}},
lineColor={192,192,192},
fillColor={192,192,192},
fillPattern=FillPattern.Solid),
Line(points={{-90,0},{68,0}}, color={192,192,192}),
Polygon(points={{90,0},{68,8}, {68,-8},{90,0}},
lineColor={192,192,192}, fillColor={192,192,192},
fillPattern=FillPattern.Solid),
Line(points={{-80,0},{80,0}}),
Line(points={{-80,-70},{-40,-70},{31,38}}),
Polygon(lineColor = {191,0,0},
fillColor = {191,0,0},
pattern = LinePattern.None,
fillPattern = FillPattern.Solid,
points={{20,58},{100,-2},{20,-62},{20,58}}),
Text(
extent={{-72,78},{72,6}},
lineColor={0,0,0},
textString="R"),
Text(
extent={{226,60},{106,10}},
lineColor={0,0,0},
textString=DynamicSelect("", String(y, leftjustified=false, significantDigits=3)))}), Diagram(coordinateSystem(
preserveAspectRatio=false, extent={{-100,-100},{180,100}})));
end ControlPlusLockouts;
Loading