When running LinuxCNC the latency for timing is very important. LinuxCNC runs best on a Linux real-time kernel, either RTAI or PREEMPT_RT, which are built to run tasks in real-time.
The hardware can be put into two different categories depending on how it will interface with the PrintNC.
The two main options are either:
When using alternative 1, a PC with a parallel break-out-board, the requirement for low latency and jitter is higher than alternative 2. Since the PC is generating the step pulses, it won't be able to reliably generate pulses faster than the jitter allows and thus it will limit the maximum speeds for the machines axis.
For software step generation a maximum latency of 20 μs is recommended and for FPGA (Mesa) the recommendation is below 100 μs (500 μs).
So what does the latency/jitter mean in real-world speed?
For a software stepping we can calculate the maximum step rate with this example, using the “standard” DM542 drivers, a worst case latency of 25 μs and “safe” base thread interval:
// PC latency
latency = 25 μs = 0.000025
// Driver specifications
drv_step0 = 2.5 μs = 0.0000025
drv_step1 = 2.5 μs = 0.0000025
drv_dir_setup = 5 μs = 0.000005
drv_dir_hold = 0.5 μs = 0.0000005
// Calculate step rate
min_base_thread = latency + max(drv_dir_step0|drv_dir_step1|drv_dir_setup|drv_dir_hold) = latency + drv_dir_setup = 25 + 5 = 30 μs
step_time = 2*min_base_thread = 60 μs
step_rate = 1/step_time = 1/60 μs = 1/0.000060 = 16666 steps/second
// Calculate speed (Assuming 1.8 deg steppers, 1610/2010 ballscrew and 1/5 microstepping)
steps_per_mm = 100
distance_per_second = step_rate/steps_per_mm = 16666/100 = 166.66 mm/second, about 10000 mm/minute or 10 meters per minute.
Keep in mind that this is for 1 axis and not a golden formula since other factors might come into play as well such as acceleration. A latency of maximum 10 μs would mean that the base thread could be lowered to 15 μs and step rates for the same scenario could equal speeds up to 20 meters per minute. The recommendations are though to not go below 25 μs base thread since there might not be CPU cycles left for anything else. This is especially true for single core systems. Try lowering the base thread gradually but keep a margin.
Read more about calculations here: http://wiki.linuxcnc.org/cgi-bin/wiki.pl?TweakingSoftwareStepGeneration
When tuning the hardware and software for LinuxCNC and low latency there's a few things that might make all the difference. Most have had good results with Dell Optiplex series of PCs. Many LGA775 systems seems to be able to hit low latency numbers as well.
This is examples of BIOS settings that might impact latency.