|
Hi Ralf,
Ralf Meier wrote: I'm not sure that an asynchronous Motor is the right approach
It is not... but customers are here to make our lives easy, aren't they?
Ralf Meier wrote: If you want to stop the Motor during it's cycle (because of urgency or a fault) you don't need to calculate the distance - here it is necessary (my opinion) to realize a maximum of decelaration.
Yes, in that case that would be the desired thing. I'm not thinking on an emergency situation, just a stop button press (aborting the movement of an axis gracefully).
And of course, having the possibility to change the destination while the axis is moving would be a plus.
Ralf Meier wrote: In this case the formula's should be corrected ... I think I have a Solution for this.
Thank you again.
|
|
|
|
|
OK ... this is my Approach :
I have a movement x0 to x1 completed and change now directly to the movement x1 to x2.
The movement x1 to x2 has a different speed and perhaps a different accelaration.
To calculate the time for the speed-change I use your formula t = v / a but now v is the difference between v_x0_x1 and v_x1_x2
So : t = abs(v_x0_x1 - v_x1_x2) / a_x1
Then you get the distance for the speed-change (slower or faster) = 0,5 * a_x1 * t^2
Be so kind and put this into your test and tell me your results ...
... to be continued
|
|
|
|
|
Hi again Ralf,
Ralf Meier wrote: So : t = abs(v_x0_x1 - v_x1_x2) / a_x1
So... In my case, given the axis was still moving when a new command has entered:
t = abs(v0 - vmax)/a
As the acceleration must be constant for all the axis movements.
v0 is the speed it was active at the new command reception, so it was the speed the axis was moving from x0 to x1, vmax is the speed I want from x1 to x2 and again, a is constant.
This gives me the time to change from v0 to vmax... so the ta time in my code.
Then I'm using the 0.5*a*t^2 and I get
da = 0.5*a*ta^2
Which again gives me the same results that I had before...
Thank you very much.
|
|
|
|
|
I'm sorry Joan ...
But I think you made a mistake.
Of course ... you could use allways the same accelaration - but if you for example change the speed from one movement to the other then time you need for this change must be different because you only have to work with the delta-Speed (the difference between the actual speed and this one you want to have next). So ... the way for this change must also be different. ...
I'm not sure if you took the right values for the calculation ...
...
|
|
|
|
|
Don't be sorry...
I'm sure I've made plenty of them.
Tomorrow I'll continue with the testing at the customer workshop.
I'll let you know if I get something working or not...
Thank you again!
modified 8-Feb-17 15:07pm.
|
|
|
|
|
I'm awaiting your feedback ...
|
|
|
|
|
I think I understand now my problem...
When the da + df are bigger than the total distance...
I'm doing a proportional reduction which approximates the vmax to it's desired/needed value.
The problem here I think is that part: I don't have to make a proportional reduction, I do need to find the position in which the acceleration movement and the deceleration movement are coincident once I will have this position then I should check the speed any of the movements has in that position. And that one should be vmax.
Now the issue is doing that, but tonight I'll try to get it.
I could use 0 as the starting position for the acceleration and xf as the starting position for the deceleration.
Both accelerations are the same (different signs).
...
Let's see...
|
|
|
|
|
I think you are right.
V-max is the speed you want to get - but this speed you couldn't get because of the acceleration-decelaration-triangles.
What I have done is : I calculated the possible speed (V-x) respectively the resulting changes.
But Joan ... for me this is a very interesting discussion.
Also : thanks a lot for the votings you gave to me ...
|
|
|
|
|
You are welcome!
Any idea on how to solve that problem?
This remembers me the school days when we had to find the intersection of two vectors...
Believe it or not I enjoyed that a lot, but I can't simply remember how it works
|
|
|
|
|
Hi Joan,
Joan M wrote: Any idea on how to solve that problem?
Joan M wrote: This remembers me the school days when we had to find the intersection of two vectors...
I think, both quotes belong together ...
And ... I believe you because I also searched for the same : how to get the point, where both vector-lines crosses.
My Approach is that this consists of 2 right-angled triangles. Both angles have the same opposite-side, so that would be the common part of the equation.
But if I thought a Moment that this is the Solution then I must say : mistaken - but I promise that I will think about it.
I come back if I know how to get further ...
|
|
|
|
|
An idea :
Assuming that you have the same Acceleration- and Decelaration-Value your Acceleration-Distance (if you could not reach v-max) must be half of the distance between x0 and x1.
What we can do is to calculate the distance for Acceleration. At the end of this we have v-max.
Now we can use the rule-of-3 (I hope this is the right name for that Operation) to calculate the Speed v-x because there is a direct relation between da : s/2 and v-max : v-x
Could you follow me (and check if you could work with that) ?
see you
Ralf
|
|
|
|
|
This already works, only if the v0 is equal vf.
If both speeds are different (we start from a moving situation and end stopped) then this approach fails.
|
|
|
|
|
I can't understand because in this case (i wrote it allready somewhere before) you have to calculate with the difference between both Speeds.
As long as the angle (accelaration/decelaration) is not different this calculation MUST match ...
|
|
|
|
|
Then I have not understood you before, and I don't know what you exactly meant with the speed difference...
|
|
|
|
|
Excuse me ...
The Speed-difference is the difference between the Speed with which you actually drive (between X0 and X1) and the Speed you wish to drive (between X1 and X2).
But for me it is the same as if you reduce to Zero - then the difference would be the complete Speed - otherwise it is the delta-Speed.
Could you follow me now ?
|
|
|
|
|
Another question for this "exercise" :
Have you realized that asynchronous Motors, driven by a frequency-controller, don't have the same turning-moment during the used frequency-range ?
That means : as lower your frequency is as lower is your turning Moment.
This would be a Problem to get the right final-Position when decelarating.
A synchronous Motor (servo-axis) is able to compensate itself (and the perhaps not correct reached final Position) - a asynchonous Motor not ...
|
|
|
|
|
Yes, at the exit of the theoretically calculated position I do have a PID that is used to get the motor to the place. And of course a minimum movement distance is also adjusted.
|
|
|
|
|
Another part which interest me :
How do you get the data out of your .Net-Application into the Motor-Controller ?
|
|
|
|
|
I'm not sending the values to the application now.
I'm just calculating in excel and then testing stress cases, all the calculations are done in the PLC and then everything works from there.
But if I would have to do it, if I would work with Beckhoff (which is the main brand I've worked with) then I would use ADS and it would be a breeze doing that...
I guess that each brand will have their methods... OPC and others, but when (like me) PC control is used then it is extremely easy to do that kind of operation.
|
|
|
|
|
I understand ...
But also the PLC should be able to do this work - either Beckhoff or Siemens (with which I work most of time) - and the calculation in ST (or with SLC when using Siemens) should be easy if once the formula and the algorithm is ready ...
|
|
|
|
|
Working now, updated the initial post if you want to see how I've done it.
Thank you for your hints...
|
|
|
|
|
Very good explained - thank you - I've bookmarked your post. Perhaps it could be also for me useful sometime in future.
In fact I enjoyd this discussion very much.
|
|
|
|
|
|
Yes, I know it very well ... but also (from another Forum where I'm very active) I knew how useful help (and also a discussion) can be.
Mostly it is not the first idea, which guides to the goal, but most often the discussion does ...
Along these lines ...
|
|
|
|
|
You should edit/Update your question with actual code and explain what is actual problem.
So that everyone can see it without digging in discussion.
Patrice
“Everything should be made as simple as possible, but no simpler.” Albert Einstein
|
|
|
|