Hi,
I use servos on my new mill.
Each servo has an alarm output which is hooked to the BoB/ESS combination. I have allowed for six axes (X,Y,Z,A,B,C) and thus have six inputs to the ESS,
one for each axis. Any one or more of those inputs will cause the machine to Estop, using the API provided for the purpose. Note that each alarm input has
an entry in the SigLib table that invokes the mcCntlEStop() API.
LUA Syntax:
rc = mc.mcCntlEStop(
number mInst)
Description:
Disables the control and optionally dereferences all axes.
All my servos have an ENABLE input and a RESET input. In order for a servo to run it must be enabled. Note also that the ESS has output signals of the type Motor0Enable,
Motor1Enable, Motor3Enable etc. When Mach is enabled then all these outputs are active, and when or if Mach is Estopped then all those signals go inactive.
I use only one signal, Motor0Enable, and use it to drive all six servos. The ESS output switches a signal level MOSFET on the BoB and pulls the ENABLE output low.
The servos are programmed that an active low input turns the servo on.
Just as a matter of interest I have an electromagnetic brake on the Z axis and it too is driven from the same ESS output. The ESS Motor0Enable also switches a medium
current Darlington transistor on the BoB to apply 24VDC to the electromagnetic brake. It requires approx 250mA to release the brake.
My servos require an active RESET should they fault out. For this purpose I use a general purpose ESS output and that drives a circuit commoned to all the six servos RESET input.
I have a button on screen that I press should any one or more of the servos require a reset....it hardly ever happens, but its handy. Otherwise I would have to de-power the machine to
allow a power-cycle to reset the servo drives, a PITA.
Craig