Issues with solving coupled ODE's in Simulink (White-box model of Damper/Shock Absorber)
1 次查看(过去 30 天)
显示 更早的评论
My objective is modelling a commerical OEM damper/shock absorber from first principles (white-box modelling).The crux of the problem in terms of modelling equations in simulink and getting them to solve will be presented below.
A damper produces the damping force by forcing hydraulic fluid such as oil through valves such as orifices and so on. This causes a pressure drop across the various chambers within the damper and we get a corresponding damping force. So the task becomes
1.) modelling the various fluid chambers as control volumes with flow rates going in and out of the various chambers (using mass conservation within each chamber).
2.) force balance equations for the piston, and the corresponding valves. These look like the 2nd order spring mass damper equations.
A diagram for the system looks something like below. You can see the main damper body with the piston. On the piston, there are set of one way valves that work in compression and rebound stroke of the damper. The reservoir accounts for the volume being pushed in and out of the damper and pressurised gas pressurises the whole system in static condition. This looks like a static lift force that acts at all times (practically this is why it's hard to compress a damper by hand). So with this,we have our initial conditions which is that pressure in all chambers here are equal to the gas pressure.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1320570/image.png)
The general equation for flow rate through an orifice is as follows:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1320575/image.png)
Here, the Pressure difference is between the chambers, or can be multiple pressure drops in series, which practically happens with valves used in series. It's important to note that pressure here is changing in each chamber as the piston is moving and corresponding flow rate changes as well. The same flow rate equations remain for say a spring loaded valve or spool valve or shim valve and so on. But a corresponding force balance equation is needed to solve for the valve displacement which looks like the figure below.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1320580/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1320585/image.png)
Here Kvalve is the valve stiffness, Cvalve is the valve damping, Fpreload is any preload force adding on the valve, Fm is the fluid momentum force, yvalve is the displacement.
We will have n set of 2nd order ODE's of this manner depending on n number of valves, that have to be solved.
The pressure changes in each chamber is 1st order ODE as given below
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1320590/image.png)
We have 3 chambers so 3 similar equations.
The final equation to solve which give us our damper force is the force balance on the piston which as follows:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1320595/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1320600/image.png)
The solver algorithmn or logic should go as follows:
1.) Input is given at the piston (sine wave for example)
2.) The movement of the piston gives us the oil flow rate going to each chambers and valves
3.) calculate the corresponding pressure drops across valves
4.) update pressure of each chamber
5.) solver final force balance on piston to get output damping force
6.) repeat from step 2 and so on.
The errors I usually got were Algebraic loops and the solver getting stuck at Initial conditions. I was able to remove these errors with some effort but the pressure in each chamber is not being updated at each step. The final pressure in each chamber (when looking at the result through a scope) is constant (constant value equal to the initial condition).
I have a copy of my model and the parameters removing all the privy data so it should be executable.
0 个评论
回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!