From 0e9b372b364a9d8307dd194ac06e7d9a22c58576 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Thu, 2 Jan 2020 14:52:39 +0200 Subject: some fixes from Beta + --- .../Embedded/Modules/Control/MillisecTask.c | 3 +- .../Embedded_SW/Embedded/Modules/Control/PIDAlgo.c | 44 +++------------------- .../Embedded_SW/Embedded/Modules/Control/PIDAlgo.h | 1 - .../Embedded_SW/Embedded/Modules/Control/control.c | 9 +++-- 4 files changed, 13 insertions(+), 44 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules/Control') diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c index aa8f29451..5cccc5b45 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c +++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c @@ -54,6 +54,7 @@ #include "Communication/Connection.h" #include "Modules/General/buttons.h" +#include "Drivers/I2C_Communication/Head_Card/PT100/Head_PT100_ADC.h" Task_Handle Millisecond_Task_Handle; /******************** Definitions ********************************************/ @@ -527,7 +528,7 @@ int MillisecGetTemperatures (TEMPERATURE_SENSOR_ID_ENUM SensorId) return 0; return TemperatureCalc[SensorId]; } -bool RapidPressureRead = false; +bool RapidPressureRead = true; float PressureSum[MAX_SYSTEM_DISPENSERS]; float PressureMin[MAX_SYSTEM_DISPENSERS]; float PressureMax[MAX_SYSTEM_DISPENSERS]; diff --git a/Software/Embedded_SW/Embedded/Modules/Control/PIDAlgo.c b/Software/Embedded_SW/Embedded/Modules/Control/PIDAlgo.c index 6c1b647be..3d1d353c2 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/PIDAlgo.c +++ b/Software/Embedded_SW/Embedded/Modules/Control/PIDAlgo.c @@ -2,41 +2,6 @@ #include "PIDAlgo.h" float PIDAlgorithmCalculation(float _setPoint,float _mesuredParam , PID_Config_Params *params, float *_pre_error, float *_integral) -{ - float error; - float derivative; - float output; - - //Calculate P,I,D - error = _setPoint - _mesuredParam; - - //In case of error too small then stop integration - if(fabs(error) > params->epsilon) - { - *_integral = *_integral + error*params->dt; - } - - derivative = (error - *_pre_error)/params->dt; - - output = params->Kp*error + params->Ki**_integral + 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; -} - -float AdvancedPIDAlgorithmCalculation(float _setPoint,float _mesuredParam , PID_Config_Params *params, float *_pre_error, float *_integral) { float error; float derivative; @@ -70,7 +35,7 @@ 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; @@ -81,14 +46,14 @@ float TestPIDAlgorithmCalculation(float _setPoint,float _mesuredParam , PID_Conf error = _setPoint - _mesuredParam; //ITerm+= (ki * error); *_integral = *_integral + (error*params->Ki); - /* if(ITerm > outMax) + /`* if(ITerm > outMax) { ITerm= outMax; } else if(ITerm < outMin) { ITerm= outMin; - } */ + } *`/ if(*_integral > params->MAX) { *_integral = params->MAX; @@ -100,7 +65,7 @@ float TestPIDAlgorithmCalculation(float _setPoint,float _mesuredParam , PID_Conf // double dInput = (input - lastInput); derivative = error - *_pre_error; - /*Compute PID Output*/ + /`*Compute PID Output*`/ // double output = kp * error + ITerm- kd * dInput; output = params->Kp*error/params->ProportionalErrorMultiplier + *_integral/params->IntegralErrorMultiplier + params->Kd*derivative; @@ -119,3 +84,4 @@ float TestPIDAlgorithmCalculation(float _setPoint,float _mesuredParam , PID_Conf return output; } +*/ diff --git a/Software/Embedded_SW/Embedded/Modules/Control/PIDAlgo.h b/Software/Embedded_SW/Embedded/Modules/Control/PIDAlgo.h index 4792be9ec..4f94f3612 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/PIDAlgo.h +++ b/Software/Embedded_SW/Embedded/Modules/Control/PIDAlgo.h @@ -17,6 +17,5 @@ typedef struct }PID_Config_Params; float PIDAlgorithmCalculation(float _setPoint,float _mesuredParam , PID_Config_Params *params, float *_pre_error, float *_integral); -float AdvancedPIDAlgorithmCalculation(float _setPoint,float _mesuredParam , PID_Config_Params *params, float *_pre_error, float *_integral); #endif /* MODULES_PIDALGO_H_ */ diff --git a/Software/Embedded_SW/Embedded/Modules/Control/control.c b/Software/Embedded_SW/Embedded/Modules/Control/control.c index b75e44001..0d73c9c93 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/control.c +++ b/Software/Embedded_SW/Embedded/Modules/Control/control.c @@ -181,9 +181,12 @@ uint32_t ControlActivityLed( uint32_t Parameter1) { FPGA_WD_Occurred = false; AlarmHandlingSetAlarm(EVENT_TYPE__FPGA_WATCHDOG_ACTIVATED,true); - JobEndReason = JOB_MOTOR_ALARM; - SendJobProgress(0.0,0,false, "Hardware Failure Error"); - AbortJob("FPGA Watchdog Error"); + if (JobIsActive()) + { + JobEndReason = JOB_MOTOR_ALARM; + SendJobProgress(0.0,0,false, "Hardware Failure Error"); + AbortJob("FPGA Watchdog Error"); + } ReportWithPackageFilter(FPGAFilter, "FPGA Watchdog Error",__FILE__,__LINE__,0,RpError, 0,0); ACTIVITY_GREEN_LED_ON; -- cgit v1.3.1