• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Community Forums
  2. Adams
  3. Modeling nozzle saturation

Following Cadence Design Systems’ acquisition of the Design & Engineering (D&E) business, the D&E Community Forum on the Nexus Community Center has been migrated in the Cadence Physical System Simulation Community. For more details and if you have any questions, please refer to the FAQ.

Stats

  • State Not Answered
  • Replies 3
  • Subscribers 3
  • Views 6
  • Members are here 0
More Content

Modeling nozzle saturation

sylvain.grosroyat
sylvain.grosroyat over 7 years ago
Hi,
 
I am a beginner in ADAMS.
 
As a proof of concept, I want to modelize a body with a nozzle and a single force along the longitudinal nozzle axis. The nozzle orientation is controlled by a Simulink generated C-code (imported into ADAMS thanks to Adams Controls plugin: controls system import), and applied through a MOTION between the body and the nozzle.
 
This post is about the import and the simulation of a Simulink model with saturation.
 
In order to be representative, it is necessary to impose a speed limit and an angle limit to the output (actuators model). We modelize those saturations thanks to 2 Integrators Limited Simulink blocks. In Simulink, the saturation is applied with the option “Limit output” of the Integrator Limited block.
 
What we observe :
  1. Whithout this option “limit output”, the ADAMS simulation is going well: the nozzle deflections are consistent wrt the direction imposed (but of course speed and angles are not limited). Moreover, Simulink provides the same results. Please note that the Fixed-Step option must have been selected for C-Code generation (does not work with Variable-step).
  2. Whith this option “limit output”, the time simulation estimation increase first to more than an hour, and then the simulation stop in error after a few seconds... We tried many things, without success…
 
Do you have any idea about what we are doing wrong ?...
Is it possible to have an example ?
Do you know if this saturation use case can be achieve with the controls blocks of the Controls Toolkit container ?
 
Thanks for your help.
  • Sign in to reply
  • Cancel
  • Kent West
    0 Kent West over 7 years ago
    Hi Sylvain,
     
    Interesting application, welcome to the forum.
     
    I don't want to sound dismissive, but my initial reaction is that you are using the 'wrong' input/output quantities here. Specifically:
    • Adams wants to have forces specified INTO the model. So typically one would compute the position error and then determine an input force for Adams. You would use the saturation/limit blocks like you are in Matlab, but the input quantity to Adams is a force, not a displacement. Then you observe the kinematics in the Adams model and pass those back to Matlab..
    • MOTION elements in Adams don't like state VARIABLE inputs. MOTION inputs are expected to be smooth and differentiable in time; if you use a VARVAL() and a VARIABLE then you're breaking this condition.
    • I would encourage you to get things working in discrete co-simulation mode for starters. With Control System Import you are asking Adams to solve the equations for your MATLAB model. Usually that's ok, but as a first pass I strongly recommend discrete co-sim.
     
    Is it possible to reformulate your problem so that you pass forces into the Adams model and kinematics out of the Adams model? I think that will produce much smoother, robust simulations if done properly.
     
    Thanks,
    Kent
     
    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • sylvain.grosroyat
    0 sylvain.grosroyat over 7 years ago
    Hi Kent,
     
    Thanks for yout response.
     
    Indeed, i found 2 days ago in the Tech article KB8006384 : " The MIN() and MAX() functions are handy in this context but they are usually considered to be poor choices for function expressions because they are not smooth. When the limits are approached the computed value changes suddenly and this non-smooth behavior can lead to slower and/or problematic simulation performance ".
     
    I understood then the saturation function lead to discontinuities et that we had to smooth the block behavior. And actually, it works (in variable step) !
     
    But, as you say, i undertand too this model does not respect ADAMS "spirit" => we will modify the model in order to pass forces.
     
    Thanks a lot for the quality of your support.
    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • Jesper Slattengren
    0 Jesper Slattengren over 7 years ago
    Better than MIN() and MAX() is to use a STEP() function.
    For example, if you want to limit the variable x to be between x_min and x_max, you can use a construct like this:
    y=STEP(VARVAL(x),x_min,x_min,x_min+0.001,STEP(VARVAL(x),x_max-0.001,VARVAL(x)),x_max,x_max))
    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
Cadence Guidelines

Community Guidelines

The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.

© 2026 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information