|On this page…|
In this section, you choose and configure the settings necessary to simulate mechanical motion with a SimMechanics™ model.
The most basic aspect of a machine's environment is the gravitational acceleration it experiences. You control a machine's gravity in the Parameters tab of its Machine Environment dialog.
A uniform gravity field is applied to the motion of every machine. The default is a constant vector of [0 -9.81 0] with units of meters/seconds2 and x-, y-, and z-components, respectively.
You can change this value to a different constant vector by modifying the entry in the Gravity vector field of the Parameters tab. You can change the units by using the units pull-down menu.
In addition to constant gravity, you can apply a time-varying, spatially uniform, gravity vector through a Simulink® signal. You enable this option by selecting the Input gravity as signal check box in the Parameters tab.
Once you make this selection, the Machine Environment block acquires a Simulink inport to accept this Simulink signal. The signal must be a three-component vector. You can still change the units through the pull-down menu.
In general, you simulate machine motion in all three spatial dimensions. If a machine can move in only two dimensions, however, ignoring the third dimension makes the simulation more efficient. By default, the simulation automatically determines whether your machine moves in all three or only two dimensions and optimizes the simulation accordingly.
You can override this default by requiring simulation in either three or two dimensions. You choose the simulation dimension of a machine in the Machine dimensionality pull-down menu of the Parameters tab of the Machine Environment dialog. If you attempt to simulate a three-dimensional machine in two dimensions, the simulation stops with an error.
Your machine must meet certain criteria before you can require simulation in two dimensions:
The prismatic primitives must define a set of parallel planes.
The revolute primitives must rotate about axes perpendicular to the prismatic planes.
The bodies of a two-dimensional machine do not all have to lie in a single plane, but they should slide and rotate only in parallel planes.
Code generated from simulations restricted to two-dimensional motion is also restricted to two-dimensional motion. See Restrictions on Two-Dimensional Simulation in the Generating Code section of this chapter.
The SimMechanics library contains certain blocks that, if you use them in a machine, require you to simulate in three dimensions.
Any Joint block with more than two prismatic primitives, more than one revolute primitive, or any spherical primitives
You can analyze motion in a SimMechanics model with these analysis types.
|Analysis Result||Analysis Type|
|Motion that results from applying forces||Forward dynamics|
|Effect of slightly perturbing the motion||Linearization|
|Forces required to produce a specified motion||Inverse dynamics|
The Parameters tab of the Machine Environment dialog allows you to choose the analysis mode you want to simulate in. You make this choice via the Analysis mode pull-down menu. In the case of linearization, use the Linearization tab to set the size of the small perturbations.
By choosing one of these analysis modes, you implement the type of motion analysis you want.
|Analysis Type||Analysis Mode||Description|
|Forward dynamics||Forward Dynamics||Computes the positions and velocities of a system's bodies at each time step, given the initial positions and velocities of its bodies and any forces applied to the system.|
|Linearization||Forward Dynamics||Computes the effect of small perturbations on system motion through the Simulink linmod command.|
|Trimming||Trimming||Enables the Simulink trim command to compute steady-state solutions of system motion.|
|Inverse dynamics (open-loop)||Inverse Dynamics||Computes the forces required to produce a specified velocity for each body of an open-loop system.|
|Inverse dynamics (closed-loop)||Kinematics||Computes the forces required to produce a specified velocity for each body of a closed-loop machine.|
Use this mode to simulate a model that represents the initial positions and velocities of the system's bodies and the forces on those bodies.
Run these examples in the Forward Dynamics mode:
Use this mode to allow you to run the Simulink trim command on your model. The trim command allows you to find steady-state solutions for your model.
Trimming mode inserts a subsystem and an output port at the top level of your model. These blocks output signals corresponding to the constraints on the system represented by your model. Configure the trim command to find equilibrium points where the constraint signals are zero. This ensures that the equilibrium points found by the trim command satisfy the constraints on the modeled system.
See Trimming Mechanical Models for examples of using this mode to find the equilibrium points of a mechanical system.
You can determine the effect of small perturbations on system motion by linearizing your machine. To linearize, set the analysis mode to Forward Dynamics and run the Simulink linmod command on your model.
You can fix the size of the perturbation or let the simulation find an optimal perturbation for you. Enter these settings in the Linearization tab of the Machine Environment dialog.
See Linearizing Mechanical Models for examples of using this mode to find the effect of small perturbations on mechanical motion.
Use this mode to simulate an open-loop system whose model specifies the velocity of every degree of freedom of every body at every time step.
See Inverse Dynamics Mode with a Double Pendulum for an example of using this mode to find the forces on an open-loop system.
Use this mode to simulate a closed-loop machine whose model specifies the velocity of every independent degree of freedom at every time step. The tolerancing constraint solver is recommended in this mode. (See Maintaining Constraints in this chapter.)
See Kinematics Mode with a Four Bar Machine for an example of using this mode to find the forces on a closed-loop machine.
Simulating your SimMechanics model is a cooperative effort between SimMechanics software and Simulink. A SimMechanics simulation interprets your machine's purely mechanical aspects through machine assembly and a constraint solver. Simulink controls the purely mathematical aspects of the simulation through your chosen Simulink solver. Together, they try to harmonize your choices of Simulink solver and solver tolerances, constraint solver and solver tolerances, and assembly tolerances in this dynamic hierarchy:
The linear and angular assembly tolerances specify the precision with which
A model must specify the initial locations and angles of a machine's joints.
A simulation must solve the initial positions and angles of a machine's unassembled joints.
The Parameters tab of a machine's Machine Environment dialog allows you to change the default assembly tolerances in the Linear assembly tolerance and Angular assembly tolerance fields. You can also adjust the linear and angular units in the respective pull-down menus.
A SimMechanics simulation checks the locations and angles of a machine's assembled joints when it initializes the model and later in the simulation. If any of the joint locations or angles fails to meet the corresponding assembly tolerances, Simulink halts the simulation and displays an error message. If this happens, you should check your machine to ensure that it specifies the locations and angles of its assembled joints to the precision specified in the Parameters tab. If not, either change the locations and angles that fail to meet the assembly tolerances or increase the tolerances themselves.
Assembly tolerances can also be violated during the course of a simulation by insufficiently accurate constraint and motion solvers. See Maintaining Constraints and Configuring a Simulink Solver following.
If your model contains implicit or explicit constraints on a machine's motion, the SimMechanics simulation uses a constraint solver to find a solution for the motion that satisfies those constraints.
This section describes how the constraint solvers work and what you need to decide to make proper use of them. These constraint choices and settings for a machine are found on the Constraints tab of its Machine Environment dialog.
The simulation imposes constraints when it initializes the model, then later checks if the constraints remain satisfied during the simulation. If any of the degrees of freedom (DoFs) fail to satisfy the constraint tolerances, Simulink halts the simulation and displays an error message. If this happens, you should either switch to a looser constraint solver or increase the constraint tolerances (if you have manual control of the constraint tolerance).
Constraints can also be violated during the course of a simulation by an insufficiently accurate Simulink solver. See Configuring a Simulink Solver following.
The need to impose constraints on a machine's motion arises in two ways, explicit or implicit. In either case, motion is restricted to a subspace of DoFs.
Imposing a time-independent or time-dependent mechanical constraint on a system's DoFs. This requires you to insert a Constraint or Driver block that restricts the motion represented by a Joint.
Cutting closed loops in a SimMechanics block diagram. Each closed loop is cut at one Joint, Constraint, or Driver block. The simulation internally replaces the cut block with an implicit constraint equivalent to the original closed loop.
Marking Automatically Cut Joints. Selecting the Mark automatically cut joints check box in the SimMechanics node of your model's Configuration Parameters dialog causes Simulink to mark the icons of any Joint blocks in closed loops that it cuts during simulation of the model.
By default, the check box is not selected.
The space of motion allowed to the DoFs by the constraints, or constraint manifold K, is a subspace of the full space Q of DoFs. (Q includes both coordinates and their velocities.) A SimMechanics simulation initializes your model by projecting the initial state of its machines on to K. During simulation, the constraints ensure that the motion remains on K, and Simulink solves for the motion only in the constrained subspace.
The projection cannot be done with infinite precision, but only within the constraint tolerance. Your constraint settings determine the method and precision of projection.
Constraint Manifold as a Subspace of DoFs
It is possible for you or the simulation to overspecify constraints. Simulation proceeds if the extra or redundant constraints are consistent with the others, but having redundant constraints always runs the risk of inconsistency, which leads to the simulation halting with errors.
Several checks identify and eliminate redundant constraints, both at the start of and during the simulation.
You can enable a warning to indicate if a small perturbation to the model initial state changes the number of constraints.
You can enable a warning to indicate if your model is subject to redundant constraints, whether they conflict or not.
You can specify how similar constraints have to be before they are treated as redundant, or you can let the simulation decide for you.
See Configuring SimMechanics Simulation Diagnostics following and the Constraints tab of the Machine Environment block.
Each constraint solver has advantages and disadvantages relative to the others, subject to the fundamental tradeoff of accuracy and speed.
|Constraint Solver||Tolerance||Computational Cost||Accuracy||Simulation Speed|
|Tolerancing||Open to your control||Intermediate||Intermediate||Intermediate|
|Machine Precision||Tolerance ~ eps||Highest||Highest||Slowest|
This solver adds a self-correcting term to the equations of motion that stabilizes the solution by causing it to evolve toward, rather than drift away from, the constraint manifold K. It is the least accurate of the constraint solvers.
SimMechanics simulations use this solver by default. It is typically faster than the other solvers, but it can settle into a solution that exceeds the machine's assembly tolerances. If assembly tolerance errors occur during the simulation, use one of the other constraint solvers instead.
This solver finds the system's motion while imposing the constraints to the tolerance that you specify. Specifically, the solver stops refining the solution when the difference between two successive solutions satisfies the condition
|error| < max(|rtol * x|, atol)
where error is the difference between successive solutions, rtol is the relative constraint tolerance, x is the motion to be solved, and atol is the absolute constraint tolerance.
Use this solver you plan to run the simulation in Kinematics mode. It is more accurate than the stabilizing solver, but less accurate than the machine precision solver, with a computational cost between the two.
Setting Constraint Tolerances. If you use the tolerancing solver, the constraint tolerances maintained during simulation are under your control. You can view and change the constraint tolerances in the Constraints tab of the Machine Environment dialog.
This solver imposes the constraints to the numerical precision of the computer on which the simulation is running. Select this solver if you want to obtain the most accurate simulation permitted by the computer, regardless of simulation time or computational cost. It is the most accurate of the solvers and typically the slowest.
A SimMechanics model uses one of the ordinary differential equation (ODE) solvers of Simulink to solve a system's equations of motion, typically in tandem with a constraint solver (see Maintaining Constraints preceding).
Simulink provides an extensive suite of ODE solvers that represent the most advanced numerical techniques available for solving differential equations in general and equations of motion in particular. The Solver node of your model's Configuration Parameters dialog allows you to select any of these solvers for use by Simulink in solving the model's dynamics. See the Simulink documentation for more details about choosing a Simulink solver.
By default, Simulink uses a variable-step solver, whose accuracy is controlled by setting its absolute and relative tolerances.
You can also use a fixed-step solver, whose accuracy is controlled by setting the time step.
See Improving Performance in this chapter for further details on variable- versus fixed-step solvers.
By default, Simulink automatically determines the absolute tolerance used by ODE solvers. The resulting tolerance might not be small enough for a mechanical system, particularly a nonlinear or chaotic system. Try running a simulation with the relative tolerance set to 1e-3 (the default) and the absolute tolerance set to 1e-4. Then increase the tolerances if the simulation takes too long or decrease them if the solution is not sufficiently accurate.
If your model contains one or more Joint Stiction Actuator blocks, you must also take into account the velocity thresholds of these blocks when setting the absolute tolerance of the ODE solver. If the absolute tolerance of the solver is greater than a joint's velocity threshold, the simulation might never detect the locking or unlocking of a joint. To prevent this from happening, set the absolute tolerance to be no more than 10% of the size of the smallest stiction velocity threshold in your model.
You can anticipate and avoid many types of simulation failure by the following adjustments. You make them in the SimMechanics subnode of your model's Configuration Parameters dialog and the Constraints tab of a machine's Machine Environment dialog.
See How SimMechanics Software Works and Troubleshooting Simulation Errors in this chapter for further information about identifying and recovering from simulation errors. See Maintaining Constraints preceding for more about constraints.
Certain SimMechanics diagnostics help you understand and, if necessary, troubleshoot simulation problems. You can adjust these diagnostics in the Diagnostics area of the SimMechanics subnode.
Warning on Redundant Constraints. Selecting the Warn if machine contains redundant constraints check box triggers a warning if there are more constraints than necessary in your model. This situation by itself does not cause simulation errors. But in certain configurations, too many constraints might lead to conflicts and thus to errors during the course of the simulation.
By default, the check box is selected.
Warning on Unstable Constraints in Initial State. Selecting the Warn if number of initial constraints is unstable check box triggers a warning if small changes to your model's initial state leads to changes in the number of constraints. In certain configurations, this instability can lead to too few or too many (conflicting) constraints on your system and prevent the simulation from finding a solution for the motion.
By default, the check box is not selected.
At certain simulation times, one or more degrees of freedom in a mechanical system might change quickly compared to the others. If these sudden, quick motions are too fast compared to the slower motions, the Simulink solver has difficulty finding an accurate solution in a reasonable simulation time. Imposing constraints on the motion often exacerbates this problem. In extreme cases, the simulation can stop with an error.
You can alleviate these motion singularities by selecting the Use robust singularity handling on the Constraints tab of the Machine Environment dialog. This option requires extra computation whether or not singularities exist. Select it only if you cannot find a Simulink solver that solves your model in a reasonable amount of time without it.