Using Discrete PID Significantly Slows Down Simulation
24 次查看(过去 30 天)
显示 更早的评论
Hello,
I am currently modeling a complex system with numerous joints and motors (from sim mechanics) and I ran into an issue while trying to discretize the system. To start, I modeled my PID controllers as continuos (I have 12 of them). I now wish to turn them into discrete-time PIDs.
However, when I switch the PID's to discrete, the simulation that used to take a couple of minutes to run now takes hours. Furthermore, as the simulation goes on, it only gets slower. When I switched the PID's back to continous, the simulation ran in minutes as it did before. I even tried to switch only one of the 12 PID controllers into discrete to see what effect it would have and the same thing ended up happening - the simulation would take hours. I tried this with two different solver types (ode15s and ode23t) and tried to reduce the solver's relative tolerance from 1e-3 to 1e-2 but it did not help.
Initially I used a PID sample time of 0.001 but this ran way too slow so i switched it to 0.01 and it started running faster but the simulation would still take hours.
Is there a reason why this is happening? And is there a way to get around this?
Thanks!
0 个评论
回答(1 个)
David Balbuena
2020-6-9
编辑:David Balbuena
2020-6-9
This is most likely happening because you have a discrete controller driving a continuous variable-step plant. As mentioned in this documentation page,
this scenario will trigger Solver Resets every time the discrete signal changes, which can impact the performance of your model. In R2019b, there was a new "First Order Hold" block added for this specific use-case (discrete controller driving continuous plant):
This block is introduced in greater detail in this blog post:
If you are in R2019b or later, feel free to give the First Order Hold block a try and see how that works.
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Troubleshooting 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!