The EMC
Public Domain software system was originally developed by
NIST, as the next step beyond the
National Center for Manufacturing Sciences / Air Force sponsored Next Generation Controller Program[NGC 1989] /Specification for an Open Systems Architecture[SOSAS]. It was called the EMC [Enhanced Machine Controller Architecture 1993]. Government sponsored Public Domain software systems for the control of milling machines were among the first projects developed with the digital computer in the
1950s. It was to be a "vendor-neutral" reference implementation of the industry standard language for numerical control of machining operations, RS-274D (
G-code). The software included the RS274 interpreter driving the motion trajectory planner, real-time motor/actuator drivers and a user interface. It demonstrated the feasibility of an advanced numerical control system using off the shelf PC hardware running
FreeBSD or
Linux, interfacing to various hardware motion control systems. Additional development continues using current and additional architectures (e.g.
ARM architecture devices). The demonstration project was very successful and created a community of users and volunteer contributors. Around June 2000,
NIST relocated the source code to
SourceForge under the
Public Domain license in order to allow external contributors to make changes. In 2003, the community rewrote some parts of it, reorganized and simplified other parts, then gave it the new name, EMC2. EMC2 is still being actively developed. Licensing is now under the
GNU General Public License. The adoption of the new name EMC2 was prompted by several major changes. Primarily, a new layer known as HAL (
Hardware Abstraction layer) was introduced to interconnect functions easily without altering C code or recompiling. This split trajectory and motion planning from motion hardware, making it easier to generate control programs to support
gantry machine,
lathe threading and rigid
tapping,
SCARA robot arms and a variety of other adaptations. HAL comes with some interactive tools to examine signals and connect and remove links. It also includes a virtual oscilloscope to examine signals in real time. Another change with EMC2 is Classic Ladder, (an open-source
ladder logic implementation) adapted for the real time environment to configure complex auxiliary devices like automatic tool changers. Around 2011, the name was changed from EMC2 to LinuxCNC, due to a trademark conflict with
EMC Corporation, which holds trademarks for 'EMC' and 'EMC2'. LinuxCNC received a license for the 'Linux' trademark from the
Linux Foundation. ==Platforms==