Considering the following physical situation:
and writing the following code:
μs := 0.50
μk := 0.20
g := 9.81
M := 2.00
m := 0.30
L1 := 6.00
L2 := 1.00
xi := 0.00
vi1 := 0.50
Θi := 80.00 Pi/180
vi2 := 0.00
tmax := 10
T[t_] := Max[0, m g Cos[Θ[t]] + m (L2 + x[t]) Θ'[t]^2]
sol = NDSolve[{
If[stop[t] == 1 || stuck[t] == 1, 0, Evaluate[-μk m g + T[t]]] == M x''[t],
-m g Sin[Θ[t]] == m (L2 + x[t]) Θ''[t],
stop[0] == If[L1 == 0, 1, 0],
stuck[0] == If[vi2 == 0, Boole[μs M g >= T[0]], 0],
x[0] == xi,
x'[0] == vi1,
Θ[0] == Θi,
Θ'[0] == vi2/L2,
WhenEvent[x[t] == L1, {stop[t] -> 1, x'[t] -> 0}],
WhenEvent[x'[t] == 0, Evaluate[stuck[t] -> Boole[μs M g >= T[t]]]],
WhenEvent[Evaluate[μs M g < T[t]], stuck[t] -> 0]
}, {Θ, x}, {t, tmax},
DiscreteVariables -> {stop, stuck}];
Plot[Evaluate[{x[t], Θ[t], T[t]} /. sol],{t, 0, tmax},
AxesLabel -> {"t", "fct[t]"},
PlotLegends -> {"x", "Θ", "T"},
PlotRange -> All]
you get:
which is finally what you want! ^.*