History log of /openbmc/phosphor-pid-control/pid/util.cpp (Results 1 – 12 of 12)
Revision Date Author Comments
# 9788963c 05-Nov-2023 Delphine CC Chiu <Delphine_CC_Chiu@wiwynn.com>

Support to accumulate PWM of different controllers for same sensor

Description:
1. Add one property: accumulateSetPoint in zone of fan table that could
be used to enable accumulation of output PW

Support to accumulate PWM of different controllers for same sensor

Description:
1. Add one property: accumulateSetPoint in zone of fan table that could
be used to enable accumulation of output PWM of different controllers
with same sensor.

2. Add one property: checkHysterWithSetpt in pid info of fan table to
select to compare current input and setpoint to check hysteresis.

3. The purpose of accumulate the stepwise output and PID output for
one sensor is that the setting of stepwise could use to prevent
the fan speed from suddenly increasing from a very low speed to a
very high speed due to reaching the setpoint.

Use stepwise before setpoint could also keep the PWM steady at
low ambient temperature.

Design:
1. Search "accumulateSetPoint" field in fan table.
If the value was true, accumulate the output PWM of different
controllers with same profile name.

2. Support two method to calculate PID output that could be chosen by
setting the "checkHysterWithSetpt" to true in pid info of fan table.

If the flag was set to true, it won't calculate PWM output if the
input lower than setpoint.

Test Case:
1. Check the output PWM of different controllers with same profile
name could be accumulated - pass.

2. Set "checkHysterWithSetpt" to true and check PID output would not be
calculated if the input temperature was lower than setpoint - pass.

Please see more details in gist:
https://gist.github.com/DelphineCCChiu/a6170d3e1a12fc4ee76fad324382fba3

Change-Id: I9f38f250d72545784c6c11be2fde7d45f0b385c4
Signed-off-by: Delphine CC Chiu <Delphine_CC_Chiu@wiwynn.com>

show more ...


# 0e8fc398 04-Oct-2022 Bonnie Lo <Bonnie_Lo@wiwynn.com>

Support derivative term in PID algorithm and support to set cycle interval time from fan table

1. Support to calculate derivative term in PID algorithm.
2. Add two properties: cycleIntervalTimeMS an

Support derivative term in PID algorithm and support to set cycle interval time from fan table

1. Support to calculate derivative term in PID algorithm.
2. Add two properties: cycleIntervalTimeMS and updateThermalsTimeMS
in fan table that could be used to decide "time interval of PID control loop"
and "time interval to update thermals' cached value".

Tested:

- PID algorithm:
1. Check pid-control-service could calculate output PWM
according to the fan table.

[Test log]
root@greatlakes:~# systemctl status phosphor-pid-control -l
* phosphor-pid-control.service - Phosphor-Pid-Control Margin-based Fan Control Daemon
Loaded: loaded (/lib/systemd/system/phosphor-pid-control.service; enabled; preset: enabled)
Active: active (running) since Fri 2018-03-09 05:09:35 PST; 1min 47s ago
Main PID: 3105 (swampd)
CGroup: /system.slice/phosphor-pid-control.service
`-3105 /usr/bin/swampd -c /usr/share/entity-manager/configurations/fan-table.json
...
Mar 09 05:10:29 greatlakes phosphor-pid-control[3105]: PID Zone 1 max SetPoint 3.75 requested by
PID_NIC_SENSOR_TEMP BMC_SENSOR_FAN0_TACH BMC_SENSOR_FAN2_TACH BMC_SENSOR_FAN4_TACH BMC_SENSOR_FAN6_TACH

- Cycle interval time:
1. Set cycleIntervalTimeMS and updateThermalsTimeMS
to 1000 ms in fan table
2. Check service would update thermal every second from debug log.

[Test log]
root@greatlakes:~# journalctl -u phosphor-pid-control --since "Mar 09 04:52:16"
Mar 09 04:52:16 greatlakes systemd[1]: Started Phosphor-Pid-Control Margin-based Fan Control Daemon.
...
Mar 09 04:53:28 greatlakes phosphor-pid-control[2795]: processThermals
Mar 09 04:53:28 greatlakes phosphor-pid-control[2795]: processFans
Mar 09 04:53:29 greatlakes phosphor-pid-control[2795]: processThermals
Mar 09 04:53:29 greatlakes phosphor-pid-control[2795]: processFans
Mar 09 04:53:30 greatlakes phosphor-pid-control[2795]: processThermals
Mar 09 04:53:30 greatlakes phosphor-pid-control[2795]: processFans

Change-Id: I04e1b440603c3ad66a1e26c96451992785da6fe6
Signed-off-by: Bonnie Lo <Bonnie_Lo@wiwynn.com>

show more ...


# 22579ca4 07-Nov-2022 Harvey Wu <Harvey.Wu@quantatw.com>

fix cppcheck warning

- Fix warnings:
[noExplicitConstructor]
ipmi/manualcmds.hpp:20:5: style: Class 'ZoneControlIpmiHandler' has a
constructor with 1 argument that is not explicit.

[red

fix cppcheck warning

- Fix warnings:
[noExplicitConstructor]
ipmi/manualcmds.hpp:20:5: style: Class 'ZoneControlIpmiHandler' has a
constructor with 1 argument that is not explicit.

[redundantInitialization]
dbus/dbusutil.cpp:96:15: style: Redundant initialization for 'layer'.
The initialized value is overwritten before it is read.

[uninitMemberVar]
pid/pidcontroller.hpp:23:5: warning: Member variable
'PIDController::_pid_info' is not initialized in the constructor.

[memsetClassFloat]
pid/util.cpp:29:10: portability: Using memset() on struct which
contains a floating point number.

[constParameter]
ipmi/manualcmds.cpp:108:72: style: Parameter 'dataLen' can be
declared as pointer to const

Signed-off-by: Harvey Wu <Harvey.Wu@quantatw.com>
Change-Id: Ib368c6e3a609e446529573cd0b9fa03858232db1

show more ...


# a076487a 08-Aug-2020 Patrick Venture <venture@google.com>

sensors/zones: place in namespace and cleanup

Signed-off-by: Patrick Venture <venture@google.com>
Change-Id: I527dbc8477a232945f696227a7b0b2adbee45175


# 0c8223b5 08-May-2019 James Feist <james.feist@linux.intel.com>

Consolidate all util.hpp

This deletes all lower level util.hpp and cats them
into the top level util.hpp to avoid name conflicts.

Change-Id: Ia11e4a08053a3970b0aadf21d1156ab26de

Consolidate all util.hpp

This deletes all lower level util.hpp and cats them
into the top level util.hpp to avoid name conflicts.

Change-Id: Ia11e4a08053a3970b0aadf21d1156ab26def36bd
Signed-off-by: James Feist <james.feist@linux.intel.com>

show more ...


# 7442c37a 11-Feb-2019 Patrick Venture <venture@google.com>

conf change: pid: all pid details are now camelCase

Convert all PID configuration details are now camelCase instead of snake
case.

Change-Id: Id132053f122dfcd8abaace17df91c99758

conf change: pid: all pid details are now camelCase

Convert all PID configuration details are now camelCase instead of snake
case.

Change-Id: Id132053f122dfcd8abaace17df91c99758eb2b0c
Signed-off-by: Patrick Venture <venture@google.com>

show more ...


# 4b0df320 11-Feb-2019 Patrick Venture <venture@google.com>

pid: rename structure components for style

Rename the struct components to camelCase.

Change-Id: I0e76c4bd5aed0ec2d78edd31ddef66f852ddc71e
Signed-off-by: Patrick Venture <ventur

pid: rename structure components for style

Rename the struct components to camelCase.

Change-Id: I0e76c4bd5aed0ec2d78edd31ddef66f852ddc71e
Signed-off-by: Patrick Venture <venture@google.com>

show more ...


# 572c43da 31-Jan-2019 James Feist <james.feist@linux.intel.com>

Add Hysteresis to pid controllers

Add hysteresis to pid controllers to lower pwm changes.
It is defaulted to 0 so it should be transparent
to any controller that choses not to implem

Add Hysteresis to pid controllers

Add hysteresis to pid controllers to lower pwm changes.
It is defaulted to 0 so it should be transparent
to any controller that choses not to implement it.
This is the same pattern used by the stepwise controller.

Tested-by: Unit tests passed

Change-Id: Ib47114285b0017258b7f77eaf067d310f95a0c60
Signed-off-by: James Feist <james.feist@linux.intel.com>

show more ...


# 7af157b1 30-Oct-2018 Patrick Venture <venture@google.com>

style: function names should be lower camel

Fix function names to be lower camel.

Change-Id: I145e1f4c03d7740bc1525dcffbdce2f78fd61075
Signed-off-by: Patrick Venture <venture@go

style: function names should be lower camel

Fix function names to be lower camel.

Change-Id: I145e1f4c03d7740bc1525dcffbdce2f78fd61075
Signed-off-by: Patrick Venture <venture@google.com>

show more ...


# f77d5a57 23-Oct-2018 Patrick Venture <venture@google.com>

cleanup: move from copy and pointer to just const reference

Originally code passed the object by value, and then later by pointer to
that copy. Convert the code to be more performant by

cleanup: move from copy and pointer to just const reference

Originally code passed the object by value, and then later by pointer to
that copy. Convert the code to be more performant by using a const
reference at all layers of access for this object.

Change-Id: Icdf0dfdb54d8adc29af4d05d841533626a484921
Signed-off-by: Patrick Venture <venture@google.com>

show more ...


# da4a5dd1 31-Aug-2018 Patrick Venture <venture@google.com>

add .clang-format

Change-Id: I6627b5569c2e0f730be7331403218b823a2c622f
Signed-off-by: Patrick Venture <venture@google.com>


# d8012181 08-Mar-2018 Patrick Venture <venture@google.com>

PID Objects & Algo

These are the PID controller implementations for fans,
and thermals. This also includes the PID algorithm used.

Change-Id: I30471fbf7a8a7ed65f78bf105970d6281

PID Objects & Algo

These are the PID controller implementations for fans,
and thermals. This also includes the PID algorithm used.

Change-Id: I30471fbf7a8a7ed65f78bf105970d62815fedc56
Signed-off-by: Patrick Venture <venture@google.com>

show more ...