- Posts: 78
- Thank you received: 0
Motion Jitter with LinuxCNC + EtherCAT
- Abdulkareem
- Topic Author
- Offline
- Senior Member
-
Less
More
1 year 3 months ago #332597
by Abdulkareem
Motion Jitter with LinuxCNC + EtherCAT was created by Abdulkareem
I’m running LinuxCNC 2.9.4 on a fanless Venoen P12B with a PREEMPT_RT kernel and EtherCAT (IgH master + lcec HAL driver) connected to 5x EL8-EC400(COE) drives via an Intel I225-V NIC using the
driver. Everything initializes correctly—slaves reach OP state, clocks sync, link is stable at 100Mb/s Full Duplex—but I still get intermittent motion jitter, especially after reboot.
shows good average latency (~2 µs) but occasional spikes up to 95 µs. I’ve tried kernel parameters like
but that worsened the issue, likely due to the system’s passive cooling. I’d like to keep my current hardware and am looking for any software-based solution to eliminate jitter with the
driver. Any help is greatly appreciated!
Code:
igc
Code:
cyclictest
Code:
intel_idle.max_cstate=1 processor.max_cstate=1
Code:
igc
Please Log in to join the conversation.
1 year 2 months ago #332707
by Hakan
Replied by Hakan on topic Motion Jitter with LinuxCNC + EtherCAT
Can you describe the jitter, I suppose you hear clicks or gravel noise from the servos?
Is it always like a steady stream of those noises or are the bursts every few minutes?
Please elaborate.
Is it always like a steady stream of those noises or are the bursts every few minutes?
Please elaborate.
Please Log in to join the conversation.
- Abdulkareem
- Topic Author
- Offline
- Senior Member
-
Less
More
- Posts: 78
- Thank you received: 0
1 year 2 months ago #332711
by Abdulkareem
Replied by Abdulkareem on topic Motion Jitter with LinuxCNC + EtherCAT
yes the sound is similar to what you describe and is more of random burst
Please Log in to join the conversation.
- Abdulkareem
- Topic Author
- Offline
- Senior Member
-
Less
More
- Posts: 78
- Thank you received: 0
1 year 2 months ago #332712
by Abdulkareem
Replied by Abdulkareem on topic Motion Jitter with LinuxCNC + EtherCAT
i tried changing the governor to performance just now it improved the latency a little bit but the noise still occurs
Please Log in to join the conversation.
1 year 2 months ago #332716
by Hakan
Replied by Hakan on topic Motion Jitter with LinuxCNC + EtherCAT
It*s the usual things with isolcpus, coalesce waiting and so on.
I don't think you can get rid of the jitter sound completely.
The underlying reason is that the position data sometimes misses to update the drives every DC cycle.
Let's not dive into why because we can't fix that here and now, instead see what you can do about it.
Reduce jitter is the start.
Can anything be done with the drive parameters? The drive will see a steadily changing position, every dc cycle a new delta - that's normal. Then suddenly there is a dc cycle without updated position - the drive see this as a full stop and starts doing the electric things to stop the servo. A few dc cycles later the position delta is restored but that means double delta in a dc cycle. The servo drive put the pedal to the floor to increase the speed. So that's what happens. Are there any settings in the drive to handle this essentially very high acceleration? Maybe max acceleration? Match that with the setting in linuxcnc (25% higher is a guideline there). That will reduce the speed change and the jitter noise.
There is a test you can do to see if this mechanism is the problem. Add a ddt component, connect position feedback from one of the servo drives to ddt.in and plot ddt.out in halscope. At a constant travel speed this should be a straight line more or less. When jitter happens you will see the ddt.out making a jump to zero or double value. It's a way to verify but unfortunately not to solve.
I don't think you can get rid of the jitter sound completely.
The underlying reason is that the position data sometimes misses to update the drives every DC cycle.
Let's not dive into why because we can't fix that here and now, instead see what you can do about it.
Reduce jitter is the start.
Can anything be done with the drive parameters? The drive will see a steadily changing position, every dc cycle a new delta - that's normal. Then suddenly there is a dc cycle without updated position - the drive see this as a full stop and starts doing the electric things to stop the servo. A few dc cycles later the position delta is restored but that means double delta in a dc cycle. The servo drive put the pedal to the floor to increase the speed. So that's what happens. Are there any settings in the drive to handle this essentially very high acceleration? Maybe max acceleration? Match that with the setting in linuxcnc (25% higher is a guideline there). That will reduce the speed change and the jitter noise.
There is a test you can do to see if this mechanism is the problem. Add a ddt component, connect position feedback from one of the servo drives to ddt.in and plot ddt.out in halscope. At a constant travel speed this should be a straight line more or less. When jitter happens you will see the ddt.out making a jump to zero or double value. It's a way to verify but unfortunately not to solve.
Please Log in to join the conversation.
- Abdulkareem
- Topic Author
- Offline
- Senior Member
-
Less
More
- Posts: 78
- Thank you received: 0
1 year 2 months ago #332803
by Abdulkareem
Replied by Abdulkareem on topic Motion Jitter with LinuxCNC + EtherCAT
thank you again for your time the hal scope confirmed your hypothesis there is one thing i wanted to confirm if i tune the acceleration parameters will it reduce the noise because i think i might of set it a little bit high
Please Log in to join the conversation.
Time to create page: 0.487 seconds
