1 | model TDMclock2 "Digital clocked multiplexer index generator" |
---|
2 | import SI = Modelica.SIunits; |
---|
3 | parameter Integer nr_channels(final min=1) = 6; |
---|
4 | parameter SI.Time period( |
---|
5 | final min=Modelica.Constants.small)=0.09 "Time for one period"; |
---|
6 | Modelica.Blocks.Interfaces.IntegerOutput y( min=1,max=nr_channels, start = 1) "Connector of Digital output signal" |
---|
7 | annotation (Placement(transformation(extent={{90,-10},{110, |
---|
8 | 10}}))); |
---|
9 | discrete Integer increment; |
---|
10 | Clock cSample=Clock(period); |
---|
11 | equation |
---|
12 | increment = sample(1,Clock(period)); |
---|
13 | y = if (time == 0 or previous(y)==nr_channels) then 1 else previous(y) + increment; |
---|
14 | annotation (Documentation(info="<html> |
---|
15 | <p> |
---|
16 | The clock source generates an incrementing index number |
---|
17 | The number of periods is unlimited. The first pulse starts at startTime. |
---|
18 | </p> |
---|
19 | <p> The clock source is a special but often used variant of the pulse source. |
---|
20 | </p> |
---|
21 | </html>", revisions="<html> |
---|
22 | <dl> |
---|
23 | Based on 'Clock' library module by Andre Schneider |
---|
24 | <dt><em>June 9, 2020</em></dt> |
---|
25 | <dd>by Paul van der Hulst.</dd> |
---|
26 | </dl> |
---|
27 | </html>"), |
---|
28 | Icon(coordinateSystem(preserveAspectRatio=true, extent={{-100,-100},{ |
---|
29 | 100,100}}), graphics={ |
---|
30 | Rectangle( |
---|
31 | extent={{-50,100},{50,-100}}, |
---|
32 | lineThickness=0.5, |
---|
33 | fillColor={213,255,170}, |
---|
34 | fillPattern=FillPattern.Solid), |
---|
35 | Text( |
---|
36 | extent={{152,-160},{-148,-100}}, |
---|
37 | lineColor={0,0,255}, |
---|
38 | textString="%name"), |
---|
39 | Line(points={{50,0},{90,0}}, color={127,0,127}), |
---|
40 | Line(points={{-36,80},{-30,80},{-30,40},{-18,40},{-18,50},{-6,50},{ |
---|
41 | -6,60},{6,60},{6,70},{18,70},{18,80},{30,80},{30,40},{36,40}})})); |
---|
42 | end TDMclock2; |
---|