aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/Modules/Control
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2019-02-10 18:14:32 +0200
committerShlomo Hecht <shlomo@twine-s.com>2019-02-10 18:14:32 +0200
commita63588d467c7f2a3f0c2a4e9915bf18a60bb32b7 (patch)
treef8d5ca939fc8313a0b45776a6c96d546e20dca73 /Software/Embedded_SW/Embedded/Modules/Control
parent4a975ab371e8c46f5f16eda9251a81edad1334d6 (diff)
downloadTango-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.c48
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;
+}