Changing PID parameters on the fly.
29 Apr 2013 02:49 #33349
by mariusl
Regards
Marius
www.bluearccnc.com
Changing PID parameters on the fly. was created by mariusl
Hi All,
I would like to know if there is a way to change the PID parameters on the fly. I would like to select a parameter set from a drop down list and apply them to the PID parameters. Is this possible and if so, any ideas please?
I would like to know if there is a way to change the PID parameters on the fly. I would like to select a parameter set from a drop down list and apply them to the PID parameters. Is this possible and if so, any ideas please?
Regards
Marius
www.bluearccnc.com
Please Log in or Create an account to join the conversation.
29 Apr 2013 06:40 #33357
by andypugh
If your values are hard-coded in the HAL file, then you can still change them on the fly from the command line, withYou can also do the same thing from the Machine->Show Hal Configuration dialog. (but the command line is actually easier as you have tab-completion and up-arrow history)
I think the "Machine Calibration" menu option is what you want, though.
Replied by andypugh on topic Changing PID parameters on the fly.
If the PID parameters exist as entries in the INI file, and are then linked to the PID component in the HAL file, then the Machine->Calibration menu item can pick them up, and allows you to experiment with values. You can then, optonally, save the new values back to the INI.I would like to know if there is a way to change the PID parameters on the fly.
If your values are hard-coded in the HAL file, then you can still change them on the fly from the command line, with
halcmd setp pid.0.Pgain 1024.5
I think the "Machine Calibration" menu option is what you want, though.
Please Log in or Create an account to join the conversation.
29 Apr 2013 13:18 #33363
by mariusl
Regards
Marius
www.bluearccnc.com
Replied by mariusl on topic Changing PID parameters on the fly.
Thanks Andy,
I want to let the operator choose from a drop down box. He wont know the PID settings but he will choose an option from which I must set the PID parameters to a pre-determined value.
The machine does not have a fixed mechanical X axis. The material is pulled through the machine and this is the X axis. Some pieces weigh as little as 20 kg and other as much as a ton. So the machine is not optimally tuned for all situations. I would like to change the PID settings to match at least a specific weight range.
So what I am really stuck wit is how to set the parameters to a value when the operator selects an option on the screen. If that makes sense?
I want to let the operator choose from a drop down box. He wont know the PID settings but he will choose an option from which I must set the PID parameters to a pre-determined value.
The machine does not have a fixed mechanical X axis. The material is pulled through the machine and this is the X axis. Some pieces weigh as little as 20 kg and other as much as a ton. So the machine is not optimally tuned for all situations. I would like to change the PID settings to match at least a specific weight range.
So what I am really stuck wit is how to set the parameters to a value when the operator selects an option on the screen. If that makes sense?
Regards
Marius
www.bluearccnc.com
Please Log in or Create an account to join the conversation.
29 Apr 2013 19:03 #33381
by andypugh
I think this requires a HAL module that I never finished.
In my day-job we often have situations like this. One PID controller I calibrate has so many other dependencies that the P term is derived by multiplying together the output of two 3D maps, and the I term is the product of three 3D maps.
What should suffice in your case is a simple curve extrapolator.
So, the operator can select the workpiece mass, and then the lookup table will select suitable P I and D terms.
I will have a look at how far along my HAL component got tonight, but you would have something like
(the rw is because, incovenieniently, the Pgain pins are bidirectional, so the component probably needs to offer both conventional and rw outputs)
Replied by andypugh on topic Changing PID parameters on the fly.
I want to let the operator choose from a drop down box. He wont know the PID settings but he will choose an option from which I must set the PID parameters to a pre-determined value.
I think this requires a HAL module that I never finished.
In my day-job we often have situations like this. One PID controller I calibrate has so many other dependencies that the P term is derived by multiplying together the output of two 3D maps, and the I term is the product of three 3D maps.
What should suffice in your case is a simple curve extrapolator.
So, the operator can select the workpiece mass, and then the lookup table will select suitable P I and D terms.
I will have a look at how far along my HAL component got tonight, but you would have something like
loadrt lincurve count=3
...
setp lincurve.0.x1 0
setp lincurve.0.x2 20
setp lincurve.0.x3 100
....
setp lincurve.0.y1 30
setp lincurve.0.y2 20
...
setp lincurve.1.x1 0
...
...
net part-mass pyvcp.part-mass => lincurve.0.x-val
net computed-P lincurve.0.out-rw => pid.0.Pgain
(the rw is because, incovenieniently, the Pgain pins are bidirectional, so the component probably needs to offer both conventional and rw outputs)
Please Log in or Create an account to join the conversation.
29 Apr 2013 20:00 #33390
by mariusl
Regards
Marius
www.bluearccnc.com
Replied by mariusl on topic Changing PID parameters on the fly.
Thanks Andy, looking forward to seeing your component.
Regards
Marius
www.bluearccnc.com
Please Log in or Create an account to join the conversation.
30 Apr 2013 06:16 - 30 Apr 2013 06:16 #33413
by andypugh
Here it is, do you know how to compile/install with comp?
The x and y axis values are actually parameters called things like lincurve.0.x-val00, lincurve.0.x-val01 and so on.
To load three instances, with 4 axis points each, use
loadrt lincurve count=3 personality=4,4,4
Replied by andypugh on topic Changing PID parameters on the fly.
Thanks Andy, looking forward to seeing your component.
Here it is, do you know how to compile/install with comp?
component lincurve "one-dimensional lookup table";
description """Performs a 1-dimensional lookup and interpolation. The x-val
parameters must be monotonic, though identical adjacent values are allowed.
(for example 0,0,0,10) for a 4-element curve. For input x less than the lowest
xval the y-val of the lowest is returned. For x greater than the largest x-val
the yval corresponding to x-max is returned (ie, no extrapolation is performed.
""";
param rw float y-val##[16 : personality] "output values";
param rw float x-val##[16 : personality] "input values";
pin in float x "The input value";
pin out float y "The output value";
pin io float y-rw "The output value, compatible with PID gains";
variable unsigned i = 0;
author "andy pugh";
license "GPL";
function _;
;;
FUNCTION(_){
double f;
if (x >= x_val(personality-1)) {
y = y_val(personality-1);
return;
}
if (x <= x_val(0)) {
y = y_val(0);
return;
}
while (x > x_val(i+1)) { i++;}
while (x < (x_val(i))) { i--;}
f = (x - x_val(i))/(x_val(i+1)-x_val(i));
y = y_val(i) + f * (y_val(i+1) - y_val(i));
y_rw = y;
}
The x and y axis values are actually parameters called things like lincurve.0.x-val00, lincurve.0.x-val01 and so on.
To load three instances, with 4 axis points each, use
loadrt lincurve count=3 personality=4,4,4
Last edit: 30 Apr 2013 06:16 by andypugh.
Please Log in or Create an account to join the conversation.
30 Apr 2013 12:22 #33424
by mariusl
Regards
Marius
www.bluearccnc.com
Replied by mariusl on topic Changing PID parameters on the fly.
Andy,
Wow magic stuff man. Yes I know how to handle components. Done a few myself. I tend to use components rather that Ladder Logic.
I will implement this into the machine design and test. It will take some time to complete but I will report back.
Thanks a lot for your support man.
Wow magic stuff man. Yes I know how to handle components. Done a few myself. I tend to use components rather that Ladder Logic.
I will implement this into the machine design and test. It will take some time to complete but I will report back.
Thanks a lot for your support man.
Regards
Marius
www.bluearccnc.com
Please Log in or Create an account to join the conversation.
Time to create page: 0.074 seconds