[Home]About LinuxCNC

LinuxCNCKnowledgeBase | RecentChanges | PageIndex | Preferences | LinuxCNC.org

This historical page describes the 1.0 and earlier versions of emc. The current version, LinuxCNC, has enhanced capabilities.

About EMC1

EMC (the Enhanced Machine Control) is a software system for computer control of machine tools such as milling machines.

EMC is free software with open source code. We are making the transition to the GPL license. This accomplished with the new LinuxCNC development. LinuxCNC is an effort currently underway to simplify, organize, and extend the original EMC software in order to make it more developer friendly.

It provides a user interface, an interpreter for "G-code" (the RS-274 machine tool programming language), and operates the actual electronic interfaces that control the motor drives on the machine tool.

It provides the "computer" functions needed to actually run the machine's electronics. It does not provide drawing (CAD - Computer Aided Design) or G-code generation from the drawing (CAM - Computer Automated Manufacturing) functions.

It can control up to 6 axes and supports a variety of interfaces.

The motion control can operate true servos (usually analog) with the feedback loop closed by the LinuxCNC software at the computer, or open loop with "step-servos" or stepper motors.

Motion planning includes cutter radius compensation, tool length offsets, and constant velocity control.

Support for non-Cartesian motion systems is provided via kinematics. This includes hexapods (Stewart platforms and similar concepts) and systems with rotary joints to provide motion.

LinuxCNC runs on Linux using real time extensions. Support currently exists for version 2.2, 2.4, and 2.6 (LinuxCNC only) Linux kernels with real time extensions applied by RT-Linux or RTAI patches.

Because LinuxCNC needs real time extensions it cannot be easily installed on any existing Linux distribution. The real time extensions make changes to the kernel code and do this with the normal RPM or APT get type of tools requires immense effort to support the endless possible distribution/LinuxCNC? combinations. Because of this there have, to date, been no attempts to provide this type of install tool. If you do not have experience compiling the kernel, you are strongly urged to consider installing a distribution that already has the real time extensions included. Several such distributions have been created for use with LinuxCNC. They are called BDI (short for brain dead install) distributions.

The simplest way to get LinuxCNC running is to dedicate a computer to LinuxCNC and install one of the BDI (Brain Dead Install) systems. The BDI comes on a CD rom (or a downloaded image of one) and installs a complete Linux operating system with the correct patches and LinuxCNC code pre-configured. There is even a BDI-Live version that runs directly from the CD without installing anything on the computer. It requires plenty of memory and is a bit slow due to the speed of a CD drive, but it does not modify anything on the hard disk of the computer.

Modification of the LinuxCNC software to use other platforms (BSD, etc.) is possible, but requires significant knowledge and effort.

Limitations of LinuxCNC

Why won't LinuxCNC run on Windows?

  1. LinuxCNC runs in real-time, to give smooth motion. This is critical to accuracy and machine life. Hard real-time is not available on Windows in a price range many can afford... especially those interested in using a PC-based control.
  2. LinuxCNC is intended to control machine tools. Machine tools are DANGEROUS and reliability/consistent behavior is extremely important. Compared to Windows, few viruses affect Linux. Even without consideration of viruses, Linux is far more stable.

EMC and lathes

EMC1 does not support lathe threading (i.e. master-slave axis sync), and never will; if you do not need threading, EMC1 can be used to control a lathe.

Threading and many other lathe features now work in LinuxCNC.

LinuxCNCKnowledgeBase | RecentChanges | PageIndex | Preferences | LinuxCNC.org
This page is read-only. Follow the BasicSteps to edit pages. | View other revisions
Last edited January 19, 2012 6:54 pm by Clytle374 (diff)
Published under a Creative Commons License