浏览代码

cbd modelling exercise

Claudio Gomes 6 年之前
父节点
当前提交
6966fa0a4c

+ 4 - 8
materials/notebooks/1-NewtonsLaws/NewtonsLaws.ipynb

@@ -4,7 +4,7 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "# Exercise: Mass-Spring System Derivation"
+    "# Exercise 1: Mass-Spring System Derivation"
    ]
   },
   {
@@ -71,9 +71,7 @@
   {
    "cell_type": "code",
    "execution_count": 3,
-   "metadata": {
-    "collapsed": false
-   },
+   "metadata": {},
    "outputs": [
     {
      "data": {
@@ -199,9 +197,7 @@
   {
    "cell_type": "code",
    "execution_count": 9,
-   "metadata": {
-    "collapsed": false
-   },
+   "metadata": {},
    "outputs": [
     {
      "data": {
@@ -273,7 +269,7 @@
    "name": "python",
    "nbconvert_exporter": "python",
    "pygments_lexer": "ipython3",
-   "version": "3.6.8"
+   "version": "3.7.3"
   }
  },
  "nbformat": 4,

+ 11 - 24
materials/notebooks/4-Modelica/Modelica.ipynb

@@ -49,9 +49,7 @@
   {
    "cell_type": "code",
    "execution_count": 1,
-   "metadata": {
-    "collapsed": false
-   },
+   "metadata": {},
    "outputs": [],
    "source": [
     "# Import required libraries and setup matplot lib to use AGG backend.\n",
@@ -66,9 +64,7 @@
   {
    "cell_type": "code",
    "execution_count": 2,
-   "metadata": {
-    "collapsed": false
-   },
+   "metadata": {},
    "outputs": [
     {
      "name": "stdout",
@@ -175,9 +171,7 @@
   {
    "cell_type": "code",
    "execution_count": 3,
-   "metadata": {
-    "collapsed": false
-   },
+   "metadata": {},
    "outputs": [
     {
      "name": "stdout",
@@ -221,7 +215,6 @@
    "cell_type": "code",
    "execution_count": 4,
    "metadata": {
-    "collapsed": false,
     "scrolled": true
    },
    "outputs": [
@@ -272,9 +265,7 @@
   {
    "cell_type": "code",
    "execution_count": 5,
-   "metadata": {
-    "collapsed": false
-   },
+   "metadata": {},
    "outputs": [
     {
      "name": "stdout",
@@ -309,9 +300,7 @@
   {
    "cell_type": "code",
    "execution_count": 6,
-   "metadata": {
-    "collapsed": false
-   },
+   "metadata": {},
    "outputs": [
     {
      "name": "stdout",
@@ -357,9 +346,7 @@
   {
    "cell_type": "code",
    "execution_count": 7,
-   "metadata": {
-    "collapsed": false
-   },
+   "metadata": {},
    "outputs": [
     {
      "data": {
@@ -385,21 +372,21 @@
  ],
  "metadata": {
   "kernelspec": {
-   "display_name": "Python 2",
+   "display_name": "Python 3",
    "language": "python",
-   "name": "python2"
+   "name": "python3"
   },
   "language_info": {
    "codemirror_mode": {
     "name": "ipython",
-    "version": 2
+    "version": 3
    },
    "file_extension": ".py",
    "mimetype": "text/x-python",
    "name": "python",
    "nbconvert_exporter": "python",
-   "pygments_lexer": "ipython2",
-   "version": "2.7.6"
+   "pygments_lexer": "ipython3",
+   "version": "3.7.3"
   }
  },
  "nbformat": 4,

文件差异内容过多而无法显示
+ 0 - 3976
materials/notebooks/4-Modelica/resources/quarter_car.svg


文件差异内容过多而无法显示
+ 1682 - 496
materials/notebooks/5-CBDModeling/CBDModelling.ipynb


+ 68 - 0
materials/notebooks/5-CBDModeling/qcar.pdf

@@ -0,0 +1,68 @@
+// The model
+digraph {
+	inRoadX [label="InputPortBlock (inRoadX)" shape=""]
+	inRoadV [label="InputPortBlock (inRoadV)" shape=""]
+	inDamping [label="InputPortBlock (inDamping)" shape=""]
+	inDelta [label="InputPortBlock (inDelta)" shape=""]
+	inTireX0 [label="InputPortBlock (inTireX0)" shape=""]
+	inTireV0 [label="InputPortBlock (inTireV0)" shape=""]
+	inCarX0 [label="InputPortBlock (inCarX0)" shape=""]
+	inCarV0 [label="InputPortBlock (inCarV0)" shape=""]
+	outCarX [label="OutputPortBlock (outCarX)" shape=""]
+	quarter_car -> outCarX [label=" / outX"]
+	outCarV [label="OutputPortBlock (outCarV)" shape=""]
+	quarter_car -> outCarV [label=" / outV"]
+	outCarA [label="OutputPortBlock (outCarA)" shape=""]
+	quarter_car -> outCarA [label=" / outA"]
+	outTireX [label="OutputPortBlock (outTireX)" shape=""]
+	tire -> outTireX [label=" / outX"]
+	outTireV [label="OutputPortBlock (outTireV)" shape=""]
+	tire -> outTireV [label=" / outV"]
+	outTireA [label="OutputPortBlock (outTireA)" shape=""]
+	tire -> outTireA [label=" / outA"]
+	qcar_mass [label="ConstantBlock (qcar_mass)\n1.0" shape=""]
+	tire_mass [label="ConstantBlock (tire_mass)\n1.0" shape=""]
+	rubber_damping [label="ConstantBlock (rubber_damping)\n1.0" shape=""]
+	rubber_stiffness [label="ConstantBlock (rubber_stiffness)\n1.0" shape=""]
+	suspension_stiffness [label="ConstantBlock (suspension_stiffness)\n1.0" shape=""]
+	gravity [label="ConstantBlock (gravity)\n9.81" shape=""]
+	car_weight [label="ProductBlock (car_weight)" shape=""]
+	gravity -> car_weight [label=""]
+	qcar_mass -> car_weight [label=""]
+	quarter_car [label="Mass (quarter_car)" shape=Msquare]
+	quarter_car_forces -> quarter_car [label=inFa]
+	qcar_mass -> quarter_car [label=inMass]
+	car_weight -> quarter_car [label=inFb]
+	inDelta -> quarter_car [label=inDelta]
+	inCarX0 -> quarter_car [label=inX0]
+	inCarV0 -> quarter_car [label=inV0]
+	tire [label="Mass (tire)" shape=Msquare]
+	rubber_forces -> tire [label=inFa]
+	quarter_car_forces -> tire [label=inFb]
+	tire_mass -> tire [label=inMass]
+	inDelta -> tire [label=inDelta]
+	inTireX0 -> tire [label=inX0]
+	inTireV0 -> tire [label=inV0]
+	rubber_spring [label="Spring (rubber_spring)" shape=Msquare]
+	inRoadX -> rubber_spring [label=inXa]
+	tire -> rubber_spring [label="inXb / outX"]
+	rubber_stiffness -> rubber_spring [label=inStiffness]
+	rubber_damper [label="Damper (rubber_damper)" shape=Msquare]
+	inRoadV -> rubber_damper [label=inVa]
+	tire -> rubber_damper [label="inVb / outV"]
+	rubber_damping -> rubber_damper [label=inDamping]
+	rubber_forces [label="AdderBlock (rubber_forces)" shape=""]
+	rubber_spring -> rubber_forces [label=" / outF"]
+	rubber_damper -> rubber_forces [label=" / outF"]
+	suspension_spring [label="Spring (suspension_spring)" shape=Msquare]
+	tire -> suspension_spring [label="inXa / outX"]
+	quarter_car -> suspension_spring [label="inXb / outX"]
+	suspension_stiffness -> suspension_spring [label=inStiffness]
+	suspension_damper [label="Damper (suspension_damper)" shape=Msquare]
+	tire -> suspension_damper [label="inVa / outV"]
+	quarter_car -> suspension_damper [label="inVb / outV"]
+	inDamping -> suspension_damper [label=inDamping]
+	quarter_car_forces [label="AdderBlock (quarter_car_forces)" shape=""]
+	suspension_spring -> quarter_car_forces [label=" / outF"]
+	suspension_damper -> quarter_car_forces [label=" / outF"]
+}

二进制
materials/notebooks/5-CBDModeling/qcar.pdf.pdf


+ 68 - 0
materials/notebooks/5-CBDModeling/qcar.svg

@@ -0,0 +1,68 @@
+// The model
+digraph {
+	inRoadX [label="InputPortBlock (inRoadX)" shape=""]
+	inRoadV [label="InputPortBlock (inRoadV)" shape=""]
+	inDamping [label="InputPortBlock (inDamping)" shape=""]
+	inDelta [label="InputPortBlock (inDelta)" shape=""]
+	inTireX0 [label="InputPortBlock (inTireX0)" shape=""]
+	inTireV0 [label="InputPortBlock (inTireV0)" shape=""]
+	inCarX0 [label="InputPortBlock (inCarX0)" shape=""]
+	inCarV0 [label="InputPortBlock (inCarV0)" shape=""]
+	outCarX [label="OutputPortBlock (outCarX)" shape=""]
+	quarter_car -> outCarX [label=" / outX"]
+	outCarV [label="OutputPortBlock (outCarV)" shape=""]
+	quarter_car -> outCarV [label=" / outV"]
+	outCarA [label="OutputPortBlock (outCarA)" shape=""]
+	quarter_car -> outCarA [label=" / outA"]
+	outTireX [label="OutputPortBlock (outTireX)" shape=""]
+	tire -> outTireX [label=" / outX"]
+	outTireV [label="OutputPortBlock (outTireV)" shape=""]
+	tire -> outTireV [label=" / outV"]
+	outTireA [label="OutputPortBlock (outTireA)" shape=""]
+	tire -> outTireA [label=" / outA"]
+	qcar_mass [label="ConstantBlock (qcar_mass)\n1.0" shape=""]
+	tire_mass [label="ConstantBlock (tire_mass)\n1.0" shape=""]
+	rubber_damping [label="ConstantBlock (rubber_damping)\n1.0" shape=""]
+	rubber_stiffness [label="ConstantBlock (rubber_stiffness)\n1.0" shape=""]
+	suspension_stiffness [label="ConstantBlock (suspension_stiffness)\n1.0" shape=""]
+	gravity [label="ConstantBlock (gravity)\n9.81" shape=""]
+	car_weight [label="ProductBlock (car_weight)" shape=""]
+	gravity -> car_weight [label=""]
+	qcar_mass -> car_weight [label=""]
+	quarter_car [label="Mass (quarter_car)" shape=Msquare]
+	quarter_car_forces -> quarter_car [label=inFa]
+	qcar_mass -> quarter_car [label=inMass]
+	car_weight -> quarter_car [label=inFb]
+	inDelta -> quarter_car [label=inDelta]
+	inCarX0 -> quarter_car [label=inX0]
+	inCarV0 -> quarter_car [label=inV0]
+	tire [label="Mass (tire)" shape=Msquare]
+	rubber_forces -> tire [label=inFa]
+	quarter_car_forces -> tire [label=inFb]
+	tire_mass -> tire [label=inMass]
+	inDelta -> tire [label=inDelta]
+	inTireX0 -> tire [label=inX0]
+	inTireV0 -> tire [label=inV0]
+	rubber_spring [label="Spring (rubber_spring)" shape=Msquare]
+	inRoadX -> rubber_spring [label=inXa]
+	tire -> rubber_spring [label="inXb / outX"]
+	rubber_stiffness -> rubber_spring [label=inStiffness]
+	rubber_damper [label="Damper (rubber_damper)" shape=Msquare]
+	inRoadV -> rubber_damper [label=inVa]
+	tire -> rubber_damper [label="inVb / outV"]
+	rubber_damping -> rubber_damper [label=inDamping]
+	rubber_forces [label="AdderBlock (rubber_forces)" shape=""]
+	rubber_spring -> rubber_forces [label=" / outFb"]
+	rubber_damper -> rubber_forces [label=" / outFb"]
+	suspension_spring [label="Spring (suspension_spring)" shape=Msquare]
+	tire -> suspension_spring [label="inXa / outX"]
+	quarter_car -> suspension_spring [label="inXb / outX"]
+	suspension_stiffness -> suspension_spring [label=inStiffness]
+	suspension_damper [label="Damper (suspension_damper)" shape=Msquare]
+	tire -> suspension_damper [label="inVa / outV"]
+	quarter_car -> suspension_damper [label="inVb / outV"]
+	inDamping -> suspension_damper [label=inDamping]
+	quarter_car_forces [label="AdderBlock (quarter_car_forces)" shape=""]
+	suspension_spring -> quarter_car_forces [label=" / outFb"]
+	suspension_damper -> quarter_car_forces [label=" / outFb"]
+}

二进制
materials/notebooks/5-CBDModeling/qcar.svg.pdf


二进制
materials/notebooks/5-CBDModeling/resources/quarter_car_model.pdn


二进制
materials/notebooks/5-CBDModeling/resources/quarter_car_model.png


+ 2 - 0
materials/notebooks/lib/CBDSimulatorInterpreter/cbd/src/CBD.py

@@ -89,6 +89,8 @@ class BaseBlock:
         input_port = "IN1" if input_port == None else input_port
         curIteration = -1 if curIteration == None else curIteration
 
+        assert input_port in self._linksIn, "Input port %r not defined in block %r" % (input_port, self.getBlockName())
+
         (incoming_block, out_port_name) = self._linksIn[input_port]
         return incoming_block.getSignal(out_port_name)[curIteration]
 

+ 3 - 3
materials/notes/QuarterCarScenario.mo

@@ -1,8 +1,8 @@
 
 model QuarterCarScenario
-  parameter Real Kp = 1;
-  parameter Real Ti = 1;
-  parameter Real Td = 1;
+  parameter Real Kp = 100;
+  parameter Real Ti = 0.01;
+  parameter Real Td = 0.01;
   QuarterCar quarter_car;
   QuarterCarSemiActive quarter_car_act;
   Modelica.Blocks.Sources.TimeTable road_profile_table(table=[0, 0;

文件差异内容过多而无法显示
+ 1 - 1
materials/notes/notes.drawio