Hello!

After careful reading all 7 pages of this thread I decided to add my opinion.
First of all I will start with and answer to the first post of this thread.
Why should original poster or any other interested person choose EMC instead of Mach?
1) because of "cost of total ownership".
I see 2 aspects here:

a) licence costs
As mentioned, Mach's license cost 175$. What was not mentioned - Windows also is not for free.
EMC is open-source and is released under GPL licence.
It runs on Ubuntu LTS releases with RTAI kernel. Both of them are free of charge.

b) realtime vs non-realtime
Basically it is question of reliability.
This question already was touched, but there is one thing that I would like to add.
It was argued that software step-generation is better done in Mach3, because it can reach higher frequency. It sounds nice in theory, but since there is no mechanism that would ensure that Mach's process is priority over other Window's processes it is very likely that different interrupts will occur (especially for fast moves, where each interrupt of control for 0.01s can lead to a high-speed move being done 0,01s longer than needed. Since plasma tables and other machines easily exceed velocity of 6000mm/min, which is 100mm/s = 1mm/0,01s; so 1mm errors are very easy to produce) thus threatening machine's performance and subsequently quality of the produced parts suffer.
What I am trying to say is that additional hardware that would take the realtime part of the control, generate step signals, close feedback loop etc is _mandatory_ for reliable operation of Mach.
This concept of delegating some of the realtime tasks to other hardware is not bad, it is used also for EMC and other controls.
The problem lies in the fact that Mach does not care about it - it is not working in realtime and thus by definition not meant to be able to work with any kind of a feedback from these devices thus limiting the overall performance - even with step/dir servo drives Mach will not be aware, if following error is exceeded (motor stalled) or any other problem. Some fault signal from drive can be routed to Mach, but the reaction can come way too late, because it is not realtime, there are buffers etc.
EMC works in realtime, it closes the PID loop and it is in full control of what is happening with the machine, thus providing much safer and efficient operation.

This requirement for additional hardware adds to operate machine in a safe and reliable way adds to the total cost of the implementation.
As pointed out previously, hardware for EMC to do step generation, count encoder pulses, can be acquired for less cost and provide considerably larger functionality.

2) visual look
Here are 2 screenshots:
Mach default GUI (my apologies, could not find any larger picture):
http://www.machsupport.com/images/mach_program.jpg

EMC2 default GUI:
http://www.linuxcnc.org/docs/html/axis_2.3.png

It is pretty much a question of personal preference.
What I think that all those contrasting colors and flashing lights in Mach GUI is it is always reminding me these "one- armed bandits":
Deal Or No Deal Fruit Machine review on Fruit Machines Info

Mach is far from looking professional. I am not saying that default EMC GUI (called Axis) is perfect, but they cannot be compared.
If "professional" is meant to be "like those really industrial controllers" the I think that "Touchy" GUI is getting closest to that - it is special GUI, intended for touch-screens, with large buttons and with switching to different tabs at the bottom of the screen. Some pictures are here:
http://wiki.linuxcnc.org/uploads/Scr...MC2-Touchy.png
EMC Documentation Wiki: GTK Themes

Axis with GladeVCP also looks good:
EMC Documentation Wiki: GladeVcpSetup

It was argued that Mach has ability to produce custom screens.
Welcome to EMC, it has PyVCP panels:
Python Virtual Control Panels (pyVCP)

Recently GladeVCP panels have been introduced, which look so much better:
GladeVCP

And creating these panels is not difficult, it just requires 30 min of reading before first attempts to understand, how to do it. At least for pyvcp, I have not yet played with gladevcp.

Actually here are more screenshots:
EMC Documentation Wiki: Screenshots
Note: "touchy" color scheme is depending on the overall desktop color scheme

3) user-friendliness
One of the posters mentioned that wizards, available in Mach, have made his life a lot easier, when setting the machine up.
Unfortunately it was not mentioned that together with EMC2 user installs:

- Stepconf wizard: supposed to be used to set up stepper machines, extremely useful, when software step-generation is used, because it allows for quick and easy configuration of LPT pins and assigning them to frequently-used functions. I used it, when I was setting up my first machine 2 years ago. I had ~30 min experience with Linux at that time, it required me less than 15 minutes to get motors moving;
- Pncconf: supposed to be used for more advanced configurations, when Mesa I/O cards are used as well as closed-loop servos are controlled;

I noticed some arguments about Linux being hard to learn. I would like to ask anyone, who wants to use this argument, how much time they have spent to get familiar with it? I guess that majority - less than few hours.
2 years ago I had _zero_ experience with Linux and, of course, I heard all those "Linux is a scary monster" views, so I was very reserved trying EMC.
Several days later I knew that Linux is to stay on my PC, several months later I knew that Windows is not to stay on my PC. Half a year later some problems emerged with parents' PC with Windows on it. I did not ask them anything, installed Ubuntu there and showed only 2 things - how to launch Mozilla and Openoffice. They are still using it, and I did the same with girlfriend's notebook. She also is still using it and has not asked to install Windows there.

I am not saying that Windows is evil and Linux is saint, I see problems with Linux as well, but that is not even close to what I do not like about Windows.
And I get it for free

4) configurability
It was argued that most 3 or 4 axes machines are simple enough that even such a simple application as Mach can satisfy all the hobbyist needs.

I think that there are few things that cannot be implemented in Mach (maybe it can be done in attached hardware for additional cost, but not in the program itself):

a) configurability:
In less than a year that I have spent in working with CNC machines, I already have had 2 cases, where I had to implement EMC, because owners had previously tried to use Mach, but had failed:

- plasma table with 2 separate THC sensors
Client wanted to use 2 independent height sensors for plasma. It was not possible in Mach, I did it pretty easy in EMC, once the required behavior was sorted out;

- 2-spindle CNC mill for wood. This machine has 2 totally independent spindles and the trick is that it needs to be able either move each spindle independently (one in XY plane, the other in UV or whatever plane) or synchronously (both follow XY coordinates). Mach is not able to distinguish joint from axis, so there is no way for it to home 4 joints separately and then move them according to only X and Y commands.
Not to mention ability to switch from one mode to another.

I suspect that many will try to argue that this is far from hobbyist level.
I think that it is very close, because it actually is what the gantry style machines are about - there are 2 joints that need to be assigned to one axis. Mach is not able to distinguish that thus homing each side of gantry to its own home switch (that is needed to square the gantry and thus ensure correct machine's geometry _every_ time it is used) is possible, but requires unreliable workarounds. EMC capable to do it out-of-the box (with gantrykins).

b) different kinds of treating incoming signals (only few examples are mentioned):
- proper wiring in the machine to avoid any noise in the incoming signals require experience and sometimes also additional cost to avoid such a noise;
EMC is running in real-time, so it can reliably and predictably filter incoming signals to ignore the noise:
DEBOUNCE
- EMC can easily be told to do something, when rising or falling edge of particular signal has been detected:
ONESHOT

AFAIK Mach might probably capable of something similar, but those definitely will not be important things, since it has no direct access to i/o pins in realtime.

c) kinematics
Mach is not able of doing any kinematics calculations.
Basic concept is described here:
Kinematics

- Even apart from robotic arms and other nice machines, which Mach has not seen even in its dreams, there are cases, where kinematics calculations are necessary. For example, I am now installing a machine with several tools: spindle for plywood routing, laser for plywood engraving and also a knife for fabric cutting. First two tools would not create a problem for Mach, but it definitely cannot handle the knife - the knife has to be rotated so that it _always_ is oriented in the direction of the movement. That requires calculation of tangent angle of the current XY move and assigning the calculated angle to a particular joint, which rotates the knife.

- I think that these videos perfectly describes, how a small EMC tweak can do things that are otherwise impossible - turn internal hexagon on a simple lathe:
[ame=http://www.youtube.com/watch?v=T4q8gCpeY1A]Hexagonal Boring - YouTube[/ame]
Eccentric turning:
[ame=http://www.youtube.com/watch?v=FpP7iTKuWpw]Eccentric / Non-circular turning using CNC - YouTube[/ame]

I built this welding robot:
[ame=http://www.youtube.com/watch?v=O2oaBtkpNpE]Welding robot with EMC2.wmv - YouTube[/ame]
I suspect that any other alternative CNC control system alone would cost as much as this entire arm (the MIG welder and base frame were provided by client).

All the industrial robots (ABB and Motoman (ex Yaskawa) I have seen have motor position commands in their code, so the code is totally unreadable by human.

The fact that EMC is doing kinematics calculations allows to feed "normal" g-code with X, Y, Z etc words to EMC. The g-code for the machine can be written by hand or it can be prepared with some kind of CAM package and verified/edited by operator, if necessary, which provides:
- safer operation: potentially dangerous mistakes in code can be spotted before the code is executed and something has happened - tool crashed in material etc
- time savings: minor mistakes (like one number in F word or S word) can be fixed a lot quicker by hand than the file edited in CAM, postprocessed, brought to CNC machine

d) industrial applications
EMC's versatility determines that it is far more suitable for industrial application than Mach - it can be used on a broader range of equipment thus allowing _all_ the machines in a workshop to use the same CNC controller, making operators' life easier - less things to learn, less things to mess up.

Even better - with rcslib all the machines in workshop can be operated in a centralised manner, allowing more precise billing of machine-time to client, easier maintenance and more efficient g-code management - machine operators are not the ones responsible for preparation of g-code for parts.

5) lock-in
It was mentioned in one of the posts: when serious money is involved, companies tend to buy industrial equipment, depreciate it in 4 years and then buy new one.
That determines that overhead cost is a very large part of the total production cost.
Few months ago I saw new Doosan turning center with a 180K EUR price tag.
If it is depreciated in 5 years, it means 180/ (5*12) = 3000 EUR/month.
Is there something wrong with the main structure of machine after 5 years of usage?
From what I have seen - no.
There might be issues with CNC controls and electronics. Maybe guideways are starting to wear out.
Mostly the machines are in good shape to continue to work. There are so many examples (at least in EMC community) that machines with age of 20 and more years are still in service.

That is why I am convinced that it is much more cost-effective to mechanically retrofit machines every 5-7 years, spend 10K-15K EUR on renovating worn-out parts and continue using them. 5 years of service for such machine will cost as much as half a year of new machine.

How do You think, why chinese can produce everything cheaper?
It is not only low labor cost, but it is also low cost of their equipment and very tight planning on procedures.

I see incredible potential for reductions in cost of equipment.
Unfortunately that ice is so thick that it would take years to break it and change the way industry thinks.
Michael Dell managed to do that in PC industry 30 years ago.

Here is one "beautiful" example from my experience. Actually, this is the reason, why I started doing these CNC things:
I purchased used CNC machine. Its CNC controls were DOS-based. It worked fine, but the procedure to generate file and to load it in the machine was annoying. It took me close to 5 minutes just to copy the file from PC to machine - had to restart from OS with CAM package (win xp) to OS, which could run DOS as virtual machine (win 200, because MS Virtual PC did not support DOS guest on xp host), then start up virtual DOS machine on PC, restart CNC machine to create telnet connection, transfer file.
And guess what happened, if I found some small mistake in file? I had to start everything all over again.
After few months of working with it my patience was over and I asked the manufacturer, how can I get something more up-to-date and how much would that cost.
Their answer was - we do not cooperate with the authors of that CNC control system any more, so cannot do anything.
I wrote to the authors of the CNC controls with a question to provide me with an upgrade options to something more up-to-date, but they did not bother to respond at all.

I suspect that there are many situations, where particular equipment is not used, because there is no support resolve an issue or the support is too expensive (for example, I know a situation, when HDD drive in Siemens CNC controller died. Operators wanted to change it, but it turned out that it was not IDE or SATA HDD, but some proprietary Siemens interface HDD; the price tag for the HDD change was 5000 EUR).

Mach is a closed-source application. Its authors can stop releasing bug fixes or new versions any time. And this can be caused by variety of reasons, for example, Artsoft is bought by some of their industrial competitors just to get rid of it.
Or licence price can increase or something else can happen and Mach users would have tied hands in such a situation.

On the other hand, EMC is opensource:
* any user can fix any bug (by themselves or with a help from other users or by paid programmers, if the issue is critical and with a financial impact);

* my clients are independent from me, they can switch to any other specialist (inhouse or outsourced) to maintain their machines, if I stop providing my services, if they think my pricing is too high or if they think that I have bad attitude or whatever reason.


These are my reasons, why should anyone use EMC instead of Mach.
Is there any reason, why should anyone use Mach instead of EMC? I have not seen one yet.


TomKerekes, here is some reading about the internals of EMC, hopefully it answers some of Your questions and You and maybe others will find it interesting to read:
EMC internals

Viesturs