Jump to content
OMRON Forums

PID servo I-variables for internal-loop stepper motor


Recommended Posts



I am controlling a stepper motor in internal-loop mode (i.e., without an encoder). What should the PID servo setup I-variables be set to (i.e., Ixx30-Ixx35 and Ixx68)? Should they all just be set to 0, except for Ixx34 (PID Integration Mode) which perhaps should be set to 1? Should they be left at their factory default values? Or something else?


I'm interested in an answer in general, but if it helps to clarify my question, my specific case involves a motor controlled through a MACRO node, so this motor has MI910 (Encoder/Timer n Decode Control) set to 8 (Internal pulse and direction). The 16-Axis MACRO CPU SRM says, "If MI910 is set to 8, the decoder inputs the pulse and direction signal generated by Channel n’s pulse frequency modulator (PFM) output circuitry. This permits the 16-Axis MACRO Station to create a phantom closed loop when driving an open-loop stepper system."


I'm asking because it doesn't make any sense to me to tune a PID controller when it has no way to read the actual position, hence no way to compute an error value between the commanded and actual position. And if it just uses the commanded position as the actual position, the error value will always be 0, so then it seems to me that no correction would ever be needed.


Thank you!

Link to comment
Share on other sites

  • Replies 2
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Please see Chapter 5 of the Turbo PMAC User's Manual -- the section "Setting Up Turbo PMAC2 for Pulse-and-Direction Control" for explicit instructions on this.


As to the principle, the encoder counter that accumulates the pulses acts as a simulated position feedback value. Using hardware for this means we can count the pulses much faster than software could. The PID loop, comparing this accumulated count as "feedback" position to the commanded position value, will ensure corrections to make sure that exactly the right number of pulses are generated.


It's a dynamically simple loop acting on the simulated feedback, with only one stage of integration (the PID output command of a pulse frequency is effectively a velocity command), and no friction, backlash, or other effects that make tuning real feedback loops difficult.

Link to comment
Share on other sites

  • 1 month later...
This topic is now closed to further replies.

  • Create New...