# Electromechanical brake

Overview

System type: Linear clocked hybrid system
State dimension: 4
Application domain: Mechanical engineering

## Model description

This system models an electromechanical brake, which works as in the following image.

The system is described by linear differential equations:

\begin{aligned} \dot{x}(t) &= Ax(t) + Bu(t),\qquad u(t) ∈ \mathcal{U} \\ y(t) &= Cx(t) \end{aligned}

A hybrid-automaton model is depicted below.

There are two versions of this benchmark:

• Time-varying inputs: The inputs can change arbitrarily over time: $\forall t: u(t) ∈ \mathcal{U}$.

• Constant inputs: The inputs are only uncertain in the initial value, and constant over time: $u(0) ∈ \mathcal{U}$, $\dot{u}(t) = 0.$

using ReachabilityAnalysis, SparseArrays

## Common functionality between model variants

The following code is shared between all model variants.

function embrake_common(; A, Tsample, ζ, x0)
# continuous system
EMbrake = @system(x' = A * x)

# initial condition
X₀ = Singleton([0.0, 0, 0, 0])

# reset map
Ar = sparse([1, 2, 3, 4, 4], [1, 2, 2, 2, 4], [1.0, 1.0, -1.0, -Tsample, 1.0], 4, 4)
br = sparsevec([3, 4], [x0, Tsample * x0], 4)
reset_map(X) = Ar * X + br

# hybrid system with clocked affine dynamics
ha = HACLD1(EMbrake, reset_map, Tsample, ζ)
return IVP(ha, X₀)
end;

## Fixed parameters

The model without parameter variation is defined below.

function embrake_no_pv(; Tsample=1.E-4, ζ=1e-6, x0=0.05)
# model's constants
L = 1.e-3
KP = 10000.0
KI = 1000.0
R = 0.5
K = 0.02
drot = 0.1
i = 113.1167

# state variables: [I, x, xe, xc]
A = Matrix([-(R + K^2 / drot)/L 0 KP/L KI/L;
K / i/drot 0 0 0;
0 0 0 0;
0 0 0 0])

return embrake_common(; A=A, Tsample=Tsample, ζ=ζ, x0=x0)
end;

## Parameter variation

The model with parameter variation described below consists of changing only one coefficient, which corresponds to the Flow* settings in [SO15].

function embrake_pv_1(; Tsample=1.E-4, ζ=1e-6, Δ=3.0, x0=0.05)
# model's constants
L = 1.e-3
KP = 10000.0
KI = 1000.0
R = 0.5
K = 0.02
drot = 0.1
i = 113.1167
p = 504.0 + (-Δ .. Δ)

# state variables: [I, x, xe, xc]
A = IntervalMatrix([-p 0 KP/L KI/L;
K / i/drot 0 0 0;
0 0 0 0;
0 0 0 0])

return embrake_common(; A=A, Tsample=Tsample, ζ=ζ, x0=x0)
end;

## Extended parameter variation

In the following model, considered in [SO15], we vary all constants by χ% with respect to their nominal values. The variation percentage defaults to 5%.

function embrake_pv_2(; Tsample=1.E-4, ζ=1e-6, x0=0.05, χ=5.0)
# model's constants
Δ = -χ / 100 .. χ / 100
L = 1.e-3 * (1 + Δ)
KP = 10000.0 * (1 + Δ)
KI = 1000.0 * (1 + Δ)
R = 0.5 * (1 + Δ)
K = 0.02 * (1 + Δ)
drot = 0.1 * (1 + Δ)
i = 113.1167 * (1 + Δ)

# state variables: [I, x, xe, xc]
A = IntervalMatrix([-(R + K^2 / drot)/L 0 KP/L KI/L;
K / i/drot 0 0 0;
0 0 0 0;
0 0 0 0])

return embrake_common(; A=A, Tsample=Tsample, ζ=ζ, x0=x0)
end;

## References

• SO15Strathmann, Thomas, and Jens Oehlerking. Verifying Properties of an Electro-Mechanical Braking System. ARCH. 2015.