Spindle orient PID tuning [re-solved, yay]

More
4 years 4 months ago #244970 by spumco
PCW - thanks for giving this some thought.

I'm happy to trial a different config, but I'm at a loss regarding "add orient velocity and acceleration constraints"

I posted a non-lincurve setup earlier in this thread that was kind-of working(ish).  Do you have an example of a 'standard' orient config with some suggested values?

Pretty much need my hand held through this one.
 

Please Log in to join the conversation.

More
4 years 4 months ago #244971 by PCW
I think the main issue using a PID to control a VFD for position control
is that the VFD is quite slow to react so feedback control is difficult,

Control should be improved with feed-forward (specifically FF1 =1 since the VFD
should have a linear and predictable speed vs command relation)
but effective feed-forward requires a actual motion profile not just a step in position

A limit2 component after the orient component would constrain the velocity and acceleration. but would likely need to be bypassed when not doing the final orient move (The limit 2 component would do the move from the random
start position to the orient position)

Please Log in to join the conversation.

More
4 years 4 months ago #244972 by spumco

I think the main issue using a PID to control a VFD for position control
is that the VFD is quite slow to react so feedback control is difficult,

Control should be improved with feed-forward (specifically FF1 =1 since the VFD
should have a linear and predictable speed vs command relation)
but effective feed-forward requires a actual motion profile not just a step in position

A limit2 component after the orient component would constrain the velocity and acceleration. but would likely need to be bypassed when not doing the final orient move (The limit 2 component would do the move from the random
start position to the orient position)
 

I understand the first part.

Don't understand your second part.  I have yet to wrap my brain around feed forward, despite reading multiple explanations.

And limit2 goes between orient.0.command and pid.o.command, or between pid.o.output and mux2.0.in? (mux is used for spindle or orient)

I'm reading the MAN page on limit2, but I don't really get the limit2.N.load pin.  Is that a 'bypass' switch of sorts?

How do I bypass the limit2 after the move from random start?

Suggestions on limit2.N.min, .max, and .maxv?

Please Log in to join the conversation.

More
4 years 4 months ago #244977 by robertspark
yes,
limit2.N.load
is a bypass / function ignore "pass through" pin

I am not sure when (what criteria) would toggle this

maybe a near component (it will stop the wiggle)

linuxcnc.org/docs/devel/html/man/man9/near.9.html

(following this with some interest but no knowledge .... so take the above regarding the "near" as maybe wrong!)

Please Log in to join the conversation.

More
4 years 4 months ago #245003 by spumco
Thanks Robert.  While I'm waiting for PCW to get back I'll have a go with it - without the lincurve & limit2 - and see how it behaves with FF1 = ?

What's the worst that could happen?

Please Log in to join the conversation.

More
4 years 4 months ago #245004 by PCW
FF1 will not work with step inputs to the PID (as the orient component outputs currently)

Please Log in to join the conversation.

More
4 years 4 months ago #245007 by spumco

FF1 will not work with step inputs to the PID (as the orient component outputs currently)
 

 

 
Ok, I need a limit2 in between pin.N.something and pin.N.something-else.

And the limit2 needs some max, min, and maxv values.

And something to turn on/off the limit2 at some condition.

If I get a mostly working config I can eventually digest how the parts are working together, but since I don't know where to start I'm kind of stuck without an actual example.  I'm still at the monkey-see, monkey-do stage with this sort of thing.

EDIT  how does this look?

net orient-command   <= orient.0.command
net orient-command   => limit2.0.in
net orient-command-limit   <= limit2.0.out
net orient-command-limit   => pid.0.command
net orient-limit-switch  <= pin.0.mystery
net orient-limit-switch  => limit2.0.load

setp limit2.0.min   = ???
setp limit2.0.max  = ???
setp limit2.0.maxv = ???

Please Log in to join the conversation.

More
4 years 4 months ago #245009 by PCW
Basically what you want is for the orient motion to be a simple trapezoidal motion profile
so that even without any feedback, (and mainly just feed-forward) you end up at
approximately the right endpoint. This means, much less is asked of the feedback
so you don't need as high gains and the integral term will not get a massive windup
as you get with a step motion command.

Please Log in to join the conversation.

More
4 years 4 months ago #245010 by spumco
Thanks for the explanation, that was rather helpful understanding the goal and process.

Unfortunately, without details or starting values I'm not able to accomplish this.

Please Log in to join the conversation.

More
4 years 4 months ago #245041 by PCW
Actually limit3 is needed
Starting values for the bounds should be pretty easy to set
maxv is in RPS and maxa is in RPS/S

Please Log in to join the conversation.

Time to create page: 0.113 seconds
Powered by Kunena Forum