2.8/2.9 PID seems broken?

More
6 years 10 months ago #152659 by 3D-Master
Hello,

i have updated from 2.7.14 to 2.8/2.9 but then my servo generated a huge following error. I control it using PWM and DIR signals and have a encoder directly wired to my 7i52s.

these were my PID parameters in 2.7.14 which were not perfect but okay:

P = 7.5
I = 12.5
D = 0.2325
FF0 = 0
FF1 = 0.25
FF2 = 0

i had approx 0.01-0.02mm following error but when i updated to 2.8/2.9 the following error increased to at least a millimeter (maximum following error for feed moves, not rapid)

i can change ff1 to 1 as well as 1000 but nothing changes so i think there is something broken. The automatically changed ini and hal files dont seem to have a mistake.

Is this ini entry correct?
Code:
#******************** # Axis Z #******************** [AXIS_Z] MIN_LIMIT = -200.0 MAX_LIMIT = 200 MAX_VELOCITY = 166.666667 MAX_ACCELERATION = 1000.0 [JOINT_2] TYPE = LINEAR HOME = 0.0 FERROR = 4.0 MIN_FERROR = 1 MAX_VELOCITY = 166.666667 MAX_ACCELERATION = 1000.0 P = 15 I = 15 D = 0.02 FF0 = 0 FF1 = 0 FF2 = 0 BIAS = 0 DEADBAND = 0.0025 MAX_OUTPUT = 0 ENCODER_SCALE = 512 OUTPUT_SCALE = 10 MIN_LIMIT = -200.0 MAX_LIMIT = 200 HOME_OFFSET = 0.0 HOME_SEARCH_VEL = 0 HOME_LATCH_VEL = 5 HOME_USE_INDEX = YES HOME_SEQUENCE = 0


if i delete "MAX_VELOCITY = 166.666667" and "MAX_ACCELERATION = 1000.0" from joint then the homing is way slower and the axis can have a following error greater than MIN_FERROR but linuxcnc wont go into estop.

Please Log in to join the conversation.

More
6 years 10 months ago #152660 by PCW
Replied by PCW on topic 2.8/2.9 PID seems broken?
2.8+ and 2.9 have a bug fix in the PID component.
Previous versions always calculated the FF1 term from
and internal derivative even if the command derivative pin
was connected. The version in 2.8+ and 2.9 does use the
externally supplied command derivative. For whatever
reason, the joint velocity does not match the old calculated
command derivative (I suspect 1 servo thread time difference)

If you want the old behaviour, disconnect the PIDs command derivative
pins and FF1 will be calculated the same way as 2.6..2.8+

Please Log in to join the conversation.

More
6 years 9 months ago #155103 by 3D-Master
Replied by 3D-Master on topic 2.8/2.9 PID seems broken?
But why is it, that when i change FF1 nothing happens?

Please Log in to join the conversation.

More
6 years 9 months ago #155104 by PCW
Replied by PCW on topic 2.8/2.9 PID seems broken?
Did you comment out any statement like:
net x-vel-cmd => pid.x.command-deriv

Notice if you just dont connect net x-vel-cmd to
encoder velocity but leave the pid.x.command-deriv
connected to a signal (as shown above)
you will have a fixed 0 FF1

Please Log in to join the conversation.

More
6 years 9 months ago #155169 by papagno-source
I use 2.9 and have this situation :

loadrt hostmot2
loadrt [HOSTMOT2](DRIVER) config=[HOSTMOT2](CONFIG)
setp hm2_5i20.0.pwmgen.pdm_frequency 6000000

setp hm2_5i20.0.encoder.04.counter-mode 0
setp hm2_5i20.0.encoder.04.filter 1
setp hm2_5i20.0.encoder.04.index-invert 0
setp hm2_5i20.0.encoder.04.index-mask 0
setp hm2_5i20.0.encoder.04.index-mask-invert 0

setp hm2_5i20.0.encoder.04.scale [JOINT_4]INPUT_SCALE
net motor.04.pos-fb hm2_5i20.0.encoder.04.position pid.4.feedback mux2.9.in0
net motor.04.pos-fbout mux2.9.out joint.4.motor-pos-fb
net Bindex-enable hm2_5i20.0.encoder.04.index-enable joint.4.index-enable pid.4.index-enable
net encodervelocityb pid.4.feedback-deriv hm2_5i20.0.encoder.04.velocity


setp hm2_5i20.0.pwmgen.04.output-type 3
setp hm2_5i20.0.pwmgen.04.scale [JOINT_4]OUTPUT_SCALE

net emcmot.04.pos-cmd joint.4.motor-pos-cmd pid.4.command

i add command derive for 2.9 ?
this is correct for 2.9 : net encodervelocityb pid.4.feedback-deriv hm2_5i20.0.encoder.04.velocity ?

Please Log in to join the conversation.

More
6 years 9 months ago #155177 by PCW
Replied by PCW on topic 2.8/2.9 PID seems broken?
Yes fb-deriv is OK

dont connect the pid command-deriv pin

Please Log in to join the conversation.

More
6 years 9 months ago #155195 by papagno-source
Hi.

When use fb-deriv , not use command-deriv in 2.9 ?
Because ?

But in 2.9 i write : setp pid.x.error-previous-target true or not important ?

Please Log in to join the conversation.

More
6 years 9 months ago #155202 by PCW
Replied by PCW on topic 2.8/2.9 PID seems broken?
Some background:

The PID component has a little magic it uses for both feedback and commanded
derivative terms (D*fb-deriv and FF1*cmd-deriv) If these PID component pins are not
connected (not linked to a signal) the PID component calculates these derivatives internally.

You should always use the PIDs fb-deriv pin if you need D term in your PID tuning.
The reason to use it is that the encoders velocity estimation is better than just dfb/dt
which is used by the PID component if the fb-deriv pin is not connected.

The PID component had a long standing bug where it ignored the command-deriv pin.
This was fixed sometime ago in the 2.8 branch, allowing the PIDs command-deriv
pin to be connected to the trajectory planners velocity pin but unfortunately the way
the PID calculates the derivative and the trajectory planners velocity pin are not the
same ( there's a 1 servo cycle delay between them ) Because of this, if you wish to
retain the previous behaviour and tuning, its best to leave the PIDs command-deriv
pin unconnected (not connect to any signal)

You should in general always setp pid.x.error-previous-target true
regardless of version

Please Log in to join the conversation.

More
6 years 9 months ago #155791 by papagno-source
Hi.
I don't use D part for PID, but only P and FF1 part .
I use servo motor in closed loop on encoder with analog +/- 10volt command on M5i20

In this case for actual 2.9 master i use only Fb-deriv(D part not used ) or only Commnad-deriv(FF1 part) or both.

Thanks for reply

Please Log in to join the conversation.

More
6 years 9 months ago #155804 by bbsr_5a
Replied by bbsr_5a on topic 2.8/2.9 PID seems broken?
is there a BASE Setup for a PID driving a Stepper to Comen Drivers M542/Tb6600 Famile Drivers Step DIR

im on the way to get rid of a ATCRACK using axis Comands transfering to PID Carousell at position Commandings
and lost in all this values

Please Log in to join the conversation.

Time to create page: 0.107 seconds
Powered by Kunena Forum