Getting the Beckhoff EL7041 to Settle
One issue I ran into while commissioning the Beckhoff EL7041 stepper module was that oscillation was occurring during settling, even though there was no encoder attached. Now I chose stepper motors specifically because the stages that the motors are connected to are holding very high magnification cameras. When the motors are stopped I need them to be stable and not move at all. The problem that is happening with the EL7041 is that the controller is following an internal counter of the stepper drive and attempting to control it like a servo. It’s treating the stepper like a servo drive and correcting even though there is no encoder attached.
To get rid of this problem, I did the following
By doing so you can allow the controller to set a deadband. Basically a tolerance that if the controller gets within a certain tolerance of it’s final position, it stops trying to get to the exact position.
Set the “Position Control: Dead Band Position Deviation” to a small number. This is the tolerance that the motor will stop trying to correct if it reaches it. I have 0.0002mm and could probably go smaller than that. Also I enable the “Disable I-Part during active positioning”. This keeps the controller from attempting to correct excessively during accel and decel of the stepper.
Now all of this would have been different if I used steppers with encoders. In that case I would have just treated the steppers as servos and tuned appropriately. There may be a better way to do this in the future, generally there should be no need for any sort of tuning for a stepper, but if you happened to have bought these and have this issue, then you know what to do! As an added bonus, even if you can handle the oscillation, the motors will get warm because they’ll be constantly moving. With this little hack you can keep the motors cooler and running longer.