diff options
| author | Shlomo Hecht <shlomo@twine-s.com> | 2019-02-10 18:14:32 +0200 |
|---|---|---|
| committer | Shlomo Hecht <shlomo@twine-s.com> | 2019-02-10 18:14:32 +0200 |
| commit | a63588d467c7f2a3f0c2a4e9915bf18a60bb32b7 (patch) | |
| tree | f8d5ca939fc8313a0b45776a6c96d546e20dca73 /Software/Embedded_SW/Embedded/Modules/Control | |
| parent | 4a975ab371e8c46f5f16eda9251a81edad1334d6 (diff) | |
| download | Tango-a63588d467c7f2a3f0c2a4e9915bf18a60bb32b7.tar.gz Tango-a63588d467c7f2a3f0c2a4e9915bf18a60bb32b7.zip | |
Version 1.3.6.2 load dancer parameters, othe rsw parameters
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules/Control')
| -rw-r--r-- | Software/Embedded_SW/Embedded/Modules/Control/PIDAlgo.c | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/Control/PIDAlgo.c b/Software/Embedded_SW/Embedded/Modules/Control/PIDAlgo.c index f9aee7929..a443b4785 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/PIDAlgo.c +++ b/Software/Embedded_SW/Embedded/Modules/Control/PIDAlgo.c @@ -71,3 +71,51 @@ float AdvancedPIDAlgorithmCalculation(float _setPoint,float _mesuredParam , PID_ return output; } +float TestPIDAlgorithmCalculation(float _setPoint,float _mesuredParam , PID_Config_Params *params, float *_pre_error, float *_integral) +{ + float error; + float derivative; + float output; + + //double error = *mySetpoint - input; + error = _setPoint - _mesuredParam; + //ITerm+= (ki * error); + *_integral = *_integral + (error*params->Ki); + /* if(ITerm > outMax) + { + ITerm= outMax; + } + else if(ITerm < outMin) + { + ITerm= outMin; + } */ + if(*_integral > params->MAX) + { + *_integral = params->MAX; + } + else if(*_integral < params->MIN) + { + *_integral = params->MIN; + } + // double dInput = (input - lastInput); + derivative = error - *_pre_error; + + /*Compute PID Output*/ + // double output = kp * error + ITerm- kd * dInput; + output = params->Kp*error/params->ProportionalErrorMultiplier + *_integral/params->IntegralErrorMultiplier + params->Kd*derivative; + + //Saturation Filter + if(output > params->MAX) + { + output = params->MAX; + } + else if(output < params->MIN) + { + output = params->MIN; + } + + //Update error + *_pre_error = error; + + return output; +} |
