There have already been some clues in this thread.I have no idea why it is happening.
Apart from the industrial systems that use a PID tuned loop, I have typically used PC based motion cards, e.g. Galil Motion, typically you would use a DC or BLDC motor and a transconductance servo drive, the motor encoder returns to the Motion card and the PID loop is then tuned for optimum performance in order to produce zero movement when stationary, these cards have a feedback loop frequency of 12Mhz.!How do they prevent a small error signal when stationary from causing movement?
That says nothing to me about how they avoid moving when there is a small error signal and the integrator gain is enough to cause movement. How do they solve that particular problem.Apart from the industrial systems that use a PID tuned loop, I have typically used PC based motion cards, e.g. Galil Motion, typically you would use a DC or BLDC motor and a transconductance servo drive, the motor encoder returns to the Motion card and the PID loop is then tuned for optimum performance in order to produce zero movement when stationary, these cards have a feedback loop frequency of 12Mhz.!
By properly tuning the PID.That says nothing to me about how they avoid moving when there is a small error signal and the integrator gain is enough to cause movement. How do they solve that particular problem.
Then what HAS been on your list of priorities?BTW - optimizing the system to be stationary in the idle state has never appeared on my list of priorities in a career spanning half a century. I'm just sayin'.
Dynamic properties mostly, things that would be important in controlling a disc head, like seeking a new track, and track following once you get there. We don't know if the TS has actually done anything to tune his loop. He is asking what is making the output hunt for a stationary position and we've tried to give his some clues. As yet he has not given any further information, or reported the results of any investigations.By properly tuning the PID.
Then what HAS been on your list of priorities?
Your posts in this thread read like you're trying to make a point in a sly way. Out with it, you're being too sly. I have no idea what you're on about, and if I don't, then guaranteed there's no way TS "gets it."
A properly tuned PID loop absolutely can, and almost always should, have near-zero error at steady state, whether that steady state is 0 speed, max speed, or anywhere in between.
You got me right!@abuhafss exactly what servo motor and drive are you using? Have you done any loop tuning at all? Or did you just take the components out of the boxes, wire them up, and expect them to work?
In case you don't know, the "out of the box" PID parameters in a servo drive are either all set to 0, or generic non-zero values that are just meant as a starting point to begin tuning. The expectation is that you will tune the drive to your application. The tuning needs to match the inertia of your load. Most drives (all good drives) have companion PC software used to control the drive through a guided startup procedure where electrical properties of the motor are measured, rotor inertia and the inertia of the load is measured, and PID parameters are generated. You can further tune the generated PID parameters to dial in your system for "perfect" control. If you have not done any of that, then that is your problem.
Going thru the manual of the drive, I came across these remarks:Just as an aside,
what you are seeing is "hunting"
a servo system of any kind relies upon the error signal to inform it what to do ( go left right etc )
when you are close / at the right point, then the error signal is very very small, basclay noise,
as such the servo is hunting left and right , to find an optimum.
The answer is to make the error signal go to zero below a certain size,
PID is a great way to do this,
you take the position, the speed of change and the speed of change of the speed change
( position integral and differential )
but other ways are available, such as a simple "comparator" especially if your using a processor to control.
I suggest that this means if the drive hits an over travel switch, the encoder value may not be dependable, coming off the switch. Clearing it coming of the switch could get you back to the home decel zone.Going thru the manual of the drive, I came across these remarks:
"There might be position deviation pulse residual at overtravel in position
control. To clear the residual, use CLR signal."
As per your explanation, could the "hunting" be because of the residual pulse?
If yes, I can simply use the CLR signal after each rotation of the motor.
View attachment 242887
My interpretation, which I believe is just a different way of saying what @GetDeviceInfo said, is that in the case where the axis hits an overtravel switch and the enable signal is removed, but the drive continues to receive step/dir pulses commanding it to continue further beyond the overtravel switch (to which it cannot comply), these pulses will accumulate, and position error will therefore accumulate, and this CLR input is meant to clear that error once (or prior to) the axis being commanded to move in the opposite direction, coming off the limit switch.It is mentioned clearly that the CLR will clear the residual pulse.
|Thread starter||Similar threads||Forum||Replies||Date|
|Career Advice for Embedded Programmers [SOLVED]||Jobs & Career Advising||13|
|global or local variables in project organization [SOLVED]||Programming & Languages||17|
|[SOLVED] Help with ATTINY85 and 0.96" OLED display.||Microcontrollers||10|
|How did you learn assembly [solved]||Programming & Languages||32|
by Ikimi .O
by Jake Hertz