# PID with Mass Spring Dramper using ModelingToolkit.jl

**URL:** <https://discourse.julialang.org/t/pid-with-mass-spring-dramper-using-modelingtoolkit-jl/59063>\
**Category:** Modelling & Simulations\
**Created:** [April 12, 2021, 12:37am UTC](https://discourse.julialang.org/t/pid-with-mass-spring-dramper-using-modelingtoolkit-jl/59063 "2021-04-12T00:37:24Z")\
**Posts on this page:** 1\
**Showing post:** 9

<div class="post-metadata">

**Author:** ![Brad\_Carman](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/brad_carman/32/17631_2.png) [@Brad\_Carman](https://discourse.julialang.org/u/Brad_Carman)\
**Post date:** [April 13, 2021, 3:27pm UTC](https://discourse.julialang.org/t/pid-with-mass-spring-dramper-using-modelingtoolkit-jl/59063/9 "2021-04-13T15:27:00Z")

</div>

I have now tried all suggested strategies from ([Handling Instability When Solving ODE Problems - #5 by ChrisRackauckas](https://discourse.julialang.org/t/handling-instability-when-solving-ode-problems/9019/5)) and have not found a solution that works. It seems there is something unique about my problem that is throwing a wrench in ModelingToolkit/DifferentialEquations.

I feel like the below code should be able to handle the discontinuity of the set point, but it can’t get past 1s where the discontinuity occurs.

```julia
using ModelingToolkit
using DifferentialEquations

@parameters kp ki kd m k d
@variables t y(t) e(t) de(t) dde(t) x(t) dx(t) ddx(t)
D = Differential(t)

#set point
sp(t) = t > 1 ? 1.0 : 0.0
@register sp(t)

sys = ODESystem([
    D(y) ~ kp*de + ki*e + kd*dde
    D(e) ~ de
    D(de) ~ dde
    D(x) ~ dx
    D(dx) ~ ddx
    0.0 ~ ( y ) - ( m*ddx + d*dx + k*x )
    0.0 ~ ( e ) - ( sp(t) - x )
])

u0 = zeros(7)
p = ones(6)
tspan = (0.0,5.0)
prob = ODEProblem(sys, u0, tspan, p)

condition(u,t,integrator) = t - 1
affect!(integrator) = nothing
cb = ContinuousCallback(condition,affect!,save_positions=(false,false))

sol = solve(prob,Rodas4(autodiff=false), callback=cb)

```

Am I doing something wrong here?

---

_[View the full topic](https://discourse.julialang.org/t/pid-with-mass-spring-dramper-using-modelingtoolkit-jl/59063)._
