From efc75309c9f96c9b67510a00064e70c690bb6ea1 Mon Sep 17 00:00:00 2001 From: ajardin Date: Mon, 20 Oct 2025 14:35:34 +0200 Subject: [PATCH 1/4] add reference models for testing traffic light example in the automatic test-suite --- .../CRML_test/Examples/TrafficLight/Spec.mo | 127 ++++++++++++++++++ .../Examples/TrafficLight/Spec_externals.mo | 55 ++++++++ .../Examples/TrafficLight/Spec_verif.mo | 61 +++++++++ .../Examples/TrafficLight/package.mo | 4 + .../Examples/TrafficLight/package.order | 3 + .../CRML_test/Examples/package.mo | 7 + .../CRML_test/Examples/package.order | 1 + .../CRML_test/package.order | 1 + 8 files changed, 259 insertions(+) create mode 100644 resources/modelica_libraries/CRML_test/Examples/TrafficLight/Spec.mo create mode 100644 resources/modelica_libraries/CRML_test/Examples/TrafficLight/Spec_externals.mo create mode 100644 resources/modelica_libraries/CRML_test/Examples/TrafficLight/Spec_verif.mo create mode 100644 resources/modelica_libraries/CRML_test/Examples/TrafficLight/package.mo create mode 100644 resources/modelica_libraries/CRML_test/Examples/TrafficLight/package.order create mode 100644 resources/modelica_libraries/CRML_test/Examples/package.mo create mode 100644 resources/modelica_libraries/CRML_test/Examples/package.order diff --git a/resources/modelica_libraries/CRML_test/Examples/TrafficLight/Spec.mo b/resources/modelica_libraries/CRML_test/Examples/TrafficLight/Spec.mo new file mode 100644 index 0000000..d6fb481 --- /dev/null +++ b/resources/modelica_libraries/CRML_test/Examples/TrafficLight/Spec.mo @@ -0,0 +1,127 @@ +within CRML_test.Examples.TrafficLight; + +model Spec + CRML.TimeLocators.Continuous.AfterBefore afterBefore annotation( + Placement(transformation(extent = {{-40, 64}, {-20, 84}}))); + CRML.Requirements.CheckCountEqual checkInPCount(threshold = 0) annotation( + Placement(transformation(extent = {{-40, 24}, {-20, 44}}))); + CRML.TimeLocators.Continuous.AfterFor afterFor annotation( + Placement(transformation(extent = {{-40, -40}, {-20, -20}}))); + CRML.Blocks.Math.Constant const(k = 30) annotation( + Placement(transformation(extent = {{-80, -60}, {-60, -40}}))); + CRML.Requirements.Ensure checkBoolean annotation( + Placement(transformation(extent = {{-40, -80}, {-20, -60}}))); + CRML.TimeLocators.Continuous.AfterFor When annotation( + Placement(transformation(extent = {{100, 70}, {120, 90}}))); + CRML.Blocks.Math.Constant const1(k = 0.2) annotation( + Placement(transformation(extent = {{20, 14}, {40, 34}}))); + CRML.Requirements.CheckAtEnd checkInPCount1 annotation( + Placement(transformation(extent = {{100, 0}, {120, 20}}))); + CRML.Blocks.Math.Constant const2(k = 30) annotation( + Placement(transformation(extent = {{22, 50}, {42, 70}}))); + CRML.ETL.Connectors.BooleanInput red "External Boolean variable" annotation( + Placement(transformation(extent = {{-120, 70}, {-100, 90}}))); + CRML.ETL.Connectors.BooleanInput green annotation( + Placement(transformation(extent = {{-120, -90}, {-100, -70}}))); + CRML.ETL.Connectors.BooleanInput yellow "Boolean condition" annotation( + Placement(transformation(extent = {{-120, -10}, {-100, 10}}))); + CRML.Blocks.Logical4.ShowBoolean4 show_req1 annotation( + Placement(transformation(extent = {{-8, 20}, {14, 48}}))); + CRML.Blocks.Logical4.ShowBoolean4 show_req2 annotation( + Placement(transformation(extent = {{-10, -82}, {14, -58}}))); + CRML.Blocks.Logical4.ShowBoolean4 show_req3 annotation( + Placement(transformation(origin = {-2, 14}, extent = {{140, -2}, {162, 22}}))); + CRML.Blocks.Logical4.And4 and4_1 annotation( + Placement(transformation(extent = {{20, -58}, {40, -38}}))); + CRML.Blocks.Logical4.And4 and4_2 annotation( + Placement(transformation(extent = {{112, -50}, {132, -30}}))); + CRML.Blocks.Logical4.ShowBoolean4 show_req annotation( + Placement(transformation(extent = {{138, -52}, {160, -28}}))); + CRML.Blocks.Logical4.BooleanToBoolean4 booleanToBoolean4_1 annotation( + Placement(transformation(extent = {{-84, 76}, {-76, 84}}))); + CRML.Blocks.Logical4.BooleanToBoolean4 booleanToBoolean4_2 annotation( + Placement(transformation(extent = {{-84, 62}, {-76, 70}}))); + CRML.Blocks.Logical4.BooleanToBoolean4 booleanToBoolean4_3 annotation( + Placement(transformation(extent = {{-84, -84}, {-76, -76}}))); + CRML.Blocks.Logical4.BooleanToBoolean4 booleanToBoolean4_4 annotation( + Placement(transformation(extent = {{-84, -4}, {-76, 4}}))); + CRML.Blocks.Events.EventDelay booleanDelay annotation( + Placement(transformation(extent = {{58, 70}, {78, 90}}))); + CRML.Blocks.Logical4.BooleanToBoolean4 booleanToBoolean4_5 annotation( + Placement(transformation(extent = {{84, 76}, {92, 84}}))); + CRML.Blocks.Events.Event4ToEvent event4ToEvent annotation( + Placement(transformation(extent = {{42, 76}, {50, 84}}))); + CRML.ETL.Connectors.Boolean4Output req1 annotation( + Placement(transformation(origin = {170, 60}, extent = {{-10, -10}, {10, 10}}), iconTransformation(origin = {170, 60}, extent = {{-10, -10}, {10, 10}}))); + CRML.ETL.Connectors.Boolean4Output req2 annotation( + Placement(transformation(origin = {170, 0}, extent = {{-10, -10}, {10, 10}}), iconTransformation(origin = {170, 0}, extent = {{-10, -10}, {10, 10}}))); + CRML.ETL.Connectors.Boolean4Output req3 annotation( + Placement(transformation(origin = {170, -60}, extent = {{-10, -10}, {10, 10}}), iconTransformation(origin = {170, -60}, extent = {{-10, -10}, {10, 10}}))); +equation + connect(afterBefore.y, checkInPCount.tl) annotation( + Line(points = {{-30, 64}, {-30, 44}}, color = {0, 0, 255})); + connect(const.y, afterFor.duration) annotation( + Line(points = {{-59, -50}, {-50, -50}, {-50, -38}, {-41, -38}}, color = {0, 0, 0})); + connect(afterFor.y, checkBoolean.tl) annotation( + Line(points = {{-30, -40}, {-30, -60}}, color = {0, 0, 255})); + connect(const1.y, When.duration) annotation( + Line(points = {{41, 24}, {90, 24}, {90, 72}, {99, 72}}, color = {0, 0, 0})); + connect(checkInPCount.y, show_req1.u) annotation( + Line(points = {{-19, 34}, {-8.55, 34}}, color = {162, 29, 33})); + connect(checkBoolean.y, show_req2.u) annotation( + Line(points = {{-19, -70}, {-10.6, -70}}, color = {162, 29, 33})); + connect(checkBoolean.y, and4_1.u2) annotation( + Line(points = {{-19, -70}, {-16, -70}, {-16, -56}, {19, -56}}, color = {162, 29, 33})); + connect(checkInPCount.y, and4_1.u1) annotation( + Line(points = {{-19, 34}, {-16, 34}, {-16, -40}, {19, -40}}, color = {162, 29, 33})); + connect(and4_2.y, show_req.u) annotation( + Line(points = {{133, -40}, {137.45, -40}}, color = {162, 29, 33})); + connect(and4_1.y, and4_2.u2) annotation( + Line(points = {{41, -48}, {111, -48}}, color = {162, 29, 33})); + connect(checkInPCount.u, booleanToBoolean4_1.y) annotation( + Line(points = {{-41, 34}, {-72, 34}, {-72, 80}, {-75.6, 80}}, color = {162, 29, 33})); + connect(booleanToBoolean4_1.u, red) annotation( + Line(points = {{-84.4, 80}, {-110, 80}}, color = {217, 67, 180})); + connect(yellow, booleanToBoolean4_2.u) annotation( + Line(points = {{-110, 0}, {-94, 0}, {-94, 66}, {-84.4, 66}}, color = {217, 67, 180})); + connect(booleanToBoolean4_2.y, afterBefore.u2) annotation( + Line(points = {{-75.6, 66}, {-41, 66}}, color = {162, 29, 33})); + connect(green, booleanToBoolean4_3.u) annotation( + Line(points = {{-110, -80}, {-84.4, -80}}, color = {217, 67, 180})); + connect(booleanToBoolean4_3.y, checkBoolean.u) annotation( + Line(points = {{-75.6, -80}, {-52, -80}, {-52, -70}, {-41, -70}}, color = {162, 29, 33})); + connect(booleanToBoolean4_3.y, afterFor.u) annotation( + Line(points = {{-75.6, -80}, {-52, -80}, {-52, -30}, {-41, -30}}, color = {162, 29, 33})); + connect(booleanToBoolean4_3.y, afterBefore.u1) annotation( + Line(points = {{-75.6, -80}, {-52, -80}, {-52, 74}, {-41, 74}}, color = {162, 29, 33})); + connect(checkInPCount1.u, booleanToBoolean4_4.y) annotation( + Line(points = {{99, 10}, {90, 10}, {90, 0}, {-75.6, 0}}, color = {162, 29, 33})); + connect(booleanToBoolean4_4.u, yellow) annotation( + Line(points = {{-84.4, 0}, {-110, 0}}, color = {217, 67, 180})); + connect(When.y, checkInPCount1.tl) annotation( + Line(points = {{110, 70}, {110, 20}}, color = {0, 0, 255})); + connect(const2.y, booleanDelay.delay) annotation( + Line(points = {{43, 60}, {50, 60}, {50, 72}, {57, 72}}, color = {0, 0, 0})); + connect(checkInPCount1.y, show_req3.u) annotation( + Line(points = {{121, 10}, {129, 10}, {129, 24}, {137, 24}}, color = {162, 29, 33})); + connect(checkInPCount1.y, and4_2.u1) annotation( + Line(points = {{121, 10}, {128, 10}, {128, -22}, {98, -22}, {98, -32}, {111, -32}}, color = {162, 29, 33})); + connect(booleanDelay.y, booleanToBoolean4_5.u) annotation( + Line(points = {{79, 80}, {83.6, 80}}, color = {217, 67, 180})); + connect(booleanToBoolean4_5.y, When.u) annotation( + Line(points = {{92.4, 80}, {99, 80}}, color = {162, 29, 33})); + connect(event4ToEvent.y, booleanDelay.u) annotation( + Line(points = {{50.4, 80}, {57, 80}}, color = {217, 67, 180})); + connect(booleanToBoolean4_3.y, event4ToEvent.u) annotation( + Line(points = {{-75.6, -80}, {-52, -80}, {-52, 88}, {28, 88}, {28, 80}, {41.6, 80}}, color = {162, 29, 33})); + connect(checkInPCount.y, req1) annotation( + Line(points = {{-18, 34}, {-10, 34}, {-10, 100}, {140, 100}, {140, 60}, {170, 60}}, color = {162, 29, 33})); + connect(checkBoolean.y, req2) annotation( + Line(points = {{-18, -70}, {-12, -70}, {-12, -20}, {140, -20}, {140, 0}, {170, 0}}, color = {162, 29, 33})); + connect(checkInPCount1.y, req3) annotation( + Line(points = {{122, 10}, {128, 10}, {128, -22}, {98, -22}, {98, -60}, {170, -60}}, color = {162, 29, 33})); + annotation( + Icon(coordinateSystem(preserveAspectRatio = false, extent = {{-100, -100}, {160, 100}}), graphics = {Rectangle(origin = {30, 0},lineColor = {28, 108, 200}, fillColor = {215, 215, 215}, fillPattern = FillPattern.Solid, extent = {{-130, 100}, {130, -100}}), Ellipse(origin = {32, 0},lineColor = {238, 46, 47}, fillColor = {238, 46, 47}, fillPattern = FillPattern.Solid, extent = {{-20, 98}, {20, 58}}), Ellipse(origin = {32, 0},lineColor = {244, 125, 35}, fillColor = {244, 125, 35}, fillPattern = FillPattern.Solid, extent = {{-20, 18}, {20, -20}}), Ellipse(origin = {32, 0},lineColor = {0, 140, 72}, fillColor = {0, 140, 72}, fillPattern = FillPattern.Solid, extent = {{-20, -60}, {20, -98}}), Text(textColor = {28, 108, 200}, extent = {{-92, 126}, {90, 108}}, textString = "%name")}), + Diagram(coordinateSystem(preserveAspectRatio = false, extent = {{-100, -100}, {160, 100}}), graphics = {Rectangle(lineColor = {28, 108, 200}, fillColor = {255, 255, 170}, fillPattern = FillPattern.Solid, extent = {{-86, -16}, {-14, -94}}), Rectangle(lineColor = {28, 108, 200}, fillColor = {255, 255, 170}, fillPattern = FillPattern.Solid, extent = {{-86, 96}, {-14, -10}}), Text(textColor = {28, 108, 200}, extent = {{-72, -2}, {-30, -6}}, textString = "After green, next step is yellow"), Text(textColor = {28, 108, 200}, extent = {{-82, -82}, {-16, -94}}, textString = "Step green should stay active for at least 30 seconds"), Rectangle(lineColor = {28, 108, 200}, fillColor = {255, 255, 170}, fillPattern = FillPattern.Solid, extent = {{16, 96}, {134, -16}}), Text(textColor = {28, 108, 200}, extent = {{24, -4}, {76, -8}}, textString = "After green becomes active + 30 seconds,"), Text(textColor = {28, 108, 200}, extent = {{25, -8}, {81, -14}}, textString = "next step should turn yellow within 0.2 seconds"), Text(textColor = {28, 108, 200}, extent = {{-126, 100}, {-96, 92}}, textString = "red"), Text(textColor = {28, 108, 200}, extent = {{-126, -58}, {-96, -66}}, textString = "green"), Text(textColor = {28, 108, 200}, extent = {{-126, 22}, {-96, 14}}, textString = "yellow"), Text(textColor = {28, 108, 200}, extent = {{-84, 96}, {-58, 86}}, textString = "req1"), Text(textColor = {28, 108, 200}, extent = {{28, 96}, {54, 86}}, textString = "req3"), Text(textColor = {28, 108, 200}, extent = {{-84, -18}, {-58, -28}}, textString = "req2")}), + experiment(StopTime = 100)); +end Spec; diff --git a/resources/modelica_libraries/CRML_test/Examples/TrafficLight/Spec_externals.mo b/resources/modelica_libraries/CRML_test/Examples/TrafficLight/Spec_externals.mo new file mode 100644 index 0000000..85c9662 --- /dev/null +++ b/resources/modelica_libraries/CRML_test/Examples/TrafficLight/Spec_externals.mo @@ -0,0 +1,55 @@ +within CRML_test.Examples.TrafficLight; + +model Spec_externals + Modelica.Blocks.Sources.RealExpression greenObserver(y = phys.greenLamp.i) annotation( + Placement(transformation(extent = {{56, 10}, {30, 30}}))); + Modelica.Blocks.Logical.GreaterEqualThreshold oGreen(threshold = 9) annotation( + Placement(transformation(extent = {{12, 16}, {4, 24}}))); + Modelica.Blocks.Sources.RealExpression yellowObservor(y = phys.yellowLamp.i) annotation( + Placement(transformation(extent = {{56, 30}, {30, 50}}))); + Modelica.Blocks.Logical.GreaterEqualThreshold oYellow(threshold = 9) annotation( + Placement(transformation(extent = {{12, 36}, {4, 44}}))); + Modelica.Blocks.Sources.RealExpression redObserver(y = phys.redLamp.i) annotation( + Placement(transformation(extent = {{56, 50}, {30, 70}}))); + CRML.Examples.TrafficLight.Log2 log annotation( + Placement(transformation(extent = {{148, 30}, {128, 50}}))); + Modelica.Blocks.Logical.GreaterEqualThreshold oRed(threshold = 9) annotation( + Placement(transformation(extent = {{12, 56}, {4, 64}}))); + CRML.Examples.TrafficLight.Phys1 phys annotation( + Placement(transformation(extent = {{108, 30}, {88, 50}}))); + Modelica.Blocks.Sources.BooleanExpression green_active(y = oGreen.y) annotation( + Placement(transformation(extent = {{-30, 10}, {-50, 30}}))); + Modelica.Blocks.Sources.BooleanExpression yellow_active(y = oYellow.y) annotation( + Placement(transformation(extent = {{-30, 30}, {-50, 50}}))); + Modelica.Blocks.Sources.BooleanExpression red_active(y = oRed.y) annotation( + Placement(transformation(extent = {{-30, 50}, {-50, 70}}))); + Modelica.Blocks.Interfaces.BooleanOutput red annotation( + Placement(transformation(origin = {-72, 60}, extent = {{10, -10}, {-10, 10}}), iconTransformation(origin = {-110, 60}, extent = {{-10, -10}, {10, 10}}))); + Modelica.Blocks.Interfaces.BooleanOutput yellow annotation( + Placement(transformation(origin = {-72, 40}, extent = {{10, -10}, {-10, 10}}), iconTransformation(origin = {-110, 0}, extent = {{-10, -10}, {10, 10}}))); + Modelica.Blocks.Interfaces.BooleanOutput green annotation( + Placement(transformation(origin = {-72, 20}, extent = {{10, -10}, {-10, 10}}), iconTransformation(origin = {-110, -60}, extent = {{-10, -10}, {10, 10}}))); +equation + connect(greenObserver.y, oGreen.u) annotation( + Line(points = {{28.7, 20}, {12.8, 20}}, color = {0, 0, 127})); + connect(yellowObservor.y, oYellow.u) annotation( + Line(points = {{28.7, 40}, {12.8, 40}}, color = {0, 0, 127})); + connect(redObserver.y, oRed.u) annotation( + Line(points = {{28.7, 60}, {12.8, 60}}, color = {0, 0, 127})); + connect(phys.green, log.y_green) annotation( + Line(points = {{109, 32}, {114, 32}, {114, 32}, {118, 32}, {118, 32}, {127, 32}}, color = {217, 67, 180})); + connect(phys.yellow, log.y_yellow) annotation( + Line(points = {{109, 40}, {127, 40}}, color = {217, 67, 180})); + connect(phys.red, log.y_red) annotation( + Line(points = {{109, 48}, {114, 48}, {114, 48}, {118, 48}, {118, 48}, {127, 48}}, color = {217, 67, 180})); + connect(red_active.y, red) annotation( + Line(points = {{-50, 60}, {-72, 60}}, color = {255, 0, 255})); + connect(yellow_active.y, yellow) annotation( + Line(points = {{-50, 40}, {-72, 40}}, color = {255, 0, 255})); + connect(green_active.y, green) annotation( + Line(points = {{-50, 20}, {-72, 20}}, color = {255, 0, 255})); + annotation( + Icon(coordinateSystem(preserveAspectRatio = false, extent = {{-100, -100}, {100, 100}})), + Diagram(coordinateSystem(preserveAspectRatio = false, extent = {{-100, -100}, {100, 100}}), graphics = {Rectangle(lineColor = {28, 108, 200}, fillColor = {215, 215, 215}, fillPattern = FillPattern.Solid, extent = {{-150, 90}, {172, -30}}), Rectangle(lineColor = {28, 108, 200}, fillColor = {170, 255, 213}, fillPattern = FillPattern.Solid, extent = {{80, 80}, {158, 0}}), Text(textColor = {28, 108, 200}, extent = {{84, 14}, {156, 4}}, textString = "Behavioral model"), Rectangle(lineColor = {28, 108, 200}, fillColor = {170, 255, 255}, fillPattern = FillPattern.Solid, extent = {{-4, 80}, {60, 0}}), Text(textColor = {28, 108, 200}, extent = {{-10, 12}, {64, 4}}, textString = "Observation model"), Text(textColor = {28, 108, 200}, extent = {{116, 64}, {156, 56}}, textString = "I&C"), Text(textColor = {28, 108, 200}, extent = {{80, 64}, {120, 56}}, textString = "Physical"), Rectangle(lineColor = {28, 108, 200}, fillColor = {255, 213, 170}, fillPattern = FillPattern.Solid, extent = {{-54, 80}, {-26, 0}}), Text(textColor = {28, 108, 200}, extent = {{-76, 12}, {-4, 4}}, textString = "Bindings"), Text(textColor = {28, 108, 200}, extent = {{-66, -8}, {78, -26}}, textString = "Model for computing externals")}), + experiment(StopTime = 100)); +end Spec_externals; diff --git a/resources/modelica_libraries/CRML_test/Examples/TrafficLight/Spec_verif.mo b/resources/modelica_libraries/CRML_test/Examples/TrafficLight/Spec_verif.mo new file mode 100644 index 0000000..4f00294 --- /dev/null +++ b/resources/modelica_libraries/CRML_test/Examples/TrafficLight/Spec_verif.mo @@ -0,0 +1,61 @@ +within CRML_test.Examples.TrafficLight; + +model Spec_verif + Modelica.Blocks.Sources.RealExpression greenObserver(y = phys.greenLamp.i) annotation( + Placement(transformation(extent = {{56, 10}, {30, 30}}))); + Modelica.Blocks.Logical.GreaterEqualThreshold oGreen(threshold = 9) annotation( + Placement(transformation(extent = {{12, 16}, {4, 24}}))); + Modelica.Blocks.Sources.RealExpression yellowObservor(y = phys.yellowLamp.i) annotation( + Placement(transformation(extent = {{56, 30}, {30, 50}}))); + Modelica.Blocks.Logical.GreaterEqualThreshold oYellow(threshold = 9) annotation( + Placement(transformation(extent = {{12, 36}, {4, 44}}))); + Modelica.Blocks.Sources.RealExpression redObserver(y = phys.redLamp.i) annotation( + Placement(transformation(extent = {{56, 50}, {30, 70}}))); + CRML.Examples.TrafficLight.Log2 log annotation( + Placement(transformation(extent = {{148, 30}, {128, 50}}))); + Modelica.Blocks.Logical.GreaterEqualThreshold oRed(threshold = 9) annotation( + Placement(transformation(extent = {{12, 56}, {4, 64}}))); + CRML.Examples.TrafficLight.Phys1 phys annotation( + Placement(transformation(extent = {{108, 30}, {88, 50}}))); + Modelica.Blocks.Sources.BooleanExpression green_active(y = oGreen.y) annotation( + Placement(transformation(extent = {{-30, 10}, {-50, 30}}))); + Modelica.Blocks.Sources.BooleanExpression yellow_active(y = oYellow.y) annotation( + Placement(transformation(extent = {{-30, 30}, {-50, 50}}))); + Modelica.Blocks.Sources.BooleanExpression red_active(y = oRed.y) annotation( + Placement(transformation(extent = {{-30, 50}, {-50, 70}}))); + Modelica.Blocks.Interfaces.BooleanOutput red annotation( + Placement(transformation(origin = {-72, 60}, extent = {{10, -10}, {-10, 10}}, rotation = -0), iconTransformation(origin = {-68, 58}, extent = {{-10, -10}, {10, 10}}))); + Modelica.Blocks.Interfaces.BooleanOutput yellow annotation( + Placement(transformation(origin = {-72, 40}, extent = {{10, -10}, {-10, 10}}), iconTransformation(origin = {-58, 68}, extent = {{-10, -10}, {10, 10}}))); + Modelica.Blocks.Interfaces.BooleanOutput green annotation( + Placement(transformation(origin = {-72, 20}, extent = {{10, -10}, {-10, 10}}), iconTransformation(origin = {-48, 78}, extent = {{-10, -10}, {10, 10}}))); + Spec spec annotation( + Placement(transformation(origin = {-110, 40}, extent = {{13, -10}, {-13, 10}}, rotation = -0))); +equation + // Bindings + spec.red = red; + spec.green = green; + spec.yellow = yellow; + connect(greenObserver.y, oGreen.u) annotation( + Line(points = {{28.7, 20}, {12.8, 20}}, color = {0, 0, 127})); + connect(yellowObservor.y, oYellow.u) annotation( + Line(points = {{28.7, 40}, {12.8, 40}}, color = {0, 0, 127})); + connect(redObserver.y, oRed.u) annotation( + Line(points = {{28.7, 60}, {12.8, 60}}, color = {0, 0, 127})); + connect(phys.green, log.y_green) annotation( + Line(points = {{109, 32}, {114, 32}, {114, 32}, {118, 32}, {118, 32}, {127, 32}}, color = {217, 67, 180})); + connect(phys.yellow, log.y_yellow) annotation( + Line(points = {{109, 40}, {127, 40}}, color = {217, 67, 180})); + connect(phys.red, log.y_red) annotation( + Line(points = {{109, 48}, {114, 48}, {114, 48}, {118, 48}, {118, 48}, {127, 48}}, color = {217, 67, 180})); + connect(red_active.y, red) annotation( + Line(points = {{-50, 60}, {-72, 60}}, color = {255, 0, 255})); + connect(yellow_active.y, yellow) annotation( + Line(points = {{-50, 40}, {-72, 40}}, color = {255, 0, 255})); + connect(green_active.y, green) annotation( + Line(points = {{-50, 20}, {-72, 20}}, color = {255, 0, 255})); + annotation( + Icon(coordinateSystem(preserveAspectRatio = false, extent = {{-160, -40}, {180, 100}}), graphics = {Rectangle(extent = {{-160, 100}, {180, -40}}, lineColor = {28, 108, 200}), Line(points = {{-40, 28}, {0, -30}, {62, 96}}, color = {0, 127, 0}, smooth = Smooth.None, thickness = 1)}), + Diagram(coordinateSystem(preserveAspectRatio = false, extent = {{-160, -40}, {180, 100}}), graphics = {Rectangle(lineColor = {28, 108, 200}, fillColor = {215, 215, 215}, fillPattern = FillPattern.Solid, extent = {{-150, 90}, {172, -30}}), Rectangle(lineColor = {28, 108, 200}, fillColor = {170, 255, 213}, fillPattern = FillPattern.Solid, extent = {{80, 80}, {158, 0}}), Text(textColor = {28, 108, 200}, extent = {{84, 14}, {156, 4}}, textString = "Behavioral model"), Rectangle(lineColor = {28, 108, 200}, fillColor = {170, 255, 255}, fillPattern = FillPattern.Solid, extent = {{-4, 80}, {60, 0}}), Text(textColor = {28, 108, 200}, extent = {{-10, 12}, {64, 4}}, textString = "Observation model"), Text(textColor = {28, 108, 200}, extent = {{116, 64}, {156, 56}}, textString = "I&C"), Text(textColor = {28, 108, 200}, extent = {{80, 64}, {120, 56}}, textString = "Physical"), Rectangle(lineColor = {28, 108, 200}, fillColor = {255, 213, 170}, fillPattern = FillPattern.Solid, extent = {{-54, 80}, {-26, 0}}), Text(textColor = {28, 108, 200}, extent = {{-76, 12}, {-4, 4}}, textString = "Bindings"), Text(textColor = {28, 108, 200}, extent = {{-66, -8}, {78, -26}}, textString = "Model for computing externals")}), + experiment(StopTime = 100)); +end Spec_verif; diff --git a/resources/modelica_libraries/CRML_test/Examples/TrafficLight/package.mo b/resources/modelica_libraries/CRML_test/Examples/TrafficLight/package.mo new file mode 100644 index 0000000..277dc1b --- /dev/null +++ b/resources/modelica_libraries/CRML_test/Examples/TrafficLight/package.mo @@ -0,0 +1,4 @@ +within CRML_test.Examples; + +package TrafficLight +end TrafficLight; diff --git a/resources/modelica_libraries/CRML_test/Examples/TrafficLight/package.order b/resources/modelica_libraries/CRML_test/Examples/TrafficLight/package.order new file mode 100644 index 0000000..d731db0 --- /dev/null +++ b/resources/modelica_libraries/CRML_test/Examples/TrafficLight/package.order @@ -0,0 +1,3 @@ +Spec +Spec_externals +Spec_verif diff --git a/resources/modelica_libraries/CRML_test/Examples/package.mo b/resources/modelica_libraries/CRML_test/Examples/package.mo new file mode 100644 index 0000000..1f19cd2 --- /dev/null +++ b/resources/modelica_libraries/CRML_test/Examples/package.mo @@ -0,0 +1,7 @@ +within CRML_test; + +package Examples + annotation( + Diagram(graphics), + Icon(graphics = {Rectangle(lineColor = {200, 200, 200}, fillColor = {248, 248, 248}, fillPattern = FillPattern.HorizontalCylinder, extent = {{-100, -100}, {100, 100}}, radius = 25), Text(extent = {{-42, 38}, {44, -30}}, textString = "", fontName = "Symbol"), Rectangle(lineColor = {128, 128, 128}, extent = {{-100, -100}, {100, 100}}, radius = 25)})); +end Examples; diff --git a/resources/modelica_libraries/CRML_test/Examples/package.order b/resources/modelica_libraries/CRML_test/Examples/package.order new file mode 100644 index 0000000..1a142bd --- /dev/null +++ b/resources/modelica_libraries/CRML_test/Examples/package.order @@ -0,0 +1 @@ +TrafficLight diff --git a/resources/modelica_libraries/CRML_test/package.order b/resources/modelica_libraries/CRML_test/package.order index ee8f110..b3f309d 100644 --- a/resources/modelica_libraries/CRML_test/package.order +++ b/resources/modelica_libraries/CRML_test/package.order @@ -2,3 +2,4 @@ ETL FORML Spec_doc Utilities +Examples From 769bcca7d45cecb535da53ff3009abf61ade8d15 Mon Sep 17 00:00:00 2001 From: ajardin Date: Mon, 20 Oct 2025 14:37:41 +0200 Subject: [PATCH 2/4] add reference models and results for testing TrafficLight example in the test-suite --- .../TrafficLight/Spec_verif_ref.mat | Bin 0 -> 6006923 bytes .../TrafficLight/Spec.crml | 33 +++++ .../TrafficLight/Spec_simplified.crml | 117 ++++++++++++++++++ .../TrafficLight/Spec_externals.mo | 55 ++++++++ .../TrafficLight/Spec_verif.mo | 61 +++++++++ 5 files changed, 266 insertions(+) create mode 100644 src/test/resources/refResults/crml-modelica-library-examples/TrafficLight/Spec_verif_ref.mat create mode 100644 src/test/resources/testModels/crml-modelica-library-examples/TrafficLight/Spec.crml create mode 100644 src/test/resources/testModels/crml-modelica-library-examples/TrafficLight/Spec_simplified.crml create mode 100644 src/test/resources/verificationModels/crml-modelica-library-examples/TrafficLight/Spec_externals.mo create mode 100644 src/test/resources/verificationModels/crml-modelica-library-examples/TrafficLight/Spec_verif.mo diff --git a/src/test/resources/refResults/crml-modelica-library-examples/TrafficLight/Spec_verif_ref.mat b/src/test/resources/refResults/crml-modelica-library-examples/TrafficLight/Spec_verif_ref.mat new file mode 100644 index 0000000000000000000000000000000000000000..7333f683da144592c84a7a9e37824f019fb545a4 GIT binary patch literal 6006923 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 XgTa5c`)sKNcVTdtHy!k$v84o#d6RXH)Uy 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 ASO5S3 literal 0 HcmV?d00001 diff --git a/src/test/resources/testModels/crml-modelica-library-examples/TrafficLight/Spec.crml b/src/test/resources/testModels/crml-modelica-library-examples/TrafficLight/Spec.crml new file mode 100644 index 0000000..7d89f12 --- /dev/null +++ b/src/test/resources/testModels/crml-modelica-library-examples/TrafficLight/Spec.crml @@ -0,0 +1,33 @@ +model Spec is { + // Import of libraries + flatten {ETL, FORM_L} + union { + + // Requirement model for the traffic light example + + // Definition of Requirement type + //Type Requirement is Boolean ;//forbid { *, +, integrate }; + + // List of external variables + Boolean red is external; + Boolean yellow is external; + Boolean green is external; + + // Definition of requirements + // req1: "After green, next step is yellow" + Requirement req1 is + ( 'after' ( green 'becomes true' ) 'before' ( yellow 'becomes true' ) + 'check count' (red 'becomes true') '==' 0 ); + + // req2: "Step green should stay active for at least 30 seconds" + Requirement req2 is + 'after' (green 'becomes true') 'for' 30 + 'ensure' green; + + // req3: "After green becomes active + 30 seconds, + // next step should turn yellow within 0.2 seconds" + Requirement req3 is + 'after' (green 'becomes true' + 30) 'for' 0.2 + 'check at end' yellow; + +}; diff --git a/src/test/resources/testModels/crml-modelica-library-examples/TrafficLight/Spec_simplified.crml b/src/test/resources/testModels/crml-modelica-library-examples/TrafficLight/Spec_simplified.crml new file mode 100644 index 0000000..e6a06f6 --- /dev/null +++ b/src/test/resources/testModels/crml-modelica-library-examples/TrafficLight/Spec_simplified.crml @@ -0,0 +1,117 @@ +model Spec_simplified is { +// Requirement model for the traffic light example + + // User-defined types and operators + // Definition of Requirement type + //Type Requirement is Boolean; + + // Extract of ETL library + + // Operators on Boolean + // Logical disjunction + Template b1 'or' b2 = not ((not b1) and (not b2)); + + // Operators on events + // Events generated when a Boolean becomes true + Operator [ Clock ] Boolean b 'becomes true' = new Clock b; + + // Filter clock ticks inside a time period + Operator [ Clock ] Clock C 'inside' Period P + = C filter (((tick C) >= (P start)) and ((tick C) <= (P end))); + + // Decide + //Operator 'decide' is + Operator [ Boolean ] 'decide' Boolean phi 'over' Period P = phi 'or' new Boolean((P end)); + + // Operators on clocks + // Count the occurrences of events inside a time period + Operator [ Integer ] 'count' Clock C 'inside' Period P = card (C 'inside' P); + + // Evaluate + Operator [ Boolean ] 'evaluate' Boolean phi 'over' Period P + = integrate (('decide' phi 'over' P) * phi) on P; + + // Operators for the evaluation of requirements + // Check + Operator [ Boolean ] 'check' Boolean phi 'over' Periods P + = and ('evaluate' phi 'over' P); + + // Category c1 is Category increasing1 + //= { (>, >), (>=, >=), (<, >=), (<=, >), (==, >), (<>, >) }; + + Category increasing1 + = { (>, >), (>=, >=), (<, >=), (<=, >), (==, >), (<>, >) }; + //Category {} C1 is associate increasing1 with 'decide'; + + Operator [ Boolean ] 'id' Boolean b = b; + Operator [ Boolean ] 'cte_false' Boolean b = false; + Operator [ Boolean ] 'cte_true' Boolean b = true; + + // Category c3 is Category varying1 = { ('id', 'cte_false') }; + Category varying1 = { ('id', 'cte_false') }; + //Category {} C3 is associate varying1 with 'decide' 'over'; + + Category varying2 = { ('id', 'cte_true') }; + //Category {} C4 is associate varying2 with 'decide' 'over'; + + // Extract of FORM_L library + // After events occur and before events occur + Operator [ Periods ] 'after' Clock ev1 'before' Clock ev2 = new Periods ] ev1, ev2 [; + + // After events occur and for an elapsed time + Operator [ Periods ] 'after' Clock ev 'for' Real d = new Periods ] ev, (ev + d) ]; + + // Checking that the number of event occurrences at the end of a time period is lower or higher than a threshold + // Option 1: without category + Operator [ Boolean ] Periods P 'check count' Clock E '==' Integer n + = 'check'(('count' E 'inside' P) == n) 'over' P; + + // // Option 2 (later support): with category + // Operator [ Boolean ] Periods P 'check count' Clock E '==' Integer n + // = apply increasing1 on ('check'(('count' E 'inside' P) '==' n) 'over' P); + + + // Ensuring that a requirement is satisfied all along a time period + //Option 1: + // Operator [ Boolean ] Periods P 'ensure' Boolean b + // = ('check' (('count' (b 'becomes true') 'inside' P) == 0) 'over' P) and (P 'check anytime' b); + + + + // Checking that a requirement is satisfied at any time instant of a time period + Operator [ Boolean ] Periods P 'check anytime' Boolean b = apply varying2 on ('check' ('id' b) 'over' P); + + // Checking that a requirement is satisfied at the end of a time period + Operator [ Boolean ] Periods P 'check at end' Boolean b = apply varying1 on ('check' ('id' b) 'over' P); + + //Option 2: + Operator [ Boolean ] Periods P 'ensure' Boolean b + = (P 'check count' (b 'becomes true') '==' 0) and (P 'check anytime' b); + + + // List of external variables + Boolean red is external; + Boolean yellow is external; + Boolean green is external; + + // Definition of requirements + // req1: "After green, next step is yellow" + // Requirement req1 is + Boolean req1 is + ('after' (green 'becomes true') 'before' (yellow 'becomes true')) + 'check count' (red 'becomes true') '==' 0; + + // req2: "Step green should stay active for at least 30 seconds" + // Requirement req2 is + Boolean req2 is + ('after' (green 'becomes true') 'for' 30) + 'ensure' green; + + // req3: "After green becomes active + 30 seconds, + // next step should turn yellow within 0.2 seconds" + // Requirement req3 is + Boolean req3 is + ('after' ((green 'becomes true') + 30) 'for' 0.2) + 'check at end' yellow; +}; + diff --git a/src/test/resources/verificationModels/crml-modelica-library-examples/TrafficLight/Spec_externals.mo b/src/test/resources/verificationModels/crml-modelica-library-examples/TrafficLight/Spec_externals.mo new file mode 100644 index 0000000..85c9662 --- /dev/null +++ b/src/test/resources/verificationModels/crml-modelica-library-examples/TrafficLight/Spec_externals.mo @@ -0,0 +1,55 @@ +within CRML_test.Examples.TrafficLight; + +model Spec_externals + Modelica.Blocks.Sources.RealExpression greenObserver(y = phys.greenLamp.i) annotation( + Placement(transformation(extent = {{56, 10}, {30, 30}}))); + Modelica.Blocks.Logical.GreaterEqualThreshold oGreen(threshold = 9) annotation( + Placement(transformation(extent = {{12, 16}, {4, 24}}))); + Modelica.Blocks.Sources.RealExpression yellowObservor(y = phys.yellowLamp.i) annotation( + Placement(transformation(extent = {{56, 30}, {30, 50}}))); + Modelica.Blocks.Logical.GreaterEqualThreshold oYellow(threshold = 9) annotation( + Placement(transformation(extent = {{12, 36}, {4, 44}}))); + Modelica.Blocks.Sources.RealExpression redObserver(y = phys.redLamp.i) annotation( + Placement(transformation(extent = {{56, 50}, {30, 70}}))); + CRML.Examples.TrafficLight.Log2 log annotation( + Placement(transformation(extent = {{148, 30}, {128, 50}}))); + Modelica.Blocks.Logical.GreaterEqualThreshold oRed(threshold = 9) annotation( + Placement(transformation(extent = {{12, 56}, {4, 64}}))); + CRML.Examples.TrafficLight.Phys1 phys annotation( + Placement(transformation(extent = {{108, 30}, {88, 50}}))); + Modelica.Blocks.Sources.BooleanExpression green_active(y = oGreen.y) annotation( + Placement(transformation(extent = {{-30, 10}, {-50, 30}}))); + Modelica.Blocks.Sources.BooleanExpression yellow_active(y = oYellow.y) annotation( + Placement(transformation(extent = {{-30, 30}, {-50, 50}}))); + Modelica.Blocks.Sources.BooleanExpression red_active(y = oRed.y) annotation( + Placement(transformation(extent = {{-30, 50}, {-50, 70}}))); + Modelica.Blocks.Interfaces.BooleanOutput red annotation( + Placement(transformation(origin = {-72, 60}, extent = {{10, -10}, {-10, 10}}), iconTransformation(origin = {-110, 60}, extent = {{-10, -10}, {10, 10}}))); + Modelica.Blocks.Interfaces.BooleanOutput yellow annotation( + Placement(transformation(origin = {-72, 40}, extent = {{10, -10}, {-10, 10}}), iconTransformation(origin = {-110, 0}, extent = {{-10, -10}, {10, 10}}))); + Modelica.Blocks.Interfaces.BooleanOutput green annotation( + Placement(transformation(origin = {-72, 20}, extent = {{10, -10}, {-10, 10}}), iconTransformation(origin = {-110, -60}, extent = {{-10, -10}, {10, 10}}))); +equation + connect(greenObserver.y, oGreen.u) annotation( + Line(points = {{28.7, 20}, {12.8, 20}}, color = {0, 0, 127})); + connect(yellowObservor.y, oYellow.u) annotation( + Line(points = {{28.7, 40}, {12.8, 40}}, color = {0, 0, 127})); + connect(redObserver.y, oRed.u) annotation( + Line(points = {{28.7, 60}, {12.8, 60}}, color = {0, 0, 127})); + connect(phys.green, log.y_green) annotation( + Line(points = {{109, 32}, {114, 32}, {114, 32}, {118, 32}, {118, 32}, {127, 32}}, color = {217, 67, 180})); + connect(phys.yellow, log.y_yellow) annotation( + Line(points = {{109, 40}, {127, 40}}, color = {217, 67, 180})); + connect(phys.red, log.y_red) annotation( + Line(points = {{109, 48}, {114, 48}, {114, 48}, {118, 48}, {118, 48}, {127, 48}}, color = {217, 67, 180})); + connect(red_active.y, red) annotation( + Line(points = {{-50, 60}, {-72, 60}}, color = {255, 0, 255})); + connect(yellow_active.y, yellow) annotation( + Line(points = {{-50, 40}, {-72, 40}}, color = {255, 0, 255})); + connect(green_active.y, green) annotation( + Line(points = {{-50, 20}, {-72, 20}}, color = {255, 0, 255})); + annotation( + Icon(coordinateSystem(preserveAspectRatio = false, extent = {{-100, -100}, {100, 100}})), + Diagram(coordinateSystem(preserveAspectRatio = false, extent = {{-100, -100}, {100, 100}}), graphics = {Rectangle(lineColor = {28, 108, 200}, fillColor = {215, 215, 215}, fillPattern = FillPattern.Solid, extent = {{-150, 90}, {172, -30}}), Rectangle(lineColor = {28, 108, 200}, fillColor = {170, 255, 213}, fillPattern = FillPattern.Solid, extent = {{80, 80}, {158, 0}}), Text(textColor = {28, 108, 200}, extent = {{84, 14}, {156, 4}}, textString = "Behavioral model"), Rectangle(lineColor = {28, 108, 200}, fillColor = {170, 255, 255}, fillPattern = FillPattern.Solid, extent = {{-4, 80}, {60, 0}}), Text(textColor = {28, 108, 200}, extent = {{-10, 12}, {64, 4}}, textString = "Observation model"), Text(textColor = {28, 108, 200}, extent = {{116, 64}, {156, 56}}, textString = "I&C"), Text(textColor = {28, 108, 200}, extent = {{80, 64}, {120, 56}}, textString = "Physical"), Rectangle(lineColor = {28, 108, 200}, fillColor = {255, 213, 170}, fillPattern = FillPattern.Solid, extent = {{-54, 80}, {-26, 0}}), Text(textColor = {28, 108, 200}, extent = {{-76, 12}, {-4, 4}}, textString = "Bindings"), Text(textColor = {28, 108, 200}, extent = {{-66, -8}, {78, -26}}, textString = "Model for computing externals")}), + experiment(StopTime = 100)); +end Spec_externals; diff --git a/src/test/resources/verificationModels/crml-modelica-library-examples/TrafficLight/Spec_verif.mo b/src/test/resources/verificationModels/crml-modelica-library-examples/TrafficLight/Spec_verif.mo new file mode 100644 index 0000000..4f00294 --- /dev/null +++ b/src/test/resources/verificationModels/crml-modelica-library-examples/TrafficLight/Spec_verif.mo @@ -0,0 +1,61 @@ +within CRML_test.Examples.TrafficLight; + +model Spec_verif + Modelica.Blocks.Sources.RealExpression greenObserver(y = phys.greenLamp.i) annotation( + Placement(transformation(extent = {{56, 10}, {30, 30}}))); + Modelica.Blocks.Logical.GreaterEqualThreshold oGreen(threshold = 9) annotation( + Placement(transformation(extent = {{12, 16}, {4, 24}}))); + Modelica.Blocks.Sources.RealExpression yellowObservor(y = phys.yellowLamp.i) annotation( + Placement(transformation(extent = {{56, 30}, {30, 50}}))); + Modelica.Blocks.Logical.GreaterEqualThreshold oYellow(threshold = 9) annotation( + Placement(transformation(extent = {{12, 36}, {4, 44}}))); + Modelica.Blocks.Sources.RealExpression redObserver(y = phys.redLamp.i) annotation( + Placement(transformation(extent = {{56, 50}, {30, 70}}))); + CRML.Examples.TrafficLight.Log2 log annotation( + Placement(transformation(extent = {{148, 30}, {128, 50}}))); + Modelica.Blocks.Logical.GreaterEqualThreshold oRed(threshold = 9) annotation( + Placement(transformation(extent = {{12, 56}, {4, 64}}))); + CRML.Examples.TrafficLight.Phys1 phys annotation( + Placement(transformation(extent = {{108, 30}, {88, 50}}))); + Modelica.Blocks.Sources.BooleanExpression green_active(y = oGreen.y) annotation( + Placement(transformation(extent = {{-30, 10}, {-50, 30}}))); + Modelica.Blocks.Sources.BooleanExpression yellow_active(y = oYellow.y) annotation( + Placement(transformation(extent = {{-30, 30}, {-50, 50}}))); + Modelica.Blocks.Sources.BooleanExpression red_active(y = oRed.y) annotation( + Placement(transformation(extent = {{-30, 50}, {-50, 70}}))); + Modelica.Blocks.Interfaces.BooleanOutput red annotation( + Placement(transformation(origin = {-72, 60}, extent = {{10, -10}, {-10, 10}}, rotation = -0), iconTransformation(origin = {-68, 58}, extent = {{-10, -10}, {10, 10}}))); + Modelica.Blocks.Interfaces.BooleanOutput yellow annotation( + Placement(transformation(origin = {-72, 40}, extent = {{10, -10}, {-10, 10}}), iconTransformation(origin = {-58, 68}, extent = {{-10, -10}, {10, 10}}))); + Modelica.Blocks.Interfaces.BooleanOutput green annotation( + Placement(transformation(origin = {-72, 20}, extent = {{10, -10}, {-10, 10}}), iconTransformation(origin = {-48, 78}, extent = {{-10, -10}, {10, 10}}))); + Spec spec annotation( + Placement(transformation(origin = {-110, 40}, extent = {{13, -10}, {-13, 10}}, rotation = -0))); +equation + // Bindings + spec.red = red; + spec.green = green; + spec.yellow = yellow; + connect(greenObserver.y, oGreen.u) annotation( + Line(points = {{28.7, 20}, {12.8, 20}}, color = {0, 0, 127})); + connect(yellowObservor.y, oYellow.u) annotation( + Line(points = {{28.7, 40}, {12.8, 40}}, color = {0, 0, 127})); + connect(redObserver.y, oRed.u) annotation( + Line(points = {{28.7, 60}, {12.8, 60}}, color = {0, 0, 127})); + connect(phys.green, log.y_green) annotation( + Line(points = {{109, 32}, {114, 32}, {114, 32}, {118, 32}, {118, 32}, {127, 32}}, color = {217, 67, 180})); + connect(phys.yellow, log.y_yellow) annotation( + Line(points = {{109, 40}, {127, 40}}, color = {217, 67, 180})); + connect(phys.red, log.y_red) annotation( + Line(points = {{109, 48}, {114, 48}, {114, 48}, {118, 48}, {118, 48}, {127, 48}}, color = {217, 67, 180})); + connect(red_active.y, red) annotation( + Line(points = {{-50, 60}, {-72, 60}}, color = {255, 0, 255})); + connect(yellow_active.y, yellow) annotation( + Line(points = {{-50, 40}, {-72, 40}}, color = {255, 0, 255})); + connect(green_active.y, green) annotation( + Line(points = {{-50, 20}, {-72, 20}}, color = {255, 0, 255})); + annotation( + Icon(coordinateSystem(preserveAspectRatio = false, extent = {{-160, -40}, {180, 100}}), graphics = {Rectangle(extent = {{-160, 100}, {180, -40}}, lineColor = {28, 108, 200}), Line(points = {{-40, 28}, {0, -30}, {62, 96}}, color = {0, 127, 0}, smooth = Smooth.None, thickness = 1)}), + Diagram(coordinateSystem(preserveAspectRatio = false, extent = {{-160, -40}, {180, 100}}), graphics = {Rectangle(lineColor = {28, 108, 200}, fillColor = {215, 215, 215}, fillPattern = FillPattern.Solid, extent = {{-150, 90}, {172, -30}}), Rectangle(lineColor = {28, 108, 200}, fillColor = {170, 255, 213}, fillPattern = FillPattern.Solid, extent = {{80, 80}, {158, 0}}), Text(textColor = {28, 108, 200}, extent = {{84, 14}, {156, 4}}, textString = "Behavioral model"), Rectangle(lineColor = {28, 108, 200}, fillColor = {170, 255, 255}, fillPattern = FillPattern.Solid, extent = {{-4, 80}, {60, 0}}), Text(textColor = {28, 108, 200}, extent = {{-10, 12}, {64, 4}}, textString = "Observation model"), Text(textColor = {28, 108, 200}, extent = {{116, 64}, {156, 56}}, textString = "I&C"), Text(textColor = {28, 108, 200}, extent = {{80, 64}, {120, 56}}, textString = "Physical"), Rectangle(lineColor = {28, 108, 200}, fillColor = {255, 213, 170}, fillPattern = FillPattern.Solid, extent = {{-54, 80}, {-26, 0}}), Text(textColor = {28, 108, 200}, extent = {{-76, 12}, {-4, 4}}, textString = "Bindings"), Text(textColor = {28, 108, 200}, extent = {{-66, -8}, {78, -26}}, textString = "Model for computing externals")}), + experiment(StopTime = 100)); +end Spec_verif; From ef40c9099cd4ef9d273f81c8b570caf8362573bb Mon Sep 17 00:00:00 2001 From: ajardin Date: Thu, 23 Oct 2025 10:00:32 +0200 Subject: [PATCH 3/4] minor fixes for SRI reference models --- .../Reqs_sri_CRML_externals.mo | 22 +++++++--------- .../ics_educational/Reqs_sri_CRML_verif.mo | 17 ++++++------ .../Verification/Reqs_sri_CRML.mo | 26 +++++++++---------- .../Verification/Reqs_sri_CRML_externals.mo | 20 +++++++------- .../Verification/Reqs_sri_CRML_verif.mo | 15 ++++++----- .../cooling_system/Verification/package.order | 4 +-- 6 files changed, 51 insertions(+), 53 deletions(-) diff --git a/src/test/resources/verificationModels/use-cases/ics_educational/Reqs_sri_CRML_externals.mo b/src/test/resources/verificationModels/use-cases/ics_educational/Reqs_sri_CRML_externals.mo index 48d7025..1621eef 100644 --- a/src/test/resources/verificationModels/use-cases/ics_educational/Reqs_sri_CRML_externals.mo +++ b/src/test/resources/verificationModels/use-cases/ics_educational/Reqs_sri_CRML_externals.mo @@ -1,5 +1,3 @@ -within cooling_system.Verification; - model Reqs_sri_CRML_externals import cooling_system; Modelica.Blocks.Sources.RealExpression Q_echangeur_1(y = SRI_corrige.EchangeurAPlaques1D1.Ec.Q) annotation( @@ -61,23 +59,23 @@ model Reqs_sri_CRML_externals Modelica.Blocks.Sources.RealExpression T_output_sf(y = SRI_corrige.EchangeurAPlaques1D2.Tsf) annotation( Placement(transformation(origin = {27, -190}, extent = {{-17, -14}, {17, 14}}))); Modelica.Blocks.Interfaces.RealOutput v1 annotation( - Placement(transformation(origin = {270, 60}, extent = {{-10, -10}, {10, 10}}), iconTransformation(origin = {270, 60}, extent = {{-10, -10}, {10, 10}}))); + Placement(transformation(origin = {270, 60}, extent = {{-10, -10}, {10, 10}}), iconTransformation(origin = {290, 60}, extent = {{-10, -10}, {10, 10}}))); Modelica.Blocks.Interfaces.RealOutput v2 annotation( - Placement(transformation(origin = {270, 40}, extent = {{-10, -10}, {10, 10}}), iconTransformation(origin = {270, 20}, extent = {{-10, -10}, {10, 10}}))); + Placement(transformation(origin = {270, 40}, extent = {{-10, -10}, {10, 10}}), iconTransformation(origin = {290, 20}, extent = {{-10, -10}, {10, 10}}))); Modelica.Blocks.Interfaces.BooleanOutput pump_in_service1 annotation( - Placement(transformation(origin = {270, 10}, extent = {{-10, -10}, {10, 10}}), iconTransformation(origin = {270, -60}, extent = {{-10, -10}, {10, 10}}))); + Placement(transformation(origin = {270, 10}, extent = {{-10, -10}, {10, 10}}), iconTransformation(origin = {290, -60}, extent = {{-10, -10}, {10, 10}}))); Modelica.Blocks.Interfaces.BooleanOutput pump_in_service2 annotation( - Placement(transformation(origin = {270, -46}, extent = {{-10, -10}, {10, 10}}), iconTransformation(origin = {270, -120}, extent = {{-10, -10}, {10, 10}}))); + Placement(transformation(origin = {270, -46}, extent = {{-10, -10}, {10, 10}}), iconTransformation(origin = {290, -120}, extent = {{-10, -10}, {10, 10}}))); Modelica.Blocks.Interfaces.BooleanOutput pump_in_service3 annotation( - Placement(transformation(origin = {270, -100}, extent = {{-10, -10}, {10, 10}}), iconTransformation(origin = {270, -180}, extent = {{-10, -10}, {10, 10}}))); + Placement(transformation(origin = {270, -100}, extent = {{-10, -10}, {10, 10}}), iconTransformation(origin = {290, -180}, extent = {{-10, -10}, {10, 10}}))); Modelica.Blocks.Interfaces.RealOutput flow1 annotation( - Placement(transformation(origin = {270, -12}, extent = {{-10, -10}, {10, 10}}), iconTransformation(origin = {270, -80}, extent = {{-10, -10}, {10, 10}}))); + Placement(transformation(origin = {270, -12}, extent = {{-10, -10}, {10, 10}}), iconTransformation(origin = {290, -80}, extent = {{-10, -10}, {10, 10}}))); Modelica.Blocks.Interfaces.RealOutput flow2 annotation( - Placement(transformation(origin = {270, -70}, extent = {{-10, -10}, {10, 10}}), iconTransformation(origin = {270, -140}, extent = {{-10, -10}, {10, 10}}))); + Placement(transformation(origin = {270, -70}, extent = {{-10, -10}, {10, 10}}), iconTransformation(origin = {290, -140}, extent = {{-10, -10}, {10, 10}}))); Modelica.Blocks.Interfaces.RealOutput flow3 annotation( - Placement(transformation(origin = {270, -130}, extent = {{-10, -10}, {10, 10}}), iconTransformation(origin = {270, -200}, extent = {{-10, -10}, {10, 10}}))); + Placement(transformation(origin = {270, -130}, extent = {{-10, -10}, {10, 10}}), iconTransformation(origin = {290, -200}, extent = {{-10, -10}, {10, 10}}))); Modelica.Blocks.Interfaces.RealOutput T annotation( - Placement(transformation(origin = {270, -200}, extent = {{-10, -10}, {10, 10}}), iconTransformation(origin = {270, -240}, extent = {{-10, -10}, {10, 10}}))); + Placement(transformation(origin = {270, -200}, extent = {{-10, -10}, {10, 10}}), iconTransformation(origin = {290, -240}, extent = {{-10, -10}, {10, 10}}))); equation connect(Q_echangeur_1.y, flowToSpeed.u) annotation( Line(points = {{45.7, 64}, {57.4, 64}, {57.4, 65.2}, {66, 65.2}}, color = {0, 0, 127})); @@ -123,6 +121,6 @@ equation Line(points = {{270, 60}, {178, 60}, {178, 66}, {90, 66}}, color = {0, 0, 127})); annotation( Diagram(graphics = {Rectangle(origin = {56, -70}, fillColor = {143, 240, 164}, fillPattern = FillPattern.Solid, extent = {{-52, 166}, {52, -166}}), Text(origin = {53, 87}, extent = {{-27, 9}, {27, -9}}, textString = "Observers"), Rectangle(origin = {-127, 0}, fillColor = {255, 190, 111}, fillPattern = FillPattern.Solid, extent = {{-67, 96}, {67, -96}}), Text(origin = {-131, 87}, extent = {{-35, 7}, {35, -7}}, textString = "Scenarios")}, coordinateSystem(extent = {{-200, 100}, {260, -240}})), - Icon(coordinateSystem(extent = {{-200, -300}, {260, 100}})), + Icon(coordinateSystem(extent = {{-200, 100}, {280, -300}}), graphics = {Rectangle(origin = {39, -104}, fillColor = {255, 255, 255}, fillPattern = FillPattern.Solid, extent = {{-241, 204}, {241, -196}}), Text(origin = {70, -38}, extent = {{-14, -102}, {-96, -2}}, textString = "%name")}), experiment(StartTime = 0, StopTime = 1000, Tolerance = 1e-06, Interval = 2)); end Reqs_sri_CRML_externals; diff --git a/src/test/resources/verificationModels/use-cases/ics_educational/Reqs_sri_CRML_verif.mo b/src/test/resources/verificationModels/use-cases/ics_educational/Reqs_sri_CRML_verif.mo index 69305f3..9e4412a 100644 --- a/src/test/resources/verificationModels/use-cases/ics_educational/Reqs_sri_CRML_verif.mo +++ b/src/test/resources/verificationModels/use-cases/ics_educational/Reqs_sri_CRML_verif.mo @@ -1,8 +1,6 @@ -within cooling_system.Verification; - model Reqs_sri_CRML_verif Reqs_sri_CRML_externals externals annotation( - Placement(transformation(origin = {-206, 40}, extent = {{-23, -20}, {23, 20}}))); + Placement(transformation(origin = {-216, 20}, extent = {{-23, -20}, {23, 20}}))); inner CRML.TimeLocators.Continuous.Master master annotation( Placement(transformation(origin = {-392, 168}, extent = {{232, -228}, {252, -208}}))); CRML.Blocks.Logical.BooleanPulse booleanPulse(period = 1000, startTime = 10, width = 980) annotation( @@ -10,9 +8,9 @@ model Reqs_sri_CRML_verif CRML.Blocks.Logical4.BooleanToBoolean4 booleanToBoolean4_1 annotation( Placement(transformation(origin = {-402, 168}, extent = {{218, -222}, {226, -214}}))); Reqs_sri_CRML reqs annotation( - Placement(transformation(origin = {-130, 4}, extent = {{-14, -13}, {14, 13}}))); + Placement(transformation(origin = {-154, 20}, extent = {{-14, -13}, {14, 13}}))); equation - // Bindings +// Bindings reqs.v1 = externals.v1; reqs.v2 = externals.v2; reqs.pump_in_service1 = externals.pump_in_service1; @@ -21,12 +19,13 @@ equation reqs.flow1 = externals.flow1; reqs.flow2 = externals.flow2; reqs.flow3 = externals.flow3; - reqs.T = externals.T ; + reqs.T = externals.T; connect(booleanPulse.y, booleanToBoolean4_1.u) annotation( Line(points = {{-199, -50}, {-184, -50}}, color = {217, 67, 180})); connect(master.u, booleanToBoolean4_1.y) annotation( Line(points = {{-161, -50}, {-176, -50}}, color = {162, 29, 33})); - -annotation( - Diagram(coordinateSystem(extent = {{-240, 60}, {-140, -60}}))); + annotation( + Diagram(coordinateSystem(extent = {{-240, 60}, {-140, -60}}), graphics), + Icon(graphics = {Rectangle(fillColor = {255, 255, 255}, fillPattern = FillPattern.Solid, extent = {{-100, 100}, {100, -100}}), 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}})}), + experiment(StartTime = 0, StopTime = 1000, Tolerance = 1e-06, Interval = 2)); end Reqs_sri_CRML_verif; diff --git a/src/test/resources/verificationModels/use-cases/ics_educational/lib/SRI_v4_EI/cooling_system/Verification/Reqs_sri_CRML.mo b/src/test/resources/verificationModels/use-cases/ics_educational/lib/SRI_v4_EI/cooling_system/Verification/Reqs_sri_CRML.mo index d95831f..6bc0ae5 100644 --- a/src/test/resources/verificationModels/use-cases/ics_educational/lib/SRI_v4_EI/cooling_system/Verification/Reqs_sri_CRML.mo +++ b/src/test/resources/verificationModels/use-cases/ics_educational/lib/SRI_v4_EI/cooling_system/Verification/Reqs_sri_CRML.mo @@ -2,15 +2,15 @@ within cooling_system.Verification; model Reqs_sri_CRML Modelica.Blocks.Interfaces.RealInput T annotation( - Placement(transformation(origin = {-160, -140}, extent = {{-20, -20}, {20, 20}}), iconTransformation(origin = {-120, -100}, extent = {{-20, -20}, {20, 20}}))); + Placement(transformation(origin = {-160, -140}, extent = {{-20, -20}, {20, 20}}), iconTransformation(origin = {-200, -100}, extent = {{-20, -20}, {20, 20}}))); CRML.ETL.Connectors.Boolean4Output R_speed_all annotation( - Placement(transformation(origin = {140, -20}, extent = {{100, 40}, {120, 60}}), iconTransformation(extent = {{100, 40}, {120, 60}}))); + Placement(transformation(origin = {140, -20}, extent = {{100, 40}, {120, 60}}), iconTransformation(origin = {60, 70}, extent = {{100, 40}, {120, 60}}))); CRML.ETL.Connectors.Boolean4Output R_flow_all annotation( - Placement(transformation(origin = {140, -48}, extent = {{100, 8}, {120, 28}}), iconTransformation(origin = {0, 54}, extent = {{100, -54}, {120, -34}}))); + Placement(transformation(origin = {140, -48}, extent = {{100, 8}, {120, 28}}), iconTransformation(origin = {60, 104}, extent = {{100, -54}, {120, -34}}))); outer CRML.TimeLocators.Continuous.Master master annotation( Placement(transformation(origin = {70, 76}, extent = {{-10, -10}, {10, 10}}))); CRML.ETL.Connectors.Boolean4Output R_T annotation( - Placement(transformation(origin = {140, -148}, extent = {{100, 8}, {120, 28}}), iconTransformation(origin = {0, -12}, extent = {{100, -54}, {120, -34}}))); + Placement(transformation(origin = {140, -148}, extent = {{100, 8}, {120, 28}}), iconTransformation(origin = {60, -16}, extent = {{100, -54}, {120, -34}}))); Verification.Requirements.Req_speed_all_CRML req_speed_all_CRML annotation( Placement(transformation(origin = {-172, -22}, extent = {{212, 42}, {232, 62}}))); Verification.Requirements.Req_flow_all_CRML req_flow_all_CRML annotation( @@ -18,21 +18,21 @@ model Reqs_sri_CRML Verification.Requirements.Req_Tsri_CRML req_Tsri_CRML annotation( Placement(transformation(origin = {-170, 20}, extent = {{210, -158}, {230, -138}}))); Modelica.Blocks.Interfaces.RealInput v1 annotation( - Placement(transformation(origin = {-160, 60}, extent = {{-20, -20}, {20, 20}}), iconTransformation(origin = {-120, 100}, extent = {{-20, -20}, {20, 20}}))); + Placement(transformation(origin = {-160, 60}, extent = {{-20, -20}, {20, 20}}), iconTransformation(origin = {-200, 200}, extent = {{-20, -20}, {20, 20}}))); Modelica.Blocks.Interfaces.RealInput v2 annotation( - Placement(transformation(origin = {-160, 40}, extent = {{-20, -20}, {20, 20}}), iconTransformation(origin = {-120, 80}, extent = {{-20, -20}, {20, 20}}))); + Placement(transformation(origin = {-160, 40}, extent = {{-20, -20}, {20, 20}}), iconTransformation(origin = {-200, 180}, extent = {{-20, -20}, {20, 20}}))); Modelica.Blocks.Interfaces.RealInput flow1 annotation( - Placement(transformation(origin = {-160, -10}, extent = {{-20, -20}, {20, 20}}), iconTransformation(origin = {-120, 20}, extent = {{-20, -20}, {20, 20}}))); + Placement(transformation(origin = {-160, -10}, extent = {{-20, -20}, {20, 20}}), iconTransformation(origin = {-200, 20}, extent = {{-20, -20}, {20, 20}}))); Modelica.Blocks.Interfaces.RealInput flow2 annotation( - Placement(transformation(origin = {-160, -60}, extent = {{-20, -20}, {20, 20}}), iconTransformation(origin = {-120, -20}, extent = {{-20, -20}, {20, 20}}))); + Placement(transformation(origin = {-160, -60}, extent = {{-20, -20}, {20, 20}}), iconTransformation(origin = {-200, -20}, extent = {{-20, -20}, {20, 20}}))); Modelica.Blocks.Interfaces.RealInput flow3 annotation( - Placement(transformation(origin = {-160, -110}, extent = {{-20, -20}, {20, 20}}), iconTransformation(origin = {-120, -60}, extent = {{-20, -20}, {20, 20}}))); + Placement(transformation(origin = {-160, -110}, extent = {{-20, -20}, {20, 20}}), iconTransformation(origin = {-200, -60}, extent = {{-20, -20}, {20, 20}}))); Modelica.Blocks.Interfaces.BooleanInput pump_in_service1 annotation( - Placement(transformation(origin = {-160, 10}, extent = {{-20, -20}, {20, 20}}), iconTransformation(origin = {-120, 40}, extent = {{-20, -20}, {20, 20}}))); + Placement(transformation(origin = {-160, 10}, extent = {{-20, -20}, {20, 20}}), iconTransformation(origin = {-200, 140}, extent = {{-20, -20}, {20, 20}}))); Modelica.Blocks.Interfaces.BooleanInput pump_in_service2 annotation( - Placement(transformation(origin = {-160, -40}, extent = {{-20, -20}, {20, 20}}), iconTransformation(origin = {-120, 0}, extent = {{-20, -20}, {20, 20}}))); + Placement(transformation(origin = {-160, -40}, extent = {{-20, -20}, {20, 20}}), iconTransformation(origin = {-200, 100}, extent = {{-20, -20}, {20, 20}}))); Modelica.Blocks.Interfaces.BooleanInput pump_in_service3 annotation( - Placement(transformation(origin = {-160, -90}, extent = {{-20, -20}, {20, 20}}), iconTransformation(origin = {-120, -40}, extent = {{-20, -20}, {20, 20}}))); + Placement(transformation(origin = {-160, -90}, extent = {{-20, -20}, {20, 20}}), iconTransformation(origin = {-200, 60}, extent = {{-20, -20}, {20, 20}}))); equation connect(R_flow_all, R_flow_all) annotation( Line(points = {{250, -30}, {250, -30}}, color = {162, 29, 33})); @@ -63,6 +63,6 @@ equation connect(req_Tsri_CRML.R_T, R_T) annotation( Line(points = {{58, -134}, {250, -134}, {250, -130}}, color = {162, 29, 33})); annotation( - Icon(graphics = {Rectangle(fillColor = {128, 0, 255}, fillPattern = FillPattern.Solid, extent = {{-100, 100}, {100, -100}}), Text(origin = {-6, 124}, extent = {{-136, 30}, {136, -30}}, textString = "%name")}, coordinateSystem(extent = {{-140, 160}, {140, -100}})), + Icon(graphics = {Rectangle(origin = {-10, 60},fillColor = {128, 0, 255}, fillPattern = FillPattern.Solid, extent = {{-170, 160}, {170, -160}}), Text(origin = {-30, 244}, extent = {{-136, 30}, {136, -30}}, textString = "%name")}, coordinateSystem(extent = {{-180, 220}, {160, -100}})), Diagram(coordinateSystem(extent = {{-180, 80}, {260, -160}}))); end Reqs_sri_CRML; diff --git a/src/test/resources/verificationModels/use-cases/ics_educational/lib/SRI_v4_EI/cooling_system/Verification/Reqs_sri_CRML_externals.mo b/src/test/resources/verificationModels/use-cases/ics_educational/lib/SRI_v4_EI/cooling_system/Verification/Reqs_sri_CRML_externals.mo index 48d7025..e7c894c 100644 --- a/src/test/resources/verificationModels/use-cases/ics_educational/lib/SRI_v4_EI/cooling_system/Verification/Reqs_sri_CRML_externals.mo +++ b/src/test/resources/verificationModels/use-cases/ics_educational/lib/SRI_v4_EI/cooling_system/Verification/Reqs_sri_CRML_externals.mo @@ -61,23 +61,23 @@ model Reqs_sri_CRML_externals Modelica.Blocks.Sources.RealExpression T_output_sf(y = SRI_corrige.EchangeurAPlaques1D2.Tsf) annotation( Placement(transformation(origin = {27, -190}, extent = {{-17, -14}, {17, 14}}))); Modelica.Blocks.Interfaces.RealOutput v1 annotation( - Placement(transformation(origin = {270, 60}, extent = {{-10, -10}, {10, 10}}), iconTransformation(origin = {270, 60}, extent = {{-10, -10}, {10, 10}}))); + Placement(transformation(origin = {270, 60}, extent = {{-10, -10}, {10, 10}}), iconTransformation(origin = {290, 60}, extent = {{-10, -10}, {10, 10}}))); Modelica.Blocks.Interfaces.RealOutput v2 annotation( - Placement(transformation(origin = {270, 40}, extent = {{-10, -10}, {10, 10}}), iconTransformation(origin = {270, 20}, extent = {{-10, -10}, {10, 10}}))); + Placement(transformation(origin = {270, 40}, extent = {{-10, -10}, {10, 10}}), iconTransformation(origin = {290, 20}, extent = {{-10, -10}, {10, 10}}))); Modelica.Blocks.Interfaces.BooleanOutput pump_in_service1 annotation( - Placement(transformation(origin = {270, 10}, extent = {{-10, -10}, {10, 10}}), iconTransformation(origin = {270, -60}, extent = {{-10, -10}, {10, 10}}))); + Placement(transformation(origin = {270, 10}, extent = {{-10, -10}, {10, 10}}), iconTransformation(origin = {290, -60}, extent = {{-10, -10}, {10, 10}}))); Modelica.Blocks.Interfaces.BooleanOutput pump_in_service2 annotation( - Placement(transformation(origin = {270, -46}, extent = {{-10, -10}, {10, 10}}), iconTransformation(origin = {270, -120}, extent = {{-10, -10}, {10, 10}}))); + Placement(transformation(origin = {270, -46}, extent = {{-10, -10}, {10, 10}}), iconTransformation(origin = {290, -120}, extent = {{-10, -10}, {10, 10}}))); Modelica.Blocks.Interfaces.BooleanOutput pump_in_service3 annotation( - Placement(transformation(origin = {270, -100}, extent = {{-10, -10}, {10, 10}}), iconTransformation(origin = {270, -180}, extent = {{-10, -10}, {10, 10}}))); + Placement(transformation(origin = {270, -100}, extent = {{-10, -10}, {10, 10}}), iconTransformation(origin = {290, -180}, extent = {{-10, -10}, {10, 10}}))); Modelica.Blocks.Interfaces.RealOutput flow1 annotation( - Placement(transformation(origin = {270, -12}, extent = {{-10, -10}, {10, 10}}), iconTransformation(origin = {270, -80}, extent = {{-10, -10}, {10, 10}}))); + Placement(transformation(origin = {270, -12}, extent = {{-10, -10}, {10, 10}}), iconTransformation(origin = {290, -80}, extent = {{-10, -10}, {10, 10}}))); Modelica.Blocks.Interfaces.RealOutput flow2 annotation( - Placement(transformation(origin = {270, -70}, extent = {{-10, -10}, {10, 10}}), iconTransformation(origin = {270, -140}, extent = {{-10, -10}, {10, 10}}))); + Placement(transformation(origin = {270, -70}, extent = {{-10, -10}, {10, 10}}), iconTransformation(origin = {290, -140}, extent = {{-10, -10}, {10, 10}}))); Modelica.Blocks.Interfaces.RealOutput flow3 annotation( - Placement(transformation(origin = {270, -130}, extent = {{-10, -10}, {10, 10}}), iconTransformation(origin = {270, -200}, extent = {{-10, -10}, {10, 10}}))); + Placement(transformation(origin = {270, -130}, extent = {{-10, -10}, {10, 10}}), iconTransformation(origin = {290, -200}, extent = {{-10, -10}, {10, 10}}))); Modelica.Blocks.Interfaces.RealOutput T annotation( - Placement(transformation(origin = {270, -200}, extent = {{-10, -10}, {10, 10}}), iconTransformation(origin = {270, -240}, extent = {{-10, -10}, {10, 10}}))); + Placement(transformation(origin = {270, -200}, extent = {{-10, -10}, {10, 10}}), iconTransformation(origin = {290, -240}, extent = {{-10, -10}, {10, 10}}))); equation connect(Q_echangeur_1.y, flowToSpeed.u) annotation( Line(points = {{45.7, 64}, {57.4, 64}, {57.4, 65.2}, {66, 65.2}}, color = {0, 0, 127})); @@ -123,6 +123,6 @@ equation Line(points = {{270, 60}, {178, 60}, {178, 66}, {90, 66}}, color = {0, 0, 127})); annotation( Diagram(graphics = {Rectangle(origin = {56, -70}, fillColor = {143, 240, 164}, fillPattern = FillPattern.Solid, extent = {{-52, 166}, {52, -166}}), Text(origin = {53, 87}, extent = {{-27, 9}, {27, -9}}, textString = "Observers"), Rectangle(origin = {-127, 0}, fillColor = {255, 190, 111}, fillPattern = FillPattern.Solid, extent = {{-67, 96}, {67, -96}}), Text(origin = {-131, 87}, extent = {{-35, 7}, {35, -7}}, textString = "Scenarios")}, coordinateSystem(extent = {{-200, 100}, {260, -240}})), - Icon(coordinateSystem(extent = {{-200, -300}, {260, 100}})), + Icon(coordinateSystem(extent = {{-200, 100}, {280, -300}}), graphics = {Rectangle(origin = {39, -104}, fillColor = {255, 255, 255}, fillPattern = FillPattern.Solid, extent = {{-241, 204}, {241, -196}}), Text(origin = {70, -38}, extent = {{-14, -102}, {-96, -2}}, textString = "%name")}), experiment(StartTime = 0, StopTime = 1000, Tolerance = 1e-06, Interval = 2)); end Reqs_sri_CRML_externals; diff --git a/src/test/resources/verificationModels/use-cases/ics_educational/lib/SRI_v4_EI/cooling_system/Verification/Reqs_sri_CRML_verif.mo b/src/test/resources/verificationModels/use-cases/ics_educational/lib/SRI_v4_EI/cooling_system/Verification/Reqs_sri_CRML_verif.mo index 69305f3..341ea01 100644 --- a/src/test/resources/verificationModels/use-cases/ics_educational/lib/SRI_v4_EI/cooling_system/Verification/Reqs_sri_CRML_verif.mo +++ b/src/test/resources/verificationModels/use-cases/ics_educational/lib/SRI_v4_EI/cooling_system/Verification/Reqs_sri_CRML_verif.mo @@ -2,7 +2,7 @@ within cooling_system.Verification; model Reqs_sri_CRML_verif Reqs_sri_CRML_externals externals annotation( - Placement(transformation(origin = {-206, 40}, extent = {{-23, -20}, {23, 20}}))); + Placement(transformation(origin = {-216, 20}, extent = {{-23, -20}, {23, 20}}))); inner CRML.TimeLocators.Continuous.Master master annotation( Placement(transformation(origin = {-392, 168}, extent = {{232, -228}, {252, -208}}))); CRML.Blocks.Logical.BooleanPulse booleanPulse(period = 1000, startTime = 10, width = 980) annotation( @@ -10,9 +10,9 @@ model Reqs_sri_CRML_verif CRML.Blocks.Logical4.BooleanToBoolean4 booleanToBoolean4_1 annotation( Placement(transformation(origin = {-402, 168}, extent = {{218, -222}, {226, -214}}))); Reqs_sri_CRML reqs annotation( - Placement(transformation(origin = {-130, 4}, extent = {{-14, -13}, {14, 13}}))); + Placement(transformation(origin = {-154, 20}, extent = {{-14, -13}, {14, 13}}))); equation - // Bindings +// Bindings reqs.v1 = externals.v1; reqs.v2 = externals.v2; reqs.pump_in_service1 = externals.pump_in_service1; @@ -21,12 +21,13 @@ equation reqs.flow1 = externals.flow1; reqs.flow2 = externals.flow2; reqs.flow3 = externals.flow3; - reqs.T = externals.T ; + reqs.T = externals.T; connect(booleanPulse.y, booleanToBoolean4_1.u) annotation( Line(points = {{-199, -50}, {-184, -50}}, color = {217, 67, 180})); connect(master.u, booleanToBoolean4_1.y) annotation( Line(points = {{-161, -50}, {-176, -50}}, color = {162, 29, 33})); - -annotation( - Diagram(coordinateSystem(extent = {{-240, 60}, {-140, -60}}))); + annotation( + Diagram(coordinateSystem(extent = {{-240, 60}, {-140, -60}}), graphics), + Icon(graphics = {Rectangle(fillColor = {255, 255, 255}, fillPattern = FillPattern.Solid, extent = {{-100, 100}, {100, -100}}), 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}})}), + experiment(StartTime = 0, StopTime = 1000, Tolerance = 1e-06, Interval = 2)); end Reqs_sri_CRML_verif; diff --git a/src/test/resources/verificationModels/use-cases/ics_educational/lib/SRI_v4_EI/cooling_system/Verification/package.order b/src/test/resources/verificationModels/use-cases/ics_educational/lib/SRI_v4_EI/cooling_system/Verification/package.order index b9180c6..432f78a 100644 --- a/src/test/resources/verificationModels/use-cases/ics_educational/lib/SRI_v4_EI/cooling_system/Verification/package.order +++ b/src/test/resources/verificationModels/use-cases/ics_educational/lib/SRI_v4_EI/cooling_system/Verification/package.order @@ -1,8 +1,8 @@ Scenarios Observers Requirements -Reqs_sri_CRML Verif Verif_corrige -Reqs_sri_CRML_verif +Reqs_sri_CRML Reqs_sri_CRML_externals +Reqs_sri_CRML_verif From 8dd58b96c905d633d9ec3a93f42ea67eb7d9b710 Mon Sep 17 00:00:00 2001 From: ajardin Date: Thu, 23 Oct 2025 10:02:26 +0200 Subject: [PATCH 4/4] minor fixes for Traffic Light reference models --- .../TrafficLight/Spec_externals.mo | 2 -- .../crml-modelica-library-examples/TrafficLight/Spec_verif.mo | 2 -- 2 files changed, 4 deletions(-) diff --git a/src/test/resources/verificationModels/crml-modelica-library-examples/TrafficLight/Spec_externals.mo b/src/test/resources/verificationModels/crml-modelica-library-examples/TrafficLight/Spec_externals.mo index 85c9662..d46c5f5 100644 --- a/src/test/resources/verificationModels/crml-modelica-library-examples/TrafficLight/Spec_externals.mo +++ b/src/test/resources/verificationModels/crml-modelica-library-examples/TrafficLight/Spec_externals.mo @@ -1,5 +1,3 @@ -within CRML_test.Examples.TrafficLight; - model Spec_externals Modelica.Blocks.Sources.RealExpression greenObserver(y = phys.greenLamp.i) annotation( Placement(transformation(extent = {{56, 10}, {30, 30}}))); diff --git a/src/test/resources/verificationModels/crml-modelica-library-examples/TrafficLight/Spec_verif.mo b/src/test/resources/verificationModels/crml-modelica-library-examples/TrafficLight/Spec_verif.mo index 4f00294..9fb5c45 100644 --- a/src/test/resources/verificationModels/crml-modelica-library-examples/TrafficLight/Spec_verif.mo +++ b/src/test/resources/verificationModels/crml-modelica-library-examples/TrafficLight/Spec_verif.mo @@ -1,5 +1,3 @@ -within CRML_test.Examples.TrafficLight; - model Spec_verif Modelica.Blocks.Sources.RealExpression greenObserver(y = phys.greenLamp.i) annotation( Placement(transformation(extent = {{56, 10}, {30, 30}})));