Having worked with a number of CNC devices now (Mills, 3D Printers, Plasma, Laser cutter, etc.) I'm struck at once by how similar the electronics is between the devices, and simultaneously how inefficient/outdated most existing system architectures are. Most of these systems require there to be a full PC running Windows/Linux attached to each machine, usually with poor network connectivity, and little thought about how to fit the machines together into an efficient unified process. These factors (and others) make the machines less reliable, more tedious to use, and isolated from the integrated cloud-centric CAD tools becoming prevalent in the rest of the design process.
Drawing on the strengths of the current trends of tablet-based front-ends and cloud-based data storage, we can begin to establish a newer system architecture that is highly adaptable, flexible, reliable, and efficient. Here is a block diagram of the proposed model:
This system uses three cards for the core of the system: one embedded CPU card focused on interpreting/running G-Code, one CPU card to act as a gateway to network devices, and one card containing the break out board. Using a three-board core provides wiring flexibility by allowing the use of different configurations for different machine applications. It also reliably isolates the real-time functions from the non-real-time network interfaces, while minimizing timing critical data paths. The Network Gateway talks to the front-end GUI via a restful API, thus enabling flexibility on front-end devices (tablets, PCs, etc.), and will include a driver layer for talking directly to a variety of cloud-based storage services (e.g. Dropbox). Existing front-end software (e.g. Mach3, LinuxCNC) can be used with the system by adding an Ethernet driver that talks the restful API protocol to talk to the back-end.
The advantage of this architecture is that it supports an integrated design process in which designs are developed in the cloud, and then accessed directly on the machine at run-time. Moreover, a single operator can quickly and efficiently work with multiple machines via a single tablet, switching quickly between machines as they walk around.
In future articles I will begin expanding on each component of the system exploring all aspects of the system, including software, hardware, and packaging. Furthermore I'm very interested in making this an open standard reference implementation, which standardized interfaces, protocols and connections between each component. This will encourage a variety of software and hardware development options for each piece, and hopefully encourage a wide range of people/companies to use the system model for their machines. Feel free to contact me if you're interested in participating in this process.