ABSModel Icon
Examples.ABSModel
Usage
PrimitiveComponents.Examples.ABSModel(mass=75, g_acc=9.81, R=1.25, v0=70)
Parameters:
| Name | Description | Units | Default value |
|---|---|---|---|
mass | kg | 75 | |
g_acc | m/s2 | 9.81 | |
R | m | 1.25 | |
v0 | m/s | 70 |
Connectors
y- This connector represents a real signal as an output from a component (RealOutput)
Behavior
Behavior of this component cannot be rendered because it includes path variables.
Source
component ABSModel
wheel_slip_des = BlockComponents.Constant(k = 0.2) {
"Dyad": {
"placement": {
"icon": {"iconName": "default", "x1": -40, "y1": 250, "x2": 0, "y2": 290, "rot": 0},
"diagram": {"iconName": "default", "x1": 745, "y1": 71, "x2": 785, "y2": 111, "rot": 0}
}
}
}
sub1 = BlockComponents.Add(k1 = 1, k2 = -1) {
"Dyad": {
"placement": {
"diagram": {
"iconName": "default",
"x1": 821.6666666666666,
"y1": 75,
"x2": 901.6666666666666,
"y2": 155,
"rot": 0
}
}
}
}
binaryC = BinaryController() {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 1040, "y1": 150, "x2": 1150, "y2": 260, "rot": 0}
},
"tags": []
}
}
mu_slip = MuVsSlipLookup() {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 690, "y1": 300, "x2": 800, "y2": 400, "rot": 0}
},
"tags": []
}
}
normal_force = BlockComponents.Gain(k = mass * g_acc / 4) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": -270, "y1": 300, "x2": -170, "y2": 400, "rot": 0}
},
"tags": []
}
}
wheel_radius = BlockComponents.Gain(k = R) {
"Dyad": {
"placement": {
"diagram": {
"iconName": "default",
"x1": 815,
"y1": 581.5,
"x2": 915,
"y2": 681.5,
"rot": 0
}
}
}
}
gain2 = BlockComponents.Gain(k = -1.0 / mass) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": -20, "y1": 300, "x2": 80, "y2": 400, "rot": 0}
},
"tags": []
}
}
limiter1 = BlockComponents.Limiter(y_max = 1000, y_min = 0) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 420, "y1": 480, "x2": 520, "y2": 580, "rot": 0}
},
"tags": []
}
}
integrator2 = BlockComponents.Integrator(x0 = 0, k = 1) {
"Dyad": {
"placement": {
"diagram": {
"iconName": "default",
"x1": 685,
"y1": 481.5,
"x2": 785,
"y2": 581.5,
"rot": 0
}
}
}
}
gain3 = BlockComponents.Gain(k = 1 / R) {
"Dyad": {
"placement": {
"diagram": {
"iconName": "default",
"x1": 555,
"y1": 481.5,
"x2": 655,
"y2": 581.5,
"rot": 0
}
}
}
}
rim_speed = BlockComponents.Gain(k = R) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 300, "y1": 0, "x2": 400, "y2": 100, "rot": 0}
},
"tags": []
}
}
div = BlockComponents.Division() {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 430, "y1": 270, "x2": 530, "y2": 370, "rot": 0}
},
"tags": []
}
}
c1 = BlockComponents.Constant(k = 1) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 475, "y1": 391, "x2": 525, "y2": 441, "rot": 0}
}
}
}
sub2 = BlockComponents.Add(k1 = -1, k2 = 1) {
"Dyad": {
"placement": {
"diagram": {
"iconName": "default",
"x1": 561.6666666666666,
"y1": 305,
"x2": 641.6666666666666,
"y2": 385,
"rot": 0
}
}
}
}
hydraulicactuator = PrimitiveComponents.Examples.HydraulicActuator() {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 1390, "y1": 200, "x2": 1490, "y2": 300, "rot": 0}
},
"tags": []
}
}
integrator = BlockComponents.Integrator(x0 = 0, k = 1) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 1520, "y1": 180, "x2": 1620, "y2": 280, "rot": 0}
},
"tags": []
}
}
limiter = BlockComponents.Limiter(y_max = 1000, y_min = 0) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 1670, "y1": 180, "x2": 1770, "y2": 280, "rot": 0}
},
"tags": []
}
}
add = BlockComponents.Add(k1 = -1, k2 = 1) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 1810, "y1": 320, "x2": 1910, "y2": 420, "rot": 0}
},
"tags": []
}
}
integrator3 = BlockComponents.Integrator(x0 = v0 / R, k = 1) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 1950, "y1": 320, "x2": 2050, "y2": 420, "rot": 0}
},
"tags": []
}
}
limiter2 = BlockComponents.Limiter(y_max = 1000, y_min = 0) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 2110, "y1": 320, "x2": 2210, "y2": 420, "rot": 0}
},
"tags": []
}
}
y = Dyad.RealOutput() {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 2200, "y1": 460, "x2": 2280, "y2": 540, "rot": 0}
},
"tags": []
}
}
integrator1 = BlockComponents.Integrator(x0 = v0, k = 1) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 180, "y1": 300, "x2": 280, "y2": 400, "rot": 0}
},
"tags": []
}
}
parameter mass::Mass = 75
parameter g_acc::Acceleration = 9.81
parameter R::Length = 1.25
parameter v0::Velocity = 70
relations
initial hydraulicactuator.y = 0.0
connect(mu_slip.y, normal_force.u) {
"Dyad": {
"edges": [
{
"S": 1,
"M": [{"x": 758.2, "y": 140}, {"x": -290, "y": 140}, {"x": -290, "y": 350}],
"E": 2
}
],
"renderStyle": "standard"
}
}
connect(wheel_slip_des.y, sub1.u1) {"Dyad": {"edges": [{"S": 1, "M": [], "E": 2}], "renderStyle": "standard"}}
connect(normal_force.y, gain2.u) {"Dyad": {"edges": [{"S": 1, "M": [], "E": 2}], "renderStyle": "standard"}}
connect(sub2.y, mu_slip.u, sub1.u2) {
"Dyad": {
"edges": [
{"S": 1, "M": [], "E": -1},
{"S": -1, "M": [{"x": 694.1, "y": 345}, {"x": 694.1, "y": 327}], "E": 2},
{
"S": -1,
"M": [{"x": 670, "y": 431.5}, {"x": 800, "y": 431.5}, {"x": 800, "y": 139}],
"E": 3
}
],
"junctions": [{"x": 670, "y": 345}],
"renderStyle": "standard"
}
}
connect(rim_speed.y, div.u1) {
"Dyad": {
"edges": [{"S": 1, "M": [{"x": 410, "y": 50}, {"x": 410, "y": 290}], "E": 2}],
"renderStyle": "standard"
}
}
connect(c1.y, sub2.u2) {
"Dyad": {
"edges": [{"S": 1, "M": [{"x": 540, "y": 416}, {"x": 540, "y": 369}], "E": 2}],
"renderStyle": "standard"
}
}
connect(div.y, sub2.u1) {
"Dyad": {
"edges": [
{
"S": 1,
"M": [{"x": 545.8333333333333, "y": 320}, {"x": 545.8333333333333, "y": 321}],
"E": 2
}
],
"renderStyle": "standard"
}
}
connect(limiter1.y, gain3.u) {
"Dyad": {
"edges": [{"S": 1, "M": [{"x": 540, "y": 530}, {"x": 540, "y": 531.5}], "E": 2}],
"renderStyle": "standard"
}
}
connect(gain3.y, integrator2.u) {"Dyad": {"edges": [{"S": 1, "M": [], "E": 2}], "renderStyle": "standard"}}
connect(normal_force.y, wheel_radius.u) {
"Dyad": {
"edges": [{"S": 1, "M": [{"x": -70, "y": 350}, {"x": -70, "y": 631.5}], "E": 2}],
"renderStyle": "standard"
}
}
connect(hydraulicactuator.y, integrator.u) {
"Dyad": {
"edges": [{"S": 1, "M": [{"x": 1452, "y": 230}], "E": 2}],
"renderStyle": "standard"
}
}
connect(integrator.y, limiter.u) {"Dyad": {"edges": [{"S": 1, "M": [], "E": 2}], "renderStyle": "standard"}}
connect(limiter.y, add.u1) {
"Dyad": {
"edges": [{"S": 1, "M": [{"x": 1790, "y": 230}, {"x": 1790, "y": 340}], "E": 2}],
"renderStyle": "standard"
}
}
connect(integrator3.u, add.y) {"Dyad": {"edges": [{"S": 1, "M": [], "E": 2}], "renderStyle": "standard"}}
connect(integrator3.y, limiter2.u) {"Dyad": {"edges": [{"S": 1, "M": [], "E": 2}], "renderStyle": "standard"}}
connect(rim_speed.u, integrator3.y) {
"Dyad": {
"edges": [
{
"S": 1,
"M": [
{"x": 220, "y": 50},
{"x": 220, "y": -10},
{"x": 2090, "y": -10},
{"x": 2090, "y": 370}
],
"E": 2
}
],
"renderStyle": "standard"
}
}
connect(wheel_radius.y, add.u2) {
"Dyad": {
"edges": [{"S": 1, "M": [{"x": 1277.5, "y": 631.5}, {"x": 1277.5, "y": 400}], "E": 2}],
"renderStyle": "standard"
}
}
connect(limiter2.y, y) {
"Dyad": {
"edges": [{"S": 1, "M": [{"x": 2240, "y": 370}], "E": 2}],
"renderStyle": "standard"
}
}
connect(gain2.y, integrator1.u) {"Dyad": {"renderStyle": "standard", "edges": [{"S": 1, "E": 2, "M": []}]}}
connect(integrator1.y, div.u2) {"Dyad": {"edges": [{"S": 1, "M": [], "E": 2}], "renderStyle": "standard"}}
connect(limiter1.u, integrator1.y) {
"Dyad": {
"renderStyle": "standard",
"edges": [{"S": 1, "M": [{"x": 350, "y": 530}, {"x": 350, "y": 350}], "E": 2}]
}
}
connect(sub1.y, binaryC.u) {
"Dyad": {
"edges": [
{
"S": 1,
"M": [{"x": 985.0333333333333, "y": 115}, {"x": 985.0333333333333, "y": 205}],
"E": 2
}
],
"renderStyle": "standard"
}
}
connect(binaryC.y, hydraulicactuator.u) {
"Dyad": {
"renderStyle": "standard",
"edges": [{"S": 1, "M": [{"x": 1266.8, "y": 205}, {"x": 1266.8, "y": 227}], "E": 2}]
}
}
metadata {"Dyad": {"doc": {"behavior": false}}}
end
Flattened Source
component ABSModel
wheel_slip_des = BlockComponents.Constant(k = 0.2) {
"Dyad": {
"placement": {
"icon": {"iconName": "default", "x1": -40, "y1": 250, "x2": 0, "y2": 290, "rot": 0},
"diagram": {"iconName": "default", "x1": 745, "y1": 71, "x2": 785, "y2": 111, "rot": 0}
}
}
}
sub1 = BlockComponents.Add(k1 = 1, k2 = -1) {
"Dyad": {
"placement": {
"diagram": {
"iconName": "default",
"x1": 821.6666666666666,
"y1": 75,
"x2": 901.6666666666666,
"y2": 155,
"rot": 0
}
}
}
}
binaryC = BinaryController() {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 1040, "y1": 150, "x2": 1150, "y2": 260, "rot": 0}
},
"tags": []
}
}
mu_slip = MuVsSlipLookup() {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 690, "y1": 300, "x2": 800, "y2": 400, "rot": 0}
},
"tags": []
}
}
normal_force = BlockComponents.Gain(k = mass * g_acc / 4) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": -270, "y1": 300, "x2": -170, "y2": 400, "rot": 0}
},
"tags": []
}
}
wheel_radius = BlockComponents.Gain(k = R) {
"Dyad": {
"placement": {
"diagram": {
"iconName": "default",
"x1": 815,
"y1": 581.5,
"x2": 915,
"y2": 681.5,
"rot": 0
}
}
}
}
gain2 = BlockComponents.Gain(k = -1.0 / mass) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": -20, "y1": 300, "x2": 80, "y2": 400, "rot": 0}
},
"tags": []
}
}
limiter1 = BlockComponents.Limiter(y_max = 1000, y_min = 0) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 420, "y1": 480, "x2": 520, "y2": 580, "rot": 0}
},
"tags": []
}
}
integrator2 = BlockComponents.Integrator(x0 = 0, k = 1) {
"Dyad": {
"placement": {
"diagram": {
"iconName": "default",
"x1": 685,
"y1": 481.5,
"x2": 785,
"y2": 581.5,
"rot": 0
}
}
}
}
gain3 = BlockComponents.Gain(k = 1 / R) {
"Dyad": {
"placement": {
"diagram": {
"iconName": "default",
"x1": 555,
"y1": 481.5,
"x2": 655,
"y2": 581.5,
"rot": 0
}
}
}
}
rim_speed = BlockComponents.Gain(k = R) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 300, "y1": 0, "x2": 400, "y2": 100, "rot": 0}
},
"tags": []
}
}
div = BlockComponents.Division() {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 430, "y1": 270, "x2": 530, "y2": 370, "rot": 0}
},
"tags": []
}
}
c1 = BlockComponents.Constant(k = 1) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 475, "y1": 391, "x2": 525, "y2": 441, "rot": 0}
}
}
}
sub2 = BlockComponents.Add(k1 = -1, k2 = 1) {
"Dyad": {
"placement": {
"diagram": {
"iconName": "default",
"x1": 561.6666666666666,
"y1": 305,
"x2": 641.6666666666666,
"y2": 385,
"rot": 0
}
}
}
}
hydraulicactuator = PrimitiveComponents.Examples.HydraulicActuator() {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 1390, "y1": 200, "x2": 1490, "y2": 300, "rot": 0}
},
"tags": []
}
}
integrator = BlockComponents.Integrator(x0 = 0, k = 1) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 1520, "y1": 180, "x2": 1620, "y2": 280, "rot": 0}
},
"tags": []
}
}
limiter = BlockComponents.Limiter(y_max = 1000, y_min = 0) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 1670, "y1": 180, "x2": 1770, "y2": 280, "rot": 0}
},
"tags": []
}
}
add = BlockComponents.Add(k1 = -1, k2 = 1) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 1810, "y1": 320, "x2": 1910, "y2": 420, "rot": 0}
},
"tags": []
}
}
integrator3 = BlockComponents.Integrator(x0 = v0 / R, k = 1) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 1950, "y1": 320, "x2": 2050, "y2": 420, "rot": 0}
},
"tags": []
}
}
limiter2 = BlockComponents.Limiter(y_max = 1000, y_min = 0) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 2110, "y1": 320, "x2": 2210, "y2": 420, "rot": 0}
},
"tags": []
}
}
y = Dyad.RealOutput() {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 2200, "y1": 460, "x2": 2280, "y2": 540, "rot": 0}
},
"tags": []
}
}
integrator1 = BlockComponents.Integrator(x0 = v0, k = 1) {
"Dyad": {
"placement": {
"diagram": {"iconName": "default", "x1": 180, "y1": 300, "x2": 280, "y2": 400, "rot": 0}
},
"tags": []
}
}
parameter mass::Mass = 75
parameter g_acc::Acceleration = 9.81
parameter R::Length = 1.25
parameter v0::Velocity = 70
relations
initial hydraulicactuator.y = 0.0
connect(mu_slip.y, normal_force.u) {
"Dyad": {
"edges": [
{
"S": 1,
"M": [{"x": 758.2, "y": 140}, {"x": -290, "y": 140}, {"x": -290, "y": 350}],
"E": 2
}
],
"renderStyle": "standard"
}
}
connect(wheel_slip_des.y, sub1.u1) {"Dyad": {"edges": [{"S": 1, "M": [], "E": 2}], "renderStyle": "standard"}}
connect(normal_force.y, gain2.u) {"Dyad": {"edges": [{"S": 1, "M": [], "E": 2}], "renderStyle": "standard"}}
connect(sub2.y, mu_slip.u, sub1.u2) {
"Dyad": {
"edges": [
{"S": 1, "M": [], "E": -1},
{"S": -1, "M": [{"x": 694.1, "y": 345}, {"x": 694.1, "y": 327}], "E": 2},
{
"S": -1,
"M": [{"x": 670, "y": 431.5}, {"x": 800, "y": 431.5}, {"x": 800, "y": 139}],
"E": 3
}
],
"junctions": [{"x": 670, "y": 345}],
"renderStyle": "standard"
}
}
connect(rim_speed.y, div.u1) {
"Dyad": {
"edges": [{"S": 1, "M": [{"x": 410, "y": 50}, {"x": 410, "y": 290}], "E": 2}],
"renderStyle": "standard"
}
}
connect(c1.y, sub2.u2) {
"Dyad": {
"edges": [{"S": 1, "M": [{"x": 540, "y": 416}, {"x": 540, "y": 369}], "E": 2}],
"renderStyle": "standard"
}
}
connect(div.y, sub2.u1) {
"Dyad": {
"edges": [
{
"S": 1,
"M": [{"x": 545.8333333333333, "y": 320}, {"x": 545.8333333333333, "y": 321}],
"E": 2
}
],
"renderStyle": "standard"
}
}
connect(limiter1.y, gain3.u) {
"Dyad": {
"edges": [{"S": 1, "M": [{"x": 540, "y": 530}, {"x": 540, "y": 531.5}], "E": 2}],
"renderStyle": "standard"
}
}
connect(gain3.y, integrator2.u) {"Dyad": {"edges": [{"S": 1, "M": [], "E": 2}], "renderStyle": "standard"}}
connect(normal_force.y, wheel_radius.u) {
"Dyad": {
"edges": [{"S": 1, "M": [{"x": -70, "y": 350}, {"x": -70, "y": 631.5}], "E": 2}],
"renderStyle": "standard"
}
}
connect(hydraulicactuator.y, integrator.u) {
"Dyad": {
"edges": [{"S": 1, "M": [{"x": 1452, "y": 230}], "E": 2}],
"renderStyle": "standard"
}
}
connect(integrator.y, limiter.u) {"Dyad": {"edges": [{"S": 1, "M": [], "E": 2}], "renderStyle": "standard"}}
connect(limiter.y, add.u1) {
"Dyad": {
"edges": [{"S": 1, "M": [{"x": 1790, "y": 230}, {"x": 1790, "y": 340}], "E": 2}],
"renderStyle": "standard"
}
}
connect(integrator3.u, add.y) {"Dyad": {"edges": [{"S": 1, "M": [], "E": 2}], "renderStyle": "standard"}}
connect(integrator3.y, limiter2.u) {"Dyad": {"edges": [{"S": 1, "M": [], "E": 2}], "renderStyle": "standard"}}
connect(rim_speed.u, integrator3.y) {
"Dyad": {
"edges": [
{
"S": 1,
"M": [
{"x": 220, "y": 50},
{"x": 220, "y": -10},
{"x": 2090, "y": -10},
{"x": 2090, "y": 370}
],
"E": 2
}
],
"renderStyle": "standard"
}
}
connect(wheel_radius.y, add.u2) {
"Dyad": {
"edges": [{"S": 1, "M": [{"x": 1277.5, "y": 631.5}, {"x": 1277.5, "y": 400}], "E": 2}],
"renderStyle": "standard"
}
}
connect(limiter2.y, y) {
"Dyad": {
"edges": [{"S": 1, "M": [{"x": 2240, "y": 370}], "E": 2}],
"renderStyle": "standard"
}
}
connect(gain2.y, integrator1.u) {"Dyad": {"renderStyle": "standard", "edges": [{"S": 1, "E": 2, "M": []}]}}
connect(integrator1.y, div.u2) {"Dyad": {"edges": [{"S": 1, "M": [], "E": 2}], "renderStyle": "standard"}}
connect(limiter1.u, integrator1.y) {
"Dyad": {
"renderStyle": "standard",
"edges": [{"S": 1, "M": [{"x": 350, "y": 530}, {"x": 350, "y": 350}], "E": 2}]
}
}
connect(sub1.y, binaryC.u) {
"Dyad": {
"edges": [
{
"S": 1,
"M": [{"x": 985.0333333333333, "y": 115}, {"x": 985.0333333333333, "y": 205}],
"E": 2
}
],
"renderStyle": "standard"
}
}
connect(binaryC.y, hydraulicactuator.u) {
"Dyad": {
"renderStyle": "standard",
"edges": [{"S": 1, "M": [{"x": 1266.8, "y": 205}, {"x": 1266.8, "y": 227}], "E": 2}]
}
}
metadata {"Dyad": {"doc": {"behavior": false}}}
endTest Cases
No test cases defined.
Related
- Examples
- Experiments
- Analyses