LinuxCNC S-Curve Accelerations

More
26 Jan 2026 16:19 #341957 by endian
Replied by endian on topic LinuxCNC S-Curve Accelerations

Sounds all sensible to me but I really don't feel competent to comment on the proposed path.
I certainly like the structured approach of your initiative, that is something that has been sorely lacking in other attempts.
I think/hope that Rob will be able to give an educated opinion on it and shape it into a concrete roadmap.

Note that Mitsubishi SSCNET requires a servo cycle <= 222us
forum.linuxcnc.org/9-installing-linuxcnc...cnet?start=70#256576
 

defenetly is great to have something faster then 1ms .. ethercat can run at 50us with 16axis but this complex calculations are far slower for now 

I think 250us is very pretty goal (common industrial standard) at any hardware and then reduce it based at used hardware 

Please Log in or Create an account to join the conversation.

More
26 Jan 2026 21:37 #341971 by ihavenofish
Replied by ihavenofish on topic LinuxCNC S-Curve Accelerations

Sounds all sensible to me but I really don't feel competent to comment on the proposed path.
I certainly like the structured approach of your initiative, that is something that has been sorely lacking in other attempts.
I think/hope that Rob will be able to give an educated opinion on it and shape it into a concrete roadmap.

Note that Mitsubishi SSCNET requires a servo cycle <= 222us
forum.linuxcnc.org/9-installing-linuxcnc...cnet?start=70#256576
 
defenetly is great to have something faster then 1ms .. ethercat can run at 50us with 16axis but this complex calculations are far slower for now 

I think 250us is very pretty goal (common industrial standard) at any hardware and then reduce it based at used hardware 


Note than many ethercat drives are also limited to 1khz in position mode. lichuan is, stepperonline/jss i think is and Im pretty sure the delta b3 is. My omrons I think are restricted to 2khz in csp mode.

For 4khz or 8khz usually you are restricted to other modes. At least in the drives I have. There definitely are (much) faster ones, but they are more specialised gear vs generic milling cnc applications.

Point being, 250us sounds great, but I don't know it needs to be any sort of priority cause only few people could use it. But then maybe those few people are important (like the people I know wanting to nanometer scale optical things and MUST have the higher "loop" speed so can't entertain linuxcnc right now)
The following user(s) said Thank You: grandixximo, endian

Please Log in or Create an account to join the conversation.

  • grandixximo
  • grandixximo's Avatar Topic Author
  • Away
  • Premium Member
  • Premium Member
More
27 Jan 2026 00:07 #341976 by grandixximo
Replied by grandixximo on topic LinuxCNC S-Curve Accelerations

I'll try to have a look at the '9D' branch later. Thanks.

which I got not much feedback..


Just as a word of caution from my own experience:
You mustn't expect to much from a forum thread like this. Few people will even read a post that long, fewer still look at the code and hardly anybody will even try to understand it. I know of at least one long time contributor, since retired, who got quite bitter about trying to get sustained and involved feedback here. Even from the very people asking for the specific feature.

I will do it because I want to, don't need cheering up much, although it is nice, it is more about doing something that I can share with everyone, and we are all roughly on the same page, as to what has to be done, but I will do it regardless, and then it can stay in a fork, or merged, we will see...
The following user(s) said Thank You: tommylight, besriworld, yrsiddhapura, NWE

Please Log in or Create an account to join the conversation.

  • grandixximo
  • grandixximo's Avatar Topic Author
  • Away
  • Premium Member
  • Premium Member
More
27 Jan 2026 06:59 - 27 Jan 2026 07:03 #341989 by grandixximo
Replied by grandixximo on topic LinuxCNC S-Curve Accelerations
New PR github.com/LinuxCNC/linuxcnc/pull/3744
Should be able to get new build artifacts, not sure, or you can build my fork
Need some help with testing, thanks!
Last edit: 27 Jan 2026 07:03 by grandixximo.
The following user(s) said Thank You: besriworld

Please Log in or Create an account to join the conversation.

More
27 Jan 2026 10:45 #341990 by automata
Replied by automata on topic LinuxCNC S-Curve Accelerations
Hi grandixximo,
Nicely laid out plan.
There is one more nuance for a motion planner that should be considered when looking at a complete re-write for linuxcnc motion planner internals.
For operating robots, some moves are given in joint space and some are given in cartesian space.
For most commercial robots, MOVJ and MOVL/MOVC are separate commands for joint space v/s cartesian space commands.
The MOV* commands also have a sync parameter which chooses if all the axes should start and finish at the same time (rapid move) OR should the motion start and finish at the same time.

When switching between MOVJ and MOVL there is no need to specify the a Kinematics switch. I am guessing they use 2 separate planners and the switch is made at stand still i.e., zero vel and accel for all joints and axes.

Having this ability for multiple on-the-fly switchable planners will make Linuxcnc much more useful for operating robots.

The only reason to bring this up in the conversation regarding jerk limiting is the planner re-write could consider these types of use cases from ground up.
-automata
The following user(s) said Thank You: akb1212, endian, NWE

Please Log in or Create an account to join the conversation.

  • grandixximo
  • grandixximo's Avatar Topic Author
  • Away
  • Premium Member
  • Premium Member
More
27 Jan 2026 11:06 #341991 by grandixximo
Replied by grandixximo on topic LinuxCNC S-Curve Accelerations
On what we run on the actual machines we have G12.1 it was an old patch, never fully made it into master, but is much better than what we have now in master, G12.1 Pxx you can have hundreds of worlds switch on the fly, should I made the port? I don't think MOVJ MOVL is realistic, but G12.1 Pxx totally feasible, I already use it extensively.

it is still a switch but nothing moves and can be done on the fly, does that work? or you are looking for something else?
The following user(s) said Thank You: tommylight, endian

Please Log in or Create an account to join the conversation.

More
27 Jan 2026 17:34 - 27 Jan 2026 17:57 #342009 by endian
Replied by endian on topic LinuxCNC S-Curve Accelerations

Sounds all sensible to me but I really don't feel competent to comment on the proposed path.
I certainly like the structured approach of your initiative, that is something that has been sorely lacking in other attempts.
I think/hope that Rob will be able to give an educated opinion on it and shape it into a concrete roadmap.

Note that Mitsubishi SSCNET requires a servo cycle <= 222us
forum.linuxcnc.org/9-installing-linuxcnc...cnet?start=70#256576
 
defenetly is great to have something faster then 1ms .. ethercat can run at 50us with 16axis but this complex calculations are far slower for now 

I think 250us is very pretty goal (common industrial standard) at any hardware and then reduce it based at used hardware 


Note than many ethercat drives are also limited to 1khz in position mode. lichuan is, stepperonline/jss i think is and Im pretty sure the delta b3 is. My omrons I think are restricted to 2khz in csp mode.

For 4khz or 8khz usually you are restricted to other modes. At least in the drives I have. There definitely are (much) faster ones, but they are more specialised gear vs generic milling cnc applications.

Point being, 250us sounds great, but I don't know it needs to be any sort of priority cause only few people could use it. But then maybe those few people are important (like the people I know wanting to nanometer scale optical things and MUST have the higher "loop" speed so can't entertain linuxcnc right now)
 

You are right, I agree with you 100%, main goal is get lcnc with curves at 1khz ... Timig is very wide and difficult topic but faster code means more play to some latency or timig issues of something, stability, rigidity etc...

I think it is reachable timing .. faster tick means better final result of movement and better regulation feedback with velocity or current control.. 

Then we can say isolated cpu to sleep if it will runs at longer timing then 250us .. finally we can use more masters at other network interface to run it with different timing if it is needed and then let cpu to sleep

I think Luca's goal are very very well definied .. from my point of view there is missing just pos(t+1) or pos(t-1) for position commands to any drivers which is not using the velocity setpoint(its cosmetic to not see the ferror during movement with position setpoint)

We can runs 16khz with beckhoff but there is latency restictions... for now... I am running 0.5khz with profibus equidistant and it works well but with trapeziodal its was pain.. now with scurve its smooth like butter... lower timing than 1khz are for gentelmen which they know what they are doing.. its advanced I think
Last edit: 27 Jan 2026 17:57 by endian. Reason: editor messing
The following user(s) said Thank You: grandixximo, akb1212, tommylight, rodw

Please Log in or Create an account to join the conversation.

More
27 Jan 2026 19:19 #342015 by ruediger123
Replied by ruediger123 on topic LinuxCNC S-Curve Accelerations
@grandixximo

Very good work!
I've started testing.
I've noticed that the track speed is very low with G2/G3, but significantly higher with G64 Pxx.

More tomorrow.
The following user(s) said Thank You: grandixximo, akb1212, tommylight, rodw, endian

Please Log in or Create an account to join the conversation.

More
28 Jan 2026 09:43 #342069 by endian
Replied by endian on topic LinuxCNC S-Curve Accelerations

Sounds all sensible to me but I really don't feel competent to comment on the proposed path.
I certainly like the structured approach of your initiative, that is something that has been sorely lacking in other attempts.
I think/hope that Rob will be able to give an educated opinion on it and shape it into a concrete roadmap.

Note that Mitsubishi SSCNET requires a servo cycle <= 222us
forum.linuxcnc.org/9-installing-linuxcnc...cnet?start=70#256576
 
defenetly is great to have something faster then 1ms .. ethercat can run at 50us with 16axis but this complex calculations are far slower for now 

I think 250us is very pretty goal (common industrial standard) at any hardware and then reduce it based at used hardware 


Note than many ethercat drives are also limited to 1khz in position mode. lichuan is, stepperonline/jss i think is and Im pretty sure the delta b3 is. My omrons I think are restricted to 2khz in csp mode.

For 4khz or 8khz usually you are restricted to other modes. At least in the drives I have. There definitely are (much) faster ones, but they are more specialised gear vs generic milling cnc applications.

Point being, 250us sounds great, but I don't know it needs to be any sort of priority cause only few people could use it. But then maybe those few people are important (like the people I know wanting to nanometer scale optical things and MUST have the higher "loop" speed so can't entertain linuxcnc right now)
 
You are right, I agree with you 100%, main goal is get lcnc with curves at 1khz ... Timig is very wide and difficult topic but faster code means more play to some latency or timig issues of something, stability, rigidity etc...

I think it is reachable timing .. faster tick means better final result of movement and better regulation feedback with velocity or current control.. 

Then we can say isolated cpu to sleep if it will runs at longer timing then 250us .. finally we can use more masters at other network interface to run it with different timing if it is needed and then let cpu to sleep

I think Luca's goal are very very well definied .. from my point of view there is missing just pos(t+1) or pos(t-1) for position commands to any drivers which is not using the velocity setpoint(its cosmetic to not see the ferror during movement with position setpoint)

We can runs 16khz with beckhoff but there is latency restictions... for now... I am running 0.5khz with profibus equidistant and it works well but with trapeziodal its was pain.. now with scurve its smooth like butter... lower timing than 1khz are for gentelmen which they know what they are doing.. its advanced I think
 


Gentelmen, I am sorry for talking about editing and adding the positionCmd(t+1) or positionCmd(t-1) to active creating planner but there is a problem of unsynchronized movement or synchronized(t+-x) motion ... it is common issue of any outsourced position control stuff

if somebody has stuff for example running at ethercat with CSP, he/she will be still in lag for cycle or two cycles(if he/she will not has reference cycle negative) behind stuff at same control master for example CSV which will have PID- with FF1 set to 1.0 ... feedforward compensation will not be present and lagging axis will create(during higher speed motion) unsynchronization and it could influence final shape during some 3d pathing or finishing...  with higher speed it will create higher lag (I am talking about ethercat because I can test it myself at my HW)

this is just my ideas, please let me know your point of view ... 

thanks

Please Log in or Create an account to join the conversation.

  • grandixximo
  • grandixximo's Avatar Topic Author
  • Away
  • Premium Member
  • Premium Member
More
28 Jan 2026 11:45 #342073 by grandixximo
Replied by grandixximo on topic LinuxCNC S-Curve Accelerations
@endian I discussed this with YangYang who attends the EtherCAT consortium meetings. AitalMAC is part of the consortium and we design I/O for EtherCAT, so we're not guessing here.
The standard already solves this problem. You don't need pos(t+1).
The 1 cycle delay is real, but it's identical for all axes. With Distributed Clocks everything executes on the same SYNC edge, synchronized to ~100ns. Every axis is "late" by the same amount, so the path shape is correct. Calculate it last week, execute it this week, the part is the same.
The CiA 402 standard provides feedforward objects exactly for this: 0x60B1 (velocity offset) and 0x60B2 (torque offset). The master can send position plus velocity feedforward so the drive can anticipate acceleration. This is the standard's solution, it just needs to be mapped in lcec.
Also, good drives interpolate internally. The servo loop runs faster than the bus cycle (Maxon runs 0.4ms internal vs 1ms bus). The drive doesn't jump between positions, it interpolates. That's what 0x60C2 configures.
If you're seeing ferror correlate with velocity in halscope, that's likely a display artifact. The ferror compares "commanded from 1 cycle ago" with "actual now", so it shows an offset proportional to velocity. It's not a real machining error.
What does your actual part surface look like? Any real deviation you can measure?
The following user(s) said Thank You: akb1212, tommylight, besriworld, endian

Please Log in or Create an account to join the conversation.

Time to create page: 0.242 seconds
Powered by Kunena Forum