I did things a little different. I have fitted 2 micros at the end of each axis. 6 micros in all and 2 on the A axis. It all works well, even tested in anger when I inadvertantly 'zero'd the system and then started the G code.
I have Mach3, Lazycam Pro , Smooth Stepper, Gecko's 251 and Kelinc drives. I put the system together myself. I use 'home' switches on each axis on the control box and have 'idle' switched on each axis.
When I put the job on the bed, I bring the M3 crosshairs to a 'home position on the drawing, engage the 'idle' and manually align the tool to the drawing and set the 'zero' in M3. Then, remove the idle signal and the drives are ready to go and are in 'sync' with the Me graphic. If it all goes to porrage, the ultimate liit switches protect it all.. which has happened. IF, and IF the computer locks up mid job and needs re-boot, go into the Motor Config and check that the 'direction' settings are not back to the default settings. This has happened and voila...motors go the wrong way realitive to the graphic/expected direction.
My reasoning is that if I have the hard limits set and things are within the limits of the bed/travel, then 'soft limits' are an unnecessary evil/variable I don't need more hassles.
I am a happy man with my system--- now.....