How to model tension-only cables using Simscape?

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)

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

Hello Mr. Miller!
Thank you for your answer! I studied about Simscape language and made a Simscape custom block that represents spring-damper system. I successfully used it as you advised me: I connected the force output to force actuation of telescopic joint as well as joint velocity to custom block input.
But I still don't understand how to make the length of the rope changeable. When I try to connect the another signal input to joint motion actuation I got an error:
['Ship_T14H02h16_WD00_L160W500_flex_rope']: In the dynamically coupled component containing Telescoping Joint
'Ship_T14H02h16_WD00_L160W500_flex_rope/Telescoping Joint1', there are fewer joint primitive degrees of freedom with automatically computed
force or torque (2) than with motion from inputs (3). The prescribed motion trajectories in this component may not be achievable. Solve this
problem by reducing the number of joint primitives with motion from inputs or increasing the number of joint primitives with automatically
computed force or torque. Resolve this issue in order to simulate the model.
It seems that I can operate only force of the joint but not the motion directly at the same time. Do you have any ideas how to change the cable length keeping the possibility of tranfering tension only forces?
Hi Steve,
I looked at your second solution using a telescoping joint. I do not quite understand why a Switch-block is not needed for simulating a rope (tension-only elements). When tension is applied to the rope, the gap between the elements should open but the size of the gap should be constrained by the stiffness of the rope element given as k=E*A/L, where E is the Young's modulus of the cable material, A is the cross-section of the rope and L is the element length. This sitffness can be specified in the telescoping joint as the joint stiffness. However, when the element is under compression, the stiffnes should be set to zero. Am I misunderstanding something her? In my opinion as Switch-block is still necessary. Thanks for your help!
If you want the spring stiffness to change between multiple non-zero values (soft, stiff) then a switch block will be needed. To only transmit tension, you only need one value of stiffness and a cable model that permits the cable to "fold" under compression. The additional joints add the degrees of freedom that let the cable "fold".
--Steve
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?
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

Asked:

on 2 Dec 2022

Commented:

on 10 Jan 2023

Community Treasure Hunt

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

Start Hunting!