by cncdrive » Sat Nov 25, 2017 3:16 pm
Position loss is not something a servo drive see or understand.
In a servo loop with a step/dir interface the position is the summary of the step/dir signals counter sum minus the encoder counter sum.
Commanded position = step/dir counter sum.
Servo error = step/dir counter sum - encoder counter sum.
Position loss is when there is an error in counting the step/dir signals or the encoder signals, so the position will be incorrect and this will be a remaining position error, because the drive failed to count some step/dir or some encoder signals which can be only if the signals were missing or broken.
Another type of position error is the servo error which is a temporary error. The servo error always exists, it may be 0 or around 0 most of the time, but since the control is based on the servo error, there is no servo control without servo error.
The error is temporary means that the drive knows the proper position, it knows to which position it has to move the axis to, but it is unable to do so. This error can be seen in the Servoconfigurator as the servo error value. There can be several reasons for this type of temporary position error, it can be bad PID tuning with for example too low gain and/or integral term, so the drive will be unable to move back to the proper position with the actual load on the shaft. The sympton is mostly that as the load lowers (e.g. the weight on the table lowers) the drive can move the axis closer to the setpoint and hence the servo error lowers or even dissapears at some point.
The P and I parameters and the Li parameter plays the most rule in this type of problem, because the I integral term highers the output power to the motor with time if there is a servo error, but if I is too low can settle the plant slowly and if Li integral limit is too low then the output caused by the integral term can be limited to a too low value which value may be not enough to move the motor with enough power back to the setpoint position.
And the P proportional term plays a rule, because as the servo error grows the higher output the P term is creating, but if the P value is low then even a high servo error will still create a low output hence a high servo position error will be required to create a high enough torque by the motor. It is also a possible reason that the problem is not the tuning, but that the motor is not powerful enough.
And so what you describing that the position error depends on the weight of the axis does not sounds like to be a position loss (unless the position error is remaining even after you remove the load from the motor), but it sound like it is a temporary position error instead which is not the same as if the drive looses the position. The drive in this case still knowns the proper position, it just can't move the axis there due to too light tuning or the motor is not powerful enough.
And one more thing which can be the problem is that servo motors speed and the supply voltage is proportional which means that the higher the voltage the motor gets the faster it will run.
So, it is also possible that the voltage is not enough to run the motor that fast.
Also please note that that in the very upper speed range of the motor the PID loop may not have enough PWM range left. This means that the loop is tuned soft to act smooth on low speeds, but this causing the loop to be too soft on the upper speed range where there is no more room for the PWM, the drive cannot send higher PWM value, because it is already on and around the maximum, so there will be a higher position error than on the lower speed ranges. This mostly happens when the loop is tuned soft and above around 70% of the max speed of the motor. The solution can be to tune the loop harder, however the limit will be where the loop will become too hard (under-damped) on the low speed ranges and will start oscillation. So, there is a tradeoff...
And also the position error will grow anyways on the very upper speed region, even if the PID loop is tuned hard, there will be a small margin where the loop can't act that well anymore, because there is no PWM and no speed buffer remaining, because the speed is close to the upper boundary. If this is the problem then only using higher voltage could help, however servo motors are not like steppers, you can't higher the voltage to any high value upto what the drive accepts, because it could even fry the motor, because with too high voltage the current can build up in the coil too fast creating high peaks and excessive heating. Usually it is not adviced to use much higher voltage for servos than what the motor manufacturer rated the motor coil, so the save limit is around that plus max. a few tens of percentage.