1 | package Modelica "Modelica Standard Library"
|
---|
2 | extends Icons.Library;
|
---|
3 | annotation(preferedView="info", version="2.2.1", versionDate="2006-03-24", conversion(from(version="1.6", ModelicaAdditions(version="1.5"), MultiBody(version="1.0.1"), MultiBody(version="1.0"), Matrices(version="0.8"), script="Scripts/ConvertModelica_from_1.6_to_2.1.mos"), from(version="2.1 Beta1", script="Scripts/ConvertModelica_from_2.1Beta1_to_2.1.mos"), noneFromVersion="2.1", noneFromVersion="2.2"), Dymola(checkSum="539989979:1143034484"), Settings(NewStateSelection=true), Documentation(info="<HTML>
|
---|
4 | <p>
|
---|
5 | Package <b>Modelica</b> is a <b>standardized</b> and <b>free</b> package
|
---|
6 | that is developed together with the Modelica language from the
|
---|
7 | Modelica Association, see <a href=\"http://www.Modelica.org\">http://www.Modelica.org</a>.
|
---|
8 | It is also called <b>Modelica Standard Library</b>.
|
---|
9 | It provides model components in many domains that are based on
|
---|
10 | standardized interface definitions. Some typical examples are shown
|
---|
11 | in the next figure:
|
---|
12 | </p>
|
---|
13 |
|
---|
14 | <p>
|
---|
15 | <img src=\"./Images/UsersGuide/ModelicaLibraries.png\">
|
---|
16 | </p>
|
---|
17 |
|
---|
18 | <p>
|
---|
19 | For an introduction, have especially a look at:
|
---|
20 | </p>
|
---|
21 | <ul>
|
---|
22 | <li> <a href=\"Modelica://Modelica.UsersGuide\">Users Guide</a>
|
---|
23 | discusses some aspects of the Modelica Standard Library, such as
|
---|
24 | interface definitions and used conventions.</li>
|
---|
25 | <li><a href=\"Modelica://Modelica.UsersGuide.ReleaseNotes\">Release Notes</a>
|
---|
26 | summarizes the changes of new versions of this package.</li>
|
---|
27 | <li> Packages <b>Examples</b> in the various subpackages, demonstrate
|
---|
28 | how to use the components of the corresponding sublibrary.</li>
|
---|
29 | </ul>
|
---|
30 |
|
---|
31 | <p>
|
---|
32 | Copyright © 1998-2006, Modelica Association.
|
---|
33 | </p>
|
---|
34 | <p>
|
---|
35 | <i>This Modelica package is <b>free</b> software; it can be redistributed and/or modified
|
---|
36 | under the terms of the <b>Modelica license</b>, see the license conditions
|
---|
37 | and the accompanying <b>disclaimer</b>
|
---|
38 | <a href=\"Modelica://Modelica.UsersGuide.ModelicaLicense\">here</a>.</i>
|
---|
39 | </p>
|
---|
40 | <p> <b>Note:</b> This is a <i>subset</i> of the official Modelica package with minor changes made by MathCore Engineering AB.
|
---|
41 | For a complete list of changes see the <a href=\"Modelica://Modelica.UsersGuide.ReleaseNotes\">Release Notes</a>.
|
---|
42 | </p>
|
---|
43 | </HTML>
|
---|
44 | ", revisions=""), Icon(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10})), Diagram(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10})));
|
---|
45 | package Math "Mathematical functions (e.g., sin, cos) and operations on matrices (e.g., norm, solve, eig, exp)"
|
---|
46 | import SI = Modelica.SIunits;
|
---|
47 | extends Modelica.Icons.Library2;
|
---|
48 | annotation(preferedView="info", Invisible=true, Icon(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10}), graphics={Text(visible=true, extent={{-59,-56},{42,-9}}, textString="f(x)", fontName="Arial")}), Documentation(info="<HTML>
|
---|
49 | <p>
|
---|
50 | This package contains <b>basic mathematical functions</b> (such as sin(..)),
|
---|
51 | as well as functions operating on <b>matrices</b>.
|
---|
52 | </p>
|
---|
53 |
|
---|
54 | <dl>
|
---|
55 | <dt><b>Main Author:</b>
|
---|
56 | <dd><a href=\"http://www.robotic.dlr.de/Martin.Otter/\">Martin Otter</a><br>
|
---|
57 | Deutsches Zentrum für Luft und Raumfahrt e.V. (DLR)<br>
|
---|
58 | Institut für Robotik und Mechatronik<br>
|
---|
59 | Postfach 1116<br>
|
---|
60 | D-82230 Wessling<br>
|
---|
61 | Germany<br>
|
---|
62 | email: <A HREF=\"mailto:Martin.Otter@dlr.de\">Martin.Otter@dlr.de</A><br>
|
---|
63 | </dl>
|
---|
64 |
|
---|
65 | <p>
|
---|
66 | Copyright © 1998-2006, Modelica Association and DLR.
|
---|
67 | </p>
|
---|
68 | <p>
|
---|
69 | <i>This Modelica package is <b>free</b> software; it can be redistributed and/or modified
|
---|
70 | under the terms of the <b>Modelica license</b>, see the license conditions
|
---|
71 | and the accompanying <b>disclaimer</b>
|
---|
72 | <a href=\"Modelica://Modelica.UsersGuide.ModelicaLicense\">here</a>.</i>
|
---|
73 | </p><br>
|
---|
74 | </HTML>
|
---|
75 | ", revisions="<html>
|
---|
76 | <ul>
|
---|
77 | <li><i>October 21, 2002</i>
|
---|
78 | by <a href=\"http://www.robotic.dlr.de/Martin.Otter/\">Martin Otter</a>
|
---|
79 | and <a href=\"http://www.robotic.dlr.de/Christian.Schweiger/\">Christian Schweiger</a>:<br>
|
---|
80 | Function tempInterpol2 added.</li>
|
---|
81 | <li><i>Oct. 24, 1999</i>
|
---|
82 | by <a href=\"http://www.robotic.dlr.de/Martin.Otter/\">Martin Otter</a>:<br>
|
---|
83 | Icons for icon and diagram level introduced.</li>
|
---|
84 | <li><i>June 30, 1999</i>
|
---|
85 | by <a href=\"http://www.robotic.dlr.de/Martin.Otter/\">Martin Otter</a>:<br>
|
---|
86 | Realized.</li>
|
---|
87 | </ul>
|
---|
88 |
|
---|
89 | </html>"), Diagram(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10})));
|
---|
90 | function sin "sine"
|
---|
91 | extends baseIcon1;
|
---|
92 | input SI.Angle u;
|
---|
93 | output Real y;
|
---|
94 | annotation(Icon(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10}), graphics={Line(visible=true, points={{-90,0},{68,0}}, color={192,192,192}),Polygon(visible=true, lineColor={192,192,192}, fillColor={192,192,192}, fillPattern=FillPattern.Solid, points={{90,0},{68,8},{68,-8},{90,0}}),Line(visible=true, points={{-80,0},{-68.7,34.2},{-61.5,53.1},{-55.1,66.4},{-49.4,74.6},{-43.8,79.1},{-38.2,79.8},{-32.6,76.6},{-26.9,69.7},{-21.3,59.4},{-14.9,44.1},{-6.83,21.2},{10.1,-30.8},{17.3,-50.2},{23.7,-64.2},{29.3,-73.1},{35,-78.4},{40.6,-80},{46.2,-77.6},{51.9,-71.5},{57.5,-61.9},{63.9,-47.2},{72,-24.8},{80,0}}, smooth=Smooth.Bezier),Text(visible=true, fillColor={192,192,192}, extent={{12,36},{84,84}}, textString="sin", fontName="Arial")}), Diagram(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10}), graphics={Line(visible=true, points={{-100,0},{84,0}}, color={192,192,192}),Polygon(visible=true, lineColor={192,192,192}, fillColor={192,192,192}, fillPattern=FillPattern.Solid, points={{100,0},{84,6},{84,-6},{100,0}}),Line(visible=true, points={{-80,0},{-68.7,34.2},{-61.5,53.1},{-55.1,66.4},{-49.4,74.6},{-43.8,79.1},{-38.2,79.8},{-32.6,76.6},{-26.9,69.7},{-21.3,59.4},{-14.9,44.1},{-6.83,21.2},{10.1,-30.8},{17.3,-50.2},{23.7,-64.2},{29.3,-73.1},{35,-78.4},{40.6,-80},{46.2,-77.6},{51.9,-71.5},{57.5,-61.9},{63.9,-47.2},{72,-24.8},{80,0}}, smooth=Smooth.Bezier),Text(visible=true, extent={{-105,72},{-85,88}}, textString="1", fontName="Arial"),Text(visible=true, extent={{70,5},{90,25}}, textString="2*pi", fontName="Arial"),Text(visible=true, extent={{-105,-88},{-85,-72}}, textString="-1", fontName="Arial"),Text(visible=true, fillColor={160,160,160}, extent={{92,-22},{112,-2}}, textString="u", fontName="Arial")}), Documentation(info="<html>
|
---|
95 |
|
---|
96 | </html>"));
|
---|
97 |
|
---|
98 | external "C" y=sin(u) ;
|
---|
99 |
|
---|
100 | end sin;
|
---|
101 |
|
---|
102 | function asin "inverse sine (-1 <= u <= 1)"
|
---|
103 | extends baseIcon2;
|
---|
104 | input Real u;
|
---|
105 | output SI.Angle y;
|
---|
106 | annotation(Icon(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10}), graphics={Line(visible=true, points={{-90,0},{68,0}}, color={192,192,192}),Polygon(visible=true, lineColor={192,192,192}, fillColor={192,192,192}, fillPattern=FillPattern.Solid, points={{90,0},{68,8},{68,-8},{90,0}}),Line(visible=true, points={{-80,-80},{-79.2,-72.8},{-77.6,-67.5},{-73.6,-59.4},{-66.3,-49.8},{-53.5,-37.3},{-30.2,-19.7},{37.4,24.8},{57.5,40.8},{68.7,52.7},{75.2,62.2},{77.6,67.5},{80,80}}, smooth=Smooth.Bezier),Text(visible=true, fillColor={192,192,192}, extent={{-88,30},{-16,78}}, textString="asin", fontName="Arial")}), Diagram(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10}), graphics={Text(visible=true, extent={{-40,-88},{-15,-72}}, textString="-pi/2", fontName="Arial"),Text(visible=true, extent={{-38,72},{-13,88}}, textString=" pi/2", fontName="Arial"),Text(visible=true, extent={{70,5},{90,25}}, textString="+1", fontName="Arial"),Text(visible=true, extent={{-90,1},{-70,21}}, textString="-1", fontName="Arial"),Line(visible=true, points={{-100,0},{84,0}}, color={192,192,192}),Polygon(visible=true, lineColor={192,192,192}, fillColor={192,192,192}, fillPattern=FillPattern.Solid, points={{100,0},{84,6},{84,-6},{100,0}}),Line(visible=true, points={{-80,-80},{-79.2,-72.8},{-77.6,-67.5},{-73.6,-59.4},{-66.3,-49.8},{-53.5,-37.3},{-30.2,-19.7},{37.4,24.8},{57.5,40.8},{68.7,52.7},{75.2,62.2},{77.6,67.5},{80,80}}, smooth=Smooth.Bezier),Text(visible=true, fillColor={160,160,160}, extent={{92,-22},{112,-2}}, textString="u", fontName="Arial")}), Documentation(info="<html>
|
---|
107 |
|
---|
108 | </html>"));
|
---|
109 |
|
---|
110 | external "C" y=asin(u) ;
|
---|
111 |
|
---|
112 | end asin;
|
---|
113 |
|
---|
114 | function exp "exponential, base e"
|
---|
115 | extends baseIcon2;
|
---|
116 | input Real u;
|
---|
117 | output Real y;
|
---|
118 | annotation(Icon(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10}), graphics={Line(visible=true, points={{-90,-80.3976},{68,-80.3976}}, color={192,192,192}),Polygon(visible=true, lineColor={192,192,192}, fillColor={192,192,192}, fillPattern=FillPattern.Solid, points={{90,-80.3976},{68,-72.3976},{68,-88.3976},{90,-80.3976}}),Line(visible=true, points={{-80,-80},{-31,-77.9},{-6.03,-74},{10.9,-68.4},{23.7,-61},{34.2,-51.6},{43,-40.3},{50.3,-27.8},{56.7,-13.5},{62.3,2.23},{67.1,18.6},{72,38.2},{76,57.6},{80,80}}, smooth=Smooth.Bezier),Text(visible=true, fillColor={192,192,192}, extent={{-86,2},{-14,50}}, textString="exp", fontName="Arial")}), Diagram(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10}), graphics={Line(visible=true, points={{-100,-80.3976},{84,-80.3976}}, color={192,192,192}),Polygon(visible=true, lineColor={192,192,192}, fillColor={192,192,192}, fillPattern=FillPattern.Solid, points={{100,-80.3976},{84,-74.3976},{84,-86.3976},{100,-80.3976}}),Line(visible=true, points={{-80,-80},{-31,-77.9},{-6.03,-74},{10.9,-68.4},{23.7,-61},{34.2,-51.6},{43,-40.3},{50.3,-27.8},{56.7,-13.5},{62.3,2.23},{67.1,18.6},{72,38.2},{76,57.6},{80,80}}, smooth=Smooth.Bezier),Text(visible=true, extent={{-31,72},{-11,88}}, textString="20", fontName="Arial"),Text(visible=true, extent={{-92,-103},{-72,-83}}, textString="-3", fontName="Arial"),Text(visible=true, extent={{70,-103},{90,-83}}, textString="3", fontName="Arial"),Text(visible=true, extent={{-18,-73},{2,-53}}, textString="1", fontName="Arial"),Text(visible=true, fillColor={160,160,160}, extent={{96,-102},{116,-82}}, textString="u", fontName="Arial")}));
|
---|
119 |
|
---|
120 | external "C" y=exp(u) ;
|
---|
121 |
|
---|
122 | end exp;
|
---|
123 |
|
---|
124 | partial function baseIcon1 "Basic icon for mathematical function with y-axis on left side"
|
---|
125 | annotation(Diagram(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10}), graphics={Line(visible=true, points={{-80,80},{-88,80}}, color={192,192,192}),Line(visible=true, points={{-80,-80},{-88,-80}}, color={192,192,192}),Line(visible=true, points={{-80,-90},{-80,84}}, color={192,192,192}),Text(visible=true, fillColor={160,160,160}, extent={{-75,90},{-55,110}}, textString="y", fontName="Arial"),Polygon(visible=true, lineColor={192,192,192}, fillColor={192,192,192}, fillPattern=FillPattern.Solid, points={{-80,100},{-86,84},{-74,84},{-80,100}})}), Icon(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10}), graphics={Rectangle(visible=true, fillColor={255,255,255}, fillPattern=FillPattern.Solid, extent={{-100,-100},{100,100}}),Line(visible=true, points={{-80,-80},{-80,68}}, color={192,192,192}),Polygon(visible=true, lineColor={192,192,192}, fillColor={192,192,192}, fillPattern=FillPattern.Solid, points={{-80,90},{-88,68},{-72,68},{-80,90}}),Text(visible=true, fillColor={0,0,255}, fillPattern=FillPattern.Solid, extent={{-150,110},{150,150}}, textString="%name", fontName="Arial")}));
|
---|
126 | end baseIcon1;
|
---|
127 |
|
---|
128 | partial function baseIcon2 "Basic icon for mathematical function with y-axis in middle"
|
---|
129 | annotation(Diagram(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10}), graphics={Line(visible=true, points={{0,80},{-8,80}}, color={192,192,192}),Line(visible=true, points={{0,-80},{-8,-80}}, color={192,192,192}),Line(visible=true, points={{0,-90},{0,84}}, color={192,192,192}),Text(visible=true, fillColor={160,160,160}, extent={{5,90},{25,110}}, textString="y", fontName="Arial"),Polygon(visible=true, lineColor={192,192,192}, fillColor={192,192,192}, fillPattern=FillPattern.Solid, points={{0,100},{-6,84},{6,84},{0,100}})}), Icon(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10}), graphics={Rectangle(visible=true, fillColor={255,255,255}, fillPattern=FillPattern.Solid, extent={{-100,-100},{100,100}}),Line(visible=true, points={{0,-80},{0,68}}, color={192,192,192}),Polygon(visible=true, lineColor={192,192,192}, fillColor={192,192,192}, fillPattern=FillPattern.Solid, points={{0,90},{-8,68},{8,68},{0,90}}),Text(visible=true, fillColor={0,0,255}, fillPattern=FillPattern.Solid, extent={{-150,110},{150,150}}, textString="%name", fontName="Arial")}));
|
---|
130 | end baseIcon2;
|
---|
131 |
|
---|
132 | end Math;
|
---|
133 |
|
---|
134 | package Blocks "Library for basic input/output control blocks (continuous, discrete, logical, table blocks)"
|
---|
135 | import SI = Modelica.SIunits;
|
---|
136 | extends Modelica.Icons.Library2;
|
---|
137 | annotation(preferedView="info", Icon(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10}), graphics={Rectangle(visible=true, extent={{-32,-35},{16,-6}}),Rectangle(visible=true, extent={{-32,-85},{16,-56}}),Line(visible=true, points={{16,-20},{49,-20},{49,-71},{16,-71}}),Line(visible=true, points={{-32,-72},{-64,-72},{-64,-21},{-32,-21}}),Polygon(visible=true, fillPattern=FillPattern.Solid, points={{16,-71},{29,-67},{29,-74},{16,-71}}),Polygon(visible=true, fillPattern=FillPattern.Solid, points={{-32,-21},{-46,-17},{-46,-25},{-32,-21}})}), Documentation(info="<html>
|
---|
138 | <p>
|
---|
139 | This library contains input/output blocks to build up block diagrams.
|
---|
140 | </p>
|
---|
141 |
|
---|
142 | <dl>
|
---|
143 | <dt><b>Main Author:</b>
|
---|
144 | <dd><a href=\"http://www.robotic.dlr.de/Martin.Otter/\">Martin Otter</a><br>
|
---|
145 | Deutsches Zentrum für Luft und Raumfahrt e. V. (DLR)<br>
|
---|
146 | Oberpfaffenhofen<br>
|
---|
147 | Postfach 1116<br>
|
---|
148 | D-82230 Wessling<br>
|
---|
149 | email: <A HREF=\"mailto:Martin.Otter@dlr.de\">Martin.Otter@dlr.de</A><br>
|
---|
150 | </dl>
|
---|
151 | <br>
|
---|
152 | <br>
|
---|
153 |
|
---|
154 | <p>
|
---|
155 | Copyright © 1998-2006, Modelica Association and DLR.
|
---|
156 | </p>
|
---|
157 | <p>
|
---|
158 | <i>This Modelica package is <b>free</b> software; it can be redistributed and/or modified
|
---|
159 | under the terms of the <b>Modelica license</b>, see the license conditions
|
---|
160 | and the accompanying <b>disclaimer</b>
|
---|
161 | <a href=\"Modelica://Modelica.UsersGuide.ModelicaLicense\">here</a>.</i>
|
---|
162 | </p><br>
|
---|
163 | </HTML>
|
---|
164 | ", revisions="<html>
|
---|
165 | <ul>
|
---|
166 | <li><i>June 23, 2004</i>
|
---|
167 | by <a href=\"http://www.robotic.dlr.de/Martin.Otter/\">Martin Otter</a>:<br>
|
---|
168 | Introduced new block connectors and adapated all blocks to the new connectors.
|
---|
169 | Included subpackages Continuous, Discrete, Logical, Nonlinear from
|
---|
170 | package ModelicaAdditions.Blocks.
|
---|
171 | Included subpackage ModelicaAdditions.Table in Modelica.Blocks.Sources
|
---|
172 | and in the new package Modelica.Blocks.Tables.
|
---|
173 | Added new blocks to Blocks.Sources and Blocks.Logical.
|
---|
174 | </li>
|
---|
175 | <li><i>October 21, 2002</i>
|
---|
176 | by <a href=\"http://www.robotic.dlr.de/Martin.Otter/\">Martin Otter</a>
|
---|
177 | and <a href=\"http://www.robotic.dlr.de/Christian.Schweiger/\">Christian Schweiger</a>:<br>
|
---|
178 | New subpackage Examples, additional components.
|
---|
179 | </li>
|
---|
180 | <li><i>June 20, 2000</i>
|
---|
181 | by <a href=\"http://www.robotic.dlr.de/Martin.Otter/\">Martin Otter</a> and
|
---|
182 | Michael Tiller:<br>
|
---|
183 | Introduced a replaceable signal type into
|
---|
184 | Blocks.Interfaces.RealInput/RealOutput:
|
---|
185 | <pre>
|
---|
186 | replaceable type SignalType = Real
|
---|
187 | </pre>
|
---|
188 | in order that the type of the signal of an input/output block
|
---|
189 | can be changed to a physical type, for example:
|
---|
190 | <pre>
|
---|
191 | Sine sin1(outPort(redeclare type SignalType=Modelica.SIunits.Torque))
|
---|
192 | </pre>
|
---|
193 | </li>
|
---|
194 | <li><i>Sept. 18, 1999</i>
|
---|
195 | by <a href=\"http://www.robotic.dlr.de/Martin.Otter/\">Martin Otter</a>:<br>
|
---|
196 | Renamed to Blocks. New subpackages Math, Nonlinear.
|
---|
197 | Additional components in subpackages Interfaces, Continuous
|
---|
198 | and Sources. </li>
|
---|
199 | <li><i>June 30, 1999</i>
|
---|
200 | by <a href=\"http://www.robotic.dlr.de/Martin.Otter/\">Martin Otter</a>:<br>
|
---|
201 | Realized a first version, based on an existing Dymola library
|
---|
202 | of Dieter Moormann and Hilding Elmqvist.</li>
|
---|
203 | </ul>
|
---|
204 | </html>"), Diagram(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10})));
|
---|
205 | package Sources "Signal source blocks generating Real and Boolean signals"
|
---|
206 | import Modelica.Blocks.Interfaces;
|
---|
207 | import Modelica.SIunits;
|
---|
208 | extends Modelica.Icons.Library;
|
---|
209 | annotation(preferedView="info", Documentation(info="<HTML>
|
---|
210 | <p>
|
---|
211 | This package contains <b>source</b> components, i.e., blocks which
|
---|
212 | have only output signals. These blocks are used as signal generators
|
---|
213 | for Real, Integer and Boolean signals.
|
---|
214 | </p>
|
---|
215 |
|
---|
216 | <p>
|
---|
217 | All Real source signals (with the exception of the Constant source)
|
---|
218 | have at least the following two parameters:
|
---|
219 | </p>
|
---|
220 |
|
---|
221 | <table border=1 cellspacing=0 cellpadding=2>
|
---|
222 | <tr><td><b>offset</b></td>
|
---|
223 | <td>Value which is added to the signal</td>
|
---|
224 | </tr>
|
---|
225 | <tr><td><b>startTime</b></td>
|
---|
226 | <td>Start time of signal. For time < startTime,
|
---|
227 | the output y is set to offset.</td>
|
---|
228 | </tr>
|
---|
229 | </table>
|
---|
230 |
|
---|
231 | <p>
|
---|
232 | The <b>offset</b> parameter is especially useful in order to shift
|
---|
233 | the corresponding source, such that at initial time the system
|
---|
234 | is stationary. To determine the corresponding value of offset,
|
---|
235 | usually requires a trimming calculation.
|
---|
236 | </p>
|
---|
237 | </HTML>
|
---|
238 | ", revisions="<html>
|
---|
239 | <ul>
|
---|
240 | <li><i>October 21, 2002</i>
|
---|
241 | by <a href=\"http://www.robotic.dlr.de/Martin.Otter/\">Martin Otter</a>
|
---|
242 | and <a href=\"http://www.robotic.dlr.de/Christian.Schweiger/\">Christian Schweiger</a>:<br>
|
---|
243 | Integer sources added. Step, TimeTable and BooleanStep slightly changed.</li>
|
---|
244 | <li><i>Nov. 8, 1999</i>
|
---|
245 | by <a href=\"mailto:clauss@eas.iis.fhg.de\">Christoph Clauß</a>,
|
---|
246 | <A HREF=\"mailto:schneider@eas.iis.fhg.de\">schneider@eas.iis.fhg.de</A>,
|
---|
247 | <a href=\"http://www.robotic.dlr.de/Martin.Otter/\">Martin Otter</a>:<br>
|
---|
248 | New sources: Exponentials, TimeTable. Trapezoid slightly enhanced
|
---|
249 | (nperiod=-1 is an infinite number of periods).</li>
|
---|
250 | <li><i>Oct. 31, 1999</i>
|
---|
251 | by <a href=\"http://www.robotic.dlr.de/Martin.Otter/\">Martin Otter</a>:<br>
|
---|
252 | <a href=\"mailto:clauss@eas.iis.fhg.de\">Christoph Clauß</a>,
|
---|
253 | <A HREF=\"mailto:schneider@eas.iis.fhg.de\">schneider@eas.iis.fhg.de</A>,
|
---|
254 | All sources vectorized. New sources: ExpSine, Trapezoid,
|
---|
255 | BooleanConstant, BooleanStep, BooleanPulse, SampleTrigger.
|
---|
256 | Improved documentation, especially detailed description of
|
---|
257 | signals in diagram layer.</li>
|
---|
258 | <li><i>June 29, 1999</i>
|
---|
259 | by <a href=\"http://www.robotic.dlr.de/Martin.Otter/\">Martin Otter</a>:<br>
|
---|
260 | Realized a first version, based on an existing Dymola library
|
---|
261 | of Dieter Moormann and Hilding Elmqvist.</li>
|
---|
262 | </ul>
|
---|
263 | </html>"), Icon(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10})), Diagram(coordinateSystem(extent={{0,0},{430,-442}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10})));
|
---|
264 | block Sine "Generate sine signal"
|
---|
265 | parameter Real amplitude=1 "Amplitude of sine wave";
|
---|
266 | parameter SIunits.Frequency freqHz=1 "Frequency of sine wave";
|
---|
267 | parameter SIunits.Angle phase=0 "Phase of sine wave";
|
---|
268 | parameter Real offset=0 "Offset of output signal";
|
---|
269 | parameter SIunits.Time startTime=0 "Output = offset for time < startTime";
|
---|
270 | extends Interfaces.SO;
|
---|
271 | annotation(Diagram(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10}), graphics={Line(visible=true, points={{-80,-90},{-80,84}}, color={192,192,192}),Polygon(visible=true, lineColor={192,192,192}, fillColor={192,192,192}, fillPattern=FillPattern.Solid, points={{-80,100},{-86,84},{-74,84},{-80,100}}),Line(visible=true, points={{-99,-40},{85,-40}}, color={192,192,192}),Polygon(visible=true, lineColor={192,192,192}, fillColor={192,192,192}, fillPattern=FillPattern.Solid, points={{101,-40},{85,-34},{85,-46},{101,-40}}),Line(visible=true, points={{-40,0},{-31.6,34.2},{-26.1,53.1},{-21.3,66.4},{-17.1,74.6},{-12.9,79.1},{-8.64,79.8},{-4.42,76.6},{-0.2,69.7},{4.02,59.4},{8.84,44.1},{14.9,21.2},{27.5,-30.8},{33,-50.2},{37.8,-64.2},{42,-73.1},{46.2,-78.4},{50.5,-80},{54.7,-77.6},{58.9,-71.5},{63.1,-61.9},{67.9,-47.2},{74,-24.8},{80,0}}, thickness=0.5, smooth=Smooth.Bezier),Line(visible=true, points={{-41,-2},{-80,-2}}, thickness=0.5),Text(visible=true, fillColor={160,160,160}, extent={{-128,-11},{-82,7}}, textString="offset", fontName="Arial"),Line(visible=true, points={{-41,-2},{-41,-40}}, color={192,192,192}, pattern=LinePattern.Dot),Text(visible=true, fillColor={160,160,160}, extent={{-60,-61},{-14,-43}}, textString="startTime", fontName="Arial"),Text(visible=true, fillColor={160,160,160}, extent={{84,-72},{108,-52}}, textString="time", fontName="Arial"),Text(visible=true, fillColor={160,160,160}, extent={{-74,86},{-33,106}}, textString="y", fontName="Arial"),Line(visible=true, points={{-9,79},{43,79}}, color={192,192,192}, pattern=LinePattern.Dot),Line(visible=true, points={{-42,-1},{50,0}}, color={192,192,192}, pattern=LinePattern.Dot),Polygon(visible=true, lineColor={192,192,192}, fillColor={192,192,192}, fillPattern=FillPattern.Solid, points={{33,80},{30,67},{37,67},{33,80}}),Text(visible=true, fillColor={160,160,160}, extent={{37,39},{83,57}}, textString="amplitude", fontName="Arial"),Polygon(visible=true, lineColor={192,192,192}, fillColor={192,192,192}, fillPattern=FillPattern.Solid, points={{33,1},{30,14},{36,14},{33,1},{33,1}}),Line(visible=true, points={{33,79},{33,0}}, color={192,192,192})}), Icon(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10}), graphics={Line(visible=true, points={{-80,68},{-80,-80}}, color={192,192,192}),Polygon(visible=true, lineColor={192,192,192}, fillColor={192,192,192}, fillPattern=FillPattern.Solid, points={{-80,90},{-88,68},{-72,68},{-80,90}}),Line(visible=true, points={{-90,0},{68,0}}, color={192,192,192}),Polygon(visible=true, lineColor={192,192,192}, fillColor={192,192,192}, fillPattern=FillPattern.Solid, points={{90,0},{68,8},{68,-8},{90,0}}),Line(visible=true, points={{-80,0},{-68.7,34.2},{-61.5,53.1},{-55.1,66.4},{-49.4,74.6},{-43.8,79.1},{-38.2,79.8},{-32.6,76.6},{-26.9,69.7},{-21.3,59.4},{-14.9,44.1},{-6.83,21.2},{10.1,-30.8},{17.3,-50.2},{23.7,-64.2},{29.3,-73.1},{35,-78.4},{40.6,-80},{46.2,-77.6},{51.9,-71.5},{57.5,-61.9},{63.9,-47.2},{72,-24.8},{80,0}}, smooth=Smooth.Bezier),Text(visible=true, extent={{-147,-152},{153,-112}}, textString="freqHz=%freqHz", fontName="Arial")}));
|
---|
272 | protected
|
---|
273 | constant Real pi=Modelica.Constants.pi;
|
---|
274 | annotation(Icon(coordinateSystem(extent={{-100,-100},{100,100}}), graphics={Line(points={{-80,68},{-80,-80}}, color={192,192,192}),Polygon(points={{-80,90},{-88,68},{-72,68},{-80,90}}, fillPattern=FillPattern.Solid, lineColor={192,192,192}, fillColor={192,192,192}),Line(points={{-90,0},{68,0}}, color={192,192,192}),Polygon(points={{90,0},{68,8},{68,-8},{90,0}}, fillPattern=FillPattern.Solid, lineColor={192,192,192}, fillColor={192,192,192}),Line(points={{-80,0},{-68.7,34.2},{-61.5,53.1},{-55.1,66.4},{-49.4,74.6},{-43.8,79.1},{-38.2,79.8},{-32.6,76.6},{-26.9,69.7},{-21.3,59.4},{-14.9,44.1},{-6.83,21.2},{10.1,-30.8},{17.3,-50.2},{23.7,-64.2},{29.3,-73.1},{35,-78.4},{40.6,-80},{46.2,-77.6},{51.9,-71.5},{57.5,-61.9},{63.9,-47.2},{72,-24.8},{80,0}}, color={0,0,0}),Text(extent={{-147,-152},{153,-112}}, textString="freqHz=%freqHz", fillColor={0,0,0})}), Diagram(coordinateSystem(extent={{-100,-100},{100,100}}), graphics={Line(points={{-80,-90},{-80,84}}, color={192,192,192}),Polygon(points={{-80,100},{-86,84},{-74,84},{-80,100}}, fillPattern=FillPattern.Solid, lineColor={192,192,192}, fillColor={192,192,192}),Line(points={{-99,-40},{85,-40}}, color={192,192,192}),Polygon(points={{101,-40},{85,-34},{85,-46},{101,-40}}, fillPattern=FillPattern.Solid, lineColor={192,192,192}, fillColor={192,192,192}),Line(points={{-40,0},{-31.6,34.2},{-26.1,53.1},{-21.3,66.4},{-17.1,74.6},{-12.9,79.1},{-8.64,79.8},{-4.42,76.6},{-0.201,69.7},{4.02,59.4},{8.84,44.1},{14.9,21.2},{27.5,-30.8},{33,-50.2},{37.8,-64.2},{42,-73.1},{46.2,-78.4},{50.5,-80},{54.7,-77.6},{58.9,-71.5},{63.1,-61.9},{67.9,-47.2},{74,-24.8},{80,0}}, color={0,0,0}, thickness=0.5),Line(points={{-41,-2},{-80,-2}}, color={0,0,0}, thickness=0.5),Text(extent={{-128,7},{-82,-11}}, textString="offset", fillColor={160,160,160}),Line(points={{-41,-2},{-41,-40}}, color={192,192,192}, pattern=LinePattern.Dash),Text(extent={{-60,-43},{-14,-61}}, textString="startTime", fillColor={160,160,160}),Text(extent={{84,-52},{108,-72}}, textString="time", fillColor={160,160,160}),Text(extent={{-74,106},{-33,86}}, textString="y", fillColor={160,160,160}),Line(points={{-9,79},{43,79}}, color={192,192,192}, pattern=LinePattern.Dash),Line(points={{-42,-1},{50,0}}, color={192,192,192}, pattern=LinePattern.Dash),Polygon(points={{33,80},{30,67},{37,67},{33,80}}, lineColor={192,192,192}, fillColor={192,192,192}, fillPattern=FillPattern.Solid),Text(extent={{37,57},{83,39}}, textString="amplitude", fillColor={160,160,160}),Polygon(points={{33,1},{30,14},{36,14},{33,1},{33,1}}, lineColor={192,192,192}, fillColor={192,192,192}, fillPattern=FillPattern.Solid),Line(points={{33,79},{33,0}}, color={192,192,192}, pattern=LinePattern.Solid, thickness=0.25, arrow={Arrow.None,Arrow.None})}), Documentation(info="<html>
|
---|
275 |
|
---|
276 | </html>"));
|
---|
277 | equation
|
---|
278 | y=offset + (if time < startTime then 0 else amplitude*Modelica.Math.sin(2*pi*freqHz*(time - startTime) + phase));
|
---|
279 | end Sine;
|
---|
280 |
|
---|
281 | block Pulse "Generate pulse signal of type Real"
|
---|
282 | parameter Real amplitude=1 "Amplitude of pulse";
|
---|
283 | parameter Real width(final min=Modelica.Constants.small, final max=100)=50 "Width of pulse in % of periods";
|
---|
284 | parameter Modelica.SIunits.Time period(final min=Modelica.Constants.small)=1 "Time for one period";
|
---|
285 | parameter Real offset=0 "Offset of output signals";
|
---|
286 | parameter Modelica.SIunits.Time startTime=0 "Output = offset for time < startTime";
|
---|
287 | extends Modelica.Blocks.Interfaces.SO;
|
---|
288 | annotation(Icon(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10}), graphics={Line(visible=true, points={{-80,68},{-80,-80}}, color={192,192,192}),Polygon(visible=true, lineColor={192,192,192}, fillColor={192,192,192}, fillPattern=FillPattern.Solid, points={{-80,90},{-88,68},{-72,68},{-80,90}}),Line(visible=true, points={{-90,-70},{82,-70}}, color={192,192,192}),Polygon(visible=true, lineColor={192,192,192}, fillColor={192,192,192}, fillPattern=FillPattern.Solid, points={{90,-70},{68,-62},{68,-78},{90,-70}}),Line(visible=true, points={{-80,-70},{-40,-70},{-40,44},{0,44},{0,-70},{40,-70},{40,44},{79,44}}),Text(visible=true, extent={{-147,-152},{153,-112}}, textString="period=%period", fontName="Arial")}), Diagram(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10}), graphics={Polygon(visible=true, lineColor={192,192,192}, fillColor={192,192,192}, fillPattern=FillPattern.Solid, points={{-80,90},{-88,68},{-72,68},{-80,90}}),Line(visible=true, points={{-80,68},{-80,-80}}, color={192,192,192}),Line(visible=true, points={{-90,-70},{82,-70}}, color={192,192,192}),Polygon(visible=true, lineColor={192,192,192}, fillColor={192,192,192}, fillPattern=FillPattern.Solid, points={{90,-70},{68,-62},{68,-78},{90,-70}}),Polygon(visible=true, lineColor={192,192,192}, fillColor={192,192,192}, fillPattern=FillPattern.Solid, points={{-34,1},{-37,-12},{-30,-12},{-34,1}}),Line(visible=true, points={{-34,-1},{-34,-70}}, color={192,192,192}),Polygon(visible=true, lineColor={192,192,192}, fillColor={192,192,192}, fillPattern=FillPattern.Solid, points={{-33,-70},{-36,-57},{-30,-57},{-33,-70},{-33,-70}}),Text(visible=true, fillColor={160,160,160}, extent={{-78,-36},{-35,-24}}, textString="offset", fontName="Arial"),Text(visible=true, fillColor={160,160,160}, extent={{-31,-87},{15,-69}}, textString="startTime", fontName="Arial"),Text(visible=true, fillColor={160,160,160}, extent={{-76,79},{-35,99}}, textString="y", fontName="Arial"),Text(visible=true, fillColor={160,160,160}, extent={{70,-100},{94,-80}}, textString="time", fontName="Arial"),Line(visible=true, points={{-10,0},{-10,-70}}, color={192,192,192}, pattern=LinePattern.Dash),Line(visible=true, points={{-80,0},{-10,0},{-10,50},{30,50},{30,0},{50,0},{50,50},{90,50}}, thickness=0.5),Line(visible=true, points={{-10,88},{-10,49}}, color={192,192,192}, pattern=LinePattern.Dash),Line(visible=true, points={{30,74},{30,50}}, color={160,160,160}, pattern=LinePattern.Dash),Line(visible=true, points={{50,88},{50,50}}, color={192,192,192}, pattern=LinePattern.Dash),Line(visible=true, points={{-10,83},{51,83}}, color={192,192,192}),Line(visible=true, points={{-10,69},{30,69}}, color={192,192,192}),Text(visible=true, fillColor={160,160,160}, extent={{0,85},{46,97}}, textString="period", fontName="Arial"),Text(visible=true, fillColor={160,160,160}, extent={{-9,69},{30,81}}, textString="width", fontName="Arial"),Line(visible=true, points={{-43,50},{-10,50}}, color={192,192,192}, pattern=LinePattern.Dash),Line(visible=true, points={{-34,50},{-34,1}}, color={192,192,192}),Text(visible=true, fillColor={160,160,160}, extent={{-78,20},{-37,34}}, textString="amplitude", fontName="Arial"),Polygon(visible=true, lineColor={192,192,192}, fillColor={192,192,192}, fillPattern=FillPattern.Solid, points={{-34,49},{-37,36},{-30,36},{-34,49}}),Polygon(visible=true, lineColor={192,192,192}, fillColor={192,192,192}, fillPattern=FillPattern.Solid, points={{-34,1},{-37,14},{-31,14},{-34,1},{-34,1}}),Line(visible=true, points={{90,50},{90,0},{100,0}}, thickness=0.5),Polygon(visible=true, lineColor={192,192,192}, fillColor={192,192,192}, fillPattern=FillPattern.Solid, points={{-10,69},{-1,71},{-1,67},{-10,69}}),Polygon(visible=true, lineColor={192,192,192}, fillColor={192,192,192}, fillPattern=FillPattern.Solid, points={{30,69},{22,71},{22,67},{30,69}}),Polygon(visible=true, lineColor={192,192,192}, fillColor={192,192,192}, fillPattern=FillPattern.Solid, points={{-10,83},{-1,85},{-1,81},{-10,83}}),Polygon(visible=true, lineColor={192,192,192}, fillColor={192,192,192}, fillPattern=FillPattern.Solid, points={{50,83},{42,85},{42,81},{50,83}})}), Documentation(info="<html>
|
---|
289 |
|
---|
290 | </html>"));
|
---|
291 | protected
|
---|
292 | Modelica.SIunits.Time T0(final start=startTime) "Start time of current period";
|
---|
293 | Modelica.SIunits.Time T_width=period*width/100;
|
---|
294 | equation
|
---|
295 | when sample(startTime, period) then
|
---|
296 | T0=time;
|
---|
297 | end when;
|
---|
298 | y=offset + (if time < startTime or time >= T0 + T_width then 0 else amplitude);
|
---|
299 | end Pulse;
|
---|
300 |
|
---|
301 | block IntegerStep "Generate step signal of type Integer"
|
---|
302 | parameter Integer height=1 "Height of step";
|
---|
303 | extends Interfaces.IntegerSignalSource;
|
---|
304 | annotation(Icon(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10}), graphics={Line(visible=true, points={{-80,68},{-80,-80}}, color={192,192,192}),Polygon(visible=true, lineColor={192,192,192}, fillColor={192,192,192}, fillPattern=FillPattern.Solid, points={{-80,90},{-88,68},{-72,68},{-80,90}}),Line(visible=true, points={{-90,-70},{82,-70}}, color={192,192,192}),Polygon(visible=true, lineColor={192,192,192}, fillColor={192,192,192}, fillPattern=FillPattern.Solid, points={{90,-70},{68,-62},{68,-78},{90,-70}}),Line(visible=true, points={{-80,-70},{0,-70},{0,50},{80,50}}),Text(visible=true, extent={{-150,-150},{150,-110}}, textString="startTime=%startTime", fontName="Arial")}), Diagram(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10}), graphics={Polygon(visible=true, lineColor={192,192,192}, fillColor={192,192,192}, fillPattern=FillPattern.Solid, points={{-80,90},{-88,68},{-72,68},{-80,90}}),Line(visible=true, points={{-80,68},{-80,-80}}, color={192,192,192}),Line(visible=true, points={{-80,-18},{0,-18},{0,50},{80,50}}, thickness=0.5),Line(visible=true, points={{-90,-70},{82,-70}}, color={192,192,192}),Polygon(visible=true, lineColor={192,192,192}, fillColor={192,192,192}, fillPattern=FillPattern.Solid, points={{90,-70},{68,-62},{68,-78},{90,-70}}),Text(visible=true, fillColor={160,160,160}, extent={{70,-100},{94,-80}}, textString="time", fontName="Arial"),Text(visible=true, fillColor={160,160,160}, extent={{-21,-90},{25,-72}}, textString="startTime", fontName="Arial"),Line(visible=true, points={{0,-17},{0,-71}}, color={192,192,192}, pattern=LinePattern.Dash),Text(visible=true, fillColor={160,160,160}, extent={{-68,-54},{-22,-36}}, textString="offset", fontName="Arial"),Line(visible=true, points={{-13,50},{-13,-17}}, color={192,192,192}),Polygon(visible=true, lineColor={192,192,192}, pattern=LinePattern.Dash, points={{2,50},{-19,50},{2,50}}),Polygon(visible=true, lineColor={192,192,192}, fillColor={192,192,192}, fillPattern=FillPattern.Solid, points={{-13,-17},{-16,-4},{-10,-4},{-13,-17},{-13,-17}}),Polygon(visible=true, lineColor={192,192,192}, fillColor={192,192,192}, fillPattern=FillPattern.Solid, points={{-13,50},{-16,37},{-9,37},{-13,50}}),Text(visible=true, fillColor={160,160,160}, extent={{-68,8},{-22,26}}, textString="height", fontName="Arial"),Polygon(visible=true, lineColor={192,192,192}, fillColor={192,192,192}, fillPattern=FillPattern.Solid, points={{-13,-69},{-16,-56},{-10,-56},{-13,-69},{-13,-69}}),Line(visible=true, points={{-13,-18},{-13,-70}}, color={192,192,192}),Polygon(visible=true, lineColor={192,192,192}, fillColor={192,192,192}, fillPattern=FillPattern.Solid, points={{-13,-18},{-16,-31},{-9,-31},{-13,-18}}),Text(visible=true, fillColor={160,160,160}, extent={{-72,80},{-31,100}}, textString="outPort", fontName="Arial")}), Documentation(info="<html>
|
---|
305 |
|
---|
306 | </html>"));
|
---|
307 | equation
|
---|
308 | y=offset + (if time < startTime then 0 else height);
|
---|
309 | end IntegerStep;
|
---|
310 |
|
---|
311 | end Sources;
|
---|
312 |
|
---|
313 | package Routing "Blocks to combine and extract signals"
|
---|
314 | extends Icons.Library;
|
---|
315 | block Extractor "Extract scalar signal out of signal vector dependent on IntegerRealInput index"
|
---|
316 | extends Modelica.Blocks.Interfaces.MISO;
|
---|
317 | parameter Boolean allowOutOfRange=false "Index may be out of range";
|
---|
318 | parameter Real outOfRangeValue=10000000000.0 "Output signal if index is out of range";
|
---|
319 | annotation(Icon(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10}), graphics={Rectangle(visible=true, lineColor={0,0,255}, fillColor={255,255,255}, fillPattern=FillPattern.Solid, extent={{-80,-50},{-40,50}}),Polygon(visible=true, lineColor={0,0,255}, fillPattern=FillPattern.Solid, points={{-84.4104,1.9079},{-84.4104,-2.09208},{-80.4104,-0.09208},{-84.4104,1.9079}}),Line(visible=true, points={{-62,2},{-50.1395,12.907},{-39.1395,12.907}}, color={0,0,255}),Line(visible=true, points={{-63,4},{-49,40},{-39,40}}, color={0,0,255}),Line(visible=true, points={{-102,0},{-65.0373,-0.01802}}, color={0,0,255}),Ellipse(visible=true, lineColor={0,0,255}, fillColor={0,0,255}, fillPattern=FillPattern.Solid, extent={{-70.0437,-4.90745},{-60.0437,4.5925}}),Line(visible=true, points={{-63,-5},{-50,-40},{-39,-40}}, color={0,0,255}),Line(visible=true, points={{-62,-2},{-50.0698,-12.907},{-39.0698,-12.907}}, color={0,0,255}),Polygon(visible=true, lineColor={0,0,255}, fillColor={255,255,255}, fillPattern=FillPattern.Solid, points={{-38.8808,-11},{-38.8808,-15},{-34.8808,-13},{-38.8808,-11}}),Polygon(visible=true, lineColor={0,0,255}, fillColor={255,255,255}, fillPattern=FillPattern.Solid, points={{-39,42},{-39,38},{-35,40},{-39,42}}),Polygon(visible=true, lineColor={0,0,255}, fillColor={255,255,255}, fillPattern=FillPattern.Solid, points={{-38.8728,-38.0295},{-38.8728,-42.0295},{-34.8728,-40.0295},{-38.8728,-38.0295}}),Polygon(visible=true, lineColor={0,0,255}, fillColor={255,255,255}, fillPattern=FillPattern.Solid, points={{-38.9983,14.8801},{-38.9983,10.8801},{-34.9983,12.8801},{-38.9983,14.8801}}),Rectangle(visible=true, fillColor={235,235,235}, fillPattern=FillPattern.Solid, extent={{-30,-50},{30,50}}),Line(visible=true, points={{100,0},{0,0}}, color={127,0,255}),Line(visible=true, points={{0,2},{0,-104}}, color={255,127,0}),Line(visible=true, points={{-35,40},{-20,40}}, color={127,0,255}),Line(visible=true, points={{-35,13},{-20,13}}, color={127,0,255}),Line(visible=true, points={{-35,-13},{-20,-13}}, color={127,0,255}),Line(visible=true, points={{-35,-40},{-20,-40}}, color={127,0,255}),Polygon(visible=true, lineColor={127,0,255}, fillPattern=FillPattern.Solid, points={{0,0},{-18,13},{-20,13},{-2,0},{0,0}}),Ellipse(visible=true, lineColor={255,127,0}, fillColor={255,127,0}, fillPattern=FillPattern.Solid, extent={{-6,-6},{6,6}})}), Documentation(info="<html>
|
---|
320 | <p>This block extracts a scalar output signal out the
|
---|
321 | vector of input signals dependent on the Integer
|
---|
322 | value of the additional u index:</p>
|
---|
323 | <pre> y = u [ index ] ;
|
---|
324 | </pre>
|
---|
325 | <p>where index is an additional Integer input signal.</p>
|
---|
326 | </html>"), Diagram(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10})));
|
---|
327 | Modelica.Blocks.Interfaces.IntegerInput index annotation(Placement(visible=true, transformation(origin={0,-120}, extent={{-20,-20},{20,20}}, rotation=-270), iconTransformation(origin={0,-120}, extent={{-20,-20},{20,20}}, rotation=-270)));
|
---|
328 | protected
|
---|
329 | Real k[nin];
|
---|
330 | equation
|
---|
331 | when {initial(),change(index)} then
|
---|
332 | for i in 1:nin loop
|
---|
333 | k[i]=if index == i then 1 else 0;
|
---|
334 | end for;
|
---|
335 | end when;
|
---|
336 | y=if not allowOutOfRange or index > 0 and index <= nin then k*u else outOfRangeValue;
|
---|
337 | end Extractor;
|
---|
338 |
|
---|
339 | annotation(Documentation(info="<html>
|
---|
340 | <p>
|
---|
341 | This package contains blocks to combine and extract signals.
|
---|
342 | </p>
|
---|
343 | </html>"), Icon(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10})), Diagram(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10})));
|
---|
344 | end Routing;
|
---|
345 |
|
---|
346 | package Interfaces "Connectors and partial models for input/output blocks"
|
---|
347 | import Modelica.SIunits;
|
---|
348 | extends Modelica.Icons.Library;
|
---|
349 | annotation(preferedView="info", Documentation(info="<HTML>
|
---|
350 | <p>
|
---|
351 | This package contains interface definitions for
|
---|
352 | <b>continuous</b> input/output blocks with Real,
|
---|
353 | Integer and Boolean signals. Furthermore, it contains
|
---|
354 | partial models for continuous and discrete blocks.
|
---|
355 | </p>
|
---|
356 |
|
---|
357 | </HTML>
|
---|
358 | ", revisions="<html>
|
---|
359 | <ul>
|
---|
360 | <li><i>Oct. 21, 2002</i>
|
---|
361 | by <a href=\"http://www.robotic.dlr.de/Martin.Otter/\">Martin Otter</a>
|
---|
362 | and <a href=\"http://www.robotic.dlr.de/Christian.Schweiger/\">Christian Schweiger</a>:<br>
|
---|
363 | Added several new interfaces. <a href=\"../Documentation/ChangeNotes1.5.html\">Detailed description</a> available.
|
---|
364 | <li><i>Oct. 24, 1999</i>
|
---|
365 | by <a href=\"http://www.robotic.dlr.de/Martin.Otter/\">Martin Otter</a>:<br>
|
---|
366 | RealInputSignal renamed to RealInput. RealOutputSignal renamed to
|
---|
367 | output RealOutput. GraphBlock renamed to BlockIcon. SISOreal renamed to
|
---|
368 | SISO. SOreal renamed to SO. I2SOreal renamed to M2SO.
|
---|
369 | SignalGenerator renamed to SignalSource. Introduced the following
|
---|
370 | new models: MIMO, MIMOs, SVcontrol, MVcontrol, DiscreteBlockIcon,
|
---|
371 | DiscreteBlock, DiscreteSISO, DiscreteMIMO, DiscreteMIMOs,
|
---|
372 | BooleanBlockIcon, BooleanSISO, BooleanSignalSource, MI2BooleanMOs.</li>
|
---|
373 | <li><i>June 30, 1999</i>
|
---|
374 | by <a href=\"http://www.robotic.dlr.de/Martin.Otter/\">Martin Otter</a>:<br>
|
---|
375 | Realized a first version, based on an existing Dymola library
|
---|
376 | of Dieter Moormann and Hilding Elmqvist.</li>
|
---|
377 | </ul>
|
---|
378 | </html>
|
---|
379 | "), Icon(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10})), Diagram(coordinateSystem(extent={{0,0},{733,-491}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10})));
|
---|
380 | connector RealSignal "Real port (both input/output possible)"
|
---|
381 | replaceable type SignalType= Real annotation(Icon(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10})), Diagram(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10})));
|
---|
382 | extends SignalType;
|
---|
383 | annotation(Documentation(info="<html>
|
---|
384 | <p>
|
---|
385 | Connector with one signal of type Real (no icon, no input/output prefix).
|
---|
386 | </p>
|
---|
387 | </html>"), Icon(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10})), Diagram(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10})));
|
---|
388 | end RealSignal;
|
---|
389 |
|
---|
390 | connector IntegerSignal= Integer "Integer port (both input/output possible)" annotation(Documentation(info="<html>
|
---|
391 | <p>
|
---|
392 | Connector with one signal of type Icon (no icon, no input/output prefix).
|
---|
393 | </p>
|
---|
394 | </html>"), Icon(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10})), Diagram(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10})));
|
---|
395 | connector RealInput= input RealSignal "'input Real' as connector" annotation(defaultComponentName="u", Documentation(info="<html>
|
---|
396 | <p>
|
---|
397 | Connector with one input signal of type Real.
|
---|
398 | </p>
|
---|
399 | </html>"), Icon(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10}), graphics={Polygon(visible=true, lineColor={0,0,127}, fillColor={0,0,127}, fillPattern=FillPattern.Solid, points={{-100,100},{100,0},{-100,-100},{-100,100}})}), Diagram(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10}), graphics={Polygon(visible=true, lineColor={0,0,127}, fillColor={0,0,127}, fillPattern=FillPattern.Solid, points={{0,50},{100,0},{0,-50},{0,50}}),Text(visible=true, fillColor={0,0,127}, extent={{-120,60},{100,105}}, textString="%name", fontName="Arial")}));
|
---|
400 | connector RealOutput= output RealSignal "'output Real' as connector" annotation(defaultComponentName="y", Documentation(info="<html>
|
---|
401 | <p>
|
---|
402 | Connector with one output signal of type Real.
|
---|
403 | </p>
|
---|
404 | </html>"), Icon(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10}), graphics={Polygon(visible=true, lineColor={0,0,127}, fillColor={255,255,255}, fillPattern=FillPattern.Solid, points={{-100,100},{100,0},{-100,-100},{-100,100}})}), Diagram(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10}), graphics={Polygon(visible=true, lineColor={0,0,127}, fillColor={255,255,255}, fillPattern=FillPattern.Solid, points={{-100,50},{0,0},{-100,-50},{-100,50}}),Text(visible=true, fillColor={0,0,127}, extent={{-100,60},{130,140}}, textString="%name", fontName="Arial")}));
|
---|
405 | connector IntegerInput= input IntegerSignal "'input Integer' as connector" annotation(defaultComponentName="u", Documentation(info="<html>
|
---|
406 | <p>
|
---|
407 | Connector with one input signal of type Integer.
|
---|
408 | </p>
|
---|
409 | </html>"), Icon(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10}), graphics={Polygon(visible=true, lineColor={255,127,0}, fillColor={255,127,0}, fillPattern=FillPattern.Solid, points={{-100,100},{100,0},{-100,-100},{-100,100}})}), Diagram(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10}), graphics={Polygon(visible=true, lineColor={255,127,0}, fillColor={255,127,0}, fillPattern=FillPattern.Solid, points={{0,50},{100,0},{0,-50},{0,50}}),Text(visible=true, fillColor={255,127,0}, extent={{-120,60},{100,105}}, textString="%name", fontName="Arial")}));
|
---|
410 | connector IntegerOutput= output IntegerSignal "'output Integer' as connector" annotation(defaultComponentName="y", Documentation(info="<html>
|
---|
411 | <p>
|
---|
412 | Connector with one output signal of type Integer.
|
---|
413 | </p>
|
---|
414 | </html>"), Icon(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10}), graphics={Polygon(visible=true, lineColor={255,127,0}, fillColor={255,255,255}, fillPattern=FillPattern.Solid, points={{-100,100},{100,0},{-100,-100},{-100,100}})}), Diagram(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10}), graphics={Polygon(visible=true, lineColor={255,127,0}, fillColor={255,255,255}, fillPattern=FillPattern.Solid, points={{-100,50},{0,0},{-100,-50},{-100,50}}),Text(visible=true, fillColor={255,127,0}, extent={{-100,60},{130,140}}, textString="%name", fontName="Arial")}));
|
---|
415 | partial block BlockIcon "Basic graphical layout of input/output block"
|
---|
416 | annotation(Documentation(info="<html>
|
---|
417 | <p>
|
---|
418 | Block that has only the basic icon for an input/output
|
---|
419 | block (no declarations, no equations). Most blocks
|
---|
420 | of package Modelica.Blocks inherit directly or indirectly
|
---|
421 | from this block.
|
---|
422 | </p>
|
---|
423 | </html>"), Icon(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10}), graphics={Rectangle(visible=true, lineColor={0,0,127}, fillColor={255,255,255}, fillPattern=FillPattern.Solid, extent={{-100,-100},{100,100}}),Text(visible=true, fillColor={0,0,255}, fillPattern=FillPattern.Solid, extent={{-150,110},{150,150}}, textString="%name", fontName="Arial")}), Diagram(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10})));
|
---|
424 | end BlockIcon;
|
---|
425 |
|
---|
426 | partial block SO "Single Output continuous control block"
|
---|
427 | extends BlockIcon;
|
---|
428 | annotation(Diagram(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10})), Documentation(info="<html>
|
---|
429 | <p>
|
---|
430 | Block has one continuous Real output signal.
|
---|
431 | </p>
|
---|
432 | </html>"), Icon(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10})));
|
---|
433 | RealOutput y "Connector of Real output signal" annotation(Placement(visible=true, transformation(origin={110,0}, extent={{-10,-10},{10,10}}, rotation=0), iconTransformation(origin={110,0}, extent={{-10,-10},{10,10}}, rotation=0)));
|
---|
434 | end SO;
|
---|
435 |
|
---|
436 | partial block MISO "Multiple Input Single Output continuous control block"
|
---|
437 | extends BlockIcon;
|
---|
438 | parameter Integer nin=1 "Number of inputs";
|
---|
439 | annotation(Documentation(info="<HTML>
|
---|
440 | <p>
|
---|
441 | Block has a vector of continuous Real input signals and
|
---|
442 | one continuous Real output signal.
|
---|
443 | </p>
|
---|
444 | </HTML>
|
---|
445 | "), Icon(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10})), Diagram(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10})));
|
---|
446 | RealInput u[nin] "Connector of Real input signals" annotation(Placement(visible=true, transformation(origin={-120,0}, extent={{-20,-20},{20,20}}, rotation=0), iconTransformation(origin={-120,0}, extent={{-20,-20},{20,20}}, rotation=0)));
|
---|
447 | RealOutput y "Connector of Real output signal" annotation(Placement(visible=true, transformation(origin={110,0}, extent={{-10,-10},{10,10}}, rotation=0), iconTransformation(origin={110,0}, extent={{-10,-10},{10,10}}, rotation=0)));
|
---|
448 | end MISO;
|
---|
449 |
|
---|
450 | partial block IntegerBlockIcon "Basic graphical layout of Integer block"
|
---|
451 | annotation(Documentation(info="<html>
|
---|
452 | <p>
|
---|
453 | Block that has only the basic icon for an input/output,
|
---|
454 | Integer block (no declarations, no equations).
|
---|
455 | </p>
|
---|
456 | </html>"), Icon(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10}), graphics={Rectangle(visible=true, lineColor={255,127,0}, fillColor={255,255,255}, fillPattern=FillPattern.Solid, extent={{-100,-100},{100,100}}),Text(visible=true, fillColor={0,0,255}, fillPattern=FillPattern.Solid, extent={{-150,110},{150,150}}, textString="%name", fontName="Arial")}), Diagram(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10})));
|
---|
457 | end IntegerBlockIcon;
|
---|
458 |
|
---|
459 | partial block IntegerSO "Single Integer Output continuous control block"
|
---|
460 | extends IntegerBlockIcon;
|
---|
461 | annotation(Documentation(info="<html>
|
---|
462 | <p>
|
---|
463 | Block has one continuous Integer output signal.
|
---|
464 | </p>
|
---|
465 | </html>"), Icon(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10})), Diagram(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10})));
|
---|
466 | IntegerOutput y "Connector of Integer output signal" annotation(Placement(visible=true, transformation(origin={110,0}, extent={{-10,-10},{10,10}}, rotation=0), iconTransformation(origin={110,0}, extent={{-10,-10},{10,10}}, rotation=0)));
|
---|
467 | end IntegerSO;
|
---|
468 |
|
---|
469 | partial block IntegerSignalSource "Base class for continuous Integer signal source"
|
---|
470 | extends IntegerSO;
|
---|
471 | parameter Integer offset=0 "offset of output signal";
|
---|
472 | parameter SI.Time startTime=0 "y = offset for time < startTime";
|
---|
473 | annotation(Documentation(info="<html>
|
---|
474 | <p>
|
---|
475 | Basic block for Integer sources of package Blocks.Sources.
|
---|
476 | This component has one continuous Integer output signal y
|
---|
477 | and two parameters (offset, startTime) to shift the
|
---|
478 | generated signal.
|
---|
479 | </p>
|
---|
480 | </html>"), Icon(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10})), Diagram(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10})));
|
---|
481 | end IntegerSignalSource;
|
---|
482 |
|
---|
483 | end Interfaces;
|
---|
484 |
|
---|
485 | end Blocks;
|
---|
486 |
|
---|
487 | package SIunits "Type and unit definitions based on SI units according to ISO 31-1992"
|
---|
488 | extends Modelica.Icons.Library2;
|
---|
489 | annotation(preferedView="info", Invisible=true, Icon(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10}), graphics={Text(visible=true, extent={{-63,-67},{45,-13}}, textString="[kg.m2]", fontName="Arial")}), Documentation(info="<html>
|
---|
490 | <p>This package provides predefined types, such as <i>Mass</i>,
|
---|
491 | <i>Angle</i>, <i>Time</i>, based on the international standard
|
---|
492 | on units, e.g.,
|
---|
493 | </p>
|
---|
494 |
|
---|
495 | <pre> <b>type</b> Angle = Real(<b>final</b> quantity = \"Angle\",
|
---|
496 | <b>final</b> unit = \"rad\",
|
---|
497 | displayUnit = \"deg\");
|
---|
498 | </pre>
|
---|
499 |
|
---|
500 | <p>
|
---|
501 | as well as conversion functions from non SI-units to SI-units
|
---|
502 | and vice versa in subpackage
|
---|
503 | <a href=\"Modelica://Modelica.SIunits.Conversions\">Conversions</a>.
|
---|
504 | </p>
|
---|
505 |
|
---|
506 | <p>
|
---|
507 | For an introduction how units are used in the Modelica standard library
|
---|
508 | with package SIunits, have a look at:
|
---|
509 | <a href=\"Modelica://Modelica.SIunits.UsersGuide.HowToUseSIunits\">How to use SIunits</a>.
|
---|
510 | </p>
|
---|
511 |
|
---|
512 | <p>
|
---|
513 | Copyright © 1998-2006, Modelica Association and DLR.
|
---|
514 | </p>
|
---|
515 | <p>
|
---|
516 | <i>This Modelica package is <b>free</b> software; it can be redistributed and/or modified
|
---|
517 | under the terms of the <b>Modelica license</b>, see the license conditions
|
---|
518 | and the accompanying <b>disclaimer</b>
|
---|
519 | <a href=\"Modelica://Modelica.UsersGuide.ModelicaLicense\">here</a>.</i>
|
---|
520 | </p>
|
---|
521 |
|
---|
522 | </html>", revisions="<html>
|
---|
523 | <ul>
|
---|
524 | <li><i>Dec. 14, 2005</i>
|
---|
525 | by <a href=\"http://www.robotic.dlr.de/Martin.Otter/\">Martin Otter</a>:<br>
|
---|
526 | Add users guide and removed \"min\" values for Resistance and Conductance.</li>
|
---|
527 | <li><i>October 21, 2002</i>
|
---|
528 | by <a href=\"http://www.robotic.dlr.de/Martin.Otter/\">Martin Otter</a>
|
---|
529 | and <a href=\"http://www.robotic.dlr.de/Christian.Schweiger/\">Christian Schweiger</a>:<br>
|
---|
530 | Added new package <b>Conversions</b>. Corrected typo <i>Wavelenght</i>.</li>
|
---|
531 | <li><i>June 6, 2000</i>
|
---|
532 | by <a href=\"http://www.robotic.dlr.de/Martin.Otter/\">Martin Otter</a>:<br>
|
---|
533 | Introduced the following new types<br>
|
---|
534 | type Temperature = ThermodynamicTemperature;<br>
|
---|
535 | types DerDensityByEnthalpy, DerDensityByPressure,
|
---|
536 | DerDensityByTemperature, DerEnthalpyByPressure,
|
---|
537 | DerEnergyByDensity, DerEnergyByPressure<br>
|
---|
538 | Attribute \"final\" removed from min and max values
|
---|
539 | in order that these values can still be changed to narrow
|
---|
540 | the allowed range of values.<br>
|
---|
541 | Quantity=\"Stress\" removed from type \"Stress\", in order
|
---|
542 | that a type \"Stress\" can be connected to a type \"Pressure\".</li>
|
---|
543 | <li><i>Oct. 27, 1999</i>
|
---|
544 | by <a href=\"http://www.robotic.dlr.de/Martin.Otter/\">Martin Otter</a>:<br>
|
---|
545 | New types due to electrical library: Transconductance, InversePotential,
|
---|
546 | Damping.</li>
|
---|
547 | <li><i>Sept. 18, 1999</i>
|
---|
548 | by <a href=\"http://www.robotic.dlr.de/Martin.Otter/\">Martin Otter</a>:<br>
|
---|
549 | Renamed from SIunit to SIunits. Subpackages expanded, i.e., the
|
---|
550 | SIunits package, does no longer contain subpackages.</li>
|
---|
551 | <li><i>Aug 12, 1999</i>
|
---|
552 | by <a href=\"http://www.robotic.dlr.de/Martin.Otter/\">Martin Otter</a>:<br>
|
---|
553 | Type \"Pressure\" renamed to \"AbsolutePressure\" and introduced a new
|
---|
554 | type \"Pressure\" which does not contain a minimum of zero in order
|
---|
555 | to allow convenient handling of relative pressure. Redefined
|
---|
556 | BulkModulus as an alias to AbsolutePressure instead of Stress, since
|
---|
557 | needed in hydraulics.</li>
|
---|
558 | <li><i>June 29, 1999</i>
|
---|
559 | by <a href=\"http://www.robotic.dlr.de/Martin.Otter/\">Martin Otter</a>:<br>
|
---|
560 | Bug-fix: Double definition of \"Compressibility\" removed
|
---|
561 | and appropriate \"extends Heat\" clause introduced in
|
---|
562 | package SolidStatePhysics to incorporate ThermodynamicTemperature.</li>
|
---|
563 | <li><i>April 8, 1998</i>
|
---|
564 | by <a href=\"http://www.robotic.dlr.de/Martin.Otter/\">Martin Otter</a>
|
---|
565 | and Astrid Jaschinski:<br>
|
---|
566 | Complete ISO 31 chapters realized.</li>
|
---|
567 | <li><i>Nov. 15, 1997</i>
|
---|
568 | by <a href=\"http://www.robotic.dlr.de/Martin.Otter/\">Martin Otter</a>
|
---|
569 | and <a href=\"http://www.control.lth.se/~hubertus/\">Hubertus Tummescheit</a>:<br>
|
---|
570 | Some chapters realized.</li>
|
---|
571 | </ul>
|
---|
572 | </html>"), Diagram(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10}), graphics={Rectangle(visible=true, fillColor={235,235,235}, fillPattern=FillPattern.Solid, extent={{169,86},{349,236}}),Polygon(visible=true, fillColor={235,235,235}, fillPattern=FillPattern.Solid, points={{169,236},{189,256},{369,256},{349,236},{169,236}}),Polygon(visible=true, fillColor={235,235,235}, fillPattern=FillPattern.Solid, points={{369,256},{369,106},{349,86},{349,236},{369,256}}),Text(visible=true, fillColor={160,160,160}, extent={{179,196},{339,226}}, textString="Library", fontName="Arial"),Text(visible=true, extent={{206,119},{314,173}}, textString="[kg.m2]", fontName="Arial"),Text(visible=true, fillColor={255,0,0}, extent={{163,264},{406,320}}, textString="Modelica.SIunits", fontName="Arial")}));
|
---|
573 | package Conversions "Conversion functions to/from non SI units and type definitions of non SI units"
|
---|
574 | extends Modelica.Icons.Library2;
|
---|
575 | annotation(preferedView="info", Icon(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10}), graphics={Text(visible=true, lineThickness=1, extent={{-92,-67},{-33,-7}}, textString="°C", fontName="Arial"),Text(visible=true, extent={{22,-67},{82,-7}}, textString="K", fontName="Arial"),Line(visible=true, points={{-26,-36},{6,-36}}),Polygon(visible=true, pattern=LinePattern.None, fillPattern=FillPattern.Solid, points={{6,-28},{6,-45},{26,-37},{6,-28}})}), Documentation(info="<HTML>
|
---|
576 | <p>This package provides conversion functions from the non SI Units
|
---|
577 | defined in package Modelica.SIunits.Conversions.NonSIunits to the
|
---|
578 | corresponding SI Units defined in package Modelica.SIunits and vice
|
---|
579 | versa. It is recommended to use these functions in the following
|
---|
580 | way (note, that all functions have one Real input and one Real output
|
---|
581 | argument):</p>
|
---|
582 | <pre>
|
---|
583 | <b>import</b> SI = Modelica.SIunits;
|
---|
584 | <b>import</b> Modelica.SIunits.Conversions.*;
|
---|
585 | ...
|
---|
586 | <b>parameter</b> SI.Temperature T = from_degC(25); // convert 25 degree Celsius to Kelvin
|
---|
587 | <b>parameter</b> SI.Angle phi = from_deg(180); // convert 180 degree to radian
|
---|
588 | <b>parameter</b> SI.AngularVelocity w = from_rpm(3600); // convert 3600 revolutions per minutes
|
---|
589 | // to radian per seconds
|
---|
590 | </pre>
|
---|
591 |
|
---|
592 | </HTML>
|
---|
593 | "), Diagram(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10})));
|
---|
594 | package NonSIunits "Type definitions of non SI units"
|
---|
595 | extends Modelica.Icons.Library2;
|
---|
596 | type Temperature_degC= Real(final quantity="ThermodynamicTemperature", final unit="degC") annotation(Icon(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10})), Diagram(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10})));
|
---|
597 | annotation(preferedView="info", Documentation(info="<HTML>
|
---|
598 | <p>
|
---|
599 | This package provides predefined types, such as <b>Angle_deg</b> (angle in
|
---|
600 | degree), <b>AngularVelocity_rpm</b> (angular velocity in revolutions per
|
---|
601 | minute) or <b>Temperature_degF</b> (temperature in degree Fahrenheit),
|
---|
602 | which are in common use but are not part of the international standard on
|
---|
603 | units according to ISO 31-1992 \"General principles concerning quantities,
|
---|
604 | units and symbols\" and ISO 1000-1992 \"SI units and recommendations for
|
---|
605 | the use of their multiples and of certain other units\".</p>
|
---|
606 | <p>If possible, the types in this package should not be used. Use instead
|
---|
607 | types of package Modelica.SIunits. For more information on units, see also
|
---|
608 | the book of Francois Cardarelli <b>Scientific Unit Conversion - A
|
---|
609 | Practical Guide to Metrication</b> (Springer 1997).</p>
|
---|
610 | <p>Some units, such as <b>Temperature_degC/Temp_C</b> are both defined in
|
---|
611 | Modelica.SIunits and in Modelica.Conversions.NonSIunits. The reason is that these
|
---|
612 | definitions have been placed erroneously in Modelica.SIunits although they
|
---|
613 | are not SIunits. For backward compatibility, these type definitions are
|
---|
614 | still kept in Modelica.SIunits.</p>
|
---|
615 | </HTML>
|
---|
616 | "), Icon(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10}), graphics={Text(visible=true, extent={{-66,-67},{52,-13}}, textString="[rev/min]", fontName="Arial")}), Diagram(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10})));
|
---|
617 | end NonSIunits;
|
---|
618 |
|
---|
619 | end Conversions;
|
---|
620 |
|
---|
621 | type Angle= Real(final quantity="Angle", final unit="rad", displayUnit="deg") annotation(Icon(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10})), Diagram(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10})));
|
---|
622 | type Time= Real(final quantity="Time", final unit="s") annotation(Icon(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10})), Diagram(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10})));
|
---|
623 | type Velocity= Real(final quantity="Velocity", final unit="m/s") annotation(Icon(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10})), Diagram(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10})));
|
---|
624 | type Acceleration= Real(final quantity="Acceleration", final unit="m/s2") annotation(Icon(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10})), Diagram(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10})));
|
---|
625 | type Frequency= Real(final quantity="Frequency", final unit="Hz") annotation(Icon(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10})), Diagram(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10})));
|
---|
626 | end SIunits;
|
---|
627 |
|
---|
628 | package Icons "Icon definitions"
|
---|
629 | annotation(preferedView="info", Documentation(info="<html>
|
---|
630 | <p>
|
---|
631 | This package contains definitions for the graphical layout of
|
---|
632 | components which may be used in different libraries.
|
---|
633 | The icons can be utilized by inheriting them in the desired class
|
---|
634 | using \"extends\".
|
---|
635 | </p>
|
---|
636 | <dl>
|
---|
637 | <dt><b>Main Author:</b>
|
---|
638 | <dd><a href=\"http://www.robotic.dlr.de/Martin.Otter/\">Martin Otter</a><br>
|
---|
639 | Deutsches Zentrum fuer Luft und Raumfahrt e.V. (DLR)<br>
|
---|
640 | Oberpfaffenhofen<br>
|
---|
641 | Postfach 1116<br>
|
---|
642 | D-82230 Wessling<br>
|
---|
643 | email: <A HREF=\"mailto:Martin.Otter@dlr.de\">Martin.Otter@dlr.de</A><br>
|
---|
644 | </dl>
|
---|
645 |
|
---|
646 | <p>
|
---|
647 | Copyright © 1998-2006, Modelica Association and DLR.
|
---|
648 | </p>
|
---|
649 | <p>
|
---|
650 | <i>This Modelica package is <b>free</b> software; it can be redistributed and/or modified
|
---|
651 | under the terms of the <b>Modelica license</b>, see the license conditions
|
---|
652 | and the accompanying <b>disclaimer</b>
|
---|
653 | <a href=\"Modelica://Modelica.UsersGuide.ModelicaLicense\">here</a>.</i>
|
---|
654 | </p><br>
|
---|
655 | </HTML>
|
---|
656 | ", revisions="<html>
|
---|
657 | <ul>
|
---|
658 | <li><i>October 21, 2002</i>
|
---|
659 | by <a href=\"http://www.robotic.dlr.de/Martin.Otter/\">Martin Otter</a>
|
---|
660 | and <a href=\"http://www.robotic.dlr.de/Christian.Schweiger/\">Christian Schweiger</a>:<br>
|
---|
661 | Added new icons <b>Function</b>, <b>Enumerations</b> and <b>Record</b>.</li>
|
---|
662 | <li><i>June 6, 2000</i>
|
---|
663 | by <a href=\"http://www.robotic.dlr.de/Martin.Otter/\">Martin Otter</a>:<br>
|
---|
664 | Replaced <b>model</b> keyword by <b>package</b> if the main
|
---|
665 | usage is for inheriting from a package.<br>
|
---|
666 | New icons <b>GearIcon</b> and <b>MotorIcon</b>.</li>
|
---|
667 | <li><i>Sept. 18, 1999</i>
|
---|
668 | by <a href=\"http://www.robotic.dlr.de/Martin.Otter/\">Martin Otter</a>:<br>
|
---|
669 | Renaming package Icon to Icons.
|
---|
670 | Model Advanced removed (icon not accepted on the Modelica meeting).
|
---|
671 | New model Library2, which is the Library icon with enough place
|
---|
672 | to add library specific elements in the icon. Icon also used in diagram
|
---|
673 | level for models Info, TranslationalSensor, RotationalSensor.</li>
|
---|
674 | <li><i>July 15, 1999</i>
|
---|
675 | by <a href=\"http://www.robotic.dlr.de/Martin.Otter/\">Martin Otter</a>:<br>
|
---|
676 | Model Caution renamed to Advanced, model Sensor renamed to
|
---|
677 | TranslationalSensor, new model RotationalSensor.</li>
|
---|
678 | <li><i>June 30, 1999</i>
|
---|
679 | by <a href=\"http://www.robotic.dlr.de/Martin.Otter/\">Martin Otter</a>:<br>
|
---|
680 | Realized a first version.</li>
|
---|
681 | </ul>
|
---|
682 | <br>
|
---|
683 | </html>"), Icon(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10}), graphics={Rectangle(visible=true, fillColor={235,235,235}, fillPattern=FillPattern.Solid, extent={{-100,-100},{80,50}}),Polygon(visible=true, fillColor={235,235,235}, fillPattern=FillPattern.Solid, points={{-100,50},{-80,70},{100,70},{80,50},{-100,50}}),Polygon(visible=true, fillColor={235,235,235}, fillPattern=FillPattern.Solid, points={{100,70},{100,-80},{80,-100},{80,50},{100,70}}),Text(visible=true, fillColor={255,0,0}, extent={{-120,70},{120,135}}, textString="%name", fontName="Arial"),Text(visible=true, fillColor={160,160,160}, extent={{-90,10},{70,40}}, textString="Library", fontName="Arial"),Rectangle(visible=true, fillColor={235,235,235}, fillPattern=FillPattern.Solid, extent={{-100,-100},{80,50}}),Polygon(visible=true, fillColor={210,210,210}, fillPattern=FillPattern.Solid, points={{-100,50},{-80,70},{100,70},{80,50},{-100,50}}),Polygon(visible=true, fillColor={210,210,210}, fillPattern=FillPattern.Solid, points={{100,70},{100,-80},{80,-100},{80,50},{100,70}}),Text(visible=true, fillColor={160,160,160}, extent={{-90,10},{70,40}}, textString="Library", fontName="Arial"),Polygon(visible=true, fillColor={192,192,192}, fillPattern=FillPattern.Solid, points={{-64,-20},{-50,-4},{50,-4},{36,-20},{-64,-20},{-64,-20}}),Rectangle(visible=true, fillColor={192,192,192}, fillPattern=FillPattern.Solid, extent={{-64,-84},{36,-20}}),Text(visible=true, fillColor={128,128,128}, extent={{-60,-38},{32,-24}}, textString="Library", fontName="Arial"),Polygon(visible=true, fillColor={192,192,192}, fillPattern=FillPattern.Solid, points={{50,-4},{50,-70},{36,-84},{36,-20},{50,-4}})}), Diagram(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10})));
|
---|
684 | partial package Library "Icon for library"
|
---|
685 | annotation(Icon(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10}), graphics={Rectangle(visible=true, fillColor={235,235,235}, fillPattern=FillPattern.Solid, extent={{-100,-100},{80,50}}),Polygon(visible=true, fillColor={210,210,210}, fillPattern=FillPattern.Solid, points={{-100,50},{-80,70},{100,70},{80,50},{-100,50}}),Polygon(visible=true, fillColor={210,210,210}, fillPattern=FillPattern.Solid, points={{100,70},{100,-80},{80,-100},{80,50},{100,70}}),Text(visible=true, fillColor={0,0,255}, extent={{-85,-85},{65,35}}, textString="Library", fontName="Arial"),Text(visible=true, fillColor={255,0,0}, extent={{-120,73},{120,122}}, textString="%name", fontName="Arial")}), Diagram(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10})));
|
---|
686 | end Library;
|
---|
687 |
|
---|
688 | partial package Library2 "Icon for library where additional icon elements shall be added"
|
---|
689 | annotation(Icon(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10}), graphics={Rectangle(visible=true, fillColor={235,235,235}, fillPattern=FillPattern.Solid, extent={{-100,-100},{80,50}}),Polygon(visible=true, fillColor={210,210,210}, fillPattern=FillPattern.Solid, points={{-100,50},{-80,70},{100,70},{80,50},{-100,50}}),Polygon(visible=true, fillColor={210,210,210}, fillPattern=FillPattern.Solid, points={{100,70},{100,-80},{80,-100},{80,50},{100,70}}),Text(visible=true, fillColor={255,0,0}, extent={{-120,70},{120,125}}, textString="%name", fontName="Arial"),Text(visible=true, fillColor={160,160,160}, fillPattern=FillPattern.Solid, extent={{-90,10},{70,40}}, textString="Library", fontName="Arial")}), Diagram(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10})));
|
---|
690 | end Library2;
|
---|
691 |
|
---|
692 | end Icons;
|
---|
693 |
|
---|
694 | package Constants "Mathematical constants and constants of nature (e.g., pi, eps, R, sigma)"
|
---|
695 | import SI = Modelica.SIunits;
|
---|
696 | import NonSI = Modelica.SIunits.Conversions.NonSIunits;
|
---|
697 | extends Modelica.Icons.Library2;
|
---|
698 | constant Real e=Modelica.Math.exp(1.0);
|
---|
699 | constant Real pi=2*Modelica.Math.asin(1.0);
|
---|
700 | constant Real D2R=pi/180 "Degree to Radian";
|
---|
701 | constant Real R2D=180/pi "Radian to Degree";
|
---|
702 | constant Real eps=1e-15 "Biggest number such that 1.0 + eps = 1.0";
|
---|
703 | constant Real small=1e-60 "Smallest number such that small and -small are representable on the machine";
|
---|
704 | constant Real inf=1e+60 "Biggest Real number such that inf and -inf are representable on the machine";
|
---|
705 | constant Integer Integer_inf=1073741823 "Biggest Integer number such that Integer_inf and -Integer_inf are representable on the machine";
|
---|
706 | constant SI.Velocity c=299792458 "Speed of light in vacuum";
|
---|
707 | constant SI.Acceleration g_n=9.80665 "Standard acceleration of gravity on earth";
|
---|
708 | constant Real G(final unit="m3/(kg.s2)")=6.6742e-11 "Newtonian constant of gravitation";
|
---|
709 | constant Real h(final unit="J.s")=6.6260693e-34 "Planck constant";
|
---|
710 | constant Real k(final unit="J/K")=1.3806505e-23 "Boltzmann constant";
|
---|
711 | constant Real R(final unit="J/(mol.K)")=8.314472 "Molar gas constant";
|
---|
712 | constant Real sigma(final unit="W/(m2.K4)")=5.6704e-08 "Stefan-Boltzmann constant";
|
---|
713 | constant Real N_A(final unit="1/mol")=6.0221415e+23 "Avogadro constant";
|
---|
714 | constant Real mue_0(final unit="N/A2")=4*pi*1e-07 "Magnetic constant";
|
---|
715 | constant Real epsilon_0(final unit="F/m")=1/(mue_0*c*c) "Electric constant";
|
---|
716 | constant NonSI.Temperature_degC T_zero=-273.15 "Absolute zero temperature";
|
---|
717 | annotation(Documentation(info="<html>
|
---|
718 | <p>
|
---|
719 | This package provides often needed constants from mathematics, machine
|
---|
720 | dependent constants and constants from nature. The latter constants
|
---|
721 | (name, value, description) are from the following source:
|
---|
722 | </p>
|
---|
723 |
|
---|
724 | <dl>
|
---|
725 | <dt>Peter J. Mohr and Barry N. Taylor (1999):</dt>
|
---|
726 | <dd><b>CODATA Recommended Values of the Fundamental Physical Constants: 1998</b>.
|
---|
727 | Journal of Physical and Chemical Reference Data, Vol. 28, No. 6, 1999 and
|
---|
728 | Reviews of Modern Physics, Vol. 72, No. 2, 2000. See also <a href=
|
---|
729 | \"http://physics.nist.gov/cuu/Constants/\">http://physics.nist.gov/cuu/Constants/</a></dd>
|
---|
730 | </dl>
|
---|
731 |
|
---|
732 | <p>CODATA is the Committee on Data for Science and Technology.</p>
|
---|
733 |
|
---|
734 | <dl>
|
---|
735 | <dt><b>Main Author:</b></dt>
|
---|
736 | <dd><a href=\"http://www.robotic.dlr.de/Martin.Otter/\">Martin Otter</a><br>
|
---|
737 | Deutsches Zentrum für Luft und Raumfahrt e. V. (DLR)<br>
|
---|
738 | Oberpfaffenhofen<br>
|
---|
739 | Postfach 11 16<br>
|
---|
740 | D-82230 Weßling<br>
|
---|
741 | email: <a href=\"mailto:Martin.Otter@dlr.de\">Martin.Otter@dlr.de</a></dd>
|
---|
742 | </dl>
|
---|
743 |
|
---|
744 |
|
---|
745 | <p>
|
---|
746 | Copyright © 1998-2006, Modelica Association and DLR.
|
---|
747 | </p>
|
---|
748 | <p>
|
---|
749 | <i>The Modelica package is <b>free</b> software; it can be redistributed and/or modified
|
---|
750 | under the terms of the <b>Modelica license</b>, see the license conditions
|
---|
751 | and the accompanying <b>disclaimer</b>
|
---|
752 | <a href=\"Modelica://Modelica.UsersGuide.ModelicaLicense\">here</a>.</i>
|
---|
753 | </p><br>
|
---|
754 | </html>
|
---|
755 | ", revisions="<html>
|
---|
756 | <ul>
|
---|
757 | <li><i>Nov 8, 2004</i>
|
---|
758 | by <a href=\"http://www.robotic.dlr.de/Christian.Schweiger/\">Christian Schweiger</a>:<br>
|
---|
759 | Constants updated according to 2002 CODATA values.</li>
|
---|
760 | <li><i>Dec 9, 1999</i>
|
---|
761 | by <a href=\"http://www.robotic.dlr.de/Martin.Otter/\">Martin Otter</a>:<br>
|
---|
762 | Constants updated according to 1998 CODATA values. Using names, values
|
---|
763 | and description text from this source. Included magnetic and
|
---|
764 | electric constant.</li>
|
---|
765 | <li><i>Sep 18, 1999</i>
|
---|
766 | by <a href=\"http://www.robotic.dlr.de/Martin.Otter/\">Martin Otter</a>:<br>
|
---|
767 | Constants eps, inf, small introduced.</li>
|
---|
768 | <li><i>Nov 15, 1997</i>
|
---|
769 | by <a href=\"http://www.robotic.dlr.de/Martin.Otter/\">Martin Otter</a>:<br>
|
---|
770 | Realized.</li>
|
---|
771 | </ul>
|
---|
772 | </html>"), Icon(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10}), graphics={Line(visible=true, points={{-34,-38},{12,-38}}, thickness=0.5),Line(visible=true, points={{-20,-38},{-24,-48},{-28,-56},{-34,-64}}, thickness=0.5),Line(visible=true, points={{-2,-38},{2,-46},{8,-56},{14,-64}}, thickness=0.5)}), Diagram(coordinateSystem(extent={{-100,100},{100,-100}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10})));
|
---|
773 | end Constants;
|
---|
774 |
|
---|
775 | end Modelica;
|
---|
776 | model ExtractorTest
|
---|
777 | annotation(Diagram(coordinateSystem(extent={{-148.5,-105.0},{148.5,105.0}}, preserveAspectRatio=true, initialScale=0.1, grid={10,10})));
|
---|
778 | Modelica.Blocks.Routing.Extractor extractor1(nin=2) annotation(Placement(visible=true, transformation(origin={-22.0486,7.4626}, extent={{-10.0,-10.0},{10.0,10.0}}, rotation=0)));
|
---|
779 | Modelica.Blocks.Sources.IntegerStep integerStep1(startTime=5, offset=1) annotation(Placement(visible=true, transformation(origin={-50.0,-37.313}, extent={{-10.0,-10.0},{10.0,10.0}}, rotation=0)));
|
---|
780 | Modelica.Blocks.Sources.Sine sine1 annotation(Placement(visible=true, transformation(origin={-90.0,37.6522}, extent={{-10.0,-10.0},{10.0,10.0}}, rotation=0)));
|
---|
781 | Modelica.Blocks.Sources.Pulse pulse1 annotation(Placement(visible=true, transformation(origin={-95.8868,-0.0}, extent={{-10.0,-10.0},{10.0,10.0}}, rotation=0)));
|
---|
782 | equation
|
---|
783 | connect(integerStep1.y,extractor1.index) annotation(Line(visible=true, origin={-27.6991,-26.3878}, points={{-11.3009,-10.9252},{5.6505,-10.9252},{5.6505,21.8504}}));
|
---|
784 | connect(sine1.y,extractor1.u[2]) annotation(Line(visible=true, origin={-47.7877,22.5574}, points={{-31.2123,15.0948},{8.7366,15.0948},{8.7366,-15.0948},{13.7391,-15.0948}}));
|
---|
785 | connect(pulse1.y,extractor1.u[1]) annotation(Line(visible=true, origin={-49.2594,3.7313}, points={{-35.6274,-3.7313},{10.2083,-3.7313},{10.2083,3.7313},{15.2108,3.7313}}));
|
---|
786 | end ExtractorTest;
|
---|