EMC2


What is EMC2?

EMC2 is an effort currently underway to simplify, organize, and extend the original EMC software in order to make it more developer friendly.

It got under way after the 2003 EMC meetings where the difficulty in understanding and modifying the original version of EMC was a major topic of discussion.

Documentation of concepts and code are being given much greater attention so that new developers can "come on-line" with much less effort. A developer oriented document has been started, but much more documenting needs to be done. The preliminary document can be found at EMC2_Code_Notes.pdf

It exists as a separate development branch in the SourceForge CVS repository.

This is a development in process and should not yet be used for production environments. Indeed it is likely to be "broken" much of the time as new features are introduced. As of early September 2004 the EMC2 code had reached the state where it was able to control a simple milling machine using stepper motors driven from the parallel port.

The RCSlib (Real-time Control System) was replaced with libNML (Neutral Messaging Language) which is a pruned version with just the functionality needed to support the NML communications needed by EMC. The new libNML is part of the EMC2 code tree so it is no longer necessary to compile or include the original RCSlib.

Other parts of the code have been pruned somewhat to remove abandoned, non-Linux, platforms (Windows-NT and Sun-OS) and code with licensing restrictions incompatible with the open source nature of the project.

The interface to the control hardware has been greatly reorganized and simplified by the introduction of a Hardware Abstraction Layer (HAL). HAL_Introduction.pdf is a document describing the HAL.

GPL license terms have been applied to the newly derived code.


How to try EMC2

EMC2 is currently in the "beta test" stage, and is only available by CVS checkout from Sourceforge. You need to have cvs installed on your computer, as well as a working realtime OS installed, either RT-Linux or RTAI.

There are two ways to get a CVS checkout. Unless you actually plan to debug EMC2 or contribute code, you should use anonymous checkout. Anonymous checkouts access a version of EMC2 that is a few hours old, but don't require you to be registered at Sourceforge.

The other alternative is a developer checkout. The advantage of a developer checkout is that you can get the latest version as soon as it is added to CVS, and you can also commit your own changes or bugfixes. However, to do an developer checkout you must be registered as an EMC developer at Sourceforge.

To do an anonymous checkout, type the following at a shell prompt:

cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/emc login
cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/emc co emc2

To do a developer checkoug, type the following at a shell prompt:

export CVS_RSH=ssh
cvs -z3 -d:ext:<username>@cvs.sourceforge.net:/cvsroot/emc co emc2

Once you have your checkout, you should be able to compile it using the "standard" Linux method:

cd emc2
./configure
make

The configure script attempts to locate all the dependencies, such as your realtime OS installation, libraries, and so on. If your system has things in non-standard places, configure may not find them. There are command line options for configure that allow you to tell it where to look. To see the list of command line options, type:

./configure --help

Additional information that may prove helpful is in docs/README and docs/INSTALL

Note that EMC2 currently does NOT have a "make install". Since it is still in beta test, we recommend that you do not install it on your system, simply run it from the directory in which you compiled it. To run EMC2, type:

scripts/emc.run configs/emc.ini

If you wish to change the configuration, make a copy of configs/emc.ini, edit it as needed, and specify it instead of the original emc.ini when you start EMC2.


For questions about EMC and integration with Linux, please see our mailing lists

For comments or questions about this web site, please see our contact info

[ Return to Home ]