How to configure Belt Drive block for Hardware-in-the-Loop simulation?

1 view (last 30 days)
To run a Hardware-in-the-Loop (HIL) simulation, I need to generate C++ code file from the circuit in the figure, which represents a model of a conveyor belt (Solver=ode14x):
The Simulink simulation works fine, but when I transfer the generated C++ code in the HIL platform, the host computer crashes with DRIVE_VERIFIER_detected_violation error. Note that when I replace the Belt Drive block with the Simple Gear block, the HIL simulation is then OK. Current setting of Belt Drive block:
  • Drive type: Open belt
  • Belt type: Flat band
  • Longitudinal stiffness: 1e+4 [N/m]
  • Longitudinal damping: 1e+5 [N/(m/s)]
  • Pre-tension: 21 [N]
  • Pulley radius (Pulley A and B): 0.1 [m]
  • Friction velocity threshold: 0.001 [m/s]
Any idea? I thank you in advance.

Accepted Answer

Sebastian Castro
Sebastian Castro on 23 Oct 2015
The "Friction velocity threshold" parameter is usually the culprit here. This is usually a small region used to avoid numerical instability by linearly varying the friction force over the range [-0.001 0.001] m/s instead of adding a "jump" right at 0. What if you try increasing this value to make the slope of this force less steep around 0?
Alternatively, it could be that the stiffness and damping of the belt are adding some very fast dynamics that are hard to solve given your local solver time step. You could try either increasing the time step or reducing the stiffness and damping.
In both cases above, of course, you want to verify that you're not significantly affecting your simulation results.
- Sebastian
  3 Comments
Sebastian Castro
Sebastian Castro on 28 Oct 2015
Hmm... Do you have any damping in the Revolute Joint block, or have you tried added a rotational damper in parallel with the Torque Source? Maybe the HIL simulation doesn't like runaway acceleration in an undamped system?
CignoNero74
CignoNero74 on 4 Nov 2015
Edited: CignoNero74 on 4 Nov 2015
Hello Sebastian, the system was already damped, via Revolute Joint:Gear --> Internal Mechanics --> Damping Coefficient= 1 [N*m/rad/s], in order to have output = 2.7 [rad/s], when input is Step going from 0 to 2.7, at Step time=1. I have tried the option of a added Rotational Damper (with C connected to Mechanical Rotational Reference 2 and R connected to R of Rev-Rot Interface), with Damping coefficient=0.001, then =0.01, and 0.1. But always unsuccessfully. At this point, since I agree with you that the problem should be on steep acceleration at Step time=1 second, I changed input to a signal like the following one, extending the simulation time from 10s to 100s:
but unfortunately the HIL simulation still gives error. In particular it is a "div by zero" error, as notified by the latest version of the HIL sw that I have just updated.
Have a nice day.

Sign in to comment.

More Answers (0)

Categories

Find more on Gears in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!