All of lore.kernel.org
 help / color / mirror / Atom feed
From: Patrick Venture <venture@google.com>
To: Ed Tanous <ed.tanous@intel.com>
Cc: OpenBMC Maillist <openbmc@lists.ozlabs.org>
Subject: Re: pid control configuration
Date: Wed, 1 May 2019 16:15:52 -0700	[thread overview]
Message-ID: <CAO=notzyNZTj-Uc8FqJyKOKx5XMStp64fLY1HdDTmWxArW7OUg@mail.gmail.com> (raw)
In-Reply-To: <CAO=notzQY9qm2phh6AYMuU-tZaKaqjDBq3WOei7z3R+1204u=A@mail.gmail.com>

On Wed, May 1, 2019 at 4:10 PM Patrick Venture <venture@google.com> wrote:
>
> On Wed, May 1, 2019 at 4:05 PM Ed Tanous <ed.tanous@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.

  reply	other threads:[~2019-05-01 23:16 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-05-01 22:53 pid control configuration Vijay Khemka
2019-05-01 23:05 ` Ed Tanous
2019-05-01 23:10   ` Patrick Venture
2019-05-01 23:15     ` Patrick Venture [this message]
2019-05-02 23:24   ` Vijay Khemka
2019-05-06 16:20     ` Ed Tanous
2019-05-06 18:18       ` Vijay Khemka
2019-05-06 18:54         ` Ed Tanous
2019-05-10 21:20       ` Vijay Khemka
2019-05-13 16:32         ` Patrick Venture
2019-05-13 17:32           ` Ed Tanous
2019-05-15 19:21             ` Vijay Khemka
2019-05-15 21:50               ` Ed Tanous
2019-05-16  0:07                 ` Vijay Khemka
2019-05-31 21:00                 ` Vijay Khemka
2019-06-03 17:43                   ` Ed Tanous
2019-06-03 18:18                     ` Vijay Khemka

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAO=notzyNZTj-Uc8FqJyKOKx5XMStp64fLY1HdDTmWxArW7OUg@mail.gmail.com' \
    --to=venture@google.com \
    --cc=ed.tanous@intel.com \
    --cc=openbmc@lists.ozlabs.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.