?? powerwindow.htm
字號:
<p>
<img src="AD13.jpg" width="521" height="304" alt="" border="2" align="">
</p>
</blockquote>
</blockquote>
</p>
<p>
<table border=0 cellspacing=0 cellpadding=5 bgcolor="#ffefbf" width="100%">
<tr>
<td colspan=4>
<div class=PSPEC>
<b>CSPEC 1.3:</b> DETECT OBSTACLE ENDSTOP
</div>
</td></tr><tr><td width="5"></td><td valign="top" width="1">
RESET
</td><td valign="top" width="1">
=
</td><td halign="left" width="100%">
OBSTACLE <b>or</b> ENDSTOP
</td></tr>
</table>
</p>
<p>
<table border=0 cellspacing=0 cellpadding=5 bgcolor="#ffe4b0" width="100%">
<tr>
<td colspan=4>
<div class=PSPEC>
<b>PSPEC 1.3.1:</b> DETECT ENDSTOP
</div>
</td></tr><tr><td width="5"></td><td valign="top" width="1">
ENDSTOP
</td><td valign="top" width="1">
=
</td><td halign="left">
ARMATURE_CURRENT > ENDSTOP_MAX
</td></tr>
</table>
</p>
<p>
<table border=0 cellspacing=0 cellpadding=5 bgcolor="#ffe4b0" width="100%">
<tr>
<td colspan=4>
<div class=PSPEC>
<b>PSPEC 1.3.2:</b> DETECT OBSTACLE
</div>
</td></tr><tr><td width="5"></td><td valign="top" width="1">
OBSTACLE
</td><td valign="top" width="1">
=
</td><td halign="left">
(ARMATURE_CURRENT > OBSTACLE_MAX) <b>and</b> MOVE_UP <b>for</b> 500 [ms]
</td></tr>
</table>
</p>
<p>
<table border=0 cellspacing=0 cellpadding=5 bgcolor="#ffe4b0" width="100%">
<tr>
<td colspan=4>
<div class=PSPEC>
<b>PSPEC 1.3.3:</b> ABSOLUTE VALUE
</div>
</td></tr><tr><td width="5"></td><td valign="top" width="1">
ABSOLUTE_ARMATURE_CURRENT
</td><td valign="top" width="1">
=
</td><td halign="left">
<b>abs</b>(ARMATURE_CURRENT)
</td></tr>
</table>
</p>
<h4><a name="Data Dictionary"></a>Data Dictionary</h4>
<p>
The functional decomposition specifies each of the processes unambiguously
by their decomposition or primitive specification (PSPEC).
In addition, the signals in the activity diagrams
have to be formally specified as well. This is the goal of the
<i>data dictionary</i>.
</p>
<p>
The data dictionary contains a table with entries for each of the signals
used in any of the activity diagrams.
</p>
<table width="100%" cellspacing="2" cellpadding="2" border="2">
<DIV CLASS=table>
<tr BGCOLOR="#DDDDDD"><!-- Row 1 -->
<td><b>AD0</b></td>
<td COLSPAN=5>POWER WINDOW SYSTEM</td>
</tr>
<tr><!-- Row 2 -->
<td>DRIVER_COMMAND</td>
<td>DATA</td>
<td>DISCRETE</td>
<td>AGGREGATE</td>
<td>NEUTRAL,UP,DOWN</td>
<td> </td>
</tr>
<tr><!-- Row 3 -->
<td>PASSENGER_COMMAND</td>
<td>DATA</td>
<td>DISCRETE</td>
<td>AGGREGATE</td>
<td>NEUTRAL,UP,DOWN</td>
<td> </td>
</tr>
<tr><!-- Row 4 -->
<td>WINDOW_POSITION</td>
<td>DATA</td>
<td>CONTINUOUS</td>
<td>REAL</td>
<td>MIN: 0 [m]</td>
<td>MAX: 0.4 [m}</td>
</tr>
<tr><!-- Row 5 -->
<td>MOVE_UP</td>
<td>CONTROL</td>
<td>DISCRETE</td>
<td>BOOLEAN</td>
<td>`TRUE`,`FALSE`</td>
<td> </td>
</tr>
<tr><!-- Row 6 -->
<td>MOVE_DOWN</td>
<td>CONTROL</td>
<td>DISCRETE</td>
<td>BOOLEAN</td>
<td>`TRUE`,`FALSE`</td>
<td> </td>
</tr>
<tr BGCOLOR="#DDDDDD"><!-- Row 7 -->
<td><b>AD1</b></td>
<td COLSPAN=5>POWER WINDOW CONTROLLER</td>
</tr>
<tr><!-- Row 8 -->
<td>RESET</td>
<td>CONTROL</td>
<td>DISCRETE</td>
<td>BOOLEAN</td>
<td>`TRUE`,`FALSE`</td>
<td> </td>
</tr>
<tr><!-- Row 9 -->
<td>VALIDATED_DRIVER_COMMAND</td>
<td>CONTROL</td>
<td>DISCRETE</td>
<td>AGGREGATE</td>
<td>NEUTRAL,UP,DOWN</td>
<td> </td>
</tr>
<tr><!-- Row 10 -->
<td>VALIDATED_PASSENGER_COMMAND</td>
<td>CONTROL</td>
<td>DISCRETE</td>
<td>AGGREGATE</td>
<td>NEUTRAL,UP,DOWN</td>
<td> </td>
</tr>
<tr><!-- Row 11 -->
<td>OBSTACLE</td>
<td>CONTROL</td>
<td>DISCRETE</td>
<td>BOOLEAN</td>
<td>`TRUE`,`FALSE`</td>
<td> </td>
</tr>
<tr><!-- Row 12 -->
<td>ENDSTOP</td>
<td>CONTROL</td>
<td>DISCRETE</td>
<td>BOOLEAN</td>
<td>`TRUE`,`FALSE`</td>
<td> </td>
</tr>
<tr BGCOLOR="#DDDDDD"><!-- Row 13 -->
<td><b>AD1.1</b></td>
<td COLSPAN=5>VALIDATE_DRIVER</td>
</tr>
<tr><!-- Row 14 -->
<td>NEUTRAL</td>
<td>DATA</td>
<td>DISCRETE</td>
<td>BOOLEAN</td>
<td>`TRUE`,`FALSE`</td>
<td> </td>
</tr>
<tr><!-- Row 15 -->
<td>UP</td>
<td>DATA</td>
<td>DISCRETE</td>
<td>BOOLEAN</td>
<td>`TRUE`,`FALSE`</td>
<td> </td>
</tr>
<tr><!-- Row 16 -->
<td>DOWN</td>
<td>DATA</td>
<td>DISCRETE</td>
<td>BOOLEAN</td>
<td>`TRUE`,`FALSE`</td>
<td> </td>
</tr>
<tr><!-- Row 17 -->
<td>CHECKED UP</td>
<td>DATA</td>
<td>DISCRETE</td>
<td>BOOLEAN</td>
<td>`TRUE`,`FALSE`</td>
<td> </td>
</tr>
<tr><!-- Row 18 -->
<td>CHECKED DOWN</td>
<td>DATA</td>
<td>DISCRETE</td>
<td>BOOLEAN</td>
<td>`TRUE`,`FALSE`</td>
<td> </td>
</tr>
<tr BGCOLOR="#DDDDDD"><!-- Row 19 -->
<td><b>AD1.2</b></td>
<td COLSPAN=5>VALIDATE_PASSENGER</td>
</tr>
<tr><!-- Row 20 -->
<td>NEUTRAL</td>
<td>DATA</td>
<td>DISCRETE</td>
<td>BOOLEAN</td>
<td>`TRUE`,`FALSE`</td>
<td> </td>
</tr>
<tr><!-- Row 21 -->
<td>UP</td>
<td>DATA</td>
<td>DISCRETE</td>
<td>BOOLEAN</td>
<td>`TRUE`,`FALSE`</td>
<td> </td>
</tr>
<tr><!-- Row 22 -->
<td>DOWN</td>
<td>DATA</td>
<td>DISCRETE</td>
<td>BOOLEAN</td>
<td>`TRUE`,`FALSE`</td>
<td> </td>
</tr>
<tr><!-- Row 23 -->
<td>CHECKED UP</td>
<td>DATA</td>
<td>DISCRETE</td>
<td>BOOLEAN</td>
<td>`TRUE`,`FALSE`</td>
<td> </td>
</tr>
<tr><!-- Row 24 -->
<td>CHECKED DOWN</td>
<td>DATA</td>
<td>DISCRETE</td>
<td>BOOLEAN</td>
<td>`TRUE`,`FALSE`</td>
<td> </td>
</tr>
<tr BGCOLOR="#DDDDDD"><!-- Row 25 -->
<td><b>AD1.3</b></td>
<td COLSPAN=5>DETECT_OBSTACLE_ENDSTOP</td>
</tr>
<tr><!-- Row 26 -->
<td>ENDSTOP_MIN</td>
<td>DATA</td>
<td>CONSTANT</td>
<td>REAL</td>
<td>VALUE: 0.0 [m]</td>
<td> </td>
</tr>
<tr><!-- Row 27 -->
<td>ENDSTOP_MAX</td>
<td>DATA</td>
<td>CONSTANT</td>
<td>REAL</td>
<td>VALUE: 0.4 [m]</td>
<td> </td>
</tr>
<tr><!-- Row 28 -->
<td>OBSTACLE_MAX</td>
<td>DATA</td>
<td>CONSTANT</td>
<td>REAL</td>
<td>VALUE: 0.3 [m]</td>
<td> </td>
</tr>
</DIV>
</table>
<h4><a name="Timing Requirements"></a>Timing Requirements</h4>
<p>
Now, open the
<a href="matlab:powerwindowscript(`open position scope`);"><font face="Courier">position</font> measurement</a> (in [m])
to view the window movement and
<a href="matlab:powerwindowscript(`run`);">run the simulation</a>.
Double-click the
<a href="matlab:powerwindowscript(`highlight passenger up`);">passenger window up switch</a>
or click <a href="matlab:powerwindowscript(`passenger window up`);">here</a> to start moving the window
up.
After 30 [cm], the <font face="Courier">obstacle</font> event is generated and the Stateflow
chart moves into its <font face="Courier">emergencyDown</font> state. In this state,
<font face="Courier">windowDown</font> is output for some time to lower the window by about
10 [cm]. Because the passenger window up switch is still on, the window starts moving up again
and this process repeats.
<a href="matlab:powerwindowscript(`stop`);">Stop the simulation</a>
and press the <font face="Courier">Autoscale</font> button on the position scope to
observe the oscillating process. Note that in case of an emergency
the discrete event control rolls down of the window
approximately 10 [cm].
</p>
<p>
Please make sure you have
<a href="matlab:powerwindowscript(`stop`);">stopped the simulation</a>
and
<a href="matlab:powerwindowscript(`reset switches`);">reset the switches</a>
before continuing.
</p>
<h3><a name="Power Effects"></a>Power Effects</h3>
<p>
After an initial analysis of the discrete event control and continuous dynamics,
a detailed plant model can be used to evaluate performance in a more realistic
situation. Models at such a level of detail are best designed in the
<i>power</i> domain, i.e., as energy flows. This is facilitated by several
domain specific blocksets.
</p>
<p>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -