# Rotational Hard Stop

Double-sided rotational hard stop

**Library:**Simscape / Foundation Library / Mechanical / Rotational Elements

## Description

The Rotational Hard Stop block represents a double-sided mechanical rotational hard stop that restricts motion of a body between upper and lower bounds. Both ports of the block are of mechanical rotational type. The impact interaction between the slider and the stops is assumed to be elastic. The stop is implemented as a spring that comes into contact with the slider as the gap is cleared. The spring opposes slider penetration into the stop with the torque linearly proportional to this penetration. To account for energy dissipation and nonelastic effects, the damping is introduced as a block parameter, thus making it possible to account for energy loss.

The basic hard stop model, ```
Full stiffness and damping applied at bounds,
damped rebound
```

, is described with the following equations:

$$T=\{\begin{array}{ll}{K}_{p}\cdot \left(\phi -{g}_{p}\right)+{D}_{p}\cdot \omega \hfill & \text{for}\phi \ge {g}_{p}\hfill \\ 0\hfill & \text{for}{g}_{n}\phi {g}_{p}\hfill \\ {K}_{n}\cdot \left(\phi -{g}_{n}\right)+{D}_{n}\cdot \omega \hfill & \text{for}\phi \le {g}_{n}\hfill \end{array}$$

$$\omega =\frac{d\phi}{dt}$$

where

*T*is interaction torque between the slider and the case.*g*_{p}is the initial gap between the slider and upper bound.*g*_{n}is the initial gap between the slider and lower bound.*φ*is the slider angular position.*K*_{p}is contact stiffness at upper bound.*K*_{n}is contact stiffness at lower bound.*D*_{p}is damping coefficient at upper bound.*D*_{n}is damping coefficient at lower bound.*ω*is the slider angular velocity.*t*is time.

In the ```
Full stiffness and damping applied at bounds, undamped
rebound
```

hard stop model, equations contain additional terms,
`ge`

(*ω*,0) and
`le`

(*ω*,0). These terms ensure that damping is
not applied on the rebound.

$$T=\{\begin{array}{ll}{K}_{p}\cdot \left(\phi -{g}_{p}\right)+{D}_{p}\cdot \omega \cdot ge\left(\omega ,0\right)\hfill & \text{for}\phi \ge {g}_{p}\hfill \\ 0\hfill & \text{for}{g}_{n}\phi {g}_{p}\hfill \\ {K}_{n}\cdot \left(\phi -{g}_{n}\right)+{D}_{n}\cdot \omega \cdot le\left(\omega ,0\right)\hfill & \text{for}\phi \le {g}_{n}\hfill \end{array}$$

Relational functions `ge`

(greater or equal) and
`le`

(less or equal) do not generate zero crossings when angular
velocity changes sign. For more information, see Enabling and Disabling Zero-Crossing Conditions in Simscape Language.
However, the solver treats `ge`

and `le`

functions
as nonlinear. Therefore, if `simscape.findNonlinearBlocks`

indicates
that the rest of your network is linear or switched linear, use the ```
Full
stiffness and damping applied at bounds, damped rebound
```

model to
improve performance.

The default hard stop model, ```
Stiffness and damping applied smoothly
through transition region, damped rebound
```

, adds two transitional
regions to the equations, one at each bound. While the slider travels through a
transition region, the block smoothly ramps up the torque from zero to the full value.
At the end of the transition region, the full stiffness and damping are applied. On the
rebound, both stiffness and damping torques are smoothly decreased back to zero. These
equations also use the `ge`

and `le`

relational
functions, which do not produce zero crossings.

The block is oriented from R to C. This means that the block transmits torque from port R to port C when the gap is closed in the positive direction.

### Variables

To set the priority and initial target values for the block variables prior to simulation, use
the **Initial Targets** section in the block dialog box or Property
Inspector. For more information, see Set Priority and Initial Target for Block Variables.

Nominal values provide a way to specify the expected magnitude of a variable in a model.
Using system scaling based on nominal values increases the simulation robustness. Nominal
values can come from different sources, one of which is the **Nominal
Values** section in the block dialog box or Property Inspector. For more
information, see Modify Nominal Values for a Block Variable.

## Ports

### Conserving

## Parameters

## Extended Capabilities

## Version History

**Introduced in R2007a**