The design of a position-based repetitive control for speed ripple reduction in PMLSMs