The Lumped Parameter Approach
Using a lumped parameter approach, we can approximate a flexible body using a series of rigid bodies connected by springs and dampers. The material properties and the cross section of the flexible body determines the spring stiffness and damping coefficients.
The Fundamental Element
To begin, in SimMechanics, we create one element to be duplicated as many times as needed and store it in a library. For a beam bending about one axis, our fundamental element looks like:
Assembling the Beam
Now that we have one element, we can create a subsystem that will assemble as many elements as desired. Here is what the final result looks like:
To implement this block, we follow the self-modifying subsystem workflow suggested by Seth in a previous post. In the Mask Initialization tab of the subsystem, we define a function that deletes the content of the subsystem and redraws it when needed.
Now it's your turn
Here are a few tips if you want to dig deeper in this area:
- For a more advanced example of building SimMechanics components programmatically, I recommend looking at SimMechanics Model from MATLAB Code from my colleague Pravesh Sanghvi.
- For more details on how to convert the physical properties of your beam like the Young’s elastic modulus and the cross-section moment of inertia, I recommend going through this article: Modeling Flexible Bodies in SimMechanics and Simulink.
- To configure a SimMechanics block programmatically, I recommend using get_param(blk,'DialogParameters') to obtain the list of dialog parameters for this block.
- Click here to download my flexible beam example.
Try modeling flexible bodies in SimMechanics and let us know what you think by leaving a comment here.
5 CommentsOldest to Newest
I’m attempting to model a cable hanging between two points of different heights in SimMechanics (2nd generation), and this Flexible Beam example has been very helpful so far. In the simulation, the cable forms a catenary as expected. However, the physical system I’m attempting to model will also have a hanging mass sliding down that cable. I can’t figure out how to model the interaction between such a mass and the cable. Right now, I have the mass connected to a 6-DOF joint connected to the World Frame. The mass is initially positioned at the high side of the cable. After the simulation starts, gravity causes the mass to drop through the cable. Any ideas? Would it be easier to try this in First Generation SimMechanics?
@ Jerry: Thanks for the comment, this is a very interesting application. This type of “point-on-flexible-curve” problem is very challenging. the current version of SimMechanics either first or second generation cannot directly simulate this system.
To make that happen, you will need to go through Simulink and compute the force relation between the cable and sliding mass, to finally apply the resulting force to the appropriate element of the cable.
I am working on a model similar to the one I described earlier, but without the sliding mass. I have a fixed mass in the middle of the cable. Before the simulation begins, SimMechanics determines the initial conditions of the joints throughout the simulated flexible cable. Then, as gravity takes effect, the cable oscillates. I would like the initial conditions to be such that there is no motion unless I apply an external force. Then, I would be able to apply a force to the mass and observe the reaction in the cable. Is there a way to execute an optimization function for the initial conditions for the cable/mass system, so that there is no motion (due to gravity) after the simulation begins?
@ Jerry :
Sorry to “renew” the old thread, but
I think, a good work-around could be the application of the gravity as a function of time over a short period, so that your computations do not last for too long. This approach is very popular in mechanical / geomechanical modelling, when one does not want to see numerical high frequencies , arising from the fact, that gravity is suddenly applied as a step at the initial phase of the numerical model.
Have you tried to build a flexible component with a state space block, similar to the paper and examples from the first generation? I have tried to do this with the second generation, but cannot get the beam example to work.