PLUS+1 User Forum

PLUS+1™ Software => Code sharing => Topic started by: paterianus on September 02, 2011, 04:46:56 PM

Title: Feed forward
Post by: paterianus on September 02, 2011, 04:46:56 PM
Has anyone implemented a feed forward function into a PID control to reduce system response.  I know I can turn up the gain but that would impact the response continuously.  Simplest option would be to have a timed "kick" value but I was interested to know if anyone had developed a better solution.
Title: Re: Feed forward
Post by: Richard on September 05, 2011, 10:16:47 AM

If I understand you correctly, I may have done this.

We have a hydrostatic circuit and control the pump displacement to control a shaft speed.  The pump is direct drive from an engine but the engine can run at 3 fixed speeds.  When changing the engine speed I needed a more reponsive system to control the over/under shoot of the rapidly changing engine speed.

I achieved this by monitoring the I output at the various speeds and then using the normal/reset function of the PID control along with a scaled (engine speed to I) reset value.  So when the engine speed suddenly increased the I output was reset to suit the changing speed.  In theory atleast this allowed a the PI values to be tuned for stable pump speed (normal operation) and still get a rapid response to changing pump speeds with out the need to change the P.

Hope this helps.


Title: Re: Feed forward
Post by: lijun0 on March 13, 2015, 08:32:40 AM
Hello Richard,

I have the same problem now. Do you mean you use some kind of engine speed input to achieve this function? And at high engine speed the I should be higher or lower? Can you please give some details?
Title: Re: Feed forward
Post by: oiltronic on March 19, 2015, 05:46:47 PM
Since Richard answered that 3.5 years ago, and since I know too well how hard it can be to tune a Plus+1 PID loop, I'll take a shot at it.

I think he is saying that his software knows the engine speed somehow, maybe through three digital inputs (one for each of the three speeds settings), or with a pulse pickup, or with J1939. If designing something, note that the digital inputs reflect the speed setpoint, which would lead the actual RPM, while the pulse pickup would most closely match the actual RPM, and the J1939 would lag the actual RPM.

When his software sees a sudden change in engine RPM, it needs to suddenly change the PID output so he forces the 'I' portion of the PID controller output to a new initial value which he has calculated from the engine speed and other parameters.  If the engine speed increases, he will need to reduce pump output to get the same oil flow rate so the new 'I' value would be small or even negative for make this happen.   And if the engine speed suddenly decreases then he will need to increase pump output so the 'I' value would also increase.  My guess is that he would calculate the % change in flow rate for the % change in engine speed, then apply that percentage to the current pump signal output, then the difference between the current and new desired pump output would be applied to the 'I' reset value.

Basically, from the pump and hydraulic motor datasheets he can estimate the machine's shaft speed for a given engine speed and pump signal.  This forms the starting point of the PID output and thus the 'I' reset value.  Once the system is reset and running with the new estimated value, the PID is allowed to take over to make it more accurate.
Title: Re: Feed forward
Post by: lijun0 on March 29, 2015, 04:26:06 PM
Thanks! If can get the engine information why not use the same control as SX personality uni-directional speed control with feed forward. I think the PID parameter are fixed for the whole engine speed range.