I have a mechanism analysis set up involving three hydraulic cylinders linked to a common part. During the analysis, I get an expected failure, "The mechanism constrains could not be satisfied. The mechanism could not be assembled." I get this error because I defined the ranges of operation for the hydraulic cylinders, and one of them is going out of range.
Currently, I have translation servo motors driving the motion of the cylinder rods. The motion is defined such that every combination of cylinder extension/retraction is tested (i.e. cylinder 1 is fully extended while the others are retracted, then cylinder 2 is extended alone, then 3, then cylinder 1 and 2 but not 3, etc...). These numbers are loaded from a table in the motor definition, and the only way that I know how to fix the constraint issue is to analyze the failure point and redefine the motor magnitudes at the time of fail.
Is there a way to run the analysis such that the program will run without causing constraint failures even if they are are caused by the definition of the motor mechanisms? In other words, is it possible to tell the motors to avoid cases where a constraint is out of range?
I would first look at your "zero" references for each cylinders' axes and make sure those are where you need them to be. Next, make sure your joint limits are correct for each cylinder's axis. If this is all good, there should be no issue running your analyses, unless your servo motors ask any cylinder to operate outside their limits. If you continue to get errors, one of these three items is wrong (zeros, limits or servo definition).
If it is possible for you to share your model (or a simplified version of it), it would be much easier to provide help if what I've shared doesn't make sense or provide assistance.
I can't upload the model that I am working on, but I will create a simplified version if I have time.
The mechanism analysis fails because as two cylinders attempt to fully extend, the third is supposed to be static at its minimum length. The extension of the other two cylinders forces the third past its minimum limit. This is expected. The fail point occurs before the the two cylinders are fully extended. I would like to find a way to tell Creo to automatically retract the cylinders at this point and move to the next step of my analysis (one step is equivalent to one second run in the analysis). Otherwise, I have to manually edit the definition for the motors. This would involve guessing and checking the maximum extension of the two cylinders without causing the third's constraint to break.
It is difficult to understand your mechanism without seeing a model of it. Are you running a dynamic or kinematic analysis? What kind of joints connect the cylinders? I'm confident we could get your system running, but I'd need to see the mechanism to lend a hand. I've successfully run quite a number of ICE, valve train systems and hydraulic actuators in MDO, many of which were highly non-linear as well, so I'm sure your problem can be solved.
Unfortunately I will not be able to share a model with you. I have talked to some people who are quite experienced in mechanisms, and they said they don't think there is a way to tell Creo's mechanisms application to avoid the cases that cause failure in the model. It might be possible by using relations, but I have not used them. I will have to investigate that option some more.
I am running a position analysis. My cylinders are composed of two parts: the barrel and the rod. Each barrel is constrained by a unique ball pivot connection. The locations of these pivots are essentially points fixed in space. The rods are also constrained to unique ball pivot points, and they are also assigned cylinder constraints. Their axes are aligned with their respective barrels, and their translation axis has limits set according to their physical limits. All three cylinders are attached at one end to a common part which they move.
I can get the system to run if I limit the motion of my cylinders manually, but I want it done automatically. I will have a few different cases to run and I would like to avoid the guess-and-check method of finding the limits that allow the system to run.
The motors are set up with a table which is organized as a truth table which defines the positions of Cylinder1, Cylinder2, and Cylinder3 at any given time. 0 represents a cylinder in the fully retracted state, and 1 represents a cylinder in the fully extended state.
My table is defined as follows:
how about take the limits off your cylinders and run the analysis with a measure active on each cylinder length. read the cylinder length measure results and set the cylinders accordingly
I know the lengths of each cylinder when they break. I am asking if there is a way to tell Creo to ignore cases which cause constraints to break rather than trying to run through them. Otherwise, I will have to go through and manually edit many cases where this break occurs because I load the values in from a table, and this cylinder configuration occurs multiple times.
it is necessary for the cylinders to have limits because they define the limitations of the physical device.
I think I found a solution, though. Rather than running using motors defined by positions, I need to use forces. If these forces are of the right magnitude, they will not cause the cylinder constraint to break.