Converting from ESS+Mach4 to LinuxCNC
The complicated part is that he does not like the idea of the real time control of the stepper motor drivers coming from a PC. In his opinion, that sort of real-time operation should be done on a dedicated piece of hardware (like the ESS) that is not encumbered by having to run a desktop operating system. It seems to me that there are 3 possible solutions to this problem:
1) Bypass the real-time control functionality of LinuxCNC and find a way for it to communicate with the existing ESS board, either by writing my own driver or some other driver developed by someone else.
2) Some other control board which mimics the functionality of the ESS but still will run the real-time control (instead of letting LinuxCNC do it).
3) Coming up with a persuasive, detailed argument about how running the real time control from a PC will be equally reliable.
My professor has made it clear that he would be willing to spend up to like $5-10K on hardware (although I can't imagine that would be necessary) to make this thing work extremely reliably. I'm open to any ideas y'all come up with but I don't want to do anything sketchy. We're looking for industrial-grade reliability with whatever setup we build. Any help would be greatly appreciated!
This has the advantage that you have a flexible, powerful, and extensible high
level interface to hardware running on a high performance real time host (a PC or high end ARM CPU )
Changing this to work with a buffered system (that works like Mach4 and the ESS) will be
a fair size project and compromises many of LinuxCNCs strengths
In my experience LinuxCNC is very reliable even though it is running real time tasks (Meaning > 1 year uptimes without issues)
I would suggest you try LinuxCNC before deciding that you need a different basic architecture
jackm wrote: The complicated part is that he does not like the idea of the real time control of the stepper motor drivers coming from a PC. In his opinion, that sort of real-time operation should be done on a dedicated piece of hardware (like the ESS) that is not encumbered by having to run a desktop operating system.
I can see where the current experience might push someone to that viewpoint, but it seems to be ignoring the capabilities of a real-time patched OS.
There is a bibliography of academic papers about the LinuxCNC approach on the LinuxCNC Wikipedia page
it is actually advantageous to run the control loop in a general purpose PC, you can see what is going on. LinuxCNC has an oscilloscope (Halscope) and various other tools that let you see exactly what is going on in the real-time threads. This level of introspection is extremely useful.
However, there is something to be said for doing the lowest-level step generation in dedicated hardware and LinuxCNC offers support for a number of options there.
It might be instructive to, initially, reconfigure the machine to straight parallel-port control with LinuxCNC. This would be a zero-cost option. But make sure you do a long-term latency test first. it is possible that the problems that are stopping Mach4 working properly might be related to the PC hardware. Mach3 and Mach4 do work, well, for many thousands of people. It if was as an unusable solution as you are seeing it wouldn't have any users.
As a straight replacement for the ESS you could look at the Mesa 7i76e. If you start to consider PCI and EPP connection options the range of hardware expands a lot.
Perhaps show your prof this video , you don't run a machine like this on a flaky controller.
This is controlled through the parallel port, the PC reads position (encoder or step counts) and sends velocity commands to the Controller board. There are also positions for up to 8 solid state relays and 16 digital inputs.
Cost is only $250, and should be all you need to do the retrofit. (If your computer doesn't have a parallel port, then one can be added to any PCI or PCIe slot.)
If you are trying to do this on a laptop, that may be the cause of the problems. Thermal and battery management on laptops can interfere with response-sensitive apps.
for info on this board.