This example shows how to model a non-periodic synchronous
sampled data systems with the Modelica_Synchronous
library. This is demonstrated at hand of a closed-loop
throttle control synchronized to the crankshaft angle of an
internal combustion engine. This system has the following
properties:
The complete system is shown in figure below (diagram-layer):
Block speedControl is the discrete control system.
The boundaries of this controller are defined by
sample1, sample2 and hold1.
The sampling is done via rotationalClock, an
event-based clock that ticks every 180° rotation of the crankshaft
angle. The speed controller therefore is automatically executed
every half-rotation of the engine's crankshaft. To produce
respective clock ticks,
rotationalClock bookeeps the angular of the last time a
half-rotation of the crankshaft has been recognized
(angular_offset). Given angular_offset,
the event-condition for half-rotations is:
abs(angle - angular_offset) >=
abs(trigger_interval)
with trigger_interval = 180°. The model of
rotationalClock therefore is (diagram-layer):
In the end, rotationalClock samples it's own input
angle to bookeep an offset used to decide when to tick; the clock's
event condition depends on the state present when the condition
changed last time from beeing non-satisfied to beeing satisfied,
i.e., the state when the clock last ticked.