How to model tension-only cables using Simscape?

126 views (last 30 days)
Is it possible to model the cable using MATLAB/Simulink and Simscape that transfer only tension forces? I am trying to model the crane and pendulum with mass affected by forces and induced motions. It is very important to consider only tension forces and neglet compression. I don't understand how to create such cable which can be connected to Simscape bodies. I know about Rope block from Driveline library or the Translational Spring block from the Foundation library. But these elements are one-dimensional. I need 3-DOF solution with possibility to link it to Simscape bodies and joints.
Also for further improvement I want to make the length of such cable to be changable during simulation. I use Real-Time Toolbox and want to change the length by input from I/O board. I've already made the cable with changable lenght with Belts and Cables blocks (Pulley, Drum, Cord) of Simscape, but such cable is rigid and transfer compression forces.
My current idea is to model such cable using just 4-DOF joint (3 rotational + 1 translational DOF) and vary the stiffness of this joint based on IF-ELSE block (IF length of rope >= initial length THEN stiffness equal 100000 N/m, ELSE stiffness equal 0). But I don't understand how to implement the changable stiffness of joint (Event Listener?)
Thank you in advance.

Answers (1)

Steve Miller
Steve Miller on 2 Dec 2022
Hi Oleg,
The Belts and Cables blocks in Simscape Multibody are rigid constraints that (as you have seen) transmit force in tension and compression. If you need a cable to go slack, you will need to use another approach. The one you describe is one option, there are some others:
  1. Connect the attachment points with a joint with force actuation, and make the force a spring whose stiffness varies with the distance between the attachment points. You can use regular Simulink blocks, such as the Switch block, or Simscape Language to set the stiffness to a constant when the displacement of the joint is above a certain value, else make the stiffness 0. This will assume the inertia of the cable is negligible.
  2. Connect the attachment points with a chain of elements connected by Revolute or Spherical Joints. When the chain of elements reaches its maximum length, it will not extend any further. If you want it to stretch, you will need to add translational degrees of freedom along the chain, so use the (for example) Pin Slot Joint for a planar cable or a Telescoping Joint for a cable in 3D space. Here, the stiffness does not need to be controlled by an Switch block, as the joints will prevent the chain from transmitting force when in compression. Be sure to add a little damping so the cable doesn't vibrate too much.
--Steve
  5 Comments
Roman Korner
Roman Korner on 10 Jan 2023
Hi Steve,
Thanks for your reply. I am just looking to model a cable with zero stiffness in compression (translational displacement of joint < 0) and non-zero stiffness in tension (translational displacement of joint > 0). The way I solved it now is by leaving the spring stiffness in the internal mechanics dialog untouched. Instead, I use the joint limits. For the lower limit nothing needs to be set as no stiffness is associated with compression. For the upper joint limit I defined a limit of 0 and a spring stiffness of k =E*A/L while choosing a suitable damping coefficient which avoids oscillation. So as soon as the upper limit of 0 is exceeded, the spring-damper is activated allowing for some stretching of the cable defined by the spring stiffness.
Is this approach identical to what you were thinking of?
Steve Miller
Steve Miller on 10 Jan 2023
Hi @Roman Korner - that is a good approach. Your spring stiffness will be a single linear value as the cable extends beyond the point the joint limit, and what you describe will permit it to only transmit force in tension.
--Steve

Sign in to comment.

Products


Release

R2022b

Community Treasure Hunt

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

Start Hunting!