AccumulatorDemo Icon
Examples.AccumulatorDemo
Test harness that samples a sine wave and accumulates it using both accumulator types.
This model demonstrates:
- Generating a continuous sine wave
- Sampling it at a fixed rate (10 Hz)
- Accumulating the discrete samples using both syntactic and graphical approaches
Usage
DiscreteComponents.Examples.AccumulatorDemo()
Parameters:
| Name | Description | Units | Default value |
|---|---|---|---|
dt | – | 0.1 |
Behavior
11-element Vector{Symbolics.Equation}:
connect(sine.y(t), sampler.u(t))
connect(sampler.y(t), acc_syntactic.u(t), acc_graphical.u(t), clock.y(t))
sine₊y(t) ~ ifelse(sine₊continuous, ifelse(t >= sine₊start_time, sin(sine₊phase + 6.283185307179586sine₊frequency*(-sine₊shift_time + t)), sin(sine₊phase + 6.283185307179586sine₊frequency*(-sine₊shift_time + sine₊start_time)))*sine₊amplitude, ifelse(t >= sine₊start_time, sin(sine₊phase + 6.283185307179586sine₊frequency*(-sine₊shift_time + t))*sine₊amplitude, 0.0)) + sine₊offset
sampler₊y(t) ~ Sample(InferredClock.InferredDiscrete(0))(sampler₊u(t))
acc_syntactic₊y(t) ~ Shift(t, -1)(acc_syntactic₊y(t)) + acc_syntactic₊u(t)
connect(y(t), unitdelay.u(t))
connect(unitdelay.y(t), add.u1(t))
connect(u(t), add.u2(t))
connect(add.y(t), y(t))
acc_graphical₊unitdelay₊y(t) ~ Shift(t, -1)(acc_graphical₊unitdelay₊u(t))
acc_graphical₊add₊y(t) ~ acc_graphical₊add₊k1*acc_graphical₊add₊u1(t) + acc_graphical₊add₊k2*acc_graphical₊add₊u2(t)Source
"""
Test harness that samples a sine wave and accumulates it using both accumulator types.
This model demonstrates:
- Generating a continuous sine wave
- Sampling it at a fixed rate (10 Hz)
- Accumulating the discrete samples using both syntactic and graphical approaches
"""
example component AccumulatorDemo
"Continuous sine wave source at 1 Hz"
sine = BlockComponents.Sources.Sine(frequency = 1.0, amplitude = 1.0)
"Samples the sine wave at each clock tick"
sampler = DiscreteComponents.Sampler()
"Periodic clock controlling the sampling rate"
clock = DiscreteComponents.PeriodicClock(dt = 0.1)
"Accumulator using clock syntax"
acc_syntactic = AccumulatorSyntactic()
"Accumulator using block diagram"
acc_graphical = AccumulatorGraphical()
structural parameter dt::Real = 0.1
relations
connect(sine.y, sampler.u)
connect(sampler.y, acc_syntactic.u, acc_graphical.u, clock.y)
end
Flattened Source
"""
Test harness that samples a sine wave and accumulates it using both accumulator types.
This model demonstrates:
- Generating a continuous sine wave
- Sampling it at a fixed rate (10 Hz)
- Accumulating the discrete samples using both syntactic and graphical approaches
"""
example component AccumulatorDemo
"Continuous sine wave source at 1 Hz"
sine = BlockComponents.Sources.Sine(frequency = 1.0, amplitude = 1.0)
"Samples the sine wave at each clock tick"
sampler = DiscreteComponents.Sampler()
"Periodic clock controlling the sampling rate"
clock = DiscreteComponents.PeriodicClock(dt = 0.1)
"Accumulator using clock syntax"
acc_syntactic = AccumulatorSyntactic()
"Accumulator using block diagram"
acc_graphical = AccumulatorGraphical()
structural parameter dt::Real = 0.1
relations
connect(sine.y, sampler.u)
connect(sampler.y, acc_syntactic.u, acc_graphical.u, clock.y)
metadata {}
endTest Cases
No test cases defined.
Related
- Examples
- Experiments
- Analyses