rusEFI
The most advanced open source ECU
|
#include <efi_pid.h>
Public Member Functions | |
PidIndustrial () | |
PidIndustrial (pid_s *pid) | |
float | getOutput (float target, float input, float dTime) override |
float | getOutput (float target, float input) |
virtual float | getOutput (float target, float input, float dTime) |
![]() | |
Pid () | |
Pid (pid_s *parameters) | |
void | initPidClass (pid_s *parameters) |
bool | isSame (const pid_s *parameters) const |
float | getOutput (float target, float input) |
float | getUnclampedOutput (float target, float input, float dTime) |
void | updateFactors (float pFactor, float iFactor, float dFactor) |
virtual void | reset () |
float | getP () const |
float | getI () const |
float | getD () const |
float | getOffset () const |
float | getMinValue () const |
float | getIntegration (void) const |
float | getPrevError (void) const |
void | setErrorAmplification (float coef) |
void | postState (pid_status_s &pidStatus) const |
void | showPidStatus (const char *msg) const |
void | sleep () |
Data Fields | |
float | antiwindupFreq = 0.0f |
float | derivativeFilterLoss = 0.0f |
![]() | |
int | resetCounter |
float | iTermMin = -1000000.0 |
float | iTermMax = 1000000.0 |
![]() | |
float | iTerm = (float)0 |
float | dTerm = (float)0 |
float | target = (float)0 |
float | input = (float)0 |
float | output = (float)0 |
float | errorAmplificationCoef = (float)0 |
float | previousError = (float)0 |
Private Member Functions | |
float | limitOutput (float v) const |
Additional Inherited Members | |
![]() | |
virtual void | updateITerm (float value) |
![]() | |
pid_s * | parameters = nullptr |
A PID with derivative filtering (backward differences) and integrator anti-windup. See: Wittenmark B., Astrom K., Arzen K. IFAC Professional Brief. Computer Control: An Overview. Two additional parameters used: derivativeFilterLoss and antiwindupFreq (If both are 0, then this controller is identical to PidParallelController)
TODO: should PidIndustrial replace all usages of Pid/PidParallelController?
PidIndustrial::PidIndustrial | ( | ) |
Definition at line 243 of file efi_pid.cpp.
|
explicit |
Definition at line 246 of file efi_pid.cpp.
This version of the method takes dTime from pid_s
Controller | input / process output |
Controller | input / process output |
Definition at line 47 of file efi_pid.cpp.
dTime | seconds probably? :) |
Reimplemented from Pid.
Definition at line 48 of file efi_pid.cpp.
dTime | seconds probably? :) |
Reimplemented from Pid.
Definition at line 249 of file efi_pid.cpp.
Referenced by LuaIndustrialPid::get().
Definition at line 288 of file efi_pid.cpp.
Referenced by getOutput().
float PidIndustrial::antiwindupFreq = 0.0f |
Definition at line 123 of file efi_pid.h.
Referenced by IdleController::getClosedLoop(), getOutput(), and LuaIndustrialPid::setAntiwindupFreq().
float PidIndustrial::derivativeFilterLoss = 0.0f |
Definition at line 124 of file efi_pid.h.
Referenced by IdleController::getClosedLoop(), getOutput(), and LuaIndustrialPid::setDerivativeFilterLoss().