Transfer Function from Linearization is not correct. Simscape Model.

6 次查看(过去 30 天)
Hello,
I am modeling a double pendulum on Simscape. This is a system of two masses that are hanging on flexible beams which models a kind of spring.
.
Here is what I do:
  • I run the simulation to reach the steady state.
  • I Linearize (from control system toolbox) my system around the steady state and I look at the 6 degrees of freedom of the bottom mass as output and the 6 degrees of freedom of the ground as input.
% Ground Input (1:6)
io(io_i) = linio([mdl, '/Ground_x'], 1, 'openinput'); io_i = io_i + 1;
io(io_i) = linio([mdl, '/Ground_y'], 1, 'openinput'); io_i = io_i + 1;
io(io_i) = linio([mdl, '/Ground_z'], 1, 'openinput'); io_i = io_i + 1;
io(io_i) = linio([mdl, '/Ground_xr'],1, 'openinput'); io_i = io_i + 1;
io(io_i) = linio([mdl, '/Ground_yr'], 1, 'openinput'); io_i = io_i + 1;
io(io_i) = linio([mdl, '/Ground_zr'], 1, 'openinput'); io_i = io_i + 1;
% IPP Center Output (37:42)
io(io_i) = linio([mdl, '/IPPx'], 1, 'openoutput'); io_i = io_i + 1;
io(io_i) = linio([mdl, '/IPPy'], 1, 'openoutput'); io_i = io_i + 1;
io(io_i) = linio([mdl, '/IPPz'], 1, 'openoutput'); io_i = io_i + 1;
io(io_i) = linio([mdl, '/IPPxr'],1, 'openoutput'); io_i = io_i + 1;
io(io_i) = linio([mdl, '/IPPyr'], 1, 'openoutput'); io_i = io_i + 1;
io(io_i) = linio([mdl, '/IPPzr'], 1, 'openoutput'); io_i = io_i + 1;
G = linearize(mdl,io,50);
  • I take a transfer functions from the linearization.
With a siplified version of this model, (no flexible beams but prismatic joints instead), This is the transfer function that I manage to have:
There is all the modes that I expect.
On this version, all the Bases and Followers of the joints are matching at the linearization operating point.
Then, on this new version, the physics of the simulation works well, but the transfer function is completly incorrect:
But it should be very similar.
The only difference that I have found is that the Bases and followers of the top gimbal joints are not matching at the operating point because of the flexure of the beam.
The thing is that I don't understand the real reason why this is not working. Is that from Linearize or from Simscape?
Thank you for your help,
Vermeer
  12 个评论
Vermeer Bonhomme
Vermeer Bonhomme 2023-3-3
I have found what the issue was.
  • If the peak location is not stable, which means that linearizing at t=t1 and t=t2 gives different modes frequencies, that could be from the solver. In my case, i am using daessc which is the solver made for SIMSCAPE. You have to change the max step size from Auto to 0.01 or 0.001. In my case, the solver was doing a very bad approximation.
  • If after adding a flexible beam, the transfer function is flat, it could be from the fidelity of the beam. Indeed, if you choose a discretization of n=10 and you put a fidelity (number of retained modes) of n=10, you reduced the order of the model by 10 and 10-10=0 so it is a flat transfer function. Put 1 or 0 instead.
Paul
Paul 2023-3-3
Excellent. I completely forgot that the solver can influence the linearization in some cases. With a DAE solver, as I assume that daessc is, I imagine that can be even trickier.

请先登录,再进行评论。

采纳的回答

Vermeer Bonhomme
Vermeer Bonhomme 2023-3-3
I have found what the issue was.
  • If the peak location is not stable, which means that linearizing at t=t1 and t=t2 gives different modes frequencies, that could be from the solver. In my case, i am using daessc which is the solver made for SIMSCAPE. You have to change the max step size from Auto to 0.01 or 0.001. In my case, the solver was doing a very bad approximation.
  • If after adding a flexible beam, the transfer function is flat, it could be from the fidelity of the beam. Indeed, if you choose a discretization of n=10 and you put a fidelity (number of retained modes) of n=10, you reduced the order of the model by 10 and 10-10=0 so it is a flat transfer function. Put 1 or 0 instead.

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Simulation and Analysis 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by