![]() ![]() ![]() ![]() ![]() ![]() |
||
![]() |
||
![]() ![]() ![]() ![]() This board is for PLC Related Q&A ONLY. Please DON'T use it for advertising, etc. |
||
![]() |
![]() |
#16 |
Member
|
Cheeco, I have many more test cases I will get to tomorrow but if your target generator works you can make money by selling the target generator to companies that want to make a motion controller. This would be like Codesys selling the PLC ladder logic program to companies that want to have a PLC but don't have the resources to create their own ladder logic software.
I am impressed that you are doing this out of a passion just to know or to do it. Few have this passion. Passion is what separates the best from the very very good. BTW, I used Mathcad to generate most of my formulas. Mathcad is old and obsolete but I have been using it for over 25 years so it is the devil I know, The example I provided above used wxMaxima. I also used Mathematica for the most difficult problems. What software did you use to generate the formulas?
__________________
"Living is easy with eyes closed, misunderstanding all you see...." Strawberry Fields Forever, John Lennon |
![]() |
![]() |
#17 |
Member
|
I have test a few more cases including the toughest one with 6 equations and 6 unknowns that was used by Robert Lewis. We get the same answers.
Solving this last problem the way I did provides an explicit solution. It works but it is very complicated. You have opened my eyes a bit. I am going to try an iterative just to see if it works. The problem with iterative solutions is that they take time that I don't have in a motion controller where the calculation time must be relatively deterministic. What could be improved? What I realize is that I need to change my HMI. I need to add a time in the column for the cursor values. I had to go back to my Mathcad worksheet to do accurate comparisons because my HMI doesn't display time. I also need a way of placing the cursor at a specific time because my cursor resolution is pixel limited. Cheeco should allow for different acceleration and deceleration rates. Often people want to decelerate slower than they accelerate. Excellent Job!!!!
__________________
"Living is easy with eyes closed, misunderstanding all you see...." Strawberry Fields Forever, John Lennon |
![]() |
![]() |
#18 |
Member
![]() ![]() Join Date: Apr 2019
Location: Auckland
Posts: 1
|
calculate time from known Jerk, acceleration and Distance.
Peter, thanks for your useful formulas. They are easy to follow and very useful for an automation project we are working on.
I also want to be able to calculate the acceleration time when I know the initial velocity, given acceleration and Jerk and the distance traveled over this motion. Thanks Michael |
![]() |
![]() |
#19 | |
Member
![]() ![]() Join Date: Jul 2017
Location: California
Posts: 2
|
Quote:
Thanks, Jas directmotion.com |
|
![]() |
![]() |
#20 |
Member
|
I will have my IT guy check into it tomorrow.
BTW, we entered the same move into a S7-1500. The S7-1500 does not provide a jerk limited time optimal motion trajectory. I bet few motion controllers provide the optimal motion trajectory.
__________________
"Living is easy with eyes closed, misunderstanding all you see...." Strawberry Fields Forever, John Lennon |
![]() |
![]() |
#21 |
Member
![]() ![]() Join Date: Sep 2018
Location: Ireland
Posts: 14
|
|
![]() |
![]() |
#22 |
Member
|
You should be able to click on the link and see the equations. There is nothing that fancy for a normal move. The problem is much more complicated if the move is so short that the commanded velocity and acceleration are not reached.
Normally there are 7 motion segments/states 1 to 7. Segment 0 is the stopped state.
__________________
"Living is easy with eyes closed, misunderstanding all you see...." Strawberry Fields Forever, John Lennon Last edited by Peter Nachtwey; April 7th, 2020 at 09:37 AM. |
![]() |
![]() |
#23 |
Lifetime Supporting Member
|
Hi Peter,
So the input parameters are
Is that about right? Thanks * I changed the "usually" to "sometimes" - the [v0=v7=0] case, or not, is going to be application-dependent, I suspect. Last edited by drbitboy; April 7th, 2020 at 11:46 AM. Reason: usually=>sometimes |
![]() |
![]() |
#24 |
Member
![]() ![]() Join Date: Jul 2017
Location: California
Posts: 2
|
Peter, really great work you have done...
CNC requires an interesting feature "feed rate override" where the operator changes the programmed "v" at runtime, often in the middle of a move... this means "v" & "t0-t7" are not constant throughout the move (which changes x1,x2,x3,etc...)... I believe this can also result in the segment state to 'go backwards' (ie: if t3<t<t4 and the operator doubles the "v", this could now mean t2<t<t3 or t1<t<t3)... Very complicated. Have you have worked in situations like this? |
![]() |
![]() |
#25 | |
Member
|
Quote:
Any case that may arise must be handled correctly. My graphical program in post #6 is great for testing but I have another version without an interface that has tested 200 trillion, yes trillion, combinations of moves. At work we call this any PVA to any PVA. PVA = position, velocity and acceleration.
__________________
"Living is easy with eyes closed, misunderstanding all you see...." Strawberry Fields Forever, John Lennon |
|
![]() |
![]() |
#26 | |
Member
|
Quote:
No one caught this. We I examine other controllers I have a few tests to I use to find non optimal movement. So why does this matter? Say for instance you have a flying shear or cut off machine. After the cut is made the cutter needs to retract quickly get get read for the next cut. Saving a tenth of a second can mean a lot to production. On top of that, decelerating through 0 velocity reduces the distance traveled and saves energy. Details, details. For CNC type of motion we can change the feed speed on the fly. We can do this in 2 or 3 dimensions. I have an example but I don't change the feed speed but that is the easy part. https://deltamotion.com/peter/Maxima/feedspeed.html A little calculus for those stuck at home like me.
__________________
"Living is easy with eyes closed, misunderstanding all you see...." Strawberry Fields Forever, John Lennon |
|
![]() |
![]() |
#27 | |
Member
![]() ![]() Join Date: May 2022
Location: Minnesota
Posts: 2
|
Quote:
Sorry to revive a 2-year old thread, but it looks like your Delta Motion links are broken now. Would you be able to fix them? I am having a hard time solving the 3rd order equations for jerk as well. I would like to see the equations that you solved for the S-curve motion profile, including this link: https://deltamotion.com/peter/Maxima/Seg1234567.html |
|
![]() |
![]() |
#28 | |
Member
|
Quote:
https://deltamotion.com/peter/wxMaxima/Seg1234567.html However, that link does have much to do with 3rd order motion profiles. This one is better. https://deltamotion.com/peter/wxMaxima/Seg1234567.html Also, this thread covers a very difficult case. My example assumes that the acceleration and velocity limits are reached. The calculations get to be MUCH more difficult if the limits are not reached. As far as I know, Cheeco and I are the only ones that have solved it in a way that can be implemented in a motion controller. Solutions generated by Mathcad, Mathematica, and wxMaxima are too long to be useful. Generating 3rd order motion profiles is not easy if trying to be optimal. I haven't seen another motion controller, that can solve the problem Cheeco presented, optimally.
__________________
"Living is easy with eyes closed, misunderstanding all you see...." Strawberry Fields Forever, John Lennon |
|
![]() |
![]() |
#29 |
Member
![]() ![]() Join Date: May 2022
Location: Minnesota
Posts: 2
|
Hi, Peter,
Thanks for such a fast response. I am trying to implement jerk control on a Codesys PLC, but don't know if it's even possible. I am currently getting an issue where the acceleration and velocity reach 0 together, but the position falls short of the setpoint due to rounding issues. I don't think Codesys is equipped to handle matrices or solving many equations together so don't even know if I can implement your method... |
![]() |
![]() |
#30 | |||
Member
|
Quote:
Quote:
Quote:
This is not an easy task.
__________________
"Living is easy with eyes closed, misunderstanding all you see...." Strawberry Fields Forever, John Lennon |
|||
![]() |
![]() |
Bookmarks |
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
Thread Tools | |
Display Modes | |
|
|
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
Electronics Questions | peavey_wolfgang_2000 | LIVE PLC Questions And Answers | 4 | May 23rd, 2005 09:05 PM |
How AB Timers work. | PhilipW | LIVE PLC Questions And Answers | 0 | January 28th, 2005 03:47 PM |
1 input 3 outputs | guest | LIVE PLC Questions And Answers | 26 | February 8th, 2004 05:33 PM |
Exact SP reached at end of heating ramp time | JustDaveIII | LIVE PLC Questions And Answers | 12 | October 17th, 2003 05:07 PM |
lambda tuning – how is it calculated? | Ron Beaufort | LIVE PLC Questions And Answers | 4 | August 5th, 2003 12:45 PM |