Group Abstract Group Abstract

Message Boards Message Boards

Simulation of load position carried by simple hoisting mechanism

GROUPS:
Hi, again.

The problem is this:



I want to simulate the motion of the load given the following Torque profile from the motor:




How do I define this parametric torque function (given the fact that it's a function of angular velocity) and then use it to solve differential equations?


What I have tried so far: Defining M as parametric function and defining events for the values of M in DSolve environment:
 Subscript[J, M] := 0.16
 n := 5
 r := 250/1000
 Subscript[J, d] := 7.2
 m := 180
 g := 9.81
 Subscript[M, M][Subscript[\[Theta], M]'[t_]] :=
   Piecewise[{{250,
      Subscript[\[Theta], M]'[t] <= 151.84}, {250 -
      47 Subscript[\[Theta], M]'[t],
     151.84 < Subscript[\[Theta], M]'[t] < 162.316}, {-250,
     Subscript[\[Theta], M]'[t] >= 162.316}}];
system = NDSolve[{(Subscript[J, M] + Subscript[J, d]/
       n^2) Subscript[\[Theta], M]''[t] ==
    Subscript[M, M] - (m g r)/n,
   m y''[t] == (Subscript[M, M] n)/r - m g, y[0] == 0, y'[0] == 0,
   Subscript[\[Theta], M]'[0] == 0, Subscript[\[Theta], M][0] == 0},
  y, {t, 0, 5}]
 system = NDSolve[{(Subscript[J, M] + Subscript[J, d]/
        n^2) Subscript[\[Theta], M]''[t] ==
     Subscript[M, M] - (m g r)/n,
    m y''[t] == (Subscript[M, M] n)/r - m g, y[0] == 0, y'[0] == 0,
    Subscript[\[Theta], M]'[0] == 0, Subscript[\[Theta], M][0] == 0,
    WhenEvent[Subscript[\[Theta], M]'[t] <= 151.84,
     Subscript[M, M] -> 250],
    WhenEvent[
     Subscript[\[Theta], M]'[t] > 151.84 &&
     Subscript[\[Theta], M]'[t] < 162.316,
    Subscript[M, M] -> 250 - 47 Subscript[\[Theta], M]'[t]],
   WhenEvent[Subscript[\[Theta], M]'[t] >= 162.316,
    Subscript[M, M] -> -250]}, y, {t, 0, 5}]

Sorry about the messy code.

Screen:



Thanks for any help.
POSTED BY: Julian Lovlie
Answer
1 year ago
Possible causes for the error you show are given here

http://reference.wolfram.com/mathematica/ref/message/NDSolve/ndnum.html
POSTED BY: Nasser
Answer
1 year ago
The problem, as far as i can tell, is that I cannot properly define the function M (motor torque) from figure 2 which i can then use inside the DSolve environment.
POSTED BY: Julian Lovlie
Answer
1 year ago
You could easily solve this problem with Wolfram SystemModeler. In the attached diagram I have used a table block for capturing the torque profile of the motor, this signal is feed in to a torque block that applies the torque to the inertia (the angular speed is measured and feed back to the table). Then we use an ideal gear component for going from the rotational domain to the translational domain that acts on the load.

POSTED BY: Otto Tronarp
Answer
1 year ago
@Otto Tronarp, that's awesome, however I am doing this for academic purposes and at this point I cannot use modeler
POSTED BY: Julian Lovlie
Answer
1 year ago
I kind of suspected that, but I just wanted to show how easy this would be in SystemModeler. Unfortunately I cannot help you with the original problem.
POSTED BY: Otto Tronarp
Answer
1 year ago
Yes, sure is much more convenient. Thank you!
POSTED BY: Julian Lovlie
Answer
1 year ago