1
\$\begingroup\$

I believe that the most common type of servo drives are based on STEP/Direction input which is inherited from the Stepper motor controllers.

My question is how does the type of controller work internally ?

My Logic says : the step input is connected to a "timer" in counter mode inside the micro controller and based on direction input the up/down counting is chosen automatically . this number is then subtracted from a Encoder pulse counter and the difference is fed into a PID loop .. is this correct ??

if this is correct, does its performance differ from a servo drive that uses serial interface to get the required position directly ? the main concern is motion planning because in such drive you are not feeding the steps slowly at start and stop to control the acceleration and deceleration ?

\$\endgroup\$
  • \$\begingroup\$ I would not say they are the most common. There are a lot, and most current servo controllers also support step and direction as input (as well as Clock/Counter-clock pulses and quadrature), but I suspect that both the traditional analog +/-10v and the modern protocol based (sercos, modbus, can) outnumber the step/direction controllers (for reasons that Marco mentioned). \$\endgroup\$ – Mark Jul 27 '16 at 0:25
1
\$\begingroup\$

The right answer would be very comprehensive, so I will try to answer the basics.

You are right about using counters to determine position setpoint.

does its performance differ from a servo drive that uses serial interface to get the required position directly ?

Yes, because digital data is being sent cyclicaly at detrministic time, while Step/Dir would require a FPGA/ASIC to calculate speed setpoint from frequency/period measurment of pulses, making the setpoint information non-deterministic which indeed is not a good thing for forwarding to the PID loop. There is a first order lag filter to bring the velocity setpoint more smooth.
Further, digital data can have both velocity and position setpoint, no need to derivate from pulses frequency.

the main concern is motion planning because in such drive you are not feeding the steps slowly at start and stop to control the acceleration and deceleration ?

This is incorrect. The setpoint has to have the implementation of motion profile, where acc/decc speed has taken into account. Things are not to be driven with a burst of pulses, rather a controled way of sending pulses with specific motion profile.

There are different drives/approaches:
1. Single axis, non synchronized: You can have a motion profile generator built in the drive, then you just send position setpoint, the drive does the rest with parameters jerk, acc, dec, speed.
2. Mutiaxis, sychronized move: The drive works like a velocity controller, the motion planning and position regulation loop is calculated in a host system. The digital data are: speed,...

EDIT:

Single Axis (built-in motion profile generator). Usually you send over serial comm. Target position and control bits:
- Servo on, Enable: applies power to the motor and disengages the brake (if equiped)
- /Stop: the drive coast to standstill with determined ramp, used for stopping the machine in a frindly way
- /StopE: the drive coasts to standstill with very high deceleration, to be used for emergency stop
- PosEnable - set this bit to enable positioning move, drive moves to target position

Then you have some status bits, for your app, maybe a bit that indicates position done is important. When drive reaches the target position it sets this bit, but due to the communication lag you never exactly know if this bit refers to the actual or to the previous movement. You should do some tricks to evaluate this bit according to actual position and target position and make a your own piece of code that will look this bit when the drive is in the tolerance window. Or another good way is to loopback the target position from the drive to the host, this is possible if you can set up a user defined communication telegram.

Drives I was working with (Siemens, Lenze, SEW, Indramat) allow the change of target position while positioning is active, new profile is calculated from actual position, speed,...I think this is a basic function of all drives with built-in profile generator.

| improve this answer | |
\$\endgroup\$
  • \$\begingroup\$ Great answer , could you elaborate more on "Single Axis non synchronized" , so if you send a position (point to point movement), the controller will determine the motion profile and how much time is need to reach the target position , then divide into points where at each point the velocity and acceleration (or torque) is fed into the corresponding loop right ?? if no please explain , if yes what if during this motion another command is received (similar to tracking mode , offcourse a new motion profile has to be calculated , but does this corrupt the motion and cause sudden jerks? \$\endgroup\$ – ElectronS Jul 27 '16 at 7:42
  • \$\begingroup\$ @ElectronS I have edited my answer. \$\endgroup\$ – Marko Buršič Jul 27 '16 at 9:32
  • \$\begingroup\$ thank u , i will also check the companies you named (seimens , lenze ...) datasheets and user manuals for more details . i am getting the picture more clearly now , regards :) \$\endgroup\$ – ElectronS Jul 27 '16 at 12:11

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.