LIBRARY
Math.Tests.Feedback
Computes the difference between constant and time-varying input signals.
The Feedback test component demonstrates a basic feedback mechanism by subtracting the value of one constant (2) from another constant (1), resulting in an output of -1. This illustrates the core functionality of a feedback control system where one signal is subtracted from another. A second feedback block is driven by two sine waves that sweep negative and positive values so the difference varies over time.
Usage
BlockComponents.Math.Tests.Feedback()
Behavior
Source
dyad
"""
Computes the difference between constant and time-varying input signals.
The `Feedback` test component demonstrates a basic feedback mechanism by subtracting the value of
one constant (2) from another constant (1), resulting in an output of -1. This illustrates the
core functionality of a feedback control system where one signal is subtracted from another. A
second feedback block is driven by two sine waves that sweep negative and positive values so the
difference varies over time.
"""
test component Feedback
"Constant block with value 1 that provides the primary input signal"
c1 = BlockComponents.Sources.Constant(k = 1) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 80, "y1": 90, "x2": 180, "y2": 190, "rot": 0}
}
}
}
"Constant block with value 2 that provides the feedback signal to be subtracted"
c2 = BlockComponents.Sources.Constant(k = 2) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 80, "y1": 300, "x2": 180, "y2": 400, "rot": 0}
}
}
}
"Feedback block that subtracts the second input from the first"
feedback = BlockComponents.Math.Feedback() {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 360, "y1": 170, "x2": 460, "y2": 270, "rot": 0}
}
}
}
"Sine source for the primary input of the second block"
sine1 = BlockComponents.Sources.Sine(amplitude = 2, frequency = 1) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 80, "y1": 500, "x2": 180, "y2": 600, "rot": 0}
}
}
}
"Sine source for the feedback input of the second block"
sine2 = BlockComponents.Sources.Sine(amplitude = 1, frequency = 1) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 80, "y1": 710, "x2": 180, "y2": 810, "rot": 0}
}
}
}
"Second feedback block driven by the sine sources"
feedback_2 = BlockComponents.Math.Feedback() {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 360, "y1": 580, "x2": 460, "y2": 680, "rot": 0}
}
}
}
relations
"Connects the output of constant block c1 to the primary input of the feedback block"
connect(feedback.u1, c1.y) {
"Dyad": {
"edges": [{"S": 1, "M": [{"x": 300, "y": 220}, {"x": 300, "y": 140}], "E": 2}],
"renderStyle": "standard"
}
}
"Connects the output of constant block c2 to the feedback input of the feedback block"
connect(feedback.u2, c2.y) {
"Dyad": {
"edges": [{"S": 1, "M": [{"x": 410, "y": 350}], "E": 2}],
"renderStyle": "standard"
}
}
connect(feedback_2.u1, sine1.y) {
"Dyad": {
"edges": [{"S": 1, "M": [{"x": 314, "y": 630}, {"x": 314, "y": 550}], "E": 2}],
"renderStyle": "standard"
}
}
connect(feedback_2.u2, sine2.y) {
"Dyad": {
"edges": [{"S": 1, "M": [{"x": 410, "y": 760}], "E": 2}],
"renderStyle": "standard"
}
}
metadata {
"Dyad": {
"icons": {"default": "dyad://BlockComponents/Example.svg"},
"tests": {
"case1": {
"stop": 5,
"expect": {"signals": ["feedback.y", "feedback_2.y", "sine1.y", "sine2.y"]}
}
}
}
}
endFlattened Source
dyad
"""
Computes the difference between constant and time-varying input signals.
The `Feedback` test component demonstrates a basic feedback mechanism by subtracting the value of
one constant (2) from another constant (1), resulting in an output of -1. This illustrates the
core functionality of a feedback control system where one signal is subtracted from another. A
second feedback block is driven by two sine waves that sweep negative and positive values so the
difference varies over time.
"""
test component Feedback
"Constant block with value 1 that provides the primary input signal"
c1 = BlockComponents.Sources.Constant(k = 1) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 80, "y1": 90, "x2": 180, "y2": 190, "rot": 0}
}
}
}
"Constant block with value 2 that provides the feedback signal to be subtracted"
c2 = BlockComponents.Sources.Constant(k = 2) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 80, "y1": 300, "x2": 180, "y2": 400, "rot": 0}
}
}
}
"Feedback block that subtracts the second input from the first"
feedback = BlockComponents.Math.Feedback() {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 360, "y1": 170, "x2": 460, "y2": 270, "rot": 0}
}
}
}
"Sine source for the primary input of the second block"
sine1 = BlockComponents.Sources.Sine(amplitude = 2, frequency = 1) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 80, "y1": 500, "x2": 180, "y2": 600, "rot": 0}
}
}
}
"Sine source for the feedback input of the second block"
sine2 = BlockComponents.Sources.Sine(amplitude = 1, frequency = 1) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 80, "y1": 710, "x2": 180, "y2": 810, "rot": 0}
}
}
}
"Second feedback block driven by the sine sources"
feedback_2 = BlockComponents.Math.Feedback() {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 360, "y1": 580, "x2": 460, "y2": 680, "rot": 0}
}
}
}
relations
"Connects the output of constant block c1 to the primary input of the feedback block"
connect(feedback.u1, c1.y) {
"Dyad": {
"edges": [{"S": 1, "M": [{"x": 300, "y": 220}, {"x": 300, "y": 140}], "E": 2}],
"renderStyle": "standard"
}
}
"Connects the output of constant block c2 to the feedback input of the feedback block"
connect(feedback.u2, c2.y) {
"Dyad": {
"edges": [{"S": 1, "M": [{"x": 410, "y": 350}], "E": 2}],
"renderStyle": "standard"
}
}
connect(feedback_2.u1, sine1.y) {
"Dyad": {
"edges": [{"S": 1, "M": [{"x": 314, "y": 630}, {"x": 314, "y": 550}], "E": 2}],
"renderStyle": "standard"
}
}
connect(feedback_2.u2, sine2.y) {
"Dyad": {
"edges": [{"S": 1, "M": [{"x": 410, "y": 760}], "E": 2}],
"renderStyle": "standard"
}
}
metadata {
"Dyad": {
"icons": {"default": "dyad://BlockComponents/Example.svg"},
"tests": {
"case1": {
"stop": 5,
"expect": {"signals": ["feedback.y", "feedback_2.y", "sine1.y", "sine2.y"]}
}
}
}
}
endTest Cases
Test Case case1
julia
pltjulia
pltjulia
pltjulia
plt