Message Boards Message Boards

2
|
5890 Views
|
5 Replies
|
6 Total Likes
View groups...
Share
Share this post:

How can I model a scissor mechanism in SystemModeler?

Posted 2 years ago

I'm new to SystemModeler and the underlying modeling Language Modelica. I would like to do model a scissor mechanism and I don't quite see how to do it within the Modelica Mechanics Library.

I want an idealized model so I want to neglect the mass of the mechanism and let it act as a linear motion amplificator. That is, given its three connectors a, b and c, I want the component to simply impose the equation xb - xa = lambda * (xc - xa), where lambda is a scalar parameter between 0 and 1.

I want to work in one dimension so I suppose I should be able to use the Modelica.Mechanics.Translational library, but even that seems complicated. As I see it, most components in the library have two flanges, not three. Maybe I should extend PartialTwoFlangesAndSupport? Or should I write my own component without deriving it from the library? If so what would it look like? Would it have a third flange name flange_c?

POSTED BY: Lucien Grondin
5 Replies

Lucien,

Again, the modeling depends on what you are trying to capture with the model. For example, I grabbed a picture of a single scissors mechanism from this technical paper:

enter image description here

If your input is the distance, h, then the mechanism is a simple, linear transmission with a 1:2 gear ratio between input, h and output, H. This is easily modeled with two IdealGearR2T blocks -- one with a 1:1 ratio to move from translation to rotation with no ratio and a second one to go from rotation back to translation with a 1:2 ratio (output is twice the input). The two blocks together form a linear transmission (I do not believe there is a single linear to linear gear block built into WSM). You can then add springs, masses, and input sources to provide the forces to move the mechanism.

If, however, your input is S, the mechanism is highly nonlinear because (using the Pythagorean theorem for triangles)

H == Sqrt[l^2-S^2]

In this situation you would have to write your own block to translate the motion in S to motion in H using the expression above and its derivatives (see the der() function in modelica). To construct a two port modelica translation block you need an equation for position and an equation for force. (use a simple translation block such as "spring" as a starting example). If your input is S, the relationship between the position and the force is not linear.

Regards,

Neil

POSTED BY: Neil Singer

This is easily modeled with two IdealGearR2T blocks -- one with a 1:1 ratio to move from translation to rotation with no ratio and a second one to go from rotation back to translation with a 1:2 ratio (output is twice the input). The two blocks together form a linear transmission (I do not believe there is a single linear to linear gear block built into WSM).

Indeed that seems like one way to do it. A bit silly and inelegant, but that should work.

Thanks.

POSTED BY: Lucien Grondin

Lucien,

While I agree with Jan completely, you also have two more alternatives:

  1. you can use the built in transmission blocks.
  2. you can also make a Modelica block that behaves like the scissors mechanism (since you have the equations for it).

As you state -- you only need one dimension, the scissors block is merely a transmission ratio between the input and the output. You can successfully model it as a lumped transmission using built-in components. For example, look at idealGear and idealGearR2T. You can model the scissors mechanism as a transmission.

Secondly, you can make your own translation block that has the behavior you need. It is a simple model (probably two equations). The advantage of using the 3D mechanics library is you get 3D animations. The disadvantage is you need to traverse the relatively steep learning curve and get your dimensions right in 3D.

Personally I would start by getting something running in 10-20 minutes by using the built in transmission components (especially since you say it is massless so the changing inertias will not need to be modeled). I would show you a simple example you do not indicate the inputs/outputs. For example: Are you using a motor? or. linear actuator? or Are you just specifying a force or torque or a motion profile on the input? What is the geometry? etc.

Regards,

Neil

POSTED BY: Neil Singer

I'm not sure how the first alternative you suggest would work (I mean I don't know what transmission blocks are). The second one seems more promising to me, so I'll discuss this one.

For example: Are you using a motor? or. linear actuator? or Are you just specifying a force or torque or a motion profile on the input? What is the geometry? etc.

What I want to model is a spring attached to a scissor mechanism. Say the scissor mechanism has three attachement points A, B and C, with the distances AC and AB free to change arbitrarily but always staying proportional to one another. I want to attach a mass to point B and place a spring between either A and B or A and C (I don't think where I attach the spring makes much difference). All masses except the one attached to B should be neglected.

Then I want the whole thing to be a component with A and C serving as connections to other components. And then I want to attach many instances of this component in a linear sequence : C1 connected to A2, C2 to A3 and so on.

For what it's worth, my goal is to design some kind of linear catapult. I'm fairly sure I could do it without SystemModeler, by writing a Lagrangian for the whole thing, and then deriving the Euler-Lagrange equations with Mathematica, but the Modelica approach is conceptually more appealing and might be easier if I want to make the model more realistic later.

PS.

For example, look at idealGear and idealGearR2T. You can model the scissors mechanism as a transmission.

Yeah you're right that seems like the exact analog to what I'm trying to do. I guess I'll have to study how this works.

POSTED BY: Lucien Grondin

You can find a blog with a scissor mechanism here. Unfortunately, I could not find the corresponding model.

However, as the the mechanism moves in two dimension the translational library will not be sufficient. Instead you need to use the multibody library. In that case the base components will be the following:

  • Modelica.Mechanics.MultiBody.Parts.BodyCylinder or Modelica.Mechanics.MultiBody.Parts.FixedTranslation if you want to neglect mass (similar to how the basket fence is made in the blog)
  • Modelica.Mechanics.MultiBody.Joints.Revolute and possibly a Modelica.Mechanics.MultiBody.Joints.RevolutePlanarLoopConstraint to break planar loops

You can also download and use the PlanarMechanics library which is limited to 2D (and therefore probably closer to what you want).

Hope this gives you at least a starting point.

POSTED BY: Jan Brugard
Reply to this discussion
Community posts can be styled and formatted using the Markdown syntax.
Reply Preview
Attachments
Remove
or Discard

Group Abstract Group Abstract