Author Topic: PID Controls for Forklift Travel Speed [Closed]  (Read 7380 times)

Offline PatrickS

  • PLUS+1 User
  • **
  • Posts: 6
  • Karma: +0/-0
PID Controls for Forklift Travel Speed [Closed]
« on: October 27, 2020, 10:46:39 PM »
I'm working on updating one of our forklifts to use an MC-50. The forklift has an engine that powers a hydraulic pump which pushes on a swash plate to drive the wheel, so the angle of the swash plate  determines the travel speed. We also have speed encoders in our wheels to measure vehicle speed.

I pretty new to PID control so I'm having trouble tuning everything. Currently, the best i can accomplish is to basically set Kp, Ki, and Kd to about max (32000), however; doing that leaves some oscillation every time the set point changes. I also am not exactly sure how the PID controller given really works, as it does not react how i would expect. When we command full travel speed, the PID controller outputs only 80% of max even though the actual speed is off demanded by 2 mph.

Any help would be much appreciated. Right now i'm looking for a good method to tune our PID controller, however; i would be open to difference control system architectures.
I've attached a figure showing one of my traces (i believe this one had Kp = 32000, Ki = Kd = 0), it shows my oscillation issues and the fact that the PID controller seems to steady out way too low.
« Last Edit: February 08, 2021, 05:03:28 PM by PatrickS »

Offline FluidPowerTom

  • PLUS+1 Guru
  • *****
  • Posts: 363
  • Karma: +33/-0
Re: PID Controls for Forklift Travel Speed
« Reply #1 on: October 28, 2020, 04:40:58 PM »
It sounds like you may need to adjust the maximum signal being sent to the pump's EDC.  Having to set all of those values to maximum is probably just resulting in the output from the PID going to maximum almost instantly, and the oscillation is probably a result of Kd.

Have you done some reading on basic PID tuning?  Do you understand what P, I, and D each are?  If you bought the controller from a distributor they should have a technical resource there to explain and help guide you.  There's too much information about PID to simply write a primer here off the cuff.

So, my recommendation is to verify what signal range you're using for your pump EDC whether maybe it's 14 - 85mA or a higher current type.  I suspect you need to adjust that.  If your PID gains are all having to be set to maximum its because either your output range for the EDC isn't right or the hydraulic components are sized incorrectly.

EDIT:  Looking more closely at you're graph you're overshooting your commanded MPH by quite a bit.  You need to bring down your PID gains.  For this type of application you're not going to need 'P' to be very high.  The 'I' gain is going to do most of the work here.  You'll need to spend some hours reading up on PID and/or enlist the help of something with more experience in this.
« Last Edit: October 28, 2020, 04:45:01 PM by FluidPowerTom »
Controls Engineer
Hydra-Power Systems

Offline pinias

  • PLUS+1 Guru
  • *****
  • Posts: 220
  • Karma: +7/-0
Re: PID Controls for Forklift Travel Speed
« Reply #2 on: October 28, 2020, 10:00:27 PM »
Just a different thought.

why dp you need the PID for the speed? I am not saying it is  wrong but as FluidPower Tom said you have to understand how each variable works in order to achieve your goal, well I am thinkig an operator will be driving it, otherwise yep a PID may work better, I have done that kind of controls using fuzzy logic instead 

as I see that you have your throtle as input for the controller, the actual speed encoder or pickup and your output to the pump EDC.

the monitoring of the speed will be to give the operator the feddback about how fast he is moving and or to limit the maximum speed therefore the pump stroke.

why not you just compare the actual speed versus your maximum and when triggered the stroke of the pump will be set to whatever was detected as the requiered stroke for that maximum speed and you could rescale the throtle input so that is works within that range.

I will try that way fisrt, I mean it seems to be simple  but I may be wrong you may be doing different things also

Hopefully it helps a bit