Enhanced Machine Controller
   HOME

TheInfoList



OR:

LinuxCNC (formerly Enhanced Machine Controller or EMC2) is a free, open-source Linux software system that implements
computer numerical control Computer numerical control (CNC) or CNC machining is the Automation, automated control of machine tools by a computer. It is an evolution of numerical control (NC), where machine tools are directly managed by data storage media such as punched ...
(CNC) capability using general purpose computers to control CNC machines. It's mainly intended to run on PC AMD
x86-64 x86-64 (also known as x64, x86_64, AMD64, and Intel 64) is a 64-bit extension of the x86 instruction set architecture, instruction set. It was announced in 1999 and first available in the AMD Opteron family in 2003. It introduces two new ope ...
systems. Designed by various volunteer developers at linuxcnc.org, it is typically bundled as an ISO file with a modified version of
Debian Linux Debian () is a free and open source Linux distribution, developed by the Debian Project, which was established by Ian Murdock in August 1993. Debian is one of the oldest operating systems based on the Linux kernel, and is the basis of many o ...
which provides the required real-time kernel. Due to the tight
real-time operating system A real-time operating system (RTOS) is an operating system (OS) for real-time computing applications that processes data and events that have critically defined time constraints. A RTOS is distinct from a time-sharing operating system, such as Unix ...
integration, a standard Linux desktop PC without the real-time kernel will only run the package in demo mode.


Purpose

LinuxCNC is a software system for
numerical control Computer numerical control (CNC) or CNC machining is the automated control of machine tools by a computer. It is an evolution of numerical control (NC), where machine tools are directly managed by data storage media such as punched cards or ...
of machines such as
milling machine Milling is the process of machining using rotary cutters to remove material by advancing a cutter into a workpiece. This may be done by varying directions on one or several axes, cutter head speed, and pressure. Milling covers a wide variety of ...
s,
lathe A lathe () is a machine tool that rotates a workpiece about an axis of rotation to perform various operations such as cutting, sanding, knurling, drilling, deformation, facing, threading and turning, with tools that are applied to the w ...
s, plasma cutters, routers,
cutting machines Cutting is the separation or opening of a physical object, into two or more portions, through the application of an acutely directed force. Implements commonly used for cutting are the knife and saw, or in medicine and science the scalpel and m ...
,
robots" \n\n\n\n\n\n\nrobots.txt is the filename used for implementing the Robots Exclusion Protocol, a standard used by websites to indicate to visiting web crawlers and other web robots which portions of the website they are allowed to visit.\n\nThe sta ...
and hexapods. It can control up to 9 axes or joints of a CNC machine using
G-code G-code (abbreviation for geometric code; also called RS-274, standardized today in ISO 6983-1) is the most widely used computer numerical control (CNC) and 3D printing programming language. It is used mainly in computer-aided manufacturing t ...
(RS-274NGC) as input. It has several GUIs suited to specific kinds of usage (touch screen, interactive development). Currently it is almost exclusively used on
x86 x86 (also known as 80x86 or the 8086 family) is a family of complex instruction set computer (CISC) instruction set architectures initially developed by Intel, based on the 8086 microprocessor and its 8-bit-external-bus variant, the 8088. Th ...
PC platforms, but has been ported to other architectures. It makes extensive use of a real time-modified kernel, and supports both stepper- and
servo Servo may refer to: Mechanisms * Servomechanism, or servo, a device used to provide control of a desired operation through the use of feedback ** AI servo, an autofocus mode ** Electrohydraulic servo valve, an electrically operated valve that c ...
-type drives. It does not provide drawing (CAD - Computer Aided Design) or G-code generation from the drawing (CAM - Computer Automated Manufacturing) functions.


History

The EMC
Public Domain The public domain (PD) consists of all the creative work to which no Exclusive exclusive intellectual property rights apply. Those rights may have expired, been forfeited, expressly Waiver, waived, or may be inapplicable. Because no one holds ...
software system was originally developed by
NIST The National Institute of Standards and Technology (NIST) is an agency of the United States Department of Commerce whose mission is to promote American innovation and industrial competitiveness. NIST's activities are organized into physical s ...
, as the next step beyond the National Center for Manufacturing Sciences / Air Force sponsored Next Generation Controller Program GC 1989/Specification for an Open Systems Architecture OSAS It was called the EMC nhanced 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 File:1950s decade montage.png, 370x370px, Top, L-R: U.S. Marines engaged in street fighting during the Korean War, late September 1950; The first polio vaccine is developed by Jonas Salk.Centre, L-R: US tests its first thermonuclear bomb with co ...
. It was to be a "vendor-neutral" reference implementation of the industry standard language for numerical control of machining operations, RS-274D (
G-code G-code (abbreviation for geometric code; also called RS-274, standardized today in ISO 6983-1) is the most widely used computer numerical control (CNC) and 3D printing programming language. It is used mainly in computer-aided manufacturing t ...
). 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 FreeBSD is a free-software Unix-like operating system descended from the Berkeley Software Distribution (BSD). The first version was released in 1993 developed from 386BSD, one of the first fully functional and free Unix clones on affordable ...
or
Linux Linux ( ) is a family of open source Unix-like operating systems based on the Linux kernel, an kernel (operating system), operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically package manager, pac ...
, interfacing to various hardware motion control systems. Additional development continues using current and additional architectures (e.g.
ARM architecture ARM (stylised in lowercase as arm, formerly an acronym for Advanced RISC Machines and originally Acorn RISC Machine) is a family of reduced instruction set computer, RISC instruction set architectures (ISAs) for central processing unit, com ...
devices). The demonstration project was very successful and created a community of users and volunteer contributors. Around June 2000,
NIST The National Institute of Standards and Technology (NIST) is an agency of the United States Department of Commerce whose mission is to promote American innovation and industrial competitiveness. NIST's activities are organized into physical s ...
relocated the source code to
SourceForge SourceForge is a web service founded by Geoffrey B. Jeffery, Tim Perdue, and Drew Streib in November 1999. SourceForge provides a centralized software discovery platform, including an online platform for managing and hosting open-source soft ...
under the
Public Domain The public domain (PD) consists of all the creative work to which no Exclusive exclusive intellectual property rights apply. Those rights may have expired, been forfeited, expressly Waiver, waived, or may be inapplicable. Because no one holds ...
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 GNU General Public Licenses (GNU GPL or simply GPL) are a series of widely used free software licenses, or ''copyleft'' licenses, that guarantee end users the freedom to run, study, share, or modify the software. The GPL was the first ...
. The adoption of the new name EMC2 was prompted by several major changes. Primarily, a new layer known as HAL (
Hardware Abstraction layer Hardware abstractions are sets of routines in software that provide programs with access to hardware resources through programming interfaces. The programming interface allows all devices in a particular class ''C'' of hardware devices to be acc ...
) 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 A lathe () is a machine tool that rotates a workpiece about an axis of rotation to perform various operations such as cutting, sanding, knurling, drilling, deformation, facing, threading and turning, with tools that are applied to the w ...
threading and rigid
tapping Tapping is a playing technique that can be used on any stringed instrument, but which is most commonly used on guitar. The technique involves a string being fretted and set into vibration as part of a single motion. This is in contrast to stand ...
,
SCARA robot The SCARA is a type of industrial robot. The acronym stands for selective compliance assembly robot arm or selective compliance articulated robot arm. By virtue of the SCARA's parallel-axis joint layout, the arm is slightly compliant in the ...
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 Ladder logic was originally a written method to document the design and construction of relay logic, relay racks as used in manufacturing and process control. Each device in the relay rack would be represented by a symbol on the ladder diagram w ...
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 EMC Corporation (stylized as EMC²) was an American multinational corporation headquartered in Hopkinton, Massachusetts, which sold data storage device, data storage, information security, virtualization, analytics, cloud computing and other pro ...
, which holds trademarks for 'EMC' and 'EMC2'. LinuxCNC received a license for the 'Linux' trademark from the
Linux Foundation The Linux Foundation (LF) is a non-profit organization established in 2000 to support Linux development and open-source software projects. Background The Linux Foundation started as Open Source Development Labs in 2000 to standardize and prom ...
.


Platforms

Due to the need of fine grained, precise real-time control of machines, LinuxCNC requires a platform with
real-time computing Real-time computing (RTC) is the computer science term for Computer hardware, hardware and software systems subject to a "real-time constraint", for example from Event (synchronization primitive), event to Event (computing), system response. Rea ...
capabilities. Early versions of EMC ran under a real-time version of
Windows NT Windows NT is a Proprietary software, proprietary Graphical user interface, graphical operating system produced by Microsoft as part of its Windows product line, the first version of which, Windows NT 3.1, was released on July 27, 1993. Original ...
, but later version of Windows did not have good real-time support so Linux with real-time extensions became the preferred platform. Currently LinuxCNC uses the
RTAI Real-time application interface (RTAI) is a real-time extension for the Linux kernel, which lets users write applications with strict timing constraints for Linux. Like Linux itself the RTAI software is a community effort. RTAI provides dete ...
kernel or PREEMPT-RT with LinuxCNC's 'uspace' flavour of the RTAPI. Installing LinuxCNC and the underlying real-time kernel patches on a base Linux system can be a daunting task. Paul Corner came to the rescue with the BDI (Brain Dead Install) which was a CD from which a complete working system (Linux, real-time patches, and LinuxCNC) could be installed. This made LinuxCNC accessible to a much larger user community. Today Paul's BDI has evolved into a bootable (live) ISO that can be burned to a CD or USB and run on most any PC style computer to test drive LinuxCNC without having to install the system. Bootable LinuxCNC ISOs are available for
Debian Debian () is a free and open-source software, free and open source Linux distribution, developed by the Debian Project, which was established by Ian Murdock in August 1993. Debian is one of the oldest operating systems based on the Linux kerne ...
wheezy (RTAI kernel) and
Debian Debian () is a free and open-source software, free and open source Linux distribution, developed by the Debian Project, which was established by Ian Murdock in August 1993. Debian is one of the oldest operating systems based on the Linux kerne ...
stretch (RT-PREEMPT kernel). The policy for LinuxCNC is to build packages and offer support for
Debian Debian () is a free and open-source software, free and open source Linux distribution, developed by the Debian Project, which was established by Ian Murdock in August 1993. Debian is one of the oldest operating systems based on the Linux kerne ...
, but pre-built binary packages are also available for other Linux systems and architectures.


Design

LinuxCNC uses the model of 'sense, plan, act' in its interactions with hardware. For instance, it reads the current axis position, calculates a new target position/voltage, and then writes that to the hardware. There is no buffering of commands nor are externally initiated reads or writes allowed. This no-buffering approach gives the most freedom to adding or changing capabilities of LinuxCNC. By using relatively "dumb" external hardware and programming the capabilities in the host computer, LinuxCNC is not locked to any one piece of hardware. It also allows an interested user to easily change behaviour/capabilities/hardware. This model tends to lend itself to specific types of external interfaces---PCI, PCIE, Parallel port (in SPP or EPP mode), ISA, and Ethernet have been used for motor control. USB and RS232 serial are not good candidates; USB having bad realtime capabilities and RS232 being too slow for motor control. LinuxCNC has basic "realtime" requirements because of this model. The interval between reading and writing must be consistent and reasonably fast. A typical machine does realtime calculations in a 1 millisecond repeating thread. The reading and writing to hardware must be a small part of this time, e.g. 200 microseconds, otherwise the phase shift makes tuning more difficult and there is less time available for the non-realtime programs, which may make the screen controls less responsive. LinuxCNC "employs a trapezoidal velocity profile generator."


Configuration

LinuxCNC uses a software layer called HAL (Hardware Abstraction Layer). HAL allows a multitude of configurations to be built while being flexible: one can mix & match various hardware control boards, output control signals through the
parallel port In computing, a parallel port is a type of interface found on early computers ( personal and otherwise) for connecting peripherals. The name refers to the way the data is sent; parallel ports send multiple bits of data at once (paralle ...
or
serial port A serial port is a serial communication Interface (computing), interface through which information transfers in or out sequentially one bit at a time. This is in contrast to a parallel port, which communicates multiple bits simultaneously in Pa ...
- while driving
stepper A stepper or wafer stepper is a device used in the manufacture of integrated circuits (ICs). It is an essential part of the process of photolithography, which creates millions of microscopic circuit elements on the surface of silicon wafers o ...
or
servo motors A servomotor (or servo motor or simply servo) is a rotary or linear actuator that allows for precise control of angular or linear position, velocity, and acceleration in a mechanical system. It constitutes part of a servomechanism, and consist ...
,
solenoid upright=1.20, An illustration of a solenoid upright=1.20, Magnetic field created by a seven-loop solenoid (cross-sectional view) described using field lines A solenoid () is a type of electromagnet formed by a helix, helical coil of wire whos ...
s and other
actuator An actuator is a machine element, component of a machine that produces force, torque, or Displacement (geometry), displacement, when an electrical, Pneumatics, pneumatic or Hydraulic fluid, hydraulic input is supplied to it in a system (called an ...
s. LinuxCNC also includes a software
programmable logic controller A programmable logic controller (PLC) or programmable controller is an industrial computer that has been ruggedized and adapted for the control of manufacturing processes, such as assembly lines, machines, robotic devices, or any activity that ...
(PLC) which is usually used in extensive configurations (such as complex machining centres). The software PLC is based on the open source project Classicladder, and runs within the real-time environment.


See also

*
List of computer-aided manufacturing software This is a list of ''computer-aided manufacturing'' (CAM) software. See also *APT (programming language) *CNC machining *Computer-aided manufacturing *Comparison of computer-aided design software *G-code *List of 3D modeling software *List of ...


References

;Notes ;Bibliography *Proctor, F. M., and Michaloski, J., "Enhanced Machine Controller Architecture Overview," NIST Internal Report 5331, December 1993. Available online at https://web.archive.org/web/20201208080506/https://nvlpubs.nist.gov/nistpubs/Legacy/IR/nistir5331.pdf * *Lumia, "The Enhanced Machine Controller Architecture", 5th International Symposium on Robotics and Manufacturing, Maui, HI, August 14–18, 1994, https://www.nist.gov/customcf/get_pdf.cfm?pub_id=820483 *Fred Proctor et al., "Simulation and Implementation of an Open Architecture Controller", Simulation, and Control Technologies for Manufacturing, Volume 2596, Proceedings of the SPIE, October 1995, https://web.archive.org/web/20100527174141/http://www.isd.mel.nist.gov/documents/proctor/sim/sim.html *Fred Proctor, John Michaloski, Will Shackleford, and Sandor Szabo, "Validation of Standard Interfaces for Machine Control", Intelligent Automation and Soft Computing: Trends in Research, Development, and Applications, Volume 2, TSI Press, Albuquerque, NM, 1996, https://web.archive.org/web/20100527165142/http://www.isd.mel.nist.gov/documents/proctor/isram96/isram96.html *Shackleford and Proctor, "Use of open source distribution for a Machine tool Controller", Sensors and controls for intelligent manufacturing. Conference, Boston MA, 2001, vol. 4191, pp. 19–30, https://web.archive.org/web/20100820224129/http://www.isd.mel.nist.gov/documents/shackleford/4191_05.pdf or *Morar et al., "ON THE POSSIBILITY OF IMPROVING THE WIND GENERATORS", International Conference on Economic Engineering and Manufacturing Systems, Brasov, 25–26 October 2007, https://web.archive.org/web/20120313054238/http://www.recentonline.ro/021/Morar_L_01a.pdf *Zhang et al., "Development of EMC2 CNC Based on Qt", Manufacturing Technology & Machine Tool, 2008, http://en.cnki.com.cn/Article_en/CJFDTOTAL-ZJYC200802046.htm *Leto et al., "CAD/CAM INTEGRATION FOR NURBS PATH INTERPOLATION ON PC BASED REAL-TIME NUMERICAL CONTROL", 8th INTERNATIONAL CONFERENCE ON ADVANCED MANUFACTURING SYSTEMS AND TECHNOLOGY JUNE 12–13, 2008 UNIVERSITY OF UDINE - ITALY, https://web.archive.org/web/20110703113248/http://158.110.28.100/amst08/papers/art837759.pdf *Xu et al., "Mechanism and Application of HAL in the EMC2", Modern Manufacturing Technology and Equipment 2009–05, http://en.cnki.com.cn/Article_en/CJFDTOTAL-SDJI200905037.htm *Zivanovic et al.
"Methodology for Configuring Desktop 3-axis Parallel Kinematic Machine"
FME Transactions (2009) 37, 107–115, https://www.researchgate.net/publication/268357920_Methodology_for_Configuring_Desktop_3-axis_Parallel_Kinematic_Machine * *Staroveski et al.
"IMPLEMENTATION OF A LINUX-BASED CNC OPEN CONTROL SYSTEM"
12th INTERNATIONAL SCIENTIFIC CONFERENCE ON PRODUCTION ENGINEERING –CIM2009, Croatian Association of Production Engineering, Zagreb 2009, *Li et al., "Control system design and simulation of parallel kinematic machine based on EMC2", Machinery Design & Manufacture 2010–08, http://en.cnki.com.cn/Article_en/CJFDTOTAL-JSYZ201008074.htm * *Klancnik et al., "Computer-Based Workpiece Detection on CNC Milling Machine Tools Using Optical Camera and Neural Networks", Advances in Production Engineering & Management 5 (2010) 1, 59–68

*{{cite journal , last1 = Milutinovic , display-authors=etal , year = 2010 , title = Reconfigurable robotic machining system controlled and programmed in a machine tool manner , doi = 10.1007/s00170-010-2888-8 , journal = The International Journal of Advanced Manufacturing Technology , volume = 55 , issue = 9–12, page = 555 , s2cid=109149203


External links


LinuxCNC project wiki
also available as
PDFThe Enhanced Machine Controller
homepage at NIST
Machinekit
an open source project to port and extend EMC2/LinuxCNC to run efficiently on the
BeagleBone The BeagleBoard is a low-power open-source single-board computer produced by Texas Instruments in association with Digi-Key and Newark element14. The BeagleBoard was also designed with open source software development in mind, and as a way of de ...
and related hardware. Computer-aided engineering Free software programmed in C Numerical control