LinuxCNCKnowledgeBase | RecentChanges | PageIndex | Preferences | LinuxCNC.org

This is a rough draft of a handout for the 2009 NAMES EMC2 booth. Don't worry about formatting, but do feel free to note factual errors, misstatements, offer clarifications, or suggest things that could be omitted--it would be great to get this down to a double-sided 8.5 x 11 page.


The Enhanced Machine Controller project


What is EMC?

EMC is a powerful and free software system for controlling machine tools such as milling machines, lathes, laser cutters, robots, hexapods, etc.

CAD/CAM Software -(“G-code”)-> EMC2 -> motor controllers -> motors (on a CNC machine)

(Above should be a nice little graphic.)

EMC accepts programs in G-code (see below) and generates control signals to motor controllers to precisely control machine tools—and runs on even low-end PCs.

What is “G-code”? Where does it come from?

G-code (the RS-274 machine tool programming language) is a language for describing how to move machine tools. For example, the command "G1 X1.000 Y1.000" would cause a milling machine to move the cutter from its current position to the location X=1.000", Y=1.000".

G-code includes commands for spindle speed, feed rate, circular and helical movements, plus other features to make using multiple tools and other tasks efficient.

Many CAD/CAM programs can produce the exact flavor of G-code that EMC uses, in which case you don't need to write any G-code. Other times you might want the fine control that writing your own G-code gives you. EMC2 implements most standard G-code words, with some nice extensions to make writing your own code easier.

How do I install EMC?

EMC runs on a desktop PC running the free Linux operating system. But don't worry—the Live CD (download from www.LinuxCNC.org) makes installing Linux and EMC easy on many desktop computers, and you can try it out without making any changes to your computer. (Since Linux replaces Windows, you may want a separate computer for your CNC controller if you still want to use Windows.)

Why Linux?

Because EMC needs to generate very precise control signals to the motor controller, it needs to run on an operating system that allows so-called “real time” operation. Windows does not normally support real time operation (though some people have found work-arounds), but EMC uses a special version of Linux that can run real time tasks. Both Linux and EMC are open source: free to use and share, robust, supported by a great community. You don't need to be a Linux expert—the software uses menus and windows just like Mac or Windows.

Where do I get EMC software?

Go to www.LinuxCNC.org. The Live-CD option is the easiest for beginners—it includes a supported version of Linux (the version is called Ubuntu) and you can try it out before actually installing it on your hard disk. The website describes other installation options for the more advanced user.

What if I have questions or problems?

At www.LinuxCNC.org you'll find lots of documentation on installing and using EMC. Plus, you'll find links to email lists where you can ask questions. There is even an IRC channel if you are into that.

What computers work with EMC?

The more modern versions of EMC are best installed on Pentium-II class (or better) machines running 500 MHz or faster and having 256 MBytes or more RAM. Older versions can run on Pentium-I machines at 100 MHz with 128 MBytes of RAM.

However, some PCs have hardware (such as on-board video) that interferes with the realtime aspects of EMC. This can limit the maximum number of steps a second that the computer can generate—which in turn limits the maximum speed at which the CNC machine can be made to move. You can find more details on supported hardware at the www.LinuxCNC.org website. Be aware that because laptops typically integrate video and other peripherals, they are rarely good candidates for EMC. However, even cheap, older desktops often work very well.

What size of machines will EMC control? What motor controllers work with EMC?

EMC can generate signals to control stepper motors and, with the appropriate interface, servo motors. With properly sized drivers, EMC can control arbitrarily large machines. Many companies are finding it is very economical to replace old controllers on their large CNC machines with EMC-based controllers.

What input/output ports do I need?

The easiest interface is to use a parallel port, which can be used for both outputs (motion control, spindle speed, coolant, etc.) and input (limit switches, pendents, spindle encoders, etc.). EMC also supports some PCI cards. For technical reasons, USB and ethernet interfaces are not currently supported.

Why is EMC free?

EMC was created by NIST, the National Institute of Standards and Technology, which is an agency of the Commerce Department of the United States government. It has since become an open source project, much like Linux, Firefox, and OpenOffice?.org. There is a board of directors and a very active user and developer community constantly improving EMC. Because EMC is open source, many talented people have contributed their time and expertise to making EMC a robust, capable, and sophisticated software system. At the same time, a lot of effort has been made to make it as easy to install and use as possible. Many thousands of users world wide use EMC.

What are some cool EMC features?

LinuxCNCKnowledgeBase | RecentChanges | PageIndex | Preferences | LinuxCNC.org
This page is read-only. Follow the BasicSteps to edit pages. | View other revisions
Last edited March 30, 2009 5:33 pm by Dgrover (diff)
Published under a Creative Commons License