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.

52 ビュー (過去 30 日間)
Hi,
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:
Thanks.

採用された回答

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.
--Steve
  2 件のコメント
Halil Yahya Yesilyurt
Halil Yahya Yesilyurt 2022 年 12 月 21 日
Hi Steve Miller, thank you for the response. I have attached the simulink model and the required workspace for the model to run (Road profile and other parameters). Please load "sample_workspace.mat" before running the Simulink model.
1) That's right, the outer model looks like the following figure where the generated road profiles (positions) are converted to velocity input for the suspension system simply by taking time derivative of the positions. You can use manual switch blocks for different profiles/functions.
2) Does that mean; displacement inputs for the Simscape mechanical blocks is not efficient, especially for relatively(?) noisy signals? (I know we can't directly use displacement inputs, we have to convert them to velocity somehow.)
3) I'm comparing the original "Road" signal outside of the "Conventional 2 DOF System" subsystem with the "Ideal Translational Motion Sensor" output placed between the "Ground" and the "Input Veloctiy" blocks (2nd is inside the "Conventional 2 DOF System" subsystem) Then, I name the "Position" output of that sensor as "Road_Processed".
When I compare the "Road" and "Road_Processed" signals, they seem to be different, which means; I can't give my intended dislacement input to the system with this method.
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.
--Steve

サインインしてコメントする。

その他の回答 (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.

カテゴリ

Help Center および File ExchangeModeling Basics についてさらに検索

製品


リリース

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by