Derivative of a signal (position) as velocity input to the simscape mechanical terminal, does't match with the position sensed at the ideal translational motion sensor.

23 ビュー (過去 30 日間)
I'm trying to model a 2 DOF quarter car model to investiage it's behaviour on different road profiles. Since I'm using this model as a base and benchmark tool for a more complex HPS (Hydropneumatic suspension system), I decided to use Simscape blocks instead of the classical or LTI system approach.
When I give a step input to the system (basically a ramp with a short rise-up time), everything is working fine i.e., both the given position input and the sensed input at the ideal translational motion sensor matches with each other. However, if a give a road profile created in MATLAB, sensed input at the ideal translational motion sensor is very different from the given original input.
To handle this;
  • I tried almost all solvers with different maximum step sizes and relative error values.
  • Changed the sampling time of the input signal to much lower than the original signal time step.
  • Changed the "c" parameter of the "derivative" block (which I used to convert road profile to velocity for the simscape mechanical port) to lower or higher values.
  • Added a transfer function (1 / (Tau * s + 1)) to the output of the derivative block to smooth the velocity input a little bit.
  • Created different input profiles with different step sizes in MATLAB side.
I couldn't handle the situation so far.
Here is the model I'm using:
Here is the input road profile:
The problem I see is: the solver is calculating the velocity (derivative) wrongly, so the input to the simscape side is totally wrong as following:
And finally, the original input (yellow) and the input to the simscape system (blue) is given at the bottom of the following graph set:


Steve Miller
Steve Miller 2022 年 12 月 20 日
If you had attached your model, we could give you a more specific answer.
Here are my best guesses based on what you have told us:
  1. You need to provide the velocity signal. The Ideal Translational Velocity Source block requires the velocity as an input. It does not calculate the derivative for you.
  2. Your calculation of the derivative of the motion profile applied too much of a filter to the signal.
  3. The signals you are sensing are not a fair comparison to the input signal you started with.
If you can upload the model, we can look into it further.
  2 件のコメント
Steve Miller
Steve Miller 2022 年 12 月 21 日
I made two changes to your model - see attached.
  1. I configured it to run variable step - that is an important step to make sure your answers are correct and not clouded by numerical error which can happen with fixed-step simulations in any tool.
  2. I changed how the derivative was calculated. The du/dt block is not always the best method for calculating a derivative in Simulink. Using a transfer function can often be a better option.
See screenshot below - output position and input position match very closely. There will be a slight amount of filtering from the transfer function.


その他の回答 (1 件)

Halil Yahya Yesilyurt
Halil Yahya Yesilyurt 2022 年 12 月 21 日
Thank you for the very fast response. I tried the modified Simulink model with lots of road profiles and your solution is working great! I thought the "c" parameter in "du/dt" block was acting like the same as your offer, but it doesn't work as good as your offered transfer function do.
Best regards.


Find more on Modeling Basics in Help Center and File Exchange




Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by