pid control configuration
Patrick Venture
venture at google.com
Thu May 2 09:15:52 AEST 2019
On Wed, May 1, 2019 at 4:10 PM Patrick Venture <venture at google.com> wrote:
>
> On Wed, May 1, 2019 at 4:05 PM Ed Tanous <ed.tanous at intel.com> wrote:
> >
> > On 5/1/19 3:53 PM, Vijay Khemka wrote:
> > > Hi Patrick/James,
> > >
> > > I am not understanding how to get these following data for configuration
> > > file for pid. I only had p(proportional), i(integral) and
> > > d(differential) values from my thermal team. But unable to maop these to
> > > required parameter.
> > >
> > >
> > >
> > > "required": [
> > >
> > > "Class",
> > This will be PIDController in the case of PID, and is part of how entity
> > manager divides up the config information to the various components.
> > >
> > > "FFGainCoefficient",
> > >
> > > "FFOffCoefficient",
> > In your case, both of these FF variables would be 0.0
> > >
> > > "ICoefficient",
> > Would be the I value from your thermal team.
> >
> > >
> > > "ILimitMax",
> > >
> > > "ILimitMin",
> >
> > These sets the limits to the integral coefficient to prevent integral
> > runaway in the case where the controller cannot ever reach the target
> > temperature. If you don't want to use these at all (which I wouldn't
> > recommend from a control perspective) you can set them to unreasonably
> > large and unreasonably small values, and they will have no effect.
> >
> > >
> > > "Inputs",
> >
> > The sensors you want to control, by name.
> >
> > >
> > > "Name",
> > This is the "pretty" name for this controller, and can be whatever you
> > want. The controller will show up in DBus and Redfish under this name.
> >
> > >
> > > "OutLimitMax",
> > >
> > > "OutLimitMin",
> > >
> >
> > I believe both of these are in % of fan speed these days, so setting
> > them to 100 and 0% respectively will probably give you the behavior you
> > want if you don't have other data from your thermal team around limits.
> >
> > > "PCoefficient",
> > Your P value from your thermal team.
> >
> > >
> > > "SlewNeg",
> > >
> > > "SlewPos",
> >
> > These two reflect the D values from your thermal team. If they only
> > gave you one D value, there are two things here. 1. It could use the
> > same coefficients for both positive and negative derivative values. Or
> > 2. It only applies to Positive slew rates, and negative is zero. You
> > would need to talk to your team to understand what they intended.
> >
> > >
> > > "Type",
> > The Entity manager type, which I believe it PIDController, but I don't
> > have the examples in front of me.
> >
> > >
> > > "Zones"
> > Fan zones in which this controller applies to. For Tioga pass I would
> > expect you to only have a single fan zone for the whole node.
> >
> > >
> > > ]
> > >
> > >
> > >
> > >
> > >
> > > Also we have a requirement of stepwise and pid together for some
> > > sensors, is it possible to configure same sensor for both types.Yes, you can declare multiple controllers. Whichever controller
> > requests the high fan speed will be the one that's used for the PWM output.
>
> Thanks Ed for those great answers.
>
>
> I'll provide the units answer:
>
> If the PID is a margin controller and it's set-point is in centigrade
> and output in RPM:
> pCoefficient is your p value in units: RPM/C and integral coefficient RPM/Csec
>
> If the PID is a fan controller whose output is pwm:
> pCoefficient is %/RPM and iCoefficient is %/RPM sec
The non-step PID operates at a 10x frequency fans : sensors. so it
tries to control the fans 10x per second, and checks the status of the
thermal sensors involved once every second. that's hard-coded
presently in the behavior of the code. I think the step-wise operates
similarly but I would have to check.
More information about the openbmc
mailing list